Merge "Ignore master connections for POST-nonwrite in $wgTrxProfilerLimits"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 5 Nov 2018 21:36:03 +0000 (21:36 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 5 Nov 2018 21:36:03 +0000 (21:36 +0000)
68 files changed:
RELEASE-NOTES-1.32
RELEASE-NOTES-1.33
composer.json
includes/OutputPage.php
includes/PHPVersionCheck.php
includes/api/i18n/ja.json
includes/api/i18n/pl.json
includes/api/i18n/pt.json
includes/api/i18n/uk.json
includes/api/i18n/zh-hant.json
includes/block/BlockRestriction.php
includes/htmlform/HTMLForm.php
includes/installer/WebInstallerOutput.php
includes/installer/i18n/ca.json
includes/installer/i18n/ru.json
includes/installer/i18n/sr-el.json
includes/libs/filebackend/FileBackend.php
includes/libs/rdbms/lbfactory/LBFactory.php
includes/libs/rdbms/loadbalancer/LoadBalancer.php
includes/parser/Parser.php
includes/specials/SpecialMyRedirectPages.php
includes/specials/SpecialUndelete.php
index.php
languages/i18n/az.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bn.json
languages/i18n/ca.json
languages/i18n/de-formal.json
languages/i18n/de.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/fi.json
languages/i18n/ig.json
languages/i18n/io.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/kjp.json
languages/i18n/mk.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ru.json
languages/i18n/sa.json
languages/i18n/sh.json
languages/i18n/shy-latn.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/th.json
languages/i18n/uk.json
maintenance/Maintenance.php
mw-config/index.php
resources/Resources.php
resources/lib/ooui/i18n/sr-el.json
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ChangesListWrapperWidget.less
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterTagMultiselectWidget.less
resources/src/mediawiki.special.preferences.ooui/tabs.js
resources/src/mediawiki.special.preferences.styles.css
resources/src/mediawiki.special.preferences.styles.ooui.less
resources/src/mediawiki.widgets/mw.widgets.AbandonEditDialog.js [new file with mode: 0644]
tests/parser/ParserTestRunner.php
tests/parser/TestFileReader.php
tests/parser/parserTests.php
tests/parser/parserTests.txt
tests/phpunit/includes/OutputPageTest.php
tests/phpunit/includes/SampleTest.php

index 2cd1222..438fac3 100644 (file)
@@ -607,6 +607,11 @@ because of Phabricator reports.
   OutputPage::addWikiTextAsContent() instead, which ensures the output is
   tidy and clarifies whether content-language specific postprocessing should
   be done on the text.
+* OutputPage::parse() and OutputPage::parseInline() have been deprecated
+  due to untidy output and inconsistent handling of wrapper divs and
+  interface/content language defaults.  Use OutputPage::parseAsContent(),
+  OutputPage::parseAsInterface(), or OutputPage::parseInlineAsInterface()
+  as appropriate.
 * QuickTemplate::msgHtml() and BaseTemplate::msgHtml() have been deprecated
   as they promote bad practises. I18n messages should always be properly
   escaped.
index 9aaf4af..f6c819d 100644 (file)
@@ -30,6 +30,8 @@ production.
 * …
 
 ==== Changed external libraries ====
+* Updated wikimedia/xmp-reader from 0.6.0 to 0.6.1.
+* Updated wikimedia/scoped-callback from 2.0.0 to 3.0.0.
 * …
 
 ==== Removed external libraries ====
@@ -114,11 +116,6 @@ because of Phabricator reports.
   applied for Arabic and Malayalam in the future.  Please enable these on
   your local wiki (if you have them explicitly set to false) and run
   maintenance/cleanupTitles.php to fix any existing page titles.
-* OutputPage::parse() and OutputPage::parseInline() have been deprecated
-  due to untidy output and inconsistent handling of wrapper divs and
-  interface/content language defaults.  Use OutputPage::parseAsContent(),
-  OutputPage::parseAsInterface(), or OutputPage::parseInlineAsInterface()
-  as appropriate.
 * The LegacyHookPreAuthenticationProvider class, deprecated since its creation
   in 1.27 as part of the AuthManager re-write, now emits deprecation warnings.
   This will help identify the issue if you added it to $wgAuthManagerConfig.
index ae9e3ca..181f62e 100644 (file)
                "wikimedia/relpath": "2.1.1",
                "wikimedia/remex-html": "2.0.1",
                "wikimedia/running-stat": "1.2.1",
-               "wikimedia/scoped-callback": "2.0.0",
+               "wikimedia/scoped-callback": "3.0.0",
                "wikimedia/utfnormal": "2.0.0",
                "wikimedia/timestamp": "2.2.0",
                "wikimedia/wait-condition-loop": "1.0.1",
                "wikimedia/wrappedstring": "3.0.1",
-               "wikimedia/xmp-reader": "0.6.0",
+               "wikimedia/xmp-reader": "0.6.1",
                "zordius/lightncandy": "0.23"
        },
        "require-dev": {
index aa2afe9..f001acd 100644 (file)
@@ -2093,11 +2093,12 @@ class OutputPage extends ContextSource {
         * @param Language|null $language Target language object, will override $interface
         * @throws MWException
         * @return string HTML
-        * @deprecated since 1.33, due to untidy output and inconsistent wrapper;
+        * @deprecated since 1.32, due to untidy output and inconsistent wrapper;
         *  use parseAsContent() if $interface is default value or false, or else
         *  parseAsInterface() if $interface is true.
         */
        public function parse( $text, $linestart = true, $interface = false, $language = null ) {
+               wfDeprecated( __METHOD__, '1.33' );
                return $this->parseInternal(
                        $text, $this->getTitle(), $linestart, /*tidy*/false, $interface, $language
                )->getText( [
@@ -2114,7 +2115,7 @@ class OutputPage extends ContextSource {
         * @param bool $linestart Is this the start of a line? (Defaults to true)
         * @throws MWException
         * @return string HTML
-        * @since 1.33
+        * @since 1.32
         */
        public function parseAsContent( $text, $linestart = true ) {
                return $this->parseInternal(
@@ -2135,7 +2136,7 @@ class OutputPage extends ContextSource {
         * @param bool $linestart Is this the start of a line? (Defaults to true)
         * @throws MWException
         * @return string HTML
-        * @since 1.33
+        * @since 1.32
         */
        public function parseAsInterface( $text, $linestart = true ) {
                return $this->parseInternal(
@@ -2158,7 +2159,7 @@ class OutputPage extends ContextSource {
         * @param bool $linestart Is this the start of a line? (Defaults to true)
         * @throws MWException
         * @return string HTML
-        * @since 1.33
+        * @since 1.32
         */
        public function parseInlineAsInterface( $text, $linestart = true ) {
                return Parser::stripOuterParagraph(
@@ -2174,12 +2175,13 @@ class OutputPage extends ContextSource {
         * @param bool $interface Use interface language (instead of content language) while parsing
         *   language sensitive magic words like GRAMMAR and PLURAL
         * @return string HTML
-        * @deprecated since 1.33, due to untidy output and confusing default
+        * @deprecated since 1.32, due to untidy output and confusing default
         *   for $interface.  Use parseInlineAsInterface() if $interface is
         *   the default value or false, or else use
         *   Parser::stripOuterParagraph($outputPage->parseAsContent(...)).
         */
        public function parseInline( $text, $linestart = true, $interface = false ) {
+               wfDeprecated( __METHOD__, '1.33' );
                $parsed = $this->parseInternal(
                        $text, $this->getTitle(), $linestart, /*tidy*/false, $interface, /*language*/null
                )->getText( [
index aee2a0c..8406bfb 100644 (file)
  * Check PHP Version, as well as for composer dependencies in entry points,
  * and display something vaguely comprehensible in the event of a totally
  * unrecoverable error.
+ *
+ * @note Since we can't rely on anything external, the minimum PHP versions
+ * and MW current version are hardcoded in this class.
+ *
+ * @note This class uses setter methods instead of a constructor so that
+ * it can be compatible with PHP 4, PHP 5 and PHP 7 (without warnings).
+ *
  * @class
  */
 class PHPVersionCheck {
@@ -41,29 +48,35 @@ class PHPVersionCheck {
        );
 
        /**
-        * @var string Which entry point we are protecting. One of:
-        *   - index.php
-        *   - load.php
-        *   - api.php
-        *   - mw-config/index.php
-        *   - cli
+        * @var string $format The format used for errors. One of "text" or "html"
+        */
+       var $format = 'text';
+
+       /**
+        * @var string $scriptPath
         */
-       var $entryPoint = null;
+       var $scriptPath = '/';
 
        /**
-        * @param string $entryPoint Which entry point we are protecting. One of:
-        *   - index.php
-        *   - load.php
-        *   - api.php
-        *   - mw-config/index.php
-        *   - cli
+        * Set the format used for errors.
+        *
+        * @param string $format One of "text" or "html"
         */
-       function setEntryPoint( $entryPoint ) {
-               $this->entryPoint = $entryPoint;
+       function setFormat( $format ) {
+               $this->format = $format;
        }
 
        /**
-        * Returns the version of the installed PHP implementation.
+        * Set the script path used for images in HTML-formatted errors.
+        *
+        * @param string $scriptPath
+        */
+       function setScriptPath( $scriptPath ) {
+               $this->scriptPath = $scriptPath;
+       }
+
+       /**
+        * Return the version of the installed PHP implementation.
         *
         * @param string $impl By default, the function returns the info of the currently installed PHP
         *  implementation. Using this parameter the caller can decide, what version info will be
@@ -236,14 +249,8 @@ HTML;
         * @return string
         */
        function getIndexErrorOutput( $title, $longHtml, $shortText ) {
-               $pathinfo = pathinfo( $_SERVER['SCRIPT_NAME'] );
-               if ( $this->entryPoint == 'mw-config/index.php' ) {
-                       $dirname = dirname( $pathinfo['dirname'] );
-               } else {
-                       $dirname = $pathinfo['dirname'];
-               }
                $encLogo =
-                       htmlspecialchars( str_replace( '//', '/', $dirname . '/' ) .
+                       htmlspecialchars( str_replace( '//', '/', $this->scriptPath . '/' ) .
                                'resources/assets/mediawiki.png' );
                $shortHtml = htmlspecialchars( $shortText );
 
@@ -308,23 +315,13 @@ HTML;
         * @param string $longHtml
         */
        function triggerError( $title, $shortText, $longText, $longHtml ) {
-               switch ( $this->entryPoint ) {
-                       case 'cli':
-                               $finalOutput = $longText;
-                               break;
-                       case 'index.php':
-                       case 'mw-config/index.php':
-                               $this->outputHTMLHeader();
-                               $finalOutput = $this->getIndexErrorOutput( $title, $longHtml, $shortText );
-                               break;
-                       case 'load.php':
-                               $this->outputHTMLHeader();
-                               $finalOutput = "/* $shortText */";
-                               break;
-                       default:
-                               $this->outputHTMLHeader();
-                               // Handle everything that's not index.php
-                               $finalOutput = $shortText;
+               if ( $this->format === 'html' ) {
+                       // Used by index.php and mw-config/index.php
+                       $this->outputHTMLHeader();
+                       $finalOutput = $this->getIndexErrorOutput( $title, $longHtml, $shortText );
+               } else {
+                       // Used by Maintenance.php (CLI)
+                       $finalOutput = $longText;
                }
 
                echo "$finalOutput\n";
@@ -336,12 +333,13 @@ HTML;
  * Check PHP version and that external dependencies are installed, and
  * display an informative error if either condition is not satisfied.
  *
- * @note Since we can't rely on anything, the minimum PHP versions and MW current
- * version are hardcoded here.
+ * @param string $format One of "text" or "html"
+ * @param string $scriptPath Used when an error is formatted as HTML.
  */
-function wfEntryPointCheck( $entryPoint ) {
+function wfEntryPointCheck( $format = 'text', $scriptPath = '/' ) {
        $phpVersionCheck = new PHPVersionCheck();
-       $phpVersionCheck->setEntryPoint( $entryPoint );
+       $phpVersionCheck->setFormat( $format );
+       $phpVersionCheck->setScriptPath( $scriptPath );
        $phpVersionCheck->checkRequiredPHPVersion();
        $phpVersionCheck->checkVendorExistence();
        $phpVersionCheck->checkExtensionExistence();
index d943e47..5bccabf 100644 (file)
        "api-help-flag-mustbeposted": "このモジュールは POST リクエストのみを受け付けます。",
        "api-help-flag-generator": "このモジュールはジェネレーターとして使用できます。",
        "api-help-source": "ソース: $1",
+       "api-help-license": "ライセンス: [[$1|$2]]",
+       "api-help-license-noname": "ライセンス: [[$1|リンク先参照]]",
+       "api-help-license-unknown": "ライセンス: <span class=\"apihelp-unknown\">不明</span>",
        "api-help-parameters": "{{PLURAL:$1|パラメーター}}:",
        "api-help-param-deprecated": "廃止予定です。",
        "api-help-param-required": "このパラメーターは必須です。",
index a0429ac..7b29b1f 100644 (file)
        "apierror-badtoken": "Nieprawidłowy token CSRF.",
        "apierror-blockedfrommail": "Została Ci zablokowana możliwość wysyłania e-maili.",
        "apierror-blocked": "Została Ci zablokowana możliwość edycji.",
+       "apierror-blocked-partial": "Została Ci zablokowana możliwość edycji tej strony.",
        "apierror-botsnotsupported": "Interfejs nie jest obsługiwany dla botów.",
        "apierror-cannotviewtitle": "Nie masz uprawnień do oglądania $1.",
        "apierror-cantblock": "Nie masz uprawnień do blokowania użytkowników.",
index a9a7020..c1e10ca 100644 (file)
        "apihelp-feedcontributions-param-month": "Desde o mês.",
        "apihelp-feedcontributions-param-tagfilter": "Filtrar as contribuições para produzir as que têm estas etiquetas.",
        "apihelp-feedcontributions-param-deletedonly": "Mostrar apenas as contribuições eliminadas.",
-       "apihelp-feedcontributions-param-toponly": "Mostrar apenas as edições mais recentes.",
+       "apihelp-feedcontributions-param-toponly": "Mostrar só edições que sejam a revisão mais recente.",
        "apihelp-feedcontributions-param-newonly": "Mostrar apenas as edições que são criações de páginas.",
        "apihelp-feedcontributions-param-hideminor": "Ocultar edições menores.",
        "apihelp-feedcontributions-param-showsizediff": "Mostrar diferença de tamanho entre edições.",
index e98a0ba..21601c1 100644 (file)
@@ -48,6 +48,8 @@
        "apihelp-block-param-reblock": "Якщо користувач уже заблокований, переписати наявне блокування.",
        "apihelp-block-param-watchuser": "Спостерігати за сторінкою користувача чи IP-адреси і сторінкою обговорення.",
        "apihelp-block-param-tags": "Змінити теги для застосування їх до запису в журналі блокувань.",
+       "apihelp-block-param-partial": "Заблокувати користувачеві доступ до конкретних сторінок чи просторів назв, замість усього сайту.",
+       "apihelp-block-param-pagerestrictions": "Список назв, доступ користувача до яких слід заблокувати. Застосовується лише якщо «частково» встановлено як істинне (true) значення.",
        "apihelp-block-example-ip-simple": "Блокувати IP-адресу <kbd>192.0.2.5</kbd> на три дні з причиною <kbd>First strike</kbd>.",
        "apihelp-block-example-user-complex": "Блокувати користувача<kbd>Vandal</kbd> на невизначений термін з причиною <kbd>Vandalism</kbd> і заборонити створення нових облікових записів та надсилання електронної пошти.",
        "apihelp-changeauthenticationdata-summary": "Зміна параметрів аутентифікації для поточного користувача.",
        "apihelp-query+blocks-paramvalue-prop-reason": "Додає причину, вказану при блокуванні.",
        "apihelp-query+blocks-paramvalue-prop-range": "Додає діапазон IP-адрес, на які поширюється блокування.",
        "apihelp-query+blocks-paramvalue-prop-flags": "Мітки бану (автоблокування, лише анонім тощо).",
+       "apihelp-query+blocks-paramvalue-prop-restrictions": "Додає обмеження для часткових блокувань, якщо блокування не здійснюється для всього сайту.",
        "apihelp-query+blocks-param-show": "Показувати лише елементи, які відповідають цим критеріям.\nНаприклад, щоб побачити лише незалежні блокування IP-адрес, встановіть <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+blocks-example-simple": "Вивести список блокувань.",
        "apihelp-query+blocks-example-users": "Вивести список блокувань користувачів <kbd>Alice</kbd> та <kbd>Bob</kbd>.",
        "apihelp-query+info-paramvalue-prop-notificationtimestamp": "Часова мітка сповіщення списку спостереження кожної сторінки.",
        "apihelp-query+info-paramvalue-prop-subjectid": "Ідентифікатор батьківської сторінки для кожної сторінки обговорення.",
        "apihelp-query+info-paramvalue-prop-url": "Дає повний URL, URL редагування та канонічний URL для кожної сторінки.",
-       "apihelp-query+info-paramvalue-prop-readable": "Чи ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87 Ð¼Ð¾Ð¶Ðµ Ñ\80едагÑ\83ваÑ\82и Ñ\86Ñ\8e Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83.",
+       "apihelp-query+info-paramvalue-prop-readable": "Чи ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87 Ð¼Ð¾Ð¶Ðµ Ñ\87иÑ\82аÑ\82и Ñ\86Ñ\8e Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83. Ð\92икоÑ\80иÑ\81Ñ\82овÑ\83йÑ\82е <kbd>intestactions=read</kbd> Ð½Ð°Ñ\82омÑ\96Ñ\81Ñ\82Ñ\8c.",
        "apihelp-query+info-paramvalue-prop-preload": "Дає текст, виданий EditFormPreloadText.",
        "apihelp-query+info-paramvalue-prop-displaytitle": "Дає спосіб, у який відображається назва сторінки.",
        "apihelp-query+info-paramvalue-prop-varianttitles": "Видає вигляд заголовка всіма варіантами мов контенту цього сайту.",
        "apihelp-query+info-param-testactions": "Перевірити, чи поточний користувач може виконувати певні дії на сторінці.",
+       "apihelp-query+info-param-testactionsdetail": "Рівень деталізації для <var>$1testactions</var>. Використовуйте параметри <var>errorformat</var> та <var>errorlang</var> [[Special:ApiHelp/main|головного модуля]], щоб контролювати формат отримуваних повідомлень.",
+       "apihelp-query+info-paramvalue-testactionsdetail-boolean": "Вивести значення логічного типу даних для кожної дії.",
+       "apihelp-query+info-paramvalue-testactionsdetail-full": "Вивести повідомлення з поясненням, чому така дія заборонена, або порожній рядок, якщо така дія дозволена.",
+       "apihelp-query+info-paramvalue-testactionsdetail-quick": "Так само як <kbd>full</kbd>, але без затратних перевірок.",
        "apihelp-query+info-param-token": "Використати натомість [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
        "apihelp-query+info-example-simple": "Отримати інформацію про сторінку <kbd>Main Page</kbd>.",
        "apihelp-query+info-example-protection": "Отримати загальну інформацію і дані про захист сторінки <kbd>Main Page</kbd>.",
        "apihelp-query+recentchanges-param-limit": "Скільки всього змін виводити.",
        "apihelp-query+recentchanges-param-type": "Які типи змін показувати.",
        "apihelp-query+recentchanges-param-toponly": "Виводити лише зміни, які є останньою версією.",
+       "apihelp-query+recentchanges-param-title": "Фільтрувати записи й залишити лише ті, які стосуються певної сторінки.",
        "apihelp-query+recentchanges-param-generaterevisions": "Коли використовується як генератор, генерувати ідентифікатори версій замість заголовків. Записи нещодавніх редагувань без прив'язаних ID версій (наприклад, більшість записів журналів) не згенерують нічого.",
        "apihelp-query+recentchanges-example-simple": "Вивести нещодавні зміни.",
        "apihelp-query+recentchanges-example-generator": "Отримати інформацію про сторінки з недавніми невідпатрульованими змінами.",
        "apihelp-query+revisions+base-paramvalue-prop-user": "Користувач, який створив версію.",
        "apihelp-query+revisions+base-paramvalue-prop-userid": "ID користувача, який створив версію.",
        "apihelp-query+revisions+base-paramvalue-prop-size": "Довжина версії (в байтах).",
+       "apihelp-query+revisions+base-paramvalue-prop-slotsize": "Довжина (в байтах) кожного слоту версії.",
        "apihelp-query+revisions+base-paramvalue-prop-sha1": "SHA-1 (base 16) версії.",
-       "apihelp-query+revisions+base-paramvalue-prop-contentmodel": "ID моделі вмісту версії.",
+       "apihelp-query+revisions+base-paramvalue-prop-slotsha1": "SHA-1 (з основою 16) кожного слоту версії.",
+       "apihelp-query+revisions+base-paramvalue-prop-contentmodel": "ID контентної моделі кожного слоту версії.",
        "apihelp-query+revisions+base-paramvalue-prop-comment": "Коментар користувача до версії.",
        "apihelp-query+revisions+base-paramvalue-prop-parsedcomment": "Проаналізований коментар користувача до версії.",
-       "apihelp-query+revisions+base-paramvalue-prop-content": "ТекÑ\81Ñ\82 версії.",
+       "apihelp-query+revisions+base-paramvalue-prop-content": "Ð\92мÑ\96Ñ\81Ñ\82 ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ Ñ\81лоÑ\82Ñ\83 версії.",
        "apihelp-query+revisions+base-paramvalue-prop-tags": "Мітки версії.",
        "apihelp-query+revisions+base-paramvalue-prop-parsetree": "<span class=\"apihelp-deprecated\">Deprecated.</span> Використовуйте натомість <kbd>[[Special:ApiHelp/expandtemplates|action=expandtemplates]]</kbd> або <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>. Синтаксичне дерево XML вмісту версії (передбачає модель вмісту <code>$1</code>).",
        "apihelp-query+revisions+base-param-limit": "Обмежити кількість версій, які буде видано.",
index 6584506..0c9a0bd 100644 (file)
@@ -31,6 +31,7 @@
        "apihelp-main-param-servedby": "在結果中包括提出請求的主機名。",
        "apihelp-main-param-curtimestamp": "在結果中包括目前的時間戳。",
        "apihelp-main-param-responselanginfo": "在結果中包括<var>uselang</var>和<var>errorlang</var>所用的語言。",
+       "apihelp-main-param-errorsuselocal": "若有指定,錯誤文字會使用來自 {{ns:MediaWiki}} 命名空間的本地自定義訊息。",
        "apihelp-block-summary": "封鎖使用者。",
        "apihelp-block-param-user": "要封鎖的使用者名稱、IP 位址或 IP 範圍。不能與 <var>$1userid</var> 一起使用",
        "apihelp-block-param-userid": "要封鎖的使用者 ID。不可與 <var>$1user</var> 一同使用。",
        "apihelp-feedrecentchanges-example-30days": "顯示近期30天內的變動",
        "apihelp-feedwatchlist-summary": "返回監視清單 feed。",
        "apihelp-feedwatchlist-param-feedformat": "Feed 的格式。",
+       "apihelp-feedwatchlist-param-hours": "列出在幾小時內的頁面變動。",
        "apihelp-feedwatchlist-param-linktosections": "若可以的話,直接連結至更改過的段落。",
        "apihelp-feedwatchlist-example-all6hrs": "顯示過去 6 小時在監視頁面的所有更改。",
        "apihelp-filerevert-summary": "回退檔案至舊的版本。",
        "apihelp-query+categorymembers-paramvalue-prop-title": "添加標題與頁面的命名空間 ID。",
        "apihelp-query+categorymembers-paramvalue-prop-sortkey": "添加使用來在分類裡排序的排序鍵(十六進位字串)。",
        "apihelp-query+categorymembers-paramvalue-prop-timestamp": "添加在頁面有被包含時的時間戳記。",
+       "apihelp-query+categorymembers-param-type": "包含的分類成員類型。當有設定 <kbd>$1sort=timestamp</kbd> 時忽略。",
        "apihelp-query+categorymembers-param-limit": "回傳的頁面數量上限。",
        "apihelp-query+categorymembers-param-sort": "作為排序順序的屬性。",
        "apihelp-query+categorymembers-param-dir": "排序的方向。",
        "apihelp-query+duplicatefiles-param-localonly": "僅查看在本地端儲存庫的檔案。",
        "apihelp-query+duplicatefiles-example-simple": "尋找重複 [[:File:Albert Einstein Head.jpg]] 的檔案。",
        "apihelp-query+duplicatefiles-example-generated": "查看全部有重複到的檔案。",
+       "apihelp-query+embeddedin-summary": "找出內嵌(嵌入)指定頁面的所有頁面。",
        "apihelp-query+embeddedin-param-title": "要搜尋的標題。不能與 $1pageid 一起使用。",
        "apihelp-query+embeddedin-param-pageid": "要搜尋的頁面 ID。不能與 $1title 一起使用。",
        "apihelp-query+embeddedin-param-namespace": "要列舉的命名空間。",
        "apihelp-query+imageinfo-paramvalue-prop-parsedcomment": "解析版本上的註釋。",
        "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "添加檔案的規範標題。",
        "apihelp-query+imageinfo-paramvalue-prop-url": "提供檔案與描述頁面的 URL。",
+       "apihelp-query+imageinfo-paramvalue-prop-size": "添加以位元組為單位的檔案大小、高度、寬度、頁面計數(若可套用的話)。",
        "apihelp-query+imageinfo-paramvalue-prop-sha1": "替檔案添加 SHA-1 雜湊值。",
        "apihelp-query+imageinfo-paramvalue-prop-mime": "替檔案添加 MIME 類型。",
        "apihelp-query+imageinfo-paramvalue-prop-thumbmime": "添加圖片縮圖的 MIME 類型(需要 url 與參數 $1urlwidth)。",
        "apihelp-query+imageinfo-param-start": "列出的起始時間戳記。",
        "apihelp-query+imageinfo-param-end": "列出的終止時間戳記。",
        "apihelp-query+imageinfo-param-urlheight": "與 $1urlwidth 相似。",
+       "apihelp-query+imageinfo-param-extmetadatamultilang": "若用於 extmetadata 屬性的翻譯可用,則全部索取。",
        "apihelp-query+imageinfo-param-extmetadatafilter": "若有指定且非空,僅會為 $1prop=extmetadata 回傳這些鍵。",
+       "apihelp-query+imageinfo-param-badfilecontexttitle": "若有設定 <kbd>$2prop=badfile</kbd>,此頁面使用在當評估 [[MediaWiki:Bad image list]] 的時候",
        "apihelp-query+imageinfo-param-localonly": "僅查看在本地端儲存庫的檔案。",
        "apihelp-query+imageinfo-example-simple": "取得關於 [[:File:Albert Einstein Head.jpg]] 目前版本的資訊.",
        "apihelp-query+imageinfo-example-dated": "索取 [[:File:Test.jpg]] 自 2008 年以來的版本資訊。",
        "apihelp-query+imageusage-param-pageid": "要搜尋的頁面 ID。不能與 $1title 一起使用。",
        "apihelp-query+imageusage-param-namespace": "要列舉的命名空間。",
        "apihelp-query+imageusage-param-dir": "列出時所採用的方向。",
+       "apihelp-query+imageusage-param-redirect": "若連結頁面為重新導向,則找尋連結至該重新導向的所有頁面。最大限制為一半。",
        "apihelp-query+imageusage-example-simple": "顯示有使用 [[:File:Albert Einstein Head.jpg]] 的頁面。",
        "apihelp-query+imageusage-example-generator": "取得關於有使用到 [[:File:Albert Einstein Head.jpg]] 的頁面資訊.",
        "apihelp-query+info-summary": "取得基本頁面訊息。",
        "apihelp-query+info-paramvalue-prop-preload": "取得由 EditFormPreloadText 回傳的文字。",
        "apihelp-query+info-param-testactions": "測試目前使用者是否可執行頁面上的某項操作。",
        "apihelp-query+info-paramvalue-testactionsdetail-boolean": "回傳各操作的布林值。",
+       "apihelp-query+info-paramvalue-testactionsdetail-full": "回傳描述出為何操作被禁止的訊息,或為允許則回傳空陣列。",
        "apihelp-query+info-paramvalue-testactionsdetail-quick": "像是 <kbd>full</kbd>;但跳過耗費的檢查。",
        "apihelp-query+info-param-token": "請改用 [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]。",
        "apihelp-query+info-example-simple": "取得有關頁面 <kbd>Main Page</kbd> 的資訊。",
        "apihelp-query+protectedtitles-paramvalue-prop-parsedcomment": "添加保護的解析註釋。",
        "apihelp-query+protectedtitles-paramvalue-prop-level": "添加保護層級。",
        "apihelp-query+protectedtitles-example-simple": "列出已保護的標題。",
+       "apihelp-query+protectedtitles-example-generator": "找出在主命名空間裡連至已保護標題的連結。",
        "apihelp-query+querypage-summary": "取得透過特殊頁面 QueryPage-based 所提供的清單。",
        "apihelp-query+querypage-param-page": "特殊頁面的名稱。註:區分大小寫。",
        "apihelp-query+querypage-param-limit": "回傳的結果數量。",
        "apihelp-query+recentchanges-paramvalue-prop-ids": "添加頁面 ID、最近更改 ID 以及新舊修訂 ID。",
        "apihelp-query+recentchanges-paramvalue-prop-sizes": "添加新舊頁面長度(位元組)。",
        "apihelp-query+recentchanges-paramvalue-prop-redirect": "若頁面為重新導向則標記編輯。",
+       "apihelp-query+recentchanges-paramvalue-prop-patrolled": "標記可巡查編輯為已巡查或未巡查。",
+       "apihelp-query+recentchanges-paramvalue-prop-autopatrolled": "標記可巡查編輯為自動巡查或否。",
        "apihelp-query+recentchanges-paramvalue-prop-loginfo": "添加日誌資訊(日誌 ID、日誌類型、其它)至日誌項目。",
        "apihelp-query+recentchanges-paramvalue-prop-tags": "列出項目的標籤。",
        "apihelp-query+recentchanges-param-token": "請改用 <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>。",
        "apihelp-query+siteinfo-paramvalue-prop-libraries": "回傳安裝在 wiki 上的函式庫。",
        "apihelp-query+siteinfo-paramvalue-prop-extensions": "回傳安裝在 wiki 上的擴充功能。",
        "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "回傳允許上傳的副檔名(檔案類型)清單。",
+       "apihelp-query+siteinfo-paramvalue-prop-restrictions": "回傳在可用限制(保護)類型的資訊。",
        "apihelp-query+siteinfo-paramvalue-prop-extensiontags": "回傳解析擴充標籤清單。",
        "apihelp-query+siteinfo-paramvalue-prop-functionhooks": "回傳解析器函式掛勾清單。",
+       "apihelp-query+siteinfo-paramvalue-prop-variables": "回傳變數 ID 清單。",
        "apihelp-query+siteinfo-paramvalue-prop-defaultoptions": "回傳用於使用者偏好設定的預設值。",
        "apihelp-query+siteinfo-paramvalue-prop-uploaddialog": "回傳上傳對話框的設置。",
        "apihelp-query+siteinfo-param-filteriw": "僅回傳跨 wiki 地圖的本地端或非本地端項目。",
        "apihelp-query+userinfo-example-data": "取得目前使用者的額外資訊。",
        "apihelp-query+users-summary": "取得有關使用者清單的資訊。",
        "apihelp-query+users-param-prop": "要包含的資訊部份:",
+       "apihelp-query+users-paramvalue-prop-blockinfo": "若使用者被封鎖則標記出由誰做出,以及出於何種原因。",
        "apihelp-query+users-paramvalue-prop-groups": "列出各使用者所隸屬的所有群組。",
        "apihelp-query+users-paramvalue-prop-rights": "列出各使用者所擁有的權限。",
        "apihelp-query+users-paramvalue-prop-editcount": "添加使用者的編輯數。",
        "apihelp-query+users-paramvalue-prop-registration": "添加使用者的註冊時間戳記。",
+       "apihelp-query+users-paramvalue-prop-emailable": "若使用者符合條件並想要透過 [[Special:Emailuser]] 來接收電子郵件時標記。",
        "apihelp-query+users-paramvalue-prop-gender": "標記使用者性別。回傳「male」、「female」、或「unknown」。",
        "apihelp-query+users-param-users": "要獲取的使用者清單。",
        "apihelp-query+users-param-userids": "要獲取的使用者 ID 清單。",
        "apihelp-resetpassword-param-user": "正重新設定的使用者。",
        "apihelp-resetpassword-param-email": "正被重新設定使用者的電子郵件地址。",
        "apihelp-resetpassword-example-user": "向使用者 <kbd>Example</kbd> 寄送重新設定密碼用的電子郵件。",
+       "apihelp-resetpassword-example-email": "對所有電子郵件地址為 <kbd>user@example.com</kbd> 的使用者發送重新設定密碼電郵。",
        "apihelp-revisiondelete-summary": "刪除和取消刪除修訂。",
        "apihelp-revisiondelete-param-type": "正執行的修訂刪除類型。",
        "apihelp-revisiondelete-param-hide": "各修訂所要隱藏的內容。",
        "apihelp-revisiondelete-param-reason": "刪除或取消刪除的原因。",
        "apihelp-revisiondelete-param-tags": "在刪除日誌裡套用到項目的標籤。",
        "apihelp-revisiondelete-example-revision": "隱藏在頁面 <kbd>Main Page</kbd> 的修訂 <kbd>12345</kbd> 內容。",
+       "apihelp-revisiondelete-example-log": "以原因:<kbd>BLP violation</kbd>,來隱藏在日誌項目 <kbd>67890</kbd> 上的所有資料。",
        "apihelp-rollback-summary": "復原頁面的最後一次編輯。",
        "apihelp-rollback-param-title": "要回退的頁面標題。不可與 <var>$1pageid</var> 同時使用。",
        "apihelp-rollback-param-pageid": "要回退的頁面 ID。不可與 <var>$1title</var> 同時使用。",
        "apihelp-setnotificationtimestamp-example-allpages": "重新設定在 <kbd>{{ns:user}}</kbd> 命名空間裡頁面的通知狀態。",
        "apihelp-setpagelanguage-summary": "更改頁面的語言。",
        "apihelp-setpagelanguage-extended-description-disabled": "您不被允許在此 wiki 上變更頁面的語言。\n\n請啟用 <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> 來進行此操作。",
+       "apihelp-setpagelanguage-param-title": "您所想要更改語言的頁面之標題。不能與 <var>$1pageid</var> 一起使用。",
+       "apihelp-setpagelanguage-param-pageid": "您所想要更改語言的頁面之頁面 ID。不能與 <var>$1title</var> 一起使用。",
        "apihelp-setpagelanguage-param-reason": "變更的原因。",
        "apihelp-setpagelanguage-param-tags": "更改對應自此項操作所導致出日誌項目的標籤。",
        "apihelp-setpagelanguage-example-language": "更改 <kbd>Main Page</kbd> 的語言成巴斯克語。",
        "apierror-cantimport-upload": "您沒有權限來匯入已上傳頁面。",
        "apierror-cantimport": "您沒有權限來匯入頁面。",
        "apierror-changeauth-norequest": "建立更改請求失敗。",
+       "apierror-compare-notext": "參數 <var>$1</var> 不能在缺少 <var>$2</var> 的情況下使用。",
        "apierror-contentserializationexception": "內容序列化失敗:$1",
+       "apierror-copyuploadbaddomain": "不允許從此網域來透過 URL 上傳。",
        "apierror-copyuploadbadurl": "不允許從此 URL 來上傳。",
        "apierror-csp-report": "處理 CSP 報告時錯誤:$1。",
+       "apierror-emptynewsection": "新段落不可建立空白內容。",
        "apierror-emptypage": "不允許建立空白的新頁面。",
        "apierror-exceptioncaught": "[$1]捕獲異常:$2",
        "apierror-exceptioncaughttype": "[$1]捕獲異常類型:$2",
        "apierror-missingtitle": "您所指定的頁面不存在。",
        "apierror-missingtitle-byname": "頁面$1不存在。",
        "apierror-moduledisabled": "模組 <kbd>$1</kbd> 已停用。",
+       "apierror-multpages": "<var>$1</var> 僅能以單一頁面使用。",
        "apierror-mustbeloggedin-changeauth": "必須登入,才能變更身分核對資取。",
        "apierror-mustbeloggedin-generic": "您必須登入。",
        "apierror-mustbeloggedin-linkaccounts": "您必須登入到連結帳號。",
        "apierror-mustbeloggedin-removeauth": "必須登入,才能移除身分核對資取。",
        "apierror-mustbeloggedin-uploadstash": "上傳儲藏僅對已登入使用者可用。",
        "apierror-mustbeloggedin": "您必須登入才能$1。",
+       "apierror-mustbeposted": "<kbd>$1</kbd> 模組需要 POST 請求。",
        "apierror-nochanges": "沒有請求的更改。",
        "apierror-nodeleteablefile": "沒有這樣檔案的舊版本。",
        "apierror-noedit-anon": "匿名使用者不可編輯頁面。",
        "apierror-nouploadmodule": "未設定上傳模組。",
        "apierror-opensearch-json-warnings": "警告不能以 OpenSearch JSON 格式表示。",
        "apierror-pagecannotexist": "命名空間不允許實際頁面。",
+       "apierror-pagelang-disabled": "此 wiki 不允許更改頁面的語言。",
        "apierror-paramempty": "參數 <var>$1</var> 不能為空。",
        "apierror-parsetree-notwikitext": "<kbd>prop=parsetree</kbd> 僅支援用於 wiki 文字內容。",
        "apierror-parsetree-notwikitext-title": "<kbd>prop=parsetree</kbd> 僅支援用於 wiki 文字內容。$1使用內容模組 $2。",
        "apierror-permissiondenied": "您沒有權限$1。",
        "apierror-permissiondenied-generic": "權限不足。",
+       "apierror-permissiondenied-patrolflag": "您需要 <code>patrol</code> 或 <code>patrolmarks</code> 權限來請求巡查標記。",
        "apierror-permissiondenied-unblock": "您沒有權限來解封使用者。",
        "apierror-prefixsearchdisabled": "前綴搜尋在 Miser 模式裡被停用。",
+       "apierror-promised-nonwrite-api": "HTTP 標頭 <code>Promise-Non-Write-API-Action</code> 不能發送至寫入模式 API 模組。",
        "apierror-protect-invalidaction": "無效的保護類型「$1」。",
        "apierror-protect-invalidlevel": "無效的保護層級「$1」。",
        "apierror-readapidenied": "您需要有閱讀權限來使用此模組。",
        "apierror-readonly": "Wiki 目前為唯讀模式。",
        "apierror-reauthenticate": "於本工作階段還未核對身分,請重新核對。",
+       "apierror-revdel-mutuallyexclusive": "同一欄位不可同時用在 <var>hide</var> 與 <var>show</var>。",
        "apierror-revdel-needtarget": "此 RevDel 類型需要目標標題。",
+       "apierror-revdel-paramneeded": "至少需要 <var>hide</var> 與/或 <var>show</var> 其中的值。",
+       "apierror-revisions-badid": "查無參數 <var>$1</var> 的修訂。",
        "apierror-revwrongpage": "r$1 不是$2的修訂。",
        "apierror-searchdisabled": "<var>$1</var>搜尋已停用。",
        "apierror-sectionreplacefailed": "無法合併更新的章節。",
+       "apierror-sectionsnotsupported": "內容模組 $1 不支援段落。",
+       "apierror-sectionsnotsupported-what": "$1 不支援段落。",
        "apierror-show": "不正確的參數 - 不可提供互斥值。",
        "apierror-sizediffdisabled": "大小差異功能在 Miser 模式裡已停用。",
        "apierror-spamdetected": "您的編輯被拒絕,因為有包含部份垃圾訊息內容:<code>$1</code>。",
        "apierror-stashzerolength": "檔案長度為零,且無法儲存於儲藏:$1。",
        "apierror-systemblocked": "您已被 MediaWiki 給自動封鎖。",
        "apierror-timeout": "伺服器未有在預計的時間內回應。",
+       "apierror-toomanyvalues": "替參數 <var>$1</var> 提供太多的值。限制為 $2。",
+       "apierror-unknownaction": "指定的操作 <kbd>$1</kbd> 無法識別出。",
        "apierror-unknownerror-editpage": "不明編輯頁面錯誤:$1。",
        "apierror-unknownerror-nocode": "不明錯誤。",
        "apierror-unknownerror": "不明錯誤:\"$1\"。",
        "apierror-unknownformat": "無法識別的格式\"$1\"。",
        "apierror-unrecognizedparams": "無法識別的{{PLURAL:$2|參數|參數}}:$1。",
+       "apierror-unrecognizedvalue": "無法識別參數 <var>$1</var> 的值:$2。",
+       "apierror-unsupportedrepo": "本地端檔案儲存庫不支援查詢所有圖片。",
+       "apierror-upload-filekeyneeded": "當 <var>offset</var> 不為零時,需提供 <var>filekey</var>。",
+       "apierror-upload-filekeynotallowed": "當 <var>offset</var> 為零時,不需提供 <var>filekey</var>。",
        "apierror-upload-inprogress": "來自儲藏的上傳已在進行中。",
        "apierror-upload-missingresult": "狀態資料裡沒有結果。",
+       "apierror-urlparamnormal": "無法標準化$1的圖片參數。",
        "apierror-writeapidenied": "您不被允許透過 API 來編輯此 wiki。",
+       "apiwarn-alldeletedrevisions-performance": "為了在產生標題時能有更好效能,請設定 <kbd>$1dir=newer</kbd>。",
+       "apiwarn-badurlparam": "無法解析$2的 <var>$1urlparam</var>。這僅能用在寬度與高度。",
        "apiwarn-compare-nocontentmodel": "沒有可確定的內容模組,假定為 $1。",
        "apiwarn-deprecation-httpsexpected": "當應為 HTTPS 時,HTTP 要被使用。",
+       "apiwarn-deprecation-parameter": "參數 <var>$1</var> 已棄用。",
+       "apiwarn-deprecation-purge-get": "透過 GET 方式使用的 <kbd>action=purge</kbd> 已棄用,請以 POST 替代。",
+       "apiwarn-deprecation-withreplacement": "<kbd>$1</kbd> 已棄用,請改用 <kbd>$2</kbd>。",
+       "apiwarn-difftohidden": "無法對 r$1 比較差異:內容被隱蔵。",
+       "apiwarn-errorprinterfailed": "錯誤列印失敗。將在沒有參數的情況下重試。",
+       "apiwarn-ignoring-invalid-templated-value": "當處理模板參數時,忽略在 <var>$1</var> 的值 <kbd>$2</kbd>。",
        "apiwarn-invalidcategory": "「$1」不是一個分類。",
        "apiwarn-invalidtitle": "「$1」不是一個有效標題。",
+       "apiwarn-invalidxmlstylesheetext": "樣式表應要有 <code>.xsl</code> 副檔名。",
        "apiwarn-invalidxmlstylesheet": "指定了無效或不存在的樣式表。",
        "apiwarn-invalidxmlstylesheetns": "樣式表應在 {{ns:MediaWiki}} 命名空間。",
        "apiwarn-notfile": "「$1」不是一個檔案。",
        "apiwarn-validationfailed-badpref": "不是有效的偏好設定。",
        "apiwarn-validationfailed-cannotset": "不能透過此模組設定。",
        "apiwarn-validationfailed": "<kbd>$1</kbd>驗證錯誤:$2",
+       "apiwarn-wgDebugAPI": "<strong>安全警告</strong>:<var>$wgDebugAPI</var> 已啟用。",
        "api-feed-error-title": "錯誤($1)",
        "api-credits-header": "製作群",
        "api-credits": "API 開發人員:\n* Roan Kattouw (首席開發者 Sep 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (創立者,首席開發者 Sep 2006–Sep 2007)\n* Brad Jorsch (首席開發者 2013–present)\n\n請傳送您的評論、建議以及問題至 mediawiki-api@lists.wikimedia.org\n或者回報問題至 https://phabricator.wikimedia.org/。"
index 3ce682b..43d70e6 100644 (file)
@@ -112,7 +112,7 @@ class BlockRestriction {
                $blockIds = array_keys( $restrictionList );
                if ( !empty( $blockIds ) ) {
                        $result = $dbw->select(
-                               [ 'ipblocks_restrictions', 'page' ],
+                               [ 'ipblocks_restrictions' ],
                                [ 'ir_ipb_id', 'ir_type', 'ir_value' ],
                                [ 'ir_ipb_id' => $blockIds ],
                                __METHOD__,
index c6882c4..117a8fb 100644 (file)
@@ -1285,7 +1285,7 @@ class HTMLForm extends ContextSource {
                        if ( $status->isGood() ) {
                                $elementstr = '';
                        } else {
-                               $elementstr = $this->getOutput()->parse(
+                               $elementstr = $this->getOutput()->parseAsInterface(
                                        $status->getWikiText()
                                );
                        }
index 6c1f2ec..950aaf7 100644 (file)
@@ -197,7 +197,7 @@ class WebInstallerOutput {
         * @return string
         */
        private function getCssUrl() {
-               return Html::linkedStyle( $_SERVER['PHP_SELF'] . '?css=1' );
+               return Html::linkedStyle( $this->parent->getUrl( [ 'css' => 1 ] ) );
        }
 
        public function useShortHeader( $use = true ) {
index c7f9b27..9e7e179 100644 (file)
        "config-type-mysql": "MariaDB, MySQL o compatible",
        "config-type-mssql": "Microsoft SQL Server",
        "config-support-info": "MediaWiki és compatible amb els següents sistemes de bases de dades:\n$1\nSi el sistema de bases de dades que intenteu utilitzar no apareix a la llista, seguiu les instruccions enllaçades més amunt per habilitar el suport.",
-       "config-header-mysql": "Paràmetres de MySQL",
+       "config-header-mysql": "Paràmetres de MariaDB/MySQL",
        "config-header-postgres": "Paràmetres del PostgreSQL",
        "config-header-sqlite": "Paràmetres de l'SQLite",
        "config-header-oracle": "Paràmetres de l'Oracle",
        "config-db-web-create": "Crea el compte si no existeix encara",
        "config-db-web-no-create-privs": "El compte que heu especificat a la instal·lació no té suficients privilegis per crear un compte. El compte que especifiqueu aquí ja ha d'existir.",
        "config-mysql-engine": "Motor d'emmagatzemament:",
-       "config-mysql-innodb": "InnoDB",
+       "config-mysql-innodb": "InnoDB (recomanat)",
        "config-mysql-myisam": "MyISAM",
        "config-mssql-auth": "Tipus d'autenticació:",
        "config-mssql-sqlauth": "Autenticació de l’SQL Server",
        "config-cache-accel": "Emmagatzemament en memòria cau d'objectes de PHP (APC, APCu, XCache o WinCache)",
        "config-cache-memcached": "Utilitza Memcached (requereix una instal·lació i configuració addicionals)",
        "config-memcached-servers": "Servidors de Memcache:",
+       "config-memcache-needservers": "Heu seleccionat Memcached per al tipus de memòria cau, però no n'heu especificat cap servidor.",
        "config-memcache-badip": "Heu introduït una adreça IP no vàlida per al Memcached: $1.",
        "config-memcache-noport": "No heu especificat un port per utilitzar el servidor Memcached: $1.\nSi no coneixeu el port, per defecte és 11211.",
        "config-memcache-badport": "Els números de port de Memcached han de ser entre $1 i $2.",
        "config-nofile": "No s'ha pogut trobar el fitxer «$1». S'ha suprimit?",
        "config-extension-link": "Sabíeu que el vostre wiki permet l'ús d'[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensions]?\n\nPodeu navegar les [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensions per categoria] o la [https://www.mediawiki.org/wiki/Extension_Matrix matriu d'extensions] per a veure'n una llista sencera.",
        "config-skins-screenshots": "$1 (captures de pantalla: $2)",
+       "config-extensions-requires": "$1 (necessita $2)",
        "config-screenshot": "captura de pantalla",
+       "config-extension-not-found": "No s'ha pogut trobar el fitxer de registre de l'extensió «$1»",
        "mainpagetext": "<strong>MediaWiki s'ha instal·lat.</strong>",
        "mainpagedocfooter": "Consulteu la [https://meta.wikimedia.org/wiki/Help:Contents Guia d'Usuari] per a més informació sobre com utilitzar aquest programari wiki.\n\n== Primers passos ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Llista de paràmetres configurables]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ PMF del MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de correu per a anuncis del MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traducció de MediaWiki en la vostra llengua]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprengueu com combatre la brossa que pot atacar el vostre wiki]"
 }
index 91b9cab..66f555a 100644 (file)
        "config-help": "справка",
        "config-help-tooltip": "нажмите, чтобы развернуть",
        "config-nofile": "Файл \"$1\" не удается найти. Он был удален?",
-       "config-extension-link": "Знаете ли вы, что ваш вики-проект поддерживает [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions расширения]?\n\nВы можете просмотреть [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category расширения по категориям] или [https://www.mediawiki.org/wiki/Extension_Matrix матрицу расширений], чтобы увидеть их полный список.",
+       "config-extension-link": "Знаете ли вы, что ваш вики-проект поддерживает [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions расширения]?\n\nВы можете просмотреть [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category расширения по категориям]",
        "config-skins-screenshots": "$1 (скриншоты: $2)",
        "config-extensions-requires": "$1 (требуется $2)",
        "config-screenshot": "скриншот",
index 15ac139..5ed243c 100644 (file)
        "config-help": "pomoć",
        "config-help-tooltip": "kliknite da biste proširili",
        "config-nofile": "Nije moguće pronaći datoteku „$1”. Da nije izbrisana?",
-       "config-extension-link": "Jeste li znali da vaš viki podržava [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions dodatke]?\n\nMožete ih pregledati [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category po kategoriji] ili pomoću [https://www.mediawiki.org/wiki/Extension_Matrix Extension Matrix-a] da biste videli potpuni spisak.",
+       "config-extension-link": "Jeste li znali da vaš viki podržava [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions dodatke]?\n\nMožete ih pregledati [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category po kategoriji].",
        "config-skins-screenshots": "„$1” (snimci ekrana: $2)",
        "config-skins-screenshot": "$1 ($2)",
        "config-extensions-requires": "$1 (zahteva $2)",
index 2852265..27e6924 100644 (file)
@@ -427,7 +427,7 @@ abstract class FileBackend implements LoggerAwareInterface {
                }
 
                /** @noinspection PhpUnusedLocalVariableInspection */
-               $scope = $this->getScopedPHPBehaviorForOps(); // try to ignore client aborts
+               $scope = ScopedCallback::newScopedIgnoreUserAbort(); // try to ignore client aborts
 
                return $this->doOperationsInternal( $ops, $opts );
        }
@@ -665,7 +665,7 @@ abstract class FileBackend implements LoggerAwareInterface {
                }
 
                /** @noinspection PhpUnusedLocalVariableInspection */
-               $scope = $this->getScopedPHPBehaviorForOps(); // try to ignore client aborts
+               $scope = ScopedCallback::newScopedIgnoreUserAbort(); // try to ignore client aborts
 
                return $this->doQuickOperationsInternal( $ops );
        }
@@ -812,7 +812,7 @@ abstract class FileBackend implements LoggerAwareInterface {
                        return $this->newStatus( 'backend-fail-readonly', $this->name, $this->readOnly );
                }
                /** @noinspection PhpUnusedLocalVariableInspection */
-               $scope = $this->getScopedPHPBehaviorForOps(); // try to ignore client aborts
+               $scope = ScopedCallback::newScopedIgnoreUserAbort(); // try to ignore client aborts
                return $this->doPrepare( $params );
        }
 
@@ -843,7 +843,7 @@ abstract class FileBackend implements LoggerAwareInterface {
                        return $this->newStatus( 'backend-fail-readonly', $this->name, $this->readOnly );
                }
                /** @noinspection PhpUnusedLocalVariableInspection */
-               $scope = $this->getScopedPHPBehaviorForOps(); // try to ignore client aborts
+               $scope = ScopedCallback::newScopedIgnoreUserAbort(); // try to ignore client aborts
                return $this->doSecure( $params );
        }
 
@@ -876,7 +876,7 @@ abstract class FileBackend implements LoggerAwareInterface {
                        return $this->newStatus( 'backend-fail-readonly', $this->name, $this->readOnly );
                }
                /** @noinspection PhpUnusedLocalVariableInspection */
-               $scope = $this->getScopedPHPBehaviorForOps(); // try to ignore client aborts
+               $scope = ScopedCallback::newScopedIgnoreUserAbort(); // try to ignore client aborts
                return $this->doPublish( $params );
        }
 
@@ -902,7 +902,7 @@ abstract class FileBackend implements LoggerAwareInterface {
                        return $this->newStatus( 'backend-fail-readonly', $this->name, $this->readOnly );
                }
                /** @noinspection PhpUnusedLocalVariableInspection */
-               $scope = $this->getScopedPHPBehaviorForOps(); // try to ignore client aborts
+               $scope = ScopedCallback::newScopedIgnoreUserAbort(); // try to ignore client aborts
                return $this->doClean( $params );
        }
 
@@ -912,24 +912,6 @@ abstract class FileBackend implements LoggerAwareInterface {
         */
        abstract protected function doClean( array $params );
 
-       /**
-        * Enter file operation scope.
-        * This just makes PHP ignore user aborts/disconnects until the return
-        * value leaves scope. This returns null and does nothing in CLI mode.
-        *
-        * @return ScopedCallback|null
-        */
-       final protected function getScopedPHPBehaviorForOps() {
-               if ( PHP_SAPI != 'cli' ) { // https://bugs.php.net/bug.php?id=47540
-                       $old = ignore_user_abort( true ); // avoid half-finished operations
-                       return new ScopedCallback( function () use ( $old ) {
-                               ignore_user_abort( $old );
-                       } );
-               }
-
-               return null;
-       }
-
        /**
         * Check if a file exists at a storage path in the backend.
         * This returns false if only a directory exists at the path.
index 1612f41..d213dc9 100644 (file)
@@ -257,7 +257,7 @@ abstract class LBFactory implements ILBFactory {
                        );
                }
                /** @noinspection PhpUnusedLocalVariableInspection */
-               $scope = $this->getScopedPHPBehaviorForCommit(); // try to ignore client aborts
+               $scope = ScopedCallback::newScopedIgnoreUserAbort(); // try to ignore client aborts
                // Run pre-commit callbacks and suppress post-commit callbacks, aborting on failure
                do {
                        $count = 0; // number of callbacks executed this iteration
@@ -707,23 +707,6 @@ abstract class LBFactory implements ILBFactory {
                }
        }
 
-       /**
-        * Make PHP ignore user aborts/disconnects until the returned
-        * value leaves scope. This returns null and does nothing in CLI mode.
-        *
-        * @return ScopedCallback|null
-        */
-       final protected function getScopedPHPBehaviorForCommit() {
-               if ( PHP_SAPI != 'cli' ) { // https://bugs.php.net/bug.php?id=47540
-                       $old = ignore_user_abort( true ); // avoid half-finished operations
-                       return new ScopedCallback( function () use ( $old ) {
-                               ignore_user_abort( $old );
-                       } );
-               }
-
-               return null;
-       }
-
        function __destruct() {
                $this->destroy();
        }
index b2b2391..7721707 100644 (file)
@@ -1395,7 +1395,7 @@ class LoadBalancer implements ILoadBalancer {
                $failures = [];
 
                /** @noinspection PhpUnusedLocalVariableInspection */
-               $scope = $this->getScopedPHPBehaviorForCommit(); // try to ignore client aborts
+               $scope = ScopedCallback::newScopedIgnoreUserAbort(); // try to ignore client aborts
 
                $restore = ( $this->trxRoundId !== false );
                $this->trxRoundId = false;
@@ -1960,23 +1960,6 @@ class LoadBalancer implements ILoadBalancer {
                }
        }
 
-       /**
-        * Make PHP ignore user aborts/disconnects until the returned
-        * value leaves scope. This returns null and does nothing in CLI mode.
-        *
-        * @return ScopedCallback|null
-        */
-       final protected function getScopedPHPBehaviorForCommit() {
-               if ( PHP_SAPI != 'cli' ) { // https://bugs.php.net/bug.php?id=47540
-                       $old = ignore_user_abort( true ); // avoid half-finished operations
-                       return new ScopedCallback( function () use ( $old ) {
-                               ignore_user_abort( $old );
-                       } );
-               }
-
-               return null;
-       }
-
        function __destruct() {
                // Avoid connection leaks for sanity
                $this->disable();
index 721d1fb..3dc2eeb 100644 (file)
@@ -5133,7 +5133,7 @@ class Parser {
                                                                $alt = $this->stripAltText( $match, false );
                                                                break;
                                                        case 'gallery-internal-link':
-                                                               $linkValue = strip_tags( $this->replaceLinkHoldersText( $match ) );
+                                                               $linkValue = $this->stripAltText( $match, false );
                                                                if ( preg_match( '/^-{R|(.*)}-$/', $linkValue ) ) {
                                                                        // Result of LanguageConverter::markNoConversion
                                                                        // invoked on an external link.
@@ -5329,7 +5329,10 @@ class Parser {
                                                                $value = $this->stripAltText( $value, $holders );
                                                                break;
                                                        case 'link':
-                                                               list( $paramName, $value ) = $this->parseLinkParameter( $value );
+                                                               list( $paramName, $value ) =
+                                                                       $this->parseLinkParameter(
+                                                                               $this->stripAltText( $value, $holders )
+                                                                       );
                                                                if ( $paramName ) {
                                                                        $validated = true;
                                                                        if ( $paramName === 'no-link' ) {
index 4521a53..077fbf1 100644 (file)
@@ -100,7 +100,7 @@ class SpecialMycontributions extends RedirectSpecialPage {
                parent::__construct( 'Mycontributions' );
                $this->mAllowedRedirectParams = [ 'limit', 'namespace', 'tagfilter',
                        'offset', 'dir', 'year', 'month', 'feed', 'deletedOnly',
-                       'nsInvert', 'associated', 'newOnly', 'topOnly' ];
+                       'nsInvert', 'associated', 'newOnly', 'topOnly', 'start', 'end' ];
        }
 
        /**
index be0d3fa..6a01b0c 100644 (file)
@@ -555,15 +555,9 @@ class SpecialUndelete extends SpecialPage {
                $diffContext->setWikiPage( WikiPage::factory( $currentRev->getTitle() ) );
 
                $diffEngine = $currentRev->getContentHandler()->createDifferenceEngine( $diffContext );
+               $diffEngine->setRevisions( $previousRev->getRevisionRecord(), $currentRev->getRevisionRecord() );
                $diffEngine->showDiffStyle();
-
-               $formattedDiff = $diffEngine->generateContentDiffBody(
-                       $previousRev->getContent( Revision::FOR_THIS_USER, $this->getUser() ),
-                       $currentRev->getContent( Revision::FOR_THIS_USER, $this->getUser() )
-               );
-
-               $formattedDiff = $diffEngine->addHeader(
-                       $formattedDiff,
+               $formattedDiff = $diffEngine->getDiff(
                        $this->diffHeader( $previousRev, 'o' ),
                        $this->diffHeader( $currentRev, 'n' )
                );
index 791ffb1..0df4cd0 100644 (file)
--- a/index.php
+++ b/index.php
@@ -34,7 +34,7 @@
 // dependencies. Using dirname( __FILE__ ) here because __DIR__ is PHP5.3+.
 // phpcs:ignore MediaWiki.Usage.DirUsage.FunctionFound
 require_once dirname( __FILE__ ) . '/includes/PHPVersionCheck.php';
-wfEntryPointCheck( 'index.php' );
+wfEntryPointCheck( 'html', dirname( $_SERVER['SCRIPT_NAME'] ) );
 
 require __DIR__ . '/includes/WebStart.php';
 
index 1002158..bf67318 100644 (file)
        "action-userrights-interwiki": "Digər vikilərdəki istifadəçilərin istifadəçi hüquqlarını dəyişdir",
        "action-siteadmin": "Məlumatlar bazasının bloklanması və blokun götürülməsi",
        "action-sendemail": "e-məktub göndər",
+       "action-purge": "bu səhifənin yaddaşını təmizlə",
        "nchanges": "$1 {{PLURAL:$1|dəyişiklik|dəyişiklik}}",
        "enhancedrc-history": "tarixçə",
        "recentchanges": "Son dəyişikliklər",
        "scarytranscludetoolong": "[URL uzundur]",
        "deletedwhileediting": "'''Diqqət!''' Bu səhifə siz redaktə etməyə başladıqdan sonra silinmişdir!",
        "recreate": "Yeniləmək",
+       "confirm-purge-title": "Bu səhifənin yaddaşını təmizlə",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Bu səhifə keşdən (cache) silinsin?",
        "confirm-watch-button": "OK",
index 5e40131..9e1522a 100644 (file)
        "upload-curl-error28-text": "Сайт доўга не адказвае.\nКалі ласка, упэўніцеся што сайт працуе, і празь некаторы час паспрабуйце яшчэ раз.\nВы можаце паспрабаваць пад час меншай загрузкі сайта.",
        "license": "Ліцэнзія:",
        "license-header": "Ліцэнзія",
-       "nolicense": "Ð\9dÑ\8f Ð²Ñ\8bбÑ\80анаÑ\8f",
+       "nolicense": "Ð\9dÑ\96Ñ\87ога Ð½Ñ\8f Ð²Ñ\8bбÑ\80ана",
        "licenses-edit": "Рэдагаваць парамэтры ліцэнзіі",
        "license-nopreview": "(Прагляд недаступны)",
        "upload_source_url": "(выбраны вамі файл з слушнага і агульнадаступнага URL-адрасу)",
        "mw-widgets-titleinput-description-redirect": "перанакіраваньне на $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Дадаць катэгорыю…",
        "mw-widgets-usersmultiselect-placeholder": "Дадаць яшчэ…",
+       "mw-widgets-titlesmultiselect-placeholder": "Дадаць яшчэ…",
        "date-range-from": "З даты:",
        "date-range-to": "Да даты:",
        "sessionmanager-tie": "Немагчыма выкарыстаць адначасова некалькі тыпаў аўтэнтыфікацыі: $1.",
index b4f3b48..dcb9dcb 100644 (file)
        "customcssprotected": "У вас няма дазволу рэдагаваць гэтую CSS-старонку, бо яна ўтрымлівае асабістыя настройкі іншага ўдзельніка.",
        "customjsonprotected": "У вас няма дазволу рэдагаваць гэтую JSON-старонку, таму што яна ўтрымлівае асабістыя настройкі іншага ўдзельніка.",
        "customjsprotected": "У вас няма дазволу рэдагаваць гэтую JavaScript-старонку, таму што яна ўтрымлівае асабістыя настройкі іншага ўдзельніка.",
+       "sitecssprotected": "У Вас няма правоў на рэдагаванне гэтай JavaScript-старонкі, бо яе змяненне можа паўплываць на ўсіх наведвальнікаў.",
+       "sitejsonprotected": "У Вас няма правоў на рэдагаванне гэтай JSON-старонкі, бо яе змяненне можа паўплываць на ўсіх наведвальнікаў.",
+       "sitejsprotected": "У Вас няма правоў на рэдагаванне гэтай JavaScript-старонкі, бо яе змяненне можа паўплываць на ўсіх наведвальнікаў.",
        "mycustomcssprotected": "Вам не дазволена рэдагаванне гэтай старонкі CSS.",
        "mycustomjsonprotected": "Вам не дазволена рэдагаванне гэтай JSON-старонкі.",
        "mycustomjsprotected": "Вам не дазволена рэдагаванне гэтай старонкі JavaScript.",
        "searchprofile-articles": "Артыкулы",
        "searchprofile-images": "Мультымедыя",
        "searchprofile-everything": "Усё",
-       "searchprofile-advanced": "Складана",
+       "searchprofile-advanced": "Ð\9fаÑ\88Ñ\8bÑ\80анÑ\8b",
        "searchprofile-articles-tooltip": "Шукаць у $1",
        "searchprofile-images-tooltip": "Шукаць файлы",
        "searchprofile-everything-tooltip": "Шукаць паўсюль (таксама ў размовах)",
        "prefs-watchlist-edits": "Колькасць правак для паказу ў спісе назірання:",
        "prefs-watchlist-edits-max": "Максімум: 1000",
        "prefs-watchlist-token": "Сакрэтны ключ для RSS:",
+       "prefs-watchlist-managetokens": "Кіраванне токенамі",
        "prefs-misc": "Рознае",
        "prefs-resetpass": "Змяніць пароль",
        "prefs-changeemail": "Змяніць або выдаліць адрас электроннай пошты",
        "recentchangescount": "Перадвызначаная колькасць правак для паказу:",
        "prefs-help-recentchangescount": "Максімальная колькасць: 1000",
        "prefs-help-watchlist-token2": "Гэта сакрэтны ключ да сеціўнай стужкі з Вашага спісу назірання.\nКожны, хто ведае гэты ключ, будзе мець магчымасць чытаць Ваш спіс назірання, таму не дзяліцеся ім.\nКалі трэба, можна [[Special:ResetTokens|скінуць яго]].",
+       "prefs-help-tokenmanagement": "Вы можаце праглядзець і аднавіць для свайго ўліковага запісу сакрэтны ключ, які можа трамыць доступ да вэб-канала Вашага спіса назірання. Кожны, хто ведае ключ, можа прачытаць Ваш спіс назірання, таму не дзяліцеся ім ні з кім.",
        "savedprefs": "Настройкі замацаваныя.",
        "savedrights": "Групы {{GENDER:$1|ўдзельніка|ўдзельніцы}} $1 захаваныя.",
        "timezonelegend": "Часавы пояс:",
        "rcfilters-other-review-tools": "Іншыя інструменты праверкі",
        "rcfilters-group-results-by-page": "Групіраваць вынікі паводле старонкі",
        "rcfilters-activefilters": "Актыўныя фільтры",
+       "rcfilters-activefilters-hide": "Схаваць",
        "rcfilters-activefilters-show": "Паказаць",
+       "rcfilters-activefilters-hide-tooltip": "Схаваць вобласць актыўных фільтраў",
        "rcfilters-advancedfilters": "Пашыраныя фільтры",
        "rcfilters-limit-title": "Вынікі для паказу",
        "rcfilters-limit-and-date-label": "$1 {{PLURAL:$1|змена|змены|змен}}, $2",
        "rcfilters-watchlist-showupdated": "Змены старонак, якія Вы не наведвалі з таго часу, як яны адбыліся, выдзелены <strong>тлустым</strong> і пазначаны маркерам.",
        "rcfilters-preference-label": "Схаваць палепшаную версію «Апошніх змен»",
        "rcfilters-preference-help": "Адкатвае рэдызайн інтэрфейсу 2017 года і ўсе інструменты, дададзеныя з тых часоў.",
+       "rcfilters-watchlist-preference-label": "Схаваць палепшаную версію спіса назірання",
+       "rcfilters-watchlist-preference-help": "Адкатвае рэдызайн інтэрфейсу 2017 года і ўсе інструменты, дададзеныя з тых часоў.",
        "rcnotefrom": "Ніжэй {{PLURAL:$5|паказана змяненне|паказаны змены}} з <strong>$3, $4</strong> (не больш за <strong>$1</strong>).",
        "rclistfrom": "Паказаць змены з $3 $2",
        "rcshowhideminor": "$1 дробныя праўкі",
        "speciallogtitlelabel": "Мэта (назва ці {{ns:user}}:імя_ўдзельніка для ўдзельніка):",
        "log": "Журналы",
        "logeventslist-submit": "Паказаць",
+       "logeventslist-more-filters": "Паказаць дадатковыя журналы:",
+       "logeventslist-patrol-log": "Журнал догляду",
+       "logeventslist-tag-log": "Журнал бірак",
        "all-logs-page": "Усе публічныя журналы",
        "alllogstext": "Супольны паказ усіх магчымых журналаў на пляцоўцы {{SITENAME}}.\nМожна звузіць аб'ём паказу, выбіраючы тып журнала, імя ўдзельніка (з улікам рэгістру літар) або старонкі (таксама з улікам рэгістру).",
        "logempty": "Нічога адпаведнага ў журнале не знойдзена.",
        "uctop": "(апошн.)",
        "month": "Ад месяца (і раней):",
        "year": "Ад года (і раней):",
+       "date": "Ад даты (і раней):",
        "sp-contributions-newbies": "Паказваць толькі ўклады з новых рахункаў",
        "sp-contributions-newbies-sub": "З новых рахункаў",
        "sp-contributions-newbies-title": "Уклады ўдзельнікаў з новых рахункаў",
index c11a872..76df5ff 100644 (file)
        "pageinfo-category-files": "Брой файлове",
        "pageinfo-user-id": "Потребителски номер",
        "pageinfo-file-hash": "Хеш-стойност",
+       "pageinfo-view-protect-log": "Преглед на дневника на защитата за тази страница.",
        "markaspatrolleddiff": "Отбелязване на редакцията като патрулирана",
        "markaspatrolledtext": "Отбелязване на редакцията като проверена",
        "markaspatrolledtext-file": "Отбелязване на версията на файла като проверена",
index 3ee7556..3a1731e 100644 (file)
        "ipb-disableusertalk": "এই ব্যবহারকারীকে বাধাদানকৃত অবস্থায় নিজের আলাপ পাতায় সম্পাদনা করা থেকে বিরত রাখো",
        "ipb-change-block": "একই সেটিংসসহ ব্যবহারকারীকে পুনঃবাধা দিন",
        "ipb-confirm": "বাধা নিশ্চিতকরণ",
+       "ipb-sitewide": "সাইটব্যাপী",
+       "ipb-partial": "আংশিক",
+       "ipb-type-label": "ধরন",
+       "ipb-pages-label": "পাতা",
        "badipaddress": "আইপি (IP) ঠিকানাটি অগ্রহনযোগ্য",
        "blockipsuccesssub": "বাধা সফল",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] কে বাধা দেয়া হয়েছে।<br />\nবাধা দেয়া পুনর্বিবেচনা করতে হলে [[Special:BlockList|বাধা দেয়ার তালিকাটি]] দেখুন।",
        "mw-widgets-titleinput-description-redirect": "$1-এ পুনঃনির্দেশিত",
        "mw-widgets-categoryselector-add-category-placeholder": "একটি বিষয়শ্রেণী যোগ করুন...",
        "mw-widgets-usersmultiselect-placeholder": "আরও যোগ করুন...",
+       "mw-widgets-titlesmultiselect-placeholder": "আরও যোগ করুন...",
        "date-range-from": "এ তারিখ থেকে:",
        "date-range-to": "এ তারিখ পর্যন্ত:",
        "sessionmanager-tie": "একাধিক অনুরোধের প্রমাণীকরণের ধরন একত্রিত করা যাবে না: $1।",
index 586f07f..5818042 100644 (file)
        "customjsprotected": "No teniu permisos per editar la pàgina JavaScript perquè conté els paràmetres personals d'un altre usuari.",
        "sitecssprotected": "No teniu permisos per modificar aquesta pàgina CSS perquè pot afectar a tots els visitants.",
        "sitejsonprotected": "No teniu permisos per modificar aquesta pàgina JSON perquè pot afectar a tots els visitants.",
+       "sitejsprotected": "No teniu permisos per modificar aquesta pàgina de Javascript perquè podria afectar tots els visitants.",
        "mycustomcssprotected": "No tens permís per editar aquesta pàgina CSS.",
        "mycustomjsonprotected": "No teniu permisos per editar aquesta pàgina JSON.",
        "mycustomjsprotected": "No tens permís per editar aquesta pàgina JavaScript.",
        "botpasswords-invalid-name": "El nom d'usuari especificat no conté el separador de contrasenya de bot («$1»).",
        "botpasswords-not-exist": "L'usuari «$1» no té una contrasenya de bot anomenada «$2».",
        "botpasswords-needs-reset": "Cal reinicialitzar la contrasenya del robot «$2» que pertany a {{GENDER:$1|l’usuari|la usuària}} «$1».",
+       "botpasswords-locked": "No podeu iniciar una sessió amb una contrasenya de bot perquè el vostre compte està bloquejat.",
        "resetpass_forbidden": "No poden canviar-se les contrasenyes",
        "resetpass_forbidden-reason": "Les contrasenyes no es poden canviar: $1",
        "resetpass-no-info": "Heu d'estar registrats en un compte per a poder accedir directament a aquesta pàgina.",
        "ipb-disableusertalk": "Impedeix que aquest usuari pugui modificar la seva pàgina de discussió mentre dura el blocatge",
        "ipb-change-block": "Torna a blocar l'usuari amb aquests paràmetres",
        "ipb-confirm": "Confirma el blocatge",
+       "ipb-partial": "Parcial",
+       "ipb-type-label": "Tipus",
+       "ipb-pages-label": "Pàgines",
        "badipaddress": "L'adreça IP no té el format correcte.",
        "blockipsuccesssub": "S'ha blocat amb èxit",
        "blockipsuccesstext": "S'ha {{GENDER:$1|blocat}} [[Special:Contributions/$1|$1]].<br />\nVegeu la [[Special:BlockList|llista de blocatges]] per revisar-los.",
        "autoblocklist-localblocks": "{{PLURAL:$1|Blocatge automàtic local|Blocatges automàtics locals}}",
        "autoblocklist-total-autoblocks": "Nombre total de blocatges automàtics: $1",
        "autoblocklist-empty": "La llista de blocatges automàtics és buida.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Un altre blocatge automàtic|Uns altres blocatges automàtics}}",
        "ipblocklist": "Usuaris blocats",
        "ipblocklist-legend": "Cerca un usuari blocat",
        "blocklist-userblocks": "Amaga blocatges de compte",
        "redirect-file": "Nom del fitxer",
        "redirect-logid": "ID de registre",
        "redirect-not-exists": "No s'ha trobat el valor",
+       "redirect-not-numeric": "Valor no numèric",
        "fileduplicatesearch": "Cerca fitxers duplicats",
        "fileduplicatesearch-summary": "Cerca fitxers duplicats d'acord amb el seu valor de resum.",
        "fileduplicatesearch-filename": "Nom del fitxer:",
        "mw-widgets-titleinput-description-redirect": "redirigeix a $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Afegeix una categoria...",
        "mw-widgets-usersmultiselect-placeholder": "Afegeix-ne més...",
+       "mw-widgets-titlesmultiselect-placeholder": "Afegeix-ne més...",
        "date-range-from": "De la data:",
        "date-range-to": "A la data:",
        "sessionmanager-tie": "No es poden combinar diferents tipus de sol·licituds d'autenticació: $1.",
index e122a07..a068372 100644 (file)
        "watchlistedit-raw-explain": "Dies sind die Einträge Ihrer Beobachtungsliste im Listenformat. Die Einträge können zeilenweise gelöscht oder hinzugefügt werden.\nPro Zeile ist ein Eintrag erlaubt.\nSobald Sie fertig sind, klicken Sie auf „{{int:Watchlistedit-raw-submit}}“.\nSie können auch die [[Special:EditWatchlist|Standardseite]] zum Bearbeiten benutzen.",
        "watchlistedit-raw-done": "Ihre Beobachtungsliste wurde gespeichert.",
        "watchlistedit-clear-explain": "Alle Seiten werden ausnahmslos von Ihrer Beobachtungsliste entfernt.",
-       "dberr-again": "Warten Sie einige Minuten und versuchen Sie dann neu zuladen.",
+       "dberr-again": "Warten Sie bitte einige Minuten und versuchen Sie dann die Seite erneut zu laden.",
        "dberr-usegoogle": "Sie könnten in der Zwischenzeit mit Google suchen.",
        "dberr-outofdate": "Beachten Sie, dass der Suchindex unserer Inhalte bei Google veraltet sein kann.",
        "feedback-bugcheck": "Super! Bitte überprüfen Sie noch, ob es sich hierbei nicht um einen bereits [$1 bekannten Fehler] handelt.",
index 5b21347..766f636 100644 (file)
        "permanentlink-revid": "Versionskennung",
        "permanentlink-submit": "Gehe zu Version",
        "dberr-problems": "Entschuldigung. Diese Seite hat momentan technische Schwierigkeiten.",
-       "dberr-again": "Warte einige Minuten und versuche dann neu zu laden.",
+       "dberr-again": "Warte bitte einige Minuten und versuche dann, die Seite erneut zu laden.",
        "dberr-info": "(Auf die Datenbank konnte nicht zugegriffen werden: $1)",
        "dberr-info-hidden": "(Auf die Datenbank konnte nicht zugegriffen werden)",
        "dberr-usegoogle": "Du könntest in der Zwischenzeit mit Google suchen.",
index 85fbc15..436c07a 100644 (file)
        "special-characters-title-endash": "en dash",
        "special-characters-title-emdash": "em dash",
        "special-characters-title-minus": "minus sign",
+       "visualeditor-viewpage-savewarning": "Are you sure you want to leave editing mode without saving first?",
+       "visualeditor-viewpage-savewarning-discard": "Discard edits",
+       "visualeditor-viewpage-savewarning-keep": "Continue editing",
+       "visualeditor-viewpage-savewarning-title": "Are you sure?",
        "mw-widgets-dateinput-no-date": "No date selected",
        "mw-widgets-dateinput-placeholder-day": "YYYY-MM-DD",
        "mw-widgets-dateinput-placeholder-month": "YYYY-MM",
index aac234e..93775f9 100644 (file)
        "filehist-comment": "Komento",
        "imagelinks": "Dosiera uzado",
        "linkstoimage": "La {{PLURAL:$1|jena paĝo|jenaj paĝoj}} ligas al ĉi tiu dosiero:",
-       "linkstoimage-more": "Pli ol $1 {{PLURAL:$1|paĝo|paĝoj}} ligas ĉi tiun dosieron.\nLa jena listo montras la {{PLURAL:$1|unua paĝligilo|unuaj $1 paĝligiloj}} al nur ĉi tiu dosiero.\n[[Special:WhatLinksHere/$2|Plena listo]] estas atingebla.",
+       "linkstoimage-more": "Pli ol $1 {{PLURAL:$1|paĝo|paĝoj}} ligas al tiu ĉi dosiero.\nLa jena listo montras {{PLURAL:$1|unuan paĝon|unuajn $1 paĝon}} kun nur tiu ĉi dosiero.\n[[Special:WhatLinksHere/$2|La plena listo]] estas atingebla.",
        "nolinkstoimage": "Neniu paĝo ligas al ĉi tiu dosiero.",
        "morelinkstoimage": "Vidi [[Special:WhatLinksHere/$1|pliajn ligilojn]] al ĉi tiu dosiero.",
        "linkstoimage-redirect": "$1 (alidirektilo al dosiero) $2",
index f0020d2..23952d3 100644 (file)
        "botpasswords-invalid-name": "Annetussa käyttäjätunnuksessa ei ole bottisalasanan erotinta (\"$1\").",
        "botpasswords-not-exist": "Käyttäjällä \"$1\" ei ole bottisalasanaa nimellä \"$2\".",
        "botpasswords-needs-reset": "Bottisalasana {{GENDER:$1|käyttäjän}} \"$1\" bottinimelle \"$2\" täytyy nollata.",
+       "botpasswords-locked": "Et voi kirjautua sisään bottisalasanalla, koska tunnuksesi on lukittu.",
        "resetpass_forbidden": "Salasanoja ei voi vaihtaa.",
        "resetpass_forbidden-reason": "Salasanoja ei voi muuttaa: $1",
        "resetpass-no-info": "Et voi nähdä tätä sivua kirjautumatta sisään.",
        "subject-preview": "Aiheotsikon esikatselu:",
        "previewerrortext": "Muokkaustesi esikatselun toteuttamisessa on tapahtunut virhe.",
        "blockedtitle": "Käyttäjä on estetty",
+       "blocked-email-user": "<strong>Käyttäjänimeäsi on estetty lähettämästä sähköpostia. Voit silti muokata muita sivuja tässä wikissä.</strong> Voit katsoa eston täydelliset tiedot [[Special:MyContributions|käyttäjän muokkauksista]].\n\nEston antoi $1.\n\nAnnettu syy on <em>$2</em>.\n\n* Eston alkamisaika: $8\n* Eston päättymisaika: $6\n* Kohde: $7\n* Eston tunnus #$5",
+       "blockedtext-partial": "<strong>Käyttäjänimesi tai IP-osoitteesi on estetty muokkaamasta tätä sivua.</strong> Voit katsoa eston täydelliset tiedot [[Special:MyContributions|käyttäjän muokkauksista]].\n\nEston antoi $1.\n\nAnnettu syy on <em>$2</em>.\n\n* Eston alkamisaika: $8\n* Eston päättymisaika: $6\n* Kohde: $7\n* Eston tunnus #$5",
        "blockedtext": "<strong>Käyttäjätunnuksesi tai IP-osoitteesi on estetty.</strong>\n\nEston on asettanut $1.\nAnnettu syy on <em>$2</em>.\n\n* Eston alkamisaika: $8\n* Eston päättymisaika: $6\n* Kohde: $7\n\nVoit keskustella ylläpitäjän $1 tai toisen [[{{MediaWiki:Grouppage-sysop}}|ylläpitäjän]] kanssa estosta.\nHuomaa, ettet voi lähettää sähköpostia {{GRAMMAR:genitive|{{SITENAME}}}} kautta, ellet ole asettanut olemassa olevaa sähköpostiosoitetta [[Special:Preferences|asetuksissa]] tai jos esto on asetettu koskemaan myös sähköpostin lähettämistä.\nIP-osoitteesi on $3 ja estotunnus on #$5.\nLiitä kaikki yllä olevat tiedot mahdollisiin kyselyihisi.",
        "autoblockedtext": "IP-osoitteesi on estetty automaattisesti, koska sitä on käyttänyt toinen käyttäjä, jonka on estänyt ylläpitäjä $1.\nAnnettu syy on:\n\n:<em>$2</em>\n\n* Eston alkamisaika: $8\n* Eston päättymisaika: $6\n* Kohde: $7\n\nVoit keskustella ylläpitäjän $1 tai toisen [[{{MediaWiki:Grouppage-sysop}}|ylläpitäjän]] kanssa estosta.\n\nHuomaa, ettet voi lähettää sähköpostia {{GRAMMAR:genitive|{{SITENAME}}}} kautta, ellet ole asettanut olemassa olevaa sähköpostiosoitetta [[Special:Preferences|asetuksissa]] tai jos esto on asetettu koskemaan myös sähköpostin lähettämistä.\n\nIP-osoitteesi on $3 ja estotunnus on #$5.\nLiitä kaikki yllä olevat tiedot mahdollisiin kyselyihisi.",
        "systemblockedtext": "Käyttäjätunnuksesi tai IP-osoitteesi on automaattisesti estetty MediaWikin toimesta.\nAnnettu syy on:\n\n:<em>$2</em>\n\n* Start of block: $8\n* Expiration of block: $6\n* Intended blockee: $7\n\nTämänhetkinen IP-osoitteesi on $3.\nOle hyvä ja liitä kaikki yllä olevat tiedot mahdollisiin kyselyihisi.",
        "movepage-moved": "'''$1 on siirretty nimelle $2'''",
        "movepage-moved-redirect": "Ohjaus luotiin.",
        "movepage-moved-noredirect": "Ohjausta ei luotu.",
+       "movepage-delete-first": "Kohdesivulla on liikaa muutoksia siirron yhteydessä poistettavaksi. Poista sivu ensin käsin ja yritä sitten uudelleen.",
        "articleexists": "Kohdesivu on jo olemassa, tai valittu nimi ei ole sopiva. Ole hyvä ja valitse uusi nimi.",
        "cantmove-titleprotected": "Sivua ei voi siirtää tälle nimelle, koska tämän nimisen sivun luonti on estetty.",
        "movetalk": "Siirrä myös keskustelusivu",
        "mcrundofailed": "Kumoaminen epäonnistui",
        "mcrundo-missingparam": "Tarvittavat parametrit puuttuvat pyynnöstä.",
        "mcrundo-changed": "Sivu on muuttunut siitä lähtien, kun katsoit tätä muokkausta. Arvioi uusi muokkaus.",
+       "mcrundo-parse-failed": "Uuden version jäsentäminen epäonnistui: $1",
        "percent": "$1&#160;%",
        "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← edellinen sivu",
        "passwordpolicies-policy-passwordcannotmatchusername": "Salasana ei saa olla sama kuin käyttäjänimi",
        "passwordpolicies-policy-passwordcannotmatchblacklist": "Salasana ei saa olla mustalla listalla",
        "passwordpolicies-policy-maximalpasswordlength": "Salasanan tulee olla lyhyempi kuin $1 {{PLURAL:$1|merkki|merkkiä}}",
-       "passwordpolicies-policy-passwordcannotbepopular": "Salasana ei saa olla {{PLURAL:$1|suosittu salasana|$1 suosituimman salasanan listalla}}"
+       "passwordpolicies-policy-passwordcannotbepopular": "Salasana ei saa olla {{PLURAL:$1|suosittu salasana|$1 suosituimman salasanan listalla}}",
+       "unprotected-js": "Turvallisuussyistä JavaScriptiä ei voi ladata suojaamattomilta sivuilta. Luo JavaScript-sivuja vain MediaWiki-nimiavaruuteen tai käyttäjän alasivulle."
 }
index 8f98fc8..a21d451 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Reedy",
                        "Ukabia",
-                       "아라"
+                       "아라",
+                       "Uzoma Ozurumba"
                ]
        },
        "tog-underline": "Ahịrịàlà òjikọ:",
        "recentchanges-legend": "Nràlụ màkà Ihe gbanwere ubwá",
        "recentchanges-feed-description": "Chóputà ihe ógẹ ǹsò na wiki ímé órírí nke á.",
        "recentchanges-label-minor": "Ihe bu orü ntakírí",
+       "recentchanges-label-bot": "Bot deziri ihe a",
        "recentchanges-legend-newpage": "$1 - ihü ohúrù",
        "rcfilters-savedqueries-cancel-label": "Hapụ̀",
        "rclistfrom": "Zìrí ihe gbanwere ọhúrù shí $3 $2",
index cb8e621..00915ff 100644 (file)
        "rcfilters-filter-reviewstatus-unpatrolled-label": "Ne vigilata",
        "rcfilters-filtergroup-significance": "Senco",
        "rcfilters-filter-minor-label": "mikra redakturi",
+       "rcfilters-filter-minor-description": "Redakturi quin la autoro indikis esar mikra.",
+       "rcfilters-filter-major-label": "Redakturi ne konsiderata mikra.",
+       "rcfilters-filter-major-description": "Redakturi quin lua autoro ne konsideris mikra.",
        "rcfilters-filtergroup-watchlist": "Pagini surveyata",
        "rcfilters-filter-watchlist-watched-label": "En mea surveyo-listo",
        "rcfilters-filter-watchlist-watched-description": "Modifikuri en pagini de vua surveyo-listo.",
        "rcfilters-filter-watchlist-watchednew-label": "Nova modifikuri en la surveyo-listo",
+       "rcfilters-filter-watchlist-notwatched-label": "Ne en surveyo-listo",
+       "rcfilters-filter-watchlist-notwatched-description": "Omni, ecepte modifikuri en la pagini de vua surveyo-listo.",
        "rcfilters-filter-watchlistactivity-unseen-description": "Modifikuri en la pagini quin vu ne vizitis pos ke la modifikuri facesis.",
        "rcfilters-filtergroup-changetype": "Tipo di modifikuro",
        "rcfilters-filter-pageedits-label": "Redakti di pagini",
        "rcfilters-filter-newpages-label": "Kreado di pagini",
        "rcfilters-filter-newpages-description": "Redakturi qui kreas nova pagini.",
        "rcfilters-filter-categorization-label": "Modifikuri di kategorio",
+       "rcfilters-filter-categorization-description": "Registri pri pagini qui adjuntesis o removesis de kategorii.",
        "rcfilters-filter-logactions-label": "Agadi enrejistrata",
        "rcfilters-filter-logactions-description": "Agadi dal administreri, kreado di konti, efaco di pagini, sendo di arkivi...",
        "rcfilters-filtergroup-lastRevision": "Maxim recenta modifikuri",
index 3be010b..70d0dcd 100644 (file)
        "feedback-termsofuse": "Accetto di fornire feedback conformemente alle Condizioni d'Uso.",
        "feedback-thanks": "Grazie! Il tuo feedback è stato pubblicato alla pagina \"[$2 $1]\".",
        "feedback-thanks-title": "Grazie!",
-       "feedback-useragent": "Agente utente:",
+       "feedback-useragent": "User agent:",
        "searchsuggest-search": "Cerca all'interno di {{SITENAME}}",
        "searchsuggest-containing": "contenente...",
        "api-error-badtoken": "Errore interno: token errato.",
index 7641b96..af09884 100644 (file)
        "pagelang-reason": "理由",
        "pagelang-submit": "変更",
        "pagelang-nonexistent-page": "ページ $1 は存在しません。",
-       "pagelang-unchanged-language": "ページ「$1」の言語はすでに$2に設定されています。",
-       "pagelang-unchanged-language-default": "ページ「$1」はすでにウィキの既定の言語に設定されています。",
+       "pagelang-unchanged-language": "ページ「$1」の言語はに$2に設定されています。",
+       "pagelang-unchanged-language-default": "ページ「$1」はにウィキの既定の言語に設定されています。",
        "pagelang-db-failed": "データベースがページの言語を変更できませんでした。",
        "right-pagelang": "ページの言語を変更",
        "action-pagelang": "ページの言語の変更",
index f0ebb5c..dd17c7f 100644 (file)
        "jumpto": "မ်ုၯယ့်ထါင်ယိုဝ်",
        "jumptonavigation": "ပ်ုယုံ့",
        "jumptosearch": "အင်းၯူ့",
-       "pool-errorunknown": "လ်ုသီးယာ့ ဆ်ုမးၜး",
+       "pool-errorunknown": "လ်ုသီးယာ့ ဆ်ုမး",
        "poolcounter-usage-error": "ဆ်ုသုံႋဆာႋအ်ုမး: $1",
        "aboutsite": "အ်ုကျံင် {{SITENAME}}",
        "aboutpage": "Project:အ်ုၯံင်အ်ုကျံင်",
        "mainpage-description": "လက်မေံယာ့",
        "portal": "အ်ုထိုဝ်အ်ုမေံလင်",
        "portal-url": "Project:အ်ုထိုဝ်အ်ုမေံလင်",
-       "privacy": "á\80\9fá\80ºá\80¯á\80\86á\80ºá\80¯á\80\99á\80¬á\80\9fá\80ºá\80¯ á\80\86á\80ºá\80¯á\80\96á\81 á\80¶á\80\96á\81 á\80±",
+       "privacy": "á\80\9fá\80ºá\80¯á\80\86á\80ºá\80¯á\80\99á\80¬á\80\9fá\80ºá\80¯ á\80\86á\80ºá\80¯á\80\96á\80¶á\80\84á\80ºá\80\96á\81 á\80±á\80\9dá\80º",
        "privacypage": "Project:ၜးဆိုင့်ဟ်ုဆ်ုမာ ပဝ်လ်ုဆီ",
        "ok": "အိုဝ်ကေ",
        "retrievedfrom": "မာၮေဝ်လှ် \"$1\"ခဝ့်",
index 549ae72..a5a8978 100644 (file)
@@ -23,7 +23,8 @@
                        "Xð",
                        "Srdjan m",
                        "Acamicamacaraca",
-                       "Vlad5250"
+                       "Vlad5250",
+                       "BadDog"
                ]
        },
        "tog-underline": "Потцртување на врски:",
        "headline_sample": "Наслов",
        "headline_tip": "Поднаслов",
        "nowiki_sample": "Овде внесете неформатиран текст",
-       "nowiki_tip": "Занемари викиформатирање",
+       "nowiki_tip": "Занемари вики форматирање",
        "image_sample": "Пример.jpg",
        "image_tip": "Вметната слика",
        "media_sample": "Пример.ogg",
index f57e84b..cceb55c 100644 (file)
        "category-subcat-count-limited": "Ta kategoria ma {{PLURAL:$1|1 podkategorię|$1 podkategorie|$1 podkategorii}}.",
        "category-article-count": "{{PLURAL:$2|W tej kategorii jest tylko jedna strona.|Poniżej wyświetlono $1 spośród wszystkich $2 stron tej kategorii.}}",
        "category-article-count-limited": "W tej kategorii {{PLURAL:$1|jest 1 strona|są $1 strony|jest $1 stron}}.",
-       "category-file-count": "{{PLURAL:$2|W tej kategorii znajduje się tylko jeden plik.|W tej kategorii {{PLURAL:$1|jest 1 plik|są $1 pliki|jest $1 plików}} z ogólnej liczby $2 plików.}}",
+       "category-file-count": "{{PLURAL:$2|W tej kategorii znajduje się tylko jeden plik.|Poniżej wyświetlono $1 spośród wszystkich $2 plików w tej kategorii.}}",
        "category-file-count-limited": "W tej kategorii {{PLURAL:$1|jest 1 plik|są $1 pliki|jest $1 plików}}.",
        "listingcontinuesabbrev": "cd.",
        "index-category": "Strony indeksowane",
index 7feae69..51a3d54 100644 (file)
        "mergelog": "Registro de fusão de históricos",
        "revertmerge": "Desfazer fusão",
        "mergelogpagetext": "Segue-se um registro das mais recentes fusões de históricos de páginas.",
-       "history-title": "Histórico de edições de \"$1\"",
+       "history-title": "Histórico de edições de “$1”",
        "difference-title": "Mudanças entre as edições de \"$1\"",
        "difference-title-multipage": "Mudanças entre as páginas \"$1\" e \"$2\"",
        "difference-multipage": "(Diferenças entre páginas)",
index 5d70dce..f700651 100644 (file)
        "sp-contributions-blocked-notice-anon": "Este endereço IP está bloqueado neste momento.\nPara referência é apresentado abaixo o último registo de bloqueio:",
        "sp-contributions-search": "Pesquisar contribuições",
        "sp-contributions-username": "Endereço IP ou nome de utilizador:",
-       "sp-contributions-toponly": "Mostrar apenas as edições mais recentes",
+       "sp-contributions-toponly": "Mostrar só edições que sejam a revisão mais recente",
        "sp-contributions-newonly": "Mostrar só edições que são criações de páginas",
        "sp-contributions-hideminor": "Ocultar edições menores",
        "sp-contributions-submit": "Pesquisar",
index 4aa58b5..8e029a5 100644 (file)
        "special-characters-title-endash": "Title tooltip for the en dash character (–); See https://en.wikipedia.org/wiki/Dash",
        "special-characters-title-emdash": "Title tooltip for the em dash character (—); See https://en.wikipedia.org/wiki/Dash",
        "special-characters-title-minus": "Title tooltip for the minus sign character (−), not to be confused with a hyphen",
+       "visualeditor-viewpage-savewarning": "Text shown when the user tries to leave the editor without saving their changes.\n\nFollowed by the following buttons:\n* {{msg-mw|visualeditor-viewpage-savewarning-discard}}\n* {{msg-mw|visualeditor-viewpage-savewarning-keep}}",
+       "visualeditor-viewpage-savewarning-discard": "Text shown on the button which closes an editor and discards changes when the user confirms that they want to leave the editor.\n\nPreceded by the prompt {{msg-mw|visualeditor-viewpage-savewarning}}.\n\nFollowed by the button {{msg-mw|visualeditor-viewpage-savewarning-keep}}.",
+       "visualeditor-viewpage-savewarning-keep": "Text shown on the button which does not do anything when the user decides that they do not want to leave the editor.\n\nPreceded by the button {{msg-mw|visualeditor-viewpage-savewarning-discard}}.",
+       "visualeditor-viewpage-savewarning-title": "Title of the dialog shown when the user tries to leave the editor without saving their changes.\n\nFollowed by the following buttons:\n* {{msg-mw|visualeditor-viewpage-savewarning-discard}}\n* {{msg-mw|visualeditor-viewpage-savewarning-keep}}\n{{Identical|Are you sure?}}",
        "mw-widgets-dateinput-no-date": "Label of a date input field when no date has been selected.",
        "mw-widgets-dateinput-placeholder-day": "[[File:DateInputWidget active, empty.png|frame|Screenshot]]\nPlaceholder displayed in a date input field when it's empty, representing a date format with 4 digits for year, 2 digits for month, and 2 digits for day, separated with hyphens. This should be uppercase, if possible, and must not include any additional explanations. If there is no good way to translate it, make this message blank.",
        "mw-widgets-dateinput-placeholder-month": "Placeholder displayed in a date input field when it's empty, representing a date format with 4 digits for year and 2 digits for month, separated with hyphens (without a day). This should be uppercase, if possible, and must not include any additional explanations. If there is no good way to translate it, make this message blank.",
index e4c3719..a45f23e 100644 (file)
        "history-feed-item-nocomment": "$1 в $2",
        "history-feed-empty": "Запрашиваемой страницы не существует.\nОна могла быть удалена или переименована.\nПопробуйте [[Special:Search|найти в вики]] похожие страницы.",
        "history-edit-tags": "Изменить теги выбранных версий",
-       "rev-deleted-comment": "(опиÑ\81ание Ð¿Ñ\80авки Ñ\81Ñ\82Ñ\91Ñ\80Ñ\82о)",
+       "rev-deleted-comment": "(опиÑ\81ание Ð¿Ñ\80авки Ñ\83далено)",
        "rev-deleted-user": "(имя автора стёрто)",
        "rev-deleted-event": "(подробности стёрты)",
        "rev-deleted-user-contribs": "[имя участника или IP-адрес удалены — правка скрыта со страницы вклада]",
        "grouppage-interface-admin": "{{ns:project}}:Администраторы интерфейса",
        "grouppage-bureaucrat": "{{ns:project}}:Бюрократы",
        "grouppage-suppress": "{{ns:project}}:Скрывающие",
-       "right-read": "просмотр страниц",
-       "right-edit": "правка страниц",
-       "right-createpage": "создание страниц, не являющихся обсуждениями",
-       "right-createtalk": "создание страниц обсуждений",
-       "right-createaccount": "создание новых учётных записей участников",
-       "right-autocreateaccount": "автоматический вход с помощью внешней учётной записи участника",
-       "right-minoredit": "отметка изменений как малых",
-       "right-move": "переименование страниц",
-       "right-move-subpages": "переименование страниц с их подстраницами",
-       "right-move-rootuserpages": "переименование корневых страниц участников",
-       "right-move-categorypages": "переименование страниц категорий",
-       "right-movefile": "переименование файлов",
-       "right-suppressredirect": "переименование страниц без создания перенаправления со старого имени",
-       "right-upload": "загрузка файлов",
-       "right-reupload": "перезапись существующих файлов",
-       "right-reupload-own": "перезапись файлов, загруженных тем же участником",
-       "right-reupload-shared": "подмена файлов из общих хранилищ локальными",
-       "right-upload_by_url": "загрузка файлов с адреса URL",
-       "right-purge": "очистка кэша страниц без подтверждения",
-       "right-autoconfirmed": "обход ограничений скорости на IP-адрес",
-       "right-bot": "автоматический процесс",
-       "right-nominornewtalk": "малые правки на страницах обсуждений участников не создают для них уведомление о новом сообщении",
-       "right-apihighlimits": "иÑ\81полÑ\8cзование Ð²Ñ\8bÑ\81Ñ\88иÑ\85 Ð¾Ð³Ñ\80аниÑ\87ений Ð¿Ñ\80и Ð²Ñ\8bполнении API-запÑ\80оÑ\81ов",
-       "right-writeapi": "использование API для записи",
-       "right-delete": "удаление страниц",
-       "right-bigdelete": "удаление страниц с длинными историями изменений",
-       "right-deletelogentry": "удаление и восстановление конкретных записей журнала",
-       "right-deleterevision": "удаление и восстановление конкретных версий страниц",
-       "right-deletedhistory": "просмотр истории удалённых страниц без доступа к удалённому тексту",
-       "right-deletedtext": "просмотр удалённого текста и изменений между удалёнными версиями страниц",
-       "right-browsearchive": "поиск удалённых страниц",
-       "right-undelete": "восстановление страниц",
-       "right-suppressrevision": "просмотр, сокрытие и восстановление скрытых версий страниц",
-       "right-viewsuppressed": "просмотр версий, скрытых от всех участников",
-       "right-suppressionlog": "просмотр частных журналов",
-       "right-block": "установка ограничений на редактирование для других участников",
-       "right-blockemail": "установка запрета на отправку электронной почты",
-       "right-hideuser": "запрет имени участника и его сокрытие",
+       "right-read": "Ð\9fросмотр страниц",
+       "right-edit": "Ð\9fравка страниц",
+       "right-createpage": "Создание страниц, не являющихся обсуждениями",
+       "right-createtalk": "Создание страниц обсуждений",
+       "right-createaccount": "Создание новых учётных записей участников",
+       "right-autocreateaccount": "Ð\90втоматический вход с помощью внешней учётной записи участника",
+       "right-minoredit": "Ð\9eтметка изменений как малых",
+       "right-move": "Ð\9fереименование страниц",
+       "right-move-subpages": "Ð\9fереименование страниц с их подстраницами",
+       "right-move-rootuserpages": "Ð\9fереименование корневых страниц участников",
+       "right-move-categorypages": "Ð\9fереименование страниц категорий",
+       "right-movefile": "Ð\9fереименование файлов",
+       "right-suppressredirect": "Ð\9fереименование страниц без создания перенаправления со старого имени",
+       "right-upload": "Ð\97агрузка файлов",
+       "right-reupload": "Ð\9fерезапись существующих файлов",
+       "right-reupload-own": "Ð\9fерезапись файлов, загруженных тем же участником",
+       "right-reupload-shared": "Ð\97амена файлов из общих хранилищ локальными",
+       "right-upload_by_url": "Ð\97агрузка файлов с адреса URL",
+       "right-purge": "Ð\9eчистка кэша страниц без подтверждения",
+       "right-autoconfirmed": "Ð\9eбход ограничений скорости на IP-адрес",
+       "right-bot": "Ð\90втоматический процесс",
+       "right-nominornewtalk": "Ð\9cалые правки на страницах обсуждений участников не создают для них уведомление о новом сообщении",
+       "right-apihighlimits": "Ð\98Ñ\81полÑ\8cзование Ð²Ñ\8bÑ\81окиÑ\85 Ð»Ð¸Ð¼Ð¸Ñ\82ов Ð² API-запÑ\80оÑ\81аÑ\85",
+       "right-writeapi": "Ð\98спользование API для записи",
+       "right-delete": "Удаление страниц",
+       "right-bigdelete": "Удаление страниц с длинными историями изменений",
+       "right-deletelogentry": "Удаление и восстановление конкретных записей журнала",
+       "right-deleterevision": "Удаление и восстановление конкретных версий страниц",
+       "right-deletedhistory": "Ð\9fросмотр истории удалённых страниц без доступа к удалённому тексту",
+       "right-deletedtext": "Ð\9fросмотр удалённого текста и изменений между удалёнными версиями страниц",
+       "right-browsearchive": "Ð\9fоиск удалённых страниц",
+       "right-undelete": "Ð\92осстановление страниц",
+       "right-suppressrevision": "Ð\9fросмотр, сокрытие и восстановление скрытых версий страниц",
+       "right-viewsuppressed": "Ð\9fросмотр версий, скрытых от всех участников",
+       "right-suppressionlog": "Ð\9fросмотр частных журналов",
+       "right-block": "Блокировка редактирования другими участниками",
+       "right-blockemail": "Блокировка на отправку электронной почты",
+       "right-hideuser": "Ð\97апрет имени участника и его сокрытие",
        "right-ipblock-exempt": "обход блокировок по IP, автоблокировок и блокировок диапазонов",
-       "right-unblockself": "разблокировка себя",
-       "right-protect": "изменение уровня защиты страниц и правка каскадно защищённых страниц",
-       "right-editprotected": "правка страниц, защищённых как «{{int:protect-level-sysop}}»",
-       "right-editsemiprotected": "правка страниц, защищённых как «{{int:protect-level-autoconfirmed}}»",
-       "right-editcontentmodel": "редактирование модели содержимого страницы",
-       "right-editinterface": "изменение пользовательского интерфейса",
-       "right-editusercss": "правка CSS-файлов других участников",
-       "right-edituserjson": "правка JSON-файлов других участников",
-       "right-edituserjs": "правка JavaScript-файлов других участников",
-       "right-editsitecss": "редактирование общесайтовых CSS-файлов",
-       "right-editsitejson": "редактирование общесайтовых JSON-файлов",
-       "right-editsitejs": "редактирование общесайтовых JavaScript-файлов",
-       "right-editmyusercss": "редактирование своих пользовательских CSS-файлов",
-       "right-editmyuserjson": "редактирование своих пользовательских JSON-файлов",
-       "right-editmyuserjs": "редактирование своих пользовательских JavaScript-файлов",
-       "right-viewmywatchlist": "просмотр своего списка наблюдения",
-       "right-editmywatchlist": "редактирование своего списка наблюдения; некоторые действия будут добавлять страницы даже без такого права",
-       "right-viewmyprivateinfo": "просмотр собственных личных данных (например, адрес электронной почты, настоящее имя)",
-       "right-editmyprivateinfo": "правка собственных личных данных (например, адрес электронной почты, настоящее имя)",
-       "right-editmyoptions": "редактирование собственных настроек",
-       "right-rollback": "быстрый откат правок последнего участника, который редактировал страницу",
-       "right-markbotedits": "отметка откатываемых правок как правок бота",
-       "right-noratelimit": "обход ограничений скорости",
-       "right-import": "импорт страниц из других вики",
-       "right-importupload": "импорт страниц через загрузку файлов",
-       "right-patrol": "отметка правок других участников как отпатрулированных",
-       "right-autopatrol": "авÑ\82омаÑ\82иÑ\87еÑ\81каÑ\8f Ð¾Ñ\82меÑ\82ка Ñ\81обÑ\81Ñ\82веннÑ\8bÑ\85 Ð¿Ñ\80авок ÐºÐ°Ðº Ð¿Ð°Ñ\82Ñ\80Ñ\83лиÑ\80ованнÑ\8bÑ\85",
-       "right-patrolmarks": "просмотр отметок о патрулировании в свежих правках",
-       "right-unwatchedpages": "просмотр списка ненаблюдаемых страниц",
-       "right-mergehistory": "объединение историй страниц",
-       "right-userrights": "изменение всех прав участников",
-       "right-userrights-interwiki": "изменение Ð¿Ñ\80ав Ñ\83Ñ\87аÑ\81Ñ\82ников Ð½Ð° Ð´Ñ\80Ñ\83гиÑ\85 Ð²Ð¸ÐºÐ¸-Ñ\81айтах",
-       "right-siteadmin": "блокировка и разблокировка базы данных",
-       "right-override-export-depth": "экспортирование страниц, включая связанные страницы с глубиной до 5",
-       "right-sendemail": "отправка электронной почты другим участникам",
-       "right-managechangetags": "создание и (де)активация [[Special:Tags|меток]]",
-       "right-applychangetags": "применение [[Special:Tags|меток]] вместе со своими правками",
-       "right-changetags": "добавление и удаление произвольных [[Special:Tags|меток]] на отдельных правках и записях в журнале",
-       "right-deletechangetags": "удаление [[Special:Tags|меток]] из базы данных",
+       "right-unblockself": "Разблокирование себя самого",
+       "right-protect": "Ð\98зменение уровня защиты страниц и правка каскадно защищённых страниц",
+       "right-editprotected": "Ð\9fравка страниц, защищённых как «{{int:protect-level-sysop}}»",
+       "right-editsemiprotected": "Ð\9fравка страниц, защищённых как «{{int:protect-level-autoconfirmed}}»",
+       "right-editcontentmodel": "Редактирование модели содержимого страницы",
+       "right-editinterface": "Ð\9fÑ\80авка пользовательского интерфейса",
+       "right-editusercss": "Ð\9fравка CSS-файлов других участников",
+       "right-edituserjson": "Ð\9fравка JSON-файлов других участников",
+       "right-edituserjs": "Ð\9fравка JavaScript-файлов других участников",
+       "right-editsitecss": "Редактирование общесайтовых CSS-файлов",
+       "right-editsitejson": "Редактирование общесайтовых JSON-файлов",
+       "right-editsitejs": "Редактирование общесайтовых JavaScript-файлов",
+       "right-editmyusercss": "Редактирование своих пользовательских CSS-файлов",
+       "right-editmyuserjson": "Редактирование своих пользовательских JSON-файлов",
+       "right-editmyuserjs": "Редактирование своих пользовательских JavaScript-файлов",
+       "right-viewmywatchlist": "Ð\9fросмотр своего списка наблюдения",
+       "right-editmywatchlist": "Редактирование своего списка наблюдения. Некоторые действия будут добавлять страницы даже без такого права.",
+       "right-viewmyprivateinfo": "Ð\9fросмотр собственных личных данных (например, адрес электронной почты, настоящее имя)",
+       "right-editmyprivateinfo": "Ð\9fравка собственных личных данных (например, адрес электронной почты, настоящее имя)",
+       "right-editmyoptions": "Редактирование собственных настроек",
+       "right-rollback": "Ð\91ыстрый откат правок последнего участника, который редактировал страницу",
+       "right-markbotedits": "Ð\9eтметка откатываемых правок как правок бота",
+       "right-noratelimit": "Ð\9eбход ограничений скорости",
+       "right-import": "Ð\98мпорт страниц из других вики",
+       "right-importupload": "Ð\98мпорт страниц через загрузку файлов",
+       "right-patrol": "Ð\9eтметка правок других участников как отпатрулированных",
+       "right-autopatrol": "Ð\9fÑ\80авки Ñ\83Ñ\87аÑ\81Ñ\82ника Ð°Ð²Ñ\82омаÑ\82иÑ\87еÑ\81ки Ð¾Ñ\82меÑ\87аÑ\8eÑ\82Ñ\81Ñ\8f ÐºÐ°Ðº Ð¿Ð°Ñ\82Ñ\80Ñ\83лиÑ\80ованнÑ\8bе",
+       "right-patrolmarks": "Ð\9fросмотр отметок о патрулировании в свежих правках",
+       "right-unwatchedpages": "Ð\9fросмотр списка ненаблюдаемых страниц",
+       "right-mergehistory": "Ð\9eбъединение историй страниц",
+       "right-userrights": "Ð\98зменение всех прав участников",
+       "right-userrights-interwiki": "Ð\98зменение Ð¿Ñ\80ав Ñ\83Ñ\87аÑ\81Ñ\82ников Ð½Ð° Ð´Ñ\80Ñ\83гиÑ\85 Ð²Ð¸ÐºÐ¸Ð¿Ñ\80оектах",
+       "right-siteadmin": "Ð\91локировка и разблокировка базы данных",
+       "right-override-export-depth": "Экспортирование страниц, включая связанные страницы с глубиной до 5",
+       "right-sendemail": "Ð\9eтправка электронной почты другим участникам",
+       "right-managechangetags": "Создание и (де)активация [[Special:Tags|меток]]",
+       "right-applychangetags": "Ð\9fрименение [[Special:Tags|меток]] вместе со своими правками",
+       "right-changetags": "Ð\94обавление и удаление произвольных [[Special:Tags|меток]] на отдельных правках и записях в журнале",
+       "right-deletechangetags": "Удаление [[Special:Tags|меток]] из базы данных",
        "grant-generic": "Набор прав «$1»",
        "grant-group-page-interaction": "Взаимодействие со страницами",
        "grant-group-file-interaction": "Взаимодействие с медиафайлами",
        "pagelang-unchanged-language": "Странице $1 уже установлен язык $2.",
        "pagelang-unchanged-language-default": "Странице $1 уже установлен язык, установленный по умолчанию для содержимого этой вики.",
        "pagelang-db-failed": "Базе данных не удалось изменить язык страницы.",
-       "right-pagelang": "изменение языка страницы",
+       "right-pagelang": "Ð\98зменение языка страницы",
        "action-pagelang": "изменять язык страницы",
        "log-name-pagelang": "Журнал изменения языка",
        "log-description-pagelang": "Это журнал изменений в языках страницы.",
index 3425db2..d88826b 100644 (file)
        "ipb-disableusertalk": "एतं योजकम् अवरोधकाले स्वस्य सम्भाषणपुटस्य सम्पानात् निवारयतु ।",
        "ipb-change-block": "एतैः विन्यासैः सदस्यं पुनः अवरुणद्धु ।",
        "ipb-confirm": "अवरोधं दृढयतु ।",
+       "ipb-partial": "भागशः ।",
        "badipaddress": "अमान्यः ऐपिसङ्केतः ।",
        "blockipsuccesssub": "अवरोधः सफलः",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]]इत्येतत् अवरुद्धम् । <br />\nअवरोधानां समीक्षां करोतु । [[Special:BlockList|IP अवरोधसूचिका]]",
        "createaccountblock": "योजकस्थाननिर्माणं निष्क्रियम् ।",
        "emailblock": "वि-पत्रं निष्क्रियम्",
        "blocklist-nousertalk": "स्वस्य सम्भाषणपुटं सम्पादयितुं न शक्यते ।",
+       "blocklist-editing": "सम्पादनम्",
        "ipblocklist-empty": "अवरोधावली रिक्ता अस्ति ।",
        "ipblocklist-no-results": "अभ्यर्थितः ऐपिसङ्केतः अथवा अभ्यर्थितः सदस्यनाम अवरुद्धं न ।",
        "blocklink": "अवरुद्ध्यताम्",
        "special-characters-title-endash": "en dash",
        "special-characters-title-emdash": "em dash",
        "special-characters-title-minus": "minus sign",
-       "mw-widgets-titleinput-description-new-page": "पृष्ठं न विद्यते"
+       "mw-widgets-titleinput-description-new-page": "पृष्ठं न विद्यते",
+       "mw-widgets-titlesmultiselect-placeholder": "इतोऽपि समावेशयतु"
 }
index 4140377..8e158fa 100644 (file)
@@ -18,7 +18,8 @@
                        "Acamicamacaraca",
                        "Fitoschido",
                        "BadDog",
-                       "ديفيد"
+                       "ديفيد",
+                       "Zoranzoki21"
                ]
        },
        "tog-underline": "Podvuci linkove:",
        "undeletepagetext": "{{PLURAL:$1|Slijedeća $1 stranica je obrisana|Slijedeće $1 stranice su obrisane|Slijedećih $1 je obrisano}} ali su još uvijek u arhivi i mogu biti vraćene.\nArhiva moše biti periodično čišćena.",
        "undelete-fieldset-title": "Vraćanje revizija",
        "undeleteextrahelp": "Da vratite cijelu historiju članka, ostavite sve kutijice neoznačene i kliknite '''''{{int:undeletebtn}}'''''.\nDa bi izvršili selektivno vraćanje, odaberite kutijice koje odgovaraju revizijama koje želite vratiti, i kliknite '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "{{PLURAL:$2|izmjena|$2 izmjena}} {{PLURAL|izbrisana|izbrisane|izbrisano}}",
+       "undeleterevisions": "{{PLURAL:$1|izmjena}} {{PLURAL|izbrisana|izbrisane|izbrisano}}",
        "undeletehistory": "Ako vratite stranicu, sve revizije će biti vraćene njenoj historiji.\nAko je nova stranica istog imena napravljena od brisanja, vraćene revizije će se pojaviti u njenoj ranijoj historiji.",
        "undeleterevdel": "Vraćanje obrisanog se neće izvršiti ako bi rezultiralo da zaglavlje stranice ili revizija datoteke bude djelimično obrisano.\nU takvim slučajevima, morate ukloniti označene ili otkriti sakrivene najskorije obrisane revizije.",
        "undeletehistorynoadmin": "Ova stranica je izbrisana.  \nRazlog za brisanje se nalazi ispod u sažetku, zajedno sa detaljima korisnika koji su uređivali ovu stranicu prije brisanja.  \nTekst izbrisane stranice je vidljiv samo administratorima.",
index 05a4d49..9eba3b6 100644 (file)
        "userlogin-resetpassword-link": "Ettuḍ awal n uɛaddi ?",
        "userlogin-helplink2": "Tallelt i tuqqna",
        "userlogin-loggedin": "Teqqneḍ yakan am {{GENDER:$1|$1}}. Seqdec tiferkit ddaw-agi iwakken ad teqqneḍ s umiḍan nniḍen.",
-       "userlogin-reauth": "Snulfud amiḍan nniḍen",
+       "userlogin-reauth": "Snulfud amiḍan nniḍen {{GENDER:$1|$1}}.",
        "userlogin-createanother": "Snulfud amiḍan nniḍen",
        "createacct-emailrequired": "Tansa email",
        "createacct-emailoptional": "Tansa email (axetṛan)",
        "savechanges": "Sekles asnifel",
        "publishpage": "Suffeɣ-d asebter",
        "publishchanges": "Suffeɣ-d asnifel",
+       "savearticle-start": "Beddel asebter",
+       "savechanges-start": "Sekles asnifel",
+       "publishpage-start": "Suffeɣ-d asebter...",
+       "publishchanges-start": "Suffeɣ-d asnifel...",
        "preview": "azar-asekdan",
        "showpreview": "Ssken azar-asekdan",
        "showdiff": "Ssken ibeddlen",
        "right-reupload-own": "Sefxes afaylu id n-azen.",
        "right-reupload-shared": "Ɛefes deg udigan afaylu yellan ɣef azadur azduklan",
        "right-upload_by_url": "Kter afaylu seg tansa URL",
+       "right-writeapi": "Seqdec API n ubeddel",
+       "newuserlogpage": "Aɣmis n isnulfan n  imiḍanen n imseqdacen",
+       "rightslog": "Aɣmis n yizerfan n wemseqdac",
+       "action-edit": "beddel asebter agi",
+       "action-createaccount": "snulfud amiḍan agi n useqdac",
        "enhancedrc-history": "amazray",
        "recentchanges": "Ibeddilen imaynuten",
+       "recentchanges-legend": "Tifranin n ibeddilen imaynuten",
+       "recentchanges-summary": "Ḍfer ibeddilen imaynuten n {{SITENAME}}.",
+       "recentchanges-noresult": "Ulac abeddel yecban ayen i ttnadiḍ ɣef tallit id efkeḍ.",
+       "recentchanges-feed-description": "Ḍfer ibeddilen imaynuten n wiki-yagi deg usuddem-agi.",
        "recentchanges-label-newpage": "Abeddel agi ad yesnulfu asebter amaynut",
        "recentchanges-label-minor": "Wagi d-abeddel amectuḥ",
        "recentchanges-label-bot": "D-arubut id yeseqdacen abeddel agi",
+       "recentchanges-label-unpatrolled": "Abeddel agi mazal yesɛa aselken.",
+       "recentchanges-label-plusminus": "Tiddi n usebtar tetwebeddel s umḍan agi n itamḍanen.",
+       "recentchanges-legend-heading": "<strong>Tamawt:</strong>",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zeṛ daɣen [[Special:NewPages|umuɣ n isebtar imaynuten]]).",
        "recentchanges-submit": "Ssken",
+       "rcfilters-activefilters-hide": "Ffer",
+       "rcfilters-activefilters-show": "Ssken",
+       "rcfilters-days-show-days": "$1 {{PLURAL:$1|ass|ussan}}",
+       "rcfilters-savedqueries-remove": "Kkes",
+       "rcfilters-savedqueries-new-name-label": "isem",
+       "rcfilters-savedqueries-cancel-label": "Sefsex",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
+       "rcnotefrom": "Ddaw-a {{PLURAL:$5|d abeddel|d ibeddilen}} si <strong>$3, $4</strong> (arama <strong>$1</strong> ad d-yettwaseknen).",
+       "rclistfrom": "Ssken ibeddlen imaynuten seg $2 $3",
+       "rcshowhideminor": "$1 ibeddlen ifessasen",
        "rcshowhideminor-show": "Ssken",
        "rcshowhideminor-hide": "Ffer",
        "rcshowhidebots": "$1 Iṛubuten",
        "rcshowhidebots-show": "Ssken",
        "rcshowhidebots-hide": "Ffer",
+       "rcshowhideliu": "$1 imseqdacen imseklesen",
        "rcshowhideliu-show": "Ssken",
        "rcshowhideliu-hide": "Ffer",
+       "rcshowhideanons": "$1 n yimseqdacen udrigen",
        "rcshowhideanons-show": "Ssken",
        "rcshowhideanons-hide": "Ffer",
+       "rcshowhidepatr": "$1 n yibeddlen yettwassenqden",
        "rcshowhidepatr-show": "Ssken",
+       "rcshowhidepatr-hide": "Ffer",
+       "rcshowhidemine": "$1 ibeddlen inu",
        "rcshowhidemine-show": "Ssken",
        "rcshowhidemine-hide": "Ffer",
        "rcshowhidecategorization-show": "Ssken",
+       "rcshowhidecategorization-hide": "Ffer",
+       "rclinks": "Ssken $1 n yibeddlen ineggura di $2 n wussan ineggura",
        "diff": "amgi",
        "hist": "amez",
        "hide": "Ffer",
        "newpageletter": "N",
        "boteditletter": "b",
        "rc-change-size-new": "$1 {{PLURAL:$1|atamḍan|itamḍanen}} seld abeddel",
+       "rc-old-title": "yesnulfad s uzwel \"$1\"",
+       "recentchangeslinked": "Ibeddlen imaynuten n isebtar myezdin",
+       "recentchangeslinked-feed": "Ibeddlen imaynuten n isebtar myezdin",
        "recentchangeslinked-toolbox": "Ibeddlen imaynuten n isebtar myezdin",
+       "recentchangeslinked-title": "Tiḍefri n isebtaren iqqenen ar « $1 »",
+       "recentchangeslinked-summary": "Asebter uslig agi i sekned ibeddlen imaynuten ɣef isebtaren iqqenen. Isebtaren n [[Special:Watchlist|umuɣ n uḍfar]] llan s <strong>ufuyan</strong>.",
+       "recentchangeslinked-page": "Isem n usebter:",
+       "recentchangeslinked-to": "Beqqeḍ ibeddilen n isebtareb i sɛan azday ɣer asebter nni wala anemgal",
        "upload": "Azen afaylu",
+       "uploadlogpage": "Amezruy n usekcam",
+       "filename": "Isem n ufaylu",
+       "filedesc": "Agzul",
+       "fileuploadsummary": "Agzul:",
+       "filereuploadsummary": "Asnifel n usmel:",
+       "filesource": "Aɣbalu:",
+       "sourceurl": "URL aɣbalu:",
+       "upload-dialog-title": "Azen afaylu",
+       "upload-dialog-button-cancel": "Sefsex",
+       "upload-dialog-button-save": "Smekti",
+       "upload-form-label-infoform-name": "isem",
+       "upload-form-label-infoform-description": "Aglam",
+       "upload-form-label-usage-filename": "isem uflay",
+       "upload-form-label-infoform-categories": "Taggayin",
+       "upload-form-label-infoform-date": "Azmez",
+       "license": "Turagt",
+       "license-header": "Turagt",
+       "listfiles-delete": "Kkes",
        "imgfile": "Afaylu",
+       "listfiles": "Umuɣ n tugniwin",
+       "listfiles_date": "Azmez",
+       "listfiles_name": "isem",
+       "listfiles_user": "Aseqdac",
+       "listfiles_description": "Aglam",
        "file-anchor-link": "Afaylu",
        "filehist": "Amazray n ufaylu",
+       "filehist-help": "Senned ɣef yiwen azmez d usrag iwakken ad ẓṛeḍ afaylu aken yella deg imir nni.",
+       "filehist-revert": "Uɣal ar tasiwelt ssabeq",
+       "filehist-current": "Lux a",
+       "filehist-datetime": "Azmez/Asrag",
+       "filehist-thumb": "Aqmamaḍ",
        "filehist-thumbtext": "Tugna tamectuḥt i lqem n $1",
+       "filehist-nothumb": "Ulac aqmamaḍ",
+       "filehist-user": "Aseqdac",
+       "filehist-dimensions": "Iseggiwen",
+       "filehist-comment": "Awennit",
        "imagelinks": "Aseqdec n ufaylu",
+       "linkstoimage": "{{PLURAL:$1|Asebter agi teseqdac|$1 isebtaren agi teseqdacen}} afaylu agi:",
+       "linkstoimage-more": "Ugar n {{PLURAL:$1|yiwen asebter|$1 isebtar}} tseqdacen afaylu agi.\nUmuɣ agi yebeqqeḍ ala {{PLURAL:$1|asebter amezwaru|$1 isebtar imezwura}} i seqdacen afaylu agi.\nYella [[Special:WhatLinksHere/$2|umuɣ ummid]].",
+       "nolinkstoimage": "Ulaḥedd seg isebtar sɛan azday ar afaylu-agi.",
+       "linkstoimage-redirect": "$1 (allus n wesnili n ufaylu) $2",
+       "sharedupload-desc-here": "Afaylu agi yusad seg : $1. Ahat yeseqdec deg isenfaṛen nniḍen.\nAglam-is ɣef [$2 asebter n aglam] ye beqqeḍ ddaw-agi.",
+       "filepage-nofile": "Ulac afaylu s isem agi.",
+       "upload-disallowed-here": "Ur tzemreḍ ara ad semselsiḍ afaylu agi.",
+       "filedelete": "Kkes $1",
+       "filedelete-submit": "Kkes",
        "randompage": "Asebter menwala",
+       "statistics": "Tidaddanin",
+       "double-redirect-fixer": "Aseɣtay n aslanamud",
+       "brokenredirects-delete": "kkes",
        "withoutinterwiki-submit": "Ssken",
        "nbytes": "$1 {{PLURAL:$1|byte|bytes}}",
+       "nmembers": "$1 {{PLURAL:$1|amaslad|imasladen}}",
+       "prefixindex": "Akk isebtaren s yisekkilen imezwura",
        "prefixindex-submit": "Ssken",
+       "listusers": "Umuɣ n yimseqdacen",
        "newpages": "Isebtar imaynuten",
        "newpages-submit": "Ssken",
        "newpages-username": "Isem n useqdac:",
+       "move": "Smimeḍ",
+       "pager-newer-n": "{{PLURAL:$1|amaynut|$1 imaynuten}}",
+       "pager-older-n": "{{PLURAL:$1|aqbur|$1 iqburen}}",
+       "booksources": "Iɣbula n yidlisen",
+       "booksources-search-legend": "Nadi ɣef iɣbula n yidlisen",
+       "booksources-search": "Iruzzi",
+       "specialloguserlabel": "Ameskar:",
+       "speciallogtitlelabel": "Asaḍas (azwel neɣ {{ns:user}}:isem n useqdac):",
+       "log": "Aɣmis",
        "logeventslist-submit": "Ssken",
+       "all-logs-page": "Akk iɣmisen izayezen",
+       "alllogstext": "Abeqqeḍ n akkw iɣmisen yestufan ɣef {{SITENAME}}.\nTzemreḍ ad sageneḍ abeqqeḍ s tixtiṛit n tawsit n uɣmis, isem n useqdac naɣ asebter nni.",
+       "logempty": "Ur yufi ara deg uɣmis.",
+       "allpages": "Akk isebtar",
+       "allarticles": "Akk imagraden",
        "allpagessubmit": "Ṛuḥ",
+       "allpages-hide-redirects": "Ffer isemmimḍen",
+       "categories": "Taggayin",
        "categories-submit": "Ssken",
        "linksearch-ok": "Iruzzi",
        "listusers-submit": "Ssken",
+       "listgrouprights-members": "(umuɣ n imseqdacen)",
+       "emailuser": "Azen e-mail i wemseqdac-agi",
        "emailusername": "Isem n useqdac:",
+       "usermessage-editor": "Ameskar n unagraw",
+       "watchlist": "Tabdart n uḍfaṛ",
+       "mywatchlist": "Tabdart n uḍfaṛ",
+       "watchlistfor2": "I $1 $2",
+       "watch": "Ɛass",
+       "unwatch": "Fakk aɛassi",
+       "watchlist-details": "{{PLURAL:$1|$1 n usebter|$1 n isebtar}} di tebdart-ik n uḍfaṛ (akked isebtar n usqerdec).",
+       "wlheader-showupdated": "Isebtar ttubeddlen segwasmi tkecmeḍ tikelt taneggarut ttbanen-d s uḍris <strong>aberbuz</strong>.",
+       "wlnote": "Ddaw-a {{PLURAL:$1|ad twaliḍ abeddel aneggaru yettwagen|ad twaliḍ <strong>$1</strong> n ibeddilen ineggura yettwagen}} deg {{PLURAL:$2| usrag aneggaru|di <strong>$2</strong> n yisragen ineggura}}, arama d $3, $4.",
+       "wlshowlast": "Sken wid n $1 n isragen ineggura, wid n $2 n wussan ineggura",
        "watchlist-submit": "Ssken",
+       "watchlist-options": "Iɣewwaṛen n tebdart n uḍfaṛ",
+       "enotif_reset": "Rcem akk isebtar mmeẓren",
+       "enotif_impersonal_salutation": "{{SITENAME}} aseqdac",
+       "delete-confirm": "Kkes \"$1\"",
        "historyaction-submit": "Ssken",
+       "dellogpage": "Aɣmis n umḥay",
        "rollbacklink": "semmet",
+       "rollbacklinkcount": "semmet $1 {{PLURAL:$1|abeddel|ibeddilen}}",
+       "protectlogpage": "Aɣmis n wemḥay",
+       "protectedarticle": "\"[[$1]]\" yettwaḥrez",
+       "modifiedarticleprotection": "yebeddel aswir n usegdel n \"[[$1]]\"",
+       "protect-default": "(ameslugen)",
        "restriction-edit": "Glef",
+       "restriction-move": "Smimeḍ",
        "undelete-search-submit": "Iruzzi",
        "namespace": "Talluntin n isemawen",
+       "invert": "Snegdam ayen textareḍ",
+       "tooltip-invert": "Sekcem amidag deg tankult agi iwakken ad ffereḍ ibeddilen n isebtar deg tallunt n isemawen yettwafren (dɣa tallunt n isemawen yeqqnen ma yella amidag deg tankult)",
+       "namespace_association": "Tallunt n isemawen yeqqenen",
+       "tooltip-namespace_association": "Sekcem amidag deg tankult agi iwakken ad rnuḍ daɣen tallunt n isemawen n umyannan yeqqnen ar tallunt n  isemawen yettwafren",
        "blanknamespace": "(Agejdan)",
+       "contributions": "Ittekkiyen n {{GENDER:$1|umseqdac|tamseqdact}}",
+       "contributions-title": "Umuɣ n tikkin n umseqdac $1",
+       "mycontris": "Ittekkiyen",
+       "anoncontribs": "Ittekkiyen",
+       "contribsub2": "I {{GENDER:$3|$1}} ($2)",
+       "nocontribs": "Ur yufi ara abddel i tebɣiḍ.",
+       "uctop": "(amiran)",
+       "month": "Seg uggur (d wid uqbel):",
+       "year": "Seg useggwas (d wid uqbel):",
+       "sp-contributions-newbies": "Ssken tikkin n yimseqdacen imaynuten kan",
+       "sp-contributions-blocklog": "aɣmis n uɛeṭṭil",
+       "sp-contributions-uploads": "izdamen",
+       "sp-contributions-logs": "iɣmisen",
+       "sp-contributions-talk": "mmeslay",
+       "sp-contributions-search": "Nadi i tikkin",
+       "sp-contributions-username": "Tansa IP neɣ isem n wemseqdac:",
+       "sp-contributions-toponly": "Sekned kan imagraden i beddeleɣ nekk d-aneggaru",
+       "sp-contributions-newonly": "Seken kan tiẓrigin n tmerna n isebtar.",
        "sp-contributions-submit": "Iruzzi",
        "whatlinkshere": "Ayen i d-yettawi ɣer da",
+       "whatlinkshere-title": "Isebtaren i sɛan azday ɣer \"$1\"",
+       "whatlinkshere-page": "Asebter:",
+       "linkshere": "Isebtar-agi sɛan azday ɣer <strong>$2</strong>:",
+       "nolinkshere": "Ulac asebter i yesɛan azday ɣer <strong>$2</strong>.",
+       "isredirect": "Asebter n usemmimeḍ",
+       "istemplate": "asekcam",
+       "isimage": "azday ɣer afaylu",
+       "whatlinkshere-prev": "{{PLURAL:$1|ssabeq|$1 ssabeq}}",
+       "whatlinkshere-next": "{{PLURAL:$1|ameḍfir|$1 imeḍfiren}}",
+       "whatlinkshere-links": "← izdayen",
+       "whatlinkshere-hideredirs": "$1 iwellihen",
+       "whatlinkshere-hidetrans": "$1 tiguriyin",
+       "whatlinkshere-hidelinks": "$1 iseɣwan",
+       "whatlinkshere-hideimages": "$1 iseɣwan ar ufaylu",
+       "whatlinkshere-filters": "Tistaytin",
+       "ipboptions": "2 isragen:2 hours,1 ass:1 day,3 ussan:3 days,1 imalas:1 week,2  imalasen:2 weeks,1 aggur:1 month,3 agguren:3 months,6 agguren:6 months,1 aseggwas:1 year,afdi:infinite",
        "ipblocklist-submit": "Iruzzi",
+       "infiniteblock": "ameɣlal",
+       "blocklink": "ɛekkel",
        "contribslink": "attekki",
+       "blocklogpage": "Aɣmis n isewḥelen",
+       "blocklogentry": "yesewḥel [[$1]] ; alama : $2 $3",
+       "reblock-logentry": "yebeddel iɣewwaren n usewḥel n [[$1]] s tasewtit ar $2 $3",
+       "block-log-flags-nocreate": "asnulfu n umiḍan yessegdel",
+       "proxyblocker": "Amsewḥel n proxy",
+       "movelogpage": "Aɣmis n usemmimeḍ",
+       "export": "Ssufeɣ isebtar",
+       "allmessagesname": "isem",
        "thumbnail-more": "Ssemɣer",
+       "import-interwiki-sourcewiki": "Wiki aɣbalu:",
+       "importlogpage": "Aɣmis n usekcam",
+       "tooltip-pt-userpage": "Asebter n {{GENDER:|useqdac-ik|tseqdact-im}}",
+       "tooltip-pt-mytalk": "Asebter-{{GENDER:|ik|im}} n usqerdec",
+       "tooltip-pt-preferences": "Ismenyifen {{GENDER:|ik|im}}",
+       "tooltip-pt-watchlist": "Umuɣ n uɛessi n isebtar i ttɛessaɣ",
+       "tooltip-pt-mycontris": "Tabdart n ittekkiyen-{{GENDER:|ik|im}}",
        "tooltip-pt-login": "Lukan tkecmeḍ xir, meɛna am tebɣiḍ",
        "tooltip-pt-logout": "Ffeɣ",
        "tooltip-pt-createaccount": "Yelha limer ad ternuḍ amiḍan sakin ad teqqneḍ; maca, ur issefk ara",
        "tooltip-ca-talk": "Aseqerdec ɣef usebter-agi n ugbur",
        "tooltip-ca-edit": "Ẓreg asebter-agi",
+       "tooltip-ca-addsection": "Senker tigezmi tamaynut",
+       "tooltip-ca-viewsource": "Asebter-agi yettwaḥrez. \nTzemreḍ ad twaliḍ aɣbalu-ines.",
        "tooltip-ca-history": "Tisiwal ssabeq n usebter-agi.",
+       "tooltip-ca-protect": "Ḥrez asebter-agi",
+       "tooltip-ca-delete": "Mḥu asebter-agi",
+       "tooltip-ca-move": "Smimeḍ asebter-agi",
        "tooltip-ca-watch": "Rnu asebter-agi ar tebdart-ik n uḍfaṛ",
+       "tooltip-ca-unwatch": "Kkes asebter-agi seg wumuɣ n uɛessi inek",
        "tooltip-search": "Iruzzi {{SITENAME}}",
        "tooltip-search-go": "Ṛuḥ ɣer usebter i sɛan isem agi ma yella",
        "tooltip-search-fulltext": "Nadi isebtar i sɛan aḍris agi",
        "tooltip-n-help": "Amkan ideg tafeḍ",
        "tooltip-t-whatlinkshere": "Umuɣ n akk isebtar i yesɛan azday ar dagi",
        "tooltip-t-recentchangeslinked": "Ibeddlen imaynuten deg isebtar myezdin seg usebter-agi",
+       "tooltip-feed-atom": "Atom feed n usebter-agi",
+       "tooltip-t-contributions": "Ẓer tabdart n ittekkiyen n  tikkin n {{GENDER:$1|useqdac-agi|taseqdact-agi}}",
+       "tooltip-t-emailuser": "Azen imayl i {{GENDER:$1|useqdac-agi|useqdac-agi}}",
        "tooltip-t-upload": "Azen ifuyla",
        "tooltip-t-specialpages": "Umuɣ n akk isebtar usligen",
        "tooltip-t-print": "Lqem tasiggezt n usebter agi",
        "tooltip-t-permalink": "Azday ameɣlal ɣer lqem agi n usebter",
        "tooltip-ca-nstab-main": "Ẓer ayen yellan deg usebter",
+       "tooltip-ca-nstab-user": "Ẓer asebter n wemseqdac",
        "tooltip-ca-nstab-special": "Wagi d asebter uzzig, ur tezmireḍ ara ad t-tbeddleḍ",
+       "tooltip-ca-nstab-project": "Ẓer asebter n usenfar",
+       "tooltip-ca-nstab-image": "Ẓer asebter n tugna",
+       "tooltip-ca-nstab-mediawiki": "Ẓer izen n system",
+       "tooltip-ca-nstab-template": "Ẓer talɣa",
        "tooltip-ca-nstab-category": "Ẓer asebter n taggayin",
+       "tooltip-minoredit": "Wagi d abeddel afessas",
+       "tooltip-save": "Smekti ibeddlen inek",
+       "tooltip-preview": "G leɛnaya-k, pre-ẓer ibeddlen inek uqbel ad tesmektiḍ!",
+       "tooltip-diff": "Ssken ayen tbeddleḍ deg uḍris.",
+       "tooltip-compareselectedversions": "Ẓer amgirred ger snat tisiwlini (i textareḍ) n usebter-agi.",
+       "tooltip-watch": "Rnu asebter-agi i wumuɣ n uɛessi inu",
        "tooltip-rollback": "\"Semmet\" yesemmet s-yiwen asenned akk d-acu amseqdac aneggaru yebeddel deg usebter",
+       "tooltip-undo": "\"Ssefsu\" yesemmet abeddel agi dɣa i ldi asfaylu n ubeddel deg uskar n azaraskan. I ɛemmed an uɣal ar lqem n uqbel dɣa an rnu taɣẓint deg tanaka n ugzul.",
+       "tooltip-summary": "Sekcem agzul awezzlan",
+       "siteuser": "{{SITENAME}} aseqdac $1",
+       "simpleantispam-label": "Asenqed mgal aspam.\nUr <strong>ttaru</strong> kra dagi!",
+       "pageinfo-title": "Tilɣa i \"$1\"",
+       "pageinfo-header-basic": "Tilɣa n udasil",
+       "pageinfo-header-edits": "Amezruy n ibeddilen",
+       "pageinfo-header-restrictions": "Amesten n usebter",
+       "pageinfo-header-properties": "Ayla n usebter",
+       "pageinfo-display-title": "Azwel yebeqqeḍen",
+       "pageinfo-default-sort": "Tasarut n ufran s lexṣas",
+       "pageinfo-length": "Tiddi n usebter (s itamḍanen)",
+       "pageinfo-article-id": "Uṭṭun n usebter",
+       "pageinfo-language": "Tutlayt n ugbur n usebtar",
+       "pageinfo-content-model": "Talɣa n ugbur n usebtar",
+       "pageinfo-robot-policy": "Asbeddi sɣur iṛubuten",
+       "pageinfo-robot-index": "Tessireg",
+       "pageinfo-robot-noindex": "Tegdel",
+       "pageinfo-watchers": "Amḍan n imttekkiyen yesɛan asebter agi deg umuɣ nsen n uɛassi",
+       "pageinfo-few-watchers": "Kkes-as $1 {{PLURAL:$1|amanay|imanayen}}",
+       "pageinfo-redirects-name": "Amḍan n izdayen ɣer asebtar agi",
+       "pageinfo-subpages-name": "Adu-isebtar n usebter agi",
+       "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|anegzum|inegzumen}}; $3 {{PLURAL:$3|ur-anegzum|ur-inegzumen}})",
+       "pageinfo-firstuser": "Ameslal n usebtar",
+       "pageinfo-firsttime": "Azmez n usnulfu n usebtar",
+       "pageinfo-lastuser": "Atekki aneggaru",
+       "pageinfo-lasttime": "Azmez n ubeddel aneggaru",
+       "pageinfo-edits": "Amḍan aɣrud n ibeddilen",
+       "pageinfo-authors": "Amḍan aɣrud n imeskaren iwḥiden",
+       "pageinfo-recent-edits": "Amḍan n ibeddilen imaynuten (deg $1 ineggura)",
+       "pageinfo-recent-authors": "Amḍan n imeskaren iwḥiden imaynuten",
+       "pageinfo-magic-words": "{{PLURAL:$1|Awal n tiḥḥerga|Awalen n tiḥḥerga}} ($1)",
+       "pageinfo-hidden-categories": "{{PLURAL:$1|Taggayt yeffren|Taggayin yeffren}} ($1)",
+       "pageinfo-templates": "{{PLURAL:$1|Talɣa i seddan|Talɣiwin i seddan}} ($1)",
        "pageinfo-toolboxlink": "Tilɣa n udasil",
+       "pageinfo-contentpage": "Yetweḥseb am asebtar n ugbur",
        "pageinfo-contentpage-yes": "Ih",
+       "pageinfo-user-id": "ID n umseqdac",
+       "patrol-log-page": "Aɣmis n usenqad",
+       "previousdiff": "← Amgirred ssabeq",
+       "nextdiff": "Amgirred ameḍfir →",
+       "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|asebtar|isebtar}}",
+       "file-info-size": "$1 × $2 pixel, tiddi n ufaylu: $3, anaw n MIME: $4",
+       "file-info-size-pages": "$1 × $2 iferdisen, tiddi n ufaylu : $3, tawsit MIME : $4, $5 {{PLURAL:$5|asebtar|isebtar}}",
+       "file-nohires": "Ulac resolution i tameqqrant fell-as.",
+       "svg-long-desc": "Afaylu SVG, tabadut n $1 × $2 pixel, lqedd: $3",
+       "show-big-image": "Afaylu aneṣli",
+       "show-big-image-preview": "Tiddi n azaraskan agi : $1.",
+       "show-big-image-other": "{{PLURAL:$2|Tabadut|Tibuda}} nniḍen: $1.",
        "show-big-image-size": "$1 × $2 pixels",
+       "newimages-user": "Tansa IP neɣ isem n wemseqdac:",
        "ilsubmit": "Iruzzi",
        "days": "{{PLURAL:$1|$1 ass|$1 ussan}}",
        "metadata": "Adferisefka",
+       "metadata-help": "Afaylu agi, yesɛa tilɣa tisutay, ahat d-tamsaknewt id ernan tilɣa agi. \nMa afaylu yebeddel seg addad-is amezwaru, ahat kra n tilɣa ur zemrent ara ad illint d-timekdant s-ufaylu amiran.",
        "metadata-fields": "Urtan n adferisefka n tugniwin yellan deg umuɣ n izen agi, ad seddun deg usebter n aglam n tugna mi ṭabla n adferisefka at illi tesemẓi. Urtan nniḍen ad illin ffren m-ulac.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "exif-orientation": "Taɣda",
+       "exif-xresolution": "Tabadut taglawit",
+       "exif-yresolution": "Tabadut taratakt",
+       "exif-datetime": "Azmez n ubeddel",
+       "exif-make": "Amakras n taweṣṣaft",
+       "exif-model": "Talɣa n taweṣṣaft",
+       "exif-software": "Aseɣẓan yetseqdecen",
+       "exif-exifversion": "Lqem EXIF",
+       "exif-colorspace": "Tallunt n tiniskit",
+       "exif-datetimeoriginal": "Azmez n tuddma tamezwarut",
+       "exif-datetimedigitized": "Azmez n usemḍen",
+       "exif-filesource": "aɣbalu uflay",
+       "exif-gpsdatestamp": "Azmez n GPS",
+       "exif-source": "Aɣbalu",
+       "exif-orientation-1": "Amagnu",
        "namespacesall": "akk",
        "monthsall": "akk",
+       "imgmultipagenext": "asebter ameḍfir →",
+       "imgmultigo": "Ruḥ!",
+       "imgmultigoto": "Ruḥ ar usebtar $1",
+       "watchlisttools-clear": "Sfeḍ tabdart n uḍfaṛ",
+       "watchlisttools-view": "Umuɣ n uɛessi",
+       "watchlisttools-edit": "Ẓer u beddel umuɣ n uɛessi",
+       "watchlisttools-raw": "Beddel umuɣ n uɛessi (raw)",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|asqerdec]])",
+       "version-no-ext-name": "[ulac isem]",
+       "version-ext-colheader-description": "Aglam",
+       "version-libraries-description": "Aglam",
+       "redirect": "Welleh s usulay n ufaylu, aseqdac, asebter, aceggir neɣ aɣmis",
+       "redirect-summary": "Asebter-agi uslig yettuwelleh ɣeṛ ufaylu (isem n ufaylu yettunefk-d), asebter (Asulay n uceggir neɣ n usebter yettunefk-d), asebter n useqdac (asulay umḍin n useqdac yettunefk-d), neɣ anekcam n uɣmis (Asulay  n uɣmis yettunefk-d). Asseqdec:\n[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], neɣ [[{{#Special:Redirect}}/logid/186]].",
+       "redirect-submit": "Ṛuḥ",
+       "redirect-lookup": "Anadi:",
+       "redirect-value": "Azal:",
+       "redirect-user": "ID n umseqdac",
+       "redirect-page": "Uṭṭun n usebter",
+       "redirect-revision": "Tacaggart n usebtar",
+       "redirect-file": "Isem n ufaylu",
        "fileduplicatesearch-submit": "Iruzzi",
        "specialpages": "Asebter uslig",
+       "tag-filter": "Astay n [[Special:Tags|ticraḍ]]:",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Ticṛeṭ|Ticraḍ}}]] : $2)",
+       "tags-source-header": "Aɣbalu",
        "tags-active-yes": "Ih",
        "tags-active-no": "Uhu",
+       "tags-delete": "kkes",
+       "tags-hitcount": "$1 {{PLURAL:$1|abeddel|ibeddlen}}",
+       "logentry-delete-delete": "$1 {{GENDER:$2|yemḥa}} asebtar $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|yerra-d|terra-d}} asebter $3 ($4)",
+       "logentry-delete-revision": "$1 {{GENDER:$2|yebeddel|tebeddel}} tabani {{PLURAL:$5|n lqem|n $5 ileqman}} ɣef usebtar $3: $4",
+       "revdelete-content-hid": "agbur yeffren",
+       "logentry-move-move": "$1 {{GENDER:$2|yebeddel isem|tebeddel isem}} n usebtar seg $3 ar $4",
+       "logentry-move-move-noredirect": "$1 {{GENDER:$2|yebeddel isem|tebeddel isem}} n usebtar seg $3 ar $4 war anegzum",
+       "logentry-move-move_redir": "$1 {{GENDER:$2|yesiweḍ|tesiweḍ}} asebtar seg $3 ar $4 nnig anegzum",
+       "logentry-patrol-patrol-auto": "$1 {{GENDER:$2|yecṛeḍ|tecṛeḍ}} s uwurman tacaggart $4 n usebtar $3 am aken tetwalsɣer",
+       "logentry-newusers-create": "Amiḍan n umseqdac $1 {{GENDER:$2|yetwaxleq}}",
+       "logentry-newusers-autocreate": "Amiḍan n umseqdac $1 {{GENDER:$2|yetwaxleq}} s uwurman",
+       "logentry-upload-upload": "$1 {{GENDER:$2|yessuli|tessuli}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|yessuli-d|tessuli-d}} lqem amaynut n $3",
        "searchsuggest-search": "Iruzzi {{SITENAME}}",
-       "duration-days": "$1 {{PLURAL:$1|ass|ussan}}"
+       "duration-days": "$1 {{PLURAL:$1|ass|ussan}}",
+       "randomrootpage": "Asebter aẓaṛ agacuran",
+       "authmanager-realname-label": "Isem n ṣṣeḥ:"
 }
index 7b7a2de..6b67340 100644 (file)
        "viewtalkpage": "Прикажи дискусију",
        "otherlanguages": "На другим језицима",
        "redirectedfrom": "(преусмерено са $1)",
-       "redirectpagesub": "Ð\9fÑ\80еÑ\83Ñ\81меÑ\80ење",
+       "redirectpagesub": "Ð\9fÑ\80еÑ\83Ñ\81меÑ\80авање",
        "redirectto": "Преусмерава на:",
        "lastmodifiedat": "Ова страница је последњи пут уређена на датум $1 у $2 ч.",
        "viewcount": "Овој страници је приступљено {{PLURAL:$1|једанпут|$1 пута}}.",
        "nstab-category": "Категорија",
        "mainpage-nstab": "Главна страна",
        "nosuchaction": "Нема такве радње",
-       "nosuchactiontext": "Радња која је наведена у URL није важећа.\nМожда сте откуцали погрешан URL-а или сте пратили покварену везу.\nОво такође може да указује на грешку у софтверу који користи {{SITENAME}}.",
+       "nosuchactiontext": "Радња која је наведена у URL адреси није важећа.\nМожда сте откуцали погрешан URL-а или сте пратили покварену везу.\nОво такође може да указује на грешку у софтверу који користи {{SITENAME}}.",
        "nosuchspecialpage": "Нема такве посебне странице",
        "nospecialpagetext": "<strong>Захтевали сте невалидну посебну страницу.</strong>\n\nСписак валидних посебних страница може да се пронађе на „[[Special:SpecialPages|{{int:specialpages}}]]”.",
        "error": "Грешка",
        "headline_sample": "Текст наслова",
        "headline_tip": "Поднаслов (ниво 2)",
        "nowiki_sample": "Овде уметните необликован текст",
-       "nowiki_tip": "Занемари вики обликовање",
+       "nowiki_tip": "Занемари вики форматирање",
        "image_sample": "Пример.jpg",
        "image_tip": "Уграђивање датотеке",
        "media_sample": "Пример.ogg",
        "anoneditwarning": "<strong>Упозорење:</strong> Нисте пријављени. Ако објавите страницу, ваша IP адреса ће бити јавно видљива у њеној историји измена и другде. Ако се <strong>[$1 пријавите]</strong> или <strong>[$2 отворите налог]</strong>, поред осталих погодности које добијате ваше измене ће бити приписиване вашем корисничком имену.",
        "anonpreviewwarning": "<em>Нисте пријављени. Ако објавите страницу, ваша IP адреса ће бити јавно видљива у њеној историји измена и другде.</em>",
        "missingsummary": "<strong>Подсетник:</strong> нисте навели опис измене.\nАко поново кликнете на „$1”, ваша измена ће бити сачувана без њега.",
-       "selfredirect": "<strong>Упозорење:</strong> Преусмеравате ову страницу на њу саму.\nМожда вам је одредишна страница за преусмерење погрешна или уређујете погрешну страницу.\nАко још једном притиснете „$1”, преусмерење ће свеједно бити направљено.",
+       "selfredirect": "<strong>Упозорење:</strong> Преусмеравате ову страницу на њу саму.\nМожда сте навели погрешну одредишну страницу за преусмеравање или уређујете погрешну страницу.\nАко поново кликнете на „$1”, преусмеравање ће свеједно бити направљено.",
        "missingcommenttext": "Молимо унесите коментар.",
        "missingcommentheader": "<strong>Напомена:</strong> Нисте унели наслов теме овог коментара.\nАко поново кликнете на „$1”, измена ће бити сачувана без наслова.",
-       "summary-preview": "Преглед описа измене:",
+       "summary-preview": "Претпреглед описа измене:",
        "subject-preview": "Преглед теме:",
        "previewerrortext": "Дошло је до грешке при покушају прегледа промена.",
        "blockedtitle": "Корисник је блокиран",
        "prevn-title": "$1 {{PLURAL:$1|претходни  резултат|претходна резултата|претходних резултата}}",
        "nextn-title": "$1 {{PLURAL:$1|следећи резултат|следећа резултата|следећих резултата}}",
        "shown-title": "Прикажи $1 {{PLURAL:$1|резултат|резултата}} по страници",
-       "viewprevnext": "Погледајте ($1 {{int:pipe-separator}} $2) ($3).",
+       "viewprevnext": "Приказ ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "<strong>Постоји страница под називом „[[:$1]]”!</strong> {{PLURAL:$2|0=|Такође погледајте друге пронађене резултате претраге.}}",
        "searchmenu-new": "<strong>Направите страницу „[[:$1]]” на овом викију!</strong> {{PLURAL:$2|0=|Такође погледајте резултат претраге.|Такође погледајте резултате претраге.}}",
        "searchprofile-articles": "Странице са садржајем",
        "searchprofile-advanced-tooltip": "Претражите прилагођене именске просторе",
        "search-result-size": "$1 ({{PLURAL:$2|1 реч|$2 речи}})",
        "search-result-category-size": "{{PLURAL:$1|1 члан|$1 члана|$1 чланова}}, ({{PLURAL:$2|1 поткатегорија|$2 поткатегорије|$2 поткатегорија}}, {{PLURAL:$3|1 датотека|$3 датотеке|$3 датотека}})",
-       "search-redirect": "(пÑ\80еÑ\83Ñ\81меÑ\80ење са $1)",
+       "search-redirect": "(пÑ\80еÑ\83Ñ\81меÑ\80авање са $1)",
        "search-section": "(одељак $1)",
        "search-category": "(категорија $1)",
        "search-file-match": "(подудара се садржај датотеке)",
        "right-reupload": "замењивање постојећих датотека",
        "right-reupload-own": "замењивање сопствених датотека",
        "right-reupload-shared": "локално замењивање датотека на дељеном спремишту медија",
-       "right-upload_by_url": "Ð\9eÑ\82пÑ\80емаÑ\9aе Ð´Ð°Ñ\82оÑ\82ека Ñ\81а Ð²ÐµÐ±-адресе",
+       "right-upload_by_url": "оÑ\82пÑ\80емаÑ\9aе Ð´Ð°Ñ\82оÑ\82ека Ñ\81а URL адресе",
        "right-purge": "чишћење кеш меморије странице без потврде",
        "right-autoconfirmed": "без ограничавања ставки за IP адресе",
        "right-bot": "сматрање измена као аутоматски процес",
        "action-upload": "отпремите ову датотеку",
        "action-reupload": "замењујете ову постојећу датотеку",
        "action-reupload-shared": "премостите ову датотеку са заједничког складишта",
-       "action-upload_by_url": "отпремите ову датотеку путем УРЛ-а",
+       "action-upload_by_url": "отпремите ову датотеку са URL адресе",
        "action-writeapi": "користите API за писање",
        "action-delete": "избришете ову страницу",
        "action-deleterevision": "бришете измене",
        "uploadwarning-text-nostash": "Ре-отпремите датотеку, измените опис испод и покушајте поново.",
        "savefile": "Сачувај датотеку",
        "uploaddisabled": "Отпремање је онемогућено.",
-       "copyuploaddisabled": "Отпремање путем веб-адресе је онемогућено.",
+       "copyuploaddisabled": "Отпремање са URL адресе је онемогућено.",
        "uploaddisabledtext": "Отпремање датотека је онемогућено.",
        "php-uploaddisabledtext": "Отпремање датотека је онемогућено у PHP-у.\nПроверите подешавања file_uploads.",
        "uploadscripted": "Датотека садржи HTML или скриптни код који може бити погрешно протумачен од стране прегледача.",
        "uploadjava": "Датотека је формата ZIP који садржи јава .class елемент.\nСлање јава датотека није дозвољено јер оне могу изазвати заобилажење сигурносних ограничења.",
        "upload-source": "Изворна датотека",
        "sourcefilename": "Назив изворне датотеке:",
-       "sourceurl": "Адреса извора:",
+       "sourceurl": "URL адреса извора:",
        "destfilename": "Назив:",
        "upload-maxfilesize": "Максимална величина датотеке: $1",
        "upload-description": "Опис датотеке",
        "filename-bad-prefix": "Назив датотеке коју шаљете почиње са <strong>„$1“</strong>, а њега обично додељују дигитални фотоапарати.\nИзаберите назив датотеке који описује њен садржај.",
        "filename-prefix-blacklist": " #<!-- оставите овај ред онаквим какав јесте --> <pre>\n# Синтакса је следећа:\n#   * Све од тарабе па до краја реда је коментар\n#   * Сваки ред означава префикс типичних назива датотека које додељивају дигитални апарати\nCIMG # Касио\nDSC_ # Никон\nDSCF # Фуџи\nDSCN # Никон\nDUW # неки мобилни телефони\nIMG # опште\nJD # Џеноптик\nMGP # Пентакс\nPICT # разно\n #</pre> <!-- оставите овај ред онаквим какав јесте -->",
        "upload-proto-error": "Неважећи протокол",
-       "upload-proto-error-text": "СлаÑ\9aе Ñ\81а Ñ\81поÑ\99не Ð»Ð¾ÐºÐ°Ñ\86иÑ\98е Ð·Ð°Ñ\85Ñ\82ева Ð°Ð´Ñ\80еÑ\81Ñ\83 ÐºÐ¾Ñ\98а Ð¿Ð¾Ñ\87иÑ\9aе са <code>http://</code> или <code>ftp://</code>.",
+       "upload-proto-error-text": "УдаÑ\99ено Ð¾Ñ\82пÑ\80емаÑ\9aе Ð·Ð°Ñ\85Ñ\82ева URL Ð°Ð´Ñ\80еÑ\81е ÐºÐ¾Ñ\98е Ð¿Ð¾Ñ\87иÑ\9aÑ\83 са <code>http://</code> или <code>ftp://</code>.",
        "upload-file-error": "Унутрашња грешка",
        "upload-file-error-text": "Дошло је до унутрашње грешке при отварању привремене датотеке на серверу.\nКонтактирајте [[Special:ListUsers/sysop|администратора]].",
        "upload-misc-error": "Непозната грешка при слању датотеке",
        "uploadstash-file-not-found-no-thumb": "Није могуће прибавити сличицу.",
        "uploadstash-file-not-found-no-local-path": "Нема локалне путање за умањену ставку.",
        "uploadstash-file-not-found-no-object": "Није могуће направити локални датотечни објекат за сличицу.",
-       "uploadstash-file-not-found-no-remote-thumb": "Добављање минијатуре није успело: $1\nАдреса = $2",
+       "uploadstash-file-not-found-no-remote-thumb": "Добављање сличице није успело: $1\nURL адреса = $2",
        "uploadstash-file-not-found-missing-content-type": "Недостаје заглавље за тип садржаја.",
        "uploadstash-file-not-found-not-exists": "Не могу наћи путању или ово није обична датотека.",
        "uploadstash-file-too-large": "Не могу послужити датотеку већу од $1 {{PLURAL:$1|бајта|бајтова}}",
        "img-auth-streaming": "Учитавам „$1“...",
        "img-auth-public": "Сврха img_auth.php је да прослеђује датотеке из приватних викија.\nОвај вики је постављен као јавни.\nРади сигурности, img_auth.php је онемогућен.",
        "img-auth-noread": "Корисник нема приступ за читање „$1“.",
-       "http-invalid-url": "Ð\9dеважеÑ\9bи URL: $1",
+       "http-invalid-url": "Ð\9dеважеÑ\9bа URL Ð°Ð´Ñ\80еÑ\81а: $1",
        "http-invalid-scheme": "Адресе са шемом „$1“ нису подржане.",
        "http-request-error": "HTTP захтев није прошао због непознате грешке.",
        "http-read-error": "HTTP грешка при читању.",
        "http-timed-out": "Захтев HTTP је истекао.",
-       "http-curl-error": "Ð\93Ñ\80еÑ\88ка Ð¿Ñ\80и Ð¾Ñ\82ваÑ\80аÑ\9aÑ\83 адресе: $1",
+       "http-curl-error": "Ð\93Ñ\80еÑ\88ка Ð¿Ñ\80и Ð´Ð¾Ð±Ð°Ð²Ñ\99аÑ\9aÑ\83 URL адресе: $1",
        "http-bad-status": "Дошло је до проблема током захтева HTTP: $1 $2",
        "http-internal-error": "HTTP интерна грешка.",
        "upload-curl-error6": "Није могуће приступити URL адреси",
        "nolicense": "Није изабрано",
        "licenses-edit": "Уреди избор лиценци",
        "license-nopreview": "(преглед није доступан)",
-       "upload_source_url": "(ваÑ\88а Ð¸Ð·Ð°Ð±Ñ\80ана Ð´Ð°Ñ\82оÑ\82ека Ð¾Ð´ Ð²Ð°Ð¶ÐµÑ\9bиÑ\85, Ñ\98авно Ð´Ð¾Ñ\81Ñ\82Ñ\83пниÑ\85 адреса)",
+       "upload_source_url": "(ваÑ\88а Ð¾Ð´Ð°Ð±Ñ\80ана Ð´Ð°Ñ\82оÑ\82ека Ð¾Ð´ Ð²Ð°Ð¶ÐµÑ\9bиÑ\85, Ñ\98авно Ð´Ð¾Ñ\81Ñ\82Ñ\83пниÑ\85 URL адреса)",
        "upload_source_file": "(ваша одабрана датотека са рачунара)",
        "listfiles-delete": "избриши",
        "listfiles-summary": "Ова посебна страница приказује све отпремљене датотеке.",
        "linkstoimage-more": "Више од $1 {{PLURAL:$1|страница користи|странице користе|страница користи}} ову датотеку.\nСледећи списак приказује {{PLURAL:$1|прву страницу која користи|прве $1 странице које користе|првих $1 страница које користе}} само ову датотеку.\nДоступан је и [[Special:WhatLinksHere/$2|потпуни списак]].",
        "nolinkstoimage": "Нема страница које користе ову датотеку.",
        "morelinkstoimage": "Погледајте [[Special:WhatLinksHere/$1|више веза]] до ове датотеке.",
-       "linkstoimage-redirect": "$1 (пÑ\80еÑ\83Ñ\81меÑ\80ење датотеке) $2",
+       "linkstoimage-redirect": "$1 (пÑ\80еÑ\83Ñ\81меÑ\80авање датотеке) $2",
        "duplicatesoffile": "{{PLURAL:$1|Следећа датотека је дупликат|Следеће $1 датотеке су дупликати|Следећих $1 датотека су дупликати}} ове датотеке ([[Special:FileDuplicateSearch/$2|детаљније]]):",
        "sharedupload": "Ова датотека се налази на $1 и може се користити и на другим пројектима.",
        "sharedupload-desc-there": "Ова датотека се налази на $1 и може се користити и на другим пројектима.\nПогледајте [$2 страницу за опис датотеке] за више детаља о њој.",
        "randomincategory-category": "Категорија:",
        "randomincategory-legend": "Случајна страница у категорији",
        "randomincategory-submit": "Иди",
-       "randomredirect": "СлÑ\83Ñ\87аÑ\98но Ð¿Ñ\80еÑ\83Ñ\81меÑ\80ење",
+       "randomredirect": "СлÑ\83Ñ\87аÑ\98но Ð¿Ñ\80еÑ\83Ñ\81меÑ\80авање",
        "randomredirect-nopages": "Нема преусмерења у именском простору „$1“.",
        "statistics": "Статистике",
        "statistics-header-pages": "Странице",
        "pageswithprop-prophidden-long": "сакривено дуго текстуално својство ($1)",
        "pageswithprop-prophidden-binary": "сакривено дуго бинарно својство ($1)",
        "doubleredirects": "Двострука преусмерења",
-       "doubleredirectstext": "Ð\9eва Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¿Ñ\80иказÑ\83Ñ\98е Ñ\81Ñ\82Ñ\80аниÑ\86е ÐºÐ¾Ñ\98е Ð¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\98Ñ\83 Ð½Ð° Ð´Ñ\80Ñ\83га Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aа.\nСваки Ñ\80ед Ñ\81адÑ\80жи Ð²ÐµÐ·Ðµ Ð¿Ñ\80ема Ð¿Ñ\80вом Ð¸ Ð´Ñ\80Ñ\83гом Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aÑ\83, ÐºÐ°Ð¾ Ð¸ Ð¾Ð´Ñ\80едиÑ\88нÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð´Ñ\80Ñ\83гог Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aа ÐºÐ¾Ñ\98а Ñ\98е Ð¾Ð±Ð¸Ñ\87но â\80\9eпÑ\80авиâ\80\9c Ñ\87ланак Ð½Ð° ÐºÐ¾Ð³Ð° Ð¿Ñ\80во Ð¿Ñ\80еÑ\83Ñ\81меÑ\80ење треба да упућује.\n<del>Прецртани</del> уноси су већ решени.",
+       "doubleredirectstext": "Ð\9eва Ñ\81Ñ\82Ñ\80аниÑ\86а Ð½Ð°Ð²Ð¾Ð´Ð¸ Ñ\81Ñ\82Ñ\80аниÑ\86е ÐºÐ¾Ñ\98е Ð¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\98Ñ\83 Ð½Ð° Ð´Ñ\80Ñ\83га Ð¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\9aа.\nСваки Ñ\80ед Ñ\81адÑ\80жи Ð²ÐµÐ·Ðµ Ð¿Ñ\80ема Ð¿Ñ\80вом Ð¸ Ð´Ñ\80Ñ\83гом Ð¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\9aÑ\83, ÐºÐ°Ð¾ Ð¸ Ð¾Ð´Ñ\80едиÑ\88нÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð´Ñ\80Ñ\83гог Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aа ÐºÐ¾Ñ\98а Ñ\98е Ð¾Ð±Ð¸Ñ\87но â\80\9eпÑ\80авиâ\80\9d Ñ\87ланак Ð½Ð° ÐºÐ¾Ð³Ð° Ð¿Ñ\80во Ð¿Ñ\80еÑ\83Ñ\81меÑ\80авање треба да упућује.\n<del>Прецртани</del> уноси су већ решени.",
        "double-redirect-fixed-move": "[[$1]] је премештен.\nАутоматски је ажурирано и сада преусмерава на [[$2]].",
        "double-redirect-fixed-maintenance": "Аутоматски исправља двострука преусмерења из [[$1]] у [[$2]] као део одржавања",
        "double-redirect-fixer": "Исправљач преусмерења",
-       "brokenredirects": "Ð\9fокваÑ\80ена Ð¿Ñ\80еÑ\83Ñ\81меÑ\80ења",
+       "brokenredirects": "Ð\9fокваÑ\80ена Ð¿Ñ\80еÑ\83Ñ\81меÑ\80авања",
        "brokenredirectstext": "Следећа преусмерења воде на непостојеће странице:",
        "brokenredirects-edit": "уреди",
        "brokenredirects-delete": "избриши",
        "mostinterwikis": "Странице са највише међувикија",
        "mostrevisions": "Странице са највише измена",
        "prefixindex": "Све странице са префиксом",
-       "prefixindex-namespace": "Све странице с предметком (именски простор $1)",
+       "prefixindex-namespace": "Све странице са префиксом (именски простор $1)",
        "prefixindex-submit": "Прикажи",
        "prefixindex-strip": "Сакриј префикс у резултатима",
        "shortpages": "Кратке странице",
        "apisandbox-loading-results": "Пријем API резултата...",
        "apisandbox-results-error": "Дошло је до грешке приликом учитавања резултата API упита: $1.",
        "apisandbox-request-selectformat-label": "Прикажи сахтеване податке као:",
-       "apisandbox-request-url-label": "Адреса захтева:",
+       "apisandbox-request-url-label": "URL адреса захтева:",
        "apisandbox-request-format-json-label": "JSON",
        "apisandbox-request-json-label": "Затражите JSON:",
        "apisandbox-request-time": "Време за извршавање захтјева: {{PLURAL:$1|$1 милисекунда|$1 милисекунде|$1 милисекунди}}",
        "deletecomment": "Разлог:",
        "deleteotherreason": "Други/додатни разлог:",
        "deletereasonotherlist": "Други разлог",
-       "deletereason-dropdown": "* Уобичајени разлози за брисање\n** Непожељан садржај\n** Вандализам\n** Кршење ауторских права\n** Захтев аутора\n** Покварено преусмерење",
+       "deletereason-dropdown": "* Уобичајени разлози за брисање\n** Непожељан садржај\n** Вандализам\n** Кршење ауторских права\n** Захтев аутора\n** Прекинуто преусмеравање",
        "delete-edit-reasonlist": "Уреди разлоге брисања",
        "delete-toobig": "Ова страница има велику историју измена, преко $1 {{PLURAL:$1|измена|измене|измена}}.\nБрисање таквих страница је ограничено да би се спречило случајно оптерећење сервера.",
        "delete-warning-toobig": "Ова страница има велику историју измена, преко $1 {{PLURAL:$1|измена|измене|измена}}.\nЊено брисање може да поремети базу података, стога поступајте с опрезом.",
        "linkshere": "Следеће странице воде на страницу <strong>$2</strong>:",
        "nolinkshere": "Ниједна страница није повезана са: <strong>$2</strong>.",
        "nolinkshere-ns": "Ниједна страница не води на страницу <strong>$2</strong> у изабраном именском простору.",
-       "isredirect": "пÑ\80еÑ\83Ñ\81меÑ\80ење",
+       "isredirect": "пÑ\80еÑ\83Ñ\81меÑ\80авање",
        "istemplate": "укључивање",
        "isimage": "веза до датотеке",
        "whatlinkshere-prev": "{{PLURAL:$1|претходни|претходна $1|претходних $1}}",
        "lockedbyandtime": "(од $1 дана $2 у $3)",
        "move-page": "Премештање странице „$1”",
        "move-page-legend": "Премештање странице",
-       "movepagetext": "Ð\94оÑ\9aи Ð¾Ð±Ñ\80азаÑ\86 Ñ\9bе Ð¿Ñ\80еименоваÑ\82и Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, Ð¿Ñ\80емеÑ\88Ñ\82аÑ\98Ñ\83Ñ\9bи Ñ\86елÑ\83 Ð¸Ñ\81Ñ\82оÑ\80иÑ\98Ñ\83 Ð½Ð° Ð½Ð¾Ð²Ð¾ Ð¸Ð¼Ðµ.\nСÑ\82аÑ\80и Ð½Ð°Ñ\81лов Ð¿Ð¾Ñ\81Ñ\82аÑ\9bе Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aе Ð½Ð° Ð½Ð¾Ð²Ð¸.\nÐ\9cожеÑ\82е Ð°Ð¶Ñ\83Ñ\80иÑ\80аÑ\82и Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aа ÐºÐ¾Ñ\98а Ð²Ð¾Ð´Ðµ Ð´Ð¾ Ð¸Ð·Ð²Ð¾Ñ\80ног Ð½Ð°Ñ\81лова;\nпогледаÑ\98Ñ\82е [[Special:DoubleRedirects|двоÑ\81Ñ\82Ñ\80Ñ\83ка]] Ð¸Ð»Ð¸ [[Special:BrokenRedirects|покваÑ\80ена]] Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aа.\nÐ\9dа Ð²Ð°Ð¼Ð° Ñ\98е Ð¾Ð´Ð³Ð¾Ð²Ð¾Ñ\80ноÑ\81Ñ\82 Ð´Ð° Ð²ÐµÐ·Ðµ Ð¸ Ð´Ð°Ñ\99е Ð¸Ð´Ñ\83 Ñ\82амо Ð³Ð´Ðµ Ñ\82Ñ\80еба.\n\nСÑ\82Ñ\80аниÑ\86а <strong>неÑ\9bе</strong> Ð±Ð¸Ñ\82и Ð¿Ñ\80емеÑ\88Ñ\82ена Ð°ÐºÐ¾ Ð²ÐµÑ\9b Ð¿Ð¾Ñ\81Ñ\82оÑ\98и Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\81 Ñ\82им Ð¸Ð¼ÐµÐ½Ð¾Ð¼ (оÑ\81им Ð°ÐºÐ¾ Ñ\98е Ð¿Ñ\80азна, Ñ\81адÑ\80жи Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aе Ð¸Ð»Ð¸ Ð½ÐµÐ¼Ð° Ð¸Ñ\81Ñ\82оÑ\80иÑ\98Ñ\83 Ð¸Ð·Ð¼ÐµÐ½Ð°).\nТо Ð·Ð½Ð°Ñ\87и Ð´Ð° Ð¼Ð¾Ð¶ÐµÑ\82е Ð²Ñ\80аÑ\82иÑ\82и Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð½Ð° Ð¿Ñ\80еÑ\82Ñ\85одно Ð¸Ð¼Ðµ Ð°ÐºÐ¾ Ð¿Ð¾Ð³Ñ\80еÑ\88иÑ\82е, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е ''пÑ\80епиÑ\81аÑ\82и'' Ð¿Ð¾Ñ\81Ñ\82оÑ\98еÑ\9bÑ\83.\n\n<strong>Ð\9dапомена:</strong>\nÐ\9eво Ð¼Ð¾Ð¶Ðµ Ð¿Ñ\80едÑ\81Ñ\82авÑ\99аÑ\82и Ð´Ñ\80аÑ\81Ñ\82иÑ\87нÑ\83 Ð¸ Ð½ÐµÐ¾Ñ\87екиванÑ\83 Ð¸Ð·Ð¼ÐµÐ½Ñ\83 Ð·Ð° Ð¿Ð¾Ð¿Ñ\83лаÑ\80нÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83;\nдобÑ\80о Ñ\80азмиÑ\81лиÑ\82е Ð¾ Ð¿Ð¾Ñ\81ледиÑ\86ама пре него што наставите.",
-       "movepagetext-noredirectfixer": "Ð\94оÑ\9aи Ð¾Ð±Ñ\80азаÑ\86 Ñ\9bе Ð¿Ñ\80еименоваÑ\82и Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, Ð¿Ñ\80емеÑ\88Ñ\82аÑ\98Ñ\83Ñ\9bи Ñ\86елÑ\83 Ð¸Ñ\81Ñ\82оÑ\80иÑ\98Ñ\83 Ð½Ð° Ð½Ð¾Ð²Ð¾ Ð¸Ð¼Ðµ.\nСÑ\82аÑ\80и Ð½Ð°Ñ\81лов Ð¿Ð¾Ñ\81Ñ\82аÑ\9bе Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aе Ð½Ð° Ð½Ð¾Ð²Ð¸.\nÐ\9fогледаÑ\98Ñ\82е [[Special:DoubleRedirects|двоÑ\81Ñ\82Ñ\80Ñ\83ка]] Ð¸Ð»Ð¸ [[Special:BrokenRedirects|покваÑ\80ена]] Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aа.\nÐ\9dа Ð²Ð°Ð¼Ð° Ñ\98е Ð¾Ð´Ð³Ð¾Ð²Ð¾Ñ\80ноÑ\81Ñ\82 Ð´Ð° Ð²ÐµÐ·Ðµ Ð¸ Ð´Ð°Ñ\99е Ð¸Ð´Ñ\83 Ñ\82амо Ð³Ð´Ðµ Ñ\82Ñ\80еба.\n\nСÑ\82Ñ\80аниÑ\86а <strong>неÑ\9bе</strong> Ð±Ð¸Ñ\82и Ð¿Ñ\80емеÑ\88Ñ\82ена Ð°ÐºÐ¾ Ð²ÐµÑ\9b Ð¿Ð¾Ñ\81Ñ\82оÑ\98и Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\81 Ñ\82им Ð¸Ð¼ÐµÐ½Ð¾Ð¼ (оÑ\81им Ð°ÐºÐ¾ Ñ\98е Ð¿Ñ\80азна, Ñ\81адÑ\80жи Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aе Ð¸Ð»Ð¸ Ð½ÐµÐ¼Ð° Ð¸Ñ\81Ñ\82оÑ\80иÑ\98Ñ\83 Ð¸Ð·Ð¼ÐµÐ½Ð°).\nТо Ð·Ð½Ð°Ñ\87и Ð´Ð° Ð¼Ð¾Ð¶ÐµÑ\82е Ð²Ñ\80аÑ\82иÑ\82и Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð½Ð° Ð¿Ñ\80еÑ\82Ñ\85одно Ð¸Ð¼Ðµ Ð°ÐºÐ¾ Ð¿Ð¾Ð³Ñ\80еÑ\88иÑ\82е, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е ''пÑ\80епиÑ\81аÑ\82и'' Ð¿Ð¾Ñ\81Ñ\82оÑ\98еÑ\9bÑ\83.\n\n<strong>Ð\9dапомена:</strong>\nÐ\9eво Ð¼Ð¾Ð¶Ðµ Ð¿Ñ\80едÑ\81Ñ\82авÑ\99аÑ\82и Ð´Ñ\80аÑ\81Ñ\82иÑ\87нÑ\83 Ð¸ Ð½ÐµÐ¾Ñ\87екиванÑ\83 Ð¸Ð·Ð¼ÐµÐ½Ñ\83 Ð·Ð° Ð¿Ð¾Ð¿Ñ\83лаÑ\80нÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83;\nдобÑ\80о Ñ\80азмиÑ\81лиÑ\82е Ð¾ Ð¿Ð¾Ñ\81ледиÑ\86ама пре него што наставите.",
+       "movepagetext": "Ð\9aоÑ\80иÑ\88Ñ\9bеÑ\9aе Ð¾Ð±Ñ\80аÑ\81Ñ\86а Ð¸Ñ\81под Ð¿Ñ\80еименоваÑ\9bе Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, Ð¿Ñ\80емеÑ\88Ñ\82аÑ\98Ñ\83Ñ\9bи Ñ\86елÑ\83 Ñ\9aенÑ\83 Ð¸Ñ\81Ñ\82оÑ\80иÑ\98Ñ\83 Ð½Ð° Ð½Ð¾Ð²Ð¾ Ð¸Ð¼Ðµ.\nСÑ\82аÑ\80и Ð½Ð°Ñ\81лов Ð¿Ð¾Ñ\81Ñ\82аÑ\9bе Ð¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\9aе Ð½Ð° Ð½Ð¾Ð²Ð¸.\nÐ\90Ñ\83Ñ\82омаÑ\82Ñ\81ки Ð¼Ð¾Ð¶ÐµÑ\82е Ð°Ð¶Ñ\83Ñ\80иÑ\80аÑ\82и Ð¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\9aа ÐºÐ¾Ñ\98а Ð²Ð¾Ð´Ðµ Ð½Ð° Ð¾Ñ\80игинални Ð½Ð°Ñ\81лов.\nÐ\90ко Ñ\81е Ð¾Ð´Ð»Ñ\83Ñ\87иÑ\82е Ð´Ð° Ð½Ðµ Ð¶ÐµÐ»Ð¸Ñ\82е, Ð¾Ð±Ð°Ð²ÐµÐ·Ð½Ð¾ Ð¿Ñ\80овеÑ\80иÑ\82е Ð´Ð° Ð»Ð¸ Ð¿Ð¾Ñ\81Ñ\82оÑ\98е [[Special:DoubleRedirects|двоÑ\81Ñ\82Ñ\80Ñ\83ка]] Ð¸Ð»Ð¸ [[Special:BrokenRedirects|покваÑ\80ена]] Ð¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\9aа.\nÐ\9eдговоÑ\80ни Ñ\81Ñ\82е Ð´Ð° Ð¾Ñ\81игÑ\83Ñ\80аÑ\82е Ð´Ð° Ð²ÐµÐ·Ðµ Ð½Ð°Ñ\81Ñ\82аве Ð´Ð° Ð²Ð¾Ð´Ðµ Ñ\82амо Ð³Ð´Ðµ Ñ\82Ñ\80еба.\n\nÐ\97апамÑ\82иÑ\82е Ð´Ð° Ñ\81Ñ\82Ñ\80аниÑ\86а <strong>неÑ\9bе</strong> Ð±Ð¸Ñ\82и Ð¿Ñ\80емеÑ\88Ñ\82ена Ð°ÐºÐ¾ Ð²ÐµÑ\9b Ð¿Ð¾Ñ\81Ñ\82оÑ\98и Ñ\81Ñ\82Ñ\80аниÑ\86а Ð½Ð° Ð½Ð¾Ð²Ð¾Ð¼ Ð½Ð°Ñ\81ловÑ\83, Ð¾Ñ\81им Ð°ÐºÐ¾ Ñ\98е Ð¾Ð²Ð° Ð´Ñ\80Ñ\83га Ð¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\9aе Ð¸ Ð½ÐµÐ¼Ð° Ñ\80аниÑ\98Ñ\83 Ð¸Ñ\81Ñ\82оÑ\80иÑ\98Ñ\83 Ð¸Ð·Ð¼ÐµÐ½Ð°.\nТо Ð·Ð½Ð°Ñ\87и Ð´Ð° Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð¿Ñ\80еименÑ\83Ñ\98еÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð½Ð°Ñ\82Ñ\80аг Ð¾Ð´Ð°ÐºÐ»Ðµ Ñ\98е Ð¿Ñ\80еименована Ð°ÐºÐ¾ Ð½Ð°Ð¿Ñ\80авиÑ\82е Ð³Ñ\80еÑ\88кÑ\83, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿Ñ\80епиÑ\81аÑ\82и Ð¿Ð¾Ñ\81Ñ\82оÑ\98еÑ\9bÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83.\n\n<strong>Ð\9dапомена:</strong>\nÐ\9eво Ð¼Ð¾Ð¶Ðµ Ð¿Ñ\80едÑ\81Ñ\82авÑ\99аÑ\82и Ð´Ñ\80аÑ\81Ñ\82иÑ\87нÑ\83 Ð¸ Ð½ÐµÐ¾Ñ\87екиванÑ\83 Ð¿Ñ\80оменÑ\83 Ð·Ð° Ð¿Ð¾Ð¿Ñ\83лаÑ\80нÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83;\nбÑ\83диÑ\82е Ñ\81игÑ\83Ñ\80ни Ð´Ð° Ñ\80азÑ\83меÑ\82е Ð¿Ð¾Ñ\81ледиÑ\86е Ð¾Ð²Ð¾Ð³а пре него што наставите.",
+       "movepagetext-noredirectfixer": "Ð\9aоÑ\80иÑ\88Ñ\9bеÑ\9aе Ð¾Ð±Ñ\80аÑ\81Ñ\86а Ð¸Ñ\81под Ð¿Ñ\80еименоваÑ\9bе Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83, Ð¿Ñ\80емеÑ\88Ñ\82аÑ\98Ñ\83Ñ\9bи Ñ\86елÑ\83 Ñ\9aенÑ\83 Ð¸Ñ\81Ñ\82оÑ\80иÑ\98Ñ\83 Ð½Ð° Ð½Ð¾Ð²Ð¾ Ð¸Ð¼Ðµ.\nСÑ\82аÑ\80и Ð½Ð°Ñ\81лов Ð¿Ð¾Ñ\81Ñ\82аÑ\9bе Ð¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\9aе Ð½Ð° Ð½Ð¾Ð²Ð¸.\nÐ\9eбавезно Ð¿Ñ\80овеÑ\80иÑ\82е Ð´Ð° Ð»Ð¸ Ð¿Ð¾Ñ\81Ñ\82оÑ\98е [[Special:DoubleRedirects|двоÑ\81Ñ\82Ñ\80Ñ\83ка]] Ð¸Ð»Ð¸ [[Special:BrokenRedirects|покваÑ\80ена]] Ð¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\9aа.\nÐ\9eдговоÑ\80ни Ñ\81Ñ\82е Ð´Ð° Ð¾Ñ\81игÑ\83Ñ\80аÑ\82е Ð´Ð° Ð²ÐµÐ·Ðµ Ð½Ð°Ñ\81Ñ\82аве Ð´Ð° Ð²Ð¾Ð´Ðµ Ñ\82амо Ð³Ð´Ðµ Ñ\82Ñ\80еба.\n\nÐ\97апамÑ\82иÑ\82е Ð´Ð° Ñ\81Ñ\82Ñ\80аниÑ\86а <strong>неÑ\9bе</strong> Ð±Ð¸Ñ\82и Ð¿Ñ\80емеÑ\88Ñ\82ена Ð°ÐºÐ¾ Ð²ÐµÑ\9b Ð¿Ð¾Ñ\81Ñ\82оÑ\98и Ñ\81Ñ\82Ñ\80аниÑ\86а Ð½Ð° Ð½Ð¾Ð²Ð¾Ð¼ Ð½Ð°Ñ\81ловÑ\83, Ð¾Ñ\81им Ð°ÐºÐ¾ Ñ\98е Ð¾Ð½Ð° Ð¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\9aе Ð¸ Ð½ÐµÐ¼Ð° Ñ\80аниÑ\98Ñ\83 Ð¸Ñ\81Ñ\82оÑ\80иÑ\98Ñ\83 Ð¸Ð·Ð¼ÐµÐ½Ð°.\nТо Ð·Ð½Ð°Ñ\87и Ð´Ð° Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð¿Ñ\80еименÑ\83Ñ\98еÑ\82е Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð½Ð°Ñ\82Ñ\80аг Ð¾Ð´Ð°ÐºÐ»Ðµ Ñ\98е Ð¿Ñ\80еименована Ð°ÐºÐ¾ Ð½Ð°Ð¿Ñ\80авиÑ\82е Ð³Ñ\80еÑ\88кÑ\83, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿Ñ\80епиÑ\81аÑ\82и Ð¿Ð¾Ñ\81Ñ\82оÑ\98еÑ\9bÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83.\n\n<strong>Ð\9dапомена:</strong>\nÐ\9eво Ð¼Ð¾Ð¶Ðµ Ð¿Ñ\80едÑ\81Ñ\82авÑ\99аÑ\82и Ð´Ñ\80аÑ\81Ñ\82иÑ\87нÑ\83 Ð¸ Ð½ÐµÐ¾Ñ\87екиванÑ\83 Ð¿Ñ\80оменÑ\83 Ð·Ð° Ð¿Ð¾Ð¿Ñ\83лаÑ\80нÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83;\nбÑ\83диÑ\82е Ñ\81игÑ\83Ñ\80ни Ð´Ð° Ñ\80азÑ\83меÑ\82е Ð¿Ð¾Ñ\81ледиÑ\86е Ð¾Ð²Ð¾Ð³а пре него што наставите.",
        "movepagetalktext": "Ако сте означили овај квадратић, одговарајућа страница за разговор биће аутоматски премештена на нови наслов, осим ако већ постоји страница за разговор са истим насловом.\n\nУ том случају, мораћете ручно да је преместите или спојите, ако има потребе за тим.",
        "moveuserpage-warning": "'''Упозорење:''' на путу сте да преместите корисничку страницу. Имајте у виду да ће само страница бити премештена, а сам корисник ''неће'' бити преименован.",
        "movecategorypage-warning": "<strong>Упозорење:</strong> премештате страницу категорије. Имајте на уму да ће само страница бити премештена и да све странице у старој категорији <em>неће</em> бити рекатегорисане у нову категорију.",
        "movepagebtn": "Премести страницу",
        "pagemovedsub": "Успешно премештање",
        "movepage-moved": "<strong>Страница „$1“ је премештена на наслов „$2“</strong>",
-       "movepage-moved-redirect": "Ð\9fÑ\80еÑ\83Ñ\81меÑ\80ење је направљено.",
+       "movepage-moved-redirect": "Ð\9fÑ\80еÑ\83Ñ\81меÑ\80авање је направљено.",
        "movepage-moved-noredirect": "Стварање преусмерења је онемогућено.",
        "movepage-delete-first": "Циљна страница има превише измена за брисање као део премештања странице.  Прво ручно избришите страницу, па покушајте поново.",
        "articleexists": "Страница са тим именом већ постоји или име које сте одабрали није важеће.\nОдаберите друго.",
        "imagetypemismatch": "Проширење нове датотеке се не поклапа с њеним типом.",
        "imageinvalidfilename": "Циљано име датотеке је неважеће",
        "fix-double-redirects": "Ажурирајте сва преусмерења која воде до првобитног наслова",
-       "move-leave-redirect": "Ð\9eÑ\81Ñ\82ави Ð¿Ñ\80еÑ\83Ñ\81меÑ\80ење",
+       "move-leave-redirect": "Ð\9eÑ\81Ñ\82ави Ð¿Ñ\80еÑ\83Ñ\81меÑ\80авање",
        "protectedpagemovewarning": "'''Упозорење:''' Ова страница је заштићена, тако да само корисници са администраторским овлашћењима могу да је преместе.\nНајновији унос у дневнику је наведен испод као референца:",
        "semiprotectedpagemovewarning": "<strong>Напомена:</strong> Ова страница је заштићена, тако да само аутоматски потврђени корисници могу да је преместе.\nНајновији унос у дневнику је наведен испод као референца:",
        "move-over-sharedrepo": "[[:$1]] се налази на дељеном складишту. Ако преместите датотеку на овај наслов, то ће заменити дељену датотеку.",
        "tooltip-ca-delete": "Избришите ову страницу",
        "tooltip-ca-undelete": "Врати измене које су начињене на овој страници пре брисања странице",
        "tooltip-ca-move": "Преместите ову страницу",
-       "tooltip-ca-watch": "Ð\94одаÑ\98Ñ\82е Ð¾Ð²Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð½Ð° Ñ\81воÑ\98 Ñ\81пиÑ\81ак Ð½Ð°Ð´Ð³Ð»ÐµÐ´Ð°Ñ\9aа",
+       "tooltip-ca-watch": "Додајте ову страницу на списак надгледања",
        "tooltip-ca-unwatch": "Уклоните ову страницу са списка надгледања",
        "tooltip-search": "Претражите пројекат {{SITENAME}}",
        "tooltip-search-go": "Идите на страницу са тачно овим именом ако постоји",
        "tooltip-ca-nstab-category": "Погледајте страницу категорије",
        "tooltip-minoredit": "Означите ову измену као мању",
        "tooltip-save": "Сачувајте своје промене",
-       "tooltip-publish": "Објавите своје измене",
-       "tooltip-preview": "Прегледајте своје промене. Користите ово дугме пре чувања.",
+       "tooltip-publish": "Објавите промене",
+       "tooltip-preview": "Прегледајте промене. Користите ово дугме пре чувања.",
        "tooltip-diff": "Погледајте које промене сте направили на тексту",
        "tooltip-compareselectedversions": "Погледаjте разлике између две изабране измене ове странице",
        "tooltip-watch": "Додајте ову страницу на свој списак надгледања",
        "exif-usageterms": "Правила коришћења",
        "exif-webstatement": "Изјава о ауторском праву",
        "exif-originaldocumentid": "Јединствени ID изворног документа",
-       "exif-licenseurl": "Адреса лиценце за ауторска права",
+       "exif-licenseurl": "URL адреса лиценце за ауторска права",
        "exif-morepermissionsurl": "Резервни подаци о лиценцирању",
        "exif-attributionurl": "При поновном коришћењу овог рада, користите везу до",
        "exif-preferredattributionname": "При поновном коришћењу овог рада, поставите заслуге",
        "exif-contentwarning": "Упозорење о садржају",
        "exif-giffilecomment": "Коментар на датотеку GIF",
        "exif-intellectualgenre": "Тип ставке",
-       "exif-subjectnewscode": "Код предмета",
+       "exif-subjectnewscode": "Код теме",
        "exif-scenecode": "IPTC код сцене",
        "exif-event": "Приказани догађај",
        "exif-organisationinimage": "Приказана организација",
        "table_pager_empty": "Нема резултата",
        "autosumm-blank": "Уклоњен целокупан садржај странице",
        "autosumm-replace": "Замењен садржај странице са „$1“",
-       "autoredircomment": "Преусмерење на [[$1]]",
-       "autosumm-removed-redirect": "УклоÑ\9aено Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aе Ðºа [[$1]]",
+       "autoredircomment": "Преусмерена страница на [[$1]]",
+       "autosumm-removed-redirect": "УклоÑ\9aено Ð¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\9aе Ð½а [[$1]]",
        "autosumm-changed-redirect-target": "Промењена одредишна страница у преусмерењу из [[$1]] у [[$2]]",
        "autosumm-new": "Нова страница: $1",
        "autosumm-newblank": "Направљена празна страница",
        "version-software": "Инсталирани софтвер",
        "version-software-product": "Производ",
        "version-software-version": "Верзија",
-       "version-entrypoints": "Адресе улазне тачке",
+       "version-entrypoints": "URL адресе улазне тачке",
        "version-entrypoints-header-entrypoint": "Улазна тачка",
-       "version-entrypoints-header-url": "Адреса",
+       "version-entrypoints-header-url": "URL адреса",
        "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Article path]",
        "version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath Script path]",
        "version-libraries": "Инсталиране библиотеке",
        "version-libraries-license": "Лиценца",
        "version-libraries-description": "Опис",
        "version-libraries-authors": "Аутори",
-       "redirect": "Ð\9fÑ\80еÑ\83Ñ\81меÑ\80ење на датотеку, корисника, страницу, измену или дневник (ID)",
+       "redirect": "Ð\9fÑ\80еÑ\83Ñ\81меÑ\80авање на датотеку, корисника, страницу, измену или дневник (ID)",
        "redirect-summary": "Ова посебна страница преусмерава до датотеке (с датим именом датотеке), странице (с датим ID-ом измене или ID-ом странице), корисничке странице (с датим нумеричким корисничким ID-ом), или уноса у дневнику (с датим дневничким ID-ом). Употреба: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], or [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Иди",
        "redirect-lookup": "Тип вредности:",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ознака|ознаке}}]]: $2)",
        "tag-mw-contentmodelchange": "промена модела садржаја",
        "tag-mw-contentmodelchange-description": "Измене које [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel мењају модел садржаја] странице",
-       "tag-mw-new-redirect": "ново Ð¿Ñ\80еÑ\83Ñ\81меÑ\80ење",
-       "tag-mw-new-redirect-description": "Ð\98змене ÐºÐ¾Ñ\98има Ñ\98е Ð½Ð°Ð¿Ñ\80авÑ\99ено Ð½Ð¾Ð²Ð¾ Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aе Ð¸Ð»Ð¸ Ñ\98е Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¸Ð·Ð¼ÐµÑ\9aена Ð´Ð° Ð±Ñ\83де Ð¿Ñ\80еÑ\83Ñ\81меÑ\80ење",
-       "tag-mw-removed-redirect": "Ñ\83клоÑ\9aено Ð¿Ñ\80еÑ\83Ñ\81меÑ\80ење",
-       "tag-mw-removed-redirect-description": "Ð\98змене ÐºÐ¾Ñ\98е Ð¼ÐµÑ\9aаÑ\98Ñ\83 Ð¿Ð¾Ñ\81Ñ\82оÑ\98еÑ\9bе Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aе Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ð±ÐµÐ· Ð¿Ñ\80еÑ\83Ñ\81меÑ\80еÑ\9aа",
+       "tag-mw-new-redirect": "ново Ð¿Ñ\80еÑ\83Ñ\81меÑ\80авање",
+       "tag-mw-new-redirect-description": "Ð\98змене ÐºÐ¾Ñ\98има Ñ\98е Ð½Ð°Ð¿Ñ\80авÑ\99ено Ð½Ð¾Ð²Ð¾ Ð¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\9aе Ð¸Ð»Ð¸ Ñ\98е Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¿Ñ\80омеÑ\9aена Ñ\83 Ð¿Ñ\80еÑ\83Ñ\81меÑ\80авање",
+       "tag-mw-removed-redirect": "Ñ\83клоÑ\9aено Ð¿Ñ\80еÑ\83Ñ\81меÑ\80авање",
+       "tag-mw-removed-redirect-description": "Ð\98змене ÐºÐ¾Ñ\98е Ð¼ÐµÑ\9aаÑ\98Ñ\83 Ð¿Ð¾Ñ\81Ñ\82оÑ\98еÑ\9bе Ð¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\9aе Ñ\83 Ð½ÐµÐ¿Ñ\80еÑ\83Ñ\81меÑ\80аваÑ\9aе",
        "tag-mw-changed-redirect-target": "промењено одредиште преусмерења",
        "tag-mw-changed-redirect-target-description": "Измене које мењају одредиште преусмерења",
        "tag-mw-blank": "страница испражњена",
        "htmlform-user-not-exists": "<strong>$1</strong> не постоји.",
        "htmlform-user-not-valid": "<strong>$1</strong> није валидно корисничко име.",
        "logentry-delete-delete": "$1 је {{GENDER:$2|избрисао|избрисала}} страницу $3",
-       "logentry-delete-delete_redir": "$1 Ñ\98е {{GENDER:$2|избÑ\80иÑ\81ао|избÑ\80иÑ\81ала}} Ð¿Ñ\80еÑ\83Ñ\81меÑ\80ење $3 преписивањем",
+       "logentry-delete-delete_redir": "$1 Ñ\98е {{GENDER:$2|избÑ\80иÑ\81ао|избÑ\80иÑ\81ала}} Ð¿Ñ\80еÑ\83Ñ\81меÑ\80авање $3 преписивањем",
        "logentry-delete-restore": "$1 је {{GENDER:$2|вратио|вратила}} страницу $3 ($4)",
        "logentry-delete-restore-nocount": "$1 је {{GENDER:$2|вратио|вратила}} страницу $3",
        "restore-count-revisions": "{{PLURAL:$1|1 измена|$1 измене|$1 измена}}",
        "feedback-close": "Готово",
        "feedback-external-bug-report-button": "Архивирај технички задатак",
        "feedback-dialog-title": "Слање повратних информација",
+       "feedback-dialog-intro": "Можете да користите једноставни образац испод како бисте послали повратне информације. Ваш коментар ће бити додат на страницу „$1”, заједно са вашим корисничим именом.",
        "feedback-error1": "Грешка: непрепознат резултат од API-ја",
        "feedback-error2": "Грешка: уређивање није успело",
        "feedback-error3": "Грешка: нема одговора од API-ја",
index 78040ab..3186492 100644 (file)
        "talk": "Razgovor",
        "views": "Pogledi",
        "toolbox": "Alatke",
-       "tool-link-userrights": "Promena {{GENDER:$1|korisničkih}} grupe",
+       "tool-link-userrights": "Promena {{GENDER:$1|korisničkih}} grupa",
        "tool-link-userrights-readonly": "Prikaz {{GENDER:$1|korisničkih}} grupa",
        "tool-link-emailuser": "Slanje imejla {{GENDER:$1|korisniku|korisnici}}",
        "imagepage": "Prikaži stranicu datoteke",
        "createacct-another-username-ph": "Unesite korisničko ime",
        "yourpassword": "Lozinka:",
        "userlogin-yourpassword": "Lozinka",
-       "userlogin-yourpassword-ph": "Unesite svoju lozinku",
+       "userlogin-yourpassword-ph": "Unesite lozinku",
        "createacct-yourpassword-ph": "Unesite lozinku",
        "yourpasswordagain": "Ponovo unesi lozinku:",
        "createacct-yourpasswordagain": "Potvrdite lozinku",
        "createacct-benefit-body1": "{{PLURAL:$1|izmena|izmene|izmena}}",
        "createacct-benefit-body2": "{{PLURAL:$1|stranica|stranice|stranica}}",
        "createacct-benefit-body3": "nedavno {{PLURAL:$1|aktivni korisnik|aktivna korisnika|aktivnih korisnika}}",
-       "badretype": "Unete lozinke se ne poklapaju.",
+       "badretype": "Lozinke koje ste uneli se ne poklapaju.",
        "usernameinprogress": "Nalog za ovo korisničko ime se već pravi, sačekajte.",
        "userexists": "Uneseno korisničko ime je već u upotrebi.\nOdaberite drugo.",
        "loginerror": "Greška pri prijavljivanju",
        "resetpass-validity-soft": "Vaša lozinka nije važeća: $1\n\nIzaberite novu odmah ili kliknite na „{{int:authprovider-resetpass-skip-label}}“ da je promenite kasnije.",
        "passwordreset": "Resetovanje lozinke",
        "passwordreset-text-one": "Popunite ovaj obrazac da biste dobili privremenu lozinku na imejl.",
-       "passwordreset-text-many": "{{PLURAL:$1|Ispunite jedno od polja kako biste dobili privremenu lozinku na imejl.}}",
+       "passwordreset-text-many": "{{PLURAL:$1|Ispunite jedno od polja kako biste dobili privremenu lozinku putem imejla.}}",
        "passwordreset-disabled": "Resetovanje lozinke je onemogućeno na ovom vikiju.",
        "passwordreset-emaildisabled": "Imejl je onemogućen na ovom vikiju.",
        "passwordreset-username": "Korisničko ime:",
        "subject-preview": "Pregled teme:",
        "previewerrortext": "Došlo je do greške pri pokušaju pregleda promena.",
        "blockedtitle": "Korisnik je blokiran",
+       "blocked-email-user": "<strong>Vašem korisničkom imenu je blokirano slanje imejlova. Još uvek možete da uređujete druge stranice na ovom vikiju.</strong> Možete da vidite potpune detalje blokade na [[Special:MyContributions|doprinosima naloga]].\n\nBlokadu je izvršio/la $1.\n\nNaveden je sledeći razlog: <em>$2</em>.\n\n* Početak blokade: $8\n* Istek blokade: $6\n* Namenjena korisniku/ci ili IP adresi: $7\n* ID blokade #$5",
+       "blockedtext-partial": "<strong>Vašem korisničkom imenu ili IP adresi je blokirano pravljenje promena na ovoj stranici. Još uvek možete da uređujete druge stranice na ovom vikiju.</strong> Možete da vidite potpune detalje blokade na [[Special:MyContributions|doprinosima naloga]].\n\nBlokadu je izvršio/la $1.\n\nNaveden je sledeći razlog: <em>$2</em>.\n\n* Početak blokade: $8\n* Istek blokade: $6\n* Namenjena korisniku/ci ili IP adresi: $7\n* ID blokade #$5",
        "blockedtext": "<strong>Vaše korisničko ime ili IP adresa je blokirana.</strong>\n\nBlokadu je {{GENDER:$4|izvršio|izvršila}} $1.\nRazlog je <em>$2</em>.\n\n* Početak blokade: $8\n* Istek blokade: $6\n* Blokirani: $7\n\nMožete da kontaktirate {{GENDER:$4|korisnika|korisnicu}} $1 ili drugog [[{{MediaWiki:Grouppage-sysop}}|administratora]] da biste diskutovali o blokadi.\nNe možete da koristite funkciju „{{int:emailuser}}” osim ako ste naveli validnu imejl-adresu u svojim [[Special:Preferences|podešavanjima naloga]] i niste blokirani od korišćenja iste.\nVaša trenutna IP adresa je $3, a ID blokade #$5.\nNavedite sve gornje detalje pri pravljenju bilo kakvih upita.",
        "autoblockedtext": "Vaša IP adresa je automatski blokirana jer ju je koristio drugi korisnik, koga je {{GENDER:$4|blokirao|blokirala}} $1.\nRazlog:\n\n:<em>$2</em>\n\n* Početak blokade: $8\n* Kraj blokade: $6\n* Ime korisnika: $7\n\nMožete da kontaktirate {{GENDER:$4|korisnika|korisnicu}} $1 ili drugog [[{{MediaWiki:Grouppage-sysop}}|administratora]] da biste raspravljali o blokadi.\n\nZapamtite da ne možete da koristite funkciju „{{int:emailuser}}“ osim ako ste naveli važeću imejl-adresu u svojim [[Special:Preferences|podešavanjima]].\n\nVaša trenutna IP adresa je $3, a ID blokade $5.\nUključite sve gornje detalje pri pravljenju bilo kakvih upita.",
        "blockednoreason": "razlog nije naveden",
        "recentchanges-network": "Zbog tehničkog problema, nije moguće učitati rezultate. Pokušajte da osvežite stranicu.",
        "recentchanges-notargetpage": "Unesite ime stranice iznad da biste videli promene srodne s ovom stranicom",
        "recentchanges-feed-description": "Pratite najskorije promene na vikiju u ovom fidu.",
-       "recentchanges-label-newpage": "Ovom izmenom je napravljena nova stranica",
+       "recentchanges-label-newpage": "Nova stranica",
        "recentchanges-label-minor": "Manja izmena",
        "recentchanges-label-bot": "Botovska izmena",
        "recentchanges-label-unpatrolled": "Nepatrolirana izmena",
        "recentchanges-label-plusminus": "Promena veličine stranice u bajtovima",
        "recentchanges-legend-heading": "<strong>Legenda:</strong>",
-       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (takođe pogledajte [[Special:NewPages|spisak novih stranica]])",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|spisak novih stranica]])",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "Prikaži",
        "rcfilters-tag-remove": "Uklonite filter „$1“",
        "uploadstash-zero-length": "Datoteka je prazna",
        "invalid-chunk-offset": "Nevažeća polazna tačka",
        "img-auth-accessdenied": "Pristup je odbijen",
-       "img-auth-nopathinfo": "Nedostaje PATH_INFO.\nVaš server nije podešen da prosleđuje ovakve podatke.\nMožda je zasnovan na CGI-ju koji ne podržava img_auth.\nPogledajte https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization?uselang=sr-ec.",
+       "img-auth-nopathinfo": "Nedostaju informacije o putanji.\nVaš server mora da bude podešen da propušta promenjive REQUEST_URI i/ili PATH_INFO.\nAko jeste, pokušajte sa omogućavanjem $wgUsePathInfo.\nPogledajte https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
        "img-auth-notindir": "Tražena putanja nije u podešenom direktorijumu za otpremanje.",
        "img-auth-badtitle": "Nije moguće sastaviti važeći naslov iz „$1”.",
        "img-auth-nologinnWL": "Niste prijavljeni i „$1” nije na spisku dozvoljenih.",
        "ipb-disableusertalk": "Onemogući korisniku da uređuje svoju stranicu za razgovor",
        "ipb-change-block": "Ponovno blokiraj korisnika s ovim podešavanjima",
        "ipb-confirm": "Potvrdi blokiranje",
+       "ipb-sitewide": "Na celom sajtu",
+       "ipb-partial": "Delimično",
+       "ipb-type-label": "Vrsta",
+       "ipb-pages-label": "Stranice",
        "badipaddress": "Nevažeća IP adresa",
        "blockipsuccesssub": "Blokiranje je uspelo",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] je {{GENDER:$1|blokiran|blokirana}}.<br />\nPogledajte [[Special:BlockList|spisak]] za pregled blokada.",
        "createaccountblock": "otvaranje naloga je onemogućeno",
        "emailblock": "imejl je onemogućen",
        "blocklist-nousertalk": "zabranjeno uređivanje sopstvene stranice za razgovor",
+       "blocklist-editing": "uređivanje",
+       "blocklist-editing-sitewide": "uređivanje (na celom sajtu)",
        "ipblocklist-empty": "Spisak blokiranja je prazan.",
        "ipblocklist-no-results": "Tražena IP adresa ili korisničko ime nije blokirano.",
        "blocklink": "blokiraj",
        "databaselocked": "Baza podataka je već zaključana.",
        "databasenotlocked": "Baza nije zaključana.",
        "lockedbyandtime": "(od $1 dana $2 u $3)",
-       "move-page": "Premeštanje „$1”",
+       "move-page": "Premeštanje stranice „$1”",
        "move-page-legend": "Premeštanje stranice",
        "movepagetext": "Donji obrazac će preimenovati stranicu, premeštajući celu istoriju na novo ime.\nStari naslov postaće preusmerenje na novi.\nMožete ažurirati preusmerenja koja vode do izvornog naslova;\npogledajte [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|pokvarena]] preusmerenja.\nNa vama je odgovornost da veze i dalje idu tamo gde treba.\n\nStranica <strong>neće</strong> biti premeštena ako već postoji stranica s tim imenom (osim ako je prazna, sadrži preusmerenje ili nema istoriju izmena).\nTo znači da možete vratiti stranicu na prethodno ime ako pogrešite, ali ne možete ''prepisati'' postojeću.\n\n<strong>Napomena:</strong>\nOvo može predstavljati drastičnu i neočekivanu izmenu za popularnu stranicu;\ndobro razmislite o posledicama pre nego što nastavite.",
        "movepagetext-noredirectfixer": "Donji obrazac će preimenovati stranicu, premeštajući celu istoriju na novo ime.\nStari naslov postaće preusmerenje na novi.\nPogledajte [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|pokvarena]] preusmerenja.\nNa vama je odgovornost da veze i dalje idu tamo gde treba.\n\nStranica <strong>neće</strong> biti premeštena ako već postoji stranica s tim imenom (osim ako je prazna, sadrži preusmerenje ili nema istoriju izmena).\nTo znači da možete vratiti stranicu na prethodno ime ako pogrešite, ali ne možete ''prepisati'' postojeću.\n\n<strong>Napomena:</strong>\nOvo može predstavljati drastičnu i neočekivanu izmenu za popularnu stranicu;\ndobro razmislite o posledicama pre nego što nastavite.",
        "tooltip-pt-mytalk": "{{GENDER:|Vaša}} stranica za razgovor",
        "tooltip-pt-anontalk": "Diskusija o izmenama sa ove IP adrese",
        "tooltip-pt-preferences": "{{GENDER:|Vaša}} podešavanja",
-       "tooltip-pt-watchlist": "Spisak stranica koje nadgledate",
+       "tooltip-pt-watchlist": "Spisak stranica čije promene nadgledate",
        "tooltip-pt-mycontris": "Spisak {{GENDER:|vaših}} doprinosa",
-       "tooltip-pt-anoncontribs": "Lista izmena napravljenih sa ove IP adrese",
+       "tooltip-pt-anoncontribs": "Spisak izmena napravljenih sa ove IP adrese",
        "tooltip-pt-login": "Predlažemo vam da se prijavite, iako to nije obavezno",
        "tooltip-pt-login-private": "Morate da se prijavite da biste koristili ovaj Viki",
        "tooltip-pt-logout": "Odjavite se",
        "tooltip-ca-unprotect": "Promeni zaštitu ove stranice",
        "tooltip-ca-delete": "Izbrišite ovu stranicu",
        "tooltip-ca-undelete": "Vrati izmene koje su načinjene na ovoj stranici pre brisanja stranice",
-       "tooltip-ca-move": "Premesti ovu stranicu",
+       "tooltip-ca-move": "Premestite ovu stranicu",
        "tooltip-ca-watch": "Dodajte ovu stranicu na svoj spisak nadgledanja",
        "tooltip-ca-unwatch": "Uklonite ovu stranicu sa spiska nadgledanja",
        "tooltip-search": "Pretražite projekat {{SITENAME}}",
        "tags-deactivate-not-allowed": "Nije moguće deaktivirati oznaku „$1”.",
        "tags-deactivate-submit": "Dekativiraj",
        "tags-apply-no-permission": "Nemate dozvolu da primenite oznake promena zajedno sa svojim promenama.",
-       "tags-apply-blocked": "Ne možete da primenite oznake tagova zajedno sa vašim promenama sve dok ste blokirani.",
+       "tags-apply-blocked": "Ne možete da primenite oznake promena zajedno sa vašim promenama sve dok {{GENDER:$1|ste}} blokirani.",
        "tags-update-no-permission": "Nemate dozvolu da dodate ili uklonite oznake promena iz pojedinačnih izmena ili unosa u dnevniku.",
        "tags-update-blocked": "Ne možete dodavati niti uklanjati oznake izmena dok {{GENDER:$1|ste}} blokirani.",
        "tags-update-add-not-allowed-one": "Nije dozvoljeno da se oznaka „$1” dodaje ručno.",
        "dberr-usegoogle": "U međuvremenu, pokušajte da pretražite pomoću Gugla.",
        "dberr-outofdate": "Imajte na umu da njihovi primerci našeg sadržaja mogu biti zastareli.",
        "dberr-cachederror": "Ovo je privremeno memorisan primerak strane koji možda nije ažuran.",
-       "htmlform-invalid-input": "Postoje problemi sa vašim unosom.",
+       "htmlform-invalid-input": "Postoje problemi sa nekim od vaših unosa.",
        "htmlform-select-badoption": "Vrednost koju ste naveli nije validna opcija.",
        "htmlform-int-invalid": "Navedena vrednost nije celi broj.",
        "htmlform-float-invalid": "Navedena vrednost nije broj.",
        "logentry-block-block": "$1 je {{GENDER:$2|blokirao|blokirala}} {{GENDER:$4|$3}} u trajanju od $5 $6",
        "logentry-block-unblock": "$1 je {{GENDER:$2|deblokirao|deblokirala}} {{GENDER:$4|$3}}",
        "logentry-block-reblock": "$1 je {{GENDER:$2|promenio|promenila}} podešavanja za blokiranje {{GENDER:$4|korisnika|korisnice}} {{GENDER:$4|$3}} u trajanju od $5 $6",
+       "logentry-partialblock-block": "$1 je {{GENDER:$2|blokirao|blokirala}} uređivanje {{PLURAL:$8|stranice|stranica}} $7 {{GENDER:$4|korisniku|korisnici|korisniku/ci}} $3 sa vremenom isteka od $5 $6",
+       "logentry-non-editing-block-block": "$1 je {{GENDER:$2|blokirao|blokirala}} neuređivačke radnje {{GENDER:$4|korisniku|korisnici|korisniku/ci}} $3 sa vremenom isteka od $5 $6",
+       "logentry-non-editing-block-reblock": "$1 je {{GENDER:$2|promenio|promenila}} podešavanja blokade neuređivačkih radnji {{GENDER:$4|korisniku|korisnici|korisniku/ci}} $3 sa vremenom isteka od $5 $6",
        "logentry-suppress-block": "$1 je {{GENDER:$2|blokirao|blokirala}} {{GENDER:$4|$3}} u trajanju od $5 $6",
        "logentry-suppress-reblock": "$1 je {{GENDER:$2|promenio|promenila}} podešavanja za blokiranje {{GENDER:$4|korisnika|korisnice}} {{GENDER:$4|$3}} u trajanju od $5 $6",
        "logentry-import-upload": "$1 je {{GENDER:$2|uvezao|uvezla}} $3 otpremanjem datoteke",
        "mw-widgets-titleinput-description-redirect": "preusmerava na $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Dodajte kategoriju…",
        "mw-widgets-usersmultiselect-placeholder": "Dodajte još…",
+       "mw-widgets-titlesmultiselect-placeholder": "Dodajte još…",
        "date-range-from": "Od datuma:",
        "date-range-to": "Do datuma:",
        "sessionmanager-tie": "Ne možete da kombinujete više tipova potvrde identiteta: $1.",
        "passwordpolicies-policy-passwordcannotmatchusername": "Lozinka ne može da bude ista kao korisničko ime",
        "passwordpolicies-policy-passwordcannotmatchblacklist": "Lozinka se ne može podudarati sa lozinkama na crnoj listi",
        "passwordpolicies-policy-maximalpasswordlength": "Lozinka mora da bude kraća od $1 {{PLURAL:$1|znaka|znakova}}",
-       "passwordpolicies-policy-passwordcannotbepopular": "Lozinka ne može da bude {{PLURAL:$1|popularna lozinka|na spisku $1 popularnih lozinki}}"
+       "passwordpolicies-policy-passwordcannotbepopular": "Lozinka ne može da bude {{PLURAL:$1|popularna lozinka|na spisku $1 popularnih lozinki}}",
+       "unprotected-js": "Iz bezbednosnih razloga, JavaScript ne može da se učita sa nezaštićene stranice. Samo napravite JavaScript u imenskom prostoru „Medijaviki:” ili kao korisničku podstranicu"
 }
index 90b9c4d..4ef4076 100644 (file)
        "converter-manual-rule-error": "พบข้อผิดพลาดในกฎการแปลงผันภาษาด้วยมือ",
        "undo-success": "สามารถย้อนการแก้ไขนี้กลับได้ \nกรุณาตรวจสอบข้อแตกต่างด้านล่างเพื่อทวนสอบว่านี่เป็นสิ่งที่คุณต้องการทำ แล้วบันทึกการเปลี่ยนแปลงด้านล่างเพื่อเสร็จสิ้นการย้อนการแก้ไขกลับ",
        "undo-failure": "การแก้ไขนี้ไม่สามารถย้อนกลับได้ เนื่องจากขัดแย้งกับการแก้ไขระหว่างกลาง",
+       "undo-main-slot-only": "การแก้ไขนี้ไม่สามารถทำกลับได้ เพราะเกี่ยวข้องกับเนื้อหาที่อยู่นอกช่องเสียบหลัก",
        "undo-norev": "ไม่สามารถย้อนการแก้ไขนี้กลับ เพราะไม่มีหรือถูกลบไปแล้ว",
        "undo-nochange": "ดูเหมือนว่าการแก้ไขดังกล่าวถูกย้อนกลับแล้ว",
        "undo-summary": "ย้อนรุ่นแก้ไข $1 โดย [[Special:Contributions/$2|$2]] ([[User talk:$2|คุย]])",
        "recentchangescount": "จำนวนการแก้ไขที่แสดงในเปลี่ยนแปลงล่าสุด ประวัติหน้า และในปูม โดยปริยาย:",
        "prefs-help-recentchangescount": "จำนวนสูงสุด: 1000",
        "prefs-help-watchlist-token2": "นี่คือแป้นลับสำหรับเข้าการป้อนเว็บรายการเฝ้าดูของคุณ\nผู้ใดที่ทราบจะสามารถอ่านรายการเฝ้าดูของคุณได้ ฉะนั้นอย่าบอกผู้อื่น\nหากคุณต้องการ [[Special:ResetTokens|คุณสามารถตั้งใหม่ได้]]",
+       "prefs-help-tokenmanagement": "คุณสามารถดูและตั้งแป้นลับใหม่สำหรับบัญชีของคุณซึ่งสามารถเข้าถึงเว็บฟีดของรายการเฝ้าดูของคุณได้ ทุกคนที่ทราบแป้นนี้จะสามารถอ่านรายการเฝ้าดูของคุณได้ ฉะนั้นอย่าบอกผู้อื่น",
        "savedprefs": "บันทึกการตั้งค่าของคุณแล้ว",
        "savedrights": "บันทึกกลุ่มผู้ใช้ของ {{GENDER:$1|$1}} แล้ว",
        "timezonelegend": "เขตเวลา:",
        "grant-createaccount": "สร้างบัญชี",
        "grant-createeditmovepage": "สร้าง แก้ไข และย้ายหน้า",
        "grant-delete": "ลบหน้า รุ่นแก้ไขเก่า และรายการบันทึก",
-       "grant-editinterface": "à¹\81à¸\81à¹\89à¹\84à¸\82à¹\80à¸\99มสà¹\80à¸\9bà¸\8bà¸\82อà¸\87มีà¹\80à¸\94ียวิà¸\81ิà¹\81ละ CSS/JavaScript ของผู้ใช้",
-       "grant-editmycssjs": "แก้ไข CSS/JavaScript ผู้ใช้ของคุณ",
+       "grant-editinterface": "à¹\81à¸\81à¹\89à¹\84à¸\82à¹\80à¸\99มสà¹\80à¸\9bà¸\8bมีà¹\80à¸\94ียวิà¸\81ิà¹\81ละ JSON à¸\97ัà¹\89à¸\87à¹\80วà¹\87à¸\9aà¹\84à¸\8bà¸\95à¹\8cà¹\81ละของผู้ใช้",
+       "grant-editmycssjs": "แก้ไข CSS/JSON/จาวาสคริปต์ผู้ใช้ของคุณ",
        "grant-editmyoptions": "แก้ไขการตั้งค่าผู้ใช้ของคุณ",
        "grant-editmywatchlist": "แก้ไขรายการเฝ้าดูของคุณ",
+       "grant-editsiteconfig": "แก้ไข CSS/JS ทั้งเว็บไซต์และผู้ใช้",
        "grant-editpage": "แก้ไขหน้านี้",
        "grant-editprotected": "แก้ไขหน้าที่ถูกล็อก",
        "grant-highvolume": "การแก้ไขในปริมาณสูง",
        "prefixindex": "หน้าทั้งหมดพร้อมคำขึ้นต้น",
        "prefixindex-namespace": "หน้าทั้งหมดพร้อมคำขึ้นต้น (เนมสเปซ $1)",
        "prefixindex-submit": "แสดง",
-       "prefixindex-strip": "ลà¸\9aà¸\84ำà¸\82ึà¹\89à¸\99à¸\95à¹\89à¸\99à¹\83à¸\99รายà¸\81ารออà¸\81",
+       "prefixindex-strip": "à¸\8bà¹\88อà¸\99à¸\84ำà¸\82ึà¹\89à¸\99à¸\95à¹\89à¸\99à¹\83à¸\99à¸\9cลลัà¸\9eà¸\98à¹\8c",
        "shortpages": "หน้าสั้น",
        "longpages": "หน้ายาว",
        "deadendpages": "หน้าสุดทาง",
        "deadendpagestext": "หน้าต่อไปนี้ไม่เชื่อมโยงไปหน้าอื่นใน {{SITENAME}}",
        "protectedpages": "หน้าที่ถูกป้องกัน",
+       "protectedpages-filters": "ตัวกรอง:",
        "protectedpages-indef": "เฉพาะการป้องกันแบบไม่มีกำหนด",
        "protectedpages-summary": "หน้านี้แสดงรายการหน้าที่มีอยู่ซึ่งปัจจุบันถูกล็อก สำหรับรายการชื่อเรื่องที่ถูกป้องกันมิให้สร้าง ดู [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]]",
        "protectedpages-cascade": "เฉพาะการป้องกันแบบต่อเรียง",
        "protectedtitles-submit": "แสดงชื่อเรื่อง",
        "listusers": "รายการผู้ใช้",
        "listusers-editsonly": "แสดงเฉพาะผู้ใช้ที่มีการแก้ไข",
+       "listusers-temporarygroupsonly": "แสดงเฉพาะผู้ใช้ในกลุ่มผู้ใช้ชั่วคราว",
        "listusers-creationsort": "เรียงตามวันสร้าง",
        "listusers-desc": "เรียงลำดับลง",
        "usereditcount": "$1 การแก้ไข",
        "ipb-disableusertalk": "ป้องกันไม่ให้ผู้ใช้นี้แก้ไขหน้าคุยกับผู้ใช้ของตัวเองขณะถูกบล็อก",
        "ipb-change-block": "บล็อกผู้ใช้อีกครั้งด้วยการตั้งค่าเหล่านี้",
        "ipb-confirm": "ยืนยันการบล็อก",
+       "ipb-sitewide": "ทั้งเว็บไซต์",
+       "ipb-partial": "บางส่วน",
+       "ipb-type-label": "ประเภท",
+       "ipb-pages-label": "หน้า",
        "badipaddress": "เลขที่อยู่ไอพีไม่ถูกต้อง",
        "blockipsuccesssub": "บล็อกสำเร็จ",
        "blockipsuccesstext": "บล็อก [[Special:Contributions/$1|$1]] แล้ว<br />\nดู[[Special:BlockList|รายการบล็อก]]เพื่อทบทวนการบล็อก",
        "createaccountblock": "ปิดใช้งานการสร้างบัญชี",
        "emailblock": "ปิดใช้งานอีเมล",
        "blocklist-nousertalk": "ไม่สามารถแก้ไขหน้าคุยกับผู้ใช้ของตนเอง",
+       "blocklist-editing": "การแก้ไข",
+       "blocklist-editing-sitewide": "การแก้ไข (ทั้งเว็บไซต์)",
        "ipblocklist-empty": "รายการบล็อกว่าง",
        "ipblocklist-no-results": "เลขที่อยู่ไอพีหรือชื่อผู้ใช้ที่ขอไม่ถูกบล็อก",
        "blocklink": "บล็อก",
        "confirm-unwatch-top": "ลบหน้านี้ออกจากรายการเฝ้าดูของคุณ",
        "confirm-rollback-button": "ตกลง",
        "confirm-rollback-top": "ย้อนการแก้ไขหน้านี้หรือไม่",
+       "confirm-mcrrestore-title": "กู้คืนรุ่นแก้ไข",
+       "confirm-mcrundo-title": "ทำกลับการเปลี่ยนแปลง",
+       "mcrundofailed": "ทำกลับล้มเหลว",
        "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← หน้าก่อนหน้า",
        "imgmultipagenext": "หน้าถัดไป →",
        "undelete-cantedit": "คุณไม่สามารถกู้คืนหน้านี้ได้เพราะคุณไม่ได้รับอนุญาตให้แก้ไขหน้านี้",
        "undelete-cantcreate": "คุณไม่สามารถกู้คืนหน้านี้เพราะไม่มีหน้าชื่อนี้อยู่ และคุณไม่ได้รับอนุญาตให้สร้างหน้านี้",
        "pagedata-title": "ข้อมูลหน้า",
+       "passwordpolicies": "นโยบายรหัสผ่าน",
+       "passwordpolicies-summary": "นี่คือรายการนโยบายรหัสผ่านที่มีผลกับกลุ่มผู้ใช้ที่นิยามในวิกินี้",
+       "passwordpolicies-group": "กลุ่ม",
        "passwordpolicies-policies": "นโยบาย",
-       "passwordpolicies-policy-minimalpasswordlength": "รหัสผ่านต้องมีความยาวอย่างน้อย $1 อักขระ"
+       "passwordpolicies-policy-minimalpasswordlength": "รหัสผ่านต้องมีความยาวอย่างน้อย $1 อักขระ",
+       "passwordpolicies-policy-minimumpasswordlengthtologin": "รหัสผ่านต้องมีความยาวอย่างน้อย $1 อักขระจึงจะสามารถล็อกอินได้",
+       "passwordpolicies-policy-passwordcannotmatchusername": "ห้ามรหัสผ่านซ้ำกับชื่อผู้ใช้",
+       "passwordpolicies-policy-passwordcannotmatchblacklist": "ห้ามรหัสผ่านตรงกับรหัสผ่านที่ขึ้นบัญชีดำโดยเจาะจง",
+       "passwordpolicies-policy-maximalpasswordlength": "รหัสผ่านจะต้องมีความยาวน้อยกว่า $1 อักขระ",
+       "passwordpolicies-policy-passwordcannotbepopular": "ห้ามรหัสผ่านเป็น{{PLURAL:$1|รหัสผ่านยอดนิยม|ติดรายการ $1 รหัสผ่านยอดนิยม}}"
 }
index 8629986..784076a 100644 (file)
        "badarticleerror": "Ця дія не може бути виконана на цій сторінці.",
        "cannotdelete": "Неможливо вилучити сторінку або файл «$1».\nМожливо, це вже зроблено кимось іншим.",
        "cannotdelete-title": "Не вдається видалити сторінку «$1»",
+       "delete-scheduled": "Сторінку «$1» заплановано вилучити.\nБудь ласка, наберіться терпіння.",
        "delete-hook-aborted": "Вилучення було скасовано процедурою-перехоплювачем. \nНіяких поясненень надано не було.",
        "no-null-revision": "Не вдалося створити нульову версію сторінки «$1»",
        "badtitle": "Неприпустима назва",
        "movepage-moved": "'''Сторінка «$1» перейменована на «$2»'''",
        "movepage-moved-redirect": "Створено перенаправлення.",
        "movepage-moved-noredirect": "Створення перенаправлення було заборонене.",
+       "movepage-delete-first": "Цільова сторінка має надто багато версій для вилучення в рамках перейменування. Будь ласка, спершу вилучіть цільову сторінку вручну, а тоді спробуйте ще раз.",
        "articleexists": "Сторінка з такою назвою вже існує або зазначена Вами назва недопустима.\nБудь ласка, оберіть іншу назву.",
        "cantmove-titleprotected": "Неможливо перейменувати сторінку, оскільки нова назва входить до списку заборонених.",
        "movetalk": "Перейменувати відповідну сторінку обговорення",
        "confirm-unwatch-top": "Вилучити цю сторінку з вашого списку спостереження?",
        "confirm-rollback-button": "Гаразд",
        "confirm-rollback-top": "Відкотити редагування цієї сторінки?",
+       "confirm-mcrrestore-title": "Відновити версію",
        "confirm-mcrundo-title": "Скасувати зміну",
        "mcrundofailed": "Помилка скасування",
        "mcrundo-missingparam": "Відсутні обов'язкові параметри за запитом.",
        "mcrundo-changed": "Сторінку змінили з часу Вашого перегляду різниці версій. Будь ласка, перевірте нову зміну.",
+       "mcrundo-parse-failed": "Не вдалося опрацювати нову версію: $1",
        "semicolon-separator": ";&#32;",
        "comma-separator": ",&#32;",
        "colon-separator": ":&#32;",
        "passwordpolicies-policy-passwordcannotmatchblacklist": "Пароль не може збігатися з паролями із чорного списку",
        "passwordpolicies-policy-maximalpasswordlength": "Пароль повинен бути коротшим $1 {{PLURAL:$1|символа|символів}}",
        "passwordpolicies-policy-passwordcannotbepopular": "Пароль не може бути {{PLURAL:$1|часто вживаним|будь-яким з $1 часто вживаних паролів}}",
-       "easydeflate-invaliddeflate": "Наданий вміст не стиснений належним чином"
+       "easydeflate-invaliddeflate": "Наданий вміст не стиснений належним чином",
+       "unprotected-js": "З міркувань безпеки JavaScript не можна запускати з незахищених сторінок. Будь ласка, створюйте javascript лише в просторі MediaWiki, або як особисту підсторінку користувача."
 }
index c786ce8..e76426d 100644 (file)
@@ -23,7 +23,7 @@
 // Bail on old versions of PHP, or if composer has not been run yet to install
 // dependencies.
 require_once __DIR__ . '/../includes/PHPVersionCheck.php';
-wfEntryPointCheck( 'cli' );
+wfEntryPointCheck( 'text' );
 
 use MediaWiki\Shell\Shell;
 
index a47822b..804d0a1 100644 (file)
@@ -25,7 +25,7 @@
 // dependencies. Using dirname( __FILE__ ) here because __DIR__ is PHP5.3+.
 // phpcs:ignore MediaWiki.Usage.DirUsage.FunctionFound
 require_once dirname( __FILE__ ) . '/../includes/PHPVersionCheck.php';
-wfEntryPointCheck( 'mw-config/index.php' );
+wfEntryPointCheck( 'html', dirname( dirname( $_SERVER['SCRIPT_NAME'] ) ) );
 
 define( 'MW_CONFIG_CALLBACK', 'Installer::overrideConfig' );
 define( 'MEDIAWIKI_INSTALL', true );
index 27a84d7..d66491d 100644 (file)
@@ -2478,6 +2478,21 @@ return [
                ],
                'targets' => [ 'desktop', 'mobile' ],
        ],
+       'mediawiki.widgets.AbandonEditDialog' => [
+               'scripts' => [
+                       'resources/src/mediawiki.widgets/mw.widgets.AbandonEditDialog.js',
+               ],
+               'messages' => [
+                       'visualeditor-viewpage-savewarning',
+                       'visualeditor-viewpage-savewarning-discard',
+                       'visualeditor-viewpage-savewarning-keep',
+                       'visualeditor-viewpage-savewarning-title',
+               ],
+               'dependencies' => [
+                       'oojs-ui-windows',
+               ],
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
        'mediawiki.widgets.DateInputWidget' => [
                'scripts' => [
                        'resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js',
index cd286e8..511a327 100644 (file)
@@ -2,24 +2,26 @@
        "@metadata": {
                "authors": [
                        "Milicevic01",
-                       "Prevodim"
+                       "Prevodim",
+                       "Zoranzoki21"
                ]
        },
-       "ooui-outline-control-move-down": "Premesti stavku na dole",
-       "ooui-outline-control-move-up": "Premesti stavku na gore",
+       "ooui-outline-control-move-down": "Premesti stavku nadole",
+       "ooui-outline-control-move-up": "Premesti stavku nagore",
        "ooui-outline-control-remove": "Ukloni stavku",
-       "ooui-toolbar-more": "Više",
+       "ooui-toolbar-more": "Još",
        "ooui-toolgroup-expand": "Više",
        "ooui-toolgroup-collapse": "Manje",
        "ooui-item-remove": "Ukloni",
        "ooui-dialog-message-accept": "U redu",
        "ooui-dialog-message-reject": "Otkaži",
-       "ooui-dialog-process-error": "Nešto je pošlo naopako",
+       "ooui-dialog-process-error": "Nešto nije u redu",
        "ooui-dialog-process-dismiss": "Odbaci",
        "ooui-dialog-process-retry": "Pokušaj ponovo",
        "ooui-dialog-process-continue": "Nastavi",
        "ooui-selectfile-button-select": "Izaberi datoteku",
-       "ooui-selectfile-not-supported": "Odabir datoteke nije podržan",
-       "ooui-selectfile-placeholder": "Nije izabrana nijedna datoteka",
-       "ooui-selectfile-dragdrop-placeholder": "Prevuci datoteku ovde"
+       "ooui-selectfile-not-supported": "Izbor datoteke nije podržan",
+       "ooui-selectfile-placeholder": "Datoteka nije izabrana",
+       "ooui-selectfile-dragdrop-placeholder": "Ovde otpustite datoteku",
+       "ooui-field-help": "Pomoć"
 }
index 94306ca..16f110a 100644 (file)
@@ -58,6 +58,7 @@
        .mw-changeslist-legend {
                background-color: @background-color-base;
                position: relative; // We want to keep the legend accessible when results are overlaid
+               z-index: 1; // Keep opacity-animated highlights from appearing on top of the legend
                border: 1px solid @colorGray12;
        }
 
index c4b5015..aa285e6 100644 (file)
                        width: 1em;
 
                        &-widget.oo-ui-widget {
+                               display: block;
+                               .box-sizing( border-box );
+                               height: 2.5em;
                                border: 1px solid @colorGray10;
                                border-left-width: 0;
                                border-radius: 0 0 @borderRadius 0;
-                               // Using the 'left' value from
+                               // For `padding-right` using the 'left' value from
                                // .oo-ui-buttonElement-frameless.oo-ui-iconElement >
                                // .oo-ui-buttonElement-button > .oo-ui-iconElement-icon
                                padding-right: 0.35714286em;
-
-                               display: block;
                                text-align: right;
-                               height: 2.5em;
-                               .box-sizing( border-box );
+                               white-space: nowrap;
 
                                .oo-ui-buttonOptionWidget:first-child {
                                        margin-left: 0;
index 5642046..38b520a 100644 (file)
@@ -7,12 +7,15 @@
 
                $preferences = $( '#preferences' );
 
-               // Make sure the accessibility tip is selectable so that screen reader users take notice,
+               // Make sure the accessibility tip is focussable so that keyboard users take notice,
                // but hide it by default to reduce visual clutter.
                // Make sure it becomes visible when focused.
                $( '<div>' ).addClass( 'mw-navigation-hint' )
                        .text( mw.msg( 'prefs-tabs-navigation-hint' ) )
-                       .attr( 'tabIndex', 0 )
+                       .attr( {
+                               tabIndex: 0,
+                               'aria-hidden': 'true'
+                       } )
                        .prependTo( '#mw-content-text' );
 
                tabs = new OO.ui.IndexLayout( {
index bdcfb79..9d8ce76 100644 (file)
 /* The CSS below is also for JS enabled version, because we want to prevent FOUC */
 
 /*
- * Hide, but keep accessible for screen-readers.
+ * Hide, when not keyboard focussed.
  */
-.client-js .mw-navigation-hint {
-       overflow: hidden;
+.client-js .mw-navigation-hint:not( :focus ) {
        height: 0;
-       zoom: 1;
+       overflow: hidden;
 }
 
 .client-nojs #preftoc {
index baa9beb..6f91ad2 100644 (file)
 }
 
 /*
- * Hide, but keep accessible for screen-readers.
+ * Hide, when not keyboard focussed.
  */
 .client-js .mw-navigation-hint:not( :focus ) {
-       .mixin-screen-reader-text;
+       height: 0;
+       overflow: hidden;
 }
 
 /* Most outer Panellayout:
diff --git a/resources/src/mediawiki.widgets/mw.widgets.AbandonEditDialog.js b/resources/src/mediawiki.widgets/mw.widgets.AbandonEditDialog.js
new file mode 100644 (file)
index 0000000..3244379
--- /dev/null
@@ -0,0 +1,39 @@
+/*!
+ * MediaWiki Widgets - AbandonEditDialog class.
+ *
+ * @copyright 2011-2018 VisualEditor Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+/**
+ * Confirm dialog shown when the users is leaving an editor without saving
+ *
+ * @class
+ * @extends OO.ui.MessageDialog
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ */
+mw.widgets.AbandonEditDialog = function VeUiAbandonEditDialog( config ) {
+       // Parent constructor
+       mw.widgets.AbandonEditDialog.super.call( this, config );
+};
+
+/* Inheritance */
+
+OO.inheritClass( mw.widgets.AbandonEditDialog, OO.ui.MessageDialog );
+
+/* Static Properties */
+
+mw.widgets.AbandonEditDialog.static.name = 'abandonedit';
+
+mw.widgets.AbandonEditDialog.static.title =
+       OO.ui.deferMsg( 'visualeditor-viewpage-savewarning-title' );
+
+mw.widgets.AbandonEditDialog.static.message =
+       OO.ui.deferMsg( 'visualeditor-viewpage-savewarning' );
+
+mw.widgets.AbandonEditDialog.static.actions = [
+       { action: 'discard', label: OO.ui.deferMsg( 'visualeditor-viewpage-savewarning-discard' ), flags: [ 'primary', 'destructive' ] },
+       { action: 'keep', label: OO.ui.deferMsg( 'visualeditor-viewpage-savewarning-keep' ), flags: 'safe' }
+];
index 5c4c48c..12c60a7 100644 (file)
@@ -122,12 +122,6 @@ class ParserTestRunner {
         */
        private $runDisabled;
 
-       /**
-        * Run tests intended only for parsoid
-        * @var bool
-        */
-       private $runParsoid;
-
        /**
         * Disable parse on article insertion
         * @var bool
@@ -170,7 +164,6 @@ class ParserTestRunner {
                $this->fileBackendName = $options['file-backend'] ?? false;
 
                $this->runDisabled = !empty( $options['run-disabled'] );
-               $this->runParsoid = !empty( $options['run-parsoid'] );
 
                $this->disableSaveParse = !empty( $options['disable-save-parse'] );
 
@@ -704,7 +697,6 @@ class ParserTestRunner {
                        foreach ( $filenames as $filename ) {
                                $testFileInfo = TestFileReader::read( $filename, [
                                        'runDisabled' => $this->runDisabled,
-                                       'runParsoid' => $this->runParsoid,
                                        'regex' => $this->regex ] );
 
                                // Don't start the suite if there are no enabled tests in the file
index a96485d..8a11b4c 100644 (file)
@@ -28,7 +28,6 @@ class TestFileReader {
        private $sectionLineNum = [];
        private $lineNum = 0;
        private $runDisabled;
-       private $runParsoid;
        private $regex;
 
        private $articles = [];
@@ -66,11 +65,9 @@ class TestFileReader {
 
                $options = $options + [
                        'runDisabled' => false,
-                       'runParsoid' => false,
                        'regex' => '//',
                ];
                $this->runDisabled = $options['runDisabled'];
-               $this->runParsoid = $options['runParsoid'];
                $this->regex = $options['regex'];
        }
 
@@ -112,13 +109,6 @@ class TestFileReader {
                        }
                }
 
-               if ( preg_match( '/\\bparsoid\\b/i', $data['options'] ) && $nonTidySection === 'html'
-                       && !$this->runParsoid
-               ) {
-                       // A test which normally runs on Parsoid but can optionally be run with MW
-                       return;
-               }
-
                if ( !preg_match( $this->regex, $data['test'] ) ) {
                        // Filtered test
                        return;
index e1d943f..19d5684 100644 (file)
@@ -61,7 +61,6 @@ class ParserTestsMaintenance extends Maintenance {
                        'conjunction with --keep-uploads. Causes a real (non-mock) file backend to ' .
                        'be used.', false, true );
                $this->addOption( 'run-disabled', 'run disabled tests' );
-               $this->addOption( 'run-parsoid', 'run parsoid tests (normally disabled)' );
                $this->addOption( 'disable-save-parse', 'Don\'t run the parser when ' .
                        'inserting articles into the database' );
                $this->addOption( 'dwdiff', 'Use dwdiff to display diff output' );
@@ -181,7 +180,6 @@ class ParserTestsMaintenance extends Maintenance {
                        'regex' => $regex,
                        'keep-uploads' => $this->hasOption( 'keep-uploads' ),
                        'run-disabled' => $this->hasOption( 'run-disabled' ),
-                       'run-parsoid' => $this->hasOption( 'run-parsoid' ),
                        'disable-save-parse' => $this->hasOption( 'disable-save-parse' ),
                        'use-tidy-config' => $this->hasOption( 'use-tidy-config' ),
                        'file-backend' => $this->getOption( 'file-backend' ),
index d836111..6d5054e 100644 (file)
@@ -56,6 +56,12 @@ Foo
 FOO
 !!endarticle
 
+!!article
+Foo''s bar''s
+!!text
+Article titles can contain single quotes!
+!!endarticle
+
 !!article
 Template:Foo
 !!text
@@ -2908,6 +2914,23 @@ Self-closed pre
 <pre typeof="mw:Extension/pre" about="#mwt2" data-mw='{"name":"pre","attrs":{}}'></pre>
 !! end
 
+!! test
+Newline before table-close generates empty table row: T208619
+!! wikitext
+{|
+
+|}
+!! html/php+tidy
+<table>
+
+<tbody><tr><td></td></tr></tbody></table>
+!! html/parsoid
+<table data-parsoid='{}'>
+
+</table>
+!! end
+
+# PHP has one more row in the output than Parsoid does: T208619
 !! test
 Parsoid: Don't paragraph-wrap fosterable content even if table syntax is unbalanced
 !! options
@@ -2921,7 +2944,16 @@ parsoid=wt2html
 
 
 |}
-!! html
+!! html/php+tidy
+<table>
+<tbody><tr><td>
+</td><td>
+</td>
+
+
+
+</tr><tr><td></td></tr></tbody></table>
+!! html/parsoid
 <table>
 
 <tbody>
@@ -3199,12 +3231,13 @@ data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},
 
 !! test
 Parsoid: Pipe in template with nested template in external link target in template parameter (seriously)
-!! options
-parsoid
 !! wikitext
 {{echo|[{{fullurl:{{FULLPAGENAME}}|action=edit}} bar]}}
-!! html
-<p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[{{fullurl:{{FULLPAGENAME}}|action=edit}} bar]"}},"i":0}}]}'>[Main Page bar]</p>
+!! html/php+tidy
+<p><a rel="nofollow" class="external text" href="http://example.org/index.php?title=Parser_test&amp;action=edit">bar</a>
+</p>
+!! html/parsoid
+<p><a rel="mw:ExtLink" class="external text" href="http://example.org/index.php?title=Parser_test&amp;action=edit" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[{{fullurl:{{FULLPAGENAME}}|action=edit}} bar]"}},"i":0}}]}'>bar</a></p>
 !! end
 
 !! test
@@ -6240,6 +6273,8 @@ parsoid=wt2html
 
 !! end
 
+# Note that the PHP parser output appears to be broken when the table
+# end tag is not separated by a space from the style attribute
 !! test
 A table with stray table end tags on start tag line (wt2html)
 !! options
@@ -6258,7 +6293,22 @@ parsoid=wt2html
 {|style="color: red;" |} id="foo"
 |foo
 |}
-!! html
+!! html/php+tidy
+<table style="&quot;color:">
+
+</table><table style="color: red;">
+<tbody><tr>
+<td>foo
+</td></tr></tbody></table>
+<table style="&quot;color:" id="foo">
+<tbody><tr>
+<td>foo
+</td></tr></tbody></table>
+<table style="color: red;" id="foo">
+<tbody><tr>
+<td>foo
+</td></tr></tbody></table>
+!! html/parsoid
 <table style="color: red;"></table>
 
 <table style="color: red;">
@@ -7489,6 +7539,7 @@ foo
 </tbody></table>
 !!end
 
+# Note: PHP parser omits empty rows
 !! test
 Tables: Digest broken attributes on table and tr tag
 !! options
@@ -7498,7 +7549,12 @@ parsoid=wt2html
 |- || || ++ --
 |- > [
 |}
-!! html
+!! html/php+tidy
+<table>
+
+
+</table>
+!! html/parsoid
 <table>
 <tbody>
 <tr class='mw-empty-elt'></tr>
@@ -7613,7 +7669,7 @@ parsoid=html2wt
 Wikitext tables can be nested inside HTML tables
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <table data-parsoid='{"stx":"html"}'>
 <tr><td>
 <table>
@@ -7629,6 +7685,15 @@ parsoid=html2wt
 |}
 </td></tr>
 </table>
+!! html/php+tidy
+<table>
+<tbody><tr><td>
+<table>
+<tbody><tr>
+<td>foo
+</td></tr></tbody></table>
+</td></tr>
+</tbody></table>
 !! end
 
 ###
@@ -8022,6 +8087,31 @@ Link containing an equals sign
 <p><a rel="mw:WikiLink" href="./Special:BookSources/isbn=4-00-026157-6" title="Special:BookSources/isbn=4-00-026157-6">Special:BookSources/isbn=4-00-026157-6</a></p>
 !! end
 
+!! article
+Foo & bar
+!! text
+Just a test of an article title containing an ampersand
+!! endarticle
+
+!! test
+Link containing an ampersand
+!! wikitext
+[[Foo & bar]]
+
+[[Foo &amp; bar]]
+
+[[Foo &amp;amp; bar]]
+!! html/php+tidy
+<p><a href="/wiki/Foo_%26_bar" title="Foo &amp; bar">Foo &amp; bar</a>
+</p><p><a href="/wiki/Foo_%26_bar" title="Foo &amp; bar">Foo &amp; bar</a>
+</p><p>[[Foo &amp;amp; bar]]
+</p>
+!! html/parsoid
+<p><a rel="mw:WikiLink" href="./Foo_&amp;_bar" title="Foo &amp; bar">Foo &amp; bar</a></p>
+<p><a rel="mw:WikiLink" href="./Foo_&amp;_bar" title="Foo &amp; bar" data-parsoid='{"stx":"simple","a":{"href":"./Foo_&amp;_bar"},"sa":{"href":"Foo &amp;amp; bar"}}'>Foo &amp; bar</a></p>
+<p>[[Foo <span typeof="mw:Entity" data-parsoid='{"src":"&amp;amp;","srcContent":"&amp;"}'>&amp;</span>amp; bar]]</p>
+!! end
+
 !! article
 Foo~bar
 !! text
@@ -8502,27 +8592,32 @@ parsoid=html2wt
 1. Interaction of linktrail and template encapsulation
 !! wikitext
 {{echo|[[Foo]]}}l
+!! html/php+tidy
+<p><a href="/wiki/Foo" title="Foo">Fool</a>
+</p>
 !! html/parsoid
 <p><a rel="mw:WikiLink" href="./Foo" title="Foo" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Foo]]"}},"i":0}},"l"]}'>Fool</a></p>
 !! end
 
 !! test
 2. Interaction of linktrail and template encapsulation
-!! options
-parsoid
 !! wikitext
 {{echo|Some [[Fool]]}}s
-!! html
+!! html/php+tidy
+<p>Some <a href="/index.php?title=Fool&amp;action=edit&amp;redlink=1" class="new" title="Fool (page does not exist)">Fools</a>
+</p>
+!! html/parsoid
 <p><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Some [[Fool]]"}},"i":0}},"s"]}' data-parsoid='{"pi":[[{"k":"1"}]]}'>Some </span><a rel="mw:WikiLink" href="./Fool" title="Fool" about="#mwt1" data-parsoid='{"stx":"simple","a":{"href":"./Fool"},"sa":{"href":"Fool"},"tail":"s"}'>Fools</a></p>
 !! end
 
 !! test
 3. Interaction of linktrail and template encapsulation
-!! options
-parsoid
 !! wikitext
 {{echo|Some [[Fool]]s are '''bold and foolish'''}}
-!! html
+!! html/php+tidy
+<p>Some <a href="/index.php?title=Fool&amp;action=edit&amp;redlink=1" class="new" title="Fool (page does not exist)">Fools</a> are <b>bold and foolish</b>
+</p>
+!! html/parsoid
 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Some [[Fool]]s are &#39;&#39;&#39;bold and foolish&#39;&#39;&#39;"}},"i":0}}]}' data-parsoid='{"pi":[[{"k":"1"}]]}'>Some <a rel="mw:WikiLink" href="./Fool" title="Fool" data-parsoid='{"stx":"simple","a":{"href":"./Fool"},"sa":{"href":"Fool"},"tail":"s"}'>Fools</a> are <b>bold and foolish</b></p>
 !! end
 
@@ -8702,15 +8797,13 @@ parsoid=wt2html,wt2wt
 !! wikitext
 *[[Wikipedia:ro:Olteni&#0355;a]]
 *[[Wikipedia:ro:Olteni&#355;a]]
-!! html
+!! html/php
 <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/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>
-</ul>
+<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/parsoid
 <ul>
 <li><a rel="mw:WikiLink/Interwiki" href="http://en.wikipedia.org/wiki/ro:Olteniţa" title="wikipedia:ro:Olteniţa">Wikipedia:ro:Olteniţa</a></li>
@@ -9879,12 +9972,14 @@ Nested lists 8 (multiple nesting transitions)
 
 !! end
 
+# XXX this test should be moved to citeParserTests, since it depends
+# on the Cite extension, which is "built in" to Parsoid.
 !! test
 Nested lists 9 (extension interaction)
-!! options
-parsoid
 !! wikitext
 *<references />
+!! html/php+tidy-DISABLED
+<ul><li class="mw-empty-elt"></li></ul>
 !! html/parsoid
 <ul><li data-parsoid='{}'><ol class="mw-references references" typeof="mw:Extension/references" about="#mwt2" data-parsoid='{}' data-mw='{"name":"references","attrs":{}}'></ol></li></ul>
 !! end
@@ -10123,8 +10218,6 @@ parsoid=wt2html,wt2wt
 
 !! test
 Parsoid: Make sure nested lists are serialized on their own line even if HTML contains no newlines
-!! options
-parsoid
 !! wikitext
 #foo
 ##bar
@@ -10134,7 +10227,14 @@ parsoid
 
 :foo
 ::bar
-!! html
+!! html/php+tidy
+<ol><li>foo
+<ol><li>bar</li></ol></li></ol>
+<ul><li>foo
+<ul><li>bar</li></ul></li></ul>
+<dl><dd>foo
+<dl><dd>bar</dd></dl></dd></dl>
+!! html/parsoid
 <ol>
 <li>foo<ol>
 <li>bar</li>
@@ -10913,8 +11013,16 @@ Aoeu
 # From plwiki:PLOS_ONE
 !! test
 Parsoid: Page property magic word with magic word contents
+!! options
+showtitle
+!! config
+wgAllowDisplayTitle=true
+wgRestrictDisplayTitle=false
 !! wikitext
 {{DISPLAYTITLE:''{{PAGENAME}}''}}
+!! html/php+tidy
+<i>Parser test</i>
+
 !! html/parsoid
 <meta property="mw:PageProp/displaytitle" content="Main Page" about="#mwt3" typeof="mw:ExpandedAttrs" data-parsoid='{"src":"{{DISPLAYTITLE:&#39;&#39;{{PAGENAME}}&#39;&#39;}}"}' data-mw='{"attribs":[[{"txt":"content"},{"html":"DISPLAYTITLE:&lt;i data-parsoid=&#39;{\"dsr\":[15,31,2,2]}&#39;>&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=&#39;{\"pi\":[[]],\"dsr\":[17,29,null,null]}&#39; data-mw=&#39;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"PAGENAME\",\"function\":\"pagename\"},\"params\":{},\"i\":0}}]}&#39;>Main Page&lt;/span>&lt;/i>"}]]}'/>
 !! end
@@ -12153,7 +12261,18 @@ c}}d
 <table></table>
 
 b}}
-!! html
+!! html/php+tidy
+<p>ab</p><table></table><p>cd
+</p><p>ab
+</p>
+<table></table>
+<p>cd
+</p><p>a
+</p>
+<table></table>
+<p>b
+</p>
+!! html/parsoid
 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":["a",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"b&lt;table>&lt;/table>c"}},"i":0}},"d"]}' data-parsoid='{"pi":[[{"k":"1"}]]}'>ab</p><table about="#mwt1" data-parsoid='{"stx":"html"}'></table><p about="#mwt1">cd</p>
 
 <p about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":["a",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"b\n&lt;table>&lt;/table>\nc"}},"i":0}},"d"]}' data-parsoid='{"pi":[[{"k":"1"}]]}'>ab</p><span about="#mwt2">
@@ -12169,13 +12288,16 @@ b}}
 
 !! test
 Parsoid: Merge double tds (T52603)
-!! options
-parsoid
 !! wikitext
 {|
 |{{echo|{{!}} foo}}
 |}
-!! html
+!! html/php+tidy
+<table>
+<tbody><tr>
+<td>foo
+</td></tr></tbody></table>
+!! html/parsoid
 <table><tbody>
 <tr><td about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":["|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{!}} foo"}},"i":0}}]}'> foo</td></tr>
 </tbody></table>
@@ -12183,15 +12305,20 @@ parsoid
 
 !! test
 Parsoid: Merge double tds in nested transclusion content (T52603)
-!! options
-parsoid
 !! wikitext
 {{echo|<div>}}
 {|
 |{{echo|{{!}} foo}}
 |}
 {{echo|</div>}}
-!! html
+!! html/php+tidy
+<div>
+<table>
+<tbody><tr>
+<td>foo
+</td></tr></tbody></table>
+</div>
+!! html/parsoid
 <div about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<div>"}},"i":0}},"\n{|\n|",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{!}} foo"}},"i":1}},"\n|}\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"</div>"}},"i":2}}]}'>
 <table><tbody>
 <tr><td data-mw='{"parts":["|"]}'> foo</td></tr>
@@ -12925,14 +13052,15 @@ bar <div>baz</div>
 bar </p><div>baz</div>
 !! end
 
-!!test
+!! test
 Templates: P-wrapping: 1d. Template preceded by comment-only line
-!!options
-parsoid
 !! wikitext
 <!-- foo -->
 {{echo|Bar}}
-!! html
+!! html/php+tidy
+<p>Bar
+</p>
+!! html/parsoid
 <!-- foo -->
 
 <p about="#mwt223" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"Bar"}},"i":0}}]}'>Bar</p>
@@ -12945,7 +13073,10 @@ parsoid=wt2html,wt2wt
 !! wikitext
 {{echo|<div>a</div>}}b{{echo|
 <div>c</div>}}
-!! html
+!! html/php+tidy
+<div>a</div><p>b
+</p><div>c</div>
+!! html/parsoid
 <div about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;div>a&lt;/div>"}},"i":0}}]}'>a</div><p>b</p><span about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"\n&lt;div>c&lt;/div>"}},"i":0}}]}'>
 </span><div about="#mwt2">c</div>
 !! end
@@ -13362,7 +13493,10 @@ parsoid=wt2html,wt2wt
 <table>[[Category:foo1]]<tr><td>foo</td></tr></table>
 <!--Two categories (T52330)-->
 <table>[[Category:bar1]][[Category:bar2]]<tr><td>foo</td></tr></table>
-!! html
+!! html/php+tidy
+<table><tbody><tr><td>foo</td></tr></tbody></table>
+<table><tbody><tr><td>foo</td></tr></tbody></table>
+!! html/parsoid
 <link rel="mw:PageProp/Category" href="./Category:Foo1"><table><tbody><tr><td>foo</td></tr></tbody></table>
 <!--Two categories (T52330)-->
 <link rel="mw:PageProp/Category" href="./Category:Bar1"><link rel="mw:PageProp/Category" href="./Category:Bar2"><table><tbody><tr><td>foo</td></tr></tbody></table>
@@ -13578,7 +13712,9 @@ Templates: Ugly nesting: 3. Quotes opened/closed across templates (echo_with_div
 parsoid=wt2html,wt2wt
 !! wikitext
 {{echo_with_div|''a}}{{echo_with_div|b''c''d}}{{echo_with_div|''e}}
-!! html
+!! html/php+tidy
+<div><i>a</i></div><div><i>b</i>c<i>d</i></div><div>e</div>
+!! html/parsoid
 <div about="#mwt1" typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo_with_div&quot;,&quot;href&quot;:&quot;./Template:Echo_with_div&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;''a&quot;}},&quot;i&quot;:0}}]}"><i>a</i></div>
 <div about="#mwt2" typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo_with_div&quot;,&quot;href&quot;:&quot;./Template:Echo_with_div&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;b''c''d&quot;}},&quot;i&quot;:0}}]}"><i>b</i>c<i>d</i></div>
 <div about="#mwt3" typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo_with_div&quot;,&quot;href&quot;:&quot;./Template:Echo_with_div&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;''e&quot;}},&quot;i&quot;:0}}]}">e</div>
@@ -14286,7 +14422,10 @@ Parsoid: Recognize nowiki with odd capitalization
 parsoid=wt2html
 !! wikitext
 <noWikI ><div>[[foo]]</Nowiki >
-!! html
+!! html/php+tidy
+<p>&lt;div&gt;[[foo]]
+</p>
+!! html/parsoid
 <p><span typeof="mw:Nowiki">&lt;div&gt;[[foo]]</span></p>
 !! end
 
@@ -15001,6 +15140,337 @@ Alt image option should handle most kinds of wikitext without barfing
 <figure class="mw-default-size" typeof="mw:Image/Thumb mw:ExpandedAttrs" about="#mwt2" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"This is the image caption"},{"ck":"alt","ak":"alt=This is a [[link]] and a {{echo|&apos;&apos;bold template&apos;&apos;}}."}]}' data-mw='{"attribs":[["thumbnail",{"html":"thumb"}],["alt",{"html":"alt=This is a &lt;a rel=\"mw:WikiLink\" href=\"./Link\" title=\"Link\" data-parsoid=&apos;{\"stx\":\"simple\",\"a\":{\"href\":\"./Link\"},\"sa\":{\"href\":\"link\"},\"dsr\":[65,73,2,2]}&apos;>link&lt;/a> and a &lt;i about=\"#mwt1\" typeof=\"mw:Transclusion\" data-parsoid=&apos;{\"dsr\":[80,106,null,null],\"pi\":[[{\"k\":\"1\"}]]}&apos; data-mw=&apos;{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"&amp;apos;&amp;apos;bold template&amp;apos;&amp;apos;\"}},\"i\":0}}]}&#39;>bold template&lt;/i>."}]]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img alt="This is a link and a bold template." 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":{"alt":"This is a link and a bold template.","resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"alt":"alt=This is a [[link]] and a {{echo|&#39;&#39;bold template&#39;&#39;}}.","resource":"Image:Foobar.jpg"}}'/></a><figcaption>This is the image caption</figcaption></figure>
 !! end
 
+!! test
+Ampersand in alt attribute (T206940)
+!! options
+parsoid = {
+  "nativeGallery": true
+}
+!! wikitext
+[[File:Foobar.jpg|alt=&amp;amp;]]
+
+<!-- consistency with gallery extension -->
+<gallery>
+File:Foobar.jpg|alt=&amp;amp;
+</gallery>
+!! html/php+tidy
+<p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="&amp;amp;" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p>
+<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="/wiki/File:Foobar.jpg" class="image"><img alt="&amp;amp;" 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>
+                       <div class="gallerytext">
+                       </div>
+               </div></li>
+</ul>
+!! html/parsoid
+<p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="&amp;amp;" 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>
+
+<!-- consistency with gallery extension -->
+<ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
+<li class="gallerybox">
+<div class="thumb"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="&amp;amp;" 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
+
+!! test
+Italics markup in alt attribute (T206940)
+!! wikitext
+[[File:Foobar.jpg|alt=''x''|caption]]
+
+<!-- consistency with gallery extension -->
+<gallery>
+File:Foobar.jpg|alt=''x''|caption
+</gallery>
+!! html/php+tidy
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="x" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p>
+<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="/wiki/File:Foobar.jpg" class="image"><img alt="x" 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>
+                       <div class="gallerytext">
+<p>caption
+</p>
+                       </div>
+               </div></li>
+</ul>
+!! html/parsoid
+<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"alt","ak":"alt=&apos;&apos;x&apos;&apos;"},{"ck":"caption","ak":"caption"}]}' data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img alt="x" 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":{"alt":"x","resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"alt":"alt=&apos;&apos;x&apos;&apos;","resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
+
+<!-- consistency with gallery extension -->
+<ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" about="#mwt2" data-mw='{"name":"gallery","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg|alt=&apos;&apos;x&apos;&apos;|caption\n"}}'>
+<li class="gallerybox">
+<div class="thumb"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="x" 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
+Nowiki markup in alt attribute (T206940)
+!! wikitext
+[[File:Foobar.jpg|alt=<nowiki>''</nowiki>x<nowiki>''</nowiki>|caption]]
+
+<!-- consistency with gallery extension -->
+<gallery>
+File:Foobar.jpg|alt=<nowiki>''</nowiki>x<nowiki>''</nowiki>|caption
+</gallery>
+!! html/php+tidy
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="&#39;&#39;x&#39;&#39;" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p>
+<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="/wiki/File:Foobar.jpg" class="image"><img alt="&#39;&#39;x&#39;&#39;" 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>
+                       <div class="gallerytext">
+<p>caption
+</p>
+                       </div>
+               </div></li>
+</ul>
+!! html/parsoid
+<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"alt","ak":"alt=&lt;nowiki>&apos;&apos;&lt;/nowiki>x&lt;nowiki>&apos;&apos;&lt;/nowiki>"},{"ck":"caption","ak":"caption"}],"dsr":[0,71,null,null]}' data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img alt="''x''" 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":{"alt":"&apos;&apos;x&apos;&apos;","resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"alt":"alt=&lt;nowiki>&apos;&apos;&lt;/nowiki>x&lt;nowiki>&apos;&apos;&lt;/nowiki>","resource":"File:Foobar.jpg"}}'/></a></figure-inline></p>
+
+<!-- consistency with gallery extension -->
+<ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg|alt=&lt;nowiki>&apos;&apos;&lt;/nowiki>x&lt;nowiki>&apos;&apos;&lt;/nowiki>|caption\n"}}'>
+<li class="gallerybox">
+<div class="thumb"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="''x''" 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
+Nowiki markup in alt attribute (edited html, no data-parsoid) (T206940)
+!! options
+parsoid = {
+  "nativeGallery": true
+}
+!! wikitext
+[[File:Foobar.jpg|alt=<nowiki>''x''</nowiki>|caption]]
+
+<!-- consistency with gallery extension -->
+<gallery>
+File:Foobar.jpg|alt=<nowiki>''x''</nowiki>|caption
+</gallery>
+!! html/php+tidy
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="caption"><img alt="&#39;&#39;x&#39;&#39;" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p>
+<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="/wiki/File:Foobar.jpg" class="image"><img alt="&#39;&#39;x&#39;&#39;" 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>
+                       <div class="gallerytext">
+<p>caption
+</p>
+                       </div>
+               </div></li>
+</ul>
+!! html/parsoid
+<p><figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="./File:Foobar.jpg"><img alt="''x''" 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>
+
+<!-- consistency with gallery extension -->
+<ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
+<li class="gallerybox">
+<div class="thumb"><figure-inline typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="''x''" 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
+Ampersand in link attribute (T206940)
+!! wikitext
+[[File:Foobar.jpg|link=Foo &amp; bar]]
+
+<!-- consistency with gallery extension -->
+<gallery>
+File:Foobar.jpg|link=Foo &amp; bar
+</gallery>
+!! html/php+tidy
+<p><a href="/wiki/Foo_%26_bar" title="Foo &amp; bar"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p>
+<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="/wiki/Foo_%26_bar"><img alt="Foobar.jpg" 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>
+                       <div class="gallerytext">
+                       </div>
+               </div></li>
+</ul>
+!! html/parsoid
+<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"link","ak":"link=Foo &amp;amp; bar"}]}'><a href="./Foo_&amp;_bar" data-parsoid='{"a":{"href":"./Foo_&amp;_bar"},"sa":{"href":"link=Foo &amp;amp; bar"}}'><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>
+
+<!-- consistency with gallery extension -->
+<ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg|link=Foo &amp;amp; bar\n"}}'>
+<li class="gallerybox">
+<div class="thumb"><figure-inline typeof="mw:Image"><a href="./Foo_&amp;_bar"><img 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
+
+!! test
+Ampersand in link attribute (edited html, no data-parsoid) (T206940)
+!! options
+parsoid = {
+  "nativeGallery": true
+}
+!! wikitext
+[[File:Foobar.jpg|link=Foo_&_bar]]
+
+<!-- consistency with gallery extension -->
+<gallery>
+File:Foobar.jpg|link=Foo_&_bar
+</gallery>
+!! html/php+tidy
+<p><a href="/wiki/Foo_%26_bar" title="Foo &amp; bar"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p>
+<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="/wiki/Foo_%26_bar"><img alt="Foobar.jpg" 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>
+                       <div class="gallerytext">
+                       </div>
+               </div></li>
+</ul>
+!! html/parsoid
+<p><figure-inline class="mw-default-size" typeof="mw:Image"><a href="./Foo_&amp;_bar"><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>
+
+<!-- consistency with gallery extension -->
+<ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
+<li class="gallerybox">
+<div class="thumb"><figure-inline typeof="mw:Image"><a href="./Foo_&amp;_bar"><img 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
+
+!! test
+Italics markup in link attribute (T206940)
+!! wikitext
+[[Foo''s bar''s]]
+
+<!-- Note that "italics" are stripped, even though this is a valid page title -->
+[[File:Foobar.jpg|link=Foo''s bar''s|caption1]]
+
+[[File:Foobar.jpg|link=''Main Page''|caption2]]
+
+<!-- consistency with gallery extension -->
+<gallery>
+File:Foobar.jpg|link=Foo''s bar''s|caption1
+File:Foobar.jpg|link=''Main Page''|caption2
+</gallery>
+!! html/php+tidy
+<p><a href="/wiki/Foo%27%27s_bar%27%27s" title="Foo&#39;&#39;s bar&#39;&#39;s">Foo''s bar''s</a>
+</p><p><a href="/wiki/Foos_bars" title="caption1"><img alt="caption1" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p><p><a href="/wiki/Main_Page" title="caption2"><img alt="caption2" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p>
+<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="/wiki/Foos_bars"><img alt="" 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>
+                       <div class="gallerytext">
+<p>caption1
+</p>
+                       </div>
+               </div></li>
+               <li class="gallerybox" style="width: 155px"><div style="width: 155px">
+                       <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/Main_Page"><img alt="" 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>
+                       <div class="gallerytext">
+<p>caption2
+</p>
+                       </div>
+               </div></li>
+</ul>
+!! html/parsoid
+<p><a rel="mw:WikiLink" href="./Foo''s_bar''s" title="Foo''s bar''s">Foo''s bar''s</a></p>
+
+<!-- Note that "italics" are stripped, even though this is a valid page title -->
+<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"link","ak":"link=Foo&apos;&apos;s bar&apos;&apos;s"},{"ck":"caption","ak":"caption1"}]}' data-mw='{"caption":"caption1"}'><a href="./Foos_bars" data-parsoid='{"a":{"href":"./Foos_bars"},"sa":{"href":"link=Foo&apos;&apos;s bar&apos;&apos;s"}}'><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":"link","ak":"link=&apos;&apos;Main Page&apos;&apos;"},{"ck":"caption","ak":"caption2"}]}' data-mw='{"caption":"caption2"}'><a href="./Main_Page" data-parsoid='{"a":{"href":"./Main_Page"},"sa":{"href":"link=&apos;&apos;Main Page&apos;&apos;"}}'><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>
+
+<!-- consistency with gallery extension -->
+<ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg|link=Foo&apos;&apos;s bar&apos;&apos;s|caption1\nFile:Foobar.jpg|link=&apos;&apos;Main Page&apos;&apos;|caption2\n"}}'>
+<li class="gallerybox">
+<div class="thumb"><figure-inline typeof="mw:Image"><a href="./Foos_bars"><img 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">caption1</div>
+</li>
+<li class="gallerybox">
+<div class="thumb"><figure-inline typeof="mw:Image"><a href="./Main_Page"><img 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">caption2</div>
+</li>
+</ul>
+!! end
+
+!! test
+Nowiki markup in link attribute (T206940)
+!! wikitext
+[[File:Foobar.jpg|link=Foo<nowiki>''</nowiki>s_bar<nowiki>''</nowiki>s|caption]]
+
+<!-- consistency with gallery extension -->
+<gallery>
+File:Foobar.jpg|link=Foo<nowiki>''</nowiki>s_bar<nowiki>''</nowiki>s|caption
+</gallery>
+!! html/php+tidy
+<p><a href="/wiki/Foo%27%27s_bar%27%27s" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p>
+<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="/wiki/Foo%27%27s_bar%27%27s"><img alt="" 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>
+                       <div class="gallerytext">
+<p>caption
+</p>
+                       </div>
+               </div></li>
+</ul>
+!! html/parsoid
+<p><figure-inline class="mw-default-size" typeof="mw:Image" data-parsoid='{"optList":[{"ck":"link","ak":"link=Foo&lt;nowiki>&apos;&apos;&lt;/nowiki>s_bar&lt;nowiki>&apos;&apos;&lt;/nowiki>s"},{"ck":"caption","ak":"caption"}]}' data-mw='{"caption":"caption"}'><a href="./Foo''s_bar''s" data-parsoid='{"a":{"href":"./Foo&apos;&apos;s_bar&apos;&apos;s"},"sa":{"href":"link=Foo&lt;nowiki>&apos;&apos;&lt;/nowiki>s_bar&lt;nowiki>&apos;&apos;&lt;/nowiki>s"}}'><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>
+
+<!-- consistency with gallery extension -->
+<ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{"extsrc":"\nFile:Foobar.jpg|link=Foo&lt;nowiki>&apos;&apos;&lt;/nowiki>s_bar&lt;nowiki>&apos;&apos;&lt;/nowiki>s|caption\n"}}'>
+<li class="gallerybox">
+<div class="thumb"><figure-inline typeof="mw:Image"><a href="./Foo''s_bar''s"><img 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
+Nowiki markup in link attribute (edited html, no data-parsoid) (T206940)
+!! options
+parsoid = {
+  "nativeGallery": true
+}
+!! wikitext
+[[File:Foobar.jpg|link=Foo<nowiki>''s_bar''</nowiki>s|caption]]
+
+<!-- consistency with gallery extension -->
+<gallery>
+File:Foobar.jpg|link=Foo<nowiki>''s_bar''</nowiki>s|caption
+</gallery>
+!! html/php+tidy
+<p><a href="/wiki/Foo%27%27s_bar%27%27s" title="caption"><img alt="caption" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p>
+<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="/wiki/Foo%27%27s_bar%27%27s"><img alt="" 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>
+                       <div class="gallerytext">
+<p>caption
+</p>
+                       </div>
+               </div></li>
+</ul>
+!! html/parsoid
+<p><figure-inline class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"caption"}'><a href="./Foo''s_bar''s"><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>
+
+<!-- consistency with gallery extension -->
+<ul class="gallery mw-gallery-traditional" typeof="mw:Extension/gallery" data-mw='{"name":"gallery","attrs":{},"body":{}}'>
+<li class="gallerybox">
+<div class="thumb"><figure-inline typeof="mw:Image"><a href="./Foo''s_bar''s"><img 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
 Image with table with attributes in caption
 !! options
@@ -16377,7 +16847,7 @@ parsoid=wt2html
 * So should this
 
 {{echo|[[Category:Foo]] and this should be part of the same list item}}
-!! html
+!! html/php+tidy
 <ul><li>This and this should be part of the same list item</li>
 <li>So should this and this should be part of the same list item</li></ul>
 !! html/parsoid
@@ -16590,13 +17060,15 @@ Category links with multiple namespaces
 
 !! test
 Parsoid: Serialize link to category page with colon escape
-!! options
-parsoid
 !! wikitext
 
 [[:Category:Foo]]
 [[:Category:Foo|Bar]]
-!! html
+!! html/php+tidy
+<p><a href="/index.php?title=Category:Foo&amp;action=edit&amp;redlink=1" class="new" title="Category:Foo (page does not exist)">Category:Foo</a>
+<a href="/index.php?title=Category:Foo&amp;action=edit&amp;redlink=1" class="new" title="Category:Foo (page does not exist)">Bar</a>
+</p>
+!! html/parsoid
 <p>
 <a rel="mw:WikiLink" href="./Category:Foo" title="Category:Foo">Category:Foo</a>
 <a rel="mw:WikiLink" href="./Category:Foo" title="Category:Foo">Bar</a>
@@ -16643,13 +17115,15 @@ x[[es:Foo]]y
 
 !! test
 Parsoid: Serialize link to file page with colon escape
-!! options
-parsoid
 !! wikitext
 
 [[:File:Foo.png]]
 [[:File:Foo.png|Bar]]
-!! html
+!! html/php+tidy
+<p><a href="/index.php?title=File:Foo.png&amp;action=edit&amp;redlink=1" class="new" title="File:Foo.png (page does not exist)">File:Foo.png</a>
+<a href="/index.php?title=File:Foo.png&amp;action=edit&amp;redlink=1" class="new" title="File:Foo.png (page does not exist)">Bar</a>
+</p>
+!! html/parsoid
 <p>
 <a rel="mw:WikiLink" href="./File:Foo.png" title="File:Foo.png">File:Foo.png</a>
 <a rel="mw:WikiLink" href="./File:Foo.png" title="File:Foo.png">Bar</a>
@@ -16658,12 +17132,11 @@ parsoid
 
 !! test
 Parsoid: Serialize a genuine category link without colon escape
-!! options
-parsoid
 !! wikitext
 [[Category:Foo]]
 [[Category:Foo|Bar]]
-!! html
+!! html/php+tidy
+!! html/parsoid
 <link rel="mw:PageProp/Category" href="./Category:Foo">
 <link rel="mw:PageProp/Category" href="./Category:Foo#Bar">
 !! end
@@ -19382,19 +19855,17 @@ parsoid=wt2html,html2html
 !! wikitext
 ==a==
 {| STYLE=__TOC__
-!! html
+!! html/php
 <h2><span class="mw-headline" id="a">a</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: a">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 <table style="&#95;_TOC&#95;_">
 <tr><td></td></tr>
 </table>
 
-!! html+tidy
+!! html/php+tidy
 <h2><span class="mw-headline" id="a">a</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: a">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
-<table style="__TOC__">
-<tr>
-<td></td>
-</tr>
-</table>
+<table style="&#95;_TOC&#95;_">
+<tbody><tr><td></td></tr>
+</tbody></table>
 !! html/parsoid
 <h2 id="a">a</h2>
 <table style="__TOC__"></table>
@@ -21752,6 +22223,8 @@ wgRawHtml=1
 !! html/php
 <p><script>alert(1);</script>
 </p>
+!! html/parsoid
+<p><script typeof="mw:Extension/html" about="#mwt3" data-mw='{"name":"html","attrs":{},"body":{"extsrc":"&lt;script>alert(1);&lt;/script>"}}'>alert(1);</script></p>
 !! end
 
 !! test
@@ -24889,9 +25362,30 @@ __TOC__
 
 <h2><span class="mw-headline" id="Style"><style>.foo {}</style>Style<style>.bar {}</style></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: Style">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 
+!! html/parsoid
+<meta property="mw:PageProp/toc" data-parsoid="{}"/>
+<h2 id="Style" data-parsoid="{}"><style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo {}"}}'>.foo {}</style>Style<style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".bar {}"}}'>.bar {}</style></h2>
+!! end
+
+!! test
+T198618: script element in ToC
+!! options
+wgRawHtml=1
+!! wikitext
+__TOC__
+==<html><script>alert(1);</script></html>Script<html><script>alert(1);</script></html>==
+!! html/php
+<div id="toc" class="toc"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none"/><div class="toctitle" lang="en" dir="ltr"><h2>Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div>
+<ul>
+<li class="toclevel-1 tocsection-1"><a href="#Script"><span class="tocnumber">1</span> <span class="toctext">Script</span></a></li>
+</ul>
+</div>
+
+<h2><span class="mw-headline" id="Script"><script>alert(1);</script>Script<script>alert(1);</script></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: Script">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
+
 !! html/parsoid
 <meta property="mw:PageProp/toc" data-parsoid='{}'/>
-<h2 id="Style" data-parsoid='{}'><style>.foo {}</style>Style<style>.bar {}</style></h2>
+<h2 id="Script" data-parsoid='{}'><script typeof="mw:Extension/html" about="#mwt4" data-mw='{"name":"html","attrs":{},"body":{"extsrc":"&lt;script>alert(1);&lt;/script>"}}'>alert(1);</script>Script<script typeof="mw:Extension/html" about="#mwt6" data-mw='{"name":"html","attrs":{},"body":{"extsrc":"&lt;script>alert(1);&lt;/script>"}}'>alert(1);</script></h2>
 !! end
 
 !! test
@@ -25213,13 +25707,17 @@ Lead
 ###
 !!test
 1. SOL-sensitive wikitext tokens as template-args
-!!options
+!! options
 parsoid=wt2html,wt2wt
 !! wikitext
 {{echo|*a}}
 {{echo|#a}}
 {{echo|:a}}
-!! html
+!! html/php+tidy
+<ul><li>a</li></ul>
+<ol><li>a</li></ol>
+<dl><dd>a</dd></dl>
+!! html/parsoid
 <span about="#mwt1" typeof="mw:Transclusion">
 </span><ul about="#mwt1"><li>a</li>
 </ul>
@@ -27552,17 +28050,20 @@ Indent and comment before table row
 </tbody></table>
 !! end
 
-# Parsoid-specific since PHP parser doesn't handle this mixed tbl-wikitext
+# PHP parser omits empty TR
 !!test
 Empty TR followed by a template-generated TR
-!!options
-parsoid
 !! wikitext
 {|
 |-
 {{echo|<tr><td>foo</td></tr>}}
 |}
-!! html
+!! html/php+tidy
+<table>
+
+<tbody><tr><td>foo</td></tr>
+</tbody></table>
+!! html/parsoid
 <table>
 <tbody>
 <tr class='mw-empty-elt'></tr>
@@ -27571,12 +28072,10 @@ parsoid
 </tbody></table>
 !!end
 
-## PHP and parsoid output differ for this, and since this is primarily
-## for testing Parsoid's serializer, marking this Parsoid only
+## PHP and parsoid output differ for this; as usual PHP omits empty
+## elements, and since it strips the comments the TR is empty.
 !!test
 Empty TR followed by mixed-ws-comment line should RT correctly
-!!options
-parsoid
 !! wikitext
 {|
 |-
@@ -27584,7 +28083,12 @@ parsoid
 |-
 <!--c--> <!--d-->
 |}
-!! html
+!! html/php+tidy
+<table>
+
+
+</table>
+!! html/parsoid
 <table>
 <tbody>
 <tr class='mw-empty-elt'></tr>
@@ -28252,11 +28756,11 @@ parsoid={
 
 !! test
 Image: empty alt attribute (T50924)
-!! options
-parsoid
 !! wikitext
 [[File:Foobar.jpg|thumb|alt=|bar]]
-!! html
+!! html/php+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>bar</div></div></div>
+!! html/parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"alt","ak":"alt="},{"ck":"caption","ak":"bar"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img alt="" 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":{"alt":"","resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"alt":"alt=","resource":"File:Foobar.jpg"}}'/></a><figcaption>bar</figcaption></figure>
 !! end
 
@@ -29523,7 +30027,7 @@ parsoid={
 Serialize wikitext list items as HTML list items when embedded in a HTML list
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <ul data-parsoid='{"stx": "html"}'>
 <li data-parsoid='{}'>a</li>
 <li>b</li>
@@ -29533,17 +30037,22 @@ parsoid=html2wt
 <li>a</li>
 <li>b</li>
 </ul>
+!! html/php+tidy
+<ul>
+<li>a</li>
+<li>b</li>
+</ul>
 !! end
 
-# SSS FIXME: Is this actually a good thing given the
-# odd nested list output that is generated by MW?
+# Nested list should be inside <li>, that is
 # <ul><li>foo<ul>..</ul></li></ul> instead of
 # <ul><li>foo</li><ul>..</ul></ul>
+# See https://stackoverflow.com/questions/5899337/proper-way-to-make-html-nested-list
 !! test
 Wikitext lists can be nested inside HTML lists
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <ul data-parsoid='{"stx": "html"}'>
 <li data-parsoid='{"stx": "html"}'>a
 <ul><li>b</li></ul>
@@ -29567,6 +30076,17 @@ parsoid=html2wt
 * y
 </li>
 </ul>
+!! html/php+tidy
+<ul>
+<li>a
+<ul><li>b</li></ul>
+</li>
+</ul>
+<ul>
+<li>x
+<ul><li>y</li></ul>
+</li>
+</ul>
 !! end
 
 !! test
@@ -30010,7 +30530,7 @@ parsoid={
   "modes": ["html2wt"],
   "scrubWikitext": true
 }
-!! html
+!! html/parsoid
 <h2><i></i></h2>
 <p><a href='Foo' rel='mw:WikiLink'>foo<i></i>
  </a><b><i></i></b>x</p>
@@ -30028,15 +30548,14 @@ parsoid={
   "modes": ["selser"],
   "scrubWikitext": true,
   "changes": [
-    [ "#x", "after", "<h1><i></i></h1>\n<p> x<b></b></p>"]
+    [ "#x", "after", "<h1><i></i></h1>\n<p> bar<b></b></p>"]
   ]
 }
 !! wikitext
-<span id="x">foo</span>
+<div id="x">foo</div>
 !! wikitext/edited
-<span id="x">foo</span>
-
-x
+<div id="x">foo</div>
+bar
 !! end
 
 !! test
@@ -30169,7 +30688,7 @@ parsoid={
   "modes": ["html2wt"],
   "scrubWikitext": false
 }
-!! html
+!! html/parsoid
 <table>
 <tr><td>a</td></tr>
 <tr><td>-</td></tr>
@@ -30192,7 +30711,7 @@ parsoid={
   "modes": ["html2wt"],
   "scrubWikitext": true
 }
-!! html
+!! html/parsoid
 <table>
 <tr><td>a</td></tr>
 <tr><td>-</td></tr>
@@ -30349,7 +30868,7 @@ parsoid={
   "modes": ["html2wt"],
   "scrubWikitext": true
 }
-!! html
+!! html/parsoid
 <font>foo</font>
 <font><font>bar</font></font>
 <font class="x">boo</font>
@@ -30366,7 +30885,7 @@ parsoid={
   "modes": ["html2wt"],
   "scrubWikitext": false
 }
-!! html
+!! html/parsoid
 <font>foo</font>
 !! wikitext
 <font>foo</font>
@@ -30688,8 +31207,18 @@ styletag=1
 <style>.foo::before { content: "<foo>"; }</style>
 <style data-mw-foobar="baz">.foo::after { content: "<bar>"; }</style>
 </div>
+!! html/parsoid
+<div class="foo">
+<style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"&lt;foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style>
+<style data-x-data-mw-foobar="baz" typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{"data-x-data-mw-foobar":"baz"},"body":{"extsrc":".foo::after { content: \"&lt;bar>\"; }"}}'>.foo::after { content: "<bar>"; }</style>
+</div>
 !! end
 
+## Right now, Parsoid doesn't de-duplicate style tags.
+## So, we shouldn't see link tags that need to bypass the sanitizer.
+## In a followup patch, when we de-duplicate style tags and
+## introduce link tags, we'll add a hook for link tags in
+## the parser test runner script.
 !! test
 Validating that <style> isn't wrapped in a paragraph (T186965)
 !! options
@@ -30728,6 +31257,26 @@ bar
 <style>.foo::before { content: "<foo>"; }</style>
 bar
 </p>
+!! html/parsoid
+<p>A style tag, by itself or with other style/link tags, shouldn't be wrapped in a paragraph</p>
+
+<style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"&lt;foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style>
+
+<p><style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"&lt;foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style> &lt;link rel="foo" href="bar"/><style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"&lt;foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style></p>
+
+<p>But if it's on a line with other content, let it be wrapped.</p>
+
+<p><style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"&lt;foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style> bar</p>
+
+<p>foo <style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"&lt;foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style></p>
+
+<p>foo <style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"&lt;foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style> bar</p>
+
+<p>And the same if we have non-paragraph-breaking whitespace</p>
+
+<p>foo
+<style typeof="mw:Extension/style" data-mw='{"name":"style","attrs":{},"body":{"extsrc":".foo::before { content: \"&lt;foo>\"; }"}}'>.foo::before { content: "<foo>"; }</style>
+bar</p>
 !! end
 
 !! test
@@ -30770,6 +31319,24 @@ bar
 </p>
 !! end
 
+!! test
+Extension returning multiple nodes starting with a style tag roundtrips
+!! options
+wgRawHtml=1
+!! wikitext
+<table>
+{{echo|<html><style>.hi { color: red; }</style>
+</html>}}
+<tr><td class="hi">ho</td></tr>
+</table>
+!! html/parsoid
+<p about="#mwt5" typeof="mw:Transclusion" data-parsoid='{"fostered":true,"autoInsertedEnd":true,"autoInsertedStart":true,"firstWikitextNode":"TABLE_html","pi":[[{"k":"1"}]]}' data-mw='{"parts":["&lt;table>\n",{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;html>&lt;style>.hi { color: red; }&lt;/style>\n&lt;/html>"}},"i":0}},"\n&lt;tr>&lt;td class=\"hi\">ho&lt;/td>&lt;/tr>\n&lt;/table>"]}'><style typeof="mw:Extension/html" about="#mwt4" data-mw='{"name":"html","attrs":{},"body":{"extsrc":"&lt;style>.hi { color: red; }&lt;/style>\n"}}'>.hi { color: red; }</style><span about="#mwt4">
+</span></p><table about="#mwt5" data-parsoid='{"stx":"html"}'>
+
+<tbody><tr><td class="hi">ho</td></tr>
+</tbody></table>
+!! end
+
 !! test
 Decoding of HTML entities in headings and links for IDs and link fragments (T103714)
 !! config
index e572be2..00a08a7 100644 (file)
@@ -1806,6 +1806,7 @@ class OutputPageTest extends MediaWikiTestCase {
         * @param string $expectedHTML Expected return value for parseInline(), if different
         */
        public function testParse( array $args, $expectedHTML ) {
+               $this->hideDeprecated( 'OutputPage::parse' );
                $op = $this->newInstance();
                $this->assertSame( $expectedHTML, $op->parse( ...$args ) );
        }
@@ -1820,6 +1821,7 @@ class OutputPageTest extends MediaWikiTestCase {
                        $this->assertTrue( true );
                        return;
                }
+               $this->hideDeprecated( 'OutputPage::parseInline' );
                $op = $this->newInstance();
                $this->assertSame( $expectedHTMLInline ?? $expectedHTML, $op->parseInline( ...$args ) );
        }
@@ -1953,6 +1955,7 @@ class OutputPageTest extends MediaWikiTestCase {
         * @covers OutputPage::parse
         */
        public function testParseNullTitle() {
+               $this->hideDeprecated( 'OutputPage::parse' );
                $this->setExpectedException( MWException::class, 'Empty $mTitle in OutputPage::parseInternal' );
                $op = $this->newInstance( [], null, 'notitle' );
                $op->parse( '' );
@@ -1962,6 +1965,7 @@ class OutputPageTest extends MediaWikiTestCase {
         * @covers OutputPage::parseInline
         */
        public function testParseInlineNullTitle() {
+               $this->hideDeprecated( 'OutputPage::parseInline' );
                $this->setExpectedException( MWException::class, 'Empty $mTitle in OutputPage::parseInternal' );
                $op = $this->newInstance( [], null, 'notitle' );
                $op->parseInline( '' );
index 22495d0..da6df70 100644 (file)
@@ -9,7 +9,7 @@ class SampleTest extends MediaWikiLangTestCase {
         * Anything that needs to happen before your tests should go here.
         */
        protected function setUp() {
-               // Be sure to do call the parent setup and teardown functions.
+               // Be sure to call the parent setup and teardown functions.
                // This makes sure that all the various cleanup and restorations
                // happen as they should (including the restoration for setMwGlobals).
                parent::setUp();
@@ -46,7 +46,7 @@ class SampleTest extends MediaWikiLangTestCase {
        }
 
        /**
-        * If you want to run the same test with a variety of data, use a data provider.
+        * If you want to run the same test with a variety of data, use a data provider.
         * see: https://www.phpunit.de/manual/3.4/en/writing-tests-for-phpunit.html
         */
        public static function provideTitles() {