Merge "Attempt to fix populateIpChanges maintenance script"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 19 Sep 2017 20:40:28 +0000 (20:40 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 19 Sep 2017 20:40:28 +0000 (20:40 +0000)
75 files changed:
includes/Hooks.php
includes/actions/HistoryAction.php
includes/api/i18n/fr.json
includes/api/i18n/nb.json
includes/api/i18n/pt.json
includes/api/i18n/zh-hans.json
includes/auth/AuthManagerAuthPlugin.php
includes/filerepo/file/LocalFile.php
includes/installer/MysqlUpdater.php
includes/libs/CSSMin.php
includes/libs/rdbms/database/IDatabase.php
includes/page/WikiPage.php
includes/parser/Parser.php
includes/specials/SpecialRecentchangeslinked.php
includes/specials/SpecialWatchlist.php
includes/specials/pagers/ActiveUsersPager.php
includes/specials/pagers/ContribsPager.php
includes/specials/pagers/ImageListPager.php
includes/user/User.php
languages/i18n/ais.json
languages/i18n/ar.json
languages/i18n/ast.json
languages/i18n/be-tarask.json
languages/i18n/bg.json
languages/i18n/bn.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/en.json
languages/i18n/eu.json
languages/i18n/fr.json
languages/i18n/he.json
languages/i18n/hy.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jv.json
languages/i18n/ko.json
languages/i18n/lb.json
languages/i18n/lfn.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/nb.json
languages/i18n/pt.json
languages/i18n/ru.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/te.json
languages/i18n/th.json
languages/i18n/xmf.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
maintenance/backup.inc
resources/Resources.php
resources/lib/jquery/jquery.migrate.js
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.mixins.less
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ChangesListWrapperWidget.highlightCircles.seenunseen.less
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterTagMultiselectWidget.less
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
resources/src/mediawiki.skinning/interface.css
resources/src/mediawiki.special/mediawiki.special.changeslist.visitedstatus.js
resources/src/mediawiki.special/mediawiki.special.preferences.convertmessagebox.js
resources/src/mediawiki.widgets/MediaSearch/mw.widgets.MediaSearchQueue.js
resources/src/mediawiki.widgets/mw.widgets.TitleSearchWidget.js
resources/src/mediawiki/mediawiki.checkboxtoggle.js
resources/src/mediawiki/mediawiki.js
tests/parser/parserTests.txt
tests/phpunit/includes/HooksTest.php
tests/phpunit/includes/libs/CSSMinTest.php
tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js
tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js
tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.errorLogger.test.js

index f4f86be..c22dc97 100644 (file)
@@ -108,17 +108,89 @@ class Hooks {
                }
        }
 
