Merge "CommentStore: Hard-deprecate newKey()"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Fri, 21 Sep 2018 18:42:23 +0000 (18:42 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 21 Sep 2018 18:42:23 +0000 (18:42 +0000)
46 files changed:
.gitattributes
HISTORY
RELEASE-NOTES-1.32
docs/distributors.txt
includes/DefaultSettings.php
includes/api/ApiLogin.php
includes/api/i18n/ja.json
includes/diff/DifferenceEngine.php
includes/mail/MailAddress.php
includes/parser/MWTidy.php
includes/parser/Parser.php
includes/specialpage/SpecialPageFactory.php
includes/tidy/RaggettBase.php
includes/tidy/RaggettExternal.php
includes/tidy/RaggettInternalHHVM.php
includes/tidy/RaggettInternalPHP.php
includes/tidy/RaggettWrapper.php
includes/user/BotPassword.php
includes/user/User.php
languages/i18n/ar.json
languages/i18n/arz.json
languages/i18n/be-tarask.json
languages/i18n/bg.json
languages/i18n/bn.json
languages/i18n/en.json
languages/i18n/hr.json
languages/i18n/ja.json
languages/i18n/jv.json
languages/i18n/mnw.json
languages/i18n/nl.json
languages/i18n/qqq.json
languages/i18n/roa-tara.json
languages/i18n/skr-arab.json
languages/i18n/tr.json
languages/i18n/wa.json
languages/i18n/zh-hant.json
languages/i18n/zh-hk.json
maintenance/compareParsers.php
resources/src/mediawiki.base/mediawiki.base.js
resources/src/mediawiki.skinning/content.parsoid.less
resources/src/startup/mediawiki.js
tests/parser/parserTests.txt
tests/phpunit/includes/content/TextContentTest.php
tests/phpunit/includes/db/LBFactoryTest.php
tests/selenium/specs/specialrecentchanges.js
tests/selenium/wdio-mediawiki/RunJobs.js [new file with mode: 0644]

index 786c09f..81b7a33 100644 (file)
@@ -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 bc74a6b..4665036 100644 (file)
--- 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.
 
index 5954b87..b30a568 100644 (file)
@@ -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
index 729dffa..f2af458 100644 (file)
@@ -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
index ab67225..d335dcc 100644 (file)
@@ -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;
 
index 0248f25..14491da 100644 (file)
@@ -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();
index 8022833..d943e47 100644 (file)
@@ -63,8 +63,8 @@
        "apihelp-compare-param-fromtitle": "比較する1つ目のページ名。",
        "apihelp-compare-param-fromid": "比較する1つ目のページID。",
        "apihelp-compare-param-fromrev": "比較する1つ目の版。",
-       "apihelp-compare-param-frompst": "<var>fromtext</var>に保存前変換を行います。",
-       "apihelp-compare-param-fromtext": "<var>fromtitle</var>, <var>fromid</var> or <var>fromrev</var> で指定された版の内容の代わりに、このテキストを使用します。",
+       "apihelp-compare-param-frompst": "<var>fromtext-&#x7B;slot}</var>に保存前変換を行います。",
+       "apihelp-compare-param-fromtext": "<kbd>fromslots=main</kbd>を指定し、代わりに<var>fromtext-main</var> を使用してください。",
        "apihelp-compare-param-fromcontentmodel": "<var>fromtext</var>のコンテンツモデル。指定されていない場合は、他のパラメータに基づいて推測されます。",
        "apihelp-compare-param-fromsection": "'from' の内容のうち指定された節のみを使用します。",
        "apihelp-compare-param-totitle": "比較する2つ目のページ名。",
        "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": "全文検索を行います。",
index 387e9e3..9602bd2 100644 (file)
@@ -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 );
index 1b66c38..000bbe3 100644 (file)
@@ -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 );
        }
 
        /**
index 5788986..a73c28c 100644 (file)
@@ -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 );
index 7d5a362..dc2bb0c 100644 (file)
@@ -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)
index c6ffbe4..013ceb2 100644 (file)
@@ -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;
        }
 }
index ccef56b..878099f 100644 (file)
@@ -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.
         *
index 2809ea4..0b485c7 100644 (file)
@@ -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.
index 65d37f4..1681dc4 100644 (file)
@@ -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,
index e7724b0..c1050cc 100644 (file)
@@ -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,
index b793a58..855282d 100644 (file)
@@ -15,6 +15,7 @@ use Parser;
  * duplicated. Perhaps we should create an abstract marker hiding class.
  *
  * @ingroup Parser
+ * @deprecated since 1.32
  */
 class RaggettWrapper {
 
index 2228feb..5762120 100644 (file)
@@ -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 ) ) {
index d6d4db2..aaa7663 100644 (file)
@@ -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."
                                );
                        }
 
