Merge "Avoid scoped lock errors in Category::refreshCounts() due to nesting"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Fri, 2 Jun 2017 23:28:02 +0000 (23:28 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 2 Jun 2017 23:28:03 +0000 (23:28 +0000)
75 files changed:
RELEASE-NOTES-1.30
autoload.php
docs/extension.schema.v2.json
includes/DefaultSettings.php
includes/EditPage.php
includes/GlobalFunctions.php
includes/MediaWiki.php
includes/OutputPage.php
includes/Setup.php
includes/api/i18n/es.json
includes/api/i18n/fr.json
includes/api/i18n/hu.json
includes/api/i18n/pt.json
includes/api/i18n/ru.json
includes/deferred/DeferredUpdates.php
includes/filerepo/file/File.php
includes/filerepo/file/LocalFile.php
includes/installer/i18n/mzn.json
includes/installer/i18n/zh-hant.json
includes/jobqueue/JobRunner.php
includes/media/DjVu.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderOOUIFileModule.php [new file with mode: 0644]
includes/resourceloader/ResourceLoaderOOUIImageModule.php
includes/resourceloader/ResourceLoaderOOUIModule.php [new file with mode: 0644]
languages/i18n/ar.json
languages/i18n/as.json
languages/i18n/ast.json
languages/i18n/atj.json
languages/i18n/azb.json
languages/i18n/be-tarask.json
languages/i18n/bg.json
languages/i18n/bho.json
languages/i18n/bn.json
languages/i18n/bs.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/fr.json
languages/i18n/gl.json
languages/i18n/he.json
languages/i18n/hr.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/jv.json
languages/i18n/mk.json
languages/i18n/ms.json
languages/i18n/mzn.json
languages/i18n/nb.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ru.json
languages/i18n/sah.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/ur.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
resources/Resources.php
resources/ResourcesOOUI.php [deleted file]
resources/src/mediawiki.action/mediawiki.action.edit.js
resources/src/mediawiki.action/mediawiki.action.edit.styles.css
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterItemHighlightButton.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.SavedLinksListWidget.js
resources/src/mediawiki.special/mediawiki.special.apisandbox.js
resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.js
resources/src/mediawiki/mediawiki.diff.styles.css
resources/src/mediawiki/mediawiki.hlist.css
tests/phpunit/includes/parser/ParserOptionsTest.php [new file with mode: 0644]

index e61277a..22fed0c 100644 (file)
@@ -21,6 +21,8 @@ production.
   to plain class names, using the 'factory' key in the module description
   array. This allows dependency injection to be used for ResourceLoader modules.
 * $wgExceptionHooks has been removed.
+* $wgShellLocale is now applied for all requests. wfInitShellLocale() is
+  deprecated and a no-op, as it is no longer needed.
 
 === New features in 1.30 ===
 * (T37247) Output from Parser::parse() will now be wrapped in a div with
index 12fe6d1..0264435 100644 (file)
@@ -1221,7 +1221,9 @@ $wgAutoloadLocalClasses = [
        'ResourceLoaderLanguageDataModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderLanguageDataModule.php',
        'ResourceLoaderLanguageNamesModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderLanguageNamesModule.php',
        'ResourceLoaderModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderModule.php',
+       'ResourceLoaderOOUIFileModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderOOUIFileModule.php',
        'ResourceLoaderOOUIImageModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderOOUIImageModule.php',
+       'ResourceLoaderOOUIModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderOOUIModule.php',
        'ResourceLoaderRawFileModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderRawFileModule.php',
        'ResourceLoaderSiteModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderSiteModule.php',
        'ResourceLoaderSiteStylesModule' => __DIR__ . '/includes/resourceloader/ResourceLoaderSiteStylesModule.php',
index 6345632..518a65c 100644 (file)
                        "description": "Available feeds objects"
                },
                "SkinOOUIThemes": {
-                       "type": "object"
+                       "type": "object",
+                       "description": "Map of skin names to OOjs UI themes to use. Same format as ResourceLoaderOOUIModule::$builtinSkinThemeMap."
                },
                "PasswordPolicy": {
                        "type": "object",
index 19c585d..f7f52e5 100644 (file)
@@ -8183,7 +8183,6 @@ $wgPhpCli = '/usr/bin/php';
  * @note If multiple wikis are being served from the same process (e.g. the
  *  same fastCGI or Apache server), this setting must be the same on all those
  *  wikis.
- * @see wfInitShellLocale()
  */
 $wgShellLocale = 'C.UTF-8';
 
index 3e8473d..20250d5 100644 (file)
@@ -3119,6 +3119,10 @@ class EditPage {
                        $this->getSummaryInputAttributes( $inputAttrs )
                );
 
+               // For compatibility with old scripts and extensions, we want the legacy 'id' on the `<input>`
+               $inputAttrs['inputId'] = $inputAttrs['id'];
+               $inputAttrs['id'] = 'wpSummaryWidget';
+
                return new OOUI\FieldLayout(
                        new OOUI\TextInputWidget( [
                                'value' => $summary,
@@ -4268,7 +4272,8 @@ HTML
                                new OOUI\CheckboxInputWidget( [
                                        'tabIndex' => ++$tabindex,
                                        'accessKey' => $accesskey,
-                                       'id' => $options['id'],
+                                       'id' => $options['id'] . 'Widget',
+                                       'inputId' => $options['id'],
                                        'name' => $name,
                                        'selected' => $options['default'],
                                        'infusable' => true,
@@ -4330,7 +4335,8 @@ HTML
                $buttonLabel = $this->context->msg( $this->getSaveButtonLabel() )->text();
 
                $attribs = [
-                       'id' => 'wpSave',
+                       'id' => 'wpSaveWidget',
+                       'inputId' => 'wpSave',
                        'name' => 'wpSave',
                        'tabindex' => ++$tabindex,
                ] + Linker::tooltipAndAccesskeyAttribs( 'save' );
@@ -4354,7 +4360,8 @@ HTML
                }
 
                $attribs = [
-                       'id' => 'wpPreview',
+                       'id' => 'wpPreviewWidget',
+                       'inputId' => 'wpPreview',
                        'name' => 'wpPreview',
                        'tabindex' => ++$tabindex,
                ] + Linker::tooltipAndAccesskeyAttribs( 'preview' );
@@ -4374,7 +4381,8 @@ HTML
                        );
                }
                $attribs = [
-                       'id' => 'wpDiff',
+                       'id' => 'wpDiffWidget',
+                       'inputId' => 'wpDiff',
                        'name' => 'wpDiff',
                        'tabindex' => ++$tabindex,
                ] + Linker::tooltipAndAccesskeyAttribs( 'diff' );
index 9150338..c6ccf31 100644 (file)
@@ -2192,8 +2192,6 @@ function wfIniGetBool( $setting ) {
  * @return string
  */
 function wfEscapeShellArg( /*...*/ ) {
-       wfInitShellLocale();
-
        $args = func_get_args();
        if ( count( $args ) === 1 && is_array( reset( $args ) ) ) {
                // If only one argument has been passed, and that argument is an array,
@@ -2308,8 +2306,6 @@ function wfShellExec( $cmd, &$retval = null, $environ = [],
        $includeStderr = isset( $options['duplicateStderr'] ) && $options['duplicateStderr'];
        $profileMethod = isset( $options['profileMethod'] ) ? $options['profileMethod'] : wfGetCaller();
 
-       wfInitShellLocale();
-
        $envcmd = '';
        foreach ( $environ as $k => $v ) {
                if ( wfIsWindows() ) {
@@ -2533,25 +2529,14 @@ function wfShellExecWithStderr( $cmd, &$retval = null, $environ = [], $limits =
 }
 
 /**
- * Set the locale for locale-sensitive operations
+ * Formerly set the locale for locale-sensitive operations
  *
- * Sets LC_ALL to a known value to work around issues like the following:
- * - https://bugs.php.net/bug.php?id=45132 escapeshellarg() destroys non-ASCII
- *   characters if LANG is not a UTF-8 locale
- * - T107128 Scribunto string comparison works case insensitive while the
- *   standard Lua case sensitive
+ * This is now done in Setup.php.
  *
+ * @deprecated since 1.30, no longer needed
  * @see $wgShellLocale
  */
 function wfInitShellLocale() {
-       static $done = false;
-       if ( $done ) {
-               return;
-       }
-       $done = true;
-       global $wgShellLocale;
-       putenv( "LC_ALL=$wgShellLocale" );
-       setlocale( LC_ALL, $wgShellLocale );
 }
 
 /**
index b18414d..a7214c7 100644 (file)
@@ -900,7 +900,6 @@ class MediaWiki {
 
                // Do any deferred jobs
                DeferredUpdates::doUpdates( 'enqueue' );
-               DeferredUpdates::setImmediateMode( true );
 
                // Make sure any lazy jobs are pushed
                JobQueueGroup::pushLazyJobs();
index e22f42c..df948f0 100644 (file)
@@ -3952,12 +3952,10 @@ class OutputPage extends ContextSource {
         * @param String $skinName The Skin name to determine the correct OOUI theme
         * @param String $dir Language direction
         */
-       public static function setupOOUI( $skinName = '', $dir = 'ltr' ) {
-               $themes = ExtensionRegistry::getInstance()->getAttribute( 'SkinOOUIThemes' );
-               // Make keys (skin names) lowercase for case-insensitive matching.
-               $themes = array_change_key_case( $themes, CASE_LOWER );
-               $theme = isset( $themes[$skinName] ) ? $themes[$skinName] : 'MediaWiki';
-               // For example, 'OOUI\MediaWikiTheme'.
+       public static function setupOOUI( $skinName = 'default', $dir = 'ltr' ) {
+               $themes = ResourceLoaderOOUIModule::getSkinThemeMap();
+               $theme = isset( $themes[$skinName] ) ? $themes[$skinName] : $themes['default'];
+               // For example, 'OOUI\WikimediaUITheme'.
                $themeClass = "OOUI\\{$theme}Theme";
                OOUI\Theme::setSingleton( new $themeClass() );
                OOUI\Element::setDefaultDir( $dir );
@@ -3976,7 +3974,6 @@ class OutputPage extends ContextSource {
                );
                $this->addModuleStyles( [
                        'oojs-ui-core.styles',
-                       'oojs-ui.styles.icons',
                        'oojs-ui.styles.indicators',
                        'oojs-ui.styles.textures',
                        'mediawiki.widgets.styles',
index 5ea96dd..b10cf23 100644 (file)
@@ -49,6 +49,10 @@ if ( !isset( $wgVersion ) ) {
 
 mb_internal_encoding( 'UTF-8' );
 
+// Set the configured locale on all requests for consisteny
+putenv( "LC_ALL=$wgShellLocale" );
+setlocale( LC_ALL, $wgShellLocale );
+
 // Set various default paths sensibly...
 $ps_default = Profiler::instance()->scopedProfileIn( $fname . '-defaults' );
 
index 3244801..1db9479 100644 (file)
@@ -28,7 +28,8 @@
                        "Pompilos",
                        "Igv",
                        "Fortega",
-                       "Luzcaru"
+                       "Luzcaru",
+                       "Javiersanp"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Documentation]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailing list]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API Announcements]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bugs & requests]\n</div>\n<strong>Status:</strong> Todas las funciones mostradas en esta página deberían estar funcionando, pero la API aún está en desarrollo activo, y puede cambiar en cualquier momento. Suscribase a [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce mailing list] para aviso de actualizaciones.\n\n<strong>Erroneous requests:</strong> Cuando se envían solicitudes erróneas a la API, se enviará un encabezado HTTP con la clave \"MediaWiki-API-Error\" y, luego, el valor del encabezado y el código de error devuelto se establecerán en el mismo valor. Para más información ver [[mw:Special:MyLanguage/API:Errors_and_warnings|API: Errors and warnings]].\n\n<strong>Testing:</strong> Para facilitar la comprobación de las solicitudes de API, consulte [[Special:ApiSandbox]].",
@@ -98,8 +99,8 @@
        "apihelp-createaccount-param-language": "Código de idioma a establecer como predeterminado para el usuario (opcional, predeterminado al contenido del idioma).",
        "apihelp-createaccount-example-pass": "Crear usuario <kbd>testuser</kbd> con la contraseña <kbd>test123</kbd>.",
        "apihelp-createaccount-example-mail": "Crear usuario <kbd>testmailuser</kbd> y enviar una contraseña generada aleatoriamente.",
-       "apihelp-cspreport-description": "Utilizado por los navegadores para reportar violaciones de la política de seguridad de contenidos. Este módulo no debe usarse nunca, excepto cuando se usa automáticamente por un navegador web CSP compatible.",
-       "apihelp-cspreport-param-reportonly": "Marcar un informe de una política de vigilancia y no a una política forzada",
+       "apihelp-cspreport-description": "Utilizado por los navegadores para informar de violaciones a la normativa de seguridad de contenidos. Este módulo no debe usarse nunca, excepto cuando se usa automáticamente por un navegador web compatible con CSP.",
+       "apihelp-cspreport-param-reportonly": "Marcar como informe proveniente de una normativa de vigilancia, no una impuesta",
        "apihelp-cspreport-param-source": "Qué generó la cabecera CSP que provocó este informe",
        "apihelp-delete-description": "Borrar una página.",
        "apihelp-delete-param-title": "Título de la página a eliminar. No se puede utilizar junto a <var>$1pageid</var>.",
        "apihelp-parse-param-preview": "Analizar en modo de vista previa.",
        "apihelp-parse-param-sectionpreview": "Analizar sección en modo de vista previa (también activa el modo de vista previa).",
        "apihelp-parse-param-disabletoc": "Omitir el sumario en la salida.",
+       "apihelp-parse-param-useskin": "Aplicar la piel seleccionada a la salida del analizador. Puede afectar a las siguientes propiedades: <kbd>langlinks</kbd>, <kbd>headitems</kbd>, <kbd>módulos</kbd>, <kbd>jsconfigvars</kbd>, <kbd>indicadores</kbd>.",
        "apihelp-parse-param-contentformat": "Formato de serialización de contenido utilizado para la introducción de texto. Sólo es válido cuando se utiliza con $1text.",
        "apihelp-parse-param-contentmodel": "Modelo de contenido del texto de entrada. Si se omite, se debe especificar $1title, y el valor por defecto será el modelo del título especificado. Solo es válido cuando se use junto con $1text.",
        "apihelp-parse-example-page": "Analizar una página.",
index ecc2feb..4e7d809 100644 (file)
@@ -36,7 +36,7 @@
        "apihelp-main-param-maxlag": "La latence maximale peut être utilisée quand MédiaWiki est installé sur un cluster de base de données répliqué. Pour éviter des actions provoquant un supplément de latence de réplication de site, ce paramètre peut faire attendre le client jusqu’à ce que la latence de réplication soit inférieure à une valeur spécifiée. En cas de latence excessive, le code d’erreur <samp>maxlag</samp> est renvoyé avec un message tel que <samp>Attente de $host : $lag secondes de délai</samp>.<br />Voyez [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manuel: Maxlag parameter]] pour plus d’information.",
        "apihelp-main-param-smaxage": "Fixer l’entête HTTP de contrôle de cache <code>s-maxage</code> à ce nombre de secondes. Les erreurs ne sont jamais mises en cache.",
        "apihelp-main-param-maxage": "Fixer l’entête HTTP de contrôle de cache <code>max-age</code> à ce nombre de secondes. Les erreurs ne sont jamais mises en cache.",
-       "apihelp-main-param-assert": "Vérifier si l’utilisateur est connecté si positionné à <kbd>user</kbd>, ou s'il a le droit d'un utilisateur robot si positionné à <kbd>bot</kbd>.",
+       "apihelp-main-param-assert": "Vérifier si l’utilisateur est connecté si la valeur est <kbd>user</kbd>, ou s’il a le droit d’un utilisateur robot si la valeur est <kbd>bot</kbd><!-- {{int:group-bot}} ? -->.",
        "apihelp-main-param-assertuser": "Vérifier que l’utilisateur actuel est l’utilisateur nommé.",
        "apihelp-main-param-requestid": "Toute valeur fournie ici sera incluse dans la réponse. Peut être utilisé pour distinguer des demandes.",
        "apihelp-main-param-servedby": "Inclure le nom d’hôte qui a renvoyé la requête dans les résultats.",
        "apihelp-parse-param-preview": "Analyser en mode aperçu.",
        "apihelp-parse-param-sectionpreview": "Analyser en mode aperçu de section (active aussi le mode aperçu).",
        "apihelp-parse-param-disabletoc": "Omettre la table des matières dans la sortie.",
-       "apihelp-parse-param-useskin": "Appliquer l’habillage sélectionné à la sortie de l’analyseur. Cela peut affecter les propriétés suivantes : <kbd>langlinks</kbd>, <kbd>headitems</kbd>, <kbd>modules</kbd>, <kbd>jsconfigvars</kbd>, <kbd>indicators</kbd>.",
+       "apihelp-parse-param-useskin": "Appliquer l’habillage sélectionné sur la sortie de l’analyseur. Cela peut affecter les propriétés suivantes : <kbd>langlinks</kbd>, <kbd>headitems</kbd>, <kbd>modules</kbd>, <kbd>jsconfigvars</kbd>, <kbd>indicators</kbd>.",
        "apihelp-parse-param-contentformat": "Format de sérialisation du contenu utilisé pour le texte d’entrée. Valide uniquement si utilisé avec $1text.",
        "apihelp-parse-param-contentmodel": "Modèle de contenu du texte d’entrée. Si omis, $1title doit être spécifié, et la valeur par défaut sera le modèle du titre spécifié. Valide uniquement quand utilisé avec $1text.",
        "apihelp-parse-example-page": "Analyser une page.",
        "apihelp-upload-param-filesize": "Taille du téléversement entier.",
        "apihelp-upload-param-offset": "Décalage du bloc en octets.",
        "apihelp-upload-param-chunk": "Partie du contenu.",
-       "apihelp-upload-param-async": "Faire de façon asynchrone les grosses opérations sur les fichiers quand c’est possible.",
+       "apihelp-upload-param-async": "Faire les grosses opérations de fichiers de façon asynchrone quand c’est possible.",
        "apihelp-upload-param-checkstatus": "Récupérer uniquement l’état de téléversement pour la clé de fichier donnée.",
        "apihelp-upload-example-url": "Téléverser depuis une URL",
        "apihelp-upload-example-filekey": "Terminer un téléversement qui a échoué à cause d’avertissements",
        "apihelp-userrights-param-remove": "Supprimer l’utilisateur de ces groupes.",
        "apihelp-userrights-param-reason": "Motif pour la modification.",
        "apihelp-userrights-param-tags": "Modifier les balises à appliquer à l’entrée dans le journal des droits utilisateur.",
-       "apihelp-userrights-example-user": "Ajouter l’utilisateur <kbd>FooBot</kbd> au groupe <kbd>bot</kbd>, et le supprimer des groupes <kbd>sysop</kbd> et <kbd>bureaucrat</kbd>.",
+       "apihelp-userrights-example-user": "Ajouter l’utilisateur <kbd>FooBot</kbd> au groupe <kbd>bot</kbd><!-- {{int:group-bot}} ? -->, et le supprimer des groupes <kbd>sysop</kbd> et <kbd>bureaucrat</kbd>.",
        "apihelp-userrights-example-userid": "Ajouter l’utilisateur d’ID <kbd>123</kbd> au groupe <kbd>robot</kbd>, et le supprimer des groupes <kbd>sysop</kbd> et <kbd>bureaucrate</kbd>.",
        "apihelp-userrights-example-expiry": "Ajouter l'utilisateur <kbd>SometimeSysop</kbd> au groupe <kbd>sysop</kbd> pour 1 mois.",
        "apihelp-validatepassword-description": "Valider un mot de passe en suivant les règles des mots de passe du wiki.\n\nLa validation est <samp>Good</samp> si le mot de passe est acceptable, <samp>Change</samp> s'il peut être utilisé pour se connecter et doit être changé, ou  <samp>Invalid</samp> s'il n'est pas utilisable.",
        "apierror-show": "Paramètre incorrect - des valeurs mutuellement exclusives ne peuvent pas être fournies.",
        "apierror-siteinfo-includealldenied": "Impossible d’afficher toutes les informatiosn du serveur, sauf si <var>$wgShowHostNames</var> vaut vrai.",
        "apierror-sizediffdisabled": "La différence de taille est désactivée dans le mode Miser.",
-       "apierror-spamdetected": "Votre modification a été refusée parce qu'elle contenait un fragment de spam: <code>$1</code>.",
+       "apierror-spamdetected": "Votre modification a été refusée parce qu’elle contenait un fragment de pourriel : <code>$1</code>.",
        "apierror-specialpage-cantexecute": "Vous n'avez pas l'autorisation d'afficher les résultats de cette page spéciale.",
        "apierror-stashedfilenotfound": "Impossible de trouver le fichier dans la réserve: $1.",
        "apierror-stashedit-missingtext": "Pas de texte en réserve associé à la donnée de hachage.",
index 71d2645..a48537c 100644 (file)
        "apihelp-query+blocks-example-simple": "Blokkok listázása.",
        "apihelp-query+blocks-example-users": "<kbd>Alice</kbd> és <kbd>Bob</kbd> blokkjainak listázása.",
        "apihelp-query+categories-description": "A lapok összes kategóriájának listázása.",
-       "apihelp-query+categories-param-prop": "A kategóriákhoz további lekérendő további tulajdonságok:",
+       "apihelp-query+categories-param-prop": "A kategóriákhoz lekérendő további tulajdonságok:",
        "apihelp-query+categories-paramvalue-prop-timestamp": "A kategória hozzáadásának időbélyege.",
        "apihelp-query+categories-paramvalue-prop-hidden": "A <code>_&#95;HIDDENCAT_&#95;</code> kapcsolóval elrejtett kategóriák megjelölése.",
        "apihelp-query+categories-param-show": "A megjelenítendő kategóriatípusok.",
        "apihelp-query+fileusage-paramvalue-prop-pageid": "A lapok lapazonosítói.",
        "apihelp-query+fileusage-paramvalue-prop-title": "A lapok címei.",
        "apihelp-query+fileusage-paramvalue-prop-redirect": "Az átirányítások megjelölése.",
-       "apihelp-query+fileusage-param-namespace": "Lapok listázása ebben a névtérben.",
+       "apihelp-query+fileusage-param-namespace": "Lapok listázása ezekben a névterekben.",
        "apihelp-query+fileusage-param-limit": "A visszaadandó lapok száma.",
        "apihelp-query+fileusage-param-show": "Szűrés az átirányítások alapján:\n;redirect: Csak átirányítások visszaadása.\n;!redirect: Átirányítások elrejtése.",
        "apihelp-query+fileusage-example-simple": "A [[:File:Example.jpg]] képet használó lapok listázása.",
        "apihelp-query+info-param-token": "Használd a <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> lekérdezést helyette.",
        "apihelp-query+info-example-simple": "Információk lekérése a <kbd>Main Page</kbd> lapról.",
        "apihelp-query+info-example-protection": "Alapvető és lapvédelmi információk lekérése a <kbd>Main Page</kbd> lapról.",
+       "apihelp-query+iwbacklinks-description": "Egy adott interwikilinkre hivatkozó lapok lekérése.\n\nHasználható adott előtagú vagy egy adott címre mutató (megadott előtagú) linkek keresésére. Mindkét paraméter elhagyásával az összes interwikilinket visszaadja.",
+       "apihelp-query+iwbacklinks-param-prefix": "Az interwiki előtagja.",
+       "apihelp-query+iwbacklinks-param-title": "A keresendő interwikilink. Az <var>$1blprefix</var> paraméterrel együtt használandó.",
+       "apihelp-query+iwbacklinks-param-limit": "A visszaadandó lapok maximális száma.",
+       "apihelp-query+iwbacklinks-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Az interwiki előtagja.",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Az interwiki címe.",
+       "apihelp-query+iwbacklinks-param-dir": "A listázás iránya.",
+       "apihelp-query+iwbacklinks-example-simple": "A [[wikibooks:Test]] könyvre hivatkozó lapok lekérése.",
+       "apihelp-query+iwbacklinks-example-generator": "Információk lekérése a [[wikibooks:Test]] könyvre hivatkozó lapokról.",
+       "apihelp-query+iwlinks-description": "A megadott lapokon található összes interwikilink lekérése.",
+       "apihelp-query+iwlinks-param-prop": "A nyelvközi hivatkozásokhoz lekérendő további tulajdonságok:",
+       "apihelp-query+iwlinks-param-limit": "A visszaadandó interwikilinkek száma.",
+       "apihelp-query+iwlinks-param-prefix": "Csak a megadott előtagú interwikilinkek visszaadása.",
+       "apihelp-query+iwlinks-param-title": "A keresendő interwikilink. Az <var>$1prefix</var> paraméterrel együtt használandó.",
+       "apihelp-query+iwlinks-param-dir": "A listázás iránya.",
+       "apihelp-query+iwlinks-example-simple": "A <kbd>Main Page</kbd> lapon található interwikilinkek lekérése.",
+       "apihelp-query+langbacklinks-description": "A megadott nyelvközi hivatkozásra hivatkozó lapok lekérése.\n\nHasználható adott előtagú vagy egy adott címre mutató (megadott előtagú) linkek keresésére. Mindkét paraméter elhagyásával az összes nyelvközi hivatkozást visszaadja.\n\nEz a lekérdezés nem feltétlenül veszi figyelembe a kiterjesztések által hozzáadott nyelvközi hivatkozásokat.",
+       "apihelp-query+langbacklinks-param-lang": "A nyelvközi hivatkozás nyelve.",
+       "apihelp-query+langbacklinks-param-title": "A keresendő nyelvközi hivatkozás. Az <var>$1lang</var> paraméterrel együtt használandó.",
+       "apihelp-query+langbacklinks-param-limit": "A visszaadandó lapok maximális száma.",
+       "apihelp-query+langbacklinks-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+langbacklinks-paramvalue-prop-lllang": "A nyelvközi hivatkozás nyelvkódja.",
+       "apihelp-query+langbacklinks-paramvalue-prop-lltitle": "A nyelvközi hivatkozás címe.",
+       "apihelp-query+langbacklinks-param-dir": "A listázás iránya.",
+       "apihelp-query+langbacklinks-example-simple": "A [[:fr:Test]] lapra hivatkozó lapok lekérése.",
+       "apihelp-query+langbacklinks-example-generator": "Információk lekérése a [[:fr:Test]] lapra hivatkozó lapokról.",
+       "apihelp-query+langlinks-description": "A megadott lapokon található összes nyelvközi hivatkozás lekérése.",
+       "apihelp-query+langlinks-param-limit": "A visszaadandó nyelvközi hivatkozások száma.",
+       "apihelp-query+langlinks-param-prop": "A nyelvközi hivatkozásokhoz lekérendő további tulajdonságok:",
+       "apihelp-query+langlinks-param-lang": "Csak ezen nyelvű nyelvközi hivatkozások visszaadása.",
+       "apihelp-query+langlinks-param-title": "A keresendő hivatkozás. Az <var>$1prefix</var> paraméterrel együtt használandó.",
+       "apihelp-query+langlinks-param-dir": "A listázás iránya.",
+       "apihelp-query+langlinks-param-inlanguagecode": "Nyelvkód a lefordított nyelvneveknek.",
+       "apihelp-query+langlinks-example-simple": "A <kbd>Main Page</kbd> lapon található nyelvközi hivatkozások lekérése.",
+       "apihelp-query+links-description": "A megadott lapokon található összes hivatkozás lekérése.",
+       "apihelp-query+links-param-namespace": "Csak az ezen névterekbe mutató hivatkozások visszaadása.",
+       "apihelp-query+links-param-limit": "A visszaadandó hivatkozások száma.",
+       "apihelp-query+links-param-titles": "Csak ezen címekre mutató hivatkozások listázása. Annak ellenőrzésére alkalmas, hogy egy lap hivatkozik-e egy adott lapra.",
+       "apihelp-query+links-param-dir": "A listázás iránya.",
+       "apihelp-query+links-example-simple": "A <kbd>Main Page</kbd> lapon található hivatkozások lekérése.",
+       "apihelp-query+links-example-generator": "Információk lekérése a <kbd>Main Page</kbd> lapon lévő hivatkozások céllapjairól.",
+       "apihelp-query+links-example-namespaces": "A <kbd>Main Page</kbd> lapon található, {{ns:user}} és {{ns:template}} névterekbe mutató hivatkozások lekérése.",
+       "apihelp-query+linkshere-description": "A megadott lapra hivatkozó lapok lekérése.",
+       "apihelp-query+linkshere-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "A lapok lapazonosítói.",
+       "apihelp-query+linkshere-paramvalue-prop-title": "A lapok címei.",
+       "apihelp-query+linkshere-paramvalue-prop-redirect": "Az átirányítások megjelölése.",
+       "apihelp-query+linkshere-param-namespace": "Lapok listázása ezekben a névterekben.",
+       "apihelp-query+linkshere-param-limit": "A visszaadandó lapok száma.",
+       "apihelp-query+linkshere-param-show": "Szűrés az átirányítások alapján:\n;redirect: Csak átirányítások visszaadása.\n;!redirect: Átirányítások elrejtése.",
+       "apihelp-query+linkshere-example-simple": "A [[Main Page]] lapra hivatkozó lapok listázása.",
+       "apihelp-query+linkshere-example-generator": "Információk lekérése a [[Main Page]] lapra hivatkozó lapokról.",
+       "apihelp-query+logevents-description": "Naplóbejegyzések lekérése.",
+       "apihelp-query+logevents-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+logevents-paramvalue-prop-ids": "A naplóbejegyzés azonosítója.",
+       "apihelp-query+logevents-paramvalue-prop-title": "Az eseményben érintett lap címe.",
+       "apihelp-query+logevents-paramvalue-prop-type": "A naplóbejegyzés típusa.",
+       "apihelp-query+logevents-paramvalue-prop-user": "Az eseményért felelős felhasználó.",
+       "apihelp-query+logevents-paramvalue-prop-userid": "Az eseményért felelős felhasználó azonosítója.",
+       "apihelp-query+logevents-paramvalue-prop-timestamp": "A naplóbejegyzés időbélyege.",
+       "apihelp-query+logevents-paramvalue-prop-comment": "A naplóbejegyzéshez tartozó megjegyzés.",
+       "apihelp-query+logevents-paramvalue-prop-details": "További részletek a naplóbejegyzésről.",
+       "apihelp-query+logevents-paramvalue-prop-tags": "A naplóbejegyzés címkéi.",
+       "apihelp-query+logevents-param-type": "Csak ezen típusú naplóbejegyzések visszaadása.",
+       "apihelp-query+logevents-param-start": "A listázás kezdő időbélyege.",
+       "apihelp-query+logevents-param-end": "A lista végét jelentő időbélyeg.",
+       "apihelp-query+logevents-param-user": "A bejegyzések szűrése az ezen felhasználó által végrehajtottakra.",
+       "apihelp-query+logevents-param-title": "A bejegyzések szűrése az ezen laphoz kapcsolódóakra.",
+       "apihelp-query+logevents-param-namespace": "A bejegyzések szűrése névtér alapján.",
+       "apihelp-query+logevents-param-prefix": "A bejegyzések szűrése az ezzel az előtaggal kezdődőekre.",
+       "apihelp-query+logevents-param-tag": "Csak ezzel a címkével ellátott bejegyzések listázása.",
+       "apihelp-query+logevents-param-limit": "A visszaadandó bejegyzések száma.",
+       "apihelp-query+logevents-example-simple": "A legutóbbi naplóbejegyzések listázása.",
+       "apihelp-query+pagepropnames-description": "A wikin elérhető laptulajdonságnevek listázása.",
+       "apihelp-query+pagepropnames-param-limit": "A visszaadandó nevek maximális száma.",
+       "apihelp-query+pagepropnames-example-simple": "Az első 10 tulajdonságnév lekérése.",
+       "apihelp-query+pageprops-description": "A lap tartalmában meghatározott különböző laptulajdonságok lekérése.",
+       "apihelp-query+pageprops-param-prop": "Csak ezen laptulajdonságok listázása (az [[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]] visszaadja a használatban lévő laptulajdonságokat). Annak ellenőrzésére alkalmas, hogy egy lap benne használ-e egy adott laptulajdonságot.",
+       "apihelp-query+pageprops-example-simple": "A <kbd>Main Page</kbd> és <kbd>MediaWiki</kbd> lap tulajdonságainak lekérése.",
+       "apihelp-query+pageswithprop-description": "Egy adott laptulajdonságot használó lapok listázása.",
+       "apihelp-query+pageswithprop-param-propname": "A listázandó laptulajdonság (az [[Special:ApiHelp/query+pagepropnames|action=query&list=pagepropnames]] visszaadja a használatban lévő laptulajdonságokat).",
+       "apihelp-query+pageswithprop-param-prop": "Visszaadandó információk:",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "A lap lapazonosítója.",
+       "apihelp-query+pageswithprop-paramvalue-prop-title": "A lap címe és névterének azonosítója.",
+       "apihelp-query+pageswithprop-paramvalue-prop-value": "A laptulajdonság értéke.",
+       "apihelp-query+pageswithprop-param-limit": "A lekérdezendő lapok maximális száma.",
+       "apihelp-query+pageswithprop-param-dir": "A rendezés iránya.",
+       "apihelp-query+pageswithprop-example-simple": "Az első 10 <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>-t használó lap listázása.",
+       "apihelp-query+pageswithprop-example-generator": "További információk lekérése az első 10 <code>_&#95;NOTOC_&#95;</code> kapcsolót használó lapról.",
+       "apihelp-query+prefixsearch-param-search": "A keresőkifejezés.",
+       "apihelp-query+prefixsearch-param-namespace": "A keresendő névterek.",
+       "apihelp-query+prefixsearch-param-limit": "Találatok maximális száma.",
+       "apihelp-query+prefixsearch-param-offset": "Kihagyandó találatok száma.",
+       "apihelp-query+prefixsearch-example-simple": "<kbd>meaning</kbd> kezdetű lapcímek keresése.",
+       "apihelp-query+prefixsearch-param-profile": "Használandó keresőprofil.",
+       "apihelp-query+protectedtitles-description": "Létrehozás ellen védett lapok listázása.",
+       "apihelp-query+protectedtitles-param-namespace": "Címek listázása csak ezekben a névterekben.",
+       "apihelp-query+protectedtitles-param-level": "Csak ilyen védelmi szintű címek listázása.",
+       "apihelp-query+protectedtitles-param-limit": "A visszaadandó lapok maximális száma.",
+       "apihelp-query+protectedtitles-param-start": "Listázás ettől a védelem-időbélyegtől.",
+       "apihelp-query+protectedtitles-param-end": "Listázás eddig a védelem-időbélyegig.",
+       "apihelp-query+protectedtitles-param-prop": "Lekérendő tulajdonságok:",
+       "apihelp-query+protectedtitles-paramvalue-prop-timestamp": "A levédés időbélyege.",
+       "apihelp-query+protectedtitles-paramvalue-prop-user": "A levédő felhasználó.",
+       "apihelp-query+protectedtitles-paramvalue-prop-userid": "A levédő felhasználó azonosítója.",
+       "apihelp-query+protectedtitles-paramvalue-prop-comment": "A védelem indoka.",
+       "apihelp-query+protectedtitles-paramvalue-prop-expiry": "A védelem lejáratának időbélyege.",
+       "apihelp-query+protectedtitles-paramvalue-prop-level": "Védelmi szint.",
+       "apihelp-query+protectedtitles-example-simple": "A védett címek listázása.",
+       "apihelp-query+protectedtitles-example-generator": "A fő névtérben lévő védett címekre mutató hivatkozások lekérése.",
+       "apihelp-query+querypage-description": "Egy QueryPage-alapú speciális lap listájának lekérése.",
+       "apihelp-query+querypage-param-limit": "Megjelenítendő találatok száma.",
+       "apihelp-query+querypage-example-ancientpages": "A [[Special:Ancientpages]] eredményeinek lekérése.",
+       "apihelp-query+random-param-namespace": "Lapok visszaadása csak ezekből a névterekből.",
+       "apihelp-query+random-param-limit": "A visszaadandó véletlenszerű lapok száma.",
+       "apihelp-query+random-param-redirect": "Használd a <kbd>$1filterredir=redirects</kbd> paramétert helyette.",
+       "apihelp-query+random-param-filterredir": "Szűrés átirányítások alapján.",
+       "apihelp-query+random-example-simple": "Két lap visszaadása találomra a fő névtérből.",
+       "apihelp-query+random-example-generator": "Lapinformációk lekérése két véletlenszerűen kiválasztott fő névtérbeli lapról.",
        "apihelp-userrights-param-userid": "Felhasználói azonosító.",
        "api-help-title": "MediaWiki API súgó",
        "api-help-lead": "Ez egy automatikusan generált MediaWiki API-dokumentációs lap.\n\nDokumentáció és példák: https://www.mediawiki.org/wiki/API",
index c2d67e1..ee4f833 100644 (file)
        "apierror-invalidparammix-parse-new-section": "<kbd>section=new</kbd> não pode ser combinado com os parâmetros <var>oldid</var>, <var>pageid</var> e <var>page</var>. Use <var>title</var> e <var>text</var>, por favor.",
        "apierror-invalidparammix": "{{PLURAL:$2||Os parâmetros}} $1 não podem ser usados em conjunto.",
        "apierror-invalidsection": "O parâmetro <var>section</var> tem de ser um identificador de secção válido ou <kbd>new</kbd>.",
+       "apierror-invalidsha1base36hash": "O resumo criptográfico SHA1Base36 fornecido não é válido.",
+       "apierror-invalidsha1hash": "O resumo criptográfico SHA1 fornecido não é válido.",
+       "apierror-invalidtitle": "Título inválido \"$1\".",
+       "apierror-invalidurlparam": "Valor inválido para <var>$1urlparam</var> (<kbd>$2=$3</kbd>).",
+       "apierror-invaliduser": "Nome de utilizador inválido \"$1\".",
+       "apierror-invaliduserid": "O identificador de utilizador <var>$1</var> não é válido.",
+       "apierror-maxlag-generic": "À espera de um servidor de base de dados: $1 {{PLURAL:$1|segundo|segundos}} de atraso.",
+       "apierror-maxlag": "À espera de $2: $1 {{PLURAL:$1|segundo|segundos}} de atraso.",
+       "apierror-mimesearchdisabled": "A pesquisa MIME é desativada no modo avarento.",
+       "apierror-missingcontent-pageid": "Conteúdo em falta para a página com o identificador $1.",
+       "apierror-missingparam-at-least-one-of": "{{PLURAL:$2|O parâmetro|Pelo menos um dos parâmetros}} $1 é obrigatório.",
+       "apierror-missingparam-one-of": "{{PLURAL:$2|O parâmetro|Um dos parâmetros}} $1 é obrigatório.",
+       "apierror-missingparam": "O parâmetro <var>$1</var> tem de ser definido.",
+       "apierror-missingrev-pageid": "Não há nenhuma revisão atual da página com o identificador $1.",
+       "apierror-missingtitle-createonly": "Os títulos em falta só podem ser protegidos com <kbd>create</kbd>.",
+       "apierror-missingtitle": "A página que especificou não existe.",
+       "apierror-missingtitle-byname": "A página $1 não existe.",
+       "apierror-moduledisabled": "O módulo <kbd>$1</kbd> foi desativado.",
+       "apierror-multival-only-one-of": "Só é permitido {{PLURAL:$3|o valor|um dos valores}} $2 para o parâmetro <var>$1</var>.",
+       "apierror-multival-only-one": "Só é permitido um valor para o parâmetro <var>$1</var>.",
+       "apierror-multpages": "<var>$1</var> só pode ser usado com uma única página.",
+       "apierror-mustbeloggedin-changeauth": "Tem de estar autenticado para alterar dados de autenticação.",
+       "apierror-mustbeloggedin-generic": "Tem de estar autenticado.",
+       "apierror-mustbeloggedin-linkaccounts": "Tem de estar autenticado para ligar contas.",
+       "apierror-mustbeloggedin-removeauth": "Tem de estar autenticado para remover dados de autenticação.",
+       "apierror-mustbeloggedin-uploadstash": "A área dos ficheiros escondidos só está disponível para utilizadores autenticados.",
+       "apierror-mustbeloggedin": "Tem de ter uma sessão iniciada para $1.",
+       "apierror-mustbeposted": "O módulo <kbd>$1</kbd> requer um pedido POST.",
+       "apierror-mustpostparams": "{{PLURAL:$2|O seguinte parâmetro foi encontrado|Os seguintes parâmetros foram encontrados}} no texto da pesquisa, mas têm de estar no corpo do POST: $1.",
+       "apierror-noapiwrite": "A edição desta wiki através da API foi impossibilitada. Certifique-se de que a declaração <code>$wgEnableWriteAPI=true;</code> está incluída no ficheiro <code>LocalSettings.php</code> da wiki.",
        "apierror-systemblocked": "Foi automaticamente bloqueado pelo MediaWiki.",
        "api-credits-header": "Créditos",
        "api-credits": "Programadores da API:\n* Yuri Astrakhan (criador, programador principal, set 2006–set 2007)\n* Roan Kattouw (programador principal, set 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Brad Jorsch (programador principal, 2013–presente)\n\nPode enviar os seus comentários, sugestões e perguntas para o endereço mediawiki-api@lists.wikimedia.org, ou reportar quaisquer defeitos que encontre em https://phabricator.wikimedia.org/."
index 5992b40..9de5aa0 100644 (file)
        "apihelp-parse-param-preview": "Проанализировать в режиме препросмотра.",
        "apihelp-parse-param-sectionpreview": "Распарсить в режиме предпросмотра раздела (также активирует режим предпросмотра).",
        "apihelp-parse-param-disabletoc": "Не включать в вывод содержание.",
+       "apihelp-parse-param-useskin": "Применить выбранную тему оформления к результату работы парсера. Может затронуть следующие свойства: <kbd>langlinks</kbd>, <kbd>headitems</kbd>, <kbd>modules</kbd>, <kbd>jsconfigvars</kbd>, <kbd>indicators</kbd>.",
        "apihelp-parse-param-contentformat": "Формат сериализации содержимого, использующийся во входном тексте. Доступен только при использовании с $1text.",
        "apihelp-parse-param-contentmodel": "Модель содержимого входного текста. Если пропущена, должен быть задан $1title, и значение по умолчанию будет взято в зависимости от указанного названия. Доступно только при использовании с $1text.",
        "apihelp-parse-example-page": "Парсинг страницы.",
index bbe8687..51f5a28 100644 (file)
@@ -55,8 +55,6 @@ class DeferredUpdates {
        private static $preSendUpdates = [];
        /** @var DeferrableUpdate[] Updates to be deferred until after request end */
        private static $postSendUpdates = [];
-       /** @var bool Whether to just run updates in addUpdate() */
-       private static $immediateMode = false;
 
        const ALL = 0; // all updates; in web requests, use only after flushing the output buffer
        const PRESEND = 1; // for updates that should run before flushing output buffer
@@ -90,12 +88,6 @@ class DeferredUpdates {
                        self::push( self::$postSendUpdates, $update );
                }
 
-               if ( self::$immediateMode ) {
-                       // No more explicit doUpdates() calls will happen, so run this now
-                       self::doUpdates( 'run' );
-                       return;
-               }
-
                // Try to run the updates now if in CLI mode and no transaction is active.
                // This covers scripts that don't/barely use the DB but make updates to other stores.
                if ( $wgCommandLineMode ) {
@@ -140,9 +132,10 @@ class DeferredUpdates {
        /**
         * @param bool $value Whether to just immediately run updates in addUpdate()
         * @since 1.28
+        * @deprecated 1.29 Causes issues in Web-executed jobs - see T165714 and T100085.
         */
        public static function setImmediateMode( $value ) {
-               self::$immediateMode = (bool)$value;
+               wfDeprecated( __METHOD__, '1.29' );
        }
 
        /**
@@ -339,6 +332,7 @@ class DeferredUpdates {
 
        /**
         * @param integer $stage DeferredUpdates constant (PRESEND, POSTSEND, or ALL)
+        * @return DeferrableUpdate[]
         * @since 1.29
         */
        public static function getPendingUpdates( $stage = self::ALL ) {
index 0ad0527..53211fe 100644 (file)
@@ -2165,13 +2165,15 @@ abstract class File implements IDBAccessObject {
                if ( $handler ) {
                        $metadata = $this->getMetadata();
 
-                       if ( $metadata ) {
-                               if ( is_string( $metadata ) ) {
-                                       $metadata = MediaWiki\quietCall( 'unserialize', $metadata );
-                               }
+                       if ( is_string( $metadata ) ) {
+                               $metadata = MediaWiki\quietCall( 'unserialize', $metadata );
+                       }
 
-                               return $handler->getContentHeaders( $metadata, $this->getWidth(), $this->getHeight() );
+                       if ( !is_array( $metadata ) ) {
+                               $metadata = [];
                        }
+
+                       return $handler->getContentHeaders( $metadata, $this->getWidth(), $this->getHeight() );
                }
 
                return [];
index 8514cc8..a90156f 100644 (file)
@@ -1202,6 +1202,10 @@ class LocalFile extends File {
                if ( $handler ) {
                        $metadata = MediaWiki\quietCall( 'unserialize', $props['metadata'] );
 
+                       if ( !is_array( $metadata ) ) {
+                               $metadata = [];
+                       }
+
                        $options['headers'] = $handler->getContentHeaders(
                                $metadata, $props['width'], $props['height']
                        );
index c257481..b821846 100644 (file)
@@ -4,5 +4,56 @@
                        "محک"
                ]
        },
+       "config-information": "اطلاعات",
+       "config-localsettings-key": "آپگریت کلید:",
+       "config-your-language": "شمه زوون:",
+       "config-wiki-language": "ویکی زوون:",
+       "config-back": "→ دِگِرِستِن",
+       "config-continue": "دمباله ←",
+       "config-page-language": "زوون",
+       "config-page-welcome": "مدیاویکی ره خِش بمونی!",
+       "config-page-dbconnect": "اتصال به دیتابیس",
+       "config-page-name": "نوم",
+       "config-page-options": "تنظیمات",
+       "config-page-install": "نصب",
+       "config-page-complete": "کامل!",
+       "config-page-restart": "دِباره نصب هاکردن",
+       "config-page-readme": "مه ره ونگ هاکن",
+       "config-page-releasenotes": "انتشار یادداشتون",
+       "config-page-copying": "کپی هاکردن",
+       "config-page-upgradedoc": "آپگریت هاکردن",
+       "config-page-existingwiki": "دیی ویکی",
+       "config-help-restart": "خانی تموم اطلاعاتی که ذخیره بینه ره حذف هاکنین و اَی این صوه سَری دِباره نصب هاکردن ره شروع هاکنین؟",
+       "config-restart": "اره. دِباره",
+       "config-env-good": "محیط بررسی بیّه.\nشما توندی مدیاویکی ره نصب هاکنی.",
+       "config-env-bad": "محیط بررسی بیه.\nشما نتوندی مدیاویکی ره نصب هاکنی.",
+       "config-env-php": "پی‌اچ‌پی $1 نصب بیه.",
+       "config-env-hhvm": "اچ‌اچ‌وی‌ام $1 نصب بیه.",
+       "config-unicode-using-intl": "عادی یونیکد وسه [http://pecl.php.net/intl افزونهٔ intl برای PECL] جه استفاده هاکن.",
+       "config-memory-raised": "PHP's <code>memory_limit</code>, نسخهٔ $1 هسته، ونه نسخهٔ $2 ره بَیری آپگریت هاکنی.",
+       "config-xcache": "[http://xcache.lighttpd.net/ XCache] نصب بیه.",
+       "config-apc": "[http://www.php.net/apc APC] نصب بیه.",
+       "config-apcu": "[http://www.php.net/apcu APCu] نصب بیه.",
+       "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] نصب بیه.",
+       "config-diff3-bad": "GNU diff3 پیدا نیه.",
+       "config-mysql-binary": "باینری",
+       "config-mysql-utf8": "UTF-8",
+       "config-mssql-auth": "نوع تأیید:",
+       "config-ns-generic": "پروژه",
+       "config-ns-other": "دیگه ( تعیین هاکنین)",
+       "config-ns-other-default": "مه‌ویکی",
+       "config-admin-box": "مدیر ِکاروری حیساب",
+       "config-admin-name": "شمه کاروری نوم:",
+       "config-admin-password": "پسوُرد:",
+       "config-admin-password-confirm": "دِباره پسورد:",
+       "config-admin-password-mismatch": "دِتا پسوردی که بنویشتی اتجور نینه",
+       "config-admin-email": "ایمیل آدرس:",
+       "config-admin-error-bademail": "شمه ایمیل آدرس مشکل دارنه.",
+       "config-optional-continue": "مه جه ویشته سوال هاپرس.",
+       "config-optional-skip": "اسا خستومه، زودته ویکی ره نصب هاکن.",
+       "config-profile-wiki": "ویکی ره دیار هاکن",
+       "config-profile-private": "خصوصی ویکی",
+       "config-license-pd": "عمومی دامنه",
+       "config-email-settings": "ایمیل تنظیمات",
        "config-help": "راهنما"
 }
index 877740f..ab365ec 100644 (file)
@@ -18,7 +18,8 @@
                        "Reke",
                        "Suchichi02",
                        "Winstonyin",
-                       "Wehwei"
+                       "Wehwei",
+                       "Wwycheuk"
                ]
        },
        "config-desc": "MediaWiki 安裝程式",
@@ -41,7 +42,7 @@
        "config-back": "← 返回",
        "config-continue": "繼續 →",
        "config-page-language": "語言",
-       "config-page-welcome": "歡迎您來到 MediaWiki!",
+       "config-page-welcome": "歡迎使用 MediaWiki!",
        "config-page-dbconnect": "連線到資料庫",
        "config-page-upgrade": "升級目前安裝的版本",
        "config-page-dbsettings": "資料庫設定",
index 6415533..a1aeaba 100644 (file)
@@ -291,6 +291,8 @@ class JobRunner implements LoggerAwareInterface {
                        $this->commitMasterChanges( $lbFactory, $job, $fnameTrxOwner );
                        // Run any deferred update tasks; doUpdates() manages transactions itself
                        DeferredUpdates::doUpdates();
+                       // Push lazy jobs added by the job or its deferred udpates
+                       JobQueueGroup::pushLazyJobs();
                } catch ( Exception $e ) {
                        MWExceptionHandler::rollbackMasterChangesAndLog( $e );
                        $status = false;
index dcd276c..f260850 100644 (file)
@@ -471,7 +471,7 @@ class DjVuHandler extends ImageHandler {
        * @since 1.30
        */
        public function getContentHeaders( $metadata, $fallbackWidth = null, $fallbackHeight = null ) {
-               if ( !is_array( $metadata ) || !isset( $metadata['xml'] ) ) {
+               if ( !isset( $metadata['xml'] ) ) {
                        return [];
                }
 
index 0d12840..d144987 100644 (file)
@@ -253,7 +253,6 @@ class ResourceLoader implements LoggerAwareInterface {
 
                // Register core modules
                $this->register( include "$IP/resources/Resources.php" );
-               $this->register( include "$IP/resources/ResourcesOOUI.php" );
                // Register extension modules
                $this->register( $config->get( 'ResourceModules' ) );
 
diff --git a/includes/resourceloader/ResourceLoaderOOUIFileModule.php b/includes/resourceloader/ResourceLoaderOOUIFileModule.php
new file mode 100644 (file)
index 0000000..135efa7
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * ResourceLoaderFileModule which magically loads the right skinScripts and skinStyles for every
+ * skin, using the specified OOUI theme for each.
+ *
+ * @since 1.30
+ */
+class ResourceLoaderOOUIFileModule extends ResourceLoaderFileModule {
+       use ResourceLoaderOOUIModule;
+
+       public function __construct( $options = [] ) {
+               if ( isset( $options[ 'themeScripts' ] ) ) {
+                       $options['skinScripts'] = $this->getSkinSpecific( $options[ 'themeScripts' ], 'scripts' );
+               }
+               if ( isset( $options[ 'themeStyles' ] ) ) {
+                       $options['skinStyles'] = $this->getSkinSpecific( $options[ 'themeStyles' ], 'styles' );
+               }
+
+               parent::__construct( $options );
+       }
+
+       /**
+        * Helper function to generate values for 'skinStyles' and 'skinScripts'.
+        *
+        * @param string $module Module to generate skinStyles/skinScripts for:
+        *   'core', 'widgets', 'toolbars', 'windows'
+        * @param string $which 'scripts' or 'styles'
+        * @return array
+        */
+       private function getSkinSpecific( $module, $which ) {
+               $themes = self::getSkinThemeMap();
+
+               return array_combine(
+                       array_keys( $themes ),
+                       array_map( function ( $theme ) use ( $module, $which ) {
+                               if ( $which === 'scripts' ) {
+                                       return $this->getThemeScriptsPath( $theme, $module );
+                               } else {
+                                       return $this->getThemeStylesPath( $theme, $module );
+                               }
+                       }, array_values( $themes ) )
+               );
+       }
+}
index 426ba67..ee87d8d 100644 (file)
  * @since 1.26
  */
 class ResourceLoaderOOUIImageModule extends ResourceLoaderImageModule {
+       use ResourceLoaderOOUIModule;
+
        protected function loadFromDefinition() {
                if ( $this->definition === null ) {
                        // Do nothing if definition was already processed
                        return;
                }
 
-               // Core default themes
-               $themes = [ 'default' => 'wikimediaui' ];
-               $themes += ExtensionRegistry::getInstance()->getAttribute( 'SkinOOUIThemes' );
+               $themes = self::getSkinThemeMap();
 
-               $name = $this->definition['name'];
-               $rootPath = $this->definition['rootPath'];
+               // For backwards-compatibility, allow missing 'themeImages'
+               $module = isset( $this->definition['themeImages'] ) ? $this->definition['themeImages'] : '';
 
                $definition = [];
                foreach ( $themes as $skin => $theme ) {
                        // Find the path to the JSON file which contains the actual image definitions for this theme
-                       // TODO Allow extensions to specify this path somehow
-                       $dataPath = $rootPath . '/' . strtolower( $theme ) . '/' . $name . '.json';
+                       if ( $module ) {
+                               $dataPath = $this->getThemeImagesPath( $theme, $module );
+                       } else {
+                               // Backwards-compatibility for things that probably shouldn't have used this class...
+                               $dataPath =
+                                       $this->definition['rootPath'] . '/' .
+                                       strtolower( $theme ) . '/' .
+                                       $this->definition['name'] . '.json';
+                       }
                        $localDataPath = $this->localBasePath . '/' . $dataPath;
 
                        // If there's no file for this module of this theme, that's okay, it will just use the defaults
@@ -79,7 +86,7 @@ class ResourceLoaderOOUIImageModule extends ResourceLoaderImageModule {
                                                } elseif ( $definition[$key] !== $data[$key] ) {
                                                        throw new Exception(
                                                                "Mismatched OOUI theme images definition: " .
-                                                                       "key '$key' of theme '$theme' " .
+                                                                       "key '$key' of theme '$theme' for module '$module' " .
                                                                        "does not match other themes"
                                                        );
                                                }
@@ -88,6 +95,16 @@ class ResourceLoaderOOUIImageModule extends ResourceLoaderImageModule {
                        }
                }
 
+               // Extra selectors to allow using the same icons for old-style MediaWiki UI code
+               if ( substr( $module, 0, 5 ) === 'icons' ) {
+                       $definition['selectorWithoutVariant'] = '.oo-ui-icon-{name}, .mw-ui-icon-{name}:before';
+                       $definition['selectorWithVariant'] = '
+                               .oo-ui-image-{variant}.oo-ui-icon-{name}, .mw-ui-icon-{name}-{variant}:before,
+                               /* Hack for Flow, see T110051 */
+                               .mw-ui-hovericon:hover .mw-ui-icon-{name}-{variant}-hover:before,
+                               .mw-ui-hovericon.mw-ui-icon-{name}-{variant}-hover:hover:before';
+               }
+
                // Fields from module definition silently override keys from JSON files
                $this->definition += $definition;
 
diff --git a/includes/resourceloader/ResourceLoaderOOUIModule.php b/includes/resourceloader/ResourceLoaderOOUIModule.php
new file mode 100644 (file)
index 0000000..4228a45
--- /dev/null
@@ -0,0 +1,146 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Convenience methods for dealing with OOUI themes and their relations to MW skins.
+ *
+ * @since 1.30
+ */
+trait ResourceLoaderOOUIModule {
+       protected static $knownScriptsModules = [ 'core' ];
+       protected static $knownStylesModules = [ 'core', 'widgets', 'toolbars', 'windows' ];
+       protected static $knownImagesModules = [
+               'indicators', 'textures',
+               // Extra icons
+               'icons-accessibility',
+               'icons-alerts',
+               'icons-content',
+               'icons-editing-advanced',
+               'icons-editing-core',
+               'icons-editing-list',
+               'icons-editing-styling',
+               'icons-interactions',
+               'icons-layout',
+               'icons-location',
+               'icons-media',
+               'icons-moderation',
+               'icons-movement',
+               'icons-user',
+               'icons-wikimedia',
+       ];
+
+       // Note that keys must be lowercase, values TitleCase.
+       protected static $builtinSkinThemeMap = [
+               'default' => 'WikimediaUI',
+       ];
+
+       // Note that keys must be TitleCase.
+       protected static $builtinThemePaths = [
+               'WikimediaUI' => [
+                       'scripts' => 'resources/lib/oojs-ui/oojs-ui-wikimediaui.js',
+                       'styles' => 'resources/lib/oojs-ui/oojs-ui-{module}-wikimediaui.css',
+                       'images' => 'resources/lib/oojs-ui/themes/wikimediaui/{module}.json',
+               ],
+               'Apex' => [
+                       'scripts' => 'resources/lib/oojs-ui/oojs-ui-apex.js',
+                       'styles' => 'resources/lib/oojs-ui/oojs-ui-{module}-apex.css',
+                       'images' => 'resources/lib/oojs-ui/themes/apex/{module}.json',
+               ],
+       ];
+
+       /**
+        * Return a map of skin names (in lowercase) to OOUI theme names, defining which theme a given
+        * skin should use.
+        *
+        * @return array
+        */
+       public static function getSkinThemeMap() {
+               $themeMap = self::$builtinSkinThemeMap;
+               $themeMap += ExtensionRegistry::getInstance()->getAttribute( 'SkinOOUIThemes' );
+               return $themeMap;
+       }
+
+       /**
+        * Return a map of theme names to lists of paths from which a given theme should be loaded.
+        *
+        * Keys are theme names, values are associative arrays. Keys of the inner array are 'scripts',
+        * 'styles', or 'images', and values are string paths.
+        *
+        * Additionally, the string '{module}' in paths represents the name of the module to load.
+        *
+        * @return array
+        */
+       protected static function getThemePaths() {
+               $themePaths = self::$builtinThemePaths;
+               return $themePaths;
+       }
+
+       /**
+        * Return a path to load given module of given theme from.
+        *
+        * @param string $theme OOUI theme name, for example 'WikimediaUI' or 'Apex'
+        * @param string $kind Kind of the module: 'scripts', 'styles', or 'images'
+        * @param string $module Module name, for valid values see $knownScriptsModules,
+        *     $knownStylesModules, $knownImagesModules
+        * @return string
+        */
+       protected function getThemePath( $theme, $kind, $module ) {
+               $paths = self::getThemePaths();
+               $path = $paths[ $theme ][ $kind ];
+               $path = str_replace( '{module}', $module, $path );
+               return $path;
+       }
+
+       /**
+        * @param string $theme See getThemePath()
+        * @param string $module See getThemePath()
+        * @return string
+        */
+       protected function getThemeScriptsPath( $theme, $module ) {
+               if ( !in_array( $module, self::$knownScriptsModules ) ) {
+                       throw new InvalidArgumentException( "Invalid OOUI scripts module '$module'" );
+               }
+               return $this->getThemePath( $theme, 'scripts', $module );
+       }
+
+       /**
+        * @param string $theme See getThemePath()
+        * @param string $module See getThemePath()
+        * @return string
+        */
+       protected function getThemeStylesPath( $theme, $module ) {
+               if ( !in_array( $module, self::$knownStylesModules ) ) {
+                       throw new InvalidArgumentException( "Invalid OOUI styles module '$module'" );
+               }
+               return $this->getThemePath( $theme, 'styles', $module );
+       }
+
+       /**
+        * @param string $theme See getThemePath()
+        * @param string $module See getThemePath()
+        * @return string
+        */
+       protected function getThemeImagesPath( $theme, $module ) {
+               if ( !in_array( $module, self::$knownImagesModules ) ) {
+                       throw new InvalidArgumentException( "Invalid OOUI images module '$module'" );
+               }
+               return $this->getThemePath( $theme, 'images', $module );
+       }
+}
index bd164ce..722f051 100644 (file)
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (راجع أيضا [[Special:NewPages|قائمة الصفحات الجديدة]])",
        "recentchanges-submit": "أظهر",
        "rcfilters-activefilters": "المرشحات النشطة",
-       "rcfilters-quickfilters": "وصلات سريعة",
+       "rcfilters-quickfilters": "إعدادات الترشيح المحفوظة",
        "rcfilters-savedqueries-defaultlabel": "مرشحات محفوظة",
        "rcfilters-savedqueries-rename": "أعد التسمية",
        "rcfilters-savedqueries-setdefault": "حفظ كقيمة افتراضية",
        "rcfilters-savedqueries-unsetdefault": "إزالة القيمة الافتراضية",
        "rcfilters-savedqueries-remove": "أزل",
        "rcfilters-savedqueries-new-name-label": "الاسم",
-       "rcfilters-savedqueries-apply-label": "Ø£Ù\86شئ Ù\88صÙ\84Ø© Ø³Ø±Ù\8aعة",
+       "rcfilters-savedqueries-apply-label": "احÙ\81ظ Ø§Ù\84إعدادات",
        "rcfilters-savedqueries-cancel-label": "ألغ",
-       "rcfilters-savedqueries-add-new-title": "احÙ\81ظ Ø§Ù\84Ù\85تغÙ\8aرات Ù\83Ù\88صÙ\84ات Ø³Ø±Ù\8aعة",
+       "rcfilters-savedqueries-add-new-title": "احÙ\81ظ Ø¥Ø¹Ø¯Ø§Ø¯Ø§Øª Ø§Ù\84Ù\85رشحات Ø§Ù\84حاÙ\84Ù\8aة",
        "rcfilters-restore-default-filters": "استرجاع المرشحات الافتراضية",
        "rcfilters-clear-all-filters": "مسح كل المرشحات",
        "rcfilters-search-placeholder": "رشح أحدث التغييرات (تصفح أو ابدأ الكتابة)",
index 60ed22d..a1c9b53 100644 (file)
        "rcshowhidemine": "মোৰ সম্পাদনা $1",
        "rcshowhidemine-show": "দেখুৱাওক",
        "rcshowhidemine-hide": "লুকুৱাওক",
+       "rcshowhidecategorization": "পৃষ্ঠা শ্ৰেণীকৰণ $1",
        "rcshowhidecategorization-show": "দেখুৱাওক",
        "rcshowhidecategorization-hide": "লুকুৱাওক",
        "rclinks": "যোৱা $2 দিনত হোৱা $1 টা সাল-সলনি চাওক ।",
        "wlheader-showupdated": "আপোনাৰ শেষ পৰিদৰ্শনৰ পিছত সলনি হোৱা পৃষ্ঠাসমূহ '''গাঢ়''' আখৰত দেখুওৱা হৈছে।",
        "wlnote": "তলত {{PLURAL:$1| হ'ল সৰ্বশেষ পৰিৱৰ্তন|হ'ল সৰ্বশেষ '''$1''' পৰিৱৰ্তনসমূহ}} সৰ্বশেষ {{PLURAL:$2|ঘন্টা|'''$2''' ঘন্টা}}, $3, $4 -ৰ হিচাপে।",
        "wlshowlast": "যোৱা $1 ঘণ্টা $2 দিন  চাওক",
+       "wlshowhidecategorization": "পৃষ্ঠা শ্ৰেণীকৰণ",
        "watchlist-options": "লক্ষ্য-তালিকা পছন্দসমূহ",
        "watching": "চকু দিয়া হৈছে.....",
        "unwatching": "আঁতৰোৱা হৈ আছে.....",
index 7d57520..beac634 100644 (file)
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Amosar",
        "rcfilters-activefilters": "Filtros activos",
-       "rcfilters-quickfilters": "Enllaces rápidos",
+       "rcfilters-quickfilters": "Preferencies de filtru guardaes",
        "rcfilters-quickfilters-placeholder-title": "Entá nun se guardaron enllaces",
        "rcfilters-quickfilters-placeholder-description": "Pa guardar les preferencies del filtru y volver a usales sero, pulsia nel iconu del marcador del área de Filtru Activu más abaxo.",
        "rcfilters-savedqueries-defaultlabel": "Filtros guardaos",
        "rcfilters-savedqueries-unsetdefault": "Quitar predeterminao",
        "rcfilters-savedqueries-remove": "Desaniciar",
        "rcfilters-savedqueries-new-name-label": "Nome",
-       "rcfilters-savedqueries-apply-label": "Crear enllaz rápidu",
+       "rcfilters-savedqueries-apply-label": "Guardar la configuración",
        "rcfilters-savedqueries-cancel-label": "Encaboxar",
-       "rcfilters-savedqueries-add-new-title": "Guardar filtros como enllaz rápidu",
+       "rcfilters-savedqueries-add-new-title": "Guardar les preferencies de filtru actuales",
        "rcfilters-restore-default-filters": "Restaurar los filtros predeterminaos",
        "rcfilters-clear-all-filters": "Borrar tolos filtros",
        "rcfilters-search-placeholder": "Filtriar los cambeos recién (restola o empieza a escribir)",
        "autoblocklist-submit": "Guetar",
        "autoblocklist-legend": "Llista de bloqueos automáticos",
        "autoblocklist-localblocks": "{{PLURAL:$1|Bloquéu automáticu llocal|Bloqueos automáticos llocales}}",
+       "autoblocklist-total-autoblocks": "Númberu total de bloqueos automáticos: $1",
        "autoblocklist-empty": "La llista de bloqueos automáticos ta balera.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Otru bloquéu automáticu|Otros bloqueos automáticos}}",
        "ipblocklist": "Usuarios bloquiaos",
index 6599a10..a76f617 100644 (file)
                        "Catrope"
                ]
        },
+       "tog-underline": "Kicawetcita ntowapesinihikana:",
+       "tog-hideminor": "Ka ki ocitakaniwoki kwekisinihikana nta katcicta aka ka sapinakoki.",
+       "tog-hidepatrolled": "Nohwe nta ka ki kweskisinihikateki nama weckat katcicta ka ki aci koski kanawapatcikateki",
+       "tog-newpageshidepatrolled": " Katcicta paskickwemakana ka ki koski aci tapwatcikateki  taci e ici masinateki ocki paskickwemikana",
+       "tog-hidecategorization": "Katcicta tipanictawin paskickwemikana",
        "underline-always": "Mocak",
        "underline-never": "Nama wiskat",
        "sunday": "Manactakaniwon",
index 6015f26..04ee5eb 100644 (file)
        "history_short": "گئچمیش",
        "updatedmarker": "سوْن باخیشیمدان سوْنرا یئنی‌لنیب‌دیر",
        "printableversion": "چاپ اۆچون نۆسخه",
-       "permalink": "قالیجی باغلانتی",
+       "permalink": "قالیجی لینک",
        "print": "یازدیر",
        "view": "باخ",
        "view-foreign": "$1 گور",
index c60efa1..0611e04 100644 (file)
        "mypreferences": "Налады",
        "prefs-edits": "Колькасьць рэдагаваньняў:",
        "prefsnologintext2": "Калі ласка, увайдзіце ў сыстэму, каб зьмяніць вашыя налады.",
-       "prefs-skin": "Ð\90Ñ\84аÑ\80мленÑ\8cне",
+       "prefs-skin": "ТÑ\8dма Ð°Ñ\84аÑ\80мленÑ\8cнÑ\8f",
        "skin-preview": "Папярэдні прагляд",
        "datedefault": "Па змоўчаньні",
        "prefs-labs": "Экспэрымэнтальныя магчымасьці",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (глядзіце таксама [[Special:NewPages|сьпіс новых старонак]])",
        "recentchanges-submit": "Паказаць",
        "rcfilters-activefilters": "Актыўныя фільтры",
-       "rcfilters-quickfilters": "Ð¥Ñ\83Ñ\82кÑ\96Ñ\8f Ñ\81паÑ\81Ñ\8bлкÑ\96",
+       "rcfilters-quickfilters": "Ð\97аÑ\85аванÑ\8bÑ\8f Ð½Ð°Ð»Ð°Ð´Ñ\8b Ñ\84Ñ\96лÑ\8cÑ\82Ñ\80Ñ\83",
        "rcfilters-quickfilters-placeholder-title": "Спасылкі яшчэ не захаваныя",
        "rcfilters-quickfilters-placeholder-description": "Каб захаваць налады вашага фільтру і выкарыстаць іх пазьней, націсьніце на выяву закладкі ў зоне актыўнага фільтру ніжэй.",
        "rcfilters-savedqueries-defaultlabel": "Захаваныя фільтры",
        "rcfilters-savedqueries-unsetdefault": "Выдаліць пазнаку па змоўчаньні",
        "rcfilters-savedqueries-remove": "Выдаліць",
        "rcfilters-savedqueries-new-name-label": "Назва",
-       "rcfilters-savedqueries-apply-label": "СÑ\82ваÑ\80Ñ\8bÑ\86Ñ\8c Ñ\85Ñ\83Ñ\82кÑ\83Ñ\8e Ñ\81паÑ\81Ñ\8bлкÑ\83",
+       "rcfilters-savedqueries-apply-label": "Ð\97аÑ\85аваÑ\86Ñ\8c Ð½Ð°Ð»Ð°Ð´Ñ\8b",
        "rcfilters-savedqueries-cancel-label": "Адмяніць",
        "rcfilters-savedqueries-add-new-title": "Захаваць фільтры як хуткую спасылку",
        "rcfilters-restore-default-filters": "Аднавіць фільтры па змоўчаньні",
        "mw-widgets-titleinput-description-redirect": "перанакіраваньне на $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Дадаць катэгорыю…",
        "mw-widgets-usersmultiselect-placeholder": "Дадаць яшчэ…",
+       "date-range-from": "З даты:",
        "sessionmanager-tie": "Немагчыма выкарыстаць адначасова некалькі тыпаў аўтэнтыфікацыі: $1.",
        "sessionprovider-generic": "$1 сэсіі",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "сэсіі на падставе файлаў-кукі",
index ea0d138..b52f1b7 100644 (file)
        "localtime": "Местно време:",
        "timezoneuseserverdefault": "По подразбиране от уикито ($1)",
        "timezoneuseoffset": "Друга (посочете отместване)",
-       "servertime": "Ð\92Ñ\80еме Ð½Ð° Ñ\81Ñ\8aÑ\80вÑ\8aÑ\80а:",
+       "servertime": "СÑ\8aÑ\80вÑ\8aÑ\80но Ð²Ñ\80еме:",
        "guesstimezone": "Попълване чрез браузъра",
        "timezoneregion-africa": "Африка",
        "timezoneregion-america": "Америка",
        "email": "Е-поща",
        "prefs-help-realname": "* Истинското име не е задължително. Ако го посочите, вашите приноси ще бъдат приписани на него.",
        "prefs-help-email": "Електронната поща е незадължителна, но позволява възстановяване на забравена или загубена парола.",
-       "prefs-help-email-others": "Ð\9cожеÑ\82е Ð´Ð° Ð¸Ð·Ð±ÐµÑ\80еÑ\82е Ð´Ð° Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ\82е Ð½Ð° Ð´Ñ\80Ñ\83гиÑ\82е Ð´Ð° Ñ\81е Ñ\81вÑ\8aÑ\80зваÑ\82 Ñ\81 Ð²Ð°Ñ\81 Ð¿Ð¾ ÐµÐ»ÐµÐºÑ\82Ñ\80онна Ð¿Ð¾Ñ\89а, ÐºÐ°Ñ\82о Ñ\89Ñ\80акваÑ\82 Ð½Ð° Ð¿Ñ\80епÑ\80аÑ\82ка Ð¾Ñ\82 Ð²Ð°Ñ\88аÑ\82а Ð»Ð¸Ñ\87на Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82елÑ\81ка Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¸Ð»Ð¸ Ð±ÐµÑ\81еда. \nÐ\90дÑ\80еÑ\81Ñ\8aÑ\82 Ð½Ð° ÐµÐ»ÐµÐºÑ\82Ñ\80оннаÑ\82а Ð²Ð¸ Ð¿Ð¾Ñ\89а Ð½Ðµ Ñ\81е Ñ\80азкÑ\80ива Ð½Ð° Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82елиÑ\82е, ÐºÐ¾Ð¸Ñ\82о Ñ\81е Ñ\81вÑ\8aÑ\80зваÑ\82 Ñ\81 Ð²ас по този начин.",
+       "prefs-help-email-others": "Ð\9cожеÑ\82е Ð´Ð° Ð¸Ð·Ð±ÐµÑ\80еÑ\82е Ð´Ð° Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ\82е Ð½Ð° Ð´Ñ\80Ñ\83гиÑ\82е Ð´Ð° Ñ\81е Ñ\81вÑ\8aÑ\80зваÑ\82 Ñ\81 Ð\92аÑ\81 Ð¿Ð¾ ÐµÐ»ÐµÐºÑ\82Ñ\80онна Ð¿Ð¾Ñ\89а, ÐºÐ°Ñ\82о Ñ\89Ñ\80акваÑ\82 Ð½Ð° Ð¿Ñ\80епÑ\80аÑ\82ка Ð¾Ñ\82 Ð\92аÑ\88аÑ\82а Ð»Ð¸Ñ\87на Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82елÑ\81ка Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¸Ð»Ð¸ Ð±ÐµÑ\81еда. \nÐ\90дÑ\80еÑ\81Ñ\8aÑ\82 Ð½Ð° ÐµÐ»ÐµÐºÑ\82Ñ\80оннаÑ\82а Ð\92и Ð¿Ð¾Ñ\89а Ð½Ðµ Ñ\81е Ñ\80азкÑ\80ива Ð½Ð° Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82елиÑ\82е, ÐºÐ¾Ð¸Ñ\82о Ñ\81е Ñ\81вÑ\8aÑ\80зваÑ\82 Ñ\81 Ð\92ас по този начин.",
        "prefs-help-email-required": "Изисква се адрес за електронна поща.",
        "prefs-info": "Основна информация",
        "prefs-i18n": "Интернационализация",
        "right-movefile": "Преместване на файлове",
        "right-suppressredirect": "Без създаване на пренасочване от старото име при преместване на страница",
        "right-upload": "Качване на файлове",
-       "right-reupload": "Ð\9fÑ\80езапиÑ\81ване на съществуващ файл",
-       "right-reupload-own": "Ð\9fÑ\80езапиÑ\81ване на съществуващ файл, качен от същия потребител",
-       "right-reupload-shared": "Ð\9fÑ\80едеÑ\84иниÑ\80ане на едноименните файлове от общото мултимедийно хранилище с локални",
+       "right-reupload": "Ð\9fÑ\80епокÑ\80иване на съществуващ файл",
+       "right-reupload-own": "Ð\9fÑ\80епокÑ\80иване на съществуващ файл, качен от същия потребител",
+       "right-reupload-shared": "Ð\9fÑ\80епокÑ\80иване на едноименните файлове от общото мултимедийно хранилище с локални",
        "right-upload_by_url": "Качване на файл от URL адрес",
        "right-purge": "Изчистване на складираното съдържание на страниците без показване на страница за потвърждение",
        "right-autoconfirmed": "Редактиране на полузащитени страници",
        "grant-editpage": "Редактиране на съществуващи страници",
        "grant-editprotected": "Редактиране на защитени страници",
        "grant-highvolume": "Голям обем за редактиране",
-       "grant-oversight": "Скриване на участниците и версия страници",
+       "grant-oversight": "Скриване на потребители и прикриване на редакции",
        "grant-patrol": "Патрулират промени страници",
        "grant-privateinfo": "Достъп до лична информация",
        "grant-protect": "Защита и премахване на защита на страници",
index 2bc5256..092f159 100644 (file)
        "logouttext": "'''रउआ अब खाता से बाहर बानी'''\n\nध्यान रहे कि जब तक रउआ आपन ब्राउजर के कैश साफ ना करब, तब तक कुछ पन्नन में हो सकत बा रउआ के खाता में लगातार प्रवेशित दिखावत रही।",
        "cannotlogoutnow-title": "एह समय लॉगआउट ना हो सकी",
        "cannotlogoutnow-text": "$1 के इस्तेमाल करत समय लॉगआउट नइखे संभव।",
-       "welcomeuser": "राà¤\89र à¤¸à¥\8dवाà¤\97त à¤¬à¤¾, $1!",
+       "welcomeuser": "स्वागत बा, $1!",
        "welcomecreation-msg": "राउर खाता बना दिहल गईल बा।\nआपन [[Special:Preferences|{{SITENAME}} वरीयतां]] के बदले के ना भूलब।",
        "yourname": "प्रयोगकर्तानाँव:",
        "userlogin-yourname": "प्रयोगकर्तानाँव",
index 285fcf2..086f155 100644 (file)
        "rcfilters-filter-major-description": "যেসব সম্পাদনাকে অনুল্লেখ্য হিসেবে চিহ্নিত করা হয়নি।",
        "rcfilters-filtergroup-changetype": "পরিবর্তনের ধরন",
        "rcfilters-filter-pageedits-label": "পাতার সম্পাদনা",
-       "rcfilters-filter-pageedits-description": "উইকি বিষয়বস্তু, আলোচনা, বিষয়শ্রেণীর বিবরণ.... ইত্যাদিতে সম্পাদনা",
+       "rcfilters-filter-pageedits-description": "উইকি বিষয়বস্তু, আলোচনা, বিষয়শ্রেণীর বিবরণ... ইত্যাদিতে সম্পাদনা",
        "rcfilters-filter-newpages-label": "পাতা তৈরিকরণ",
        "rcfilters-filter-newpages-description": "সম্পাদনা যা নতুন পাতা তৈরি করেছে।",
        "rcfilters-filter-categorization-label": "বিষয়শ্রেণীর পরিবর্তন",
        "rcfilters-filter-categorization-description": "বিষয়শ্রেণী পাতা সংযোজন বা অপসারণের তালিকা",
        "rcfilters-filter-logactions-label": "প্রবেশকৃত কার্য",
-       "rcfilters-filter-logactions-description": "প্রশাসনিক কর্ম, অ্যাকাউন্ট সৃষ্টিকরণ, পাতা অপসারণ, আপলোড....",
+       "rcfilters-filter-logactions-description": "প্রশাসনিক কর্ম, অ্যাকাউন্ট সৃষ্টিকরণ, পাতা অপসারণ, আপলোড...",
        "rcfilters-hideminor-conflicts-typeofchange-global": "\"অনুল্লেখ্য সম্পাদনা\" ছাঁকনিটির সাথে এক বা ততোধিক \"পরিবর্তনের ধরন\"-সংক্রান্ত ছাঁকনির সংঘর্ষ আছে, কারণ কিছু নির্দিষ্ট ধরনের সম্পাদনা \"অনুল্লেখ্য\" হিসেবে চিহ্নিত করা সম্ভব নয়। সংঘর্ষে থাকা ছাঁকনিগুলিকে উপরের \"সক্রিয় ছাঁকনিসমূহ\" এলাকাতে চিহ্নিত করা হয়েছে।",
        "rcfilters-hideminor-conflicts-typeofchange": "কিছু নির্দিষ্ট ধরনের সম্পাদনা \"অনুল্লেখ্য\" হিসেবে চিহ্নিত করা সম্ভব নয়, তাই এই ছাঁকনিটির সাথে নিম্নোক্ত পরিবর্তনের ধরন ছাঁকনিগুলির সংঘর্ষ আছে: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "এই \"পরিবর্তনের ধরন\"-সংক্রান্ত ছাঁকনিটির সাথে \"অনুল্লেখ্য সম্পাদনা\" ছাঁকনিটির সংঘর্ষ আছে। কিছু নির্দিষ্ট ধরনের সম্পাদনা \"অনুল্লেখ্য\" হিসেবে চিহ্নিত করা সম্ভব নয়।",
index 9da4b4c..bfcb3dc 100644 (file)
        "mergehistory-fail-no-change": "Spajanje historije nije spojilo nijednu izmjenu. Provjerite parametre stranice i vremena.",
        "mergehistory-fail-permission": "Nemate dopuštenje da spojite historiju.",
        "mergehistory-fail-self-merge": "Izvorna i odredišna stranica su iste.",
+       "mergehistory-fail-timestamps-overlap": "Izvorne izmjene se preklapaju ili dolaze nakon odredišnih izmjena.",
        "mergehistory-fail-toobig": "Ne može se izvršiti spajanje historije jer će se više premjestiti više od ograničenja od $1 {{PLURAL:$1|revizije|revizija}}.",
        "mergehistory-no-source": "Izvorna stranica $1 ne postoji.",
        "mergehistory-no-destination": "Odredišna stranica $1 ne postoji.",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|spisak novih stranica]])",
        "recentchanges-submit": "Prikaži",
        "rcfilters-activefilters": "Aktivni filteri",
-       "rcfilters-quickfilters": "Brzi linkovi",
+       "rcfilters-quickfilters": "Sačuvane postavke filtera",
+       "rcfilters-quickfilters-placeholder-title": "Zasad nema sačuvanih linkova",
        "rcfilters-savedqueries-defaultlabel": "Sačuvani filteri",
        "rcfilters-savedqueries-rename": "Preimenuj",
        "rcfilters-savedqueries-setdefault": "Postavi kao predodređeno",
        "rcfilters-savedqueries-remove": "Ukloni",
        "rcfilters-savedqueries-new-name-label": "Naziv",
-       "rcfilters-savedqueries-apply-label": "Napravi brzi link",
+       "rcfilters-savedqueries-apply-label": "Sačuvaj postavke",
        "rcfilters-savedqueries-cancel-label": "Otkaži",
-       "rcfilters-savedqueries-add-new-title": "Sačuvaj filtere kao brzi link",
+       "rcfilters-savedqueries-add-new-title": "Sačuvaj trenutne postavke filtera",
        "rcfilters-restore-default-filters": "Vrati predodređene filtere",
        "rcfilters-clear-all-filters": "Ukloni sve filtere",
        "rcfilters-search-placeholder": "Filtriraj nedavne izmjene (prelistajte mogućnosti ili počnite kucati)",
        "rcfilters-highlightmenu-title": "Izaberite boju",
        "rcfilters-highlightmenu-help": "Izaberite boju da biste istaknuli ovo svojstvo",
        "rcfilters-filterlist-noresults": "Nema filtera",
+       "rcfilters-noresults-conflict": "Nije pronađen nijedan rezultat jer su kriteriji pretrage sukobljeni",
        "rcfilters-state-message-fullcoverage": "Izabiranje svih filtera u grupi isto je kao da niste izabrali nijedan, tako da ovaj filter nema nikakvog efekta. Grupa sadrži: $1",
        "rcfilters-filtergroup-registration": "Registracija korisnika",
        "rcfilters-filter-registered-label": "Registrirani",
        "rcfilters-filter-registered-description": "Prijavljeni korisnici.",
        "rcfilters-filter-unregistered-label": "Anonimni",
        "rcfilters-filter-unregistered-description": "Neprijavljeni korisnici.",
+       "rcfilters-filter-unregistered-conflicts-user-experience-level": "Ovaj filter u sukobu je sa sljedećim {{PLURAL:$2|filterom|filterima}}, koji {{PLURAL:$2|pronalazi|pronalaze}} samo registrirane korisnike: $1",
        "rcfilters-filtergroup-authorship": "Autorstvo doprinosa",
        "rcfilters-filter-editsbyself-label": "Vaše izmjene",
        "rcfilters-filter-editsbyself-description": "Vaši vlastiti doprinosi.",
        "rcfilters-filter-editsbyother-label": "Tuđe izmjene",
        "rcfilters-filter-editsbyother-description": "Sve izmjene osim Vaših.",
        "rcfilters-filtergroup-userExpLevel": "Korisničko iskustvo (samo za registrirane)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Filteri za iskustvo pronalaze samo registrirane korisnike, tako da je ovaj filter u sukobu s filterom \"Anonimni\".",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Filter \"Anonimni\" u sukobu je s jednim ili više filtera za iskustvo budući da oni pronalaze samo registrirane korisnike. Sukobljeni filteri označeni su pod \"Aktivnim filterima\" iznad.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Novajlije",
        "rcfilters-filter-user-experience-level-newcomer-description": "Manje od 10 izmjena i 4 dana aktivnosti.",
        "rcfilters-filter-user-experience-level-learner-label": "Učenici",
        "rcfilters-filter-watchlist-notwatched-description": "Sve osim izmjena na stranicama koje pratite.",
        "rcfilters-filtergroup-changetype": "Vrsta izmjene",
        "rcfilters-filter-pageedits-label": "Izmjene stranica",
-       "rcfilters-filter-pageedits-description": "Izmjene wiki sadržaja, rasprava, opisa kategorija....",
+       "rcfilters-filter-pageedits-description": "Izmjene wiki sadržaja, rasprava, opisa kategorija",
        "rcfilters-filter-newpages-label": "Stvaranje stranica",
        "rcfilters-filter-newpages-description": "Izmjene kojima se stvaraju nove stranice.",
        "rcfilters-filter-categorization-label": "Izmjene kategorija",
        "rcfilters-filter-categorization-description": "Izmjene kojima se dodavaju ili uklanjaju stranice iz kategorija.",
        "rcfilters-filter-logactions-label": "Zapisane radnje",
-       "rcfilters-filter-logactions-description": "Administrativne radnje, pravljenje računa, brisanje stranica, postavljenje datoteka....",
+       "rcfilters-filter-logactions-description": "Administrativne radnje, pravljenje računa, brisanje stranica, postavljenje datoteka",
        "rcfilters-typeofchange-conflicts-hideminor": "Ovaj filter za vrstu izmjene u sukobu je s filterom za \"manje izmjene\". Izvjesne vrste izmjena ne mogu se označiti kao \"manje\".",
        "rcfilters-filtergroup-lastRevision": "Posljednja izmjena",
        "rcfilters-filter-lastrevision-label": "Posljednja izmjena",
        "file-thumbnail-no": "Naziv datoteke počinje sa <strong>$1</strong>.\nIzgleda da se radi o smanjenoj slici ''(\"thumbnail\")''.\nAko imate ovu sliku u punoj rezoluciji, postavite nju; ili promijenite naslov ove datoteke.",
        "fileexists-forbidden": "Datoteka s ovim imenom već postoji i ne može biti prepisana.\nAko i dalje želite postaviti ovu datoteku, molimo Vas da se vratite i pošaljete ovu datoteku pod novim imenom. [[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "Datoteka s ovim imenom već postoji u zajedničkoj ostavi. Molimo Vas da se vratite i pošaljete ovu datoteku pod novim imenom. [[File:$1|thumb|center|$1]]",
+       "fileexists-no-change": "Datoteka je duplikat trenutne verzije <strong>[[:$1]]</strong>.",
+       "fileexists-duplicate-version": "Datoteka je duplikat {{PLURAL:$2|starije verzije|starijih verzija}} <strong>[[:$1]]</strong>.",
        "file-exists-duplicate": "Ova datoteka je dvojnik {{PLURAL:$1|slijedećoj datoteci|slijedećim datotekama}}:",
        "file-deleted-duplicate": "Datoteka koje je identična ovoj datoteci ([[:$1]]) je ranije bila obrisana. Trebate provjeriti historiju brisanja te datoteke prije nego što nastavite sa njenim ponovnim postavljanjem.",
        "file-deleted-duplicate-notitle": "Datoteka identična ovoj prethodno je obrisana i ime joj je sakriveno.\nTrebali biste pitati nekog ko može vidjeti podatke skrivenih datoteka da pregleda situaciju prije nego što ponovo postavite datoteku.",
        "uploadstash-errclear": "Brisanje datoteka nije uspjelo.",
        "uploadstash-refresh": "Osvježi spisak datoteka",
        "uploadstash-thumbnail": "pogledaj minijaturu",
+       "uploadstash-exception": "Ne mogu sačuvati datoteku u skladište ($1): \"$2\".",
        "invalid-chunk-offset": "Neispravna polazna tačka",
        "img-auth-accessdenied": "Pristup onemogućen",
        "img-auth-nopathinfo": "Nedostaje PATH_INFO.\nVaš server nije postavljen da daje ovu informaciju.\nMožda je zasnovan na CGI koji ne podržava img_auth.\nPogledajte https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
        "querypage-disabled": "Ova posebna stranica je onemogućena jer smanjuje performanse.",
        "apihelp": "API pomoć",
        "apihelp-no-such-module": "Modul \"$1\" nije pronađen.",
+       "apisandbox": "API pješčanik",
+       "apisandbox-jsonly": "Upotreba API pješčanika zahtijeva JavaScript.",
+       "apisandbox-api-disabled": "API je onemogućen na ovom sajtu.",
        "apisandbox-unfullscreen": "Prikaži stranicu",
        "apisandbox-submit": "Postavi zahtjev",
        "apisandbox-reset": "Očisti",
        "apisandbox-retry": "Pokušaj ponovo",
        "apisandbox-loading": "Učitavam podatke o API modulu \"$1\"...",
+       "apisandbox-no-parameters": "API modul nema parametara.",
        "apisandbox-examples": "Primjeri",
        "apisandbox-dynamic-parameters": "Dodatni parametri",
        "apisandbox-dynamic-parameters-add-label": "Dodaj parametar:",
        "apisandbox-submit-invalid-fields-title": "Neka polja nisu ispravna",
        "apisandbox-submit-invalid-fields-message": "Ispravite naznačena polja i pokušajte ponovo.",
        "apisandbox-results": "Rezultati",
+       "apisandbox-request-selectformat-label": "Prikaži zahtijevane podatke kao:",
        "apisandbox-request-url-label": "URL zahtjeva:",
+       "apisandbox-results-fixtoken": "Ispravi žeton i pošalji ponovo",
        "apisandbox-continue": "Nastavi",
        "apisandbox-continue-clear": "Očisti",
        "apisandbox-multivalue-all-namespaces": "$1 (svi imenski prostori)",
        "unwatchthispage": "Prestani pratiti",
        "notanarticle": "Nije stranica sa sadržajem",
        "notvisiblerev": "Obrisana je posljednja izmjena drugog korisnika",
-       "watchlist-details": "Imate {{PLURAL:$1|$1 stranica|$1 stranice|$1 stranica}} na Vašem spisku praćenja, ne računajući posebno stranice za razgovor.",
+       "watchlist-details": "Imate {{PLURAL:$1|$1 stranicu|$1 stranice|$1 stranica}} na spisku praćenja, ne računajući posebno stranice za razgovor.",
        "wlheader-enotif": "Uključeno je obavještenje e-poštom.",
        "wlheader-showupdated": "Stranice koje su izmijenjene otkad ste ih posljednji put posjetili prikazane su <strong>podebljanim slovima</strong>.",
        "wlnote": "Ispod {{PLURAL:$1|je posljednja izmjena|su <strong>$1</strong> posljednje izmjene|su <strong>$1</strong> posljednjih izmjena}} načinjenih {{PLURAL:$2|posljednjeg sata|u posljednjih <strong>$2</strong> sata|u posljednjih <strong>$2</strong> sati}}, od $3, $4.",
        "autoblocklist-submit": "Pretraži",
        "autoblocklist-legend": "Ispis autoblokova",
        "autoblocklist-localblocks": "{{PLURAL:$1|Lokalni autoblok|Lokalni autoblokovi}}",
-       "autoblocklist-total-autoblocks": "Ukupan broj autoblokiranja: $1",
+       "autoblocklist-total-autoblocks": "Ukupno autoblokova: $1",
        "autoblocklist-empty": "Spisak autoblokova je prazan.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Drugi autoblok|Drugi autoblokovi}}",
        "ipblocklist": "Blokirani korisnici",
        "tooltip-watchlistedit-raw-submit": "Ažuriraj spisak praćenja",
        "tooltip-recreate": "Ponovno pravljenje stranice iako je već brisana",
        "tooltip-upload": "Započni postavljanje",
-       "tooltip-rollback": "\"Vrati\" vraća izmjene posljednjeg uređivača jednim klikom",
+       "tooltip-rollback": "\"Vrati\" vraća izmjene posljednjeg korisnika jednim klikom",
        "tooltip-undo": "Dugme \"poništi\" poništava ovu izmjenu, te otvara stranicu u režimu za uređivanje s pregledom izmjena koje će biti poništene. Također omogućava unošenje razloga poništenja u sažetak.",
        "tooltip-preferences-save": "Sačuvaj podešavanja",
        "tooltip-summary": "Unesite kratki sažetak",
        "exif-compression-4": "CCITT Grupa 4 faks šifriranje",
        "exif-copyrighted-true": "Zaštićeno autorskim pravima",
        "exif-copyrighted-false": "Status autorskih prava nije postavljen",
+       "exif-photometricinterpretation-1": "Crno-bijelo (crna je 0)",
        "exif-unknowndate": "Nepoznat datum",
        "exif-orientation-1": "Normalna",
        "exif-orientation-2": "Horizontalno preokrenuto",
        "confirm-rollback-top": "Ukloniti izmjene na ovoj stranici?",
        "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← prethodna stranica",
-       "imgmultipagenext": "slijedeća stranica →",
+       "imgmultipagenext": "sljedeća stranica →",
        "imgmultigo": "Idi!",
        "imgmultigoto": "Idi na stranicu $1",
        "img-lang-default": "(podrazumijevani jezik)",
        "expand_templates_preview": "Pregled",
        "expand_templates_preview_fail_html": "<em>Budući da {{SITENAME}} ima uključen sirov HTML, te je bilo gubitka u podacima sesije, pregled je sakriven kao mjera predostrožnosti protiv napada preko JavaScripta.</em>\n\n<strong>Ako je ovo ispravan pokušaj pretpregleda, pokušajte ponovo.</strong>\nAko i dalje ne bude radilo, pokušajte se [[Special:UserLogout|odjaviti]], pa ponovo prijaviti i provjerite dozvoljava li Vaš preglednik kolačiće s ovog sajta.",
        "expand_templates_preview_fail_html_anon": "<em>Pošto stranica {{SITENAME}} ima uključen sirov HTML prikaz, a vi se niste prijavili, pregled je sakriven kao mjera predostrožnosti protiv JavaScript napada.</em>\n\n<strong>Ako je ovo ispravan pokušaj pretpregleda, molim da se [[Special:UserLogin|prijavite]] i pokušate ponovo.</strong>",
+       "expand_templates_input_missing": "Morate upisati nekakav tekst.",
        "pagelanguage": "Promijeni jezik stranice",
        "pagelang-name": "Stranica",
        "pagelang-language": "Jezik",
        "authmanager-create-from-login": "Popunite polja da biste napravili račun.",
        "authmanager-create-not-in-progress": "Pravljenje računa nije u toku ili su podaci o sesiji izgubljeni. Počnite ispočetka.",
        "authmanager-authplugin-setpass-failed-title": "Promjena lozinke nije uspjela",
+       "authmanager-authplugin-setpass-failed-message": "Dodatak za autentifikaciju odbio je promjenu lozinke.",
+       "authmanager-authplugin-create-fail": "Dodatak za autentifikaciju odbio je pravljenje računa.",
+       "authmanager-authplugin-setpass-denied": "Dodatak za autentifikaciju ne dozvoljava mijenjanje lozinki.",
        "authmanager-authplugin-setpass-bad-domain": "Neispravna domena.",
        "authmanager-autocreate-noperm": "Automatsko pravljenje računa nije dozvoljeno.",
        "authmanager-autocreate-exception": "Automatsko pravljenje računa privremeno je onemogućeno zbog prijašnjih greški.",
        "authprovider-resetpass-skip-help": "Preskoči resetiranje lozinke.",
        "authform-nosession-login": "Verifikacija je uspješna, ali Vaš preglednik ne može \"zapamtiti\" da ste prijavljeni.\n\n$1",
        "authform-nosession-signup": "Račun je napravljen, ali Vaš preglednik ne može \"zapamtiti\" da ste prijavljeni.\n\n$1",
+       "authform-newtoken": "Nedostaje žeton. $1",
+       "authform-notoken": "Nedostaje žeton",
        "authform-wrongtoken": "Pogrešan žeton",
        "specialpage-securitylevel-not-allowed-title": "Nije dozvoljeno",
        "specialpage-securitylevel-not-allowed": "Žao nam je, nije Vam dozvoljeno korištenje ove stranice jer ne možemo potvrditi Vaš identitet.",
        "usercssispublic": "Napomena: Podstranice s CSS-om ne bi trebale sadržavati povjerljive podatke budući da ih drugi korisnici mogu vidjeti.",
        "restrictionsfield-badip": "Neispravna IP-adresa ili opseg: $1",
        "restrictionsfield-label": "Dozvoljeni IP-opsezi:",
+       "restrictionsfield-help": "Jedna IP-adresa ili CIDR-opseg po redu. Da omogućite sve, koristite:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "izmjena $1",
        "pageid": "ID stranice $1",
        "rawhtml-notallowed": "&lt;html&gt; oznake ne mogu se koristiti van normalnih stranica.",
index b5d0a79..bcb5dc9 100644 (file)
        "autoblocklist-submit": "Hledat",
        "autoblocklist-legend": "Seznam automatických blokování",
        "autoblocklist-localblocks": "Místní {{PLURAL:$1|automatické|automatická}} blokování",
+       "autoblocklist-total-autoblocks": "Celkový počet automatických blokování: $1",
        "autoblocklist-empty": "Seznam automatických blokování je prázdný.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Jiné automatické|Jiná automatická}} blokování",
        "ipblocklist": "Zablokovaní uživatelé",
index dab2656..c53cb0e 100644 (file)
        "recentchanges-legend-plusminus": "''(±123)''",
        "recentchanges-submit": "Anzeigen",
        "rcfilters-activefilters": "Aktive Filter",
-       "rcfilters-quickfilters": "Schnell-Links",
+       "rcfilters-quickfilters": "Gespeicherte Filtereinstellungen",
        "rcfilters-quickfilters-placeholder-title": "Noch keine Links gespeichert",
        "rcfilters-quickfilters-placeholder-description": "Um deine Filtereinstellungen zu speichern und später erneut zu verwenden, klicke unten auf das Lesezeichensymbol im Bereich der aktiven Filter.",
        "rcfilters-savedqueries-defaultlabel": "Gespeicherte Filter",
        "rcfilters-savedqueries-unsetdefault": "Als Standard entfernen",
        "rcfilters-savedqueries-remove": "Entfernen",
        "rcfilters-savedqueries-new-name-label": "Name",
-       "rcfilters-savedqueries-apply-label": "Schnell-Link erstellen",
+       "rcfilters-savedqueries-apply-label": "Einstellungen speichern",
        "rcfilters-savedqueries-cancel-label": "Abbrechen",
-       "rcfilters-savedqueries-add-new-title": "Filter als Schnell-Link speichern",
+       "rcfilters-savedqueries-add-new-title": "Aktuelle Filtereinstellungen speichern",
        "rcfilters-restore-default-filters": "Standardfilter wiederherstellen",
        "rcfilters-clear-all-filters": "Alle Filter löschen",
        "rcfilters-search-placeholder": "Letzte Änderungen filtern (durchsuchen oder beginne mit der Eingabe)",
index 25879c8..9fe0e3c 100644 (file)
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "Show",
        "rcfilters-activefilters": "Active filters",
-       "rcfilters-quickfilters": "Quick links",
+       "rcfilters-quickfilters": "Saved filter settings",
        "rcfilters-quickfilters-placeholder-title": "No links saved yet",
        "rcfilters-quickfilters-placeholder-description": "To save your filter settings and reuse them later, click the bookmark icon in the Active Filter area, below.",
        "rcfilters-savedqueries-defaultlabel": "Saved filters",
        "rcfilters-savedqueries-unsetdefault": "Remove as default",
        "rcfilters-savedqueries-remove": "Remove",
        "rcfilters-savedqueries-new-name-label": "Name",
-       "rcfilters-savedqueries-apply-label": "Create quick link",
+       "rcfilters-savedqueries-apply-label": "Save settings",
        "rcfilters-savedqueries-cancel-label": "Cancel",
-       "rcfilters-savedqueries-add-new-title": "Save filters as a quick link",
+       "rcfilters-savedqueries-add-new-title": "Save current filter settings",
        "rcfilters-restore-default-filters": "Restore default filters",
        "rcfilters-clear-all-filters": "Clear all filters",
        "rcfilters-search-placeholder": "Filter recent changes (browse or start typing)",
        "rcfilters-filter-watchlist-notwatched-description": "Everything except changes to your Watchlisted pages.",
        "rcfilters-filtergroup-changetype": "Type of change",
        "rcfilters-filter-pageedits-label": "Page edits",
-       "rcfilters-filter-pageedits-description": "Edits to wiki content, discussions, category descriptions....",
+       "rcfilters-filter-pageedits-description": "Edits to wiki content, discussions, category descriptions",
        "rcfilters-filter-newpages-label": "Page creations",
        "rcfilters-filter-newpages-description": "Edits that make new pages.",
        "rcfilters-filter-categorization-label": "Category changes",
        "rcfilters-filter-categorization-description": "Records of pages being added or removed from categories.",
        "rcfilters-filter-logactions-label": "Logged actions",
-       "rcfilters-filter-logactions-description": "Administrative actions, account creations, page deletions, uploads....",
+       "rcfilters-filter-logactions-description": "Administrative actions, account creations, page deletions, uploads",
        "rcfilters-hideminor-conflicts-typeofchange-global": "The \"Minor edits\" filter conflicts with one or more Type of Change filters, because certain types of change cannot be designated as \"minor.\" The conflicting filters are marked in the Active Filters area, above.",
        "rcfilters-hideminor-conflicts-typeofchange": "Certain types of change cannot be designated as \"minor,\" so this filter conflicts with the following Type of Change filters: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "This Type of Change filter conflicts with the \"Minor Edits\" filter. Certain types of change cannot be designated as \"minor.\"",
index 3760902..e00ae7b 100644 (file)
        "policy-url": "Project:Políticas",
        "portal": "Portal de la comunidad",
        "portal-url": "Project:Portal de la comunidad",
-       "privacy": "Política de privacidad",
-       "privacypage": "Project:Política de privacidad",
+       "privacy": "Normativa de privacidad",
+       "privacypage": "Project:Normativa de privacidad",
        "badaccess": "Error de permisos",
        "badaccess-group0": "No estás autorizado a ejecutar la acción solicitada.",
        "badaccess-groups": "La acción que has solicitado está restringida a los usuarios {{PLURAL:$2|del grupo|de uno de estos $2 grupos}}: $1.",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (véase también la [[Special:NewPages|lista de páginas nuevas]])",
        "recentchanges-submit": "Mostrar",
        "rcfilters-activefilters": "Filtros activos",
-       "rcfilters-quickfilters": "Enlaces rápidos",
+       "rcfilters-quickfilters": "Ajustes de filtro guardados",
        "rcfilters-quickfilters-placeholder-title": "Ningún enlace guardado aún",
-       "rcfilters-quickfilters-placeholder-description": "Para guardar sus ajustes de filtro y reutilizarlos más tarde, haga clic en el icono del marcador en el área de Filtro Activo a continuación.",
+       "rcfilters-quickfilters-placeholder-description": "Para guardar tus ajustes de filtro y reutilizarlos más tarde, pulsa en el icono del marcador en el área de Filtro Activo que se encuentra a continuación.",
        "rcfilters-savedqueries-defaultlabel": "Filtros guardados",
        "rcfilters-savedqueries-rename": "Cambiar nombre",
        "rcfilters-savedqueries-setdefault": "Activar por defecto",
-       "rcfilters-savedqueries-unsetdefault": "Eliminar por defecto",
+       "rcfilters-savedqueries-unsetdefault": "Desmarcar como predeterminado",
        "rcfilters-savedqueries-remove": "Eliminar",
        "rcfilters-savedqueries-new-name-label": "Nombre",
-       "rcfilters-savedqueries-apply-label": "Crear enlace rápido",
+       "rcfilters-savedqueries-apply-label": "Guardar ajustes",
        "rcfilters-savedqueries-cancel-label": "Cancelar",
-       "rcfilters-savedqueries-add-new-title": "Guardar filtros como enlace rápido",
+       "rcfilters-savedqueries-add-new-title": "Guardar ajustes de filtro actuales",
        "rcfilters-restore-default-filters": "Restaurar filtros predeterminados",
        "rcfilters-clear-all-filters": "Borrar todos los filtros",
        "rcfilters-search-placeholder": "Filtrar cambios recientes (navega o empieza a escribir)",
        "autoblocklist-submit": "Buscar",
        "autoblocklist-legend": "Mostrar bloqueos automáticos",
        "autoblocklist-localblocks": "{{PLURAL:$1|Bloqueo automático local|Bloqueos automáticos locales}}",
-       "autoblocklist-total-autoblocks": "Número total de autobloques: $1",
+       "autoblocklist-total-autoblocks": "Número total de bloqueos automáticos: $1",
        "autoblocklist-empty": "La lista de bloqueos automáticos está vacía.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Otro bloqueo automático|Otros bloqueos automáticos}}",
        "ipblocklist": "Usuarios bloqueados",
index 08e68d0..7d91d50 100644 (file)
        "rev-deleted-user": "(nom d'utilisateur retiré)",
        "rev-deleted-event": "(détails de l’historique retirés)",
        "rev-deleted-user-contribs": "[nom d’utilisateur ou adresse IP retiré – modification masquée dans les contributions]",
-       "rev-deleted-text-permission": "Cette version de la page a été <strong>effacée</strong>.\nDes détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
+       "rev-deleted-text-permission": "Cette version de la page a été <strong>supprimée</strong>.\nDes détails sont disponibles dans le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} journal des suppressions].",
        "rev-suppressed-text-permission": "Cette version de la page a été <strong>masquée</strong>.\nLes détails se trouvent dans le [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} journal des masquages].",
        "rev-deleted-text-unhide": "Cette version de la page a été <strong>supprimée</strong>.\nDes détails sont disponibles dans [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} le journal des suppressions].\nVous pouvez toujours [$1 voir cette version] si vous le voulez.",
        "rev-suppressed-text-unhide": "Cette version de la page a été <strong>masquée</strong>.\nDes détails sont disponibles dans [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} le journal des masquages].\nVous pouvez toujours [$1 voir cette version] si vous le voulez.",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Lister",
        "rcfilters-activefilters": "Filtres actifs",
-       "rcfilters-quickfilters": "Raccoucis",
+       "rcfilters-quickfilters": "Configuration des filtres sauvegardée",
        "rcfilters-quickfilters-placeholder-title": "Aucun lien n’a encore été sauvegardé",
        "rcfilters-quickfilters-placeholder-description": "Pour sauvegarder la configuration de vos filtres pour la réutiliser ultérieurement, cliquez sur l’icône des raccourcis dans la zone des filtres actifs, ci-dessous.",
        "rcfilters-savedqueries-defaultlabel": "Filtres sauvegardés",
        "rcfilters-savedqueries-unsetdefault": "Supprime par défaut",
        "rcfilters-savedqueries-remove": "Supprimer",
        "rcfilters-savedqueries-new-name-label": "Nom",
-       "rcfilters-savedqueries-apply-label": "Créer un raccourci",
+       "rcfilters-savedqueries-apply-label": "Sauvegarde de la configuration",
        "rcfilters-savedqueries-cancel-label": "Annuler",
-       "rcfilters-savedqueries-add-new-title": "Sauvegarder les filtres en tant que raccourci",
+       "rcfilters-savedqueries-add-new-title": "Sauvegarder la configuration du filtre courant",
        "rcfilters-restore-default-filters": "Rétablir les filtres par défaut",
        "rcfilters-clear-all-filters": "Effacer tous les filtres",
        "rcfilters-search-placeholder": "Filtrer les modifications récentes (naviguer ou commencer à saisir)",
        "rcfilters-filter-categorization-label": "Modifications de catégorie",
        "rcfilters-filter-categorization-description": "Enregistrements de pages ajoutées ou supprimées des catégories.",
        "rcfilters-filter-logactions-label": "Actions tracées",
-       "rcfilters-filter-logactions-description": "Actions d’administration, créations de compte, suppression de pages, téléversements…",
+       "rcfilters-filter-logactions-description": "Actions d’administration, créations de compte, suppression de pages, téléchargements…",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Le filtre « Modifications mineures » est en conflit avec au moins un filtre de Type de modification, parce que certains types de modification ne peuvent être marqués comme « mineurs ». Les filtres en conflit sont marqués dans la zone Filtres actifs ci-dessus.",
        "rcfilters-hideminor-conflicts-typeofchange": "Certains types de modification ne peuvent pas être qualifiés de « mineurs », donc ce filtre est en conflit avec les filtres de Type de modification suivants : $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Ce filtre de Type de modification est en conflit avec le filtre « Modifications mineures ». Certains type sde modification ne peuvent pas être indiqués comme « mineurs ».",
        "sorbsreason": "Votre adresse IP est listée comme mandataire ouvert dans le DNSBL utilisé par {{SITENAME}}.",
        "sorbs_create_account_reason": "Votre adresse IP est listée comme mandataire ouvert dans le DNSBL utilisé par {{SITENAME}}.\nVous ne pouvez pas créer un compte.",
        "softblockrangesreason": "Les contributions anonymes ne sont pas autorisées à partir de votre adresse IP ($1). Veuillez vous connecter.",
-       "xffblockreason": "Une adresse IP dans l'en-tête X-Forwarded-For, soit la vôtre ou celle d'un serveur proxy que vous utilisez, a été bloquée. La raison du blocage initial est : $1",
+       "xffblockreason": "Une adresse IP dans l’en-tête X-Forwarded-For, soit la vôtre ou celle d’un serveur mandataire que vous utilisez, a été bloquée. La raison du blocage initial est&thinsp;: $1",
        "cant-see-hidden-user": "L’utilisateur que vous tentez de bloquer a déjà été bloqué et masqué. \nN’ayant pas le droit de masquer des utilisateurs, vous ne pouvez pas voir ou modifier le blocage de cet utilisateur.",
        "ipbblocked": "Vous ne pouvez pas bloquer ou débloquer d'autres utilisateurs, parce que vous êtes vous-même bloqué{{GENDER:||e}}.",
        "ipbnounblockself": "Vous n'êtes pas autorisé{{GENDER:||e}} à vous débloquer vous-même",
        "creditspage": "Crédits de la page",
        "nocredits": "Il n'y a pas d'informations d'attribution disponibles pour cette page.",
        "spamprotectiontitle": "Filtre de protection anti-pollupostage",
-       "spamprotectiontext": "La page que vous avez voulu sauvegarder a été bloquée par le filtre anti-spam. Ceci est probablement dû à l'introduction d'un lien vers un site externe apparaissant sur la liste noire.",
+       "spamprotectiontext": "La page que vous avez voulu sauvegarder a été bloquée par le filtre anti-pourriel. Ceci est probablement dû à l’introduction d’un lien vers un site externe apparaissant sur la liste noire.",
        "spamprotectionmatch": "Le texte suivant a déclenché notre filtre de protection anti-pollupostage : $1",
        "spambot_username": "Nettoyage de pourriels par MediaWiki",
        "spam_reverting": "Rétablissement de la dernière version ne contenant pas de lien vers $1",
        "spam_blanking": "Toutes les versions contenant des liens vers $1 sont blanchies",
        "spam_deleting": "Toutes les versions contenaient des liens vers $1, suppression",
-       "simpleantispam-label": "Vérification anti-spam.\nNe <strong>rien</strong> inscrire ici !",
+       "simpleantispam-label": "Vérification anti-pourriel.\nNe <strong>rien</strong> inscrire ici !",
        "pageinfo-title": "Informations pour « $1 »",
        "pageinfo-not-current": "Désolé, impossible de fournir cette information pour les anciennes révisions.",
        "pageinfo-header-basic": "Informations de base",
        "specialpages-group-pagetools": "Outils pour les pages",
        "specialpages-group-wiki": "Données et outils",
        "specialpages-group-redirects": "Pages spéciales redirigées",
-       "specialpages-group-spam": "Outils anti-spam",
+       "specialpages-group-spam": "Outils anti-pourriel",
        "specialpages-group-developer": "Outils du développeur",
        "blankpage": "Page vide",
        "intentionallyblankpage": "Cette page est laissée intentionnellement (presque) vide.",
index 3077e44..182b67f 100644 (file)
        "autoblocklist-submit": "Procura",
        "autoblocklist-legend": "Listar autobloqueos",
        "autoblocklist-localblocks": "{{PLURAL:$1|Autobloqueo local|Autobloqueos locais}}",
+       "autoblocklist-total-autoblocks": "Número total de bloques automáticos: $1",
        "autoblocklist-empty": "A lista de autobloqueos está baleira.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Outro autobloqueo|Outros autobloqueos}}",
        "ipblocklist": "Usuarios bloqueados",
index 48b5941..5887fe7 100644 (file)
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "הצגה",
        "rcfilters-activefilters": "מסננים פעילים",
-       "rcfilters-quickfilters": "ק×\99ש×\95ר×\99×\9d ×\9e×\94×\99ר×\99×\9d",
+       "rcfilters-quickfilters": "×\94×\92×\93ר×\95ת ×\9eסננ×\99×\9d ×©×\9e×\95ר×\95ת",
        "rcfilters-quickfilters-placeholder-title": "טרם נשמרו קישורים",
        "rcfilters-quickfilters-placeholder-description": "כדי לשמור את הגדרות המסננים שלך ולהשתמש בהן מאוחר יותר, יש ללחוץ על סמל הסימנייה באזור המסנן הפעיל להלן.",
        "rcfilters-savedqueries-defaultlabel": "מסננים שמורים",
        "rcfilters-savedqueries-unsetdefault": "ביטול הגדרה כברירת מחדל",
        "rcfilters-savedqueries-remove": "הסרה",
        "rcfilters-savedqueries-new-name-label": "שם",
-       "rcfilters-savedqueries-apply-label": "×\99צ×\99רת ×§×\99ש×\95ר ×\9e×\94×\99ר",
+       "rcfilters-savedqueries-apply-label": "ש×\9e×\99רת ×\94×\94×\92×\93ר×\95ת",
        "rcfilters-savedqueries-cancel-label": "ביטול",
-       "rcfilters-savedqueries-add-new-title": "ש×\9e×\99רת ×\9eסננ×\99×\9d ×\91ת×\95ר ×§×\99ש×\95ר ×\9e×\94×\99ר",
+       "rcfilters-savedqueries-add-new-title": "ש×\9e×\99רת ×\94×\92×\93ר×\95ת ×\94×\9eסננ×\99×\9d ×\94× ×\95×\9b×\97×\99×\95ת",
        "rcfilters-restore-default-filters": "שחזור למסנני ברירת המחדל",
        "rcfilters-clear-all-filters": "מחיקת כל המסננים",
        "rcfilters-search-placeholder": "סינון שינויים אחרונים (עיינו או התחילו להקליד)",
        "rcfilters-filter-watchlist-notwatched-description": "הכל מלבד שינויים לדפים ברשימת המעקב שלך.",
        "rcfilters-filtergroup-changetype": "סוג השינויים",
        "rcfilters-filter-pageedits-label": "עריכות דפים",
-       "rcfilters-filter-pageedits-description": "עריכות של תוכן ויקי, של דיונים, של תיאורי קטגוריות...",
+       "rcfilters-filter-pageedits-description": "עריכות של תוכן ויקי, של דיונים, של תיאורי קטגוריות",
        "rcfilters-filter-newpages-label": "יצירות דפים",
        "rcfilters-filter-newpages-description": "עריכות שיוצרות דפים חדשים.",
        "rcfilters-filter-categorization-label": "שינויים בקטגוריות",
        "rcfilters-filter-categorization-description": "רישומים על דפים שנוספו לקטגוריות או הוסרו מהן.",
        "rcfilters-filter-logactions-label": "פעולות יומן",
-       "rcfilters-filter-logactions-description": "פעולות מנהליות, יצירת חשבונות, מחיקת דפים, העלאות...",
+       "rcfilters-filter-logactions-description": "פעולות מנהליות, יצירת חשבונות, מחיקת דפים, העלאות",
        "rcfilters-hideminor-conflicts-typeofchange-global": "מסנן \"עריכות משניות\" מתנגש עם מסנן סוג השינויים אחד או יותר, כי סוגים מסוימים של שינויים אינם יכולים להיות מסווגים בתור \"משניים\". המסננים המתנגשים מסומנים באזור המסננים הפעילים לעיל.",
        "rcfilters-hideminor-conflicts-typeofchange": "סוגים מסוימים של שינויים אינם יכולים להיות מסווגים כ\"משניים\", כך שמסנן זה מתנגש עם מסנן סוג השינויים הבא: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "מסנן סוג השינויים הזה מתנגש עם מסנן \"עריכות משניות\". סוגים מסוימים של שינויים אינם יכולים מסווגים כ\"משניים\".",
index ef4a168..fa99843 100644 (file)
        "parser-unstrip-loop-warning": "Nedopuštena petlja",
        "parser-unstrip-recursion-limit": "Dosegnuto je ograničenje rekurzije ($1)",
        "converter-manual-rule-error": "Pronađena je pogrješka u pravilu ručnog prijevoda",
-       "undo-success": "Izmjena je uklonjena (tekst u okviru ispod ne sadrži posljednju izmjenu). Molim sačuvajte stranicu (provjerite sažetak).",
+       "undo-success": "Izmjenu je moguće ukloniti.\nMolimo Vas, usporedite niže navedene razlike u inačicama kako biste bili sigurni da ovo zaista želite učiniti, te sačuvajte stranicu i izmjene će biti uklonjene.",
        "undo-failure": "Ova izmjena ne može biti uklonjena zbog postojanja međuinačica.",
        "undo-norev": "Izmjena nije mogla biti uklonjena jer ne postoji ili je obrisana.",
        "undo-nochange": "Čini se da je uređivanje već otkazano.",
        "undo-summary": "uklanjanje izmjene $1 {{GENDER:$2|suradnika|suradnice}} [[Posebno:Doprinosi/$2|$2]] ([[Razgovor sa suradnikom:$2|razgovor]])",
+       "undo-summary-username-hidden": "Uklanjanje izmjene $1 suradnika skrivenoga suradničkoga imena",
        "cantcreateaccount-text": "Otvaranje suradničkog računa ove IP adrese ('''$1''') blokirao/la je [[User:$3|$3]].\n\nRazlog koji je dao/la $3 je ''$2''",
        "viewpagelogs": "Vidi evidencije za ovu stranicu",
        "nohistory": "Ova stranica nema starijih izmjena.",
        "pageinfo-category-subcats": "Broj podkategorija",
        "pageinfo-category-files": "Broj datoteka",
        "markaspatrolleddiff": "Označi pregledanim",
-       "markaspatrolledtext": "Označi ovaj članak pregledanim",
+       "markaspatrolledtext": "Označi ovu stranicu ophođenom",
        "markaspatrolledtext-file": "Označi ovu inačicu datoteke kao pregledanu",
        "markedaspatrolled": "Pregledano",
        "markedaspatrolledtext": "Odabrana promjena [[:$1]] označena je pregledanom.",
        "version-libraries": "Instalirane biblioteke",
        "version-libraries-library": "Knjižnica",
        "version-libraries-version": "Inačica",
+       "redirect": "Preusmjerenje prema datoteci, odnosno ID-u suradnika, stranice, izmjene ili ID-u u evidenciji",
        "redirect-submit": "Idi",
        "redirect-value": "Vrijednost:",
        "redirect-user": "ID suradnika",
        "special-characters-group-thai": "tajlandski (tajski)",
        "special-characters-group-lao": "laoski",
        "special-characters-group-khmer": "kmerski",
+       "mw-widgets-dateinput-no-date": "Nadnevak nije naznačen",
        "mw-widgets-dateinput-placeholder-day": "GGGG-MM-DD",
        "mw-widgets-dateinput-placeholder-month": "GGGG-MM",
        "mw-widgets-titleinput-description-new-page": "stranica još ne postoji",
index af43ee2..57171e5 100644 (file)
        "php-uploaddisabledtext": "Le incargamento de files PHP es disactivate. Per favor verifica le configuration file_uploads.",
        "uploadscripted": "Iste file contine codice de HTML o de script que pote esser interpretate erroneemente per un navigator del web.",
        "upload-scripted-pi-callback": "Non pote incargar un file que contine instructiones pro le tractamento de folios de stilo XML.",
+       "upload-scripted-dtd": "Non es possibile incargar files SVG que contine un declaration DTD non standard.",
        "uploaded-script-svg": "Un elemento de script \"$1\" se trova in le file SVG incargate.",
        "uploaded-hostile-svg": "Certe codice CSS insecur se trova in le elemento de stilo del file SVG incargate.",
        "uploaded-event-handler-on-svg": "Fixar attributos de gestion de eventos <code>$1=\"$2\"</code> non es permittite in files SVG.",
        "enotif_body_intro_moved": "Le pagina $1 de {{SITENAME}} ha essite {{GENDER:$2|renominate}} le $PAGEEDITDATE per $2, vide $3 pro le version actual.",
        "enotif_body_intro_restored": "Le pagina $1 de {{SITENAME}} ha essite {{GENDER:$2|restaurate}} le $PAGEEDITDATE per $2, vide $3 pro le version actual.",
        "enotif_body_intro_changed": "Le pagina $1 de {{SITENAME}} ha essite {{GENDER:$2|modificate}} le $PAGEEDITDATE per $2, vide $3 pro le version actual.",
-       "enotif_lastvisited": "Vide $1 pro tote le modificationes depost tu ultime visita.",
-       "enotif_lastdiff": "Vide $1 pro revider iste modification.",
+       "enotif_lastvisited": "Pro tote le modificationes facite depost tu ultime visita, vide $1",
+       "enotif_lastdiff": "Pro revider iste modification, vide $1",
        "enotif_anon_editor": "usator anonyme $1",
        "enotif_body": "Car $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nSummario del redactor: $PAGESUMMARY $PAGEMINOREDIT\n\nPro contactar le redactor:\nmail: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nTu non recipera altere notificationes de activitate si tu non visita iste pagina con session aperte. Tu pote anque reinitialisar le optiones de notification pro tote le paginas in tu observatorio.\n\nLe systema de notification de {{SITENAME}}, a tu servicio\n\n-- \nPro configurar le notification per e-mail, visita\n{{canonicalurl:{{#special:Preferences}}}}\n\nPro configurar le observatorio, visita\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPro retirar le pagina de tu observatorio, visita\n$UNWATCHURL\n\nFeedback e ulterior assistentia:\n$HELPPAGE",
        "created": "create",
        "sp-contributions-uploads": "incargamentos",
        "sp-contributions-logs": "registros",
        "sp-contributions-talk": "discussion",
-       "sp-contributions-userrights": "gestion de derectos de usator",
+       "sp-contributions-userrights": "gerer le derectos del {{GENDER:$1|usator}}",
        "sp-contributions-blocked-notice": "Iste usator es actualmente blocate. Le ultime entrata del registro de blocadas es reproducite ci infra pro information:",
        "sp-contributions-blocked-notice-anon": "Iste adresse IP es actualmente blocate.\nLe ultime entrata del registro de blocadas es reproducite hic infra pro information:",
        "sp-contributions-search": "Cercar contributiones",
        "unblocked-id": "Le blocada $1 ha essite removite.",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] ha essite disblocate.",
        "blocklist": "Usatores blocate",
+       "autoblocklist": "Autoblocadas",
+       "autoblocklist-submit": "Cercar",
+       "autoblocklist-legend": "Listar autoblocadas",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Autoblocada|Autoblocadas}} local",
+       "autoblocklist-total-autoblocks": "Numero total de autoblocadas: $1",
+       "autoblocklist-empty": "Le lista de autoblocadas es vacue.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Un altere autoblocada|Altere autoblocadas}}",
        "ipblocklist": "Usatores blocate",
        "ipblocklist-legend": "Cercar un usator blocate",
        "blocklist-userblocks": "Celar blocadas de conto",
        "tooltip-pt-mycontris": "Lista de {{GENDER:|tu}} contributiones",
        "tooltip-pt-anoncontribs": "Un lista de modificationes facite per iste adresse IP",
        "tooltip-pt-login": "Nos recommenda que tu te authentica, ma non es obligatori.",
+       "tooltip-pt-login-private": "Tu debe aperir session pro usar iste wiki",
        "tooltip-pt-logout": "Clauder session",
        "tooltip-pt-createaccount": "Tu es incoragiate a crear un conto e aperir session; totevia, non es obligatori",
        "tooltip-ca-talk": "Discussiones a proposito del pagina de contento",
        "confirmrecreate": "Le usator [[User:$1|$1]] ([[User talk:$1|discussion]]) ha {{GENDER:$1|delite}} iste pagina post que tu comenciava a modificar lo, dante le motivo:\n: <em>$2</em>\nPer favor confirma que tu realmente vole recrear iste pagina.",
        "confirmrecreate-noreason": "Le usator [[User:$1|$1]] ([[User talk:$1|discussion]]) ha {{GENDER:$1|delite}} iste pagina post que tu comenciava a modificar lo. Per favor confirma que tu realmente vole recrear iste pagina.",
        "recreate": "Recrear",
+       "confirm-purge-title": "Purgar iste pagina",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Rader le cache de iste pagina?",
        "confirm-purge-bottom": "Purgar un pagina vacua le cache e fortia que appare le version le plus recente.",
        "htmlform-user-not-valid": "<strong>$1</strong> non es un nomine de usator valide.",
        "logentry-delete-delete": "$1 {{GENDER:$2|deleva}} le pagina $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|deleva}} le redirection $3 superscribente lo",
-       "logentry-delete-restore": "$1 {{GENDER:$2|restaurava}} le pagina $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|restaurava}} le pagina $3 ($4)",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|restaurava}} le pagina $3",
+       "restore-count-revisions": "{{PLURAL:$1|1 version|$1 versiones}}",
+       "restore-count-files": "{{PLURAL:$1|1 file|$1 files}}",
        "logentry-delete-event": "$1 {{GENDER:$2|cambiava}} le visibilitate de {{PLURAL:$5|un entrata|$5 entratas}} de registro in $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|cambiava}} le visibilitate de {{PLURAL:$5|un version|$5 versiones}} del pagina $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|cambiava}} le visibilitate de entratas de registro in $3",
        "special-characters-group-thai": "Thailandese",
        "special-characters-group-lao": "Laotiano",
        "special-characters-group-khmer": "Cambodgiano",
+       "special-characters-group-canadianaboriginal": "Aborigine canadian",
        "special-characters-title-endash": "lineetta en",
        "special-characters-title-emdash": "lineetta em",
        "special-characters-title-minus": "signo minus",
        "mw-widgets-titleinput-description-redirect": "redirection a $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Adder un categoria…",
        "mw-widgets-usersmultiselect-placeholder": "Adder plus...",
+       "date-range-from": "A partir del:",
+       "date-range-to": "Usque al:",
        "sessionmanager-tie": "Impossibile combinar plure typos de authentication de requesta: $1.",
        "sessionprovider-generic": "sessiones $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sessiones basate sur cookies",
        "restrictionsfield-help": "Un adresse IP o intervallo CIDR per linea. Pro activar toto, usa:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "version $1",
        "pageid": "ID de pagina $1",
-       "rawhtml-notallowed": "Etiquettas &lt;html&gt; non pote esser usate foras de paginas normal."
+       "rawhtml-notallowed": "Etiquettas &lt;html&gt; non pote esser usate foras de paginas normal.",
+       "gotointerwiki": "Quitar {{SITENAME}}",
+       "gotointerwiki-invalid": "Le titulo specificate non es valide.",
+       "gotointerwiki-external": "Tu es sur le puncto de quitar {{SITENAME}} pro visitar [[$2]], un sito web separate.\n\n'''[$1 Continuar a $1]'''",
+       "undelete-cantedit": "Tu non pote restaurar iste pagina perque tu non ha le permission de modificar iste pagina.",
+       "undelete-cantcreate": "Tu non pote restaurar iste pagina perque il non ha pagina existente con iste nomine e tu non ha le permission de crear lo."
 }
index f85cb06..0d90853 100644 (file)
        "readonlywarning": "'''Peringatan: Basis data sedang dikunci karena pemeliharaan, sehingga saat ini Anda tidak dapat menyimpan hasil suntingan Anda.'''\nAnda mungkin perlu menyalin teks suntingan Anda ini dan menyimpannya ke sebuah berkas teks dan memuatkannya lagi kemudian.\n\nPengurus yang mengunci basis data memberikan penjelasan berikut: $1",
        "protectedpagewarning": "'''Peringatan: Halaman ini sedang dilindungi sehingga hanya pengguna dengan hak akses pengurus yang dapat menyuntingnya.'''\nEntri catatan terakhir disediakan di bawah untuk referensi:",
        "semiprotectedpagewarning": "'''Catatan:''' Halaman ini sedang dilindungi, sehingga hanya pengguna terdaftar yang bisa menyuntingnya.\nEntri catatan terakhir disediakan di bawah untuk referensi:",
-       "cascadeprotectedwarning": "'''Peringatan:''' Halaman ini sedang dilindungi sehingga hanya pengguna dengan hak akses pengurus saja yang dapat menyuntingnya karena disertakan dalam {{PLURAL:$1|halaman|halaman-halaman}} berikut yang telah dilindungi dengan opsi 'pelindungan runtun':",
+       "cascadeprotectedwarning": "<strong>Peringatan:</strong> Halaman ini telah dilindungi sehingga hanya pengguna dengan [[Special:ListGroupRights|hak akses tertentu]] saja dapat menyuntingnya karena ditransklusikan dalam {{PLURAL:$1|halaman|halaman-halaman}} yang dilindungi runtun:",
        "titleprotectedwarning": "'''Peringatan: Halaman ini telah dilindungi sehingga diperlukan [[Special:ListGroupRights|hak khusus]] untuk membuatnya.'''\nEntri catatan terakhir disediakan di bawah untuk referensi:",
        "templatesused": "{{PLURAL:$1|Templat|Templat}} yang digunakan di halaman ini:",
        "templatesusedpreview": "{{PLURAL:$1|Templat|Templat}} yang digunakan di pratayang ini:",
        "post-expand-template-argument-category": "Halaman dengan argumen templat yang diabaikan",
        "parser-template-loop-warning": "Hubungan berulang templat terdeteksi: [[$1]]",
        "template-loop-category": "Halaman dengan templat berulang",
+       "template-loop-category-desc": "Halaman ini mengandung templat melingkar, yaitu templat yang memanggil dirinya sendiri secara bolak-balik.",
        "parser-template-recursion-depth-warning": "Limit kedalaman hubungan berulang templat terlampaui ($1)",
        "language-converter-depth-warning": "Batas kedalaman pengonversi bahasa terlampaui ($1)",
        "node-count-exceeded-category": "Halaman dimana hitungan-node terlampaui",
        "page_first": "pertama",
        "page_last": "terakhir",
        "histlegend": "Pilih dua tombol radio lalu tekan tombol ''bandingkan'' untuk membandingkan versi. Klik suatu tanggal untuk melihat versi halaman pada tanggal tersebut.<br />(skr) = perbedaan dengan versi sekarang, (akhir) = perbedaan dengan versi sebelumnya, '''k''' = suntingan kecil, '''b''' = suntingan bot, → = suntingan bagian, ← = ringkasan otomatis",
-       "history-fieldset-title": "Menjelajah versi terdahulu",
-       "history-show-deleted": "Hanya yang dihapus",
+       "history-fieldset-title": "Cari revisi",
+       "history-show-deleted": "Revisi yang dihapus saja",
        "histfirst": "terlama",
        "histlast": "terbaru",
        "historysize": "($1 {{PLURAL:$1|bita|bita}})",
        "search-file-match": "(cocok dengan isi berkas)",
        "search-suggest": "Mungkin maksud Anda adalah: $1",
        "search-rewritten": "Menampilkan hasil untuk $1. Cari bukannya untuk $2.",
-       "search-interwiki-caption": "Proyek lain",
+       "search-interwiki-caption": "Hasil dari proyek lain",
        "search-interwiki-default": "Hasil dari $1:",
        "search-interwiki-more": "(selanjutnya)",
        "search-interwiki-more-results": "Hasil lainnya",
        "prefs-help-prefershttps": "Preferensi ini akan diaktifkan kali berikutnya Anda masuk log.",
        "prefswarning-warning": "Perubahan preferensi anda belum tersimpan. Apabila anda meninggalkan halaman ini tanpa men-klik \"$1\" preferensi anda tidak akan diperbarui.",
        "prefs-tabs-navigation-hint": "Tip: Anda dapat menggunakan tombol panah kiri dan kanan untuk bernavigasi antartab di dalam daftar tab.",
-       "userrights": "Manajemen hak pengguna",
+       "userrights": "Hak pengguna",
        "userrights-lookup-user": "Pilih seorang pengguna",
        "userrights-user-editname": "Masukkan nama pengguna:",
        "editusergroup": "Muat kelompok pengguna",
        "userrights-groupsmember": "Anggota dari:",
        "userrights-groupsmember-auto": "Anggota implisit dari:",
        "userrights-groupsmember-type": "$1",
-       "userrights-groups-help": "Anda dapat mengubah kelompok pengguna ini:\n* Kotak dengan tanda cek merupakan kelompok pengguna yang bersangkutan\n* Kotak tanpa tanda cek berarti pengguna ini bukan anggota kelompok tersebut\n* Tanda * menandai bahwa Anda tidak dapat membatalkan kelompok tersebut bila Anda telah menambahkannya, atau sebaliknya.",
+       "userrights-groups-help": "Anda dapat mengubah kelompok pengguna ini:\n* Kotak dengan tanda cek merupakan kelompok pengguna yang bersangkutan.\n* Kotak tanpa tanda cek berarti pengguna ini bukan anggota kelompok tersebut.\n* Tanda * menandai bahwa Anda tidak dapat membatalkan kelompok tersebut bila Anda telah menambahkannya, atau sebaliknya.\n* Tanda # menandai bahwa Anda hanya dapat mengembalikan waktu kedaluwarsa keanggotaan kelompok ini, tetapi Anda tidak dapat memajukan waktu kedaluwarsanya.",
        "userrights-reason": "Alasan:",
        "userrights-no-interwiki": "Anda tidak memiliki hak untuk mengubah hak pengguna di wiki yang lain.",
        "userrights-nodatabase": "Basis data $1 tidak ada atau bukan lokal.",
        "userrights-expiry-current": "Udang $1",
        "userrights-expiry-none": "Tidak usang",
        "userrights-expiry": "Usang:",
+       "userrights-expiry-existing": "Waktu kedaluwarsa saat ini: $3, $2",
        "userrights-expiry-othertime": "Waktu lain:",
+       "userrights-expiry-options": "1 hari:1 hari,1 minggu:1 minggu,1 bulan:1 bulan,3 bulan:3 bulan,6 bulan:6bulan,1 tahun:1 tahun",
+       "userrights-invalid-expiry": "Waktu kedaluwarsa untuk kelompok \"$1\" tidak sah.",
+       "userrights-expiry-in-past": "Waktu kedaluwarsa untuk kelompok \"$1\" sudah berlalu.",
+       "userrights-cannot-shorten-expiry": "Anda tidak dapat memajukan waktu kedaluwarsa dari keanggotaan dalam kelompok \"$1\". Hanya pengguna dengan hak akses dapat menambahkan dan mencabut kelompok ini dapat memajukan waktu kedaluwarsa.",
        "userrights-conflict": "Konflik perubahan hak pengguna! Silakan tinjau ulang dan konfirmasi perubahan Anda.",
        "group": "Kelompok:",
        "group-user": "Pengguna",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lihat pula [[Special:NewPages|daftar halaman baru]])",
        "recentchanges-submit": "Tampilkan",
        "rcfilters-activefilters": "Filter aktif",
+       "rcfilters-quickfilters": "Pranala cepat (pintas)",
+       "rcfilters-quickfilters-placeholder-title": "Tidak ada pranala tersimpan sekarang",
+       "rcfilters-quickfilters-placeholder-description": "Untuk menyimpan pengaturan saringan dan menggunakannya kembali, klik ikon penanda halaman di area Penyaringan Aktif, di bawah.",
+       "rcfilters-savedqueries-defaultlabel": "Saringan tersimpan",
        "rcfilters-savedqueries-rename": "Ubah nama",
        "rcfilters-savedqueries-setdefault": "Tetapkan sebagai baku",
+       "rcfilters-savedqueries-unsetdefault": "Hapus sebagai baku",
        "rcfilters-savedqueries-remove": "Hapus",
+       "rcfilters-savedqueries-new-name-label": "Nama",
+       "rcfilters-savedqueries-apply-label": "Buat pranala cepat",
        "rcfilters-savedqueries-cancel-label": "Batalkan",
+       "rcfilters-savedqueries-add-new-title": "Simpan penyaringan sebagai pranala cepat",
        "rcfilters-restore-default-filters": "Kembalikan filter bawaan",
        "rcfilters-clear-all-filters": "Hapus semua penyaringan",
        "rcfilters-search-placeholder": "Filter perubahan terbaru (jelajahi atau masukan input)",
        "rcfilters-filterlist-title": "Penyaringan",
        "rcfilters-filterlist-whatsthis": "Apa ini?",
        "rcfilters-filterlist-feedbacklink": "Berikan umpan balik untuk filter uji coba baru",
+       "rcfilters-highlightbutton-title": "Sorot hasil",
        "rcfilters-highlightmenu-title": "Pilih warna",
+       "rcfilters-highlightmenu-help": "Pilihlah warna untuk menyorot atribut ini",
        "rcfilters-filterlist-noresults": "Tidak ada penyaring ditemukan",
+       "rcfilters-noresults-conflict": "Hasil tidak ditemukan karena kriteria pencariannya bertentangan",
        "rcfilters-filtergroup-registration": "Pendaftaran pengguna",
        "rcfilters-filter-registered-label": "Terdaftar",
        "rcfilters-filter-registered-description": "Penyunting masuk log",
        "rcfilters-filter-unregistered-label": "Tidak terdaftar",
        "rcfilters-filter-unregistered-description": "Penyunting yang tidak masuk log",
-       "rcfilters-filtergroup-authorship": "Sunting kepengarangan",
+       "rcfilters-filtergroup-authorship": "Kontribusi pengarang",
        "rcfilters-filter-editsbyself-label": "Suntingan Anda",
-       "rcfilters-filter-editsbyself-description": "Suntingan oleh Anda",
+       "rcfilters-filter-editsbyself-description": "Kontribusi saya",
        "rcfilters-filter-editsbyother-label": "Suntingan orang lain",
-       "rcfilters-filter-editsbyother-description": "Suntingan dibuat oleh orang lain (bukan Anda)",
+       "rcfilters-filter-editsbyother-description": "Semua perubahan kecuali perubahan milik sendiri.",
+       "rcfilters-filtergroup-userExpLevel": "Level pengalaman (hanya untuk pengguna terdaftar)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Penyaringan mahir hanya mencari pengguna terdaftar, sehingga penyaringan ini bertentangan dengan penyaringan \"pengguna tidak terdaftar\".",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "Penyaringan \"pengguna tidak terdaftar\" bertentangan dengan satu atau lebih penyaringan Mahir, yang mana hanya mencari pengguna terdaftar. Penyaringan yang bertentangan ini ditandai di area Penyaringan Aktif, di atas.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Pendatang baru",
        "rcfilters-filter-user-experience-level-newcomer-description": "Kurang dari 10 suntingan dan aktivitas selama 4 hari.",
        "rcfilters-filter-user-experience-level-learner-label": "Pelajar",
        "rcfilters-filter-bots-description": "Suntingan yang dibuat dengan perkakas terotomatisasi.",
        "rcfilters-filter-humans-label": "Manusia (bukan bot)",
        "rcfilters-filter-humans-description": "Suntingan yang dibuat oleh penyunting manusia.",
+       "rcfilters-filtergroup-reviewstatus": "Status peninjauan",
        "rcfilters-filter-patrolled-label": "Telah dipatroli",
        "rcfilters-filter-patrolled-description": "Suntingan ditandai sebagai terpatroli",
        "rcfilters-filter-unpatrolled-label": "Belum terpatroli",
+       "rcfilters-filter-unpatrolled-description": "Suntingan yang tidak ditandai sebagai terpatroli.",
        "rcfilters-filtergroup-significance": "Kepentingan",
        "rcfilters-filter-minor-label": "Suntingan kecil",
        "rcfilters-filter-minor-description": "Suntingan yang ditandai penyunting sebagai suntingan kecil",
        "rcfilters-filter-major-label": "Suntingan yang bukan suntingan kecil",
        "rcfilters-filter-major-description": "Suntingan yang ditandai sebagai suntingan kecil",
+       "rcfilters-filtergroup-watchlist": "Halaman terpantau",
+       "rcfilters-filter-watchlist-watched-label": "Dalam pantauan",
+       "rcfilters-filter-watchlist-watched-description": "Perubahan pada halaman dalam pantauan Anda.",
+       "rcfilters-filter-watchlist-watchednew-label": "Perubahan Daftar Pantauan baru.",
+       "rcfilters-filter-watchlist-watchednew-description": "Perubahan halaman-halaman yang dipantau yang belum dikunjungi oleh Anda sejak perubahan terjadi.",
+       "rcfilters-filter-watchlist-notwatched-label": "Tidak dalam daftar pantauan",
+       "rcfilters-filter-watchlist-notwatched-description": "Semuanya kecuali perubahan pada halaman yang dipantau.",
        "rcfilters-filtergroup-changetype": "Jenis perubahan",
        "rcfilters-filter-pageedits-label": "Suntingan halaman",
-       "rcfilters-filter-pageedits-description": "Suntingan pada konten wiki, diskusi, deskripsi kategori....",
+       "rcfilters-filter-pageedits-description": "Perubahan pada konten wiki, diskusi, deskripsi kategori...",
        "rcfilters-filter-newpages-label": "Pembuatan halaman",
        "rcfilters-filter-newpages-description": "Suntingan yang membuat halaman baru",
        "rcfilters-filter-categorization-label": "Perubahan kategori",
        "rcfilters-filter-categorization-description": "Rekam jejak halaman yang telah ditambahkan atau dihapus dari kategori.",
        "rcfilters-filter-logactions-label": "Tindakan tercatat",
-       "rcfilters-filter-logactions-description": "Tindakan administratif, pembuatan akun, penghapusan halaman, pengunggahan....",
+       "rcfilters-filter-logactions-description": "Tindakan administratif, pembuatan akun, penghapusan halaman, pengunggahan...",
        "rcfilters-filtergroup-lastRevision": "Revisi terkini",
        "rcfilters-filter-lastrevision-label": "Revisi terkini",
        "rcfilters-filter-lastrevision-description": "Perubahan terkini halaman ini",
        "rcfilters-filter-previousrevision-label": "Revisi lebih awal",
+       "rcfilters-filter-previousrevision-description": "Semua perubahan yang bukan perubahan terbaru pada sebuah halaman.",
        "rcnotefrom": "Di bawah ini adalah {{PLURAL:$5|perubahan}} sejak <strong>$3, $4</strong> (ditampilkan sampai <strong>$1</strong> perubahan).",
        "rclistfromreset": "Atur ulang pilihan tanggal",
        "rclistfrom": "Perlihatkan perubahan terbaru sejak $3 $2",
        "php-uploaddisabledtext": "Pemuatan berkas dimatikan di PHP. Silakan cek pengaturan file_uploads.",
        "uploadscripted": "Berkas ini mengandung HTML atau kode yang dapat diinterpretasikan dengan keliru oleh penjelajah web.",
        "upload-scripted-pi-callback": "Tidak dapat mengunggah berkas yang mengandung arahan pengolahan hamparan XML.",
+       "upload-scripted-dtd": "Tidak dapat mengunggah berkas SVG yang mengandung deklarasi DTD takstandar.",
        "uploaded-script-svg": "Terdapat elemen terskrip \"$1\" dalam berkas SVG yang diunggah.",
        "uploaded-hostile-svg": "Terdapat CSS yang tidak aman dalam elemen gaya berkas SVG yang diunggah.",
        "uploaded-event-handler-on-svg": "Penetapan atribut <i>event-handler</i> $1=\"$2\" tidak diizinkan dalam berkas SVG.",
        "apisandbox-loading-results": "Menerima hasil API...",
        "apisandbox-results-error": "Sebuah galat terjadi ketika memuat permintaan respon API: $1.",
        "apisandbox-request-selectformat-label": "Tampilkan permintaan data sebagai:",
+       "apisandbox-request-format-url-label": "String kueri URL",
        "apisandbox-request-url-label": "URL Permintaan:",
        "apisandbox-request-json-label": "Meminta JSON:",
        "apisandbox-request-time": "Lama permintaan: {{PLURAL:$1|$1 ms}}",
        "enotif_body_intro_moved": "Halaman $1 di {{SITENAME}} telah dipindahkan pada $PAGEEDITDATE oleh {{gender:$2|$2}}, lihat $3 untuk revisi terkini.",
        "enotif_body_intro_restored": "Halaman $1 di {{SITENAME}} telah dikembalikan pada $PAGEEDITDATE oleh {{gender:$2|$2}}, lihat $3 untuk revisi terkini.",
        "enotif_body_intro_changed": "Halaman $1 di {{SITENAME}} telah diubah pada $PAGEEDITDATE oleh {{gender:$2|$2}}, lihat $3 untuk revisi terkini.",
-       "enotif_lastvisited": "Lihat $1 untuk semua perubahan sejak kunjungan terakhir Anda.",
-       "enotif_lastdiff": "Kunjungi $1 untuk melihat perubahan ini.",
+       "enotif_lastvisited": "Untuk semua perubahan sejak kunjungan terakhir, lihat $1",
+       "enotif_lastdiff": "Untuk melihat perubahan ini, lihat $1",
        "enotif_anon_editor": "pengguna anonim $1",
        "enotif_body": "Halo $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nRingkasan suntingan: $PAGESUMMARY $PAGEMINOREDIT\n\nHubungi penyunting:\nsurel: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nKami tidak akan mengirim pemberitahuan lain bila ada perubahan lebih lanjut sampai Anda mengunjungi halaman ini ketika masuk log. Anda juga dapat menyetel ulang tanda pemberitahuan untuk semua halaman pantauan pada daftar pantauan Anda.\n\nSistem pemberitahuan situs {{SITENAME}} Anda yang ramah\n\n--\nUntuk mengubah pengaturan pemberitahuan surel, kunjungi\n{{canonicalurl:{{#special:Preferences}}}}\n\nUntuk mengubah setelan daftar pantauan, kunjungi\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nUntuk menghapus halaman dari daftar pantauan, kunjungi\n$UNWATCHURL\n\nUmpan balik dan bantuan lebih lanjut:\n$HELPPAGE",
        "created": "dibuat",
        "changecontentmodel-emptymodels-title": "Tidak tersedia model konten",
        "changecontentmodel-emptymodels-text": "Konten dalam [[:$1]] tidak dapat diubah ke dalam jenis lain.",
        "log-name-contentmodel": "Log perubahan model konten",
-       "log-description-contentmodel": "Peristiwa terkait model konten sebuah halaman",
+       "log-description-contentmodel": "Halaman ini menampilkan perubahan pada model konten halaman, dan halaman yang dibuat dengan model konten selain model konten baku.",
        "logentry-contentmodel-new": "$1 {{GENDER:$2|membuat}} halaman $3 menggunakan model konten tak baku \"$5\"",
        "logentry-contentmodel-change": "$1 {{GENDER:$2|mengubah}} model konten halaman $3 dari \"$4\" ke \"$5\"",
        "logentry-contentmodel-change-revertlink": "batalkan",
        "sp-contributions-uploads": "unggahan",
        "sp-contributions-logs": "log",
        "sp-contributions-talk": "bicara",
-       "sp-contributions-userrights": "pengelolaan hak pengguna",
+       "sp-contributions-userrights": "Manajemen hak akses {{GENDER:$1|pengguna}}",
        "sp-contributions-blocked-notice": "Pengguna ini sedang diblokir.\nLog pemblokiran terakhir ditampilkan berikut untuk referensi:",
        "sp-contributions-blocked-notice-anon": "Alamat IP ini sedang diblokir saat ini.\nEntri log pemblokiran terakhir tersedia di bawah ini sebagai rujukan:",
        "sp-contributions-search": "Cari kontribusi",
        "autoblocklist": "Pemblokiran otomatis",
        "autoblocklist-submit": "Pencarian",
        "autoblocklist-legend": "Daftar pemblokiran otomatis",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Blokir otomatis|Blokir otomatis}} lokal",
+       "autoblocklist-total-autoblocks": "Total blokir otomatis: $1",
+       "autoblocklist-empty": "Daftar pemblokiran otomatis kosong.",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Blokir otomatis|Blokir otomatis}} lainnya",
        "ipblocklist": "Daftar pemblokiran pengguna",
        "ipblocklist-legend": "Cari pengguna yang diblokir",
        "blocklist-userblocks": "Sembunyikan pemblokiran akun",
        "tooltip-pt-mycontris": "Daftar kontribusi {{GENDER:|Anda}}",
        "tooltip-pt-anoncontribs": "Daftar suntingan yang dibuat dari alamat IP ini",
        "tooltip-pt-login": "Anda disarankan untuk masuk log, meskipun hal itu tidak diwajibkan.",
+       "tooltip-pt-login-private": "Anda harus masuk loh untuk menggunakan wiki ini",
        "tooltip-pt-logout": "Keluar log",
        "tooltip-pt-createaccount": "Anda dianjurkan untuk membuat akun dan masuk log; meskipun, hal itu tidak diwajibkan",
        "tooltip-ca-talk": "Pembicaraan halaman isi",
        "anonymous": "{{PLURAL:$1|pengguna|para pengguna}} anonim {{SITENAME}}",
        "siteuser": "pengguna {{SITENAME}} $1",
        "anonuser": "pengguna anonim {{SITENAME}} $1",
-       "lastmodifiedatby": "Halaman ini terakhir kali diubah $2, $1 oleh $3.",
+       "lastmodifiedatby": "Halaman ini terakhir disunting $2, $1 oleh $3.",
        "othercontribs": "Didasarkan pada karya $1.",
        "others": "lainnya",
        "siteusers": "{{PLURAL:$2|pengguna|para pengguna}} {{SITENAME}} $1",
        "newimages-summary": "Halaman istimewa berikut menampilkan daftar berkas yang terakhir dimuat",
        "newimages-legend": "Penyaring",
        "newimages-label": "Nama berkas (atau sebagian dari nama berkas):",
+       "newimages-user": "Alamat IP atau nama pengguna",
        "newimages-showbots": "Tampilkan unggahan oleh bot",
        "newimages-hidepatrolled": "Sembunyikan unggahan yang telah dipatroli",
        "noimages": "Tidak ada yang dilihat.",
        "confirmrecreate-noreason": "Pengguna [[User:$1|$1]] ([[User talk:$1|bicara]]) telah {{GENDER:$1|menghapus}} halaman ini setelah Anda mulai menyunting. Harap konfirmasikan bahwa Anda ingin membuat ulang halaman ini.",
        "recreate": "Buat ulang",
        "unit-pixel": "px",
+       "confirm-purge-title": "Hapus singgahan halaman ini",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Hapus singgahan halaman ini?",
        "confirm-purge-bottom": "Membersihkan halaman akan sekaligus menghapus singgahan dan menampilkan versi halaman terkini.",
        "tags-update-add-not-allowed-one": "Tag \"$1\"tidak diizinkan untuk ditambahkan secara manual.",
        "tags-update-add-not-allowed-multi": "{{PLURAL:$2|tag is|Tag ini}} tidak diizinkan untuk ditambahkan secara manual: $1",
        "tags-update-remove-not-allowed-one": "Tag \"$1\" tidak diizinkan untuk dihapus.",
+       "tags-update-remove-not-allowed-multi": "{{PLURAL:$2|Tag|Tag-tag}} berikut tidak dibolehkan untuk dihapus secara manual: $1",
        "tags-edit-title": "Sunting tag",
        "tags-edit-manage-link": "Kelola tag",
        "tags-edit-revision-selected": "{{PLURAL:$1|Revisi terpilih|Revisi terpilih}} dari [[:$2]]:",
        "htmlform-user-not-valid": "<strong>$1</strong> bukan merupakan nama pengguna sah.",
        "logentry-delete-delete": "$1 {{GENDER:$2|menghapus}} halaman $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|menghapus}} pengalihan $3 dengan penimpaan",
-       "logentry-delete-restore": "$1 {{GENDER:$2|mengembalikan}} halaman $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|mengembalikan}} halaman $3 ($4)",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|mengembalikan}} halaman $3",
+       "restore-count-revisions": "{{PLURAL:$1|1 revisi|$1 revisi}}",
+       "restore-count-files": "{{PLURAL:$1|1 berkas|$1 berkas}}",
        "logentry-delete-event": "$1 {{GENDER:$2|mengubah}} tampilan {{PLURAL:$5|$5 log peristiwa}} di $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|mengubah}} tampilan {{PLURAL:$5|$5  revisi}} di halaman $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|mengubah}} tampilan log peristiwa pada $3",
        "linkaccounts-submit": "Tautkan akun",
        "unlinkaccounts": "Lepastautkan akun",
        "unlinkaccounts-success": "Akun berikut telah dilepastautkan.",
+       "authenticationdatachange-ignored": "Otentikasi perubahan data tidak dijalankan. Mungkin tidak ada provider yang diatur?",
        "userjsispublic": "Harap perhatikan: subhalaman Javascript sebaiknya tidak mengandung data rahasia, karena dapat dilihat oleh pengguna lain.",
        "usercssispublic": "Harap perhatikan: subhalaman CSS sebaiknya tidak mengandung data rahasia karena dapat dilihat oleh pengguna lain.",
        "restrictionsfield-badip": "Alamat IP atau rentang IP tidak sah: $1",
        "restrictionsfield-label": "Rentang IP yang diizinkan:",
-       "restrictionsfield-help": "Satu alamat IP atau rentang CIDR per baris. Untuk mengaktifkan semuanya, gunakan <br><code>0.0.0.0/0</code><br><code>::/0</code>",
+       "restrictionsfield-help": "Satu alamat IP atau rentang CIDR per baris. Untuk mengaktifkan semuanya, gunakan:\n<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "revisi $1",
-       "pageid": "ID halaman $1"
+       "pageid": "ID halaman $1",
+       "rawhtml-notallowed": "Tag &lt;html&gt; tidak dapat digunakan di luar halaman normal.",
+       "gotointerwiki-invalid": "Judul yang ditentukan tidak sah"
 }
index 16eec90..3012f49 100644 (file)
        "nav-login-createaccount": "Mlebu log / gawé akun",
        "logout": "Metu log",
        "userlogout": "Metu log",
-       "notloggedin": "Durung kalebu",
+       "notloggedin": "Durung mlebu log",
        "userlogin-noaccount": "Durung duwé akun?",
        "userlogin-joinproject": "Mèlua {{SITENAME}}",
        "createaccount": "Gawé akun",
        "cantrollback": "Ora bisa mbalèkaké suntingan; panganggo pungkasan iku siji-sijiné penulis artikel iki.",
        "alreadyrolled": "Ora bisa mulihaké besutan pungkasan [[:$1]] déning [[User:$2|$2]] ([[User talk:$2|rembug]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); ana wong liya sing wis mbesut utawa mulihaké kaca iki.\n\nBesutan pungkasan kaca iku garapané [[User:$3|$3]] ([[User talk:$3|rembug]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Ringkesan suntingan yaiku: <em>$1</em>.",
-       "revertpage": "Besutan sing dibalèkaké [[Special:Contributions/$2|$2]] ([[User talk:$2|rembugan]]) bab owahan pungkasan déning [[User:$1|$1]]",
+       "revertpage": "Besutan sing dibalèkaké déning [[Special:Contributions/$2|$2]] ([[User talk:$2|rembugan]]) nyang révisi pungkasan déning [[User:$1|$1]]",
        "revertpage-nouser": "Suntingan déning panganggo sing didhelikake, dibalèkaké nèng benahan pungkasan déning [[User:$1|$1]]",
        "rollback-success": "Suntingan dibalèkaké déning $1;\ndiowahi bali menyang vèrsi pungkasan déning $2.",
        "sessionfailure-title": "Sèsi gagal",
index 2c39e34..ea525d3 100644 (file)
        "autoblocklist-submit": "Пребарај",
        "autoblocklist-legend": "Испис на автоблокови",
        "autoblocklist-localblocks": "{{PLURAL:$1|Месен автоблок|Месни автоблокови}}",
+       "autoblocklist-total-autoblocks": "Вкупно автоблокови: $1",
        "autoblocklist-empty": "Списокот на автоблокови е празен.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Друг автоблок|Други автоблокови}}",
        "ipblocklist": "Блокирани корисници",
index 5be1fc5..508c79e 100644 (file)
@@ -22,7 +22,8 @@
                        "Macofe",
                        "Matma Rex",
                        "Nemo bis",
-                       "Mbrt"
+                       "Mbrt",
+                       "Muhdnurhidayat"
                ]
        },
        "tog-underline": "Garis bawah pautan:",
        "search-file-match": "(sepadan dengan kandungan fail)",
        "search-suggest": "Maksud anda, $1?",
        "search-rewritten": "Memaparkan hasil untuk $1. Cari $2 pula.",