+       /**
+        * @param string $event Event name
+        * @param array|callable $hook
+        * @param array $args Array of parameters passed to hook functions
+        * @param string|null $deprecatedVersion [optional]
+        * @param string &$fname [optional] Readable name of hook [returned]
+        * @return null|string|bool
+        */
+       private static function callHook( $event, $hook, array $args, $deprecatedVersion = null,
+               &$fname = null
+       ) {
+               // Turn non-array values into an array. (Can't use casting because of objects.)
+               if ( !is_array( $hook ) ) {
+                       $hook = [ $hook ];
+               }
+
+               if ( !array_filter( $hook ) ) {
+                       // Either array is empty or it's an array filled with null/false/empty.
+                       return null;
+               }
+
+               if ( is_array( $hook[0] ) ) {
+                       // First element is an array, meaning the developer intended
+                       // the first element to be a callback. Merge it in so that
+                       // processing can be uniform.
+                       $hook = array_merge( $hook[0], array_slice( $hook, 1 ) );
+               }
+
+               /**
+                * $hook can be: a function, an object, an array of $function and
+                * $data, an array of just a function, an array of object and
+                * method, or an array of object, method, and data.
+                */
+               if ( $hook[0] instanceof Closure ) {
+                       $fname = "hook-$event-closure";
+                       $callback = array_shift( $hook );
+               } elseif ( is_object( $hook[0] ) ) {
+                       $object = array_shift( $hook );
+                       $method = array_shift( $hook );
+
+                       // If no method was specified, default to on$event.
+                       if ( $method === null ) {
+                               $method = "on$event";
+                       }
+
+                       $fname = get_class( $object ) . '::' . $method;
+                       $callback = [ $object, $method ];
+               } elseif ( is_string( $hook[0] ) ) {
+                       $fname = $callback = array_shift( $hook );
+               } else {
+                       throw new MWException( 'Unknown datatype in hooks for ' . $event . "\n" );
+               }
+
+               // Run autoloader (workaround for call_user_func_array bug)
+               // and throw error if not callable.
+               if ( !is_callable( $callback ) ) {
+                       throw new MWException( 'Invalid callback ' . $fname . ' in hooks for ' . $event . "\n" );
+               }
+
+               // mark hook as deprecated, if deprecation version is specified
+               if ( $deprecatedVersion !== null ) {
+                       wfDeprecated( "$event hook (used in $fname)", $deprecatedVersion );
+               }
+
+               // Call the hook.
+               $hook_args = array_merge( $hook, $args );
+               return call_user_func_array( $callback, $hook_args );
+       }
+
        /**
         * Call hook functions defined in Hooks::register and $wgHooks.
         *
-        * For a certain hook event, fetch the array of hook events and
+        * For the given hook event, fetch the array of hook events and
         * process them. Determine the proper callback for each hook and
         * then call the actual hook using the appropriate arguments.
         * Finally, process the return value and return/throw accordingly.
         *
+        * For hook event that are not abortable through a handler's return value,
+        * use runWithoutAbort() instead.
+        *
         * @param string $event Event name
         * @param array $args Array of parameters passed to hook functions
-        * @param string|null $deprecatedVersion Optionally, mark hook as deprecated with version number
+        * @param string|null $deprecatedVersion [optional] Mark hook as deprecated with version number
         * @return bool True if no handler aborted the hook
         *
         * @throws Exception
@@ -130,61 +202,11 @@ class Hooks {
         */
        public static function run( $event, array $args = [], $deprecatedVersion = null ) {
                foreach ( self::getHandlers( $event ) as $hook ) {
-                       // Turn non-array values into an array. (Can't use casting because of objects.)
-                       if ( !is_array( $hook ) ) {
-                               $hook = [ $hook ];
-                       }
-
-                       if ( !array_filter( $hook ) ) {
-                               // Either array is empty or it's an array filled with null/false/empty.
+                       $retval = self::callHook( $event, $hook, $args, $deprecatedVersion );
+                       if ( $retval === null ) {
                                continue;
-                       } elseif ( is_array( $hook[0] ) ) {
-                               // First element is an array, meaning the developer intended
-                               // the first element to be a callback. Merge it in so that
-                               // processing can be uniform.
-                               $hook = array_merge( $hook[0], array_slice( $hook, 1 ) );
-                       }
-
-                       /**
-                        * $hook can be: a function, an object, an array of $function and
-                        * $data, an array of just a function, an array of object and
-                        * method, or an array of object, method, and data.
-                        */
-                       if ( $hook[0] instanceof Closure ) {
-                               $func = "hook-$event-closure";
-                               $callback = array_shift( $hook );
-                       } elseif ( is_object( $hook[0] ) ) {
-                               $object = array_shift( $hook );
-                               $method = array_shift( $hook );
-
-                               // If no method was specified, default to on$event.
-                               if ( $method === null ) {
-                                       $method = "on$event";
-                               }
-
-                               $func = get_class( $object ) . '::' . $method;
-                               $callback = [ $object, $method ];
-                       } elseif ( is_string( $hook[0] ) ) {
-                               $func = $callback = array_shift( $hook );
-                       } else {
-                               throw new MWException( 'Unknown datatype in hooks for ' . $event . "\n" );
-                       }
-
-                       // Run autoloader (workaround for call_user_func_array bug)
-                       // and throw error if not callable.
-                       if ( !is_callable( $callback ) ) {
-                               throw new MWException( 'Invalid callback ' . $func . ' in hooks for ' . $event . "\n" );
                        }
 
-                       // mark hook as deprecated, if deprecation version is specified
-                       if ( $deprecatedVersion !== null ) {
-                               wfDeprecated( "$event hook (used in $func)", $deprecatedVersion );
-                       }
-
-                       // Call the hook.
-                       $hook_args = array_merge( $hook, $args );
-                       $retval = call_user_func_array( $callback, $hook_args );
-
                        // Process the return value.
                        if ( is_string( $retval ) ) {
                                // String returned means error.
@@ -197,4 +219,26 @@ class Hooks {
 
                return true;
        }
+
+       /**
+        * Call hook functions defined in Hooks::register and $wgHooks.
+        *
+        * @param string $event Event name
+        * @param array $args Array of parameters passed to hook functions
+        * @param string|null $deprecatedVersion [optional] Mark hook as deprecated with version number
+        * @return bool Always true
+        * @throws MWException If a callback is invalid, unknown
+        * @throws UnexpectedValueException If a callback returns an abort value.
+        * @since 1.30
+        */
+       public static function runWithoutAbort( $event, array $args = [], $deprecatedVersion = null ) {
+               foreach ( self::getHandlers( $event ) as $hook ) {
+                       $fname = null;
+                       $retval = self::callHook( $event, $hook, $args, $deprecatedVersion, $fname );
+                       if ( $retval !== null && $retval !== true ) {
+                               throw new UnexpectedValueException( "Invalid return from $fname for unabortable $event." );
+                       }
+               }
+               return true;
+       }
 }
index 7460340..fe84852 100644 (file)
@@ -192,27 +192,26 @@ class HistoryAction extends FormlessAction {
 
                // Add the general form
                $action = htmlspecialchars( wfScript() );
+               $content = Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) . "\n";
+               $content .= Html::hidden( 'action', 'history' ) . "\n";
+               $content .= Xml::dateMenu(
+                       ( $year == null ? MWTimestamp::getLocalInstance()->format( 'Y' ) : $year ),
+                       $month
+               ) . '&#160;';
+               $content .= $tagSelector ? ( implode( '&#160;', $tagSelector ) . '&#160;' ) : '';
+               $content .= $checkDeleted . Html::submitButton(
+                       $this->msg( 'historyaction-submit' )->text(),
+                       [],
+                       [ 'mw-ui-progressive' ]
+               );
                $out->addHTML(
                        "<form action=\"$action\" method=\"get\" id=\"mw-history-searchform\">" .
                        Xml::fieldset(
                                $this->msg( 'history-fieldset-title' )->text(),
-                               false,
+                               $content,
                                [ 'id' => 'mw-history-search' ]
                        ) .
-                       Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) . "\n" .
-                       Html::hidden( 'action', 'history' ) . "\n" .
-                       Xml::dateMenu(
-                               ( $year == null ? MWTimestamp::getLocalInstance()->format( 'Y' ) : $year ),
-                               $month
-                       ) . '&#160;' .
-                       ( $tagSelector ? ( implode( '&#160;', $tagSelector ) . '&#160;' ) : '' ) .
-                       $checkDeleted .
-                       Html::submitButton(
-                               $this->msg( 'historyaction-submit' )->text(),
-                               [],
-                               [ 'mw-ui-progressive' ]
-                       ) . "\n" .
-                       '</fieldset></form>'
+                       '</form>'
                );
 
                Hooks::run( 'PageHistoryBeforeList', [ &$this->page, $this->getContext() ] );
index bd9ebcf..09bbc71 100644 (file)
        "apihelp-paraminfo-example-1": "Afficher les informations pour <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> et <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
        "apihelp-paraminfo-example-2": "Afficher les informations pour tous les sous-modules de <kbd>[[Special:ApiHelp/query|action=query]]</kbd>.",
        "apihelp-parse-summary": "Analyse le contenu et renvoie le résultat de l’analyseur.",
-       "apihelp-parse-extended-description": "Voyez les différents modules prop de <kbd>[[Special:ApiHelp/query|action=query]]</kbd> pour avoir de l’information sur la version actuelle d’une page.\n\nIl y a plusieurs moyens de spécifier le texte à analyser :\n# Spécifier une page ou une révision, en utilisant <var>$1page</var>, <var>$1pageid</var> ou <var>$1oldid</var>.\n# Spécifier explicitement un contenu, en utilisant <var>$1text</var>, <var>$1title</var> et <var>$1contentmodel</var>\n# Spécifier uniquement un résumé à analyser. <var>$1prop</var> doit recevoir une valeur vide.",
+       "apihelp-parse-extended-description": "Voyez les différents modules prop de <kbd>[[Special:ApiHelp/query|action=query]]</kbd> pour avoir de l’information sur la version actuelle d’une page.\n\nIl y a plusieurs moyens de spécifier le texte à analyser :\n# Spécifier une page ou une révision, en utilisant <var>$1page</var>, <var>$1pageid</var> ou <var>$1oldid</var>.\n# Spécifier explicitement un contenu, en utilisant <var>$1text</var>, <var>$1title</var> et <var>$1contentmodel</var>.\n# Spécifier uniquement un résumé à analyser. <var>$1prop</var> doit recevoir une valeur vide.",
        "apihelp-parse-param-title": "Titre de la page à laquelle appartient le texte. Si omis, <var>$1contentmodel</var> doit être spécifié, et [[API]] sera utilisé comme titre.",
        "apihelp-parse-param-text": "Texte à analyser. utiliser <var>$1title</var> ou <var>$1contentmodel</var> pour contrôler le modèle de contenu.",
+       "apihelp-parse-param-revid": "ID de révision, pour <code><nowiki>{{REVISIONID}}</nowiki></code> et autres variables semblables.",
        "apihelp-parse-param-summary": "Résumé à analyser.",
        "apihelp-parse-param-page": "Analyser le contenu de cette page. Impossible à utiliser avec <var>$1text</var> et <var>$1title</var>.",
        "apihelp-parse-param-pageid": "Analyser le contenu de cette page. Écrase <var>$1page</var>.",
index 8b86af5..1c8877c 100644 (file)
        "apihelp-options-example-complex": "Tilbakestill alle innstillinger, og sett så <kbd>skin</kbd> og <kbd>nickname</kbd>.",
        "apihelp-paraminfo-summary": "Hent informasjon om API-moduler.",
        "apihelp-paraminfo-param-helpformat": "Format for hjelpestrenger.",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "Legger til filens tittel.",
+       "apihelp-query+allfileusages-param-limit": "Hvor mange elementer som skal returneres totalt.",
+       "apihelp-query+allfileusages-param-dir": "Retningen det skal listes opp i.",
        "apihelp-json-summary": "Resultatdata i JSON-format.",
        "apihelp-none-summary": "Ingen resultat.",
        "api-help-flag-readrights": "Denne modulen krever lesetilgang.",
index 78ec0be..8d4cedc 100644 (file)
        "apihelp-paraminfo-example-1": "Mostrar informação para <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> e <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
        "apihelp-paraminfo-example-2": "Mostrar informação de todos os módulos de <kbd>[[Special:ApiHelp/query|action=query]]</kbd>.",
        "apihelp-parse-summary": "Faz a análise sintática do conteúdo e devolve o resultado da análise.",
-       "apihelp-parse-extended-description": "Consulte os vários módulos disponíveis no parâmetro prop de <kbd>[[Special:ApiHelp/query|action=query]]</kbd> para obter informação da versão atual de uma página.\n\nHá várias formas de especificar o texto a analisar:\n# Especificar uma página ou revisão, usando <var>$1page</var>, <var>$1pageid</var> ou <var>$1oldid</var>.\n# Especificar o conteúdo de forma explícita, usando <var>$1text</var>, <var>$1title</var> e <var>$1contentmodel</var>.\n# Especificar só um resumo a analisar. <var>$1prop</var> deve receber o valor vazio.",
+       "apihelp-parse-extended-description": "Consulte os vários módulos disponíveis no parâmetro prop de <kbd>[[Special:ApiHelp/query|action=query]]</kbd> para obter informação da versão atual de uma página.\n\nHá várias formas de especificar o texto a analisar:\n# Especificar uma página ou revisão, usando <var>$1page</var>, <var>$1pageid</var> ou <var>$1oldid</var>.\n# Especificar o conteúdo de forma explícita, usando <var>$1text</var>, <var>$1title</var>, <var>$1revid</var> e <var>$1contentmodel</var>.\n# Especificar só um resumo a analisar. <var>$1prop</var> deve receber o valor vazio.",
        "apihelp-parse-param-title": "Título da página à qual o texto pertence. Se omitido, é preciso especificar <var>$1contentmodel</var> e deve usar [[API]] como título.",
        "apihelp-parse-param-text": "Texto a analisar. Usar <var>$1title</var> ou <var>$1contentmodel</var> para controlar o modelo de conteúdo.",
+       "apihelp-parse-param-revid": "Identificador da revisão, para <code><nowiki>{{REVISIONID}}</nowiki></code> e variáveis semelhantes.",
        "apihelp-parse-param-summary": "Resumo a analisar.",
        "apihelp-parse-param-page": "Analisar o conteúdo desta página. Não pode ser usado em conjunto com <var>$1text</var> e <var>$1title</var>.",
        "apihelp-parse-param-pageid": "Analisar o conteúdo desta página. Tem precedência sobre <var>$1page</var>.",
        "apiwarn-notfile": "\"$1\" não é um ficheiro.",
        "apiwarn-nothumb-noimagehandler": "Não foi possível criar a miniatura porque $1 não tem uma rotina associada de tratamento de imagens.",
        "apiwarn-parse-nocontentmodel": "Não foi fornecido um <var>title</var> ou <var>contentmodel</var>, será assumido $1.",
+       "apiwarn-parse-revidwithouttext": "<var>revid</var> foi usado sem <var>text</var>, e foram pedidas as propriedades da página analisada. Pretendia usar <var>oldid</var> em vez de <var>revid</var>?",
        "apiwarn-parse-titlewithouttext": "<var>title</var> foi usado sem <var>text</var>, e foram pedidas as propriedades da página analisada. Pretendia usar <var>page</var> em vez de <var>title</var>?",
        "apiwarn-redirectsandrevids": "Resolução de redirecionamentos não pode ser usada em conjunto com o parâmetro <var>revids</var>. Quaisquer redirecionamentos para os quais <var>revids</var> aponta não foram resolvidos.",
        "apiwarn-tokennotallowed": "A operação \"$1\" não é permitida para o utilizador atual.",
index ef6fa60..5daadb1 100644 (file)
        "apihelp-paraminfo-example-1": "显示<kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>、<kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>、<kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd>和<kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>的信息。",
        "apihelp-paraminfo-example-2": "显示<kbd>[[Special:ApiHelp/query|action=query]]</kbd>的所有子模块的信息。",
        "apihelp-parse-summary": "解析内容并返回解析器输出。",
-       "apihelp-parse-extended-description": "参见<kbd>[[Special:ApiHelp/query|action=query]]</kbd>的各种prop-module以从页面的当前版本获得信息。\n\n这里有几种方法可以指定解析的文本:\n# 指定一个页面或修订,使用<var>$1page</var>、<var>$1pageid</var>或<var>$1oldid</var>。\n# 明确指定内容,使用<var>$1text</var>、<var>$1title</var>和<var>$1contentmodel</var>。\n# 只指定一段摘要解析。<var>$1prop</var>应提供一个空值。",
+       "apihelp-parse-extended-description": "参见<kbd>[[Special:ApiHelp/query|action=query]]</kbd>的各种prop-module以从页面的当前版本获得信息。\n\n这里有几种方法可以指定解析的文本:\n# 指定一个页面或修订,使用<var>$1page</var>、<var>$1pageid</var>或<var>$1oldid</var>。\n# 明确指定内容,使用<var>$1text</var>、<var>$1title</var>、<var>$1revid</var>和<var>$1contentmodel</var>。\n# 只指定一段摘要解析。<var>$1prop</var>应提供一个空值。",
        "apihelp-parse-param-title": "文本属于的页面标题。如果省略,<var>$1contentmodel</var>就必须被指定,且[[API]]将作为标题使用。",
        "apihelp-parse-param-text": "要解析的文本。使用<var>$1title</var>或<var>$1contentmodel</var>以控制内容模型。",
+       "apihelp-parse-param-revid": "修订版本ID,用于<code><nowiki>{{REVISIONID}}</nowiki></code>和类似变体。",
        "apihelp-parse-param-summary": "要解析的摘要。",
        "apihelp-parse-param-page": "解析此页的内容。不能与<var>$1text</var>和<var>$1title</var>一起使用。",
        "apihelp-parse-param-pageid": "解析此页的内容。覆盖<var>$1page</var>。",
        "apiwarn-notfile": "“$1”不是文件。",
        "apiwarn-nothumb-noimagehandler": "不能创建缩略图,因为$1没有关联的图片处理器。",
        "apiwarn-parse-nocontentmodel": "<var>title</var>或<var>contentmodel</var>未提供,假设$1。",
+       "apiwarn-parse-revidwithouttext": "<var>revid</var>在没有<var>text</var>的情况下被使用,并且请求了已解析页面的属性。您是想用<var>oldid</var>而不是<var>revid</var>么?",
        "apiwarn-parse-titlewithouttext": "<var>title</var>在没有<var>text</var>的情况下被使用,并且请求了已解析页面的属性。您是想用<var>page</var>而不是<var>title</var>么?",
        "apiwarn-redirectsandrevids": "重定向解决方案不能与<var>revids</var>参数一起使用。任何<var>revids</var>所指向的重定向都未被解决。",
        "apiwarn-tokennotallowed": "操作“$1”不允许当前用户使用。",
index 8845858..9a1e445 100644 (file)
@@ -152,8 +152,9 @@ class AuthManagerAuthPlugin extends \AuthPlugin {
        }
 
        public function updateExternalDBGroups( $user, $addgroups, $delgroups = [] ) {
-               \Hooks::run( 'UserGroupsChanged', [ $user, $addgroups, $delgroups ] );
-               return true;
+               throw new \BadMethodCallException(
+                       'Update of user groups via AuthPlugin is not supported with AuthManager.'
+               );
        }
 
        public function canCreateAccounts() {
index 4c0dea2..fd0f3f3 100644 (file)
@@ -2307,7 +2307,6 @@ class LocalFileDeleteBatch {
 
                $encTimestamp = $dbw->addQuotes( $dbw->timestamp( $now ) );
                $encUserId = $dbw->addQuotes( $this->user->getId() );
-               $encReason = $dbw->addQuotes( $this->reason );
                $encGroup = $dbw->addQuotes( 'deleted' );
                $ext = $this->file->getExtension();
                $dotExt = $ext === '' ? '' : ".$ext";
@@ -2350,7 +2349,10 @@ class LocalFileDeleteBatch {
                        ];
                        $joins = [];
 
-                       $fields += $commentStoreFaReason->insert( $dbw, $encReason );
+                       $fields += array_map(
+                               [ $dbw, 'addQuotes' ],
+                               $commentStoreFaReason->insert( $dbw, $this->reason )
+                       );
 
                        if ( $wgCommentTableSchemaMigrationStage <= MIGRATION_WRITE_BOTH ) {
                                $fields['fa_description'] = 'img_description';
index e2ff960..556d0d5 100644 (file)
@@ -390,7 +390,7 @@ class MysqlUpdater extends DatabaseUpdater {
                global $IP;
 
                if ( !$this->doTable( 'interwiki' ) ) {
-                       return true;
+                       return;
                }
 
                if ( $this->db->tableExists( "interwiki", __METHOD__ ) ) {
index ee88d0d..adaae17 100644 (file)
@@ -149,6 +149,7 @@ class CSSMin {
                                '%2F' => '/', // Unencode slashes
                                '%3A' => ':', // Unencode colons
                                '%3D' => '=', // Unencode equals signs
+                               '%22' => '"', // Unencode double quotes
                        ] );
                        $uri = 'data:' . $type . ',' . $encoded;
                        if ( !$ie8Compat || strlen( $uri ) < self::DATA_URI_SIZE_LIMIT ) {
@@ -215,7 +216,7 @@ class CSSMin {
                if ( preg_match( '!^[\w\d:@/~.%+;,?&=-]+$!', $url ) ) {
                        return "url($url)";
                } else {
-                       return 'url("' . strtr( $url, [ '\\' => '\\\\', '"' => '\\"' ] ) . '")';
+                       return "url('" . strtr( $url, [ '\\' => '\\\\', "'" => "\\'" ] ) . "')";
                }
        }
 
index 0283c4b..78889e5 100644 (file)
@@ -206,6 +206,7 @@ interface IDatabase {
         * Returns true if this database does an implicit sort when doing GROUP BY
         *
         * @return bool
+        * @deprecated Since 1.30; only use grouped or aggregated fields in the SELECT
         */
        public function implicitGroupby();
 
index bbf22ba..c04eb0a 100644 (file)
@@ -983,18 +983,12 @@ class WikiPage implements Page, IDBAccessObject {
 
                $dbr = wfGetDB( DB_REPLICA );
 
-               if ( $dbr->implicitGroupby() ) {
-                       $realNameField = 'user_real_name';
-               } else {
-                       $realNameField = 'MIN(user_real_name) AS user_real_name';
-               }
-
                $tables = [ 'revision', 'user' ];
 
                $fields = [
                        'user_id' => 'rev_user',
                        'user_name' => 'rev_user_text',
-                       $realNameField,
+                       'user_real_name' => 'MIN(user_real_name)',
                        'timestamp' => 'MAX(rev_timestamp)',
                ];
 
index e901f6f..d00b333 100644 (file)
@@ -2296,8 +2296,13 @@ class Parser {
                                                $this->mOutput->addLanguageLink( $nt->getFullText() );
                                        }
 
+                                       /**
+                                        * Strip the whitespace interwiki links produce, see T10897
+                                        */
                                        $s = rtrim( $s . $prefix );
-                                       $s .= trim( $trail, "\n" ) == '' ? '' : $prefix . $trail;
+                                       // Special case: strip newlines when only thing between
+                                       // this link and next are newlines
+                                       $s .= trim( $trail, "\n" ) === '' ? '' : $trail;
                                        continue;
                                }
 
@@ -2322,7 +2327,13 @@ class Parser {
                                                continue;
                                        }
                                } elseif ( $ns == NS_CATEGORY ) {
-                                       $s = rtrim( $s . "\n" ); # T2087
+                                       /**
+                                        * Strip the whitespace Category links produce, see T2087
+                                        */
+                                       $s = rtrim( $s . $prefix ); # T2087, T87753
+                                       // Special case: strip newlines when only thing between
+                                       // this link and next are newlines
+                                       $s .= trim( $trail, "\n" ) === '' ? '' : $trail;
 
                                        if ( $wasblank ) {
                                                $sortkey = $this->getDefaultSort();
@@ -2334,11 +2345,6 @@ class Parser {
                                        $sortkey = $this->getConverterLanguage()->convertCategoryKey( $sortkey );
                                        $this->mOutput->addCategory( $nt->getDBkey(), $sortkey );
 
-                                       /**
-                                        * Strip the whitespace Category links produce, see T2087
-                                        */
-                                       $s .= trim( $prefix . $trail, "\n" ) == '' ? '' : $prefix . $trail;
-
                                        continue;
                                }
                        }
index e353f0c..a13af55 100644 (file)
@@ -98,11 +98,11 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges {
                                'wl_namespace=rc_namespace'
                        ] ];
                }
-               if ( $this->getUser()->isAllowed( 'rollback' ) ) {
-                       $tables[] = 'page';
-                       $join_conds['page'] = [ 'LEFT JOIN', 'rc_cur_id=page_id' ];
-                       $select[] = 'page_latest';
-               }
+
+               // JOIN on page, used for 'last revision' filter highlight
+               $tables[] = 'page';
+               $join_conds['page'] = [ 'LEFT JOIN', 'rc_cur_id=page_id' ];
+               $select[] = 'page_latest';
 
                $tagFilter = $opts['tagfilter'] ? explode( '|', $opts['tagfilter'] ) : [];
                ChangeTags::modifyDisplayQuery(
index 2750551..8418865 100644 (file)
@@ -635,11 +635,13 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                        'id' => 'mw-watchlist-form'
                ] );
                $form .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
-               $form .= Xml::fieldset(
-                       $this->msg( 'watchlist-options' )->text(),
-                       false,
+               $form .= Xml::openElement(
+                       'fieldset',
                        [ 'id' => 'mw-watchlist-options', 'class' => 'cloptions' ]
                );
+               $form .= Xml::element(
+                       'legend', null, $this->msg( 'watchlist-options' )->text()
+               );
 
                if ( !$this->isStructuredFilterUiEnabled() ) {
                        $form .= $this->makeLegend();
index 0665e11..64af71a 100644 (file)
@@ -118,16 +118,15 @@ class ActiveUsersPager extends UsersPager {
                                ) . ')';
                }
 
-               if ( $dbr->implicitGroupby() ) {
-                       $options = [ 'GROUP BY' => [ 'qcc_title' ] ];
-               } else {
-                       $options = [ 'GROUP BY' => [ 'user_name', 'user_id', 'qcc_title' ] ];
-               }
-
                return [
                        'tables' => $tables,
-                       'fields' => [ 'user_name', 'user_id', 'recentedits' => 'COUNT(*)', 'qcc_title' ],
-                       'options' => $options,
+                       'fields' => [
+                               'qcc_title',
+                               'user_name' => 'qcc_title',
+                               'user_id' => 'MAX(user_id)',
+                               'recentedits' => 'COUNT(*)'
+                       ],
+                       'options' => [ 'GROUP BY' => [ 'qcc_title' ] ],
                        'conds' => $conds
                ];
        }
index 31ea810..979460c 100644 (file)
@@ -384,6 +384,7 @@ class ContribsPager extends RangeChronologicalPager {
                $parentRevIds = [];
                $this->mParentLens = [];
                $batch = new LinkBatch();
+               $isIpRange = $this->isQueryableRange( $this->target );
                # Give some pointers to make (last) links
                foreach ( $this->mResult as $row ) {
                        if ( isset( $row->rev_parent_id ) && $row->rev_parent_id ) {
@@ -394,7 +395,7 @@ class ContribsPager extends RangeChronologicalPager {
                                if ( $this->contribs === 'newbie' ) { // multiple users
                                        $batch->add( NS_USER, $row->user_name );
                                        $batch->add( NS_USER_TALK, $row->user_name );
-                               } elseif ( $this->isQueryableRange( $this->target ) ) {
+                               } elseif ( $isIpRange ) {
                                        // If this is an IP range, batch the IP's talk page
                                        $batch->add( NS_USER_TALK, $row->rev_user_text );
                                }
index 813d1d4..1c46f4c 100644 (file)
@@ -286,13 +286,8 @@ class ImageListPager extends TablePager {
                        }
                        unset( $field );
 
-                       $dbr = wfGetDB( DB_REPLICA );
-                       if ( $dbr->implicitGroupby() ) {
-                               $options = [ 'GROUP BY' => 'img_name' ];
-                       } else {
-                               $columnlist = preg_grep( '/^img/', array_keys( $this->getFieldNames() ) );
-                               $options = [ 'GROUP BY' => array_merge( [ 'img_user' ], $columnlist ) ];
-                       }
+                       $columnlist = preg_grep( '/^img/', array_keys( $this->getFieldNames() ) );
+                       $options = [ 'GROUP BY' => array_merge( [ 'img_user' ], $columnlist ) ];
                        $join_conds = [ 'oldimage' => [ 'LEFT JOIN', 'oi_name = img_name' ] ];
                }
 
index 6115144..1c894a0 100644 (file)
@@ -1462,15 +1462,17 @@ class User implements IDBAccessObject {
                }
 
                $oldGroups = $this->getGroups(); // previous groups
+               $oldUGMs = $this->getGroupMemberships();
                foreach ( $toPromote as $group ) {
                        $this->addGroup( $group );
                }
+               $newGroups = array_merge( $oldGroups, $toPromote ); // all groups
+               $newUGMs = $this->getGroupMemberships();
+
                // update groups in external authentication database
-               Hooks::run( 'UserGroupsChanged', [ $this, $toPromote, [], false, false ] );
+               Hooks::run( 'UserGroupsChanged', [ $this, $toPromote, [], false, false, $oldUGMs, $newUGMs ] );
                AuthManager::callLegacyAuthPlugin( 'updateExternalDBGroups', [ $this, $toPromote ] );
 
-               $newGroups = array_merge( $oldGroups, $toPromote ); // all groups
-
                $logEntry = new ManualLogEntry( 'rights', 'autopromote' );
                $logEntry->setPerformer( $this );
                $logEntry->setTarget( $this->getUserPage() );
index 5243964..89e5788 100644 (file)
@@ -9,6 +9,8 @@
        },
        "tog-hidecategorization": "midimut kasabelih kakuniza",
        "tog-numberheadings": "satangahan lunuk pabanggu",
+       "tog-editondblclick": "sapecec sakatusa hawsa mikawaway-kalumyiti kasabelih",
+       "tog-shownumberswatching": "paazih misisip misaungayay a nikayadah",
        "tog-watchlisthidecategorization": "midimut kasabelih kakuniza",
        "tog-showhiddencats": "paazih madimutay a kakuniza",
        "underline-always": "mahizatuay",
@@ -91,6 +93,7 @@
        "category-article-count": "{{PLURAL:$2|uyni kakuniza hatiza ku cacay yamalyilu sailuc-kakuniza. kina kakuniza yamalyilu isasa $2 a sailuc-kasasizuma, ilabu {{PLURAL:$1}}mahiza ku isasaay}}",
        "category-file-count": "{{PLURAL:$2|kakuniza yamalyilu isasaay a cacay ku tangan. kakuniza yamalyilu isasaay izaway $1 ku tangan, pulung $2 makalaan.}}",
        "listingcontinuesabbrev": "palalid",
+       "broken-file-category": "tangan masasiket malepi’ay a kasabelih",
        "about": "mahizaay",
        "article": "lacul kasabelih",
        "newwindow": "(paynin baluhay a azih-sasingalan miwawah)",
        "badtitletext": "matuzu’ay a kasabelih pyawti u la’cusay、nayi’ ku cacan, caaysa tatenga’ay tu misiket kamu Wikiay a pyawti.\ntebanay pyawti akay amalyilu la’cusay pisaungay i pyawtayi a tatebanan nu nisulitan.",
        "viewsource": "ciwsace sakatizeng bangu",
        "actionthrottled": "makelec saungay tuway",
+       "ns-specialprotected": "sazumaay a kasabelih la’cusay  mikawaway-kalumyiti.",
        "exception-nologin": "caay henay patalabu",
        "virus-unknownscanner": "caay kapulita tena’ tu milepi’ay:",
        "welcomeuser": "manamuh tu tayniay, $1!",
        "createacct-emailoptional": "imyiyo(email) tigami (u pili’ay sasulitan)",
        "createacct-email-ph": "pisulitan ku imyiyo(email) nu misu",
        "createacct-another-email-ph": "pisulitan imyiyo(email) puenengan",
+       "createacct-realname": "tatenga’ay a ngangan (mapili’ay a sasulitan)",
        "createacct-reason": "mahicaay",
        "createacct-submit": "panganganen ku misuay a canghaw",
        "createacct-another-submit": "panganganen ku canghaw",
        "newpassword": "baluhay a mima:",
        "retypenew": "miliyaw suliten baluhay a mima:",
        "botpasswords": "kikay-tademaw a mima",
+       "botpasswords-disabled": "kikay-tademaw a mima mapasatezep tuway.",
        "botpasswords-existing": "naizawtu ku kikay-tademaw a mima",
        "botpasswords-createnew": "patizeng baluhay kikay-tademaw a mima",
        "botpasswords-label-appid": "kalungangan nu kikay-tademaw:",
        "passwordreset-username": "misaungayay a kalungangan:",
        "passwordreset-domain": "calay-subal(wangyi) kalungangan:",
        "passwordreset-email": "imyiyo(email) puenengan:",
+       "passwordreset-invalidemail": "la’cusay a imyiyo(email) puenengan",
+       "changeemail-newemail": "baluhay imyiyo(email) puenengan:",
        "changeemail-none": "(nayi’)",
        "changeemail-submit": "misumad imyiyo(email)",
        "resettokens": "miliyaw patizeng sabuhat a mima",
+       "resettokens-no-tokens": "inayi’ ku miliyaw tu setinay a mima-sacukcuk.",
        "resettokens-tokens": "sabuhat:",
        "resettokens-resetbutton": "miliyaw patizeng mapili’ay a sabuhat-sacukcuk",
        "bold_sample": "kibetulay a sulit",
        "showpreview": "paazih pataayaway miazih",
        "showdiff": "paazih ku masumaday",
        "anoneditwarning": "<strong>patalaw:</strong>caay henay kisu patalabu. anu miteka mikawaway tu kalumyiti, IP adolyise nu misu ama mitilak. anu kisu <strong>[$1  patalabu ]</strong> acasa <strong>[$2 panganganen ku canghaw ]</strong>, misuay mikawaway tu kalumyiti payni tu nu misuay misaungayay kalungangan sacuzu’ ,izaway zuma kapahayay.",
+       "missingcommenttext": "pisuliten buhci tu kamu isasa’.",
        "subject-preview": "pataayaway miazih  taazihan tu kawaw:",
        "blockednoreason": "caay pasaheci tu mahicaay",
        "nosuchsectiontitle": "caykatepa tu tusil",
        "last": "ayaway",
        "page_last": "sazikuzay a kasabelih",
        "history-fieldset-title": "mikilim masumad nu ayaway",
+       "history-show-deleted": "paazih a cacay ku masipuay tu masumad",
        "histfirst": "sakasumamadan",
        "histlast": "sabaluhay",
        "historyempty": "(inayi’)",
        "history-feed-title": "masumad nu ayaway a nazipa’an",
        "history-feed-item-nocomment": "$1 i $2",
+       "rev-deleted-comment": "(masipu tu mikawaway-kalumyiti  pecu’ nu lacul)",
+       "rev-deleted-event": "(masipu tu nasulitan-nazipa’an nu paazih tu sulit)",
        "rev-delundel": "misumad ku maazihay",
        "rev-showdeleted": "paazih",
+       "revisiondelete": "masipu/palawpes misipu masumad nu ayaway",
+       "revdelete-no-file": "matuzu’ay a tangan inayi’ tu.",
        "revdelete-show-file-submit": "hang",
        "revdelete-legend": "misetin paazih a kelec",
        "revdelete-hide-text": "masumad nu ayaway a sulit",
        "revdel-restore": "misumad ku maazihay",
        "pagehist": "kasabelih nazipa’an",
        "deletedhist": "masiputu tu nazipa’an",
+       "revdelete-otherreason": "zumaay/nicunusay a mahicaay:",
        "revdelete-reasonotherlist": "zuma a mahicaay",
        "revdelete-edit-reasonlist": "masipu a mahicaay nu mikawaway-kalumyiti",
        "revdelete-offender": "masumad nu ayaway  masacudaday:",
        "mergehistory-from": "saangangan kasabelih:",
        "mergehistory-into": "pabalucu’an kasabelih:",
        "mergehistory-list": "kapah mikabuay a mikawaway-kalumyiti nazipa’an",
+       "mergehistory-go": "paazih kapah mikabuay a mikawaway-kalumyiti",
+       "mergehistory-empty": "inayi’ amikabuay a sumad.",
        "mergehistory-fail-bad-timestamp": "tatukian a suyling la’cus.",
        "mergehistory-reason": "mahicaay:",
        "mergelog": "mikabu tu nasulitan nazipa’an",
        "searchresults-title": "$1 heci nu makatepa",
        "titlematches": "kasabelih satangah matatungus",
        "textmatches": "kasabelih lacul matatungus",
+       "notextmatches": "inayi’ matatungusay a lacul nu kasabelih",
        "prevn": "ayaw saka {{PLURAL:$1|$1}}",
        "nextn": "zikuzan a cacay {{PLURAL:$1|$1}}",
        "prev-page": "ayaway a belih",
        "search-section": "(tusil $1)",
        "search-category": "(kakuniza $1)",
        "search-suggest": "u tuzu’ nu misu ku:$1 haw?",
+       "search-interwiki-caption": "yaheci namakay kakana-sabana a cwanan",
        "search-interwiki-more": "(yadah)",
        "search-interwiki-more-results": "sayadahay a heci",
        "search-relatedarticle": "mahizaay",
        "search-showingresults": "{{PLURAL:$4|saka <strong>$1</strong> a heci, pulung <strong>$3</strong>|saka <strong>$1-$2</strong> a heci, pulung <strong>$3</strong>}}",
        "search-nonefound": "nayi’ matatungusay palalitemuh tu kawaw maheciay.",
        "powersearch-legend": "tapabaw mikilim",
+       "powersearch-ns": "mikilim zikuzan pangangananay a salaedan:",
        "powersearch-togglelabel": "pipili’i:",
        "powersearch-toggleall": "hamin",
        "powersearch-togglenone": "nayi’",
        "prefs-watchlist": "miazihay a piazihan tu sulit",
        "prefs-editwatchlist": "miazihay a piazihan tu sulit nu mikawaway-kalumyiti",
        "prefs-editwatchlist-raw": "mikawaway-kalumyiti saayaway misisip a piazihan-tu-sulit",
+       "prefs-watchlist-edits-max": "makelec nikayadah:1000",
        "prefs-misc": "zuma",
        "prefs-resetpass": "misumad tu mima",
        "prefs-setemail": "setin imyiyo(email) puenengan",
        "searchresultshead": "kilim",
        "stub-threshold-sample-link": "maaziahan",
        "stub-threshold-disabled": "mapasatezep",
+       "recentchangescount": "pataayaw tu kawaw paazihay nu mikawaway-kalumyiti nikayadah:",
        "timezonelegend": "tatukian a kakitizaan:",
        "localtime": "itiniay a tuki:",
        "servertime": "sefuci-kikay a tuki:",
        "prefs-diffs": "sasizuma",
        "userrights": "tungus nu misaungayay",
        "userrights-lookup-user": "mipili’ misaungayay",
+       "userrights-user-editname": "pisuliti misaungayay a kalungangan:",
        "userrights-groupsmember": "canan a luyaluy:",
        "userrights-reason": "mahicaay:",
        "userrights-unchangeable-col": "amana kisu misumad tu luyaluy",
        "right-read": "miasip kasabelih",
        "right-edit": "kasabelih mikawaway-kalumyiti",
        "right-createtalk": "patizeng matatengil  kasabelih",
+       "right-createaccount": "patizeng baluhay misaungayay a canghaw",
        "right-move": "milimad kasabelih",
+       "right-move-subpages": "milimad kasabelih atu sailuc-kasabelih",
        "right-move-rootuserpages": "milimad tu limit misaungayay a kasabelih",
        "right-move-categorypages": "milimad kakuniza a kasabelih",
        "right-movefile": "milimad tu tangan",
        "right-upload": "patapabaw tu tangan",
+       "right-reupload-own": "mitahpu patapabaway a tangan nu misu",
        "right-writeapi": "pisaungay suliten API",
        "right-delete": "misipu tu kasabelih",
        "right-browsearchive": "mikilim masipuay a kasabelih",
        "right-undelete": "palawpes masipuay kasabelih",
+       "right-suppressionlog": "ciwsace caypabinawlan a nasulitan-nazipa’an",
        "right-unblockself": "mihulak tu ku langat nu maku",
+       "right-editcontentmodel": "mikawaway-kalumyiti kasabelih a lacul tatudungen-misanga’",
+       "right-editmyoptions": "mikawaway-kalumyiti nucimacimaay a setin tu kanamuhan",
        "right-noratelimit": "caypakasatezep nu saungayungayan",
+       "right-importupload": "nay tangan patapabaw pacumud kasabelih",
        "right-mergehistory": "mikabu kasabelih nazipa’an",
        "grant-generic": "\"$1\" tungus pulung han",
        "grant-group-page-interaction": "kasasukamu tu kasabelih",
        "grant-group-file-interaction": "kasasukamu tu myiti",
+       "grant-group-watchlist-interaction": "sakasaungay numisuay misisip a piazihan-tu-sulit",
        "grant-group-email": "pabahel imyiyo(email)",
        "grant-group-high-volume": "mileku sayadah a saungay nu binawlan",
        "grant-group-administration": "mileku tu mikuwanay a kawaw",
        "grant-editprotected": "mikawaway-kalumyiti madiputay a kasabelih",
        "grant-highvolume": "masibek mikawaway-kalumyiti",
        "grant-privateinfo": "misuped-miala madimut kasikazan a cesyun",
+       "grant-protect": "midiput atu palawpes midiput kasabelih",
        "grant-uploadfile": "patapabaw ku baluhay a tangan",
        "grant-basic": "anganganay a tungus",
        "newuserlogpage": "patizeng misaungayay nasulitan nakawawan",
        "action-createpage": "patizeng tina kasabelih",
        "action-createtalk": "patizeng tuyni katatengilan kasabelih",
        "action-createaccount": "patizeng tina misaungayay canghaw",
+       "action-history": "ciwsace tina belih a nazipa’an",
        "action-minoredit": "sacuzu’ tina mikawaway-kalumyiti ku mikilulay",
        "action-move-rootuserpages": "milimad tu limit misaungayay a kasabelih",
        "action-move-categorypages": "milimad kakuniza a kasabelih",
        "action-deleterevision": "misipu tu masumaday nu ayaway",
        "action-deletelogentry": "masipu nasulitan nazipa’an  kasacacay",
        "action-browsearchive": "mikilim masipuay a kasabelih",
+       "action-suppressrevision": "miciwsace atu patiku midimut masumad nu ayaway",
+       "action-importupload": "nay tangan patapabaw pacumud kasabelih",
        "action-mergehistory": "mikabu tina belih a nazipa’an",
        "action-sendemail": "pabahel imyiyo(email)",
+       "action-editmyoptions": "mikawaway-kalumyiti nucimacimaay a setin tu kanamuhan",
        "action-editmywatchlist": "mikawaway-kalumyiti numisu misisip a piazihan-tu-sulit",
        "action-editmyprivateinfo": "mikawaway-kalumyiti numisuay a cesyun",
+       "action-editcontentmodel": "mikawaway-kalumyiti kasabelih a lacul tatudungen-misanga’",
        "action-deletechangetags": "nay sulu nu nasulitan masipu aazihen a paya",
        "action-purge": "misipu tina kasabelih",
        "nchanges": "$1 {{PLURAL:$1|misumad}}",
        "rcfilters-filter-user-experience-level-learner-label": "mahananamay",
        "rcfilters-filtergroup-automated": "palunukay a paanin",
        "rcfilters-filter-bots-label": "kikay a tademaw",
+       "rcfilters-filter-humans-label": "tademaw (caay ku kikay-tademaw)",
        "rcfilters-filtergroup-reviewstatus": "ciwsya setyitase",
        "rcfilters-filter-patrolled-label": "tayza mikibi tuway",
        "rcfilters-filter-unpatrolled-label": "caay henay tayza mikibi",
        "rcfilters-filter-minor-label": "cayka yadah ku misumad",
        "rcfilters-filter-major-label": "caay mikilulay mikawaway-kalumyiti",
        "rcfilters-filter-watchlist-watched-label": "miazih piazihan tu sulit",
+       "rcfilters-filter-watchlist-watched-description": "misumad piazihan-tu-sulit i misisip nu misu.",
        "rcfilters-filter-watchlist-watchednew-label": "nasumadan nu baluhayay misisip a piazihan-tu-sulit",
        "rcfilters-filtergroup-changetype": "misumad nikalahizaan",
        "rcfilters-filter-pageedits-label": "mikawaway-kalumyiti nu kasabelih",
        "rcfilters-filter-newpages-label": "patizeng kasabelih",
+       "rcfilters-filter-newpages-description": "patizeng mikawaway-kalumyiti nu baluhay kasabelih.",
        "rcfilters-filter-categorization-label": "kakuniza misumad",
        "rcfilters-filter-logactions-label": "saungay a nasulitan nazipa’an",
        "rcfilters-filtergroup-lastRevision": "sabaluhay masumad",
        "filereuploadsummary": "tangan misaimed:",
        "filestatus": "nisanga’an niza tu tungus a kawaw setyitase:",
        "filesource": "saangangan:",
+       "ignorewarning": "sekipo patalaw atu misuped tu tangan",
        "ignorewarnings": "sekipo sacahamin patalaw",
+       "verification-error": "tina tangan caay kasawantan.",
        "unknown-error": "tahkal caay kapulita mungangaw.",
+       "tmp-create-error": "la’cus patizeng misinga’ tu tangan.",
        "uploadwarning": "patapabaw patalaw",
        "savefile": "misuped tu tangan",
        "uploaddisabled": "mapasatezep tu ku patapabaw",
        "uploaddisabledtext": "patapabaw tangan mapasatezep tuway.",
        "upload-source": "saangangan a tangan",
+       "upload-maxfilesize": "hacica-tabaki nu tangan makelec: $1",
        "upload-description": "tangan sapuelac",
        "upload-options": "patapabaw mapiliay",
        "watchthisupload": "miazih tina tangan",
        "upload-form-label-own-work": "uyni ku nalimaan nu maku",
        "upload-form-label-infoform-categories": "kakuniza",
        "upload-form-label-infoform-date": "demiad",
+       "backend-fail-opentemp": "la’cus miwawah misinga’ tu tangan.",
+       "backend-fail-writetemp": "la’cus misulit miasinga’ tu tangan.",
+       "backend-fail-closetemp": "la’cus miedeb misinga’ tu tangan.",
        "uploadstash": "patapabaw ku sulu nu pisipetan",
        "uploadstash-clear": "palamadac tu sulu nu tangan",
        "uploadstash-errclear": "palamadac tu tangan masepay.",
        "uploadstash-thumbnail": "ciwsace tu sukep tu zunga",
        "invalid-chunk-offset": "la’cus atilad kakitizaan",
        "img-auth-accessdenied": "kakaian misuped-miala",
+       "upload-curl-error6": "la’cus misiket tu calay-zazan(wanglu) ta URL",
        "upload-curl-error28": "patapabaw mautang",
        "license": "sapabeli tu kinli a cedang",
        "license-header": "sapabeli tu kinli a cedang",
        "linkstoimage": "isasaay {{PLURAL:$1| kasabelih  misiket |saka $1 a kasabelih misiket}}katukuh tina tangan:",
        "nolinkstoimage": "nayi’ ku kasabelih masasiket katukuh tini a tangan.",
        "sharedupload-desc-here": "kina tangan nay $1 hakay satu pisaungay tu zuma a cwanan.\nisasaay paazih kuyniay a tangan i [$2 tangan patahkal kasabelih] a patahkalay a lacul.",
+       "uploadnewversion-linktext": "patudud tina tangan nu baluhay a baziyong",
        "shared-repo-from": "nay $1",
        "shared-repo": "kapulung mizakecay a sulu nu tangan",
        "upload-disallowed-here": "la’cus kisu mitahpu tuyni a tangan.",
        "filedelete-legend": "misipu tu tangan",
        "filedelete-comment": "mahicaay:",
        "filedelete-submit": "masipu",
+       "filedelete-otherreason": "zumaay/nicunusay a mahicaay:",
        "filedelete-reason-otherlist": "zuma a mahicaay",
        "filedelete-edit-reasonlist": "masipu a mahicaay nu mikawaway-kalumyiti",
        "filedelete-maintenance-title": "la’cus masipu tu tangan",
        "apisandbox-request-selectformat-label": "paazih milunguc kalunasulitan u:",
        "apisandbox-request-format-url-label": "URL palalitemuh tu kawaw sulisulitan",
        "apisandbox-request-json-label": "milunguc JSON:",
+       "apisandbox-results-fixtoken": "misumad mima-sacukcuk sa miliyaw patayzaan",
        "apisandbox-alert-field": "la’cus tina pisinga’an a sulyang.",
        "apisandbox-continue": "palalid",
        "apisandbox-continue-clear": "palawpis",
        "log": "nasulitan nakawawan",
        "logeventslist-submit": "paazih",
        "all-logs-page": "sacahamin pabinawlan nasulitan nazipa’an",
+       "logempty": "inayi’ nasulitan-nazipa’an matatungus tu sakacucek.",
        "checkbox-select": "mipili’: $1",
        "checkbox-all": "hamin",
        "checkbox-none": "nayi’",
        "allpagessubmit": "mileku",
        "allpagesprefix": "kilul tu saayaw nu nakamuan palalitemuh tu kawaw kasabelih:",
        "allpages-hide-redirects": "midimut miliyaw patatuzu’ kasabelih",
+       "cachedspecial-refresh-now": "ciwsace sabaluhay a baziyong.",
        "categories": "kakuniza",
        "categories-submit": "paazih",
        "categoriesfrom": "paazih kakuniza miteka i:",
+       "deletedcontributions": "masipuay a misaungayay paanin",
        "linksearch": "ihekal masasiket mikilim",
        "linksearch-pat": "mikilim aazihen a sulit:",
        "linksearch-ns": "pangangananay a salaedan:",
        "linksearch-ok": "kilim",
+       "listusersfrom": "paazih misaungayay miteka nay:",
        "listusers-submit": "paazih",
        "listusers-noresult": "caykatepa misaungayay.",
        "listusers-blocked": "(malangat tuway)",
+       "activeusers-from": "paazih misaungayay miteka nay:",
        "activeusers-noresult": "caykatepa misaungayay.",
+       "activeusers-submit": "paazih misaungayay i saungay nu binawlan",
        "listgrouprights-group": "luyaluy",
        "listgrouprights-rights": "kinli",
        "listgrouprights-members": "(sakawaway piazihan tu sulit)",
        "unwatchthispage": "pahanhan miazih",
        "notanarticle": "caay ku lacul nu kasabelih",
        "watchlist-hide": "midimut",
+       "wlshowtime": "apaazihay a tuki-tenes:",
        "wlshowhideminor": "cayka yadah ku misumad",
        "wlshowhidebots": "kikay a tademaw",
        "wlshowhideliu": "napangangan a misaungayay",
        "deletionlog": "masipu nasulitan nazipa’an",
        "reverted": "patiku ayaway a baziyong",
        "deletecomment": "mahicaay:",
+       "deleteotherreason": "zumaay/nicunusay a mahicaay:",
        "deletereasonotherlist": "zuma a mahicaay",
        "rollback": "panukasan mikawaway-kalumyiti",
        "rollbacklink": "panukasan",
        "rollbacklinkcount": "patiku {{PLURAL:$1|mikawaway tu kalumyiti}}",
        "rollbackfailed": "patiku mungangaw",
+       "rollback-missingparam": "milunguc caay kataneng kasasulul aazihen a sulyang.",
+       "rollback-missingrevision": "la’cus pacumud masumad nu ayaway a kalunasulitan.",
        "sessionfailure-title": "kasasiket mungangaw",
        "changecontentmodel": "misumad lacul tatudungen misanga’",
        "changecontentmodel-title-label": "kasabelih satangahan",
        "changecontentmodel-reason-label": "mahicaay:",
        "changecontentmodel-emptymodels-title": "inayi’ ku silaheciay a lacul tatudungen-misanga",
        "protectlogpage": "midiput nasulitan nakawawan",
+       "protect-badnamespace-title": "pangangananay a salaedan amana midiput",
        "protect-legend": "malucekay tu midiputay",
        "protectcomment": "mahicaay:",
        "protectexpiry": "kakatekuhan:",
        "protect-expiring-local": "kakatekuhan katukuh i $1",
        "protect-expiry-indefinite": "inayi’ u sungliw",
        "protect-othertime": "zuma a tatukian:",
+       "protect-otherreason": "zumaay/nicunusay a mahicaay:",
        "protect-otherreason-op": "zuma a mahicaay",
        "protect-edit-reasonlist": "midiput a mahicaay nu mikawaway-kalumyiti",
        "restriction-type": "tungus:",
        "tooltip-namespace_association": "pili’en hatizaay kuyni mapili’ay atilad i yamalyilu atu mipili’ sasuala panganganan a salaedan sasukamu atu satangahan panganganan a salaedan",
        "blanknamespace": "(sausi)",
        "contributions": "{{GENDER:$1| misaungayay}}paanin tu nisulitan",
+       "contributions-title": "$1 a misaungayay a paanin",
        "mycontris": "paanin",
        "anoncontribs": "paanin",
        "uctop": "(ayza)",
        "month": "sazikuzay demiad nabuladan:",
        "year": "sazikuzay demiad mihcaan:",
+       "sp-contributions-newbies": "paazih a cacay baluhay canghaw a paanin",
        "sp-contributions-newbies-sub": "paanin nu baluhay a canghaw",
+       "sp-contributions-newbies-title": "misaungayay paanin nu baluhay canghaw",
        "sp-contributions-blocklog": "milangat tu nasulitan nakawawan",
        "sp-contributions-uploads": "patapabaw",
        "sp-contributions-logs": "nasulitan nakawawan",
        "ipbsubmit": "milangat tina misaungayay",
        "ipbother": "zuma a tatukian:",
        "ipb-confirm": "malucekay tu langat",
+       "badipaddress": "la’cusay a IP puenengan",
        "blockipsuccesssub": "milangat malahci",
        "ipb-edit-dropdown": "malangat a mahicaay nu mikawaway-kalumyiti",
        "ipb-unblock-addr": "mihulak tu langat $1",
+       "ipb-blocklist": "ciwsace katukuhayza a langat",
        "ipb-blocklist-duration-left": "$1 pakawili",
        "ipusubmit": "misipu tina langat",
        "unblocked-range": "mahulak tu ku langat $1.",
        "blocklist": "malangatay tu a misaungayay",
        "autoblocklist-submit": "kilim",
        "ipblocklist": "malangatay tu a misaungayay",
+       "ipblocklist-legend": "mikilim malangatay a misaungayay",
        "blocklist-userblocks": "midimut canghaw malangat",
        "blocklist-tempblocks": "midimut nanunuz malangat",
        "blocklist-timestamp": "demiad tatukian",
        "block-log-flags-nocreate": "canghaw patizeng mapasatezep tuway",
        "block-log-flags-noautoblock": "mapasatezep lunuk  milangat",
        "block-log-flags-noemail": "mapasatezep imyiyo(email)",
+       "block-log-flags-angry-autoblock": "pangaleb lunuk-langat mawawah tuway",
        "proxyblocker": "kutay sefuci-kikay milangat-kikay",
        "lockdb": "pamutek tu sulu nu kalunasulitan",
        "lockbtn": "pamutek tu sulu nu kalunasulitan",
        "newtitle": "baluhay satangahan:",
        "movepagebtn": "milimad kasabelih",
        "pagemovedsub": "milimad malaheci tuway",
+       "movetalk": "milimad mahizaay sasukamu kasabelih",
        "movelogpage": "milimad ku nasulitan nakawawan",
        "movereason": "mahicaay:",
        "delete_and_move_confirm": "hang, masipu tina kasabelih",
        "export": "patahkal ku kasabelih",
        "exportall": "patahkal sacahamin  kasabelih",
        "export-submit": "patahkal",
+       "export-addcattext": "pisaungay kakuniza cunusen kasabelih:",
        "export-download": "misuped sapatangan",
        "export-templates": "yamalyilu taazihan mitudung",
        "export-manual": "tiyung ku lima micunus kasabelih:",
        "allmessages-filter-translate": "mibelih",
        "thumbnail-more": "patabaki(micuwat)",
        "filemissing": "tangan mahedaw",
+       "thumbnail_error": "patizeng sukep tu zunga mungangaw: $1",
+       "thumbnail-dest-create": "la’cus misuped sukep tu zunga ta pabalucu’an",
        "thumbnail_dest_directory": "la’cus patizeng papatuzu’an a dilyikotoling",
        "thumbnail_image-type": "caypi damaenay a zunga nikalahizaan",
        "thumbnail_image-missing": "tangan mahedaw: $1",
        "import-upload-filename": "kalungangan nu tangan:",
        "import-comment": "pacunus sakacaay kapawan:",
        "import-revision-count": "$1 {{PLURAL:$1|masumad nu ayaway}}",
+       "importnopages": "inayi’ mapacumuday a kasabelih.",
+       "importunknownsource": "caykapulita a nikalahizaan nu pacumud a saangangan",
        "importcantopen": "la’cusay miwawah pacumuday a tangan",
        "importsuccess": "pahezek tuway pacumud!",
        "importnofile": "caay henay papabaw pacumud tangan.",
+       "import-upload": "patapabaw XML kalunasulitan",
        "importlogpage": "pacumuden nasulitan nazipa’an",
        "tooltip-pt-userpage": "{{GENDER:|misaungayay nu misu}} kasabelih",
        "tooltip-pt-mytalk": "{{GENDER:|misuay }}sasukamu a kasabelih",
        "pageinfo-redirectsto-info": "katinengan",
        "pageinfo-contentpage": "miasip papi lacul kasabelih",
        "pageinfo-contentpage-yes": "hang",
+       "pageinfo-protect-cascading": "namakayni miteka patatusul midiput",
        "pageinfo-protect-cascading-yes": "hang",
        "pageinfo-protect-cascading-from": "patatusul midiput namakay",
        "pageinfo-category-info": "kakuniza a cesyun",
        "pageinfo-user-id": "misaungayay ID",
        "markaspatrolleddiff": "silusi natayza mikibi tuway",
        "markedaspatrolled": "silusi natayza mikibi tuway",
+       "rcpatroldisabled": "mapasatezep tu ku capi-demiad misumad tayza-mikibi",
+       "markedaspatrollederrornotify": "silusi tayza-mikibi mungangaw.",
        "patrol-log-page": "tayza mikibi nasulitan nazipa’an",
        "log-show-hide-patrol": "$1 tayza mikibi nasulitan nazipa’an",
        "log-show-hide-tag": "$1 aazihen a paya nasulitan nazipa’an",
        "confirm-markpatrolled-button": "malucekay",
+       "deletedrevision": "masipu malumanay misumad nu ayaway $1",
        "previousdiff": "← malumanay a mikawaway tu kalumyiti",
        "nextdiff": "baluhayay mikawaway tu kalumyit →",
        "thumbsize": "sukep tu zunga hacica-tabaki:",
        "file-info-png-frames": "$1 {{PLURAL:$1|kulit sapat}}",
        "newimages": "baluhay tangan a sulu nu zunga",
        "newimages-legend": "kilim",
+       "newimages-newbies": "paazih a cacay baluhay canghaw a paanin",
        "noimages": "inayi’ amahicahica tu zunga.",
        "gallery-slideshow-toggle": "ketun mibalic sukep tu zunga",
        "ilsubmit": "kilim",
        "exif-exposureprogram": "mapaedil a muse",
        "exif-spectralsensitivity": "edil-selal saahemi’han",
        "exif-isospeedratings": "ISO suli",
+       "exif-shutterspeedvalue": "APEX kiyata a kalamkam",
        "exif-aperturevalue": "APEX edil",
        "exif-brightnessvalue": "APEX likat",
+       "exif-exposurebiasvalue": "APEX mapaedil",
        "exif-maxaperturevalue": "satabakiay a likat-mulu i lala’ nu kitakit",
        "exif-subjectdistance": "ilaed nu satangahan",
        "exif-meteringmode": "miditek tu edil a muse",
        "exif-focallength": "saed nu sapisasing",
        "exif-subjectarea": "sausi a kakitizaan",
        "exif-flashenergy": "sabelabelatay a tinghuy u icelang",
+       "exif-focalplanexresolution": "X couciaw kimpi’ katingalaw",
        "exif-focalplaneresolutionunit": "edil-sanat a sapat katingalaw  tatebanan nu nisulitan",
        "exif-subjectlocation": "kakitizaan nu satangahan",
        "exif-exposureindex": "mapaedil a sulyang",
        "exif-scenetype": "makaazihay nikalahizaan",
        "exif-customrendered": "pakuniza misanga’ iga",
        "exif-whitebalance": "sapalalen nu salengacay",
+       "exif-focallengthin35mmfilm": "35 hawmi hwyilumu saed nu sapisasing",
        "exif-scenecapturetype": "makaazihay masasing nikalahizaan",
        "exif-gaincontrol": "makaazihay misimaw",
        "exif-contrast": "e-contrast",
        "exif-gpsmeasuremode": "miditek a muse",
        "exif-gpsdop": "miditek a tatungus",
        "exif-gpsspeedref": "saduba’ kalamkam a sacacaycacay",
+       "exif-gpsspeed": "GPS pizawis-sakaluk saduba’ kalamkam",
        "exif-gpsmapdatum": "pisaungay ulaulangan miditek a kalunasulitan",
        "exif-gpsdestlatitude": "pabalucu’an a wyitu",
        "exif-gpsdestlongituderef": "pabalucu’an a cintu",
        "exif-gpsdatestamp": "GPS a demiad",
        "exif-gpsdifferential": "GPS chafen misumad",
+       "exif-jpegfilecomment": "JPEG tangan pacunus sakacaay kapawan",
        "exif-keywords": "aazihen dulit",
        "exif-worldregioncreated": "zunga masasing a kakitizaan",
        "exif-countrycreated": "zunga masasingan a kanatal",
        "exif-iimversion": "IIM baziyong",
        "exif-iimcategory": "kakuniza",
        "exif-iimsupplementalcategory": "micunus kakuniza",
+       "exif-datetimeexpires": "nuzikuz tina demiad amana pisaungay",
        "exif-datetimereleased": "patiyak i",
        "exif-originaltransmissionref": "saayaway miculu’ kakitizaan a kodo",
        "exif-identifier": "mapulitaay a kodo",
        "exif-copyrightowner": "nizaay nisanga’an tu tungus a kawaw",
        "exif-usageterms": "mamaala a cedang",
        "exif-webstatement": "nabalucu'an nu i telay nisanga’an niza tu tungus a kawaw",
+       "exif-originaldocumentid": "kinacacay mapulitaay a kodo nu saayaway a cudad",
        "exif-licenseurl": "nisanga’an niza tu tungus a kawaw pabeli tu kinli  masasiket",
        "exif-morepermissionsurl": "paliyuh pabeli tu kinli a cesyun",
        "exif-pngfilecomment": "PNG tangan pacunus sakacaay kapawan",
        "exif-giffilecomment": "GIF tangan pacunus sakacaay kapawan",
        "exif-intellectualgenre": "kasacacay nikalahizaan",
        "exif-subjectnewscode": "kodo nu satangahan",
+       "exif-scenecode": "IPTC itizaay a kodo",
        "exif-event": "sapuelac tu sikikawaw",
        "exif-organisationinimage": "sapuelac nu mikumi",
        "exif-personinimage": "sapuelac tu tademaw",
        "exif-compression-1": "caay henay piepian mipecec",
        "exif-copyrighted-true": "madiput nu nisanga’an niza tu tungus a kawaw",
        "exif-copyrighted-false": "caay kapulita nu nisanga’an niza tu tungus a kawaw setyitase",
+       "exif-photometricinterpretation-1": "lumeniay atu sangelacan (lumeniay u 0)",
        "exif-unknowndate": "caay kapulita ku demiad",
        "exif-orientation-1": "tatungus",
        "exif-orientation-2": "mabelih tu zazay",
        "exif-meteringmode-255": "zuma",
        "exif-lightsource-1": "likat",
        "exif-lightsource-2": "inkwang a tinghuy",
+       "exif-lightsource-3": "useteng-tinghuy (白熾燈)",
        "exif-lightsource-4": "sabelabelatay a tinghuy",
        "exif-lightsource-9": "cilalah a demiad",
        "exif-lightsource-10": "kenutan",
        "exif-lightsource-255": "zuma katahkalan nu likat",
        "exif-flash-fired-0": "sabelabelatay a tinghui caay henay miwawah",
        "exif-flash-fired-1": "sabelabelatay a tinghui miwawah tuway",
+       "exif-flash-return-3": "sabelabelatay sedap-sakaluk sedap tu edil",
        "exif-flash-mode-1": "pacici sabelabelatay tinghuy mawawah",
        "exif-flash-mode-2": "pacici sabelabelatay tinghuy mapaneng",
        "exif-flash-mode-3": "lunuk muse",
        "exif-flash-redeye-1": "muse nu kasatezep tu sumanahay a mata",
        "exif-focalplaneresolutionunit-2": "incun",
        "exif-sensingmethod-1": "caay henay misaheci",
+       "exif-sensingmethod-5": "malaliday a kulikulitan subal kance-kikay",
        "exif-sensingmethod-7": "tululait askance-kikay",
+       "exif-sensingmethod-8": "malaliday a kulikulitan telayan kance-kikay",
        "exif-filesource-3": "sulyangay a sasasing",
        "exif-scenetype-1": "besuc han misasingay a zunga",
        "exif-customrendered-0": "habutuday a laylay",
        "exif-gpsmeasuremode-3": "tulu-wei miditek",
        "exif-gpsspeed-k": "paytuki a kungli",
        "exif-gpsspeed-m": "paytuki a inli",
+       "exif-gpsspeed-n": "cie (hayli/cacay a tuki)",
        "exif-gpsdestdistance-k": "kungli",
        "exif-gpsdestdistance-m": "inli",
        "exif-gpsdestdistance-n": "hayli",
        "tags-create-submit": "patizeng",
        "tags-delete-title": "misipu tu aazihen a paya",
        "tags-delete-reason": "mahicaay:",
+       "tags-delete-submit": "la’cus palawpes misipu tina aazihen a paya",
        "tags-activate-title": "miteka aazihen a paya",
        "tags-activate-reason": "mahicaay:",
        "tags-activate-submit": "miteka’",
        "tags-edit-new-tags": "baluhay aazihen a paya:",
        "tags-edit-add": "micunus uyniyay aazihen a paya:",
        "tags-edit-chosen-placeholder": "mipili’ hatizaay aazihen a paya",
+       "tags-edit-chosen-no-results": "inayi’ aazihen a paya matatungus sakacucek",
        "tags-edit-reason": "mahicaay:",
        "tags-edit-success": "macaedung tu ku sasumad.",
        "comparepages": "sasutili’ay a kasabelih",
        "compare-submit": "sasutili’ay",
        "diff-form": "sasizuma",
        "permanentlink": "saluimengay misiket",
+       "dberr-info-hidden": "(la’cus misuped-miala sulu nu nasulitan)",
        "htmlform-required": "sasuliten kuyni.",
        "htmlform-submit": "patayzaan",
        "htmlform-reset": "patiku masumaday",
        "revdelete-content-hid": "madimut tu ku lacul",
        "revdelete-content-unhid": "palawpes midimut tu lacul",
        "revdelete-summary-unhid": "palawpes midimut  mikawaway-kalumyiti pecu’ nu lacul",
+       "revdelete-uname-unhid": "palawpes midimut misaungayay a kalungangan",
        "logentry-move-move": "$1 {{GENDER:$2|milimad tuway}} kasabelih $3 katukuh $4",
        "logentry-newusers-create": "{{GENDER:$2|patizeng}} misaungayay canghaw tuway $1",
        "logentry-upload-upload": "$1 {{GENDER:$2|masayacay tuway}} $3",
        "expand_templates_xml_output": "XML patahkal",
        "expand_templates_ok": "malucekay",
        "expand_templates_remove_comments": "misipu buhci tu kamu",
+       "expand_templates_generate_rawhtml": "paazih saayaway a HTML",
        "expand_templates_preview": "pataayaway miazih",
        "pagelanguage": "misumad kasabelih a kamu",
        "pagelang-language": "kamu",
        "mediastatistics-header-executable": "kapah tu mileku",
        "mediastatistics-header-archive": "piepian mipecec tuway a kese",
        "mediastatistics-header-total": "sacahamin a tangan",
+       "json-error-depth": "mangasiw tu ilabu kelec nu sakalud",
        "json-error-syntax": "sakilul nu kamu mungangaw",
        "headline-anchor-title": "misasiket tina tusil",
        "special-characters-group-latin": "u sulit nu Latin",
        "sessionprovider-generic": "$1 kasasiketan",
        "randomrootpage": "kakibalucu’ lamitay kasabelih",
        "log-action-filter-block": "milangat nikalahizaan:",
+       "log-action-filter-contentmodel": "lacul tatudungen-misanga’ misumad nikalahizaan:",
        "log-action-filter-delete": "misipu nikalahizaan:",
        "log-action-filter-import": "pacumud nikalahizaan:",
+       "log-action-filter-managetags": "nikalahizaan nu aazihen a paya mikuwanay a saungay:",
        "log-action-filter-move": "milimad nikalahizaan:",
        "log-action-filter-patrol": "tayza mikibi nikalahizaan:",
        "log-action-filter-protect": "midiput nikalahizaan:",
        "log-action-filter-managetags-delete": "misipu aazihen a paya",
        "log-action-filter-managetags-activate": "aazihen a paya miteka",
        "log-action-filter-managetags-deactivate": "aazihan-paya palawpesen ku pisaungay",
+       "log-action-filter-move-move": "milimad caay maliyaw misulit miliyaw patatuzu’",
        "log-action-filter-move-move_redir": "milimad miliyaw misulit miliyawtu tazuma nay",
        "log-action-filter-newusers-create": "nay paceba panganganay a misaungayay patizeng",
        "log-action-filter-newusers-create2": "nay pangangan misaungayay patizeng",
        "log-action-filter-upload-overwrite": "miliyaw patapabaw",
        "authmanager-authplugin-setpass-failed-title": "misumad mima mungangaw",
        "authmanager-authplugin-setpass-bad-domain": "la’cusay a calay-subal(wangyi).",
+       "authmanager-domain-help": "ihekal zencenay a calay-subal(wangyi).",
        "authmanager-email-label": "imyiyo(email)",
        "authmanager-email-help": "imyiyo(email) puenengan",
        "authmanager-realname-label": "tatengaay a ngangan",
        "authmanager-realname-help": "misaungayay tatenga’ay a ngangan",
        "authmanager-provider-temporarypassword": "nanunuz a mima",
        "authprovider-confirmlink-request-label": "manakanca masasiket tu canghaw",
+       "authprovider-confirmlink-success-line": "$1: masasiket tuway",
        "authprovider-resetpass-skip-label": "sekipo",
        "authform-newtoken": "mahedaw mima-sacukcuk. $1",
        "authform-wrongtoken": "mima-sacukcuk mungangaw",
        "specialpage-securitylevel-not-allowed-title": "amana",
+       "authpage-cannot-create": "la’cus miteka patizeng tu canghaw.",
+       "authpage-cannot-link": "la’cus miteka misiket tu canghaw.",
        "cannotauth-not-allowed-title": "caykataneng ku tungus",
        "changecredentials": "misumad tu sapangangan-wacay",
        "changecredentials-success": "masumad tuway zencen nu misu.",
index 91a386d..7b4994d 100644 (file)
        "prefs-editor": "محرر",
        "prefs-preview": "عرض مسبق",
        "prefs-advancedrc": "خيارات متقدمة",
+       "prefs-opt-out": "إلغاء الاشتراك في التحسينات",
        "prefs-advancedrendering": "خيارات متقدمة",
        "prefs-advancedsearchoptions": "خيارات متقدمة",
        "prefs-advancedwatchlist": "خيارات متقدمة",
        "uploadbtn": "ارفع الملف",
        "reuploaddesc": "إلغاء الرفع والرجوع إلى استمارة الرفع",
        "upload-tryagain": "أرسل وصف ملف معدل",
+       "upload-tryagain-nostash": "ارفع الملف المعاد رفعه والوصف المعدل",
        "uploadnologin": "غير مسجل الدخول",
        "uploadnologintext": "يجب عليك $1 لترفع الملفات.",
        "upload_directory_missing": "مجلد الرفع ($1) مفقود ولم يمكن إنشاؤه بواسطة خادوم الوب.",
        "file-deleted-duplicate-notitle": "سابقا تم حذف ملف مطابق لهذا الملف، وقد تم منع العنوان.\nينبغي أن تسأل شخص ما لديه القدرة على عرض بيانات الملف الممنوع لاستعراض الوضع قبل الشروع في إعادة تحميله.",
        "uploadwarning": "تحذير الرفع",
        "uploadwarning-text": "من فضلك عدل وصف الملف أدناه وحاول مرة أخرى.",
+       "uploadwarning-text-nostash": "من فضلك أعد رفع الملف، عدل الوصف بالأسفل وحاول مرة ثانية.",
        "savefile": "احفظ الملف",
        "uploaddisabled": "تم تعطيل الرفع",
        "copyuploaddisabled": "الرفع من مسار معطل.",
        "listfiles_size": "الحجم",
        "listfiles_description": "الوصف",
        "listfiles_count": "نسخ",
-       "listfiles-show-all": "أدرج النسخ القديمة من الصور",
+       "listfiles-show-all": "أدرج النسخ القديمة من الملفات",
        "listfiles-latestversion": "النسخة الحالية",
        "listfiles-latestversion-yes": "نعم",
        "listfiles-latestversion-no": "لا",
index 05c414b..0e92dd3 100644 (file)
        "parser-template-loop-warning": "Deteutóse un bucle de plantíes: [[$1]]",
        "template-loop-category": "Páxines con bucles de plantíes",
        "template-loop-category-desc": "Esta páxina contien un bucle de plantía, esto ye, una plantía que se llama ella mesma de mou recursivu.",
+       "template-loop-warning": "<strong>Avisu:</strong> Esta páxina llama a [[:$1]] lo que causa un ciclu infinitu de plantía (una llamada recurrente infinita).",
        "parser-template-recursion-depth-warning": "Se pasó la llende de fondura recursiva de les plantíes ($1)",
        "language-converter-depth-warning": "Se pasó la llende de fondura del convertidor de llingües ($1)",
        "node-count-exceeded-category": "Páxines onde se pasó la cuenta de noyos",
        "timezoneregion-indian": "Océanu Índicu",
        "timezoneregion-pacific": "Océanu Pacíficu",
        "allowemail": "Dexar a los otros usuarios mandate correos",
+       "email-blacklist-label": "Torgar a estos usuarios unviame correos electrónicos:",
        "prefs-searchoptions": "Buscar",
        "prefs-namespaces": "Espacios de nome",
        "default": "predetermináu",
        "prefs-editor": "Editor",
        "prefs-preview": "Vista previa",
        "prefs-advancedrc": "Opciones avanzaes",
+       "prefs-opt-out": "Borrase de los ameyoramientos",
        "prefs-advancedrendering": "Opciones avanzaes",
        "prefs-advancedsearchoptions": "Opciones avanzaes",
        "prefs-advancedwatchlist": "Opciones avanzaes",
        "rcfilters-restore-default-filters": "Restaurar los filtros predeterminaos",
        "rcfilters-clear-all-filters": "Borrar tolos filtros",
        "rcfilters-show-new-changes": "Ver los cambeos más recién",
-       "rcfilters-search-placeholder": "Filtriar los cambeos recién (restola o empieza a escribir)",
+       "rcfilters-search-placeholder": "Menú principal del filtru",
        "rcfilters-invalid-filter": "Filtru inválidu",
        "rcfilters-empty-filter": "Nun hai filtros activos. Amuésense toles contribuciones.",
        "rcfilters-filterlist-title": "Filtros",
        "rcfilters-filterlist-whatsthis": "¿Como funciona esto?",
-       "rcfilters-filterlist-feedbacklink": "Comentar sobro los nuevos filtros (beta)",
+       "rcfilters-filterlist-feedbacklink": "Dinos lo que pienses sobre estes (nueves) ferramientes de filtriáu",
        "rcfilters-highlightbutton-title": "Resaltar resultaos",
        "rcfilters-highlightmenu-title": "Seleiciona un color",
        "rcfilters-highlightmenu-help": "Seleiciona un color pa resaltar esta propiedá",
        "rcfilters-liveupdates-button": "Anovamientos nel intre",
        "rcfilters-liveupdates-button-title-on": "Apagar anovamientos en direuto",
        "rcfilters-liveupdates-button-title-off": "Amosar los cambeos de la qu'asoceden",
-       "rcfilters-watchlist-markSeen-button": "Marcar tolos cambios como vistos",
+       "rcfilters-watchlist-markseen-button": "Marcar tolos cambios como vistos",
+       "rcfilters-watchlist-edit-watchlist-button": "Edita la to llista de páxines siguíes",
+       "rcfilters-watchlist-showupdated": "Los cambeos fechos en páxines que nun visitasti desque se ficieron apaecen en <strong>negrina</strong>, con marcadores sólidos.",
+       "rcfilters-preference-label": "Tapecer la versión meyorada de Cambios recién",
+       "rcfilters-preference-help": "Revierte'l rediseñu de la interfaz de 2017 y toles ferramientes añadíes d'entós aquí.",
        "rcnotefrom": "Abaxo {{PLURAL:$5|tá'l cambiu|tan los cambios}} dende'l <strong>$3</strong>, a les <strong>$4</strong> (s'amuesen un máximu de <strong>$1</strong>).",
        "rclistfromreset": "Reaniciar la seleición de data",
        "rclistfrom": "Amosar los nuevos cambios dende'l $3 a les $2",
        "uploadbtn": "Xubir ficheru",
        "reuploaddesc": "Encaboxar la xubida y tornar al formulariu de xubíes",
        "upload-tryagain": "Unviar descripción camudada del ficheru",
+       "upload-tryagain-nostash": "Unviar el ficheru vueltu a xubir y la descripción cambiada",
        "uploadnologin": "Nun anició sesión",
        "uploadnologintext": "Tien d'$1 pa xubir ficheros.",
        "upload_directory_missing": "El direutoriu de xubida ($1) nun esiste y nun pudo crease pol sirvidor web.",
        "file-deleted-duplicate-notitle": "Un ficheru idénticu a esti desanicióse anteriormente, y suprimióse'l títulu. Tendría de pidir a dalguién que pueda ver los datos del ficheru desaniciáu que revise la situación enantes de volver a xubilu.",
        "uploadwarning": "Avisu de xubíes de ficheros",
        "uploadwarning-text": "Por favor, camuda más abaxo la descripción del ficheru y vuelve a tentalo.",
+       "uploadwarning-text-nostash": "Vuelve a unviar el ficheru, cambia la descripción más abaxo y tenta otra vuelta.",
        "savefile": "Guardar ficheru",
        "uploaddisabled": "Deshabilitaes les xubíes",
        "copyuploaddisabled": "Xubir por URL ta desactivao.",
        "listfiles_size": "Tamañu",
        "listfiles_description": "Descripción",
        "listfiles_count": "Versiones",
-       "listfiles-show-all": "Incluir les versiones antigües de les imaxes",
+       "listfiles-show-all": "Incluir les versiones antigües de los ficheros",
        "listfiles-latestversion": "Versión actual",
        "listfiles-latestversion-yes": "Sí",
        "listfiles-latestversion-no": "Non",
        "unwatchthispage": "Dexar de vixilar",
        "notanarticle": "Nun ye un artículu",
        "notvisiblerev": "Esborróse la revisión",
-       "watchlist-details": "{{PLURAL:$1|$1 páxina|$1 páxines}} na to llista de siguimientu, ensin cuntar aparte les páxines d'alderique.",
+       "watchlist-details": "{{PLURAL:$1|$1 páxina ta|$1 páxines tán}} na to llista de siguimientu (más les páxines d'alderique).",
        "wlheader-enotif": "La notificación per corréu electrónicu ta activada.",
        "wlheader-showupdated": "Les páxines que camudaron dende que les visitasti anteriormente amuesense en '''negrina'''",
        "wlnote": "Abaxo {{PLURAL:$1|tá'l caberu cambiu|tan los caberos <strong>$1</strong> cambios}} {{PLURAL:$2|na cabera hora|nes caberes <strong>$2</strong> hores}}, a día $3, a les $4.",
        "sp-contributions-newonly": "Amosar namái les ediciones que son creaciones de páxines",
        "sp-contributions-hideminor": "Despintar les ediciones menores",
        "sp-contributions-submit": "Buscar",
+       "sp-contributions-outofrange": "Nun ye posible amosar nengún resultáu. El rangu de direcciones IP solicitáu ye mayor que la llende CIDR de /$1.",
        "whatlinkshere": "Lo qu'enllaza equí",
        "whatlinkshere-title": "Páxines qu’enllacien a «$1»",
        "whatlinkshere-page": "Páxina:",
index 2cde220..60f72ea 100644 (file)
        "prefs-editor": "Рэдактар",
        "prefs-preview": "Папярэдні прагляд",
        "prefs-advancedrc": "Дадатковыя налады",
+       "prefs-opt-out": "Адмовіцца ад паляпшэньняў",
        "prefs-advancedrendering": "Дадатковыя налады",
        "prefs-advancedsearchoptions": "Дадатковыя налады",
        "prefs-advancedwatchlist": "Дадатковыя налады",
index 4a1f7be..ba79fdf 100644 (file)
        "rcfilters-invalid-filter": "Невалиден филтър",
        "rcfilters-empty-filter": "Няма активни филтри. Показани са всички редакции.",
        "rcfilters-filterlist-title": "Филтри",
-       "rcfilters-filterlist-whatsthis": "Какво е това?",
+       "rcfilters-filterlist-whatsthis": "Как работи това?",
        "rcfilters-filterlist-feedbacklink": "Оставете коментар за новите (бета) филтри",
        "rcfilters-highlightbutton-title": "Отбелязване на резултатите",
        "rcfilters-highlightmenu-title": "Изберете цвят",
        "upload-too-many-redirects": "Адресът съдържа твърде много пренасочвания",
        "upload-http-error": "Възникна HTTP грешка: $1",
        "upload-dialog-title": "Качване на файл",
-       "upload-dialog-button-cancel": "Отказване",
+       "upload-dialog-button-cancel": "Отказ",
        "upload-dialog-button-back": "Обратно",
        "upload-dialog-button-done": "Готово",
        "upload-dialog-button-save": "Съхраняване",
        "upload-form-label-own-work-message-generic-local": "Потвърждавам, че качвам този файл в съответствие с правилата и лицензионната политика на сайта {{SITENAME}}.",
        "upload-form-label-not-own-work-message-generic-local": "Ако не можете да заредите този файл в съответствие с правилата на сайта {{SITENAME}}, моля, затворете този прозорец и опитайте друг метод.",
        "upload-form-label-not-own-work-message-generic-foreign": "Ако не можете да качите този файл в съответствие с правилата на споделеното хранилище, моля, затворете този прозорец и опитайте друг метод.",
-       "backend-fail-notexists": "Файлът $1 не съществува.",
-       "backend-fail-delete": "Файлът $1 не може да бъде изтрит.",
-       "backend-fail-alreadyexists": "Файлът $1 вече съществува.",
+       "backend-fail-notexists": "Файлът „$1“ не съществува.",
+       "backend-fail-delete": "Файлът „$1“ не може да бъде изтрит.",
+       "backend-fail-alreadyexists": "Файлът „$1“ вече съществува.",
        "backend-fail-store": "Файлът „$1“ не може да бъде съхранен в „$2“.",
        "backend-fail-copy": "Файлът „$1“ не можа да бъде копиран в „$2“.",
        "backend-fail-move": "Файлът „$1“ не можа да бъде преместен в „$2“.",
        "http-curl-error": "Грешка при извличането на URL: $1",
        "http-bad-status": "Настъпи проблем по време на HTTP заявката: $1 $2",
        "upload-curl-error6": "Не е възможно достигането на указания URL адрес",
-       "upload-curl-error6-text": "Търсеният адрес не може да бъде достигнат. Проверете дали е написан вярно.",
+       "upload-curl-error6-text": "Търсеният адрес не може да бъде достигнат.\nПроверете дали е написан вярно и дали сайтът не е паднал.",
        "upload-curl-error28": "Времето за качване изтече",
        "upload-curl-error28-text": "Сайтът не отговаря твърде дълго.\nУбедете се, че сайтът работи, изчакайте малко и опитайте отново.\nВ краен случай опитайте през по-ненатоварено време.",
        "license": "Лицензиране:",
        "upload_source_file": "(файл на вашия компютър)",
        "listfiles-delete": "изтриване",
        "listfiles-summary": "Тази специална страница показва всички качени файлове.",
-       "listfiles_search_for": "Търсене по име на файла:",
+       "listfiles_search_for": "Търсене по име на файл:",
        "listfiles-userdoesnotexist": "Няма регистрирана потребителска сметка за „$1“.",
        "imgfile": "файл",
        "listfiles": "Списък на файловете",
index f1dd8b6..81879c8 100644 (file)
        "filereuploadsummary": "ফাইলের পরিবর্তনসমূহ:",
        "filestatus": "কপিরাইট অবস্থা:",
        "filesource": "উৎস:",
-       "ignorewarning": "সতরà§\8dà¦\95à§\80à¦\95রণ à¦\89পà§\87à¦\95à§\8dষা à¦\95রà§\87à¦\87 à¦«à¦¾à¦\87ল à¦¸à¦\82রà¦\95à§\8dষণ à¦\95রা à¦¹à§\8bà¦\95।",
+       "ignorewarning": "সতরà§\8dà¦\95à§\80à¦\95রণ à¦\89পà§\87à¦\95à§\8dষা à¦\95রà§\87à¦\87 à¦«à¦¾à¦\87ল à¦¸à¦\82রà¦\95à§\8dষণ à¦\95রà§\81ন",
        "ignorewarnings": "সমস্ত সতর্কীকরণ উপেক্ষা করা হোক",
        "minlength1": "ফাইলের নাম কমপক্ষে এক বর্ণের হতে হবে।",
        "illegalfilename": "\"$1\" ফাইলনামটিতে এমন কিছু ক্যারেক্টার আছে যেগুলি পাতার শিরোনামে ব্যবহার করা অবৈধ। অনুগ্রহ করে ফাইলটি নতুন করে নামকরণ করুন এবং তারপর আপলোড করার চেষ্টা করুন।",
        "export-addcat": "যোগ",
        "export-addnstext": "নামস্থান থেকে পাতা যুক্ত করুন:",
        "export-addns": "যোগ",
-       "export-download": "ফাà¦\87ল à¦¹à¦¿à¦¸à§\87বà§\87 à¦¸à¦\82রà¦\95à§\8dষণ à¦\95রা à¦¹à§\8bà¦\95",
+       "export-download": "ফাà¦\87ল à¦¹à¦¿à¦¸à§\87বà§\87 à¦¸à¦\82রà¦\95à§\8dষণ à¦\95রà§\81ন",
        "export-templates": "টেমপ্লেট অন্তর্ভুক্তি",
        "export-pagelinks": "সম্পর্কিত পাতাগুলো এই ধাপ পর্যন্ত যুক্ত করো:",
        "export-manual": "হাতেকরে পাতা যোগ করুন:",
index 44fc40c..2ac73f3 100644 (file)
        "tooltip-save": "Uložit vaše změny",
        "tooltip-publish": "Zveřejnit vaše změny",
        "tooltip-preview": "Zobrazit náhled vašich změn; prosíme, zobrazte si ho před uložením!",
-       "tooltip-diff": "Zobrazit, jaké změny jste v textu provedli",
+       "tooltip-diff": "Zobrazit změny, které jste v textu provedli",
        "tooltip-compareselectedversions": "Podívat se na rozdíly mezi dvěma vybranými verzemi této stránky.",
        "tooltip-watch": "Přidat stránku do seznamu sledovaných",
        "tooltip-watchlistedit-normal-submit": "Odstranit položky",
index 972a1ff..083b61a 100644 (file)
        "rcfilters-restore-default-filters": "Standardfilter wiederherstellen",
        "rcfilters-clear-all-filters": "Alle Filter löschen",
        "rcfilters-show-new-changes": "Neueste Änderungen ansehen",
-       "rcfilters-search-placeholder": "Hauptfiltermenü",
+       "rcfilters-search-placeholder": "Letzte Änderungen filtern (durchsuchen oder beginne mit der Eingabe)",
        "rcfilters-invalid-filter": "Ungültiger Filter",
        "rcfilters-empty-filter": "Keine aktiven Filter. Es werden alle Beiträge angezeigt.",
        "rcfilters-filterlist-title": "Filter",
index 1d6e1ff..47e6205 100644 (file)
        "rcfilters-restore-default-filters": "Restore default filters",
        "rcfilters-clear-all-filters": "Clear all filters",
        "rcfilters-show-new-changes": "View newest changes",
-       "rcfilters-search-placeholder": "Main filter menu",
+       "rcfilters-search-placeholder": "Filter recent changes (browse or start typing)",
        "rcfilters-invalid-filter": "Invalid filter",
        "rcfilters-empty-filter": "No active filters. All contributions are shown.",
        "rcfilters-filterlist-title": "Filters",
index a1bb68b..3ad37f4 100644 (file)
        "modifiedarticleprotection": "\"[[$1]]\"(r)en babes maila aldatu da",
        "unprotectedarticle": "\"[[$1]]\"-(r)i babesa kendu zaio",
        "movedarticleprotection": "babes hobespenak «[[$2]]» orritik «[[$1]]» orrira aldatu dira",
+       "unprotectedarticle-comment": "{{GENDER:$2|administratzaileak}} babesa kendu dio «[[$1]]» orriari",
        "protect-title": "«$1» babesten",
        "protect-title-notallowed": "\"$1\"en babes maila ikusi",
        "prot_1movedto2": "«[[$1]]» orria «[[$2]]» izenera aldatu da",
        "logentry-newusers-create2": "$1 wikilariak $3 erabiltzaile kontua {{GENDER:$2|sortu}} du",
        "logentry-newusers-byemail": "$1(e)k $3 erabiltzaile kontua {{GENDER:$2|sortu du}} eta pasahitza emailez bidali da",
        "logentry-newusers-autocreate": "$1 erabiltzaile kontua automatikoki {{GENDER:$2|sortu da}}",
+       "logentry-protect-unprotect": "$1 {{GENDER:$2|administratzaileak}} babesa kendu dio «$3» orriari",
        "logentry-upload-upload": "$1(e)k $3 {{GENDER:$2|igo du}}",
        "logentry-upload-overwrite": "$1(e)k $3(r)en bertsio berria {{GENDER:$2|igo du}}",
        "logentry-upload-revert": "$1(e)k $3 {{GENDER:$2|igo du}}",
index d0db1c0..960dae7 100644 (file)
        "prefs-editor": "Éditeur",
        "prefs-preview": "Aperçu",
        "prefs-advancedrc": "Options avancées",
+       "prefs-opt-out": "Refuser les améliorations",
        "prefs-advancedrendering": "Options avancées",
        "prefs-advancedsearchoptions": "Options avancées",
        "prefs-advancedwatchlist": "Options avancées",
index bc33cb3..6cfe56f 100644 (file)
        "rcfilters-restore-default-filters": "שחזור למסנני ברירת המחדל",
        "rcfilters-clear-all-filters": "מחיקת כל המסננים",
        "rcfilters-show-new-changes": "הצגת השינויים החדשים ביותר",
-       "rcfilters-search-placeholder": "תפר×\99×\98 ×\94×\9eסננ×\99×\9d ×\94ר×\90ש×\99",
+       "rcfilters-search-placeholder": "ס×\99× ×\95×\9f ×©×\99× ×\95×\99×\99×\9d ×\90×\97ר×\95× ×\99×\9d (×¢×\99×\99× ×\95 ×\90×\95 ×\94ת×\97×\99×\9c×\95 ×\9c×\94ק×\9c×\99×\93)",
        "rcfilters-invalid-filter": "מסנן בלתי־תקין",
        "rcfilters-empty-filter": "אין מסננים פעילים. כל התרומות מוצגות.",
        "rcfilters-filterlist-title": "מסננים",
index d5fce20..cbccd2d 100644 (file)
@@ -29,7 +29,8 @@
                        "Macofe",
                        "Kareyac",
                        "Irus",
-                       "Narek"
+                       "Narek",
+                       "23artashes"
                ]
        },
        "tog-underline": "ընդգծել հղումները՝",
        "size-kilobytes": "$1 ԿԲ",
        "size-megabytes": "$1 ՄԲ",
        "size-gigabytes": "$1 ԳԲ",
-       "lag-warn-normal": "Õ\8eÕ¥Ö\80Õ»Õ«Õ¶ $1 Õ¾Õ¡ÕµÖ\80Õ¯ÕµÕ¡Õ¶Õ« Õ¨Õ¶Õ©Õ¡Ö\81Ö\84Õ¸Ö\82Õ´ Õ¯Õ¡Õ¿Õ¡Ö\80Õ¾Õ¡Õ® Ö\83Õ¡Ö\83Õ¡խությունները հնարավոր է չլինեն այս ցանկում։",
+       "lag-warn-normal": "Õ\8eÕ¥Ö\80Õ»Õ«Õ¶ $1 Õ¾Õ¡ÕµÖ\80Õ¯ÕµÕ¡Õ¶Õ« Õ¨Õ¶Õ©Õ¡Ö\81Ö\84Õ¸Ö\82Õ´ Õ¯Õ¡Õ¿Õ¡Ö\80Õ¾Õ¡Õ® Ö\83Õ¸Ö\83Õ¸խությունները հնարավոր է չլինեն այս ցանկում։",
        "lag-warn-high": "Տվյալների բազայի մեծ հապաղման պատճառով վերջին $1 {{PLURAL:$1|վայրկյանում|վայրկյանում}} կատարված խմբագրումները հնարավոր է չերևան այս ցանկում։",
        "watchlistedit-normal-title": "Հսկացանկի խմբագրում",
        "watchlistedit-normal-legend": "Հեռացնել անվանումները հսկացանկից",
index e0322d4..816f9fd 100644 (file)
        "protect_change": "cambia",
        "unprotect": "Cambia la protezione",
        "newpage": "Nuova pagina",
-       "talkpagelinktext": "Discussione",
+       "talkpagelinktext": "discussione",
        "specialpage": "Pagina speciale",
        "personaltools": "Strumenti personali",
        "talk": "Discussione",
        "rcfilters-filter-watchlist-watchednew-description": "Modifiche alle pagine nei osservati speciali che non hai visitato dopo la modifica.",
        "rcfilters-filter-watchlist-notwatched-label": "Non negli osservati speciali",
        "rcfilters-filter-watchlist-notwatched-description": "Tutto tranne le pagine nei tuoi osservati speciali.",
+       "rcfilters-filtergroup-watchlistactivity": "Attività negli osservati speciali",
+       "rcfilters-filter-watchlistactivity-unseen-label": "Modifiche non ancora viste",
+       "rcfilters-filter-watchlistactivity-unseen-description": "Modifiche alle pagine che non hai ancora visitato da quando le modifiche sono avvenute.",
+       "rcfilters-filter-watchlistactivity-seen-label": "Modifiche già viste",
        "rcfilters-filtergroup-changetype": "Tipo di modifica",
        "rcfilters-filter-pageedits-label": "Modifiche alle pagine",
        "rcfilters-filter-pageedits-description": "Modifiche al contenuto wiki, discussioni, descrizioni categoria…",
        "rcfilters-view-namespaces-tooltip": "Filtra risultati per namespace",
        "rcfilters-view-tags-tooltip": "Filtra risultati per etichette di modifica",
        "rcfilters-view-return-to-default-tooltip": "Torna al menu filtri principale",
+       "rcfilters-watchlist-markseen-button": "Segna tutte le modifiche come già viste",
        "rcfilters-watchlist-edit-watchlist-button": "Modifica il tuo elenco di pagine osservate",
+       "rcfilters-watchlist-showupdated": "Le modifiche alle pagine che non hai ancora visitato da quando le modifiche sono avvenute, vengono evidenziate in <strong>grassetto</strong> e con dei pallini pieni.",
        "rcfilters-preference-label": "Nascondi la versione migliorata delle ultime modifiche",
        "rcfilters-preference-help": "Ripristina la riprogettazione dell'interfaccia 2017 e tutti gli strumenti aggiunti allora e da allora.",
        "rcnotefrom": "Di seguito {{PLURAL:$5|è elencata la modifica apportata|sono elencate le modifiche apportate}} a partire da <strong>$3, $4</strong> (mostrate fino a <strong>$1</strong>).",
index 0ba17b7..eb1edc7 100644 (file)
        "index-category": "検索エンジンに収集されるページ",
        "noindex-category": "検索エンジンに収集されないページ",
        "broken-file-category": "壊れたファイルへのリンクがあるページ",
+       "categoryviewer-pagedlinks": "($1) ($2)",
+       "category-header-numerals": "$1–$2",
        "about": "解説",
        "article": "本文",
        "newwindow": "(新しいウィンドウで開きます)",
        "versionrequired": "MediaWiki のバージョン $1 が必要",
        "versionrequiredtext": "このページの使用にはMediaWiki バージョン $1 が必要です。\n[[Special:Version|バージョン情報]]をご覧ください。",
        "ok": "OK",
+       "pagetitle": "$1 - {{SITENAME}}",
+       "pagetitle-view-mainpage": "{{SITENAME}}",
+       "backlinksubtitle": "← $1",
        "retrievedfrom": "「$1」から取得",
        "youhavenewmessages": "$1が{{PLURAL:$3|あります}} ($2)。",
        "youhavenewmessagesfromusers": "{{PLURAL:$3|他の利用者|$3 人の利用者}}からの$1が{{PLURAL:$4|あります}} ($2)。",
        "template-semiprotected": "(半保護)",
        "hiddencategories": "このページは {{PLURAL:$1|$1 個の隠しカテゴリ}}に属しています:",
        "edittools": "<!-- ここに書いたテキストは編集およびアップロードのフォームの下に表示されます。 -->",
+       "edittools-upload": "-",
        "nocreatetext": "{{SITENAME}}ではページの新規作成を制限しています。\n元のページに戻って既存のページを編集するか、[[Special:UserLogin|ログインまたはアカウント作成]]をしてください。",
        "nocreate-loggedin": "新しいページを作成する権限がありません。",
        "sectioneditnotsupported-title": "節単位編集はサポートされていません",
        "content-model-text": "プレーンテキスト",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "content-model-json": "JSON",
        "content-json-empty-object": "空のオブジェクト",
        "content-json-empty-array": "空の配列",
        "deprecated-self-close-category": "無効な自己終了HTMLタグを使用しているページ",
        "mergehistory-comment": "[[:$1]]を[[:$2]]に統合: $3",
        "mergehistory-same-destination": "統合元と統合先のページを同じにはできません",
        "mergehistory-reason": "理由:",
+       "mergehistory-revisionrow": "$1 ($2) $3 . . $4 $5 $6",
        "mergelog": "統合記録",
        "revertmerge": "統合解除",
        "mergelogpagetext": "以下は、最近行われたあるページから別のページへの統合の一覧です。",
        "userrights-changeable-col": "変更できるグループ",
        "userrights-unchangeable-col": "変更できないグループ",
        "userrights-irreversible-marker": "$1*",
+       "userrights-no-shorten-expiry-marker": "$1#",
        "userrights-expiry-current": "期限 $1",
        "userrights-expiry-none": "無期限",
        "userrights-expiry": "有効期限:",
        "action-deletechangetags": "データベースからタグの削除",
        "action-purge": "このページのキャッシュ破棄",
        "nchanges": "$1 {{PLURAL:$1|回の変更}}",
+       "ntimes": "$1×",
        "enhancedrc-since-last-visit": "最終閲覧以降 $1 {{PLURAL:$1|件}}",
        "enhancedrc-history": "履歴",
        "recentchanges": "最近の更新",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|新しいページ一覧]]も参照)",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "表示",
+       "rcfilters-tag-remove": "「$1」を除去",
        "rcfilters-legend-heading": "<strong>略語のリスト:</strong>",
        "rcfilters-group-results-by-page": "ページごとにまとめて表示",
        "rcfilters-grouping-title": "グループ化",
        "apisandbox-request-selectformat-label": "リクエストデータを次の形式で表示",
        "apisandbox-request-format-url-label": "URLクエリ文字列",
        "apisandbox-request-url-label": "リクエスト URL:",
+       "apisandbox-request-format-json-label": "JSON",
        "apisandbox-request-json-label": "JSONリクエスト:",
        "apisandbox-request-time": "リクエスト時間: {{PLURAL:$1|$1ミリ秒}}",
        "apisandbox-results-fixtoken": "トークンを訂正して再送信",
        "listgrants": "権限群",
        "listgrants-grant": "権限群名",
        "listgrants-rights": "権限",
+       "listgrants-grant-display": "$1 <code>($2)</code>",
        "trackingcategories": "追跡用カテゴリ",
        "trackingcategories-summary": "このページでは、MediaWiki ソフトウェアが自動的に追加した追跡用カテゴリを列挙します。これらの名前は、{{ns:8}} 名前空間内の対応するシステム メッセージを修正することで変更できます。",
        "trackingcategories-msg": "追跡用カテゴリ",
        "emailuserfooter": "このメールは$1から{{GENDER:$2|$2}}へ、{{SITENAME}}の「{{int:emailuser}}」機能で{{GENDER:$1|送信}}されました。返信する場合は、{{GENDER:$2|あなた}}からのメールは{{GENDER:$1|もとの送信者}}に直接送信され、{{GENDER:$2|あなたの}}メールアドレスは{{GENDER:$2|返信先}}に開示されます。",
        "usermessage-summary": "システムメッセージを残す。",
        "usermessage-editor": "システムメッセンジャー",
+       "usermessage-template": "MediaWiki:UserMessage",
        "watchlist": "ウォッチリスト",
        "mywatchlist": "ウォッチリスト",
        "watchlistfor2": "利用者: $1 $2",
        "enotif_lastdiff": "この変更内容を表示するには、 $1 をご覧ください。",
        "enotif_anon_editor": "匿名利用者 $1",
        "enotif_body": "$WATCHINGUSERNAMEさん\n\n$PAGEINTRO $NEWPAGE\n\n編集内容の要約: $PAGESUMMARY ($PAGEMINOREDIT)\n\n投稿者の連絡先:\nメール: $PAGEEDITOR_EMAIL\nウィキ: $PAGEEDITOR_WIKI\n\nログインした状態でこのページを訪れない限り、これ以上の活動に対する通知は送信されません。ウォッチリスト内のすべてのページについて、通知を再設定することもできます。\n\n{{SITENAME}}通知システム\n\n--\nメール通知の設定は、以下のページで変更してください:\n{{canonicalurl:{{#special:Preferences}}}}\n\nウォッチリストの設定は、以下のページで変更してください:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nこのページは、以下のページでウォッチリストから削除できます:\n$UNWATCHURL\n\nご意見、お問い合わせ:\n$HELPPAGE",
+       "enotif_minoredit": "細部の編集",
        "created": "作成",
        "changed": "変更",
        "deletepage": "ページを削除",
        "undelete-error-long": "ファイルの復元中にエラーが発生しました:\n\n$1",
        "undelete-show-file-confirm": "ファイル「<nowiki>$1</nowiki>」の削除された$2$3の版を本当に閲覧しますか?",
        "undelete-show-file-submit": "はい",
+       "undelete-revision-row2": "$1 ($2) $3 . . $4 $5 $6 $7 $8",
        "namespace": "名前空間:",
        "invert": "選択したものを除く",
        "tooltip-invert": "選択した名前空間 (チェックを入れている場合は、関連付けられた名前空間も含む) のページの変更を非表示にするには、このボックスにチェックを入れる",
        "tooltip-preferences-save": "設定を保存する",
        "tooltip-summary": "短い要約を入力してください",
        "interlanguage-link-title": "$2: $1",
+       "interlanguage-link-title-nonlang": "$1 – $2",
        "common.css": "/* ここに記述したCSSはすべての外装に反映されます */",
        "print.css": "/* ここに記述したCSSは印刷出力に影響します */",
        "noscript.css": "/* ここに記述したCSSはJavaScriptを無効にしている利用者に影響します */",
        "variantname-shi-tfng": "シルハ語 (ティフィナグ文字)",
        "variantname-shi-latn": "シルハ語 (ラテン文字)",
        "variantname-shi": "シルハ語",
+       "variantname-uz": "uz",
+       "variantname-uz-latn": "uz-Latn",
+       "variantname-uz-cyrl": "uz-Cyrl",
        "metadata": "メタデータ",
        "metadata-help": "このファイルには、追加情報があります (おそらく、作成やデジタル化する際に使用したデジタルカメラやスキャナーが追加したものです)。\nこのファイルが元の状態から変更されている場合、修正されたファイルを完全に反映していない項目がある場合があります。",
        "metadata-expand": "拡張項目を表示",
        "metadata-collapse": "拡張項目を非表示",
        "metadata-fields": "このメッセージで列挙している画像メタデータフィールドは、メタデータ表を折り畳んだ状態のときに画像ページに読み込まれます。\n他のものは既定では非表示です。\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-langitem": "<strong>$2:</strong> $1",
+       "metadata-langitem-default": "$1",
        "exif-imagewidth": "画像の幅",
        "exif-imagelength": "画像の高さ",
        "exif-bitspersample": "画像のビットの深さ",
        "exif-exposuretime": "露出時間",
        "exif-exposuretime-format": "$1秒 ($2)",
        "exif-fnumber": "F値",
+       "exif-fnumber-format": "f/$1",
        "exif-exposureprogram": "露出プログラム",
        "exif-spectralsensitivity": "スペクトル感度",
        "exif-isospeedratings": "ISO 感度",
        "exif-lightsource": "光源",
        "exif-flash": "フラッシュ",
        "exif-focallength": "レンズ焦点距離",
+       "exif-focallength-format": "$1 ミリ",
        "exif-subjectarea": "被写体領域",
        "exif-flashenergy": "フラッシュ強度",
        "exif-focalplanexresolution": "焦点面の幅の解像度",
        "exif-gpsareainformation": "測位地点の名称",
        "exif-gpsdatestamp": "GPS日付",
        "exif-gpsdifferential": "GPS補正測位",
+       "exif-coordinate-format": "$4$1度$2分$3秒",
        "exif-jpegfilecomment": "JPEGファイルのコメント",
        "exif-keywords": "キーワード",
        "exif-worldregioncreated": "写真が撮影された大陸/地域",
        "exif-personinimage": "映っている人物",
        "exif-originalimageheight": "トリミングされる前の画像の高さ",
        "exif-originalimagewidth": "トリミングされる前の画像の幅",
+       "exif-contact-value": "$1\n\n$2\n<div class=\"adr\">\n$3\n\n$4, $5, $6 $7\n</div>\n$8",
+       "exif-subjectnewscode-value": "$2 ($1)",
        "exif-compression-1": "無圧縮",
        "exif-compression-2": "CCITT Group 3 1次元修正ハフマン連長符号化",
        "exif-compression-3": "CCITT Group 3 ファックス符号化",
        "exif-compression-4": "CCITT Group 4 ファックス符号化",
+       "exif-compression-5": "LZW",
        "exif-compression-6": "JPEG (旧式)",
+       "exif-compression-7": "JPEG",
+       "exif-compression-8": "Deflate (Adobe)",
+       "exif-compression-32773": "PackBits (Macintosh RLE)",
+       "exif-compression-32946": "Deflate (PKZIP)",
+       "exif-compression-34712": "JPEG2000",
        "exif-copyrighted-true": "著作権あり",
        "exif-copyrighted-false": "著作権情報未設定",
        "exif-photometricinterpretation-0": "黒と白(白が0です)",
        "exif-photometricinterpretation-1": "黒と白(黒が0)",
+       "exif-photometricinterpretation-2": "RGB",
+       "exif-photometricinterpretation-3": "Palette",
+       "exif-photometricinterpretation-5": "Separated (Probably CMYK)",
+       "exif-photometricinterpretation-6": "YCbCr",
+       "exif-photometricinterpretation-8": "CIE L*a*b*",
        "exif-photometricinterpretation-9": "CIE L*a*b* (ICC エンコード)",
        "exif-photometricinterpretation-10": "CIE L*a*b* (ITU エンコード)",
        "exif-photometricinterpretation-32803": "カラーフィルター配列",
        "exif-planarconfiguration-2": "面順次フォーマット",
        "exif-xyresolution-i": "$1dpi",
        "exif-xyresolution-c": "$1dpc",
+       "exif-colorspace-1": "sRGB",
        "exif-colorspace-65535": "その他",
        "exif-componentsconfiguration-0": "存在しない",
+       "exif-componentsconfiguration-1": "Y",
+       "exif-componentsconfiguration-2": "Cb",
+       "exif-componentsconfiguration-3": "Cr",
+       "exif-componentsconfiguration-4": "R",
+       "exif-componentsconfiguration-5": "G",
+       "exif-componentsconfiguration-6": "B",
        "exif-exposureprogram-0": "未定義",
        "exif-exposureprogram-1": "マニュアル",
        "exif-exposureprogram-2": "ノーマルプログラム",
        "exif-lightsource-17": "標準光A",
        "exif-lightsource-18": "標準光B",
        "exif-lightsource-19": "標準光C",
+       "exif-lightsource-20": "D55",
+       "exif-lightsource-21": "D65",
+       "exif-lightsource-22": "D75",
+       "exif-lightsource-23": "D50",
        "exif-lightsource-24": "ISOスタジオタングステン",
        "exif-lightsource-255": "その他の光源",
        "exif-flash-fired-0": "フラッシュ発光せず",
        "exif-dc-type": "メディアの種類",
        "exif-rating-rejected": "却下",
        "exif-isospeedratings-overflow": "65535より大きい",
+       "exif-maxaperturevalue-value": "$1 APEX (f/$2)",
        "exif-iimcategory-ace": "芸術、文化、娯楽",
        "exif-iimcategory-clj": "犯罪と法律",
        "exif-iimcategory-dis": "災害、事故",
        "colon-separator": ":&#32;",
        "pipe-separator": "&#32;|&#32;",
        "word-separator": "&#32;",
+       "ellipsis": "…",
+       "percent": "$1%",
        "parentheses": "($1)",
+       "brackets": "[$1]",
        "quotation-marks": "「$1」",
        "imgmultipageprev": "←前ページ",
        "imgmultipagenext": "次ページ→",
        "imgmultigo": "表示",
        "imgmultigoto": "ページ$1に移動",
+       "img-lang-opt": "$2 ($1)",
        "img-lang-default": "(既定の言語)",
        "img-lang-info": "この画像を $1 で描画する。$2",
        "img-lang-go": "実行",
        "hebrew-calendar-m11-gen": "アブ",
        "hebrew-calendar-m12-gen": "エルール",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|トーク]])",