index 4990716..48156fe 100644 (file)
        "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|جدول المنح]] للمزيد من المعلومات.",
index b1f5f84..3e789b3 100644 (file)
        "rcshowhidemine": "$1 تعديلاتى",
        "rcshowhidemine-show": "اعرض",
        "rcshowhidemine-hide": "تخبية",
-       "rclinks": "بÙ\8aÙ\8aÙ\86 Ø§Ø®Ø± $1 ØªØ¹Ø¯Ù\8aÙ\84 Ù\81Ù\89 Ø§Ø®Ø± $2 Ù\8aÙ\88Ù\85Ø\8c $3",
+       "rclinks": "بÙ\8aÙ\86 Ø§Ø®Ø± $1 ØªØ¹Ø¯Ù\8aÙ\84 Ù\81Ù\89 Ø§Ø®Ø± $2 Ù\8aÙ\88Ù\85",
        "diff": "التغيير",
        "hist": "تاريخ",
        "hide": "تخبية",
        "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اكتب سبب محدد تحت (يعنى مثلا، اكتب الصفحات المعينة اللى اتخربت بسببه).",
        "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": "نشجعك على عمل حساب وتسجيل دخولك; لكنه مش  ضروري",
        "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": "نسخه تنفع تتطبع للصفحه دى",
        "compare-page1": "صفحه 1",
        "compare-page2": "صفحه 2",
        "compare-submit": "قارن",
-       "diff-form": "'''استمارة'''",
+       "diff-form": "فروقات",
        "dberr-problems": "متأسفين، السايت دا بيعانى من صعوبات فنيه",
        "dberr-again": "حاول تستنا كام دقيقه و بعدين اعمل تحميل من تانى",
        "dberr-info": "(مش قادرين نتصل بـ السيرفر بتاع قاعدة البيانات: $1)",
        "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<nowiki>{{</nowiki>#language:…}}, و المتغيرات زي\n<nowiki>{{</nowiki>CURRENTDAY}}&mdash;فى الحقيقة كل حاجة بين قوسين مزدوجين.\nو بتعمل دا عن طريق استعداء المعالج المناسب من الميدياويكى نفسها..",
        "special-characters-group-telugu": "Telugu",
        "special-characters-group-sinhala": "Sinhala",
        "special-characters-group-gujarati": "Gujarati",
-       "randomrootpage": "صفحة جذر عشوائية"
+       "randomrootpage": "صفحه جذر عشوائيه"
 }
index 596aebd..d3e6370 100644 (file)
        "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": "Немагчыма атрымаць хэшы файлаў для параўнаньня.",
index e833d9d..9f828e0 100644 (file)
        "protectedtitles-submit": "Показване на заглавията",
        "listusers": "Списък на потребителите",
        "listusers-editsonly": "Показване само на потребители с редакции",
+       "listusers-temporarygroupsonly": "Показване само на потребители във временни потребителски групи",
        "listusers-creationsort": "Сортиране по дата на създаване",
        "listusers-desc": "Сортиране в низходящ ред",
        "usereditcount": "$1 {{PLURAL:$1|редакция|редакции}}",
index 7115f8a..66849a1 100644 (file)
        "customcssprotected": "আপনার এই সিএসএস পাতাটি সম্পাদনা করার অনুমতি নেই, কারণ এ পাতায় অন্য ব্যবহারকারীর নিজস্ব সেটিংস রয়েছে।",
        "customjsonprotected": "আপনার এই JSON পাতাটি সম্পাদনা করার অনুমতি নেই কারণ এই পাতায় অন্য ব্যবহারকারীর নিজস্ব সেটিংস রয়েছে।",
        "customjsprotected": "আপনার এই জাভাস্ক্রিপ্ট পাতাটি সম্পাদনা করার অনুমতি নেই, কারণ এ পাতায় অন্য ব্যবহারকারীর নিজস্ব সেটিংস রয়েছে।",