-       "search-interwiki-caption": "Projek-projek lain",
+       "search-interwiki-caption": "Hasil dari projek lain",
        "search-interwiki-default": "Hasil dari $1:",
        "search-interwiki-more": "(lagi)",
        "search-relatedarticle": "Berkaitan",
        "recentchanges-label-plusminus": "Saiz laman telah berubah sebanyak jumlah bait ini",
        "recentchanges-legend-heading": "<strong>Petunjuk:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lihat juga [[Special:NewPages|senarai laman baru]])",
+       "rcfilters-filter-pageedits-description": "Suntingan kandungan wiki, perbincangan, huraian kategori…",
+       "rcfilters-filter-logactions-description": "Tindakan pentadbiran, pembuatan akaun, penghapusan halaman, muat naik…",
        "rcnotefrom": "Yang berikut adalah {{PLURAL:$5|suntingan|suntingan-suntingan}} sejak <strong>$3, $4</strong> (selebihi <strong>$1</strong> dipaparkan).",
        "rclistfrom": "Paparkan perubahan sejak $3 $2",
        "rcshowhideminor": "$1 suntingan kecil",
index a3b7c7e..75ad220 100644 (file)
        "redirectedfrom": "($1 جه بموئه)",
        "redirectpagesub": "گجگی‌بَیتـِن",
        "redirectto": "دکشی‌بیّه به:",