+       "timezone-utc": "UTC",
        "timezone-local": "ローカル",
        "duplicate-defaultsort": "<strong>警告:</strong> 既定のソートキー「$2」が、その前に書かれている既定のソートキー「$1」を上書きしています。",
        "duplicate-displaytitle": "<strong>警告:</strong> DISPLAYTITLE「$2」が、その前に書かれているDISPLAYTITLE「$1」を上書きしています。",
        "version-parserhooks": "構文解析フック",
        "version-variables": "変数",
        "version-antispam": "スパム対策",
+       "version-api": "API",
        "version-other": "その他",
        "version-mediahandlers": "メディアハンドラー",
        "version-hooks": "フック",
        "limitreport-walltime": "実時間",
        "limitreport-walltime-value": "$1 {{PLURAL:$1|秒}}",
        "limitreport-ppvisitednodes": "プリプロセッサが訪問したノード数",
+       "limitreport-ppvisitednodes-value": "$1/$2",
        "limitreport-ppgeneratednodes": "プリプロセッサが生成したノード数",
+       "limitreport-ppgeneratednodes-value": "$1/$2",
        "limitreport-postexpandincludesize": "参照読み込みの展開後のサイズ",
        "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|バイト}}",
        "limitreport-templateargumentsize": "テンプレート引数のサイズ",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|バイト}}",
        "limitreport-expansiondepth": "展開の最大深さ",