-       "sitecssprotected": "আপনার এই CSS পাতাটি সম্পাদনা করার অনুমতি নেই কারণ এটি সমস্ত পরিদর্শককে প্রভাবিত করতে পারে",
-       "sitejsonprotected": "আপনার এই JSON পাতাটি সম্পাদনা করার অনুমতি নেই কারণ এটি সমস্ত পরিদর্শককে প্রভাবিত করতে পারে",
-       "sitejsprotected": "আপনার এই জাভাস্ক্রিপ্ট পাতাটি সম্পাদনা করার অনুমতি নেই কারণ এটি সমস্ত পরিদর্শককে প্রভাবিত করতে পারে",
+       "sitecssprotected": "আপনার এই CSS পাতাটি সম্পাদনা করার অনুমতি নেই কারণ এটি সমস্ত পরিদর্শককে প্রভাবিত করতে পারে",
+       "sitejsonprotected": "আপনার এই JSON পাতাটি সম্পাদনা করার অনুমতি নেই কারণ এটি সমস্ত পরিদর্শককে প্রভাবিত করতে পারে",
+       "sitejsprotected": "আপনার এই জাভাস্ক্রিপ্ট পাতাটি সম্পাদনা করার অনুমতি নেই কারণ এটি সমস্ত পরিদর্শককে প্রভাবিত করতে পারে",
        "mycustomcssprotected": "আপনার এই সিএসএস পাতাটি সম্পাদনা করার অনুমতি নেই।",
        "mycustomjsonprotected": "আপনার এই JSON পাতাটি সম্পাদনা করার অনুমতি নেই।",
        "mycustomjsprotected": "আপনার এই জাভাস্ক্রিপ্ট পাতাটি সম্পাদনা করার অনুমতি নেই।",
        "confirm-unwatch-top": "এই পাতাটি আপনার নজরতালিকা থেকে সরিয়ে ফেলতে ইচ্ছুক?",
        "confirm-rollback-button": "ঠিক আছে",
        "confirm-rollback-top": "এই পাতায় করা সম্পাদনাগুলি প্রত্যাবর্তন করবেন?",
+       "mcrundofailed": "পূর্বাবস্থায় ফেরা ব্যর্থ হয়েছে",
        "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← পূর্ববর্তী পাতা",
        "imgmultipagenext": "পরবর্তী পাতা →",
index 4fa19d3..4d28bd6 100644 (file)
        "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.",
index 1557e56..e2da9c3 100644 (file)
        "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:",
        "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",
index c0b06f8..a351ede 100644 (file)
        "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": "追加",
        "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<code><nowiki>{{</nowiki>#language:…}}</code> のようなパーサー関数や、\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code> のような変数も展開します。\nつまり、二重中括弧で囲まれたものほぼすべてを展開します。",
        "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の利用者サブページは、登録されていない利用者に対しては読み込みできません。",
        "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": "提供されたコンテンツが適切に圧縮されていません"
 }
index 615763f..a4c249a 100644 (file)
@@ -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",
        "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": "<strong>Panjenengan nyuwun kaca mirunggan sing ora sah.</strong>\n\nPratélan kaca mirunggan sing sah bisa tinemu ing [[Special:SpecialPages|{{int:specialpages}}]].",
+       "nospecialpagetext": "<strong>Panjenengan nyuwun kaca mirunggan kang ora trep.</strong>\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.",
        "semiprotectedpagewarning": "<strong>Cathetan:</strong> Kaca iki pinuju direksa, mula mung panganggo sing kadhaftar sing bisa mbesut.\nÈntri log pungkasan cumepak ana ing ngisor kanggo rujukan:",
        "cascadeprotectedwarning": "<strong>Pènget:</strong> 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}}:",
        "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)",
        "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 \"<nowiki>$1</nowiki>\" ing $2, jam $3?",
        "revdelete-show-file-submit": "Iya",
        "logdelete-selected": "{{PLURAL:$1|Log kapilih|Log kapilih}} kanggo:",
        "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].",
        "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",
        "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* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code></strong> saperlu nganggo barkasé kanthi vèrsi sing wutuh\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code></strong> 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* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> 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",
        "filetype-unwanted-type": "'''\".$1\"''' klebu jenis berkas sing ora diidinaké.\nLuwih becik {{PLURAL:$3|jinis berkas|Jinis-jinis berkas}} $2.",
        "filetype-banned-type": "<strong>\".$1\"</strong> {{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.",
        "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",
        "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:",
        "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",
        "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 <del>kacorèk</del>. 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 <del>diorèk</del>.",
-       "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",
        "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é",
        "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",
        "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é):",
        "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]].",