-       "lastmodifiedat": "این صفحه ره آخرین بار این گادر دچینه:\n$2، $1",
+       "lastmodifiedat": "این صفحه ره آخرین بار این گادر دچینه: $2، $1",
        "viewcount": "این صفحه {{PLURAL:$1|ات|$1}} بار بدی‌یه بیّه",
        "protectedpage": "صفحه محافظت‌بَیی",
        "jumpto": "کپّل بیّن به:",
        "nstab-template": "شابلون",
        "nstab-help": "راهنما",
        "nstab-category": "رج",
+       "mainpage-nstab": "گت صفحه",
        "nosuchaction": "نونه اینتی هاکردن",
        "nosuchactiontext": "اینتا کار اینترنتی ِنشونی دله غیرموجازه\nشما احتمالا اینترنتی آدرس ره ایشتباه بنویشنی یا لینک ایشتبا ره کلیک هاکردنی\nهمینتی ممکن هسته ایرادی {{SITENAME}} دله داره.",
        "nosuchspecialpage": "اینتا شاء صفحه وجود ندانّه",
        "yourdomainname": "شمه کاروری نوم",
        "login": "دله بوردن",
        "nav-login-createaccount": "دله بوردن / عضو بیّن",
-       "userlogin": "دله بموئن / عضو بیّن",
-       "userloginnocreate": "دله بموئن",
        "logout": "دربوردن",
        "userlogout": "دربوردن",
        "notloggedin": "سیستم ره دله نیه مونی",
        "userlogin-noaccount": "عضو نی؟",
        "userlogin-joinproject": "{{SITENAME}} دله ثبت‌نوم هاکنین!",