+       "limitreport-expansiondepth-value": "$1/$2",
        "limitreport-expensivefunctioncount": "高負荷パーサー関数の数",
+       "limitreport-expensivefunctioncount-value": "$1/$2",
        "expandtemplates": "テンプレートを展開",
        "expand_templates_intro": "この特別ページは、入力したテキストに含まれるすべてのテンプレートを再帰的に展開します。\n<code><nowiki>{{</nowiki>#language:…}}</code> のようなパーサー関数や、\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code> のような変数も展開します。\nつまり、二重中括弧で囲まれたものほぼすべてを展開します。",
        "expand_templates_title": "{{FULLPAGENAME}} などで使用するページ名:",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>無効</strong>)",
        "mediastatistics": "メディア統計",
        "mediastatistics-summary": "アップロードされたファイルの種類に関する統計です。これはファイルの最新バージョンのみを含みます。以前のまたは削除されたバージョンについては除外されています。",
+       "mediastatistics-nfiles": "$1 ($2%)",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 バイト}} ($2; $3%)",
        "mediastatistics-bytespertype": "このセクションの総ファイルサイズは {{PLURAL:$1|$1 バイト}} ($2、$3%) です。",
        "mediastatistics-allbytes": "全ファイルの総ファイルサイズは {{PLURAL:$1|$1 バイト}} ($2) です。",
        "mediastatistics-header-text": "テキスト",
        "mediastatistics-header-executable": "実行ファイル",
        "mediastatistics-header-archive": "圧縮フォーマット",