index 26c9db6..55a98f1 100644 (file)
        "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|ကဏ္ဍ|ကဏ္ဍဂမၠိုင်}}",
        "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": "&#32; ကေုာံ",
        "faq": "FAQ",
+       "actions": "ကၠောန်",
        "namespaces": "ဒၞာဲယၟု",
        "variants": "မူတၞဟ်",
        "navigation-heading": "သ္ၚိအင် မေန်နူ",
        "helppage-top-gethelp": "ရီု",
        "mainpage": "မုက်လိက်တမ်",
        "mainpage-description": "မုက်လိက်တမ်",
-       "policy-url": "ပရဝ်ဂျေတ်:မူဝါဒ",
+       "policy-url": "Project:မူဝါဒ",
        "portal": "ပါင်မုက် ဂကောံ",
        "portal-url": "Project:ပါင်မုက် ဂကောံ",
        "privacy": "ပဝ်လသဳ မဆေင်ကဵု အခေါင်အရာပူဂဵု",
        "viewsource-title": "ဗဵု တမ်ရိုဟ် သွက် $1",
        "viewsourcetext": "မၞး ဗဵု ကေုာံ စၠောအ်ကပ်ပဳကေတ် တမ်ရိုဟ် မုက်လိက်ဏအ် ဂွံရ၊၊",
        "exception-nologin": "ဟွံ လုပ်လံက်အေန်လဝ်",
+       "welcomeuser": "ဒုၚ်တၠုၚ်,$1",
+       "welcomecreation-msg": "အကံက်မၞးခၞံကၠောန်တုဲယျ.\nမၞးပြံၚ်ကေတ်ဒြပ်မၞး{{SITENAME}}[[Special:Preferences|စိုတ်လုပ်စမဂၠိုၚ်]]ယဝ်မၞးနွံပၟိက်မ္ဂး.",
        "yourname": "ယၟုညးလွပ်:",
        "userlogin-yourname": "ယၟုညးလွပ်",
        "userlogin-yourname-ph": "စုတ် ယၟုညးလွပ်",
        "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": "ဟွံ လုပ်လံက်အေန်လဝ်",
        "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": "မုဟိုတ်မၞးဂွံခၞံကၠောန်အကံက်တၞဟ်ခြာရော",
        "createacct-benefit-body1": "{{PLURAL:$1|တင်ပလေဝ်ဒါန်|တင်ပလေဝ်ဒါန်ဂမၠိုင်}}",
        "createacct-benefit-body2": "{{PLURAL:$1|မုက်လိက်|မုက်လိက်ဂမၠိုင်}}",
        "createacct-benefit-body3": "ခြာဟွံလအ် {{PLURAL:$1|ညးမခၞံကၠောန်|ညးမခၞံကၠောန်ဂမၠိုင်}}",
+       "loginsuccesstitle": "လံက်အေန်တုဲ",
+       "loginsuccess": "<strong>လၟုဟ်မၞးဂှ်လံက်အေန်လဝ်ပ္ဍဲသွက်{{SITNAME}}ညံၚ်\"$1\" .</strong>",
+       "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": "မလိက်ဓစေင်",
        "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": "<strong>သတိ</strong> မၞး ဟွံဂွံ လုပ်လံက်အေန်လဝ်ရ၊၊ IP address မၞး မံက်ဒၟံင်ရောင် ယဝ်ရ မၞးကၠောန်သ္ပ ပရေင်ပလေဝ်ပလေတ်မွဲမွဲမ္ဂး၊၊ ယဝ်ရ <strong>[$1 လုပ်လံက်အေန်]</strong> ဟွံသေင်မ္ဂး <strong>[$2 ခၞံကၠောန် အကံက်မွဲ]</strong>မ္ဂး၊ ပရေင်ပလေဝ်ဒါန်မၞး တြးပတိတ် နကဵု ယၟုသုင်စောဲ မၞးရောင်၊၊",