-       "nologin": "عضو نی؟ $1.",
-       "nologinlink": "عضو بواشین",
        "createaccount": "ترنه حساب وا هکاردن",
-       "gotaccount": "عضو هسنی؟ $1.",
-       "gotaccountlink": "بورین دله",
-       "userlogin-resetlink": "دله بموئن ِجزئیات ره یاد هاکردی؟",
        "userlogin-resetpassword-link": "شه پسوُرد ره یاد بکاردنی؟",
        "userlogin-helplink2": "لاگین وسّه کومِک بَییتن",
        "createacct-emailoptional": "ایمیل (اختیاری)",
        "createacct-email-ph": "شه ایمیل ره باوّین",
        "createaccountmail": "ایمیل جه",
-       "createaccountreason": "دلیل:",
        "createacct-submit": "شه اکانت ره بسازین",
        "createacct-benefit-heading": "{{SITENAME}} ره شِمه واری آدِمون بِساتنه",
        "createacct-benefit-body1": "{{PLURAL:$1|دچی‌ین}}",
        "passwordreset": "پسورد ِتغییر",
        "passwordreset-username": "کاروری نوم:",
        "passwordreset-domain": "دامنه:",
-       "passwordreset-capture": "گت ایمیل سِراق هدائه بَواشه؟",
        "changeemail-oldemail": "اساء ایمیل:",
        "changeemail-newemail": "ترنه ایمیل آدرس:",
        "changeemail-none": "(هچّی)",
        "rcshowhidemine": "مه دچی‌یه‌ئون $1",
        "rcshowhidemine-show": "سِراق هِدائِن",
        "rcshowhidemine-hide": "پنهون هاکن",
