From: jenkins-bot Date: Fri, 21 Sep 2018 18:42:23 +0000 (+0000) Subject: Merge "CommentStore: Hard-deprecate newKey()" X-Git-Tag: 1.34.0-rc.0~4027 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=62c36e82cf424f6ef51b524b2da41ff798111d83;hp=733704ed8248f71dfb982d22799104a976d1ada4 Merge "CommentStore: Hard-deprecate newKey()" --- diff --git a/.gitattributes b/.gitattributes index 786c09f0e5..81b7a33173 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5,6 +5,7 @@ *~ export-ignore #*# export-ignore .* export-ignore +*.htaccess -export-ignore package.json export-ignore README.mediawiki export-ignore Gemfile* export-ignore diff --git a/HISTORY b/HISTORY index bc74a6b700..46650366e5 100644 --- a/HISTORY +++ b/HISTORY @@ -2,6 +2,32 @@ Change notes from older releases. For current info see RELEASE-NOTES-1.32. = MediaWiki 1.31 = +== MediaWiki 1.31.1 == + +This is a security and maintenance release of the MediaWiki 1.31 branch. + +=== Changes since MediaWiki 1.31.0 === +* (T169545, CVE-2018-0503) SECURITY: $wgRateLimits entry for 'user' overrides + 'newbie'. +* (T194605, CVE-2018-0505) SECURITY: BotPasswords can bypass CentralAuth's + account lock. +* (T199029, CVE-2018-13258) SECURITY: Tarball was missing .htaccess files. +* (T197229) Bundle Nuke extension, it was accidentally omitted. +* (T193995) Fix undefined patchPath() method call in parser tests. +* (T198687) Fix various selectFields methods to use the string 'NULL', not null. +* Special:BotPasswords now requires reauthentication. +* (T191608, T187638) Add 'logid' parameter to Special:Log. +* (T193829) Indicate when a Bot Password needs reset. +* (T198037) GitInfo: Don't try shelling out if it's disabled. +* (T151415) Log email changes. +* (T197206) Fix performance regression when multiple DB used without caching. +* (T197030) PHPSessionHandler: Suppress headers warnings in initialize(). +* (T182377, T196793) Exif: Guard against uncountable tag values. +* (T200861) Fix total breakage of SQLite web upgrade. +* (T200864) Fix pingback over-reporting on non-MySQL databases +* (T202550) Unbreak SpecialListusersHeaderForm and SpecialListusersHeader + hooks. + == MediaWiki 1.31.0 == === Changes since MediaWiki 1.31.0-rc.2 === @@ -488,6 +514,43 @@ There's usually someone online in #mediawiki on irc.freenode.net. = MediaWiki 1.30 = +== MediaWiki 1.30.1 == + +This is a security and maintenance release of the MediaWiki 1.30 branch. + +=== Changes since MediaWiki 1.30.0 === +* (T169545, CVE-2018-0503) SECURITY: $wgRateLimits entry for 'user' overrides + 'newbie'. +* (T194605, CVE-2018-0505) SECURITY: BotPasswords can bypass CentralAuth's + account lock. +* (T87572) Make FormatMetadata::flattenArrayReal() work for an associative array. +* Updated composer/spdx-licenses from 1.1.4 to 1.3.0 (development dependency). +* (T189567) the CLI installer (maintenance/install.php) learned to detect and + include extensions. Pass --with-extensions to enable that feature. +* (T190503) Let built-in web server (maintenance/dev) handle .php requests. +* (T167507) selenium: Run Chrome headlessly. +* selenium: Pass -no-sandbox to Chrome under Docker. +* (T179190) selenium: Move logic for running tests from package.json to selenium.sh +* (T192584) Stop incorrectly passing USE INDEX to RecentChange::newFromConds(). +* Add default edit rate limit of 90 edits/minute for all users. +* (T186565) Fix PHP Notice from `ob_end_flush()` in `FileRepo::streamFile()`. +* oojs/oojs-ui updated to remove an unnecessary dependancy. +* (T196125) php-memcached 3.0 (provided with PHP 7.0) is now supported. +* (T118683) Fix exception from &$user deref on HHVM in the TitleMoveComplete hook. +* (T196672) The mtime of extension.json files is now able to be zero +* (T180403) Validate $length in padleft/padright parser functions. +* (T143790) Make $wgEmailConfirmToEdit only affect edit actions. +* (T193995) Fix undefined patchPath() method call in parser tests. +* Special:BotPasswords now requires reauthentication. +* (T191608, T187638) Add 'logid' parameter to Special:Log. +* (T193829) Indicate when a Bot Password needs reset. +* (T151415) Log email changes. +* (T200861) Fix total breakage of SQLite web upgrade. +* (T202550) Unbreak SpecialListusersHeaderForm and SpecialListusersHeader + hooks. +* (T190539) Explicitly require Postgres 9.1. +* (T118420) Unbreak Oracle installer. + == MediaWiki 1.30.0 == === Changes since MediaWiki 1.30.0-rc.0 === @@ -751,6 +814,49 @@ changes to languages because of Phabricator reports. = MediaWiki 1.29 = +== MediaWiki 1.29.3 == + +This is a security and maintenance release of the MediaWiki 1.29 branch. + +=== Changes since 1.29.2 === +* (T169545, CVE-2018-0503) SECURITY: $wgRateLimits entry for 'user' overrides + 'newbie'. +* (T194605, CVE-2018-0505) SECURITY: BotPasswords can bypass CentralAuth's + account lock. +* (T180551) Fix LanguageSrTest for language converter +* (T180552) Fix langauge converter parser test with self-close tags +* (T180537) Remove $wgAuth usage from wrapOldPasswords.php +* (T180485) InputBox: Have inputbox langconvert certain attributes +* (T161732, T181547) Upgraded Moment.js from v2.15.0 to v2.19.3. +* (T172927) Drop vendor from MW release branch +* (T87572) Make FormatMetadata::flattenArrayReal() work for an associative array +* Updated composer/spdx-licenses from 1.1.4 to 1.3.0 (development dependency). +* (T189567) the CLI installer (maintenance/install.php) learned to detect and + include extensions. Pass --with-extensions to enable that feature. +* (T182381) Mask deprecated call in WatchedItemUnitTest +* (T190503) Let built-in web server (maintenance/dev) handle .php requests. +* The karma qunit tests would fail on some configuration due to headers already + sent. Check headers_sent() before sending cpPosTime headers +* (T167507) selenium: Run Chrome headlessly. +* selenium: Pass -no-sandbox to Chrome under Docker +* (T191247) Use MediaWiki\SuppressWarnings around trigger_error('') instead @ +* (T75174, T161041) Unit test ChangesListSpecialPageTest::testFilterUserExpLevel + fails under SQLite. +* (T192584) Stop incorrectly passing USE INDEX to RecentChange::newFromConds(). +* (T179190) selenium: Move test running logic from package.json to selenium.sh. +* (T117839, T193200) PDFHandler: Fix for pdfinfo changes in poppler-utils 0.48. +* Add default edit rate limit of 90 edits/minute for all users. +* (T196125) php-memcached 3.0 (provided with PHP 7.0) is now supported. +* (T196672) The mtime of extension.json files is now able to be zero +* (T180403) Validate $length in padleft/padright parser functions. +* (T143790) Make $wgEmailConfirmToEdit only affect edit actions. +* (T194237) Special:BotPasswords now requires reauthentication. +* (T191608, T187638) Add 'logid' parameter to Special:Log. +* (T176097) resourceloader: Disable a flaky MessageBlobStoreTest case +* (T193829) Indicate when a Bot Password needs reset. +* (T151415) Log email changes. +* (T118420) Unbreak Oracle installer. + == MediaWiki 1.29.2 == This is a security and maintenance release of the MediaWiki 1.29 branch. @@ -1526,6 +1632,34 @@ There's usually someone online in #mediawiki on irc.freenode.net. = MediaWiki 1.27 = +== MediaWiki 1.27.5 == + +This is a security and maintenance release of the MediaWiki 1.27 branch. + +=== Changes since 1.27.4 === +* (T169545, CVE-2018-0503) SECURITY: $wgRateLimits entry for 'user' overrides + 'newbie'. +* (T194605, CVE-2018-0505) SECURITY: BotPasswords can bypass CentralAuth's + account lock. +* Upgraded Moment.js from v2.8.4 to v2.19.3. +* (T160298) Fixed Special:ActiveUsers due to bad backport. +* (T87572) Make FormatMetadata::flattenArrayReal() work for an associative array. +* Updated list of SPDX licenses for extensions. +* (T189567) the CLI installer (maintenance/install.php) learned to detect and + include extensions. Pass --with-extensions to enable that feature. +* (T192584) Stop incorrectly passing USE INDEX to RecentChange::newFromConds(). +* Add default edit rate limit of 90 edits/minute for all users. +* (T196125) php-memcached 3.0 (provided with PHP 7.0) is now supported. +* (T196672) The mtime of extension.json files is now able to be zero. +* (T118683) Fix exception from &$user deref on HHVM in the TitleMoveComplete hook. +* (T180403) Validate $length in padleft/padright parser functions. +* (T143790) Make $wgEmailConfirmToEdit only affect edit actions. +* Special:BotPasswords now requires reauthentication. +* (T191608, T187638) Add 'logid' parameter to Special:Log. +* (T193829) Indicate when a Bot Password needs reset. +* (T151415) Log email changes. +* (T118420) Unbreak Oracle installer. + == MediaWiki 1.27.4 == This is a security and maintenance release of the MediaWiki 1.27 branch. diff --git a/RELEASE-NOTES-1.32 b/RELEASE-NOTES-1.32 index 5954b872a7..b30a568806 100644 --- a/RELEASE-NOTES-1.32 +++ b/RELEASE-NOTES-1.32 @@ -311,6 +311,9 @@ because of Phabricator reports. * ChangesListSpecialPage::customFilters * The global function wfUseMW, deprecated since 1.26, has now been removed. Use the "requires" property of static extension registration instead. +* $wgSpecialPages no longer accepts array syntax, deprecated since 1.18. +* The MailAddress constructor can no longer be called with a User object, + behaviour which has been deprecated since 1.24. === Deprecations in 1.32 === * HTMLForm::setSubmitProgressive() is deprecated. No need to call it. Submit @@ -445,6 +448,12 @@ because of Phabricator reports. * Content::getDeletionUpdates has been deprecated in favor of ContentHandler::getDeletionUpdates() for overriding by extensions (T194038). Application logic should call WikiPage::doSecondaryDataUpdates() (T194037). +* (T198214) Old Tidy-related configuration settings, which were soft-deprecated + in MediaWiki 1.26, have now been hard deprecated. This affects $wgUseTidy, + $wgTidyBin, $wgTidyConf, $wgTidyOpts, $wgTidyInternal, and $wgDebugTidy. Use + $wgTidyConfig instead. +* All Tidy configurations other than Remex have been hard deprecated; + future parsers will not emit compatible output for these configurations. === Other changes in 1.32 === * (T198811) The following tables have had their UNIQUE indexes turned into diff --git a/docs/distributors.txt b/docs/distributors.txt index 729dffa3a1..f2af458937 100644 --- a/docs/distributors.txt +++ b/docs/distributors.txt @@ -174,8 +174,6 @@ perhaps configure it to use them (see Configuration section of this document): "$wgAntivirus = 'clamav';". * DjVuLibre: Allows processing of DjVu files. To enable this, set "$wgDjvuDump = 'djvudump'; $wgDjvuRenderer = 'ddjvu'; $wgDjvuTxt = 'djvutxt';". - * HTML Tidy: Fixes errors in HTML at runtime. Can be enabled with - "$wgUseTidy = true;". * ImageMagick: For resizing images. "$wgUseImageMagick = true;" will enable it. PHP's GD can also be used, but ImageMagick is preferable. * HTTP cache such as Varnish or Squid: can provide a drastic speedup and a diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index ab67225ca5..d335dccac0 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -4267,17 +4267,26 @@ $wgAllowImageTag = false; * library; historically, Dave Raggett's "HTML Tidy" was typically used. * See https://www.w3.org/People/Raggett/tidy/ * + * Setting this to null is deprecated. + * * If this is null and $wgUseTidy is true, the deprecated configuration * parameters will be used instead. * * If this is null and $wgUseTidy is false, a pure PHP fallback will be used. + * (Equivalent to setting `$wgTidyConfig['driver'] = 'disabled'`.) * * Keys are: * - driver: May be: + * - RemexHtml: Use the RemexHtml library in PHP * - RaggettInternalHHVM: Use the limited-functionality HHVM extension + * Deprecated since 1.32. * - RaggettInternalPHP: Use the PECL extension + * Deprecated since 1.32. * - RaggettExternal: Shell out to an external binary (tidyBin) - * - RemexHtml: Use the RemexHtml library in PHP + * Deprecated since 1.32. + * - disabled: Disable tidy pass and use a hacky pure PHP workaround + * (this is what setting $wgUseTidy to false used to do) + * Deprecated since 1.32. * * - tidyConfigFile: Path to configuration file for any of the Raggett drivers * - debugComment: True to add a comment to the output with warning messages @@ -4288,37 +4297,38 @@ $wgTidyConfig = [ 'driver' => 'RemexHtml' ]; /** * Set this to true to use the deprecated tidy configuration parameters. - * @deprecated use $wgTidyConfig + * @deprecated since 1.26, use $wgTidyConfig['driver'] = 'disabled' */ $wgUseTidy = false; /** * The path to the tidy binary. - * @deprecated Use $wgTidyConfig['tidyBin'] + * @deprecated since 1.26, use $wgTidyConfig['tidyBin'] */ $wgTidyBin = 'tidy'; /** * The path to the tidy config file - * @deprecated Use $wgTidyConfig['tidyConfigFile'] + * @deprecated since 1.26, use $wgTidyConfig['tidyConfigFile'] */ $wgTidyConf = $IP . '/includes/tidy/tidy.conf'; /** * The command line options to the tidy binary - * @deprecated Use $wgTidyConfig['tidyCommandLine'] + * @deprecated since 1.26, use $wgTidyConfig['tidyCommandLine'] */ $wgTidyOpts = ''; /** * Set this to true to use the tidy extension - * @deprecated Use $wgTidyConfig['driver'] + * @deprecated since 1.26, use $wgTidyConfig['driver'] */ $wgTidyInternal = extension_loaded( 'tidy' ); /** * Put tidy warnings in HTML comments * Only works for internal tidy. + * @deprecated since 1.26, use $wgTidyConfig['debugComment'] */ $wgDebugTidy = false; diff --git a/includes/api/ApiLogin.php b/includes/api/ApiLogin.php index 0248f25ef6..14491da19f 100644 --- a/includes/api/ApiLogin.php +++ b/includes/api/ApiLogin.php @@ -132,7 +132,8 @@ class ApiLogin extends ApiBase { $loginType = 'BotPassword'; } elseif ( !$botLoginData[2] || $status->hasMessage( 'login-throttled' ) || - $status->hasMessage( 'botpasswords-needs-reset' ) + $status->hasMessage( 'botpasswords-needs-reset' ) || + $status->hasMessage( 'botpasswords-locked' ) ) { $authRes = 'Failed'; $message = $status->getMessage(); diff --git a/includes/api/i18n/ja.json b/includes/api/i18n/ja.json index 802283374a..d943e47148 100644 --- a/includes/api/i18n/ja.json +++ b/includes/api/i18n/ja.json @@ -63,8 +63,8 @@ "apihelp-compare-param-fromtitle": "比較する1つ目のページ名。", "apihelp-compare-param-fromid": "比較する1つ目のページID。", "apihelp-compare-param-fromrev": "比較する1つ目の版。", - "apihelp-compare-param-frompst": "fromtextに保存前変換を行います。", - "apihelp-compare-param-fromtext": "fromtitle, fromid or fromrev で指定された版の内容の代わりに、このテキストを使用します。", + "apihelp-compare-param-frompst": "fromtext-{slot}に保存前変換を行います。", + "apihelp-compare-param-fromtext": "fromslots=mainを指定し、代わりにfromtext-main を使用してください。", "apihelp-compare-param-fromcontentmodel": "fromtextのコンテンツモデル。指定されていない場合は、他のパラメータに基づいて推測されます。", "apihelp-compare-param-fromsection": "'from' の内容のうち指定された節のみを使用します。", "apihelp-compare-param-totitle": "比較する2つ目のページ名。", @@ -826,7 +826,7 @@ "apihelp-query+revisions+base-paramvalue-prop-size": "その版の長さ (バイト) 。", "apihelp-query+revisions+base-paramvalue-prop-comment": "その版の利用者によるコメント。", "apihelp-query+revisions+base-paramvalue-prop-parsedcomment": "その版の利用者による、構文解析されたコメント。", - "apihelp-query+revisions+base-paramvalue-prop-content": "その版のテキスト。", + "apihelp-query+revisions+base-paramvalue-prop-content": "各リビジョンスロットの内容。", "apihelp-query+revisions+base-paramvalue-prop-tags": "その版のタグ。", "apihelp-query+revisions+base-param-limit": "返す版の数を制限する。", "apihelp-query+search-summary": "全文検索を行います。", diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php index 387e9e3c18..9602bd20d5 100644 --- a/includes/diff/DifferenceEngine.php +++ b/includes/diff/DifferenceEngine.php @@ -848,6 +848,7 @@ class DifferenceEngine extends ContextSource { // New revision is unsaved; bail out. // TODO in theory rendering the new revision is a meaningful thing to do // even if it's unsaved, but a lot of untangling is required to do it safely. + return; } $out->setRevisionId( $this->mNewid ); diff --git a/includes/mail/MailAddress.php b/includes/mail/MailAddress.php index 1b66c389b3..000bbe316b 100644 --- a/includes/mail/MailAddress.php +++ b/includes/mail/MailAddress.php @@ -46,22 +46,14 @@ class MailAddress { public $address; /** - * @param string $address String with an email address, or a User object + * @param string $address String with an email address * @param string|null $name Human-readable name if a string address is given * @param string|null $realName Human-readable real name if a string address is given */ function __construct( $address, $name = null, $realName = null ) { - if ( is_object( $address ) && $address instanceof User ) { - // Old calling format, now deprecated - wfDeprecated( __METHOD__ . ' with a User object', '1.24' ); - $this->address = $address->getEmail(); - $this->name = $address->getName(); - $this->realName = $address->getRealName(); - } else { - $this->address = strval( $address ); - $this->name = strval( $name ); - $this->realName = strval( $realName ); - } + $this->address = strval( $address ); + $this->name = strval( $name ); + $this->realName = strval( $realName ); } /** diff --git a/includes/parser/MWTidy.php b/includes/parser/MWTidy.php index 5788986f2e..a73c28cdba 100644 --- a/includes/parser/MWTidy.php +++ b/includes/parser/MWTidy.php @@ -71,6 +71,7 @@ class MWTidy { $config = $wgTidyConfig; } elseif ( $wgUseTidy ) { // b/c configuration + wfDeprecated( '$wgUseTidy', '1.26' ); $config = [ 'tidyConfigFile' => $wgTidyConf, 'debugComment' => $wgDebugTidy, @@ -86,6 +87,7 @@ class MWTidy { $config['driver'] = 'RaggettExternal'; } } else { + wfDeprecated( '$wgTidyConfig = null and $wgUseTidy = false', '1.26' ); return false; } self::$instance = self::factory( $config ); diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php index 7d5a362b38..dc2bb0c6b3 100644 --- a/includes/parser/Parser.php +++ b/includes/parser/Parser.php @@ -292,8 +292,8 @@ class Parser { 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' ) ) { - # Preprocessor_Hash is much faster than Preprocessor_DOM under HipHop + } elseif ( wfIsHHVM() ) { + # Under HHVM Preprocessor_Hash is much faster than Preprocessor_DOM $this->mPreprocessorClass = Preprocessor_Hash::class; } elseif ( extension_loaded( 'domxml' ) ) { # PECL extension that conflicts with the core DOM extension (T15770) diff --git a/includes/specialpage/SpecialPageFactory.php b/includes/specialpage/SpecialPageFactory.php index c6ffbe4d70..013ceb24e5 100644 --- a/includes/specialpage/SpecialPageFactory.php +++ b/includes/specialpage/SpecialPageFactory.php @@ -34,7 +34,6 @@ use RequestContext; use SpecialPage; use Title; use User; -use Wikimedia\ObjectFactory; /** * Factory for handling the special page list and generating SpecialPage objects. @@ -401,16 +400,6 @@ class SpecialPageFactory { } elseif ( is_string( $rec ) ) { $className = $rec; $page = new $className; - } elseif ( is_array( $rec ) ) { - $className = array_shift( $rec ); - // @deprecated, officially since 1.18, unofficially since forever - wfDeprecated( "Array syntax for \$wgSpecialPages is deprecated ($className), " . - "define a subclass of SpecialPage instead.", '1.18' ); - $page = ObjectFactory::getObjectFromSpec( [ - 'class' => $className, - 'args' => $rec, - 'closure_expansion' => false, - ] ); } elseif ( $rec instanceof SpecialPage ) { $page = $rec; // XXX: we should deep clone here } else { @@ -419,16 +408,14 @@ class SpecialPageFactory { if ( $page instanceof SpecialPage ) { return $page; - } else { - // It's not a classname, nor a callback, nor a legacy constructor array, - // nor a special page object. Give up. - wfLogWarning( "Cannot instantiate special page $realName: bad spec!" ); - return null; } - } else { - return null; + // It's not a classname, nor a callback, nor a legacy constructor array, + // nor a special page object. Give up. + wfLogWarning( "Cannot instantiate special page $realName: bad spec!" ); } + + return null; } /** @@ -565,9 +552,9 @@ class SpecialPageFactory { $context->getOutput()->redirect( $url ); return $title; - } else { - $context->setTitle( $page->getPageTitle( $par ) ); } + + $context->setTitle( $page->getPageTitle( $par ) ); } elseif ( !$page->isIncludable() ) { return false; } @@ -714,8 +701,8 @@ class SpecialPageFactory { list( $name, $subpage ) = $this->resolveAlias( $alias ); if ( $name != null ) { return SpecialPage::getTitleFor( $name, $subpage ); - } else { - return null; } + + return null; } } diff --git a/includes/tidy/RaggettBase.php b/includes/tidy/RaggettBase.php index ccef56b34c..878099ff7d 100644 --- a/includes/tidy/RaggettBase.php +++ b/includes/tidy/RaggettBase.php @@ -4,7 +4,18 @@ namespace MediaWiki\Tidy; use MWException; +/** + * @deprecated since 1.32, use RemexDriver + */ abstract class RaggettBase extends TidyDriverBase { + + function __construct( $config ) { + parent::__construct( $config ); + + // All tidy modes other than remex are deprecated. + wfDeprecated( __METHOD__, '1.32' ); + } + /** * Generic interface for wrapping and unwrapping HTML for Dave Raggett's tidy. * diff --git a/includes/tidy/RaggettExternal.php b/includes/tidy/RaggettExternal.php index 2809ea47d4..0b485c7cc6 100644 --- a/includes/tidy/RaggettExternal.php +++ b/includes/tidy/RaggettExternal.php @@ -2,6 +2,9 @@ namespace MediaWiki\Tidy; +/** + * @deprecated since 1.32, use RemexDriver + */ class RaggettExternal extends RaggettBase { /** * Spawn an external HTML tidy process and get corrected markup back from it. diff --git a/includes/tidy/RaggettInternalHHVM.php b/includes/tidy/RaggettInternalHHVM.php index 65d37f4f07..1681dc45e4 100644 --- a/includes/tidy/RaggettInternalHHVM.php +++ b/includes/tidy/RaggettInternalHHVM.php @@ -2,6 +2,9 @@ namespace MediaWiki\Tidy; +/** + * @deprecated since 1.32, use RemexDriver + */ class RaggettInternalHHVM extends RaggettBase { /** * Use the HTML tidy extension to use the tidy library in-process, diff --git a/includes/tidy/RaggettInternalPHP.php b/includes/tidy/RaggettInternalPHP.php index e7724b0164..c1050cc222 100644 --- a/includes/tidy/RaggettInternalPHP.php +++ b/includes/tidy/RaggettInternalPHP.php @@ -2,6 +2,9 @@ namespace MediaWiki\Tidy; +/** + * @deprecated since 1.32, use RemexDriver + */ class RaggettInternalPHP extends RaggettBase { /** * Use the HTML tidy extension to use the tidy library in-process, diff --git a/includes/tidy/RaggettWrapper.php b/includes/tidy/RaggettWrapper.php index b793a58af7..855282d342 100644 --- a/includes/tidy/RaggettWrapper.php +++ b/includes/tidy/RaggettWrapper.php @@ -15,6 +15,7 @@ use Parser; * duplicated. Perhaps we should create an abstract marker hiding class. * * @ingroup Parser + * @deprecated since 1.32 */ class RaggettWrapper { diff --git a/includes/user/BotPassword.php b/includes/user/BotPassword.php index 2228feb3fe..5762120053 100644 --- a/includes/user/BotPassword.php +++ b/includes/user/BotPassword.php @@ -470,6 +470,10 @@ class BotPassword implements IDBAccessObject { return Status::newFatal( 'nosuchuser', $name ); } + if ( $user->isLocked() ) { + return Status::newFatal( 'botpasswords-locked' ); + } + // Throttle $throttle = null; if ( !empty( $wgPasswordAttemptThrottle ) ) { diff --git a/includes/user/User.php b/includes/user/User.php index d6d4db25f3..aaa7663948 100644 --- a/includes/user/User.php +++ b/includes/user/User.php @@ -27,6 +27,7 @@ use MediaWiki\Auth\AuthManager; use MediaWiki\Auth\AuthenticationResponse; use MediaWiki\Auth\AuthenticationRequest; use MediaWiki\User\UserIdentity; +use MediaWiki\Logger\LoggerFactory; use Wikimedia\IPSet; use Wikimedia\ScopedCallback; use Wikimedia\Rdbms\Database; @@ -2165,10 +2166,6 @@ class User implements IDBAccessObject, UserIdentity { if ( isset( $limits['user'] ) ) { $userLimit = $limits['user']; } - // limits for newbie logged-in users - if ( $isNewbie && isset( $limits['newbie'] ) ) { - $keys[$cache->makeKey( 'limiter', $action, 'user', $id )] = $limits['newbie']; - } } // limits for anons and for newbie logged-in users @@ -2200,6 +2197,11 @@ class User implements IDBAccessObject, UserIdentity { } } + // limits for newbie logged-in users (override all the normal user limits) + if ( $id !== 0 && $isNewbie && isset( $limits['newbie'] ) ) { + $userLimit = $limits['newbie']; + } + // Set the user limit key if ( $userLimit !== false ) { list( $max, $period ) = $userLimit; @@ -4208,9 +4210,12 @@ class User implements IDBAccessObject, UserIdentity { $this->clearSharedCache( 'refresh' ); // User was changed in the meantime or loaded with stale data $from = ( $this->queryFlagsUsed & self::READ_LATEST ) ? 'master' : 'replica'; - throw new MWException( - "CAS update failed on user_touched for user ID '{$this->mId}' (read from $from);" . - " the version of the user to be saved is older than the current version." + LoggerFactory::getInstance( 'preferences' )->warning( + "CAS update failed on user_touched for user ID '{user_id}' ({db_flag} read)", + [ 'user_id' => $this->mId, 'db_flag' => $from ] + ); + throw new MWException( "CAS update failed on user_touched. " . + "The version of the user to be saved is older than the current version." ); } diff --git a/languages/i18n/ar.json b/languages/i18n/ar.json index 4990716396..48156fe0ab 100644 --- a/languages/i18n/ar.json +++ b/languages/i18n/ar.json @@ -583,10 +583,10 @@ "botpasswords-editexisting": "تعديل كلمة مرور موجودة للبوت", "botpasswords-label-needsreset": "(تحتاج كلمة المرور إلى إعادة الضبط)", "botpasswords-label-appid": "اسم البوت:", - "botpasswords-label-create": "أنشـأ", + "botpasswords-label-create": "أنشأ", "botpasswords-label-update": "حدث", "botpasswords-label-cancel": "ألغ", - "botpasswords-label-delete": "", + "botpasswords-label-delete": "احذف", "botpasswords-label-resetpassword": "أعد ضبط كلمة السر", "botpasswords-label-grants": "المنح التي يمكن تطبيقها:", "botpasswords-help-grants": "كل منحة تعطي وصولا لصلاحيات المستخدم المعروضة التي يمتلكها حساب المستخدم بالفعل. انظر [[Special:ListGrants|جدول المنح]] للمزيد من المعلومات.", diff --git a/languages/i18n/arz.json b/languages/i18n/arz.json index b1f5f843a3..3e789b37dc 100644 --- a/languages/i18n/arz.json +++ b/languages/i18n/arz.json @@ -946,7 +946,7 @@ "rcshowhidemine": "$1 تعديلاتى", "rcshowhidemine-show": "اعرض", "rcshowhidemine-hide": "تخبية", - "rclinks": "بيين اخر $1 تعديل فى اخر $2 يوم، $3", + "rclinks": "بين اخر $1 تعديل فى اخر $2 يوم", "diff": "التغيير", "hist": "تاريخ", "hide": "تخبية", @@ -1489,7 +1489,7 @@ "whatlinkshere-hideredirs": "$1 التحويلات", "whatlinkshere-hidetrans": "$1 التضمينات", "whatlinkshere-hidelinks": "$1 لينكات", - "whatlinkshere-hideimages": "$1 وصلة صورة", + "whatlinkshere-hideimages": "$1 وصله فايل", "whatlinkshere-filters": "فلاتر", "blockip": "بلوك {{GENDER:$1|اليوزر|اليوزره}}", "blockiptext": "استخدم الاستمارة اللى تحت لمنع عنوان أيبى أو يوزر معين من الكتابة.\nدا لازم يحصل بس علشان تمنع التخريب ،و على حسب\n[[{{MediaWiki:Policy-url}}|السياسة]].\nاكتب سبب محدد تحت (يعنى مثلا، اكتب الصفحات المعينة اللى اتخربت بسببه).", @@ -1704,13 +1704,13 @@ "importlogpagetext": "استيرادات إدارية لصفحات ليها تاريخ تعديل من مواقع ويكى تانية.", "import-logentry-upload-detail": "$1 {{PLURAL:$1|تعديل واحد|تعديل}}", "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|تعديل واحد|تعديل}} من $2", - "tooltip-pt-userpage": "صفحة اليوزر بتاعتك", + "tooltip-pt-userpage": "صفحة اليوزر {{GENDER:|بتاعتك}}", "tooltip-pt-anonuserpage": "صفحة اليوزر للأيبى اللى انت بتعمل منه تحرير", - "tooltip-pt-mytalk": "صفحة المنقاشه بتاعتك", + "tooltip-pt-mytalk": "صفحة المناقشه {{GENDER:|بتاعتك}}", "tooltip-pt-anontalk": "نقاش حوالين التعديلات من عنوان الأيبى دا", - "tooltip-pt-preferences": "تفضيلاتى", + "tooltip-pt-preferences": "{{GENDER:|تفضيلاتك}}", "tooltip-pt-watchlist": "ليستة الصفح اللى بتراقب التعديلات فيها", - "tooltip-pt-mycontris": "ليستة تعديلاتك", + "tooltip-pt-mycontris": "ليستة {{GENDER:|تعديلاتك}}", "tooltip-pt-login": "يستحسن تسجل دخولك; لكن, ده مش اجبارى", "tooltip-pt-logout": "خروج", "tooltip-pt-createaccount": "نشجعك على عمل حساب وتسجيل دخولك; لكنه مش ضروري", @@ -1741,8 +1741,8 @@ "tooltip-t-recentchangeslinked": "اخر التغييرات فى صفح معمول ليها لينك من الصفحه دى", "tooltip-feed-rss": "تلقيم أر إس إس للصفحة دي", "tooltip-feed-atom": "تلقيم أتوم للصفحة دي", - "tooltip-t-contributions": "عرض مساهمات اليوزر ده", - "tooltip-t-emailuser": "ابعت ايميل لليوزر ده", + "tooltip-t-contributions": "عرض مساهمات {{GENDER:$1|اليوزر ده|اليوزره دى}}", + "tooltip-t-emailuser": "ابعت ايميل {{GENDER:$1|لليوزر ده|لليوزره دى}}", "tooltip-t-upload": "ارفع فايلات (upload files)", "tooltip-t-specialpages": "ليستة كل الصفح المخصوصه", "tooltip-t-print": "نسخه تنفع تتطبع للصفحه دى", @@ -2253,7 +2253,7 @@ "compare-page1": "صفحه 1", "compare-page2": "صفحه 2", "compare-submit": "قارن", - "diff-form": "'''استمارة'''", + "diff-form": "فروقات", "dberr-problems": "متأسفين، السايت دا بيعانى من صعوبات فنيه", "dberr-again": "حاول تستنا كام دقيقه و بعدين اعمل تحميل من تانى", "dberr-info": "(مش قادرين نتصل بـ السيرفر بتاع قاعدة البيانات: $1)", @@ -2275,7 +2275,7 @@ "logentry-newusers-create": "تم فتح حساب {{GENDER:$2|اليوزر|اليوزره}} $1", "logentry-upload-upload": " {{GENDER:$2|رفع|اترفعت}} $1 $3", "rightsnone": "(فاضى)", - "searchsuggest-search": "تدوير", + "searchsuggest-search": "تدوير {{SITENAME}}", "searchsuggest-containing": "جوّاه...", "expandtemplates": "تكبير القوالب", "expand_templates_intro": "الصفحة المخصوصة دى بتاخد بعض النصوص و بتفرد كل القوالب اللى موجودة فيها.\nو كمان بتفرد دوال القوالب زي\n{{#language:…}}, و المتغيرات زي\n{{CURRENTDAY}}—فى الحقيقة كل حاجة بين قوسين مزدوجين.\nو بتعمل دا عن طريق استعداء المعالج المناسب من الميدياويكى نفسها..", @@ -2298,5 +2298,5 @@ "special-characters-group-telugu": "Telugu", "special-characters-group-sinhala": "Sinhala", "special-characters-group-gujarati": "Gujarati", - "randomrootpage": "صفحة جذر عشوائية" + "randomrootpage": "صفحه جذر عشوائيه" } diff --git a/languages/i18n/be-tarask.json b/languages/i18n/be-tarask.json index 596aebd6ed..d3e6370502 100644 --- a/languages/i18n/be-tarask.json +++ b/languages/i18n/be-tarask.json @@ -1649,7 +1649,7 @@ "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|старонкай загрузкі {{GRAMMAR:родны|{{SITENAME}}}}]], калі гэты файл можна туды загрузіць згодна з правіламі.", - "backend-fail-stream": "Немагчыма накіраваць файл $1.", + "backend-fail-stream": "Не атрымалася трансьляваць файл «$1».", "backend-fail-backup": "Немагчыма зрабіць рэзэрвовую копію файлу «$1».", "backend-fail-notexists": "Файл $1 не існуе.", "backend-fail-hashes": "Немагчыма атрымаць хэшы файлаў для параўнаньня.", diff --git a/languages/i18n/bg.json b/languages/i18n/bg.json index e833d9d6f4..9f828e0047 100644 --- a/languages/i18n/bg.json +++ b/languages/i18n/bg.json @@ -1851,6 +1851,7 @@ "protectedtitles-submit": "Показване на заглавията", "listusers": "Списък на потребителите", "listusers-editsonly": "Показване само на потребители с редакции", + "listusers-temporarygroupsonly": "Показване само на потребители във временни потребителски групи", "listusers-creationsort": "Сортиране по дата на създаване", "listusers-desc": "Сортиране в низходящ ред", "usereditcount": "$1 {{PLURAL:$1|редакция|редакции}}", diff --git a/languages/i18n/bn.json b/languages/i18n/bn.json index 7115f8ae51..66849a17b4 100644 --- a/languages/i18n/bn.json +++ b/languages/i18n/bn.json @@ -386,9 +386,9 @@ "customcssprotected": "আপনার এই সিএসএস পাতাটি সম্পাদনা করার অনুমতি নেই, কারণ এ পাতায় অন্য ব্যবহারকারীর নিজস্ব সেটিংস রয়েছে।", "customjsonprotected": "আপনার এই JSON পাতাটি সম্পাদনা করার অনুমতি নেই কারণ এই পাতায় অন্য ব্যবহারকারীর নিজস্ব সেটিংস রয়েছে।", "customjsprotected": "আপনার এই জাভাস্ক্রিপ্ট পাতাটি সম্পাদনা করার অনুমতি নেই, কারণ এ পাতায় অন্য ব্যবহারকারীর নিজস্ব সেটিংস রয়েছে।", - "sitecssprotected": "আপনার এই CSS পাতাটি সম্পাদনা করার অনুমতি নেই কারণ এটি সমস্ত পরিদর্শককে প্রভাবিত করতে পারে", - "sitejsonprotected": "আপনার এই JSON পাতাটি সম্পাদনা করার অনুমতি নেই কারণ এটি সমস্ত পরিদর্শককে প্রভাবিত করতে পারে", - "sitejsprotected": "আপনার এই জাভাস্ক্রিপ্ট পাতাটি সম্পাদনা করার অনুমতি নেই কারণ এটি সমস্ত পরিদর্শককে প্রভাবিত করতে পারে", + "sitecssprotected": "আপনার এই CSS পাতাটি সম্পাদনা করার অনুমতি নেই কারণ এটি সমস্ত পরিদর্শককে প্রভাবিত করতে পারে।", + "sitejsonprotected": "আপনার এই JSON পাতাটি সম্পাদনা করার অনুমতি নেই কারণ এটি সমস্ত পরিদর্শককে প্রভাবিত করতে পারে।", + "sitejsprotected": "আপনার এই জাভাস্ক্রিপ্ট পাতাটি সম্পাদনা করার অনুমতি নেই কারণ এটি সমস্ত পরিদর্শককে প্রভাবিত করতে পারে।", "mycustomcssprotected": "আপনার এই সিএসএস পাতাটি সম্পাদনা করার অনুমতি নেই।", "mycustomjsonprotected": "আপনার এই JSON পাতাটি সম্পাদনা করার অনুমতি নেই।", "mycustomjsprotected": "আপনার এই জাভাস্ক্রিপ্ট পাতাটি সম্পাদনা করার অনুমতি নেই।", @@ -3368,6 +3368,7 @@ "confirm-unwatch-top": "এই পাতাটি আপনার নজরতালিকা থেকে সরিয়ে ফেলতে ইচ্ছুক?", "confirm-rollback-button": "ঠিক আছে", "confirm-rollback-top": "এই পাতায় করা সম্পাদনাগুলি প্রত্যাবর্তন করবেন?", + "mcrundofailed": "পূর্বাবস্থায় ফেরা ব্যর্থ হয়েছে", "quotation-marks": "\"$1\"", "imgmultipageprev": "← পূর্ববর্তী পাতা", "imgmultipagenext": "পরবর্তী পাতা →", diff --git a/languages/i18n/en.json b/languages/i18n/en.json index 4fa19d345a..4d28bd6354 100644 --- a/languages/i18n/en.json +++ b/languages/i18n/en.json @@ -566,6 +566,7 @@ "botpasswords-invalid-name": "The username specified does not contain the bot password separator (\"$1\").", "botpasswords-not-exist": "User \"$1\" does not have a bot password named \"$2\".", "botpasswords-needs-reset": "The bot password for bot name \"$2\" of {{GENDER:$1|user}} \"$1\" must be reset.", + "botpasswords-locked": "You cannot login with a bot password as your account is locked.", "resetpass_forbidden": "Passwords cannot be changed", "resetpass_forbidden-reason": "Passwords cannot be changed: $1", "resetpass-no-info": "You must be logged in to access this page directly.", diff --git a/languages/i18n/hr.json b/languages/i18n/hr.json index 1557e56b5b..e2da9c3c75 100644 --- a/languages/i18n/hr.json +++ b/languages/i18n/hr.json @@ -2464,7 +2464,7 @@ "allmessagesname": "Ime", "allmessagesdefault": "Prvotni tekst", "allmessagescurrent": "Trenutačni tekst", - "allmessagestext": "Ovo je popis sistemskih poruka u imenskom prostoru MediaWiki. Molimo posjetite [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation lokalizaciju MediaWikija] i [https://translatewiki.net translatewiki.net] ako želite doprinijeti lokalizaciji MediaWiki softvera.", + "allmessagestext": "Ovo je popis poruka sustava u imenskom prostoru MediaWiki. Molimo posjetite [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation lokalizaciju MediaWikija] i [https://translatewiki.net translatewiki.net] ako želite doprinijeti lokalizaciji MediaWiki softvera.", "allmessagesnotsupportedDB": "Ova stranica ne može biti koriÅ¡tena jer je isključen parametar '''$wgUseDatabaseMessages'''.", "allmessages-filter-legend": "Filtriraj", "allmessages-filter": "Filtriraj prema prilagođenom obliku:", @@ -2783,7 +2783,7 @@ "exif-stripoffsets": "Položaj bloka podataka", "exif-rowsperstrip": "Broj redova u bloku", "exif-stripbytecounts": "Veličina komprimiranog bloka", - "exif-jpeginterchangeformat": "Udaljenost JPEG previewa od početka datoteke", + "exif-jpeginterchangeformat": "Udaljenost JPEG mini-pregleda od početka datoteke", "exif-jpeginterchangeformatlength": "Količina bajtova JPEG previewa", "exif-whitepoint": "Kromaticitet bijele točke", "exif-primarychromaticities": "Kromaticitet primarnih boja", diff --git a/languages/i18n/ja.json b/languages/i18n/ja.json index c0b06f8022..a351ededdd 100644 --- a/languages/i18n/ja.json +++ b/languages/i18n/ja.json @@ -2087,6 +2087,7 @@ "apisandbox-dynamic-parameters-add-label": "引数の追加", "apisandbox-dynamic-parameters-add-placeholder": "引数名", "apisandbox-dynamic-error-exists": "引数名 \"$1\" は既に存在しています。", + "apisandbox-templated-parameter-reason": "この[[Special:ApiHelp/main#main/templatedparams|テンプレートパラメータ]]は、$2の{{PLURAL:$1|値}}に基づいて提供されます。", "apisandbox-deprecated-parameters": "廃止予定の引数", "apisandbox-fetch-token": "トークンを自動入力します", "apisandbox-add-multi": "追加", @@ -4069,6 +4070,7 @@ "limitreport-expensivefunctioncount-value": "$1/$2", "limitreport-unstrip-depth": "\"unstrip\" を再帰的に実行する回数", "limitreport-unstrip-depth-value": "$1/$2", + "limitreport-unstrip-size": "展開後読み込み量を解除する", "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|バイト}}", "expandtemplates": "テンプレートを展開", "expand_templates_intro": "この特別ページは、入力したウィキテキストに含まれるすべてのテンプレートを再帰的に展開します。\n{{#language:…}} のようなパーサー関数や、\n{{CURRENTDAY}} のような変数も展開します。\nつまり、二重中括弧で囲まれたものほぼすべてを展開します。", @@ -4321,6 +4323,7 @@ "undelete-cantedit": "このページを編集する許可がないため復元できません。", "undelete-cantcreate": "同名のページが存在せず、このページを作成する許可がないため復元できません。", "pagedata-title": "ページ・データ", + "pagedata-text": "このページは、ページへのデータインターフェースを提供します。サブページの構文を使用して、URLにページタイトルを入力してください。\n* コンテンツのネゴシエーションは、クライアントのAcceptヘッダーに基づいて適用されます。つまり、ページデータはクライアントが優先する形式で提供されます。", "pagedata-not-acceptable": "該当する形式が見つかりません。対応している MIME タイプ: $1", "pagedata-bad-title": "「$1」は無効なページ名です。", "unregistered-user-config": "セキュリティ上の理由から、JavaScript、CSSおよびJSONの利用者サブページは、登録されていない利用者に対しては読み込みできません。", @@ -4333,5 +4336,6 @@ "passwordpolicies-policy-passwordcannotmatchusername": "パスワードは利用者名と同じにすることはできません", "passwordpolicies-policy-passwordcannotmatchblacklist": "パスワードは、特にブラックリストに載っているものと一致するものは設定できません", "passwordpolicies-policy-maximalpasswordlength": "パスワードは$1{{PLURAL:$1|文字}}以下でなければなりません", - "passwordpolicies-policy-passwordcannotbepopular": "パスワードは{{PLURAL:$1|一般的なものにすることはできません|一般的な$1個のパスワードのリストと一致するものにすることはできません}}" + "passwordpolicies-policy-passwordcannotbepopular": "パスワードは{{PLURAL:$1|一般的なものにすることはできません|一般的な$1個のパスワードのリストと一致するものにすることはできません}}", + "easydeflate-invaliddeflate": "提供されたコンテンツが適切に圧縮されていません" } diff --git a/languages/i18n/jv.json b/languages/i18n/jv.json index 615763f2e3..a4c249a623 100644 --- a/languages/i18n/jv.json +++ b/languages/i18n/jv.json @@ -60,7 +60,7 @@ "tog-watchlisthidecategorization": "Dhelikaké kategorisasi kaca", "tog-ccmeonemails": "Kirimi aku turunan layang-èl sing takkirim menyang wong liya", "tog-diffonly": "Aja tuduhaké isiné kaca sangisoré bédané besutan", - "tog-showhiddencats": "Tuduhaké kategori sing didhelikaké", + "tog-showhiddencats": "Tuduhaké kategori kang ndhelik", "tog-norollbackdiff": "Aja tuduhaké béda sawisé ngayahi bebalèn", "tog-useeditwarning": "Élingaké kula yèn ninggal kaca besutan sadurungé nyimpen", "tog-prefershttps": "Tansah nganggo sambungan sing aman nalika mlebu log", @@ -305,7 +305,7 @@ "nosuchaction": "Ora ana tumindak mangkono", "nosuchactiontext": "Tumindak sing dikarepaké déning URL ora trep.\nPanjenengan bokmanawa salah ngetik URL-é, utawa salah nurut pranala.\nIki bokmanawa uga nuduhaké yèn ana ama ing piranti alus sing dianggo déning {{SITENAME}}.", "nosuchspecialpage": "Ora ana kaca mirunggan mangkono", - "nospecialpagetext": "Panjenengan nyuwun kaca mirunggan sing ora sah.\n\nPratélan kaca mirunggan sing sah bisa tinemu ing [[Special:SpecialPages|{{int:specialpages}}]].", + "nospecialpagetext": "Panjenengan nyuwun kaca mirunggan kang ora trep.\n\nPratélan kaca mirunggan kang trep bisa tinemu ing [[Special:SpecialPages|{{int:specialpages}}]].", "error": "Masalah", "databaseerror": "Masalah sasana dhata", "databaseerror-text": "Ana kerusakan ing basis data (query error).\n\nMungkin ana masalah ing software-e.", @@ -656,9 +656,9 @@ "semiprotectedpagewarning": "Cathetan: Kaca iki pinuju direksa, mula mung panganggo sing kadhaftar sing bisa mbesut.\nÈntri log pungkasan cumepak ana ing ngisor kanggo rujukan:", "cascadeprotectedwarning": "Pènget: Kaca iki wis direksa saéngga mung panganggo kanthi hak pangurus waé sing bisa mbesut amarga kaca iki katranklusi ing {{PLURAL:$1|kaca|kaca-kaca}} sing kareksa runut ngisor iki:", "titleprotectedwarning": "'''Pènget: Kaca iki wis dikunci saéngga perlu [[Special:ListGroupRights|hak mligi]] kanggo gawéné.'''\nEntri cathetan pungkasan disadiakake ing ngisor kanggo referensi:", - "templatesused": "{{PLURAL:$1|Cithakan}} sing dienggo ing kaca iki:", - "templatesusedpreview": "{{PLURAL:$1|Cithakan}} sing dienggo ing pratuduh iki:", - "templatesusedsection": "{{PLURAL:$1|Cithakan}} sing dienggo ding bagian iki:", + "templatesused": "{{PLURAL:$1|Cithakan}} kang kaanggo ing kaca iki:", + "templatesusedpreview": "{{PLURAL:$1|Cithakan}} kang kaanggo ing pratuduh iki:", + "templatesusedsection": "{{PLURAL:$1|Cithakan}} kang kaanggo ing pérangan iki:", "template-protected": "(kareksa)", "template-semiprotected": "(semu kareksa)", "hiddencategories": "Kaca iki anggotaning {{PLURAL:$1|1 kategori wadi|$1 kategori wadi}}:", @@ -694,9 +694,9 @@ "expensive-parserfunction-warning": "Pènget: Kaca iki ngandhut kakèhan panggunan fungsi ''parser'' sing larang.\n\nSajatiné kuduné duwé kurang saka {{PLURAL:$2|panggilan|panggilan}}, saiki ana {{PLURAL:$1|$1 panggilan|$1 panggilan}}.", "expensive-parserfunction-category": "Kaca-kaca mawa panggunan fungsi ''parser'' sing kakèhan", "post-expand-template-inclusion-warning": "Pènget: Cithakan klebu ukurané kegedhèn.\nSawetara cithakan bakal dilirwakaké.", - "post-expand-template-inclusion-category": "Kaca-kaca kanthi cithakan klebu ukuran sing ngluwihi wates", + "post-expand-template-inclusion-category": "Kaca mawa ukuran cithakan kang munjuli wates", "post-expand-template-argument-warning": "Pènget: Kaca iki ngandhut saora-orané siji argumen cithakan kanthi ukuran èkspansi sing kegedhèn. Argumèn-argumèn kasebut wis dilirwakaké.", - "post-expand-template-argument-category": "Kaca-kaca kanthi argumèn cithakan sing dilirwakaké", + "post-expand-template-argument-category": "Kaca mawa argumèn cithakan kang kabusek", "parser-template-loop-warning": "Ana ''loop'' cithakan: [[$1]]", "parser-template-recursion-depth-warning": "Wates ''recursion depth'' cithakan wis ngliwati ($1)", "language-converter-depth-warning": "Wates jeroné pangganti basa wis kapunjulen ($1)", @@ -759,7 +759,7 @@ "revisiondelete": "Busak/wurung busak révisi", "revdelete-nooldid-title": "Révisi tujuan ora trep", "revdelete-nooldid-text": "Panjenengan durung mènèhi target revisi kanggo nglakoni fungsi iki.", - "revdelete-no-file": "Barkas sing dipéngini ora ana.", + "revdelete-no-file": "Barkas kang panjenengan karsakaké ora ana.", "revdelete-show-file-confirm": "Apa panjenengan yakin arep mirsani révisi sing wis kabusak saka berkas \"$1\" ing $2, jam $3?", "revdelete-show-file-submit": "Iya", "logdelete-selected": "{{PLURAL:$1|Log kapilih|Log kapilih}} kanggo:", @@ -839,7 +839,7 @@ "showhideselectedversions": "Tampilaké/dhelikaké révisi kapilih", "editundo": "wurung", "diff-empty": "(Ora ana béda)", - "diff-multi-sameuser": "({{PLURAL:$1|Sarévisi antara|$1 révisi antara}} déning panganggo sing padha sing ora katuduhaké)", + "diff-multi-sameuser": "({{PLURAL:$1|Sarévisi antara|$1 révisi antara}} déning panganggo kang padha kang ora katuduhaké)", "diff-multi-otherusers": "({{PLURAL:$1|Siji révisi langsung|$1 révisi langsung}} déning {{PLURAL:$2|siji panganggo liyané|$2 panganggo}} ora dituduhaké)", "diff-multi-manyusers": "({{PLURAL:$1|Siji révisi langsung|$1 révisi langsung}} déning {{PLURAL:$2|panganggo|panganggo}} $2 ora katuduhaké)", "difference-missing-revision": "{{PLURAL:$2|Sak pambenahan|$2 pambenahan}} saka prabédan iki ($1) {{PLURAL:$2|ora ditemokaké|ora ditemokaké}}.\n\nIki biasané kasebab pranala prabedan sing wis ora kanggo saka kaca isi wis dibusak.\nRinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log busak].", @@ -1220,7 +1220,7 @@ "recentchanges": "Owahan-owahan anyar", "recentchanges-legend": "Opsi owah-owahan anyar", "recentchanges-summary": "Lacak owah-owahan anyar wiki iki ing kaca iki.", - "recentchanges-noresult": "Ora ana owahan ing kalamangsa sing mathuk karo pranatan iki.", + "recentchanges-noresult": "Ora ana owahan ing kalamangsa iku kang mathuk karo pranatan iki.", "recentchanges-feed-description": "Urutna owah-owahan anyar ing wiki ing ''feed'' iki.", "recentchanges-label-newpage": "Besutan iki nggawé kaca anyar", "recentchanges-label-minor": "Iki besutan cilik", @@ -1388,9 +1388,9 @@ "uploaderror": "Kaluputan pangunggahan berkas", "upload-recreate-warning": "'''Pèngetan: Berkas mawa jeneng kuwi wis dibusak utawa disingkiraké.'''\n\nLog pambusakan lan panyingkiran saka kaca iki sumadhiya nèng kéné:", "uploadtext": "Anggonen formulir ngisor iki saperlu ngunggah barkas.\nKanggo ndeleng utawa nggolèki barkas sing wis diunggah sadurungé, panjenengan menyanga [[Special:FileList|pratélan barkas unggahan]]. Barkas unggahan ulang uga kacathet ing [[Special:Log/upload|log unggah]], déné barkas busakan ing [[Special:Log/delete|log busak]].\n\nKanggo muwuhi barkas ing kaca, anggonen pranala kanthi formulir ing ngisor iki, pilih salah siji:\n* [[{{ns:file}}:File.jpg]] saperlu nganggo barkasé kanthi vèrsi sing wutuh\n* [[{{ns:file}}:File.png|200px|thumb|left|alt text]] saperlu nganggo barkasé kanthi amba 200 piksel déné ana ing njeron kothak lan kapacak ing sisih kiwané kaca mawa \"alt text\" minangka katerangané\n* [[{{ns:media}}:File.ogg]] saperlu nggayutaké langsung barkasé tanpa mitontonaké barkasé dhéwé", - "upload-permitted": "{{PLURAL:$2|Jinis}} barkas sing diidinaké: $1.", - "upload-preferred": "{{PLURAL:$2|Jinis}} barkas sing diprayogakaké: $1.", - "upload-prohibited": "{{PLURAL:$2|Jinis}} barkas sing dilarang: $1.", + "upload-permitted": "{{PLURAL:$2|Jinis}} barkas kang kaolèhaké: $1.", + "upload-preferred": "{{PLURAL:$2|Jinis}} barkas kang kaprayogakaké: $1.", + "upload-prohibited": "{{PLURAL:$2|Jinis}} barkas kang kalarang: $1.", "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", @@ -1411,8 +1411,8 @@ "filetype-unwanted-type": "'''\".$1\"''' klebu jenis berkas sing ora diidinaké.\nLuwih becik {{PLURAL:$3|jinis berkas|Jinis-jinis berkas}} $2.", "filetype-banned-type": "\".$1\" {{PLURAL:$4|dudu jinis barkas sing diidinaké}}.\n{{PLURAL:$3|Jinis barkas}} sing diidinaké $2.", "filetype-missing": "Berkas ini ora duwé ekstènsi (contoné \".jpg\").", - "empty-file": "Barkas sing panjenengan kirim kosong.", - "file-too-large": "Barkas sing panjenengan kirim kagedhèn.", + "empty-file": "Barkas kang panjenengan lebokaké kosong.", + "file-too-large": "Barkas kang panjenengan lebokaké kagedhèn.", "filename-tooshort": "Jeneng barkas kecendhèken.", "filetype-banned": "Barkas jinis iki dilarang.", "verification-error": "Barkas iki ora lulus vèrifikasi.", @@ -1516,7 +1516,7 @@ "lockmanager-fail-svr-acquire": "Ora bisa ngentokaké gembok nèng sasana $1.", "lockmanager-fail-svr-release": "Ora bisa nguculaké gembok neng sasana $1.", "zip-file-open-error": "Ana masalah nalika mbukak barkas kanggo pamriksan ZIP.", - "zip-wrong-format": "Barkas sing diisèkaké dudu barkas ZIP.", + "zip-wrong-format": "Barkas kang panjenengan lebokaké dudu barkas ZIP.", "zip-bad": "Berkas rusak utawa berkas ZIP sing ora bisa diwaca.\nKuwi ora bisa kapriksa kanthi patut kanggo kamanan.", "zip-unsupported": "Berkasé kuwi berkas ZIP sing nganggo piranti ZIP sing ora kasengkuyung déning MediaWiki.\nKuwi ora bisa kapriksa kanthi patut kanggo kamanan.", "uploadstash": "Unggah pandhelikan", @@ -1554,7 +1554,7 @@ "licenses-edit": "Besut pilihan lisènsi", "license-nopreview": "(Pratuduh ora ana)", "upload_source_url": "(barkas sing panjenengan pilih saka URL sing trep tur bisa diaksès umum)", - "upload_source_file": "(barkas sing panjenengan pilih saka komputeré panjenengan)", + "upload_source_file": "(barkas kang panjenengan pilih saka komputer)", "listfiles-delete": "busak", "listfiles-summary": "Kaca mirunggan iki nuduhaké kabèh barkas sing kaunggah.", "listfiles_search_for": "Golèk jeneng gambar:", @@ -1636,13 +1636,13 @@ "download": "undhuh", "unwatchedpages": "Kaca kang ora ingawasan", "listredirects": "Daftar pengalihan", - "unusedtemplates": "Cithakan sing ora kanggo", + "unusedtemplates": "Cithakan kang ora kanggo", "unusedtemplatestext": "Kaca iki ngamot kabèh kaca ing bilik jeneng {{ns:template}} sing ora dianggo ing kaca ngendi waé.\nPriksanen dhisik pranala-pranala menyang cithakan iki sadurungé mbusak.", "unusedtemplateswlh": "pranala liya-liyané", "randompage": "Kaca sembarang", "randompage-nopages": "Ora ana kaca ing {{PLURAL:$2||}}bilik jeneng iki:$1.", "randomincategory": "Sembarang kaca ing kategori", - "randomincategory-invalidcategory": "\"$1\" dudu jeneng kategori sing apik.", + "randomincategory-invalidcategory": "\"$1\" dudu jeneng kategori kang trep.", "randomincategory-nopages": "Ora ana kaca ing kategori [[:Category:$1|$1]].", "randomincategory-category": "Kategori:", "randomincategory-legend": "Sembarang kaca ing kategori", @@ -1697,20 +1697,20 @@ "lonelypages": "Kaca kang lola", "lonelypagestext": "Kaca-kaca ing ngisor iki ora ana sing nyambung menyang kaca liyané ing {{SITENAME}}.", "uncategorizedpages": "Kaca kang tanpa kategori", - "uncategorizedcategories": "Kategori sing tanpa kategori", - "uncategorizedimages": "Barkas sing tanpa kategori", - "uncategorizedtemplates": "Cithakan sing durung diwèhi kategori", - "unusedcategories": "Kategori sing ora kanggo", - "unusedimages": "Barkas sing ora kanggo", - "wantedcategories": "Kategori sing dipéngini", + "uncategorizedcategories": "Kategori kang tanpa kategori", + "uncategorizedimages": "Barkas kang tanpa kategori", + "uncategorizedtemplates": "Cithakan kang durung kawènèhan kategori", + "unusedcategories": "Kategori kang ora kanggo", + "unusedimages": "Barkas kang ora kanggo", + "wantedcategories": "Kategori kang kapéngini", "wantedpages": "Kaca kang kapéngini", "wantedpages-badtitle": "Sesirah ora sah ing omboyakan kasil: $1", - "wantedfiles": "Barkas sing dipéngini", + "wantedfiles": "Barkas kang kapéngini", "wantedfiletext-cat": "Barkas iki kaanggo, nanging ora ana. Barkas saka panyimpenan manca bokamanawa kacathet, sanajan ora ana. Saben ayahan kang salah, sanajan saka niyat kang becik, bakal kacorèk. Kaca kang ngemu barkas kang ora ana bakal kacathet ing [[:$1]].", "wantedfiletext-nocat": "Berkas iki dianggo nanging ora ana. Berkas saka panyimpenan asing mungkin kadaptar tinimbang ana kasunyatan. Saben ''positip salah'' bakal diorèk.", - "wantedtemplates": "Cithakan sing dipéngini", + "wantedtemplates": "Cithakan kang kapéngini", "mostlinked": "Kaca kang akèh kajujug", - "mostlinkedcategories": "Kategori sing kerep dhéwé dienggo", + "mostlinkedcategories": "Kategori kang kerep dhéwé kajujug", "mostlinkedtemplates": "Kaca paling akèh transklusi", "mostcategories": "Kaca kang kategoriné akèh dhéwé", "mostimages": "Barkas akèh dhéwé dienggo pranala", @@ -1753,7 +1753,7 @@ "move": "Lih", "movethispage": "Lih kaca iki", "unusedimagestext": "Berkas-berkas sing kapacak iki ana nanging ora dienggo ing kaca apa waé.\nTulung digatèkaké yèn situs wèb liyané mbok-menawa bisa nyambung ing sawijining berkas sacara langsung mawa URL langsung, lan berkas-berkas kaya mengkéné iku mbok-menawa ana ing daftar iki senadyan ora dienggo aktif manèh.", - "unusedcategoriestext": "Kategori iki ana senadyan ora ana artikel utawa kategori liyané sing nganggo.", + "unusedcategoriestext": "Kaca kategori iki ana sanajan ora ana artikel utawa kategori liyané kang nganggo.", "notargettitle": "Ora ana sasaran", "notargettext": "Panjenengan ora nemtokaké kaca utawa panganggo tujuan fungsi iki.", "nopagetitle": "Kaca tujuan ora ditemokaké", @@ -1847,7 +1847,7 @@ "categories": "Kategori", "categories-submit": "Tuduhaké", "categoriespagetext": "{{PLURAL:$1|kategori ing ngisor iki ngandhut|kategori ing ngisor iki ngandhut}} kaca utawa media.\n[[Special:UnusedCategories|Kategori sing ora dianggo]] ora ditampilaké ing kéné.\nDeleng uga [[Special:WantedCategories|kategori sing diperlokaké]].", - "categoriesfrom": "Tuduhaké kategori-kategori sing diwiwiti:", + "categoriesfrom": "Tuduhaké kategori kang kawiwitan:", "deletedcontributions": "Pisumbanging panganggo sing dibusak", "deletedcontributions-title": "Pisumbanging panganggo sing dibusak", "sp-deletedcontributions-contribs": "pasumbang", @@ -2134,7 +2134,7 @@ "mycontris": "Pasumbang", "anoncontribs": "Pasumbang", "contribsub2": "Kanggo {{GENDER:$3|$1}} ($2)", - "nocontribs": "Ora tinemu Owah-owahan sing cocog karo wewaton mangkono.", + "nocontribs": "Owah-owahan kang cocog karo wewaton mangkono ora tinemu.", "uctop": "(saiki)", "month": "Saka wulan (lan sadurungé):", "year": "Saka taun (lan sadurungé):", @@ -2397,7 +2397,7 @@ "thumbnail_dest_directory": "Ora bisa nggawé dirèktori tujuan", "thumbnail_image-type": "Tipe gambar ora didhukung", "thumbnail_gd-library": "Konfigurasi pustaka GD ora pepak: fungsi $1 ilang", - "thumbnail_image-missing": "Barkas sing kayané ilang: $1", + "thumbnail_image-missing": "Barkasé kayané ora ana: $1", "import": "Impor kaca", "importinterwiki": "Impor saka wiki liya", "import-interwiki-text": "Pilih sawijining wiki lan irah-irahan kaca sing arep diimpor.\nTanggal révisi lan jeneng panyunting bakal dilestarèkaké.\nKabèh aktivitas impor transwiki bakal dilog ing [[Special:Log/import|log impor]].", diff --git a/languages/i18n/mnw.json b/languages/i18n/mnw.json index 26c9db6315..55a98f169e 100644 --- a/languages/i18n/mnw.json +++ b/languages/i18n/mnw.json @@ -65,14 +65,17 @@ "nov": "နဝ်", "dec": "ဒဳ", "january-date": "ဇန်နဝါရဳ $1", - "march-date": "မာတ် $1", + "february-date": "ဖေဖဝ်ရဳ$1", + "march-date": "မာတ် $1\nဒါန်ပေၚ်အာ ၁၀ တုဲ ညတအ်ပလံၚ်နၚ်\nသွက်အခေါၚ်ချူဒါန်ပ္ဍဲမုက်လိက်ဂှ်\nတၚ်ဂုဏ်ရ။", "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|ကဏ္ဍ|ကဏ္ဍဂမၠိုင်}}", @@ -87,18 +90,24 @@ "category-article-count": "{{PLURAL:$2|ကဏ္ဍဏအ် နွံဆၜိုတ် အတိုင်ဗွဲသၟဝ်ဏအ်ရ.| ဗွဲသၟဝ်ဏအ်ဂှ် {{PLURAL:$1| ဒှ်လၟိဟ် မုက်လိက်| ဒှ်လၟိဟ် မုက်လိက်ဂမၠိုင် $1 }} စပ် ကုကဏ္ဍဏအ်ရ၊၊ သီုဖအိုတ် နွံ $2}}", "category-article-count-limited": "အတိုၚ်ဗွဲသၟဝ်{{PLURAL:$1|မုက်ဂှ်|$1 မုက်တအ်}} ပ္ဍဲကဆံၚ်မလၟုဟ်.", "category-file-count": "{{PLURAL:$2|ကဏ္ဍဏအ် နွံဆၜိုတ် ဝှာင်|အတိုင် ဗွဲသၟဝ်ဏအ်ရ {{PLURAL:$1|ဝှာင် ဂှ်|$1 ဝှာင်တအ် ဂှ်}} ပ္ဍဲကဏ္ဍဏအ် သီုဖအိုတ် နွံ $2 ၊၊}}", + "category-file-count-limited": "အတိုၚ်ဗွဲသၟဝ်{{PLURAL:$1|ဝှာၚ်|$1 ဝှာၚ်ဂမၠိုၚ်}} ပ္ဍဲကဆံၚ်မလၟုဟ်.", "listingcontinuesabbrev": "ဆက်", + "index-category": "မုက်လိက်မစၞောန်လဝ်", "noindex-category": "မုက်လိက် မသက္ကုလိက်", "broken-file-category": "မုက်လိက် နကဵုလေန် ဝှာင်မလီုလာ်ဂမၠိုင်", "about": "ပရူ", + "article": "မုက်လိက် မာတိကာဂမၠိုင်", "newwindow": "(ပံက် ပ္ဍဲ မုက်ဗတင် တၟိ)", "cancel": "တးပဲါ", + "moredotdotdot": "ထပ်...", + "morenotlisted": "စရၚ်ဏအ်ဒဒှ်ဍိုက်ပေၚ်မံၚ်ယျ", "mypage": "မုက်လိက်", "mytalk": "ဓရီုကျာ", "anontalk": "ဓရီုကျာ", "navigation": "သ္ၚိအင်", "and": " ကေုာံ", "faq": "FAQ", + "actions": "ကၠောန်", "namespaces": "ဒၞာဲယၟု", "variants": "မူတၞဟ်", "navigation-heading": "သ္ၚိအင် မေန်နူ", @@ -168,7 +177,7 @@ "helppage-top-gethelp": "ရီု", "mainpage": "မုက်လိက်တမ်", "mainpage-description": "မုက်လိက်တမ်", - "policy-url": "ပရဝ်ဂျေတ်:မူဝါဒ", + "policy-url": "Project:မူဝါဒ", "portal": "ပါင်မုက် ဂကောံ", "portal-url": "Project:ပါင်မုက် ဂကောံ", "privacy": "ပဝ်လသဳ မဆေင်ကဵု အခေါင်အရာပူဂဵု", @@ -220,6 +229,8 @@ "viewsource-title": "ဗဵု တမ်ရိုဟ် သွက် $1", "viewsourcetext": "မၞး ဗဵု ကေုာံ စၠောအ်ကပ်ပဳကေတ် တမ်ရိုဟ် မုက်လိက်ဏအ် ဂွံရ၊၊", "exception-nologin": "ဟွံ လုပ်လံက်အေန်လဝ်", + "welcomeuser": "ဒုၚ်တၠုၚ်,$1", + "welcomecreation-msg": "အကံက်မၞးခၞံကၠောန်တုဲယျ.\nမၞးပြံၚ်ကေတ်ဒြပ်မၞး{{SITENAME}}[[Special:Preferences|စိုတ်လုပ်စမဂၠိုၚ်]]ယဝ်မၞးနွံပၟိက်မ္ဂး.", "yourname": "ယၟုညးလွပ်:", "userlogin-yourname": "ယၟုညးလွပ်", "userlogin-yourname-ph": "စုတ် ယၟုညးလွပ်", @@ -232,7 +243,18 @@ "createacct-yourpasswordagain": "ပဒတန် မလိက်ပၞုက်ညိ", "createacct-yourpasswordagain-ph": "စုတ် မလိက်ပၞုက် မွဲဝါပၠန်ညိ", "userlogin-remembermypassword": "လုပ်လံက်အေန်လဝ် အဲညိ၊၊", + "userlogin-signwithsecure": "သုၚ်စောဲလာၚ်ဆက်စၠောံမနွံကဵုဂီုကၠီုညိ", + "cannotlogin-title": "လုပ်လံက်အေန်ဟွံဂွံ", + "cannotlogin-text": "လုပ် လံက်အေန်ဂှ် ဒှ်ဟွံမာန်.", + "cannotloginnow-title": "လၟုဟ် လုပ်ဇၟိက်ဟွံဂွံ", + "cannotloginnow-text": "အဃောသုၚ်စောဲဒၟံၚ်$1ဂှ် လုပ်ဇၟိက်လံက်အေန် ဟွံဂွံ.", + "cannotcreateaccount-title": "ခၞံဗဒှ် အကံက် ဟွံဂွံ", + "cannotcreateaccount-text": "ခၞံကၠောန်အံက်တၟိဂှ် ဂွံဟွံမာန်ပ္ဍဲဝဳကဳဏအ်.", + "yourdomainname": "ဒိုမိန်မၞး :", + "password-change-forbidden": "မၞးလှာဲကေတ်မအက္ခရ်ပၞုက်ဂမၠိုၚ်ဟွံဂွံလ္တူဝဳကဳဏအ်.", "login": "လုပ်လံက်အေန်", + "login-security": "သ္ပဒတန်လက်သဏ်ဇကုညိ", + "nav-login-createaccount": "လုပ်ဇၟိက်/ခၞံကၠောန် အကံက်", "logout": "တိတ်", "userlogout": "တိတ်", "notloggedin": "ဟွံ လုပ်လံက်အေန်လဝ်", @@ -241,8 +263,15 @@ "createaccount": "ခၞံကၠောန် အကံက်", "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": "ယၟု ဍာံ (optional)", "createacct-reason": "ဟိုတ်", "createacct-reason-ph": "မုဟိုတ်မၞးဂွံခၞံကၠောန်အကံက်တၞဟ်ခြာရော", @@ -252,13 +281,43 @@ "createacct-benefit-body1": "{{PLURAL:$1|တင်ပလေဝ်ဒါန်|တင်ပလေဝ်ဒါန်ဂမၠိုင်}}", "createacct-benefit-body2": "{{PLURAL:$1|မုက်လိက်|မုက်လိက်ဂမၠိုင်}}", "createacct-benefit-body3": "ခြာဟွံလအ် {{PLURAL:$1|ညးမခၞံကၠောန်|ညးမခၞံကၠောန်ဂမၠိုင်}}", + "loginsuccesstitle": "လံက်အေန်တုဲ", + "loginsuccess": "လၟုဟ်မၞးဂှ်လံက်အေန်လဝ်ပ္ဍဲသွက်{{SITNAME}}ညံၚ်\"$1\" .", + "accountcreated": "ခၞံကၠောန်အကံက်တုဲ", + "accountcreatedtext": "The user account for [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) has been created.", + "createaccount-title": "ခၞံကၠောန်အကံက်သွက်{{SITENAME}}", + "createaccount-text": "ညးမမိက်ကဵုမွဲခၞံကၠောန်လဝ်အကံက်သွက်အီမေလ်မၞး ပ္ဍဲ {{SITENAME}} ($4) မၞုံလဝ်ယၟု \"$2\", နကဵုအက္ခရ်ပၞုက်\"$3\".\nမၞးထေက်ကဵုလံက်အေန်တုဲ လှာဲထောံမအက္ခရ်ပၞုက်မၞ: လၟုဟ်ညိ.\nမၞးမထေက်ကဵုပမဇ္ဇျဟ်လိက်ဏံရ,ယဝ်အကံက်မခၞံကၠောန်လဝ်မဆောတ်ယောၚ်မ္ဂး.\n\nYou may ignore this message, if this account was created in error.", + "login-throttled": "မၞးကၠောန်သ္ပဂစာန်လံက်အေန်တုဲကၠုၚ်ဂှ် အတန်ဗွဲမဂၠိုၚ်ရ.\nသ္ပဂုဏ်တုဲမၚ်$1 ကိုပ်ကၠာနူဟွံဂစာန်မွဲအတန်ပၠန်.", "loginlanguagelabel": "အရေဝ်ဘာသာ- $1", "pt-login": "လုပ်လံက်အေန်", "pt-login-button": "လုပ်လံက်အေန်", + "pt-login-continue-button": "ဆက် လုပ်လံက်အေန်", "pt-createaccount": "ခၞံကၠောန် အကံက်", "pt-userlogout": "တိတ်", + "changepassword": "လှာဲအက္ခရ်ပၞုက်", + "resetpass_announce": "သ္ဂောံတုဲဒှ် လုပ်လံက်အေန်, မၞးထေက်ဒဆိၚ်ကေတ် မအက္ခရ်ဗၞုက်တၟိ.", + "resetpass_header": "လှာဲမက္ခရ်ပၞုက်အကံက်", + "oldpassword": "မက္ခရ်ပၞုက်တြေံ:", + "newpassword": "မလိက်ပၞုက် တၟိ", + "retypenew": "ကလေၚ်တက် မအက္ခရ်ဓလုက်:", + "resetpass_submit": "ချိၚ်မလိက်ပၞုက် တုဲ လုပ်ဇၟိက်", + "changepassword-success": "မအက္ခရ်ပၞုက်မၞးဂှ် ပြံၚ်အာတုဲယျ!", + "changepassword-throttled": "မၞးကၠောန်သ္ပဂစာန်လံက်အေန်တုဲကၠုၚ်ဂှ် အတန်ဗွဲမဂၠိုၚ်ရ.\nသ္ပဂုဏ်တုဲမၚ်$1 ကိုပ်ကၠာနူဟွံဂစာန်မွဲအတန်ပၠန်.", + "botpasswords": "Bot အက္ခရ်ပၞုက်", + "botpasswords-disabled": "Bot မက္ခရ်ပၞုက်တအ်ဂှ် ဂွံဟွံမာန်.", + "botpasswords-label-appid": "ယၟု Bot:", + "botpasswords-label-create": "ခၞံကၠောန်", + "botpasswords-label-update": "ပခိုဟ်လဟဵု", + "botpasswords-label-cancel": "တးပဲါ", + "botpasswords-label-delete": "ဇိုတ်", + "botpasswords-label-resetpassword": "ကလေင်စုတ် မလိက်ပၞုက်", + "botpasswords-label-grants": "ဂရမ်မကလိဂွံမာန်:", + "botpasswords-bad-appid": "ယၟု bot \"$1\" ဂှ်ဟွံကိတ်ညဳ.", "resetpass-submit-cancel": "တးပဲါ", "passwordreset": "ကလေင်စုတ် မလိက်ပၞုက်", + "passwordreset-username": "ယၟုညးလွပ်:", + "passwordreset-email": "ဌာန်အဳမေလ်တအ်", + "passwordreset-emailtitle": "ခၞံကၠောန်အကံက်သွက်{{SITENAME}}", "bold_sample": "မလိက် တီု", "bold_tip": "မလိက် တီု", "italic_sample": "မလိက်ဓစေင်", @@ -276,17 +335,30 @@ "sig_tip": "စၟတ်တဲ မၞး နကဵု တဆိပ်အခိင်", "hr_tip": "လာင် ဗွဲလနေင်", "summary": "သကေမ်", + "subject": "ပရူပရာ\nဒါန်ပေၚ်အာ ၁၀၀၀ တုဲညးပလံၚ်နၚ် အခေါၚ်ခၞံမုက်လိက်ဏအ်။\nတၚ်ဂုဏ်ရ။", "minoredit": "ဣဏအ်ဂှ် ဒှ်အရာ မပလေဝ်ဒါန် ညိည", "watchthis": "မင်မဲ မုက်လိက်ဏအ်", "savearticle": "ဂိုင်သိပ် မုက်လိက်", + "savechanges": "သီဂိုၚ်မပြံၚ်လှာဲတအ်", + "publishpage": "မုက်လိက်တက်တြး", + "publishchanges": "ပတိတ်တြး ပြံင်လှာဲအာ", "savearticle-start": "ဂိုင်သိပ် မုက်လိက်", + "savechanges-start": "သီဂိုၚ်မပြံၚ်လှာဲတအ်", + "publishpage-start": "ပတိတ်တြး မုက်လိက်...", "publishchanges-start": "ပတိတ်တြး ပြံင်လှာဲအာ", "preview": "နမူနာ", "showpreview": "ထ္ၜး နမူနာ", "showdiff": "ထ္ၜး အရာမပြံင်လှာဲ", "anoneditwarning": "သတိ မၞး ဟွံဂွံ လုပ်လံက်အေန်လဝ်ရ၊၊ IP address မၞး မံက်ဒၟံင်ရောင် ယဝ်ရ မၞးကၠောန်သ္ပ ပရေင်ပလေဝ်ပလေတ်မွဲမွဲမ္ဂး၊၊ ယဝ်ရ [$1 လုပ်လံက်အေန်] ဟွံသေင်မ္ဂး [$2 ခၞံကၠောန် အကံက်မွဲ]မ္ဂး၊ ပရေင်ပလေဝ်ဒါန်မၞး တြးပတိတ် နကဵု ယၟုသုင်စောဲ မၞးရောင်၊၊", + "blockedtitle": "ညးလွပ်ဂှ်ကၟာတ်အာယျ", "blockedtext": "ယၟုညးလွပ် ဟွံသေင်မ္ဂး ဌာန်ဒၟံင်အာင်ဒဳမၞး ဒးဒုင်ကၟာတ်စဵုဒၞာလဝ်\n\nပွမကၟာတ်စဵုဒၞာဂှ် ကၠောန်လဝ် နကဵု $1.\nဟိုတ်မဂွံကၟာတ်စဵုဒၞာဂှ် $2.\n\n* အခိင်မစကၟာတ်စဵုဒၞာ- $8\n* အခိင်မကၟာတ်စဵုဒၞာအိုတ်- $6\n* မရန်တၟအ် blockee- $7\n\nမၞး ဆက်ကဵု $1 ဟွံသေင်မ္ဂး ညးတၞဟ်သအာင် [[{{MediaWiki:Grouppage-sysop}}|administrator]] ယဝ်ရ မိက်ဂွံ ပတိုန်ဂလာန် စပ်ကဵု မဒးဒုင်ကၟာတ်စဵုဒၞာဂှ်ဂွံရ၊၊\nမၞး စကာ အဳမေလ် \"{{int:emailuser}}\" ဟွံဂွံရ၊၊ ဆဂး ယဝ်ရ ဌာန်ဒၟံင်အဳမေလ်ဂှ် ဒှ်အရာတၟေင် ပ္ဍဲ [[Special:Preferences|account preferences]] မၞး ကေုာံ မၞးဟွံဒးဒုင် ကၟာတ်စဵုဒၞာလဝ် နကဵုအဳမေဝ်ဂှ်မ္ဂး ဂွံမာန်ရ၊၊\nIP address မၞး လၟုဟ်ဂှ် ဒှ် $3, တုဲ ID မဒးဒုင်ကၟာတ်စဵုဒၞာဂှ် ဒှ် #$5 ရ၊၊ \nယဝ်ရ မၞးမိက်ဂွံ သၟာန်မ္ဂး တင်ဂၞင် ဗွဲလတူတအ် သီုဖအိုတ်ဂှ် ဗၟံက်ထ္ၜးကဵုညိ၊၊", + "autoblockedtext": "ယၟုညးလွပ် ဟွံသေင်မ္ဂး ဌာန်ဒၟံင်အာင်ဒဳမၞး ဒးဒုင်ကၟာတ်စဵုဒၞာလဝ်\n\nပွမကၟာတ်စဵုဒၞာဂှ် ကၠောန်လဝ် နကဵု $1.\nဟိုတ်မဂွံကၟာတ်စဵုဒၞာဂှ် $2.\n\n* အခိင်မစကၟာတ်စဵုဒၞာ- $8\n* အခိင်မကၟာတ်စဵုဒၞာအိုတ်- $6\n* မရန်တၟအ် blockee- $7\n\nမၞး ဆက်ကဵု $1 ဟွံသေင်မ္ဂး ညးတၞဟ်သအာင် [[{{MediaWiki:Grouppage-sysop}}|administrator]] ယဝ်ရ မိက်ဂွံ ပတိုန်ဂလာန် စပ်ကဵု မဒးဒုင်ကၟာတ်စဵုဒၞာဂှ်ဂွံရ၊၊\nမၞး စကာ အဳမေလ် \"{{int:emailuser}}\" ဟွံဂွံရ၊၊ ဆဂး ယဝ်ရ ဌာန်ဒၟံင်အဳမေလ်ဂှ် ဒှ်အရာတၟေင် ပ္ဍဲ [[Special:Preferences|account preferences]] မၞး ကေုာံ မၞးဟွံဒးဒုင် ကၟာတ်စဵုဒၞာလဝ် နကဵုအဳမေဝ်ဂှ်မ္ဂး ဂွံမာန်ရ၊၊\nIP address မၞး လၟုဟ်ဂှ် ဒှ် $3, တုဲ ID မဒးဒုင်ကၟာတ်စဵုဒၞာဂှ် ဒှ် #$5 ရ၊၊ \nယဝ်ရ မၞးမိက်ဂွံ သၟာန်မ္ဂး တင်ဂၞင် ဗွဲလတူတအ် သီုဖအိုတ်ဂှ် ဗၟံက်ထ္ၜးကဵုညိ၊၊", + "whitelistedittext": "သ္ပဂုဏ်တုဲ$1 သ္ဂောံဒါန်မုက်လိက်တအ်.", + "confirmedittext": "မၞးထေက်ကဵုဒးသ္ပဒတန်ကဵု ဌာန်ဒတန်အဳမေလ်မၞးကိုပ်ကၠာနူဟွံဒါန်မုက်တအ်.\nသ္ပဂုဏ်တုဲ ချိၚ်ကေုာံဒတန် ဌာန်ဒတန်အဳမေလ်မၞး နူမၞး[[Special:Preferences|user| preferences]].", + "loginreqtitle": "နွံပၟိက်ကဵု လံက်အေန်", "loginreqlink": "လုပ်လံက်အေန်", + "loginreqpagetext": " သ္ပဂုဏ်တုဲ $1 သ္ဂောံဗဵုမုက်လိက်တၞဟ်တအ်.", + "accmailtitle": "ပြံၚ်ဏာ မအက္ခရ်ဗၞုက်", "newarticletext": "မၞး စိုပ်အာ ဇရေင် မုက်လိက်လေန် မဟွံဂွံကၠောန်လဝ်ဏီရ၊၊\nသွက်ဂွံ ခၞံကၠောန် မုက်လိက်ဏအ်ဂှ် ပ္ဍဲခံက်အင် ဗွဲသၟဝ်ဏအ်ဂှ် စတက်စုတ် မလိက်ညိ\n(မိက်ဂွံ ဆက်တီ ပရူဏအ်မ္ဂး ဆက်ကျောဝ် ပ္ဍဲ[$1မုက်လိက်အရီုအဗင်]ညိ)။ ဟိုတ်နူဗၠေတ်တုဲ မၞး စိုပ်ကၠုင် ပ္ဍဲဒၞာဲဏအ်မ္ဂး ဍဵု back တုဲ ကလေင်အာ ဒၞာဲတြေံညိ၊၊", "anontalkpagetext": "----\nမုက်လိက်ဏအ်ဂှ် ဒှ်ဒၞာဲ သွက်မၞိဟ် မဟွံဗမံက်ယၟု၊ မၞိဟ်ဟွံဂွံကၠောန်လဝ် အကံက်တအ်ဏီ ဂွံပတိုန်လညာတ် ပါ်ပဲါရ၊၊\nဟိုတ်ဂှ်ရ ပိုယ်ဒးစကာ မဂၞန် IP address သွက်ဂွံ တီညးတအ်ရ၊၊ IP address ဗီုဏအ်မွဲမွဲဂှ် ပါ်ပရအ်ဂွံ ညးလွပ် ဗွဲမဂၠိုင်ရ၊၊ ယဝ်ရ မၞးဂှ် ဒှ်ညးလွပ် မဟွံဗမံက်ယၟုမွဲ စှ်ေစိုတ် တင်ဂလာန်တအ်ဏအ်ဂှ် ဒှ်ဟွံထေက်မ္ဂး ပဂုန်တုဲ [[Special:CreateAccount|ခၞံကၠောန် အကံက်မွဲ]] ဟွံသေင်မ္ဂး [[Special:UserLogin|လုပ်လံက်အေန်]] သွက်ဂွံ ဝေင်ပဲါ ညးလွပ် မဟွံဗမံက်ယၟုတအ်တၞဟ်တအ်ရ၊၊", "noarticletext": "ပ္ဍဲမုက်လိက်ဏအ် လိက်ဟွံမွဲဏီရ၊၊\nမၞး ဂၠာဲကေတ် [[Special:Search/{{PAGENAME}}|search for this page title]] ပ္ဍဲမုက်လိက်တၞဟ်မ္ဂး ကလိဂွံမာန်ရောင်၊၊\n[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],\nဟွံသေင်မ္ဂး [{{fullurl:{{FULLPAGENAME}}|action=edit}} ခၞံကၠောန် လိက်မုက်ဏအ်ညိ၊၊].", @@ -385,8 +457,8 @@ "recentchanges-label-plusminus": "ဇမၞော် မုက်လိက်ဏအ် သၠာဲအာ နကဵု လၟိဟ်လျိုင်ဗာက်", "recentchanges-legend-heading": "Legend:", "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (also see [[Special:NewPages|list of new pages]])", - "rcfilters-filter-user-experience-level-registered-description": "လော့အင် ဝင်ထားသော တည်းဖြတ်သူများ", - "rcfilters-filter-user-experience-level-unregistered-description": "လော့အင် မဝင်ထားသော တည်းဖြတ်သူများ", + "rcfilters-filter-user-experience-level-registered-description": "ညဒါန်တအ် လုပ်လံက်အေန်လဝ်", + "rcfilters-filter-user-experience-level-unregistered-description": "ညးဒါန် ဟွံလုပ်-လံက်အေန်လဝ်တအ်ဂမၠိုၚ်", "rcfilters-filter-minor-label": "အသေးစား တည်းဖြတ်မှုများ", "rcfilters-filtergroup-changetype": "ပြောင်းလဲမှု အမျိုးအစား", "rcfilters-filter-pageedits-label": "စာမျက်နှာ တည်းဖြတ်မှုများ", diff --git a/languages/i18n/nl.json b/languages/i18n/nl.json index 186de49a92..f78d049154 100644 --- a/languages/i18n/nl.json +++ b/languages/i18n/nl.json @@ -618,6 +618,7 @@ "botpasswords-invalid-name": "De gebruikersnaam bevat niet het scheidingsteken van het botwachtwoord (\"$1\").", "botpasswords-not-exist": "Gebruiker \"$1\" heeft geen botwachtwoord genaamd \"$2\"", "botpasswords-needs-reset": "Het botwachtwoord voor botnaam \"$2\" van {{GENDER:$1|gebruiker}} \"$1\" moet opnieuw worden ingesteld.", + "botpasswords-locked": "U kunt uzelf niet aanmelden met een botwachtwoord omdat uw account is vergrendeld.", "resetpass_forbidden": "Wachtwoorden kunnen niet gewijzigd worden", "resetpass_forbidden-reason": "Wachtwoorden kunnen niet gewijzigd worden: $1", "resetpass-no-info": "U dient aangemeld zijn voordat u deze pagina kunt gebruiken.", @@ -2635,7 +2636,7 @@ "move-page-legend": "Pagina hernoemen", "movepagetext": "Door middel van het onderstaande formulier kunt u een pagina hernoemen.\nDe geschiedenis gaat mee naar de nieuwe pagina.\n* De oude naam wordt automatisch een doorverwijzing naar de nieuwe pagina.\n* Koppelingen naar de oude pagina worden niet aangepast.\n* De pagina's die doorverwijzen naar de oorspronkelijke paginanaam worden automatisch bijgewerkt.\nAls u dit niet wenst, controleer dan of er geen [[Special:DoubleRedirects|dubbele]] of [[Special:BrokenRedirects|onjuiste doorverwijzingen]] zijn ontstaan.\n\nEen pagina kan alleen hernoemd worden als de nieuwe paginanaam niet bestaat of een doorverwijspagina zonder verdere geschiedenis is.\n\nOpmerking:\nVoor veel bekeken pagina's kan het hernoemen drastische en onvoorziene gevolgen hebben.\nZorg ervoor dat u die gevolgen overziet voordat u deze handeling uitvoert.", "movepagetext-noredirectfixer": "Door middel van het onderstaande formulier kunt u een pagina en alle bijbehorende oude versies hernoemen.\nDe oude naam wordt automatisch een doorverwijzing naar de nieuwe pagina.\nControleer dan of er geen [[Special:DoubleRedirects|dubbele]] of [[Special:BrokenRedirects|onjuiste doorverwijzingen]] zijn ontstaan.\n\nEen pagina kan alleen hernoemd worden als de nieuwe paginanaam niet bestaat of een doorverwijspagina zonder verdere geschiedenis is.\nU kunt dus een pagina die per ongeluk is hernoemd terug hernoemen en u kunt een bestaande pagina niet overschrijven. \n\nOpmerking:\nVoor veel bekeken pagina's kan het hernoemen drastische en onvoorziene gevolgen hebben.\nZorg ervoor dat u die gevolgen overziet voordat u deze handeling uitvoert.", - "movepagetalktext": "Als u het onderstaande vinkje selecteert, krijgt de bijbehorende overlegpagina automatisch een andere naam, tenzij de overlegpagina onder de nieuwe naam al bestaat.\n\nIn dit geval moet u de pagina handmatig hernoemen of samenvoegen.", + "movepagetalktext": "Als u deze optie inschakelt krijgt de bijbehorende overlegpagina automatisch een andere naam, tenzij de overlegpagina onder de nieuwe naam al bestaat.\n\nIn dit geval moet u de pagina handmatig hernoemen of samenvoegen.", "moveuserpage-warning": "'''Waarschuwing:''' u gaat een gebruikerspagina hernoemen. Houd er rekening mee dat alleen de pagina wordt hernoemd, ''niet'' de gebruiker.", "movecategorypage-warning": "Waarschuwing: U staat op het punt een categoriepagina te hernoemen. Houdt u er rekening mee dat alleen de categoriepagina zelf hernoemd wordt; pagina's in de oude categorie worden niet automatisch naar de nieuwe verplaatst.", "movenologintext": "U moet [[Special:UserLogin|aangemeld]] zijn om een pagina te hernoemen.", diff --git a/languages/i18n/qqq.json b/languages/i18n/qqq.json index 4a8f365ab0..cf4446db59 100644 --- a/languages/i18n/qqq.json +++ b/languages/i18n/qqq.json @@ -768,6 +768,7 @@ "botpasswords-invalid-name": "Error message when a username lacking the separator character is passed to BotPassword. Parameters:\n* $1 - The separator character.", "botpasswords-not-exist": "Error message when a username exists but does not a bot password for the given \"bot name\". Parameters:\n* $1 - username\n* $2 - bot name", "botpasswords-needs-reset": "Error message when a bot password exists but needs to be reset. Parameters:\n* $1 - username\n* $2 - bot name", + "botpasswords-locked": "Shown in the event that the underlying account is locked", "resetpass_forbidden": "Used as error message in changing password. Maybe the external auth plugin won't allow local password changes.", "resetpass_forbidden-reason": "Like {{msg-mw|resetpass_forbidden}} but the auth provider gave a reason.\n\nParameters:\n* $1 - reason given by auth provider", "resetpass-no-info": "Error message for [[Special:ChangePassword]].\n\nParameters:\n* $1 (unused) - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description", diff --git a/languages/i18n/roa-tara.json b/languages/i18n/roa-tara.json index cf05767936..97010c7ee3 100644 --- a/languages/i18n/roa-tara.json +++ b/languages/i18n/roa-tara.json @@ -536,6 +536,7 @@ "botpasswords-updated-body": "'A passuord pu bot de nome \"$1\" de l'{{GENDER:$2|utende}} \"$2\" ha state aggiornate.", "botpasswords-deleted-title": "Passuord d'u bot scangellate", "botpasswords-deleted-body": "'A passuord pu bot de nome \"$1\" de l'{{GENDER:$2|utende \"$2\"}} ha state scangellate.", + "botpasswords-no-provider": "BotPasswordsSessionProvider non g'è disponibbile.", "botpasswords-restriction-failed": "Le restrizziuyne de passuord bot non ge fanne trasè.", "botpasswords-invalid-name": "'U nome de l'utende mise non ge tène 'u separatore pe passuord bot (\"$1\").", "resetpass_forbidden": "Le Password non ge ponne cangià", diff --git a/languages/i18n/skr-arab.json b/languages/i18n/skr-arab.json index 55a27ed57b..5630e92f90 100644 --- a/languages/i18n/skr-arab.json +++ b/languages/i18n/skr-arab.json @@ -564,7 +564,7 @@ "prefs-info": "بنیادی معلومات", "prefs-i18n": "بین الاقوامیت", "prefs-signature": "دستخط", - "prefs-dateformat": "تاریخ دی ترتیب", + "prefs-dateformat": "تریخ دی ترتیب", "prefs-timeoffset": "وقت دی ترتیب", "prefs-advancedediting": "عام آپشن", "prefs-editor": "خانہ ترمیم", @@ -725,7 +725,7 @@ "upload-form-label-usage-filename": "فائل دا ناں", "upload-form-label-own-work": "یہ میݙا ذاتی کم ہے", "upload-form-label-infoform-categories": "ونکیاں", - "upload-form-label-infoform-date": "تاریخ", + "upload-form-label-infoform-date": "تریخ", "backend-fail-delete": "مِسَل \"$1\" کوں مٹایا نی ونڄ سڳیا۔", "license": "اجازت نامہ:", "license-header": "اجازہ کاری", @@ -733,7 +733,7 @@ "imgfile": "فائل", "listfiles": "فائل لسٹ", "listfiles_thumb": "تھمب نیل", - "listfiles_date": "تاریخ", + "listfiles_date": "تریخ", "listfiles_name": "ناں", "listfiles_user": "ورتݨ والا", "listfiles_size": "حجم", @@ -744,7 +744,7 @@ "listfiles-latestversion-no": "کو", "file-anchor-link": "فائل", "filehist": "فائل دا تاریخچہ", - "filehist-help": "کہیں خاص ویلے تے تاریخ کوں فائل کین٘ویں نظردی ہائی، ݙیکھݨ کیتے اوں ویلے تے کلک کرو۔", + "filehist-help": "کہیں خاص ویلے تے تریخ کوں فائل کین٘ویں نظردی ہائی، ݙیکھݨ کیتے اوں ویلے تے کلک کرو۔", "filehist-deleteall": "سارے مٹاؤ", "filehist-deleteone": "مٹاؤ", "filehist-revert": "واپس", @@ -1013,9 +1013,9 @@ "pageinfo-redirects-name": "رجوعاں دی تعداد", "pageinfo-subpages-name": "ایں ورقے دے ذیلی ورقیاں دی تعداد", "pageinfo-firstuser": "ورقہ ساز", - "pageinfo-firsttime": "ورقہ بݨݨ دی تاریخ", + "pageinfo-firsttime": "ورقہ بݨݨ دی تریخ", "pageinfo-lastuser": "چھیکڑی ترمیم کنندہ", - "pageinfo-lasttime": "چھیکڑی ترمیم دی تاریخ", + "pageinfo-lasttime": "چھیکڑی ترمیم دی تریخ", "pageinfo-edits": "ترامیم دی مجموعی تعداد", "pageinfo-authors": "مختلف مصنفین دی تعداد", "pageinfo-recent-edits": "حالیہ ترامیم دی تعداد (گزشتہ $1 وچ)", @@ -1045,13 +1045,13 @@ "exif-orientation": "اورینٹیشن", "exif-xresolution": "افقی ریزولوشن", "exif-yresolution": "عمودی ریزولیشن", - "exif-datetime": "فائل بدلݨ دی تاریخ تے ویلا", + "exif-datetime": "فائل بدلݨ دی تریخ تے ویلا", "exif-make": "کیمرہ ساز کمپنی", "exif-model": "کیمرے دا ماڈل", "exif-software": "مستعمل سافٹ ویئر", "exif-exifversion": "اکزیف ورژن", "exif-colorspace": "رنگ فضا", - "exif-datetimeoriginal": "ڈیٹا بݨاوݨ دی تاریخ تے ویلا", + "exif-datetimeoriginal": "ڈیٹا بݨاوݨ دی تریخ تے ویلا", "exif-datetimedigitized": "ڈجیٹائزنگ دا ویلہ تے تریخ", "exif-orientation-1": "عام", "namespacesall": "یکے", diff --git a/languages/i18n/tr.json b/languages/i18n/tr.json index 6bca5642f5..6cc0d7bd86 100644 --- a/languages/i18n/tr.json +++ b/languages/i18n/tr.json @@ -1222,7 +1222,7 @@ "group-interface-admin": "Arayüz yöneticileri", "group-bureaucrat": "Bürokratlar", "group-suppress": "Gözetmenler", - "group-all": "(hepsi)", + "group-all": "(tümü)", "group-user-member": "{{GENDER:$1|kullanıcı}}", "group-autoconfirmed-member": "{{GENDER:$1|otomatik onaylanmış kullanıcı}}", "group-bot-member": "{{GENDER:$1|bot}}", diff --git a/languages/i18n/wa.json b/languages/i18n/wa.json index f456b8827f..667c9c12f7 100644 --- a/languages/i18n/wa.json +++ b/languages/i18n/wa.json @@ -122,6 +122,8 @@ "october-date": "$1 d' octôbe", "november-date": "$1 di nôvimbe", "december-date": "$1 di decimbe", + "period-am": "AM", + "period-pm": "PM", "pagecategories": "{{PLURAL:$1|Categoreye|Categoreyes}}", "category_header": "Årtikes el categoreye «$1»", "subcategories": "Dizo-categoreyes", @@ -136,17 +138,21 @@ "category-file-count": "{{PLURAL:$2|Dins cisse categoreye ci, gn a k' ene pÃ¥dje.|{{PLURAL:$1|Gn a cisse pÃ¥dje ci|Gn a les $1 pÃ¥djes ki shuvèt}} dins cisse categoreye ci, po $2 pÃ¥djes Ã¥ totÃ¥.}}", "category-file-count-limited": "{{PLURAL:$1|Gn a k' cisse pÃ¥dje cial|Gn a les $1 pÃ¥djes ciddé padzo}} dins cisse categoreye ci.", "listingcontinuesabbrev": "(shûte)", + "index-category": "PÃ¥djes indecsêyes", + "noindex-category": "PÃ¥djes nén indecsêyes", "broken-file-category": "PÃ¥djes avou des hÃ¥rdêyes esketêyes", "about": "Åd fwait", "article": "Årtike", "newwindow": "(drovant en on novea purnea)", "cancel": "Rinoncî", "moredotdotdot": "Co dpus...", + "morenotlisted": "Ci lisse ci pout èn nén esse complete.", "mypage": "PÃ¥dje", "mytalk": "Mi copinaedje", "anontalk": "Copinaedje", "navigation": "Naiviaedje", "and": " eyet", + "faq": "FÅK", "actions": "Accions", "namespaces": "EspÃ¥ces di lomaedje", "variants": "Variantes", @@ -179,17 +185,20 @@ "protect_change": "candjî", "unprotect": "Candjî l' protedjaedje", "newpage": "Novele pÃ¥dje", - "talkpagelinktext": "Copiner", + "talkpagelinktext": "copiner", "specialpage": "PÃ¥dje sipeciÃ¥le", "personaltools": "Usteyes da vosse", "talk": "Copene", "views": "Vuwes", "toolbox": "Usteyes", "imagepage": "Vey li pÃ¥dje do fitchî", + "viewhelppage": "Vey li pÃ¥dje d' aidance", + "categorypage": "Vey li pÃ¥dje di categoreye", "viewtalkpage": "Vey li pÃ¥dje di copene", - "otherlanguages": "Ôtes lingaedjes", + "otherlanguages": "Dins ds ôtes lingaedjes", "redirectedfrom": "(Redjiblé di $1)", "redirectpagesub": "PÃ¥dje di redjiblaedje", + "redirectto": "Ridjibler viè :", "lastmodifiedat": "Cisse pÃ¥dje a stî candjeye pol dierin côp li $2 a $1.", "viewcount": "Cisse pÃ¥dje la a stî léjhowe {{PLURAL:$1|on côp|$1 côps}}.", "protectedpage": "PÃ¥dje protedjeye", @@ -267,6 +276,7 @@ "nospecialpagetext": "Vos avoz dmandé ene pÃ¥dje sipeciÃ¥le nén valide, po ene djivêye des pÃ¥djes sipeciÃ¥les valides, loukîz a [[Special:SpecialPages]].", "error": "Aroke", "databaseerror": "Åk n' a nén stî avou l' bÃ¥ze di dnêyes", + "databaseerror-function": "Fonccion : $1", "databaseerror-error": "Aroke: $1", "laggedslavemode": "Asteme: I s' pout ki l' pÃ¥dje n' Ã¥ye nén co les dierins candjmints.", "readonly": "Li bÃ¥ze di dnêyes est aclawêye", @@ -304,19 +314,37 @@ "userlogin-yourname-ph": "Tapez vosse no d' uzeu", "yourpassword": "Vosse sicret", "userlogin-yourpassword": "Sicret", + "userlogin-yourpassword-ph": "Tapez vosse sicret", + "createacct-yourpassword-ph": "Tapez on sicret", "yourpasswordagain": "Ritapez vosse sicret", + "createacct-yourpasswordagain": "Ritapez l' sicret", + "createacct-yourpasswordagain-ph": "Ritapez l' sicret", "yourdomainname": "Vosse dominne", "login": "S' elodjî", "nav-login-createaccount": "Ahiver on conte, udon-bén s' elodjî", "logout": "Si dislodjî", "userlogout": "Si dislodjî", "notloggedin": "Nén elodjî", + "userlogin-noaccount": "Vos n' avoz nén d' conte ?", "userlogin-joinproject": "S' edjîstrer so {{SITENAME}}", "createaccount": "Ahiver on novea conte", + "userlogin-resetpassword-link": "Av rovyî vosse sicret ?", + "userlogin-helplink2": "Aidance po s' elodjî", + "userlogin-createanother": "Ahivez èn ôte conte", + "createacct-emailrequired": "Adresse emile", + "createacct-emailoptional": "Adresse emile (nén oblidjeye)", + "createacct-email-ph": "Tapez vosse adresse emile", + "createacct-another-email-ph": "Tapez l' adresse emile", "createaccountmail": "Eployî on scret timporaire a l' astcheyance eyet l' evoyî so l' emile diné", "createacct-realname": "Vraiy no (opcionel)", "createacct-reason": "RÃ¥jhon", + "createacct-reason-ph": "Pocwè ahivez vs èn ôte conte", + "createacct-reason-help": "Messaedje afitchî dins l' djournÃ¥ d' ahivaedje di conte", + "createacct-submit": "Ahivez on conte da vosse", "createacct-another-submit": "Ahiver èn ôte conte", + "createacct-continue-submit": "Porshuvoz l' ahivaedje di conte", + "createacct-another-continue-submit": "Porshuvoz l' ahivaedje di conte", + "createacct-benefit-heading": "{{SITENAME}} est scrît pa des djins come vos.", "createacct-benefit-body1": "{{PLURAL:$1|candjmint|candjmints}}", "createacct-benefit-body2": "{{PLURAL:$1|pÃ¥dje|pÃ¥djes}}", "badretype": "Vos avoz dné deus screts diferins.", @@ -327,24 +355,24 @@ "noname": "Vos n' avoz nén dné di no d' uzeu valide.", "loginsuccesstitle": "Vos estoz elodjî", "loginsuccess": "'''L' elodjaedje a stî comifÃ¥t, asteure vos estoz elodjî dins {{SITENAME}} dizo l' no d' uzeu «$1».'''", - "nosuchuser": "I g na nou uzeu dizo l' no «$1».\nNotez k' les nos d' uzeu fjhèt l' diferince etur pitites et grandès letes.\nVerifyîz çou k' vos avoz tapé, oudonbén [[Special:CreateAccount|ahivez on novea conte]].", + "nosuchuser": "I g na nou uzeu dizo l' no « $1 ».\nNotez k' les nos d' uzeu fjhèt l' diferince etur pitites et grandès letes.\nVerifyîz çou k' vos avoz tapé, oudonbén [[Special:CreateAccount|ahivez on novea conte]].", "nosuchusershort": "I g na nou uzeu dizo l' no «$1». Verifyîz çou k' vos avoz tapé.", "nouserspecified": "Vos dvoz dner on no d' elodjaedje.", "login-userblocked": "{{GENDER:$1|Cist uzeu est bloké|Ciste uzeuse est blokêye}}. L' elodjaedje n' est nén possibe.", - "wrongpassword": "Li scret ki vs avoz dné est mÃ¥va. Rissayîz s' i vs plait.", + "wrongpassword": "El no d' uzeu u l' sicret ki vs avoz dné est mÃ¥va. Rissayîz s' i vs plait.", "wrongpasswordempty": "Vos avoz dné on vude sicret. Rissayîz s' i vs plait.", "passwordtooshort": "Li scret doet esse di pol moens {{PLURAL:$1|1 caractere|$1 caracteres}}.", "passwordtoolong": "Les screts n' polèt nén aveur pus di {{PLURAL:$1|1 caractere|$1 caracteres}}.", "mailmypassword": "Rifé l' sicret", "passwordremindertitle": "Novea scret timporaire po {{SITENAME}}", - "passwordremindertext": "Ene sakî (probÃ¥blumint vos-minme, avou l' adresse IP $1) a dmandé \non novea scret po {{SITENAME}} ($4).\nOn scret timporare po l' uzeu «$2» a stî fwait, c' est «$3».\nSi c' est vos k' a fwait l' dimande, vos vs divoz elodjî eyet tchoezi on novea scret.\nLi scret timporaire ni srè pus valide après {{PLURAL:$5|on djoû|$5 djoûs}}.\n\nSi c' est ene ôte sakî k' a fwait l' dimande, ou si vos vs avoz rtrové l' vî scret eyet \nnel pus vleur candjî, vos ploz djusse ignorer ci messaedje ci eyet continouwer avou l' vî scret.", + "passwordremindertext": "Ene sakî (avou l' adresse IP $1) a dmandé \non novea scret po {{SITENAME}} ($4).\nOn scret timporare po l' uzeu «$2» a stî fwait, c' est «$3».\nSi c' est vos k' a fwait l' dimande, vos vs divoz elodjî eyet tchoezi on novea scret.\nLi scret timporaire ni srè pus valide après {{PLURAL:$5|on djoû|$5 djoûs}}.\n\nSi c' est ene ôte sakî k' a fwait l' dimande, ou si vos vs avoz rtrové l' vî scret eyet \nnel pus vleur candjî, vos ploz djusse ignorer ci messaedje ci eyet continouwer avou l' vî scret.", "noemail": "I n' a pont d' adresse emile di cnoxhowe po l' uzeu «$1».", "noemailcreate": "Vos dvoz dner ene adresse emile valide.", "passwordsent": "On novea scret a stî emilé a l' adresse emile\nracsegneye po l' uzeu «$1».\nRelodjîz vs avou ç' noû scret on côp ki vos l' Ã¥roz rçuvou s' i vs plait.", - "blocked-mailpassword": "Voste adresse IP est blokêye pol sicrijhaedje, et do côp vos n' poloz nén eployî l' fonccion d' rapexhaedje do scret po-z eviter les abus.", + "blocked-mailpassword": "Voste adresse IP est blokêye pol sicrijhaedje. Po-z eviter les abus, vos n' poloz nén eployî l' fonccion d' rapexhaedje do scret avou ciste adresse IP.", "eauthentsent": "Èn emile d' acertinaedje a stî evoyî a l' adresse emile tchoezeye.\nDivant d' poleur evoyî èn ôte emile a ci conte la, vos dvroz shure les instruccions di l' emile ki vos alez rçure, po-z acertiner ki l' conte est bén da vosse.", "mailerror": "Åk n' a nén stî tot-z evoyant l' emile: $1", - "acct_creation_throttle_hit": "Ene sakî a ddja ahivé {{PLURAL:$1|1 conte|$1 contes}} dins les dierinnes 24 eures a pÃ¥rti dek minme adresse IP, çou k' est l' limite acceptêye po ene sifwaite termene.\nÇa fwait ki l' ahivaedje di contes a p·årti di ciste adresse IP la a stî dismetou pol moumint.", + "acct_creation_throttle_hit": "Ene sakî a ddja ahivé {{PLURAL:$1|1 conte|$1 contes}} dins les dierinnes $2 a pÃ¥rti del minme adresse IP, çou k' est l' limite acceptêye po ene sifwaite termene.\nÇa fwait ki l' ahivaedje di contes a pÃ¥rti di ciste adresse IP la a stî dismetou pol moumint.", "emailauthenticated": "Voste adresse emile a stî acertinêye li $2 a $3.", "emailnotauthenticated": "Voste adresse emile n' a nén co stî acertinêye. Nol emile ni serè-st evoyî po les fonccions shuvantes.", "noemailprefs": "Dinez ene adresse emile po ces fonccions si mete en alaedje.", @@ -420,7 +448,7 @@ "missingsummary": "'''Asteme:''' Vos n' avoz nén dné on tecse di rascourti po vosse candjmint. Si vos rclitchîz sol boton «Schaper», li candjmint da vosse serè schapé sins nou tecse di rascourti po l' istwere del pÃ¥dje.", "missingcommenttext": "Tapez on comintaire chal pa dzo s' i vs plait.", "blockedtitle": "L' uzeu est bloké", - "blockedtext": "'''Vosse no d' uzeu ou voste adresse IP a stî blokêye.'''\n\nLi blocaedje a stî fwait pa $1.\nLi rÃ¥jhon dnêye est ''$2''.\n\n* Comince do blocaedje: $8\n* Fén do blocaedje: $6\n* Blocaedje di: $7\n\nVos ploz contacter $1 oudonbén onk des\n[[{{MediaWiki:Grouppage-sysop}}|manaedjeus]] po discuter do blocaedje.\nNotez ki vos n' poloz nén eployî l' fonccion «emiler a l' uzeu» a moens ki vos Ã¥yîz ene adresse emile valide dins vos [[Special:Preferences|preferinces]] et ki cisse possibilité n' a nén stî blokêye.\nVoste adresse IP est $3 eyet l' ID di blocaedje est $5.\nS' i vs plait racsegnoz totes les racsegnes chal Ã¥ dzeur dins les dmandes ki vos frîz.", + "blockedtext": "Vosse no d' uzeu ou voste adresse IP a stî blokêye.\n\nLi blocaedje a stî fwait pa $1.\nLi rÃ¥jhon dnêye est $2.\n\n* Comince do blocaedje: $8\n* Fén do blocaedje: $6\n* Blocaedje di: $7\n\nVos ploz contacter $1 oudonbén onk des\n[[{{MediaWiki:Grouppage-sysop}}|manaedjeus]] po discuter do blocaedje.\nNotez ki vos n' poloz nén eployî l' fonccion « {{int:emailuser}} » a moens ki vos Ã¥yîz ene adresse emile valide dins vos [[Special:Preferences|preferinces]] et ki cisse possibilité n' a nén stî blokêye.\nVoste adresse IP est $3 eyet l' ID di blocaedje est $5.\nS' i vs plait racsegnoz totes les racsegnes chal Ã¥ dzeur dins les dmandes ki vos frîz.", "autoblockedtext": "Voste adresse IP a stî ablokêye otomaticmint, pask' elle a stî eployeye pa èn ôte uzeu, lu-minme dedja rbouté pa $1.\nLi rÃ¥jhon k' on-z a dné, c' est:\n\n:''$2''.\n\n* Comince do blocaedje: $8\n* Fén do blocaedje: $6\n* Blocaedje di: $7\n\nVos ploz contacter $1 oudonbén onk des\n[[{{MediaWiki:Grouppage-sysop}}|manaedjeus]] po discuter do blocaedje.\n\nNotez ki vos n' poloz nén eployî l' fonccion «emiler a l' uzeu» a moens ki vos Ã¥yîz ene adresse emile valide dins vos [[Special:Preferences|preferinces]] et ki cisse possibilité n' a nén stî blokêye.\n\nVoste adresse IP est $3 eyet l' ID di blocaedje est $5.\nS' i vs plait racsegnoz totes les racsegnes chal Ã¥ dzeur dins les dmandes ki vos frîz.", "blockednoreason": "sins dire pocwè", "whitelistedittext": "I vs fÃ¥t $1 po pleur candjî les Ã¥rtikes.", @@ -432,11 +460,11 @@ "accmailtext": "On scret costrût a l' astcheyance po [[User talk:$1|$1]] a stî evoyî a $2.\n\nLi scret po ci novea conte ci pout esse candjî sol pÃ¥dje di ''[[Special:ChangePassword|candjmint di scret]]'' après l' elodjaedje.", "newarticle": "(Novea)", "newarticletext": "Vos avoz clitchî so on loyén viè ene pÃ¥dje ki n' egzistêye nén co.\nMins '''vos''' l' poloz askepyî! Po çoula, vos n' avoz k' a cmincî a taper vosse tecse dins l' boesse di tecse cial pa dzo (alez vey li [$1 pÃ¥dje d' aidance] po pus d' infôrmÃ¥cion).\nSi vos estoz droci par accidint, clitchîz simplumint sol boton En erî di vosse betchteu waibe po rivni al pÃ¥dje di dvant.", - "anontalkpagetext": "---- ''Çouchal, c' est li pÃ¥dje di copene po èn uzeu anonime ki n' a nén (co) fwait on conte por lu s' elodjî, ou ki n' l' eploye nén.\nÇa fwait k' on doet eployî si adresse IP limerike po l' idintifyî.\nCome ene sifwaite adresse IP pout esse eployeye pa pus d' èn uzeu, i s' pout ki vos veyoz chal des rmarkes et des messaedjes ki n' sont nén por vos.\nLoukîz s' i vs plait po [[Special:CreateAccount|fé on novea conte]] ou [[Special:UserLogin|s' elodjî]] po n' pus aveur d' ecramiaedje avou des ôtes uzeus anonimes.''", + "anontalkpagetext": "---- \nÇouchal, c' est li pÃ¥dje di copene po èn uzeu anonime ki n' a nén co fwait on conte por lu s' elodjî, ou ki n' l' eploye nén.\nÇa fwait k' on doet eployî si adresse IP limerike po l' idintifyî.\nCome ene sifwaite adresse IP pout esse eployeye pa pus d' èn uzeu, i s' pout ki vos veyoz chal des rmarkes et des messaedjes ki n' sont nén por vos.\nLoukîz s' i vs plait po [[Special:CreateAccount|fé on novea conte]] ou [[Special:UserLogin|s' elodjî]] po n' pus aveur d' ecramiaedje avou des ôtes uzeus anonimes.", "noarticletext": "I gn a pol moumint nou tecse e cisse pÃ¥dje chal.\nVos ploz [[Special:Search/{{PAGENAME}}|cweri après l' tite di cisse pÃ¥dje ci]] dins des ôtès pÃ¥djes,\noudonbén [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cweri dins les djournÃ¥s],\nou co [{{fullurl:{{FULLPAGENAME}}|action=edit}} ahiver l' pÃ¥dje].", "noarticletext-nopermission": "I gn a pol moumint nou tecse e cisse pÃ¥dje chal.\nVos ploz [[Special:Search/{{PAGENAME}}|cweri après l' tite di cisse pÃ¥dje ci]] dins des ôtès pÃ¥djes,\noudonbén [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cweri dins les djournÃ¥s], mins vos n' avoz nén l' livea d' permission pol poleur ahiver.", "blocked-notice-logextract": "{{GENDER:$1|Cist uzeu est bloké|Ciste uzeuse est blokêye}} pol moumint.\nLi dierinne intrêye e djournÃ¥ des blocaedjes est dnêye chal pa dzo po infôrmÃ¥cion:", - "clearyourcache": "'''Note:''' après aveur schapé l' pÃ¥dje, vos l' divoz rafrister, po pleur vey les candjmints dins vosse betchteu waibe.\n* '''Firefox / Safari:''' tchôkîz so ''Shift'' tot clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-F5'' ou ''Ctrl-R'' (''⌘-R'' so on Mac)\n* '''Google Chrome:''' tchôkîz so ''Ctrl-Shift-R'' (''⌘-Shift-R'' on a Mac)\n* '''Internet Explorer:''' tchôkîz so ''Ctrl'' tot clitchant so ''Rafrister'', ou co fjhoz ''Ctrl-F5''\n* '''Konqueror:''' clitchîz so ''Rafrister'' ou tchôkîz so ''F5''\n* '''Opera:''' vudîz l' muchete dins ''Usteyes → Preferinces''.", + "clearyourcache": "Note: après aveur schapé l' pÃ¥dje, vos l' divoz rafrister, po pleur vey les candjmints dins vosse betchteu waibe.\n* Firefox / Safari : tchôkîz so Shift tot clitchant so Rafrister, ou co fjhoz Ctrl-F5 ou Ctrl-R (⌘-R so on Mac)\n* Google Chrome : tchôkîz so Ctrl-Shift-R (⌘-Shift-R so on Mac)\n* Internet Explorer : tchôkîz so Ctrl tot clitchant so Rafrister, ou co fjhoz Ctrl-F5\n* Konqueror : clitchîz so Rafrister ou tchôkîz so F5\n* Opera : alez dins Menu → Parametes (Opera → Preferinces so on Mac), pus dins Confidance & sÃ¥vrité → Vudîz les dnêyes d' vizitaedje → ImÃ¥djes et fitchîs metous el muchete.", "usercssyoucanpreview": "'''Racsegne:''' eployîz l' boton «{{int:showpreview}}» po sayî vosse novea CSS divant del schaper.", "userjsyoucanpreview": "'''Racsegne:''' eployîz l' boton «{{int:showpreview}}» po sayî vosse novea JavaScript divant del schaper.", "usercsspreview": "Èn rovyîz nén ki c' est djusse on prévoeyaedje di vosse stîle CSS d' uzeu.'''\n'''I n' a nén co stî schapé!'''", @@ -445,7 +473,7 @@ "updated": "(Ramidré)", "note": "'''Note :'''", "previewnote": "'''Èn rovyîz nén ki c' est djusse on prévoeyaedje.'''\n'''Les candmints n' ont nén co stî schapés!'''", - "continue-editing": "Continouwer a candjî", + "continue-editing": "Alez dins l' zône di candjmint", "previewconflict": "Ci prévoeyaedje ci mostere kimint kel tecse del boesse di tecse do dzeu sereut hÃ¥yné si vos decidez del schaper.", "session_fail_preview": "'''Mande escuzes! Mins dji n' a nén polou traitî vosse candjmint paski les dnêyes del session ont stî pierdowes.\nRissayîz s' i vs plait. Si çoula n' va todi nén, sayîz di vs dislodjî eyet di vs relodjî.'''", "session_fail_preview_html": "'''Mande escuzes! Mins dji n' a nén polou traitî vosse candjmint paski les dnêyes del session ont stî pierdowes.'''\n\n''Come {{SITENAME}} a-st en alaedje li HTML brut, li prévoeyaedje est catchî, come proteccion siconte des atakes JavaScript.''\n\n'''Si c' est ene saye oniesse di candjî l' pÃ¥dje, rissayîz s' i vs plait.'''\nSi çoula n' va todi nén, sayîz di vs [[Special:UserLogout|dislodjî]] eyet di vs relodjî.", @@ -483,6 +511,7 @@ "postedit-confirmation-saved": "vosse candjmint a stî schapé", "edit-already-exists": "Li novele pâdje n' a savou esse ahivêye, ca cisse pâdje la egzistêye dedja.", "editwarning-warning": "Cwiter cisse pÃ¥dje ci vos frè piede tos les candjmints ki vos avoz fwait.\nSi vos estoz elodjî, vos ploz dismete cist adviertixhmint ci dins l' linwete «Boesse di tecse» di vos preferinces.", + "content-model-wikitext": "wikitecse", "duplicate-args-category": "PÃ¥dje eployant des dobes parametes dins les uzaedjes di modele", "post-expand-template-inclusion-warning": "'''Asteme:''' I gn a trop di modeles dins cisse pÃ¥dje ci.\nSacwants di zels ni seront nén eployîs.", "post-expand-template-inclusion-category": "PÃ¥djes ki l' inclusion d' modeles est foû limite", @@ -525,8 +554,8 @@ "revdelete-hide-comment": "Catchî l' comintaire di candjmint", "revdelete-hide-user": "Catchî l' no d' uzeu/adresse IP do candjeu", "revdelete-hide-restricted": "Oister foû les dnêyes ossu bén po les manaedjeus k' po les ôtes", - "revdelete-radio-set": "Oyi", - "revdelete-radio-unset": "Neni", + "revdelete-radio-set": "Catchî", + "revdelete-radio-unset": "VeyÃ¥ve", "revdelete-log": "RÃ¥jhon:", "revdelete-submit": "Apliker {{PLURAL:$1|al modêye tchoezeye|Ã¥zès modêyes tchoezeyes}}", "revdel-restore": "candjî l' veyÃ¥visté", @@ -537,9 +566,11 @@ "mergehistory-reason": "RÃ¥jhon:", "revertmerge": "DispÃ¥rti", "history-title": "Istwere des candjmints po «$1»", + "difference-title": "$1 : Diferince etur modêyes", "lineno": "Roye $1:", "compareselectedversions": "Comparer les modêyes tchoezeyes", "editundo": "disfé", + "diff-empty": "(Nole diferince)", "searchresults": "Rizultats do cweraedje", "searchresults-title": "Rizultats des rcwerances po « $1 »", "titlematches": "Årtikes avou on tite ki corespond", @@ -566,8 +597,8 @@ "search-redirect": "(redjiblé di $1)", "search-section": "(seccion $1)", "search-suggest": "Sayîz motoit çoula: $1", - "search-interwiki-caption": "So les ôtes pordjets frés", - "search-interwiki-default": "Gn a des sfwaitès sacwès so $1 :", + "search-interwiki-caption": "Adierças so les ôtes pordjets frés", + "search-interwiki-default": "Adierças so $1 :", "search-interwiki-more": "(dipus)", "searchall": "totafwait", "showingresults": "Chal pa dzo {{PLURAL:$1|'''1''' rizultat|'''$1''' rizultats}} a pÃ¥rti do limero '''$2'''.", @@ -936,11 +967,13 @@ "filehist-filesize": "Grandeur do fitchî", "filehist-comment": "Comintaire", "imagelinks": "Eployaedjes do fitchî", - "linkstoimage": "{{PLURAL:$1|Li pÃ¥dje shuvante eploye|Les $1 pÃ¥djes shuvantes eployèt}} ciste imÃ¥dje chal:", - "nolinkstoimage": "I n' a nole pÃ¥dje k' eploye ciste imÃ¥dje chal.", + "linkstoimage": "{{PLURAL:$1|Li pÃ¥dje shuvante eploye|Les $1 pÃ¥djes shuvantes eployèt}} ci fitchî ci :", + "nolinkstoimage": "I n' a nole pÃ¥dje k' eploye ci fitchî ci.", + "linkstoimage-redirect": "$1 (redjiblaedje di fitchî) $2", "sharedupload": "Ci fitchî ci vént d' $1 ey i s' pout k' i soeye eployî pa ds ôtes pordjets.", "sharedupload-desc-there": "Ci fitchî ci provént d' $1; si pout i esse reployî dins des ôtes pordjets. Loukîz [$2 si pÃ¥dje di discrijhaedje] po-z esse mî racsegnî.", "sharedupload-desc-here": "Ci fitchî ci provént d' $1; si pout i esse eployî divins des ôtes pordjets Wiki. Li discrijhaedje di [$2 si pÃ¥dje di discrijhaedje] lÃ¥vÃ¥ est hÃ¥ynêye cial Ã¥dzo.", + "filepage-nofile": "Nou fitchî egziste avou c' no la.", "uploadnewversion-linktext": "Eberweter ene nouve modêye di ci fitchî ci", "shared-repo-from": "vént d' $1", "shared-repo": "on depot pÃ¥rtaedjî", @@ -1044,7 +1077,7 @@ "magiclink-tracking-isbn": "PÃ¥djes avou des hÃ¥rdêyes otomatikes ISBN", "magiclink-tracking-isbn-desc": "So cisse pÃ¥dje cial, gn a ene hÃ¥rdêye otomatike ISBN. Loukîz so [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] po vey kimint aler dsu", "specialloguserlabel": "Fwait pa:", - "speciallogtitlelabel": "SÃ¥me (tite ou uzeu):", + "speciallogtitlelabel": "SÃ¥me (tite ou {{ns:user}}:uzeu):", "log": "DjournÃ¥s", "logeventslist-submit": "Mostrer", "all-logs-page": "Tos les djournÃ¥s publiks", @@ -1112,7 +1145,7 @@ "watchlist-details": "Vos avoz {{PLURAL:$1|$1 pÃ¥dje shuvowe|$1 pÃ¥djes shuvowes}} (sins conter les pÃ¥djes di copene).", "wlheader-enotif": "Li notifiaedje pa emile est en alaedje.", "wlheader-showupdated": "Les pÃ¥djes k' ont candjî dispoy vosse dierinne vizite sont metowes e crÃ¥ssès letes.", - "wlnote": "Chal pa dzo {{PLURAL:$1|li dierin candjmint|les '''$1''' dierins candjmints}} {{PLURAL:$2|del dierinne eure|des '''$2''' dierinnès eures}}, disk' Ã¥ $3 a $4.", + "wlnote": "Chal pa dzo {{PLURAL:$1|li dierin candjmint|les $1 dierins candjmints}} {{PLURAL:$2|del dierinne eure|des $2 dierinnès eures}}, disk' Ã¥ $3 a $4.", "wlshowlast": "Mostrer les dierin(nè)s $1 eures, $2 djoûs", "watchlist-hide": "Catchî", "watchlist-submit": "Mostrer", @@ -1129,7 +1162,7 @@ "exbeforeblank": "li contnou dvant l' disfaçaedje esteut: «$1»", "delete-confirm": "Disfacer «$1»", "delete-legend": "Disfacer", - "historywarning": "'''Asteme:''' Li pÃ¥dje ki vos alez disfacer a-st ene istwere avou a pô près $1 modêye{{PLURAL:$1||s}}:", + "historywarning": "Asteme: Li pÃ¥dje ki vos alez disfacer a-st ene istwere avou a pô près $1 modêye{{PLURAL:$1||s}}:", "historyaction-submit": "Mostrer", "confirmdeletetext": "Vos alez disfacer ene pÃ¥dje avou tote si istwere.\nAcertinez s' i vs plait ki c' est bén çoula ki vos vloz fé,\nki vos comprindoz les consecwinces, et ki vos fjhoz çoula\ntot [[{{MediaWiki:Policy-url}}|shuvant les rîles]].", "actioncomplete": "Fwait", @@ -1142,7 +1175,7 @@ "deletecomment": "RÃ¥jhon:", "deleteotherreason": "Ene rÃ¥jhon diferinne ou di pus:", "deletereasonotherlist": "Ôte rÃ¥jhon", - "deletereason-dropdown": "* RÃ¥jhons les pus corantes po disfacer\n** Dimande di l' oteur\n** ViolÃ¥cion d' abondroets\n** Vandalisse", + "deletereason-dropdown": "* RÃ¥jhons les pus corantes po disfacer\n** Spam\n** Vandalisse\n** ViolÃ¥cion d' abondroets\n** Dimande di l' oteur\n** Pierdou redjiblaedje", "delete-edit-reasonlist": "Candjî les rÃ¥jhons do disfaçaedje", "delete-toobig": "Cisse pÃ¥dje ci a ene foû grande istwere, avou dpus di $1 modêye{{PLURAL:$1||s}}.\nLi disfaçaedje des sfwaitès pÃ¥djes a stî dismetou po-z espaitchî k' i gn Ã¥ye des problinmes so {{SITENAME}}.", "delete-warning-toobig": "Cisse pÃ¥dje ci a ene foû grande istwere, avou dpus di $1 modêye{{PLURAL:$1||s}}.\nSi disfaçaedje pôreut fé des problinmes avou l' rotaedje del bÃ¥ze di dnêyes so {{SITENAME}}; \nnel fijhoz k' avou asteme.", @@ -1233,11 +1266,11 @@ "sp-contributions-newbies-sub": "Emey les noveas uzeus", "sp-contributions-newbies-title": "Contribouwaedjes des noveas uzeus", "sp-contributions-blocklog": "djournÃ¥ des blocaedjes", - "sp-contributions-deleted": "contribouwaedjes disfacés", + "sp-contributions-deleted": "contribouwaedjes disfacés di l' uzeu{{GENDER:$1||se}}", "sp-contributions-uploads": "eberwetaedjes", "sp-contributions-logs": "djournÃ¥s", "sp-contributions-talk": "copiner", - "sp-contributions-userrights": "droets", + "sp-contributions-userrights": "candjî les droets d' l' uzeu{{GENDER:$1||se}}", "sp-contributions-blocked-notice": "{{GENDER:$1|Cist uzeu est bloké|Ciste uzeuse est blokêye}} pol moumint.\nLi dierinne intrêye e djournÃ¥ des blocaedjes est dnêye chal pa dzo po infôrmÃ¥cion:", "sp-contributions-blocked-notice-anon": "Ciste adresse IP est blokêye pol moumint.\nLi dierinne intrêye e djournÃ¥ des blocaedjes est dnêye chal pa dzo po infôrmÃ¥cion:", "sp-contributions-search": "Cweri les contribouwaedjes", @@ -1249,6 +1282,7 @@ "linkshere": "Les pÃ¥djes ki shuvèt ont des loyéns viè '''$1''':", "nolinkshere": "Nole pÃ¥dje avou des loyéns viè '''$1'''.", "isredirect": "pÃ¥dje di redjiblaedje", + "istemplate": "transcluzion", "isimage": "loyén viè l' fitchî", "whatlinkshere-prev": "{{PLURAL:$1|di dvant|$1 di dvant}}", "whatlinkshere-next": "{{PLURAL:$1|shuvant|$1 shuvants}}", @@ -1256,7 +1290,7 @@ "whatlinkshere-hideredirs": "$1 les rdjiblaedjes", "whatlinkshere-hidetrans": "$1 les inclusions", "whatlinkshere-hidelinks": "$1 les loyaedjes", - "whatlinkshere-hideimages": "$1 fitchîs k' eploynut cist imÃ¥dje ci", + "whatlinkshere-hideimages": "$1 les loyéns k' eploynut c' fitchî ci", "whatlinkshere-filters": "Passetes", "whatlinkshere-submit": "Vey", "autoblockid": "Blocaedje otomatike #$1", @@ -1398,7 +1432,7 @@ "tooltip-ca-move": "Displaecî cisse pÃ¥dje ci", "tooltip-ca-watch": "Radjouter cisse pÃ¥dje ci al djivêye di vos Ã¥rtikes shuvous", "tooltip-ca-unwatch": "Bodjî cisse pÃ¥dje ci di vosse djivêye des Ã¥rtikes shuvous", - "tooltip-search": "Cweri so ci wiki chal", + "tooltip-search": "Cweri so {{SITENAME}}", "tooltip-search-go": "Potchî so ene pÃ¥dje avou egzactumint ci no ci, si ele egzistêye.", "tooltip-search-fulltext": "Cweri les pÃ¥djes avou ç' tecse ci", "tooltip-p-logo": "Mwaisse pÃ¥dje", @@ -1414,7 +1448,7 @@ "tooltip-feed-rss": "SindicÃ¥cion RSS po cisse pÃ¥dje ci", "tooltip-feed-atom": "SindicÃ¥cion Atom po cisse pÃ¥dje ci", "tooltip-t-contributions": "Vey li djivêye des ovraedjes fwait pa {{GENDER:$1|cist uzeu|ciste uzeuse}} ci", - "tooltip-t-emailuser": "Evoyî èn emile a cist uzeu ci", + "tooltip-t-emailuser": "Evoyî èn emile a {{GENDER:$1|cist uzeu|ciste uzeuse}} ci", "tooltip-t-upload": "Eberweter sol sierveu des imÃ¥djes ou fitchîs media", "tooltip-t-specialpages": "Djivêye di totes les pÃ¥djes sipeciÃ¥les", "tooltip-t-print": "Modêye sicrirece-amistÃ¥ve del pÃ¥dje", @@ -1452,10 +1486,24 @@ "nocredits": "I n' a pont d' infôrmÃ¥cion di credits po cisse pÃ¥dje ci.", "spam_reverting": "Rimetaedje al dierinne modêye sins nou loyén viè $1", "pageinfo-title": "InfôrmÃ¥cion po «$1»", + "pageinfo-header-basic": "InfôrmÃ¥cion d' bÃ¥ze", + "pageinfo-header-edits": "Istwere des candjmints", + "pageinfo-header-restrictions": "Proteccion del pÃ¥dje", + "pageinfo-length": "Taye del pÃ¥dje (e-n octets)", + "pageinfo-article-id": "ID del pÃ¥dje", + "pageinfo-language": "Lingaedje do contnou del pÃ¥dje", + "pageinfo-robot-index": "Otorijheye", "pageinfo-watchers": "Nombe di shuveus", - "pageinfo-edits": "Nombe di candjmints", - "pageinfo-authors": "Nombe d' oteurs diferins", + "pageinfo-subpages-name": "Nombe di dzo-pÃ¥djes po ciste pÃ¥dje ci", + "pageinfo-firstuser": "Ahiveu del pÃ¥dje", + "pageinfo-firsttime": "Date d' ahivaedje del pÃ¥dje", + "pageinfo-lastuser": "Dierin contribouweu", + "pageinfo-lasttime": "Date do dierin candjmint", + "pageinfo-edits": "Nombe totÃ¥ d' candjmints", + "pageinfo-authors": "Nombe totÃ¥ d' oteurs diferins", + "pageinfo-magic-words": "{{PLURAL:$1|Mot madjike|Mots madjikes}} ($1)", "pageinfo-toolboxlink": "InfôrmÃ¥cion sol pÃ¥dje", + "pageinfo-contentpage-yes": "Oyi", "markaspatrolleddiff": "Marké come ricoridjî", "markaspatrolledtext": "Marker cisse pÃ¥dje ci come dedja patrouyeye", "markedaspatrolled": "Markêye come ricoridjeye", @@ -1623,7 +1671,10 @@ "size-megabytes": "$1 Mo", "size-gigabytes": "$1 Go", "watchlistedit-raw-titles": "Tites:", + "watchlisttools-clear": "Disfacer l' djivêye des shuvous", "watchlisttools-edit": "Vey et candjî l' djivêye des shuvous", + "watchlisttools-raw": "Candjî l' djivêye des shuvous e môde tecse", + "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|copene]])", "version": "Modêye des programes", "version-extensions": "Rawetes d' astalêyes", "version-skins": "Peas", @@ -1635,6 +1686,8 @@ "version-software": "Programes astalés", "version-software-product": "Prodût", "version-software-version": "Modêye", + "redirect-page": "ID del pÃ¥dje", + "redirect-file": "No do fitchî", "fileduplicatesearch": "Cweraedje après les dobes fitchîs", "fileduplicatesearch-submit": "Cweri", "specialpages": "PÃ¥djes sipeciÃ¥les", @@ -1656,6 +1709,8 @@ "tag-filter": "Passete po ls [[Special:Tags|etiketes]]:", "tag-filter-submit": "Passete", "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Etikete|Etiketes}}]]: $2)", + "tags-active-yes": "Oyi", + "tags-active-no": "Neni", "tags-edit": "candjî", "tags-hitcount": "$1 candjmint{{PLURAL:$1||s}}", "comparepages": "Comparer des pÃ¥djes", @@ -1665,9 +1720,9 @@ "compare-rev2": "Modêye 2", "compare-submit": "Comparer", "logentry-delete-delete": "$1 a disfacé l' pÃ¥dje $3", - "logentry-delete-restore": "$1 a rapexhî l' pÃ¥dje $3", + "logentry-delete-restore": "$1 {{GENDER:$2|a rapexhî}} l' pÃ¥dje $3", "logentry-delete-event": "$1 a candjî l' veyÃ¥visté d' {{PLURAL:$5| èn evenmint|$5 evenmints}} do djournÃ¥ Ã¥d fwait di $3: $4", - "logentry-delete-revision": "$1 a candjî l' veyÃ¥visté d' {{PLURAL:$5| on candjmint|$5 candjmints}} Ã¥d fwait di $3: $4", + "logentry-delete-revision": "$1 {{GENDER:$2|a candjî}} l' veyÃ¥visté d' {{PLURAL:$5|on candjmint|$5 candjmints}} Ã¥d fwait di $3 : $4", "logentry-delete-event-legacy": "$1 a candjî l' veyÃ¥visté d' evenmints do djournÃ¥ Ã¥d fwait di $3", "logentry-delete-revision-legacy": "$1 a candjî l' veyÃ¥visté des candjmints so $3", "logentry-suppress-delete": "$1 a disfacé l' pÃ¥dje $3", @@ -1684,15 +1739,15 @@ "revdelete-restricted": "restriccions aplikêyes Ã¥s manaedjeus", "revdelete-unrestricted": "restriccions Ã¥s manaedjeus rsaetcheyes", "logentry-move-move": "$1 a displaecî l' pÃ¥dje $3 viè $4", - "logentry-move-move-noredirect": "$1 a displaecî l' pÃ¥dje $3 viè $4 sins leyî d' redjiblaedje", - "logentry-move-move_redir": "$1 a displaecî l' pÃ¥dje $3 viè $4 pa dzeu d' on redjiblaedje", + "logentry-move-move-noredirect": "$1 {{GENDER:$2|a displaecî}} l' pÃ¥dje $3 viè $4 sins leyî d' redjiblaedje", + "logentry-move-move_redir": "$1 {{GENDER:$2|a displaecî}} l' pÃ¥dje $3 viè $4 pa dzeu d' on redjiblaedje", "logentry-move-move_redir-noredirect": "$1 a displaecî l' pÃ¥dje $3 viè $4 pa dzeu d' on redjiblaedje et sins leyî d' redjblaedje", "logentry-patrol-patrol": "$1 a marké come patrouyî l' candjmint $4 del pÃ¥dje $3", - "logentry-patrol-patrol-auto": "$1 a marké otomaticmint come patrouyî l' candjmint $4 del pÃ¥dje $3", + "logentry-patrol-patrol-auto": "$1 {{GENDER:$2|a marké}} otomaticmint come ricoridjî l' candjmint $4 del pÃ¥dje $3", "logentry-newusers-newusers": "$1 a-st ahivé on conte d' uzeu", "logentry-newusers-create": "Li conte d' uzeu $1 a stî ahivé", "logentry-newusers-create2": "$1 a-st ahivé on conte d' uzeu $3", - "logentry-newusers-autocreate": "li conte $1 a stî ahivé otomaticmint", + "logentry-newusers-autocreate": "Li conte $1 {{GENDER:$2|a stî ahivé}} otomaticmint", "logentry-upload-upload": "$1 {{GENDER:$2|}}a-st eberweté $3", "rightsnone": "(nouk)", "feedback-adding": "Vosse messaedje a stî hÃ¥yné sol pÃ¥dje...", diff --git a/languages/i18n/zh-hant.json b/languages/i18n/zh-hant.json index ec27bf0dbf..46f76c1c1e 100644 --- a/languages/i18n/zh-hant.json +++ b/languages/i18n/zh-hant.json @@ -999,7 +999,7 @@ "lineno": "行 $1:", "compareselectedversions": "比較已選擇的修訂", "showhideselectedversions": "變更已選擇修訂的顯示設定", - "editundo": "撤銷", + "editundo": "復原", "diff-empty": "(無差異)", "diff-multi-sameuser": "(未顯示同一使用者於中間所作的 $1 次修訂)", "diff-multi-otherusers": "(未顯示由 $2 位使用者於中間所作的 $1 次修訂)", diff --git a/languages/i18n/zh-hk.json b/languages/i18n/zh-hk.json index d64859f57c..0ee129335e 100644 --- a/languages/i18n/zh-hk.json +++ b/languages/i18n/zh-hk.json @@ -111,7 +111,7 @@ "rev-deleted-comment": "(註釋已除)", "rev-deleted-event": "(日誌已除)", "revdelete-suppress-text": "壓制'''只'''應用於以下的情況:\n* 不合適的個人資料\n*: ''地址、電話號碼、身份證號碼等。''", - "editundo": "撤銷", + "editundo": "復原", "prefs-user-pages": "用戶頁面", "username": "{{GENDER:$1|用戶名稱}}:", "prefs-help-gender": "可選:用於軟件中的性別指定。此項資料將會被公開。", diff --git a/maintenance/compareParsers.php b/maintenance/compareParsers.php index fe6e604d96..b01dde6ee2 100644 --- a/maintenance/compareParsers.php +++ b/maintenance/compareParsers.php @@ -95,9 +95,8 @@ class CompareParsers extends DumpIterator { $this->options = ParserOptions::newFromUser( $user ); if ( $this->hasOption( 'tidy' ) ) { - global $wgUseTidy; - if ( !$wgUseTidy ) { - $this->fatalError( 'Tidy was requested but $wgUseTidy is not set in LocalSettings.php' ); + if ( !MWTidy::isEnabled() ) { + $this->fatalError( 'Tidy was requested but $wgTidyConfig is not set in LocalSettings.php' ); } $this->options->setTidy( true ); } diff --git a/resources/src/mediawiki.base/mediawiki.base.js b/resources/src/mediawiki.base/mediawiki.base.js index 16994f5bba..5820b83eb9 100644 --- a/resources/src/mediawiki.base/mediawiki.base.js +++ b/resources/src/mediawiki.base/mediawiki.base.js @@ -356,7 +356,7 @@ } ); }; - // Fire events from before track() triggred fire() + // Fire events from before track() triggered fire() trackCallbacks.fire( mw.trackQueue ); /** @@ -546,11 +546,11 @@ } else if ( contents instanceof this.Cdata ) { // CDATA if ( /<\/[a-zA-z]/.test( contents.value ) ) { - throw new Error( 'mw.html.element: Illegal end tag found in CDATA' ); + throw new Error( 'Illegal end tag found in CDATA' ); } s += contents.value; } else { - throw new Error( 'mw.html.element: Invalid type of contents' ); + throw new Error( 'Invalid type of contents' ); } } s += ''; diff --git a/resources/src/mediawiki.skinning/content.parsoid.less b/resources/src/mediawiki.skinning/content.parsoid.less index d880e8bebd..3f33837534 100644 --- a/resources/src/mediawiki.skinning/content.parsoid.less +++ b/resources/src/mediawiki.skinning/content.parsoid.less @@ -135,6 +135,7 @@ figure[ typeof~='mw:Audio/Frame' ] { > figcaption { display: block; + word-break: break-word; /* In mw-core the font-size is duplicated, 94% in thumbiner * and again 94% in thumbcaption. 88.4% for font size of the diff --git a/resources/src/startup/mediawiki.js b/resources/src/startup/mediawiki.js index 06190a8257..fee69c07bf 100644 --- a/resources/src/startup/mediawiki.js +++ b/resources/src/startup/mediawiki.js @@ -13,7 +13,6 @@ 'use strict'; var mw, StringSet, log, - hasOwn = Object.prototype.hasOwnProperty, trackQueue = []; /** @@ -49,22 +48,19 @@ function defineFallbacks() { // - StringSet = window.Set || ( function () { - /** - * @private - * @class - */ - function StringSet() { - this.set = Object.create( null ); - } - StringSet.prototype.add = function ( value ) { - this.set[ value ] = true; + /** + * @private + * @class + */ + StringSet = window.Set || function StringSet() { + var set = Object.create( null ); + this.add = function ( value ) { + set[ value ] = true; }; - StringSet.prototype.has = function ( value ) { - return value in this.set; + this.has = function ( value ) { + return value in set; }; - return StringSet; - }() ); + }; } /** @@ -580,7 +576,7 @@ * @property * @private */ - var registry = {}, + var registry = Object.create( null ), // Mapping of sources, keyed by source-id, values are strings. // // Format: @@ -589,7 +585,7 @@ // 'sourceId': 'http://example.org/w/load.php' // } // - sources = {}, + sources = Object.create( null ), // For queueModuleScript() handlingPendingRequests = false, @@ -927,7 +923,7 @@ function sortDependencies( module, resolved, unresolved ) { var i, deps, skip; - if ( !hasOwn.call( registry, module ) ) { + if ( !( module in registry ) ) { throw new Error( 'Unknown dependency: ' + module ); } @@ -1057,7 +1053,7 @@ function queueModuleScript( src, moduleName, callback ) { pendingRequests.push( function () { // Keep in sync with execute()/runScript(). - if ( moduleName !== 'jquery' && hasOwn.call( registry, moduleName ) ) { + if ( moduleName !== 'jquery' ) { window.require = mw.loader.require; window.module = registry[ moduleName ].module; } @@ -1192,9 +1188,6 @@ var key, value, media, i, urls, cssHandle, siteDeps, siteDepErr, runScript, cssPending = 0; - if ( !hasOwn.call( registry, module ) ) { - throw new Error( 'Module has not been registered yet: ' + module ); - } if ( registry[ module ].state !== 'loaded' ) { throw new Error( 'Module in state "' + registry[ module ].state + '" may not be executed: ' + module ); } @@ -1635,8 +1628,7 @@ * or null if the module does not exist */ function getModuleKey( module ) { - return hasOwn.call( registry, module ) ? - ( module + '@' + registry[ module ].version ) : null; + return module in registry ? ( module + '@' + registry[ module ].version ) : null; } /** @@ -1668,7 +1660,7 @@ * @param {string} [skip] */ function registerOne( module, version, dependencies, group, source, skip ) { - if ( hasOwn.call( registry, module ) ) { + if ( module in registry ) { throw new Error( 'module already registered: ' + module ); } registry[ module ] = { @@ -1721,7 +1713,7 @@ // Appends a list of modules from the queue to the batch for ( q = 0; q < queue.length; q++ ) { // Only load modules which are registered - if ( hasOwn.call( registry, queue[ q ] ) && registry[ queue[ q ] ].state === 'registered' ) { + if ( queue[ q ] in registry && registry[ queue[ q ] ].state === 'registered' ) { // Prevent duplicate entries if ( batch.indexOf( queue[ q ] ) === -1 ) { batch.push( queue[ q ] ); @@ -1798,7 +1790,7 @@ addSource: function ( ids ) { var id; for ( id in ids ) { - if ( hasOwn.call( sources, id ) ) { + if ( id in sources ) { throw new Error( 'source already registered: ' + id ); } sources[ id ] = ids[ id ]; @@ -1877,7 +1869,7 @@ name = split.name, version = split.version; // Automatically register module - if ( !hasOwn.call( registry, name ) ) { + if ( !( name in registry ) ) { mw.loader.register( name ); } // Check for duplicate implementation @@ -1960,13 +1952,13 @@ /** * Change the state of one or more modules. * - * @param {Object} modules Object of module name/state pairs + * @param {Object} states Object of module name/state pairs */ - state: function ( modules ) { + state: function ( states ) { var module, state; - for ( module in modules ) { - state = modules[ module ]; - if ( !hasOwn.call( registry, module ) ) { + for ( module in states ) { + state = states[ module ]; + if ( !( module in registry ) ) { mw.loader.register( module ); } setAndPropagate( module, state ); @@ -1981,7 +1973,7 @@ * in the registry. */ getVersion: function ( module ) { - return hasOwn.call( registry, module ) ? registry[ module ].version : null; + return module in registry ? registry[ module ].version : null; }, /** @@ -1992,7 +1984,7 @@ * in the registry. */ getState: function ( module ) { - return hasOwn.call( registry, module ) ? registry[ module ].state : null; + return module in registry ? registry[ module ].state : null; }, /** diff --git a/tests/parser/parserTests.txt b/tests/parser/parserTests.txt index b1510029a1..88797d7510 100644 --- a/tests/parser/parserTests.txt +++ b/tests/parser/parserTests.txt @@ -12670,10 +12670,13 @@ parsoid=wt2html