+       "blockedtitle": "ညးလွပ်ဂှ်ကၟာတ်အာယျ",
        "blockedtext": "<strong>ယၟုညးလွပ် ဟွံသေင်မ္ဂး ဌာန်ဒၟံင်အာင်ဒဳမၞး ဒးဒုင်ကၟာတ်စဵုဒၞာလဝ်</strong>\n\nပွမကၟာတ်စဵုဒၞာဂှ် ကၠောန်လဝ် နကဵု $1.\nဟိုတ်မဂွံကၟာတ်စဵုဒၞာဂှ် <em>$2</em>.\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": "<strong>ယၟုညးလွပ် ဟွံသေင်မ္ဂး ဌာန်ဒၟံင်အာင်ဒဳမၞး ဒးဒုင်ကၟာတ်စဵုဒၞာလဝ်</strong>\n\nပွမကၟာတ်စဵုဒၞာဂှ် ကၠောန်လဝ် နကဵု $1.\nဟိုတ်မဂွံကၟာတ်စဵုဒၞာဂှ် <em>$2</em>.\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မုက်လိက်အရီုအဗင်]ညိ)။ ဟိုတ်နူဗၠေတ်တုဲ မၞး စိုပ်ကၠုင် ပ္ဍဲဒၞာဲဏအ်မ္ဂး ဍဵု <strong>back</strong> တုဲ ကလေင်အာ ဒၞာဲတြေံညိ၊၊",
        "anontalkpagetext": "----\n<em>မုက်လိက်ဏအ်ဂှ် ဒှ်ဒၞာဲ သွက်မၞိဟ် မဟွံဗမံက်ယၟု၊ မၞိဟ်ဟွံဂွံကၠောန်လဝ် အကံက်တအ်ဏီ ဂွံပတိုန်လညာတ် ပါ်ပဲါရ၊၊</em>\nဟိုတ်ဂှ်ရ ပိုယ်ဒးစကာ မဂၞန် IP address သွက်ဂွံ တီညးတအ်ရ၊၊ IP address ဗီုဏအ်မွဲမွဲဂှ် ပါ်ပရအ်ဂွံ ညးလွပ် ဗွဲမဂၠိုင်ရ၊၊ ယဝ်ရ မၞးဂှ် ဒှ်ညးလွပ် မဟွံဗမံက်ယၟုမွဲ စှ်ေစိုတ် တင်ဂလာန်တအ်ဏအ်ဂှ် ဒှ်ဟွံထေက်မ္ဂး ပဂုန်တုဲ [[Special:CreateAccount|ခၞံကၠောန် အကံက်မွဲ]] ဟွံသေင်မ္ဂး [[Special:UserLogin|လုပ်လံက်အေန်]] သွက်ဂွံ ဝေင်ပဲါ ညးလွပ် မဟွံဗမံက်ယၟုတအ်တၞဟ်တအ်ရ၊၊",
        "noarticletext": "ပ္ဍဲမုက်လိက်ဏအ် လိက်ဟွံမွဲဏီရ၊၊\nမၞး ဂၠာဲကေတ်  [[Special:Search/{{PAGENAME}}|search for this page title]] ပ္ဍဲမုက်လိက်တၞဟ်မ္ဂး ကလိဂွံမာန်ရောင်၊၊\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],\nဟွံသေင်မ္ဂး  [{{fullurl:{{FULLPAGENAME}}|action=edit}} ခၞံကၠောန် လိက်မုက်ဏအ်ညိ၊၊]</span>.",
        "recentchanges-label-plusminus": "ဇမၞော် မုက်လိက်ဏအ် သၠာဲအာ နကဵု လၟိဟ်လျိုင်ဗာက်",
        "recentchanges-legend-heading": "<strong>Legend:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (also see [[Special:NewPages|list of new pages]])",
-       "rcfilters-filter-user-experience-level-registered-description": "á\80\9cá\80±á\80¬á\80·á\80¡á\80\84á\80º á\80\9dá\80\84á\80ºá\80\91á\80¬á\80¸á\80\9eá\80±á\80¬ á\80\90á\80\8aá\80ºá\80¸á\80\96á\80¼á\80\90á\80ºá\80\9eá\80°á\80\99á\80»á\80¬á\80¸",
-       "rcfilters-filter-user-experience-level-unregistered-description": "á\80\9cá\80±á\80¬á\80·á\80¡á\80\84á\80º á\80\99á\80\9dá\80\84á\80ºá\80\91á\80¬á\80¸á\80\9eá\80±á\80¬ á\80\90á\80\8aá\80ºá\80¸á\80\96á\80¼á\80\90á\80ºá\80\9eá\80°á\80\99á\80»á\80¬á\80¸",
+       "rcfilters-filter-user-experience-level-registered-description": "á\80\8aá\80\92á\80«á\80\94á\80ºá\80\90á\80¡á\80º á\80\9cá\80¯á\80\95á\80ºá\80\9cá\80¶á\80\80á\80ºá\80¡á\80±á\80\94á\80ºá\80\9cá\80\9dá\80º",
+       "rcfilters-filter-user-experience-level-unregistered-description": "á\80\8aá\80¸á\80\92á\80«á\80\94á\80º á\80\9fá\80½á\80¶á\80\9cá\80¯á\80\95á\80º-á\80\9cá\80¶á\80\80á\80ºá\80¡á\80±á\80\94á\80ºá\80\9cá\80\9dá\80ºá\80\90á\80¡á\80ºá\80\82á\80\99á\81 á\80­á\80¯á\81\9aá\80º",
        "rcfilters-filter-minor-label": "အသေးစား တည်းဖြတ်မှုများ",
        "rcfilters-filtergroup-changetype": "ပြောင်းလဲမှု အမျိုးအစား",
        "rcfilters-filter-pageedits-label": "စာမျက်နှာ တည်းဖြတ်မှုများ",