-       "rclinks": "نـِشون هـِدائن  $1 پایانی دَچی‌‌یه‌ئون، $2 اِسـا روز ره دلـه؛ $3",
+       "rclinks": "نـِشون هـِدائن  $1 پایانی دَچی‌‌یه، $2 روز اخیر دله",
        "diff": "فرق",
        "hist": "تاریخچه",
        "hide": "پنهون هاکن",
        "linkstoimage": "این {{PLURAL:$1|صفحه|$1 صفحه‌ئون}} لینک هِدانه این فایل ره:",
        "nolinkstoimage": "این عکس ره هیچ جا نی‌یشتنه",
        "sharedupload-desc-here": "این پرونده $1 دله دَره و ممکن هسته دیگه پروژه‌ئون دله هم استفاده بواشه.\nتوضیحات موجود [$2 پرونده توضیحات صفحه میون اونجه]، سِراق هِدا وونّه.",
+       "shared-repo-name-wikimediacommons": "ویکی‌تلمبار",
        "upload-disallowed-here": "متأسفانه شما نتوندی این پرونده ره بازنویس هاکنی.",
        "randompage": "شانسی صفحه",
        "statistics": "آمار",
        "contributions": "{{GENDER:$1|کارور}} کایری‌ئون",
        "contributions-title": "$1 کایری‌ئون",
        "mycontris": "مه کایری‌ئون",