+       "mediastatistics-header-3d": "3D",
        "mediastatistics-header-total": "すべてのファイル",
        "json-warn-trailing-comma": "JSON の末尾の{{PLURAL:$1|カンマ $1 個}}を除去しました",
        "json-error-unknown": "JSON に問題点がありました。エラー: $1",
        "special-characters-title-emdash": "em ダッシュ",
        "special-characters-title-minus": "マイナス記号",
        "mw-widgets-dateinput-no-date": "日付未選択",
+       "mw-widgets-dateinput-placeholder-day": "YYYY-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "YYYY-MM",
        "mw-widgets-mediasearch-input-placeholder": "メディアを検索",
        "mw-widgets-mediasearch-noresults": "見つかりませんでした。",
        "mw-widgets-titleinput-description-new-page": "ページは存在しません",
        "authmanager-provider-password-domain": "パスワードおよびドメインベースの認証",
        "authmanager-provider-temporarypassword": "仮パスワード",
        "authprovider-confirmlink-message": "最近のログイン試行に基づいて、以下のアカウントはあなたのウィキのアカウントに関連付けできます。関連付けることで、各々のアカウントを経由してログインすることを可能にします。関連付けるアカウントを選択してください。",
+       "authprovider-confirmlink-option": "$1 ($2)",
        "authprovider-confirmlink-request-label": "関連付けるアカウント",
        "authprovider-confirmlink-success-line": "$1: 関連付けが完了しました。",
+       "authprovider-confirmlink-failed-line": "$1: $2",
        "authprovider-confirmlink-failed": "アカウントの関連付けは完了されませんでした: $1",
        "authprovider-confirmlink-ok-help": "関連付けのエラーメッセージが表示された後に続行します。",
        "authprovider-resetpass-skip-label": "スキップ",
index cf6b274..f8017dd 100644 (file)
        "rcfilters-filter-categorization-description": "Cathethan ngenani mlebu-metuné kaca saka kategori.",
        "rcfilters-filter-logactions-label": "Tumindak njeron log",
        "rcfilters-filter-logactions-description": "Tumindak administratif, gawéan akun, busakan kaca, unggahan....",
-       "rcfilters-filtergroup-lastRevision": "Owahan pungkasan",
-       "rcfilters-filter-lastrevision-label": "Owahan pungkasan",
-       "rcfilters-filter-lastrevision-description": "Owahan paling anyar tumrap kaca.",
-       "rcfilters-filter-previousrevision-label": "Owahan-owahan dhisik",
-       "rcfilters-filter-previousrevision-description": "Kabèh owahan sing dudu sing anyar dhéwé tumrap kaca.",
+       "rcfilters-filtergroup-lastRevision": "Révisi pungkasan",
+       "rcfilters-filter-lastrevision-label": "Révisi pungkasan",
+       "rcfilters-filter-lastrevision-description": "Mung owahan paling anyar marang kacané.",
+       "rcfilters-filter-previousrevision-label": "Dudu révisi pungkasan",
+       "rcfilters-filter-previousrevision-description": "Kabèh owahan sing dudu \"révisi pungkasan\".",
        "rcnotefrom": "Ing ngisor iki {{PLURAL:$5|owah-owahan}} kawit <strong>$3, $4</strong> (sing kapacak nganti <strong>$1</strong> owah-owahan).",
        "rclistfrom": "Tuduhaké owah-owahan anyar kawit $2, $3",
        "rcshowhideminor": "$1 besutan cilik",
        "newpageletter": "A",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|cacahé sing ngawasi|cacahé sing ngawasi}}]",
-       "rc_categories": "Watesana nganti kategori (dipisah karo \"|\")",
-       "rc_categories_any": "Apa waé",
+       "rc_categories": "Watesi tekan kategori (dipisah nganggo \"|\")",
+       "rc_categories_any": "Apa waé sing dipilih",
        "rc-change-size-new": "$1 {{PLURAL:$1|bét|bét}} sawisé diowah",
        "newsectionsummary": "/* $1 */ pérangan anyar",
        "rc-enhanced-expand": "Tuduhaké princèn",
index e5cf90e..ac06f59 100644 (file)
        "rcfilters-restore-default-filters": "기본 필터 복구",
        "rcfilters-clear-all-filters": "필터 모두 지우기",
        "rcfilters-show-new-changes": "최신 변경사항 보기",
-       "rcfilters-search-placeholder": "í\95\84í\84° ìµ\9cê·¼ ë°\94ë\80\9c (ì°¾ì\95\84ë³´ê±°ë\82\98 ì\9e\85ë ¥ì\9d\84 ì\8b\9cì\9e\91í\95\98ì\8b­ì\8b\9cì\98¤)",
+       "rcfilters-search-placeholder": "í\95\84í\84° ìµ\9cê·¼ ë°\94ë\80\9c (ì°¾ì\95\84ë³´ê±°ë\82\98 ì\9e\85ë ¥ì\9d\84 ì\8b\9cì\9e\91í\95\98ì\84¸ì\9a\94)",
        "rcfilters-invalid-filter": "유효하지 않은 필터",
        "rcfilters-empty-filter": "활성화된 필터가 없습니다. 모든 기여가 표시됩니다.",
        "rcfilters-filterlist-title": "필터",
index 43f900f..019b42e 100644 (file)
        "rcfilters-restore-default-filters": "Standardfiltere restauréieren",
        "rcfilters-clear-all-filters": "All Filteren eidelmaachen",
        "rcfilters-show-new-changes": "Rezentst Ännerunge weisen",
-       "rcfilters-search-placeholder": "Rezent Ännerunge filteren (duerchsichen oder ufänke mat tippen)",
+       "rcfilters-search-placeholder": "Rezent Ännerunge filteren (navigéieren oder ufänke mat tippen)",
        "rcfilters-invalid-filter": "Net valabele Filter",
        "rcfilters-empty-filter": "Keen aktive Filter. All Kontributioune gi gewisen.",
        "rcfilters-filterlist-title": "Filteren",
index 41cc8a4..20914f4 100644 (file)
        "diff-multi-sameuser": "({{PLURAL:$1|Un revisa|$1 revisas}} media par la mesma usor no es mostrada)",
        "diff-multi-otherusers": "({{PLURAL:$1|Un revisa|$1 revisas}} media par {{PLURAL:$2|un otra usor|$2 usores}} no es mostrada)",
        "diff-multi-manyusers": "({{PLURAL:$1|Un revisa|$1 revisas}} media par plu ca $2 {{PLURAL:$2|usor|$2 usores}} no es mostrada)",
-       "difference-missing-revision": "La revisa $1 de la paje nomida \"{{FULLPAGENAME}}\" no esiste.\n\nEsta es usual causada par segue un lia nonfresca de istoria a un paje cual on ia sutrae.\nDetalias es trovable en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejistra de sutraes].",
+       "difference-missing-revision": "({{PLURAL:$2|Un revisa|$2 revisas}} de esta difere ($1) no ia es trovada.\n\nEsta es usual causada par segue un lia nonfresca de istoria a un paje cual on ia sutrae.\nDetalias es trovable en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rejistra de sutraes].",
        "searchresults": "Resultas de xerca",
        "searchresults-title": "Resultas de xerca \"$1\"",
        "titlematches": "Trovadas en titulo de paje",
        "autoblockid": "Autoimpedi #$1",
        "block": "Impedi usor",
        "unblock": "Desimpedi usor",
-       "blockip": "Impedi usor",
+       "blockip": "Impedi {{GENDER:$1|usor}}",
        "blockip-legend": "Impedi usor",
        "blockiptext": "Usa la formulario a su per impedi asedes scrivente de un adirije IP o nom de usor spesifada.\nOn debe fa esta sola per preveni vandalsime, e longo la [[{{MediaWiki:Policy-url}}|politica]].\nSpesifa un razona a su (per esemplo, indicante pajes individua cual ia es vandalida).\nPer impedi adirijes IP, on pote usa la sintatica [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]; la estende la plu grande permeteda es /$1 per IPv4 e /$2 per IPv6.",
        "ipaddressorusername": "Adirije IP o nom de usor:",
        "nocredits": "No informa atribuinte es disponable per esta paje.",
        "spamprotectiontitle": "Filtro protejente contra spam",
        "spamprotectiontext": "La testo cual tu ia vole fisa ia es blocida par la filtro de spam.\nEsta es probable causada par un lia a un loca esterna en la lista negra.",