hi {{}}

!! end +# Ensure we're using a language without variants for this test; even +# if $wgUsePigLatinVariant is true. We've picked `de` arbitrarily. !! test Preprocessor precedence 18: another rightmost wins scenario !! options parsoid=wt2html +language=de !! wikitext {{ -{{{{1|tplarg}}} }} }- !! html/php diff --git a/tests/phpunit/includes/content/TextContentTest.php b/tests/phpunit/includes/content/TextContentTest.php index d69cfd1a86..a8904940f6 100644 --- a/tests/phpunit/includes/content/TextContentTest.php +++ b/tests/phpunit/includes/content/TextContentTest.php @@ -32,7 +32,7 @@ class TextContentTest extends MediaWikiLangTestCase { CONTENT_MODEL_CSS, CONTENT_MODEL_JAVASCRIPT, ], - 'wgUseTidy' => false, + 'wgTidyConfig' => [ 'driver' => 'disabled' ], 'wgCapitalLinks' => true, 'wgHooks' => [], // bypass hook ContentGetParserOutput that force custom rendering ] ); diff --git a/tests/phpunit/includes/db/LBFactoryTest.php b/tests/phpunit/includes/db/LBFactoryTest.php index de861b6885..a0bc038f38 100644 --- a/tests/phpunit/includes/db/LBFactoryTest.php +++ b/tests/phpunit/includes/db/LBFactoryTest.php @@ -23,6 +23,7 @@ * @copyright © 2013 Wikimedia Foundation Inc. */ +use Wikimedia\Rdbms\LBFactory; use Wikimedia\Rdbms\LBFactorySimple; use Wikimedia\Rdbms\LBFactoryMulti; use Wikimedia\Rdbms\LoadBalancer; @@ -627,7 +628,6 @@ class LBFactoryTest extends MediaWikiTestCase { $time = 1526522031; $agentId = md5( 'Ramsey\'s Loyal Presa Canario' ); - $lbFactory = $this->newLBFactoryMulti(); $this->assertEquals( '3@542#c47dcfb0566e7d7bc110a6128a45c93a', LBFactory::makeCookieValueFromCPIndex( 3, 542, $agentId ) diff --git a/tests/selenium/specs/specialrecentchanges.js b/tests/selenium/specs/specialrecentchanges.js index 4328d3f49e..a872d6e0eb 100644 --- a/tests/selenium/specs/specialrecentchanges.js +++ b/tests/selenium/specs/specialrecentchanges.js @@ -1,7 +1,8 @@ const assert = require( 'assert' ), - EditPage = require( '../pageobjects/edit.page' ), + Api = require( 'wdio-mediawiki/Api' ), RecentChangesPage = require( '../pageobjects/recentchanges.page' ), - Util = require( 'wdio-mediawiki/Util' ); + Util = require( 'wdio-mediawiki/Util' ), + RunJobs = require( 'wdio-mediawiki/RunJobs' ); describe( 'Special:RecentChanges', function () { let content, @@ -13,9 +14,11 @@ describe( 'Special:RecentChanges', function () { name = Util.getTestString(); } ); - // Skip due to failures on many repos (T199644) - it.skip( 'shows page creation', function () { - EditPage.edit( name, content ); + it( 'shows page creation', function () { + browser.call( function () { + return Api.edit( name, content ); + } ); + RunJobs.run(); RecentChangesPage.open(); diff --git a/tests/selenium/wdio-mediawiki/RunJobs.js b/tests/selenium/wdio-mediawiki/RunJobs.js new file mode 100644 index 0000000000..9d02d4dc2e --- /dev/null +++ b/tests/selenium/wdio-mediawiki/RunJobs.js @@ -0,0 +1,73 @@ +const MWBot = require( 'mwbot' ), + Page = require( 'wdio-mediawiki/Page' ), + FRONTPAGE_REQUESTS_MAX_RUNS = 10; // (arbitrary) safe-guard against endless execution + +/** + * Trigger the execution of jobs + * + * @see https://www.mediawiki.org/wiki/Manual:Job_queue/For_developers#Execution_of_jobs + * + * Use RunJobs.run() to ensure that jobs are executed before making assertions that depend on it. + * + * Systems that are selenium-tested are usually provisioned for that purpose, see no organic + * traffic, consequently typical post-send job queue processing rarely happens. Additionally, + * test set-up is often done through the API, requests to which do not trigger job queue + * processing at all. + * + * This can lead to an accumulation of unprocessed jobs, which in turn would render certain + * assertions impossible - e.g. checking a page is listed on Special:RecentChanges right + * after creating it. + * + * This class will try to trigger job execution through + * repeated blunt requests against the wiki's home page to trigger them at a rate + * of $wgJobRunRate per request. + */ +class RunJobs { + + static run() { + browser.call( () => { + return this.runThroughFrontPageRequests(); + } ); + } + + static getJobCount() { + let bot = new MWBot( { + apiUrl: `${browser.options.baseUrl}/api.php` + } ); + return new Promise( ( resolve ) => { + return bot.request( { + action: 'query', + meta: 'siteinfo', + siprop: 'statistics' + } ).then( ( response ) => { + resolve( response.query.statistics.jobs ); + } ); + } ); + } + + static runThroughFrontPageRequests( runCount = 1 ) { + let page = new Page(); + this.log( `through requests to the front page (run ${runCount}).` ); + + page.openTitle( '' ); + + return this.getJobCount().then( ( jobCount ) => { + if ( jobCount === 0 ) { + this.log( 'found no more queued jobs.' ); + return; + } + this.log( `detected ${jobCount} more queued job(s).` ); + if ( runCount >= FRONTPAGE_REQUESTS_MAX_RUNS ) { + this.log( 'stopping requests to the front page due to reached limit.' ); + return; + } + return this.runThroughFrontPageRequests( ++runCount ); + } ); + } + + static log( message ) { + process.stdout.write( `RunJobs ${message}\n` ); + } +} + +module.exports = RunJobs;