Merge "Restore index forcing in ContribsPager"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 7 Mar 2018 17:21:12 +0000 (17:21 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 7 Mar 2018 17:21:12 +0000 (17:21 +0000)
64 files changed:
RELEASE-NOTES-1.31
includes/api/ApiBase.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQueryUserContributions.php
includes/api/i18n/ko.json
includes/api/i18n/pt.json
includes/db/DatabaseOracle.php
includes/installer/i18n/el.json
includes/installer/i18n/pt.json
includes/libs/rdbms/database/DBConnRef.php
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/database/DatabaseMssql.php
includes/libs/rdbms/database/DatabaseMysqlBase.php
includes/libs/rdbms/database/DatabaseSqlite.php
includes/libs/rdbms/database/IDatabase.php
includes/logging/LogPager.php
includes/page/Article.php
includes/parser/Parser.php
includes/specials/SpecialContributions.php
languages/data/Names.php
languages/i18n/ar.json
languages/i18n/be-tarask.json
languages/i18n/bn.json
languages/i18n/ce.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hr.json
languages/i18n/io.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/ko.json
languages/i18n/ku-latn.json
languages/i18n/li.json
languages/i18n/lrc.json
languages/i18n/lt.json
languages/i18n/mk.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ru.json
languages/i18n/sr-ec.json
languages/i18n/sv.json
languages/i18n/uk.json
languages/i18n/war.json
languages/i18n/yi.json
languages/i18n/zgh.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesHu_formal.php [new file with mode: 0644]
tests/parser/TidySupport.php
tests/parser/parserTests.txt
tests/phpunit/includes/api/query/ApiQueryUserContributionsTest.php
tests/phpunit/includes/db/DatabaseOracleTest.php [new file with mode: 0644]
tests/phpunit/includes/db/DatabaseTestHelper.php
tests/phpunit/includes/libs/rdbms/database/DatabaseMssqlTest.php [new file with mode: 0644]
tests/phpunit/includes/libs/rdbms/database/DatabaseMysqlBaseTest.php
tests/phpunit/includes/libs/rdbms/database/DatabaseSQLTest.php
tests/phpunit/includes/libs/rdbms/database/DatabaseSqliteRdbmsTest.php [new file with mode: 0644]

index 83669e6..1f7835d 100644 (file)
@@ -119,6 +119,7 @@ changes to languages because of Phabricator reports.
 * (T186635) New language support: Guianan Creole (gcr).
 * (T186647) New language support: Kumyk [къумукъ] (kum).
 * (T187750) New language support: Spanish formal address (es-formal).
+* (T187824) New language support: Hungarian formal address (hu-formal).
 
 === Other changes in 1.31 ===
 * Browser support for Internet Explorer 10 was lowered from Grade A to Grade C.
@@ -285,6 +286,8 @@ changes to languages because of Phabricator reports.
   * Parser::isValidHalfParsedText()
   * StripState::getSubState()
   * StripState::merge()
+* The "free" class is now only applied to unbracketed URLs in wikitext. Links
+  written using square brackets will get the class "text" not "free".
 
 == Compatibility ==
 MediaWiki 1.31 requires PHP 5.5.9 or later. Although HHVM 3.18.5 or later is supported,
index 228d319..73315a0 100644 (file)
@@ -1615,6 +1615,10 @@ abstract class ApiBase extends ContextSource {
         * @return string Validated and normalized parameter
         */
        private function validateUser( $value, $encParamName ) {
+               if ( ExternalUserNames::isExternal( $value ) && User::newFromName( $value, false ) ) {
+                       return $value;
+               }
+
                $title = Title::makeTitleSafe( NS_USER, $value );
                if ( $title === null || $title->hasFragment() ) {
                        $this->dieWithError(
index 68902a3..84e12d7 100644 (file)
@@ -172,10 +172,8 @@ class ApiQueryLogEvents extends ApiQueryBase {
                if ( !is_null( $user ) ) {
                        // Note the joins in $q are the same as those from ->getJoin() above
                        // so we only need to add 'conds' here.
-                       // Don't query by user ID here, it might be able to use the
-                       // log_user_text_time or log_user_text_type_time index.
                        $q = $actorMigration->getWhere(
-                               $db, 'log_user', User::newFromName( $params['user'], false ), false
+                               $db, 'log_user', User::newFromName( $params['user'], false )
                        );
                        $this->addWhere( $q['conds'] );
                }
index e587ef4..bb4a2ef 100644 (file)
@@ -245,7 +245,7 @@ class ApiQueryContributions extends ApiQueryBase {
                                        );
                                }
 
-                               if ( User::isIP( $u ) ) {
+                               if ( User::isIP( $u ) || ExternalUserNames::isExternal( $u ) ) {
                                        $names[$u] = null;
                                } else {
                                        $name = User::getCanonicalName( $u, 'valid' );
index 034a033..1db9ed3 100644 (file)
        "apihelp-login-example-login": "로그인.",
        "apihelp-logout-summary": "로그아웃하고 세션 데이터를 지웁니다.",
        "apihelp-logout-example-logout": "현재 사용자를 로그아웃합니다.",
+       "apihelp-managetags-summary": "변경 태그에 관한 관리 작업을 수행합니다.",
        "apihelp-mergehistory-summary": "문서 역사를 합칩니다.",
        "apihelp-mergehistory-param-reason": "문서 병합 이유.",
        "apihelp-move-summary": "문서 이동하기.",
index 669a828..14cf5aa 100644 (file)
@@ -12,7 +12,7 @@
                        "Waldir"
                ]
        },
-       "apihelp-main-extended-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Documentation]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailing list]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API Announcements]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bugs & requests]\n</div>\n<strong>Estado:</strong> A API do MediaWiki é uma interface consolidada e estável que é constantemente suportada e melhorada. Enbora tentemos evitá-lo, podemos ocasionalmente realizar alterações disruptivas. Inscreva-se na [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ lista de distribuição mediawiki-api-announce] para receber notificação das atualizações.\n\n<strong>Pedidos incorretos:</strong> Quando são enviados pedidos incorretos à API, será devolvido um cabeçalho HTTP com a chave \"MediaWiki-API-Error\" e depois tanto o valor desse cabeçalho como o código de erro devolvido serão definidos com o mesmo valor. Para mais informação, consulte [[mw:Special:MyLanguage/API:Errors_and_warnings|API:Erros e avisos]].\n\n<p class=\"mw-apisandbox-link\"><strong>Testes:</strong> Para testar facilmente pedidos à API, visite [[Special:ApiSandbox|Testes da API]].</p>",
+       "apihelp-main-extended-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Documentação]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista de divulgação]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Anúncios da API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Defeitos e pedidos]\n</div>\n<strong>Estado:</strong> A API do MediaWiki é uma interface consolidada e estável que é constantemente suportada e melhorada. Embora tentemos evitá-lo, podemos ocasionalmente realizar alterações disruptivas. Inscreva-se na [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ lista de distribuição mediawiki-api-announce] para receber notificações das atualizações.\n\n<strong>Pedidos incorretos:</strong> Quando são enviados pedidos incorretos à API, será devolvido um cabeçalho HTTP com a chave \"MediaWiki-API-Error\" e depois tanto o valor desse cabeçalho como o código de erro devolvido serão definidos com o mesmo valor. Para mais informação, consulte [[mw:Special:MyLanguage/API:Errors_and_warnings|API:Erros e avisos]].\n\n<p class=\"mw-apisandbox-link\"><strong>Testes:</strong> Para testar facilmente pedidos à API, visite [[Special:ApiSandbox|Testes da API]].</p>",
        "apihelp-main-param-action": "A operação a ser realizada.",
        "apihelp-main-param-format": "O formato do resultado.",
        "apihelp-main-param-maxlag": "O atraso máximo pode ser usado quando o MediaWiki é instalado num ''cluster'' de bases de dados replicadas. Para impedir que as operações causem ainda mais atrasos de replicação do sítio, este parâmetro pode fazer o cliente aguardar até que o atraso de replicação seja inferior ao valor especificado. Caso o atraso atual exceda esse valor, o código de erro <samp>maxlag</samp> é devolvido com uma mensagem como <samp>À espera do servidor $host: $lag segundos de atraso</samp>.<br />Consulte [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manual: Parâmetro maxlag]] para mais informações.",
index 225a36c..3362f0f 100644 (file)
@@ -1358,6 +1358,15 @@ class DatabaseOracle extends Database {
                return '(' . $this->selectSQLText( $table, $fld, $conds, null, [], $join_conds ) . ')';
        }
 
+       public function buildSubstring( $input, $startPosition, $length = null ) {
+               $this->assertBuildSubstringParams( $startPosition, $length );
+               $params = [ $input, $startPosition ];
+               if ( $length !== null ) {
+                       $params[] = $length;
+               }
+               return 'SUBSTR(' . implode( ',', $params ) . ')';
+       }
+
        /**
         * @param string $field Field or column to cast
         * @return string
index 0c93b3a..6d1e3f1 100644 (file)
        "config-page-existingwiki": "Υπάρχον wiki",
        "config-help-restart": "Θέλετε να καταργήσετε όλα τα αποθηκευμένα δεδομένα που έχετε εισαγάγει και να επανεκκινήσετε τη διαδικασία εγκατάστασης;",
        "config-restart": "Ναι, επανεκκίνηση",
-       "config-welcome": "=== Î ÎµÏ\81ιβαλλονÏ\84ικοί Î­Î»ÎµÎ³Ï\87οι ===\nΤÏ\8eÏ\81α Î¸Î± Î³Î¯Î½Î¿Ï\85ν Î²Î±Ï\83ικοί Î­Î»ÎµÎ³Ï\87οι Î³Î¹Î± Î½Î± Î´Î¿Ï\8dμε Î±Î½ Î±Ï\85Ï\84Ï\8c Ï\84ο Ï\80εÏ\81ιβάλλον ÎµÎ¯Î½Î±Î¹ ÎºÎ±Ï\84άλληλο Î³Î¹Î± Ï\84ην ÎµÎ³ÎºÎ±Ï\84άÏ\83Ï\84αÏ\83η Ï\84οÏ\85 MediaWiki.\nÎ\98Ï\85μηθείÏ\84ε Î½Î± Ï\83Ï\85μÏ\80εÏ\81ιλάβεÏ\84ε Î±Ï\85Ï\84έÏ\82 Ï\84ιÏ\82 Ï\80ληÏ\81οÏ\86οÏ\81ίεÏ\82 ÎµÎ¬Î½ Î±Î½Î±Î¶Î·Ï\84ήÏ\83εÏ\84ε Ï\85Ï\80οÏ\83Ï\84ήÏ\81ιξη Î³Î¹Î± Ï\84ο Ï\80Ï\8eÏ\82 να ολοκληρώσετε την εγκατάσταση.",
-       "config-copyright": "=== Πνευματικά δικαιώματα και Όροι ===\n\n$1\n\nΑυτό το πρόγραμμα είναι ελεύθερο λογισμικό• μπορείτε να το αναδιανείμετε ή και να το τροποποιήσετε υπό τους όρους της Γενικής Άδειας Δημόσιας Χρήσης GNU, όπως αυτή δημοσιεύεται από το Ίδρυμα Ελεύθερου Λογισμικού• είτε της έκδοσης 2 της Άδειας, είτε (κατά την επιλογή σας) οποιασδήποτε μεταγενέστερης έκδοσης.\n\nΑυτό το πρόγραμμα διανέμεται με την ελπίδα ότι θα είναι χρήσιμο, αλλά <strong>χωρίς καμία εγγύηση</strong>• χωρίς καν την υπονοούμενη εγγύηση της <strong>εμπορευσιμότητας</strong> ή της <strong>καταλληλοτότητας για συγκεκριμένο σκοπό</strong>.\nΔείτε την Γενική Άδεια Δημόσιας Χρήσης GNU για περισσότερες λεπτομέρειες.\n\nΘα πρέπει να έχετε λάβει <doclink href=\"Copying\">ένα αντίγραφο της Γενικής Άδειας Δημόσιας Χρήσης GNU</doclink> μαζί με αυτό το πρόγραμμα• αν όχι, γράψτε στο Free Software Foundation,\n51 Franklin Street, Fifth Floor,\nBoston, MA 02110-1335\nUSA ή [https://www.gnu.org/copyleft/gpl.html διαβάστε online].",
+       "config-welcome": "=== Î\88λεγÏ\87οι Ï\84οÏ\85 Ï\80εÏ\81ιβάλλονÏ\84οÏ\82 ===\nΤÏ\8eÏ\81α Î¸Î± Î³Î¯Î½Î¿Ï\85ν Î²Î±Ï\83ικοί Î­Î»ÎµÎ³Ï\87οι Î³Î¹Î± Î½Î± Î´Î¿Ï\8dμε Î±Î½ Î±Ï\85Ï\84Ï\8c Ï\84ο Ï\80εÏ\81ιβάλλον ÎµÎ¯Î½Î±Î¹ ÎºÎ±Ï\84άλληλο Î³Î¹Î± Ï\84ην ÎµÎ³ÎºÎ±Ï\84άÏ\83Ï\84αÏ\83η Ï\84οÏ\85 MediaWiki.\nÎ\98Ï\85μηθείÏ\84ε Î½Î± Ï\83Ï\85μÏ\80εÏ\81ιλάβεÏ\84ε Î±Ï\85Ï\84έÏ\82 Ï\84ιÏ\82 Ï\80ληÏ\81οÏ\86οÏ\81ίεÏ\82 ÎµÎ¬Î½ Î±Î½Î±Î¶Î·Ï\84ήÏ\83εÏ\84ε Ï\85Ï\80οÏ\83Ï\84ήÏ\81ιξη Î³Î¹Î± να ολοκληρώσετε την εγκατάσταση.",
+       "config-copyright": "=== Πνευματικά δικαιώματα και όροι ===\n\n$1\n\nΑυτό το πρόγραμμα είναι ελεύθερο λογισμικό· μπορείτε να το αναδιανείμετε ή/και να το τροποποιήσετε υπό τους όρους της Γενικής Άδειας Δημόσιας Χρήσης GNU, όπως αυτή δημοσιεύεται από το Ίδρυμα Ελεύθερου Λογισμικού· είτε της έκδοσης 2 της Άδειας, είτε (κατ' επιλογήν σας) οποιασδήποτε μεταγενέστερης έκδοσης.\n\nΑυτό το πρόγραμμα διανέμεται με την ελπίδα ότι θα είναι χρήσιμο, αλλά <strong>χωρίς καμία εγγύηση</strong>· χωρίς καν τη σιωπηρή εγγύηση της <strong>εμπορευσιμότητας</strong> ή <strong>καταλληλότητας για συγκεκριμένο σκοπό</strong>.\nΔείτε τη Γενική Άδεια Δημόσιας Χρήσης GNU για περισσότερες λεπτομέρειες.\n\nΘα πρέπει να έχετε παραλάβει <doclink href=\"Copying\">ένα αντίγραφο της Γενικής Άδειας Δημόσιας Χρήσης GNU</doclink> μαζί με αυτό το πρόγραμμα· αν όχι, στείλτε ένα γράμμα στο Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, ή [https://www.gnu.org/copyleft/gpl.html διαβάστε το διαδικτυακά].",
        "config-sidebar": "* [https://www.mediawiki.org Αρχική MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Οδηγός Χρήστη]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents Οδηγός Διαχειριστή]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Συχνές ερωτήσεις]\n----\n* <doclink href=\"Readme\">Διαβάστε με</doclink>\n* <doclink href=\"ReleaseNotes\">Σημειώσεις έκδοσης</doclink>\n* <doclink href=\"Copying\">Αντιγραφή</doclink>\n* <doclink href=\"UpgradeDoc\">Αναβάθμιση</doclink>",
        "config-env-good": "Το περιβάλλον έχει ελεγχθεί.\nΜπορείτε να εγκαταστήσετε το MediaWiki.",
        "config-env-bad": "Το περιβάλλον έχει ελεγχθεί.\nΔεν μπορείτε να εγκαταστήσετε το MediaWiki.",
        "config-env-php": "H PHP $1 είναι εγκατεστημένη.",
        "config-env-hhvm": "Το HHVM $1 είναι εγκατεστημένο.",
-       "config-unicode-using-intl": "Χρησιμοποιώντας την [https://pecl.php.net/intl επέκταση intl PECL] για κανονικοποίηση Unicode.",
+       "config-unicode-using-intl": "Χρησιμοποιείται η [https://pecl.php.net/intl επέκταση intl PECL] για κανονικοποίηση Unicode.",
        "config-unicode-pure-php-warning": "<strong>Προειδοποίηση:</strong> Η [https://pecl.php.net/intl επέκταση intl PECL] δεν είναι διαθέσιμη για να χειριστεί την κανονικοποίηση Unicode, επιστρέφουμε στην αργή αμιγώς PHP εφαρμογή.\nΕάν λειτουργείτε έναν ιστότοπο υψηλής επισκεψιμότητας, θα πρέπει να ρίξετε μια ματιά στην [https://www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations κανονικοποίηση Unicode].",
        "config-no-db": "Δεν βρέθηκε κάποιο κατάλληλο πρόγραμμα οδήγησης βάσης δεδομένων! Θα πρέπει να εγκαταστήσετε ένα πρόγραμμα οδήγησης βάσης δεδομένων για  PHP.\nΟ παρακάτω {{PLURAL:$2|τύπος βάσης δεδομένων|τύποι βάσεων δεδομένων}} υποστηρίζονται: $1.\n\nΑν κάνετε compile την PHP μόνοι σας, ρυθμίστε ξανά τις παραμέτρους με κάποιον ενεργοποιημένο εξυπηρετητή βάσεων  δεδομένων, για παράδειγμα, χρησιμοποιώντας την εντολή <code>./configure --with-mysqli</code>.\nΕάν έχετε εγκαταστήσει την PHP από κάποιο πακέτο στο Debian ή στο Ubuntu, τότε θα πρέπει να εγκαταστήσετε επίσης, για παράδειγμα, το πακέτο <code>php5-mysql</code>.",
        "config-outdated-sqlite": "<strong>Προειδοποίηση:</strong> έχετε την SQLite έκδοση $1, που είναι χαμηλότερη από την ελάχιστη απαιτούμενη έκδοση $2. Η SQLite δεν θα είναι διαθέσιμη.",
        "config-apc": "Το [http://www.php.net/apc APC] είναι εγκατεστημένο",
        "config-wincache": "[https://www.iis.net/download/WinCacheForPhp Το WinCache] είναι εγκατεστημένο",
        "config-diff3-bad": "Το GNU diff3 δεν βρέθηκε.",
-       "config-git": "Βρέθηκε η Git έκδοση λογισμικού ελέγχου: <code>$1</code>.",
-       "config-git-bad": "Η Git έκδοση του λογισμικού ελέγχου δεν βρέθηκε.",
+       "config-git": "Βρέθηκε το λογισμικό ελέγχου εκδόσεων Git: <code>$1</code>.",
+       "config-git-bad": "Το λογισμικό ελέγχου εκδόσεων Git δεν βρέθηκε.",
+       "config-imagemagick": "Βρέθηκε το ImageMagick: <code>$1</code>.\nΟι μικρογραφίες εικόνων θα ενεργοποιηθούν αν ενεργοποιήσετε το ανέβασμα αρχείων.",
+       "config-gd": "Βρέθηκε ενσωματωμένη η βιβλιοθήκη γραφικών GD.\nΟι μικρογραφίες εικόνων θα ενεργοποιηθούν αν ενεργοποιήσετε το ανέβασμα αρχείων.",
+       "config-no-scaling": "Δεν ήταν δυνατόν να βρεθεί η βιβλιοθήκη GD ή το ImageMagick.\nΟι μικρογραφίες εικόνων θα απενεργοποιηθούν.",
        "config-no-uri": "<strong>Σφάλμα:</strong> Δεν ήταν δυνατό να καθοριστεί το τρέχον URI.\nΗ εγκατάσταση ματαιώθηκε.",
-       "config-using-server": "Χρησιμοποιείται το όνομα διακομιστή \"<nowiki>$1</nowiki>\".",
-       "config-using-uri": "Χρησιμοποιώντας την διεύθυνση URL του διακομιστή \"<nowiki>$1$2</nowiki>\".",
+       "config-no-cli-uri": "<strong>Προειδοποίηση:</strong> Δεν καθορίστηκε <code>--scriptpath</code>, χρησιμοποιείται η προεπιλογή: <code>$1</code>.",
+       "config-using-server": "Χρησιμοποιείται το όνομα διακομιστή «<nowiki>$1</nowiki>».",
+       "config-using-uri": "Χρησιμοποιείται η διεύθυνση URL του διακομιστή «<nowiki>$1$2</nowiki>».",
+       "config-uploads-not-safe": "<strong>Προειδοποίηση:</strong> Ο προεπιλεγμένος σας κατάλογος για ανέβασμα <code>$1</code> είναι ευάλωτος σε εκτέλεση αυθαίρετων σεναρίων ενεργειών.\nΑν και το MediaWiki ελέγχει για απειλές ασφαλείας όλα τα αρχεία που ανεβαίνουν, συνιστάται ιδιαίτερα να [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security κλείσετε αυτό το κενό ασφαλείας] πριν ενεργοποιήσετε το ανέβασμα αρχείων.",
+       "config-no-cli-uploads-check": "<strong>Προειδοποίηση:</strong> Ο προεπιλεγμένος σας κατάλογος για ανέβασμα (<code>$1</code>) δεν έχει ελεγχθεί για ευπάθεια σε εκτέλεση αυθαίρετων σεναρίων ενεργειών κατά τη διάρκεια της εγκατάστασης μέσω γραμμής εντολών.",
        "config-brokenlibxml": "Το σύστημά σας έχει έναν συνδυασμό εκδόσεων της PHP και της libxml2 που είναι προβληματικός και μπορεί να προκαλέσει καταστροφή κρυμμένων στοιχείων στο MediaWiki και σε άλλες εφαρμογές ιστού.\nΑναβαθμίστε σε libxml2 2.7.3 ή μεταγενέστερη έκδοση ([https://bugs.php.net/bug.php?id=45996 bug που έχει καταχωριστεί για την PHP]).\nΗ εγκατάσταση ματαιώθηκε.",
        "config-db-type": "Τύπος βάσης δεδομένων:",
        "config-db-host": "Φιλοξενία βάσης δεδομένων:",
+       "config-db-host-help": "Εάν ο διακομιστής βάσης δεδομένων σας βρίσκεται σε διαφορετικό διακομιστή, εισαγάγετε εδώ το όνομα του κεντρικού υπολογιστή ή τη διεύθυνση IP.\n\nΕάν χρησιμοποιείτε μοιραζόμενη φιλοξενία του ιστοτόπου σας, ο πάροχος φιλοξενίας σας θα πρέπει να σας δίνει το σωστό όνομα κεντρικού υπολογιστή στην τεκμηρίωση του.\n\nΕάν εγκαθιστάτε σε διακομιστή Windows και χρησιμοποιείτε MySQL, το «localhost» μπορεί να μην λειτουργεί ως όνομα διακομιστή. Εάν δεν λειτουργεί, δοκιμάστε «127.0.0.1» ως τοπική διεύθυνση IP.\n\nΕάν χρησιμοποιείτε PostgreSQL, αφήστε αυτό το πεδίο κενό για να συνδεθείτε μέσω υποδοχής Unix.",
        "config-db-host-oracle": "Βάση δεδομένων TNS:",
        "config-db-wiki-settings": "Αναγνώριση αυτού του wiki",
        "config-db-name": "Όνομα βάσης δεδομένων:",
-       "config-db-name-help": "Επιλέξτε ένα όνομα που ταιριάζει στο  wiki σας. Δεν πρέπει να περιέχει κενά διαστήματα.\n\nΕάν χρησιμοποιείτε κοινόχρηστο web hosting, ο πάροχος φιλοξενίας είτε θα σας δώσει ένα συγκεκριμένο όνομα βάσης δεδομένων για να χρησιμοποιήσετε ή θα σας δώσει τη δυνατότητα να δημιουργήσετε βάσεις δεδομένων μέσω ενός πίνακα ελέγχου.",
+       "config-db-name-help": "Επιλέξτε όνομα που να χαρακτηρίζει το wiki σας. Δεν πρέπει να περιέχει κενά διαστήματα.\n\nΕάν χρησιμοποιείτε μοιραζόμενη φιλοξενία του ιστοτόπου σας, ο πάροχος φιλοξενίας σας είτε θα σας δίνει να χρησιμοποιήσετε ένα συγκεκριμένο όνομα βάσης δεδομένων ή θα σας δίνει τη δυνατότητα να δημιουργείτε βάσεις δεδομένων μέσω κάποιου πίνακα ελέγχου.",
        "config-db-name-oracle": "Σχήμα βάσης δεδομένων:",
        "config-db-install-account": "Λογαριασμός χρήστη για την εγκατάσταση",
        "config-db-username": "Όνομα χρήστη βάσης δεδομένων:",
-       "config-db-password": "Κωδικός πρόσβασης βάσης δεδομένων:",
+       "config-db-password": "Συνθηματικό βάσης δεδομένων:",
+       "config-db-install-username": "Εισαγάγετε το όνομα χρήστη που θα χρησιμοποιηθεί για τη σύνδεση στη βάση δεδομένων κατά τη διάρκεια της διαδικασίας εγκατάστασης.\nΑυτό δεν είναι το όνομα χρήστη του λογαριασμού του MediaWiki· αυτό είναι το όνομα χρήστη για τη βάση δεδομένων σας.",
+       "config-db-install-password": "Εισαγάγετε το συνθηματικό που θα χρησιμοποιηθεί για τη σύνδεση στη βάση δεδομένων κατά τη διάρκεια της διαδικασίας εγκατάστασης.\nΑυτό δεν είναι το συνθηματικό του λογαριασμού του MediaWiki· αυτό είναι το συνθηματικό για τη βάση δεδομένων σας.",
        "config-db-install-help": "Εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασης που θα χρησιμοποιηθεί για τη σύνδεση με τη βάση δεδομένων κατά τη διάρκεια της διαδικασίας εγκατάστασης.",
        "config-db-account-lock": "Χρησιμοποιήστε το ίδιο όνομα χρήστη και συνθηματικό κατά τη διάρκεια της κανονικής λειτουργίας",
        "config-db-wiki-account": "Λογαριασμός χρήστη για κανονική λειτουργία",
        "config-db-wiki-help": "Πληκτρολογήστε το όνομα χρήστη και τον κωδικό πρόσβασης που θα χρησιμοποιηθεί για τη σύνδεση με τη βάση δεδομένων κατά τη διάρκεια της κανονικής λειτουργίας του wiki.\nΕάν ο λογαριασμός δεν υπάρχει και o λογαριασμός εγκατάστασης  έχει επαρκή δικαιώματα, αυτός ο λογαριασμός χρήστη θα δημιουργηθεί με τα ελάχιστα δικαιώματα που απαιτούνται για τη λειτουργία του wiki.",
        "config-db-prefix": "Πρόθεμα πίνακα βάσης δεδομένων:",
-       "config-db-prefix-help": "Εάν χρειάζεται να μοιραστείτε μία βάση δεδομένων μεταξύ πολλαπλών wikis, ή μεταξύ του MediaWiki και μιας άλλης web εφαρμογής, μπορείτε να προσθέσετε ένα πρόθεμα σε όλα τα ονόματα πίνακα για να αποφεύγονται οι διενέξεις.\nΜην χρησιμοποιείτε κενά διαστήματα.\n\nΑυτό το πεδίο αφήνεται συνήθως κενό.",
+       "config-db-prefix-help": "Εάν χρειάζεται να μοιραστείτε μία βάση δεδομένων μεταξύ πολλαπλών wiki, ή μεταξύ του MediaWiki και μιας άλλης εφαρμογής Ιστού, μπορείτε να προσθέσετε ένα πρόθεμα σε όλα τα ονόματα πινάκων για να αποφεύγονται οι διενέξεις.\nΜην χρησιμοποιείτε κενά διαστήματα.\n\nΑυτό το πεδίο αφήνεται συνήθως κενό.",
        "config-mysql-old": "Απαιτείται Microsoft SQL Server $1 ή νεότερο. Εσείς έχετε $2.",
        "config-db-port": "Θύρα βάσης δεδομένων:",
        "config-db-schema": "Σχήμα για MediaWiki:",
        "config-type-oracle": "Oracle",
        "config-type-mssql": "Microsoft SQL Server",
        "config-support-info": "To MediaWiki υποστηρίζει τα ακόλουθα συστήματα βάσεων δεδομένων:\n\n$1\n\nΑν δεν εμφανίζεται παρακάτω το σύστημα βάσης δεδομένων που θέλετε να χρησιμοποιήσετε, τότε ακολουθήστε τις οδηγίες στον παραπάνω σύνδεσμο για να ενεργοποιήσετε την υποστήριξη.",
+       "config-dbsupport-mysql": "* Η [{{int:version-db-mysql-url}} MySQL] είναι ο πρωταρχικός στόχος για το MediaWiki και υποστηρίζεται καλύτερα. Το MediaWiki συνεργάζεται επίσης με τη [{{int:version-db-mariadb-url}} MariaDB] και το [{{int:version-db-percona-url}} διακομιστή Percona], που είναι όλα συμβατά με MySQL. ([http://www.php.net/manual/en/mysqli.installation.php Πώς να μεταγλωττίσετε την PHP με υποστήριξη MySQL])",
+       "config-dbsupport-postgres": "* Η [{{int:version-db-postgres-url}} PostgreSQL] είναι δημοφιλές σύστημα βάσης δεδομένων ανοικτού κώδικα ως εναλλακτική της MySQL. ([http://www.php.net/manual/en/pgsql.installation.php Πώς να μεταγλωττίσετε την PHP με υποστήριξη PostgreSQL])",
+       "config-dbsupport-sqlite": "* Η [{{int:version-db-sqlite-url}} SQLite] είναι ένα ελαφρύ σύστημα βάσης δεδομένων που υποστηρίζεται πολύ καλά. ([http://www.php.net/manual/en/pdo.installation.php Πώς να μεταγλωττίσετε την PHP με υποστήριξη SQLite], χρησιμοποιεί PDO)",
+       "config-dbsupport-oracle": "* Η [{{int:version-db-oracle-url}} Oracle] είναι εμπορική βάση δεδομένων για επιχειρήσεις. ([http://www.php.net/manual/en/oci8.installation.php Πώς να μεταγλωττίσετε την PHP με υποστήριξη OCI8])",
+       "config-dbsupport-mssql": "* Ο [{{int:version-db-mssql-url}} Microsoft SQL Server] είναι εμπορική βάση δεδομένων για επιχειρήσεις που λειτουργεί σε Windows. ([http://www.php.net/manual/en/sqlsrv.installation.php Πώς να μεταγλωττίσετε την PHP με υποστήριξη SQLSRV])",
        "config-header-mysql": "Ρυθμίσεις MySQL",
        "config-header-postgres": "Ρυθμίσεις PostgreSQL",
        "config-header-sqlite": "Ρυθμίσεις SQLite",
        "config-sqlite-cant-create-db": "Δεν ήταν δυνατή η δημιουργία του αρχείου βάσης δεδομένων <code>$1</code>.",
        "config-upgrade-done-no-regenerate": "Η αναβάθμιση ολοκληρώθηκε.\n\nΜπορείτε τώρα να [$1 ξεκινήσετε να χρησιμοποιείτε το wiki σας].",
        "config-regenerate": "Αναδημιουργία LocalSettings.php →",
-       "config-db-web-account": "Î\9bογαÏ\81ιαÏ\83μÏ\8cÏ\82 Î²Î¬Ï\83ηÏ\82 Î´ÎµÎ´Î¿Î¼Î­Î½Ï\89ν Î³Î¹Î± Ï\80Ï\81Ï\8cÏ\83βαÏ\83η Î¹στού",
+       "config-db-web-account": "Î\9bογαÏ\81ιαÏ\83μÏ\8cÏ\82 Î²Î¬Ï\83ηÏ\82 Î´ÎµÎ´Î¿Î¼Î­Î½Ï\89ν Î³Î¹Î± Ï\80Ï\81Ï\8cÏ\83βαÏ\83η Î\99στού",
        "config-db-web-account-same": "Χρήση του ίδιου λογαριασμού για την εγκατάσταση",
+       "config-db-web-create": "Να δημιουργηθεί ο λογαριασμός αν δεν υπάρχει ήδη",
        "config-mysql-engine": "Μηχανή αποθήκευσης:",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
+       "config-mysql-engine-help": "Το <strong>InnoDB</strong> είναι σχεδόν πάντα η καλύτερη επιλογή, αφού έχει καλή υποστήριξη ταυτόχρονης λειτουργίας.\n\nΤο <strong>MyISAM</strong> μπορεί να είναι ταχύτερο σε εγκαταστάσεις του ενός χρήστη ή μόνο ανάγνωσης. \nΟι βάσεις δεδομένων MyISAM τείνουν να φθείρονται συχνότερα από τις βάσεις δεδομένων InnoDB.",
        "config-mysql-charset": "Σύνολο χαρακτήρων βάσης δεδομένων:",
        "config-mysql-binary": "Δυαδικό",
        "config-mysql-utf8": "UTF-8",
+       "config-mysql-charset-help": "Σε <strong>λειτουργία δυαδικού</strong>, το MediaWiki αποθηκεύει κείμενο UTF-8 στη βάση δεδομένων σε δυαδικά πεδία.\nΑυτό είναι πιο αποτελεσματικό από τη λειτουργία UTF-8 της MySQL και σας επιτρέπει να χρησιμοποιείτε ολόκληρο το φάσμα των χαρακτήρων Unicode.\n\nΣε <strong>λειτουργία UTF-8</strong>, η MySQL θα γνωρίζει σε ποιο σύνολο χαρακτήρων ανήκουν τα δεδομένα σας και θα μπορεί να τα παρουσιάζει και να τα μετατρέπει κατάλληλα, αλλά δεν θα σας επιτρέπει να αποθηκεύετε χαρακτήρες πάνω από το [https://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes βασικό πολύγλωσσο επίπεδο].",
        "config-mssql-auth": "Τύπος ελέγχου ταυτότητας:",
        "config-mssql-sqlauth": "Έλεγχος ταυτότητας του SQL Server",
        "config-mssql-windowsauth": "Έλεγχος ταυτότητας των Windows",
        "config-ns-site-name": "Ίδιο με το όνομα του wiki: $1",
        "config-ns-other": "Άλλο (προσδιορίστε)",
        "config-ns-other-default": "ΤοWikiμου",
+       "config-project-namespace-help": "Ακολουθώντας το παράδειγμα της Βικιπαίδειας, πολλά wiki διατηρούν τις σελίδες πολιτικής τους χωριστά από τις σελίδες περιεχομένου τους, σε έναν '''ονοματοχώρο έργου'''.\nΌλοι οι τίτλοι σελίδων σε αυτόν τον ονοματοχώρο ξεκινούν με συγκεκριμένο πρόθεμα, το οποίο μπορείτε να ορίσετε εδώ.\nΣυνήθως, αυτό το πρόθεμα παράγεται από το όνομα του wiki, αλλά δεν μπορεί να περιέχει χαρακτήρες στίξης όπως «#» ή «:».",
        "config-admin-box": "Λογαριασμός διαχειριστή",
        "config-admin-name": "Το όνομα χρήστη σας:",
        "config-admin-password": "Κωδικός πρόσβασης:",
        "config-admin-password-confirm": "Επανάληψη κωδικού πρόσβασης:",
+       "config-admin-help": "Εισαγάγετε το προτιμώμενο όνομα χρήστη εδώ, για παράδειγμα «Γιάννης Ιστολόγιος». \nΑυτό είναι το όνομα που θα χρησιμοποιείτε για να συνδέεστε στο wiki.",
        "config-admin-name-blank": "Εισαγάγετε όνομα χρήστη διαχειριστή.",
        "config-admin-name-invalid": "Το συγκεκριμένο όνομα χρήστη  \"<nowiki>$1</nowiki>\" δεν είναι έγκυρο. Δώστε ένα διαφορετικό όνομα χρήστη.",
        "config-admin-password-blank": "Εισαγάγετε κωδικό για το λογαριασμό διαχειριστή.",
        "config-admin-password-mismatch": "Οι δύο κωδικοί πρόσβασης που εισηγάγατε δεν ταιριάζουν.",
        "config-admin-email": "Διεύθυνση ηλεκτρονικού ταχυδρομείου:",
+       "config-admin-email-help": "Εισαγάγετε μια διεύθυνση ηλεκτρονικού ταχυδρομείου εδώ για να μπορείτε να λαμβάνετε μηνύματα ηλεκτρονικού ταχυδρομείου από άλλους χρήστες στο wiki, να επαναφέρετε το συνθηματικό σας και να ενημερώνεστε για τις αλλαγές σε σελίδες που βρίσκονται στη λίστα παρακολούθησής σας. Μπορείτε να αφήσετε αυτό το πεδίο κενό.",
+       "config-admin-error-user": "Εσωτερικό σφάλμα κατά τη δημιουργία διαχειριστή με το όνομα «<nowiki>$1</nowiki>».",
+       "config-admin-error-password": "Εσωτερικό σφάλμα κατά τον καθορισμό συνθηματικού για το διαχειριστή «<nowiki>$1</nowiki>»: <pre>$2</pre>",
        "config-admin-error-bademail": "Έχετε εισαγάγει μη έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου.",
+       "config-subscribe": "Εγγραφή στη [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce λίστα αλληλογραφίας ανακοινώσεων σχετικά με νέες κυκλοφορίες].",
+       "config-subscribe-help": "Πρόκειται για μια λίστα αλληλογραφίας χαμηλού όγκου που χρησιμοποιείται για ανακοινώσεις σχετικά με νέες κυκλοφορίες, συμπεριλαμβανομένων σημαντικών ανακοινώσεων ασφαλείας. \nΚαλό θα ήταν να εγγραφείτε σε αυτήν και να ενημερώνετε την εγκατάσταση του MediaWiki όταν βγαίνουν νέες εκδόσεις.",
+       "config-pingback": "Διαμοιρασμός δεδομένων σχετικά με αυτήν την εγκατάσταση με τους προγραμματιστές του MediaWiki.",
+       "config-pingback-help": "Αν επιλέξετε αυτή την επιλογή, το MediaWiki θα στέλνει περιοδικά στο https://www.mediawiki.org βασικά δεδομένα σχετικά με αυτήν την υλοποίηση του MediaWiki. Αυτά τα δεδομένα περιλαμβάνουν, για παράδειγμα, τον τύπο του συστήματος, την έκδοση PHP και την επιλεγμένη βάση δεδομένων. Το Ίδρυμα Wikimedia μοιράζεται αυτά τα δεδομένα με τους προγραμματιστές του MediaWiki για να καθοδηγήσει τις μελλοντικές προσπάθειες ανάπτυξης. θα αποσταλούν τα ακόλουθα δεδομένα σχετικά με το σύστημά σας:\n<pre>$1</pre>",
+       "config-almost-done": "Έχετε σχεδόν τελειώσει!\nΤώρα μπορείτε να παραλείψετε την υπόλοιπη διαμόρφωση και να εγκαταστήσετε το wiki αμέσως τώρα.",
        "config-optional-continue": "Να ερωτηθώ περισσότερες ερωτήσεις.",
-       "config-optional-skip": "Î\92αÏ\81έθηκα Î®Î´Î·, Î±Ï\80λά ÎµÎ³ÎºÎ±Ï\84αÏ\83Ï\84ήÏ\83Ï\84ε το wiki.",
+       "config-optional-skip": "Î\92αÏ\81έθηκα Î®Î´Î·, Î½Î± ÎµÎ³ÎºÎ±Ï\84αÏ\83Ï\84αθεί Î±Ï\80λά το wiki.",
        "config-profile": "Προφίλ δικαιωμάτων χρήστη:",
-       "config-profile-wiki": "Ανοικτό wiki",
-       "config-profile-no-anon": "Απαιτείται η δημιουργία λογαριασμού",
-       "config-profile-fishbowl": "Εξουσιοδοτημένοι συντάκτες μόνο",
-       "config-profile-private": "Ιδιωτικό wiki",
+       "config-profile-wiki": "ανοικτό wiki",
+       "config-profile-no-anon": "απαιτούμενη δημιουργία λογαριασμού",
+       "config-profile-fishbowl": "εξουσιοδοτημένοι συντάκτες μόνο",
+       "config-profile-private": "ιδιωτικό wiki",
+       "config-profile-help": "Τα wiki λειτουργούν καλύτερα όταν αφήνετε να τα επεξεργαστούν όσο το δυνατόν περισσότεροι άνθρωποι.\nΣτο MediaWiki, είναι εύκολο να ελέγξετε τις πρόσφατες αλλαγές και να επαναφέρετε τυχόν ζημιές που προκαλούνται από αρχάριους ή κακόβουλους χρήστες.\n\nΩστόσο, πολλοί έχουν βρει το MediaWiki χρήσιμο σε ένα ευρύ φάσμα ρόλων και μερικές φορές δεν είναι εύκολο να πείσουμε τους πάντες για τα οφέλη του τρόπου του wiki.\nΥπάρχει λοιπόν επιλογή.\n\nΤο μοντέλο <strong>{{int:config-profile-wiki}}</strong> επιτρέπει σε οποιονδήποτε να επεξεργαστεί, χωρίς καν να συνδεθεί. Ένα wiki με <strong>{{int:config-profile-no-anon}}</strong> παρέχει μεγαλύτερη λογοδοσία, αλλά μπορεί να αποτρέψει τους περιστασιακούς συνεισφέροντες.\n\nΤο σενάριο <strong>{{int:config-profile-fishbowl}}</strong> επιτρέπει στους εγκεκριμένους χρήστες να επεξεργαστούν, αλλά το κοινό μπορεί να δει τις σελίδες, συμπεριλαμβανομένου του ιστορικού. \nΈνα <strong>{{int:config-profile-private}}</strong> επιτρέπει μόνο στους εγκεκριμένους χρήστες να προβάλλουν σελίδες, και μόνο στους ίδιους να επεξεργαστούν.\n\nΠιο πολύπλοκες ρυθμίσεις δικαιωμάτων χρήστη είναι διαθέσιμες μετά την εγκατάσταση, δείτε τη [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights σχετική μη αυτόματη καταχώριση].",
        "config-license": "Πνευματικά δικαιώματα και άδεια χρήσης:",
        "config-license-none": "Χωρίς άδεια χρήσης στο υποσέλιδο",
        "config-license-cc-by-sa": "Creative Commons Αναφορά Δημιουργού-Παρόμοια Διανομή",
        "config-license-gfdl": "Αδειοδότηση Ελεύθερης Τεκμηρίωσης GNU 1.3 ή μεταγενέστερη",
        "config-license-pd": "Κοινό Κτήμα",
        "config-license-cc-choose": "Επιλέξτε μια προσαρμοσμένη άδεια Creative Commons",
+       "config-license-help": "Πολλά δημόσια wiki βάζουν όλες τις συνεισφορές υπό [https://freedomdefined.org/Definition ελεύθερη άδεια].\nΑυτό βοηθά να δημιουργηθεί μια αίσθηση κοινοτικής ιδιοκτησίας και ενθαρρύνει τη μακροχρόνια συνεισφορά.\nΔεν είναι γενικά απαραίτητο για ένα ιδιωτικό ή εταιρικό wiki.\n\nΑν θέλετε να μπορείτε να χρησιμοποιείτε κείμενο από τη Βικιπαίδεια και αν θέλετε να μπορεί η Βικιπαίδεια να δεχτεί κείμενο που αντιγράφεται από το wiki σας, θα πρέπει να επιλέξετε <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nΗ Βικιπαίδεια χρησιμοποιούσε παλιά την Άδεια Ελεύθερης Τεκμηρίωσης GNU (GFDL).\nΗ GFDL είναι μια έγκυρη άδεια, αλλά είναι δύσκολο να κατανοηθεί.\nΕίναι επίσης δύσκολο να επαναχρησιμοποιηθεί το περιεχόμενο που έχει χορηγηθεί βάσει της GFDL.",
        "config-email-settings": "Ρυθμίσεις ηλεκτρονικού ταχυδρομείου",
+       "config-enable-email": "Ενεργοποίηση εξερχόμενου ηλεκτρονικού ταχυδρομείου",
+       "config-enable-email-help": "Αν θέλετε να λειτουργήσει το ηλεκτρονικό ταχυδρομείο, οι [http://www.php.net/manual/en/mail.configuration.php ρυθμίσεις αλληλογραφίας της PHP] πρέπει να ρυθμιστούν σωστά.\nΑν δεν θέλετε καθόλου λειτουργίες ηλεκτρονικού ταχυδρομείου, μπορείτε να τις απενεργοποιήσετε εδώ.",
        "config-email-user": "Ενεργοποίηση ηλεκτρονικού ταχυδρομείου από χρήστη σε χρήστη",
+       "config-email-user-help": "Να επιτρέπεται σε όλους τους χρήστες να στέλνουν ο ένας στον άλλον μηνύματα ηλεκτρονικού ταχυδρομείου εάν το έχουν ενεργοποιήσει στις προτιμήσεις τους.",
        "config-email-usertalk": "Ενεργοποίηση ειδοποίησης σελίδας συζήτησης χρήστη",
+       "config-email-usertalk-help": "Να επιτρέπεται στους χρήστες να λαμβάνουν ειδοποιήσεις σχετικά με τις αλλαγές στις σελίδες συζήτησης χρήστη, εάν το έχουν ενεργοποιήσει στις προτιμήσεις τους.",
        "config-email-watchlist": "Ενεργοποίηση ειδοποίησης λίστας παρακολούθησης",
-       "config-email-watchlist-help": "Î\95Ï\80ιÏ\84Ï\81έÏ\88Ï\84ε στους χρήστες να λαμβάνουν ειδοποιήσεις για τις σελίδες που παρακολουθούν αν το έχουν ενεργοποιήσει στις προτιμήσεις τους.",
+       "config-email-watchlist-help": "Î\9dα ÎµÏ\80ιÏ\84Ï\81έÏ\80εÏ\84αι στους χρήστες να λαμβάνουν ειδοποιήσεις για τις σελίδες που παρακολουθούν αν το έχουν ενεργοποιήσει στις προτιμήσεις τους.",
        "config-email-auth": "Ενεργοποίηση ταυτοποίησης μέσω ηλεκτρονικού ταχυδρομείου",
+       "config-email-auth-help": "Εάν αυτή η επιλογή είναι ενεργοποιημένη, οι χρήστες πρέπει να επιβεβαιώσουν τη διεύθυνση ηλεκτρονικού ταχυδρομείου τους χρησιμοποιώντας ένα σύνδεσμο που τους αποστέλλεται όποτε την καθορίζουν ή την αλλάζουν.\nΜόνο οι ταυτοποιημένες διευθύνσεις ηλεκτρονικού ταχυδρομείου μπορούν να λαμβάνουν μηνύματα ηλεκτρονικού ταχυδρομείου από άλλους χρήστες ή να αλλάζουν μηνύματα ειδοποίησης.\nΟ καθορισμός αυτής της επιλογής <strong>συνιστάται</strong> για δημόσια wiki λόγω πιθανής κατάχρησης των λειτουργιών του ηλεκτρονικού ταχυδρομείου.",
        "config-email-sender": "Διεύθυνση ηλεκτρονικού ταχυδρομείου επιστροφής:",
+       "config-email-sender-help": "Εισαγάγετε τη διεύθυνση ηλεκτρονικού ταχυδρομείου που θα χρησιμοποιηθεί ως διεύθυνση επιστροφής στο εξερχόμενο ηλεκτρονικό ταχυδρομείο.\nΕκεί είναι που θα στέλνονται οι επιστροφές.\nΠολλοί διακομιστές αλληλογραφίας απαιτούν τουλάχιστον το τμήμα ονόματος τομέα να είναι έγκυρο.",
        "config-upload-settings": "Ανέβασμα εικόνων και άλλων αρχείων",
-       "config-upload-enable": "Î\95νεÏ\81γοÏ\80οιήÏ\83Ï\84ε Ï\84ο Î±Î½Î­Î²Î±Ï\83μα αρχείων",
-       "config-upload-help": "Το ανέβασμα αρχείων εκθέτει πιθανώς το διακομιστή σας σε κινδύνους ασφαλείας.\nΓια περισσότερες πληροφορίες, διαβάστε την [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security ενότητα περί ασφάλειας] στο εγχειρίδιο.\n\nΓια να ενεργοποιήσετε το ανέβασμα αρχείων, αλλάξτε την κατάσταση του υποκαταλόγου <code>εικόνες</code> που βρίσκεται κάτω από τον ριζικό κατάλογο του MediaWiki έτσι ώστε ο διακομιστής ιστού να μπορεί να γράψει σε αυτόν.\nΣτη συνέχεια ενεργοποιήσετε αυτή την επιλογή.",
+       "config-upload-enable": "Î\95νεÏ\81γοÏ\80οίηÏ\83η Î±Î½ÎµÎ²Î¬Ï\83μαÏ\84οÏ\82 αρχείων",
+       "config-upload-help": "Το ανέβασμα αρχείων εκθέτει πιθανώς το διακομιστή σας σε κινδύνους ασφαλείας.\nΓια περισσότερες πληροφορίες, διαβάστε την [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security ενότητα περί ασφάλειας] στο εγχειρίδιο.\n\nΓια να ενεργοποιήσετε το ανέβασμα αρχείων, αλλάξτε την κατάσταση του υποκαταλόγου <code>images</code> που βρίσκεται κάτω από τον ριζικό κατάλογο του MediaWiki έτσι ώστε ο διακομιστής Ιστού να μπορεί να γράψει σε αυτόν.\nΣτη συνέχεια ενεργοποιήσετε αυτή την επιλογή.",
        "config-upload-deleted": "Καταλόγος για διαγραφέντα αρχεία:",
+       "config-upload-deleted-help": "Επιλέξτε έναν κατάλογο στον οποίο να αρχειοθετείτε τα διαγραμμένα αρχεία.\nΙδανικά, αυτό δεν θα πρέπει να είναι προσβάσιμο από τον Ιστό.",
        "config-logo": "Διεύθυνση URL λογότυπου:",
+       "config-logo-help": "Το προεπιλεγμένο θέμα εμφάνισης του MediaWiki περιλαμβάνει χώρο για λογότυπο 135x160 εικονοστοιχείων πάνω από το μενού της πλαϊνής μπάρας. Ανεβάστε μια εικόνα με το κατάλληλο μέγεθος και εισαγάγετε τη διεύθυνση URL εδώ.\n\nΜπορείτε να χρησιμοποιήσετε τα <code>$wgStylePath</code> ή <code>$wgScriptPath</code> εάν το λογότυπό σας είναι σχετικό με αυτές τις διαδρομές.\n\nΕάν δεν θέλετε λογότυπο, αφήστε αυτό το πλαίσιο κενό.",
        "config-instantcommons": "Ενεργοποίηση Instant Commons",
+       "config-instantcommons-help": "Τα [https://www.mediawiki.org/wiki/InstantCommons Instant Commons] είναι ένα χαρακτηριστικό που επιτρέπει στα wiki να χρησιμοποιούν εικόνες, ήχους και άλλα μέσα που βρίσκονται στον ιστότοπο των Wikimedia Commons. Για να γίνει αυτό, το MediaWiki απαιτεί πρόσβαση στο Διαδίκτυο.\n\nΓια περισσότερες πληροφορίες σχετικά με αυτήν τη δυνατότητα, συμπεριλαμβανομένων των οδηγιών για τον τρόπο ρύθμισης της για άλλα wiki από τα Wikimedia Commons, συμβουλευτείτε [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos το εγχειρίδιο].",
        "config-cc-error": "Ο επιλογέας αδειών  Creative Commons επιλογέα δεν έδωσε κανένα αποτέλεσμα.\nΕισάγετε το όνομα της άδειας χειροκίνητα.",
        "config-cc-again": "Επιλέξτε ξανά...",
        "config-cc-not-chosen": "Επιλέξτε την  άδεια Creative Commons που θέλετε και κάντε κλικ στο κουμπί \"proceed\".",
        "config-advanced-settings": "Προηγμένες ρυθμίσεις παραμέτρων",
        "config-cache-options": "Ρυθμίσεις για την προσωρινή αποθήκευση αντικειμένου:",
+       "config-cache-help": "Η προσωρινή αποθήκευση αντικειμένων χρησιμοποιείται για τη βελτίωση της ταχύτητας του MediaWiki με προσωρινή αποθήκευση των δεδομένων που χρησιμοποιούνται συχνά.\nΜεσαίοι και μεγάλοι ιστότοποι ενθαρρύνονται ιδιαίτερα να το ενεργοποιήσουν αυτό και μικροί ιστότοποι θα δουν οφέλη επίσης.",
+       "config-cache-none": "Χωρίς προσωρινή αποθήκευση (δεν καταργείται καμία λειτουργία, αλλά η ταχύτητα μπορεί να επηρεαστεί σε μεγαλύτερους ιστότοπους wiki)",
+       "config-cache-accel": "Προσωρινή αποθήκευση αντικειμένων PHP (APC, APCu ή WinCache)",
+       "config-cache-memcached": "Χρήση Memcached (απαιτεί πρόσθετη ρύθμιση και διαμόρφωση)",
+       "config-memcached-servers": "Διακομιστές Memcached:",
        "config-memcache-badip": "Έχετε εισάγει μια μη έγκυρη διεύθυνση IP για το Memcached: $1.",
        "config-memcache-noport": "Δεν καθορίσατε μια θύρα για να χρησιμοποιήσετε για το Memcached server: $1.\nΑν δεν ξέρετε τη θύρα, η προεπιλογή είναι 11211.",
        "config-memcache-badport": "Οι Memcached αριθμοί θύρας θα πρέπει να είναι μεταξύ $1 και $2.",
        "config-install-mainpage-exists": "Κύρια σελίδα ήδη υπάρχει, παρακάμπτεται",
        "config-install-extension-tables": "Γίνεται δημιουργία πινάκων για τις εγκατεστημένες επεκτάσεις",
        "config-install-mainpage-failed": "Δεν ήταν δυνατή η εισαγωγή της αρχικής σελίδας: $1",
-       "config-install-done": "<strong>Συγχαρητήρια!</strong>\nΈχετε εγκαταστήσει με επιτυχία το MediaWiki.\n\nΤο πρόγραμμα εγκατάστασης έχει δημιουργήσει το  αρχείο   <code>LocalSettings.php</code>.\nΠεριέχει όλες τις ρυθμίσεις παραμέτρων σας.\n\nΘα πρέπει να το κατεβάσετε και να το βάλετε στη βάση της εγκατάστασης του  wiki σας (στον ίδιο κατάλογο όπως το  index.php). Η λήψη θα αρχίσει αυτόματα.\n\nΑν η λήψη δεν προσφέφθηκε, ή αν την ακυρώσατε, μπορείτε να επανεκκινήσετε τη λήψη κάνοντας κλικ στο παρακάτω link:\n\n$3\n\n<strong>Σημείωση:</strong> Εάν δεν το κάνετε αυτό τώρα, αυτό το  αρχείο ρύθμισης παραμέτρων δεν θα είναι διαθέσιμο για σας αργότερα, αν βγείτε από την εγκατάσταση, χωρίς να το κατεβάσετε!\n\nΌταν γίνει αυτό, μπορείτε να <strong>[$2 μπείτε στο wiki σας]</strong>.",
+       "config-install-done": "<strong>Συγχαρητήρια!</strong>\nΈχετε εγκαταστήσει το MediaWiki.\n\nΤο πρόγραμμα εγκατάστασης έχει δημιουργήσει το αρχείο <code>LocalSettings.php</code>.\nΠεριέχει όλες τις ρυθμίσεις παραμέτρων σας.\n\nΘα πρέπει να το κατεβάσετε και να το βάλετε στη βάση της εγκατάστασης του wiki σας (στον ίδιο κατάλογο με το index.php). Η λήψη θα πρέπει να έχει ξεκινήσει αυτόματα.\n\nΕάν δεν σας προτάθηκε λήψη, ή αν την ακυρώσατε, μπορείτε να επανεκκινήσετε τη λήψη κάνοντας κλικ στο σύνδεσμο ακριβώς από κάτω:\n\n$3\n\n<strong>Σημείωση:</strong> Εάν δεν το κάνετε αυτό τώρα, αυτό το αρχείο ρύθμισης παραμέτρων δεν θα είναι διαθέσιμο για σας αργότερα αν βγείτε από την εγκατάσταση χωρίς να το κατεβάσετε!\n\nΌταν θα έχει γίνει αυτό, μπορείτε να <strong>[$2 μπείτε στο wiki σας]</strong>.",
        "config-install-success": " Το σύστημα της MediaWiki έχει εγκατασταθεί με επιτυχία. Μπορείτε τώρα να επισκεφθείτε το \n <$1$2> για να δείτε το wiki σας.\nΑν έχετε ερωτήσεις, ελέγξετε την λίστα με τις πιο συχνές ερωτήσεις:\n<https://www.mediawiki.org/wiki/Manual:FAQ> ή χρησιμοποιήστε ένα από τα φόρουμ υποστήριξης που είναι συνδεδεμένα σε αυτήν την σελίδα.",
        "config-download-localsettings": "Λήψη του <code>LocalSettings.php</code>",
        "config-help": "βοήθεια",
        "config-help-tooltip": "κλικ για ανάπτυξη",
        "config-nofile": "Το αρχείο «$1» δεν μπορεί να βρεθεί. Μήπως έχει διαγραφεί;",
-       "config-extension-link": "Γνωρίζατε ότι το wiki σας υποστηρίζει [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions επεκτάσεις];\n\nΜπορείτε να περιηγηθείτε [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category επεκτάσεις ανά κατηγορία] ή το [https://www.mediawiki.org/wiki/Extension_Matrix Extension Matrix] για να δείτε την πλήρη λίστα των επεκτάσεων.",
+       "config-extension-link": "Γνωρίζατε ότι το wiki σας υποστηρίζει [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions επεκτάσεις];\n\nΜπορείτε να περιηγηθείτε στις [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category επεκτάσεις ανά κατηγορία] ή στον [https://www.mediawiki.org/wiki/Extension_Matrix πίνακα επεκτάσεων] για να δείτε την πλήρη λίστα των επεκτάσεων.",
        "config-skins-screenshots": "$1 (στιγμιότυπα: $2)",
        "config-screenshot": "στιγμιότυπο",
        "mainpagetext": "<strong>To MediaWiki εγκαταστάθηκε.</strong>",
-       "mainpagedocfooter": "Συμβουλευτείτε το [https://meta.wikimedia.org/wiki/Help:Contents Οδηγός Χρήστη] για πληροφορίες σχετικά με το λογισμικό wiki.\n\n== Ξεκινώντας ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings ρυθμίσεις Διαμόρφωσης λίστα]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ το MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce το MediaWiki απελευθέρωση mailing list]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Έχουν MediaWiki για τη γλώσσα σας]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Μάθετε πώς να καταπολεμήσετε το spam στο wiki σας]"
+       "mainpagedocfooter": "Συμβουλευτείτε τον [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents οδηγό χρήστη] για πληροφορίες σχετικά με το λογισμικό wiki.\n\n== Ξεκινώντας ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Λίστα ρυθμίσεων διαμόρφωσης]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ\n Συχνές ερωτήσεις για το MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Λίστα αλληλογραφίας νέων κυκλοφοριών του MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Μεταφράστε το MediaWiki στη γλώσσα σας]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Μάθετε πώς να καταπολεμήσετε το ανεπιθύμητο περιεχόμενο στο wiki σας]"
 }
index 1609492..433b567 100644 (file)
        "config-ns-invalid": "O espaço nominal especificado \"<nowiki>$1</nowiki>\" é inválido.\nIntroduza um espaço nominal de projeto diferente.",
        "config-ns-conflict": "O espaço nominal que especificou, \"<nowiki>$1</nowiki>\", cria um conflito com um dos espaços nominais padrão do MediaWiki.\nEspecifique um espaço nominal do projeto diferente.",
        "config-admin-box": "Conta de administrador",
-       "config-admin-name": "Seu nome de utilizador:",
+       "config-admin-name": "O seu nome de utilizador:",
        "config-admin-password": "Palavra-passe:",
        "config-admin-password-confirm": "Repita a palavra-passe:",
        "config-admin-help": "Introduza aqui o seu nome de utilizador preferido, por exemplo, \"João Beltrão\".\nEste é o nome que irá utilizar para entrar na wiki.",
index ef2953e..f26b985 100644 (file)
@@ -350,10 +350,18 @@ class DBConnRef implements IDatabase {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
 
+       public function buildSubstring( $input, $startPosition, $length = null ) {
+               return $this->__call( __FUNCTION__, func_get_args() );
+       }
+
        public function buildStringCast( $field ) {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
 
+       public function buildIntegerCast( $field ) {
+               return $this->__call( __FUNCTION__, func_get_args() );
+       }
+
        public function databasesAreIndependent() {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
index 8ccccc3..2c59963 100644 (file)
@@ -1854,10 +1854,48 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                return '(' . $this->selectSQLText( $table, $fld, $conds, null, [], $join_conds ) . ')';
        }
 
+       public function buildSubstring( $input, $startPosition, $length = null ) {
+               $this->assertBuildSubstringParams( $startPosition, $length );
+               $functionBody = "$input FROM $startPosition";
+               if ( $length !== null ) {
+                       $functionBody .= " FOR $length";
+               }
+               return 'SUBSTRING(' . $functionBody . ')';
+       }
+
+       /**
+        * Check type and bounds for parameters to self::buildSubstring()
+        *
+        * All supported databases have substring functions that behave the same for
+        * positive $startPosition and non-negative $length, but behaviors differ when
+        * given 0 or negative $startPosition or negative $length. The simplest
+        * solution to that is to just forbid those values.
+        *
+        * @param int $startPosition
+        * @param int|null $length
+        * @since 1.31
+        */
+       protected function assertBuildSubstringParams( $startPosition, $length ) {
+               if ( !is_int( $startPosition ) || $startPosition <= 0 ) {
+                       throw new InvalidArgumentException(
+                               '$startPosition must be a positive integer'
+                       );
+               }
+               if ( !( is_int( $length ) && $length >= 0 || $length === null ) ) {
+                       throw new InvalidArgumentException(
+                               '$length must be null or an integer greater than or equal to 0'
+                       );
+               }
+       }
+
        public function buildStringCast( $field ) {
                return $field;
        }
 
+       public function buildIntegerCast( $field ) {
+               return 'CAST( ' . $field . ' AS INTEGER )';
+       }
+
        public function databasesAreIndependent() {
                return false;
        }
index 771e2e5..b6428c7 100644 (file)
@@ -1225,6 +1225,19 @@ class DatabaseMssql extends Database {
                return $sql;
        }
 
+       public function buildSubstring( $input, $startPosition, $length = null ) {
+               $this->assertBuildSubstringParams( $startPosition, $length );
+               if ( $length === null ) {
+                       /**
+                        * MSSQL doesn't allow an empty length parameter, so when we don't want to limit the
+                        * length returned use the default maximum size of text.
+                        * @see https://docs.microsoft.com/en-us/sql/t-sql/statements/set-textsize-transact-sql
+                        */
+                       $length = 2147483647;
+               }
+               return 'SUBSTRING(' . implode( ',', [ $input, $startPosition, $length ] ) . ')';
+       }
+
        /**
         * Returns an associative array for fields that are of type varbinary, binary, or image
         * $table can be either a raw table name or passed through tableName() first
index a5220b9..8fb8db5 100644 (file)
@@ -1456,6 +1456,15 @@ abstract class DatabaseMysqlBase extends Database {
                return parent::isTransactableQuery( $sql ) &&
                        !preg_match( '/^SELECT\s+(GET|RELEASE|IS_FREE)_LOCK\(/', $sql );
        }
+
+       /**
+        * @param string $field Field or column to cast
+        * @return string
+        */
+       public function buildIntegerCast( $field ) {
+               return 'CAST( ' . $field . ' AS SIGNED )';
+       }
+
 }
 
 class_alias( DatabaseMysqlBase::class, 'DatabaseMysqlBase' );
index 3d6cee3..83c8814 100644 (file)
@@ -818,6 +818,15 @@ class DatabaseSqlite extends Database {
                }
        }
 
+       public function buildSubstring( $input, $startPosition, $length = null ) {
+               $this->assertBuildSubstringParams( $startPosition, $length );
+               $params = [ $input, $startPosition ];
+               if ( $length !== null ) {
+                       $params[] = $length;
+               }
+               return 'SUBSTR(' . implode( ',', $params ) . ')';
+       }
+
        /**
         * @param string $field Field or column to cast
         * @return string
index 9ad78a7..28a8125 100644 (file)
@@ -19,6 +19,7 @@
  */
 namespace Wikimedia\Rdbms;
 
+use InvalidArgumentException;
 use Wikimedia\ScopedCallback;
 use RuntimeException;
 use UnexpectedValueException;
@@ -1050,6 +1051,20 @@ interface IDatabase {
                $delim, $table, $field, $conds = '', $join_conds = []
        );
 
+       /**
+        * Build a SUBSTRING function.
+        *
+        * Behavior for non-ASCII values is undefined.
+        *
+        * @param string $input Field name
+        * @param int $startPosition Positive integer
+        * @param int|null $length Non-negative integer length or null for no limit
+        * @throws InvalidArgumentException
+        * @return string SQL text
+        * @since 1.31
+        */
+       public function buildSubString( $input, $startPosition, $length = null );
+
        /**
         * @param string $field Field or column to cast
         * @return string
@@ -1057,6 +1072,13 @@ interface IDatabase {
         */
        public function buildStringCast( $field );
 
+       /**
+        * @param string $field Field or column to cast
+        * @return string
+        * @since 1.31
+        */
+       public function buildIntegerCast( $field );
+
        /**
         * Returns true if DBs are assumed to be on potentially different servers
         *
index d1acacf..24fdfb0 100644 (file)
@@ -178,10 +178,8 @@ class LogPager extends ReverseChronologicalPager {
                $name = $usertitle->getText();
 
                // Assume no joins required for log_user
-               // Don't query by user ID here, it might be able to use the
-               // log_user_text_time or log_user_text_type_time index.
                $this->mConds[] = ActorMigration::newMigration()->getWhere(
-                       wfGetDB( DB_REPLICA ), 'log_user', User::newFromName( $name, false ), false
+                       wfGetDB( DB_REPLICA ), 'log_user', User::newFromName( $name, false )
                )['conds'];
 
                $this->enforcePerformerRestrictions();
index cd72267..3cbeacf 100644 (file)
@@ -1249,7 +1249,7 @@ class Article implements Page {
                        }
 
                        $dir = $this->getContext()->getLanguage()->getDir();
-                       $lang = $this->getContext()->getLanguage()->getCode();
+                       $lang = $this->getContext()->getLanguage()->getHtmlCode();
                        $outputPage->addWikiText( Xml::openElement( 'div', [
                                'class' => "noarticletext mw-content-$dir",
                                'dir' => $dir,
index 8e5dcbd..9458728 100644 (file)
@@ -1868,8 +1868,8 @@ class Parser {
 
                        $dtrail = '';
 
-                       # Set linktype for CSS - if URL==text, link is essentially free
-                       $linktype = ( $text === $url ) ? 'free' : 'text';
+                       # Set linktype for CSS
+                       $linktype = 'text';
 
                        # No link text, e.g. [http://domain.tld/some.link]
                        if ( $text == '' ) {
index 806713b..6fc8306 100644 (file)
@@ -81,21 +81,39 @@ class SpecialContributions extends IncludableSpecialPage {
                $this->opts['newOnly'] = $request->getBool( 'newOnly' );
                $this->opts['hideMinor'] = $request->getBool( 'hideMinor' );
 
-               $nt = Title::makeTitleSafe( NS_USER, $target );
-               if ( !$nt ) {
-                       $out->addHTML( $this->getForm() );
-
-                       return;
-               }
-               $userObj = User::newFromName( $nt->getText(), false );
-               if ( !$userObj ) {
-                       $out->addHTML( $this->getForm() );
+               $id = 0;
+               if ( $this->opts['contribs'] === 'newbie' ) {
+                       $userObj = User::newFromName( $target ); // hysterical raisins
+                       $out->addSubtitle( $this->msg( 'sp-contributions-newbies-sub' ) );
+                       $out->setHTMLTitle( $this->msg(
+                               'pagetitle',
+                               $this->msg( 'sp-contributions-newbies-title' )->plain()
+                       )->inContentLanguage() );
+               } elseif ( ExternalUserNames::isExternal( $target ) ) {
+                       $userObj = User::newFromName( $target, false );
+                       if ( !$userObj ) {
+                               $out->addHTML( $this->getForm() );
+                               return;
+                       }
 
-                       return;
-               }
-               $id = $userObj->getId();
+                       $out->addSubtitle( $this->contributionsSub( $userObj ) );
+                       $out->setHTMLTitle( $this->msg(
+                               'pagetitle',
+                               $this->msg( 'contributions-title', $target )->plain()
+                       )->inContentLanguage() );
+               } else {
+                       $nt = Title::makeTitleSafe( NS_USER, $target );
+                       if ( !$nt ) {
+                               $out->addHTML( $this->getForm() );
+                               return;
+                       }
+                       $userObj = User::newFromName( $nt->getText(), false );
+                       if ( !$userObj ) {
+                               $out->addHTML( $this->getForm() );
+                               return;
+                       }
+                       $id = $userObj->getId();
 
-               if ( $this->opts['contribs'] != 'newbie' ) {
                        $target = $nt->getText();
                        $out->addSubtitle( $this->contributionsSub( $userObj ) );
                        $out->setHTMLTitle( $this->msg(
@@ -108,12 +126,6 @@ class SpecialContributions extends IncludableSpecialPage {
                        if ( !IP::isValidRange( $target ) ) {
                                $this->getSkin()->setRelevantUser( $userObj );
                        }
-               } else {
-                       $out->addSubtitle( $this->msg( 'sp-contributions-newbies-sub' ) );
-                       $out->setHTMLTitle( $this->msg(
-                               'pagetitle',
-                               $this->msg( 'sp-contributions-newbies-title' )->plain()
-                       )->inContentLanguage() );
                }
 
                $ns = $request->getVal( 'namespace', null );
index 2252645..2b0eeb8 100644 (file)
@@ -198,6 +198,7 @@ class Names {
                'hsb' => 'hornjoserbsce', # Upper Sorbian
                'ht' => 'Kreyòl ayisyen', # Haitian Creole French
                'hu' => 'magyar', # Hungarian
+               'hu-formal' => 'magyar (formal)', # Hungarian formal address
                'hy' => 'Հայերեն', # Armenian
                'hz' => 'Otsiherero', # Herero
                'ia' => 'interlingua', # Interlingua (IALA)
index 141e904..8d6c35e 100644 (file)
        "expansion-depth-exceeded-warning": "الصفحة تجاوزت عمق التوسيع",
        "parser-unstrip-loop-warning": "حلقة معراة تم الكشف عنها",
        "unstrip-depth-warning": "تعدى حد العودية Unstrip  ($1)",
+       "unstrip-depth-category": "الصفحات التي يتم تجاوز حد عمق أونستريب فيها",
+       "unstrip-size-warning": "تم تجاوز حد الحجم Unstrip ($1)",
+       "unstrip-size-category": "الصفحات التي يتم تجاوز الحد الأقصى لحجم أونستريب فيها",
        "converter-manual-rule-error": "خطأ تم اكتشافه في قاعدة تحويل اللغة اليدوية",
        "undo-success": "يمكن استرجاع التعديل.\nتحقق من المقارنة بالأسفل للتأكد من أن هذا هو ما تريد أن تفعله، ثم احفظ التغييرات بالأسفل للانتهاء من استرجاع التعديل.",
        "undo-failure": "لم يمكن استرجاع التعديل بسبب تعديلات متعارضة تمت على الصفحة.",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|بايت}}",
        "limitreport-expansiondepth": "أعمق التوسيعات",
        "limitreport-expensivefunctioncount": "دوال محللة مكلفة",
+       "limitreport-unstrip-depth": "عمق الاستدعاء الذاتي لأونستريب",
+       "limitreport-unstrip-depth-value": "$1/$2",
+       "limitreport-unstrip-size": "حجم أونستريب ما بعد التوسع",
+       "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|بايت}}",
        "expandtemplates": "توسعة قالب",
        "expand_templates_intro": "تتعامل هذه الصفحة الخاصة مع نصوص الويكي وتقوم بفرد كل القوالب الموجودة به.\nوتقوم أيضا بفرد دوال القوالب مثل\n<code><nowiki>{{</nowiki>#language:…}}</code> and variables like <code><nowiki>{{</nowiki>CURRENTDAY}}</code>. حقيقةً، تقوم التعامل مع كل ما بين الأقواس المزدوجة.",
        "expand_templates_title": "عنوان صفحة هذا النص، لأجل معالجة {{FULLPAGENAME}} إلخ.:",
index 4120ffc..7d6c6fa 100644 (file)
        "expansion-depth-exceeded-category-desc": "Старонка перавышае максымальную глыбіню раскрыцьця.",
        "expansion-depth-exceeded-warning": "Старонка перавысіла дазволеную глыбіню разгортваньня",
        "parser-unstrip-loop-warning": "Вызначаная пятля unstrip",
-       "unstrip-depth-warning": "Перавышаны ліміт рэкурсіі unstrip ($1)",
+       "unstrip-depth-warning": "Перавышаны ліміт глыбіні функцыі unstrip ($1)",
        "converter-manual-rule-error": "Знойдзеная памылка ў ручным правіле моўнага канвэртару",
        "undo-success": "Рэдагаваньне можа быць адмененае. Калі ласка, параўнайце адрозьненьні паміж вэрсіямі, каб упэўніцца, што гэта адпаведныя зьмены, а потым запішыце зьмены для сканчэньня рэдагаваньня.",
        "undo-failure": "Рэдагаваньне ня можа быць скасаванае праз канфлікт паміж папярэднімі рэдагаваньнямі.",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|байт}}",
        "limitreport-expansiondepth": "Найбольшая глыбіня разгортваньня",
        "limitreport-expensivefunctioncount": "Колькасьць дарагіх функцыяў парсэра",
+       "limitreport-unstrip-depth-value": "$1/$2",
        "expandtemplates": "Разгортваньне шаблёнаў",
        "expand_templates_intro": "Гэтая спэцыяльная старонка бярэ вікітэкст і разгортвае ўсе шаблёны рэкурсіўна.\nАдначасова разгортваюцца функцыі парсэру накшталт\n<code><nowiki>{{</nowiki>#language:…}}</code>, і зьменныя накшталт\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>\nФактычна, гэтая старонка разгортвае амаль усё ўнутры падвойных фігурных дужак.",
        "expand_templates_title": "Загаловак старонкі, для {{FULLPAGENAME}} і г.д.:",
index bcceb8f..45df08b 100644 (file)
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|বাইট}}",
        "limitreport-expansiondepth": "সর্বোচ্চ গভীরতা বিস্তার",
        "limitreport-expensivefunctioncount": "ব্যয়বহুল পার্সার ফাংশন গণনা",
+       "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|বাইট}}",
        "expandtemplates": "টেমপ্লেট সম্প্রসারণ",
        "expand_templates_intro": "এই বিশেষ পাতাটি কিছু উইকিটেক্সট গ্রহণ করে এবং এর ভেতরের সব টেমপ্লেট বারংবার সম্প্রসারিত করে।\nএছাড়াও এটি\n<code><nowiki>{{</nowiki>#language:...}}</code>-এর মত পার্সার ফাংশন,\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>-এর মত ভ্যারিয়েবল\nমোটকথা দ্বিতীয় বন্ধনীর মধ্যে অবস্থিত সবকিছুকেই সম্প্রসারিত করতে পারে।",
        "expand_templates_title": "প্রাতিবেশিক শিরোনাম, {{FULLPAGENAME}}, ইত্যাদির জন্য:",
index 9616cbe..c3d90d8 100644 (file)
        "tooltip-n-mainpage": "Коьрта агӀона дехьа гӀо",
        "tooltip-n-mainpage-description": "Коьрта агӀона дехьа гӀо",
        "tooltip-n-portal": "Оцу кхолламах, мичахь хlу йу лаьташ а хlудалур ду шуьга",
-       "tooltip-n-currentevents": "Ð\94Ó\80аоÑ\8cÑ\85Ñ\83Ñ\88 Ð±Ð¾Ð»Ñ\83 Ñ\85аамаÑ\88на Ð¼Ð¾Ð³Ó\80ам",
+       "tooltip-n-currentevents": "Ð\9aаÑ\80аÑ\80а Ñ\85иламеÑ\85 Ð»Ð°Ñ\8cÑ\86на Ñ\85аам",
        "tooltip-n-recentchanges": "ТӀаьххьара хийцамийн могӀам",
        "tooltip-n-randompage": "Хьажа цахууш нисйеллачу агlоне",
        "tooltip-n-help": "ГӀоде меттиг",
        "tooltip-t-whatlinkshere": "ХӀокху агӀонан тӀе хьажийна йолу массо агӀонийн могӀам",
-       "tooltip-t-recentchangeslinked": "ТÓ\80аÑ\8cÑ\85Ñ\85Ñ\8cаÑ\80леÑ\80а Ñ\85ийÑ\86амаÑ\88 Ñ\85Ó\80окÑ\85Ñ\83 Ð°Ð³Ó\80онаÑ\88каÑ\85Ñ\8c, Ñ\85Ñ\8cажийна Ñ\85Ó\80аÑ\80а Ð°Ð³Ó\80о Ð±Ð¾Ð»Ñ\83",
+       "tooltip-t-recentchangeslinked": "Ð¥Ó\80окÑ\85Ñ\83 Ð°Ð³Ó\80онгаÑ\85Ñ\8c Ñ\85Ñ\8cажоÑ\80гаÑ\88 Ð¹Ð¾Ð»Ñ\83, Ð°Ð³Ó\80онаÑ\88на Ð±Ð¸Ð½Ð° Ñ\82Ó\80аÑ\8cÑ\85Ñ\85Ñ\8cаÑ\80а Ñ\85ийÑ\86амаÑ\88",
        "tooltip-feed-rss": "RSS-ехь йолу хӀокху агӀонан трансляци",
        "tooltip-feed-atom": "Хьагайтар оцу Atom цани хlокху агlон",
        "tooltip-t-contributions": "ХӀокху декъашхочо хийцина йолу агӀонийн могӀам",
        "tooltip-t-emailuser": "ДӀабахьийта хаам оцу декъашхона",
+       "tooltip-t-info": "ХӀокху агӀонах лаьцна хаамаш",
        "tooltip-t-upload": "Чуйаха файлаш",
        "tooltip-t-specialpages": "Белхан агӀонанийн могӀам",
        "tooltip-t-print": "ХӀокху агӀона зорбанан верси",
index f92c660..68769ef 100644 (file)
        "botpasswords-label-delete": "Slet",
        "botpasswords-label-resetpassword": "Nulstil adgangskode",
        "botpasswords-label-grants": "Tilgængelige bevillinger:",
+       "botpasswords-help-grants": "Tildelinger giver tilgang til rettighederne som allerede indehaves af din brugerkonto. Aktivering af en rettighed her giver ikke adgang til alle rettigheder din brugerkonto ikke ellers ville have. Se [[Special:ListGrants|tildelingstabellen]] for yderligere information.",
        "botpasswords-label-grants-column": "Tildelt",
        "botpasswords-bad-appid": "Robotnavnet »$1« er ikke gyldigt.",
        "botpasswords-insert-failed": "Kunne ikke tilføje robotnavnet »$1«. Var det allerede tilføjet?",
        "botpasswords-update-failed": "Kunne ikke tilføje robotnavnet »$1«. Er det slettet?",
        "botpasswords-created-title": "Botkodeord oprettet",
-       "botpasswords-created-body": "Robottens adgangskode for robotnavn »$1« for bruger »$2« blev oprettet.",
+       "botpasswords-created-body": "Robottens adgangskode for robotnavn »$1« for {{GENDER:$2|brugeren}} »$2« blev oprettet.",
        "botpasswords-updated-title": "Bot kodeord opdateret",
-       "botpasswords-updated-body": "Robottens adgangskode for robotnavn »$1« for brugeren »$2« blev opdateret.",
+       "botpasswords-updated-body": "Robottens adgangskode for robotnavn »$1« for {{GENDER:$2|brugeren}} »$2« blev opdateret.",
        "botpasswords-deleted-title": "Bot kodeord slettet",
-       "botpasswords-deleted-body": "Robottens adgangskode for robotnavn »$1« for brugeren »$2« blev slettet.",
+       "botpasswords-deleted-body": "Robottens adgangskode for robotnavn »$1« for {{GENDER:$2|brugeren}} »$2« blev slettet.",
        "botpasswords-newpassword": "Den nye adgangskode at logge ind med for <strong>$1</strong> er <strong>$2</strong>. <em>Gem denne oplysning for fremtidig reference.</em> <br> (For gamle robotter som kræver at logindnavnet er det samme som det eventuelle brugernavn, så kan du også bruge <strong>$3</strong> som brugernavn og <strong>$4</strong> som adgangskode).",
        "botpasswords-no-provider": "BotPasswordsSessionProvider er ikke tilgængelig.",
        "botpasswords-restriction-failed": "Begrænsninger for robotadgangskode forhindrer dette logind.",
index 9a92ef2..22847e5 100644 (file)
        "parser-unstrip-loop-warning": "Zirkelbezug festgestellt",
        "unstrip-depth-warning": "Rekursionsgrenze beim Auflösen überschritten ($1)",
        "unstrip-depth-category": "Seiten, auf denen die Unstrip-Tiefengrenze überschritten ist.",
+       "unstrip-size-warning": "Unstrip-Größengrenze überschritten ($1)",
+       "unstrip-size-category": "Seiten, auf denen die Unstrip-Größengrenze überschritten ist",
        "converter-manual-rule-error": "Bei der manuellen Sprachkonvertierungsregel wurde ein Fehler entdeckt.",
        "undo-success": "Die Bearbeitung kann rückgängig gemacht werden.\nBitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und speichere dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.",
        "undo-failure": "Die Änderung konnte nicht rückgängig gemacht werden, da der betroffene Abschnitt zwischenzeitlich verändert wurde.",
        "stub-threshold-disabled": "Deaktiviert",
        "recentchangesdays": "Anzahl der standardmäßig einbezogenen Tage:",
        "recentchangesdays-max": "Maximal $1 {{PLURAL:$1|Tag|Tage}}",
-       "recentchangescount": "Anzahl der standardmäßig angezeigten Bearbeitungen:",
-       "prefs-help-recentchangescount": "Dies umfasst die Liste der letzten Änderungen, die Versionsgeschichte und die Logbücher.",
+       "recentchangescount": "Anzahl der in den Letzten Änderungen, Versionsgeschichten und Logbüchern standardmäßig angezeigten Bearbeitungen:",
+       "prefs-help-recentchangescount": "Maximale Anzahl: 1000",
        "prefs-help-watchlist-token2": "Dies ist der geheime Schlüssel zum Webfeed deiner Beobachtungsliste.\nJeder, der ihn kennt, kann deine Beobachtungsliste lesen. Teile ihn deshalb nicht Anderen mit.\nSofern notwendig, [[Special:ResetTokens|kannst du ihn zurücksetzen]].",
        "savedprefs": "Deine Einstellungen wurden gespeichert.",
        "savedrights": "Die Benutzergruppen von {{GENDER:$1|$1}} wurden gespeichert.",
        "limitreport-expansiondepth": "Höchste Expansionstiefe",
        "limitreport-expansiondepth-value": "$1/$2",
        "limitreport-expensivefunctioncount": "Anzahl aufwändiger Parserfunktionen",
+       "limitreport-unstrip-depth": "Unstrip-Rekursionstiefe",
+       "limitreport-unstrip-depth-value": "$1 von $2",
+       "limitreport-unstrip-size": "Unstrip-Größe nach dem Expandieren",
+       "limitreport-unstrip-size-value": "$1 von $2 {{PLURAL:$2|Byte|Bytes}}",
        "expandtemplates": "Vorlagen expandieren",
        "expand_templates_intro": "Auf dieser Spezialseite kann Wikitext eingegeben werden. Alle enthaltenen Vorlagen werden dabei rekursiv expandiert.\nAuch Parserfunktionen wie\n<code><nowiki>{{</nowiki>#language:…}}</code> und Variablen wie\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code> werden ausgewertet –\nfaktisch alles, was in doppelten geschweiften Klammern enthalten ist.",
        "expand_templates_title": "Kontexttitel für beispielsweise {{FULLPAGENAME}}:",
index f9ac094..0f58aaf 100644 (file)
        "node-count-exceeded-warning": "Pela amora gozgıra ravêr da",
        "expansion-depth-exceeded-category": "Perrê ke xoriyiya herabiyayışi tede ravêrdeya.",
        "expansion-depth-exceeded-warning": "Ravêriya pela xori herayêna",
-       "parser-unstrip-loop-warning": "Unstrip lete vineya",
-       "unstrip-depth-warning": "Sinorê limit dê qayış dê ($1) ravêrya",
+       "parser-unstrip-loop-warning": "Çerxê newekerdışi vêniya",
+       "unstrip-depth-warning": "Sinorê newekerdışi ($1) viyarna ra",
        "converter-manual-rule-error": "Rehberê zıwan açarnayışi dı xırabin tesbit biya",
        "undo-success": "No vurnayiş tepeye geryeno. pêverronayişêyê cêrıni kontrol bıkeri.",
        "undo-failure": "Poxta pëverameyişa vurnayişan ra  peyd grotışë kari në bı",
index daa5066..fd1d050 100644 (file)
        "userinvalidconfigtitle": "'''Προσοχή:''' Δεν υπάρχει skin με τίτλο \"$1\". Θυμηθείτε οι προσαρμοσμένες σελίδες .css και .js χρησιμοποιούν έναν τίτλο με μικρά γράμματα, π.χ. {{ns:user}}:Foo/vector.css σε αντίθεση με το {{ns:user}}:Foo/Vector.css.",
        "updated": "(Ενημερώθηκε)",
        "note": "'''Προσοχή: '''",
-       "previewnote": "'''Να θυμάστε ότι αυτή είναι μόνο μια προεπισκόπηση.'''\nΟι αλλαγές σας δεν έχουν ακόμη αποθηκευτεί!",
+       "previewnote": "<strong>Να θυμάστε ότι αυτό είναι απλώς προεπισκόπηση.</strong>\nΟι αλλαγές σας δεν έχουν αποθηκευτεί ακόμα!",
        "continue-editing": "Μεταβείτε στην περιοχή επεξεργασίας",
        "previewconflict": "Αυτή η προεπισκόπηση απεικονίζει το κείμενο στην επάνω περιοχή επεξεργασίας κειμένου, όπως θα εμφανιστεί εάν επιλέξετε να το αποθηκεύσετε.",
        "session_fail_preview": "Λυπούμαστε! Δεν μπορούσαμε να διεκπεραιώσουμε την επεξεργασία σας λόγω απώλειας των δεδομένων της συνεδρίας.\n\nΜπορεί να έχετε αποσυνδεθεί. <strong>Παρακαλούμε επιβεβαιώστε ότι βρίσκεστε ακόμα σε σύνδεση και προσπαθήστε ξανά</strong>.\nΑν εξακολουθεί να μην λειτουργεί, δοκιμάστε να [[Special:UserLogout|αποσυνδεθείτε]] και να συνδεθείτε ξανά, και βεβαιωθείτε ότι το πρόγραμμα περιήγησής σας επιτρέπει cookies από αυτόν τον ιστότοπο.",
        "stub-threshold-disabled": "Απενεργοποιημένο",
        "recentchangesdays": "Ημέρες προς εμφάνιση στις πρόσφατες αλλαγές:",
        "recentchangesdays-max": "($1 {{PLURAL:$1|ημέρα|ημέρες}} το μέγιστο)",
-       "recentchangescount": "Î\91Ï\81ιθμÏ\8cÏ\82 ÎµÏ\80εξεÏ\81γαÏ\83ιÏ\8eν Ï\80οÏ\85 Î½Î± ÎµÎ¼Ï\86ανίζονÏ\84αι Î³Î¹Î± Ï\80Ï\81οεÏ\80ιλογή.",
-       "prefs-help-recentchangescount": "Î\91Ï\85Ï\84Ï\8c Ï\80εÏ\81ιλαμβάνει Ï\84ιÏ\82 Ï\80Ï\81Ï\8cÏ\83Ï\86αÏ\84εÏ\82 Î±Î»Î»Î±Î³Î­Ï\82, Ï\84α Î¹Ï\83Ï\84οÏ\81ικά Ï\84Ï\89ν Ï\83ελίδÏ\89ν, ÎºÎ±Î¹ Ï\84α Î±Ï\81Ï\87εία Î´Î¹Î±Î³Ï\81αÏ\86Ï\8eν.",
+       "recentchangescount": "Î\91Ï\81ιθμÏ\8cÏ\82 ÎµÏ\80εξεÏ\81γαÏ\83ιÏ\8eν Ï\80οÏ\85 Î½Î± ÎµÎ¼Ï\86ανίζονÏ\84αι ÎµÎº Ï\80Ï\81οεÏ\80ιλογήÏ\82 Ï\83Ï\84ιÏ\82 Ï\80Ï\81Ï\8cÏ\83Ï\86αÏ\84εÏ\82 Î±Î»Î»Î±Î³Î­Ï\82, Ï\83Ï\84ο Î¹Ï\83Ï\84οÏ\81ικÏ\8c Ï\83ελίδÏ\89ν ÎºÎ±Î¹ Ï\83Ï\84α Î±Ï\81Ï\87εία ÎºÎ±Ï\84αγÏ\81αÏ\86Ï\8eν.",
+       "prefs-help-recentchangescount": "Î\9cέγιÏ\83Ï\84οÏ\82 Î±Ï\81ιθμÏ\8cÏ\82: 1000",
        "prefs-help-watchlist-token2": "Αυτό είναι το μυστικό κλειδί για την διαδικτυακή θέαση της λίστας παρακολούθησής σας.\nΌποιος το γνωρίζει θα είναι σε θέση να διαβάσει την λίστα παρακολούθησης σας, οπότε μην τον μοιράζεστε.\n[[Special:ResetTokens|Κάνε κλικ εδώ εάν θέλετε να τον επαναφέρετε]].",
        "savedprefs": "Οι προτιμήσεις σας έχουν αποθηκευτεί.",
        "savedrights": "Οι ομάδες χρηστών {{GENDER:$1|του $1|της $1}} έχουν αποθηκευτεί.",
        "lockmanager-fail-closelock": "Δεν μπόρεσε να κλείσει το κλειδωμένο αρχείο για \"$1\".",
        "lockmanager-fail-deletelock": "Δεν μπόρεσε να διαγράψει το αρχείο κλειδώματος για το \"$1\".",
        "lockmanager-fail-acquirelock": "Δεν ήταν δυνατή η απόκτηση κλειδώματος για \"$1\".",
-       "lockmanager-fail-openlock": "Î\94εν Î¼Ï\80Ï\8cÏ\81εÏ\83ε Î½Î± Î±Î½Î¿Î¯Î¾ÎµÎ¹ Ï\84ο Î±Ï\81Ï\87είο ÎºÎ»ÎµÎ¹Î´Ï\8eμαÏ\84οÏ\82 Î³Î¹Î± Ï\84ο \"$1\".",
+       "lockmanager-fail-openlock": "Î\94εν Î®Ï\84αν Î´Ï\85ναÏ\84Ï\8c Ï\84ο Î¬Î½Î¿Î¹Î³Î¼Î± Ï\84οÏ\85 Î±Ï\81Ï\87είοÏ\85 ÎºÎ»ÎµÎ¹Î´Ï\8eμαÏ\84οÏ\82 Î³Î¹Î± Ï\84ο Â«$1». Î\92εβαιÏ\89θείÏ\84ε Ï\8cÏ\84ι Î¿ ÎºÎ±Ï\84άλογοÏ\82 Î±Î½ÎµÎ²Î¬Ï\83μαÏ\84οÏ\82 Î­Ï\87ει Ï\81Ï\85θμιÏ\83Ï\84εί Ï\83Ï\89Ï\83Ï\84ά ÎºÎ±Î¹ Ï\8cÏ\84ι Î¿ Î´Î¹Î±ÎºÎ¿Î¼Î¹Ï\83Ï\84ήÏ\82 Î\99Ï\83Ï\84οÏ\8d Î­Ï\87ει Î¬Î´ÎµÎ¹Î± Î½Î± Î³Ï\81άÏ\88ει Ï\83ε Î±Ï\85Ï\84Ï\8cν Ï\84ον ÎºÎ±Ï\84άλογο. Î\94είÏ\84ε https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgUploadDirectory Î³Î¹Î± Ï\80εÏ\81ιÏ\83Ï\83Ï\8cÏ\84εÏ\81εÏ\82 Ï\80ληÏ\81οÏ\86οÏ\81ίεÏ\82.",
        "lockmanager-fail-releaselock": "Δεν ήταν δυνατή η έκδοση κλειδώματος για \"$1\".",
        "lockmanager-fail-db-bucket": "Δεν ήταν δυνατή η εντόπιση αρκετών αρχείων δεδομένων κλειδωμάτων στο σύστημα $1.",
        "lockmanager-fail-db-release": "Δεν ήταν δυνατή η έκδοση κλειδωμάτων για τη βάση δεδομένων $1.",
        "uploadstash-bad-path-invalid": "Ο τρόπος δεν είναι έγκυρος.",
        "uploadstash-bad-path-unknown-type": "Άγνωστος τύπος ''$1''.",
        "uploadstash-bad-path-unrecognized-thumb-name": "Nom feuilleté non classifié.",
-       "uploadstash-bad-path-no-handler": "Î\94εν Î²Ï\81έθηκε Ï\87ειÏ\81ιÏ\83Ï\84ήÏ\82 Î³Î¹Î± Ï\84ην Î±Î½Ï\84ιγÏ\81αÏ\86ή Ï\84οÏ\85 Ï\86ακέλλοÏ\85",
+       "uploadstash-bad-path-no-handler": "Î\94εν Î²Ï\81έθηκε Ï\87ειÏ\81ιÏ\83Ï\84ήÏ\82 Î³Î¹Î± Ï\84ον Ï\84Ï\8dÏ\80ο mime $1 Ï\84οÏ\85 Î±Ï\81Ï\87είοÏ\85 $2.",
        "uploadstash-bad-path-bad-format": "Ο κωδικός ''$1' δεν έχει τον κατάλληλο τύπο.",
-       "uploadstash-file-not-found": "",
+       "uploadstash-file-not-found": "Το κλειδί «$1» δεν βρέθηκε στο απόθεμα.",
        "uploadstash-file-not-found-no-thumb": "Δεν μπόρεσε να αποκτήσει το ''thumbnail''.",
        "uploadstash-file-not-found-no-local-path": "Δεν υπάρχει τρόπος τοπικά για το κλιμακούμενο αντικείμενο",
        "uploadstash-file-not-found-no-object": "Δεν μπόρεσε να δημιουργήσει τοπικό φάκελλο ''thumbnail''.",
        "linksearch-text": "Μπορούν να χρησιμοποιηθούν χαρακτήρες μπαλαντέρ όπως \"*.wikipedia.org\". \nΧρειάζεται τουλάχιστον μια κατάληξη ανωτάτου επιπέδου, για παράδειγμα \"*.org\".<br />\n{{PLURAL:$2|Υποστηριζόμενο πρωτόκολλο|Υποστηριζόμενα πρωτόκολλα}}: $1 (αν δεν οριστεί πρωτόκολλο η προεπιλογή είναι http://).",
        "linksearch-line": "Η σελίδα $1 συνδέεται από την $2",
        "linksearch-error": "Λέξεις-μπαλαντέρ μπορεί να εμφανιστούν μόνο στην αρχή τού ονόματος ιστοτόπου (hostname).",
-       "listusersfrom": "Προβολή χρηστών ξεκινώντας από:",
+       "listusersfrom": "Παρουσίαση χρηστών ξεκινώντας από:",
        "listusers-submit": "Δείξε",
        "listusers-noresult": "Δεν βρέθηκε χρήστης.",
        "listusers-blocked": "(υπό φραγή)",
        "activeusers": "Κατάλογος ενεργών χρηστών",
        "activeusers-intro": "Αυτή είναι μια λίστα από χρήστες που είχαν κάποιου είδους δραστηριότητα {{PLURAL:$1|την τελευταία $1 ημέρα|τις τελευταίες $1 ημέρες}}.",
        "activeusers-count": "$1 {{PLURAL:$1|ενέργεια|ενέργειες}} {{PLURAL:$3|την τελευταία ημέρα|τις τελευταίες $3 ημέρες}}",
-       "activeusers-from": "Προβολή χρηστών ξεκινώντας από:",
+       "activeusers-from": "Παρουσίαση χρηστών ξεκινώντας από:",
+       "activeusers-groups": "Παρουσίαση χρηστών που ανήκουν στις ομάδες:",
+       "activeusers-excludegroups": "Εξαίρεση χρηστών που ανήκουν στις ομάδες:",
        "activeusers-noresult": "Δεν βρέθηκε χρήστης.",
        "activeusers-submit": "Προβολή ενεργών χρηστών",
        "listgrouprights": "Δικαιώματα ομάδων χρηστών",
        "rollbacklinkcount": "Αναστροφή $1 {{PLURAL:$1|επεξεργασίας|επεξεργασιών}}",
        "rollbacklinkcount-morethan": "αναστροφή περισσότερων από $1 {{PLURAL:$1|επεξεργασία|επεξεργασίες}}",
        "rollbackfailed": "Η επαναφορά απέτυχε.",
+       "rollback-missingrevision": "Δεν ήταν δυνατή η φόρτωση δεδομένων αναθεωρήσεων.",
        "cantrollback": "Δεν είναι δυνατή η αναίρεση αυτής της αλλαγής, πρόκειται για την αρχική ενέργεια δημιουργίας της σελίδας.",
        "alreadyrolled": "Αδύνατον να αναιρεθεί η τελευταία αλλαγή της σελίδας [[:$1]] από το χρήστη ([[User:$2|$2]] ([[User talk:$2|Συζήτηση]]){{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]), διότι κάποιος έχει ήδη αναιρέσει την αλλαγή ή έχει αλλάξει εκ νέου τη σελίδα.\n\nΤελευταία αλλαγή από το χρήστη ([[User:$3|$3]] ([[User talk:$3|Συζήτηση]]){{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Το σχόλιο της επεξεργασίας ήταν: <em>$1</em>.",
        "changecontentmodel-success-text": "Ο τύπος περιεχομένου του [[:$1]] έχει αλλάξει.",
        "changecontentmodel-cannot-convert": "Το περιεχόμενο του [[:$1]] δεν μπορεί να μετατραπεί σε τύπο $2.",
        "changecontentmodel-nodirectediting": "Το μοντέλο περιεχομένου $1 δεν υποστηρίζει την άμεση επεξεργασία",
+       "changecontentmodel-emptymodels-title": "Δεν υπάρχουν διαθέσιμα μοντέλα περιεχομένου",
        "log-name-contentmodel": "Αρχείο καταγραφής αλλαγών μοντέλου περιεχομένου",
        "log-description-contentmodel": "Αυτή η σελίδα περιέχει αλλαγές στο μοντέλο περιεχομένου των σελίδων, και τις σελίδες που δημιουργήθηκαν με μοντέλο περιεχομένου διαφορετικό από το προεπιλεγμένο.",
        "logentry-contentmodel-change": "{{GENDER:$2|Ο|Η}} $1 άλλαξε το πρότυπο περιεχομένου της σελίδας $3 από «$4» σε «$5»",
        "undelete-header": "Δείτε [[Special:Log/delete|το αρχείο καταγραφής διαγραφών]] για πρόσφατα διαγεγραμμένες σελίδες.",
        "undelete-search-title": "Αναζήτηση διαγεγραμμένων σελίδων",
        "undelete-search-box": "Αναζήτηση διεγραμμένων σελίδων",
-       "undelete-search-prefix": "Εμφάνισε σελίδες που αρχίζουν με:",
+       "undelete-search-prefix": "Εμφάνιση σελίδων που αρχίζουν με:",
+       "undelete-search-full": "Εμφάνιση τίτλων σελίδων που περιέχουν:",
        "undelete-search-submit": "Αναζήτηση",
        "undelete-no-results": "Δεν βρέθηκαν σελίδες που να ταιριάζουν στο αρχείο διαγραφών.",
        "undelete-filename-mismatch": "Αδύνατη η επαναφορά της αναθεώρησης αρχείου με χρονική σφραγίδα $1: αναντιστοιχία ονόματος αρχείου",
        "version-poweredby-others": "άλλοι",
        "version-poweredby-translators": "translatewiki.net μεταφραστές",
        "version-credits-summary": "Θα θέλαμε να αναγνωρίσουμε τη συμβολή των παρακάτω προσώπων στο [[Special:Version|MediaWiki]].",
-       "version-license-info": "Το MediaWiki ÎµÎ¯Î½Î±Î¹ ÎµÎ»ÎµÏ\8dθεÏ\81ο Î»Î¿Î³Î¹Ï\83μικÏ\8c. Î\9cÏ\80οÏ\81είÏ\84ε Î½Î± Ï\84ο Î±Î½Î±Î´Î¹Î±Î½ÎµÎ¯Î¼ÎµÏ\84ε Î®/και Î½Î± Ï\84ο Ï\84Ï\81οÏ\80οÏ\80οιήÏ\83εÏ\84ε Ï\85Ï\80Ï\8c Ï\84οÏ\85Ï\82 Ï\8cÏ\81οÏ\85Ï\82 Ï\84ηÏ\82 Î¬Î´ÎµÎ¹Î±Ï\82 GNU General Public License Ï\8cÏ\80Ï\89Ï\82 Î±Ï\85Ï\84ή ÎµÎºÎ´Ï\8cθηκε Î±Ï\80Ï\8c Ï\84ο Free Software Foundation· ÎµÎ¯Ï\84ε Ï\84ηÏ\82 Î´ÎµÏ\8dÏ\84εÏ\81ηÏ\82 Î­ÎºÎ´Î¿Ï\83ηÏ\82 Ï\84ηÏ\82 Î¬Î´ÎµÎ¹Î±Ï\82, ÎµÎ¯Ï\84ε (καÏ\84' ÎµÏ\80ιλογή Ï\83αÏ\82) Î¿Ï\80οιαÏ\83δήÏ\80οÏ\84ε ÎµÏ\80Ï\8cμενηÏ\82 Î­ÎºÎ´Î¿Ï\83ηÏ\82.\n\nΤο MediaWiki Î´Î¹Î±Î½Î­Î¼ÎµÏ\84αι Î¼Îµ Ï\84ην ÎµÎ»Ï\80ίδα Ï\8cÏ\84ι Î¸Î± ÎµÎ¯Î½Î±Î¹ Ï\87Ï\81ήÏ\83ιμο, Î±Î»Î»Î¬ <em>ΧΩΡÎ\99Σ Î\9aÎ\91Î\9cÎ\99Î\91 Î\95Î\93Î\93Î¥Î\97ΣÎ\97</em>· Î¿Ï\8dÏ\84ε ÎºÎ±Î½ Ï\84ην Ï\83ιÏ\89Ï\80ηÏ\81ή ÎµÎ³Î³Ï\8dηÏ\83η <strong>Î\95Î\9cΠÎ\9fΡÎ\95ΥΣÎ\99Î\9cÎ\9fΤÎ\97ΤÎ\91Σ</strong> Î® <strong>Î\9aÎ\91ΤÎ\91Î\9bÎ\9bÎ\97Î\9bÎ\9fΤÎ\97ΤÎ\91Σ Î\93Î\99Î\91 Î\95Î\9dÎ\91 Î£Î¥Î\93Î\9aÎ\95Î\9aΡÎ\99Î\9cÎ\95Î\9dÎ\9f Î£Î\9aÎ\9fΠÎ\9f</strong>. Î\94είÏ\84ε Ï\84ην GNU General Public License Î³Î¹Î± Ï\80εÏ\81ιÏ\83Ï\83Ï\8cÏ\84εÏ\81εÏ\82 Î»ÎµÏ\80Ï\84ομέÏ\81ειεÏ\82.\n\nÎ\98α Ï\80Ï\81έÏ\80ει Î½Î± Î­Ï\87εÏ\84ε Î»Î¬Î²ÎµÎ¹ [{{SERVER}}{{SCRIPTPATH}}/COPYING Î­Î½Î± Î±Î½Ï\84ίγÏ\81αÏ\86ο Ï\84ηÏ\82 GNU General Public License] μαζί με αυτό το πρόγραμμα· αν όχι, στείλτε ένα γράμμα στο Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ή [//www.gnu.org/licenses/old-licenses/gpl-2.0.html διαβάστε το διαδικτυακά].",
+       "version-license-info": "Το MediaWiki ÎµÎ¯Î½Î±Î¹ ÎµÎ»ÎµÏ\8dθεÏ\81ο Î»Î¿Î³Î¹Ï\83μικÏ\8c. Î\9cÏ\80οÏ\81είÏ\84ε Î½Î± Ï\84ο Î±Î½Î±Î´Î¹Î±Î½ÎµÎ¯Î¼ÎµÏ\84ε Î®/και Î½Î± Ï\84ο Ï\84Ï\81οÏ\80οÏ\80οιήÏ\83εÏ\84ε Ï\85Ï\80Ï\8c Ï\84οÏ\85Ï\82 Ï\8cÏ\81οÏ\85Ï\82 Ï\84ηÏ\82 Î\93ενικήÏ\82 Î\86δειαÏ\82 Î\94ημÏ\8cÏ\83ιαÏ\82 Î§Ï\81ήÏ\83ηÏ\82 GNU Ï\8cÏ\80Ï\89Ï\82 Î±Ï\85Ï\84ή Î´Î·Î¼Î¿Ï\83ιεÏ\8dεÏ\84αι Î±Ï\80Ï\8c Ï\84ο Î\8aδÏ\81Ï\85μα Î\95λεÏ\8dθεÏ\81οÏ\85 Î\9bογιÏ\83μικοÏ\8d· ÎµÎ¯Ï\84ε Ï\84ηÏ\82 Î­ÎºÎ´Î¿Ï\83ηÏ\82 2 Ï\84ηÏ\82 Î\86δειαÏ\82, ÎµÎ¯Ï\84ε (καÏ\84' ÎµÏ\80ιλογήν Ï\83αÏ\82) Î¿Ï\80οιαÏ\83δήÏ\80οÏ\84ε Î¼ÎµÏ\84αγενέÏ\83Ï\84εÏ\81ηÏ\82 Î­ÎºÎ´Î¿Ï\83ηÏ\82.\n\nΤο MediaWiki Î´Î¹Î±Î½Î­Î¼ÎµÏ\84αι Î¼Îµ Ï\84ην ÎµÎ»Ï\80ίδα Ï\8cÏ\84ι Î¸Î± ÎµÎ¯Î½Î±Î¹ Ï\87Ï\81ήÏ\83ιμο, Î±Î»Î»Î¬ <em>ΧΩΡÎ\99Σ Î\9aÎ\91Î\9cÎ\99Î\91 Î\95Î\93Î\93Î¥Î\97ΣÎ\97</em>· Ï\87Ï\89Ï\81ίÏ\82 ÎºÎ±Î½ Ï\84η Ï\83ιÏ\89Ï\80ηÏ\81ή ÎµÎ³Î³Ï\8dηÏ\83η <strong>Î\95Î\9cΠÎ\9fΡÎ\95ΥΣÎ\99Î\9cÎ\9fΤÎ\97ΤÎ\91Σ</strong> Î® <strong>Î\9aÎ\91ΤÎ\91Î\9bÎ\9bÎ\97Î\9bÎ\9fΤÎ\97ΤÎ\91Σ Î\93Î\99Î\91 Î£Î¥Î\93Î\9aÎ\95Î\9aΡÎ\99Î\9cÎ\95Î\9dÎ\9f Î£Î\9aÎ\9fΠÎ\9f</strong>. Î\94είÏ\84ε Ï\84η Î\93ενική Î\86δεια Î\94ημÏ\8cÏ\83ιαÏ\82 Î§Ï\81ήÏ\83ηÏ\82 GNU Î³Î¹Î± Ï\80εÏ\81ιÏ\83Ï\83Ï\8cÏ\84εÏ\81εÏ\82 Î»ÎµÏ\80Ï\84ομέÏ\81ειεÏ\82.\n\nÎ\98α Ï\80Ï\81έÏ\80ει Î½Î± Î­Ï\87εÏ\84ε Ï\80αÏ\81αλάβει [{{SERVER}}{{SCRIPTPATH}}/COPYING Î­Î½Î± Î±Î½Ï\84ίγÏ\81αÏ\86ο Ï\84ηÏ\82 Î\93ενικήÏ\82 Î\86δειαÏ\82 Î\94ημÏ\8cÏ\83ιαÏ\82 Î§Ï\81ήÏ\83ηÏ\82 GNU] μαζί με αυτό το πρόγραμμα· αν όχι, στείλτε ένα γράμμα στο Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ή [//www.gnu.org/licenses/old-licenses/gpl-2.0.html διαβάστε το διαδικτυακά].",
        "version-software": "Εγκατεστημένο λογισμικό",
        "version-software-product": "Προϊόν",
        "version-software-version": "Έκδοση",
        "limitreport-templateargumentsize-value": "$1 από $2 {{PLURAL:$2|byte|bytes}}",
        "limitreport-expansiondepth": "Μεγαλύτερο βάθος ανάπτυξης",
        "limitreport-expensivefunctioncount": "Πλήθος ακριβών συναρτήσεων συντακτικού αναλυτή",
+       "limitreport-unstrip-depth-value": "$1/$2",
+       "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|byte|bytes}}",
        "expandtemplates": "Επέκταση προτύπων",
        "expand_templates_intro": "Αυτή η ειδική σελίδα παίρνει κώδικα wiki και αναπτύσσει όλα τα πρότυπα σε αυτό αναδρομικά. \nΕπίσης αναπτύσσει συναρτήσεις συντακτικού αναλυτή όπως η\n<nowiki>{{</nowiki>#language:…}}, και μεταβλητές όπως η\n<nowiki>{{</nowiki>CURRENTDAY}}.\nΟυσιαστικά επεκτείνει οτιδήποτε βρίσκεται σε διπλές αγκύλες.",
        "expand_templates_title": "Τίτλων συμφραζόμενων, για την {{FULLPAGENAME}} κ.τ.λ.:",
        "authpage-cannot-create": "Αποτυχία στην αρχή δημιουργίας λογαριασμού.",
        "cannotauth-not-allowed-title": "Δεν έχετε δικαίωμα πρόσβασης.",
        "cannotauth-not-allowed": "Δεν επιτρέπεται να χρησιμοποιήσετε αυτή τη σελίδα",
+       "changecredentials": "Αλλαγή πιστοποιητικών",
+       "changecredentials-submit": "Αλλαγή πιστοποιητικών",
+       "removecredentials": "Αφαίρεση πιστοποιητικών",
+       "removecredentials-submit": "Αφαίρεση πιστοποιητικών",
        "credentialsform-account": "Όνομα λογαριασμού:",
+       "cannotlink-no-provider-title": "Δεν υπάρχουν συνδέσιμοι λογαριασμοί",
+       "cannotlink-no-provider": "Δεν υπάρχουν συνδέσιμοι λογαριασμοί.",
        "linkaccounts": "Σύνδεση λογαριασμών",
        "linkaccounts-success-text": "Ο λογαριασμός συνδέθηκε",
        "linkaccounts-submit": "Σύνδεση λογαριασμών",
+       "unlinkaccounts": "Αποδιασύνδεση λογαριασμών",
+       "unlinkaccounts-success": "Ο λογαριασμός ξεσυνδέθηκε.",
        "userjsispublic": "Σημείωση: Οι υποσελίδες JavaScript δεν πρέπει να περιέχουν εμπιστευτικά δεδομένα καθώς είναι ορατά από άλλους χρήστες.",
        "usercssispublic": "Σημείωση: Οι υποσελίδες CSS δεν πρέπει να περιέχουν εμπιστευτικά δεδομένα καθώς είναι ορατά από άλλους χρήστες.",
+       "edit-error-short": "Σφάλμα: $1",
+       "edit-error-long": "Σφάλματα: \n\n$1",
        "revid": "αναθεώρηση $1",
+       "pagedata-title": "Δεδομένα σελίδας",
        "pagedata-bad-title": "Μη έγκυρος τίτλος: $1."
 }
index 6ff4237..aaaf785 100644 (file)
        "stub-threshold-disabled": "Disabled",
        "recentchangesdays": "Days to show in recent changes:",
        "recentchangesdays-max": "Maximum $1 {{PLURAL:$1|day|days}}",
-       "recentchangescount": "Number of edits to show by default:",
-       "prefs-help-recentchangescount": "This includes recent changes, page histories, and logs.",
+       "recentchangescount": "Number of edits to show in recent changes, page histories, and in logs, by default:",
+       "prefs-help-recentchangescount": "Maximum number: 1000",
        "prefs-help-watchlist-token2": "This is the secret key to the web feed of your watchlist.\nAnyone who knows it will be able to read your watchlist, so do not share it.\nIf you need to, [[Special:ResetTokens|you can reset it]].",
        "savedprefs": "Your preferences have been saved.",
        "savedrights": "The user groups of {{GENDER:$1|$1}} have been saved.",
index a7645e4..47208a7 100644 (file)
        "rcfilters-filter-bots-description": "Automaattisilla työkaluilla tehdyt muokkaukset.",
        "rcfilters-filter-humans-label": "Ihminen (ei botti)",
        "rcfilters-filter-humans-description": "Ihmisten tekemät muokkaukset.",
-       "rcfilters-filtergroup-reviewstatus": "Tarkistuksen tila",
-       "rcfilters-filter-patrolled-label": "Tarkastetut",
-       "rcfilters-filter-patrolled-description": "Tarkastetut muokkaukset",
-       "rcfilters-filter-unpatrolled-label": "Ei tarkastetut",
-       "rcfilters-filter-unpatrolled-description": "Muutokset, joita ei ole tarkastettu",
+       "rcfilters-filtergroup-reviewstatus": "Sivun partioinnin status",
+       "rcfilters-filter-patrolled-label": "Partioidut",
+       "rcfilters-filter-patrolled-description": "Muokkaukset, jotka on merkitty partioiduiksi.",
+       "rcfilters-filter-unpatrolled-label": "Ei ole partioitu",
+       "rcfilters-filter-unpatrolled-description": "Muutokset, joita ei ole merkitty partioiduiksi.",
        "rcfilters-filtergroup-significance": "Merkitys",
        "rcfilters-filter-minor-label": "Pienet muutokset",
        "rcfilters-filter-minor-description": "Muokkaukset, jotka on merkitty pieniksi.",
        "rcfilters-typeofchange-conflicts-hideminor": "\"Muutoksen tyyppi\" on ristiriidassa \"Pienet muutokset\" -suodattimen kanssa. Joitain muutostyyppejä ei voida merkitä \"pieniksi\".",
        "rcfilters-filtergroup-lastRevision": "Viimeisimmät versiot",
        "rcfilters-filter-lastrevision-label": "Viimeisin versio",
-       "rcfilters-filter-lastrevision-description": "Vain viimeisin muutos sivulle.",
+       "rcfilters-filter-lastrevision-description": "Vain viimeisin muutos sivuun.",
        "rcfilters-filter-previousrevision-label": "Ei viimeisin muutos",
        "rcfilters-filter-previousrevision-description": "Kaikki muutokset, jotka eivät ole viimeisin versio.",
        "rcfilters-filter-excluded": "Poissuljettu",
index 012ba17..f72ffcc 100644 (file)
        "expansion-depth-exceeded-warning": "Page dépassant la profondeur d’expansion maximale",
        "parser-unstrip-loop-warning": "Boucle non dépilable détectée",
        "unstrip-depth-warning": "Limite de récursion non dépilable dépassée ($1)",
+       "unstrip-depth-category": "Pages où la limite de profondeur de développement est dépassée",
+       "unstrip-size-warning": "Limite de taille de développement dépassée ($1)",
+       "unstrip-size-category": "Pages où la limite de taille de développement est dépassée",
        "converter-manual-rule-error": "Erreur détectée dans la règle manuelle de conversion de langue",
        "undo-success": "Cette modification va être annulée.\nVeuillez vérifier les différences ci-dessous, puis publier l’annulation si c’est bien ce que vous voulez faire.",
        "undo-failure": "Cette modification ne peut pas être défaite : cela entrerait en conflit avec les modifications intermédiaires.",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|octet|octets}}",
        "limitreport-expansiondepth": "Profondeur d’expansion maximale",
        "limitreport-expensivefunctioncount": "Nombre de fonctions d’analyse coûteuses",
+       "limitreport-unstrip-depth": "Profondeur de récursion de développement",
+       "limitreport-unstrip-depth-value": "$1/$2",
+       "limitreport-unstrip-size": "Taille de développement après expansion",
+       "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|octet|octets}}",
        "expandtemplates": "Expansion des modèles",
        "expand_templates_intro": "Cette page spéciale accepte un texte wiki et réalise récursivement l’expansion de tous les modèles qu’il contient.\nElle réalise aussi l’expansion des fonctions d’analyse prises en charge telles que\n<code><nowiki>{{</nowiki>#language:...}}</code> et des variables telles que\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nEn fait, elle réalise l’expansion de pratiquement tout ce qui est encadré par des doubles accolades.",
        "expand_templates_title": "Titre de la page, si le code utilise {{FULLPAGENAME}}, etc. :",
index 5ed594b..790240b 100644 (file)
        "expansion-depth-exceeded-warning": "עומק ההרחבה בדף גדול מדי",
        "parser-unstrip-loop-warning": "נמצאה לולאה בפריסה",
        "unstrip-depth-warning": "עומק הרקורסיה של הפריסה עבר את המגבלה ($1)",
+       "unstrip-depth-category": "דפים שבהם עומק הפריסה גדול מדי",
+       "unstrip-size-warning": "אורך הפריסה גדול מדי ($1)",
+       "unstrip-size-category": "דפים שבהם אורך הפריסה גדול מדי",
        "converter-manual-rule-error": "התגלתה שגיאה בכלל המרת שפה ידני",
        "undo-success": "ניתן לבטל את העריכה.\nאנא {{GENDER:|בדוק|בִדקי|בִדקו}} את השוואת הגרסאות שלהלן כדי לוודא שזה אכן מה ש{{GENDER:|אתה רוצה|את רוצה|אתם רוצים}} לעשות, ולאחר מכן {{GENDER:|שמור|שִמרי|שִמרו}} את השינויים למטה כדי לסיים את ביטול העריכה.",
        "undo-failure": "לא ניתן היה לבטל את העריכה עקב התנגשות עם עריכות מאוחרות יותר.",
        "limitreport-templateargumentsize-value": "{{PLURAL:$2|$1 מתוך בית אחד|$1 מתוך $2 בתים}}",
        "limitreport-expansiondepth": "עומק הפריסה הגבוה ביותר",
        "limitreport-expensivefunctioncount": "מספר פונקציות המפענח שגוזלות משאבים",
+       "limitreport-unstrip-depth": "עומק הרקורסיה של הפריסה",
+       "limitreport-unstrip-depth-value": "$1 מתוך $2",
+       "limitreport-unstrip-size": "אורך הפריסה לאחר ההרחבה",
+       "limitreport-unstrip-size-value": "{{PLURAL:$1|בית אחד|$1 בתים}} מתוך {{PLURAL:$2|בית אחד|$2 בתים}}",
        "expandtemplates": "פריסת תבניות",
        "expand_templates_intro": "הדף המיוחד הזה מקבל כמות מסוימת של טקסט ויקי ופורס את כל התבניות שבתוכו באופן רקורסיבי.\nהוא גם פורס פונקציות מפענח כגון\n<code><nowiki>{{</nowiki>#תנאי:...}}</code>, ומשתנים כגון\n<code><nowiki>{{</nowiki>יום נוכחי}}</code>.\nלמעשה, הוא פורס פחות או יותר כל דבר בסוגריים מסולסלים כפולים.",
        "expand_templates_title": "כותרת ההקשר לפענוח, בשביל משתנים כגון {{FULLPAGENAME}} וכדומה:",
index 14163b6..014c8e1 100644 (file)
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|बाइट}}",
        "limitreport-expansiondepth": "उच्चतम विस्तार गहराई",
        "limitreport-expensivefunctioncount": "महंगे पार्सर फंक्शनों की संख्या",
+       "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यह दोहरे कोष्ठकों में प्रेषित लगभग सब कुछ विस्तृत करता है।",
        "expand_templates_title": "कन्टेक्स्ट शीर्षक, जैसे {{FULLPAGENAME}} आदि के लिए:",
index fa38fca..1b66db2 100644 (file)
        "userlogout": "Odjavi se",
        "notloggedin": "Niste prijavljeni",
        "userlogin-noaccount": "Nemate suradnički račun?",
-       "userlogin-joinproject": "Pridružite se {{SITENAME}}",
+       "userlogin-joinproject": "Pridružite se projektu {{SITENAME}}",
        "createaccount": "Stvori račun",
        "userlogin-resetpassword-link": "Zaboravili ste zaporku?",
        "userlogin-helplink2": "Pomoć pri prijavi",
index 7e2f8e6..c1201c7 100644 (file)
@@ -56,7 +56,7 @@
        "tog-watchlisthideanons": "Celar de la listo l'editadi facita da anonima redakteri",
        "tog-watchlisthidepatrolled": "Celez patroliita chanji en la surveyo-listo",
        "tog-watchlisthidecategorization": "Celar la kategorizeso di pagini",
-       "tog-ccmeonemails": "Sendez a me exemplero di e-posti quin me sendos ad altra uzanti",
+       "tog-ccmeonemails": "Sendez a me exemplero di e-posti quin me sendos ad altra uzeri",
        "tog-diffonly": "Ne montrez pagino kontenajo sub diferi",
        "tog-showhiddencats": "Montrar celita kategorii",
        "tog-norollbackdiff": "Omisar difero-komparo pos retrorulo",
        "prefs-watchlist-edits-max": "Maxima nombro: 1000",
        "prefs-misc": "Mixaji",
        "prefs-resetpass": "Chanjar pasovorto",
+       "prefs-email": "Selekti pri e-posto (e-mail)",
        "prefs-rendering": "Aspekto",
        "saveprefs": "Registragar",
+       "restoreprefs": "Restaurar omna preferaji 'default' (en omna secioni)",
        "prefs-editing": "Grandeso dil areo por texto",
        "searchresultshead": "Preferaji di la rezultaji dil sercho",
        "recentchangesdays": "Dii montrota en la recenta chanji:",
        "timezoneregion-indian": "Indiana Oceano",
        "timezoneregion-pacific": "Pacifico",
        "allowemail": "Permisez e-posti de altra uzanti",
+       "email-allow-new-users-label": "Permisez e-posti de la nova uzeri",
        "prefs-namespaces": "Nomari",
        "prefs-files": "Arkivi",
+       "prefs-emailconfirm-label": "Konfirmado dil e-posto (e-mail):",
        "youremail": "Vua e-adreso:",
        "username": "{{GENDER:$1|Uzeronomo}}:",
        "prefs-memberingroups": "{{GENDER:$2|Membro}} di {{PLURAL:$1|grupo|grupi}}:",
        "yourrealname": "Reala nomo:",
        "yourlanguage": "Linguo:",
        "yournick": "Signaturo:",
+       "prefs-help-signature": "Komenti en la diskuto-pagini mustas signatesar, skribante 4 tildi (<nowiki>~~~~</nowiki>), qui transformesos en vua signaturo ed en l'indiko di la horo e dio quan vu signatis ol.",
        "badsiglength": "Vua signaturo es tro longa.\nOl mustas ne havar plu kam $1 {{PLURAL:$1|litero|literi}}.",
        "yourgender": "Quale vu preferas esar priskribata?",
        "gender-unknown": "Lor mencionar vu, la programaro uzos sexuo-neutrala vorti tam ofte kam posibla",
        "gender-male": "Ilu redaktas wikiopagini",
        "gender-female": "Elu redaktas wikiopagini",
+       "prefs-help-gender": "Indikar ica preferajo esas fakultativa.\nLa softwaro uzas ol por mencionar vu al altra uzeri, uzante l'adequata genro gramatikala.\nIca informo videsos publike.",
        "email": "Elek-posto",
+       "prefs-help-realname": "Uzar vua reala nomo esas fakultativa.\nSe vu uzos ol, to povas uzesar por atribuar a vu vua laboro.",
+       "prefs-help-email": "Informar vua adreso di e-posto esas fakultativa, tamen ol bezonesos se vu oblivior vua pasovorto e bezonor la sendo di nova pasovorto.",
+       "prefs-help-email-others": "Vu povas anke selektar se permisos altri skribar a vu per e-posto, per ligilo en vua uzanto-pagino o diskuto-pagino.\nVua e-posto adreso ne revelesos, kande l'altri skribos a vu.",
        "prefs-help-email-required": "E-postala adreso es bezonata.",
        "prefs-info": "Bazala informeso",
        "prefs-signature": "Signaturo",
        "recentchanges-legend-heading": "<strong>Noto:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (videz anke la [[Special:NewPages|listo di nova pagini]])",
        "rcfilters-other-review-tools": "Altra instrumenti por revizo",
+       "rcfilters-group-results-by-page": "Grupigar la rezulti segun pagino",
        "rcfilters-activefilters": "Agiva filtrili",
        "rcfilters-advancedfilters": "Rafinita filtrili",
        "rcfilters-show-new-changes": "Videz la maxim recenta chanji",
        "ancientpages": "Maxim anciena artikli",
        "move": "Movar",
        "movethispage": "Rinomizar ica pagino",
-       "unusedimagestext": "La sequanta arkivi existas ma ne enterigita en irga pagino.\nVoluntez remarkar ke altra ret-siti povus ligar ad arkivo per direta URL, e do ol povus esar listizita hike malgre ke on aktive uzas lo.",
+       "unusedimagestext": "La sequanta arkivi existas, ma ne esas enterigita en irga pagino.\nVoluntez remarkar ke altra ret-siti povus ligesar ad arkivo per direta URL, e do ol povus esar listizita hike malgre ke on aktive uzas lo.",
        "notargettitle": "Ne esas vakua pagino",
        "notargettext": "Vu ne definis en qua pagino agar ica funciono.",
        "pager-newer-n": "{{PLURAL:$1|plu nova 1|plu nova $1}}",
        "move-watch": "Surveyar ca pagino",
        "movepagebtn": "Movar pagino",
        "pagemovedsub": "Rinomizita sucese",
-       "movepage-moved": "'''\"$1\" esas movata ad \"$2\"'''",
+       "movepage-moved": "'''\"$1\" movesis ad \"$2\"'''",
        "movepage-moved-redirect": "Kreita ridirekto.",
        "movepage-moved-noredirect": "La kreado di ridirekto nuligesis.",
        "articleexists": "Pagino kun sama nomo ja existas od la nomo\nqua vu selektis ne esas valida.\nVoluntez selektar altra nomo.",
        "movereason": "Motivo:",
        "revertmove": "rekuperar",
        "delete_and_move_confirm": "Yes, efacez la pagino",
+       "move-leave-redirect": "Mantenez ridirektilo de ica pagino al altra",
        "export": "Exportacar pagini",
        "exportcuronly": "On inkluzas nur la nuna revizo, ne la kompleta versionaro",
        "export-addcattext": "Adjuntar pagini ek kategorio:",
        "htmlform-selectorother-other": "Altra",
        "htmlform-cloner-create": "Adjuntar plue",
        "logentry-delete-delete": "$1 {{GENDER:$2|efacis}} la pagino $3",
+       "logentry-delete-delete_redir": "$1 {{GENDER:$2|efacis}} la ridirektilo $3, per riskribo di ol",
        "logentry-delete-restore": "$1 {{GENDER:$2|restauris}} la pagino $3 ($4)",
        "logentry-delete-revision": "$1 {{GENDER:$2|modifikis}} videbleso di {{PLURAL:$5|la revizo|$5 revizi}} di la pagino $3: $4",
        "revdelete-content-hid": "celita kontenajo",
        "special-characters-group-arabic": "Arabiana",
        "special-characters-group-persian": "Persiana",
        "sessionprovider-nocookies": "''Bisquiti'' forsan esas desacendita. Certigez ke vu acendar ''bisquiti'' e riprobez.",
-       "randomrootpage": "Hazarda radikopagino"
+       "randomrootpage": "Hazarda radikopagino",
+       "log-action-filter-delete": "Tipo di efacado:"
 }
index d827833..ea1f26c 100644 (file)
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|byte}}",
        "limitreport-expansiondepth": "Massima profondità di espansione",
        "limitreport-expensivefunctioncount": "Numero funzioni parser dispendiose",
+       "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|byte}}",
        "expandtemplates": "Espandi i template",
        "expand_templates_intro": "Questa pagina speciale elabora un wikitesto espandendo tutti i template presenti.\nCalcola inoltre il risultato delle funzioni supportate dal parser come\n<code><nowiki>{{</nowiki>#language:…}}</code> e delle variabili di sistema quali\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>,\nvale a dire praticamente tutto ciò che si trova tra doppie parentesi graffe.",
        "expand_templates_title": "Contesto (per {{FULLPAGENAME}} ecc.):",
index d20092c..2a8e159 100644 (file)
        "uncategorizedcategories": "カテゴリ分類されていないカテゴリ",
        "uncategorizedimages": "カテゴリ分類されていないファイル",
        "uncategorizedtemplates": "カテゴリ分類されていないテンプレート",
+       "uncategorized-categories-exceptionlist": "#Special:UncategorizedCategoriesには記載すべきではないカテゴリのリストが含まれています。\"*\"で始まる1行に1つ。別の文字(空白を含む)で始まる行は無視されます。コメントには \"#\"を使用します。",
        "unusedcategories": "使われていないカテゴリ",
        "unusedimages": "使われていないファイル",
        "wantedcategories": "カテゴリページが存在しないカテゴリ",
index eeb13e6..ca13c96 100644 (file)
        "expansion-depth-exceeded-warning": "문서가 확장 깊이를 초과하였습니다",
        "parser-unstrip-loop-warning": "Unstrip의 반복을 감지했습니다",
        "unstrip-depth-warning": "Unstrip의 재귀 한도를 초과했습니다 ($1)",
+       "unstrip-depth-category": "Unstrip 깊이 제한을 초과한 문서",
+       "unstrip-size-warning": "Unstrip의 크기 제한을 초과했습니다 ($1)",
+       "unstrip-size-category": "Unstrip 크기 제한을 초과한 문서",
        "converter-manual-rule-error": "언어 변환 규칙을 수동으로 지정하는 도중 오류",
        "undo-success": "편집을 되돌릴 수 있습니다.\n이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.",
        "undo-failure": "중간의 다른 편집과 충돌하여 이 편집을 되돌릴 수 없습니다.",
        "stub-threshold-disabled": "비활성화됨",
        "recentchangesdays": "최근 바뀜에 보여줄 날짜 수:",
        "recentchangesdays-max": "최대 $1{{PLURAL:$1|일}}",
-       "recentchangescount": "기본으로 보여줄 편집 수:",
-       "prefs-help-recentchangescount": "ì\9d´ ì\84¤ì \95ì\9d\80 ìµ\9cê·¼ ë°\94ë\80\9c, ë¬¸ì\84\9c ì\97­ì\82¬ì\99\80 ê¸°ë¡\9dì\97\90 ì \81ì\9a©ë\90©ë\8b\88ë\8b¤.",
+       "recentchangescount": "최근 바뀜, 문서 역사, 기록에서 기본으로 보여줄 편집 수:",
+       "prefs-help-recentchangescount": "ìµ\9cë\8c\80 ê°\9cì\88\98: 1000",
        "prefs-help-watchlist-token2": "이것은 내 주시문서 목록의 웹 피드의 비밀 키입니다.\n이 키를 알고 있는 사람은 누구든지 내 주시문서 목록을 읽을 수 있으니 이 키를 공유하지 마세요.\n필요하다면 [[Special:ResetTokens|이 키를 재설정할 수 있습니다]].",
        "savedprefs": "설정을 저장했습니다.",
        "savedrights": "{{GENDER:$1|$1}}의 사용자 그룹이 저장되었습니다.",
        "recentchanges-label-minor": "사소한 편집",
        "recentchanges-label-bot": "봇이 수행한 편집",
        "recentchanges-label-unpatrolled": "아직 점검하지 않은 편집",
-       "recentchanges-label-plusminus": "ë°\94ì\9d´í\8a¸ë¡\9c í\91\9c기ë\90\9c ë°\94ë\80\90 ë¬¸ì\84\9c í\81¬기",
+       "recentchanges-label-plusminus": "문ì\84\9c í\81¬ê¸° ì°¨ì\9d´ë¥¼ ë°\94ì\9d´í\8a¸ ì\88\98ë¡\9c í\91\9c기",
        "recentchanges-legend-heading": "<strong>범례:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|새 문서 목록]]도 보세요)",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "보기",
        "rcfilters-tag-remove": "'$1' 제거",
        "rcfilters-legend-heading": "<strong>약어 목록:</strong>",
-       "rcfilters-other-review-tools": "다른 검토 도구",
+       "rcfilters-other-review-tools": "기타 검토 도구",
        "rcfilters-group-results-by-page": "문서별로 묶음",
        "rcfilters-activefilters": "사용 중인 필터",
        "rcfilters-advancedfilters": "고급 필터",
        "rcfilters-savedqueries-cancel-label": "취소",
        "rcfilters-savedqueries-add-new-title": "현재의 필터 설정 저장",
        "rcfilters-savedqueries-already-saved": "이 필터는 이미 저장되어 있습니다. 새로운 저장된 필터를 만들려면 설정을 변경하십시오.",
-       "rcfilters-restore-default-filters": "기본 필터 복구",
+       "rcfilters-restore-default-filters": "기본 필터로 설정 초기화하기",
        "rcfilters-clear-all-filters": "필터 모두 지우기",
        "rcfilters-show-new-changes": "최신 변경사항 보기",
-       "rcfilters-search-placeholder": "필터 바뀜 (메뉴를 사용하거나 필터 이름을 검색하세요)",
+       "rcfilters-search-placeholder": "검색용 필터 바꾸기 (메뉴를 사용하거나 필터의 이름을 검색하세요)",
        "rcfilters-invalid-filter": "유효하지 않은 필터",
-       "rcfilters-empty-filter": "활성화된 필터가 없습니다. 모든 기여가 표시됩니다.",
+       "rcfilters-empty-filter": "선택된 필터가 아무것도 없습니다. 모든 기여가 표시됩니다.",
        "rcfilters-filterlist-title": "필터",
        "rcfilters-filterlist-whatsthis": "이것들이 어떻게 동작합니까?",
        "rcfilters-filterlist-feedbacklink": "이 (새로운) 필터 도구에 대한 의견을 주세요",
        "rcfilters-state-message-subset": "필터의 결과가 다음의 범위가 더 넓은 {{PLURAL:$2|필터}}의 결과에 포함되기 때문에 이 필터는 효력이 없습니다 (구별을 위해 강조해 보십시오): $1",
        "rcfilters-state-message-fullcoverage": "이 그룹의 모든 필터를 선택하는 것은 아무 것도 선택하지 않는 것과 동일하므로 이 필터는 효력이 없습니다. 그룹은 다음을 포함합니다: $1",
        "rcfilters-filtergroup-authorship": "기여의 저자",
-       "rcfilters-filter-editsbyself-label": "ë\8b¹ì\8b ì\9d\98 변경사항",
+       "rcfilters-filter-editsbyself-label": "ë\8b¹ì\8b ì\9d´ ì§\81ì \91 í\96\89í\95\9c 변경사항",
        "rcfilters-filter-editsbyself-description": "당신의 기여.",
-       "rcfilters-filter-editsbyother-label": "다른 사용자 변경사항",
-       "rcfilters-filter-editsbyother-description": "ë\8b¹ì\8b ì\9d\84 ì \9cì\99¸한 모든 변경사항.",
+       "rcfilters-filter-editsbyother-label": "다른 사용자가 행한 변경사항",
+       "rcfilters-filter-editsbyother-description": "ë\8b¤ë¥¸ ì\82¬ë\9e\8cë\93¤ì\9d´ í\96\89한 모든 변경사항.",
        "rcfilters-filtergroup-userExpLevel": "사용자 등록 및 경험",
        "rcfilters-filter-user-experience-level-registered-label": "등록됨",
-       "rcfilters-filter-user-experience-level-registered-description": "로그인ë\90\9c í\8e¸ì§\91ì\9e\90.",
+       "rcfilters-filter-user-experience-level-registered-description": "로그인í\95\9c í\8e¸ì§\91ì\9e\90.",
        "rcfilters-filter-user-experience-level-unregistered-label": "등록 안 됨",
        "rcfilters-filter-user-experience-level-unregistered-description": "로그인하지 않은 편집자.",
        "rcfilters-filter-user-experience-level-newcomer-label": "신입 사용자",
        "rcfilters-filter-user-experience-level-learner-label": "학습자",
        "rcfilters-filter-user-experience-level-learner-description": "\"신입 사용자\"보다 경험이 더 많지만 \"능숙한 사용자\"보다는 적습니다.",
        "rcfilters-filter-user-experience-level-experienced-label": "능숙한 사용자",
-       "rcfilters-filter-user-experience-level-experienced-description": "30일 이상의 활동 및 500개 이상의 편집.",
+       "rcfilters-filter-user-experience-level-experienced-description": "30일 이상의 활동 및 500개 이상의 편집을 한 편집자.",
        "rcfilters-filtergroup-automated": "자동으로 된 기여",
        "rcfilters-filter-bots-label": "봇",
        "rcfilters-filter-bots-description": "자동 도구를 이용한 편집.",
        "rcfilters-filter-minor-label": "사소한 편집",
        "rcfilters-filter-minor-description": "기여자가 사소한 기여로 표시한 편집.",
        "rcfilters-filter-major-label": "사소하지 않은 편집",
-       "rcfilters-filter-major-description": "사소한 편집으로 표시ë\90\98ì§\80 ì\95\8aì\9d\80 í\8e¸ì§\91.",
+       "rcfilters-filter-major-description": "사소한 편집으로 표시í\95\98ì§\80 ì\95\8aì\9d\80 í\8e¸ì§\91.",
        "rcfilters-filtergroup-watchlist": "주시 중인 문서",
        "rcfilters-filter-watchlist-watched-label": "주시문서 목록에서",
        "rcfilters-filter-watchlist-watched-description": "주시문서 목록의 문서의 변경사항입니다.",
        "rcfilters-filter-watchlistactivity-seen-description": "변경사항이 발생한 이후로 방문한 적이 있는 문서의 변경사항입니다.",
        "rcfilters-filtergroup-changetype": "차이 종류",
        "rcfilters-filter-pageedits-label": "문서 편집",
-       "rcfilters-filter-pageedits-description": "위키 내용, 토론, 분류 설명에 대한 편집....",
+       "rcfilters-filter-pageedits-description": "위키 내용, 토론, 분류 설명에 대한 편집.",
        "rcfilters-filter-newpages-label": "문서 생성",
-       "rcfilters-filter-newpages-description": "ì\83\88 ë¬¸ì\84\9c를 ë§\8cë\93\9cë\8a\94 편집.",
+       "rcfilters-filter-newpages-description": "ì\83\88 ë¬¸ì\84\9c를 ë§\8cë\93¤ì\96´ ë\82¸ 편집.",
        "rcfilters-filter-categorization-label": "분류 차이",
-       "rcfilters-filter-categorization-description": "ë\84ë¥\98ì\97\90ì\84\9c ì¶\94ê°\80ë\90\98ê±°ë\82\98 ì \9cê±°ë\90\98ë\8a\94 í\8e\98ì\9d´ì§\80ì\9d\98 기록.",
+       "rcfilters-filter-categorization-description": "문ì\84\9cê°\80 í\8a¹ì \95 ë¶\84ë¥\98ì\97\90 ì¶\94ê°\80ë\90\98ê±°ë\82\98 ì \9cì\99¸ë\90\9c 기록.",
        "rcfilters-filter-logactions-label": "기록된 행위",
-       "rcfilters-filter-logactions-description": "ê´\80리ì \81 ì¡°ì¹\98, ê³\84ì \95 ë§\8cë\93¤ê¸°, í\8e\98ì\9d´ì§\80 ì\82­ì \9c, ì\97\85ë¡\9cë\93\9c...",
+       "rcfilters-filter-logactions-description": "ê´\80리ì\9e\90ì\9d\98 ì¡°ì¹\98, ê³\84ì \95 ë§\8cë\93¤ê¸°, ë¬¸ì\84\9c ì\82­ì \9c, ì\97\85ë¡\9cë\93\9c ë\93±",
        "rcfilters-hideminor-conflicts-typeofchange-global": "특정한 유형의 변경사항을 \"사소한 편집\"으로 지정할 수 없기 때문에 \"사소한 편집\" 필터는 하나 이상의 변경사항 유형 필터와 충돌합니다. 충돌되는 필터들은 위의 사용 중인 필터 영역에 표시됩니다.",
        "rcfilters-hideminor-conflicts-typeofchange": "특정한 종류의 변경사항은 \"사소한 편집\"으로 지정할 수 없으므로 이 필터는 다음 유형의 변경사항 필터와 충돌합니다: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "이 유형의 변경사항 필터는 \"사소한 편집\" 필터와 충돌합니다. 특정한 종류의 변경사항은 \"사소한 편집\"으로 지정할 수 없습니다.",
        "rcfilters-filtergroup-lastRevision": "최신판",
        "rcfilters-filter-lastrevision-label": "최신판",
-       "rcfilters-filter-lastrevision-description": "문서의 최근 변경사항만입니다.",
+       "rcfilters-filter-lastrevision-description": "각 문서의 최신판에 해당하는 변경사항만 보기.",
        "rcfilters-filter-previousrevision-label": "최신판이 아님",
-       "rcfilters-filter-previousrevision-description": "\"ìµ\9cì\8b í\8c\90\"ì\9d´ ì\95\84ë\8b\8c ëª¨ë\93  ë³\80ê²½ì\82¬í\95­ì\9e\85ë\8b\88ë\8b¤.",
+       "rcfilters-filter-previousrevision-description": "\"ìµ\9cì\8b í\8c\90\"ì\9d\84 ì \9cì\99¸í\95\9c ëª¨ë\93  ë³\80ê²½ì\82¬í\95­ ë³´ê¸°.",
        "rcfilters-filter-excluded": "제외됨",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:아님</strong> $1",
        "rcfilters-exclude-button-off": "선택 제외",
        "recentchangeslinked-page": "문서 이름:",
        "recentchangeslinked-to": "해당 문서를 가리키는 문서의 최근 바뀜 보기",
        "recentchanges-page-added-to-category": "[[:$1]]이(가) 분류에 추가되었습니다",
-       "recentchanges-page-added-to-category-bundled": "[[:$1]] 문서가 분류에 추가되었습니다. [[Special:WhatLinksHere/$1|이 문서는 다른 문서에 포함되어 있습니다]]",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] 문서가 분류에 추가되었습니다. [[Special:WhatLinksHere/$1|이 문서는 다른 문서의 내용 속에 포함되어 있습니다]]",
        "recentchanges-page-removed-from-category": "[[:$1]]이(가) 분류에서 제거되었습니다",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] 문서가 분류에서 제거되었습니다. [[Special:WhatLinksHere/$1|이 문서는 다른 문서에 포함되어 있습니다]]",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] 문서가 분류에서 제거되었습니다. [[Special:WhatLinksHere/$1|이 문서는 다른 문서의 내용 속에 포함되어 있습니다]]",
        "autochange-username": "미디어위키 자동 변경",
        "upload": "파일 올리기",
        "uploadbtn": "파일 올리기",
        "magiclink-tracking-isbn": "ISBN 매직 링크를 사용하는 문서",
        "magiclink-tracking-isbn-desc": "이 문서는 ISBN 매직 링크를 사용합니다. 이관 방법을 보려면 [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org]를 참조하십시오.",
        "specialloguserlabel": "작업 수행자:",
-       "speciallogtitlelabel": "대상 (문서 제목 또는 {{ns:user}}:사용자이름 으로 사용자 검색):",
+       "speciallogtitlelabel": "대상 (문서 제목 또는 \"{{ns:user}}:사용자이름\"으로 사용자 검색):",
        "log": "기록 목록",
        "logeventslist-submit": "보기",
        "all-logs-page": "모든 공개 기록",
-       "alllogstext": "{{SITENAME}}ì\9d\98 ì·¨ë\93\9d ê°\80ë\8a¥í\95\9c ëª¨ë\93  ê¸°ë¡\9dì\9d´ í\91\9cì\8b\9cë\90\98ì\96´ ì\9e\88ì\8aµë\8b\88ë\8b¤.\n기ë¡\9d ì¢\85ë¥\98, ì\82¬ì\9a©ì\9e\90 ì\9d´ë¦\84\8c\80ì\86\8c문ì\9e\90 êµ¬ë³\84), ì\98\81í\96¥ì\9d\84 ë°\9bë\8a\94 ë¬¸ì\84\9c\8c\80ì\86\8c문ì\9e\90 êµ¬ë³\84)를 ì\84 í\83\9dí\95´ì\84\9c ë²\94ì\9c\84를 ì¢\81í\98\80ì\84\9c 볼 수 있습니다.",
+       "alllogstext": "{{SITENAME}}ì\97\90ì\84\9c ë\82\98ì\98¤ë\8a\94 ëª¨ë\93  ê¸°ë¡\9dì\9d´ í\91\9cì\8b\9cë\90\98ì\96´ ì\9e\88ì\8aµë\8b\88ë\8b¤.\nì\9b\90í\95\98ì\8b ë\8b¤ë©´ ê¸°ë¡\9d ì¢\85ë¥\98, ì\82¬ì\9a©ì\9e\90 ì\9d´ë¦\84\8c\80ì\86\8c문ì\9e\90 êµ¬ë³\84), ì\98\81í\96¥ì\9d\84 ë°\9bë\8a\94 ë¬¸ì\84\9c\8c\80ì\86\8c문ì\9e\90 êµ¬ë³\84) ë\93±ì\9d\84 ì\84 í\83\9dí\95´ì\84\9c ë²\94ì\9c\84를 ì¢\81í\98\80ì\84\9c ì\82´í\8e´볼 수 있습니다.",
        "logempty": "일치하는 항목이 없습니다.",
        "log-title-wildcard": "다음 글로 시작하는 제목 검색",
        "showhideselectedlogentries": "선택한 기록 항목 보이기/숨기기",
        "tag-mw-changed-redirect-target": "넘겨주기 대상 변경",
        "tag-mw-changed-redirect-target-description": "넘겨주기 대상을 변경하는 편집",
        "tag-mw-blank": "비우기",
-       "tag-mw-blank-description": "문서를 비우는 편집",
+       "tag-mw-blank-description": "문서 내용을 비운 편집",
        "tag-mw-replace": "대체됨",
        "tag-mw-replace-description": "문서 내용 중 90% 보다 많은 내용을 제거한 편집",
        "tag-mw-rollback": "되돌리기",
-       "tag-mw-rollback-description": "ë\90\98ë\8f\8c리기 ë§\81í\81¬ë¥¼ ì\82¬ì\9a©í\95\98ì\97¬ ì\9d´ì \84 í\8e¸ì§\91ì\9d\84 ë\90\98ë\8f\8c리ë\8a\94 편집",
+       "tag-mw-rollback-description": "ë\90\98ë\8f\8c리기 ë§\81í\81¬ë¥¼ ì\82¬ì\9a©í\95\98ì\97¬ ì\9d´ì \84 í\8e¸ì§\91ì\9c¼ë¡\9c ë\90\98ë\8f\8c린 편집",
        "tag-mw-undo": "편집 취소",
        "tag-mw-undo-description": "편집 취소 링크를 사용하여 이전 편집을 취소하는 편집",
        "tags-title": "태그",
        "revdelete-unrestricted": "관리자에 대한 제한을 해제함",
        "logentry-block-block": "$1님이 {{GENDER:$4|$3}}님을 $5 {{GENDER:$2|차단했습니다}} $6",
        "logentry-block-unblock": "$1님이 {{GENDER:$4|$3}}님의 {{GENDER:$2|차단을 해제했습니다}}",
-       "logentry-block-reblock": "$1님이 {{GENDER:$4|$3}}님의 차단 기간을 $5 설정으로 {{GENDER:$2|바꾸었습니다}} $6",
+       "logentry-block-reblock": "$1님이 {{GENDER:$4|$3}}님의 차단 기간을 $5(으)로 {{GENDER:$2|바꾸었습니다}} $6",
        "logentry-suppress-block": "$1님이 {{GENDER:$4|$3}} 사용자를 $5 {{GENDER:$2|차단했습니다}} $6",
-       "logentry-suppress-reblock": "$1님이 {{GENDER:$4|$3}}님의 차단 기간을 $5 설정으로 {{GENDER:$2|바꾸었습니다}} $6",
+       "logentry-suppress-reblock": "$1님이 {{GENDER:$4|$3}}님의 차단 기간을 $5(으)로 {{GENDER:$2|바꾸었습니다}} $6",
        "logentry-import-upload": "$1님이 $3 문서를 파일 올리기로 {{GENDER:$2|가져왔습니다}}",
        "logentry-import-upload-details": "$1님이 $3 문서 ({{PLURAL:$4|판}} $4개)를 파일 올리기로 {{GENDER:$2|가져왔습니다}}",
        "logentry-import-interwiki": "$1님이 $3 문서를 다른 위키에서 {{GENDER:$2|가져왔습니다}}",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|바이트}}",
        "limitreport-expansiondepth": "최대 전개 깊이",
        "limitreport-expensivefunctioncount": "부하 높은 파서 함수 수",
+       "limitreport-unstrip-depth": "Unstrip 재귀 깊이",
+       "limitreport-unstrip-depth-value": "$1/$2",
+       "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사실 두 개의 중괄호 사이에 있는 것은 거의 모두 풀어줍니다.",
        "expand_templates_title": "문서 이름 ({{FULLPAGENAME}} 등):",
index fe009cb..7b41b64 100644 (file)
@@ -49,7 +49,7 @@
        "tog-shownumberswatching": "Hejmara bikarhênerên dişopînin nîşan bide",
        "tog-oldsig": "Îmzeya heye:",
        "tog-fancysig": "Îmzeyê wek wîkîtekstê nîşan bide (bê girêdana otomatîk)",
-       "tog-uselivepreview": "Pêşdîtina \"zindî\" bi kar bîne",
+       "tog-uselivepreview": "Bêyî ku rûpel jinûve were barkirin, pêşdîtinan nîşan bide",
        "tog-forceeditsummary": "Hinga kurteyeke vala hate tomarkirin min agahdar bike",
        "tog-watchlisthideown": "Guherandinên min ji lîsteya şopandinê veşêre",
        "tog-watchlisthidebots": "Guherandinên bot'an ji lîsteya şopandinê veşêre",
@@ -60,7 +60,7 @@
        "tog-ccmeonemails": "Kopiyên e-nameyên min ji bikarhênerên din re şandî, ji min re jî bişîne.",
        "tog-diffonly": "Li cem guhertinan, naveroka rûpelê nîşan nede",
        "tog-showhiddencats": "Kategoriyên veşartî bibîne",
-       "tog-norollbackdiff": "Ciyawaziyê piştî şûndekirinê veşêre",
+       "tog-norollbackdiff": "Ciyawaziyê piştî şûndekirinê nîşan nede",
        "underline-always": "Hertim",
        "underline-never": "Qet",
        "underline-default": "Tercîhên lêgerokê",
        "laggedslavemode": "'''Zanibe:''' Dibe ku di vê rûpelê de rojanekirinên dawî nîn bin.",
        "readonly": "Bingeha daneyan hatiye girtin",
        "enterlockreason": "Sedemeke bestinê binivîse, herwiha demeke texmînkirî ji bo vebûna bestinê binivîse!",
-       "readonlytext": "Bingeha daneyên {{SITENAME}} ji bo guherandinan û gotarên nû hatiye girtin.\n\nSedema girtinê ev e: $1",
+       "readonlytext": "Bingeha daneyên {{SITENAME}} ji bo guherandinan û gotarên nû hatiye girtin, paşê wê ew vegere halê xwe yê normal.\n\nSedema girtinê yê rêvebirê ku vê girtiye ev e: $1",
        "missingarticle-rev": "(versiyon#: $1)",
        "missingarticle-diff": "(Cudahî: $1, $2)",
        "readonly_lag": "Bingeha daneyan otomatîk hate girtin, ji bo server ên bingeha daneyên girêdayî karibin xwe bikêrhatî bikin.",
        "missingcommenttext": "Ji kerema xwe kurteya naverokê li jêr binivisîne.",
        "missingcommentheader": "<strong>Zanibe:</strong> Te sernav/mijarek nenivîsandîye. Heke tu niha carekî din li ser \"$1\" bitikînî, ev guherandina te bê sernav/mijar wê were tomarkirin.",
        "summary-preview": "Pêşdîtina kurtenivîsê:",
-       "subject-preview": "Pêşdîtina sernivîsê:",
+       "subject-preview": "Pêşdîtina mijarê:",
        "previewerrortext": "Wextê pêşdîtina guhertinên te, pirsgirekek derket.",
        "blockedtitle": "Bikarhêner hate astengkirin",
        "blockedtext": "'''Navê te yê bikarhêneriyê an jî IP'ya te hate astengkirin.'''\n\nAstengkirin ji aliyê $1 ve pêkhat. Sedema astengkirina te ev e: ''$2''.\n\n* Destpêka astengkirinê: $8\n* Xelasbûna astengkirinê: $6\n* Astengkirin ji van re: $7\n\nTu dikarî bi $1  re an jî [[{{MediaWiki:Grouppage-sysop}}|koordînatorên]] din re ji bo astengkirinê bikevî têkiliyê. Tu nikarî 'Ji vê/vî bikarhênerê/î re e-name bişîne' bikarbînî heta  di [[Special:Preferences|tercihên xwe]] de navnîşana e-nameyeke derbasdar bikarbînî û tu ji bo bikaranîna vê fonksiyonê nehatî astengkirin.\n\nIP'ya te ya niha $3 ye, û ID'ya astengkirina te #$5 e. Ji kerema xwe yek ji van hejmaran têxe nav peyama xwe.",
        "page_first": "ya pêşîn",
        "page_last": "ya paşîn",
        "histlegend": "Rênîşan: ({{int:cur}}) = cudahiya nav vê û versiyona niha, ({{int:last}}) = cudahiya nav vê û ya berî vê, '''{{int:minoreditletter}}''' = guhertina biçûk",
-       "history-fieldset-title": "Li dîrokê bigere",
+       "history-fieldset-title": "Li dîroka guhertinan bigere",
        "history-show-deleted": "Tenê yên jêbirî",
        "histfirst": "kevintirîn",
        "histlast": "nûtirîn",
        "booksources-search": "Lêgerîn",
        "booksources-text": "Li vir listek ji lînkên rûpelên, yê pirtûkên nû ya kevin difiroşin, heye. Hên jî li vir tu dikarî înformasyonan li ser wan pirtûkan tê derxê.",
        "specialloguserlabel": "Bikarhêner:",
-       "speciallogtitlelabel": "Armanc (sernav an bikarhêner)",
+       "speciallogtitlelabel": "Armanc (sernav an ji bo bikarhêner, {{ns:user}}ːnavê bikarhêneriyê)",
        "log": "Têketin",
        "logeventslist-submit": "Nîşan bide",
-       "all-logs-page": "Hemû têketin",
+       "all-logs-page": "Hemû têketinên giştî",
        "alllogstext": "Hemû têketinên {{SITENAME}} li jêr tên nîşandan.\nTu dikarî ji xwe re têketinekê hilbijêrî, navê bikarhêneriyê an navê rûpelekê binivîse û agahiyan li ser wê bibîne.",
        "logempty": "Tiştek di vir de nîne.",
        "log-title-wildcard": "Li sernavên bi vê dest pê dikin bigere",
        "wlheader-enotif": "Agahdariya e-nameyan hate çalakkirin",
        "wlheader-showupdated": "Ev rûpela hatî guhertin dema te lê meyzand bi '''nivîsa stûr''' tê xuyakirin.",
        "wlnote": "Niha {{PLURAL:$1|xeyrandinê|'''$1''' xeyrandinên}} dawî yê {{PLURAL:$2|seetê|'''$2''' seetên}} dawî {{PLURAL:$1|tê|tên}} dîtin.",
-       "wlshowlast": "Guhertinên berî $1 saetan, $2 rojan, ya  nîşan bide",
+       "wlshowlast": "Guhertinên berî $1 saetan, $2 rojan nîşan bide",
        "watchlist-hide": "Veşêre",
        "watchlist-submit": "Nîşan bide",
        "wlshowhideminor": "guherandinên biçûk",
index ceb8d95..a14ba82 100644 (file)
        "right-sendemail": "Versjik e-mail aan anger gebroekers",
        "right-managechangetags": "Maak en (de)aktiveer [[Special:Tags|labels]]",
        "right-applychangetags": "Wies [[Special:Tags|labels]] tou aan bewirkinge",
+       "right-changetags": "Veug en haol willekäörige [[Special:Tags|labels]] tou en eweg van versies en logbookregele.",
        "right-deletechangetags": "Sjaf [[Special:Tags|labels]] eweg van de database",
        "grant-generic": "Rechtegroep \"$1\"",
        "grant-group-page-interaction": "Wirk mit pagina's",
        "rcfilters-highlighted-filters-list": "Oetgeleech: $1",
        "rcfilters-quickfilters": "Opgesjlage filters",
        "rcfilters-quickfilters-placeholder-title": "Nag gein opgeslage filtjers",
+       "rcfilters-quickfilters-placeholder-description": "Veur dien filterinstèllinge op te slaon en later te kónne herbroeke, klik op 't blaadwiezerpictogram in 't Aktieve-Filtergebeed hie-ónger.",
        "rcfilters-savedqueries-defaultlabel": "Opgesjlage filters",
        "rcfilters-savedqueries-rename": "Herneum",
        "rcfilters-savedqueries-setdefault": "Stèl in es standerd",
        "rcfilters-savedqueries-apply-and-setdefault-label": "Sjtandaard filter aanmake",
        "rcfilters-savedqueries-cancel-label": "Braek aaf",
        "rcfilters-savedqueries-add-new-title": "Hujige filterinstèllinge opsjlaon",
+       "rcfilters-savedqueries-already-saved": "Dees filters zint al opgeslage. Veranger dien instèlling veur 'ne nuje filter op te slaon.",
        "rcfilters-restore-default-filters": "Zèt sjtanderd filters trögk",
        "rcfilters-clear-all-filters": "Sjaf alle filters eweg",
        "rcfilters-show-new-changes": "Tuin nuujste wieziginge",
-       "rcfilters-search-placeholder": "Filter recènte verangeringe (blajer of begin mit intikke)",
+       "rcfilters-search-placeholder": "Filter verangeringe (gebroek 't menu of zeuk op filternaam)",
        "rcfilters-invalid-filter": "Óngeljige filter",
        "rcfilters-empty-filter": "Gein aktief filters. Alle biedrage waere waergegaeve.",
        "rcfilters-filterlist-title": "Filters",
        "rcfilters-highlightmenu-title": "Kees 'n kluuer",
        "rcfilters-highlightmenu-help": "Kees 'n kluuer veur dees eigesjappe oet te lichte",
        "rcfilters-filterlist-noresults": "Gein filters gevónje",
+       "rcfilters-noresults-conflict": "Gein rizzeltaote gevónje ómdet de zeukcriteria conflictere mit einanger",
+       "rcfilters-state-message-subset": "Deze filter haet gein effèk ómdet de rizzeltaote ouch waere gefilterd door {{PLURAL:$2|de breiere filter|de breier filters}} (perbeer dees te markere veur ze te óngersjeie): :$1",
+       "rcfilters-state-message-fullcoverage": "'t Sillektere van alle filters in dees groep duit 'tzelvende es geine filter sillektere, wodoor deze filter gein effèk haet. De groep bevatj: $1",
        "rcfilters-filtergroup-authorship": "Sjriever van de biedraag",
        "rcfilters-filter-editsbyself-label": "Verangeringe van dichzelf",
        "rcfilters-filter-editsbyself-description": "Dien eige biedraag.",
        "rcfilters-filter-user-experience-level-unregistered-label": "Neet-vasgelag",
        "rcfilters-filter-user-experience-level-unregistered-description": "Bewirkers die neet zeen aangemeld.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Nujelinge",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Aangemelde gebroekers die minder es 10 bewirkinge höbbe gemaak of gein 4 daag aktief zeen gewaes.",
+       "rcfilters-filter-user-experience-level-learner-label": "Lieërlinge",
+       "rcfilters-filter-user-experience-level-learner-description": "Aangemelde gebroekers mit mieër ervarings es \"nujelinge\", meh minder es \"ervare gebroekers\".",
+       "rcfilters-filter-user-experience-level-experienced-label": "Ervare gebroekers",
+       "rcfilters-filter-user-experience-level-experienced-description": "Aangemelde gebroekers mit mieër es 500 bewirkinge en 30 daag van aktiviteit.",
+       "rcfilters-filtergroup-automated": "Autematische biedraag",
        "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-bots-description": "Bewirkinge mit behölp van geautomatiseerde hölpmiddele.",
        "rcfilters-filter-humans-label": "Minsjelik (geine bot)",
+       "rcfilters-filter-humans-description": "Bewirkinge door miensjelike gebroekers.",
+       "rcfilters-filtergroup-reviewstatus": "Beoeardeilingsstaot",
+       "rcfilters-filter-patrolled-label": "Gecontroleerd",
+       "rcfilters-filter-patrolled-description": "Bewirkinge gemarkeerd es gecontroleerd.",
+       "rcfilters-filter-unpatrolled-label": "Óngecontroleerd",
+       "rcfilters-filter-unpatrolled-description": "Bewirkinge die neet zeen gemarkeerd wore es gecontroleerd.",
+       "rcfilters-filtergroup-significance": "Wichtigheid",
+       "rcfilters-filter-minor-label": "Klein bewirkinge",
+       "rcfilters-filter-minor-description": "Bewirkinge die zeen gelabeld door de gebroeker es klein.",
+       "rcfilters-filter-major-label": "Gein klein bewirkinge",
+       "rcfilters-filter-major-description": "Bewirkinge die neet zint gelabeld wore es klein.",
+       "rcfilters-filtergroup-watchlist": "Gevolgde pagina's",
        "rcfilters-filter-watchlist-watched-label": "Op de volglies",
+       "rcfilters-filter-watchlist-watched-description": "Verangeringe aan pagina's op dien volglies.",
        "rcfilters-filter-watchlist-watchednew-label": "Nuuj volgliesverangeringe",
+       "rcfilters-filter-watchlist-watchednew-description": "Verangeringe aan pagina's die op dien volglies staon die se nag neet höbs bezoch saer de verangering.",
        "rcfilters-filter-watchlist-notwatched-label": "Neet op de volglies",
+       "rcfilters-filter-watchlist-notwatched-description": "Al behauve verangeringe aan pagina's die op dien volglies staon.",
+       "rcfilters-filtergroup-watchlistactivity": "Volgliesaktiviteit",
+       "rcfilters-filter-watchlistactivity-unseen-label": "Ónbezochde verangeringe",
+       "rcfilters-filter-watchlistactivity-unseen-description": "Verangeringe aan pagina's die se nag neet höbs bezoch saer de verangering.",
+       "rcfilters-filter-watchlistactivity-seen-label": "Bezochde verangeringe",
+       "rcfilters-filter-watchlistactivity-seen-description": "Verangeringe aan pagina's die se höbs bezoch saer de verangering.",
+       "rcfilters-filtergroup-changetype": "Saort aan verangering",
        "rcfilters-filter-pageedits-label": "Paginabewirkinge",
+       "rcfilters-filter-pageedits-description": "Verangeringe aan de wiki-inhawd, discussies, categoriebesjrievinge...",
+       "rcfilters-filter-newpages-label": "Nuuj pagina's",
        "rcfilters-filter-newpages-description": "Bewirkinge die 'n nuuj pagina aanmake.",
+       "rcfilters-filter-categorization-label": "Categorieverangeringe",
+       "rcfilters-filter-categorization-description": "Tuin categorisatie van pagina's.",
        "rcfilters-filter-logactions-label": "Geregistreerde akties",
+       "rcfilters-filter-logactions-description": "Administratief hanjelinge, nuuj konto's, eweggesjafde pagina's, uploads...",
+       "rcfilters-hideminor-conflicts-typeofchange": "Bestumde saorte aan verangeringe kónne neet waer aangemirk es \"klein\", dus deze filter is in stried mit de volgende saorte verangeringsfilters: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Dit type aan verangeringsfilter is in stried mit de \"kleine verangeringe\"-filter. Bestumde types aan verangeringe kónne neet es \"klein\" waere aangeweze.",
+       "rcfilters-filtergroup-lastRevision": "Litste versies",
+       "rcfilters-filter-lastrevision-label": "Litste versie",
+       "rcfilters-filter-lastrevision-description": "Allein de recènste verangering aan de pagina.",
+       "rcfilters-filter-previousrevision-label": "Neet de litste versie",
+       "rcfilters-filter-previousrevision-description": "Alle verangeringe die neet de \"litste versie\" zeen.",
+       "rcfilters-filter-excluded": "Oetgeslaote",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:neet</strong> $1",
+       "rcfilters-exclude-button-off": "Sloet gesillekteerde oet",
+       "rcfilters-exclude-button-on": "Sloet gesillekteerde oet",
+       "rcfilters-view-tags": "Gelabelde bewirkinge",
+       "rcfilters-view-namespaces-tooltip": "Filter rizzeltaote op naamruumde",
+       "rcfilters-view-tags-tooltip": "Filter rizzeltaote middels bewirkingslabels",
+       "rcfilters-view-return-to-default-tooltip": "Trök nao 't filterhoufmenu",
+       "rcfilters-view-tags-help-icon-tooltip": "Mieër infermasie euver gelabelde bewirkinge",
+       "rcfilters-liveupdates-button": "Live-updates",
+       "rcfilters-liveupdates-button-title-on": "Zèt live-updates oet",
+       "rcfilters-liveupdates-button-title-off": "Tuin nuuj verangeringe op 't moment det ze plaatshöbbe",
+       "rcfilters-watchlist-markseen-button": "Markeer alle verangeringe es bezoch",
+       "rcfilters-watchlist-edit-watchlist-button": "Bewirk dien volglies",
+       "rcfilters-watchlist-showupdated": "Verangeringe aan pagina's die se neet höbs bezoch saer de verangeringe zint aangebrach wore, waere <strong>diek</strong> en mit gevölde opsommingsteikes getuind.",
+       "rcfilters-preference-label": "Verstaek de verbaeterde versie van Recènte Verangeringe",
+       "rcfilters-preference-help": "Zèt 't aad uterlik van de pagina trök, inclusief alle hölpmiddele die saer den zint tougeveug wore.",
+       "rcfilters-filter-showlinkedfrom-label": "Tuin verangeringe op pagina's gelink vanaaf",
+       "rcfilters-filter-showlinkedfrom-option-label": "<strong>Pagina's gelink vanaaf</strong> de gesillekteerde pagina",
+       "rcfilters-filter-showlinkedto-label": "Tuin verangeringe op pagina's gelink aan",
+       "rcfilters-filter-showlinkedto-option-label": "<strong>Pagina's gelink aan</strong> de gesillekteerde pagina",
+       "rcfilters-target-page-placeholder": "Veur 'ne paginanaam (of categorie) in",
        "rcnotefrom": "{{PLURAL:$5|Verangering|Verangeringe}} saer <strong>$3 óm $4</strong> (maximaal <strong>$1</strong> {{PLURAL:$1|verangering|verangeringe}}).",
+       "rclistfromreset": "Stèl de datumsilleksie oppernuuj in",
        "rclistfrom": "Tuin de verangeringe vanaaf $3 $2",
        "rcshowhideminor": "$1 klein bewèrkinge",
        "rcshowhideminor-show": "Tuin",
        "uploadbtn": "bestandj uploade",
        "reuploaddesc": "Truuk nao 't uploadformeleer.",
        "upload-tryagain": "Wèrk bestandjsbesjrieving bie",
+       "upload-tryagain-nostash": "Versjik 't oppernuuj ge-uploade bestandj en de aangepasde besjrieving",
        "uploadnologin": "Neet aangemèld",
-       "uploadnologintext": "De mos [[Special:UserLogin|zien aangemèld]] om besjtande te uploade.",
+       "uploadnologintext": "Doe mós $1 veur bestenj te kónne uploade.",
        "upload_directory_missing": "De uploadmap ($1) is neet aanwezig en kos neet aangemaak waere door de webserver.",
        "upload_directory_read_only": "De webserver kin neet sjrieve in de uploadmap ($1).",
        "uploaderror": "fout in 't uploade",
        "upload-recreate-warning": "'''Waorsjoewing: dr is e bestandj mit deze naam verwiederd of hernump.'''\n\nHiejonger waere t verwiederlogbook en t hernummingslogbook veur dees pagina waergaeve:",
        "uploadtext": "Gebroek 't óngersjtaond formeleer óm besjtande te uploade.\nÓm ierder biegedone besjtande te betrachte of te zeuke, gank nao de [[Special:FileList|lies van geüploade besjtande]].\nUploads waere ouch biegehauwte in 't [[Special:Log/upload|uploadlogbook]], ewegsjaffinge in 't [[Special:Log/delete|wislogbook]]\n\nGebroek óm 'n plaetje of 'n besjtand in 'n pagina op te numme 'ne link in de vörm:\n* '''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:Besjtand.jpg]]</nowiki>''' veur vól versies\n* '''<nowiki>[[</nowiki>{{ns:file}}<nowiki>:Besjtand.png|200px|thumb|alternatieve teks]]</nowiki>''' veur 'n 200px breid plaetje mit alternatieve teks es besjrieving\nof veur mediabesjtande:\n* '''<nowiki>[[</nowiki>{{ns:media}}<nowiki>:Besjtand.ogg]]</nowiki>''' óm gewoen nao 't besjtand te verwieze zónger 't waer te gaeve\n\nDe lètste link is bedoeld veur mediabesjtande die gein plaetje zeen.",
-       "upload-permitted": "Toegelaote bestandstypes: $1.",
-       "upload-preferred": "Aangeweze bestandstypes: $1.",
-       "upload-prohibited": "Verbaoje bestandstypes: $1.",
+       "upload-permitted": "Toegelaote {{PLURAL:$2|bestandjstype|bestandjstypes}}: $1.",
+       "upload-preferred": "Aangeweze {{PLURAL:$2|bestandjstype|bestandjstypes}}: $1.",
+       "upload-prohibited": "Verbaoje {{PLURAL:$2|bestandjstype|bestandjstypes}}: $1.",
        "uploadlogpage": "Uploadlogbook",
        "uploadlogpagetext": "Hieonger de lies mit de meist recent ge-uploade besjtande. Alle tiede zunt servertiede.",
        "filename": "Besjtandsnaom",
        "largefileserver": "'t Bestandj is groter dan de instelling van de server toestuit.",
        "emptyfile": "'t Besjtand wats re höbs geupload is laeg. Dit kump waorsjienliek door 'n typfout in de besjtandsnaom. Kiek estebleef ofs te dit besjtand wirkelik wils uploade.",
        "windows-nonascii-filename": "Deze wiki ongersteunt gein bestandjsname mit speciaal teikes.",
-       "fileexists": "D'r is al e besjtand mit dees naam, bekiek <strong>[[:$1]]</strong> of se dat besjtand mesjien wils vervange.\n[[$1|thumb]]",
+       "fileexists": "E bestandj mit deze naam besteit al.\nControleer <strong>[[:$1]]</strong> es se ónzeker bös of se 't hujig bestandj wils euversjrieve.\n[[$1|thumb]]",
        "filepageexists": "De besjrievingspagina veur dit besjtand besjteit al op <strong>[[:$1]]</strong>, meh d'r besjteit gein besjtand mit deze naam. De samevatting dies te höbs opgegaeve zal neet op de besjrievingspagina versjiene. Bewirk de pagina handjmaotig óm dien besjrieving dao te tuine.\n[[$1|thumb]]",
-       "fileexists-extension": "'n bestand met dezelfde naam bestuit al: [[$2|thumb]]\n* Naam van 't geüploade bestand: <strong>[[:$1]]</strong>\n* Naam van 't bestaonde bestand: <strong>[[:$2]]</strong>\nLèver 'ne angere naam te keze.",
+       "fileexists-extension": "E bestandj mit dezelfde naam bestuit al: [[$2|thumb]]\n* Naam van 't geüpload bestandj: <strong>[[:$1]]</strong>\n* Naam van 't bestäönd bestandj: <strong>[[:$2]]</strong>\nWils se mesjiens leber 'ne óngersjeiendjere naam broeke?",
        "fileexists-thumbnail-yes": "'t Liek 'n afbeilding van 'n verkleinde grootte te zeen ''(thumbnail)''. [[$1|thumb]]\nLèver 't bestand <strong>[[:$1]]</strong> te controlere.\nEs 't gecontroleerde bestand dezelfde afbeilding van oorspronkelike grootte is, is 't neet noodzakelik 'ne extra thumbnail te uploade.",
        "file-thumbnail-no": "De bestandsnaam begint met <strong>$1</strong>.\n't Liek 'n verkleinde afbeelding te zeen ''(thumbnail)''.\nEsse deze afbeelding in volledige resolutie höbs, upload dae afbeelding den. Wiezig anges estebleef de bestandsnaam.",
        "fileexists-forbidden": "d'r Besteit al 'n bestand met deze naam det neet kin waere euevergesjreve. Upload dien bestand onger 'ne angere naam.\n[[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "d'r Besteit al 'n bestand met deze naam bie de gedeilde bestenj. Upload 't bestand onger  'ne angere naam.\n[[File:$1|thumb|center|$1]]",
+       "fileexists-no-change": "d'n Upload is 'n exakte kopie vanne hujige versie van <strong>[[:$1]]</strong>.",
+       "fileexists-duplicate-version": "d'n Upload is 'n exakte kopie van {{PLURAL:$2|'n ajer versie|ajer versies}} van <strong>[[:$1]]</strong>.",
        "file-exists-duplicate": "Dit besjtandj is identiek aon {{PLURAL:$1|'t volgende besjtandj|de volgende besjtande}}:",
        "file-deleted-duplicate": "n Bestandj det identiek is aan dit bestandj ([[:$1]]) is veurhaer verwiederd.\nRaodpleeg t verwiederingslogbook veurdet se wiejer geis.",
+       "file-deleted-duplicate-notitle": "'n Eweggesjaf bestandj is aangetroffe det identiek is aan dit bestandj, en de naam van 't bestandj is óngerdrök.\nVraog emes dae óngerdrökdje bestandjsgegaeves kan bekieke veur de situaasje oppernuuj te beoeardeile veurdet se 't bestandj oppernuuj toeveugs.",
        "uploadwarning": "Upload waarsjuwing",
        "uploadwarning-text": "Pas de ongerstaonde bestandjsbesjrieving aan en perbeer t daonao opnuuj.",
+       "uploadwarning-text-nostash": "Upload 't bestandj oppernuuj; pas de besjrieving hie-ónger aan en perbeer 't oppernuuj.",
        "savefile": "Bestand opsjlaon",
        "uploaddisabled": "Uploade is oetgesjakeld",
        "copyuploaddisabled": "t Uploade van bestenj via nen URL is oetgezat.",
        "uploaddisabledtext": "'t uploade van bestenj is oetgesjakeld.",
        "php-uploaddisabledtext": "PHP-bestanduploads zeen oetgesjakeld. Controleer a.u.b. de file_uploads-instelling.",
        "uploadscripted": "Dit bestandj bevat HTML- of scriptcode die foutief door diene browser weergegaeve kinne waere.",
+       "upload-scripted-pi-callback": "Kan gei bestandj uploade det instruksjes veur XML-stylesheetverwirking haet.",
+       "upload-scripted-dtd": "Kan gein SVG-bestenj uploade die 'n DTD-declaratie bevatte die neet aan de standerd volduit.",
+       "uploaded-script-svg": "Scripbaar element \"$1\" in 't ge-upload SVG-bestandj gevónje.",
+       "uploaded-hostile-svg": "Ónveilige CSS in 't \"style\"-element van 't ge-upload SVG-bestandj gevónje.",
+       "uploaded-event-handler-on-svg": "'t Instèlle van de event-handlereigensjappe <code>$1=\"$2\"</code> is neet toegestange in SVG-bestenj.",
+       "uploaded-href-unsafe-target-svg": "href nao ónveilige gegaeves: URI-doel <code>&lt;$1 $2=\"$3\"&gt;</code> in 't geüpload SVG-bestandj vónje.",
        "uploadvirus": "'t Bestand bevat 'n virus! Details: $1",
        "uploadjava": "'t Bestandj is e ZIP-bestandj det 'n Java .class-bestandj bevat.\n't Uploade van Java-bestenj is neet toegestaon omdet hiemit beveiligingsinstellinge omzeild kinne waere.",
        "upload-source": "Brónbestandj",
        "upload-too-many-redirects": "De URL bevadde te väöl doorverwiezinge",
        "upload-http-error": "dr Is n HTTP-fout opgetraoje: $1",
        "upload-copy-upload-invalid-domain": "Kopië oplajen is neet besjikbaar in dit domein.",
+       "upload-dialog-disabled": "Bestandjsupload mit behölp van 't dialoogvinster is oetgezatj op deze wiki.",
        "upload-dialog-title": "Besjtand uploade",
        "upload-dialog-button-cancel": "Aafbraeke",
        "upload-dialog-button-back": "Trök",
        "backend-fail-notsame": "Dao besjteit al 'n neet-identiek besjtand op de plaats $1.",
        "backend-fail-invalidpath": "$1 is gein geljig opslaagpad.",
        "backend-fail-delete": "Kós bestjand $1 neet ewegsjaffe.",
+       "backend-fail-describe": "Kós de metadata neet aanpasse veur 't bestandj \"$1\".",
        "backend-fail-alreadyexists": "'t Besjtand $1 besjteit al.",
        "backend-fail-store": "'t Waes neet mäögelik 't besjtand $1 op te sloon op lokasie $2.",
        "backend-fail-copy": "Besjtand $1 kós neet nao $2 gekopieerd waere.",
        "backend-fail-read": "Kós bestjand $1 neet laeze.",
        "backend-fail-create": "Kós bestandj $1 neet sjrieve.",
        "backend-fail-maxsize": "'t Waar neet meugelik 't bestandj $1 te besjrieve went 't is grótter es {{PLURAL:$2|eine byte|$2 byte}}.",
-       "backend-fail-readonly": "Vannen opslaag \"$1\" kin op dit memènt allein gelaeze waere. De opgegaeve raeje is: \"$2\"",
+       "backend-fail-readonly": "Vannen opslaag \"$1\" kin op dit memènt allein gelaeze waere. De opgegaeve raeje is: <em>$2</em>",
        "backend-fail-synced": "'t Bestandj \"$1\" bevindj zich in 'nen ónsamehangendje toestandj inne intern opslaagbackends.",
        "backend-fail-connect": "Kós de bestandjsbackend neet verbinje mitte opslaagbackend \"$1\".",
        "backend-fail-internal": "'n Ónbekèndje fout is ópgetaoje innen opslaagbackend \"$1\".",
        "backend-fail-contenttype": "Kós 't inhawdtype van 't bestandj om es \"$1\" op te sjlaon neet bepaole.",
        "backend-fail-batchsize": "Reiks van $1 {{PLURAL:$1|bestandjsoperatie|bestandjsoperaties}} in de opslaagbackend; de limiet is $2 {{PLURAL:$2|operatie|operaties}}.",
-       "backend-fail-usable": "Kós 't bestandj $1 neet besjraeve vanwaenge te mèn rèchte of aafwaezige mappe/kóntaeners.",
+       "backend-fail-usable": "Kós 't bestandj $1 neet besjrieve of laeze vanwaenge te mèn rèchte of aafwaezige mappe/kóntaeners.",
        "filejournal-fail-dbconnect": "Kós neet verbinje mit de journaaldatabase veur de opslaagbackend \"$1\".",
        "filejournal-fail-dbquery": "Kós de journaaldatabase neet biewèrke veur de opslaagbackend \"$1\".",
        "lockmanager-notlocked": "Kós \"$1\" neet vrijgaeve; 't waes neet vergrendeld.",
        "lockmanager-fail-closelock": "Kós 't vergrendelingsbesjtand veur \"$1\" neet sjlete.",
        "lockmanager-fail-deletelock": "Kós 't vergrendelingsbesjtand veur \"$1\" neet ewegsjaffe.",
        "lockmanager-fail-acquirelock": "Kós \"$1\" neet vergrendele.",
-       "lockmanager-fail-openlock": "Kós 't vergrendelingsbesjtand veur \"$1\" neet äöpene.",
+       "lockmanager-fail-openlock": "Kós 't vergrendelingsbesjtand veur \"$1\" neet äöpene. Verzeker dich d'rvan det de uploadmap good is ingestaldj en diene webserver toustumming haet veur nao die map te sjrieve. Zuuch https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgUploadDirectory veur mieër infermasie.",
        "lockmanager-fail-releaselock": "Kós de vergrendeling veur \"$1\" neet opheffe.",
        "lockmanager-fail-db-bucket": "Kós neet in kontak kómme mit genóg vergrendelingsdatabases in de bucket $1.",
        "lockmanager-fail-db-release": "'t Waar neet meugelik ómme vergrendeling veure database $1 óp tö höffe.",
        "uploadstash-clear": "Wis verbórge bestenj",
        "uploadstash-nofiles": "d'r Zeen gein verbórge bestenj.",
        "uploadstash-badtoken": "Kin de hanjeling neet oetveure. Dit kump mesjien omdet dien bewèrkingsrefs verloupe zeen. Perbeer 't obbenuits.",
-       "uploadstash-errclear": "Wisse van bestandj mislök.",
+       "uploadstash-errclear": "Wisse van bestenj mislök.",
        "uploadstash-refresh": "Wèrk lies van bestenj bie",
        "uploadstash-thumbnail": "Betrach miniatuuraafbeelding",
+       "uploadstash-exception": "Kós de upload neet opslaon in de opslaagplaats ($1): \"$2\".",
+       "uploadstash-bad-path": "Paad besteit neet.",
+       "uploadstash-bad-path-invalid": "Paad is óngeljig.",
+       "uploadstash-bad-path-unknown-type": "Ónbekand type \"$1\".",
+       "uploadstash-bad-path-unrecognized-thumb-name": "Ónbekande miniatuurnaam.",
+       "uploadstash-bad-path-no-handler": "Geine hanjeleer gevónje veur mime $1 van bestandj $2.",
+       "uploadstash-bad-path-bad-format": "Sleutel \"$1\" is neet in 't juuste formaot.",
+       "uploadstash-file-not-found": "Sleutel \"$1\" neet gevónje in d'n opslaag.",
+       "uploadstash-file-not-found-no-thumb": "Kós geine miniatuur verkriege.",
+       "uploadstash-file-not-found-no-local-path": "Gei lokaal paad veur gesjaold plaetje.",
+       "uploadstash-file-not-found-no-object": "Kós gei lokaal bestandjsveurwerp veur de miniatuur aanmake.",
+       "uploadstash-file-not-found-no-remote-thumb": "Ophaole van de miniatuur mislök: $1\nurl = $2",
+       "uploadstash-file-not-found-missing-content-type": "\"content-type\"-kopteks óntbrèk.",
+       "uploadstash-file-not-found-not-exists": "Kan 't paad neet vinje of 't bestandj is geine platten teks.",
+       "uploadstash-file-too-large": "Kan gei bestandj versjikke det grótter is es $1 bytes.",
+       "uploadstash-not-logged-in": "Geine gebroeker is aangemeld; bestenj mótte van 'ne gebroeker zeen.",
+       "uploadstash-wrong-owner": "Dit bestandj ($1) is neet van d'n hujige gebroeker.",
+       "uploadstash-no-such-key": "Geine sleutel mit deze naam ($1); kan de sleutel neet ewegsjaffe.",
+       "uploadstash-no-extension": "Extensie óntbrèk.",
+       "uploadstash-zero-length": "Bestandjsgruuedje is nól.",
        "invalid-chunk-offset": "Óngèljige chunckaafzatj",
        "img-auth-accessdenied": "Toegank geweigerd",
        "img-auth-nopathinfo": "PATH_INFO óntbrèk.\nDiene server is neet ingesteld om dees informatie door te gaeve.\nMisjien gebroek deze CGI, en dan wört img_auth neet ongersteund.\nZuuch https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization aafbeildingsrechte veur mee informatie.",
        "license": "Licentie:",
        "license-header": "Licentie:",
        "nolicense": "Maak 'ne keuze",
+       "licenses-edit": "Bewirk licensieopsjes",
        "license-nopreview": "(Veurvertuining neet besjikbaar)",
-       "upload_source_url": " ('ne geldige, publiek toegankelike URL)",
-       "upload_source_file": " ('n bestand op diene computer)",
+       "upload_source_url": "(e bestandj van 'ne geldige, publiek toegankelike URL)",
+       "upload_source_file": "('n bestand op diene computer)",
        "listfiles-delete": "Ewegsjaffe",
-       "listfiles-summary": "Óp dees speciaal pagina zeen alle toegeveugde besjtande te bekieke.\nEs dees pagina weurt gefilterd op gebroeker, waere allein bestenj wo de gebroeker de lètste versie van haet geüpload waergegaeve.",
+       "listfiles-summary": "Óp dees speciaal pagina zeen alle toegeveugde besjtenj te bekieke.",
        "listfiles_search_for": "Zeuk nao bestandj:",
        "listfiles-userdoesnotexist": "Gebroeker \"$1\" is neet geregistreerd.",
        "imgfile": "bestandj",
        "listfiles_size": "Gruutde (bytes)",
        "listfiles_description": "Besjrieving",
        "listfiles_count": "Versies",
+       "listfiles-show-all": "Num aaj versies van bestenj op",
        "listfiles-latestversion": "Hujige versie",
        "listfiles-latestversion-yes": "Jao",
        "listfiles-latestversion-no": "Nein",
        "filerevert-submit": "Trökdrèjje",
        "filerevert-success": "'''[[Media:$1|$1]]''' is trökgedrèjt tot de [$4 versie op $2, $3]",
        "filerevert-badversion": "d'r is geine vörge lokale versie van dit bestand mit 't opgegaeve tiejdstip.",
+       "filerevert-identical": "De hujige versie van 't bestandj is al identiek aan de gesillekteerde.",
        "filedelete": "Wis $1",
        "filedelete-legend": "Wis bestand",
        "filedelete-intro": "Doe bös '''[[Media:$1|$1]]''' aan 't wisse, mit al ieëder versies.",
        "filedelete-maintenance": "Verwiedere en trökplaatse is tiedelik neet meugelik waeges ongerhaadswerkzaamhede.",
        "filedelete-maintenance-title": "Kin bestandj neet wösje",
        "mimesearch": "Zeuk op MIME-type",
-       "mimesearch-summary": "Deze pagina maak het filtere van bestenj veur 't MIME-type meugelik. Inveur: contenttype/subtype, bv <code>image/jpeg</code>.",
+       "mimesearch-summary": "Dees pagina maak 't filtere van bestenj veur 't MIME-type meugelik. \nInveur: contenttype/subtype of contenttype/*, bv <code>image/jpeg</code>.",
        "mimetype": "MIME-type:",
        "download": "Downloade",
        "unwatchedpages": "Neet-gevolgde pazjena's",
        "listredirects": "Lies van redirects",
+       "listduplicatedfiles": "Lies mit bestenj mit duplikaote",
+       "listduplicatedfiles-summary": "Dit is 'n lies mit bestenj wovan de litste versie e duplikaot is van de recènste versie van 'n anger bestandj. Allein weurt gerapporteerd euver lokaal bestenj.",
+       "listduplicatedfiles-entry": "[[:File:$1|$1]] haet [[$3|{{PLURAL:$2|ei duplikaot|$2 duplikaote}}]].",
        "unusedtemplates": "Óngerbroekde sjablone",
        "unusedtemplatestext": "Deze pagina guf alle pagina's weer in de {{nas:template}}naamruumde die op gein inkele pagina gebroek waere. Vergaet neet de \"Links nao deze pagina\" te controlere veures dit sjabloon te wösse.",
        "unusedtemplateswlh": "anger links",
        "randompage": "Willekäörige pagina",
        "randompage-nopages": "d'r zeen gein pagina's in dees {{PLURAL:$2|naamruumde|naamruumde}}: \"$1\".",
+       "randomincategory": "Willekäörige pagina in categorie",
+       "randomincategory-invalidcategory": "\"$1\" is geine geljige categorienaam.",
+       "randomincategory-nopages": "Gein pagina's bevinje zich in de categorie [[:Category:$1|$1]].",
        "randomincategory-category": "Categorie:",
+       "randomincategory-legend": "Willekäörige pagina in categorie",
        "randomincategory-submit": "OK",
        "randomredirect": "Willekäörige redirect",
        "randomredirect-nopages": "d'r zeen gein redirects in deze naamruumde \"$1\".",
        "statistics-users": "Geregistreerde [[Special:ListUsers|gebroekers]]",
        "statistics-users-active": "Actieve gebroekers",
        "statistics-users-active-desc": "Gebroekers die in de aafgeloupe {{PLURAL:$1|daag|$1 daag}} 'ne hanjeling höbbe oetgevoerd",
+       "pageswithprop": "Pagina's mit pagina-eigensjap",
+       "pageswithprop-legend": "Pagina's mit pagina-eigensjap",
+       "pageswithprop-text": "Op dees pagina waere pagina's getuind mit 'n bestumde pagina-eigensjap.",
+       "pageswithprop-prop": "Naam eigesjap:",
+       "pageswithprop-reverse": "Sorteer mit ómgedrejde volgrie",
+       "pageswithprop-sortbyvalue": "Sorteer op eigensjapswaerd",
        "pageswithprop-submit": "OK",
+       "pageswithprop-prophidden-long": "lang teikseigensjapswaerd verstaoke ($1)",
+       "pageswithprop-prophidden-binary": "binair eigensjapswaerd verstaoke ($1)",
        "doubleredirects": "Dobbel redirects",
        "doubleredirectstext": "Dees lies haet paazjes mit redireks die nao anger redireks gaon.\nOp eder raegel vings te de ierste redirectpazjena, de twiede redirectpazjena en de iesjte raegel van de twiede redirectpazjena. Meistes bevat dees litste de pazjena woe de iesjte redirect naotoe zouw mótte verwieze.\n<del>Dórchstreipinge</del> zègke det 't al gedaon is.",
-       "double-redirect-fixed-move": "[[$1]] is verplaats en is noe 'n doorverwiezing nao [[$2]]",
-       "double-redirect-fixed-maintenance": "Correctie dóbbel redirek van [[$1]] nao [[$2]].",
+       "double-redirect-fixed-move": "[[$1]] is verplaats wore.\n't Is autematis biegewirk en verwies noe nao [[$2]]",
+       "double-redirect-fixed-maintenance": "Herstèl autematischen dóbbele redirek van [[$1]] nao [[$2]] in 'n óngerhawdstaak",
        "double-redirect-fixer": "Doorverwiezinge opsjone",
        "brokenredirects": "Gebraoke redirects",
        "brokenredirectstext": "De óngersjtaonde redirectpazjena's bevatte 'n redirect nao 'n neet-besjtaonde pazjena:",
        "fewestrevisions": "Artikele met de minste bewerkinge",
        "nbytes": "$1 {{PLURAL:$1|byte|bytes}}",
        "ncategories": "$1 {{PLURAL:$1|categorie|categorië}}",
+       "ninterwikis": "$1 {{PLURAL:$1|interwiki|interwiki's}}",
        "nlinks": "$1 {{PLURAL:$1|verwiezing|verwiezinge}}",
        "nmembers": "$1 {{PLURAL:$1|lid|lede}}",
+       "nmemberschanged": "$1 → $2 {{PLURAL:$2|lid|lede}}",
        "nrevisions": "$1 {{PLURAL:$1|herzening|herzeninge}}",
        "nimagelinks": "Gebroek op $1 {{PLURAL:$1|pagina|pagina's}}",
        "ntransclusions": "Gebroek op $1 {{PLURAL:$1|pagina|pagina's}}",
        "wantedfiles": "Neet-bestaonde bestenj mit verwiezinge",
        "wantedfiletext-cat": "De volgendje bestenj waere gebroek meh bestaon neet. Bestenj van extern repository's kinne zeen opgenómmen in de lies, óndanks det ze bestaon. Dergelik valsj positieve waere <del>doorgehaoldj waergaeve</del>. Pagina's die neet-bestaondje bestenj insloete staon op de pagina [[:$1]].",
        "wantedfiletext-nocat": "De volgendje bestenj waere gebroek meh bestaon neet. Bestenj van extern repository's kinne zeen opgenómmen in de lies, óndanks det ze bestaon. Dergelik valsj positieve waere <del>doorgehaoldj waergaeve</del>.",
+       "wantedfiletext-nocat-noforeign": "De volgende bestenj zint in gebroek meh bestaon neet.",
        "wantedtemplates": "Neet-bestaonde sjablone mit verwiezinge",
        "mostlinked": "Meis gelinkde pazjena's",
        "mostlinkedcategories": "Meis-gelinkde categorië",
        "mostlinkedtemplates": "Meis-gebroekde sjablone",
        "mostcategories": "Artikele mit de meiste kategorieë",
        "mostimages": "Meis gelinkde aafbeildinge",
+       "mostinterwikis": "Pagina's mit de meiste interwiki's",
        "mostrevisions": "Artikele mit de meiste bewirkinge",
        "prefixindex": "Alle pagina's op veurvoegsel",
        "prefixindex-namespace": "Alle pagina's mit 't veurvoogsel (naomruumdje $1)",
        "prefixindex-submit": "Tuin",
+       "prefixindex-strip": "Haol veurveugsel eweg in de lies",
        "shortpages": "Korte artikele",
        "longpages": "Lang artikele",
        "deadendpages": "Doedloupende pazjena's",
        "deadendpagestext": "De ongerstäönde pagina's verwieze neet nao anger pagina's in {{SITENAME}}.",
        "protectedpages": "Besjörmde pagina's",
        "protectedpages-indef": "Allein blokkades zonger verloupdatum",
+       "protectedpages-summary": "Dees pagina bevat 'n lies met beveiligde pagina's. Zuuch [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]] veur 'n lies van pagina's die neet moge waere aangemaak.",
        "protectedpages-cascade": "Allein beveiliginge mit de cascade-optie",
+       "protectedpages-noredirect": "Verstaek redireks",
        "protectedpagesempty": "d'r Zeen noe gein pagina's besjörmp die aan deze paramaetere voldaon.",
        "protectedpages-timestamp": "Tiedstip",
        "protectedpages-page": "Pazjena",
        "protectedpages-expiry": "Verlöp",
        "protectedpages-performer": "Beveilig door",
+       "protectedpages-params": "Beveiligingsparamaeters",
        "protectedpages-reason": "Raej",
+       "protectedpages-submit": "Tuin pagina's",
        "protectedpages-unknown-timestamp": "Ónbekènd",
        "protectedpages-unknown-performer": "Ónbekènde gebroeker",
        "protectedtitles": "Beveiligde pazjena's",
+       "protectedtitles-summary": "Dees pagina bevat 'n lies mit pagina's die neet moge waere aangemaak. Zuuch [[{{#special:ProtectedPages}}|{{int:protectedpages}}]] veur de lies mit beveiligde pagina's.",
        "protectedtitlesempty": "d'r Zeen momenteel gein titels beveilig die aan deze paramaeters voldaon.",
        "protectedtitles-submit": "Tuin pazjenanaam",
        "listusers": "Lies van gebroekers",
        "listusers-editsonly": "Allein gebroekers mit bewèrkinge weergaeve",
        "listusers-creationsort": "Sortere op registratiedatum",
+       "listusers-desc": "Sorteer in aafloupende volgrie",
        "usereditcount": "$1 {{PLURAL:$1|bewèrking|bewèrkinge}}",
        "usercreated": "{{GENDER:$3|aangemaak}} óp $1 óm $2",
        "newpages": "Nuuj pagina's",
        "pager-older-n": "{{PLURAL:$1|auwer 1|auwer $1}}",
        "suppress": "Toezich",
        "querypage-disabled": "Dees speciaal pagina steit oet veur performanceredene.",
+       "apihelp": "API-hölp",
+       "apihelp-no-such-module": "Moduul \"$1\" neet gevonje.",
        "apisandbox": "API-zandjbak",
+       "apisandbox-jsonly": "JavaScrip is vereisj veur de API-zandjbak te kónne broeke.",
        "apisandbox-api-disabled": "API is oetgesjakeld op deze site.",
-       "apisandbox-intro": "Gebroek dees pagina óm te experimentere mit de '''MediaWiki API'''.\nZuuch de [https://www.mediawiki.org/wiki/API:Main_page API-dokkemèntatie] veur mier details euver 't gebroek van de API.",
+       "apisandbox-intro": "Gebroek dees pagina óm te experimentere mit de <strong>MediaWiki API</strong>.\nZuuch de [[mw:API:Main page|API-dokkemèntatie]] veur mier details euver 't gebroek van de API. Veurbeeld: [https://www.mediawiki.org/wiki/API#A_simple_example wie d'n inhawd van 'n houfpagina is op te haole]. Selecteer 'n hanjeling veur mieër veurbeelde te zeen.\n\nTródsdet dit 'n tesfunctie is kónne sommige hanjelinge toch verangeringe make in de wiki.",
+       "apisandbox-fullscreen": "Vaaj paneel oet",
+       "apisandbox-fullscreen-tooltip": "Maak 't zandjbakpaneel zo groeat wie 't browservinster.",
        "apisandbox-unfullscreen": "Tuin pazjena",
+       "apisandbox-unfullscreen-tooltip": "Vaaj 't zandjbakvinster same zodet de navigaasje veur MediaWiki trök besjikbaar is.",
        "apisandbox-submit": "Verzeuk oetveure",
        "apisandbox-reset": "Wusj",
        "apisandbox-retry": "Opnuuj perbere",
+       "apisandbox-loading": "Gegaeves veur API-moduul \"$1\" 'nt laje...",
+       "apisandbox-load-error": "'n Fout is opgetraoje tiejes 't  laje van gegaeves veur API-moduul \"$1\": $2",
+       "apisandbox-no-parameters": "Dees API-moduul haet gein paramaeters.",
+       "apisandbox-helpurls": "Hölp",
        "apisandbox-examples": "Veurbilder",
-       "apisandbox-results": "Rizzeltaat",
+       "apisandbox-dynamic-parameters": "Extra paramaeters",
+       "apisandbox-dynamic-parameters-add-label": "Veug paramaeter tou:",
+       "apisandbox-dynamic-parameters-add-placeholder": "Paramaeternaam",
+       "apisandbox-dynamic-error-exists": "'ne Paramaeter mit de naam \"$1\" besteit al.",
+       "apisandbox-deprecated-parameters": "Vereljerde paramaeters",
+       "apisandbox-fetch-token": "Völ 't teike autematis in",
+       "apisandbox-submit-invalid-fields-title": "Sommige veljer zint óngeljig",
+       "apisandbox-submit-invalid-fields-message": "Verbaeter de gemarkeerde veljer en perbeer 't oppernuuj.",
+       "apisandbox-results": "Rizzeltaote",
+       "apisandbox-sending-request": "API-verzeuk 'nt versjikke...",
+       "apisandbox-loading-results": "API-rizzeltaote 'nt óntvange...",
+       "apisandbox-request-selectformat-label": "Tuin rizzeltaot es:",
+       "apisandbox-request-format-url-label": "URL query string",
        "apisandbox-request-url-label": "Verzeuk-URL:",
+       "apisandbox-request-json-label": "Verzeuk JSON:",
+       "apisandbox-request-time": "Verzeuk tied: {{PLURAL:$1|$1 ms}}",
+       "apisandbox-results-fixtoken": "Verbaeter teike en versjik oppernuuj",
+       "apisandbox-results-fixtoken-fail": "'t Ophaole van 't teike van type \"$1\" is mislök.",
+       "apisandbox-alert-page": "Veljer op dees pagina zint óngeljig.",
+       "apisandbox-alert-field": "De waerd van dit veld is óngeljig.",
+       "apisandbox-continue": "Gank door",
        "apisandbox-continue-clear": "Wusj",
+       "apisandbox-continue-help": "{{int:apisandbox-continue}} zal [https://www.mediawiki.org/wiki/API:Query#Continuing_queries doorgaon] mit 't litste verzeuk; {{int:apisandbox-continue-clear}} zal de veurtgangsparamaeters wösje.",
+       "apisandbox-param-limit": "Gebroek <kbd>max</kbd> veur de maximale limiet.",
+       "apisandbox-multivalue-all-namespaces": "$1 (Alle naamruumdes)",
+       "apisandbox-multivalue-all-values": "$1 (Alle waerd)",
        "booksources": "Bookwinkele",
        "booksources-search-legend": "Zeuk informatie euver 'n book",
        "booksources-search": "Zeuk",
        "booksources-text": "Hiej onger stuit 'n lies met koppelinge nao anger websites die nuuje of gebroekde beuk verkoupe, en die wellich meer informatie euver 't book detse zeuks höbbe:",
        "booksources-invalid-isbn": "t Ingegaeve ISBN liek neet geldig te zeen.\nControleer of se wellich n fout höbs gemaak bie de inveur.",
+       "magiclink-tracking-rfc": "Pagina's die RFC-magische links broeke",
        "specialloguserlabel": "Oetveurder:",
        "speciallogtitlelabel": "Doel (paginanaam of {{ns:user}}:gebroekersnaam veur gebroeker):",
        "log": "Logbeuk",
        "logempty": "d'r Zeen gein regels in 't logbook die voldaon aan deze criteria.",
        "log-title-wildcard": "Zeuk pagina's die met deze naam beginne",
        "showhideselectedlogentries": "Tuin of verstaek geselecteerdje logbookregels",
+       "checkbox-select": "Selecteer: $1",
        "checkbox-all": "Alle",
        "checkbox-none": "Gein",
        "checkbox-invert": "Umkiere",
        "linksearch-pat": "Zeukpatroon:",
        "linksearch-ns": "Naamruumde:",
        "linksearch-ok": "Zeuk",
-       "linksearch-text": "Wildcards wie \"*.wikipedia.org\" of \"*.org\" zeen toegestaon.\nHaet mèndestes e toepleveldomein, wie beveurbeildj \"*.org\".<br />\nÓngerstäönendje protocolle: $1 (veug dees neet tou in dien zeukópdrach).",
+       "linksearch-text": "Wildcards wie \"*.wikipedia.org\" zeen toegestaon.\nHaet mèndestes e toepleveldomein, wie beveurbeildj \"*.org\".<br />\n{{PLURAL:$2|Óngerstäönendj protocol|Óngerstäönendje protocolle}}: $1 (weurt \"http://\" es gein protocol is opgegaove wore).",
        "linksearch-line": "$1 gelink vanaaf $2",
        "linksearch-error": "Wildcards zijn alleen toegestaan aan het begin van een hostnaam.",
        "listusersfrom": "Tuin gebroekers vanaaf:",
        "listusers-blocked": "(geblok)",
        "activeusers": "Aktief gebroekers",
        "activeusers-intro": "Dit is 'n lies mit gebroekers die aktief zeen gewaes in de aafgeloupe {{PLURAL:$1|daag|$1 daag}}.",
-       "activeusers-count": "$1 {{PLURAL:$1|bewèrking|bewèrkinger}} inne {{PLURAL:$3|lèsten daag|lès $3 daag}}",
+       "activeusers-count": "$1 {{PLURAL:$1|bewirking|bewirkinger}} {{PLURAL:$3|op de litsten daag|in de litste $3 daag}}",
        "activeusers-from": "Tuin gebroekers vanaaf:",
+       "activeusers-groups": "Tuin gebroekers die behuuere toet de gruup:",
+       "activeusers-excludegroups": "Sloet gebroekers oet die behuuere toet de gruup:",
        "activeusers-noresult": "Gein gebroekers gevónje.",
+       "activeusers-submit": "Tuin aktief gebroekers",
        "listgrouprights": "Rechte van gebroekersgróppe",
        "listgrouprights-summary": "Op dees pazjena sjtaon de gebroekersgróppe in deze wiki besjreve, mit zien biebehurende rechte.\nInfermasie daoreuver èn de individueel rechter vinjs te [[{{MediaWiki:Listgrouprights-helppage}}|hie]].",
-       "listgrouprights-key": "* <span class=\"listgrouprights-granted\">Toeweze rech</span>\n* <span class=\"listgrouprights-revoked\">Ingetrokke rech</span>",
+       "listgrouprights-key": "Legenda:\n* <span class=\"listgrouprights-granted\">Toeweze rech</span>\n* <span class=\"listgrouprights-revoked\">Ingetrokke rech</span>",
        "listgrouprights-group": "Gróp",
        "listgrouprights-rights": "Rechte",
        "listgrouprights-helppage": "Help:Gebroekersrechte",
        "listgrouprights-removegroup-self": "Wösj de volgende {{PLURAL:$2|groep|gruup}} van eige gebroeker: $1",
        "listgrouprights-addgroup-self-all": "Voeg alle gruup toe aan eige gebroeker",
        "listgrouprights-removegroup-self-all": "Wösj alle gruup van eige gebroeker",
+       "listgrouprights-namespaceprotection-header": "Naamruumdebepirkinge",
+       "listgrouprights-namespaceprotection-namespace": "Naamruumde",
+       "listgrouprights-namespaceprotection-restrictedto": "Recht(e) wodoor gebroeker kan bewirke",
+       "listgrants": "Toustumminge",
+       "listgrants-grant": "Toustumming",
+       "listgrants-rights": "Rechte",
+       "trackingcategories": "Volgcategorieje",
+       "trackingcategories-msg": "Volgcategorie",
+       "trackingcategories-name": "Besjeidnaam",
+       "trackingcategories-desc": "Opnaamcriteria",
+       "restricted-displaytitle-ignored": "Pagina's mit euvergeslage tuintitels",
+       "trackingcategories-disabled": "Categorie is oetgezatj wore",
        "mailnologin": "Gein e-mailadres bekènd veur deze gebroeker",
        "mailnologintext": "De mos zien [[Special:UserLogin|aangemèld]] en 'n gèldig e-mailadres in bie dien [[Special:Preferences|veurkäöre]] höbbe ingevuld om mail nao anger gebroekers te sjture.",
        "emailuser": "Sjik deze gebroeker 'nen e-mail",
+       "emailuser-title-target": "E-mail {{GENDER:$1|deze gebroeker}}",
+       "emailuser-title-notarget": "E-mail gebroeker",
        "emailpagetext": "Es deze gebroeker e geljig e-mailadres haet opgegaeve den kint g'r via dit formuleer e berich sjikke. 't E-mailadres wat geer heet opgegeve bie eur [[Special:Preferences|veurkäöre]] zal es versjikker aangegaeve waere.\nDae kin dös drek reazjere.",
        "defemailsubject": "E-mail van {{SITENAME}}-gebroeker \"$1\"",
        "usermaildisabled": "Gebroeker e-mail oetgezatj.",
        "watcherrortext": "Fout tiedens 't verangere van dien volgliesinstellinge veur \"$1\".",
        "enotif_reset": "Mèrk alle bezochde pazjena's aan.",
        "enotif_impersonal_salutation": "{{SITENAME}} gebroeker",
+       "enotif_subject_deleted": "{{SITENAME}}: pagina $1 is eweggesjaf wore door {{GENDER:$2|$2}}",
+       "enotif_subject_created": "{{SITENAME}}: pagina $1 is aangemaak wore door {{GENDER:$2|$2}}",
+       "enotif_subject_moved": "{{SITENAME}}: pagina $1 is verplaats wore door {{GENDER:$2|$2}}",
+       "enotif_subject_restored": "{{SITENAME}}: pagina $1 is trökgeplaats wore door {{GENDER:$2|$2}}",
+       "enotif_subject_changed": "{{SITENAME}}: pagina $1 is bewirk wore door {{GENDER:$2|$2}}",
+       "enotif_body_intro_deleted": "De pagina $1 op {{SITENAME}} is eweggesjaf wore door {{gender:$2|$2}} op $PAGEEDITDATE. Zuuch $3 veur de hujige versie.",
+       "enotif_body_intro_created": "De pagina $1 op {{SITENAME}} is aangemaak wore door {{gender:$2|$2}} op $PAGEEDITDATE. Zuuch $3 veur de hujige versie.",
+       "enotif_body_intro_moved": "De pagina $1 op {{SITENAME}} is verplaats wore door {{gender:$2|$2}} op $PAGEEDITDATE. Zuuch $3 veur de hujige versie.",
+       "enotif_body_intro_restored": "De pagina $1 op {{SITENAME}} is trökgeplaats wore door {{gender:$2|$2}} op $PAGEEDITDATE. Zuuch $3 veur de hujige versie.",
+       "enotif_body_intro_changed": "De pagina $1 op {{SITENAME}} is bewirk wore door {{gender:$2|$2}} op $PAGEEDITDATE. Zuuch $3 veur de hujige versie.",
        "enotif_lastvisited": "Zuug $1 veur al verangeringe saer dien lèste bezeuk.",
        "enotif_lastdiff": "Zuug $1 om deze wieziging te zeen.",
        "enotif_anon_editor": "anonieme gebroeker $1",
        "whatlinkshere-hidelinks": "$1 links",
        "whatlinkshere-hideimages": "$1 bestandjslinke",
        "whatlinkshere-filters": "Filters",
+       "whatlinkshere-submit": "Gank",
        "autoblockid": "Autoblock #$1",
        "block": "Blok gebroeker",
        "unblock": "Deblokkeer IP adres",
-       "blockip": "Blokkeer dit IP-adres",
-       "blockiptext": "Gebroek 't óngerstjaondj formeleer óm sjrieftoegank van e zeker IP-adres te verbeje. Dit maag allein gedaon weure om vandalisme te veurkómme en in euvereinkóms mitte [[{{MediaWiki:Policy-url}}|beleid]]. Gaef hiejónger de raeje óp (bv. inkel vandaliseerdje paazjes).",
+       "blockip": "Blokkeer {{GENDER:$1|gebroeker}}",
+       "blockiptext": "Gebroek 't óngerstaondj formeleer óm sjrieftoegank van e zeker IP-adres te verbeje. Dit maag allein gedaon weure om vandalisme te veurkómme en in euvereinkóms mitte [[{{MediaWiki:Policy-url}}|beleid]]. Gaef hiejónger de raeje óp (bv. inkel vandaliseerdje paazjes).\nDoe kins IP-ranges blokkere door gebroek te make van de [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]-syntaxis; de grótste toegestange reeks is /$1 veur IPv4 en /$2 veur IPv6.",
        "ipaddressorusername": "IP-adres of gebroekersnaam",
        "ipbexpiry": "Verlöp (maak 'n keuze)",
        "ipbreason": "Reeje:",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] is geblokkeerd.<br />\nZuug de [[Special:BlockList|lies van geblokkeerde IP-adresse]].",
        "ipb-blockingself": "Doe steis óp 't pöntj dichzelf te blokke! Wèts se zeker desse det wils doon?",
        "ipb-confirmhideuser": "Doe steis óp 't pöntj 'ne verbórge gebroeker te blokke. Hieveur waere gebroekersname in alle liesre en logbookregels verbórge. Wèts se zeker desse door wils gaon?",
+       "ipb-confirmaction": "Wèts se zeker det se dit wils doon? Sillekteer den 't silleksjevekske \"{{int:ipb-confirm}}\" hie-ónger.",
        "ipb-edit-dropdown": "Bewerk lies van rejer",
        "ipb-unblock-addr": "Ónblokkeer $1",
        "ipb-unblock": "Ónblokkeer 'ne gebroeker of IP-adres",
        "ipb-blocklist": "Bekiek bestaonde blokkades",
-       "ipb-blocklist-contribs": "Biedraag ven $1",
+       "ipb-blocklist-contribs": "Biedraag van {{GENDER:$1|$1}}",
+       "ipb-blocklist-duration-left": "$1 nag euver",
        "unblockip": "Deblokkeer IP adres",
        "unblockiptext": "Gebroek het ongersjtaonde formeleer om weer sjrieftoegang te gaeve aan e geblokkierd IP adres.",
        "ipusubmit": "Deblokkeer dit.",
        "unblocked": "Blokkade van [[User:$1|$1]] is opgeheve",
        "unblocked-range": "$1 is gedeblokkeerd",
        "unblocked-id": "Blokkade $1 is opgeheve",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] is gedeblokkeerd.",
        "blocklist": "Geblokkeerde gebroekers",
+       "autoblocklist": "Autoblokkaazjes",
        "autoblocklist-submit": "Zeuk",
        "autoblocklist-legend": "Autematiesche blokkades tuine",
        "autoblocklist-localblocks": "Lokale autematiesche {{PLURAL:$1|blokkaasj|blokkades}}",
        "autoblocklist-total-autoblocks": "Totaal aontal autoblokkades: $1",
        "autoblocklist-empty": "De lies mit autematiesche blokkades is laeg.",
+       "autoblocklist-otherblocks": "Anger {{PLURAL:$1|autoblokkaasj|autoblokkaazjes}}",
        "ipblocklist": "Geblokkerde gebroekers",
        "ipblocklist-legend": "'ne Geblokkeerde gebroeker zeuke",
        "blocklist-userblocks": "Verberg geblokkeerde gebroekers",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 pazjena is|$1 pazjena's zeen}} toegevoog:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 pazjena is|$1 pazjena's zeen}} eweggesjaf:",
        "watchlisttools-clear": "Maak de volglies laeg",
-       "watchlisttools-view": "Volglies bekieke",
-       "watchlisttools-edit": "Volglies bekieke en bewirke",
-       "watchlisttools-raw": "Roew volglies bewirke",
+       "watchlisttools-view": "Betrach rillevante verangeringe",
+       "watchlisttools-edit": "Tuin en bewirk volglies",
+       "watchlisttools-raw": "Bewirk roew volglies",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|euverlègk]])",
        "duplicate-defaultsort": "Waarsjuwing: De standaardsortering \"$2\" krieg veurrang veur de sortering \"$1\".",
        "version": "Versie",
index 96aa274..bba3f1e 100644 (file)
        "editfont-monospace": "فونت تأک بألگە یی",
        "editfont-sansserif": "فونت سان سئریف",
        "editfont-serif": "فونت سئريف",
-       "sunday": "يئ شأمە",
-       "monday": "دÛ\8aشأÙ\85Û\95",
-       "tuesday": "سئ Ø´Ø£Ù\85Û\95",
+       "sunday": "یٱشمٱ",
+       "monday": "دÛ\8fشٱÙ\85Ù±",
+       "tuesday": "ساÙ\9bØ´Ù\85Ù±",
        "wednesday": "چارشأمە",
        "thursday": "پأن شأمە",
-       "friday": "جومە",
-       "saturday": "شأمە",
+       "friday": "جومٱ",
+       "saturday": "شٱمٱ",
        "sun": "یئ شأمە",
        "mon": "دۊشأمە",
-       "tue": "سئ Ø´Ø£Ù\85Û\95",
+       "tue": "ساÙ\9bØ´Ù\85Ù±",
        "wed": "چارشأمە",
        "thu": "پأن شأمە",
        "fri": "جومە",
@@ -88,7 +88,7 @@
        "november": "نوۋامر",
        "december": "داٛسامر",
        "january-gen": "جانڤیە",
-       "february-gen": "فئڤریە",
+       "february-gen": "فۋریٱ",
        "march-gen": "مارس",
        "april-gen": "آڤریل",
        "may-gen": "مئی",
        "feb": "فۋریٱ",
        "mar": "مارس",
        "apr": "آۋریل",
-       "may": "Ù\85ئی",
+       "may": "Ù\85اÙ\9bی",
        "jun": "جۊٱن",
        "jul": "جوٙلای",
        "aug": "آگوست",
        "october-date": "ئوکتوبر $1",
        "november-date": "نوڤامر $1",
        "december-date": "دئسامر $1",
-       "pagecategories": "{{PLURAL:$1|}}{{PLURAL:$1|دأسە|دأسە يا}}",
+       "pagecategories": "{{PLURAL:$1|}}{{PLURAL:$1|دٱسٱ|دٱسٱيا}}",
        "category_header": "بألگە یا مین دأسە \"$1\"",
        "subcategories": "زيردأسە یا",
        "category-media-header": "ڤارئسگأر د دأسە \"$1\"",
        "category-empty": "ئی دأسە د راستأکی د ڤأر گئرئتە هیچ بألگە یا ڤارئسگأری نی",
-       "hidden-categories": "{{PLURAL:$1|دأسە قام بییە|دأسە یا قام بییە}}",
+       "hidden-categories": "{{PLURAL:$1|دٱسٱ قام بیٱ|دٱسٱیا قام بیٱ}}",
        "hidden-category-category": "دأسە یا قام بییە",
        "category-subcat-count": "{{PLURAL:$2|ئی دأسە فأقأط زیردأسە یا دئماگئر هان دئش.|ئی دأسە {{PLURAL:$1|زیردأسە|$1 زیردأسە یا}}هئ , ڤئ دأر د $2 کول.}}",
        "category-subcat-count-limited": "ئی دأسە ها د {{PLURAL:$1|زیردأسە|$1 زیردأسە یا}} یی کئ ها ڤئ دومئشوٙ",
        "category-file-count-limited": " {{PLURAL:$1|[جانیا هی|1$جانیایا هین}} نئهایی هان د دأسە ئیسئنی.",
        "listingcontinuesabbrev": "دومالە",
        "index-category": "بألگە یا سیاە دار",
-       "noindex-category": "بألگە یا بی سیاە",
+       "noindex-category": "بلگٱیا بی سیائٱ",
        "broken-file-category": "بألگە یایی کئ هوم پئیڤأند جانیایا ئشگئسئ نە دارئن",
        "categoryviewer-pagedlinks": "($1) ($2)",
        "about": "دئبارە",
        "tagline": "د {{SITENAME}}",
        "help": "هومياری",
        "search": "پی جۊری",
-       "searchbutton": "پئی جوٙری",
+       "searchbutton": "پی جۊری",
        "go": "رو",
        "searcharticle": "رو",
        "history": "ڤیرگار بألگە",
-       "history_short": "ڤیرگار",
+       "history_short": "ۋیرگار",
        "updatedmarker": "د آخئری دییئن مئنە ڤئ هنگوم کو",
        "printableversion": "نوسقٱ پلا بیاٛنی",
-       "permalink": "هوم پئیڤأند هأمیشئ یی",
+       "permalink": "هوم پیۋند همیشٱیی",
        "print": "چاپ گئرئتئن",
-       "view": "ديئن",
+       "view": "دیاٛن",
        "view-foreign": "د $1 نه بوینیت",
        "edit": "ۋیرایشت",
        "edit-local": "توضی ڤولات نئشینی نە ڤیرایئشت بأکیت",
        "talkpagelinktext": "چٱک چنٱ",
        "specialpage": "بألگە ڤیجە",
        "personaltools": "ٱۋزاریا شٱخسی",
-       "talk": "گأپ",
+       "talk": "گٱپ",
        "views": "دیاٛن",
        "toolbox": "ٱۋزاریا",
        "imagepage": "ديئن بألگە جانیا",
        "aboutpage": "Project:دبارٱ",
        "copyright": "مینوٙنە یا هان د دأسرئس $1 مأر یە کئ ڤئ یئ گئل شیڤە هأنی نیسأنە بوٙە.",
        "copyrightpage": "{{ns:project}}:کوپی رایت",
-       "currentevents": "روخ ڤأنیا ئیسئنی",
+       "currentevents": "روخ ۋنیا ایساٛنی",
        "currentevents-url": "Project:روخ ۋٱنیا ایساٛنی",
        "disclaimers": "تیٱپۊشکاریا",
        "disclaimerpage": "پوروجٱ: تیٱپوشی کردن همٱگیر",
        "mainpage": "سرآسۊنٱ",
        "mainpage-description": "سرآسۊنٱ",
        "policy-url": "پوروجە:رأدیارجوٙری",
-       "portal": "دأرآسÙ\88Ù\99Ù\86Û\95 Ú©Ù\88Ù\85Ù\88Ù\84Û\95 Û\8cØ£کی",
+       "portal": "درآسÛ\8aÙ\86Ù± Ú©Ù\88Ù\85Ù\88Ù\84Ù±Û\8cکی",
        "portal-url": "پوروجٱ:درآسۊنٱ کومولٱیکی",
        "privacy": "پۊلتیک رازینٱداری",
        "privacypage": "پوروجٱ: راگوۋاری رازینٱ کاری کردن",
        "pagetitle": "$1 - {{SITENAME}}",
        "pagetitle-view-mainpage": "{{SITENAME}}",
        "backlinksubtitle": "← $1",
-       "retrievedfrom": "د Ù\86Û\8a Ø²Ø¦Ù\86Û\95 Ø¨Û\8cÛ\95 د\"$1\"",
+       "retrievedfrom": "د Ù\86Û\8f Ø²Ù\86Ù± Ø¨Û\8cÙ± د\"$1\"",
        "youhavenewmessages": "{{PLURAL:$3|شوما داریت}} $1 ($2).",
        "youhavenewmessagesfromusers": "{{PLURAL:$4|شوما}} $1 د {{PLURAL:$3|کاریار هأنی|$3 کاریاریا}}داریت($2).",
        "youhavenewmessagesmanyusers": "شوما د $1 فئرە کاریار داریت($2).",
        "editsection": "ۋیرایشت",
        "editold": "ڤیرایئشت",
        "viewsourceold": "سئیل د سأرچئشمە بأکیت",
-       "editlink": "ڤیرایئشت",
-       "viewsourcelink": "سئÛ\8cÙ\84 Ø¯ Ø³Ø£Ø±Ú\86ئشÙ\85Û\95 Ø¨Ø£کیت",
+       "editlink": "ۋیرایشت",
+       "viewsourcelink": "ساÙ\9bÛ\8cÙ\84 Ø¯ Ø³Ø±Ú\86Ø´Ù\85Ù± Ø¨Ù±کیت",
        "editsectionhint": "ۋیرایشت یاٛ گاٛل بٱرجا:$1",
-       "toc": "مینوٙنە یا",
+       "toc": "مینۊنٱیا",
        "showtoc": "نئشوٙ دأئن",
        "hidetoc": "قام کئردئن",
        "collapsible-collapse": "جأم کئردئن",
        "feed-invalid": "جوٙر هومبأر بییە مینجا هأڤال حوٙن نادیار",
        "feed-unavailable": "هأڤال حوٙنیا د دأسرئس نییئن",
        "site-rss-feed": "هأڤال حوٙن RSS سی $1",
-       "site-atom-feed": "هأڤال حوٙن Atom سی $1",
+       "site-atom-feed": "هوۋال هۊ Atom سی $1",
        "page-rss-feed": "هأڤال حوٙن RSS سی «$1»",
        "page-atom-feed": "هأڤال حوٙن Atom سی $1",
        "feed-atom": "اتم",
        "red-link-title": "$1(بلگٱ نیاٛش)",
        "sort-descending": "کأم بییئن سأرجاخود",
        "sort-ascending": "زياد بيیئن سأرجادخود",
-       "nstab-main": "بألگە",
+       "nstab-main": "بلگٱ",
        "nstab-user": "بألگە کاریار",
        "nstab-media": "بألگە ڤارئسگأر",
-       "nstab-special": "بألگە ڤیجە",
+       "nstab-special": "بلگٱیا ۋیجٱ",
        "nstab-project": "بألگە پوروجە",
        "nstab-image": "جانیا",
        "nstab-mediawiki": "پئیغوٙم",
        "actionthrottled": "کونئشتکاری نئهاگئری بییە",
        "actionthrottledtext": "سی نئهاگئری د دأرتیچ بییئن ئسپأم نأبوٙە کئ شوما چئنی کاری نە د یئ گاتی کوٙتا چأن گئل أنجوم بئییت.\nلوطف بأکیت د چأن دئیقە هأنی د نۊ تئلاش بأکیت.",
        "protectedpagetext": "نأبوٙە د ئی بألگە ڤیرایئشت کاریا کاریاریا هأنی نە سئیل بأکیت.",
-       "viewsourcetext": "شوما می توٙنید سأرچئشمە ئی بألگە نە سئیل بأکیت و دئش ڤئرداریت:",
+       "viewsourcetext": "شوما می تۊنیت سرچشمٱ ای بلگٱ ناٛ ساٛیل بٱکیت و داٛش ۋرداریت:",
        "viewyourtext": "شوما می توٙنیت سأرچئشمە ڤیرایئشتیا توٙنە د ئی بألگە سئیل بأکیت و دئشوٙ ڤئرداریت:",
        "protectedinterface": "ئی بألگە سی نأرم أفزار کئ ها د ئی ڤیکی نیسئسە آمادە میکە،و ڤئ د موزاحئمە ت کاری پأر و پیم کاری بیە\nسی ئضاف کئردئن یا آلئشت دأئن د هأمە ڤیکی یا لوطف بأکیت [https://translatewiki.net/ translatewiki.net] نە ڤئ کار بئیریت، پوروجە ڤولات نئشین سازی ڤیکیمئدیا.",
        "editinginterface": "<strong>ڤارئسکاری کئردئن:</strong> شوما داریت یئ گئل بألگە نە کئ سی یئ گئل نیسئسە یا نأرم أفزار پئیڤأندکار ڤئ کار گئرئتە بیە ڤیرایئشت میکیت.\nآلئشت دأئن ئی بألگە ری رئخت و بارت پئیڤأندکاری کئ کاریاری هأنی ڤئ نە ڤئ کار مئیرئن کارگئرایی دارە.",
        "subject": "ذاسوٙن/سأرتال:",
        "minoredit": "یە یئ گئل ڤیرایئشت کوچئکە",
        "watchthis": "دیئن ئی بألگە",
-       "savearticle": "ئÙ\85اÛ\8cÛ\95 Ú©Ø¦Ø±Ø¯Ø¦Ù\86 Ø¨Ø£Ù\84Ú¯Û\95",
+       "savearticle": "اÙ\9bÙ\85اÛ\8cÙ± Ú©Ø±Ø¯Ù\86 Ø¨Ù\84Ú¯Ù±",
        "preview": "پيش سئيل",
        "showpreview": "نئشوٙ دأئن پیش سئیل",
        "showdiff": "نئشوٙ دأئن آلئشت کاریا",
        "templatesused": "{{PLURAL:$1|چوٙأ|چوٙأ یا}} ڤئ کار گئرئتە د ئی بألگە:",
        "templatesusedpreview": "{{PLURAL:$1|چوٙأ|چوٙأ یا}}ڤئ کار گئرئتە بییە د پیش سئیل:",
        "templatesusedsection": "{{PLURAL:$1|چوٙأ|چوٙأ یا}} ڤئ کار گئرئتە بییە د ئی بأرجا:",
-       "template-protected": "(پأر و پیم بییە)",
+       "template-protected": "(پٱر و پیم بیٱ)",
        "template-semiprotected": "(نئصم و نیمە پأر و پیم بییە)",
        "hiddencategories": "ئی بألگە یئ گئل د أندومیا {{PLURAL:$1|1 hidden category|$1 hidden categories}} ھی:",
        "edittools-upload": "-",
        "permissionserrorstext": "شوما حأق ناریت ڤئنە أنجوم بئیت، سی{{PLURAL:$1|دألیل|دألیلیا}} نئھایی:",
        "permissionserrorstext-withaction": "شوما سی $2 صئلا \nنئھاگئری ناریت {{PLURAL:$1|دألیل|دألیلیا}}:",
        "recreate-moveddeleted-warn": "'''د ڤیرئتوٙ با:شوما بألگە یی کئ ھا ڤادئما و پاکسا بییە د نۊ راس کئردیتە.'''\nبایأد د ڤیرئتوٙ با کئ آیا ھأنی نئھاگئری ڤیرایئشت ئی بألگە خوٙأ.\nپاکسا کاری و جا ڤئ جا کاری ئی بألگە سی حال و بال آسایئشت شوما آمادە بییە:",
-       "moveddeleted-notice": "ئÛ\8c Ø¨Ø£Ù\84Ú¯Û\95 Ù¾Ø§Ú©Ø³Ø§ Ø¨Û\8cÛ\8cÛ\95.\nپاکسا Ú©Ø§Ø±Û\8c Ù\88 Ø¬Ø§ Ú¤Ø¦ Ø¬Ø§ Ú©Ø§Ø±Û\8c Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Ø³Û\8c Ø­Ø§Ù\84 Ù\88 Ø¨Ø§Ù\84 Ø¢Ø³Ø§Û\8cئشت Ø´Ù\88Ù\85ا Ø¢Ù\85ادÛ\95 Ø¨Û\8cÛ\8cÛ\95.",
+       "moveddeleted-notice": "اÛ\8c Ø¨Ù\84Ú¯Ù± Ù¾Ø§Ú©Ø³Ø§ Ø¨Û\8cÙ±.\nپاکسا Ú©Ø§Ø±Û\8c Ù\88 Ø¬Ø§ Û\8b Ø¬Ø§ Ú©Ø§Ø±Û\8c Ø§Û\8c Ø¨Ù\84Ú¯Ù± Ø³Û\8c Ù\87اÙ\84 Ù\88 Ø¨Ø§Ù\84 Ø¢Ø³Ø§Û\8cشت Ø´Ù\88Ù\85ا Ø¢Ù\85ادٱ Ø¨Û\8cÙ±.",
        "log-fulllog": "دیئن هأمە پئهئرستنوٙمە یا",
        "edit-hook-aborted": "ڤیرایئشت ڤا قولاڤ نئھاگئری بییە.\nھیچ توضیی سیش نی.",
        "edit-gone-missing": "نأبوٙە ئی بألگە نە ڤئ ھئنگوم بأکیت.\nچئنی ڤئ نأظأر میا کئ ڤئ پاکسا بییە.",
        "nohistory": "هیچ ویرگار ویرایشتی د ای بلگه نئ.",
        "currentrev": "آخرین دوواره دیئن",
        "currentrev-asof": "آخري وانئری چی $1",
-       "revisionasof": "دوڤارە ديئن $1",
+       "revisionasof": "دوۋارٱ دیاٛن $1",
        "revision-info": "دوواره سیل بیه چی $1 وا $2",
-       "previousrevision": "ڤانئیأری دئمایی←",
+       "previousrevision": "ۋانیٱری داٛمایی←",
        "nextrevision": "ڤانئیأری تازە تئر",
        "currentrevisionlink": "آخئری ڤانئیأری",
-       "cur": "تازە باڤ",
+       "cur": "تازٱ باۋ",
        "next": "نئهایی",
-       "last": "دئمایی",
+       "last": "داÙ\9bمایی",
        "page_first": "أڤئلی",
        "page_last": "آخئر",
        "histlegend": "انتخاو فرخدار:جعویا رادیو نه سی دوواره دیئن و وارسی نشو دار بکید و یا ری رئتن کلیک بکید .<br />\nشرح نوشته: '''({{int:cur}})''' = وا آخری دوواره دیئن فرخ داره '''({{ int:last}})'''= وا دواره دیئن انجوم دئنی فرخ داره  '''{{int:minoreditletter}}''' =ویرایشت کؤچک.",
-       "history-fieldset-title": "ویرگار دوارته نیئری",
+       "history-fieldset-title": "ۋیرگار دوۋارٱ نیٱری",
        "history-show-deleted": "فقط پاكسا بيه",
        "histfirst": "قديمي تري",
        "histlast": "تازه تري",
        "diff-multi-otherusers": "({{PLURAL:$1|یه گل نسقه مینجایی|$1 نسقه یا مینجایی}} وه دس{{PLURAL:$2|کاریاری تر|$2 کاریاریا}} نشو دئه نبیه)",
        "diff-multi-manyusers": "({{PLURAL:$1|یه گل وانیری مینجاگرته|$1وانیریا مینجا گرته}} بیشتر د $2 {{PLURAL:$2|کاریار|کاریاریا}} نشو دئه نبیه)",
        "difference-missing-revision": "{{PLURAL:$2|یه گل ویرایشت|$2 ویرایشت}} د فرق مینجا($1) {{PLURAL:$2|پیدا نبی|پیدا نبینه}}.\n\nشایت بانی جاونه وه وا یه گل ویرگار وه هنگوم نبیه که د یه گل بلگه پاکسا بیه هوم پیوند بیه بوئه.\nشایت جزئیات د   [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log]  پیدا بوئن.",
-       "searchresults": "Ù\86تÙ\8aجÙ\87 Ù\8aا Ù¾Û\8c Ø¬Ù\88ری",
-       "searchresults-title": "Ù\86تÙ\8aجÙ\87 Ù\8aا Ù¾Û\8c Ø¬Ù\88ری سی \"$1\"",
+       "searchresults": "Ù\86تÙ\8aجٱÛ\8cا Ù¾Û\8c Ø¬Û\8aری",
+       "searchresults-title": "Ù\86تÙ\8aجٱÛ\8cا Ù¾Û\8c Ø¬Û\8aری سی \"$1\"",
        "titlematches": "داسون بلگه یکی بیه",
        "textmatches": "هومسازی نیسسه بلگه.",
        "notextmatches": "نیسسه بلگه هومسازی ناره",
        "searchprofile-images-tooltip": "جانیایانه پی جوری کو",
        "searchprofile-everything-tooltip": "همه مینونه یا نه پی جوری كو (شاملا بلگيا چك چنه)",
        "searchprofile-advanced-tooltip": "نوم جايا نوم ديار بگرد",
-       "search-result-size": "$1 ({{PLURAL:$2|1 Ú©Ù\84Û\8cÙ\85Ù\87|$2 Ú©Ù\84Û\8cÙ\85Ù\87 یا}})",
+       "search-result-size": "$1 ({{PLURAL:$2|1 Ú©Ù±Ù\84Û\8cÙ\85Ù±|$2 Ú©Ù±Ù\84Û\8cÙ\85Ù±یا}})",
        "search-result-category-size": "{{PLURAL:$1|1 أندوم|$1 أندومیا}} ({{PLURAL:$2|1 زیردأسە|$2 زیردأسە یا}}، {{PLURAL:$3|1 جانیا|$3 جانیایا}}",
        "search-redirect": "(ۋورگشتن سی $1)",
        "search-section": "(بهرجا $1)",
        "nchanges": "$1 {{PLURAL:$1|آلشت|آلشتیا}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|د آخری دیئن}}",
        "enhancedrc-history": "ڤیرگار",
-       "recentchanges": "Ø¢Ù\84ئشتÛ\8cا Ø¦Û\8cسئنی",
+       "recentchanges": "Ø¢Ù\84شتÛ\8cا Ø§Û\8cساÙ\9bنی",
        "recentchanges-legend": "گزینه یا آلشتیا ایسنی",
        "recentchanges-summary": "دو بیشتر آلشتیا تازباو نه د ویکی نه د ای بلگه پیگری کو.",
        "recentchanges-noresult": "هیژ آلشتی د درازا دوره دیار بیه وا ای معیاریا یکی نبی.",
        "rcshowhidecategorization-show": "نئشوٙ دأئن",
        "rcshowhidecategorization-hide": "قام کئردئن",
        "rclinks": "آخرین آلشتیا $1 د آخرین رۊزیا دیاری بٱک $2",
-       "diff": "Ù\81أرخ",
-       "hist": "ڤیرگار",
+       "diff": "Ù\81رÙ\82",
+       "hist": "ۋیرگار",
        "hide": "قام کئردئن",
        "show": "نئشوٙ دأئن",
        "minoreditletter": "م",
        "rc-old-title": "ذاتا چی \"$1\" راس بیه",
        "recentchangeslinked": "آلشتیا تی یکی",
        "recentchangeslinked-feed": "آلشتیا تی یکی",
-       "recentchangeslinked-toolbox": "آلشتیا ته یک",
+       "recentchangeslinked-toolbox": "آلشتیا تاٛ یٱک",
        "recentchangeslinked-title": "آلشتیا تی یکی د $1",
-       "recentchangeslinked-summary": "ای نوم گه تازه د بلگیایی که وا بلگیا ویجه هوم پیوند بینه آلشت بیه(یا سی اندومیا دسه بنی بیه)\nبلگیا یی که هان [[Special:Watchlist|your watchlist]]و گپ بینه",
+       "recentchangeslinked-summary": "ای نوم بلگٱ تازٱ د بلگٱیایی کاٛ ۋا بلگٱیا ۋیجٱ هوم پیۋند بینٱ آلشت بیٱ(یا سی ٱندومیا دٱسٱ بٱنی بیٱ)\nبلگٱیایی کاٛ هان د [[Special:Watchlist|your watchlist]]و گٱپ بینٱ",
        "recentchangeslinked-page": "نوم بألگە:",
        "recentchangeslinked-to": "آلشتیایی که د بلگه یا هوم پیوند بینه وه جا بلگه دئیه بیه نشو بیه",
        "recentchanges-page-added-to-category": "[[:$1]]د دأسە ئضاف بی",
        "recentchanges-page-removed-from-category": "[[:$1]] د دأسە جئگا بی",
        "recentchanges-page-removed-from-category-bundled": "[[:$1]] و {{PLURAL:$2|بألگە تأکی|$2 بألگە یا}} د دأسە ئضاف بییئن",
        "autochange-username": "آلئشتکاری خودأنجوم مئدیاڤیکی",
-       "upload": "سوڤار کئردئن جانیا",
+       "upload": "سوۋار کردن جانیا",
        "uploadbtn": "سوڤار کئردئن جانیا",
        "reuploaddesc": "سوار کردن نه انجوم شیو بکیت و د ورئردیت جابلگ سوارکرد",
        "upload-tryagain": "کل کردن توضیحیا آلشت دئیه بیه جانیا",
        "listfiles-latestversion-yes": "هأری",
        "listfiles-latestversion-no": "تە",
        "file-anchor-link": "جانیا",
-       "filehist": "ڤیرگار جانیا",
+       "filehist": "ۋیرگار جانیا",
        "filehist-help": "ری  ويرگاريا بپورنيت تا نسقه مرتوط بونيت.",
        "filehist-deleteall": "هأمە نئ پاکسا کو",
        "filehist-deleteone": "پاکسا کئردئن",
        "filehist-revert": "لئرنیئن",
-       "filehist-current": "تازە باڤ",
+       "filehist-current": "تازٱ باۋ",
        "filehist-datetime": "ويرگار/وخت",
-       "filehist-thumb": "عسگ كؤچك بيه",
-       "filehist-thumbtext": "كؤچك كردن سی  نسقه چی $1",
+       "filehist-thumb": "ٱسگ کوچک بیٱ",
+       "filehist-thumbtext": "كوچک کردن سی نوسقٱ چی $1",
        "filehist-nothumb": "هیچ بن کلیکی نئ",
        "filehist-user": "کاریار",
        "filehist-dimensions": "بعديا",
        "filehist-filesize": "انازه فایل",
-       "filehist-comment": "ڤیر و باڤأر",
-       "imagelinks": "وه کار گری جانیا",
+       "filehist-comment": "ۋیر و باۋر",
+       "imagelinks": "د کار گرتن جانیا",
        "linkstoimage": "دمال بيه {{PLURAL:$1|ديس ونيا بلگه|$1 ديس ون بلگيا}} دای فایل:",
        "linkstoimage-more": "بیشتر د $1 بلگه د ای جانیا هوم پیوند {{PLURAL:$1|بیه|بینه}}.\nنومگه هاری تئنا {{PLURAL:$1|اولین هوم پیوند|اولین $1 هوم پیوند}} د ای بلگه نه نشو می ئه.\n[[Special:WhatLinksHere/$2|نومگه کامل]] ئم هیئش.",
        "nolinkstoimage": "ایچه هیژ بلگه ای سی هوم پیوند بیئن وا ای جانیا نی",
        "unusedtemplates": "قالویا وه کار نبرده بیه.",
        "unusedtemplatestext": "ای بلگه همه بلگه یایی که هان د نومجا {{ns:template}}و د هیچ بلگه ای وه کار گرته نبینه، نوم بنی می که.\nد ویرتو با که دما یه که بهایت بلگه یا هوم پیوند هنی نه پاکسا بکیت دشو وارسی ای انجوم بئیت.",
        "unusedtemplateswlh": "هوم پیوندیا هنی",
-       "randompage": "بÙ\84Ú¯Ù\87 Ø¨Ø®ØªÙ\83ی",
+       "randompage": "بÙ\84Ú¯Ù± Ø¨Ø®ØªÚ©ی",
        "randompage-nopages": "هیچ بلگه ای د ای {{PLURAL:$2|نومجا|نومجایا}}  نئ:$1.",
        "randomincategory": "بلگه بختی د ای دسه",
        "randomincategory-invalidcategory": "\"$1\"  نوم دسه معتوری نئ.",
        "listusers-desc": "سرجاخودگری د اساس گپ د کؤچک",
        "usereditcount": "$1{{PLURAL:$1|ویرایشت|ویرایشتیا}}",
        "usercreated": "{{جنسیت:$3|راس بیه}}د $1 at $2",
-       "newpages": "بÙ\84Ú¯Ù\8aا Ù\86Ù\88",
+       "newpages": "بÙ\84Ú¯Ù±Û\8cا Ù\86Û\8f",
        "newpages-username": "نوم کاریاری:",
        "ancientpages": "بلگه یا نهاتر",
        "move": "جاوه جا بوئيت",
        "unwatchthispage": "نئھاگئری دیئن",
        "notanarticle": "ھیچ بألگە مینوٙنە داری نی",
        "notvisiblerev": "آخری وانئری که د دس یه کاریار هنی انجوم بیه پاکسا بیه.",
-       "watchlist-details": "{{PLURAL:$1|$1 Ø¨Ù\84Ú¯Ù\87|$1 Ø¨Ù\84Ú¯Û\8cا}} Ø¯ Ø³Û\8cÙ\84 Ø¨Ø±Ú¯ØªÙ\88 Ù\87Û\8cØ´ Ø¨Ù\84Ú¯Ù\87 Ù\82سÙ\87 Ú©Ø±Ø¯Ù\86 نی.",
+       "watchlist-details": "{{PLURAL:$1|$1 Ø¨Ù\84Ú¯Ù±|$1 Ø¨Ù\84Ú¯Ù±Û\8cا}} Ø¯ Ø³Ø§Ù\9bÛ\8cÙ\84 Ø¨Ø±Ú¯ØªÛ\8a Ù\87Û\8cÚ\86 Ø¨Ù\84Ú¯Ù± Ù\82ساÙ\9b Ú©Ø±Ø¯Ù\86Û\8c نی.",
        "wlheader-enotif": "ڤارئسیاری أنجومانامە کونئشتکار بییە.",
        "wlheader-showupdated": "بلگه یایی که د آخرین کرتی که شما دشو دیئن کردیته آلشت بینه د <strong>توپر</strong>نشون دئه بینه",
        "wlnote": "د هار {{PLURAL:$1|آلشت|<strong>$1</strong> آلشتی}} که د {{PLURAL:$2|ساعت|<strong>$2</strong> ساعت}} دماتر انجوم بیه هیئش، ویرگار آخرین واجوری انجام شده موجود است، ویرگار آخری واجوری: $3، $4",
        "deleteprotected": "شما نمی تونیت ای بلگه نه پاکسا بکیت سی یه که وه پر و پیم بیه.",
        "deleting-backlinks-warning": "''' هشدار:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|بلگه یا هنی]] ین که وه بلگه یی که شما د حال و بار پاکسا کردن ونیت پیوند دارن یا د وه پرگنجایشت کاری بیینه.",
        "rollback": "چواشه کردن ویرایشتیا",
-       "rollbacklink": "ورگشتن",
+       "rollbacklink": "ۋرگشتن",
        "rollbacklinkcount": "چواشه کردن $1 {{PLURAL:$1|ویرایشت|ویرایشتیا}}",
        "rollbacklinkcount-morethan": "چواشه کردن بیشتر د$1 {{PLURAL:$1|ویرایشت|ویرایشتیا}}",
        "rollbackfailed": "چواشه کردن د خوئی انجوم نبی",
        "sp-contributions-toponly": "فقط ویرایشتیایی که جزئه آخرین دوواره دیئن هئین نشو بیه",
        "sp-contributions-newonly": "فقط ویرایشتیایی که مال دروس کردن بلگه هیئن نشو بیه.",
        "sp-contributions-submit": "پئی جوٙری",
-       "whatlinkshere": "كؤم هوم پیوندیا هان ايچه",
+       "whatlinkshere": "کوم هوم پیۋندیا هان ایچاٛ",
        "whatlinkshere-title": "بلگه ای که د $1 هوم پیوند بیه",
        "whatlinkshere-page": "بألگە",
        "linkshere": "بلگیا نهایی د '''[[:$1]]''' هوم پیوند بیه",
        "whatlinkshere-hideredirs": "$1 ۋاگردۊنیا",
        "whatlinkshere-hidetrans": "$1 چٱن نتیجٱیی",
        "whatlinkshere-hidelinks": "هوم پیۋندیا $1",
-       "whatlinkshere-hideimages": "فایل هوم پیوندیا $1",
+       "whatlinkshere-hideimages": "جانیا هوم پیۋندیا $1",
        "whatlinkshere-filters": "فيلتريا",
        "autoblockid": "خود نهاگری #$1",
        "block": "منع کارور",
        "blocklist-nousertalk": "نبوئه بلگه چک چنه خوتونه ویرایشت بکید",
        "ipblocklist-empty": "جاگه نوم گه حالیه",
        "ipblocklist-no-results": "دسرسی نوم کاریاری یا تیرنشون آی پی حاسته بیه نهاگری نبیه.",
-       "blocklink": "نهاگری بوئه",
+       "blocklink": "ناٛهاگری بۊٱ",
        "unblocklink": "بی قطی",
        "change-blocklink": "اجازه نديئن سی  آلشت",
        "contribslink": "هومیاریا",
        "allmessages-language": "زون:",
        "allmessages-filter-submit": "رو",
        "allmessages-filter-translate": "والرن",
-       "thumbnail-more": "Ú¯Ù¾ Ù\83ردن",
+       "thumbnail-more": "گٱپ Ú©ردن",
        "filemissing": "گم بیئن جانیا",
        "thumbnail_error": "خطا د راس بیئن بن کلئکی:$1",
        "thumbnail_error_remote": "پیغوم خطا $1 :\n$2",
        "tooltip-pt-preferences": "اولۋیتیا شوما",
        "tooltip-pt-watchlist": "نوم نوشت د بلگه يايی كه شما آلشتاشونه پيگئری  ميكيد",
        "tooltip-pt-mycontris": "یاٛ گاٛل د هومیاریا شوما",
-       "tooltip-pt-login": "ایما موئیم که روئیت وامین سامونگه؛ولی ای کار اژباری نئ",
+       "tooltip-pt-login": "ایما مۊئیم کاٛ رۊئیت ۋامین سامۊنگٱ؛ ۋلی ای کار اٛژبار ینی.",
        "tooltip-pt-logout": "د سامونه دراومائن",
-       "tooltip-pt-createaccount": "Ø´Ù\85ا ØªØ´Ù\88Û\8cÙ\82 Ø¨Û\8cÛ\8cتÙ\87 Ú©Ù\87 Û\8cÙ\87 Ú¯Ù\84 Ø­Ø³Ø§Ù\88 Ø±Ø§Ø³Øª Ø¨Ú©Û\8cت Ù\88 Ø¨Û\8cاÛ\8cت Ù\88اÙ\85Û\8cÙ\86Ø\9b Ø¯ Ù\87ر Ø¬Ù\88ر Ø§Û\8c Ú©Ø§Ø± Ø§Ú\98بارÛ\8c Ù\86ئ",
-       "tooltip-ca-talk": "Ù\82سÙ\87 Ø¯Ø¨Ø§Ø±Ù\87 Ù\85Û\8cÙ\86Ù\88Ù\86Ù\87 Ø¨Ù\84Ú¯Ù\87",
+       "tooltip-pt-createaccount": "Ø´Ù\88Ù\85ا ØªØ´Û\8bÛ\8cÙ\82 Ø¨Û\8cتٱ Ú©Ø§Ù\9b Û\8cاÙ\9b Ú¯Ø§Ù\9bÙ\84 Ù\87ساÛ\8b Ø±Ø§Ø³Øª Ø¨Ú©Û\8cت Ù\88 Ø¨Û\8cاÛ\8cت Û\8bاÙ\85Û\8cÙ\86Ø\9b Ø¯ Ù\87ر Ø¬Û\8aر Ø§Û\8c Ú©Ø§Ø± Ø§Ù\9bÚ\98بارÛ\8c Ù\86Û\8c.",
+       "tooltip-ca-talk": "Ù\82سٱ Ø¯Ø§Ù\9bبارٱ Ù\85Û\8cÙ\86Û\8aÙ\86Ù± Ø¨Ù\84Ú¯Ù±.",
        "tooltip-ca-edit": "ۋیرایشت ای بلگٱ",
        "tooltip-ca-addsection": "د یه گل بهرجا هنی شرو بک",
        "tooltip-ca-viewsource": "ای بلگه پر و پیم بيه.\nشما تونيت سرچمه ش بئوينيت",
-       "tooltip-ca-history": "دوواره ديئن ای بلگه",
+       "tooltip-ca-history": "دۋوارٱ دیاٛن ای بلگٱ",
        "tooltip-ca-protect": "ای بلگه نه حفاظت بكيد",
        "tooltip-ca-unprotect": "پر و پیم گیری د ای بلگه نه آلشت بکیت",
        "tooltip-ca-delete": "ای بلگه نه پاکسا کو",
        "tooltip-ca-move": "ای بگله نه جا وه جا كو",
        "tooltip-ca-watch": "اضاف کردن ای بلگه وه نوم نوشت پیگئریاتو",
        "tooltip-ca-unwatch": "ورداشتن ای بلگه وه نوم نوشت پیگئریاتو",
-       "tooltip-search": "پی جوری {{SITENAME}}",
-       "tooltip-search-go": "رؤ د بلگه ای که یه نوم راستکی ها مینش الوت ار دش بوئه",
-       "tooltip-search-fulltext": "بÙ\84Ú¯Ù\8aاÙ\86Ù\87 Ø³Û\8c Ú\86Ù\86س Ù\86Û\8cسسÙ\87 Û\8cÛ\8c Ù¾Û\8c Ø¬Ù\88رÛ\8c Ú©Ù\88",
+       "tooltip-search": "پی جۊری {{SITENAME}}",
+       "tooltip-search-go": "رو دبلگٱیی کاٛ یٱ نوم راستکی ها مینش ٱلۋت ٱر دش بۊٱ",
+       "tooltip-search-fulltext": "بÙ\84Ú¯Ù±Û\8cاÙ\86اÙ\9b Ø³Û\8c Ú\86اÙ\9bÙ\86Û\8c Ù\86Û\8cسسٱÛ\8cÛ\8c Ù¾Û\8c Ø¬Û\8aرÛ\8c Ø¨Ù±Ú©.",
        "tooltip-p-logo": "ساٛیل سرآسۊنٱ بکیت",
-       "tooltip-n-mainpage": "سرآسونه نه بونيت",
-       "tooltip-n-mainpage-description": "سرآسونه نه بونيت",
-       "tooltip-n-portal": "دباره پروجه،شما می تونیت(تونيت) چی بکیت، د کجا ای چیانه بجوریت",
-       "tooltip-n-currentevents": "ساوند دونسمنديايی كه هان د پيشومدل تازه باو پيدا كو",
+       "tooltip-n-mainpage": "سرآسۊنٱ نٱ ساٛیل بٱکیت",
+       "tooltip-n-mainpage-description": "سرآسۊنٱ نٱ ساٛیل بٱکیت",
+       "tooltip-n-portal": "دٱبارٱ پوروجٱ؛ شوما می تۊنیت(تۊنیت) چی بٱکیت؛ د کوجا ای چیانٱ بٱجۊریت.",
+       "tooltip-n-currentevents": "ساۋند دۊنسمنیایی کاٛ هان د روخ ۋنیا تازٱ باۋ دیاری بٱک",
        "tooltip-n-recentchanges": "یاٛ گاٛل نومگٱ سی آلشتکاریا د ۋیکی",
-       "tooltip-n-randompage": "سوار كرد بلگه بختكی",
-       "tooltip-n-help": "یه گل جاگه سی فهمسن",
-       "tooltip-t-whatlinkshere": "یه گل نومگه د همه بلگه یایی كه ايچه هوم پیوند دارن",
+       "tooltip-n-randompage": "سوۋار کرد بلگٱ بختکی",
+       "tooltip-n-help": "یاٛ گاٛل جاگٱ سی فٱماٛسن",
+       "tooltip-t-whatlinkshere": "یاٛ گاٛل نومگٱ د همٱ بلگٱیایی کاٛ ایچاٛ هوم پیۋند دارن.",
        "tooltip-t-recentchangeslinked": "آلشتیا تازه باو مئن بلگيايي كه د ای بلگه هوم پیوند بيئنه",
        "tooltip-feed-rss": "هوال حون آر اس اس سی ای بلگه",
        "tooltip-feed-atom": "حوال هون اتمی سی ای بلگه",
        "tooltip-t-contributions": "یاٛ گاٛل سیائٱ هومیاری سی {{GENDER:$1|ای کاریار}}",
        "tooltip-t-emailuser": "سی ای كارور ايميل كل كو",
        "tooltip-t-info": "دونسمنیا بیشتر دباره ای بلگه",
-       "tooltip-t-upload": "سوارکردن جانیایا",
+       "tooltip-t-upload": "سوۋار کردن جانیایا",
        "tooltip-t-specialpages": "نومگٱ همٱ بلگٱیا ۋیجٱ",
-       "tooltip-t-print": "نسقه پلا بيئنی سی ای بلگه",
+       "tooltip-t-print": "نوسقٱ پاٛلا بیاٛنی سی ای بلگٱ",
        "tooltip-t-permalink": "هوم پیوند همیشه یی سی دوواره دیئن ای بلگه",
-       "tooltip-ca-nstab-main": "دÙ\8aئÙ\86 Ù\85Û\8cÙ\86Ù\88Ù\86Ù\87 Ø¨Ù\84Ú¯Ù\87",
+       "tooltip-ca-nstab-main": "دÙ\8aاÙ\9bÙ\86 Ù\85Û\8cÙ\86Û\8aÙ\86Ù± Ø¨Ù\84Ú¯Ù±",
        "tooltip-ca-nstab-user": "ديئن بلگه کاریار",
        "tooltip-ca-nstab-media": "دیئن بلگه وارسگر",
        "tooltip-ca-nstab-special": "یٱ یاٛ گاٛل بلگٱ ۋیجٱ یٱ؛ نبۊٱ ۋیرایشتش بٱکیت",
        "sunday-at": "یه شمه د $1",
        "yesterday-at": "دیرو د $1",
        "bad_image_list": "دونسمنديانه وه ای شلگ وارد بكيت:\n\nفقط سرخط يایی که وا * شرو بوئن د وير گرته بوئن. اولی چسب ون مئن هر سرخط، باید چسب ونی وه یک عسگ گن با.\nچسب ونيا نيایی د همو سرخط، وه عنوان چيا استثنادار د وير گرته بوئن",
-       "metadata": "دادÙ\8aا  Ù\81رÙ\87 Ú¯پ",
+       "metadata": "رسÛ\8cÙ\86Ù±Û\8cا Ù\81اÙ\9bرٱ Ú¯Ù±پ",
        "metadata-help": "ای فایل شومل دونسمنیا هنی یه.شایت د دیربین رقم ون یا اسکنری که سی راس کردنشو استفاده بیه،وه ایچه اضاف بیه",
        "metadata-expand": "نشو دئن جزییات دمادیسگری",
        "metadata-collapse": "قام کردن جزییات دمادیسگری",
        "fileduplicatesearch-result-1": "جانیا «$1» تکراری نیئش.",
        "fileduplicatesearch-result-n": "جانیا «$1» {{PLURAL:$2|یه گل چی تکراری|$2 یه گل چی تکراری}} داره.",
        "fileduplicatesearch-noresults": "جانیایی وا نوم «$1» یافت نبی.",
-       "specialpages": "بÙ\84Ú¯Ù\8aا Ù\88Ù\8aجÙ\87",
+       "specialpages": "بÙ\84Ú¯Ù±Û\8cا Û\8bÛ\8cجٱ",
        "specialpages-note-top": "میراث",
        "specialpages-group-maintenance": "گزارشتیا واداشتن",
        "specialpages-group-other": "بلگه یا ویجه هنی",
        "htmlform-cloner-delete": "ؤرداشتن",
        "htmlform-cloner-required": "سی کمترونه یه گل ارزایشت لازمه",
        "logentry-delete-delete": "$1 بلگه {{GENDER:$2|پاکسا بیه}} $3",
-       "logentry-delete-restore": "$1 {{GENDER:$2|}} Ø¨Ù\84Ú¯Ù\87 $3 Ø¯ Ù\86Ù\88 Ø²Ù\86Ù\87 Ú©Ø±Ø¯Ù\87",
+       "logentry-delete-restore": "$1 {{GENDER:$2|}} Ø¨Ù\84Ú¯Ù± $3 Ø¯ Ù\86Û\8f Ø²Ø§Ù\9bÙ\86Ù± Ø¨Û\8cÙ±",
        "logentry-delete-event": "$1 دیاری {{PLURAL:$5|یه گل رخ ون د پهرستنومه|$5 رخ ونیا د پهرستنومه}} نه $3 {{GENDER:$2|آلشتکاری کرد}}: $4",
        "logentry-delete-revision": "$1 دیاری {{PLURAL:$5|یه گل وانئری|$5 وانئریا}} نه $3 {{GENDER:$2|آلشتکاری کرد}}: $4",
        "logentry-delete-event-legacy": "$1 دیاری پهرستنومه رخ ونیا نه د $3 {{GENDER:$2|آلشت ده}}",
        "feedback-thanks": "منموندارتونیم! دمادار حوال حون شما د بلگه «[$1 $2]» ثبت بی.",
        "feedback-thanks-title": "دتو منمونیم!",
        "feedback-useragent": "راوط کاریا:",
-       "searchsuggest-search": "پی جۊری",
+       "searchsuggest-search": "پی جۊری {{SITENAME}}",
        "searchsuggest-containing": "د حال و بار مینونه دار...",
        "api-error-badtoken": "خطا مینجا:رازینه امنیتی اشتوا",
        "api-error-emptypage": "یه گل بلگه تازه راس بکیت،بلگه یا حالی صلادار کاری نیئن.",
index e0c77b3..2d4ccd4 100644 (file)
        "passwordreset-emaildisabled": "El. pašto funkcijos uždraustos šiame wiki.",
        "passwordreset-username": "Naudotojo vardas:",
        "passwordreset-domain": "Domenas:",
-       "passwordreset-email": "E-pašto adresas:",
+       "passwordreset-email": "El. pašto adresas:",
        "passwordreset-emailtitle": "Paskyros informacija apie {{sitename}}",
        "passwordreset-emailtext-ip": "Kažkas (tikriausiai jūs, iš IP adreso $1) paprašė priminti jūsų slaptažodį svetainėje {{SITENAME}} ($4). Šio naudotojo {{PLURAL:$3|paskyra|paskyros}} yra susietos su šiuo elektroninio pašto adresu:\n\n$2\n\n{{PLURAL:$3|Šis laikinas slaptažodis|Šie laikini slaptažodžiai}} baigs galiot po {{PLURAL:$5|vienos dienos|$5 dienų}}. \n\nJūs turėtumėte prisijungti ir pasirinkti naują slaptažodį. Jei priminti slaptažodį paprašė kažkas kitas arba jūs prisiminėte savo pirminį slaptažodį ir jums nebereikia jo pakeisti, galite ignoruoti šį pranešimą ir toliau naudotis savo senuoju slaptažodžiu.",
        "passwordreset-emailtext-user": "Naudotojas $1 svetainėje {{SITENAME}} sukūrė užklausą slaptažodžio priminimui svetainėje {{SITENAME}}\n($4). Šio naudotojo {{PLURAL:$3|paskyra|paskyros}} susieto su šiuo elektroniniu paštu $2. \n\n{{PLURAL:$3|Šis laikinas slaptažodis|Šie laikini slaptažodžiai}} baigs galioti po {{PLURAL:$5|vienos dienos|$5 dienų}}. Jūs turėtumėte prisijungti ir pasirinkti naują slaptažodį. Jei kažkas padarė tai be jūsų žinios arba jūs prisiminėte savo pirminį slaptažodį, ir jūs nebenorite jo pakeisti, galite ignoruoti šį pranešimą ir toliau naudotis savo senuoju slaptažodžiu.",
        "uploadstash-bad-path-invalid": "Kelias negalimas.",
        "uploadstash-bad-path-unknown-type": "Nežinomas tipas „$1“.",
        "uploadstash-file-not-found-no-thumb": "Nepavyko gauti miniatiūros.",
+       "uploadstash-zero-length": "Rinkmena neturi ilgio.",
        "invalid-chunk-offset": "Neleistinas segmento poslinkis",
        "img-auth-accessdenied": "Prieiga uždrausta",
        "img-auth-nopathinfo": "Trūksta PATH_INFO.\nJūsų serveris nenustatytas perduoti šią informaciją.\nTai gali būti CGI paremta ir negali palaikyti img_auth.\nDaugiau informacijos https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization. žr.",
        "pageswithprop-legend": "Puslapiai su puslapio atributais",
        "pageswithprop-text": "Šiame puslapyje pateikiami puslapiai, turintys atitinkamą puslapio atributą.",
        "pageswithprop-prop": "Atributo pavadinimas:",
+       "pageswithprop-reverse": "Rūšiuoti atvirkštine tvarka",
        "pageswithprop-submit": "Eiti",
        "pageswithprop-prophidden-long": "ilgo teksto turto vertė paslėpta ($1)",
        "pageswithprop-prophidden-binary": "dvejetainė turto vertė paslėpta ($1)",
        "newimages-user": "IP adresas ar vartotojo vardas",
        "newimages-showbots": "Rodyti robotų atliktus įkėlimus",
        "newimages-hidepatrolled": "Paslėpti patruliuotus įkeltus failus",
+       "newimages-mediatype": "Laikmenos tipas:",
        "noimages": "Nėra ką parodyti.",
        "ilsubmit": "Ieškoti",
        "bydate": "pagal datą",
        "compare-title-not-exists": "Pavadinimas, kurį nurodėte, neegzistuoja.",
        "compare-revision-not-exists": "Keitimas, kurį nurodėte, neegzistuoja.",
        "diff-form": "Skirtumai",
+       "diff-form-oldid": "Senos versijos ID (neprivaloma)",
+       "diff-form-submit": "Rodyti skirtumus",
+       "permanentlink": "Nuolatinė nuoroda",
+       "permanentlink-revid": "Versijos ID",
+       "permanentlink-submit": "Peržiūrėti versiją",
        "dberr-problems": "Atsiprašome! Svetainei iškilo techninių problemų.",
        "dberr-again": "Palaukite kelias minutes ir perkraukite puslapį.",
        "dberr-info": "(Nepavyksta pasiekti duomenų bazės: $1)",
index 18f0925..908fb56 100644 (file)
        "expansion-depth-exceeded-warning": "Страницата ја надмина длабочината на проширувањето",
        "parser-unstrip-loop-warning": "Утврдена е јамка",
        "unstrip-depth-warning": "Пречекорена е границата на рекурзија ($1)",
+       "unstrip-depth-category": "Страници каде е надмината продорноста на отслекувањето",
+       "unstrip-size-warning": "Надмината е големината на отслекувањето ($1)",
+       "unstrip-size-category": "Страница каде е надмината големинската граница на отслекувањето",
        "converter-manual-rule-error": "Пронајдов грешка во правилото за рачно претворање на јазик",
        "undo-success": "Уредувањето може да се откаже.\nВе молиме споредете ги промените со претходната верзија за да проверите дали тоа е сигурно она што сакате да го направите, а потоа зачувајте ги промените за да го завршите откажувањето на претходното уредување.",
        "undo-failure": "Уредувањето не можеше да се откаже заради меѓувремени спротиставени уредувања.",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|бајт|бајти}}",
        "limitreport-expansiondepth": "Најголема продорност на проширувањето",
        "limitreport-expensivefunctioncount": "Бр. на сложени расчленувачки функции",
+       "limitreport-unstrip-depth": "Продорност на повторливоста на отслекувањето",
+       "limitreport-unstrip-depth-value": "$1/$2",
+       "limitreport-unstrip-size": "Големина на отслекувањето по проширувањето",
+       "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|бајт|бајти}}",
        "expandtemplates": "Прошири шаблони",
        "expand_templates_intro": "Оваа службена страница зема еден викитекст и рекурзивно ги проширува сите шаблони во него.\nИсто така проширува и расчленувачки функции како\n<code><nowiki>{{</nowiki>#language:…}}</code> и променливи како\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nВсушност, го проширува сето она што стои во двојни аглести загради.",
        "expand_templates_title": "Наслов на контекстот, за {{FULLPAGENAME}} и тн.:",
index 30f0ba2..bd8fb47 100644 (file)
        "cannotlogoutnow-text": "Não pode encerrar a sessão quando utilizar $1.",
        "welcomeuser": "Bem-vindo, $1!",
        "welcomecreation-msg": "A sua conta foi criada.\nNão se esqueça de personalizar as suas [[Special:Preferences|preferências]] na wiki {{SITENAME}}.",
-       "yourname": "Nome de utilizador(a):",
-       "userlogin-yourname": "Nome de utilizador(a)",
+       "yourname": "Nome de utilizador:",
+       "userlogin-yourname": "Nome de utilizador",
        "userlogin-yourname-ph": "Introduza o seu nome de utilizador",
        "createacct-another-username-ph": "Introduza o nome de utilizador",
        "yourpassword": "Palavra-passe:",
        "passwordreset-text-many": "{{PLURAL:$1|Preencha um dos campos para receber uma palavra-passe temporária por correio eletrónico.}}",
        "passwordreset-disabled": "A redefinição da palavra-passe foi impossibilitada nesta wiki.",
        "passwordreset-emaildisabled": "A funcionalidade de correio eletrónico foi desativada nesta wiki.",
-       "passwordreset-username": "Nome de utilizador(a):",
+       "passwordreset-username": "Nome de utilizador:",
        "passwordreset-domain": "Domínio:",
        "passwordreset-email": "Correio eletrónico:",
        "passwordreset-emailtitle": "Detalhes da conta na wiki {{SITENAME}}",
        "expansion-depth-exceeded-warning": "A página excedeu a profundidade de expansão",
        "parser-unstrip-loop-warning": "Foi detetado um ciclo infinito da função unstrip",
        "unstrip-depth-warning": "Limite de recursão da função unstrip excedido ($1)",
+       "unstrip-depth-category": "Páginas nas quais o limite da profundidade de remoção de etiquetas é excedido",
+       "unstrip-size-warning": "Limite da profundidade de remoção de etiquetas excedido ($1)",
+       "unstrip-size-category": "Páginas nas quais o limite da dimensão de remoção de etiquetas é excedido",
        "converter-manual-rule-error": "Erro detetado na regra de conversão de língua manual",
        "undo-success": "É possível desfazer a edição.\nVerifique a comparação abaixo, por favor, para se certificar de que corresponde ao que pretende fazer.\nDepois grave as alterações, para finalizar e desfazer a edição.",
        "undo-failure": "Não foi possível desfazer a edição por conflito com alterações intermédias.",
        "history-feed-empty": "A página solicitada não existe.\nPode ter sido eliminada da wiki ou o nome sido alterado.\nTente [[Special:Search|pesquisar na wiki]] novas páginas relevantes.",
        "history-edit-tags": "Editar etiquetas das revisões selecionadas",
        "rev-deleted-comment": "(resumo da edição suprimido)",
-       "rev-deleted-user": "(nome de utilizador(a) removido)",
+       "rev-deleted-user": "(nome de utilizador removido)",
        "rev-deleted-event": "(registos de detalhes eliminados)",
        "rev-deleted-user-contribs": "[nome de utilizador(a) ou IP removido do histórico – edição ocultada das contribuições públicas]",
        "rev-deleted-text-permission": "Esta revisão de página foi <strong>eliminada</strong>.\nEncontrará detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registo de eliminações].",
        "prefs-reset-intro": "Pode usar esta página para repor as configurações padrão das preferências.\nAs suas preferências serão modificadas para os valores predefinidos do sítio.\nEsta operação não pode ser desfeita.",
        "prefs-emailconfirm-label": "Confirmação do correio eletrónico:",
        "youremail": "Correio eletrónico:",
-       "username": "Nome de {{GENDER:$1|utilizador|utilizadora|utilizador(a)}}:",
+       "username": "Nome {{GENDER:$1|do utilizador|da utilizadora|de utilizador}}:",
        "prefs-memberingroups": "{{GENDER:$2|Membro}} {{PLURAL:$1|do grupo|dos grupos}}:",
        "prefs-memberingroups-type": "$1",
        "group-membership-link-with-expiry": "$1 (até $2)",
        "usercreated": "{{GENDER:$3|criado|criada|criado(a)}} a $1 às $2",
        "newpages": "Páginas recentes",
        "newpages-submit": "Mostrar",
-       "newpages-username": "Nome de utilizador(a):",
+       "newpages-username": "Nome de utilizador:",
        "ancientpages": "Páginas mais antigas",
        "move": "Mover",
        "movethispage": "Mover esta página",
        "sp-contributions-newbies-sub": "Para contas novas",
        "sp-contributions-newbies-title": "Contribuições de contas novas",
        "sp-contributions-blocklog": "registo de bloqueios",
-       "sp-contributions-suppresslog": "contribuições de {{GENDER:$1|utilizador|utilizadora|utilizador(a)}} suprimidas",
-       "sp-contributions-deleted": "contribuições de {{GENDER:$1|utilizador|utilizadora|utilizador(a)}} eliminadas",
+       "sp-contributions-suppresslog": "contribuições suprimidas {{GENDER:$1|do utilizador|da utilizadora}}",
+       "sp-contributions-deleted": "contribuições eliminadas {{GENDER:$1|do utilizador|da utilizadora}}",
        "sp-contributions-uploads": "carregamentos",
        "sp-contributions-logs": "registos",
        "sp-contributions-talk": "discussão",
        "autoblockid": "Bloqueio automático nº $1",
        "block": "Bloquear utilizador(a)",
        "unblock": "Desbloquear utilizador",
-       "blockip": "Bloquear {{GENDER:$1|utilizador|utilizadora|utilizador(a)}}",
+       "blockip": "Bloquear {{GENDER:$1|utilizador|utilizadora}}",
        "blockiptext": "Utilize o formulário abaixo para bloquear o acesso de escrita a um endereço IP específico ou a um nome de utilizador(a).\nIsto só deve ser feito para prevenir vandalismo e de acordo com a [[{{MediaWiki:Policy-url}}|política]]. Indique a seguir um motivo de bloqueio específico (por exemplo, indicando as páginas que foram alvo de vandalismo).\nPode bloquear intervalos de endereços IP com a sintaxe [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]; o maior intervalo permitido é /$1 para IPv4 e /$2 para IPv6.",
        "ipaddressorusername": "Endereço IP ou nome de utilizador:",
        "ipbexpiry": "Expiração:",
        "ipbcreateaccount": "Impedir a criação de contas",
        "ipbemailban": "Impedir utilizador(a) de enviar correio eletrónico",
        "ipbenableautoblock": "Bloquear automaticamente o endereço IP mais recente deste(a) utilizador(a) e todos os endereços IP subsequentes a partir dos quais ele(a) tente editar",
-       "ipbsubmit": "Bloquear este(a) utilizador(a)",
+       "ipbsubmit": "Bloquear este utilizador",
        "ipbother": "Outro período:",
        "ipboptions": "2 horas:2 hours,1 dia:1 day,3 dias:3 days,1 semana:1 week,2 semanas:2 weeks,1 mês:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,indefinido:infinite",
        "ipbhidename": "Ocultar nome de utilizador nas edições e listas",
        "scarytranscludetoolong": "[O URL é demasiado longo]",
        "deletedwhileediting": "<strong>Aviso:</strong> Esta página foi eliminada após ter começado a editá-la!",
        "confirmrecreate": "Depois de ter começado a editar esta página, {{GENDER:$1|o utilizador|a utilizadora|o(a) utilizador(a)}} [[User:$1|$1]] ([[User talk:$1|discussão]]) eliminou-a pelo seguinte motivo:\n: <em>$2</em>\nConfirme que quer realmente recriar esta página, por favor.",
-       "confirmrecreate-noreason": "{{GENDER:$1|O utilizador|A utilizadora|O(a) utilizador(a)}} [[User:$1|$1]] ([[User talk:$1|discussão]]) eliminou esta página depois de ter começado a editá-la. Confirme que deseja recriar a página, por favor.",
+       "confirmrecreate-noreason": "{{GENDER:$1|O utilizador|A utilizadora}} [[User:$1|$1]] ([[User talk:$1|discussão]]) eliminou esta página depois de ter começado a editá-la. Confirme que deseja recriar a página, por favor.",
        "recreate": "Recriar",
        "confirm-purge-title": "Purgar esta página",
        "confirm_purge_button": "OK",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|byte|bytes}}",
        "limitreport-expansiondepth": "Profundidade máxima de expansão",
        "limitreport-expensivefunctioncount": "Número de funções exigentes do analisador sintático",
+       "limitreport-unstrip-depth": "Profundidade da recursividade da remoção de etiquetas",
+       "limitreport-unstrip-depth-value": "$1/$2",
+       "limitreport-unstrip-size": "Dimensão, após expansão, da remoção de etiquetas (unstrip)",
+       "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|byte|bytes}}",
        "expandtemplates": "Expandir predefinições",
        "expand_templates_intro": "Esta página especial recebe texto wiki e expande recursivamente todas as predefinições nele existentes.\nTambém expande funções do analisador sintático, tais como\n<nowiki>{{</nowiki>#language:...}}, e variáveis, como\n<nowiki>{{</nowiki>CURRENTDAY}}.\nNa verdade, expande tudo o que estiver entre chavetas duplas.",
        "expand_templates_title": "Título de contexto para {{FULLPAGENAME}} etc.:",
index 6849ba5..fe0e5c9 100644 (file)
        "limitreport-unstrip-depth": "Label for the \"unstrip depth\" row in the limit report table. \"Unstrip\" is a MediaWiki function name and as such does not need to be translated.",
        "limitreport-unstrip-depth-value": "{{optional}}\nFormat for the \"unstrip depth\" row in the limit report table.\n\nParameters:\n* $1 - the usage\n* $2 - the maximum",
        "limitreport-unstrip-size": "Label for the \"unstrip size\" row in the limit report table. \"Unstrip\" is a MediaWiki function name and as such does not need to be translated.",
-       "limitreport-unstrip-size-value": "{{optional}}\nFormat for the \"unstrip size\" row in the limit report table.\n\nParameters:\n* $1 - the usage\n* $2 - the maximum",
+       "limitreport-unstrip-size-value": "Format for the \"unstrip size\" row in the limit report table.\n\nParameters:\n* $1 - the usage\n* $2 - the maximum\n{{Identical|Byte}}",
        "expandtemplates": "{{doc-special|ExpandTemplates}}\nThe name of the [[mw:Extension:ExpandTemplates|Expand Templates extension]].",
        "expand_templates_intro": "This is the explanation given in the heading of the [[Special:ExpandTemplates]] page; it describes its functionality to the users.\nFor more information, see [[mw:Extension:ExpandTemplates]]",
        "expand_templates_title": "The label of the input box for the context title on the form displayed at [[Special:ExpandTemplates]] page.",
index 0899f03..298952f 100644 (file)
                        "Edible Melon",
                        "Adam-Yourist",
                        "MaksimPinigin",
-                       "Smigles"
+                       "Smigles",
+                       "OlegCinema"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "tooltip-pt-mycontris": "Список {{GENDER:|ваших}} правок",
        "tooltip-pt-anoncontribs": "Список правок, сделанных с этого IP-адреса",
        "tooltip-pt-login": "Здесь можно зарегистрироваться в системе, но это необязательно.",
-       "tooltip-pt-login-private": "Вам нужно войти, чтоб использовать эту вики",
+       "tooltip-pt-login-private": "Вам нужно войти, чтобы использовать эту вики",
        "tooltip-pt-logout": "Завершить сеанс работы",
        "tooltip-pt-createaccount": "Мы предлагаем вам создать учётную запись и войти в систему, хотя это и не обязательно.",
        "tooltip-ca-talk": "Обсуждение основной страницы",
        "watchlistedit-clear-titles": "Заголовки:",
        "watchlistedit-clear-submit": "Очистить список наблюдения (это необратимо!)",
        "watchlistedit-clear-done": "Ваш список наблюдения очищен.",
-       "watchlistedit-clear-jobqueue": "Ваш список наблюдения очищается. Это может занять некоторое время!",
+       "watchlistedit-clear-jobqueue": "Ваш список наблюдения очищается. Это может занять некоторое время.",
        "watchlistedit-clear-removed": "{{PLURAL:$1|Была удалена|Были удалены|Было удалено}} $1 {{PLURAL:$1|запись|записи|записей}}:",
        "watchlistedit-too-many": "Слишком много страниц для того, чтобы показать их здесь.",
        "watchlisttools-clear": "Очистить список наблюдения",
        "tag-mw-changed-redirect-target": "изменение цели перенаправления",
        "tag-mw-changed-redirect-target-description": "Правки, которые изменяют цель перенаправления",
        "tag-mw-blank": "очистка",
-       "tag-mw-blank-description": "Ð\9fÑ\80авки, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ð¾Ñ\87иÑ\89аÑ\8eÑ\82 страницу",
+       "tag-mw-blank-description": "Ð\9fÑ\80авки, Ð¾Ñ\87иÑ\89аÑ\8eÑ\89ие Ñ\8dÑ\82Ñ\83 страницу",
        "tag-mw-replace": "заменено",
        "tag-mw-replace-description": "Правки, которые удаляют более 90 % содержимого страницы",
        "tag-mw-rollback": "откат",
index 3178f61..fabbea3 100644 (file)
        "tog-norollbackdiff": "Не приказуј разлику након извршеног враћања",
        "tog-useeditwarning": "Упозори ме када напуштам страницу са несачуваним изменама",
        "tog-prefershttps": "Увек користи сигурну везу док сам пријављен.",
-       "underline-always": "Увек",
-       "underline-never": "Ð\9dикад",
-       "underline-default": "Ð\9fрема теми или прегледачу",
+       "underline-always": "увек",
+       "underline-never": "никад",
+       "underline-default": "према теми или прегледачу",
        "editfont-style": "Стил фонта у оквиру за уређивање:",
-       "editfont-monospace": "Сразмерно широк фонт",
-       "editfont-sansserif": "Ð\91есерифни фонт",
-       "editfont-serif": "Серифни фонт",
+       "editfont-monospace": "сразмерно широк фонт",
+       "editfont-sansserif": "бесерифни фонт",
+       "editfont-serif": "серифни фонт",
        "sunday": "недеља",
        "monday": "понедељак",
        "tuesday": "уторак",
        "searchresultshead": "Претрага",
        "stub-threshold": "Праг за обликовање везе као клице ($1):",
        "stub-threshold-sample-link": "пример",
-       "stub-threshold-disabled": "Ð\9eнемогућено",
+       "stub-threshold-disabled": "онемогућено",
        "recentchangesdays": "Број дана у скорашњим изменама:",
        "recentchangesdays-max": "Највише $1 {{PLURAL:$1|дан|дана}}",
        "recentchangescount": "Број измена за приказ:",
        "rcfilters-activefilters": "Активни филтери",
        "rcfilters-advancedfilters": "Напредни филтери",
        "rcfilters-limit-title": "Измена за приказ",
-       "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|измена|измене}}, $2",
+       "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|измена|измене|измена}}, $2",
        "rcfilters-date-popup-title": "Временски период",
        "rcfilters-days-title": "Скорашњи дани",
        "rcfilters-hours-title": "Скорашње сати",
        "rcfilters-days-show-hours": "$1 {{PLURAL:$1|сат|сата}}",
        "rcfilters-highlighted-filters-list": "Истакнуто: $1",
        "rcfilters-quickfilters": "Сачувани филтери",
-       "rcfilters-quickfilters-placeholder-title": "Ð\88оÑ\88 Ñ\83век Ð½ÐµÐ¼Ð° Ñ\83памÑ\9bених филтера",
+       "rcfilters-quickfilters-placeholder-title": "Ð\88оÑ\88 Ñ\83век Ð½ÐµÐ¼Ð° Ñ\81аÑ\87Ñ\83ваних филтера",
        "rcfilters-quickfilters-placeholder-description": "Да бисте сачували своја подешавања филтера и употребљавали их касније, кликните на икону за ознаку у подручју активних филтера, испод.",
        "rcfilters-savedqueries-defaultlabel": "Сачувани филтери",
        "rcfilters-savedqueries-rename": "Преименуј",
        "rcfilters-savedqueries-setdefault": "Постави као подразумевано",
        "rcfilters-savedqueries-unsetdefault": "Уклони као подразумевано",
        "rcfilters-savedqueries-remove": "Уклони",
-       "rcfilters-savedqueries-new-name-label": "Ð\98ме",
+       "rcfilters-savedqueries-new-name-label": "Ð\9dазив",
        "rcfilters-savedqueries-new-name-placeholder": "Опиши сврху филтера",
        "rcfilters-savedqueries-apply-label": "Направи филтер",
        "rcfilters-savedqueries-apply-and-setdefault-label": "Направи подразумевани филтер",
        "rcfilters-state-message-subset": "Овај филтер нема ефекта јер су његови резултати укључени са онима {{PLURAL:$2|следећег, ширег филтера|следећих, ширих филтера}} (покушајте са означавањем да бисте их распознали): $1",
        "rcfilters-state-message-fullcoverage": "Одабир свих филтера у групи је исто као и одабир ниједног, тако да овај филтер нема ефекта. Група укључује: $1",
        "rcfilters-filtergroup-authorship": "Ауторство доприноса",
-       "rcfilters-filter-editsbyself-label": "Ð\92аÑ\88е измене",
-       "rcfilters-filter-editsbyself-description": "Ваши доприноси.",
-       "rcfilters-filter-editsbyother-label": "Ð\98змене Ð´Ñ\80Ñ\83гиÑ\85",
+       "rcfilters-filter-editsbyself-label": "Ð\9cоÑ\98е измене",
+       "rcfilters-filter-editsbyself-description": "Ð\92аÑ\88и Ð²Ð»Ð°Ñ\81Ñ\82иÑ\82и Ð´Ð¾Ð¿Ñ\80иноÑ\81и.",
+       "rcfilters-filter-editsbyother-label": "ТÑ\83Ñ\92е Ð¸Ð·Ð¼ÐµÐ½Ðµ",
        "rcfilters-filter-editsbyother-description": "Све измене осим Ваших.",
        "rcfilters-filtergroup-userExpLevel": "Корисничка регистрација и искуство",
        "rcfilters-filter-user-experience-level-registered-label": "Регистровани",
index bd10207..d35933e 100644 (file)
        "hr_tip": "Horisontell linje (använd sparsamt)",
        "summary": "Sammanfattning:",
        "subject": "Ämne:",
-       "minoredit": "Mindre ändring (m)",
+       "minoredit": "Mindre ändring",
        "watchthis": "Bevaka denna sida",
        "savearticle": "Spara sidan",
        "savechanges": "Spara ändringar",
        "templatesusedsection": "{{PLURAL:$1|Mall|Mallar}} som används i det här avsnittet:",
        "template-protected": "(skyddad)",
        "template-semiprotected": "(delvis skyddad)",
-       "hiddencategories": "Denna sida är medlem i {{PLURAL:$1|en dold kategori|$1 dolda kategorier}}:",
+       "hiddencategories": "Denna sida är medlem i {{PLURAL:$1|1 dold kategori|$1 dolda kategorier}}:",
        "edittools": "<!-- Denna text kommer att visas nedanför redigeringsrutor och uppladdningsformulär. -->",
        "nocreatetext": "{{SITENAME}} har begränsat möjligheterna att skapa nya sidor.\nDu kan redigera existerande sidor, eller [[Special:UserLogin|logga in eller skapa ett användarkonto]].",
        "nocreate-loggedin": "Du har inte behörighet att skapa nya sidor.",
        "recentchangeslinked": "Relaterade ändringar",
        "recentchangeslinked-feed": "Relaterade ändringar",
        "recentchangeslinked-toolbox": "Relaterade ändringar",
-       "recentchangeslinked-title": "Ändringar relaterade till $1",
-       "recentchangeslinked-summary": "Ange namnet på en sida för att se ändringar på sidor som länkas till eller från denna sida. (För att se medlemmar i en kategori, skriv Kategori:Namnet på kategorin). Ändringar på sidor i [[Special:Watchlist|sin bevakningslista]] är <strong>fetstilade</strong>.",
+       "recentchangeslinked-title": "Ändringar relaterade till \"$1\"",
+       "recentchangeslinked-summary": "Ange namnet på en sida för att se ändringar på sidor som länkas till eller från denna sida. (För att se medlemmar i en kategori, skriv Kategori:Namnet på kategorin). Ändringar på sidor i [[Special:Watchlist|din bevakningslista]] är <strong>fetstilta</strong>.",
        "recentchangeslinked-page": "Sidnamn:",
        "recentchangeslinked-to": "Visa ändringar på sidor med länkar till den givna sidan istället",
        "recentchanges-page-added-to-category": "[[:$1]] lades till i kategorin",
        "uploadlogpage": "Uppladdningslogg",
        "uploadlogpagetext": "Det här är en logg över de senast uppladdade filerna.\nSe [[Special:NewFiles|galleriet över nya filer]] för en mer visuell översikt.",
        "filename": "Filnamn",
-       "filedesc": "Beskrivning",
+       "filedesc": "Sammanfattning",
        "fileuploadsummary": "Beskrivning:",
        "filereuploadsummary": "Filändringar:",
        "filestatus": "Upphovsrättslig status:",
        "undelete-show-file-submit": "Ja",
        "namespace": "Namnrymd:",
        "invert": "Invertera val",
-       "tooltip-invert": "Markera denna ruta för att dölja ändringar på sidor inom det valda namnrymden (och tillhörande namnrymden om det är markerat)",
+       "tooltip-invert": "Kryssa i denna ruta för att dölja ändringar på sidor inom den valda namnrymden (och den tillhörande namnrymden om det är ikryssat)",
        "tooltip-whatlinkshere-invert": "Markera denna ruta för att dölja länkar från sidor inom vald namnrymd.",
        "namespace_association": "Associerad namnrymd",
-       "tooltip-namespace_association": "Markera denna ruta för att även inkludera diskussions- eller ämnesnamnrymden som är associerad med den valda namnrymden",
+       "tooltip-namespace_association": "Kryssa i denna ruta för att även inkludera diskussions- eller ämnesnamnrymden som är associerad med den valda namnrymden",
        "blanknamespace": "(Huvudnamnrymden)",
        "contributions": "{{GENDER:$1|Användarbidrag}}",
        "contributions-title": "Användarbidrag av $1",
        "tooltip-ca-talk": "Diskussion om innehållssidan",
        "tooltip-ca-edit": "Redigera denna sida",
        "tooltip-ca-addsection": "Starta ett nytt avsnitt",
-       "tooltip-ca-viewsource": "Den här sidan är skrivskyddad. Du kan se källtexten.",
+       "tooltip-ca-viewsource": "Den här sidan är skrivskyddad.\nDu kan se källtexten",
        "tooltip-ca-history": "Tidigare versioner av sidan",
        "tooltip-ca-protect": "Skydda den här sidan",
        "tooltip-ca-unprotect": "Ändra skyddet för den här sidan",
        "tooltip-minoredit": "Markera som mindre ändring",
        "tooltip-save": "Spara dina ändringar",
        "tooltip-publish": "Publicera dina ändringar",
-       "tooltip-preview": "Förhandsgranska dina ändringar, vänligen använd detta innan du sparar!",
-       "tooltip-diff": "Visa vilka ändringar du har gjort i texten.",
+       "tooltip-preview": "Förhandsgranska dina ändringar. Använd gärna detta innan du sparar.",
+       "tooltip-diff": "Visa vilka ändringar du har gjort i texten",
        "tooltip-compareselectedversions": "Visa skillnaden mellan de två markerade versionerna av den här sidan.",
        "tooltip-watch": "Lägg till den här sidan i din bevakningslista",
        "tooltip-watchlistedit-normal-submit": "Ta bort titlar",
        "metadata-help": "Den här filen innehåller extrainformation som troligen lades till av en digitalkamera eller skanner när filen skapades. Om filen har modifierats kan det hända att vissa detaljer inte överensstämmer med den modifierade filen.",
        "metadata-expand": "Visa utökade detaljer",
        "metadata-collapse": "Dölj utökade detaljer",
-       "metadata-fields": "Bildens metadata-fält som är listad i detta meddelande kommer att finnas på bildsidan när metadata-tabellen är hopfälld.\nAndra kommer att döljas som standard\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-fields": "Bildens metadata-fält som är listade i detta meddelande kommer att finnas på bildsidan när metadata-tabellen är hopfälld.\nAndra kommer att döljas som standard.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "Bredd",
        "exif-imagelength": "Höjd",
        "exif-bitspersample": "Bitar per komponent",
index 1f4c2f1..58b707f 100644 (file)
        "rcfilters-watchlist-showupdated": "Зміни до сторінок, які Ви не відвідували з моменту здійснення змін, виділені <strong>жирним</strong>, із цілісними маркерами.",
        "rcfilters-preference-label": "Приховати покращену версію Нових редагувань",
        "rcfilters-preference-help": "Скасовує зміну дизайну 2017 року та всі інструменти, додані тоді й пізніше.",
-       "rcfilters-filter-showlinkedfrom-label": "Показати зміни на сторінках, на які звідси посилання",
+       "rcfilters-filter-showlinkedfrom-label": "Показати зміни на сторінках, на які є посилання з",
        "rcfilters-filter-showlinkedfrom-option-label": "<strong>Сторінки, на які є посилання з</strong> обраної сторінки",
        "rcfilters-filter-showlinkedto-label": "Показати зміни на сторінках, що посилаються сюди",
        "rcfilters-filter-showlinkedto-option-label": "<strong>Сторінки, що посилаються на</strong> обрану сторінку",
        "recentchangeslinked-feed": "Пов'язані редгування",
        "recentchangeslinked-toolbox": "Пов'язані редагування",
        "recentchangeslinked-title": "Пов'язані редагування для «$1»",
-       "recentchangeslinked-summary": "Уведіть назву сторінки щоб побачити зміни на сторінках які посилаються на неї, або на які вона сама посилається. (Для перегляду членів категорії вводьте {{ns:14}}:Назва категорії). Зміни на сторінках з [[Special:Watchlist|Вашого Списку спостереження]] виділені <strong>жирним</strong>.",
+       "recentchangeslinked-summary": "Уведіть назву сторінки, щоб побачити зміни на сторінках, які посилаються на неї, або на які вона сама посилається. (Для перегляду членів категорії вводьте {{ns:14}}:Назва категорії). Зміни на сторінках з [[Special:Watchlist|Вашого Списку спостереження]] виділені <strong>жирним</strong>.",
        "recentchangeslinked-page": "Назва сторінки:",
        "recentchangeslinked-to": "Показати зміни на сторінках, пов'язаних з даною",
        "recentchanges-page-added-to-category": "[[:$1]] Додано до категорії",
index 0cf2055..5d6b53c 100644 (file)
        "recentchanges-legend-heading": "<strong>Leyenda:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (kitaa gihapon [[Special:NewPages|talaan han mga bag-o nga pakli]])",
        "recentchanges-submit": "Pakit-a",
-       "rcfilters-legend-heading": "<strong>Taramdan han pinanhalipot:</strong>",
+       "rcfilters-legend-heading": "<strong>Taramdan han pinanpahalipot:</strong>",
        "rcfilters-filter-humans-label": "Tawo (diri bot)",
        "rcnotefrom": "Didi ha ubos amo {{PLURAL:$5|an pagbag-o|an mga pagbabag-o}} tikang<strong>$3, $4</strong> (tubtob <strong>$1</strong> nga ginpakita).",
        "rclistfrom": "Pakit-a an mga ginbag-ohan tikang han $3 $2",
        "statistics-articles": "Unod nga mga pakli",
        "statistics-pages": "Mga pakli",
        "statistics-pages-desc": "Tanan nga pakli hinin nga wiki, lakip an hiruhimangraw nga pakli, redirect, ngan iba pa.",
-       "statistics-files": "Mga paypay nga iginkarga pasaka",
+       "statistics-files": "Mga file nga gin-upload",
        "statistics-edits": "Mga pagliwat hit pakli tikang gintukod hini nga {{SITENAME}}",
        "statistics-edits-average": "Average nga mga pagliwat kada pakli",
        "statistics-users": "Mga [[Special:ListUsers|gumaramit]] nga nakarehistro",
index 9fd474f..203e873 100644 (file)
        "deletedwhileediting": "ווארענונג: דער בלאט איז געווארן אויסגעמעקט נאכדעם וואס איר האט אנגעהויבן רעדאקטירן!",
        "confirmrecreate": "באַניצער [[User:$1|$1]] ([[User talk:$1|רעדן]]) {{GENDER:$1|האט אויסגעמעקט}} דעם בלאט נאכדעם וואס איר האט אנגעהויבן דאס צו ענדערן, אלס אָנגעבליכער סיבה:\n: <em>$2</em>\nביטע באשטעטיגט אז איר ווילט טאקע צוריקשטעלן דעם בלאט.",
        "recreate": "שאַפֿן פֿונדאסניי",
+       "confirm-purge-title": "אויסרייניגן דעם אוצר פון דעם דאזיגן בלאט",
        "confirm_purge_button": "אויספֿירן",
-       "confirm-purge-top": "×\90×\95×\99סק×\9c×\90ר×\9f ×\93×\99 ×§×\90שע×\99 ×¤×\95×\9f ×\93×¢×\9d בלאט?",
+       "confirm-purge-top": "×\90×\95×\99סר×\99×\99× ×\99×\92×\9f ×\93×¢×\9d ×\90×\95צר ×¤×\95×\9f ×\93×¢×\9d ×\93×\90×\96×\99×\92×\9f בלאט?",
        "confirm-watch-button": "יאָ",
        "confirm-watch-top": "צולייגן דעם בלאט צו אייער אויפֿפאסונג ליסטע?",
        "confirm-unwatch-button": "יאָ",
index 3be0439..84ca25e 100644 (file)
        "email": "ⵉⵎⴰⵢⵍ",
        "prefs-signature": "ⴰⵙⴳⵎⴹ",
        "userrights-reason": "ⵜⴰⵎⵏⵜⵉⵍⵜ:",
+       "group-sysop": "ⵉⵏⵎⵀⴰⵍⵏ",
        "right-upload": "ⵙⴽⵜⵔ ⵉⴼⴰⵢⵍⵓⵜⵏ",
        "right-upload_by_url": "ⵙⴽⵜⵔ ⴰⴼⴰⵢⵍⵓ ⵙⴳ URL",
        "right-writeapi": "ⴰⵙⵙⵎⵔⵙ ⵏ API ⵉ ⵜⵉⵔⵔⴰ",
        "boteditletter": "ⴱⵓⵜ",
        "rc-change-size-new": "$1 {{PLURAL:$1|ⴱⴰⵢⵜ|ⵉⴷ ⴱⴰⵢⵜ}} ⴷⴼⴼⵉⵔ ⵏ ⵓⵙⵏⴼⵍ",
        "recentchangeslinked": "ⵉⵙⵏⴼⴰⵍ ⵏⵏⴰ ⵖⵓⵔ ⴰⵙⵙⴰⵖ",
+       "recentchangeslinked-feed": "ⵉⵙⵏⴼⵍⵏ ⵇⵇⵏⵏⵉⵏ",
        "recentchangeslinked-toolbox": "ⵉⵙⵏⴼⵍⵏ ⵇⵇⵏⵏⵉⵏ",
        "recentchangeslinked-title": "ⵉⵙⵏⴼⵍⵏ ⵇⵇⵏⵏⵉⵏ ⵙ $1",
        "recentchangeslinked-summary": "ⵙⴽⵛⵎ ⵉⵙⵎ ⵏ ⵜⴰⵙⵏⴰ ⵃⵎⴰ ⴰⴷ ⵜⵣⵔⴷ ⵉⵙⵏⴼⴰⵍⵏ ⵉⵎⴰⵢⵏⵓⵜⵏ ⴳ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵙⴳ ⵏⵖ ⵖⵔ ⵜⴰⵙⵏⴰ ⴰⴷ (ⵃⵎⴰ ⴰⴷ ⵜⵣⵔⴷ ⵉⴳⵎⴰⵎⵏ ⵏ ⴽⵔⴰ ⵏ ⵓⵙⵎⵉⵍ, ⵙⴽⵛⵎ ⴰⵙⵎⵉⵍ: ⵉⵙⵎ ⵏ ⵓⵙⵎⵉⵍ). ⵉⵙⵏⴼⵍⵏ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵍⵍⴰⵏ ⴳ [[Special:Watchlist|ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ ⵏⴽ]] ⵔⴰⴷ ⵜⵢⴰⵔⴰⵏ ⵙ <strong>ⵓⵣⵓⵔⴰⵔ</strong>",
index 4777ebe..cc8e9e2 100644 (file)
        "expansion-depth-exceeded-category-desc": "页面超出最大展开深度限制。",
        "expansion-depth-exceeded-warning": "页面超出展开深度限制",
        "parser-unstrip-loop-warning": "检测到Unstrip循环",
-       "unstrip-depth-warning": "已超出Unstrip递归限制($1)",
+       "unstrip-depth-warning": "已超出Unstrip深度限制($1)",
+       "unstrip-depth-category": "超出unstrip深度限制的页面",
+       "unstrip-size-warning": "已超出Unstrip大小限制($1)",
+       "unstrip-size-category": "超出unstrip大小限制的页面",
        "converter-manual-rule-error": "在手动语言转换规则中检测到错误",
        "undo-success": "该编辑可以被撤销。请检查下面的对比以核实您想要撤销的内容,然后保存下面的更改以完成撤销。",
        "undo-failure": "因存在冲突的中间编辑,本编辑不能撤销。",
        "stub-threshold-disabled": "停用",
        "recentchangesdays": "最近更改中显示的天数:",
        "recentchangesdays-max": "最多$1天",
-       "recentchangescount": "默认显示的编辑数:",
-       "prefs-help-recentchangescount": "这包括最近更改、页面历史和日志。",
+       "recentchangescount": "在最近更改、页面历史和日志中,默认显示的编辑数:",
+       "prefs-help-recentchangescount": "最大数目:1000",
        "prefs-help-watchlist-token2": "这是您的监视列表的网络feed密钥。任何拥有者均可以浏览您的监视列表,因此不要公开该密钥。如果有需要,[[Special:ResetTokens|您可以重置密钥]]。",
        "savedprefs": "您的系统设置已保存。",
        "savedrights": "{{GENDER:$1|$1}}的用户组已被保存。",
        "limitreport-templateargumentsize-value": "$1/$2 字节",
        "limitreport-expansiondepth": "最高扩展深度",
        "limitreport-expensivefunctioncount": "高开销解析函数数量",
+       "limitreport-unstrip-depth": "Unstrip递归深度",
+       "limitreport-unstrip-depth-value": "$1/$2",
+       "limitreport-unstrip-size": "Unstrip传递扩充大小",
+       "limitreport-unstrip-size-value": "$1/$2{{PLURAL:$2|字节}}",
        "expandtemplates": "展开模板",
        "expand_templates_intro": "此特殊页面可以递归地展开所给wiki文本中的模板。它同时还可展开像<code><nowiki>{{</nowiki>#language:…}}</code>这样的解析器函数和像<code><nowiki>{{</nowiki>CURRENTDAY}}</code>这样的变量。实际上,几乎所有在双重花括号中的内容都会被展开。",
        "expand_templates_title": "上下文标题,用于{{FULLPAGENAME}}等:",
index 2680fd4..f504416 100644 (file)
        "site-atom-feed": "$1 的 Atom 來源",
        "page-rss-feed": "\"$1\" 的 RSS 來源",
        "page-atom-feed": "\"$1\" 的 Atom 來源",
-       "red-link-title": "$1 (頁面不存在)",
+       "red-link-title": "$1(頁面不存在)",
        "sort-descending": "降冪排序",
        "sort-ascending": "昇冪排序",
        "nstab-main": "頁面",
        "password-change-forbidden": "您不可變更此 Wiki 上的密碼。",
        "externaldberror": "這可能是由於資料庫驗證錯誤,或是不允許您更新外部帳號。",
        "login": "登入",
-       "login-security": "é©\97証æ\82¨ç\9a\84 ID",
+       "login-security": "é©\97è­\89æ\82¨ç\9a\84身份",
        "nav-login-createaccount": "登入/建立帳號",
        "logout": "登出",
        "userlogout": "登出",
        "revertmerge": "取消合併",
        "mergelogpagetext": "以下是最近合併頁面歷史的清單。",
        "history-title": "「$1」的修訂歷史",
-       "difference-title": "\"$1\" 修訂間的差異",
+       "difference-title": "「$1」修訂間的差異",
        "difference-title-multipage": "頁面 \"$1\" 與 \"$2\" 間的差異",
        "difference-multipage": "(頁面間的差異)",
        "lineno": "行 $1:",
        "recentchangesdays": "近期變更顯示的天數:",
        "recentchangesdays-max": "最多 $1 {{PLURAL:$1|天}}",
        "recentchangescount": "預設顯示的編輯數:",
-       "prefs-help-recentchangescount": "這包含近期變更、頁面歷史以及日誌。",
+       "prefs-help-recentchangescount": "數量上限:1000",
        "prefs-help-watchlist-token2": "這是您的監視清單的網路訊息源所需密鑰。\n任何人只要知道密鑰就能夠讀取您的監視清單,所以請勿任意與它人共享。\n若有需要[[Special:ResetTokens|您可重設密鑰]]。",
        "savedprefs": "已儲存您的偏好設定。",
        "savedrights": "已儲存 {{GENDER:$1|$1}} 的使用者權限。",
        "right-ipblock-exempt": "略過 IP 封鎖、自動封鎖及範圍封鎖檢查",
        "right-unblockself": "解除封鎖自己",
        "right-protect": "更改保護層級及編輯被連鎖保護的頁面",
-       "right-editprotected": "編輯保護層級為 \"{{int:protect-level-sysop}}\" 的頁面",
-       "right-editsemiprotected": "編輯保護層級為 \"{{int:protect-level-autoconfirmed}}\" 的頁面",
+       "right-editprotected": "編輯保護層級為「{{int:protect-level-sysop}}」的頁面",
+       "right-editsemiprotected": "編輯保護層級為「{{int:protect-level-autoconfirmed}}」的頁面",
        "right-editcontentmodel": "編輯頁面的內容模型",
        "right-editinterface": "編輯使用者介面",
        "right-editusercss": "編輯其他使用者的 CSS 檔",
        "alreadyrolled": "無法還原由 [[User:$2|$2]] ([[User talk:$2|對話]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]] 所作的最後一次編輯 [[:$1]],已有其他人編輯或還原了該頁面。\n\n最後一次編輯該頁面的使用者是 [[User:$3|$3]] ([[User talk:$3|對話]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])。",
        "editcomment": "編輯摘要為:<em>$1</em>。",
        "revertpage": "已還原 [[Special:Contributions/$2|$2]] ([[User talk:$2|對話]]) 的編輯為最後由 [[User:$1|$1]] 所修訂的版本",
-       "revertpage-nouser": "已還隱藏使用者的編輯為最後 {{GENDER:$1|[[User:$1|$1]]}} 修訂的版本",
+       "revertpage-nouser": "已還隱藏使用者的編輯為最後 {{GENDER:$1|[[User:$1|$1]]}} 修訂的版本",
        "rollback-success": "已還原 {{GENDER:$3|$1}} 所做的編輯;\n變更回由 {{GENDER:$4|$2}} 修訂的最後一個版本。",
        "rollback-success-notify": "已還原 $1 所做的編輯;\n變更回由 $2 修訂的最後一個版本。[$3 顯示變更]",
        "sessionfailure-title": "連線階段失敗",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] 已經被封鎖。<br />\n請參考 [[Special:BlockList|封鎖清單]] 以檢查目前的封鎖。",
        "ipb-blockingself": "您要封鎖自己!您確定要這樣做嗎?",
        "ipb-confirmhideuser": "您要封鎖一位使用者並且 \"隱藏\" 該使用者,這會禁止顯示所有出現在清單及記錄中的使用者名稱。\n你確定要這樣做?",
-       "ipb-confirmaction": "若您確定要這樣做,請檢查下方的 \"{{int:ipb-confirm}}\" 欄位。",
+       "ipb-confirmaction": "若您確定要這樣做,請檢查下方的「{{int:ipb-confirm}}」欄位。",
        "ipb-edit-dropdown": "編輯封鎖原因",
        "ipb-unblock-addr": "解除封鎖 $1",
        "ipb-unblock": "解除封鎖使用者名稱或 IP 位址",
        "api-error-stashfailed": "內部錯誤:伺服器儲存暫存檔案失敗。",
        "api-error-unknown-warning": "不明警告:\"$1\"。",
        "api-error-unknownerror": "不明錯誤:\"$1\"。",
-       "duration-seconds": "$1 秒",
-       "duration-minutes": "$1 分鐘",
-       "duration-hours": "$1 小時",
-       "duration-days": "$1 天",
-       "duration-weeks": "$1 週",
-       "duration-years": "$1 年",
-       "duration-decades": "$1{{PLURAL:$1|0 年|0 年}}",
-       "duration-centuries": "$1 世紀",
-       "duration-millennia": "$1 千年",
+       "duration-seconds": "$1秒",
+       "duration-minutes": "$1分鐘",
+       "duration-hours": "$1小時",
+       "duration-days": "$1天",
+       "duration-weeks": "$1週",
+       "duration-years": "$1年",
+       "duration-decades": "$1{{PLURAL:$1|0年|0年}}",
+       "duration-centuries": "$1世紀",
+       "duration-millennia": "$1千年",
        "rotate-comment": "已順時針旋轉圖片 $1 {{PLURAL:$1|度|度}}",
        "limitreport-title": "解析器分析資料:",
        "limitreport-cputime": "CPU 使用時間",
        "limitreport-templateargumentsize-value": "$1/$2 個{{PLURAL:$2|位元組}}",
        "limitreport-expansiondepth": "最高展開深度",
        "limitreport-expensivefunctioncount": "高消耗解析器函數次數",
+       "limitreport-unstrip-depth-value": "$1/$2",
+       "limitreport-unstrip-size-value": "$1/$2{{PLURAL:$2|位元組}}",
        "expandtemplates": "展開模板",
        "expand_templates_intro": "本特殊頁面會將 wiki 文字中的模板展開,可以包含支援的解析器語法,如 <code><nowiki>{{</nowiki>#language:…}}</code> 與變數如 <code><nowiki>{{</nowiki>CURRENTDAY}}</code>。\n實際上,絕大部分在雙括號中的內容都會被展開。",
        "expand_templates_title": "文章標題,供 {{FULLPAGENAME}} 等使用:",
diff --git a/languages/messages/MessagesHu_formal.php b/languages/messages/MessagesHu_formal.php
new file mode 100644 (file)
index 0000000..4b67c28
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+/** Hungarian (formal) (magyar (formal))
+ *
+ * To improve a translation please visit https://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ */
+
+$fallback = 'hu';
index c0a9312..559960d 100644 (file)
@@ -32,7 +32,7 @@ class TidySupport {
         * @param bool $useConfiguration
         */
        public function __construct( $useConfiguration = false ) {
-               global $IP, $wgUseTidy, $wgTidyBin, $wgTidyInternal, $wgTidyConfig,
+               global $wgUseTidy, $wgTidyBin, $wgTidyInternal, $wgTidyConfig,
                        $wgTidyConf, $wgTidyOpts;
 
                $this->enabled = true;
@@ -55,26 +55,7 @@ class TidySupport {
                                $this->enabled = false;
                        }
                } else {
-                       $this->config = [
-                               'tidyConfigFile' => "$IP/includes/tidy/tidy.conf",
-                               'tidyCommandLine' => '',
-                       ];
-                       if ( extension_loaded( 'tidy' ) && ( wfIsHHVM() || class_exists( 'tidy' ) ) ) {
-                               $this->config['driver'] = wfIsHHVM() ? 'RaggettInternalHHVM' : 'RaggettInternalPHP';
-                       } else {
-                               if ( is_executable( $wgTidyBin ) ) {
-                                       $this->config['driver'] = 'RaggettExternal';
-                                       $this->config['tidyBin'] = $wgTidyBin;
-                               } else {
-                                       $path = ExecutableFinder::findInDefaultPaths( $wgTidyBin );
-                                       if ( $path !== false ) {
-                                               $this->config['driver'] = 'RaggettExternal';
-                                               $this->config['tidyBin'] = $wgTidyBin;
-                                       } else {
-                                               $this->enabled = false;
-                                       }
-                               }
-                       }
+                       $this->config = [ 'driver' => 'RemexHtml' ];
                }
                if ( !$this->enabled ) {
                        $this->config = [ 'driver' => 'disabled' ];
index 4d6efff..f98044b 100644 (file)
@@ -279,12 +279,6 @@ Template:EmptyTRWithHTMLAttrTest
 </table>
 !!endarticle
 
-!! article
-Template:CircularRef
-!! text
-<ref>{{CircularRef}}</ref>
-!! endarticle
-
 !! article
 Template:With: Colon
 !! text
@@ -294,22 +288,13 @@ Template with colon
 ###
 ### Basic tests
 ###
+
 !! test
 Blank input
 !! wikitext
 !! html
 !! end
 
-!! test
-CircularRef
-!! wikitext
-{{CircularRef}}
-<references />
-!! html/parsoid
-<p><span about="#mwt1" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Transclusion  mw:Extension/ref" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"CircularRef","href":"./Template:CircularRef"},"params":{},"i":0}}]}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></span></p>
-<ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">Error: Expansion loop detected at <a data-parsoid='{"a":{"href":null},"sa":{"href":"Template:CircularRef"}}'>Template:CircularRef</a></span></li></ol>
-!! end
-
 !! test
 Simple paragraph
 !! wikitext
@@ -572,13 +557,6 @@ http://fr.wikipedia.org/wiki/🍺
 </p>
 !! end
 
-# Note that the html+tidy output removes the spaces after the <li>,
-# which is a bug (https://sourceforge.net/p/tidy/bugs/945/, etc).
-# This is an issue for all tests with lists.  We intentionally do
-# *not* add html+tidy clauses for these, as we don't want to
-# document/test the broken behavior.  (Parsoid matches the non-tidy
-# output in these cases.)
-
 !! test
 Simple list
 !! wikitext
@@ -1149,8 +1127,7 @@ The ''[[Main Page]]'''s talk page.
 !! end
 
 !! test
-Parsoid only: Quote balancing context should be restricted to td/th cells on the same wikitext line
-(Requires tidy for PHP parser output to be fixed up)
+Quote balancing context should be restricted to td/th cells on the same wikitext line
 !! options
 parsoid=wt2html,wt2wt
 !! wikitext
@@ -1158,20 +1135,15 @@ parsoid=wt2html,wt2wt
 !''a!!''b
 |''a||''b
 |}
-!! html/php+tidy
+!! html+tidy
 <table>
-<tr>
+<tbody><tr>
 <th><i>a</i></th>
-<th><i>b</i></th>
+<th><i>b</i>
+</th>
 <td><i>a</i></td>
-<td><i>b</i></td>
-</tr>
-</table>
-!! html/parsoid
-<table>
-<tbody><tr><th><i>a</i></th><th><i>b</i></th>
-<td><i>a</i></td><td><i>b</i></td></tr>
-</tbody></table>
+<td><i>b</i>
+</td></tr></tbody></table>
 !! end
 
 ###
@@ -1334,11 +1306,8 @@ Non-word characters don't terminate tag names (T19663, T42670, T54022)
 </p>
 !! end
 
-# There is a tidy bug here: https://sourceforge.net/p/tidy/bugs/946/
-# If the non-word-character tag made it through the sanitizer, tidy
-# would munge it up.
 !! test
-Non-word characters don't terminate tag names + tidy
+Non-word characters don't terminate tag names
 !! wikitext
 <blockquote|>a</blockquote>
 
@@ -1352,12 +1321,13 @@ Non-word characters don't terminate tag names + tidy
 
 <sub-ID#1>
 !! html+tidy
-<p>&lt;blockquote|&gt;a</p>
-<p>&lt;b→&gt; doesn't terminate &lt;/b→&gt;</p>
-<p>&lt;bä&gt; doesn't terminate &lt;/bä&gt;</p>
-<p>&lt;boo&gt; doesn't terminate &lt;/boo&gt;</p>
-<p>&lt;s.foo&gt; doesn't terminate &lt;/s.foo&gt;</p>
-<p>&lt;sub-ID#1&gt;</p>
+<p>&lt;blockquote|&gt;a
+</p><p>&lt;b→&gt; doesn't terminate &lt;/b→&gt;
+</p><p>&lt;bä&gt; doesn't terminate &lt;/bä&gt;
+</p><p>&lt;boo&gt; doesn't terminate &lt;/boo&gt;
+</p><p>&lt;s.foo&gt; doesn't terminate &lt;/s.foo&gt;
+</p><p>&lt;sub-ID#1&gt;
+</p>
 !! end
 
 ###
@@ -1390,7 +1360,9 @@ parsoid=wt2html
 
 <s.foo>s</s>
 !! html/php+tidy
-<p>&lt;s.foo&gt;s</p>
+<p class="mw-empty-elt">
+</p><p>&lt;s.foo&gt;s
+</p>
 !! html/parsoid
 <p>&lt;s.foo&gt;s</p>
 !! end
@@ -1518,7 +1490,8 @@ Entities inside template parameters
 !! wikitext
 {{echo|&ndash;}}
 !! html/php+tidy
-<p>–</p>
+<p>&#8211;
+</p>
 !! html/parsoid
 <p><span typeof="mw:Transclusion mw:Entity" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&amp;ndash;"}},"i":0}}]}'>&ndash;</span></p>
 !! end
@@ -1888,6 +1861,7 @@ IE conditional comments
 ###
 ### paragraph wrapping tests
 ###
+
 !! test
 No block tags
 !! wikitext
@@ -1911,21 +1885,23 @@ a <div>foo</div>
 <p>b
 </p>
 !! html+tidy
-<p>a</p>
-<div>foo</div>
-<p>b</p>
+<p>a </p><div>foo</div>
+<p>b
+</p>
 !! end
 
+# Remex wraps empty tag runs with p-tags.
+# Parsoid strips them out during p-wrapping.
 !! test
 No p-wrappable content
 !! wikitext
 <span><div>x</div></span>
 <span><s><div>x</div></s></span>
 <small><em></em></small><span><s><div>x</div></s></span>
-!! html+tidy
-<div><span>x</span></div>
-<div><span><s>x</s></span></div>
-<div><span><s>x</s></span></div>
+!! html/php+tidy
+<span><div>x</div></span>
+<span><s><div>x</div></s></span>
+<p><small><em></em></small></p><span><s><div>x</div></s></span>
 !! html/parsoid
 <span><div>x</div></span>
 <span><s><div>x</div></s></span>
@@ -1954,11 +1930,9 @@ a <blockquote>foo</blockquote>
 <p>b
 </p>
 !! html+tidy
-<p>a</p>
-<blockquote>
-<p>foo</p>
-</blockquote>
-<p>b</p>
+<p>a </p><blockquote><p>foo</p></blockquote>
+<p>b
+</p>
 !! end
 
 !! test
@@ -1972,10 +1946,8 @@ a <div>foo</div>
 b <div>foo</div>
 
 !! html+tidy
-<p>a</p>
-<div>foo</div>
-<p>b</p>
-<div>foo</div>
+<p>a </p><div>foo</div><p>
+b </p><div>foo</div>
 !! end
 
 !! test
@@ -1989,14 +1961,8 @@ a <blockquote>foo</blockquote>
 b <blockquote>foo</blockquote>
 
 !! html+tidy
-<p>a</p>
-<blockquote>
-<p>foo</p>
-</blockquote>
-<p>b</p>
-<blockquote>
-<p>foo</p>
-</blockquote>
+<p>a </p><blockquote><p>foo</p></blockquote><p>
+b </p><blockquote><p>foo</p></blockquote>
 !! end
 
 !! test
@@ -2016,19 +1982,21 @@ d e
 x <div>foo</div> z
 
 !! html+tidy
-<div>foo</div>
-<p>a</p>
-<p>b c d e</p>
-<p>x</p>
-<div>foo</div>
-<p>z</p>
+<div>foo</div><p> a
+</p><p>b
+c
+d e
+</p><p>
+x </p><div>foo</div><p> z
+</p>
 !! end
 
-# Tidy strips out the empty <div> tags. Parsoid doesn't.
-# So, we have a separate section for Parsoid. We don't want
-# to mimic this stripping behavior in Parsoid. It affects
-# editing experience and also requires us to maintain additional
-# info for RT-ing.
+# The difference between Parsoid & Remex here
+# is because of Parsoid's Tidy-emulation code
+# for p-wrapping. We'll start work to remove this
+# emulation code in Parsoid sooner than later.
+# Remex wraps empty tag runs with p-tags.
+# Parsoid strips them out in a separate pass.
 !! test
 Empty lines between lines with block tags
 !! wikitext
 <div>e</div>
 
 !! html+tidy
-<p><br /></p>
-<p>a</p>
-<p>b</p>
-<div>a</div>
-<p>b</p>
-<div>b</div>
-<p>d</p>
-<p><br /></p>
+<div></div>
+<p><br />
+</p>
+<div></div><p>a
+</p><p>b
+</p>
+<div>a</div><p>b
+</p><div>b</div><p>d
+</p><p><br />
+</p>
 <div>e</div>
 !! html/parsoid
 <div data-parsoid='{"stx":"html"}'></div>
@@ -2082,7 +2052,6 @@ b
 <div data-parsoid='{"stx":"html"}'>e</div>
 !! end
 
-## PHP parser emits output which is broken
 !! test
 Unclosed HTML p-tags should be handled properly
 !! wikitext
 
 b
 !! html/php+tidy
-<div>
-<p>foo</p>
-</div>
-<p>a</p>
-<p>b</p>
+<div><p>foo</p></div>
+<p>a
+</p><p>b
+</p>
 !! html/parsoid
 <div data-parsoid='{"stx":"html"}'><p data-parsoid='{"stx":"html", "autoInsertedEnd":true}'>foo</p></div>
 <p>a</p>
@@ -2128,9 +2096,55 @@ parsoid=wt2html
 <link rel="mw:PageProp/Category" href="./Category:A1"/><p>a</p>
 !! end
 
+!! test
+No paragraph necessary for SOL transparent template
+!! wikitext
+<span><div>foo</div></span>
+[[Category:Foo]]
+
+<span><div>foo</div></span>
+{{echo|[[Category:Foo]]}}
+!! html/php
+<span><div>foo</div></span>
+<span><div>foo</div></span>
+
+!! html/parsoid
+<span data-parsoid='{"stx":"html"}'><div data-parsoid='{"stx":"html"}'>foo</div></span>
+<link rel="mw:PageProp/Category" href="./Category:Foo"/>
+
+<span data-parsoid='{"stx":"html"}'><div data-parsoid='{"stx":"html"}'>foo</div></span>
+<link rel="mw:PageProp/Category" href="./Category:Foo" about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Category:Foo]]"}},"i":0}}]}'/>
+!! end
+
+!! test
+Avoid expanding multiline sol transparent template ranges unnecessarily
+!! wikitext
+hi
+
+
+{{echo|<br/>
+}}
+
+[[Category:Ho]]
+!! html/php
+<p>hi
+</p><p><br />
+<br />
+</p>
+!! html/parsoid
+<p>hi</p>
+
+<p><br />
+<br about="#mwt1" typeof="mw:Transclusion" data-parsoid='{}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;br/>\n"}},"i":0}}]}'/><span about="#mwt1">
+</span></p>
+
+<link rel="mw:PageProp/Category" href="./Category:Ho" />
+!! end
+
 ###
 ### Preformatted text
 ###
+
 !! test
 Preformatted text
 !! wikitext
@@ -2276,9 +2290,6 @@ Foo <del>bar</del> <ins>baz</ins> quux
 
 !! end
 
-# Note that the p-wrapping is newline sensitive, which could be
-# considered a bug: tidy will wrap only the 'Foo' in the example
-# below in a <p> tag. (see comment 23-25 of T8200)
 !! test
 T17491: <ins>/<del> in blockquote (2)
 !! wikitext
@@ -2289,9 +2300,8 @@ T17491: <ins>/<del> in blockquote (2)
 </blockquote>
 
 !! html+tidy
-<blockquote>
-<p>Foo</p>
-<del>bar</del> <ins>baz</ins> quux</blockquote>
+<blockquote><p>Foo </p><del>bar</del> <ins>baz</ins><p> quux
+</p></blockquote>
 !! end
 
 !! test
@@ -2426,7 +2436,6 @@ parsoid=wt2html
 </p>
 !! end
 
-# Parsoid doesn't strip empty tags, like Tidy does.
 !! test
 Empty pre; pre inside other HTML tags (T56946)
 !! wikitext
 foo
 </pre></div>
 <pre></pre>
-!! html/php
+!! html/php+tidy
 <p>a
 </p>
-<div><pre>
-foo
+<div><pre>foo
 </pre></div>
 <pre></pre>
-
-!! html/php+tidy
-<p>a</p>
-<div>
-<pre>
-foo
-</pre></div>
 !! html/parsoid
 <p>a</p>
 
@@ -2469,16 +2470,12 @@ HTML pre followed by indent-pre
 </pre>
 !! end
 
-# Note that tidy removes the empty <p> tags from the start and end.
-# Parsoid does not, by design.
 !! test
 Block tag pre
 !! wikitext
 <p><pre>foo</pre></p>
 !! html/php+tidy
-<pre>
-foo
-</pre>
+<p class="mw-empty-elt"></p><pre>foo</pre><p class="mw-empty-elt"></p>
 !! html/parsoid
 <p class='mw-empty-elt' data-parsoid='{"stx":"html","autoInsertedEnd":true}'></p><pre typeof="mw:Extension/pre" about="#mwt2" data-parsoid='{"stx":"html"}' data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"foo"}}'>foo</pre><p class='mw-empty-elt' data-parsoid='{"autoInsertedStart":true,"stx":"html"}'></p>
 !! end
@@ -2641,10 +2638,8 @@ parsoid=wt2html
 <table>&lt;pre </table>
 
 !! html/php+tidy
-<pre>
-x
-</pre>
-<p>&lt;pre</p>
+<pre>x</pre>
+&lt;pre <table></table>
 !! html/parsoid
 <pre about="#mwt1" typeof="mw:Transclusion mw:Extension/pre" data-parsoid='{"a":{"&lt;pre":null},"sa":{"&lt;pre":""},"stx":"html","pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;pre &lt;pre>x&lt;/pre>"}},"i":0}}]}'>x</pre>
 
@@ -2694,6 +2689,17 @@ parsoid=wt2html
 </tbody></table>
 !! end
 
+!! test
+Self-closed pre
+!! wikitext
+<pre />
+!! html/php
+<pre></pre>
+
+!! html/parsoid
+<pre typeof="mw:Extension/pre" about="#mwt2" data-mw='{"name":"pre","attrs":{},"body":null}'></pre>
+!! end
+
 !! test
 Parsoid: Don't paragraph-wrap fosterable content even if table syntax is unbalanced
 !! options
@@ -2938,7 +2944,8 @@ Templates: Parsoid parameter escaping test 1
 !! wikitext
 {{echo|[foo]|{{echo|[bar]}}}}
 !! html/php+tidy
-<p>[foo]</p>
+<p>[foo]
+</p>
 !! html/parsoid
 <p about="#mwt1" typeof="mw:Transclusion"
 data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[foo]"},"2":{"wt":"{{echo|[bar]}}"}},"i":0}}]}'>[foo]</p>
@@ -2949,9 +2956,10 @@ Parsoid: Pipes in external links in template parameter
 !! wikitext
 {{echo|[{{echo|http://example.com}} link]}}
 !! html/php+tidy
-<p><a rel="nofollow" class="external text" href="http://example.com">link</a></p>
+<p><a rel="nofollow" class="external text" href="http://example.com">link</a>
+</p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com" about="#mwt31" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[{{echo|http://example.com}} link]"}},"i":0}}]}'>link</a></p>
+<p><a rel="mw:ExtLink" class="external text" href="http://example.com" about="#mwt31" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[{{echo|http://example.com}} link]"}},"i":0}}]}'>link</a></p>
 !! end
 
 !! test
@@ -2959,11 +2967,10 @@ Parsoid: pipe in transclusion parameter
 !! wikitext
 {{echo|http://foo.com/a&#124;b}}
 !! html/php+tidy
-<p><a rel="nofollow" class="external free" href="http://foo.com/a%7Cb">http://foo.com/a%7Cb</a></p>
+<p><a rel="nofollow" class="external free" href="http://foo.com/a%7Cb">http://foo.com/a%7Cb</a>
+</p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://foo.com/a%7Cb" about="#mwt1"
-typeof="mw:Transclusion"
-data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"http://foo.com/a&amp;#124;b"}},"i":0}}]}'>http://foo.com/a%7Cb</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://foo.com/a%7Cb" about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"http://foo.com/a&amp;#124;b"}},"i":0}}]}'>http://foo.com/a%7Cb</a></p>
 !! end
 
 !! test
@@ -2973,7 +2980,8 @@ parsoid=html2wt,wt2wt
 !! wikitext
 {{echo|[http://foo.com/a&#124;b a&#124;b]}}
 !! html/php+tidy
-<p><a rel="nofollow" class="external text" href="http://foo.com/a%7Cb">a|b</a></p>
+<p><a rel="nofollow" class="external text" href="http://foo.com/a%7Cb">a&#124;b</a>
+</p>
 !! html/parsoid
 <p><a rel="mw:ExtLink" href="http://foo.com/a|b" about="#mwt1"
 typeof="mw:Transclusion"
@@ -3000,7 +3008,10 @@ parsoid=html2wt,wt2wt
 {{echo|<nowiki>&lt;div&gt;</nowiki>}}
 {{echo|<nowiki></nowiki>}}
 !! html/php+tidy
-<p>foo|bar &lt;div&gt;</p>
+<p>foo|bar
+&lt;div&gt;
+
+</p>
 !! html/parsoid
 <p><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo<nowiki>|</nowiki>bar"}},"i":0}}]}'}'>foo</span><span typeof="mw:Nowiki" about="#mwt1">|</span><span about="#mwt1">bar</span>
 <span typeof="mw:Transclusion mw:Nowiki" about="#mwt2" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<nowiki>&amp;lt;div&amp;gt;</nowiki>"}},"i":0}}]}'><span typeof="mw:Entity">&lt;</span>div<span typeof="mw:Entity">&gt;</span></span>
@@ -3016,7 +3027,8 @@ parsoid=html2wt,wt2wt
 !! wikitext
 {{echo|{{echo|1=bar}}}}
 !! html/php+tidy
-<p>bar</p>
+<p>bar
+</p>
 !! html/parsoid
 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{echo|1=bar}}"}},"i":0}}]}'>bar</p>
 !! end
@@ -3027,7 +3039,8 @@ Templates parameters with special tokenizing behavior dont get modified because
 !! wikitext
 {{echo|a : b}}
 !! html/php+tidy
-<p>a&#160;: b</p>
+<p>a&#160;: b
+</p>
 !! html/parsoid
 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a : b"}},"i":0}}]}'>a<span typeof="mw:DisplaySpace mw:Placeholder" data-parsoid='{"isDisplayHack":true}'> </span>: b</p>
 !! end
@@ -3038,7 +3051,8 @@ Templates: Preserve blank parameter names
 !! wikitext
 {{echo|=foo}}
 !! html/php+tidy
-<p>{{{1}}}</p>
+<p>{{{1}}}
+</p>
 !! html/parsoid
 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"":{"wt":"foo"}},"i":0}}]}'>{{{1}}}</p>
 !! end
@@ -3048,7 +3062,9 @@ Templates: Preserve blank parameter names in other positions
 !! wikitext
 {{blank_param|bar|=foo}}
 !! html/php+tidy
-<p>bar foo</p>
+<p>bar
+foo
+</p>
 !! html/parsoid
 <p about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"},{"k":"","named":true}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"blank_param","href":"./Template:Blank_param"},"params":{"1":{"wt":"bar"},"":{"wt":"foo"}},"i":0}}]}'>bar
 foo</p>
  <p>c </p><blockquote data-parsoid='{"stx":"html"}'> foo </blockquote>
 <pre><span> foo </span>
 </pre>
-!! html+tidy
-<p>a</p>
-<p>foo</p>
-<p>b</p>
-<div>foo</div>
-<p>c</p>
-<blockquote>
-<p>foo</p>
-</blockquote>
-<pre>
-<span> foo </span>
+!! html/php+tidy
+<p> a </p><p> foo </p><p>
+ b </p><div> foo </div><p>
+ c </p><blockquote><p> foo </p></blockquote>
+<pre><span> foo </span>
 </pre>
 !! end
 
 !! html/parsoid
 <pre>a <span data-parsoid='{"stx":"html"}'>foo</span></pre>
  b <div data-parsoid='{"stx":"html"}'> foo </div>
-!! html+tidy
-<pre>
-a <span>foo</span>
-</pre>
-<p>b</p>
-<div>foo</div>
+!! html/php+tidy
+<pre>a <span>foo</span>
+</pre><p>
+ b </p><div> foo </div>
 !!end
 
 !!test
@@ -3527,7 +3535,8 @@ a <!--
 foo
 --> b
 !! html/php+tidy
-<p>a b</p>
+<p>a  b
+</p>
 !! html/parsoid
 <p>a <!--
 foo
@@ -3558,11 +3567,8 @@ foo
 foo
 </pre>
 !! html/php+tidy
-<pre>
-foo
-</pre>
-<pre>
-foo
+<pre>foo</pre>
+<pre>foo
 </pre>
 <pre>
 
@@ -3759,7 +3765,7 @@ Definition list with news link containing colon
 <dd> This isn't even a real newsgroup!</dd></dl>
 
 !! html/parsoid
-<dl><dt>  <a rel="mw:ExtLink" href="news:alt.wikipedia.rox" data-parsoid='{"stx":"url"}'>news:alt.wikipedia.rox</a></dt><dd data-parsoid='{"stx":"row"}'> This isn't even a real newsgroup!</dd></dl>
+<dl><dt>  <a rel="mw:ExtLink" class="external free" href="news:alt.wikipedia.rox" data-parsoid='{"stx":"url"}'>news:alt.wikipedia.rox</a></dt><dd data-parsoid='{"stx":"row"}'> This isn't even a real newsgroup!</dd></dl>
 !! end
 
 !! test
@@ -3815,10 +3821,8 @@ Definition lists: excess closed tags
 !! wikitext
 ;one</b>two : bad tag fun
 !! html/php+tidy
-<dl>
-<dt>onetwo&#160;</dt>
-<dd>bad tag fun</dd>
-</dl>
+<dl><dt>onetwo&#160;</dt>
+<dd> bad tag fun</dd></dl>
 !! html/parsoid
 <dl>
 <dt>onetwo</dt>
@@ -4097,13 +4101,11 @@ Table / list interaction: lists nested in tables nested in indented lists
 
 !! test
 Definition Lists: Nesting: Multi-level (Parsoid only)
-!! options
-parsoid
 !! wikitext
 ;t1 :d1
 ;;t2 ::d2
 ;;;t3 :::d3
-!! html
+!! html/parsoid
 <dl>
   <dt>t1 </dt>
   <dd>d1</dd>
@@ -4126,72 +4128,26 @@ parsoid
 
 
 !! test
-Definition Lists: Nesting: Test 2 (Parsoid only)
+Definition Lists: Nesting: Test 2
 !! wikitext
 ;t1
 ::d2
-!! html/php+tidy
-<dl>
-<dt>t1</dt>
+!! html+tidy
+<dl><dt>t1</dt>
 <dd>
-<dl>
-<dd>d2</dd>
-</dl>
-</dd>
-</dl>
-!! html/parsoid
-<dl>
-  <dt>t1</dt>
-  <dd>
-    <dl>
-      <dd>d2</dd>
-    </dl>
-  </dd>
-</dl>
-
+<dl><dd>d2</dd></dl></dd></dl>
 !! end
 
 
 !! test
-Definition Lists: Nesting: Test 3 (Parsoid only)
+Definition Lists: Nesting: Test 3
 !! wikitext
 :;t1
 ::::d2
-!! html/php+tidy
-<dl>
-<dd>
-<dl>
-<dt>t1</dt>
-<dd>
-<dl>
+!! html+tidy
+<dl><dd><dl><dt>t1</dt>
 <dd>
-<dl>
-<dd>d2</dd>
-</dl>
-</dd>
-</dl>
-</dd>
-</dl>
-</dd>
-</dl>
-!! html/parsoid
-<dl>
-  <dd>
-    <dl>
-      <dt>t1</dt>
-      <dd>
-        <dl>
-          <dd>
-            <dl>
-              <dd>d2</dd>
-            </dl>
-          </dd>
-        </dl>
-      </dd>
-    </dl>
-  </dd>
-</dl>
-
+<dl><dd><dl><dd>d2</dd></dl></dd></dl></dd></dl></dd></dl>
 !! end
 
 
@@ -4225,21 +4181,9 @@ Definition Lists: Mixed Lists: Test 1
 <dl><dt> baz</dt></dl></dd></dl>
 
 !! html/php+tidy
-<dl>
-<dd>
-<dl>
-<dd>
-<ul>
-<li>foo</li>
-<li>bar</li>
-</ul>
-</dd>
-</dl>
-<dl>
-<dt>baz</dt>
-</dl>
-</dd>
-</dl>
+<dl><dd><dl><dt><ul><li> foo</li>
+<li> bar</li></ul></dt></dl>
+<dl><dt> baz</dt></dl></dd></dl>
 !! html/parsoid
 <dl>
 <dd><dl>
@@ -4363,27 +4307,28 @@ Definition Lists: Mixed Lists: Test 10
 
 !! end
 
+# The Parsoid team disagrees with the PHP parser's seemingly-random
+# rules regarding dd/dt on the next few tests.  Parsoid is more
+# consistent, and recognizes the shared nesting and keeps the
+# still-open tags around until the nesting is complete.
+
 # This is a regression test for T175099
-# html/php+tidy is insufficient since Tidy covers up the bug.
-# But once Tidy is replaced with RemexHTML, html/php+tidy is good enough
 !! test
 Definition Lists: Mixed Lists: Test 11
 !! wikitext
-; a
-:* b
-!! html/*
-<dl><dt> a</dt>
+;a
+:*b
+!! html/php
+<dl><dt>a</dt>
 <dd>
-<ul><li> b</li></ul></dd></dl>
+<ul><li>b</li></ul></dd></dl>
 
+!! html/parsoid
+<dl><dt>a
+<dd><ul><li>b</li></ul></dd></dl>
 !! end
 
-# The Parsoid team disagrees with the PHP parser's seemingly-random
-# rules regarding dd/dt on the next two tests.  Parsoid is more
-# consistent, and recognizes the shared nesting and keeps the
-# still-open tags around until the nesting is complete.
-# (And tidy again converts <dt> to <dd> before 'bar'.)
-
+# FIXME: Maybe get rid of this test?
 !! test
 Definition Lists: Mixed Lists: Test 12
 !! wikitext
@@ -4396,42 +4341,10 @@ Definition Lists: Mixed Lists: Test 12
 <dd>baz</dd></dl></li></ol></li></ul></li></ol></li></ul>
 
 !! html/php+tidy
-<ul>
-<li>
-<ol>
-<li>
-<ul>
-<li>
-<ol>
-<li>
-<dl>
-<dt>foo&#160;</dt>
-<dd>
-<ul>
-<li>
-<dl>
-<dd>
-<dl>
-<dt>bar</dt>
-</dl>
-</dd>
-</dl>
-</li>
-</ul>
-</dd>
-</dl>
-<dl>
-<dt>boo&#160;</dt>
-<dd>baz</dd>
-</dl>
-</li>
-</ol>
-</li>
-</ul>
-</li>
-</ol>
-</li>
-</ul>
+<ul><li><ol><li><ul><li><ol><li><dl><dt>foo&#160;</dt>
+<dd><ul><li><dl><dt><dl><dt>bar</dt></dl></dt></dl></li></ul></dd></dl></li></ol></li></ul>
+<dl><dt>boo&#160;</dt>
+<dd>baz</dd></dl></li></ol></li></ul>
 !! html/parsoid
 <ul>
 <li>
@@ -4462,8 +4375,7 @@ Definition Lists: Mixed Lists: Test 12
 </ul>
 !! end
 
-
-# Another case where tidy converts a <dt> to a <dd> (but Parsoid doesn't).
+# FIXME: Maybe get rid of this test?
 # From whitelist:
 # * The test is wrong, there are two colons where there should be :;
 # * The PHP parser is wrong to close the <dl> after the <dt> containing the <ul>.
@@ -4471,43 +4383,9 @@ Definition Lists: Mixed Lists: Test 12
 Definition Lists: Weird Ones: Test 1
 !! wikitext
 *#;*::;; foo : bar (who uses this?)
-!! html/php
-<ul><li><ol><li><dl><dt> foo&#160;</dt>
-<dd><ul><li><dl><dd><dl><dd><dl><dt><dl><dt> bar (who uses this?)</dt></dl></dd></dl></dd></dl></dd></dl></li></ul></dd></dl></li></ol></li></ul>
-
 !! html/php+tidy
-<ul>
-<li>
-<ol>
-<li>
-<dl>
-<dt>foo&#160;</dt>
-<dd>
-<ul>
-<li>
-<dl>
-<dd>
-<dl>
-<dd>
-<dl>
-<dd>
-<dl>
-<dt>bar (who uses this?)</dt>
-</dl>
-</dd>
-</dl>
-</dd>
-</dl>
-</dd>
-</dl>
-</li>
-</ul>
-</dd>
-</dl>
-</li>
-</ol>
-</li>
-</ul>
+<ul><li><ol><li><dl><dt> foo&#160;</dt>
+<dd><ul><li><dl><dd><dl><dd><dl><dt><dl><dt> bar (who uses this?)</dt></dl></dt></dl></dd></dl></dd></dl></li></ul></dd></dl></li></ol></li></ul>
 !! html/parsoid
 <ul>
 <li>
@@ -4550,37 +4428,18 @@ Definition Lists: colons occurring in tags
 ;{{echo|''a:b''}}
 ;;;''a:b''
 !! html+tidy
-<dl>
-<dt>a</dt>
+<dl><dt>a</dt>
 <dd>b</dd>
 <dt><b>a:b</b></dt>
 <dt><i>a:b</i></dt>
 <dt><span>a:b</span></dt>
-<dd>
-<div>a:b</div>
-</dd>
-<dd>
-<div>a
-<dl>
+<dt><div>a:b</div></dt>
+<dt><div>a</div></dt>
 <dd>b</dd>
-</dl>
-</div>
-</dd>
 <dt>a</dt>
 <dd>b</dd>
-<dt><i>a:b</i></dt>
-</dl>
-<dl>
-<dd>
-<dl>
-<dd>
-<dl>
-<dt><i>a:b</i></dt>
-</dl>
-</dd>
-</dl>
-</dd>
-</dl>
+<dt><i>a:b</i></dt></dl>
+<dl><dt><dl><dt><dl><dt><i>a:b</i></dt></dl></dt></dl></dt></dl>
 !! html/parsoid
 <dl><dt>a</dt><dd data-parsoid='{"stx":"row"}'>b</dd>
 <dt><b>a:b</b></dt>
@@ -4594,6 +4453,9 @@ Definition Lists: colons occurring in tags
 <dl><dt><dl><dt><i>a:b</i></dt></dl></dt></dl></dt></dl>
 !! end
 
+# Parsoid's output differs here again because it shares
+# nesting between the two lists unlike the PHP parser.
+# Unsure which is more desirable.
 !! test
 Definition Lists: colons and tables 1
 !! wikitext
@@ -4603,7 +4465,7 @@ Definition Lists: colons and tables 1
 :{|
 | y
 |}
-!! html
+!! html/php
 <dl><dd><table>
 <tr>
 <td> x
@@ -4613,22 +4475,6 @@ Definition Lists: colons and tables 1
 <td> y
 </td></tr></table></dd></dl>
 
-!! end
-
-# Parsoid's output (as documented below) differs from php's in this case.
-# This is probably a bug. If we fixup parsoid to match php's output, the
-# above test should pass and the below test case can be removed. It is
-# unclear which output is more desirable.
-
-!! test
-Definition Lists: colons and tables 2
-!! wikitext
-:{|
-| x
-|}
-:{|
-| y
-|}
 !! html/parsoid
 <dl><dd><table>
 <tr>
@@ -4640,6 +4486,7 @@ Definition Lists: colons and tables 2
 </td></tr></table></dd></dl>
 !! end
 
+# FIXME: Does this need a html/php section?
 !! test
 Definition Lists: template interaction
 !! wikitext
@@ -4688,9 +4535,9 @@ Numbered: <a rel="nofollow" class="external autonumber" href="http://example.net
 Numbered: <a rel="nofollow" class="external autonumber" href="http://example.com">[3]</a>
 </p>
 !! html/parsoid
-<p>Numbered: <a rel="mw:ExtLink" href="http://example.com"></a>
-Numbered: <a rel="mw:ExtLink" href="http://example.net"></a>
-Numbered: <a rel="mw:ExtLink" href="http://example.com"></a></p>
+<p>Numbered: <a rel="mw:ExtLink" class="external autonumber" href="http://example.com"></a>
+Numbered: <a rel="mw:ExtLink" class="external autonumber" href="http://example.net"></a>
+Numbered: <a rel="mw:ExtLink" class="external autonumber" href="http://example.com"></a></p>
 !!end
 
 !! test
@@ -4729,7 +4576,7 @@ External links: dollar sign in URL (autonumber)
 <p><a rel="nofollow" class="external autonumber" href="http://example.com/1$2345">[1]</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com/1$2345"></a></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="http://example.com/1$2345"></a></p>
 !!end
 
 !! test
@@ -4742,7 +4589,7 @@ http://example.com/1[2345
 <p><a rel="nofollow" class="external free" href="http://example.com/1">http://example.com/1</a>[2345
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com/1">http://example.com/1</a>[2345</p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com/1">http://example.com/1</a>[2345</p>
 !! end
 
 !! test
@@ -4755,7 +4602,7 @@ parsoid=wt2html,html2html
 <p><a rel="nofollow" class="external text" href="http://example.com/1">[2345</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com/1">[2345</a></p>
+<p><a rel="mw:ExtLink" class="external text" href="http://example.com/1">[2345</a></p>
 !!end
 
 # parsoid adds a space before the link name
@@ -4816,7 +4663,7 @@ External links: protocol-relative URL in brackets without text
 <p><a rel="nofollow" class="external autonumber" href="//example.com">[1]</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="//example.com"></a></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="//example.com"></a></p>
 !! end
 
 !! test
@@ -4854,7 +4701,7 @@ parsoid=wt2html,wt2wt
 </p><p><a href="http://en.wikipedia.org/wiki/Foo" class="extiw" title="wikipedia:Foo"><span>Bar</span></a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://en.wikipedia.org/wiki/Foo"></a></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="http://en.wikipedia.org/wiki/Foo"></a></p>
 <p><a rel="mw:WikiLink/Interwiki" href="http://en.wikipedia.org/wiki/Foo" title="wikipedia:Foo">Bar</a></p>
 <p><a rel="mw:WikiLink/Interwiki" href="http://en.wikipedia.org/wiki/Foo" title="wikipedia:Foo"><span>Bar</span></a></p>
 !! end
@@ -4903,25 +4750,25 @@ http://example.com/url_with_entity&#60;
 <a rel="nofollow" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a>&#60;
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a>,
-<a rel="mw:ExtLink" href="http://example.com">http://example.com</a>;
-<a rel="mw:ExtLink" href="http://example.com">http://example.com</a>\
-<a rel="mw:ExtLink" href="http://example.com">http://example.com</a>.
-<a rel="mw:ExtLink" href="http://example.com">http://example.com</a>:
-<a rel="mw:ExtLink" href="http://example.com">http://example.com</a>!
-<a rel="mw:ExtLink" href="http://example.com">http://example.com</a>?
-<a rel="mw:ExtLink" href="http://example.com">http://example.com</a>)
-<a rel="mw:ExtLink" href="http://example.com/url_with_(brackets)">http://example.com/url_with_(brackets)</a>
-(<a rel="mw:ExtLink" href="http://example.com/url_without_brackets">http://example.com/url_without_brackets</a>)
-<a rel="mw:ExtLink" href="http://example.com/url_with_entity&amp;">http://example.com/url_with_entity&amp;</a>
-<a rel="mw:ExtLink" href="http://example.com/url_with_entity&amp;">http://example.com/url_with_entity&amp;</a>
-<a rel="mw:ExtLink" href="http://example.com/url_with_entity&amp;">http://example.com/url_with_entity&amp;</a>
-<a rel="mw:ExtLink" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;nbsp;","srcContent":" "}'> </span>
-<a rel="mw:ExtLink" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#xA0;","srcContent":" "}'> </span>
-<a rel="mw:ExtLink" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#160;","srcContent":" "}'> </span>
-<a rel="mw:ExtLink" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;lt;","srcContent":"&lt;"}'>&lt;</span>
-<a rel="mw:ExtLink" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#x3C;","srcContent":"&lt;"}'>&lt;</span>
-<a rel="mw:ExtLink" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#60;","srcContent":"&lt;"}'>&lt;</span></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>,
+<a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>;
+<a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>\
+<a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>.
+<a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>:
+<a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>!
+<a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>?
+<a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>)
+<a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_(brackets)">http://example.com/url_with_(brackets)</a>
+(<a rel="mw:ExtLink" class="external free" href="http://example.com/url_without_brackets">http://example.com/url_without_brackets</a>)
+<a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity&amp;">http://example.com/url_with_entity&amp;</a>
+<a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity&amp;">http://example.com/url_with_entity&amp;</a>
+<a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity&amp;">http://example.com/url_with_entity&amp;</a>
+<a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;nbsp;","srcContent":" "}'> </span>
+<a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#xA0;","srcContent":" "}'> </span>
+<a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#160;","srcContent":" "}'> </span>
+<a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;lt;","srcContent":"&lt;"}'>&lt;</span>
+<a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#x3C;","srcContent":"&lt;"}'>&lt;</span>
+<a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity">http://example.com/url_with_entity</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#60;","srcContent":"&lt;"}'>&lt;</span></p>
 !! end
 
 !! test
@@ -4934,7 +4781,7 @@ http://example.com/url_with_entity&amp;amp;
 <p><a rel="nofollow" class="external free" href="http://example.com/url_with_entity&amp;amp">http://example.com/url_with_entity&amp;amp</a>;
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com/url_with_entity&amp;amp">http://example.com/url_with_entity&amp;amp</a>;</p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com/url_with_entity&amp;amp">http://example.com/url_with_entity&amp;amp</a>;</p>
 !! end
 
 !! test
@@ -4949,7 +4796,7 @@ news:'a'b''c''d e
 </p>
 !! html/parsoid
 <p><b>News:</b> Stuff here</p>
-<p><a rel="mw:ExtLink" href="news:'a'b">news:'a'b</a><i>c</i>d e</p>
+<p><a rel="mw:ExtLink" class="external free" href="news:'a'b">news:'a'b</a><i>c</i>d e</p>
 !! end
 
 !! test
@@ -4960,7 +4807,7 @@ External links: with entity
 <p><a rel="nofollow" class="external text" href="http://+www.librarieswithoutborders.org">Libraries without borders</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://+www.librarieswithoutborders.org" data-parsoid='{"a":{"href":"http://+www.librarieswithoutborders.org"},"sa":{"href":"http://&amp;#x20;www.librarieswithoutborders.org"}}'>Libraries without borders</a></p>
+<p><a rel="mw:ExtLink" class="external text" href="http://+www.librarieswithoutborders.org" data-parsoid='{"a":{"href":"http://+www.librarieswithoutborders.org"},"sa":{"href":"http://&amp;#x20;www.librarieswithoutborders.org"}}'>Libraries without borders</a></p>
 !! end
 
 !! test
@@ -5090,10 +4937,10 @@ parsoid=wt2html
 !! wikitext
 URL in text: [http://example.com http://example.com]
 !! html/php
-<p>URL in text: <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
+<p>URL in text: <a rel="nofollow" class="external text" href="http://example.com">http://example.com</a>
 </p>
 !! html/parsoid
-<p>URL in text: <a rel="mw:ExtLink" href="http://example.com">http://example.com</a></p>
+<p>URL in text: <a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a></p>
 !! end
 
 !! test
@@ -5104,7 +4951,7 @@ ja-style clickable images: [http://example.com http://meta.wikimedia.org/upload/
 <p>ja-style clickable images: <a rel="nofollow" class="external text" href="http://example.com"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png"/></a>
 </p>
 !! html/parsoid
-<p>ja-style clickable images: <a rel="mw:ExtLink" href="http://example.com"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" data-parsoid='{"type":"extlink"}'/></a></p>
+<p>ja-style clickable images: <a rel="mw:ExtLink" class="external text" href="http://example.com"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" data-parsoid='{"type":"extlink"}'/></a></p>
 !! end
 
 !! test
@@ -5124,7 +4971,7 @@ Old &amp; use: http://x&amp;y
 <p>Old &amp; use: <a rel="nofollow" class="external free" href="http://x&amp;y">http://x&amp;y</a>
 </p>
 !! html/parsoid
-<p>Old <span typeof="mw:Entity">&amp;</span> use: <a rel="mw:ExtLink" href="http://x&amp;y">http://x&amp;y</a></p>
+<p>Old <span typeof="mw:Entity">&amp;</span> use: <a rel="mw:ExtLink" class="external free" href="http://x&amp;y">http://x&amp;y</a></p>
 !! end
 
 !! test
@@ -5135,7 +4982,7 @@ http://example.com/?foo&#61;bar
 <p><a rel="nofollow" class="external free" href="http://example.com/?foo=bar">http://example.com/?foo=bar</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com/?foo=bar">http://example.com/?foo=bar</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com/?foo=bar">http://example.com/?foo=bar</a></p>
 !! end
 
 ##
@@ -5152,7 +4999,7 @@ Old &amp; use: [http://x&y]
 <p>Old &amp; use: <a rel="nofollow" class="external autonumber" href="http://x&amp;y">[1]</a>
 </p>
 !! html/parsoid
-<p>Old <span typeof="mw:Entity">&amp;</span> use: <a rel="mw:ExtLink" href="http://x&amp;y"></a></p>
+<p>Old <span typeof="mw:Entity">&amp;</span> use: <a rel="mw:ExtLink" class="external autonumber" href="http://x&amp;y"></a></p>
 !! end
 
 # note that parsoid html is identical to [raw ampersand] case; so html2wt
@@ -5167,7 +5014,7 @@ Old &amp; use: [http://x&amp;y]
 <p>Old &amp; use: <a rel="nofollow" class="external autonumber" href="http://x&amp;y">[1]</a>
 </p>
 !! html/parsoid
-<p>Old <span typeof="mw:Entity">&amp;</span> use: <a rel="mw:ExtLink" href="http://x&amp;y"></a></p>
+<p>Old <span typeof="mw:Entity">&amp;</span> use: <a rel="mw:ExtLink" class="external autonumber" href="http://x&amp;y"></a></p>
 !! end
 
 !! test
@@ -5178,7 +5025,7 @@ External links: [raw equals]
 <p><a rel="nofollow" class="external autonumber" href="http://example.com/?foo=bar">[1]</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com/?foo=bar"></a></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="http://example.com/?foo=bar"></a></p>
 !! end
 
 # note that parsoid html is identical to [raw equals] case; so html2wt
@@ -5193,7 +5040,7 @@ parsoid=wt2html,wt2wt,html2html
 <p><a rel="nofollow" class="external autonumber" href="http://example.com/?foo=bar">[1]</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com/?foo=bar"></a></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="http://example.com/?foo=bar"></a></p>
 !! end
 
 # xxx parsoid strips the IDN character, so the round-trip tests will
@@ -5208,7 +5055,7 @@ parsoid=wt2html,wt2wt,html2html
 <p><a rel="nofollow" class="external autonumber" href="http://example.com/">[1]</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com/"></a></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="http://example.com/"></a></p>
 !! end
 
 # FIXME: This test (the IDN characters in the text of a link) is an inconsistency.
@@ -5240,7 +5087,7 @@ http://e&zwnj;xample.com/
 <p><a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com/">http://example.com/</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com/">http://example.com/</a></p>
 !! end
 
 !! test
@@ -5261,7 +5108,7 @@ External links: URL within URL (T2002)
 <p><a rel="nofollow" class="external autonumber" href="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp">[1]</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp"></a></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp"></a></p>
 !! end
 
 !! test
@@ -5299,7 +5146,7 @@ http://www.example.com/<b>html</b>
 <p><a rel="nofollow" class="external free" href="http://www.example.com/">http://www.example.com/</a><b>html</b>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://www.example.com/" data-parsoid='{"stx":"url"}'>http://www.example.com/</a><b data-parsoid='{"stx":"html"}'>html</b></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://www.example.com/" data-parsoid='{"stx":"url"}'>http://www.example.com/</a><b data-parsoid='{"stx":"html"}'>html</b></p>
 !! end
 
 !! test
@@ -5358,17 +5205,22 @@ External links: link text with spaces
 </p>
 !! end
 
+# Note edge case difference between PHP and Parsoid here.
 !! test
 External links: wiki links within external link (T5695)
 !! options
 parsoid=wt2html,html2html
 !! wikitext
 [http://example.com [[wikilink]] embedded in ext link]
+
+[http://example.com test [[wikilink]] embedded in ext link]
 !! html/php
 <p><a rel="nofollow" class="external text" href="http://example.com"></a><a href="/index.php?title=Wikilink&amp;action=edit&amp;redlink=1" class="new" title="Wikilink (page does not exist)">wikilink</a><a rel="nofollow" class="external text" href="http://example.com"> embedded in ext link</a>
+</p><p><a rel="nofollow" class="external text" href="http://example.com">test </a><a href="/index.php?title=Wikilink&amp;action=edit&amp;redlink=1" class="new" title="Wikilink (page does not exist)">wikilink</a><a rel="nofollow" class="external text" href="http://example.com"> embedded in ext link</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com"></a><a rel="mw:WikiLink" href="./Wikilink" title="Wikilink">wikilink</a><span> embedded in ext link</span></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="http://example.com"></a><a rel="mw:WikiLink" href="./Wikilink" title="Wikilink">wikilink</a><span> embedded in ext link</span></p>
+<p><a rel="mw:ExtLink" class="external text" href="http://example.com">test </a><a rel="mw:WikiLink" href="./Wikilink" title="Wikilink">wikilink</a><span> embedded in ext link</span></p>
 !! end
 
 !! test
@@ -5412,8 +5264,8 @@ parsoid=wt2html
 </p><p>{{echo|[[Foo}}
 </p>
 !! html/parsoid
-<p>[<a rel="mw:ExtLink" href="http://example.com">http://example.com</a> x</p>
-<p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[http://example.com x"}},"i":0}}]}'>[<a rel="mw:ExtLink" href="http://example.com">http://example.com</a> x</p>
+<p>[<a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a> x</p>
+<p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[http://example.com x"}},"i":0}}]}'>[<a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a> x</p>
 <p>[[Foo</p>
 <p>{{echo|[[Foo}}</p>
 !! end
@@ -5476,7 +5328,7 @@ http://www.example.com/?title=AT%26T
 <p><a rel="nofollow" class="external free" href="http://www.example.com/?title=AT%26T">http://www.example.com/?title=AT%26T</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://www.example.com/?title=AT%26T">http://www.example.com/?title=AT%26T</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://www.example.com/?title=AT%26T">http://www.example.com/?title=AT%26T</a></p>
 !! end
 
 # According to https://www.w3.org/TR/2011/WD-html5-20110525/Overview.html#parsing-urls a plain
@@ -5489,7 +5341,7 @@ http://www.example.com/?title=100%25_Bran
 <p><a rel="nofollow" class="external free" href="http://www.example.com/?title=100%25_Bran">http://www.example.com/?title=100%25_Bran</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://www.example.com/?title=100%25_Bran">http://www.example.com/?title=100%25_Bran</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://www.example.com/?title=100%25_Bran">http://www.example.com/?title=100%25_Bran</a></p>
 !! end
 
 !! test
@@ -5500,7 +5352,7 @@ http://www.example.com/?title=Ben-Hur_%281959_film%29
 <p><a rel="nofollow" class="external free" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">http://www.example.com/?title=Ben-Hur_%281959_film%29</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">http://www.example.com/?title=Ben-Hur_%281959_film%29</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">http://www.example.com/?title=Ben-Hur_%281959_film%29</a></p>
 !! end
 
 
@@ -5512,7 +5364,7 @@ T6781: %26 in autonumber URL
 <p><a rel="nofollow" class="external autonumber" href="http://www.example.com/?title=AT%26T">[1]</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://www.example.com/?title=AT%26T"></a></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="http://www.example.com/?title=AT%26T"></a></p>
 !! end
 
 !! test
@@ -5523,7 +5375,7 @@ T6781, T7267: %26 in autonumber URL
 <p><a rel="nofollow" class="external autonumber" href="http://www.example.com/?title=100%25_Bran">[1]</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://www.example.com/?title=100%25_Bran"></a></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="http://www.example.com/?title=100%25_Bran"></a></p>
 !! end
 
 !! test
@@ -5534,7 +5386,7 @@ T6781, T7267: %28, %29 in autonumber URL
 <p><a rel="nofollow" class="external autonumber" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">[1]</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://www.example.com/?title=Ben-Hur_%281959_film%29"></a></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="http://www.example.com/?title=Ben-Hur_%281959_film%29"></a></p>
 !! end
 
 
@@ -5546,7 +5398,7 @@ T6781: %26 in bracketed URL
 <p><a rel="nofollow" class="external text" href="http://www.example.com/?title=AT%26T">link</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://www.example.com/?title=AT%26T">link</a></p>
+<p><a rel="mw:ExtLink" class="external text" href="http://www.example.com/?title=AT%26T">link</a></p>
 !! end
 
 !! test
@@ -5566,7 +5418,7 @@ T6781, T7267: %28, %29 in bracketed URL
 <p><a rel="nofollow" class="external text" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">link</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">link</a></p>
+<p><a rel="mw:ExtLink" class="external text" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">link</a></p>
 !! end
 
 !! test
@@ -5580,8 +5432,8 @@ External link containing a period in the anchor. (T65947)
 </p><p><a rel="nofollow" class="external text" href="//foo.org/bar.">bang</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="//foo.org/bar#baz.">bang</a></p>
-<p><a rel="mw:ExtLink" href="//foo.org/bar.">bang</a></p>
+<p><a rel="mw:ExtLink" class="external text" href="//foo.org/bar#baz.">bang</a></p>
+<p><a rel="mw:ExtLink" class="external text" href="//foo.org/bar.">bang</a></p>
 !! end
 
 !! test
@@ -5595,8 +5447,8 @@ External link containing a single quote. (T65947)
 </p><p><a rel="nofollow" class="external text" href="//foo.org/bar&#39;baz">bang</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="//foo.org/bar'baz"></a></p>
-<p><a rel="mw:ExtLink" href="//foo.org/bar'baz">bang</a></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="//foo.org/bar'baz"></a></p>
+<p><a rel="mw:ExtLink" class="external text" href="//foo.org/bar'baz">bang</a></p>
 !! end
 
 !! test
@@ -5617,17 +5469,16 @@ External link containing double-single-quotes in text embedded in italics (T6598
 </p>
 !! end
 
+# Don't add the html/php section since the output is broken and there isn't any reason to spec it
 !! test
 External link containing double-single-quotes with no space separating the url from text in italics
 !! wikitext
 [http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm''La muerte de Casagemas'' (1901) en el sitio de [[Museo Picasso (París)|Museo Picasso]].]
-!! html/php
-<p><a rel="nofollow" class="external text" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de <a href="/index.php?title=Museo_Picasso_(Par%C3%ADs)&amp;action=edit&amp;redlink=1" class="new" title="Museo Picasso (París) (page does not exist)">Museo Picasso</a>.</a>
-</p>
 !! html/php+tidy
-<p><a rel="nofollow" class="external text" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de</a> <a href="/index.php?title=Museo_Picasso_(Par%C3%ADs)&amp;action=edit&amp;redlink=1" class="new" title="Museo Picasso (París) (page does not exist)">Museo Picasso</a>.</p>
+<p><a rel="nofollow" class="external text" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de </a><a href="/index.php?title=Museo_Picasso_(Par%C3%ADs)&amp;action=edit&amp;redlink=1" class="new" title="Museo Picasso (París) (page does not exist)">Museo Picasso</a>.
+</p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de </a><a rel="mw:WikiLink" href="./Museo_Picasso_(París)" title="Museo Picasso (París)">Museo Picasso</a><span>.</span></p>
+<p><a rel="mw:ExtLink" class="external text" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de </a><a rel="mw:WikiLink" href="./Museo_Picasso_(París)" title="Museo Picasso (París)">Museo Picasso</a><span>.</span></p>
 !! end
 
 !! test
@@ -5638,7 +5489,7 @@ External link with comments in link text
 <p><a rel="nofollow" class="external text" href="http://www.google.com">Google </a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://www.google.com">Google <!-- comment --></a></p>
+<p><a rel="mw:ExtLink" class="external text" href="http://www.google.com">Google <!-- comment --></a></p>
 !! end
 
 !! test
@@ -5649,7 +5500,7 @@ External link to bare IPv4 address
 <p><a rel="nofollow" class="external text" href="http://192.168.0.1">Link</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://192.168.0.1">Link</a></p>
+<p><a rel="mw:ExtLink" class="external text" href="http://192.168.0.1">Link</a></p>
 !! end
 
 !! test
@@ -5681,9 +5532,9 @@ http://example.com/index.php?foozoid&#x5B;&#x5D;=bar
 </p><p><a rel="nofollow" class="external free" href="http://example.com/index.php?foozoid%5B%5D=bar">http://example.com/index.php?foozoid%5B%5D=bar</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com/index.php?foozoid%5B%5D=bar">http://example.com/index.php?foozoid%5B%5D=bar</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com/index.php?foozoid%5B%5D=bar">http://example.com/index.php?foozoid%5B%5D=bar</a></p>
 
-<p><a rel="mw:ExtLink" href="http://example.com/index.php?foozoid%5B%5D=bar" data-parsoid='{"stx":"url","a":{"href":"http://example.com/index.php?foozoid%5B%5D=bar"},"sa":{"href":"http://example.com/index.php?foozoid&amp;#x5B;&amp;#x5D;=bar"}}'>http://example.com/index.php?foozoid%5B%5D=bar</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com/index.php?foozoid%5B%5D=bar" data-parsoid='{"stx":"url","a":{"href":"http://example.com/index.php?foozoid%5B%5D=bar"},"sa":{"href":"http://example.com/index.php?foozoid&amp;#x5B;&amp;#x5D;=bar"}}'>http://example.com/index.php?foozoid%5B%5D=bar</a></p>
 !! end
 
 !! test
@@ -5729,24 +5580,24 @@ Examples from RFC 2732, section 2:
 <li> <a rel="nofollow" class="external free" href="http://[2010:836B:4179::836B:4179]">http://[2010:836B:4179::836B:4179]</a></li></ul>
 
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://[2404:130:0:1000::187:2]/index.php">http://[2404:130:0:1000::187:2]/index.php</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://[2404:130:0:1000::187:2]/index.php">http://[2404:130:0:1000::187:2]/index.php</a></p>
 
-<p>Examples from <a href="https://tools.ietf.org/html/rfc2373" rel="mw:ExtLink">RFC 2373</a>, section 2.2:</p>
-<ul><li> <a rel="mw:ExtLink" href="http://[1080::8:800:200C:417A]/unicast">http://[1080::8:800:200C:417A]/unicast</a></li>
-<li> <a rel="mw:ExtLink" href="http://[FF01::101]/multicast">http://[FF01::101]/multicast</a></li>
-<li> <a rel="mw:ExtLink" href="http://[::1]/loopback">http://[::1]/loopback</a></li>
-<li> <a rel="mw:ExtLink" href="http://[::]/unspecified">http://[::]/unspecified</a></li>
-<li> <a rel="mw:ExtLink" href="http://[::13.1.68.3]/ipv4compat">http://[::13.1.68.3]/ipv4compat</a></li>
-<li> <a rel="mw:ExtLink" href="http://[::FFFF:129.144.52.38]/ipv4compat">http://[::FFFF:129.144.52.38]/ipv4compat</a></li></ul>
+<p>Examples from <a href="https://tools.ietf.org/html/rfc2373" rel="mw:ExtLink" class="external text">RFC 2373</a>, section 2.2:</p>
+<ul><li> <a rel="mw:ExtLink" class="external free" href="http://[1080::8:800:200C:417A]/unicast">http://[1080::8:800:200C:417A]/unicast</a></li>
+<li> <a rel="mw:ExtLink" class="external free" href="http://[FF01::101]/multicast">http://[FF01::101]/multicast</a></li>
+<li> <a rel="mw:ExtLink" class="external free" href="http://[::1]/loopback">http://[::1]/loopback</a></li>
+<li> <a rel="mw:ExtLink" class="external free" href="http://[::]/unspecified">http://[::]/unspecified</a></li>
+<li> <a rel="mw:ExtLink" class="external free" href="http://[::13.1.68.3]/ipv4compat">http://[::13.1.68.3]/ipv4compat</a></li>
+<li> <a rel="mw:ExtLink" class="external free" href="http://[::FFFF:129.144.52.38]/ipv4compat">http://[::FFFF:129.144.52.38]/ipv4compat</a></li></ul>
 
-<p>Examples from <a href="https://tools.ietf.org/html/rfc2732" rel="mw:ExtLink">RFC 2732</a>, section 2:</p>
-<ul><li> <a rel="mw:ExtLink" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html</a></li>
-<li> <a rel="mw:ExtLink" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">http://[1080:0:0:0:8:800:200C:417A]/index.html</a></li>
-<li> <a rel="mw:ExtLink" href="http://[3ffe:2a00:100:7031::1]">http://[3ffe:2a00:100:7031::1]</a></li>
-<li> <a rel="mw:ExtLink" href="http://[1080::8:800:200C:417A]/foo">http://[1080::8:800:200C:417A]/foo</a></li>
-<li> <a rel="mw:ExtLink" href="http://[::192.9.5.5]/ipng">http://[::192.9.5.5]/ipng</a></li>
-<li> <a rel="mw:ExtLink" href="http://[::FFFF:129.144.52.38]:80/index.html">http://[::FFFF:129.144.52.38]:80/index.html</a></li>
-<li> <a rel="mw:ExtLink" href="http://[2010:836B:4179::836B:4179]">http://[2010:836B:4179::836B:4179]</a></li></ul>
+<p>Examples from <a href="https://tools.ietf.org/html/rfc2732" rel="mw:ExtLink" class="external text">RFC 2732</a>, section 2:</p>
+<ul><li> <a rel="mw:ExtLink" class="external free" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html</a></li>
+<li> <a rel="mw:ExtLink" class="external free" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">http://[1080:0:0:0:8:800:200C:417A]/index.html</a></li>
+<li> <a rel="mw:ExtLink" class="external free" href="http://[3ffe:2a00:100:7031::1]">http://[3ffe:2a00:100:7031::1]</a></li>
+<li> <a rel="mw:ExtLink" class="external free" href="http://[1080::8:800:200C:417A]/foo">http://[1080::8:800:200C:417A]/foo</a></li>
+<li> <a rel="mw:ExtLink" class="external free" href="http://[::192.9.5.5]/ipng">http://[::192.9.5.5]/ipng</a></li>
+<li> <a rel="mw:ExtLink" class="external free" href="http://[::FFFF:129.144.52.38]:80/index.html">http://[::FFFF:129.144.52.38]:80/index.html</a></li>
+<li> <a rel="mw:ExtLink" class="external free" href="http://[2010:836B:4179::836B:4179]">http://[2010:836B:4179::836B:4179]</a></li></ul>
 !! end
 
 !! test
@@ -5792,24 +5643,24 @@ Examples from RFC 2732, section 2:
 <li> <a rel="nofollow" class="external text" href="http://[2010:836B:4179::836B:4179]">7</a></li></ul>
 
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://[2404:130:0:1000::187:2]/index.php">test</a></p>
+<p><a rel="mw:ExtLink" class="external text" href="http://[2404:130:0:1000::187:2]/index.php">test</a></p>
 
-<p>Examples from <a href="https://tools.ietf.org/html/rfc2373" rel="mw:ExtLink">RFC 2373</a>, section 2.2:</p>
-<ul><li> <a rel="mw:ExtLink" href="http://[1080::8:800:200C:417A]">unicast</a></li>
-<li> <a rel="mw:ExtLink" href="http://[FF01::101]">multicast</a></li>
-<li> <a rel="mw:ExtLink" href="http://[::1]/">loopback</a></li>
-<li> <a rel="mw:ExtLink" href="http://[::]">unspecified</a></li>
-<li> <a rel="mw:ExtLink" href="http://[::13.1.68.3]">ipv4compat</a></li>
-<li> <a rel="mw:ExtLink" href="http://[::FFFF:129.144.52.38]">ipv4compat</a></li></ul>
+<p>Examples from <a href="https://tools.ietf.org/html/rfc2373" rel="mw:ExtLink" class="external text">RFC 2373</a>, section 2.2:</p>
+<ul><li> <a rel="mw:ExtLink" class="external text" href="http://[1080::8:800:200C:417A]">unicast</a></li>
+<li> <a rel="mw:ExtLink" class="external text" href="http://[FF01::101]">multicast</a></li>
+<li> <a rel="mw:ExtLink" class="external text" href="http://[::1]/">loopback</a></li>
+<li> <a rel="mw:ExtLink" class="external text" href="http://[::]">unspecified</a></li>
+<li> <a rel="mw:ExtLink" class="external text" href="http://[::13.1.68.3]">ipv4compat</a></li>
+<li> <a rel="mw:ExtLink" class="external text" href="http://[::FFFF:129.144.52.38]">ipv4compat</a></li></ul>
 
-<p>Examples from <a href="https://tools.ietf.org/html/rfc2732" rel="mw:ExtLink">RFC 2732</a>, section 2:</p>
-<ul><li> <a rel="mw:ExtLink" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">1</a></li>
-<li> <a rel="mw:ExtLink" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">2</a></li>
-<li> <a rel="mw:ExtLink" href="http://[3ffe:2a00:100:7031::1]">3</a></li>
-<li> <a rel="mw:ExtLink" href="http://[1080::8:800:200C:417A]/foo">4</a></li>
-<li> <a rel="mw:ExtLink" href="http://[::192.9.5.5]/ipng">5</a></li>
-<li> <a rel="mw:ExtLink" href="http://[::FFFF:129.144.52.38]:80/index.html">6</a></li>
-<li> <a rel="mw:ExtLink" href="http://[2010:836B:4179::836B:4179]">7</a></li></ul>
+<p>Examples from <a href="https://tools.ietf.org/html/rfc2732" rel="mw:ExtLink" class="external text">RFC 2732</a>, section 2:</p>
+<ul><li> <a rel="mw:ExtLink" class="external text" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">1</a></li>
+<li> <a rel="mw:ExtLink" class="external text" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">2</a></li>
+<li> <a rel="mw:ExtLink" class="external text" href="http://[3ffe:2a00:100:7031::1]">3</a></li>
+<li> <a rel="mw:ExtLink" class="external text" href="http://[1080::8:800:200C:417A]/foo">4</a></li>
+<li> <a rel="mw:ExtLink" class="external text" href="http://[::192.9.5.5]/ipng">5</a></li>
+<li> <a rel="mw:ExtLink" class="external text" href="http://[::FFFF:129.144.52.38]:80/index.html">6</a></li>
+<li> <a rel="mw:ExtLink" class="external text" href="http://[2010:836B:4179::836B:4179]">7</a></li></ul>
 !! end
 
 !! test
@@ -5849,13 +5700,13 @@ Non-extlinks in brackets
 [foo <i>bar</i>]
 [fool's] errand
 [fool's errand]
-[<span typeof="mw:Placeholder" data-parsoid='{"src":"{{echo|foo}}"}'>foo</span>]
-[<span typeof="mw:Placeholder" data-parsoid='{"src":"{{echo|foo}}"}'>foo</span> bar]
-[<span typeof="mw:Placeholder" data-parsoid='{"src":"{{echo|foo}}"}'>foo</span> <i>bar</i>]
-[<span typeof="mw:Placeholder" data-parsoid='{"src":"{{echo|foo}}l&#39;s"}'>fool's</span>] errand
-[<span typeof="mw:Placeholder" data-parsoid='{"src":"{{echo|foo}}l&#39;s"}'>fool's</span> errand]
-[<span typeof="mw:Placeholder" data-parsoid='{"src":"url={{echo|foo}}"}'>url=foo</span>]
-[url=<a rel="mw:ExtLink" href="http://example.com">http://example.com</a>]
+[<span about="#mwt19" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span>]
+[<span about="#mwt20" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span> bar]
+[<span about="#mwt21" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span> <i>bar</i>]
+[<span about="#mwt22" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span>l's] errand
+[<span about="#mwt23" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span>l's errand]
+[url=<span about="#mwt24" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span>]
+[url=<a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>]
 [http:// bare protocols don't count]</p>
 !! end
 
@@ -5867,8 +5718,7 @@ Percent encoding in external links
 <p><a rel="nofollow" class="external text" href="https://github.com/search?l=&amp;q=ResourceLoader+%40wikimedia">Search</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink"
-href="https://github.com/search?l=&amp;q=ResourceLoader+%40wikimedia">Search</a></p>
+<p><a rel="mw:ExtLink" class="external text" href="https://github.com/search?l=&amp;q=ResourceLoader+%40wikimedia">Search</a></p>
 !! end
 
 !! test
@@ -5879,7 +5729,7 @@ http://example.com
 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a></p>
 !! end
 
 !! test
@@ -5911,14 +5761,14 @@ http://example.com/a)b
 </p><p><a rel="nofollow" class="external text" href="http://example.com)">foo</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a>)</p>
-<p><a rel="mw:ExtLink" href="http://example.com/test">http://example.com/test</a>)</p>
-<p><a rel="mw:ExtLink" href="http://example.com/(test)">http://example.com/(test)</a></p>
-<p><a rel="mw:ExtLink" href="http://example.com/((test)">http://example.com/((test)</a></p>
-<p>(<a rel="mw:ExtLink" href="http://example.com/(test))">http://example.com/(test))</a></p>
-<p>(<a rel="mw:ExtLink" href="http://example.com/(test)))))">http://example.com/(test)))))</a></p>
-<p><a rel="mw:ExtLink" href="http://example.com/a)b">http://example.com/a)b</a></p>
-<p><a rel="mw:ExtLink" href="http://example.com)">foo</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a>)</p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com/test">http://example.com/test</a>)</p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com/(test)">http://example.com/(test)</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com/((test)">http://example.com/((test)</a></p>
+<p>(<a rel="mw:ExtLink" class="external free" href="http://example.com/(test))">http://example.com/(test))</a></p>
+<p>(<a rel="mw:ExtLink" class="external free" href="http://example.com/(test)))))">http://example.com/(test)))))</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com/a)b">http://example.com/a)b</a></p>
+<p><a rel="mw:ExtLink" class="external text" href="http://example.com)">foo</a></p>
 !! end
 
 !! test
@@ -5932,9 +5782,9 @@ Parenthesis in external links, w/ transclusion or comment
 </p><p>(<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>)
 </p>
 !! html/parsoid
-<p>(<a typeof="mw:ExpandedAttrs" about="#mwt2" rel="mw:ExtLink" href="http://example.com/hi" data-parsoid='{"stx":"url","a":{"href":"http://example.com/hi"},"sa":{"href":"http://example.com/{{echo|hi}}"}}' data-mw='{"attribs":[[{"txt":"href"},{"html":"http://example.com/&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=&#39;{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[20,31,null,null]}&#39; data-mw=&#39;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"hi\"}},\"i\":0}}]}&#39;>hi&lt;/span>"}]]}'>http://example.com/hi</a>)</p>
+<p>(<a typeof="mw:ExpandedAttrs" about="#mwt2" rel="mw:ExtLink" class="external free" href="http://example.com/hi" data-parsoid='{"stx":"url","a":{"href":"http://example.com/hi"},"sa":{"href":"http://example.com/{{echo|hi}}"}}' data-mw='{"attribs":[[{"txt":"href"},{"html":"http://example.com/&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=&#39;{\"pi\":[[{\"k\":\"1\"}]],\"dsr\":[20,31,null,null]}&#39; data-mw=&#39;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"hi\"}},\"i\":0}}]}&#39;>hi&lt;/span>"}]]}'>http://example.com/hi</a>)</p>
 
-<p>(<a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url","a":{"href":"http://example.com"},"sa":{"href":"http://example.com&lt;!-- hi -->"}}'>http://example.com</a>)</p>
+<p>(<a rel="mw:ExtLink" class="external free" href="http://example.com" data-parsoid='{"stx":"url","a":{"href":"http://example.com"},"sa":{"href":"http://example.com&lt;!-- hi -->"}}'>http://example.com</a>)</p>
 !! end
 
 !! test
@@ -6420,15 +6270,12 @@ Accept "!!" in table data of mixed wikitext / html syntax
 !a
 <tr><td>b!!c</td></tr>
 |}
-!! html+tidy
+!! html/php+tidy
 <table>
-<tr>
-<th>a</th>
-</tr>
-<tr>
-<td>b!!c</td>
-</tr>
-</table>
+<tbody><tr>
+<th>a
+</th></tr><tr><td>b!!c</td></tr>
+</tbody></table>
 !! html/parsoid
 <table>
 <tbody><tr><th>a</th></tr>
@@ -6630,7 +6477,7 @@ parsoid=wt2html,html2html
 !! html/parsoid
 <table><tbody>
 <tr>
-<td data-parsoid='{"startTagSrc":"| ","attrSepSrc":"|","autoInsertedEnd":true}'>[<a rel="mw:ExtLink" href="ftp://%7Cx" data-parsoid='{"stx":"url","a":{"href":"ftp://%7Cx"},"sa":{"href":"ftp://|x"}}'>ftp://%7Cx</a></td><td data-parsoid='{"stx":"row","autoInsertedEnd":true}'>]" onmouseover="alert(document.cookie)">test</td></tr></tbody></table>
+<td data-parsoid='{"startTagSrc":"| ","attrSepSrc":"|","autoInsertedEnd":true}'>[<a rel="mw:ExtLink" class="external free" href="ftp://%7Cx" data-parsoid='{"stx":"url","a":{"href":"ftp://%7Cx"},"sa":{"href":"ftp://|x"}}'>ftp://%7Cx</a></td><td data-parsoid='{"stx":"row","autoInsertedEnd":true}'>]" onmouseover="alert(document.cookie)">test</td></tr></tbody></table>
 !! end
 
 !! test
@@ -6719,7 +6566,7 @@ Don't break on | in extension attribute in template
 
 <references />
 !! html/parsoid
-<p><span about="#mwt2" class="mw-ref" id="cite_ref-hi|ho_1-0" rel="dc:references" typeof="mw:Transclusion  mw:Extension/ref" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;ref name=\"hi|ho\">ha&lt;/ref>"}},"i":0}}]}'><a href="./Main_Page#cite_note-hi|ho-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></span></p>
+<p><sup about="#mwt2" class="mw-ref" id="cite_ref-hi|ho_1-0" rel="dc:references" typeof="mw:Transclusion  mw:Extension/ref" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;ref name=\"hi|ho\">ha&lt;/ref>"}},"i":0}}]}'><a href="./Main_Page#cite_note-hi|ho-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup></p>
 
 <ol class="mw-references references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-hi|ho-1" id="cite_note-hi|ho-1"><a href="./Main_Page#cite_ref-hi|ho_1-0" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-hi|ho-1" class="mw-reference-text">ha</span></li></ol>
 !! end
@@ -6894,7 +6741,7 @@ T107652: <ref>s in templates that also generate table cell attributes should be
 <references />
 !! html/parsoid
 <table>
-<tbody><tr><td style="background:#f9f9f9;" typeof="mw:Transclusion" about="#mwt1" data-mw='{"parts":["|",{"template":{"target":{"wt":"table_attribs_7","href":"./Template:Table_attribs_7"},"params":{},"i":0}}]}'>Foo<span class="mw-ref" id="cite_ref-1" rel="dc:references" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></span></td></tr>
+<tbody><tr><td style="background:#f9f9f9;" typeof="mw:Transclusion" about="#mwt1" data-mw='{"parts":["|",{"template":{"target":{"wt":"table_attribs_7","href":"./Template:Table_attribs_7"},"params":{},"i":0}}]}'>Foo<sup class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></s></td></tr>
 </tbody></table>
 <ol class="mw-references references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">foo</span></li></ol>
 !! end
@@ -6991,10 +6838,10 @@ Wikitext table comments represented in parsoid dom
 |}
 !! html/php+tidy
 <table>
-<tr>
-<td>x</td>
-</tr>
-</table>
+
+<tbody><tr>
+<td> x
+</td></tr></tbody></table>
 !! html/parsoid
 <table><!--c1--><!--c2-->
 <tbody><tr data-parsoid='{"startTagSrc":"|-","autoInsertedEnd":true}'><!--c3-->
@@ -7164,7 +7011,7 @@ Wikitext table with html-syntax row
 !! end
 
 !! test
-Implicit <td> after a |-
+Fostered content in tables: Plain text
 !! options
 parsoid=wt2html,html2html
 !! wikitext
@@ -7179,7 +7026,10 @@ a
 </table>
 
 !! html/php+tidy
-<p>a</p>
+
+
+a
+<table></table>
 !! html/parsoid
 <p data-parsoid='{"fostered":true,"autoInsertedEnd":true}'>a</p><table>
 <tbody><tr data-parsoid='{"startTagSrc":"|-","autoInsertedEnd":true}'>
@@ -7188,7 +7038,7 @@ a
 !! end
 
 !! test
-Lists should be recognized in an implicit <td> context
+Fostered content in tables: Lists
 !! options
 parsoid=wt2html,html2html
 !! wikitext
@@ -7203,9 +7053,10 @@ parsoid=wt2html,html2html
 </table>
 
 !! html/php+tidy
-<ul>
-<li>a</li>
-</ul>
+<ul><li>a</li></ul><table>
+
+
+</table>
 !! html/parsoid
 <ul data-parsoid='{"fostered":true,"autoInsertedEnd":true}'><li>a</li></ul><table>
 <tbody><tr data-parsoid='{"startTagSrc":"|-","autoInsertedEnd":true}'>
@@ -7214,20 +7065,20 @@ parsoid=wt2html,html2html
 !! end
 
 !! test
-Table cells not properly parsed in an implicit-td context
+Template generated table cell with attributes
 !! wikitext
 {|
 |-
 {{table_attribs_4}} || a || b
 |}
-!! html/php+tidy
-<table>
-<tr>
-<td style="background-color:#DC241f;" width="10px"></td>
-<td>a</td>
-<td>b</td>
-</tr>
-</table>
+!! html/php+tidy
+<table>
+
+<tbody><tr>
+<td style="background-color:#DC241f;" width="10px"> </td>
+<td> a </td>
+<td> b
+</td></tr></tbody></table>
 !! html/parsoid
 <table>
 <tbody><tr data-parsoid='{"startTagSrc":"|-","autoInsertedEnd":true}'>
@@ -7248,17 +7099,14 @@ parsoid=wt2html,wt2wt
 |}<b>quux</b>
 !! html+tidy
 <table>
-<tr>
-<td>foo</td>
-</tr>
-</table>
-<p>bar</p>
-<table>
-<tr>
-<td>baz</td>
-</tr>
-</table>
-<p><b>quux</b></p>
+<tbody><tr>
+<td>foo
+</td></tr></tbody></table><p> bar
+</p><table>
+<tbody><tr>
+<td>baz
+</td></tr></tbody></table><p><b>quux</b>
+</p>
 !! end
 
 !! test
@@ -7330,12 +7178,11 @@ foo
 |}
 !!html/php+tidy
 <table class="foo">
-<tr>
+<tbody><tr>
 <td class="bar">
-<p>foo</p>
-</td>
-</tr>
-</table>
+<p>foo
+</p>
+</td></tr></tbody></table>
 !!html/parsoid
 <table class="foo">
 <tr>
@@ -7409,24 +7256,28 @@ parsoid=html2wt
 |}
 !! html/php+tidy
 <table>
-<caption>Test</caption>
-<tr>
-<th>Month</th>
-<th>Savings</th>
-</tr>
+<caption>Test
+</caption>
+<tbody><tr>
+<th>Month
+</th>
+<th>Savings
+</th></tr>
 <tr>
-<td>January</td>
-<td>$100</td>
-</tr>
+<td>January
+</td>
+<td>$100
+</td></tr>
 <tr>
-<td>February</td>
-<td>$80</td>
-</tr>
+<td>February
+</td>
+<td>$80
+</td></tr>
 <tr>
-<td>Sum</td>
-<td>$180</td>
-</tr>
-</table>
+<td>Sum
+</td>
+<td>$180
+</td></tr></tbody></table>
 !! end
 
 # T137406: No whitespace in the HTML
@@ -8127,7 +7978,7 @@ Plain link to URL
 <p>[<a rel="nofollow" class="external autonumber" href="http://www.example.com">[1]</a>]
 </p>
 !! html/parsoid
-<p>[<a rel="mw:ExtLink" href="http://www.example.com"></a>]</p>
+<p>[<a rel="mw:ExtLink" class="external autonumber" href="http://www.example.com"></a>]</p>
 !! end
 
 !! test
@@ -8147,7 +7998,7 @@ Plain link to protocol-relative URL
 <p>[<a rel="nofollow" class="external autonumber" href="//www.example.com">[1]</a>]
 </p>
 !! html/parsoid
-<p>[<a rel="mw:ExtLink" href="//www.example.com"></a>]</p>
+<p>[<a rel="mw:ExtLink" class="external autonumber" href="//www.example.com"></a>]</p>
 !! end
 
 !! test
@@ -8190,7 +8041,7 @@ Piped link to URL: [[http://www.example.com|an example URL]]
 <p>Piped link to URL: [<a rel="nofollow" class="external text" href="http://www.example.com%7Can">example URL</a>]
 </p>
 !! html/parsoid
-<p>Piped link to URL: [<a rel="mw:ExtLink" href="http://www.example.com%7Can" data-parsoid='{"a":{"href":"http://www.example.com%7Can"},"sa":{"href":"http://www.example.com|an"}}'>example URL</a>]</p>
+<p>Piped link to URL: [<a rel="mw:ExtLink" class="external text" href="http://www.example.com%7Can" data-parsoid='{"a":{"href":"http://www.example.com%7Can"},"sa":{"href":"http://www.example.com|an"}}'>example URL</a>]</p>
 !! end
 
 !! test
@@ -8212,13 +8063,13 @@ parsoid=wt2html
 </p><p>[<a rel="nofollow" class="external free" href="http://www.example.com">http://www.example.com</a> 
 </p>
 !! html/parsoid
-<p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[http://www.example.com "},"2":{"wt":"123]"}},"i":0}}]}'>[<a rel="mw:ExtLink" href="http://www.example.com">http://www.example.com</a> </p>
+<p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[http://www.example.com "},"2":{"wt":"123]"}},"i":0}}]}'>[<a rel="mw:ExtLink" class="external free" href="http://www.example.com">http://www.example.com</a> </p>
 
-<p about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[http://www.example.com |123]]"}},"i":0}}]}'>[<a rel="mw:ExtLink" href="http://www.example.com">|123</a>]</p>
+<p about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[http://www.example.com |123]]"}},"i":0}}]}'>[<a rel="mw:ExtLink" class="external text" href="http://www.example.com">|123</a>]</p>
 
-<p>{{echo|[<a rel="mw:ExtLink" href="http://www.example.com" data-parsoid='{"targetOff":114,"contentOffsets":[114,118],"dsr":[90,119,24,1]}'>|123</a>}}</p>
+<p>{{echo|[<a rel="mw:ExtLink" class="external text" href="http://www.example.com" data-parsoid='{"targetOff":114,"contentOffsets":[114,118],"dsr":[90,119,24,1]}'>|123</a>}}</p>
 
-<p about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[http://www.example.com "},"2":{"wt":"123]]"}},"i":0}}]}'>[<a rel="mw:ExtLink" href="http://www.example.com">http://www.example.com</a> </p>
+<p about="#mwt3" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[http://www.example.com "},"2":{"wt":"123]]"}},"i":0}}]}'>[<a rel="mw:ExtLink" class="external free" href="http://www.example.com">http://www.example.com</a> </p>
 !! end
 
 !! test
@@ -8239,11 +8090,9 @@ T2337: Escaped self-links should be bold
 title=[[Bug462]]
 !! wikitext
 [[Bu&#103;462]] [[Bug462]]
-!! html/php
+!! html/php+tidy
 <p><a class="mw-selflink selflink">Bu&#103;462</a> <a class="mw-selflink selflink">Bug462</a>
 </p>
-!! html/php+tidy
-<p><a class="mw-selflink selflink">Bug462</a> <a class="mw-selflink selflink">Bug462</a></p>
 !! html/parsoid
 <p><a rel="mw:WikiLink" href="./Bug462" title="Bug462">Bug462</a> <a rel="mw:WikiLink" href="./Bug462" title="Bug462">Bug462</a></p>
 !! end
@@ -8684,7 +8533,7 @@ parsoid=wt2html,wt2wt
 <ul><li><a href="http://en.wikipedia.org/wiki/ro:Olteni%C5%A3a" class="extiw" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteni&#355;a</a></li>
 <li><a href="http://en.wikipedia.org/wiki/ro:Olteni%C5%A3a" class="extiw" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteni&#355;a</a></li></ul>
 
-!! html+tidy
+!! html/php+tidy
 <ul>
 <li><a href="http://en.wikipedia.org/wiki/ro:Olteni%C5%A3a" class="extiw" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteniţa</a></li>
 <li><a href="http://en.wikipedia.org/wiki/ro:Olteni%C5%A3a" class="extiw" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteniţa</a></li>
@@ -8796,8 +8645,8 @@ Interwiki links that cannot be represented in wiki syntax
 <p><a rel="mw:WikiLink/Interwiki" href="http://www.usemod.com/cgi-bin/mb.pl?ok" title="meatball:ok">meatball:ok</a>
 <a rel="mw:WikiLink/Interwiki" href="http://www.usemod.com/cgi-bin/mb.pl?ok#foo" title="meatball:ok">ok with fragment</a>
 <a rel="mw:WikiLink/Interwiki" href="http://www.usemod.com/cgi-bin/mb.pl?ok_as_well?" title="meatball:ok as well?">ok ending with ? mark</a>
-<a rel="mw:ExtLink" href="http://de.wikipedia.org/wiki/Foo?action=history">has query</a>
-<a rel="mw:ExtLink" href="http://de.wikipedia.org/wiki/#foo">is just fragment</a></p>
+<a rel="mw:ExtLink" class="external text" href="http://de.wikipedia.org/wiki/Foo?action=history">has query</a>
+<a rel="mw:ExtLink" class="external text" href="http://de.wikipedia.org/wiki/#foo">is just fragment</a></p>
 !! end
 
 !! test
@@ -9475,8 +9324,9 @@ parsoid=wt2html
 
 <br/ >
 !! html+tidy
-<p><br /></p>
-<p><br /></p>
+<p><br />
+</p><p><br />
+</p>
 !! end
 
 !! test
@@ -9568,10 +9418,9 @@ foo <hr
 > bar
 !! html+tidy
 <hr />
-<hr />
-<p>foo</p>
-<hr />
-<p>bar</p>
+<hr /><p>
+foo </p><hr /><p> bar
+</p>
 !! end
 
 !! test
@@ -9620,8 +9469,8 @@ Horizontal ruler -- Supports content following dashes on same line
 <hr /> Foo
 
 !! html+tidy
-<hr />
-<p>Foo</p>
+<hr /><p> Foo
+</p>
 !! end
 
 ###
@@ -9922,11 +9771,10 @@ Multiple list tags generated by templates
 </li>
 
 !! html+tidy
-<ul>
-<li>a</li>
-<li>b</li>
-<li>c</li>
-</ul>
+<li>a
+</li><li>b
+</li><li>c
+</li>
 !!end
 
 !!test
@@ -9966,9 +9814,10 @@ Replacing whitespace with tabs still doesn't break the list (gerrit 78327)
 
 !!end
 
+# FIXME: Parsoid has a dedicated DOM pass to mimic this Tidy-specific li-hack
+# That pass could possibly be removed.
 !!test
-Test the li-hack
-(The PHP parser relies on Tidy for the hack)
+Test the li-hack (a hack from Tidy days, but doesn't work as advertised with Remex)
 !!options
 parsoid=wt2html,wt2wt
 !! wikitext
@@ -9982,14 +9831,13 @@ parsoid=wt2html,wt2wt
 </li>
 </ul>
 !! html+tidy
+<ul><li> foo</li>
+<li class="mw-empty-elt"> </li><li>li-hack</li>
+<li class="mw-empty-elt"> </li><li>templated li-hack</li>
+<li class="mw-empty-elt">  </li><li> unsupported li-hack with preceding comments</li></ul>
 <ul>
-<li>foo</li>
-<li>li-hack</li>
-<li>templated li-hack</li>
-<li>unsupported li-hack with preceding comments</li>
-</ul>
-<ul>
-<li>not a li-hack</li>
+<li class="mw-empty-elt"></li><li>not a li-hack
+</li>
 </ul>
 !! html/parsoid
 <ul><li> foo</li>
@@ -10048,69 +9896,71 @@ parsoid
 # tags (parse, minimize scope of fixup, and roundtrip back)
 # ------------------------------------------------------------------------
 
+# Remex and Parsoid output stems from list handling diffs because Parsoid & PHP parser.
+# Parsoid's list handling is more aware of block structure.
 !! test
 Unbalanced closing block tags break a list
-(php parser relies on Tidy to fix up)
 !! wikitext
 <div>
 *a</div><div>
 *b</div>
 !! html+tidy
 <div>
-<ul>
+<ul><li>a</li></ul></div><div>
+<li>b</li></div>
+!! html+parsoid
+<div><ul>
 <li>a</li>
-</ul>
-</div>
-<div>
-<ul>
+</ul></div>
+<div><ul>
 <li>b</li>
-</ul>
-</div>
+</ul></div>
 !! end
 
-# Parsoid fails this test, but it might be tricky to support properly.
-# See T70395.
 !! test
 Unbalanced closing non-block tags don't break a list
-(php parser relies on Tidy to fix up)
 !! wikitext
 <span>
 *a</span><span>
 *b</span>
 !! html/php+tidy
-<ul>
-<li><span>a</span></li>
-<li><span>b</span></li>
-</ul>
+<p><span>
+</span></p>
+<ul><li>a<span></span></li>
+<li>b</li></ul>
 !! html/parsoid
 <span>
 <ul>
-<li>a<span></span>
-</li>
-<li>b
-</li>
+<li>a<span></span></li>
+<li>b</li>
 </ul>
 </span>
 !! end
 
+# Parsoid does some post-dom-building cleanup
+# which is why its output differs from Remex.
 !! test
 Unclosed formatting tags that straddle lists are closed and reopened
-(php parser relies on Tidy to fix up)
 !! options
 parsoid=wt2html,wt2wt,html2html
 !! wikitext
 # <s> a
 # b </s>
 !! html/php+tidy
-<ol>
-<li><s>a</s></li>
-<li><s>b</s></li>
-</ol>
+<ol><li> <s> a</s></li><s>
+</s><li><s> b </s></li></ol>
 !! html/parsoid
-<ol><li> <s> a</s></li>
+<ol><li> <s> a</s><s></s></li>
 <li><s> b </s></li></ol>
 !! end
 
+# Output is ugly because of all the misnested tag fixups.
+# Remex is wrapping p-tags around empty elements.
+# Parsoid has special-case handling of this pattern of
+# wrapping lists in formatting tags.
+# FIXME: Should we remove this code from Parsoid? Or add
+# special support in Remex? If the latter, maybe just wait
+# for Parsoid to become the default parser.
 # See T70395.
 !!test
 1. List embedded in a formatting tag
@@ -10119,9 +9969,9 @@ parsoid=wt2html,wt2wt,html2html
 * foo
 </small>
 !! html/php+tidy
-<ul>
-<li><small>foo</small></li>
-</ul>
+<p><small>
+</small></p><small><ul><li> foo</li></ul></small><small></small><p><small></small>
+</p>
 !! html/parsoid
 <small>
 <ul>
@@ -10130,19 +9980,19 @@ parsoid=wt2html,wt2wt,html2html
 </small>
 !!end
 
-## Ugly Parsoid output here
-## Not sure what the right output is.
+# Output is ugly because of all the misnested tag fixups
+# Remex is wrapping p-tags around empty elements.
+# Parsoid has code that strips useless p-tags.
 !!test
-2. List embedded in a formatting tag
+2. List embedded in a formatting tag in a misnested way
 !! wikitext
 <small>
 *a
 *b</small>
 !! html/php+tidy
-<ul>
-<li><small>a</small></li>
-<li><small>b</small></li>
-</ul>
+<p><small>
+</small></p><small></small><ul><small><li>a</li>
+</small><li><small>b</small></li></ul>
 !! html/parsoid
 <small></small>
 <ul><small>
@@ -10152,31 +10002,6 @@ parsoid=wt2html,wt2wt,html2html
 </ul>
 !!end
 
-# Ugly Parsoid and PHP parser output here
-# Not sure if we want to make this a test!
-#
-## !!test
-## 3. Unclosed formatting tags in list elements
-## !! wikitext
-## *<small>a
-## *<small>b
-## !! html/php+tidy
-## <ul>
-## <li><small>a</small></li>
-## <li><small><small>b</small></small></li>
-## </ul>
-## !! html/parsoid
-## <ul>
-## <li><small>a</small></li>
-## <small>
-## <li><small>b</small></li>
-## </small></ul>
-## !!end
-
-# This is a bug in the PHP parser + tidy combination.
-# (The </tr> tag gets parsed as text and html-escaped by PHP,
-# and then fostered out of the table by tidy.)
-# We believe the Parsoid output to be correct.
 !! test
 Table with missing opening <tr> tag
 !! options
@@ -10188,10 +10013,9 @@ parsoid=wt2html,wt2wt
 </table>
 !! html+tidy
 <table>
-<tr>
-<td>foo</td>
+<tbody><tr><td>foo</td>
 </tr>
-</table>
+</tbody></table>
 !! end
 
 ###
@@ -10669,11 +10493,9 @@ title=[['foo & bar = baz']]
 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 ''{{PAGENAME}}''
-!! html/php
+!! html+tidy
 <p><i>&#39;foo &#38; bar &#61; baz&#39;</i>
 </p>
-!! html+tidy
-<p><i>'foo &amp; bar = baz'</i></p>
 !! end
 
 !! test
@@ -10683,11 +10505,9 @@ title=[[*RFC 1234 http://example.com/]]
 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{PAGENAME}}
-!! html/php
+!! html+tidy
 <p>&#42;RFC&#32;1234 http&#58;//example.com/
 </p>
-!! html+tidy
-<p>*RFC 1234 http://example.com/</p>
 !! end
 
 !! test
@@ -10709,11 +10529,9 @@ title=[[*RFC 1234 http://example.com/]]
 parsoid={ "modes": ["wt2html","wt2wt"], "normalizePhp": true }
 !! wikitext
 {{PAGENAMEE}}
-!! html/php
+!! html+tidy
 <p>&#42;RFC_1234_http&#58;//example.com/
 </p>
-!! html+tidy
-<p>*RFC_1234_http://example.com/</p>
 !! end
 
 !! test
@@ -11053,7 +10871,7 @@ RFC 822
 <p><a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc822">RFC 822</a>
 </p>
 !! html/parsoid
-<p><a href="https://tools.ietf.org/html/rfc822" rel="mw:ExtLink">RFC 822</a></p>
+<p><a href="https://tools.ietf.org/html/rfc822" rel="mw:ExtLink" class="external text">RFC 822</a></p>
 !! end
 
 !! test
@@ -11064,7 +10882,7 @@ This is RFC 822 but thisRFC 822 is not RFC 822linked.
 <p>This is <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc822">RFC 822</a> but thisRFC 822 is not RFC 822linked.
 </p>
 !! html/parsoid
-<p>This is <a href="https://tools.ietf.org/html/rfc822" rel="mw:ExtLink">RFC 822</a> but thisRFC 822 is not RFC 822linked.</p>
+<p>This is <a href="https://tools.ietf.org/html/rfc822" rel="mw:ExtLink" class="external text">RFC 822</a> but thisRFC 822 is not RFC 822linked.</p>
 !! end
 
 !! test
@@ -11079,7 +10897,7 @@ RFC
 822
 </p>
 !! html/parsoid
-<p><a href="https://tools.ietf.org/html/rfc822" rel="mw:ExtLink">RFC <span typeof="mw:Entity" data-parsoid='{"src":"&amp;nbsp;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#0160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#xA0;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#Xa0;","srcContent":" "}'> </span> 822</a>
+<p><a href="https://tools.ietf.org/html/rfc822" rel="mw:ExtLink" class="external text">RFC <span typeof="mw:Entity" data-parsoid='{"src":"&amp;nbsp;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#0160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#xA0;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#Xa0;","srcContent":" "}'> </span> 822</a>
 RFC
 822</p>
 !! end
@@ -11137,7 +10955,7 @@ PMID 1234
 <p><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a>
 </p>
 !! html/parsoid
-<p><a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink">PMID 1234</a></p>
+<p><a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink" class="external text">PMID 1234</a></p>
 !! end
 
 !! test
@@ -11148,7 +10966,7 @@ This is PMID 1234 but thisPMID 1234 is not PMID 1234linked.
 <p>This is <a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a> but thisPMID 1234 is not PMID 1234linked.
 </p>
 !! html/parsoid
-<p>This is <a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink">PMID 1234</a> but thisPMID 1234 is not PMID 1234linked.</p>
+<p>This is <a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink" class="external text">PMID 1234</a> but thisPMID 1234 is not PMID 1234linked.</p>
 !! end
 
 !! test
@@ -11163,7 +10981,7 @@ PMID
 1234
 </p>
 !! html/parsoid
-<p><a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink">PMID <span typeof="mw:Entity" data-parsoid='{"src":"&amp;nbsp;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#0160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#xA0;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#Xa0;","srcContent":" "}'> </span> 1234</a>
+<p><a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink" class="external text">PMID <span typeof="mw:Entity" data-parsoid='{"src":"&amp;nbsp;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#0160;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#xA0;","srcContent":" "}'> </span><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#Xa0;","srcContent":" "}'> </span> 1234</a>
 PMID
 1234</p>
 !! end
@@ -11182,7 +11000,7 @@ X[https://tools.ietf.org/html/rfc1234 foo]
 </p>
 !! html/parsoid
 <p>X<a rel="mw:WikiLink" href="./Special:BookSources/0978739256" title="Special:BookSources/0978739256">foo</a></p>
-<p>X<a rel="mw:ExtLink" href="https://tools.ietf.org/html/rfc1234">foo</a></p>
+<p>X<a rel="mw:ExtLink" class="external text" href="https://tools.ietf.org/html/rfc1234">foo</a></p>
 !! end
 
 !! test
@@ -11474,12 +11292,7 @@ Template with thumb image (with link in description)
 This is a test template with parameter <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Noimage.png" class="new" title="File:Noimage.png">File:Noimage.png</a>  <div class="thumbcaption"><a href="/index.php?title=No_link&amp;action=edit&amp;redlink=1" class="new" title="No link (page does not exist)">link</a> <a href="/index.php?title=No_link&amp;action=edit&amp;redlink=1" class="new" title="No link (page does not exist)">caption</a></div></div></div>
 
 !! html+tidy
-<p>This is a test template with parameter</p>
-<div class="thumb tright">
-<div class="thumbinner" style="width:182px;"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Noimage.png" class="new" title="File:Noimage.png">File:Noimage.png</a>
-<div class="thumbcaption"><a href="/index.php?title=No_link&amp;action=edit&amp;redlink=1" class="new" title="No link (page does not exist)">link</a> <a href="/index.php?title=No_link&amp;action=edit&amp;redlink=1" class="new" title="No link (page does not exist)">caption</a></div>
-</div>
-</div>
+<p>This is a test template with parameter </p><div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=Special:Upload&amp;wpDestFile=Noimage.png" class="new" title="File:Noimage.png">File:Noimage.png</a>  <div class="thumbcaption"><a href="/index.php?title=No_link&amp;action=edit&amp;redlink=1" class="new" title="No link (page does not exist)">link</a> <a href="/index.php?title=No_link&amp;action=edit&amp;redlink=1" class="new" title="No link (page does not exist)">caption</a></div></div></div>
 !! html/parsoid
 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"paramtest","href":"./Template:Paramtest"},"params":{"param":{"wt":"[[Image:noimage.png|thumb|[[no link|link]] [[no link|caption]]]]"}},"i":0}}]}'>This is a test template with parameter </p><figure class="mw-default-size" typeof="mw:Error mw:Image/Thumb" about="#mwt1" data-mw='{"errors":[{"key":"apierror-filedoesnotexist","message":"This image does not exist."}]}'><a href="./File:Noimage.png" ><img resource="./File:Noimage.png" src="./Special:FilePath/Noimage.png" height="220" width="220"/></a><figcaption><a rel="mw:WikiLink" href="./No_link" title="No link">link</a> <a rel="mw:WikiLink" href="./No_link" title="No link">caption</a></figcaption></figure>
 !! end
@@ -11763,21 +11576,13 @@ Templates with intersecting and overlapping ranges
 {{echo|{{!}}hi}}
 |}
 !! html/php+tidy
-<p>ha</p>
-<p>ho</p>
-<table>
-<tr>
-<td></td>
-</tr>
-<tr>
-<td>hi</td>
-</tr>
-</table>
-<table>
-<tr>
-<td></td>
-</tr>
-</table>
+<p>ha</p><table>
+
+</table><p>ho</p><table>
+
+<tbody><tr>
+<td>hi
+</td></tr></tbody></table>
 !! html/parsoid
 <p about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"stx":"html","autoInsertedEnd":true,"pi":[[{"k":"1"}],[{"k":"1"}],[{"k":"1"}]],"firstWikitextNode":"table"}' data-mw='{"parts":["{|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"\n&lt;p>ha&lt;/p>"}},"i":0}},"\n","{|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"\n&lt;p>ho&lt;/p>"}},"i":1}},"\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{!}}hi"}},"i":2}},"\n|}"]}'>ha</p><table about="#mwt1" typeof="mw:ExpandedAttrs" data-mw='{"attribs":[[{"txt":"","html":""},{"html":""}]]}'>
 
@@ -12486,30 +12291,21 @@ tag, nothing bad happens:
 {{echo|<tag>foo-{bar}bat</tag>}}
 
 !! html/php+tidy
-<p>This form breaks the template, which is unfortunate:</p>
-<ul>
-<li>{{echo|foo-{bar}bat}}</li>
-</ul>
-<p>But if the broken language converter markup is inside an extension tag, nothing bad happens:</p>
-<ul>
-<li>foo-{bar}bat</li>
-<li>foo-{bar}bat</li>
-<li>
-<pre>
-foo-{bar}bat
-</pre></li>
-<li>
-<pre>
-foo-{bar}bat
-</pre></li>
-</ul>
-<pre>
-'foo-{bar}bat'
+<p>This form breaks the template, which is unfortunate:
+</p>
+<ul><li> {{echo|foo-{bar}bat}}</li></ul>
+<p>But if the broken language converter markup is inside an extension
+tag, nothing bad happens:
+</p>
+<ul><li> foo-&#123;bar}bat</li>
+<li> foo-&#123;bar}bat</li>
+<li> <pre>foo-{bar}bat</pre></li>
+<li> <pre>foo-{bar}bat</pre></li></ul>
+<pre>'foo-{bar}bat'
 array (
 )
 </pre>
-<pre>
-'foo-{bar}bat'
+<pre>'foo-{bar}bat'
 array (
 )
 </pre>
@@ -12537,16 +12333,14 @@ parsoid=wt2html
 * [http://example.com Example in -{link} description]
 * {{echo|[http://example.com/-{foo Breaks template, however]}}
 !! html/php+tidy
-<ul>
-<li><a rel="nofollow" class="external text" href="http://example.com/-{foo">Example in URL</a></li>
-<li><a rel="nofollow" class="external text" href="http://example.com">Example in -{link} description</a></li>
-<li>{{echo|<a rel="nofollow" class="external text" href="http://example.com/-{foo">Breaks template, however</a>}}</li>
-</ul>
+<ul><li> <a rel="nofollow" class="external text" href="http://example.com/-{foo">Example in URL</a></li>
+<li> <a rel="nofollow" class="external text" href="http://example.com">Example in -{link} description</a></li>
+<li> {{echo|<a rel="nofollow" class="external text" href="http://example.com/-{foo">Breaks template, however</a>}}</li></ul>
 !! html/parsoid
 <ul>
-<li><a rel="mw:ExtLink" href="http://example.com/-{foo">Example in URL</a></li>
-<li><a rel="mw:ExtLink" href="http://example.com">Example in -{link} description</a></li>
-<li>{{echo|<a rel="mw:ExtLink" href="http://example.com/-{foo">Breaks template, however</a>}}</li>
+<li><a rel="mw:ExtLink" class="external text" href="http://example.com/-{foo">Example in URL</a></li>
+<li><a rel="mw:ExtLink" class="external text" href="http://example.com">Example in -{link} description</a></li>
+<li>{{echo|<a rel="mw:ExtLink" class="external text" href="http://example.com/-{foo">Breaks template, however</a>}}</li>
 </ul>
 !! end
 
@@ -12557,11 +12351,9 @@ Preprocessor precedence 14: broken language converter in comment
 * <!---{{foo}}--> ...extra dashes
 * {{echo|foo<!-- -{bar} -->bat}} ...should be ok
 !! html/php+tidy
-<ul>
-<li>...should be ok</li>
-<li>...extra dashes</li>
-<li>foobat ...should be ok</li>
-</ul>
+<ul><li>  ...should be ok</li>
+<li>  ...extra dashes</li>
+<li> foobat ...should be ok</li></ul>
 !! html/parsoid
 <ul>
 <li><!--{{foo}}--> ...should be ok</li>
@@ -12592,17 +12384,23 @@ __NOTOC__ __NOEDITSECTION__
 6
 !! html/php+tidy
 <h3><span id="1_foo.5Bbar_1"></span><span class="mw-headline" id="1_foo[bar_1">1 foo[bar 1</span></h3>
-<p>1</p>
+<p>1
+</p>
 <h3><span id="2_foo.5B.5Bbar_2"></span><span class="mw-headline" id="2_foo[[bar_2">2 foo[[bar 2</span></h3>
-<p>2</p>
+<p>2
+</p>
 <h3><span id="3_foo.7Bbar_3"></span><span class="mw-headline" id="3_foo{bar_3">3 foo{bar 3</span></h3>
-<p>3</p>
+<p>3
+</p>
 <h3><span id="4_foo.7B.7Bbar_4"></span><span class="mw-headline" id="4_foo{{bar_4">4 foo{{bar 4</span></h3>
-<p>4</p>
+<p>4
+</p>
 <h3><span id="5_foo.7B.7B.7Bbar_5"></span><span class="mw-headline" id="5_foo{{{bar_5">5 foo{{{bar 5</span></h3>
-<p>5</p>
+<p>5
+</p>
 <h3><span id="6_foo-.7Bbar_6"></span><span class="mw-headline" id="6_foo-{bar_6">6 foo-{bar 6</span></h3>
-<p>6</p>
+<p>6
+</p>
 !! html/parsoid
 <meta property="mw:PageProp/notoc"/> <meta property="mw:PageProp/noeditsection"/>
 <h3 id="1_foo[bar_1"><span id="1_foo.5Bbar_1" typeof="mw:FallbackId"></span>1 foo[bar 1</h3>
@@ -12775,9 +12573,7 @@ Templates: 2. Inside a block tag
 
 !! html+tidy
 <div>Foo</div>
-<blockquote>
-<p>Foo</p>
-</blockquote>
+<blockquote><p>Foo</p></blockquote>
 !!end
 
 !!test
@@ -12816,9 +12612,9 @@ Templates: P-wrapping: 1c. Templates on consecutive lines
 bar <div>baz</div>
 
 !! html+tidy
-<p>Foo</p>
-<p>bar</p>
-<div>baz</div>
+<p>Foo
+</p><p>
+bar </p><div>baz</div>
 !! end
 
 !!test
 <tr><td></td></tr></table>
 
 !! html+tidy
-<p>a</p>
-<table>
-<tr>
-<td></td>
-</tr>
-</table>
+
+a
+<table><tbody><tr><td></td></tr></tbody></table>
 !! end
 
 !!test
@@ -13266,14 +13059,18 @@ foo
 </div>
 <tr><td></td></tr></table>
 
-!! html+tidy
+!! html/php+tidy
 <div>
+<p>foo
+</p>
+</div><table>
+
+<tbody><tr><td></td></tr></tbody></table>
+!! html/parsoid
+<div about="#mwt3" typeof="mw:Transclusion" data-parsoid='{"stx":"html","fostered":true,"autoInsertedEnd":true,"firstWikitextNode":"TABLE","pi":[[{"k":"1"}],[{"k":"1"}]]}' data-mw='{"parts":["{|\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;div>"}},"i":0}},"\nfoo\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;/div>"}},"i":1}},"\n|}"]}'>
 <p>foo</p>
-</div>
-<table>
-<tr>
-<td></td>
-</tr>
+</div><table about="#mwt3">
+
 </table>
 !! end
 
 <div>b</div>
 <tr><td></td></tr></table>
 
-!! html+tidy
-<p>a</p>
-<div>b</div>
-<table>
-<tr>
-<td></td>
-</tr>
+!! html/php+tidy
+
+a
+<div>b</div><table>
+<tbody><tr><td></td></tr></tbody></table>
+!! html/parsoid
+<p about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"fostered":true,"autoInsertedEnd":true,"firstWikitextNode":"TABLE","pi":[[{"k":"1"}]]}' data-mw='{"parts":["{|\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a\n&lt;div>b&lt;/div>"}},"i":0}},"\n|}"]}'>a</p><div about="#mwt2">b</div><table about="#mwt2">
+
+
 </table>
 !! end
 
@@ -13366,7 +13165,7 @@ Templates: Wiki Tables: 7. Fosterable <ref>s should get fostered
 
 <references />
 !!html/parsoid
-<span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Transclusion  mw:Extension/ref" data-mw='{"parts":[{"template":{"target":{"wt":"PartialTable","href":"./Template:PartialTable"},"params":{},"i":0}},"&lt;ref>foo&lt;/ref>\n|}"]}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span><table about="#mwt2">
+<sup about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Transclusion  mw:Extension/ref" data-mw='{"parts":[{"template":{"target":{"wt":"PartialTable","href":"./Template:PartialTable"},"params":{},"i":0}},"&lt;ref>foo&lt;/ref>\n|}"]}'><a href="./Main_Page#cite_note-1"><span class="mw-reflink-text">[1]</span></a></sup><table about="#mwt2">
 <tbody>
 </tbody></table>
 
@@ -13445,78 +13244,10 @@ a<div>b{{echo|c</div>d}}e
 a<div>bc</div>de
 
 !! html+tidy
-<p>a</p>
-<div>bc</div>
-<p>de</p>
+<p>a</p><div>bc</div><p>de
+</p>
 !! end
 
-!!test
-Templates: Ugly templates: 1. Navbox template parses badly leading to table misnesting
-(Parsoid-centric)
-!! options
-parsoid
-!! wikitext
-{|
-|{{echo|foo</table>}}
-|bar
-|}
-!! html
-<table about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":["{|\n|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo</table>"}},"i":0}},"\n|bar\n|}"]}'>
-
-<tbody>
-<tr>
-<td>foo</td></tr></tbody></table><span about="#mwt1">
-</span><span about="#mwt1">|bar</span><span about="#mwt1">
-|}</span>
-!!end
-
-!!test
-Templates: Ugly templates: 2. Navbox template parses badly leading to table misnesting
-(Parsoid-centric)
-!! options
-parsoid
-!! wikitext
-<table>
-  <tr>
-    <td>
-    <table>
-      <tr>
-        <td>1. {{echo|foo </table>}}</td>
-        <td> bar </td>
-        <td>2. {{echo|baz </table>}}</td>
-      </tr>
-      <tr>
-        <td>abc</td>
-      </tr>
-    </table>
-    </td>
-  </tr>
-  <tr>
-    <td>xyz</td>
-  </tr>
-</table>
-!! html
-<table about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":["<table>\n  <tr>\n    <td>\n    <table>\n      <tr>\n        <td>1. ",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo </table>"}},"i":0}},"</td>\n        <td> bar </td>\n        <td>2. ",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"baz </table>"}},"i":1}},"</td>\n      </tr>\n      <tr>\n        <td>abc</td>\n      </tr>\n    </table>\n    </td>\n  </tr>\n  <tr>\n    <td>xyz</td>\n  </tr>\n</table>"]}'>
-  <tbody><tr>
-    <td>
-    <table>
-      <tbody><tr>
-        <td>1. foo </td></tr></tbody></table></td>
-        <td> bar </td>
-        <td>2. baz </td></tr></tbody></table><span about="#mwt2">
-      </span><span about="#mwt2">
-      </span><span about="#mwt2">
-        </span><span about="#mwt2">abc</span><span about="#mwt2">
-      </span><span about="#mwt2">
-    </span><span about="#mwt2">
-    </span><span about="#mwt2">
-  </span><span about="#mwt2">
-  </span><span about="#mwt2">
-    </span><span about="#mwt2">xyz</span><span about="#mwt2">
-  </span><span about="#mwt2">
-</span>
-!!end
-
 !! test
 Templates: Ugly templates: 3. newline-only template parameter
 !! wikitext
@@ -14449,6 +14180,8 @@ Titles in unlinked images (T23454)
 !! html/php
 <p><img alt="stuff" src="http://example.com/images/3/3a/Foobar.jpg" title="stuff" width="1941" height="220" />
 </p>
+!! html/parsoid
+<p><figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"stuff"}'><span><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></span></figure-inline></p>
 !! end
 
 !! test
@@ -14545,18 +14278,11 @@ thumbsize=220
 123<div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div>456
 
 !! html/php+tidy
-<p>123<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>456</p>
-<p>123</p>
-<div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
-<p>456 123</p>
-<div class="thumb tright">
-<div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>
-<div class="thumbcaption">
-<div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>
-</div>
-</div>
-</div>
-<p>456</p>
+<p>123<a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>456
+</p><p>
+123</p><div class="floatright"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div><p>456
+123</p><div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div></div></div></div><p>456
+</p>
 !! html/parsoid
 <p>123<figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline>456</p>
 <p>123</p><figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure><p>456</p>
@@ -14703,7 +14429,7 @@ Image with link parameter, wgNoFollowLinks set to false
 [[Image:foobar.jpg|link=http://example.com/]]
 !! config
 wgNoFollowLinks=false
-!! html
+!! html/php
 <p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! end
@@ -14714,7 +14440,7 @@ Image with link parameter, wgNoFollowDomainExceptions
 [[Image:foobar.jpg|link=http://example.com/]]
 !! config
 wgNoFollowDomainExceptions='example.com'
-!! html
+!! html/php
 <p><a href="http://example.com/"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! end
@@ -15195,7 +14921,7 @@ thumbsize=220
 <div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
 
 !! html/parsoid
-<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a></figcaption></figure>
 !! end
 
 !! test
@@ -15209,7 +14935,7 @@ parsoid=wt2html,wt2wt,html2html
 <div class="thumb tright"><div class="thumbinner" style="width:222px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Alteration" src="http://example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" width="220" height="25" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/330px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/440px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
 
 !! html/parsoid
-<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img alt="Alteration" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img alt="Alteration" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a></figcaption></figure>
 !! end
 
 !! test
@@ -15269,7 +14995,7 @@ T3887: A RFC with a thumbnail
 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This is <a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc12354">RFC 12354</a></div></div></div>
 
 !! html/parsoid
-<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>This is <a href="https://tools.ietf.org/html/rfc12354" rel="mw:ExtLink">RFC 12354</a></figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>This is <a href="https://tools.ietf.org/html/rfc12354" rel="mw:ExtLink" class="external text">RFC 12354</a></figcaption></figure>
 !! end
 
 !! test
@@ -15280,7 +15006,7 @@ T3887: A mailto link with a thumbnail
 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>Please <a rel="nofollow" class="external free" href="mailto:nobody@example.com">mailto:nobody@example.com</a></div></div></div>
 
 !! html/parsoid
-<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>Please <a rel="mw:ExtLink" href="mailto:nobody@example.com">mailto:nobody@example.com</a></figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>Please <a rel="mw:ExtLink" class="external free" href="mailto:nobody@example.com">mailto:nobody@example.com</a></figcaption></figure>
 !! end
 
 # Pending resolution to T2368
@@ -15463,7 +15189,7 @@ T5090: External links other than http: in image captions
 <div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" width="200" height="23" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/400px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>This caption has <a rel="nofollow" class="external text" href="irc://example.net">irc</a> and <a rel="nofollow" class="external text" href="https://example.com">Secure</a> ext links in it.</div></div></div>
 
 !! html/parsoid
-<figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>This caption has <a rel="mw:ExtLink" href="irc://example.net">irc</a> and <a rel="mw:ExtLink" href="https://example.com">Secure</a> ext links in it.</figcaption></figure>
+<figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="23" width="200"/></a><figcaption>This caption has <a rel="mw:ExtLink" class="external text" href="irc://example.net">irc</a> and <a rel="mw:ExtLink" class="external text" href="https://example.com">Secure</a> ext links in it.</figcaption></figure>
 !! end
 
 !! test
@@ -15799,7 +15525,7 @@ T93580: 1. Templated <ref> inside block images
 
 <references />
 !! html/parsoid
-<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"Caption with templated ref: {{echo|&lt;ref>foo&lt;/ref>}}"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>Caption with templated ref: <span about="#mwt5" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Transclusion  mw:Extension/ref" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;ref>foo&lt;/ref>"}},"i":0}}]}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></span></figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"Caption with templated ref: {{echo|&lt;ref>foo&lt;/ref>}}"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>Caption with templated ref: <sup about="#mwt5" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Transclusion  mw:Extension/ref" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;ref>foo&lt;/ref>"}},"i":0}}]}'><a href="./Main_Page#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></sup></figcaption></figure>
 
 <ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">foo</span></li></ol>
 !! end
@@ -15811,7 +15537,7 @@ T93580: 2. <ref> inside inline images
 
 <references />
 !! html/parsoid
-<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"Undisplayed caption in inline image with ref: &lt;ref>foo&lt;/ref>"}]}' data-mw='{"caption":"Undisplayed caption in inline image with ref: &lt;span about=\"#mwt2\" class=\"mw-ref\" id=\"cite_ref-1\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid=&#39;{\"dsr\":[64,78,5,6]}&#39; data-mw=&#39;{\"name\":\"ref\",\"body\":{\"id\":\"mw-reference-text-cite_note-1\"},\"attrs\":{}}&#39;>&lt;a href=\"./Main_Page#cite_note-1\" style=\"counter-reset: mw-Ref 1;\" data-parsoid=\"{}\">&lt;span class=\"mw-reflink-text\" data-parsoid=\"{}\">[1]&lt;/span>&lt;/a>&lt;/span>"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{"href":"File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
+<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"Undisplayed caption in inline image with ref: &lt;ref>foo&lt;/ref>"}]}' data-mw='{"caption":"Undisplayed caption in inline image with ref: &lt;sup about=\"#mwt2\" class=\"mw-ref\" id=\"cite_ref-1\" rel=\"dc:references\" typeof=\"mw:Extension/ref\" data-parsoid=&#39;{\"dsr\":[64,78,5,6]}&#39; data-mw=&#39;{\"name\":\"ref\",\"body\":{\"id\":\"mw-reference-text-cite_note-1\"},\"attrs\":{}}&#39;>&lt;a href=\"./Main_Page#cite_note-1\" style=\"counter-reset: mw-Ref 1;\" data-parsoid=\"{}\">&lt;span class=\"mw-reflink-text\" data-parsoid=\"{}\">[1]&lt;/span>&lt;/a>&lt;/sup>"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{"href":"File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
 
 <ol class="mw-references references" typeof="mw:Extension/references" about="#mwt4" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li></ol>
 !! end
@@ -15823,7 +15549,7 @@ T93580: 3. Templated <ref> inside inline images
 
 <references />
 !! html/parsoid
-<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"Undisplayed caption in inline image with ref: {{echo|&lt;ref>{{echo|foo}}&lt;/ref>}}"}]}' data-mw='{"caption":"Undisplayed caption in inline image with ref: &lt;span about=\"#mwt2\" class=\"mw-ref\" id=\"cite_ref-1\" rel=\"dc:references\" typeof=\"mw:Transclusion  mw:Extension/ref\" data-parsoid=&#39;{\"dsr\":[64,96,null,null],\"pi\":[[{\"k\":\"1\"}]]}&#39; data-mw=&#39;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"&amp;lt;ref>{{echo|foo}}&amp;lt;/ref>\"}},\"i\":0}}]}&#39;>&lt;a href=\"./Main_Page#cite_note-1\" style=\"counter-reset: mw-Ref 1;\" data-parsoid=\"{}\">&lt;span class=\"mw-reflink-text\" data-parsoid=\"{}\">[1]&lt;/span>&lt;/a>&lt;/span>"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{"href":"File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
+<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"caption","ak":"Undisplayed caption in inline image with ref: {{echo|&lt;ref>{{echo|foo}}&lt;/ref>}}"}]}' data-mw='{"caption":"Undisplayed caption in inline image with ref: &lt;sup about=\"#mwt2\" class=\"mw-ref\" id=\"cite_ref-1\" rel=\"dc:references\" typeof=\"mw:Transclusion  mw:Extension/ref\" data-parsoid=&#39;{\"dsr\":[64,96,null,null],\"pi\":[[{\"k\":\"1\"}]]}&#39; data-mw=&#39;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"&amp;lt;ref>{{echo|foo}}&amp;lt;/ref>\"}},\"i\":0}}]}&#39;>&lt;a href=\"./Main_Page#cite_note-1\" style=\"counter-reset: mw-Ref 1;\" data-parsoid=\"{}\">&lt;span class=\"mw-reflink-text\" data-parsoid=\"{}\">[1]&lt;/span>&lt;/a>&lt;/sup>"}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{"href":"File:Foobar.jpg"}}'><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
 
 <ol class="mw-references references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="./Main_Page#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">foo</span></li></ol>
 !! end
@@ -15964,7 +15690,7 @@ Render invalid page names as plain text (T53090)
 [[.]]
 [[..]]
 [[foo././bar]]
-[[foo<a rel="mw:ExtLink" href="http://example.com"></a>xyz]]</p>
+[[foo<a rel="mw:ExtLink" class="external autonumber" href="http://example.com"></a>xyz]]</p>
 
 <p>[[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"./../foo"}},"i":0}}]}'>./../foo</span>|bar]]
 [[<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo/."}},"i":0}}]}'>foo/.</span>|bar]]
@@ -16177,7 +15903,8 @@ Bar
 <p>Foo <link rel="mw:PageProp/Category" href="./Category:Baz"/> Bar</p>
 <p>Foo <link rel="mw:PageProp/Category" href="./Category:Baz"/> Bar</p>
 <p>Foo <link rel="mw:PageProp/Category" href="./Category:Baz"/> Bar</p>
-<p>Foo <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz"/> Bar <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Category:Baz]]"}},"i":0}}]}'/></p>
+<p>Foo <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz"/> Bar</p>
+<link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz"/> <link rel="mw:PageProp/Category" href="./Category:Baz" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Category:Baz]]"}},"i":0}}]}'/>
 <link rel="mw:PageProp/Category" href="./Category:Baz"/>
 !! end
 
@@ -16943,7 +16670,7 @@ http://example.com [[File:Foobar.jpg]]
 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> <a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a> <figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a> <figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
 !!end
 
 # Parsoid doesn't wt2wt this cleanly because it adds <nowiki>s.
@@ -17248,7 +16975,7 @@ http://example.com[[File:Foobar.jpg]]
 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></figure-inline></p>
 !!end
 
 !! test
@@ -17357,6 +17084,20 @@ parsoid=wt2html,html2html
 <div id="title=" data-parsoid='{"stx":"html"}'>HTML rocks</div>
 !! end
 
+# FIXME Parsoid doesn't actually match PHP here.
+# Probably we should use the synthetic <foo /> or <indicator>
+# extensions for this test, which are enabled when running parser tests.
+!! test
+Extension tag in attribute value
+!! wikitext
+<span title="<translate>123</translate>">ok</span>
+!! html/php+disabled
+<p>&lt;span title="&lt;translate&gt;123&lt;/translate&gt;"&gt;ok&lt;/span&gt;
+</p>
+!! html/parsoid
+<p><span title="123" about="#mwt4" typeof="mw:ExpandedAttrs" data-parsoid='{"stx":"html","a":{"title":"123"},"sa":{"title":"&lt;translate>123&lt;/translate>"}}' data-mw='{"attribs":[[{"txt":"title"},{"html":"&lt;translate typeof=\"mw:Extension/translate\" about=\"#mwt3\" data-parsoid=&apos;{\"dsr\":[13,39,2,2]}&apos; data-mw=&apos;{\"name\":\"translate\",\"attrs\":{},\"body\":{\"extsrc\":\"123\"}}&apos;>123&lt;/translate>"}]]}'>ok</span></p>
+!! end
+
 !! test
 table with multiple empty attribute values
 !! options
@@ -17464,11 +17205,9 @@ Remember AT&T?
 text with character entity: eacute
 !! wikitext
 I always thought &eacute; was a cute letter.
-!! html
+!! html+tidy
 <p>I always thought &#233; was a cute letter.
 </p>
-!! html+tidy
-<p>I always thought é was a cute letter.</p>
 !! end
 
 !! test
@@ -17546,12 +17285,11 @@ Ensure that HTML adoption agency algorithm is properly implemented.
 !! end
 
 # This was T43545 in the PHP parser.
-# Note that tidy doesn't handle this correctly.
 !! test
 Nesting of <kbd>
 !! wikitext
 <kbd>X<kbd>Y</kbd>Z</kbd>
-!! html
+!! html+tidy
 <p><kbd>X<kbd>Y</kbd>Z</kbd>
 </p>
 !! end
@@ -17560,22 +17298,20 @@ Nesting of <kbd>
 # Note that there are some other nestable tags (b, i, etc) which are
 # not covered; see T53081 for discussion.
 
-# Note that tidy doesn't handle this correctly.
 !! test
 Nesting of <em>
 !! wikitext
 <em>X<em>Y</em>Z</em>
-!! html
+!! html+tidy
 <p><em>X<em>Y</em>Z</em>
 </p>
 !! end
 
-# Note that tidy doesn't handle this correctly.
 !! test
 Nesting of <strong>
 !! wikitext
 <strong>X<strong>Y</strong>Z</strong>
-!! html
+!! html+tidy
 <p><strong>X<strong>Y</strong>Z</strong>
 </p>
 !! end
@@ -17585,10 +17321,10 @@ Nesting of <q>
 !! wikitext
 <q>X<q>Y</q>Z</q>
 !! html+tidy
-<p><q>X<q>Y</q>Z</q></p>
+<p><q>X<q>Y</q>Z</q>
+</p>
 !! end
 
-# Note that tidy doesn't handle this correctly.
 !! test
 Nesting of <ruby>
 !! wikitext
@@ -17598,7 +17334,6 @@ Nesting of <ruby>
 </p>
 !! end
 
-# Note that tidy doesn't handle this correctly.
 !! test
 Nesting of <bdo>
 !! wikitext
@@ -17643,6 +17378,7 @@ Media link with text
 
 # FIXME: this is still bad HTML tag nesting
 # FIXME: doBlockLevels won't wrap this in a paragraph because it contains a div
+# Parsoid & Remex fix the p-wrapping since they operate on the DOM.
 !! test
 Media link with nasty text
 !! wikitext
@@ -18256,11 +17992,12 @@ Expansion of multi-line templates in attribute values (T8255 sanity check 2)
 !! end
 
 !! test
-Tags which are hidden from Tidy cannot pass through the Sanitizer
+Tags which are hidden from tidiers cannot pass through the Sanitizer
 !! wikitext
 <mw:toc><script>alert();</script></mw:toc>
 !! html+tidy
-<p>&lt;mw:toc&gt;&lt;script&gt;alert();&lt;/script&gt;&lt;/mw:toc&gt;</p>
+<p>&lt;mw:toc&gt;&lt;script&gt;alert();&lt;/script&gt;&lt;/mw:toc&gt;
+</p>
 !! end
 
 ###
@@ -18565,14 +18302,14 @@ Nested template calls
 ### Sanitizer
 ###
 
-# HTML+Tidy strips out empty tags completely. Parsoid doesn't.
-# FIXME: Wikitext for this first test doesn't match its title.
+# Remex wraps empty tag runs with p-tags.
+# Parsoid strips them out during p-wrapping.
 !! test
 Sanitizer: Closing of open tags
 !! wikitext
 <s></s><table></table>
 !! html/php+tidy
-
+<p><s></s></p><table></table>
 !! html/parsoid
 <s></s><table></table>
 !! end
@@ -18593,6 +18330,8 @@ parsoid=wt2html
 !! wikitext
 </s>
 !! html/php+tidy
+<p class="mw-empty-elt">
+</p>
 !! html/parsoid
 !! end
 
@@ -18602,10 +18341,9 @@ Sanitizer: Closing of closed but not open table tags
 parsoid=wt2html
 !! wikitext
 Table not started</td></tr></table>
-!! html/php+tidy
-<p>Table not started</p>
-!! html/parsoid
-<p>Table not started</p>
+!! html+tidy
+<p>Table not started
+</p>
 !! end
 
 !! test
@@ -18763,7 +18501,7 @@ language=sr variant=sr-el
 !! html/parsoid
 <p><meta typeof="mw:LanguageVariant" data-mw-variant='{"add":true,"oneway":[{"f":"foAjrjvi","l":"sr-el","t":"\" onload=\"alert(1)\" data-foo=\""}]}'/></p>
 
-<p><span class="mw-default-size" typeof="mw:Image"><a href="./Датотека:Foobar.jpg"><img alt="foAjrjvi" resource="./Датотека:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"alt":"foAjrjvi","resource":"./Датотека:Foobar.jpg","height":"220","width":"1941"},"sa":{"alt":"alt=-{}-foAjrjvi-{}-","resource":"File:Foobar.jpg"}}'/></a></span></p>
+<p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./Датотека:Foobar.jpg"><img alt="foAjrjvi" resource="./Датотека:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"alt":"foAjrjvi","resource":"./Датотека:Foobar.jpg","height":"220","width":"1941"},"sa":{"alt":"alt=-{}-foAjrjvi-{}-","resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
 !! end
 
 !! test
@@ -18776,10 +18514,6 @@ Self closed html pairs (T7487)
 <div><font id="bug2"></font>In div text</div>
 !! end
 
-#
-#
-#
-
 !! test
 Punctuation: nbsp before exclamation
 !! wikitext
@@ -18837,9 +18571,9 @@ HTML bullet list, unclosed tags (T7497)
 </ul>
 !! html/php+tidy
 <ul>
-<li>One</li>
-<li>Two</li>
-</ul>
+<li>One
+</li><li>Two
+</li></ul>
 !! html/parsoid
 <ul data-parsoid='{"stx":"html"}'>
 <li data-parsoid='{"stx":"html","autoInsertedEnd":true}'>One</li>
@@ -18879,9 +18613,9 @@ HTML ordered list, unclosed tags (T7497)
 </ol>
 !! html/php+tidy
 <ol>
-<li>One</li>
-<li>Two</li>
-</ol>
+<li>One
+</li><li>Two
+</li></ol>
 !! html/parsoid
 <ol data-parsoid='{"stx":"html"}'>
 <li data-parsoid='{"stx":"html","autoInsertedEnd":true}'>One</li>
@@ -18936,30 +18670,15 @@ HTML nested bullet list, open tags (T7497)
 <li>Sub-two
 </ul>
 </ul>
-!! html/php+tidy
-<ul>
-<li>One</li>
-<li>Two:
-<ul>
-<li>Sub-one</li>
-<li>Sub-two</li>
-</ul>
-</li>
-</ul>
-!! html/parsoid
+!! html+tidy
 <ul>
 <li>One
-</li>
-<li>Two:
+</li><li>Two:
 <ul>
 <li>Sub-one
-</li>
-<li>Sub-two
-</li>
-</ul>
-</li>
-</ul>
-
+</li><li>Sub-two
+</li></ul>
+</li></ul>
 !! end
 
 !! test
@@ -19056,11 +18775,11 @@ mailto:inline@mail.tld
 </p><p><a rel="nofollow" class="external free" href="mailto:inline@mail.tld">mailto:inline@mail.tld</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://first/"></a> <a rel="mw:ExtLink" href="http://second"></a> <a rel="mw:ExtLink" href="ftp://ftp"></a></p>
-<p><a rel="mw:ExtLink" href="ftp://inlineftp">ftp://inlineftp</a></p>
-<p><a rel="mw:ExtLink" href="mailto:enclosed@mail.tld">With target</a></p>
-<p><a rel="mw:ExtLink" href="mailto:enclosed@mail.tld"></a></p>
-<p><a rel="mw:ExtLink" href="mailto:inline@mail.tld">mailto:inline@mail.tld</a></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="http://first/"></a> <a rel="mw:ExtLink" class="external autonumber" href="http://second"></a> <a rel="mw:ExtLink" class="external autonumber" href="ftp://ftp"></a></p>
+<p><a rel="mw:ExtLink" class="external free" href="ftp://inlineftp">ftp://inlineftp</a></p>
+<p><a rel="mw:ExtLink" class="external text" href="mailto:enclosed@mail.tld">With target</a></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="mailto:enclosed@mail.tld"></a></p>
+<p><a rel="mw:ExtLink" class="external free" href="mailto:inline@mail.tld">mailto:inline@mail.tld</a></p>
 !! end
 
 
@@ -19102,20 +18821,15 @@ http://<div id="toc" class="toc"><div class="toctitle" lang="en" dir="ltr"><h2>C
 
 
 !! html/php+tidy
-<h2><span class="mw-headline" id="onmouseover.3D">onmouseover=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: onmouseover=">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
-<p>http://</p>
-<div id="toc" class="toc">
-<div class="toctitle" lang="en" dir="ltr" xml:lang="en">
-<h2>Contents</h2>
-</div>
+<h2><span class="mw-headline" id="onmouseover.3D">onmouseover=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: onmouseover=">edit</a><span class="mw-editsection-bracket">]</span></span></h2><p>
+http://</p><div id="toc" class="toc"><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#onmouseover.3D"><span class="tocnumber">1</span> <span class="toctext">onmouseover=</span></a></li>
 </ul>
 </div>
-<p></p>
 !! html/parsoid
 <h2 id="onmouseover="><span id="onmouseover.3D" typeof="mw:FallbackId"></span> onmouseover= </h2>
-<p><a rel="mw:ExtLink" href="http://__TOC__" data-parsoid='{"stx":"url"}'>http://__TOC__</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://__TOC__" data-parsoid='{"stx":"url"}'>http://__TOC__</a></p>
 !! end
 
 !! test
@@ -19144,31 +18858,22 @@ parsoid=wt2html,html2html
 !! end
 
 # Known to produce bogus xml (extra </td>)
+# Don't add the html/php section since it generates broken HTML
 !! test
 Fuzz testing: Parser16
 !! wikitext
 {|
 !https://||||||
-!! html
+!! html+tidy
 <table>
-<tr>
+<tbody><tr>
 <th>https://</th>
 <th></th>
 <th></th>
 <th>
-</td>
-</tr>
-</table>
 
-!! html+tidy
-<table>
-<tr>
-<th>https://</th>
-<th></th>
-<th></th>
-<th></th>
-</tr>
-</table>
+</th></tr>
+</tbody></table>
 !! end
 
 !! test
@@ -19273,7 +18978,7 @@ http://example.com <nowiki>junk</nowiki>
 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> junk
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a> <span typeof="mw:Nowiki">junk</span></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a> <span typeof="mw:Nowiki">junk</span></p>
 !! end
 
 !!test
@@ -19284,7 +18989,7 @@ http://example.com<nowiki>junk</nowiki>
 <p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>junk
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a><span typeof="mw:Nowiki">junk</span></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a><span typeof="mw:Nowiki">junk</span></p>
 !! end
 
 !! test
@@ -19295,12 +19000,9 @@ http://example.com<pre>junk</pre>
 <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a><pre>junk</pre>
 
 !! html/php+tidy
-<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></p>
-<pre>
-junk
-</pre>
+<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></p><pre>junk</pre>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a></p><pre typeof="mw:Extension/pre" about="#mwt2" data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"junk"}}'>junk</pre>
+<p><a rel="mw:ExtLink" class="external free" href="http://example.com" data-parsoid='{"stx":"url"}'>http://example.com</a></p><pre typeof="mw:Extension/pre" about="#mwt2" data-mw='{"name":"pre","attrs":{},"body":{"extsrc":"junk"}}'>junk</pre>
 !! end
 
 !! test
@@ -20359,7 +20061,7 @@ Handling of &#x0A; in URLs
 <ul><li><ul><li> <a rel="nofollow" class="external free" href="irc://%0Aa">irc://%0Aa</a></li></ul></li></ul>
 
 !! html/parsoid
-<ul><li><ul><li> <a rel="mw:ExtLink" href="irc://%0Aa" data-parsoid='{"stx":"url","a":{"href":"irc://%0Aa"},"sa":{"href":"irc://&amp;#x0A;a"}}'>irc://%0Aa</a></li></ul></li></ul>
+<ul><li><ul><li> <a rel="mw:ExtLink" class="external free" href="irc://%0Aa" data-parsoid='{"stx":"url","a":{"href":"irc://%0Aa"},"sa":{"href":"irc://&amp;#x0A;a"}}'>irc://%0Aa</a></li></ul></li></ul>
 !! end
 
 !! test
@@ -20370,7 +20072,7 @@ Handling of %0A in URLs
 <ul><li><ul><li> <a rel="nofollow" class="external free" href="irc://%0Aa">irc://%0Aa</a></li></ul></li></ul>
 
 !! html/parsoid
-<ul><li><ul><li> <a rel="mw:ExtLink" href="irc://%0Aa">irc://%0Aa</a></li></ul></li></ul>
+<ul><li><ul><li> <a rel="mw:ExtLink" class="external free" href="irc://%0Aa">irc://%0Aa</a></li></ul></li></ul>
 !! end
 
 # The PHP parser strips the empty tags out for giggles; parsoid doesn't.
@@ -20573,7 +20275,7 @@ image4    |300px| centre
 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Image2.gif"><img resource="./File:Image2.gif" src="./Special:FilePath/Image2.gif" height="120" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Image3"><img resource="./File:Image3" src="./Special:FilePath/Image3" height="120" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Image4"><img resource="./File:Image4" src="./Special:FilePath/Image4" height="300" width="300"/></a></figure-inline></div><div class="gallerytext"></div></li>
-<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Image5.svg"><img resource="./File:Image5.svg" src="./Special:FilePath/Image5.svg" height="120" width="120"/></a></figure-inline></div><div class="gallerytext"> <a rel="mw:ExtLink" href="http://///////">http://///////</a></div></li>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:Image5.svg"><img resource="./File:Image5.svg" src="./Special:FilePath/Image5.svg" height="120" width="120"/></a></figure-inline></div><div class="gallerytext"> <a rel="mw:ExtLink" class="external free" href="http://///////">http://///////</a></div></li>
 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Error mw:Image"><a href="./File:*_image6"><img resource="./File:*_image6" src="./Special:FilePath/*_image6" height="120" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
 </ul>
 !! end
@@ -20975,7 +20677,7 @@ File:Foobar.jpg|alt=galleryalt|link=Wikilink
 </ul>
 
 !! html/parsoid
-<ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-parsoid='{"dsr":[0,70,2,2]}' data-mw='{"name":"gallery","attrs":{},"body":{}}'>
+<ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
 <li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="./Wikilink"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext"></div></li>
 </ul>
 !! end
@@ -21009,11 +20711,11 @@ File:Foobar.jpg|alt=galleryalt|link=http://www.example.org
 Gallery override link with absolute external link with LanguageConverter
 !! options
 language=zh
-!! input
+!! wikitext
 <gallery>
 File:foobar.jpg|caption|alt=galleryalt|link=http://www.example.org
 </gallery>
-!! result
+!! html/php
 <ul class="gallery mw-gallery-traditional">
                <li class="gallerybox" style="width: 155px"><div style="width: 155px">
                        <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="http://www.example.org"><img alt="galleryalt" src="http://example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" width="120" height="14" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/240px-Foobar.jpg 2x" /></a></div></div>
@@ -21024,6 +20726,10 @@ File:foobar.jpg|caption|alt=galleryalt|link=http://www.example.org
                </div></li>
 </ul>
 
+!! html/parsoid
+<ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{"extsrc":"\nFile:foobar.jpg|caption|alt=galleryalt|link=http://www.example.org\n"}}'>
+<li class="gallerybox" style="width: 155px;"><div class="thumb" style="width: 150px; height: 150px;"><figure-inline typeof="mw:Image"><a href="http://www.example.org"><img alt="galleryalt" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="14" width="120"/></a></figure-inline></div><div class="gallerytext">caption</div></li>
+</ul>
 !! end
 
 !! test
@@ -21156,8 +20862,6 @@ parsoid=wt2html,wt2wt,html2html
 !! html/php
 <p>&#x4a;&#x61;&#x76;&#x61;&#x53;&#x63;&#114;&#x69;&#112;&#x74;
 </p>
-!! html/php+tidy
-<p>JavaScript</p>
 !! html/parsoid
 <p><span typeof="mw:Entity">J</span><span typeof="mw:Entity">a</span><span typeof="mw:Entity">v</span><span typeof="mw:Entity">a</span><span typeof="mw:Entity">S</span><span typeof="mw:Entity">c</span><span typeof="mw:Entity">r</span><span typeof="mw:Entity">i</span><span typeof="mw:Entity">p</span><span typeof="mw:Entity">t</span></p>
 !! end
@@ -21166,11 +20870,9 @@ parsoid=wt2html,wt2wt,html2html
 HTML Hex character encoding bogus encoding (T28437 regression check)
 !! wikitext
 &#xsee;&#XSEE;
-!! html/php
+!! html
 <p>&amp;#xsee;&amp;#XSEE;
 </p>
-!! html/parsoid
-<p>&amp;#xsee;&amp;#XSEE;</p>
 !! end
 
 !! test
@@ -21182,8 +20884,6 @@ parsoid=wt2html,wt2wt,html2html
 !! html/php
 <p>&#xee;&#xee;
 </p>
-!! html/php+tidy
-<p>îî</p>
 !! html/parsoid
 <p><span typeof="mw:Entity">î</span><span typeof="mw:Entity">î</span></p>
 !! end
@@ -21202,22 +20902,20 @@ Illegal character references (T106578)
 ; Surrogate: &#xD83D;&#xDCA9;
 ; This is an okay astral character: &#x1F4A9;
 !! html+tidy
-<dl>
-<dt>Null</dt>
-<dd>&amp;#00;</dd>
-<dt>FF</dt>
-<dd>&amp;#xC;</dd>
-<dt>CR</dt>
-<dd>&amp;#xD;</dd>
-<dt>Control (low)</dt>
-<dd>&amp;#8;</dd>
-<dt>Control (high)</dt>
-<dd>&amp;#x7F; &amp;#x9F;</dd>
-<dt>Surrogate</dt>
-<dd>&amp;#xD83D;&amp;#xDCA9;</dd>
-<dt>This is an okay astral character</dt>
-<dd>💩</dd>
-</dl>
+<dl><dt> Null</dt>
+<dd> &amp;#00;</dd>
+<dt> FF</dt>
+<dd> &amp;#xC;</dd>
+<dt> CR</dt>
+<dd> &amp;#xD;</dd>
+<dt> Control (low)</dt>
+<dd> &amp;#8;</dd>
+<dt> Control (high)</dt>
+<dd> &amp;#x7F; &amp;#x9F;</dd>
+<dt> Surrogate</dt>
+<dd> &amp;#xD83D;&amp;#xDCA9;</dd>
+<dt> This is an okay astral character</dt>
+<dd> &#x1f4a9;</dd></dl>
 !! end
 
 !! test
@@ -21234,11 +20932,9 @@ __FORCETOC__
 ISBN code coverage
 !! wikitext
 ISBN  978-0-1234-56&#x20;789
-!! html
+!! html/php
 <p><a href="/wiki/Special:BookSources/9780123456" class="internal mw-magiclink-isbn">ISBN 978-0-1234-56</a>&#x20;789
 </p>
-!! html+tidy
-<p><a href="/wiki/Special:BookSources/9780123456" class="internal mw-magiclink-isbn">ISBN 978-0-1234-56</a> 789</p>
 !! html/parsoid
 <p><a href="./Special:BookSources/9780123456" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978-0-1234-56</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#x20;","srcContent":" "}'> </span>789</p>
 !! end
@@ -21309,7 +21005,7 @@ T24905: <abbr> followed by ISBN followed by </a>
 <p><abbr>(fr)</abbr> <a href="/wiki/Special:BookSources/2753300917" class="internal mw-magiclink-isbn">ISBN 2753300917</a> <a rel="nofollow" class="external text" href="http://www.example.com">example.com</a>
 </p>
 !! html/parsoid
-<p><abbr data-parsoid='{"stx":"html"}'>(fr)</abbr> <a href="./Special:BookSources/2753300917" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 2753300917</a> <a rel="mw:ExtLink" href="http://www.example.com">example.com</a></p>
+<p><abbr data-parsoid='{"stx":"html"}'>(fr)</abbr> <a href="./Special:BookSources/2753300917" rel="mw:WikiLink" data-parsoid='{"stx":"magiclink"}'>ISBN 2753300917</a> <a rel="mw:ExtLink" class="external text" href="http://www.example.com">example.com</a></p>
 !! end
 
 !! test
@@ -21334,66 +21030,78 @@ RFC [[RFC 1234]]
 RFC code coverage
 !! wikitext
 RFC   983&#x20;987
-!! html
+!! html/php
 <p><a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc983">RFC 983</a>&#x20;987
 </p>
-!! html+tidy
-<p><a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc983">RFC 983</a> 987</p>
+!! html/parsoid
+<p><a href="https://tools.ietf.org/html/rfc983" rel="mw:ExtLink" class="external text" data-parsoid='{"stx":"magiclink"}'>RFC   983</a><span typeof="mw:Entity" data-parsoid='{"src":"&amp;#x20;","srcContent":" "}'> </span>987</p>
 !! end
 
 !! test
 Centre-aligned image
 !! wikitext
 [[Image:foobar.jpg|centre]]
-!! html
+!! html/php
 <div class="center"><div class="floatnone"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div></div>
 
-!!end
+!! html/parsoid
+<figure class="mw-default-size mw-halign-center" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"center","ak":"centre"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure>
+!! end
 
 !! test
 None-aligned image
 !! wikitext
 [[Image:foobar.jpg|none]]
-!! html
+!! html/php
 <div class="floatnone"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a></div>
 
-!!end
+!! html/parsoid
+<figure class="mw-default-size mw-halign-none" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure>
+!! end
 
 !! test
 Width + Height sized image (using px) (height is ignored)
 !! wikitext
 [[Image:foobar.jpg|640x480px]]
-!! html
+!! html/php
 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
 </p>
-!!end
+!! html/parsoid
+<p><figure-inline typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"640x480px"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="73" width="640" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"73","width":"640"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure-inline></p>
+!! end
 
 !! test
 Width-sized image (using px, no following whitespace)
 !! wikitext
 [[Image:foobar.jpg|640px]]
-!! html
+!! html/php
 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
 </p>
-!!end
+!! html/parsoid
+<p><figure-inline typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"640px"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="73" width="640" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"73","width":"640"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure-inline></p>
+!! end
 
 !! test
 Width-sized image (using px, with following whitespace - test regression from r39467)
 !! wikitext
 [[Image:foobar.jpg|640px ]]
-!! html
+!! html/php
 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
 </p>
+!! html/parsoid
+<p><figure-inline typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":"640px "}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="73" width="640" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"73","width":"640"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure-inline></p>
 !!end
 
 !! test
 Width-sized image (using px, with preceding whitespace - test regression from r39467)
 !! wikitext
 [[Image:foobar.jpg| 640px]]
-!! html
+!! html/php
 <p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" width="640" height="73" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/960px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/1280px-Foobar.jpg 2x" /></a>
 </p>
-!!end
+!! html/parsoid
+<p><figure-inline typeof="mw:Image" data-parsoid='{"optList":[{"ck":"width","ak":" 640px"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="73" width="640" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"73","width":"640"},"sa":{"resource":"Image:foobar.jpg"}}'/></a></figure-inline></p>
+!! end
 
 !! test
 Image with page parameter
@@ -21439,7 +21147,7 @@ Images with the "|" character in the comment
 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>An <a rel="nofollow" class="external text" href="http://test/?param1=%7Cleft%7C&amp;param2=%7Cx">external</a> URL</div></div></div>
 
 !! html/parsoid
-<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>An <a rel="mw:ExtLink" href="http://test/?param1=%7Cleft%7C&amp;param2=%7Cx" data-parsoid='{"a":{"href":"http://test/?param1=%7Cleft%7C&amp;param2=%7Cx"},"sa":{"href":"http://test/?param1=|left|&amp;param2=|x"}}'>external</a> URL</figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption>An <a rel="mw:ExtLink" class="external text" href="http://test/?param1=%7Cleft%7C&amp;param2=%7Cx" data-parsoid='{"a":{"href":"http://test/?param1=%7Cleft%7C&amp;param2=%7Cx"},"sa":{"href":"http://test/?param1=|left|&amp;param2=|x"}}'>external</a> URL</figcaption></figure>
 !! end
 
 !! test
@@ -22588,7 +22296,7 @@ Nested raw: -{R|nested {{echo|hi}} templates}-
 Strings evaluating false shouldn't be ignored by Language converter (T51072)
 !! options
 language=zh variant=zh-cn
-!! input
+!! wikitext
 -{zh-cn:0;zh-sg:1;zh-tw:2;zh-hk:3}-
 !! html/php
 <p>0
@@ -22601,7 +22309,7 @@ language=zh variant=zh-cn
 Conversion rules from [numeric-only string] to [something else] (T48634)
 !! options
 language=zh variant=zh-cn
-!! input
+!! wikitext
 -{H|0=>zh-cn:B}--{H|0=>zh-cn:C;0=>zh-cn:D}--{H|0=>zh-hans:A}-012345-{A|zh-tw:0;zh-cn:E;}-012345
 !! html/php
 <p>D12345EE12345
@@ -22614,7 +22322,7 @@ language=zh variant=zh-cn
 Two-way converter rule entries with an empty value should be ignored (T53551)
 !! options
 language=zh variant=zh-cn
-!! input
+!! wikitext
 -{H|zh-cn:foo;zh-tw:;}-foobar
 !! html/php
 <p>foobar
@@ -22627,7 +22335,7 @@ language=zh variant=zh-cn
 One-way converter rule entries with an empty "from" string should be ignored (T53551)
 !! options
 language=zh variant=zh-cn
-!! input
+!! wikitext
 -{H|=>zh-cn:foo;}-foobar
 !! html/php
 <p>foobar
@@ -22640,7 +22348,7 @@ language=zh variant=zh-cn
 Empty converter rule entries shouldn't be inserted into the conversion table (T53551)
 !! options
 language=zh variant=zh-cn
-!! input
+!! wikitext
 -{H|}-foobar
 !! html/php
 <p>foobar
@@ -22702,10 +22410,10 @@ language=zh variant=zh-cn
 
 <span>a-{H|0=>zh-cn:x<span>y;0=>zh-tw:b<div>c}-d
 !! html/php+tidy
-<p><span>ab</span></p>
-<div><span>cd <span>ab</span></span>
-<div><span>cd <span>ad</span></span></div>
-</div>
+<span>ab<div>cd
+<span>ab<div>cd
+<span>ad
+</span></div></span></div></span>
 !! html/parsoid
 <p><span data-parsoid='{"stx":"html","autoInsertedEnd":true}'>a</span></p><div typeof="mw:LanguageVariant" data-mw-variant='{"disabled":{"t":"b&lt;div data-parsoid=&#39;{\"stx\":\"html\",\"autoInsertedEnd\":true,\"dsr\":[10,16,5,0]}&#39;>c&lt;/div>"}}'></div><p>d</p>
 
@@ -22824,20 +22532,20 @@ gopher://www.google.com
 !! html/php
 <p><a rel="nofollow" class="external free" href="http://www.google.com">http://www.google.com</a>
 <a rel="nofollow" class="external free" href="gopher://www.google.com">gopher://www.google.com</a>
-<a rel="nofollow" class="external free" href="http://www.google.com">http://www.google.com</a>
-<a rel="nofollow" class="external free" href="gopher://www.google.com">gopher://www.google.com</a>
+<a rel="nofollow" class="external text" href="http://www.google.com">http://www.google.com</a>
+<a rel="nofollow" class="external text" href="gopher://www.google.com">gopher://www.google.com</a>
 <a rel="nofollow" class="external text" href="https://www.google.com">irc://www.google.com</a>
 <a rel="nofollow" class="external text" href="ftp://www.google.com">www.гоогле.цом/фтп://дир</a>
 <a rel="nofollow" class="external text" href="//www.google.com">www.гоогле.цом</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://www.google.com">http://www.google.com</a>
-<a rel="mw:ExtLink" href="gopher://www.google.com">gopher://www.google.com</a>
-<a rel="mw:ExtLink" href="http://www.google.com">http://www.google.com</a>
-<a rel="mw:ExtLink" href="gopher://www.google.com">gopher://www.google.com</a>
-<a rel="mw:ExtLink" href="https://www.google.com">irc://www.google.com</a>
-<a rel="mw:ExtLink" href="ftp://www.google.com">www.google.com/ftp://dir</a>
-<a rel="mw:ExtLink" href="//www.google.com">www.google.com</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="http://www.google.com">http://www.google.com</a>
+<a rel="mw:ExtLink" class="external free" href="gopher://www.google.com">gopher://www.google.com</a>
+<a rel="mw:ExtLink" class="external free" href="http://www.google.com">http://www.google.com</a>
+<a rel="mw:ExtLink" class="external free" href="gopher://www.google.com">gopher://www.google.com</a>
+<a rel="mw:ExtLink" class="external text" href="https://www.google.com">irc://www.google.com</a>
+<a rel="mw:ExtLink" class="external text" href="ftp://www.google.com">www.google.com/ftp://dir</a>
+<a rel="mw:ExtLink" class="external text" href="//www.google.com">www.google.com</a></p>
 !! end
 
 !! test
@@ -22991,10 +22699,9 @@ language=zh variant=zh-cn
 ;<b>foo:bar
 ;-{zh-cn:AAA
 !! html/php+tidy
-<dl>
-<dt><b>foo:bar</b></dt>
-<dt><b>-{zh-cn:AAA</b></dt>
-</dl>
+<dl><dt><b>foo:bar</b></dt><b>
+<dt>-{zh-cn:AAA</dt></b></dl><p><b>
+</b></p>
 !! html/parsoid
 <dl><dt data-parsoid='{"dsr":[0,11,1,0]}'><b data-parsoid='{"stx":"html","autoInsertedEnd":true}'>foo:bar</b></dt><b data-parsoid='{"stx":"html","autoInsertedEnd":true,"autoInsertedStart":true}'>
 <dt data-parsoid='{"dsr":[12,20,1,0]}'>-{zh-cn</dt>
@@ -23171,14 +22878,8 @@ T2529: Uncovered bullet
 
 !! end
 
-# Plain MediaWiki does not remove empty lists, but tidy actually does.
-# Templates in Wikipedia rely on this behavior, as tidy has always been
-# enabled there. These tests are normally run *without* tidy, so specify the
-# full output here. 
-# To test realistic parsing behavior, apply a tidy-like transformation to both
-# the expected output and your parser's output.
 !! test
-T2529: Uncovered bullet leaving empty list, normally removed by tidy
+T2529: Uncovered bullet in a deeply nested list
 !! wikitext
 ******* Foo {{bullet}}
 !! html
@@ -23369,14 +23070,17 @@ Line two
 
 !! end
 
+# doBlockLevels screws up this output and Remex cleans up as much as it can.
+# Parsoid seems to do a better job here since its p-wrapper is probably smarter.
 !! test
 Nesting tags, paragraphs on lines which begin with <div>
 !! wikitext
 <div></div><strong>A
 B</strong>
 !! html/php+tidy
-<p><strong>A</strong></p>
-<p><strong>B</strong></p>
+<div></div><p><strong>A
+</strong></p><strong></strong><p><strong>B</strong>
+</p>
 !! html/parsoid
 <div></div>
 <p><strong>A
@@ -23396,9 +23100,8 @@ Line two</blockquote>
 Line two</blockquote>
 
 !! html+tidy
-<blockquote>
-<p>Line one Line two</p>
-</blockquote>
+<blockquote><p>Line one
+Line two</p></blockquote>
 !! end
 
 !! test
@@ -23416,8 +23119,9 @@ Line two</blockquote>
 
 !! html+tidy
 <blockquote>
-<p>Line one</p>
-Line two</blockquote>
+<p>Line one
+</p><p>
+Line two</p></blockquote>
 !! end
 
 !! test
@@ -23434,9 +23138,9 @@ Line two
 </blockquote>
 
 !! html+tidy
-<blockquote>
-<p>Line one</p>
-<p>Line two</p>
+<blockquote><p>Line one
+</p><p>Line two
+</p>
 </blockquote>
 !! end
 
@@ -23455,13 +23159,9 @@ Line two
 </p>
 </blockquote>
 
-!! html+tidy
-<blockquote>
-<p>Line one</p>
-<p>Line two</p>
-</blockquote>
 !! end
 
+# FIXME: Why does/should the blockquote+div combo suppress p-wrapping here?
 !! test
 Paragraphs inside blockquotes/divs (no extra line breaks)
 !! wikitext
@@ -23540,9 +23240,11 @@ wgLinkHolderBatchSize=0
 Free external link invading image caption
 !! wikitext
 [[Image:Foobar.jpg|thumb|http://x|hello]]
-!! html
+!! html/php
 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>hello</div></div></div>
 
+!! html/parsoid
+<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"bogus","ak":"http://x"},{"ck":"caption","ak":"hello"}]}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"Image:Foobar.jpg"}}'/></a><figcaption>hello</figcaption></figure>
 !! end
 
 !! test
@@ -23555,25 +23257,29 @@ language=fa
 <p><a rel="nofollow" class="external autonumber" href="http://en.wikipedia.org/">[۱]</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://en.wikipedia.org/"></a></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="http://en.wikipedia.org/"></a></p>
 !! end
 
 !! test
 Multibyte character in padleft
 !! wikitext
 {{padleft:-Hello|7|Æ}}
-!! html
+!! html/php
 <p>Æ-Hello
 </p>
+!! html/parsoid
+<p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padleft:-Hello","function":"padleft"},"params":{"1":{"wt":"7"},"2":{"wt":"Æ"}},"i":0}}]}'>Æ-Hello</p>
 !! end
 
 !! test
 Multibyte character in padright
 !! wikitext
 {{padright:Hello-|7|Æ}}
-!! html
+!! html/php
 <p>Hello-Æ
 </p>
+!! html/parsoid
+<p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padright:Hello-","function":"padright"},"params":{"1":{"wt":"7"},"2":{"wt":"Æ"}},"i":0}}]}'>Hello-Æ</p>
 !! end
 
 !!test
@@ -24369,21 +24075,13 @@ __TOC__
 <h2><span class="mw-headline" id="Quote"><blockquote>Quote</blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: Quote">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 
 !! html/php+tidy
-<p></p>
-<div id="toc" class="toc">
-<div class="toctitle" lang="en" dir="ltr" xml:lang="en">
-<h2>Contents</h2>
-</div>
+<div id="toc" class="toc"><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Quote"><span class="tocnumber">1</span> <span class="toctext">Quote</span></a></li>
 </ul>
 </div>
-<p></p>
-<h2><span class="mw-headline" id="Quote"></span></h2>
-<blockquote>
-<p><span class="mw-headline" id="Quote">Quote</span></p>
-</blockquote>
-<p><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: Quote">edit</a><span class="mw-editsection-bracket">]</span></span></p>
+
+<h2><span class="mw-headline" id="Quote"><blockquote><p>Quote</p></blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: Quote">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 !! html/parsoid
 <meta property="mw:PageProp/toc" data-parsoid='{}'/>
 <h2 id="Quote" data-parsoid='{}'> <blockquote>Quote</blockquote> </h2>
@@ -24437,23 +24135,15 @@ __TOC__
 <h2><span class="mw-headline" id="Foo_Bar_2"><i>Foo</i> <blockquote>Bar</blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 
 !! html/php+tidy
-<p></p>
-<div id="toc" class="toc">
-<div class="toctitle" lang="en" dir="ltr" xml:lang="en">
-<h2>Contents</h2>
-</div>
+<div id="toc" class="toc"><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Foo_Bar"><span class="tocnumber">1</span> <span class="toctext"><i>Foo</i> <b>Bar</b></span></a></li>
 <li class="toclevel-1 tocsection-2"><a href="#Foo_Bar_2"><span class="tocnumber">2</span> <span class="toctext"><i>Foo</i> Bar</span></a></li>
 </ul>
 </div>
-<p></p>
+
 <h2><span class="mw-headline" id="Foo_Bar"><i>Foo</i> <b>Bar</b></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
-<h2><span class="mw-headline" id="Foo_Bar_2"><i>Foo</i></span></h2>
-<blockquote>
-<p><span class="mw-headline" id="Foo_Bar_2">Bar</span></p>
-</blockquote>
-<p><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></p>
+<h2><span class="mw-headline" id="Foo_Bar_2"><i>Foo</i> <blockquote><p>Bar</p></blockquote></span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=2" title="Edit section: Foo Bar">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 !! html/parsoid
 <meta property="mw:PageProp/toc" data-parsoid='{}'/>
 <h2 id="Foo_Bar" data-parsoid='{}'> <i data-parsoid='{"stx":"html"}'>Foo</i> <b data-parsoid='{"stx":"html"}'>Bar</b> </h2>
@@ -24567,9 +24257,6 @@ __TOC__
 <h2 id="test_test_test" data-parsoid='{}'> <s>test</s> test <strike>test</strike> </h2>
 !! end
 
-# Note that the html output does not have the <p></p>, but the
-# html+tidy output *does*.  This is because the empty <p></p> is
-# removed by the sanitizer, but only when tidy is *not* enabled (!).
 !! test
 Empty <p> tag in TOC, removed by Sanitizer (T92892)
 !! wikitext
@@ -24584,18 +24271,6 @@ __TOC__
 
 <h2><span class="mw-headline" id="x">x</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: x">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 
-!! html/php+tidy
-<p></p>
-<div id="toc" class="toc">
-<div class="toctitle" lang="en" dir="ltr" xml:lang="en">
-<h2>Contents</h2>
-</div>
-<ul>
-<li class="toclevel-1 tocsection-1"><a href="#x"><span class="tocnumber">1</span> <span class="toctext">x</span></a></li>
-</ul>
-</div>
-<p></p>
-<h2><span class="mw-headline" id="x">x</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: x">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 !! html/parsoid
 <meta property="mw:PageProp/toc" data-parsoid='{}'/>
 <h2 id="x" data-parsoid='{}'> x </h2>
@@ -24774,15 +24449,46 @@ Language parser function
 </p>
 !! end
 
+!!test
+Padleft and padright (default 0-padding)
+!! wikitext
+{{padleft:xyz|5}}
+{{padright:xyz|5}}
+!! html/php
+<p>00xyz
+xyz00
+</p>
+!! html/parsoid
+<p><span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padleft:xyz","function":"padleft"},"params":{"1":{"wt":"5"}},"i":0}}]}'>00xyz</span>
+<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padright:xyz","function":"padright"},"params":{"1":{"wt":"5"}},"i":0}}]}'>xyz00</span></p>
+!! end
+
+!!test
+Padleft and padright (partial fill)
+!! wikitext
+{{padleft:xyz|6|ab}}
+{{padright:xyz|6|ab}}
+!! html/php
+<p>abaxyz
+xyzaba
+</p>
+!! html/parsoid
+<p><span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padleft:xyz","function":"padleft"},"params":{"1":{"wt":"6"},"2":{"wt":"ab"}},"i":0}}]}'>abaxyz</span>
+<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padright:xyz","function":"padright"},"params":{"1":{"wt":"6"},"2":{"wt":"ab"}},"i":0}}]}'>xyzaba</span></p>
+!! end
+
 !!test
 Padleft and padright as substr
 !! wikitext
 {{padleft:|3|abcde}}
 {{padright:|3|abcde}}
-!! html
+!! html/php
 <p>abc
 abc
 </p>
+!! html/parsoid
+<p><span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padleft:","function":"padleft"},"params":{"1":{"wt":"3"},"2":{"wt":"abcde"}},"i":0}}]}'>abc</span>
+<span typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"padright:","function":"padright"},"params":{"1":{"wt":"3"},"2":{"wt":"abcde"}},"i":0}}]}'>abc</span></p>
 !! end
 
 !!test
@@ -24806,7 +24512,7 @@ T36939 - Case insensitive link parsing ([HttP://])
 <p><a rel="nofollow" class="external autonumber" href="HttP://MediaWiki.Org/">[1]</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="HttP://MediaWiki.Org/"></a></p>
+<p><a rel="mw:ExtLink" class="external autonumber" href="HttP://MediaWiki.Org/"></a></p>
 !! end
 
 !!test
@@ -24826,7 +24532,7 @@ HttP://MediaWiki.Org/
 <p><a rel="nofollow" class="external free" href="HttP://MediaWiki.Org/">HttP://MediaWiki.Org/</a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="HttP://MediaWiki.Org/">HttP://MediaWiki.Org/</a></p>
+<p><a rel="mw:ExtLink" class="external free" href="HttP://MediaWiki.Org/">HttP://MediaWiki.Org/</a></p>
 !! end
 
 !!test
 
 !! end
 
+!! test
+Headings: Used as horizontal rule
+!! config
+wgFragmentMode=[ 'html5', 'legacy' ]
+!! options
+parsoid=wt2html
+!! wikitext
+===============
+!! html/php
+<h6><span id=".3D.3D.3D"></span><span class="mw-headline" id="===">===</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: ===">edit</a><span class="mw-editsection-bracket">]</span></span></h6>
+
+!! html/parsoid
+<h6 id="==="><span id=".3D.3D.3D" typeof="mw:FallbackId"></span>===</h6>
+!! end
+
 #### --------------- Lists ---------------
 #### 0. Outside nests (*foo, etc.)
 #### 1. Nested inside html <ul><li>*foo</li></ul>
@@ -25669,15 +25390,12 @@ parsoid=html2wt
 |}
 !! html/php+tidy
 <table>
+<tbody><tr>
+<td>foo|bar
+</td></tr>
 <tr>
-<td>foo|bar</td>
-</tr>
-<tr>
-<td>x
-<div>a|b</div>
-</td>
-</tr>
-</table>
+<td>x<div>a|b</div>
+</td></tr></tbody></table>
 !! end
 
 !! test
@@ -26786,8 +26504,8 @@ parsoid=wt2html,html2html
 !! wikitext
 <div title="Hello world />Foo
 !! html/php+tidy
-<div title="Hello world"></div>
-<p>Foo</p>
+<div title="Hello world"></div><p>Foo
+</p>
 !! html/parsoid
 <div title="Hello world " data-parsoid='{"stx":"html","selfClose":true}'></div><p>Foo</p>
 !! end
@@ -26929,11 +26647,9 @@ RT-ed inter-element separators should be valid separators
 </tbody></table>
 !!end
 
-# Parsoid-only since PHP parser relies on Tidy for correct output
+# Parsoid-only test of a DOM pass
 !!test
 Trailing newlines in a deep dom-subtree that ends a wikitext line should be migrated out
-!!options
-parsoid
 !! wikitext
 {|
 |<small>foo
@@ -26943,7 +26659,7 @@ bar
 {|
 |<small>foo<small>
 |}
-!! html
+!! html/parsoid
 <table>
 <tbody><tr data-parsoid='{"autoInsertedEnd":true,"autoInsertedStart":true}'><td data-parsoid='{"autoInsertedEnd":true}'><small data-parsoid='{"stx":"html","autoInsertedEnd":true}'>foo
 <p>bar</p></small></td></tr>
@@ -28515,7 +28231,7 @@ WTS of autolinks with nowikis (round-trip)
 !! wikitext
 x<nowiki/>http://cscott.net<nowiki/>x
 !! html/parsoid
-<p>x<a rel="mw:ExtLink" href="http://cscott.net">http://cscott.net</a>x</p>
+<p>x<a rel="mw:ExtLink" class="external free" href="http://cscott.net">http://cscott.net</a>x</p>
 !! end
 
 # this is the "easy" test because it leaves in place all the
@@ -28583,18 +28299,25 @@ Magic links inside links (not autolinked)
 [http://foo.com PMID 1234]
 [http://foo.com ISBN 123456789x]
 !! html+tidy
-<p><a href="/wiki/Foo" title="Foo">http://example.com</a> <a href="/wiki/Foo" title="Foo">RFC 1234</a> <a href="/wiki/Foo" title="Foo">PMID 1234</a> <a href="/wiki/Foo" title="Foo">ISBN 123456789x</a></p>
-<p><a rel="nofollow" class="external text" href="http://foo.com">http://example.com</a> <a rel="nofollow" class="external text" href="http://foo.com">RFC 1234</a> <a rel="nofollow" class="external text" href="http://foo.com">PMID 1234</a> <a rel="nofollow" class="external text" href="http://foo.com">ISBN 123456789x</a></p>
+<p><a href="/wiki/Foo" title="Foo">http://example.com</a>
+<a href="/wiki/Foo" title="Foo">RFC 1234</a>
+<a href="/wiki/Foo" title="Foo">PMID 1234</a>
+<a href="/wiki/Foo" title="Foo">ISBN 123456789x</a>
+</p><p><a rel="nofollow" class="external text" href="http://foo.com">http://example.com</a>
+<a rel="nofollow" class="external text" href="http://foo.com">RFC 1234</a>
+<a rel="nofollow" class="external text" href="http://foo.com">PMID 1234</a>
+<a rel="nofollow" class="external text" href="http://foo.com">ISBN 123456789x</a>
+</p>
 !! html/parsoid
 <p><a rel="mw:WikiLink" href="./Foo" title="Foo">http://example.com</a>
 <a rel="mw:WikiLink" href="./Foo" title="Foo">RFC 1234</a>
 <a rel="mw:WikiLink" href="./Foo" title="Foo">PMID 1234</a>
 <a rel="mw:WikiLink" href="./Foo" title="Foo">ISBN 123456789x</a></p>
 
-<p><a rel="mw:ExtLink" href="http://foo.com">http://example.com</a>
-<a rel="mw:ExtLink" href="http://foo.com">RFC 1234</a>
-<a rel="mw:ExtLink" href="http://foo.com">PMID 1234</a>
-<a rel="mw:ExtLink" href="http://foo.com">ISBN 123456789x</a></p>
+<p><a rel="mw:ExtLink" class="external text" href="http://foo.com">http://example.com</a>
+<a rel="mw:ExtLink" class="external text" href="http://foo.com">RFC 1234</a>
+<a rel="mw:ExtLink" class="external text" href="http://foo.com">PMID 1234</a>
+<a rel="mw:ExtLink" class="external text" href="http://foo.com">ISBN 123456789x</a></p>
 !! end
 
 !! test
@@ -28605,38 +28328,14 @@ Magic links inside image captions (autolinked)
 [[File:Foobar.jpg|thumb|PMID 1234]]
 [[File:Foobar.jpg|thumb|ISBN 123456789x]]
 !! html+tidy
-<div class="thumb tright">
-<div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
-<div class="thumbcaption">
-<div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>
-<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div>
-</div>
-</div>
-<div class="thumb tright">
-<div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
-<div class="thumbcaption">
-<div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>
-<a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc1234">RFC 1234</a></div>
-</div>
-</div>
-<div class="thumb tright">
-<div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
-<div class="thumbcaption">
-<div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>
-<a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a></div>
-</div>
-</div>
-<div class="thumb tright">
-<div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>
-<div class="thumbcaption">
-<div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div>
-<a href="/wiki/Special:BookSources/123456789X" class="internal mw-magiclink-isbn">ISBN 123456789x</a></div>
-</div>
-</div>
-!! html/parsoid
-<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></figcaption></figure>
-<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="https://tools.ietf.org/html/rfc1234" rel="mw:ExtLink">RFC 1234</a></figcaption></figure>
-<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink">PMID 1234</a></figcaption></figure>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a class="external mw-magiclink-rfc" rel="nofollow" href="https://tools.ietf.org/html/rfc1234">RFC 1234</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a class="external mw-magiclink-pmid" rel="nofollow" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a href="/wiki/Special:BookSources/123456789X" class="internal mw-magiclink-isbn">ISBN 123456789x</a></div></div></div>
+!! html/parsoid
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a rel="mw:ExtLink" class="external free" href="http://example.com">http://example.com</a></figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="https://tools.ietf.org/html/rfc1234" rel="mw:ExtLink" class="external text">RFC 1234</a></figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" rel="mw:ExtLink" class="external text">PMID 1234</a></figcaption></figure>
 <figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="./Special:BookSources/123456789X" rel="mw:WikiLink">ISBN 123456789x</a></figcaption></figure>
 !! end
 
@@ -28706,24 +28405,27 @@ parsoid=html2wt,wt2wt
 |}
 !! html/php+tidy
 <table>
+<tbody><tr>
+<th>-
+</th>
+<th>-
+</th></tr>
 <tr>
-<th>-</th>
-<th>-</th>
-</tr>
-<tr>
-<td>-</td>
-<td>-</td>
-</tr>
+<td>-
+</td>
+<td>- 
+</td></tr>
 <tr>
-<td><small>-</small></td>
-<td><br />
-<p>-</p>
+<td><small>-</small>
 </td>
 <td><br />
-<p>-</p>
+<p>-
+</p>
 </td>
-</tr>
-</table>
+<td><br />
+<p>-
+</p>
+</td></tr></tbody></table>
 !! end
 
 !! test
@@ -28907,7 +28609,7 @@ parsoid=wt2html
 !! wikitext
 {{echo|hi}}[http://example.com [[ho]]]
 !! html/parsoid
-<p><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi"}},"i":0}}]}'>hi</span><a rel="mw:ExtLink" href="http://example.com"></a><a rel="mw:WikiLink" href="./Ho" title="Ho" data-parsoid='{"misnested":true}'>ho</a></p>
+<p><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"hi"}},"i":0}}]}'>hi</span><a rel="mw:ExtLink" class="external autonumber" href="http://example.com"></a><a rel="mw:WikiLink" href="./Ho" title="Ho" data-parsoid='{"misnested":true}'>ho</a></p>
 !! end
 
 !! test
@@ -29865,13 +29567,11 @@ Empty LI (T49673)
 * 
 *
 * b
-!! html/php+tidy
-<ul>
-<li>a</li>
-<li class="mw-empty-elt"></li>
+!! html+tidy
+<ul><li> a</li>
+<li class="mw-empty-elt"> </li>
 <li class="mw-empty-elt"></li>
-<li>b</li>
-</ul>
+<li> b</li></ul>
 !! end
 
 !! test
@@ -29879,13 +29579,9 @@ Thumbnail output
 !! wikitext
 [[File:Thumb.png|thumb]]
 !! html/php+tidy
-<div class="thumb tright">
-<div class="thumbinner" style="width:137px;"><a href="/wiki/File:Thumb.png" class="image"><img alt="Thumb.png" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a>
-<div class="thumbcaption">
-<div class="magnify"><a href="/wiki/File:Thumb.png" class="internal" title="Enlarge"></a></div>
-</div>
-</div>
-</div>
+<div class="thumb tright"><div class="thumbinner" style="width:137px;"><a href="/wiki/File:Thumb.png" class="image"><img alt="Thumb.png" src="http://example.com/images/e/ea/Thumb.png" width="135" height="135" class="thumbimage" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Thumb.png" class="internal" title="Enlarge"></a></div></div></div></div>
+!! html/parsoid
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Thumb.png"><img resource="./File:Thumb.png" src="//example.com/images/e/ea/Thumb.png" data-file-width="135" data-file-height="135" data-file-type="bitmap" height="135" width="135"/></a></figure>
 !! end
 
 !! test
@@ -30250,8 +29946,8 @@ T51672: Test for brackets in attributes of elements in external link texts
 <a rel="nofollow" class="external text" href="http://example.com/">link <span title="title with &#91;brackets&#93;">span</span></a>
 </p>
 !! html/parsoid
-<p><a rel="mw:ExtLink" href="http://example.com/">link <span title="title with [brackets]">span</span></a>
-<a rel="mw:ExtLink" href="http://example.com/">link <span title="title with [brackets]" data-parsoid='{"stx":"html","a":{"title":"title with [brackets]"},"sa":{"title":"title with &amp;#91;brackets&amp;#93;"}}'>span</span></a></p>
+<p><a rel="mw:ExtLink" class="external text" href="http://example.com/">link <span title="title with [brackets]">span</span></a>
+<a rel="mw:ExtLink" class="external text" href="http://example.com/">link <span title="title with [brackets]" data-parsoid='{"stx":"html","a":{"title":"title with [brackets]"},"sa":{"title":"title with &amp;#91;brackets&amp;#93;"}}'>span</span></a></p>
 !! end
 
 !! test
index 6e8bc0b..ca6a929 100644 (file)
@@ -25,6 +25,7 @@ class ApiQueryContributionsTest extends ApiTestCase {
                        User::createNew( __CLASS__ . ' B' ),
                        User::createNew( __CLASS__ . ' A' ),
                        User::createNew( __CLASS__ . ' C' ),
+                       User::newFromName( 'IW>' . __CLASS__, false ),
                ];
 
                $title = Title::newFromText( __CLASS__ );
@@ -146,4 +147,48 @@ class ApiQueryContributionsTest extends ApiTestCase {
                        }
                }
        }
+
+       /**
+        * @dataProvider provideInterwikiUser
+        * @param int $stage One of the MIGRATION_* constants for $wgActorTableSchemaMigrationStage
+        */
+       public function testInterwikiUser( $stage ) {
+               $this->setMwGlobals( 'wgActorTableSchemaMigrationStage', $stage );
+               $this->overrideMwServices();
+
+               $params = [
+                       'action' => 'query',
+                       'list' => 'usercontribs',
+                       'ucuser' => 'IW>' . __CLASS__,
+                       'ucprop' => 'ids',
+                       'uclimit' => 'max',
+               ];
+
+               $apiResult = $this->doApiRequest( $params );
+               $this->assertArrayNotHasKey( 'continue', $apiResult[0] );
+               $this->assertArrayHasKey( 'query', $apiResult[0] );
+               $this->assertArrayHasKey( 'usercontribs', $apiResult[0]['query'] );
+
+               $count = 0;
+               $ids = [];
+               foreach ( $apiResult[0]['query']['usercontribs'] as $page ) {
+                       $count++;
+                       $this->assertSame( 'IW>' . __CLASS__, $page['user'], 'Correct user returned' );
+                       $ids[] = $page['revid'];
+               }
+               $this->assertSame( 3, $count, 'Expected number of revisions' );
+               $sorted = $ids;
+               rsort( $sorted );
+               $this->assertSame( $sorted, $ids, "IDs are sorted" );
+       }
+
+       public static function provideInterwikiUser() {
+               return [
+                       'old' => [ MIGRATION_OLD ],
+                       'write both' => [ MIGRATION_WRITE_BOTH ],
+                       'write new' => [ MIGRATION_WRITE_NEW ],
+                       'new' => [ MIGRATION_NEW ],
+               ];
+       }
+
 }
diff --git a/tests/phpunit/includes/db/DatabaseOracleTest.php b/tests/phpunit/includes/db/DatabaseOracleTest.php
new file mode 100644 (file)
index 0000000..b03734e
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+
+class DatabaseOracleTest extends PHPUnit\Framework\TestCase {
+
+       use MediaWikiCoversValidator;
+
+       /**
+        * @return PHPUnit_Framework_MockObject_MockObject|DatabaseOracle
+        */
+       private function getMockDb() {
+               return $this->getMockBuilder( DatabaseOracle::class )
+                       ->disableOriginalConstructor()
+                       ->setMethods( null )
+                       ->getMock();
+       }
+
+       public function provideBuildSubstring() {
+               yield [ 'someField', 1, 2, 'SUBSTR(someField,1,2)' ];
+               yield [ 'someField', 1, null, 'SUBSTR(someField,1)' ];
+       }
+
+       /**
+        * @covers DatabaseOracle::buildSubstring
+        * @dataProvider provideBuildSubstring
+        */
+       public function testBuildSubstring( $input, $start, $length, $expected ) {
+               $mockDb = $this->getMockDb();
+               $output = $mockDb->buildSubstring( $input, $start, $length );
+               $this->assertSame( $expected, $output );
+       }
+
+       public function provideBuildSubstring_invalidParams() {
+               yield [ -1, 1 ];
+               yield [ 1, -1 ];
+               yield [ 1, 'foo' ];
+               yield [ 'foo', 1 ];
+               yield [ null, 1 ];
+               yield [ 0, 1 ];
+       }
+
+       /**
+        * @covers DatabaseOracle::buildSubstring
+        * @dataProvider provideBuildSubstring_invalidParams
+        */
+       public function testBuildSubstring_invalidParams( $start, $length ) {
+               $mockDb = $this->getMockDb();
+               $this->setExpectedException( InvalidArgumentException::class );
+               $mockDb->buildSubstring( 'foo', $start, $length );
+       }
+
+}
index 606c12d..8950152 100644 (file)
@@ -2,6 +2,7 @@
 
 use Wikimedia\Rdbms\TransactionProfiler;
 use Wikimedia\Rdbms\DatabaseDomain;
+use Wikimedia\Rdbms\Database;
 
 /**
  * Helper for testing the methods from the Database class
diff --git a/tests/phpunit/includes/libs/rdbms/database/DatabaseMssqlTest.php b/tests/phpunit/includes/libs/rdbms/database/DatabaseMssqlTest.php
new file mode 100644 (file)
index 0000000..bb85f5a
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+
+use Wikimedia\Rdbms\DatabaseMssql;
+
+class DatabaseMssqlTest extends PHPUnit\Framework\TestCase {
+
+       use MediaWikiCoversValidator;
+
+       /**
+        * @return PHPUnit_Framework_MockObject_MockObject|DatabaseMssql
+        */
+       private function getMockDb() {
+               return $this->getMockBuilder( DatabaseMssql::class )
+                       ->disableOriginalConstructor()
+                       ->setMethods( null )
+                       ->getMock();
+       }
+
+       public function provideBuildSubstring() {
+               yield [ 'someField', 1, 2, 'SUBSTRING(someField,1,2)' ];
+               yield [ 'someField', 1, null, 'SUBSTRING(someField,1,2147483647)' ];
+               yield [ 'someField', 1, 3333333333, 'SUBSTRING(someField,1,3333333333)' ];
+       }
+
+       /**
+        * @covers Wikimedia\Rdbms\DatabaseMssql::buildSubstring
+        * @dataProvider provideBuildSubstring
+        */
+       public function testBuildSubstring( $input, $start, $length, $expected ) {
+               $mockDb = $this->getMockDb();
+               $output = $mockDb->buildSubstring( $input, $start, $length );
+               $this->assertSame( $expected, $output );
+       }
+
+       public function provideBuildSubstring_invalidParams() {
+               yield [ -1, 1 ];
+               yield [ 1, -1 ];
+               yield [ 1, 'foo' ];
+               yield [ 'foo', 1 ];
+               yield [ null, 1 ];
+               yield [ 0, 1 ];
+       }
+
+       /**
+        * @covers Wikimedia\Rdbms\DatabaseMssql::buildSubstring
+        * @dataProvider provideBuildSubstring_invalidParams
+        */
+       public function testBuildSubstring_invalidParams( $start, $length ) {
+               $mockDb = $this->getMockDb();
+               $this->setExpectedException( InvalidArgumentException::class );
+               $mockDb->buildSubstring( 'foo', $start, $length );
+       }
+
+}
index 14c7057..1d948d7 100644 (file)
@@ -604,4 +604,14 @@ class DatabaseMysqlBaseTest extends PHPUnit\Framework\TestCase {
 
                ];
        }
+
+       /**
+        * @covers \Wikimedia\Rdbms\DatabaseMysqlBase::buildIntegerCast
+        */
+       public function testBuildIntegerCast() {
+               $db = new FakeDatabaseMysqlBase();
+               $output = $db->buildIntegerCast( 'fieldName' );
+               $this->assertSame( 'CAST( fieldName AS SIGNED )', $output );
+       }
+
 }
index 5c1943b..0f47595 100644 (file)
@@ -1,5 +1,6 @@
 <?php
 
+use InvalidArgumentException;
 use Wikimedia\Rdbms\LikeMatch;
 
 /**
@@ -1214,4 +1215,46 @@ class DatabaseSQLTest extends PHPUnit\Framework\TestCase {
                $this->assertFalse( $this->database->tableExists( "tmp_table_2", __METHOD__ ) );
                $this->assertFalse( $this->database->tableExists( "tmp_table_3", __METHOD__ ) );
        }
+
+       public function provideBuildSubstring() {
+               yield [ 'someField', 1, 2, 'SUBSTRING(someField FROM 1 FOR 2)' ];
+               yield [ 'someField', 1, null, 'SUBSTRING(someField FROM 1)' ];
+       }
+
+       /**
+        * @covers Wikimedia\Rdbms\Database::buildSubstring
+        * @dataProvider provideBuildSubstring
+        */
+       public function testBuildSubstring( $input, $start, $length, $expected ) {
+               $output = $this->database->buildSubstring( $input, $start, $length );
+               $this->assertSame( $expected, $output );
+       }
+
+       public function provideBuildSubstring_invalidParams() {
+               yield [ -1, 1 ];
+               yield [ 1, -1 ];
+               yield [ 1, 'foo' ];
+               yield [ 'foo', 1 ];
+               yield [ null, 1 ];
+               yield [ 0, 1 ];
+       }
+
+       /**
+        * @covers Wikimedia\Rdbms\Database::buildSubstring
+        * @covers Wikimedia\Rdbms\Database::assertBuildSubstringParams
+        * @dataProvider provideBuildSubstring_invalidParams
+        */
+       public function testBuildSubstring_invalidParams( $start, $length ) {
+               $this->setExpectedException( InvalidArgumentException::class );
+               $this->database->buildSubstring( 'foo', $start, $length );
+       }
+
+       /**
+        * @covers \Wikimedia\Rdbms\Database::buildIntegerCast
+        */
+       public function testBuildIntegerCast() {
+               $output = $this->database->buildIntegerCast( 'fieldName' );
+               $this->assertSame( 'CAST( fieldName AS INTEGER )', $output );
+       }
+
 }
diff --git a/tests/phpunit/includes/libs/rdbms/database/DatabaseSqliteRdbmsTest.php b/tests/phpunit/includes/libs/rdbms/database/DatabaseSqliteRdbmsTest.php
new file mode 100644 (file)
index 0000000..d963a5d
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+use Wikimedia\Rdbms\DatabaseSqlite;
+
+/**
+ * DatabaseSqliteTest is already defined in mediawiki core hence the 'Rdbms' included in this
+ * class name.
+ * The test in core should have mediawiki specific stuff removed and the tests moved to this
+ * rdbms libs test.
+ */
+class DatabaseSqliteRdbmsTest extends PHPUnit\Framework\TestCase {
+
+       use MediaWikiCoversValidator;
+
+       /**
+        * @return PHPUnit_Framework_MockObject_MockObject|DatabaseSqlite
+        */
+       private function getMockDb() {
+               return $this->getMockBuilder( DatabaseSqlite::class )
+                       ->disableOriginalConstructor()
+                       ->setMethods( null )
+                       ->getMock();
+       }
+
+       public function provideBuildSubstring() {
+               yield [ 'someField', 1, 2, 'SUBSTR(someField,1,2)' ];
+               yield [ 'someField', 1, null, 'SUBSTR(someField,1)' ];
+       }
+
+       /**
+        * @covers Wikimedia\Rdbms\DatabaseSqlite::buildSubstring
+        * @dataProvider provideBuildSubstring
+        */
+       public function testBuildSubstring( $input, $start, $length, $expected ) {
+               $dbMock = $this->getMockDb();
+               $output = $dbMock->buildSubstring( $input, $start, $length );
+               $this->assertSame( $expected, $output );
+       }
+
+       public function provideBuildSubstring_invalidParams() {
+               yield [ -1, 1 ];
+               yield [ 1, -1 ];
+               yield [ 1, 'foo' ];
+               yield [ 'foo', 1 ];
+               yield [ null, 1 ];
+               yield [ 0, 1 ];
+       }
+
+       /**
+        * @covers Wikimedia\Rdbms\DatabaseSqlite::buildSubstring
+        * @dataProvider provideBuildSubstring_invalidParams
+        */
+       public function testBuildSubstring_invalidParams( $start, $length ) {
+               $dbMock = $this->getMockDb();
+               $this->setExpectedException( InvalidArgumentException::class );
+               $dbMock->buildSubstring( 'foo', $start, $length );
+       }
+
+}