+       "spambot_username": "Antispam de MediaWiki",
+       "spam_reverting": "Reversa a la revisa la plu resente cual no conteni lias a $1",
+       "spam_deleting": "Tota revisas ia conteni lias a $1; sutraente",
        "simpleantispam-label": "Antispam. <strong>No</strong> completi esta!",
        "pageinfo-title": "Informa per \"$1\"",
        "pageinfo-not-current": "Regretable, esta informa no es disponable per revisas vea.",
        "pageinfo-magic-words": "{{PLURAL:$1|parola|parolas}} majiosa ($1)",
        "pageinfo-hidden-categories": "{{PLURAL:$1|Categoria|Categorias}} ascondeda ($1)",
        "pageinfo-templates": "{{PLURAL:$1|stensil|stensiles}} transcluida ($1)",
+       "pageinfo-transclusions": "{{PLURAL:$1|Paje|Pajes}} transcluida en ($1)",
        "pageinfo-toolboxlink": "Informa de paje",
        "pageinfo-redirectsto": "Redirije a",
        "pageinfo-redirectsto-info": "info",
        "deletedrevision": "Sutrae revisa vea $1",
        "filedeleteerror-short": "Era en sutrae fix: $1",
        "filedeleteerror-long": "Eras ia aveni en desutrae la fix:\n\n$1",
+       "filedelete-missing": "La fix \"$1\" no pote es sutraeda car lo no esiste.",
        "filedelete-old-unregistered": "La revisa spesifada de fix \"$1\" no es en la banco de datos.",
        "filedelete-current-unregistered": "La fix spesifada \"$1\" no es en la banco de datos.",
        "filedelete-archive-read-only": "La arciveria \"$1\" no es scrivable per la servador.",
        "svg-long-error": "Fix SVG nonvalida: $1",
        "show-big-image": "Fix orijinal",
        "show-big-image-preview": "Grandia de esta previde: $1",
+       "show-big-image-preview-differ": "Grandia de esta previde $3 de esta fix $2: $1.",
        "show-big-image-other": "Otra {{PLURAL:$2|densia|densias}}: $1.",
        "show-big-image-size": "$1 × $2 pixeles",
        "file-info-gif-looped": "siclinte",
+       "file-info-gif-frames": "$1 {{PLURAL:$1|imajes|imajes}}",
        "file-info-png-looped": "siclinte",
        "file-info-png-repeat": "juada a $1 {{PLURAL:$1|ves|veses}}",
        "file-info-png-frames": "$1 {{PLURAL:$1|imaje|imajes}}",
        "newimages-hidepatrolled": "Asconde cargas patruliada",
        "newimages-mediatype": "Tipo de media:",
        "noimages": "No cosas per vide.",
+       "gallery-slideshow-toggle": "Alterna imajetas",
        "ilsubmit": "Xerca",
+       "bydate": "par data",
        "sp-newimages-showfrom": "Mostra fixes nova comensante de $2, $1",
        "seconds": "{{PLURAL:$1|$1 secondo|$1 secondos}}",
        "minutes": "{{PLURAL:$1|$1 minuto|$1 minutos}}",
        "redirect-page": "Numero de paje",
        "redirect-revision": "Revisa de paje",
        "redirect-file": "Nom de fix",
+       "redirect-logid": "Numero de entrada de rejistra",
        "redirect-not-exists": "Valua no trovada",
        "fileduplicatesearch": "Xerca fixes duplida",
        "fileduplicatesearch-summary": "Xerca fixes duplida, usante valuas axida.",
        "fileduplicatesearch-filename": "Nom de fix:",
        "fileduplicatesearch-submit": "Xerca",
+       "fileduplicatesearch-info": "$1 × $2 pixeles<br />Grandia de fix: $3<br />Tipo MIME: $4",
+       "fileduplicatesearch-result-1": "La fix \"$1\" ave no duplis identica.",
+       "fileduplicatesearch-result-n": "La fix \"$1\" ave {{PLURAL:$2|1 dupli identica|$2 duplis identica}}.",
+       "fileduplicatesearch-noresults": "No fix nomida \"$1\" ia es trovada.",
        "specialpages": "Pajes spesial",
        "specialpages-note-top": "Esplica",
+       "specialpages-note-restricted": "* Pajes spesial normal.\n* <span class=\"mw-specialpagerestricted\">Pajes spesial restrinjeda.</span>",
        "specialpages-group-maintenance": "Reportas de manteni",
        "specialpages-group-other": "Otra pajes spesial",
        "specialpages-group-login": "Autentici / crea conta",
        "tag-filter-submit": "Filtri",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Eticeta|Eticetas}}]]: $2)",
        "tag-mw-contentmodelchange": "cambia de model de contenida",
+       "tag-mw-contentmodelchange-description": "Editas cual [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel cambia la model de contenida] de un paje",
+       "tags-title": "Eticetas",
+       "tags-intro": "Esta paje lista la eticetas con cual la program pote marca un edita, e sua sinifias.",
        "tags-tag": "Nom de eticeta",
        "tags-display-header": "Apare en listas de cambias",
        "tags-description-header": "Descrive plen de sinifia",
        "tags-source-header": "Fonte",
        "tags-active-header": "Ativa?",
        "tags-hitcount-header": "Cambias eticetida",
+       "tags-actions-header": "Atas",
        "tags-active-yes": "Si",
        "tags-active-no": "No",
        "tags-source-extension": "Definida par la program",
        "tags-edit-chosen-placeholder": "Eleje alga eticetas",
        "tags-edit-chosen-no-results": "No eticetas corespondente ia es trovada",
        "tags-edit-reason": "Razona:",
+       "tags-edit-revision-submit": "Aplica cambias a {{PLURAL:$1|esta revisa|$1 revisas}}",
+       "tags-edit-success": "La cambias ia es aplicada.",
+       "tags-edit-failure": "La cambias no ia pote es aplicada:\n$1",
+       "tags-edit-nooldid-title": "Revisa destinal nonvalida",
+       "tags-edit-nooldid-text": "O tu no ia spesifa a cual revisa esta funsiona va aplica, o la revisa spesifada no esiste.",
+       "tags-edit-none-selected": "Eleje a la min un eticeta per ajunta o sutrae, per favore.",
+       "comparepages": "Compara pajes",
        "compare-page1": "Paje 1",
        "compare-page2": "Paje 2",
+       "compare-rev1": "Revisa 1",
+       "compare-rev2": "Revisa 2",
        "compare-submit": "Compara",
+       "compare-invalid-title": "La titulo spesifada no es valida.",
+       "compare-title-not-exists": "La titulo spesifada no esiste.",
+       "compare-revision-not-exists": "La revisa spesifada no esiste.",
        "diff-form": "Diferes",
        "diff-form-oldid": "Numero de revisa vea (si desirada)",
        "diff-form-revid": "Numero de revisa de difere",
        "revdelete-uname-unhid": "desasconde de nom de usor",
        "revdelete-restricted": "aplica de restrinjes a dirijores",
        "revdelete-unrestricted": "sutrae de restrinjes per dirijores",
+       "logentry-block-block": "$1 {{GENDER:$2|impedi}} {{GENDER:$4|$3}} con tempo de desvalidi $5 $6",
        "logentry-move-move": "$1 {{GENDER:$2|move}} paje $3 a $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|move}} la paje $3 a $4 sin lasa un redirije",
        "logentry-move-move_redir": "$1 {{GENDER:$2|move}} la paje $3 a $4 con redirije",
        "mw-widgets-mediasearch-input-placeholder": "Xerca medias",
        "mw-widgets-mediasearch-noresults": "No resultas trovada.",
        "mw-widgets-titleinput-description-new-page": "paje ancora no esiste",
+       "mw-widgets-titleinput-description-redirect": "redirije a $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Ajunta un categoria...",
        "mw-widgets-usersmultiselect-placeholder": "Ajunta un categoria...",
        "date-range-from": "De data:",
        "log-action-filter-suppress": "Tipo de supresa:",
        "log-action-filter-upload": "Tipo de carga:",
        "log-action-filter-all": "Tota",
+       "log-action-filter-contentmodel-change": "Cambia de model de contenida",
+       "log-action-filter-contentmodel-new": "Crea de paje con model de contenida noninisial",
+       "log-action-filter-delete-delete": "Sutrae de paje",
+       "log-action-filter-delete-delete_redir": "Suprascrive de redirije",
+       "log-action-filter-delete-restore": "Desutrae de paje",
+       "log-action-filter-delete-event": "Sutrae de entrada de rejistra",
+       "log-action-filter-delete-revision": "Sutrae de revisa",
+       "log-action-filter-import-interwiki": "Emporta intervical",
+       "log-action-filter-import-upload": "Emporta par carga de XML",
+       "log-action-filter-managetags-create": "Crea de eticeta",
+       "log-action-filter-managetags-delete": "Sutrae de eticeta",
+       "log-action-filter-managetags-activate": "Ativi de eticeta",
+       "log-action-filter-managetags-deactivate": "Desativi de eticeta",
+       "log-action-filter-move-move": "Move sin suprascrive de redirijes",
+       "log-action-filter-move-move_redir": "Move con suprascrive de redirijes",
+       "log-action-filter-newusers-create": "Crea par usor anonim",
+       "log-action-filter-newusers-create2": "Crea par usor rejistrada",
+       "log-action-filter-newusers-autocreate": "Crea automata",
+       "log-action-filter-newusers-byemail": "Crea con clave enviada par eposta",
+       "log-action-filter-patrol-patrol": "Patrulia par mano",
+       "log-action-filter-patrol-autopatrol": "Patrulia automata",
+       "log-action-filter-protect-protect": "Proteje",
+       "log-action-filter-protect-modify": "Ajusta de proteje",
+       "log-action-filter-protect-unprotect": "Desproteje",
+       "log-action-filter-protect-move_prot": "Move de proteje",
+       "log-action-filter-rights-rights": "Cambia par mano",
+       "log-action-filter-rights-autopromote": "Cambia automata",
+       "log-action-filter-suppress-event": "Supresa de entrada de rejistra",
+       "log-action-filter-suppress-revision": "Supresa de revisa",
+       "log-action-filter-suppress-delete": "Supresa de paje",
+       "log-action-filter-suppress-block": "Supresa de usor par impedi",
+       "log-action-filter-suppress-reblock": "Supresa de usor par reimpedi",
+       "log-action-filter-upload-upload": "Carga nova",
+       "log-action-filter-upload-overwrite": "Recarga",
        "authmanager-authn-not-in-progress": "Autentici no aveni, o datos de sesion es perdeda. Per favore, comensa denova.",
        "authmanager-authn-no-primary": "La identia furnida no ia pote es autenticida.",
        "authmanager-authn-no-local-user": "La identia furnida no es asosiada con un usor de esta vici.",
+       "authmanager-authn-no-local-user-link": "La identia furnida es valida ma no es asosiada con un usor de esta vici. Autentici en un otra modo, o crea un usor nova, e tu va ave la posible de junta tua identia presedente a acel conta.",
+       "authmanager-authn-autocreate-failed": "La crea automata de un conta local ia fali: $1",
+       "authmanager-change-not-supported": "La identia furnida no pote es cambiada, car no cosa ta usa lo.",
+       "authmanager-email-help": "Adirije de eposta",
+       "authmanager-realname-label": "Nom vera",
+       "authmanager-realname-help": "Nom vera de la usor",
+       "authmanager-provider-password": "Autentici par clave",
+       "authmanager-provider-password-domain": "Autentici par clave e domina",
+       "authmanager-provider-temporarypassword": "Clave tempora",
+       "authprovider-confirmlink-message": "Pos tua atentas resente de autentici, la contas seguente pote es juntada a tua conta de vici. Lia los permete autentici par acel contas. Per favore, eleje los cual tu vole lia.",
+       "authprovider-confirmlink-request-label": "Contas cual debe es juntada",
+       "authprovider-confirmlink-success-line": "$1: Junta ia susede.",
+       "authprovider-confirmlink-failed": "Junta de conta no ia susede completa: $1",
+       "authprovider-confirmlink-ok-help": "Continua pos mostra mesajes de fali de junta.",
+       "authprovider-resetpass-skip-help": "Omete reinisia la clave.",
+       "authform-nosession-login": "La autentici ia susede, ma tua surfador no pote \"recorda\" la autentici.\n\n$1",
+       "authform-nosession-signup": "La conta ia es creada, ma tua surfador no pote \"recorda\" la autentici.\n\n$1",
+       "authform-newtoken": "Marca manca. $1",
+       "authform-notoken": "Marca manca",
+       "authform-wrongtoken": "Marca noncoreta",
+       "specialpage-securitylevel-not-allowed-title": "No permeteda",
+       "specialpage-securitylevel-not-allowed": "Pardona: tu no es permeteda a usa esta paje car tua identia no pote es sertida.",
+       "authpage-cannot-login": "Autentici no pote comensa.",
+       "authpage-cannot-login-continue": "Autentici no pote continua. Tua sesion ia abandona, probable.",
+       "authpage-cannot-create": "Crea de conta no pote comensa.",
+       "authpage-cannot-create-continue": "Crea de conta no pote continua. Tua sesion ia abandona, probable.",
+       "authpage-cannot-link": "Junta de conta no pote comensa.",
+       "authpage-cannot-link-continue": "Junta de conta no pote continua. Tua sesion ia abandona, probable.",
+       "cannotauth-not-allowed-title": "Permete refusada",
+       "cannotauth-not-allowed": "Tu no es permeteda a usa esta paje",
+       "changecredentials": "Cambia detalias de autentici",
+       "changecredentials-submit": "Cambia detalias de autentici",
+       "changecredentials-invalidsubpage": "$1 no es un tipo valida de autentici",
+       "removecredentials": "Sutrae detalias de autentici",
+       "removecredentials-submit": "Sutrae detalias de autentici",
+       "removecredentials-invalidsubpage": "$1 no es un tipo valida de autentici",
+       "removecredentials-success": "Tua detalias de autentici es sutraeda.",
+       "credentialsform-provider": "Tipo de autentici:",
+       "credentialsform-account": "Nom de conta:",
+       "cannotlink-no-provider-title": "No contas es juntable",
+       "cannotlink-no-provider": "No contas es juntable",
+       "linkaccounts": "Junta contas",
+       "linkaccounts-success-text": "La conta ia es juntada.",
+       "linkaccounts-submit": "Junta contas",
+       "unlinkaccounts": "Dejunta contas",
+       "unlinkaccounts-success": "La conta ia es dejuntada.",
+       "authenticationdatachange-ignored": "La cambia de datos de autentici no susede. Cisa no furnador es definida?",
+       "userjsispublic": "Nota per favore: Supajes de JavaScript debe no conteni datos privata, car los es regardable par otra usores.",
+       "usercssispublic": "Nota per favore: Supajes de CSS debe no conteni datos privata, car los es regardable par otra usores.",
+       "restrictionsfield-badip": "Adirije o estende IP nonvalida: $1",
+       "restrictionsfield-label": "Estendes IP permeteda:",
+       "restrictionsfield-help": "Un adirije IP o estende CIDR per linia: Per comuta tota, usa:<pre>0.0.0.0/0\n::/0</pre>",
+       "revid": "revisa $1",
+       "pageid": "numero de paje $1",
+       "rawhtml-notallowed": "Eticetas &lt;html&gt; no pote es usada estra pajes normal.",
+       "gotointerwiki": "Partinte de {{SITENAME}}",
        "gotointerwiki-external": "Tu es a punto de parti de {{SITENAME}} per visita [[$2]], cual es un pajeria separada.\n\n'''[$1 Continua a $1]'''",
        "undelete-cantedit": "Tu no pote desutrae esta paje car tu no es permeteda a edita esta paje.",
        "undelete-cantcreate": "Tu no pote desutrae esta paje car no paje esiste con esta nom e tu no es permeteda a crea esta paje.",
index 83c8a92..346be22 100644 (file)
        "prefs-editor": "Уредник",
        "prefs-preview": "Преглед",
        "prefs-advancedrc": "Напредни нагодувања",
+       "prefs-opt-out": "Отпиши ме од подобрувањата",
        "prefs-advancedrendering": "Напредни нагодувања",
        "prefs-advancedsearchoptions": "Напредни нагодувања",
        "prefs-advancedwatchlist": "Напредни нагодувања",
        "rcfilters-restore-default-filters": "Поврати основни филтри",
        "rcfilters-clear-all-filters": "Тргни ги сите филтри",
        "rcfilters-show-new-changes": "Погл. најнови промени",
-       "rcfilters-search-placeholder": "ФилÑ\82Ñ\80иÑ\80аÑ\98 Ñ\81коÑ\80еÑ\88ни Ð¿Ñ\80омени (пÑ\80елÑ\81Ñ\82аÑ\98Ñ\82е Ð¸Ð»Ð¸ Ð¿Ð¾Ñ\87неÑ\82е Ð´Ð° Ð¿Ð¸Ñ\88Ñ\83ваÑ\82е)",
+       "rcfilters-search-placeholder": "Ð\93лавно Ñ\84илÑ\82еÑ\80Ñ\81ко Ð¼ÐµÐ½Ð¸",
        "rcfilters-invalid-filter": "Неважечки филтер",
        "rcfilters-empty-filter": "Нема активни филтри. Прикажани се сите придонеси.",
        "rcfilters-filterlist-title": "Филтри",
index e151d5d..9079e05 100644 (file)
        "apisandbox-results": "ഫലം",
        "apisandbox-request-url-label": "അഭ്യർത്ഥനാ യൂ.ആർ.എൽ.:",
        "apisandbox-request-time": "നടപ്പിലാക്കാൻ എടുത്ത സമയം: $1",
+       "apisandbox-continue-clear": "ശൂന്യമാക്കുക",
        "booksources": "പുസ്തക സ്രോതസ്സുകൾ",
        "booksources-search-legend": "പുസ്തകസ്രോതസ്സുകൾക്കായി തിരയുക",
        "booksources-isbn": "ഐ.എസ്.ബി.എൻ.:",
index 0e6cc2e..50df4d1 100644 (file)
        "prefs-editor": "Tekstbehandling",
        "prefs-preview": "Forhåndsvisning",
        "prefs-advancedrc": "Avanserte alternativ",
+       "prefs-opt-out": "Velg å ikke få forbedret utgave",
        "prefs-advancedrendering": "Avanserte alternativer",
        "prefs-advancedsearchoptions": "Avanserte alternativer",
        "prefs-advancedwatchlist": "Avanserte alternativer",
        "rcfilters-restore-default-filters": "Gjenopprett standardfiltre",
        "rcfilters-clear-all-filters": "Nullstill alle filtre",
        "rcfilters-show-new-changes": "Vis de nyeste endringene",
-       "rcfilters-search-placeholder": "Filtrer siste endringer (søk eller begyn å skrive)",
+       "rcfilters-search-placeholder": "Filtrer siste endringer (gå gjennom eller begynn å skrive)",
        "rcfilters-invalid-filter": "Ugyldig filter",
        "rcfilters-empty-filter": "Ingen aktive filtre. Alle bidrag vises.",
        "rcfilters-filterlist-title": "Filtre",
        "changecontentmodel-nodirectediting": "Innholdsmodellen $1 støtter ikke direkte redigering",
        "changecontentmodel-emptymodels-title": "Ingen innholdsmodeller er tilgjengelige",
        "changecontentmodel-emptymodels-text": "Innholdet på [[:$1]] kan ikke konverteres til noen type.",
-       "log-name-contentmodel": "Logg over endringer i endringsloggen",
+       "log-name-contentmodel": "Logg over endringer av innholdsmodell",
        "log-description-contentmodel": "Denne siden lister endringer i innholdsmodellen til sider, og sider som ble laget med andre innholdsmodeller enn den som er standard.",
        "logentry-contentmodel-new": "$1 {{GENDER:$2|opprettet}} siden $3 med den ikke-standard innholdsmodellen «$5»",
        "logentry-contentmodel-change": "$1 {{GENDER:$2|endret}} innholdsmodellen for siden $3 fra «$4» til «$5»",
index 107b547..5e8d063 100644 (file)
        "prefs-editor": "Editor",
        "prefs-preview": "Antevisão",
        "prefs-advancedrc": "Opções avançadas",
+       "prefs-opt-out": "Excluir de melhoramentos",
        "prefs-advancedrendering": "Opções avançadas",
        "prefs-advancedsearchoptions": "Opções avançadas",
        "prefs-advancedwatchlist": "Opções avançadas",
        "rcfilters-restore-default-filters": "Restaurar os filtros padrão",
        "rcfilters-clear-all-filters": "Limpar todos os filtros",
        "rcfilters-show-new-changes": "Mostrar as mudanças mais recentes",
-       "rcfilters-search-placeholder": "Filtrar mudanças recentes (navegue ou começe a escrever)",
+       "rcfilters-search-placeholder": "Menu principal de filtros",
        "rcfilters-invalid-filter": "Filtro inválido",
        "rcfilters-empty-filter": "Não há filtros ativos. São mostradas todas as contribuições.",
        "rcfilters-filterlist-title": "Filtros",
index 03b382d..a9397c2 100644 (file)
        "prefs-editor": "Редактор",
        "prefs-preview": "Предварительный просмотр",
        "prefs-advancedrc": "Расширенные настройки",
+       "prefs-opt-out": "Отказ от улучшений",
        "prefs-advancedrendering": "Расширенные настройки",
        "prefs-advancedsearchoptions": "Расширенные настройки",
        "prefs-advancedwatchlist": "Расширенные настройки",
        "rcfilters-liveupdates-button-title-on": "Отключить автоматические обновления",
        "rcfilters-liveupdates-button-title-off": "Показывать новые изменения сразу после их появления",
        "rcfilters-watchlist-markseen-button": "Отметить все изменения как просмотренные",
-       "rcfilters-watchlist-edit-watchlist-button": "РедакÑ\82иÑ\80оваÑ\82Ñ\8c Ð²Ð°Ñ\88 Ñ\81пиÑ\81ок Ð¿Ñ\80оÑ\81моÑ\82Ñ\80еннÑ\8bÑ\85 Ñ\81Ñ\82Ñ\80аниÑ\86",
+       "rcfilters-watchlist-edit-watchlist-button": "РедакÑ\82иÑ\80оваÑ\82Ñ\8c Ð²Ð°Ñ\88 Ñ\81пиÑ\81ок Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f",
        "rcfilters-watchlist-showupdated": "Изменения страниц, которые вы не посещали с того момента, как они изменились, выделены <strong>жирным</strong> и отмечены полным маркером.",
        "rcfilters-preference-label": "Скрыть улучшенную версию Последних изменений",
        "rcfilters-preference-help": "Откатывает редизайн интерфейса 2017 года и все инструменты, добавленные с тех пор.",
        "listfiles_size": "Размер",
        "listfiles_description": "Описание",
        "listfiles_count": "Версий",
-       "listfiles-show-all": "Включить старые версии изображений",
+       "listfiles-show-all": "Включить старые версии файлов",
        "listfiles-latestversion": "Текущая версия",
        "listfiles-latestversion-yes": "Да",
        "listfiles-latestversion-no": "Нет",
index 0dd4975..43d9f27 100644 (file)
        "action-deletedtext": "zobraziť si zmazané texty revízií",
        "action-browsearchive": "vyhľadávať zmazané stránky",
        "action-undelete": "obnoviť túto stránku",
-       "action-suppressrevision": "skontrolovať a obnoviť túto skrytú revíziu",
+       "action-suppressrevision": "skontrolovať a obnoviť tieto skryté revízie",
        "action-suppressionlog": "zobraziť tento súkromný záznam",
        "action-block": "zablokovať úpravy tohto používateľa",
        "action-protect": "zmeniť úrovne ochrany tejto stránky",
        "recentchanges-legend-heading": "<strong>Legenda:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (pozri tiež [[Special:NewPages|zoznam nových stránok]])",
        "recentchanges-submit": "Zobraziť",