+       "anoncontribs": "کومِک هاکردن",
        "contribsub2": "$1 ($2) وه‌سه",
        "uctop": "(سر)",
        "month": "این ماه (و پیش از اون) دله:",
        "allmessages-filter-all": "همه",
        "thumbnail-more": "گت بوو",
        "import-interwiki-submit": "بیاردن",
-       "tooltip-pt-userpage": "مه کاروری صفحه",
-       "tooltip-pt-mytalk": "مه گپ صفحه",
-       "tooltip-pt-preferences": "مه خواسته‌نی‌ئون",
+       "tooltip-pt-userpage": "{{GENDER:|شمه کاروری}} صفحه",
+       "tooltip-pt-mytalk": "{{GENDER:|شمه}} گپ صفحه",
+       "tooltip-pt-preferences": "{{GENDER:|شمه}} خواسته‌نی‌ئون",
        "tooltip-pt-watchlist": "لیست صفحه‌ئونی که شِما وشون ِدچی‌یه بیّن ره اشنی",
-       "tooltip-pt-mycontris": "مه کایری‌ئون لیست",
+       "tooltip-pt-mycontris": "{{GENDER:|شمه}} کایری‌ئون لیست",
        "tooltip-pt-login": "شه‌ما به‌ته‌ر هـأسـه که سـیـسـتـه‌م ده‌لـه بـیـه‌ئی، هـرچـأن زوری نـیـه",
        "tooltip-pt-logout": "سیستم جه دأیابـوری",
        "tooltip-pt-createaccount": "شِما ره پیشنهاد کامبی که اتا کاروری حیساب بسازین و لاگین بَواشین؛ البته این کار اختیاری هسته.",
        "tooltip-t-recentchangeslinked": "اِسایی دِگاردسته‌ئون ِصفحه‌ئون که این صفحه جه لینک دارنه",
        "tooltip-feed-rss": "RSS خوراک این صفحه وسّه",
        "tooltip-feed-atom": "Atom خوراک این صفحه وسّه",
-       "tooltip-t-contributions": "این کارور ِکایریون ِفهرست",
+       "tooltip-t-contributions": "{{GENDER:$1|این کارور}} ِکایری‌ئون ِفهرست",
        "tooltip-t-emailuser": "ای کـارور ره اتـا ئـه‌لـه‌کـتـه‌رونـیـکـی‌نـومـه راهـی هـه‌کـارده‌ن",
        "tooltip-t-upload": "بـاربـیـه‌شـتـه‌ن فـایـل‌ئون",
        "tooltip-t-specialpages": "همه شا صفحه‌ئون ِلیسـت",
        "feedback-message": "پیغوم:",
        "feedback-subject": "موضوع:",
        "feedback-submit": "ارسال پیشنهادات و انتقادات",
-       "searchsuggest-search": "چرخه‌تو",
-       "api-error-badaccess-groups": "شما اجازهٔ باربی‌یشتن پرونده‌ها ره این ویکی دله ندارنی.",
+       "searchsuggest-search": "چرخه‌تو {{SITENAME}}",
        "api-error-badtoken": "خطای داخلی: کد امنیتی اشتبائه (Bad token).",
-       "api-error-copyuploaddisabled": "باربی‌یشتن با استفاده از نشونی اینترنتی این کارساز دله غیرفعاله.",
-       "api-error-duplicate": "{{PLURAL:$1|پروندهٔ دیگه‌یی|چن پروندهٔ دیگه}} وب‌گاه دله با محتوای ات‌تی دیی‌یه.",
-       "api-error-duplicate-archive": "{{PLURAL:$1|پروندهٔ دیگه‌یی|چن پروندهٔ دیگه}} وب‌گاه دله با محتوای اتجور وجود داشته، ولی حذف {{PLURAL:$1|بیی‌یه|بیی‌نه}}.",
-       "api-error-empty-file": "پرونده‌ای که شما برسنینی خالی بی‌یه.",
-       "api-error-fetchfileerror": "خطای داخلی: زمون بییتن پرونده، اتا چی درست پیش نشی‌یه.",
-       "api-error-file-too-large": "پرونده‌ای که شما برسنینی خله خله گت بی‌یه.",
-       "api-error-filename-tooshort": "پرونده ایسم خله خله پچیکه.",
-       "api-error-filetype-banned": "این نوع پرونده ممنوعه.",
-       "api-error-filetype-missing": "پرونده فرمت ندانّه.",
-       "api-error-hookaborted": "اصلاحیه‌ای که شما خاسنی وه ره بساجین، افزونه وه ره تله دمبدائه.",
-       "api-error-http": "خطای داخلی: نتومبی به به سرور اتصال هادیم",
-       "api-error-illegal-filename": "پرونده ایسم مجاز نی‌یه.",
-       "api-error-internal-error": "خطای داخلی: با پردازش باربی‌یشتن شما ویکی سر، ات چی اشتباه پیش بورده.",
-       "api-error-invalid-file-key": "خطای داخلی: پرونده حافظهٔ موقت سر دنی‌ئه.",
-       "api-error-missingparam": "خطای داخلی: پارامترون درخاست ره ندارمی.",
-       "api-error-missingresult": "خطای داخلی: نتونّی بفهمین کپی‌رایت موفق بی‌یه یا نا.",
-       "api-error-mustbeloggedin": "باربی‌یشتن پرونده‌ها وسّه شما ونه کاروری ایسم جا دَواشین.",
-       "api-error-mustbeposted": "خطای داخلی: درخواست ونه روش POST HTTP جا ارسال بوو.",
-       "api-error-noimageinfo": "باربی‌یشتن موفق بی‌یه، ولی کارساز هیچ اطلاعاتی دربارهٔ پرونده اما ره ندائه.",
-       "api-error-nomodule": "خطای داخلی: ماژول باربی‌یشتن تنظیم نیی‌ئه.",
-       "api-error-ok-but-empty": "خطای داخلی : سرور جه جواب نموئه.",
-       "api-error-overwrite": "جای بنویشتن اتا پرونده موجود مجاز نی‌یه.",
        "api-error-stashfailed": "خطای داخلی: کارساز نتونده پرونده موقت ره ذخیره هاکنه.",
-       "api-error-timeout": "کارساز زمون انتظار جواب ندائه.",
-       "api-error-unclassified": "اتا خطای نشناسته دکته.",
-       "api-error-unknown-code": "خطای نشناسی‌یه: \" $1 \"",
-       "api-error-unknown-error": "خطای داخلی: زمونی که شما تلاش کاردنی باربی‌یشتن پرونده ره انجوم هادین، اتا چی اشتباه پیش بورده.",
-       "api-error-unknown-warning": "اخطار نشناسی‌یه: $1",
-       "api-error-uploaddisabled": "باربی‌یشتن این ویکی دله غیرفعاله.",
-       "api-error-verification-error": "ممکن هسته که پرونده رِقِد بورد بائه یا پسوند غلط داره."
+       "api-error-unknown-warning": "اخطار نشناسی‌یه: $1"
 }
index db82ddb..0a8881c 100644 (file)
        "recentchanges-submit": "Vis",
        "rcfilters-activefilters": "Aktive filtre",
        "rcfilters-quickfilters": "Raske lenker",
+       "rcfilters-quickfilters-placeholder-title": "Ingen lenker lagret enda",
+       "rcfilters-quickfilters-placeholder-description": "For å lagre filterinnstillingene og gjenbruk dem senere, klikk på bokmerkeikonet i området Aktive Filtre under.",
        "rcfilters-savedqueries-defaultlabel": "Lagrede filtre",
        "rcfilters-savedqueries-rename": "Gi nytt navn",
        "rcfilters-savedqueries-setdefault": "Sett som standard",
        "autoblocklist-submit": "Søk",
        "autoblocklist-legend": "Liste over automatiske blokkeringer",
        "autoblocklist-localblocks": "{{PLURAL:$1|Lokal automatisk blokkering|Lokale automatiske blokkeringer}}",
+       "autoblocklist-total-autoblocks": "Totalt antall autoblokkeringer: $1",
        "autoblocklist-empty": "Listen over automatiske blokkeringer er tom.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Annen automatisk blokkering|Andre automatiske blokkeringer}}",
        "ipblocklist": "Blokkerte IP-adresser og brukernavn",
        "pageid": "side-ID $1",
        "rawhtml-notallowed": "&lt;html&gt;-tagger kan ikke brukes utenfor normale sider.",
        "gotointerwiki": "Forlater {{SITENAME}}",
-       "gotointerwiki-invalid": "Den gitte tittelen var ugyldig.",
-       "gotointerwiki-external": "Du er i ferd med å forlate {{SITENAME}} for å besøke [[$2]], som er et annet nettsted.\n\n[$1 Klikk her for å fortsette til $1].",
+       "gotointerwiki-invalid": "Den gitte tittelen er ugyldig.",
+       "gotointerwiki-external": "Du er i ferd med å forlate {{SITENAME}} for å besøke [[$2]], som er et annet nettsted.\n\n'''[$1 Fortsett til $1]'''",
        "undelete-cantedit": "Du kan ikke gjenopprette denne siden fordi du ikke har tillatelse til å redigere den.",
        "undelete-cantcreate": "Du kan ikke gjenopprette denne siden fordi det ikke er noen eksisterende side med dette navnet, og du ikke har tillatelse til å opprette siden."
 }
index d81b569..7e48196 100644 (file)
        "logentry-patrol-patrol-auto": "$1 ले $3 पृष्ठको $4 अवतरणलाई स्वचालित रूपले गस्ती गरिएको {{GENDER:$2|चिन्हित}} गरेको हो",
        "logentry-newusers-newusers": "प्रयोगकर्ता खाता $1 {{GENDER:$2|खोलियो}}",
        "logentry-newusers-create": "प्रयोगकर्ता खाता $1 {{GENDER:$2|खोलियो}}",
-       "logentry-newusers-create2": "$1 बाट प्रयोगकर्ता खाता $ {{GENDER:$2|खोलियो}}",
-       "logentry-newusers-byemail": "$1 बाट प्रयोगकर्ता खाता $ {{GENDER:$2|खोलियो}} र इमेल मार्फत पासबर्ड पठाइएको छ",
+       "logentry-newusers-create2": "$1 बाट प्रयोगकर्ता खाता $3 {{GENDER:$2|खोलियो}}",
+       "logentry-newusers-byemail": "$1 बाट प्रयोगकर्ता खाता $3 {{GENDER:$2|खोलियो}} र इमेल मार्फत पासबर्ड पठाइएको छ",
        "logentry-newusers-autocreate": "प्रयोगकर्ता खाता $1 स्वतः {{GENDER:$2|खोलियो}}",
        "logentry-rights-rights": "$1 ले $3 को प्रयोगकर्ता समूह $4 बाट परिवर्तन गरेर $5 {{GENDER:$2|गर्यो}}",
        "logentry-rights-rights-legacy": "$1 ले $3 को प्रयोगकर्ता समूह {{GENDER:$2|परिवर्तन गर्यो}}",
index bb15403..b06b8a0 100644 (file)
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "Weergeven",
        "rcfilters-activefilters": "Actieve filters",
-       "rcfilters-quickfilters": "Snelle links",
+       "rcfilters-quickfilters": "Opgeslagen filter instellingen",
+       "rcfilters-quickfilters-placeholder-title": "Nog geen koppelingen opgeslagen",
        "rcfilters-savedqueries-defaultlabel": "Opgeslagen filters",
        "rcfilters-savedqueries-rename": "Hernoemen",
        "rcfilters-savedqueries-setdefault": "Als standaard instellen",
        "rcfilters-savedqueries-unsetdefault": "Als standaard verwijderen",
        "rcfilters-savedqueries-remove": "Verwijderen",
        "rcfilters-savedqueries-new-name-label": "Naam",
-       "rcfilters-savedqueries-apply-label": "Snelle link maken",
+       "rcfilters-savedqueries-apply-label": "Instellingen opslaan",
        "rcfilters-savedqueries-cancel-label": "Annuleren",
-       "rcfilters-savedqueries-add-new-title": "Filters als een snelle link opslaan",
+       "rcfilters-savedqueries-add-new-title": "Huidige filter instellingen opslaan",
        "rcfilters-restore-default-filters": "Standaard filters terugzetten",
        "rcfilters-clear-all-filters": "Alle filters verwijderen",
        "rcfilters-search-placeholder": "Filter recente wijzigingen (blader of begin met intypen)",
        "autoblocklist-submit": "Zoeken",
        "autoblocklist-legend": "Automatische blokkades tonen",
        "autoblocklist-localblocks": "Lokale {{PLURAL:$1|automatische blokkades}}",
+       "autoblocklist-total-autoblocks": "Totaal aantal autoblokkades: $1",
        "autoblocklist-empty": "De lijst met automatische blokkades is leeg.",
        "autoblocklist-otherblocks": "Andere {{PLURAL:$1|automatische blokkades}}",
        "ipblocklist": "Geblokkeerde gebruikers",
index fd11859..18c52c1 100644 (file)
        "showpreview": "Antever resultado",
        "showdiff": "Mostrar alterações",
        "blankarticle": "<strong>Aviso:</strong> A página que está prestes a criar está em branco.  \nSe clicar \"$1\" outra vez, a página será criada sem qualquer conteúdo.",