index 186de49..f78d049 100644 (file)
        "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.",
        "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 <strong>alleen</strong> hernoemd worden als de nieuwe paginanaam niet bestaat of een doorverwijspagina zonder verdere geschiedenis is.\n\n<strong>Opmerking:</strong>\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 <strong>alleen</strong> 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\n<strong>Opmerking:</strong>\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": "<strong>Waarschuwing:</strong> 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 <em>niet</em> automatisch naar de nieuwe verplaatst.",
        "movenologintext": "U moet [[Special:UserLogin|aangemeld]] zijn om een pagina te hernoemen.",
index 4a8f365..cf4446d 100644 (file)
        "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",
index cf05767..97010c7 100644 (file)
        "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à",
index 55a27ed..5630e92 100644 (file)
        "prefs-info": "بنیادی معلومات",
        "prefs-i18n": "بین الاقوامیت",
        "prefs-signature": "دستخط",
-       "prefs-dateformat": "تارÛ\8cØ® Ø¯Û\8c ØªØ±ØªÛ\8cب",
+       "prefs-dateformat": "تریخ دی ترتیب",
        "prefs-timeoffset": "وقت دی ترتیب",
        "prefs-advancedediting": "عام آپشن",
        "prefs-editor": "خانہ ترمیم",
        "upload-form-label-usage-filename": "فائل دا ناں",
        "upload-form-label-own-work": "یہ میݙا ذاتی کم ہے",
        "upload-form-label-infoform-categories": "ونکیاں",
-       "upload-form-label-infoform-date": "تارÛ\8cØ®",
+       "upload-form-label-infoform-date": "تریخ",
        "backend-fail-delete": "مِسَل \"$1\" کوں مٹایا نی ونڄ سڳیا۔",
        "license": "اجازت نامہ:",
        "license-header": "اجازہ کاری",
        "imgfile": "فائل",
        "listfiles": "فائل لسٹ",
        "listfiles_thumb": "تھمب نیل",
-       "listfiles_date": "تارÛ\8cØ®",
+       "listfiles_date": "تریخ",
        "listfiles_name": "ناں",
        "listfiles_user": "ورتݨ والا",
        "listfiles_size": "حجم",
        "listfiles-latestversion-no": "کو",
        "file-anchor-link": "فائل",
        "filehist": "فائل دا تاریخچہ",
-       "filehist-help": "Ú©Û\81Û\8cÚº Ø®Ø§Øµ Ù\88Û\8cÙ\84Û\92 ØªÛ\92 ØªØ§Ø±Û\8cØ® Ú©Ù\88Úº Ù\81ائÙ\84 Ú©Û\8cÙ\86Ù\98Ù\88Û\8cÚº  Ù\86ظردÛ\8c Û\81ائÛ\8cØ\8c Ý\99Û\8cکھݨ Ú©Û\8cتÛ\92 Ø§Ù\88Úº Ù\88Û\8cÙ\84Û\92 ØªÛ\92 Ú©Ù\84Ú© Ú©Ø±Ù\88Û\94",
+       "filehist-help": "کہیں خاص ویلے تے تریخ کوں فائل کین٘ویں  نظردی ہائی، ݙیکھݨ کیتے اوں ویلے تے کلک کرو۔",
        "filehist-deleteall": "سارے مٹاؤ",
        "filehist-deleteone": "مٹاؤ",
        "filehist-revert": "واپس",
        "pageinfo-redirects-name": "رجوعاں  دی تعداد",
        "pageinfo-subpages-name": "ایں ورقے دے ذیلی ورقیاں دی تعداد",
        "pageinfo-firstuser": "ورقہ ساز",