+       "rcfilters-tag-remove": "Odstrániť '$1'",
+       "rcfilters-legend-heading": "<strong>Zoznam skratiek:</strong>",
+       "rcfilters-other-review-tools": "<strong>Ďalšie kontrolné nástroje</strong>",
+       "rcfilters-group-results-by-page": "Zoskupiť výsledky podľa stránky",
+       "rcfilters-grouping-title": "Zoskupovanie",
+       "rcfilters-activefilters": "Aktívne filtre",
+       "rcfilters-advancedfilters": "Pokročilé filtre",
+       "rcfilters-limit-title": "Zobraziť zmeny",
+       "rcfilters-limit-shownum": "Zobraziť {{PLURAL:$1|poslednú jednu zmenu|posledné $1 zmeny|posledných $1 zmien}}",
+       "rcfilters-days-title": "Posledné dni",
+       "rcfilters-hours-title": "Posledné hodiny",
+       "rcfilters-days-show-days": "$1 {{PLURAL:$1|deň|dni|dní}}",
+       "rcfilters-days-show-hours": "$1 {{PLURAL:$1|hodina|hodiny|hodín}}",
+       "rcfilters-highlighted-filters-list": "Zvýraznené: $1",
+       "rcfilters-quickfilters": "Uložené filtre",
+       "rcfilters-quickfilters-placeholder-title": "Zatiaľ neboli uložené žiadne odkazy",
+       "rcfilters-quickfilters-placeholder-description": "Ak chcete uložiť svoje nastavenia filtrov a použiť ich neskôr, stlačte ikonu záložky v ploche aktívnych filtrov nižšie.",
+       "rcfilters-savedqueries-defaultlabel": "Uložené filtre",
+       "rcfilters-savedqueries-rename": "Premenovať",
+       "rcfilters-savedqueries-setdefault": "Nastaviť ako predvolené",
+       "rcfilters-savedqueries-unsetdefault": "Odstrániť predvolenie",
+       "rcfilters-savedqueries-remove": "Odstrániť",
+       "rcfilters-savedqueries-new-name-label": "Názov",
+       "rcfilters-savedqueries-new-name-placeholder": "Popíšte účel filtra",
+       "rcfilters-savedqueries-apply-label": "Vytvoriť filter",
+       "rcfilters-savedqueries-apply-and-setdefault-label": "Vytvoriť predvolený filter",
+       "rcfilters-savedqueries-cancel-label": "Zrušiť",
+       "rcfilters-savedqueries-add-new-title": "Uložiť súčasné nastavenie filtrov",
+       "rcfilters-restore-default-filters": "Obnoviť predvolené filtre",
+       "rcfilters-clear-all-filters": "Zrušiť všetky filtre",
+       "rcfilters-show-new-changes": "Zobraziť najnovšie zmeny",
+       "rcfilters-search-placeholder": "Filtrovať posledné úpravy (vyhľadávajte alebo začnite písať)",
+       "rcfilters-invalid-filter": "Neplatný filter",
+       "rcfilters-empty-filter": "Žiadne aktívne filtre. Všetky príspevky sú zobrazené.",
+       "rcfilters-filterlist-title": "Filtre",
+       "rcfilters-filterlist-whatsthis": "Ako to funguje?",
+       "rcfilters-filterlist-feedbacklink": "Povedzte nám, čo si myslíte o týchto (nových) filtroch",
+       "rcfilters-highlightbutton-title": "Zvýrazniť výsledky",
+       "rcfilters-highlightmenu-title": "Vybrať farbu",
+       "rcfilters-highlightmenu-help": "Vyberte farbu pre zvýraznenie tejto vlastnosti",
+       "rcfilters-filterlist-noresults": "Neboli nájdené žiadne filtre",
+       "rcfilters-noresults-conflict": "Neboli nájdené žiadne výsledky, pretože vyhľadávacie kritériá sú v konflikte",
+       "rcfilters-state-message-subset": "Tento filter nemá žiaden efekt, pretože jeho výsledky sú zahrnuté {{PLURAL:$2|v nasledujúcom širšom filtri|v nasledujúcich širších filtroch}} (pre odlíšenie skúste zvýraznenie): $1",
+       "rcfilters-state-message-fullcoverage": "Zvolenie všetkých filtrov v tejto skupine je akoby ste nevybrali žiaden, čiže tento filter nemá žiaden efekt. Skupina zahŕňa: $1",
+       "rcfilters-filtergroup-authorship": "Autorstvo príspevku",
+       "rcfilters-filter-editsbyself-label": "Vaše zmeny",
+       "rcfilters-filter-editsbyself-description": "Vaše vlastné príspevky.",
+       "rcfilters-filter-editsbyother-label": "Zmeny ostatných používateľov",
+       "rcfilters-filter-editsbyother-description": "Všetky zmeny okrem vašich.",
+       "rcfilters-filtergroup-userExpLevel": "Registrácia a skúsenosť používateľov",
+       "rcfilters-filter-user-experience-level-registered-label": "Registrácia",
+       "rcfilters-filter-user-experience-level-registered-description": "Prihlásení redaktori.",
+       "rcfilters-filter-user-experience-level-unregistered-label": "Neregistrovaní",
+       "rcfilters-filter-user-experience-level-unregistered-description": "Redaktori, ktorí nie sú prihlásení.",
+       "rcfilters-filter-user-experience-level-newcomer-label": "Nováčikovia",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Registrovaní používatelia s menej ako 10 úpravami a 4 dňami aktivity.",
+       "rcfilters-filter-user-experience-level-learner-label": "Začiatočníci",
+       "rcfilters-filter-user-experience-level-learner-description": "Registrovaní používatelia, ktorých skúsenosti spadajú medzi „Nováčikmi“ a „Skúsenými používateľmi“.",
+       "rcfilters-filter-user-experience-level-experienced-label": "Skúsení používatelia",
+       "rcfilters-filter-user-experience-level-experienced-description": "Registrovaní používatelia s viac ako 500 úpravami a 30 dňami aktivity.",
+       "rcfilters-filtergroup-automated": "Automatizované úpravy",
+       "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-bots-description": "Úpravy vykonané pomocou automatizovaných nástrojov.",
+       "rcfilters-filter-humans-label": "Človek (nie bot)",
+       "rcfilters-filter-humans-description": "Úpravy vykonané ľuďmi.",
+       "rcfilters-filtergroup-reviewstatus": "Stav preverenia",
+       "rcfilters-filter-patrolled-label": "Preverené",
+       "rcfilters-filter-patrolled-description": "Úpravy označené ako preverené.",
+       "rcfilters-filter-unpatrolled-label": "Nepreverené",
+       "rcfilters-filter-unpatrolled-description": "Úpravy neoznačené ako preverené.",
+       "rcfilters-filtergroup-significance": "Dôležitosť",
+       "rcfilters-filter-minor-label": "Drobné úpravy",
+       "rcfilters-filter-minor-description": "Úpravy, ktoré autor označil ako drobné.",
+       "rcfilters-filter-major-label": "Nie drobné úpravy",
+       "rcfilters-filter-major-description": "Úpravy neoznačené ako drobné.",
+       "rcfilters-filtergroup-watchlist": "Sledované stránky",
+       "rcfilters-filter-watchlist-watched-label": "Na zozname sledovaných stránok",
+       "rcfilters-filter-watchlist-watched-description": "Zmeny stránok zo zoznamu sledovaných.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nové zmeny sledovaných stránok",
+       "rcfilters-filter-watchlist-watchednew-description": "Zmeny stránok z vášho zoznamu sledovaných, ktoré ste od ich zmeny nenavštívili.",
+       "rcfilters-filter-watchlist-notwatched-label": "Nesledované stránky",
+       "rcfilters-filter-watchlist-notwatched-description": "Všetko okrem vašich sledovaných stránok.",
+       "rcfilters-filtergroup-watchlistactivity": "Aktivita v sledovaných stránkach",
+       "rcfilters-filter-watchlistactivity-unseen-label": "Nezobrazené zmeny",
+       "rcfilters-filter-watchlistactivity-unseen-description": "Zmeny stránok, ktoré ste od ich zmeny nenavštívili.",
+       "rcfilters-filter-watchlistactivity-seen-label": "Zobrazené zmeny",
+       "rcfilters-filter-watchlistactivity-seen-description": "Zmeny stránok, ktoré ste od ich zmeny už navštívili.",
+       "rcfilters-filtergroup-changetype": "Druh zmeny",
+       "rcfilters-filter-pageedits-label": "Úpravy stránok",
+       "rcfilters-filter-pageedits-description": "Úpravy obsahu wiki, diskusií, popisov kategórií…",
+       "rcfilters-filter-newpages-label": "Založenia stránok",
+       "rcfilters-filter-newpages-description": "Úpravy, ktoré vytvorili novú stránku.",
+       "rcfilters-filter-categorization-label": "Zmeny kategórií",
+       "rcfilters-filter-categorization-description": "Záznamy stránok zaradených alebo vyradených z kategórií.",
+       "rcfilters-filter-logactions-label": "Zaznamenané činnosti",
+       "rcfilters-filter-logactions-description": "Správcovské úkony, zakladanie účtov, mazanie stránok, nahrávanie súborov…",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "Filter „Drobné úpravy“ je v konflikte s jedným alebo viacerými filtrami podľa typu zmeny, pretože určité typy zmien sa nedajú označiť ako drobné. Dané filtre sú označené hore, v priestore „Aktívne filtre“.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Isté druhy úprav sa nedajú označiť ako drobné, tento filter je preto v konflikte s nasledujúcimi filtrami podľa typu zmeny: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Tento filter podľa typu zmeny je v konflikte s filtrom „Drobné zmeny“. Isté druhy úprav sa nedajú označiť ako drobné.",
+       "rcfilters-filtergroup-lastRevision": "Posledné verzie",
+       "rcfilters-filter-lastrevision-label": "Aktuálna verzia",
+       "rcfilters-filter-lastrevision-description": "Len posledná úprava stránky.",
+       "rcfilters-filter-previousrevision-label": "Nie najnovšia revízia",
+       "rcfilters-filter-previousrevision-description": "Všetky zmeny, ktoré nie sú „najnovšími revíziami“.",
+       "rcfilters-filter-excluded": "Vylúčený",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:nie</strong> $1",
+       "rcfilters-exclude-button-off": "Vylúčiť zvolené",
+       "rcfilters-exclude-button-on": "Zvolené vylúčené",
+       "rcfilters-view-advanced-filters-label": "Pokročilé filtre",
+       "rcfilters-view-tags": "Označené úpravy",
+       "rcfilters-view-namespaces-tooltip": "Filtrovať výsledky podľa menného priestoru",
+       "rcfilters-view-tags-tooltip": "Filtrovať výsledky pomocou značiek úprav",
+       "rcfilters-view-return-to-default-tooltip": "Návrat do hlavného menu filtrov",
+       "rcfilters-liveupdates-button": "Živé aktualizácie",
+       "rcfilters-liveupdates-button-title-on": "Vypnúť živé aktualitácie",
+       "rcfilters-liveupdates-button-title-off": "Zobraziť nové zmeny hneď, ako budú zverejnené",
+       "rcfilters-watchlist-markseen-button": "Označiť všetky úpravy ako zobrazené",
+       "rcfilters-watchlist-edit-watchlist-button": "Upraviť zoznam sledovaných stránok",
+       "rcfilters-watchlist-showupdated": "Zmeny stránok, ktoré ste od ich zmeny nenavštívili, sú zobrazené <strong>hrubo</strong> s vyplneným krúžkom.",
+       "rcfilters-preference-label": "Skryť vylepšenú verziu posledných úprav",
+       "rcfilters-preference-help": "Zruší novú podobu rozhrania z roku 2017 a všetky nástroje odvtedy pridané.",
        "rcnotefrom": "Nižšie {{PLURAL:$5|je zobrazená úprava|sú zobrazené úpravy}} od <strong>$2</strong> (do <strong>$1</strong>).",
+       "rclistfromreset": "Obnoviť výber údajov",
        "rclistfrom": "Zobraziť nové úpravy počnúc od $3 $2",
        "rcshowhideminor": "$1 drobné úpravy",
        "rcshowhideminor-show": "Zobraziť",
index b029127..ce01a12 100644 (file)
        "prefs-editor": "Urejevalnik",
        "prefs-preview": "Predogled",
        "prefs-advancedrc": "Napredne možnosti",
+       "prefs-opt-out": "Izključite se iz izboljšav",
        "prefs-advancedrendering": "Napredne možnosti",
        "prefs-advancedsearchoptions": "Napredne možnosti",
        "prefs-advancedwatchlist": "Napredne možnosti",
        "rcfilters-restore-default-filters": "Obnovi privzete filtre",
        "rcfilters-clear-all-filters": "Počisti vse filtre",
        "rcfilters-show-new-changes": "Ogled najnovejših sprememb",
-       "rcfilters-search-placeholder": "Zadnje spremembe filtrov (prebrskajte ali začnite vnašati)",
+       "rcfilters-search-placeholder": "Filtrirajte zadnje spremembe (prebrskajte ali začnite vnašati)",
        "rcfilters-invalid-filter": "Neveljaven filter",
        "rcfilters-empty-filter": "Ni dejavnih filtrov. Prikazani so vsi prispevki.",
        "rcfilters-filterlist-title": "Filtri",
index 148539f..0b3f557 100644 (file)
        "rcfilters-view-advanced-filters-label": "Напредни филтери",
        "rcfilters-view-namespaces-tooltip": "Филтер резултата према именском простору",
        "rcfilters-view-tags-tooltip": "Филтер резултата према ознаци измене",
+       "rcfilters-watchlist-showupdated": "Промјене на страницама које нисте посјетили од када је измјена извршена су <strong>подебљане</strong>, са испуњеним ознакама.",
        "rcnotefrom": "Испод {{PLURAL:$5|је измена|су измене}} од <strong>$3, $4</strong> (до <strong>$1</strong> приказано).",
        "rclistfromreset": "Ресетуј одабир датума",
        "rclistfrom": "Прикажи нове измене почев од $2 $3",
        "unwatchthispage": "Прекини надгледање",
        "notanarticle": "Није страница са садржајем",
        "notvisiblerev": "Измена је обрисана",
-       "watchlist-details": "Ð\98маÑ\82е {{PLURAL:$1|$1 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83|$1 Ñ\81Ñ\82Ñ\80аниÑ\86е|$1 Ñ\81Ñ\82Ñ\80аниÑ\86а}} Ð½Ð° Ñ\81вом Ñ\81пиÑ\81кÑ\83 Ð½Ð°Ð´Ð³Ð»ÐµÐ´Ð°Ñ\9aа, Ð½Ðµ Ñ\80аÑ\87Ñ\83наÑ\98Ñ\83Ñ\9bи Ð·Ð°Ñ\81ебно Ñ\81Ñ\82Ñ\80аниÑ\86е Ð·Ð° Ñ\80азговоÑ\80.",
+       "watchlist-details": "Ð\9dа Ð\92аÑ\88ем Ñ\81пиÑ\81кÑ\83 Ð½Ð°Ð´Ð³Ð»ÐµÐ´Ð°Ñ\9aа Ñ\81е Ð½Ð°Ð»Ð°Ð·Ð¸ {{PLURAL:$1|$1 Ñ\81Ñ\82Ñ\80аниÑ\86а|$1 Ñ\81Ñ\82Ñ\80аниÑ\86е|$1 Ñ\81Ñ\82Ñ\80аниÑ\86а}} (плÑ\83Ñ\81 Ñ\81Ñ\82Ñ\80аниÑ\86е Ð·Ð° Ñ\80азговоÑ\80).",
        "wlheader-enotif": "Обавештење имејлом је омогућено.",
-       "wlheader-showupdated": "Странице које су измењене откад сте их последњи пут посетили су '''подебљане'''.",
+       "wlheader-showupdated": "Странице које су измењене откад сте их последњи пут посетили су <strong>подебљане</strong>.",
        "wlnote": "Испод {{PLURAL:$1|је последња измена|су последње <strong>$1</strong> измене|је последњих <strong>$1</strong> измена}} у {{PLURAL:$2|претходном сату|претходна <strong>$2</strong> сата|претходних <strong>$2</strong> сати}}, закључно са $3, $4.",
        "wlshowlast": "Прикажи последњих $1 сати, $2 дана",
        "watchlist-hide": "Сакриј",
index 359ce58..7946282 100644 (file)
        "rcfilters-days-show-days": "$1 {{PLURAL:$1|రోజు|రోజులు}}",
        "rcfilters-days-show-hours": "$1 {{PLURAL:$1|గంట|గంటలు}}",
        "rcfilters-highlighted-filters-list": "హైలైటు చేసినవి: $1",
-       "rcfilters-quickfilters": "à°­à°¦à±\8dరపరà°\9aà°¿à°¨ à°µà°¡à°ªà±\8bà°¤à°\95ాలà±\81",
+       "rcfilters-quickfilters": "భద్రపరచిన వడపోతలు",
        "rcfilters-quickfilters-placeholder-title": "ఇంకా లింకులు వేటినీ భద్రపరచలేదు",
        "rcfilters-quickfilters-placeholder-description": "మీ వడపోత సెట్టింగులను భద్రపరచి తరువాత వాడుకోవాలంటే, కింద ఉన్న యాక్టివ్ ఫిల్టర్ ఏరియా లోని పేజీక (బుక్‌మార్కు) ఐకన్ను నొక్కండి.",
-       "rcfilters-savedqueries-defaultlabel": "à°­à°¦à±\8dరపరà°\9aà°¿à°¨ à°µà°¡à°ªà±\8bà°¤à°\95ాలà±\81",
+       "rcfilters-savedqueries-defaultlabel": "భద్రపరచిన వడపోతలు",
        "rcfilters-savedqueries-rename": "పేరుమార్చు",
        "rcfilters-savedqueries-setdefault": "డిఫాల్టుగా సెట్ చెయ్యండి",
        "rcfilters-savedqueries-unsetdefault": "డిఫాల్టును తీసివెయ్యి",
index 8e22fd4..31eaeed 100644 (file)
        "viewhelppage": "ดูหน้าวิธีใช้",
        "categorypage": "ดูหน้าหมวดหมู่",
        "viewtalkpage": "ดูการพูดคุย",
-       "otherlanguages": "ในภาษาอื่น",
+       "otherlanguages": "ในภาษาอื่น",
        "redirectedfrom": "(เปลี่ยนทางจาก $1)",
        "redirectpagesub": "หน้าเปลี่ยนทาง",
        "redirectto": "เปลี่ยนทางไป:",
index 26dbb79..9433c0f 100644 (file)
        "anontalk": "ამ IP-ს განხილვა",
        "navigation": "ნავიგაცია",
        "and": "&#32;დო",
-       "qbfind": "დოგორი",
-       "qbbrowse": "დათვალიერება",
-       "qbedit": "რედაქტირება",
-       "qbpageoptions": "თე ხასჷლა",
-       "qbmyoptions": "ჩქიმი ხასჷლეფი",
        "faq": "ბხშირი კითხვეფი",
-       "faqpage": "Project:ხშირი შეკითხვები",
        "actions": "მოქმედალეფი",
        "namespaces": "ჯოხოეფიშ ოფირჩა",
        "variants": "ვარიანტეფი",
        "edit-local": "ლოკალური აღწერის რედაქტირება",
        "create": "დორსხუაფა",
        "create-local": "ლოკალურ ეჭარუაშ გეძინა",
-       "editthispage": "ხასჷლაშ რედაქტირაფა",
-       "create-this-page": "ამ გვერდის შექმნა",
        "delete": "ლასუა",
-       "deletethispage": "დოლასი თე ხასჷლა",
-       "undeletethispage": "ამ გვერდის აღდგენა",
        "undelete_short": "გააუქმე წაშლა {{PLURAL:$1|ერთი რედაქტირება|$1 რედაქტირება}}",
        "viewdeleted_short": "{{PLURAL:$1|წაშლილი რედაქტირების|$1 წაშლილი რედაქტირებების}} ხილვა",
        "protect": "დოთხილე",
        "protect_change": "თირუა",
-       "protectthispage": "ხასილაშ თხილუა",
        "unprotect": "დაცვის შეცვლა",
-       "unprotectthispage": "შეცვალე ამ გვერდის დაცვის დონე",
        "newpage": "ახალ ხასჷლა",
-       "talkpage": "მოჩამილი ხასჷლაშ სხუნუა",
        "talkpagelinktext": "სხუნუა",
        "specialpage": "გჷშაკერძაფილი ხასჷლა",
        "personaltools": "პერსონალური ხეჭკუდეფი",
-       "articlepage": "სტატიის ნახვა",
        "talk": "სხუნუა",
        "views": "ძირაფეფი",
        "toolbox": "ხეჭკუდეფი",
-       "userpage": "მახვარებუშ ხასჷლაშ ძირაფა",
-       "projectpage": "პროექტიშ ხასჷლაშ ძირაფა",
        "imagepage": "ფაილიშ ხასჷლაშ ძირაფა",
        "mediawikipage": "გადახედე შეტყობინების გვერდს",
        "templatepage": "გადახედე თარგის გვერდს",
        "listfiles_size": "ზომა",
        "listfiles_description": "ეჭარუა",
        "listfiles_count": "ვერსიები",
-       "listfiles-show-all": "á\83¡á\83£á\83 á\83\90á\83\97á\83\94á\83\91á\83\98á\83¡ á\83«á\83\95á\83\94á\83\9aá\83\98 á\83\95á\83\94á\83 á\83¡á\83\98á\83\94á\83\91á\83\98á\83¡ á\83©á\83\90á\83 á\83\97á\83\95ა",
+       "listfiles-show-all": "á\83¡á\83£á\83 á\83\90á\83\97á\83\94á\83¤á\83\98á\83¨ á\83¯á\83\95á\83\94á\83¨á\83\98 á\83\95á\83\94á\83 á\83¡á\83\98á\83\94á\83¤á\83\98á\83¨ á\83\9bá\83\98á\83¨á\83\90á\83«á\83\98á\83\9cა",
        "listfiles-latestversion": "მიმდინარე ვერსია",
        "listfiles-latestversion-yes": "ქო",
        "listfiles-latestversion-no": "არა",
        "watch": "გაკონტროლი",
        "watchthispage": "თე ხასილაშ კონტროლ",
        "unwatch": "კონტროლიშ გოუქვაფა",
-       "watchlist-details": "{{PLURAL:$1|$1 á\83®á\83\90á\83¡á\83\98á\83\9aá\83\90|$1 á\83®á\83\90á\83¡á\83\98á\83\9aá\83\94á\83¤}} á\83 á\83\94 á\83\97á\83¥á\83\95á\83\90á\83\9c á\83\99á\83\9dá\83\9cá\83¢á\83 á\83\9dá\83\9aá\83\98á\83¨ á\83\94á\83 á\83\99á\83\94á\83\91á\83£á\83\9aá\83¡, á\83¡á\83®á\83£á\83\9cá\83£á\83\90á\83¨ á\83®á\83\90á\83¡á\83\98á\83\9aá\83\94á\83¤á\83\98á\83¨ მეუკოროცხუო.",
+       "watchlist-details": "{{PLURAL:$1|$1 á\83®á\83\90á\83¡á\83·á\83\9aá\83\90|$1 á\83®á\83\90á\83¡á\83·á\83\9aá\83\90}} á\83 á\83\94 á\83\97á\83¥á\83\95á\83\90á\83\9c á\83\99á\83\9dá\83\9cá\83¢á\83 á\83\9dá\83\9aá\83\98á\83¨ á\83\94á\83 á\83\99á\83\94á\83\91á\83£á\83\9aá\83¡, á\83¡á\83®á\83£á\83\9cá\83£á\83\90á\83¨ á\83®á\83\90á\83¡á\83·á\83\9aá\83\94á\83¤á\83\98á\83¨ á\83£მეუკოროცხუო.",
        "wlshowlast": "ეკონია $1 საათიშ $2 დღაშ  ძირაფა",
        "watchlist-options": "კონტროლიშ ერკებულიშ ოფციეფ",
        "watching": "კონტროლირებად...",
        "fileduplicatesearch-submit": "გორუა",
        "specialpages": "გჷშაკერძაფილი ხასჷლეფი",
        "specialpages-note-top": "ლეგენდა",
-       "specialpages-note": "* ჩვეულებრივი სპეცგვერდები.\n* <span class=\"mw-specialpagerestricted\">სპეცგვერდები შეზღუდული წვდომით.</span>",
        "specialpages-group-maintenance": "ტექნიკური მომსახურების ანგარიშები",
        "specialpages-group-other": "სხვა სპეციალური გვერდები",
        "specialpages-group-login": "მიშულა/ანგარიშიშ გონწყუმა",
index b766b1c..a1587d9 100644 (file)
        "prefs-editor": "编辑",
        "prefs-preview": "预览",
        "prefs-advancedrc": "高级选项",
+       "prefs-opt-out": "关闭改进功能",
        "prefs-advancedrendering": "高级选项",
        "prefs-advancedsearchoptions": "高级选项",
        "prefs-advancedwatchlist": "高级选项",
index a3b7d5a..a674cf3 100644 (file)
        "categorypage": "檢視分類頁面",
        "viewtalkpage": "檢視討論頁面",
        "otherlanguages": "其他語言",
-       "redirectedfrom": "(已重新導向自 $1)",
+       "redirectedfrom": "(已重新導向自 $1)",
        "redirectpagesub": "重新導向頁面",
        "redirectto": "重新導向至:",
        "lastmodifiedat": "此頁面最後編輯於 $1 $2。",
        "subject-preview": "預覽主旨:",
        "previewerrortext": "嘗試預覽您的變更時發生錯誤。",
        "blockedtitle": "使用者已被封鎖",