-       "anoneditwarning": "<strong>Aviso</strong>: Não iniciou sessão. O seu endereço IP será registado no histórico de edições desta página. Se <strong>[$1 iniciar sessão]</strong> ou <strong>[$2 criar uma conta]</strong>, as suas edições serão registadas com o seu nome de utilizador(a), bem como usufruir de outros benefícios.",
+       "anoneditwarning": "<strong>Aviso</strong>: Não iniciou sessão. O seu endereço IP será registado no histórico de edições desta página. Se <strong>[$1 iniciar sessão]</strong> ou <strong>[$2 criar uma conta]</strong>, as suas edições serão registadas com o seu nome de utilizador(a), em conjunto com outros benefícios.",
        "anonpreviewwarning": "''Não iniciou sessão. Ao gravar, registará o seu endereço IP no histórico de edições da página.''",
        "missingsummary": "'''Atenção:''' Não introduziu um resumo da edição.\nSe clicar novamente \"Gravar página\" a sua edição será gravada sem resumo.",
        "selfredirect": "<strong>Aviso:</strong> Está a redirecionar esta página para si mesma.\nPode ter especificado o destino errado para o redirecionamento ou pode estar a editar a página errada.\nSe clicar em \"$1\" novamente, o redirecionamento será criado na mesma.",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "Mostrar",
        "rcfilters-activefilters": "Filtros ativos",
-       "rcfilters-quickfilters": "Links rápidos",
+       "rcfilters-quickfilters": "Configurações de filtros gravadas",
        "rcfilters-quickfilters-placeholder-title": "Ainda não foi gravado nenhum link",
        "rcfilters-quickfilters-placeholder-description": "Para gravar as suas configurações dos filtros e reutilizá-las mais tarde, clique o ícone do marcador de página, na área Filtro Ativo abaixo.",
        "rcfilters-savedqueries-defaultlabel": "Filtros gravados",
        "rcfilters-savedqueries-unsetdefault": "Remover por padrão",
        "rcfilters-savedqueries-remove": "Remover",
        "rcfilters-savedqueries-new-name-label": "Nome",
-       "rcfilters-savedqueries-apply-label": "Criar link rápido",
+       "rcfilters-savedqueries-apply-label": "Gravar configurações",
        "rcfilters-savedqueries-cancel-label": "Cancelar",
-       "rcfilters-savedqueries-add-new-title": "Gravar filtros como um link rápido",
+       "rcfilters-savedqueries-add-new-title": "Gravar configurações atuais de filtros",
        "rcfilters-restore-default-filters": "Restaurar os filtros padrão",
        "rcfilters-clear-all-filters": "Limpar todos os filtros",
        "rcfilters-search-placeholder": "Filtrar mudanças recentes (navegue ou começe a escrever)",
        "rcfilters-filter-watchlist-notwatched-description": "Tudo menos modificações das suas páginas vigiadas.",
        "rcfilters-filtergroup-changetype": "Tipo de alteração",
        "rcfilters-filter-pageedits-label": "Edições da página",
-       "rcfilters-filter-pageedits-description": "Edições do conteúdo da wiki, de discussões, de descrições de categorias....",
+       "rcfilters-filter-pageedits-description": "Edições do conteúdo da wiki, de discussões, de descrições de categorias",
        "rcfilters-filter-newpages-label": "Criações de páginas",
        "rcfilters-filter-newpages-description": "Edições que criam novas páginas.",
        "rcfilters-filter-categorization-label": "Alterações de categoria",
        "rcfilters-filter-categorization-description": "Registos de páginas que estão a ser adicionadas ou removidas das categorias.",
        "rcfilters-filter-logactions-label": "Ações registadas",
-       "rcfilters-filter-logactions-description": "Ações administrativas, criação de contas, eliminação de páginas, carregamentos....",
+       "rcfilters-filter-logactions-description": "Ações administrativas, criação de contas, eliminação de páginas, carregamentos",
        "rcfilters-hideminor-conflicts-typeofchange-global": "O filtro \"Edições menores\" entra em conflito com um ou mais filtros de Tipo de Modificação, porque certos tipos de modificações não podem ser classificados como \"menores\". Os filtros em conflito estão marcados na área Filtros Ativos, acima.",
        "rcfilters-hideminor-conflicts-typeofchange": "Certos tipos de modificações não podem ser classificados como \"menores\", portanto este filtro entra em conflito com os seguintes filtros de Tipo de Modificação: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Este filtro de Tipo de Modificação entra em conflito com o filtro \"Edições menores\". Certos tipos de modificações não podem ser classificados como \"menores\".",
        "autoblocklist-submit": "Pesquisar",
        "autoblocklist-legend": "Lista de bloqueios automáticos",
        "autoblocklist-localblocks": "{{PLURAL:$1|Bloqueio automático local|Bloqueios automáticos locais}}",
+       "autoblocklist-total-autoblocks": "Número total de bloqueios automáticos: $1",
        "autoblocklist-empty": "A lista de bloqueio automático está vazia.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Outro bloqueio automático|Outros bloqueios automáticos}}",
        "ipblocklist": "Utilizadores bloqueados",
index ee51075..7f5b3a2 100644 (file)
        "mw-widgets-categoryselector-add-category-placeholder": "Placeholder displayed in the category selector widget after the capsules of already added categories.",
        "mw-widgets-usersmultiselect-placeholder": "Placeholder displayed in the input field, where new usernames are entered",
        "date-range-from": "Label for an input field that specifies the start date of a date range filter.",
-       "date-range-to": " Label for an input field that specifies the end date of a date range filter.",
+       "date-range-to": "Label for an input field that specifies the end date of a date range filter.",
        "sessionmanager-tie": "Used as an error message when multiple session sources are tied in priority.\n\nParameters:\n* $1 - List of dession type descriptions, from messages like {{msg-mw|sessionprovider-mediawiki-session-cookiesessionprovider}}.",
        "sessionprovider-generic": "Used to create a generic session type description when one isn't provided via the proper message. Should be phrased to make sense when added to a message such as {{msg-mw|cannotloginnow-text}}.\n\nParameters:\n* $1 - PHP classname.",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "Description of the sessions provided by the CookieSessionProvider class, which use HTTP cookies. Should be phrased to make sense when added to a message such as {{msg-mw|cannotloginnow-text}}.",
index 580f184..78548f7 100644 (file)
                        "Facenapalm",
                        "Esukhovnina",
                        "Av6",
-                       "Санюн Вадик"
+                       "Санюн Вадик",
+                       "MustangDSG"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Показать",
        "rcfilters-activefilters": "Активные фильтры",
-       "rcfilters-quickfilters": "Быстрые ссылки",
+       "rcfilters-quickfilters": "Сохранённые настройки фильтра",
+       "rcfilters-quickfilters-placeholder-title": "Ещё нет сохранённых ссылок",
+       "rcfilters-quickfilters-placeholder-description": "Чтобы сохранить настройки фильтра и повторно использовать их позже, щелкните значок закладки в области «Активный фильтр» ниже.",
        "rcfilters-savedqueries-defaultlabel": "Сохранённые фильтры",
        "rcfilters-savedqueries-rename": "Переименовать",
        "rcfilters-savedqueries-setdefault": "Установить по умолчанию",
        "rcfilters-savedqueries-unsetdefault": "Удалить значение по умолчанию",
        "rcfilters-savedqueries-remove": "Удалить",
        "rcfilters-savedqueries-new-name-label": "Имя",
-       "rcfilters-savedqueries-apply-label": "Создать быструю ссылку",
+       "rcfilters-savedqueries-apply-label": "Сохранить настройки",
        "rcfilters-savedqueries-cancel-label": "Отмена",
-       "rcfilters-savedqueries-add-new-title": "СоÑ\85Ñ\80аниÑ\82Ñ\8c Ñ\84илÑ\8cÑ\82Ñ\80Ñ\8b ÐºÐ°Ðº Ð±Ñ\8bÑ\81Ñ\82Ñ\80Ñ\83Ñ\8e Ñ\81Ñ\81Ñ\8bлкÑ\83",
+       "rcfilters-savedqueries-add-new-title": "СоÑ\85Ñ\80аниÑ\82Ñ\8c Ñ\82екÑ\83Ñ\89ие Ð½Ð°Ñ\81Ñ\82Ñ\80ойки Ñ\84илÑ\8cÑ\82Ñ\80а",
        "rcfilters-restore-default-filters": "Восстановить фильтры по умолчанию",
        "rcfilters-clear-all-filters": "Очистить все фильтры",
        "rcfilters-search-placeholder": "Последние изменения фильтров (просмотрите или начните вводить)",
        "autoblocklist-submit": "Найти",
        "autoblocklist-legend": "Список автоблокировок",
        "autoblocklist-localblocks": "{{PLURAL:$1|Локальная автоблокировка|Локальные автоблокировки}}",
+       "autoblocklist-total-autoblocks": "Всего автоблоков: $1",
        "autoblocklist-empty": "Список автоблокировок пуст.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Другая автоблокировка|Другие автоблокировки}}",
        "ipblocklist": "Заблокированные участники",
index 1fad3db..32af31e 100644 (file)
        "php-uploaddisabledtext": "PHP туруорууларыгар билэни киллэрии араарыллыбыт. Бука диэн, file_uploads туруоруутун көр.",
        "uploadscripted": "Бу билэ HTML эбэтэр скрипт куодтаах эбит. Интэриниэт көрдөрөр бырагыраамма ону сыыһа ааҕыан сөп.",
        "upload-scripted-pi-callback": "XML истиилин табылыыссатын таҥастыыр туһунан ыйыылаах-кэрдиилээх билэни хачайдыыр табыллыбата.",
+       "upload-scripted-dtd": "Ыстандаарка сөп түбэспэт DTD-биллэриилээх SVG-билэни хачайдыыр сатаммат.",
        "uploaded-script-svg": "Хачайдаммыт SVG-билэҕэ сценарийы өйүүр куттааллаах «$1» элэмиэн көһүннэ.",
        "uploaded-hostile-svg": "Хачайдаммыт SVG-билэ истиилин элэмиэнигэр кутталлаах CSS-куод көһүннэ.",
        "uploaded-event-handler-on-svg": "SVG-билэлэргэ <code>$1=\"$2\"</code> сабыытыйаны таҥастааччы атрибууттарын туруоруу көҥүллэммэт.",
        "enotif_body_intro_restored": "$PAGEEDITDATE «{{SITENAME}}» бырайыак «$1» ааттаах сирэйин бу {{gender:$2|кыттааччы|кыттааччы}} соппут - $2, билиҥҥи барылын манна көр: $3",
        "enotif_body_intro_changed": "$PAGEEDITDATE «{{SITENAME}}» бырайыак «$1» ааттаах сирэйин бу {{gender:$2|кыттааччы|кыттааччы}} айбыт - $2, билиҥҥи барылын манна көр: $3",
        "enotif_lastvisited": "Бутэһик киирииҥ кэнниттэн оҥоһуллубут уларыйыылары барытын көрөргө манна киир: $1.",
-       "enotif_lastdiff": "Уларытыыны манна көрүҥ: $1.",
+       "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",
        "created": "айыллыбыт",
        "unblocked-id": "$1 хааччахтаныыта уһулунна",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] хааччаҕа уһулунна.",
        "blocklist": "Бобуллубут кыттааччылар",
+       "autoblocklist": "Аптамаатынан хааччах",
+       "autoblocklist-submit": "Бул",
+       "autoblocklist-legend": "Аптамаатынан хааччах испииһэгэ",
        "ipblocklist": "Хааччахтаммыт кыттааччылар",
        "ipblocklist-legend": "Хааччахтаммыт/бобуллубут кыттааччыны көрдөөһүн",
        "blocklist-userblocks": "Хааччахтаммыт кыттааччылары көрдөрүмэ",
        "newimages-summary": "Бу анал сирэй киллэриллибит билэлэр испииһэктэрин көрдөрөр.",
        "newimages-legend": "Фильтр",
        "newimages-label": "Билэ аата (эбэтэр сорҕото):",
+       "newimages-user": "Кыттааччы аата эбэтэр IP-та",
        "newimages-showbots": "Руобаттар хачайдааһыннарын көрдөр",
        "newimages-hidepatrolled": "Кэтэммит хачайданыылары сабыы.",
        "noimages": "Ойуу суох.",
        "confirmrecreate": "[[User:$1|$1]] ([[User talk:$1|ырыт.]]) бу сирэйи эн уларыта олордоххуна сотон кэбиспит, төрүөтэ:\n: <em>$2</em>\nБука диэн, сирэйи хат оҥорор буоллаххына бигэргэт.",
        "confirmrecreate-noreason": "[[User:$1|$1]] ([[User talk:$1|ырытыыта]]) бу сирэйи эн уларыта олордоххуна сотон кэбиспит. Бука диэн сирэйи кырдьык төннөрүөххүн баҕараргын бигэргэт.",
        "recreate": "Саҥаттан оҥоруу",
+       "confirm-purge-title": "Бу сирэй кээһин ыраастаа",
        "confirm_purge_button": "Сөп",
        "confirm-purge-top": "Бу сирэй кээһин сотоору гынаҕын дуо?",
        "confirm-purge-bottom": "Кээһин ыраастаабыт кэннэ сирэй бүтэһик торума көстүө.",
        "logentry-delete-delete": "$3 сирэйи $1 соппут",
        "logentry-delete-delete_redir": "$1 кыттааччы $3 утаарыыны хос суруйуу көмөтүнэн {{GENDER:$2|соппут}}",
        "logentry-delete-restore": "$3 сирэйи $1 сөргүппүт",
+       "logentry-delete-restore-nocount": "$3 сирэйи $1 {{GENDER:$2|сөргүппүт}}",
+       "restore-count-revisions": "$1 {{PLURAL:$1|торум|$1 торум}}",
+       "restore-count-files": "{{PLURAL:$1|1 билэ|$1 билэ}}",
        "logentry-delete-event": "Сурунаал $5 суругун көстүүтүн манна $3 $1 уларыппыт: $4",
        "logentry-delete-revision": "$3 сирэй $5 барылын көстүүтүн бу сирэйгэ $1 уларыппыт: $4",
        "logentry-delete-event-legacy": "$3 сурунаал суруктарын көстүүтүн $1 уларыппыт",
        "logentry-tag-update-revision": "$1 кыттааччы $4 сирэй $3 торумун {{GENDER:$2|саҥардан биэрдэ}} ($6 {{PLURAL:$7|эбилиннэ}}; $8 {{PLURAL:$9|сотулунна}})",
        "logentry-tag-update-logentry": "$1 кыттааччы $3 сирэй $5 сурунаалын {{GENDER:$2|саҥардан биэрдэ}} ($6 {{PLURAL:$7|эбилиннэ}}; $8 {{PLURAL:$9|сотулунна}})",
        "rightsnone": "(суох)",
+       "rightslogentry-temporary-group": "$1 (быстах кэмҥэ, маныаха диэри $2)",
        "feedback-adding": "Сирэй туһунан санаа этии...",
        "feedback-back": "Төнүн",
        "feedback-bugcheck": "Бэрт! Ол гынан баран [$1 биллэр алҕастарын] тиһилигэр майгынныыр сурук суоҕун тургут.",
        "api-error-emptypage": "Саҥа кураанах сирэйи оҥорор табыллыбат.",
        "api-error-publishfailed": "Ис алҕас: сиэрбэр быстах билэни кыайан бигэргэппэтэх.",
        "api-error-stashfailed": "Ис алҕас: сиэрбэр быстах кэмҥэ оҥоһуллубут билэни кыайан бигэргэппэтэх.",
-       "api-error-unknown-warning": "Биллибэт сэрэтии: $1",
+       "api-error-unknown-warning": "Биллибэт сэрэтии: \"$1\".",
        "api-error-unknownerror": "Биллибэт алҕас: $1",
        "duration-seconds": "$1 сөкүүндэ",
        "duration-minutes": "$1 мүнүүтэ",
        "pagelang-language": "Омугун тыла",
        "pagelang-use-default": "Сүрүн тылы тутун",
        "pagelang-select-lang": "Тылы талыы",
+       "pagelang-reason": "Төрүөтэ",
        "pagelang-submit": "Ыытарга",
        "right-pagelang": "Сирэй тылын уларыт",
        "action-pagelang": "сирэй тылын уларытар буол",
index f41ade0..8d1c37c 100644 (file)
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (glej tudi [[Special:NewPages|seznam novih strani]])",
        "recentchanges-submit": "Prikaži",
        "rcfilters-activefilters": "Dejavni filtri",
-       "rcfilters-quickfilters": "Hitre povezave",
+       "rcfilters-quickfilters": "Nastavitve shranjenega filtra",
        "rcfilters-quickfilters-placeholder-title": "Shranjena ni še nobena povezava",
        "rcfilters-quickfilters-placeholder-description": "Da shranite svoje nastavitve filtrov in jih ponovno uporabite pozneje, kliknite na ikono za zaznamek v območju Dejavni filtri spodaj.",
        "rcfilters-savedqueries-defaultlabel": "Shranjeni filtri",
        "rcfilters-savedqueries-unsetdefault": "Odstrani kot privzeto",
        "rcfilters-savedqueries-remove": "Odstrani",
        "rcfilters-savedqueries-new-name-label": "Ime",
-       "rcfilters-savedqueries-apply-label": "Ustvari hitro povezavo",
+       "rcfilters-savedqueries-apply-label": "Shrani nastavitve",
        "rcfilters-savedqueries-cancel-label": "Prekliči",
-       "rcfilters-savedqueries-add-new-title": "Shrani filtre kot hitro povezavo",
+       "rcfilters-savedqueries-add-new-title": "Shrani nastavitve trenutnega filtra",
        "rcfilters-restore-default-filters": "Obnovi privzete filtre",
        "rcfilters-clear-all-filters": "Počisti vse filtre",
        "rcfilters-search-placeholder": "Zadnje spremembe filtrov (prebrskajte ali začnite vnašati)",
        "rcfilters-filter-watchlist-notwatched-description": "Vse razen spremembe strani na vašem spisku nadzorov.",
        "rcfilters-filtergroup-changetype": "Vrsta spremembe",
        "rcfilters-filter-pageedits-label": "Urejanja strani",
-       "rcfilters-filter-pageedits-description": "Urejanja vsebine wikija, razprave, opisi kategorij ...",
+       "rcfilters-filter-pageedits-description": "Urejanja vsebine wikija, razprav, opisov kategorij ...",
        "rcfilters-filter-newpages-label": "Ustvarjanja strani",
        "rcfilters-filter-newpages-description": "Urejanja, ki ustvarijo nove strani.",
        "rcfilters-filter-categorization-label": "Spremembe kategorij",
        "autoblocklist-submit": "Išči",
        "autoblocklist-legend": "Seznam samodejnih blokad",
        "autoblocklist-localblocks": "{{PLURAL:$1|Lokalna samodejna blokada|Lokalni samodejni blokadi|Lokalne samodejne blokade}}",
+       "autoblocklist-total-autoblocks": "Skupno število samodejnih blokad: $1",
        "autoblocklist-empty": "Seznam samodejnih blokad je prazen.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Druga samodejna blokada|Drugi samodejni blokadi|Druge samodejne blokade}}",
        "ipblocklist": "Blokirani uporabniki",
index 9a53a80..1eb2e60 100644 (file)
@@ -69,7 +69,7 @@
        "tog-watchlisthidebots": "Сакриј измене ботова са списка надгледања",
        "tog-watchlisthideminor": "Сакриј мање измене са списка надгледања",
        "tog-watchlisthideliu": "Сакриј измене пријављених корисника са списка надгледања",
-       "tog-watchlistreloadautomatically": "Ð\90Ñ\83Ñ\82омаÑ\82Ñ\81ки Ð¾Ñ\81вежи Ñ\81пиÑ\81ак Ð½Ð°Ð´Ð³Ð»ÐµÐ´Ð°Ñ\9aа ÐºÐ°Ð´ Ð³Ð¾Ð´ Ñ\81е Ñ\84илÑ\82еÑ\80 Ð¸Ð·Ð¼ÐµÐ½Ð¸ (поÑ\82Ñ\80ебна JavaScript-а)",
+       "tog-watchlistreloadautomatically": "Ð\90Ñ\83Ñ\82омаÑ\82Ñ\81ки Ð¾Ñ\81вежи Ñ\81пиÑ\81ак Ð½Ð°Ð´Ð³Ð»ÐµÐ´Ð°Ñ\9aа ÐºÐ°Ð´ Ð³Ð¾Ð´ Ñ\81е Ñ\84илÑ\82еÑ\80 Ð¸Ð·Ð¼ÐµÐ½Ð¸ (поÑ\82Ñ\80ебан JavaScript)",
        "tog-watchlisthideanons": "Сакриј измене анонимних корисника са списка надгледања",
        "tog-watchlisthidepatrolled": "Сакриј патролиране измене са списка надгледања",
        "tog-watchlisthidecategorization": "Сакриј категоризацију страница",
        "tog-norollbackdiff": "Не приказуј разлику након извршеног враћања",
        "tog-useeditwarning": "Упозори ме када напуштам страницу са несачуваним променама",
        "tog-prefershttps": "Увек користи сигурну конекцију када сам пријављен.",
-       "underline-always": "увек подвлачи",
-       "underline-never": "никад не подвлачи",
-       "underline-default": "према теми или прегледачу",
+       "underline-always": "Увек подвлачи",
+       "underline-never": "Ð\9dикад не подвлачи",
+       "underline-default": "Ð\9fрема теми или прегледачу",
        "editfont-style": "Изглед фонта у уређивачком оквиру:",
-       "editfont-default": "по поставкама прегледача",
-       "editfont-monospace": "сразмерно широк фонт",
-       "editfont-sansserif": "бесерифни фонт",
-       "editfont-serif": "серифни фонт",
+       "editfont-default": "Ð\9fо поставкама прегледача",
+       "editfont-monospace": "Сразмерно широк фонт",
+       "editfont-sansserif": "Ð\91есерифни фонт",
+       "editfont-serif": "Серифни фонт",
        "sunday": "недеља",
        "monday": "понедељак",
        "tuesday": "уторак",
        "hidden-category-category": "Скривене категорије",
        "category-subcat-count": "{{PLURAL:$2|1=Ова категорија садржи само следећу поткатегорију.|Ова категорија има {{PLURAL:$1|1=следећу поткатегорију|следеће $1 поткатегорије|следећих $1 поткатегорија}}, од укупно $2.}}",
        "category-subcat-count-limited": "Ова категорија садржи {{PLURAL:$1|следећу поткатегорију|следеће $1 поткатегорије|следећих $1 поткатегорија}}.",
-       "category-article-count": "{{PLURAL:$2|1=Ова категорија садржи само следећу страницу.|{{PLURAL:$1|Следећа страница је|Следеће $1 странице су|Следећих $1 страница је}} у овој категорији, од укупно $2.}}",
+       "category-article-count": "{{PLURAL:$2|1=Ова категорија садржи само следећу страницу.|{{PLURAL:$1|Следећа $1 страница је|Следеће $1 странице су|Следећих $1 страница је}} у овој категорији, од укупно $2.}}",
        "category-article-count-limited": "{{PLURAL:$1|1=Следећа страница је|Следеће $1 странице су|Следећих $1 страница је}} у овој категорији.",
        "category-file-count": "{{PLURAL:$2|1=Ова категорија садржи само следећу датотеку.|{{PLURAL:$1|1=Следећа датотека је|Следеће $1 датотеке су|Следећих $1 датотека је}} у овој категорији, од укупно $2.}}",
        "category-file-count-limited": "{{PLURAL:$1|1=Следећа датотека је|Следеће $1 датотеке су|Следећих $1 датотека је}} у овој категорији.",
        "rcfilters-filter-watchlist-notwatched-label": "Није на списку надгледања",
        "rcfilters-filter-watchlist-notwatched-description": "Све осим измена страница на Вашем списку надгледања.",
        "rcfilters-filter-pageedits-label": "Измјене страница",
-       "rcfilters-filter-pageedits-description": "Измјене вики садржаја, расправа, описа категорија...",
+       "rcfilters-filter-pageedits-description": "Измјене вики садржаја, расправа, описа категорија",
        "rcfilters-filter-newpages-label": "Стварање страница",
        "rcfilters-filter-newpages-description": "Измјене којима се стварају нове странице.",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Филтер за „мање” измене је у сукобу са једним или више филтера типа измена, зато што одређени типови измена не могу да се означе као „мање”. Сукобљени филтери су означени у подручју Активни филтери, изнад.",
        "unwatchthispage": "Прекини надгледање",
        "notanarticle": "Није страница са садржајем",
        "notvisiblerev": "Измена је обрисана",
-       "watchlist-details": "Имате {{PLURAL:$1|$1 страница|$1 странице|$1 страница}} на вашем списку надгледања, не рачунајући странице за разговор.",
+       "watchlist-details": "Имате {{PLURAL:$1|$1 страницу|$1 странице|$1 страница}} на свом списку надгледања, не рачунајући засебно странице за разговор.",
        "wlheader-enotif": "Обавештење имејлом је омогућено.",
        "wlheader-showupdated": "Странице које су измењене откад сте их последњи пут посетили су '''подебљане'''.",
        "wlnote": "Испод {{PLURAL:$1|је последња измена|су последње <strong>$1</strong> измене|је последњих <strong>$1</strong> измена}} у {{PLURAL:$2|претходном сату|претходна <strong>$2</strong> сата|претходних <strong>$2</strong> сати}}, закључно са $3, $4.",
index 7c7000c..61d8d57 100644 (file)
        "hidden-category-category": "Skrivene kategorije",
        "category-subcat-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću potkategoriju.|Ova kategorija ima {{PLURAL:$1|1=sledeću potkategoriju|sledeće $1 potkategorije|sledećih $1 potkategorija}}, od ukupno $2.}}",
        "category-subcat-count-limited": "Ova kategorija sadrži {{PLURAL:$1|sledeću potkategoriju|sledeće $1 potkategorije|sledećih $1 potkategorija}}.",
-       "category-article-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću stranicu.|{{PLURAL:$1|Sledeća stranica je|Sledeće $1 stranice su|Sledećih $1 stranica je}} u ovoj kategoriji, od ukupno $2.}}",
+       "category-article-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću stranicu.|{{PLURAL:$1|Sledeća $1 stranica je|Sledeće $1 stranice su|Sledećih $1 stranica je}} u ovoj kategoriji, od ukupno $2.}}",
        "category-article-count-limited": "{{PLURAL:$1|1=Sledeća stranica je|Sledeće $1 stranice su|Sledećih $1 stranica je}} u ovoj kategoriji.",
        "category-file-count": "{{PLURAL:$2|1=Ova kategorija sadrži samo sledeću datoteku.|{{PLURAL:$1|1=Sledeća datoteka je|Sledeće $1 datoteke su|Sledećih $1 datoteka je}} u ovoj kategoriji, od ukupno $2.}}",
        "category-file-count-limited": "{{PLURAL:$1|1=Sledeća datoteka je|Sledeće $1 datoteke su|Sledećih $1 datoteka je}} u ovoj kategoriji.",
        "unwatchthispage": "Prekini nadgledanje",
        "notanarticle": "Nije stranica sa sadržajem",
        "notvisiblerev": "Izmena je obrisana",
-       "watchlist-details": "Imate {{PLURAL:$1|$1 stranica|$1 stranice|$1 stranica}} na vašem spisku nadgledanja, ne računajući stranice za razgovor.",
+       "watchlist-details": "Imate {{PLURAL:$1|$1 stranicu|$1 stranice|$1 stranica}} na svom spisku nadgledanja, ne računajući zasebno stranice za razgovor.",
        "wlheader-enotif": "Obaveštenje imejlom je omogućeno.",
        "wlheader-showupdated": "Stranice koje su izmenjene otkad ste ih poslednji put posetili su '''podebljane'''.",
        "wlnote": "Ispod {{PLURAL:$1|je poslednja izmena|su poslednje <strong>$1</strong> izmene|je poslednjih <strong>$1</strong> izmena}} u {{PLURAL:$2|prethodnom satu|prethodna <strong>$2</strong> sata|prethodnih <strong>$2</strong> sati}}, zaključno sa $3, $4.",
index 48c50c5..47c67ca 100644 (file)
        "listusers-blocked": "(مسدود)",
        "activeusers": "متحرک صارفین کی فہرست",
        "activeusers-intro": "ذیل میں ان صارفین کی فہرست ہے جو گزشتہ $1 {{PLURAL:$1|دن|دنوں}} میں کسی بھی قسم کی سرگرمی میں شریک رہے ہوں۔",
-       "activeusers-count": "گزشتÛ\81 {{PLURAL:$3|دÙ\86|$3 Ø¯Ù\86Ù\88Úº}} Ù\85Û\8cÚº $1 {{PLURAL:$1|اÙ\82داÙ\85|اÙ\82داÙ\85ات}}",
+       "activeusers-count": "گزشتÛ\81 {{PLURAL:$3|دÙ\86|$3 Ø¯Ù\86Ù\88Úº}} Ù\85Û\8cÚº $1 {{PLURAL:$1|ترÙ\85Û\8cÙ\85|تراÙ\85Û\8cÙ\85}}",
        "activeusers-from": "اس حرف سے شروع ہونے والے صارفین کے نام دکھائیں:",
        "activeusers-noresult": "یہ صارف نہیں مل سکا",
        "activeusers-submit": "فعال صارفین دکھائیں",
index 204512e..8b8e4aa 100644 (file)
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "显示",
        "rcfilters-activefilters": "激活的过滤器",
-       "rcfilters-quickfilters": "快速链接",
+       "rcfilters-quickfilters": "保存的过滤器设置",
        "rcfilters-quickfilters-placeholder-title": "尚未保存链接",
        "rcfilters-quickfilters-placeholder-description": "要保存您的过滤器设置并供日后再利用,点击下方激活的过滤器区域内的书签图标。",
        "rcfilters-savedqueries-defaultlabel": "保存的过滤器",
        "rcfilters-savedqueries-unsetdefault": "移除为默认",
        "rcfilters-savedqueries-remove": "移除",
        "rcfilters-savedqueries-new-name-label": "名称",