-       "pageinfo-firsttime": "Ù\88رÙ\82Û\81 Ø¨Ý¨Ý¨ Ø¯Û\8c ØªØ§Ø±Û\8cØ®",
+       "pageinfo-firsttime": "ورقہ بݨݨ دی تریخ",
        "pageinfo-lastuser": "چھیکڑی ترمیم کنندہ",
-       "pageinfo-lasttime": "Ú\86Ú¾Û\8cÚ©Ú\91Û\8c ØªØ±Ù\85Û\8cÙ\85 Ø¯Û\8c ØªØ§Ø±Û\8cØ®",
+       "pageinfo-lasttime": "چھیکڑی ترمیم دی تریخ",
        "pageinfo-edits": "ترامیم دی مجموعی تعداد",
        "pageinfo-authors": "مختلف مصنفین دی  تعداد",
        "pageinfo-recent-edits": "حالیہ ترامیم دی تعداد (گزشتہ $1 وچ)",
        "exif-orientation": "اورینٹیشن",
        "exif-xresolution": "افقی ریزولوشن",
        "exif-yresolution": "عمودی ریزولیشن",
-       "exif-datetime": "Ù\81ائÙ\84 Ø¨Ø¯Ù\84ݨ Ø¯Û\8c ØªØ§Ø±Û\8cØ® ØªÛ\92 Ù\88Û\8cÙ\84ا",
+       "exif-datetime": "فائل بدلݨ دی تریخ تے ویلا",
        "exif-make": "کیمرہ ساز کمپنی",
        "exif-model": "کیمرے دا ماڈل",
        "exif-software": "مستعمل سافٹ ویئر",
        "exif-exifversion": "اکزیف ورژن",
        "exif-colorspace": "رنگ فضا",
-       "exif-datetimeoriginal": "Ú\88Û\8cٹا Ø¨Ý¨Ø§Ù\88ݨ Ø¯Û\8c ØªØ§Ø±Û\8cØ® ØªÛ\92 Ù\88Û\8cÙ\84ا",
+       "exif-datetimeoriginal": "ڈیٹا بݨاوݨ دی تریخ تے ویلا",
        "exif-datetimedigitized": "ڈجیٹائزنگ دا ویلہ تے تریخ",
        "exif-orientation-1": "عام",
        "namespacesall": "یکے",
index 6bca564..6cc0d7b 100644 (file)
        "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}}",
index f456b88..667c9c1 100644 (file)
        "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",
        "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": "&#32;eyet",
+       "faq": "FÅK",
        "actions": "Accions",
        "namespaces": "Espåces di lomaedje",
        "variants": "Variantes",
        "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",
        "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",
        "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.",
        "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.",
        "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": "<strong>Vosse no d' uzeu ou voste adresse IP a stî blokêye.</strong>\n\nLi blocaedje a stî fwait pa $1.\nLi råjhon dnêye est <em>$2</em>.\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.",
        "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 <strong>En erî</strong> 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<em>Ç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.</em>",
        "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 <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cweri dins les djournås],\nou co [{{fullurl:{{FULLPAGENAME}}|action=edit}} ahiver l' pådje]</span>.",
        "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 <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cweri dins les djournås]</span>, 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": "<strong>Note:</strong> après aveur schapé l' pådje, vos l' divoz rafrister, po pleur vey les candjmints dins vosse betchteu waibe.\n* <strong>Firefox / Safari :</strong> tchôkîz so <em>Shift</em> tot clitchant so <em>Rafrister</em>, ou co fjhoz <em>Ctrl-F5</em> ou <em>Ctrl-R</em> (<em>⌘-R</em> so on Mac)\n* <strong>Google Chrome :</strong> tchôkîz so <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> so on Mac)\n* <strong>Internet Explorer :</strong> tchôkîz so <em>Ctrl</em> tot clitchant so <em>Rafrister</em>, ou co fjhoz <em>Ctrl-F5</em>\n* <strong>Konqueror :</strong> clitchîz so <em>Rafrister</em> ou tchôkîz so <em>F5</em>\n* <strong>Opera :</strong> alez dins <em>Menu → Parametes</em> (<em>Opera → Preferinces</em> so on Mac), pus dins <em>Confidance & såvrité → Vudîz les dnêyes d' vizitaedje → Imådjes et fitchîs metous el muchete</em>.",
        "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é!'''",
        "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î.",
        "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",
        "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é",
        "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",
        "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'''.",
        "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î",
        "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",
        "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 <strong>cråssès letes</strong>.",