-       "blockedtext": "<strong>您的使用者名稱或 IP 位址被封鎖。</strong>\n\n您被 $1 封鎖,\n原因爲 <em>$2</em>。\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯絡 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件地址,且尚未被封鎖郵件功能,則您可透過 \"Email 聯絡此使用者\" 的功能來聯絡相關管理員。\n您目前的 IP 位址是 $3,此次封鎖的 ID 為 #$5。\n請您在詢問時附註以上詳細訊息。",
+       "blockedtext": "<strong>您的使用者名稱或 IP 位址被封鎖。</strong>\n\n您被 $1 封鎖,\n原因爲 <em>$2</em>。\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯絡 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件地址,且尚未被封鎖郵件功能,則您可透過 \"Email 聯絡此使用者\" 的功能來聯絡相關管理員。\n您目前的 IP 位址是 $3,此次封鎖的 ID 為 #$5。\n請您在詢問時附註以上詳細訊息。",
        "autoblockedtext": "因先前的另一位使用者被 $1 封鎖,您的 IP 位址已被自動封鎖。\n原因是:\n\n:<em>$2</em>\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 相關封鎖對象:$7\n\n您可以聯絡 $1 或其他的 [[{{MediaWiki:Grouppage-sysop}}|管理員]] 討論封鎖的相關問題。\n若您已在 [[Special:Preferences|偏好設定]] 中設定了一個有效的電子郵件地址,且尚未被封鎖郵件功能,則您可透過 \"Email 聯絡此使用者\" 的功能來聯絡相關管理員。\n您目前的 IP 位址是 $3,此次封鎖的 ID 為 #$5。\n請您在詢問時附註以上詳細資料。",
        "systemblockedtext": "您的使用者名稱或 IP 位址已被 MediaWiki 自動封鎖,原因如下:\n\n:<em>$2</em>\n\n* 封鎖開始時間:$8\n* 封鎖結束時間:$6\n* 被封鎖的使用者:$7\n\n您目前的 IP 位址為 $3。\n請在做詢問時附上以上資訊。",
        "blockednoreason": "未說明原因",
index 60b8a7a..f1cd2b9 100644 (file)
@@ -25,7 +25,6 @@
  */
 
 require_once __DIR__ . '/Maintenance.php';
-require_once __DIR__ . '/../includes/export/DumpFilter.php';
 
 use Wikimedia\Rdbms\LoadBalancer;
 use Wikimedia\Rdbms\IDatabase;
index 919729a..818112f 100644 (file)
@@ -1928,7 +1928,7 @@ return [
                        'oojs-ui.styles.icons-editing-styling',
                        'oojs-ui.styles.icons-interactions',
                        'oojs-ui.styles.icons-content',
-                       'oojs-ui.styles.icons-interactions',
+                       'oojs-ui.styles.icons-layout',
                        'oojs-ui.styles.icons-media',
                ],
        ],
index 12212ff..70512e0 100644 (file)
@@ -83,7 +83,9 @@ function migrateWarn( msg ) {
                warnedAbout[ msg ] = true;
                jQuery.migrateWarnings.push( msg );
                // PATCH: Add instrumentation for statistics --Krinkle
-               mw.track( "mw.deprecate", "jquery-migrate" );
+               if ( window.mw && window.mw.track ) {
+                       window.mw.track( "mw.deprecate", "jquery-migrate" );
+               }
                if ( console && console.warn && !jQuery.migrateMute ) {
                        console.warn( "JQMIGRATE: " + msg );
                        if ( jQuery.migrateTrace && console.trace ) {
index 1f9fd39..3b882a6 100644 (file)
                } );
        };
 
-       /**
-        * Check whether the default values of the filters are all false.
-        *
-        * @return {boolean} Default filters are all false
-        */
-       mw.rcfilters.dm.FiltersViewModel.prototype.areDefaultFiltersEmpty = function () {
-               var defaultFilters;
-
-               if ( this.defaultFiltersEmpty === null ) {
-                       // We only need to do this test once,
-                       // because defaults are set once per session
-                       defaultFilters = this.getFiltersFromParameters( this.getDefaultParams() );
-                       this.defaultFiltersEmpty = $.isEmptyObject( defaultFilters ) || Object.keys( defaultFilters ).every( function ( filterName ) {
-                               return !defaultFilters[ filterName ];
-                       } );
-               }
-
-               return this.defaultFiltersEmpty;
-       };
-
        /**
         * Get the item that matches the given name
         *
index d87ef73..f878941 100644 (file)
         * An item has changed
         */
 
+       /**
+        * @event default
+        * @param {string} New default ID
+        *
+        * The default has changed
+        */
+
        /* Methods */
 
        /**
                        this.getItems().forEach( function ( item ) {
                                item.toggleDefault( item.getID() === itemID );
                        } );
+
+                       this.emit( 'default', itemID );
                }
        };
 
index b07df57..507c979 100644 (file)
                this.updateChangesList();
        };
 
+       /**
+        * Check whether the default values of the filters are all false.
+        *
+        * @return {boolean} Defaults are all false
+        */
+       mw.rcfilters.Controller.prototype.areDefaultsEmpty = function () {
+               var defaultFilters = this.filtersModel.getFiltersFromParameters( this._getDefaultParams() );
+
+               this._deleteExcludedValuesFromFilterState( defaultFilters );
+
+               // Defaults can change in a session, so we need to do this every time
+               return Object.keys( defaultFilters ).every( function ( filterName ) {
+                       return !defaultFilters[ filterName ];
+               } );
+       };
+
        /**
         * Empty all selected filters
         */
 
                        queryHighlights = data.highlights || {};
                        savedParams = this.filtersModel.getParametersFromFilters(
-                               // Merge filters with sticky values
                                $.extend( true, {}, data.filters, this.filtersModel.getStickyFiltersState() )
                        );
 
index a6b219b..b4e3b0e 100644 (file)
                .highlight-changesListWrapperWidget( tint( mix( @@c1var, mix( @@c2var, average( @@c3var, @@c4var ), 25% ), 25% ), 25% ) );
        }
 }
-
-.input-placeholder-color( @color, @font-weight: bold ) {
-       /* stylelint-disable selector-no-vendor-prefix */
-       &::-webkit-input-placeholder { /* WebKit, Blink */
-               color: @color;
-               font-weight: @font-weight;
-       }
-       &:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
-               color: @color;
-               opacity: 1; //  Firefox's placeholder defaults with a reduced opacity
-               font-weight: @font-weight;
-       }
-       &::-moz-placeholder { /* Mozilla Firefox 19+ */
-               color: @color;
-               opacity: 1;
-               font-weight: @font-weight;
-       }
-       &:-ms-input-placeholder { /* Internet Explorer 10-11 */
-               color: @color;
-               font-weight: @font-weight;
-       }
-       &::-ms-input-placeholder { /* Microsoft Edge */
-               color: @color;
-               font-weight: @font-weight;
-       }
-       /* stylelint-enable */
-       &::placeholder {
-               color: @color;
-               opacity: 1;
-               font-weight: @font-weight;
-       }
-}
index f4ca717..deaee28 100644 (file)
@@ -16,7 +16,7 @@
                &-color {
                        &-none {
                                display: inline-block;
-                               li.mw-changeslist-watchedseen & {
+                               .mw-changeslist-watchedseen & {
                                        .mw-rcfilters-ui-changesListWrapperWidget.mw-rcfilters-ui-changesListWrapperWidget-highlighted & {
                                                .mw-rcfilters-mixin-circle( @highlight-none, @result-circle-diameter, 0, true, @highlight-grey, true );
                                        }
@@ -26,7 +26,7 @@
                                        }
                                }
 
-                               li.mw-changeslist-watchedunseen & {
+                               .mw-changeslist-watchedunseen & {
                                        .mw-rcfilters-ui-changesListWrapperWidget.mw-rcfilters-ui-changesListWrapperWidget-highlighted & {
                                                .mw-rcfilters-mixin-circle( @highlight-grey, @result-circle-diameter, 0, true, @highlight-grey );
                                        }
index 7e7b9c3..e7233a8 100644 (file)
@@ -1,5 +1,4 @@
-@import 'mediawiki.ui/variables';
-@import 'mw.rcfilters.mixins.less';
+@import 'mediawiki.mixins';
 
 .mw-rcfilters-ui-filterTagMultiselectWidget {
        max-width: none;
@@ -9,8 +8,6 @@
                direction: ltr;
                border-bottom-right-radius: 0;
                height: 2.5em;
-
-               .input-placeholder-color( @colorGray5 );
        }
 
        &.oo-ui-widget-enabled .oo-ui-tagMultiselectWidget-handle {
 
                                .oo-ui-labelElement.oo-ui-optionWidget.oo-ui-buttonElement:first-child {
                                        margin-left: 0;
-
-                                       > .oo-ui-buttonElement-button {
-                                               color: @colorGray5;
-                                       }
                                }
                        }
                }
index 0ef27eb..757a000 100644 (file)
@@ -70,7 +70,7 @@
                                ]
                        },
                        input: {
-                               icon: 'add',
+                               icon: 'menu',
                                placeholder: mw.msg( 'rcfilters-search-placeholder' )
                        }
                }, config ) );
@@ -99,7 +99,8 @@
                        } );
                        this.queriesModel.connect( this, {
                                itemUpdate: 'onSavedQueriesItemUpdate',
-                               initialize: 'onSavedQueriesInitialize'
+                               initialize: 'onSavedQueriesInitialize',
+                               'default': 'reevaluateResetRestoreState'
                        } );
                }
 
                        this.controller.trackFilterGroupings( 'filtermenu' );
                }
 
-               this.input.setIcon( isVisible ? 'search' : 'add' );
+               this.input.setIcon( isVisible ? 'search' : 'menu' );
        };
 
        /**
         * Reevaluate the restore state for the widget between setting to defaults and clearing all filters
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.reevaluateResetRestoreState = function () {
-               var defaultsAreEmpty = this.model.areDefaultFiltersEmpty(),
+               var defaultsAreEmpty = this.controller.areDefaultsEmpty(),
                        currFiltersAreEmpty = this.model.areCurrentFiltersEmpty(),
                        hideResetButton = currFiltersAreEmpty && defaultsAreEmpty;
 
index 3e0d2b9..916c463 100644 (file)
@@ -76,6 +76,16 @@ textarea {
        width: auto;
 }
 
+#contentSub:empty,
+#contentSub2:empty {
+       display: none;
+}
+
+#contentSub:empty ~ #jump-to-nav,
+#contentSub2:empty ~ #jump-to-nav {
+       margin-top: 0;
+}
+
 span.subpages {
        display: block;
 }
index 954e074..6b25327 100644 (file)
@@ -1,7 +1,7 @@
 /*!
  * JavaScript for Special:Watchlist
  */
-( function ( mw, $ ) {
+( function ( $ ) {
        $( function () {
                $( '.mw-changeslist-line-watched .mw-title a' ).on( 'click', function () {
                        $( this )
@@ -9,4 +9,4 @@
                                .removeClass( 'mw-changeslist-line-watched' );
                } );
        } );
-}( mediaWiki, jQuery ) );
+}( jQuery ) );
index cee7382..e6b7432 100644 (file)
@@ -1,9 +1,9 @@
 /*!
  * JavaScript for Special:Preferences: Check for successbox to replace with notifications.
  */
-( function ( mw, $ ) {
+( function ( $ ) {
        $( function () {
                var convertmessagebox = require( 'mediawiki.notification.convertmessagebox' );
                convertmessagebox();
        } );
-}( mediaWiki, jQuery ) );
+}( jQuery ) );
index 7ee98bb..3639525 100644 (file)
@@ -4,7 +4,7 @@
  * @copyright 2011-2016 VisualEditor Team and others; see AUTHORS.txt
  * @license The MIT License (MIT); see LICENSE.txt
  */
-( function ( $, mw ) {
+( function ( mw ) {
 
        /**
         * MediaWiki media resource queue.
@@ -79,4 +79,4 @@
        mw.widgets.MediaSearchQueue.prototype.getSearchQuery = function () {
                return this.getParams().gsrsearch;
        };
-}( jQuery, mediaWiki ) );
+}( mediaWiki ) );
index 5ba9481..cd937f7 100644 (file)
@@ -4,7 +4,7 @@
  * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
  * @license The MIT License (MIT); see LICENSE.txt
  */
-( function ( $, mw ) {
+( function ( mw ) {
 
        /**
         * Creates an mw.widgets.TitleSearchWidget object.
                return response.query || {};
        };
 
-}( jQuery, mediaWiki ) );
+}( mediaWiki ) );
index 36090ea..76bc86c 100644 (file)
@@ -9,7 +9,7 @@
  * Jeroen De Dauw <jeroendedauw at gmail dot com>
  */
 
-( function ( mw, $ ) {
+( function ( $ ) {
        'use strict';
 
        $( function () {
@@ -35,4 +35,4 @@
 
        } );
 
-}( mediaWiki, jQuery ) );
+}( jQuery ) );
index 0ae45b5..b522486 100644 (file)
                                        a = [];
 
                                for ( key in o ) {
-                                       if ( hasOwn.call( o, key ) ) {
-                                               a.push( key );
-                                       }
+                                       a.push( key );
                                }
                                a.sort();
                                for ( key = 0; key < a.length; key++ ) {
                         * @param {string} sourceLoadScript URL of load.php
                         */
                        function doRequest( moduleMap, currReqBase, sourceLoadScript ) {
-                               var query = $.extend(
-                                       { modules: buildModulesString( moduleMap ) },
-                                       currReqBase
-                               );
+                               // Optimisation: Inherit (Object.create), not copy ($.extend)
+                               var query = Object.create( currReqBase );
+                               query.modules = buildModulesString( moduleMap );
                                query = sortQuery( query );
                                addScript( sourceLoadScript + '?' + $.param( query ) );
                        }
                                                // modules for this group from this source.
                                                modules = splits[ source ][ group ];
 
-                                               currReqBase = $.extend( {
-                                                       version: getCombinedVersion( modules )
-                                               }, reqBase );
+                                               // Optimisation: Inherit (Object.create), not copy ($.extend)
+                                               currReqBase = Object.create( reqBase );
+                                               currReqBase.version = getCombinedVersion( modules );
+
                                                // For user modules append a user name to the query string.
                                                if ( group === 'user' && mw.config.get( 'wgUserName' ) !== null ) {
                                                        currReqBase.user = mw.config.get( 'wgUserName' );
index 2064e03..0aa0e03 100644 (file)
@@ -16142,6 +16142,68 @@ parsoid=wt2html
 <link rel="mw:PageProp/Category" href="./Category:Baz" data-parsoid='{"stx":"simple","a":{"href":"./Category:Baz"},"sa":{"href":"Category:Baz"}}'/>
 !! end
 
+!! test
+9. Categories and newlines: should behave properly with linkprefix (T87753)
+!! options
+language=ar
+!! wikitext
+foo bar
+foo bar
+[[تصنيف:Foo]]
+[[تصنيف:Bar]]
+!! html/php
+<p>foo bar
+foo bar
+</p>
+!! html/parsoid
+<p>foo bar
+foo bar</p>
+<link rel="mw:PageProp/Category" href="./تصنيف:Foo"/>
+<link rel="mw:PageProp/Category" href="./تصنيف:Bar"/>
+!! end
+
+!! test
+10. No regressions on internal links following category (T174639)
+!! options
+parsoid=wt2html,html2html
+!! wikitext
+[[Category:Foo]]<div>a
+
+[[Foo]]</div>
+!! html/php
+<div>a
+<a href="/wiki/Foo" title="Foo">Foo</a></div>
+
+!! html/parsoid
+<link rel="mw:PageProp/Category" href="./Category:Foo"/><div>a
+
+<a rel="mw:WikiLink" href="./Foo" title="Foo">Foo</a></div>
+!! end
+
+# NOTE that Parsoid does not currently implement this special case
+# (T175416).  The plan is to remove this weird special-case in the PHP
+# parser to make it match the Parsoid output.
+!! test
+11. Special case where only newlines separate links
+!! options
+parsoid=wt2html,html2html
+!! wikitext
+[[Category:Foo]]
+
+[[Foo]][[es:Alimento]]
+
+[[Foo]]
+!! html/php
+<p><a href="/wiki/Foo" title="Foo">Foo</a><a href="/wiki/Foo" title="Foo">Foo</a>
+</p>
+!! html/parsoid
+<link rel="mw:PageProp/Category" href="./Category:Foo"/>
+
+<p><a rel="mw:WikiLink" href="./Foo" title="Foo">Foo</a></p><link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Alimento"/>
+
+<p><a rel="mw:WikiLink" href="./Foo" title="Foo">Foo</a></p>
+!! end
+
 !! test
 Category links with multiple namespaces
 !! wikitext
@@ -16189,6 +16251,20 @@ x[[Category:Foo]]y
 <p>x<link rel="mw:PageProp/Category" href="./Flokkur:Foo" data-parsoid=""/>y</p>
 !! end
 
+!! test
+Link prefix/suffixes aren't applied to language links
+!! options
+parsoid=wt2html
+language=is
+!! wikitext
+x[[es:Foo]]y
+!! html/php
+<p>xy
+</p>
+!! html/parsoid
+<p>x<link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Foo" data-parsoid=""/>y</p>
+!! end
+
 !! test
 Parsoid: Serialize link to file page with colon escape
 !! options
index 527e129..87acb52 100644 (file)
@@ -142,7 +142,50 @@ class HooksTest extends MediaWikiTestCase {
                } );
                $foo = 'original';
                Hooks::run( 'MediaWikiHooksTest001', [ &$foo ] );
-               $this->assertSame( 'original', $foo, 'Hooks continued processing after a false return.' );
+               $this->assertSame( 'original', $foo, 'Hooks abort after a false return.' );
+       }
+
+       /**
+        * @covers Hooks::runWithoutAbort
+        */
+       public function testRunWithoutAbort() {
+               $list = [];
+               Hooks::register( 'MediaWikiHooksTest001', function ( &$list ) {
+                       $list[] = 1;
+                       return true; // Explicit true
+               } );
+               Hooks::register( 'MediaWikiHooksTest001', function ( &$list ) {
+                       $list[] = 2;
+                       return; // Implicit null
+               } );
+               Hooks::register( 'MediaWikiHooksTest001', function ( &$list ) {
+                       $list[] = 3;
+                       // No return
+               } );
+
+               Hooks::runWithoutAbort( 'MediaWikiHooksTest001', [ &$list ] );
+               $this->assertSame( [ 1, 2, 3 ], $list, 'All hooks ran.' );
+       }
+
+       /**
+        * @covers Hooks::runWithoutAbort
+        */
+       public function testRunWithoutAbortWarning() {
+               Hooks::register( 'MediaWikiHooksTest001', function ( &$foo ) {
+                       return false;
+               } );
+               Hooks::register( 'MediaWikiHooksTest001', function ( &$foo ) {
+                       $foo = 'test';
+                       return true;
+               } );
+               $foo = 'original';
+
+               $this->setExpectedException(
+                       UnexpectedValueException::class,
+                       'Invalid return from hook-MediaWikiHooksTest001-closure for ' .
+                               'unabortable MediaWikiHooksTest001'
+               );
+               Hooks::runWithoutAbort( 'MediaWikiHooksTest001', [ &$foo ] );
        }
 
        /**
index b06df97..62f990b 100644 (file)
@@ -242,7 +242,7 @@ class CSSMinTest extends MediaWikiTestCase {
                        [
                                "Don't barf at behavior: url(#default#behaviorName) - T162973",
                                [ 'foo { behavior: url(#default#bar); }', false, '/w/', false ],
-                               'foo { behavior: url("#default#bar"); }',
+                               'foo { behavior: url(\'#default#bar\'); }',
                        ],
                ];
        }
@@ -271,9 +271,9 @@ class CSSMinTest extends MediaWikiTestCase {
                // data: URIs for red.gif, green.gif, circle.svg
                $red   = 'data:image/gif;base64,R0lGODlhAQABAIAAAP8AADAAACwAAAAAAQABAAACAkQBADs=';
                $green = 'data:image/gif;base64,R0lGODlhAQABAIAAAACAADAAACwAAAAAAQABAAACAkQBADs=';
-               $svg = 'data:image/svg+xml,%3C%3Fxml version=%221.0%22 encoding=%22UTF-8%22%3F%3E%0A'
-                       . '%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%228%22 height='
-                       . '%228%22%3E%0A%09%3Ccircle cx=%224%22 cy=%224%22 r=%222%22/%3E%0A%3C/svg%3E%0A';
+               $svg = 'data:image/svg+xml,%3C%3Fxml version="1.0" encoding="UTF-8"%3F%3E%0A'
+                       . '%3Csvg xmlns="http://www.w3.org/2000/svg" width="8" height='
+                       . '"8"%3E%0A%09%3Ccircle cx="4" cy="4" r="2"/%3E%0A%3C/svg%3E%0A';
 
                // @codingStandardsIgnoreStart Generic.Files.LineLength
                return [
@@ -361,7 +361,7 @@ class CSSMinTest extends MediaWikiTestCase {
                        [
                                'SVG files are embedded without base64 encoding and unnecessary IE 6 and 7 fallback',
                                'foo { /* @embed */ background: url(circle.svg); }',
-                               "foo { background: url(\"$svg\"); }",
+                               "foo { background: url('$svg'); }",
                        ],
                        [
                                'Two regular files in one rule',
@@ -444,17 +444,17 @@ class CSSMinTest extends MediaWikiTestCase {
                        [
                                'Background URL (containing parentheses; T60473)',
                                'foo { background: url("//localhost/styles.css?query=(parens)") }',
-                               'foo { background: url("//localhost/styles.css?query=(parens)") }',
+                               'foo { background: url(\'//localhost/styles.css?query=(parens)\') }',
                        ],
                        [
                                'Background URL (double quoted, containing single quotes; T60473)',
                                'foo { background: url("//localhost/styles.css?quote=\'") }',
-                               'foo { background: url("//localhost/styles.css?quote=\'") }',
+                               'foo { background: url(\'//localhost/styles.css?quote=\\\'\') }',
                        ],
                        [
                                'Background URL (single quoted, containing double quotes; T60473)',
                                'foo { background: url(\'//localhost/styles.css?quote="\') }',
-                               'foo { background: url("//localhost/styles.css?quote=\"") }',
+                               'foo { background: url(\'//localhost/styles.css?quote="\') }',
                        ],
                        [
                                'Simple case with comments before url',
@@ -522,15 +522,25 @@ class CSSMinTest extends MediaWikiTestCase {
                                'url(data:image/png;base64,R0lGODlh/+==)',
                        ],
                        [
-                               'URL with quotes',
+                               'URL with single quotes',
                                "https://en.wikipedia.org/wiki/Wendy's",
-                               "url(\"https://en.wikipedia.org/wiki/Wendy's\")",
+                               "url('https://en.wikipedia.org/wiki/Wendy\\'s')",
+                       ],
+                       [
+                               'URL with double quotes',
+                               'https://en.wikipedia.org/wiki/""',
+                               "url('https://en.wikipedia.org/wiki/\"\"')",
                        ],
                        [
                                'URL with parentheses',
                                'https://en.wikipedia.org/wiki/Boston_(band)',
-                               'url("https://en.wikipedia.org/wiki/Boston_(band)")',
+                               "url('https://en.wikipedia.org/wiki/Boston_(band)')",
                        ],
+                       [
+                               'URL with spaces',
+                               'https://en.wikipedia.org/wiki/Foo bar',
+                               "url('https://en.wikipedia.org/wiki/Foo bar')"
+                       ]
                ];
        }
 
index 0c91e43..d51dc37 100644 (file)
@@ -1,4 +1,4 @@
-( function ( mw, $ ) {
+( function ( $ ) {
        var loremIpsum = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.';
 
        QUnit.module( 'jquery.makeCollapsible', QUnit.newMwEnvironment() );
 
                $clone.find( '.mw-collapsible-toggle a' ).trigger( 'click' );
        } );
-}( mediaWiki, jQuery ) );
+}( jQuery ) );
index acbd0da..58e4d29 100644 (file)
                        } ),
                        'Default parameters are stored properly per filter and group'
                );
-
-               assert.ok(
-                       !model.areDefaultFiltersEmpty(),
-                       'Check if default filters are empty when defaults exist'
-               );
-
-               // Reset on special filter object that has no defaults
-               model = new mw.rcfilters.dm.FiltersViewModel();
-               model.initializeFilters(
-                       [ {
-                               name: 'group1',
-                               type: 'send_unselected_if_any',
-                               filters: [
-                                       { name: 'filter1', label: 'group1filter1-label', description: 'group1filter1-desc' },
-                                       { name: 'filter2', label: 'group1filter2-label', description: 'group1filter2-desc' },
-                                       { name: 'filter3', label: 'group1filter3-label', description: 'group1filter3-desc' }
-                               ]
-                       } ]
-               );
-
-               assert.ok(
-                       model.areDefaultFiltersEmpty(),
-                       'Check if default filters are empty when defaults do not exist'
-               );
        } );
 
        QUnit.test( 'Finding matching filters', function ( assert ) {
index 35b6b71..14c2bb4 100644 (file)
@@ -1,4 +1,4 @@
-( function ( mw, $ ) {
+( function ( $ ) {
        QUnit.module( 'mediawiki.special.recentchanges', QUnit.newMwEnvironment() );
 
        // TODO: verify checkboxes == [ 'nsassociated', 'nsinvert' ]
@@ -61,4 +61,4 @@
                // DOM cleanup
                $env.remove();
        } );
-}( mediaWiki, jQuery ) );
+}( jQuery ) );
index 46d7837..2a4d991 100644 (file)
@@ -1,4 +1,4 @@
-( function ( $, mw ) {
+( function ( mw ) {
        QUnit.module( 'mediawiki.errorLogger', QUnit.newMwEnvironment() );
 
        QUnit.test( 'installGlobalHandler', function ( assert ) {
@@ -39,4 +39,4 @@
                assert.strictEqual( w.onerror( errorMessage, errorUrl, errorLine ), true,
                        'Global handler preserves true return from previous handler' );
        } );
-}( jQuery, mediaWiki ) );
+}( mediaWiki ) );