-       "rcfilters-savedqueries-apply-label": "创建快速链接",
+       "rcfilters-savedqueries-apply-label": "保存设置",
        "rcfilters-savedqueries-cancel-label": "取消",
-       "rcfilters-savedqueries-add-new-title": "将过滤器保存为快速链接",
+       "rcfilters-savedqueries-add-new-title": "保存当前过滤器设置",
        "rcfilters-restore-default-filters": "恢复默认过滤器",
        "rcfilters-clear-all-filters": "清空所有过滤器",
        "rcfilters-search-placeholder": "过滤器最近更改(浏览或开始输入)",
        "rcfilters-filter-watchlist-notwatched-description": "除了对您监视的页面做出更改以外的任何事项。",
        "rcfilters-filtergroup-changetype": "更改类型",
        "rcfilters-filter-pageedits-label": "页面编辑",
-       "rcfilters-filter-pageedits-description": "对wikiå\86\85容ã\80\81讨论ã\80\81å\88\86ç±»æ\8f\8fè¿°ç\9a\84ç¼\96è¾\91....",
+       "rcfilters-filter-pageedits-description": "对wikiå\86\85容ã\80\81讨论ã\80\81å\88\86ç±»æ\8f\8fè¿°ç­\89ç\9a\84ç¼\96è¾\91",
        "rcfilters-filter-newpages-label": "页面创建",
        "rcfilters-filter-newpages-description": "做出新页面的编辑。",
        "rcfilters-filter-categorization-label": "分类更改",
        "rcfilters-filter-categorization-description": "从分类中添加或移除页面的记录。",
        "rcfilters-filter-logactions-label": "日志操作",
-       "rcfilters-filter-logactions-description": "管理操作、账户创建、页面删除、上传....",
+       "rcfilters-filter-logactions-description": "管理操作、账户创建、页面删除、上传",
        "rcfilters-hideminor-conflicts-typeofchange-global": "“小编辑”过滤器与一个或多个更改类型过滤器冲突,因为其中某种更改类型不可指定为“小编辑”。冲突过滤器已在上方活跃过滤器中被标记。",
        "rcfilters-hideminor-conflicts-typeofchange": "某种更改类型不可指定为“小编辑”,因此该过滤器与以下更改类型过滤器相冲突:$1",
        "rcfilters-typeofchange-conflicts-hideminor": "这种更改类型过滤器与“小编辑”过滤器相冲突。某种更改类型不可指定为“小编辑”。",
index fbd52d1..dacaa7f 100644 (file)
@@ -85,7 +85,8 @@
                        "和平奮鬥救地球",
                        "Arthur2e5",
                        "逆襲的天邪鬼",
-                       "A2093064"
+                       "A2093064",
+                       "Wwycheuk"
                ]
        },
        "tog-underline": "底線標示連結:",
        "rcfilters-savedqueries-defaultlabel": "儲存過濾器",
        "rcfilters-savedqueries-rename": "重新命名",
        "rcfilters-savedqueries-setdefault": "定為預設",
-       "rcfilters-savedqueries-unsetdefault": "取消預設",
+       "rcfilters-savedqueries-unsetdefault": "取消作為預設",
        "rcfilters-savedqueries-remove": "移除",
        "rcfilters-savedqueries-new-name-label": "名稱",
        "rcfilters-savedqueries-apply-label": "建立快速連結",
        "uploadwarning": "上傳警告",
        "uploadwarning-text": "請修改以下的檔案描述並重試。",
        "savefile": "儲存檔案",
-       "uploaddisabled": "å·±停用上傳。",
-       "copyuploaddisabled": "å·±å\81\9cç\94¨使用 URL 上傳。",
+       "uploaddisabled": "å·²停用上傳。",
+       "copyuploaddisabled": "å·²å\81\9cæ­¢使用 URL 上傳。",
        "uploaddisabledtext": "已停用檔案上傳。",
        "php-uploaddisabledtext": "PHP 已停用檔案上傳。\n請檢查 file_uploads 設定。",
        "uploadscripted": "此檔案包含可能會被網頁瀏覽器錯誤執行的 HTML 或 Script。",
index e30196c..c4baab7 100644 (file)
@@ -1028,6 +1028,7 @@ return [
                'styles' => 'resources/src/mediawiki/mediawiki.filewarning.less',
                'dependencies' => [
                        'oojs-ui-core',
+                       'oojs-ui.styles.icons-alerts',
                ],
        ],
        'mediawiki.ForeignApi' => [
@@ -1647,7 +1648,8 @@ return [
                        'oojs',
                        'oojs-ui-core',
                        'oojs-ui-widgets',
-                       'oojs-ui.styles.icons-media'
+                       'oojs-ui.styles.icons-media',
+                       'oojs-ui.styles.icons-movement'
                ],
                'messages' => [
                        'gallery-slideshow-toggle'
@@ -1840,6 +1842,7 @@ return [
                        'mediawiki.language',
                        'mediawiki.user',
                        'mediawiki.rcfilters.filters.dm',
+                       'oojs-ui.styles.icons-content',
                        'oojs-ui.styles.icons-moderation',
                        'oojs-ui.styles.icons-editing-core',
                        'oojs-ui.styles.icons-editing-styling',
@@ -1863,6 +1866,10 @@ return [
                        'mediawiki.jqueryMsg',
                        'mediawiki.util',
                        'oojs-ui',
+                       'oojs-ui.styles.icons-content',
+                       'oojs-ui.styles.icons-editing-advanced',
+                       'oojs-ui.styles.icons-interactions',
+                       'oojs-ui.styles.icons-moderation',
                        'mediawiki.widgets.datetime',
                ],
                'messages' => [
@@ -2329,6 +2336,7 @@ return [
                ],
                'dependencies' => [
                        'oojs-ui-widgets',
+                       'oojs-ui.styles.icons-movement',
                        'moment',
                ],
                'targets' => [ 'desktop', 'mobile' ],
@@ -2393,6 +2401,8 @@ return [
                ],
                'dependencies' => [
                        'oojs-ui-core',
+                       'oojs-ui.styles.icons-moderation',
+                       'oojs-ui.styles.icons-movement',
                ],
                'targets' => [ 'desktop', 'mobile' ],
        ],
@@ -2482,6 +2492,7 @@ return [
                ],
                'dependencies' => [
                        'mediawiki.searchSuggest',
+                       'oojs-ui.styles.icons-interactions',
                        // FIXME: Needs TitleInputWidget only
                        'mediawiki.widgets',
                ],
@@ -2550,5 +2561,155 @@ return [
        ],
 
        /* OOjs UI */
-       // @see ResourcesOOUI.php
+
+       // Omnibus module.
+       'oojs-ui' => [
+               'dependencies' => [
+                       'oojs-ui-core',
+                       'oojs-ui-widgets',
+                       'oojs-ui-toolbars',
+                       'oojs-ui-windows',
+               ],
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+
+       // The core JavaScript library.
+       'oojs-ui-core' => [
+               'class' => 'ResourceLoaderOOUIFileModule',
+               'scripts' => [
+                       'resources/lib/oojs-ui/oojs-ui-core.js',
+                       'resources/src/oojs-ui-local.js',
+               ],
+               'themeScripts' => 'core',
+               'dependencies' => [
+                       'oojs',
+                       'oojs-ui-core.styles',
+                       'oojs-ui.styles.indicators',
+                       'oojs-ui.styles.textures',
+                       'mediawiki.language',
+               ],
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+       // This contains only the styles required by core widgets.
+       'oojs-ui-core.styles' => [
+               'class' => 'ResourceLoaderOOUIFileModule',
+               'styles' => 'resources/src/oojs-ui-local.css', // HACK, see inside the file
+               'themeStyles' => 'core',
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+       // Additional widgets and layouts module.
+       'oojs-ui-widgets' => [
+               'class' => 'ResourceLoaderOOUIFileModule',
+               'scripts' => 'resources/lib/oojs-ui/oojs-ui-widgets.js',
+               'themeStyles' => 'widgets',
+               'dependencies' => 'oojs-ui-core',
+               'messages' => [
+                       'ooui-outline-control-move-down',
+                       'ooui-outline-control-move-up',
+                       'ooui-outline-control-remove',
+                       'ooui-selectfile-button-select',
+                       'ooui-selectfile-dragdrop-placeholder',
+                       'ooui-selectfile-not-supported',
+                       'ooui-selectfile-placeholder',
+               ],
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+       // Toolbar and tools module.
+       'oojs-ui-toolbars' => [
+               'class' => 'ResourceLoaderOOUIFileModule',
+               'scripts' => 'resources/lib/oojs-ui/oojs-ui-toolbars.js',
+               'themeStyles' => 'toolbars',
+               'dependencies' => 'oojs-ui-core',
+               'messages' => [
+                       'ooui-toolbar-more',
+                       'ooui-toolgroup-collapse',
+                       'ooui-toolgroup-expand',
+               ],
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+       // Windows and dialogs module.
+       'oojs-ui-windows' => [
+               'class' => 'ResourceLoaderOOUIFileModule',
+               'scripts' => 'resources/lib/oojs-ui/oojs-ui-windows.js',
+               'themeStyles' => 'windows',
+               'dependencies' => 'oojs-ui-core',
+               'messages' => [
+                       'ooui-dialog-message-accept',
+                       'ooui-dialog-message-reject',
+                       'ooui-dialog-process-continue',
+                       'ooui-dialog-process-dismiss',
+                       'ooui-dialog-process-error',
+                       'ooui-dialog-process-retry',
+               ],
+               'targets' => [ 'desktop', 'mobile' ],
+       ],
+
+       'oojs-ui.styles.indicators' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'indicators',
+       ],
+       'oojs-ui.styles.textures' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'textures',
+       ],
+       'oojs-ui.styles.icons-accessibility' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-accessibility',
+       ],
+       'oojs-ui.styles.icons-alerts' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-alerts',
+       ],
+       'oojs-ui.styles.icons-content' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-content',
+       ],
+       'oojs-ui.styles.icons-editing-advanced' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-editing-advanced',
+       ],
+       'oojs-ui.styles.icons-editing-core' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-editing-core',
+       ],
+       'oojs-ui.styles.icons-editing-list' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-editing-list',
+       ],
+       'oojs-ui.styles.icons-editing-styling' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-editing-styling',
+       ],
+       'oojs-ui.styles.icons-interactions' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-interactions',
+       ],
+       'oojs-ui.styles.icons-layout' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-layout',
+       ],
+       'oojs-ui.styles.icons-location' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-location',
+       ],
+       'oojs-ui.styles.icons-media' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-media',
+       ],
+       'oojs-ui.styles.icons-moderation' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-moderation',
+       ],
+       'oojs-ui.styles.icons-movement' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-movement',
+       ],
+       'oojs-ui.styles.icons-user' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-user',
+       ],
+       'oojs-ui.styles.icons-wikimedia' => [
+               'class' => 'ResourceLoaderOOUIImageModule',
+               'themeImages' => 'icons-wikimedia',
+       ],
 ];
diff --git a/resources/ResourcesOOUI.php b/resources/ResourcesOOUI.php
deleted file mode 100644 (file)
index c9b5d89..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-<?php
-/**
- * Definition of OOjs UI ResourceLoader modules.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
-
-if ( !defined( 'MEDIAWIKI' ) ) {
-       die( 'Not an entry point.' );
-}
-
-// WARNING: OOjs-UI is NOT TESTED with older browsers and is likely to break
-// if loaded in browsers that don't support ES5
-return call_user_func( function () {
-       $themes = ExtensionRegistry::getInstance()->getAttribute( 'SkinOOUIThemes' );
-       // We only use the theme names for file names, and they are lowercase
-       $themes = array_map( 'strtolower', $themes );
-       $themes['default'] = 'wikimediaui';
-
-       // Helper function to generate paths to files used in 'skinStyles' and 'skinScripts'.
-       $getSkinSpecific = function ( $module, $ext = 'css' ) use ( $themes ) {
-               return array_combine(
-                       array_keys( $themes ),
-                       array_map( function ( $theme ) use ( $module, $ext ) {
-                               $module = $module ? "$module-" : '';
-                               // TODO Allow extensions to specify this path somehow
-                               return "resources/lib/oojs-ui/oojs-ui-$module$theme.$ext";
-                       }, array_values( $themes ) )
-               );
-       };
-
-       $modules = [];
-
-       // Omnibus module.
-       $modules['oojs-ui'] = [
-               'dependencies' => [
-                       'oojs-ui-core',
-                       'oojs-ui-widgets',
-                       'oojs-ui-toolbars',
-                       'oojs-ui-windows',
-               ],
-               'targets' => [ 'desktop', 'mobile' ],
-       ];
-
-       // The core JavaScript library.
-       $modules['oojs-ui-core'] = [
-               'scripts' => [
-                       'resources/lib/oojs-ui/oojs-ui-core.js',
-                       'resources/src/oojs-ui-local.js',
-               ],
-               'skinScripts' => $getSkinSpecific( null, 'js' ),
-               'dependencies' => [
-                       'oojs',
-                       'oojs-ui-core.styles',
-                       'oojs-ui.styles.indicators',
-                       'oojs-ui.styles.textures',
-                       'mediawiki.language',
-               ],
-               'targets' => [ 'desktop', 'mobile' ],
-       ];
-       // This contains only the styles required by core widgets.
-       $modules['oojs-ui-core.styles'] = [
-               'position' => 'top',
-               'styles' => 'resources/src/oojs-ui-local.css', // HACK, see inside the file
-               'skinStyles' => $getSkinSpecific( 'core' ),
-               'targets' => [ 'desktop', 'mobile' ],
-       ];
-
-       // Additional widgets and layouts module.
-       $modules['oojs-ui-widgets'] = [
-               'scripts' => 'resources/lib/oojs-ui/oojs-ui-widgets.js',
-               'skinStyles' => $getSkinSpecific( 'widgets' ),
-               'dependencies' => 'oojs-ui-core',
-               'messages' => [
-                       'ooui-outline-control-move-down',
-                       'ooui-outline-control-move-up',
-                       'ooui-outline-control-remove',
-                       'ooui-selectfile-button-select',
-                       'ooui-selectfile-dragdrop-placeholder',
-                       'ooui-selectfile-not-supported',
-                       'ooui-selectfile-placeholder',
-               ],
-               'targets' => [ 'desktop', 'mobile' ],
-       ];
-       // Toolbar and tools module.
-       $modules['oojs-ui-toolbars'] = [
-               'scripts' => 'resources/lib/oojs-ui/oojs-ui-toolbars.js',
-               'skinStyles' => $getSkinSpecific( 'toolbars' ),
-               'dependencies' => 'oojs-ui-core',
-               'messages' => [
-                       'ooui-toolbar-more',
-                       'ooui-toolgroup-collapse',
-                       'ooui-toolgroup-expand',
-               ],
-               'targets' => [ 'desktop', 'mobile' ],
-       ];
-       // Windows and dialogs module.
-       $modules['oojs-ui-windows'] = [
-               'scripts' => 'resources/lib/oojs-ui/oojs-ui-windows.js',
-               'skinStyles' => $getSkinSpecific( 'windows' ),
-               'dependencies' => 'oojs-ui-core',
-               'messages' => [
-                       'ooui-dialog-message-accept',
-                       'ooui-dialog-message-reject',
-                       'ooui-dialog-process-continue',
-                       'ooui-dialog-process-dismiss',
-                       'ooui-dialog-process-error',
-                       'ooui-dialog-process-retry',
-               ],
-               'targets' => [ 'desktop', 'mobile' ],
-       ];
-
-       $imageSets = [
-               // Comments for greppability
-               'icons', // oojs-ui.styles.icons
-               'indicators', // oojs-ui.styles.indicators
-               'textures', // oojs-ui.styles.textures
-               'icons-accessibility', // oojs-ui.styles.icons-accessibility
-               'icons-alerts', // oojs-ui.styles.icons-alerts
-               'icons-content', // oojs-ui.styles.icons-content
-               'icons-editing-advanced', // oojs-ui.styles.icons-editing-advanced
-               'icons-editing-core', // oojs-ui.styles.icons-editing-core
-               'icons-editing-list', // oojs-ui.styles.icons-editing-list
-               'icons-editing-styling', // oojs-ui.styles.icons-editing-styling
-               'icons-interactions', // oojs-ui.styles.icons-interactions
-               'icons-layout', // oojs-ui.styles.icons-layout
-               'icons-location', // oojs-ui.styles.icons-location
-               'icons-media', // oojs-ui.styles.icons-media
-               'icons-moderation', // oojs-ui.styles.icons-moderation
-               'icons-movement', // oojs-ui.styles.icons-movement
-               'icons-user', // oojs-ui.styles.icons-user
-               'icons-wikimedia', // oojs-ui.styles.icons-wikimedia
-       ];
-       $rootPath = 'resources/lib/oojs-ui/themes';
-
-       foreach ( $imageSets as $name ) {
-               $module = [
-                       'position' => 'top',
-                       'class' => 'ResourceLoaderOOUIImageModule',
-                       'name' => $name,
-                       'rootPath' => $rootPath,
-               ];
-
-               if ( substr( $name, 0, 5 ) === 'icons' ) {
-                       $module['selectorWithoutVariant'] = '.oo-ui-icon-{name}, .mw-ui-icon-{name}:before';
-                       $module['selectorWithVariant'] = '
-                               .oo-ui-image-{variant}.oo-ui-icon-{name}, .mw-ui-icon-{name}-{variant}:before,
-                               /* Hack for Flow, see T110051 */
-                               .mw-ui-hovericon:hover .mw-ui-icon-{name}-{variant}-hover:before,
-                               .mw-ui-hovericon.mw-ui-icon-{name}-{variant}-hover:hover:before';
-               }
-
-               $modules["oojs-ui.styles.$name"] = $module;
-       }
-
-       return $modules;
-} );
index f6a9c54..7e2ee5e 100644 (file)
                // Make sure edit summary does not exceed byte limit
                // TODO: Replace with this when $wgOOUIEditPage is removed:
                // OO.ui.infuse( 'wpSummary' ).$input.byteLimit( 255 );
-               $( 'input#wpSummary, #wpSummary > input' ).byteLimit( 255 );
+               $( '#wpSummary' ).byteLimit( 255 );
+
+               // Show a byte-counter to users with how many bytes are left for their edit summary.
+               // TODO: This looks a bit weird, as there is no unit in the UI, just numbers; showing
+               // 'bytes' confused users in testing, and showing 'chars' would be a lie. See T42035.
+               if ( $( '#editform' ).hasClass( 'mw-editform-ooui' ) ) {
+                       mw.loader.using( 'oojs-ui-core' ).then( function () {
+                               var wpSummary = OO.ui.infuse( $( '#wpSummaryWidget' ) );
+
+                               function updateSummaryLabelCount() {
+                                       wpSummary.setLabel( String( 255 - $.byteLength( wpSummary.getValue() ) ) );
+                               }
+
+                               wpSummary.on( 'change', updateSummaryLabelCount );
+                               // Initialise value
+                               updateSummaryLabelCount();
+                       } );
+               }
 
                // Restore the edit box scroll state following a preview operation,
                // and set up a form submission handler to remember this state.
index 8287264..093a26d 100644 (file)
@@ -25,7 +25,8 @@
        font-size: 0.9em;
 }
 
-#wpSummary {
+.mw-editform-ooui #wpSummaryWidget,
+.mw-editform-legacy #wpSummary {
        display: block;
        width: 80%;
        margin-bottom: 1em;
@@ -75,7 +76,7 @@
        line-height: 1.26;
 }
 
-.mw-editform-ooui #wpSummary {
+.mw-editform-ooui #wpSummaryWidget {
        max-width: none;
 }
 
index 402dbf9..3c2f8d7 100644 (file)
        /**
         * Get the highlight parameters based on current filter configuration
         *
-        * @return {object} Object where keys are "<filter name>_color" and values
+        * @return {Object} Object where keys are "<filter name>_color" and values
         *                  are the selected highlight colors.
         */
        mw.rcfilters.dm.FiltersViewModel.prototype.getHighlightParameters = function () {
                return result;
        };
 
+       /**
+        * Extract the highlight values from given object. Since highlights are
+        * the same for filter and parameters, it doesn't matter which one is
+        * given; values will be returned with a full list of the highlights
+        * with colors or null values.
+        *
+        * @param {Object} representation Object containing representation of
+        *  some or all highlight values
+        * @return {Object} Object where keys are "<filter name>_color" and values
+        *                  are the selected highlight colors. The returned object
+        *                  contains all available filters either with a color value
+        *                  or with null.
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.extractHighlightValues = function ( representation ) {
+               var result = {};
+
+               this.getItems().forEach( function ( filterItem ) {
+                       var highlightName = filterItem.getName() + '_color';
+                       result[ highlightName ] = representation[ highlightName ] || null;
+               } );
+
+               return result;
+       };
+
        /**
         * Sanitize value group of a string_option groups type
         * Remove duplicates and make sure to only use valid
index e1694f6..b7b46f6 100644 (file)
         */
        mw.rcfilters.Controller.prototype._updateURL = function ( params ) {
                var currentFilterState, updatedFilterState, updatedUri,
+                       uri = new mw.Uri(),
                        notEquivalent = function ( obj1, obj2 ) {
                                var keys = Object.keys( obj1 ).concat( Object.keys( obj2 ) );
                                return keys.some( function ( key ) {
                // This will allow us to always have a proper check of whether
                // the requested new url is one to change or not, regardless of
                // actual parameter visibility/representation in the URL
-               currentFilterState = this.filtersModel.getFiltersFromParameters( new mw.Uri().query );
+               currentFilterState = this.filtersModel.getFiltersFromParameters( uri.query );
                updatedFilterState = this.filtersModel.getFiltersFromParameters( updatedUri.query );
 
+               // Include highlight states
+               $.extend( true,
+                       currentFilterState,
+                       this.filtersModel.extractHighlightValues( uri.query ),
+                       { highlight: !!Number( uri.query.highlight ) }
+               );
+               $.extend( true,
+                       updatedFilterState,
+                       this.filtersModel.extractHighlightValues( updatedUri.query ),
+                       { highlight: !!Number( updatedUri.query.highlight ) }
+               );
+
                if ( notEquivalent( currentFilterState, updatedFilterState ) ) {
                        if ( this.initializing ) {
                                // Initially, when we just build the first page load
index 616608e..835cec8 100644 (file)
                        icon: 'highlight',
                        indicator: 'down',
                        popup: {
-                               // TODO: There is a bug in non-anchored popups in
-                               // OOUI, so we set this popup to "anchored" until
-                               // the bug is fixed.
-                               // See: https://phabricator.wikimedia.org/T159906
-                               anchor: true,
+                               anchor: false,
                                padded: true,
                                align: 'backwards',
                                horizontalPosition: 'end',
index 8c021d0..3b5e7d9 100644 (file)
@@ -51,7 +51,7 @@
                        popup: {
                                width: 300,
                                anchor: false,
-                               align: 'forwards',
+                               align: 'backwards',
                                $autoCloseIgnore: this.$overlay,
                                $content: this.menu.$element
                        }
index da8bdcd..bf26f50 100644 (file)
                                        nooptional: true
                                } );
                                button = new OO.ui.ButtonWidget( {
-                                       icon: 'remove',
+                                       icon: 'trash',
                                        flags: 'destructive'
                                } );
                                layout = new OO.ui.ActionFieldLayout(
index 3e4c5e2..e42ab25 100644 (file)
                        this.clearButton = new OO.ui.ButtonWidget( {
                                classes: [ 'mw-widgets-datetime-dateTimeInputWidget-field', 'mw-widgets-datetime-dateTimeInputWidget-clearButton' ],
                                framed: false,
-                               icon: 'remove',
+                               icon: 'trash',
                                disabled: disabled
                        } ).connect( this, {
                                click: 'onClearClick'
index f93df3c..7a73e98 100644 (file)
@@ -1,7 +1,8 @@
 /*!
  * Diff rendering
  */
-table.diff {
+
+.diff {
        border: 0;
        border-spacing: 4px;
        margin: 0;
@@ -10,34 +11,34 @@ table.diff {
        table-layout: fixed;
 }
 
-table.diff td {
+.diff td {
        padding: 0.33em 0.5em;
 }
 
-table.diff td.diff-marker {
+.diff td.diff-marker {
        /* Compensate padding for increased font-size */
        padding: 0.25em;
 }
 
-table.diff col.diff-marker {
+.diff col.diff-marker {
        width: 2%;
 }
 
-table.diff col.diff-content {
+.diff .diff-content {
        width: 48%;
 }
 
-table.diff td div {
+.diff td div {
        /* Force-wrap very long lines such as URLs or page-widening char strings */
        word-wrap: break-word;
 }
 
-td.diff-otitle,
-td.diff-ntitle {
+.diff-otitle,
+.diff-ntitle {
        text-align: center;
 }
 
-td.diff-lineno {
+.diff-lineno {
        font-weight: bold;
 }
 
@@ -48,9 +49,9 @@ td.diff-marker {
        line-height: 1.2;
 }
 
-td.diff-addedline,
-td.diff-deletedline,
-td.diff-context {
+.diff-addedline,
+.diff-deletedline,
+.diff-context {
        font-size: 88%;
        line-height: 1.6;
        vertical-align: top;
@@ -61,15 +62,15 @@ td.diff-context {
        border-radius: 0.33em;
 }
 
-td.diff-addedline {
+.diff-addedline {
        border-color: #a3d3ff;
 }
 
-td.diff-deletedline {
+.diff-deletedline {
        border-color: #ffe49c;
 }
 
-td.diff-context {
+.diff-context {
        background: #f9f9f9;
        border-color: #e6e6e6;
        color: #333;
@@ -80,17 +81,17 @@ td.diff-context {
        text-decoration: none;
 }
 
-td.diff-addedline .diffchange,
-td.diff-deletedline .diffchange {
+.diff-addedline .diffchange,
+.diff-deletedline .diffchange {
        border-radius: 0.33em;
        padding: 0.25em 0;
 }
 
-td.diff-addedline .diffchange {
+.diff-addedline .diffchange {
        background: #d8ecff;
 }
 
-td.diff-deletedline .diffchange {
+.diff-deletedline .diffchange {
        background: #feeec8;
 }
 
index 9c7064f..c0788a4 100644 (file)
 .hlist li ol > li:first-child:before {
        content: '(' counter( list-item ) ' ';
 }
+
+/* Support hlist styles inside *boxes */
+.errorbox .hlist,
+.successbox .hlist,
+.warningbox .hlist {
+       margin-left: 0;
+}
+
+.errorbox .hlist li:after,
+.successbox .hlist li:after,
+.warningbox .hlist li:after {
+       margin-right: 3px;
+}
diff --git a/tests/phpunit/includes/parser/ParserOptionsTest.php b/tests/phpunit/includes/parser/ParserOptionsTest.php
new file mode 100644 (file)
index 0000000..aacdb1a
--- /dev/null
@@ -0,0 +1,77 @@
+<?php
+
+use Wikimedia\TestingAccessWrapper;
+use Wikimedia\ScopedCallback;
+
+class ParserOptionsTest extends MediaWikiTestCase {
+
+       /**
+        * @dataProvider provideOptionsHash
+        * @param array $usedOptions Used options
+        * @param string $expect Expected value
+        * @param array $options Options to set
+        * @param array $globals Globals to set
+        */
+       public function testOptionsHash( $usedOptions, $expect, $options, $globals = [] ) {
+               global $wgHooks;
+
+               $globals += [
+                       'wgRenderHashAppend' => '',
+                       'wgHooks' => [],
+               ];
+               $globals['wgHooks'] += [
+                       'PageRenderingHash' => [],
+               ] + $wgHooks;
+               $this->setMwGlobals( $globals );
+
+               $popt = new ParserOptions();
+               foreach ( $options as $setter => $value ) {
+                       $popt->$setter( $value );
+               }
+               $this->assertSame( $expect, $popt->optionsHash( $usedOptions ) );
+       }
+
+       public static function provideOptionsHash() {
+               $used = [ 'wrapclass', 'editsection', 'printable' ];
+
+               return [
+                       'Canonical options, nothing used' => [ [], '*!*!*!*!*!*', [] ],
+                       'Canonical options, used some options' => [ $used, '*!*!*!*!*', [] ],
+                       'Used some options, non-default values' => [
+                               $used,
+                               '*!*!*!*!*!printable=1!wrapclass=foobar',
+                               [
+                                       'setWrapOutputClass' => 'foobar',
+                                       'setIsPrintable' => true,
+                               ]
+                       ],
+                       'Canonical options, nothing used, but with hooks and $wgRenderHashAppend' => [
+                               [],
+                               '*!*!*!*!*!wgRenderHashAppend!*!onPageRenderingHash',
+                               [],
+                               [
+                                       'wgRenderHashAppend' => '!wgRenderHashAppend',
+                                       'wgHooks' => [ 'PageRenderingHash' => [ [ __CLASS__ . '::onPageRenderingHash' ] ] ],
+                               ]
+                       ],
+               ];
+       }
+
+       public static function onPageRenderingHash( &$confstr ) {
+               $confstr .= '!onPageRenderingHash';
+       }
+
+       public function testMatches() {
+               $popt1 = new ParserOptions();
+               $popt2 = new ParserOptions();
+               $this->assertTrue( $popt1->matches( $popt2 ) );
+
+               $popt1->enableLimitReport( true );
+               $popt2->enableLimitReport( false );
+               $this->assertTrue( $popt1->matches( $popt2 ) );
+
+               $popt2->setTidy( !$popt2->getTidy() );
+               $this->assertFalse( $popt1->matches( $popt2 ) );
+       }
+
+}