-       "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 <strong>$1</strong> dierins candjmints}} {{PLURAL:$2|del dierinne eure|des <strong>$2</strong> dierinnès eures}}, disk' å $3 a $4.",
        "wlshowlast": "Mostrer les dierin(nè)s $1 eures, $2 djoûs",
        "watchlist-hide": "Catchî",
        "watchlist-submit": "Mostrer",
        "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": "<strong>Asteme:</strong> 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",
        "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.",
        "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",
        "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}}",
        "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",
        "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",
        "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",
        "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",
        "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",
        "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",
        "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",
        "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",
        "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...",
index ec27bf0..46f76c1 100644 (file)
        "lineno": "行 $1:",
        "compareselectedversions": "比較已選擇的修訂",
        "showhideselectedversions": "變更已選擇修訂的顯示設定",
-       "editundo": "撤銷",
+       "editundo": "復原",
        "diff-empty": "(無差異)",
        "diff-multi-sameuser": "(未顯示同一使用者於中間所作的 $1 次修訂)",
        "diff-multi-otherusers": "(未顯示由 $2 位使用者於中間所作的 $1 次修訂)",
index d64859f..0ee1293 100644 (file)
        "rev-deleted-comment": "(註釋已除)",
        "rev-deleted-event": "(日誌已除)",
        "revdelete-suppress-text": "壓制'''只'''應用於以下的情況:\n* 不合適的個人資料\n*: ''地址、電話號碼、身份證號碼等。''",
-       "editundo": "撤銷",
+       "editundo": "復原",
        "prefs-user-pages": "用戶頁面",
        "username": "{{GENDER:$1|用戶名稱}}:",
        "prefs-help-gender": "可選:用於軟件中的性別指定。此項資料將會被公開。",
index fe6e604..b01dde6 100644 (file)
@@ -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 );
                }
index 16994f5..5820b83 100644 (file)
                } );
        };
 
-       // Fire events from before track() triggred fire()
+       // Fire events from before track() triggered fire()
        trackCallbacks.fire( mw.trackQueue );
 
        /**
                                                } 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 += '</' + name + '>';
index d880e8b..3f33837 100644 (file)
@@ -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
index 06190a8..fee69c0 100644 (file)
@@ -13,7 +13,6 @@
        'use strict';
 
        var mw, StringSet, log,
-               hasOwn = Object.prototype.hasOwnProperty,
                trackQueue = [];
 
        /**
 
        function defineFallbacks() {
                // <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set>
-               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;
-               }() );
+               };
        }
 
        /**
                         * @property
                         * @private
                         */
-                       var registry = {},
+                       var registry = Object.create( null ),
                                // Mapping of sources, keyed by source-id, values are strings.
                                //
                                // Format:
                                //         'sourceId': 'http://example.org/w/load.php'
                                //     }
                                //
-                               sources = {},
+                               sources = Object.create( null ),
 
                                // For queueModuleScript()
                                handlingPendingRequests = false,
                        function sortDependencies( module, resolved, unresolved ) {
                                var i, deps, skip;
 
-                               if ( !hasOwn.call( registry, module ) ) {
+                               if ( !( module in registry ) ) {
                                        throw new Error( 'Unknown dependency: ' + module );
                                }
 
                        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;
                                        }
                                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 );
                                }
                         *  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;
                        }
 
                        /**
                         * @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 ] = {
                                        // 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 ] );
                                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 ];
                                                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
                                /**
                                 * 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 );
                                 *  in the registry.
                                 */
                                getVersion: function ( module ) {
-                                       return hasOwn.call( registry, module ) ? registry[ module ].version : null;
+                                       return module in registry ? registry[ module ].version : null;
                                },
 
                                /**
                                 *  in the registry.
                                 */
                                getState: function ( module ) {
-                                       return hasOwn.call( registry, module ) ? registry[ module ].state : null;
+                                       return module in registry ? registry[ module ].state : null;
                                },
 
                                /**
index b151002..88797d7 100644 (file)
@@ -12670,10 +12670,13 @@ parsoid=wt2html
 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi {{}}"}},"i":0}}]}'>hi {{}}</p>
 !! 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
index d69cfd1..a890494 100644 (file)
@@ -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
                ] );
index de861b6..a0bc038 100644 (file)
@@ -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 )
index 4328d3f..a872d6e 100644 (file)
@@ -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 (file)
index 0000000..9d02d4d
--- /dev/null
@@ -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;