Merge "PHPSessionHandler: Workaround PHP5 bug"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Fri, 28 Oct 2016 01:04:54 +0000 (01:04 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 28 Oct 2016 01:04:54 +0000 (01:04 +0000)
101 files changed:
.gitreview
RELEASE-NOTES-1.28
RELEASE-NOTES-1.29 [new file with mode: 0644]
autoload.php
docs/extension.schema.json
docs/extension.schema.v1.json
includes/DefaultSettings.php
includes/EditPage.php
includes/GlobalFunctions.php
includes/PHPVersionCheck.php
includes/Revision.php
includes/api/i18n/de.json
includes/api/i18n/en.json
includes/api/i18n/es.json
includes/api/i18n/fr.json
includes/api/i18n/gl.json
includes/api/i18n/he.json
includes/api/i18n/it.json
includes/api/i18n/ja.json
includes/api/i18n/nso.json [new file with mode: 0644]
includes/api/i18n/pl.json
includes/api/i18n/pt.json
includes/api/i18n/zh-hans.json
includes/config/HashConfig.php
includes/filerepo/file/LocalFile.php
includes/htmlform/HTMLForm.php
includes/htmlform/fields/HTMLSizeFilterField.php [new file with mode: 0644]
includes/installer/i18n/pt.json
includes/installer/i18n/sr-ec.json
includes/installer/i18n/sr-el.json
includes/libs/rdbms/database/DatabasePostgres.php
includes/libs/rdbms/database/DatabaseSqlite.php
includes/libs/rdbms/lbfactory/ILBFactory.php
includes/libs/rdbms/lbfactory/LBFactory.php
includes/libs/rdbms/lbfactory/LBFactoryMulti.php
includes/libs/rdbms/lbfactory/LBFactorySimple.php
includes/libs/rdbms/lbfactory/LBFactorySingle.php
includes/libs/rdbms/loadbalancer/LoadBalancerSingle.php
includes/objectcache/ObjectCache.php
includes/page/WikiPage.php
includes/parser/CoreParserFunctions.php
includes/parser/Parser.php
includes/registration/ExtensionRegistry.php
includes/specials/SpecialNewpages.php
includes/specials/pagers/NewPagesPager.php
includes/upload/UploadBase.php
languages/Language.php
languages/i18n/ar.json
languages/i18n/ast.json
languages/i18n/bg.json
languages/i18n/bs.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/ga.json
languages/i18n/gl.json
languages/i18n/he.json
languages/i18n/ja.json
languages/i18n/kk-cyrl.json
languages/i18n/ko.json
languages/i18n/la.json
languages/i18n/lb.json
languages/i18n/mk.json
languages/i18n/nah.json
languages/i18n/nb.json
languages/i18n/nso.json
languages/i18n/pl.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/qu.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/te.json
languages/i18n/tr.json
languages/i18n/udm.json
languages/i18n/yue.json
languages/i18n/zh-hans.json
maintenance/Maintenance.php
maintenance/jsduck/categories.json
maintenance/update.php
resources/src/mediawiki.skinning/content.css
resources/src/mediawiki/mediawiki.js
resources/src/mediawiki/mediawiki.storage.js
resources/src/mediawiki/mediawiki.user.js
tests/phpunit/data/upload/buggynamespace-bad.svg [new file with mode: 0644]
tests/phpunit/data/upload/buggynamespace-evilhtml.svg [new file with mode: 0644]
tests/phpunit/data/upload/buggynamespace-okay.svg [new file with mode: 0644]
tests/phpunit/data/upload/buggynamespace-okay2.svg [new file with mode: 0644]
tests/phpunit/data/upload/buggynamespace-original.svg [new file with mode: 0644]
tests/phpunit/includes/registration/ExtensionRegistryTest.php
tests/phpunit/includes/upload/UploadBaseTest.php
tests/qunit/data/testrunner.js
tests/qunit/suites/resources/mediawiki/mediawiki.loader.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.user.test.js

index 0ec44b8..148be02 100644 (file)
@@ -2,5 +2,5 @@
 host=gerrit.wikimedia.org
 port=29418
 project=mediawiki/core.git
-defaultbranch=master
+track=1
 defaultrebase=0
index 4e445a5..a2a986f 100644 (file)
@@ -223,6 +223,8 @@ changes to languages because of Phabricator reports.
   Instead of --keep-uploads, use the same option to parserTests.php, but you
   must specify a directory with --upload-dir.
 * The 'jquery.arrowSteps' ResourceLoader module is now deprecated.
+* (T62604) Core parser functions returning a number now format the number according
+  to the page content language, not wiki content language.
 * IP::isConfiguredProxy() and IP::isTrustedProxy() were removed. Callers should
   migrate to using the same functions on a ProxyLookup instance, obtainable from
   MediaWikiServices.
diff --git a/RELEASE-NOTES-1.29 b/RELEASE-NOTES-1.29
new file mode 100644 (file)
index 0000000..6c53809
--- /dev/null
@@ -0,0 +1,98 @@
+== MediaWiki 1.29 ==
+
+THIS IS NOT A RELEASE YET
+
+MediaWiki 1.29 is an alpha-quality branch and is not recommended for use in
+production.
+
+=== Configuration changes in 1.29 ===
+
+=== New features in 1.29 ===
+
+=== External library changes in 1.29 ===
+
+==== Upgraded external libraries ====
+
+==== New external libraries ====
+
+==== Removed and replaced external libraries ====
+
+=== Bug fixes in 1.29 ===
+
+=== Action API changes in 1.29 ===
+
+=== Action API internal changes in 1.29 ===
+
+=== Languages updated in 1.29 ===
+
+MediaWiki supports over 350 languages. Many localisations are updated
+regularly. Below only new and removed languages are listed, as well as
+changes to languages because of Phabricator reports.
+
+=== Other changes in 1.29 ===
+
+== Compatibility ==
+
+MediaWiki 1.29 requires PHP 5.5.9 or later. There is experimental support for
+HHVM 3.6.5 or later.
+
+MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
+support for them is somewhat less mature. There is experimental support for
+Oracle and Microsoft SQL Server.
+
+The supported versions are:
+
+* MySQL 5.0.3 or later
+* PostgreSQL 8.3 or later
+* SQLite 3.3.7 or later
+* Oracle 9.0.1 or later
+* Microsoft SQL Server 2005 (9.00.1399)
+
+== Upgrading ==
+
+1.29 has several database changes since 1.28, and will not work without schema
+updates. Note that due to changes to some very large tables like the revision
+table, the schema update may take quite long (minutes on a medium sized site,
+many hours on a large site).
+
+If upgrading from before 1.11, and you are using a wiki as a commons
+repository, make sure that it is updated as well. Otherwise, errors may arise
+due to database schema changes.
+
+If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
+new database fields are filled with data.
+
+If you are upgrading from MediaWiki 1.4.x or earlier, you should upgrade to
+1.5 first. The upgrade script maintenance/upgrade1_5.php has been removed
+with MediaWiki 1.21.
+
+Don't forget to always back up your database before upgrading!
+
+See the file UPGRADE for more detailed upgrade instructions.
+
+For notes on 1.28.x and older releases, see HISTORY.
+
+== Online documentation ==
+
+Documentation for both end-users and site administrators is available on
+MediaWiki.org, and is covered under the GNU Free Documentation License (except
+for pages that explicitly state that their contents are in the public domain):
+
+       https://www.mediawiki.org/wiki/Special:MyLanguage/Documentation
+
+== Mailing list ==
+
+A mailing list is available for MediaWiki user support and discussion:
+
+       https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
+
+A low-traffic announcements-only list is also available:
+
+       https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
+
+It's highly recommended that you sign up for one of these lists if you're
+going to run a public MediaWiki, so you can be notified of security fixes.
+
+== IRC help ==
+
+There's usually someone online in #mediawiki on irc.freenode.net.
index 3a2d06f..8b1e9c5 100644 (file)
@@ -556,6 +556,7 @@ $wgAutoloadLocalClasses = [
        'HTMLSelectNamespace' => __DIR__ . '/includes/htmlform/fields/HTMLSelectNamespace.php',
        'HTMLSelectNamespaceWithButton' => __DIR__ . '/includes/htmlform/fields/HTMLSelectNamespaceWithButton.php',
        'HTMLSelectOrOtherField' => __DIR__ . '/includes/htmlform/fields/HTMLSelectOrOtherField.php',
+       'HTMLSizeFilterField' => __DIR__ . '/includes/htmlform/fields/HTMLSizeFilterField.php',
        'HTMLSubmitField' => __DIR__ . '/includes/htmlform/fields/HTMLSubmitField.php',
        'HTMLTagFilter' => __DIR__ . '/includes/htmlform/fields/HTMLTagFilter.php',
        'HTMLTextAreaField' => __DIR__ . '/includes/htmlform/fields/HTMLTextAreaField.php',
index e408d03..2cf5fe1 100644 (file)
                                                        "type": "string",
                                                        "enum": [
                                                                "array_merge_recursive",
+                                                               "array_replace_recursive",
                                                                "array_plus_2d",
                                                                "array_plus",
                                                                "array_merge"
index 6d48a06..8659dff 100644 (file)
                                                        "type": "string",
                                                        "enum": [
                                                                "array_merge_recursive",
+                                                               "array_replace_recursive",
                                                                "array_plus_2d",
                                                                "array_plus",
                                                                "array_merge"
index 2ae33b2..0b0016c 100644 (file)
@@ -75,7 +75,7 @@ $wgConfigRegistry = [
  * MediaWiki version number
  * @since 1.2
  */
-$wgVersion = '1.28.0-alpha';
+$wgVersion = '1.29.0-alpha';
 
 /**
  * Name of the site. It must be changed in LocalSettings.php
@@ -5747,6 +5747,8 @@ $wgGrantPermissions['viewdeleted']['browsearchive'] = true;
 $wgGrantPermissions['viewdeleted']['deletedhistory'] = true;
 $wgGrantPermissions['viewdeleted']['deletedtext'] = true;
 
+$wgGrantPermissions['viewrestrictedlogs']['suppressionlog'] = true;
+
 $wgGrantPermissions['delete'] = $wgGrantPermissions['editpage'] +
        $wgGrantPermissions['viewdeleted'];
 $wgGrantPermissions['delete']['delete'] = true;
@@ -5797,6 +5799,7 @@ $wgGrantPermissionGroups = [
        'blockusers'          => 'administration',
        'delete'              => 'administration',
        'viewdeleted'         => 'administration',
+       'viewrestrictedlogs'  => 'administration',
        'protect'             => 'administration',
        'createaccount'       => 'administration',
 
index 770a74e..4aa87d6 100644 (file)
@@ -408,6 +408,11 @@ class EditPage {
         */
        protected $context;
 
+       /**
+        * @var bool Whether an old revision is edited
+        */
+       private $isOldRev = false;
+
        /**
         * @param Article $article
         */
@@ -2880,24 +2885,9 @@ ERROR;
                global $wgOut, $wgUser, $wgMaxArticleSize, $wgLang;
                global $wgAllowUserCss, $wgAllowUserJs;
 
-               if ( $this->mTitle->isTalkPage() ) {
-                       $wgOut->addWikiMsg( 'talkpagetext' );
-               }
+               $this->addTalkPageText();
 
-               // Add edit notices
-               $editNotices = $this->mTitle->getEditNotices( $this->oldid );
-               if ( count( $editNotices ) ) {
-                       $wgOut->addHTML( implode( "\n", $editNotices ) );
-               } else {
-                       $msg = $this->context->msg( 'editnotice-notext' );
-                       if ( !$msg->isDisabled() ) {
-                               $wgOut->addHTML(
-                                       '<div class="mw-editnotice-notext">'
-                                       . $msg->parseAsBlock()
-                                       . '</div>'
-                               );
-                       }
-               }
+               $this->addEditNotices();
 
                if ( $this->isConflict ) {
                        $wgOut->wrapWikiMsg( "<div class='mw-explainconflict'>\n$1\n</div>", 'explainconflict' );
@@ -2968,6 +2958,7 @@ ERROR;
                                        if ( !$revision->isCurrent() ) {
                                                $this->mArticle->setOldSubtitle( $revision->getId() );
                                                $wgOut->addWikiMsg( 'editingold' );
+                                               $this->isOldRev = true;
                                        }
                                } elseif ( $this->mTitle->exists() ) {
                                        // Something went wrong
@@ -3278,6 +3269,10 @@ HTML
                                        $classes[] = 'mw-textarea-cprotected';
                                }
                        }
+                       # Is an old revision being edited?
+                       if ( $this->isOldRev ) {
+                               $classes[] = 'mw-textarea-oldrev';
+                       }
 
                        $attribs = [ 'tabindex' => 1 ];
 
@@ -4425,4 +4420,30 @@ HTML
                // reverse the transform that we made for reversibility reasons.
                return strtr( $result, [ "&#x0" => "&#x" ] );
        }
+
+       protected function addEditNotices() {
+               global $wgOut;
+
+               $editNotices = $this->mTitle->getEditNotices( $this->oldid );
+               if ( count( $editNotices ) ) {
+                       $wgOut->addHTML( implode( "\n", $editNotices ) );
+               } else {
+                       $msg = $this->context->msg( 'editnotice-notext' );
+                       if ( !$msg->isDisabled() ) {
+                               $wgOut->addHTML(
+                                       '<div class="mw-editnotice-notext">'
+                                       . $msg->parseAsBlock()
+                                       . '</div>'
+                               );
+                       }
+               }
+       }
+
+       protected function addTalkPageText() {
+               global $wgOut;
+
+               if ( $this->mTitle->isTalkPage() ) {
+                       $wgOut->addWikiMsg( 'talkpagetext' );
+               }
+       }
 }
index 2b6088e..bae9c77 100644 (file)
@@ -1625,11 +1625,13 @@ function wfShowingResults( $offset, $limit ) {
 }
 
 /**
- * @todo document
- * @todo FIXME: We may want to blacklist some broken browsers
+ * Whether the client accept gzip encoding
  *
- * @param bool $force
- * @return bool Whereas client accept gzip compression
+ * Uses the Accept-Encoding header to check if the client supports gzip encoding.
+ * Use this when considering to send a gzip-encoded response to the client.
+ *
+ * @param bool $force Forces another check even if we already have a cached result.
+ * @return bool
  */
 function wfClientAcceptsGzip( $force = false ) {
        static $result = null;
index 018c6f8..656ba43 100644 (file)
@@ -30,7 +30,7 @@
  * version are hardcoded here
  */
 function wfEntryPointCheck( $entryPoint ) {
-       $mwVersion = '1.28';
+       $mwVersion = '1.29';
        $minimumVersionPHP = '5.5.9';
        $phpVersion = PHP_VERSION;
 
index 8f337f9..b812191 100644 (file)
@@ -87,6 +87,7 @@ class Revision implements IDBAccessObject {
        const DELETED_USER = 4;
        const DELETED_RESTRICTED = 8;
        const SUPPRESSED_USER = 12; // convenience
+       const SUPPRESSED_ALL = 15; // convenience
 
        // Audience options for accessors
        const FOR_PUBLIC = 1;
index 40243c1..a0668c9 100644 (file)
        "apihelp-options-description": "Die Voreinstellungen des gegenwärtigen Benutzers ändern.",
        "apihelp-options-param-reset": "Setzt die Einstellungen auf Websitestandards zurück.",
        "apihelp-options-param-resetkinds": "Liste von zurückzusetzenden Optionstypen, wenn die <var>$1reset</var>-Option ausgewählt ist.",
-       "apihelp-options-param-change": "Liste von Änderungen, die mit Name=Wert formatiert sind (z.B. skin=vector). Wert darf keine Verkettungszeichen enthalten. Falls kein Wert angegeben wurde (nichtmal ein Gleichheitszeichen), z.B.: optionname|otheroption|..., wird die Option auf ihren Vorgabewert zurückgesetzt.",
-       "apihelp-options-param-optionvalue": "Der Wert für die Option, die durch <var>$1optionname</var> angegeben ist, kann Verkettungszeichen enthalten.",
+       "apihelp-options-param-change": "Liste von Änderungen, die mit name=wert formatiert sind (z.&nbsp;B. skin=vector). Falls kein Wert angegeben wurde (ohne einem Gleichheitszeichen), z.&nbsp;B. Optionname|AndereOption|…, wird die Option auf ihren Standardwert zurückgesetzt. Falls ein übergebener Wert ein Trennzeichen enthält (<kbd>|</kbd>), verwende den [[Special:ApiHelp/main#main/datatypes|alternativen Mehrfachwerttrenner]] zur korrekten Bedienung.",
+       "apihelp-options-param-optionvalue": "Der Wert für die Option, die durch <var>$1optionname</var> angegeben ist.",
        "apihelp-options-example-reset": "Alle Einstellungen zurücksetzen",
        "apihelp-options-example-change": "Ändert die Einstellungen <kbd>skin</kbd> und <kbd>hideminor</kbd>.",
        "apihelp-options-example-complex": "Setzt alle Einstellungen zurück, dann <kbd>skin</kbd> und <kbd>nickname</kbd> festlegen.",
index c20ed5d..fe73a56 100644 (file)
        "apihelp-options-description": "Change preferences of the current user.\n\nOnly options which are registered in core or in one of installed extensions, or options with keys prefixed with <code>userjs-</code> (intended to be used by user scripts), can be set.",
        "apihelp-options-param-reset": "Resets preferences to the site defaults.",
        "apihelp-options-param-resetkinds": "List of types of options to reset when the <var>$1reset</var> option is set.",
-       "apihelp-options-param-change": "List of changes, formatted name=value (e.g. skin=vector). Value cannot contain pipe characters. If no value is given (not even an equals sign), e.g., optionname|otheroption|..., the option will be reset to its default value.",
+       "apihelp-options-param-change": "List of changes, formatted name=value (e.g. skin=vector). If no value is given (not even an equals sign), e.g., optionname|otheroption|..., the option will be reset to its default value. If any value passed contains the pipe character (<kbd>|</kbd>), use the [[Special:ApiHelp/main#main/datatypes|alternative multiple-value separator]] for correct operation.",
        "apihelp-options-param-optionname": "The name of the option that should be set to the value given by <var>$1optionvalue</var>.",
-       "apihelp-options-param-optionvalue": "The value for the option specified by <var>$1optionname</var>, can contain pipe characters.",
+       "apihelp-options-param-optionvalue": "The value for the option specified by <var>$1optionname</var>.",
        "apihelp-options-example-reset": "Reset all preferences.",
        "apihelp-options-example-change": "Change <kbd>skin</kbd> and <kbd>hideminor</kbd> preferences.",
        "apihelp-options-example-complex": "Reset all preferences, then set <kbd>skin</kbd> and <kbd>nickname</kbd>.",
index 23847dc..27cf257 100644 (file)
        "apihelp-options-param-resetkinds": "Lista de tipos de opciones a restablecer cuando la opción <var>$1reset</var> esté establecida.",
        "apihelp-options-param-change": "Lista de cambios con el formato name=value (por ejemplo: skin=vector). El valor no puede contener caracteres de barras verticales. Si no se da ningún valor (ni siquiera un signo de igual), por ejemplo: optionname|otheroption|..., la opción se restablecerá a sus valores predeterminados.",
        "apihelp-options-param-optionname": "El nombre de la opción que debe establecerse en el valor dado por <var>$1optionvalue</var>.",
-       "apihelp-options-param-optionvalue": "El valor de la opción especificada por <var>$1optionname</var>, puede contener barras verticales.",
+       "apihelp-options-param-optionvalue": "El valor de la opción especificada por <var>$1optionname</var>.",
        "apihelp-options-example-reset": "Restablecer todas las preferencias",
        "apihelp-options-example-change": "Cambiar las preferencias <kbd>skin</kbd> y <kbd>hideminor</kbd>.",
        "apihelp-options-example-complex": "Restablecer todas las preferencias y establecer <kbd>skin</kbd> y <kbd>nickname</kbd>.",
index 61fccb0..6843c90 100644 (file)
        "apihelp-options-description": "Modifier les préférences de l’utilisateur courant.\n\nSeules les options enregistrées dans le cœur ou dans l’une des extensions installées, ou les options avec des clés préfixées par <code>userjs-</code> (devant être utilisées dans les scripts utilisateur), peuvent être définies.",
        "apihelp-options-param-reset": "Réinitialise les préférences aux valeurs par défaut du site.",
        "apihelp-options-param-resetkinds": "Liste des types d’option à réinitialiser quand l’option <var>$1reset</var> est définie.",
-       "apihelp-options-param-change": "Liste des modifications, au format nom=valeur (par ex. skin=vector). La valeur ne peut pas contenir de caractère barre verticale. Si aucune valeur n’est fournie (pas même un signe égal), par ex., nomoption|autreoption|…, l’option sera réinitialisée à sa valeur par défaut.",
+       "apihelp-options-param-change": "Liste des modifications, au format nom=valeur (par ex. skin=vector). Si aucune valeur n’est fournie (pas même un signe égal), par ex., nomoption|autreoption|…, l’option sera réinitialisée à sa valeur par défaut. Pour toute valeur passée contenant une barre verticale (<kbd>|</kbd>), utiliser le [[Special:ApiHelp/main#main/datatypes|séparateur alternatif de valeur multiple]] pour que l'opération soit correcte.",
        "apihelp-options-param-optionname": "Un nom d’option qui doit être fixé à la valeur fournie par <var>$1optionvalue</var>.",
-       "apihelp-options-param-optionvalue": "La valeur d’une option spécifiée par <var>$1optionname</var> peut contenir des caractères barre verticale.",
+       "apihelp-options-param-optionvalue": "La valeur de l'option spécifiée par <var>$1optionname</var>.",
        "apihelp-options-example-reset": "Réinitialiser toutes les préférences",
        "apihelp-options-example-change": "Modifier les préférences <kbd>skin</kbd> et <kbd>hideminor</kbd>.",
        "apihelp-options-example-complex": "Réinitialiser toutes les préférences, puis définir <kbd>skin</kbd> et <kbd>nickname</kbd>.",
index 4c74147..6d90fb5 100644 (file)
        "apihelp-options-description": "Cambiar as preferencias do usuario actual.\n\nSó se poden cambiar opcións que estean rexistradas no núcleo ou nunha das extensións instaladas, ou aquelas opcións con claves prefixadas con <code>userjs-</code> (previstas para ser usadas por escrituras de usuario).",
        "apihelp-options-param-reset": "Reinicia as preferencias ás iniciais do sitio.",
        "apihelp-options-param-resetkinds": "Lista de tipos de opcións a reinicializar cando a opción <var>$1reset</var> está definida.",
-       "apihelp-options-param-change": "Lista de cambios, con formato nome=valor (p. ex. skin=vector). O valor non pode ter caracteres de barra vertical. Se non se indica un valor (sen u signo igual), p. ex. nomeopcion|outraopcion|..., a opción será gardada co seu valor por defecto.",
+       "apihelp-options-param-change": "Lista de cambios, con formato nome=valor (p. ex. skin=vector). Se non se da un valor (sen un símbolo de igual), p.ex. optionname|otheroption|..., a opción pasará ó valor por defecto. Para calquera valor que conteña o carácter (<kbd>|</kbd>), use o [[Special:ApiHelp/main#main/datatypes|separador alternativo para valores múltiples]] para unha operación correcta.",
        "apihelp-options-param-optionname": "O nome da opción que debe fixarse no valor dado por <var>$1optionvalue</var>.",
-       "apihelp-options-param-optionvalue": "O valor para a opción especificada por <var>$1optionname</var>. Pode conter barras verticais.",
+       "apihelp-options-param-optionvalue": "O valor para a opción especificada por <var>$1optionname</var>, pode conter barras verticais.",
        "apihelp-options-example-reset": "Restablecer todas as preferencias.",
        "apihelp-options-example-change": "Cambiar as preferencias <kbd>skin</kbd> and <kbd>hideminor</kbd>.",
        "apihelp-options-example-complex": "Restaurar todas as preferencias, logo fixar <kbd>skin</kbd> e <kbd>nickname</kbd>.",
index 72e6505..16e6d8a 100644 (file)
        "apihelp-options-description": "שינוי העדפות של המשתמש הנוכחי.\n\nרק אפשרויות שמוגדרות בליבה או באחת מההרחבות המותקנות, או אפשרויות עם מפתחות עם התחילית \"<code dir=\"ltr\">userjs-</code>\" (שמיועדות לשימוש תסריטי משתמשים) יכולות להיות מוגדרות.",
        "apihelp-options-param-reset": "אתחול ההעדפות לבררות המחדל של האתר.",
        "apihelp-options-param-resetkinds": "רשימת סוגי אפשרויות לאתחל כאשר מוגדרת האפשרות <var>$1reset</var>.",
-       "apihelp-options-param-change": "רש×\99×\9eת ×©×\99× ×\95×\99×\99×\9d, ×\91תס×\93×\99ר name=value (×\9c×\9eש×\9c skin=vector). ×\94ער×\9a ×\90×\99× ×\95 ×\99×\9b×\95×\9c ×\9c×\94×\9b×\99×\9c ×ª×\95×\95×\99 ×\9eק×\9c (|). ×\90×\9d ×\9c×\90 × ×\99ת×\9f ×¢×¨×\9a, ×\90פ×\99×\9c×\95 ×\9c×\90 ×¡×\99×\9e×\9f ×©×\95×\95×\94, ×\9c×\9eש×\9c optionname|otheroption|...â\80\8e, ×\94×\90פשר×\95ת ×ª×\90×\95פס ×\9cער×\9a ×\91ררת ×\94×\9e×\97×\93×\9c ×©×\9cה.",
+       "apihelp-options-param-change": "רש×\99×\9eת ×©×\99× ×\95×\99×\99×\9d, ×\91תס×\93×\99ר name=value (×\9c×\9eש×\9c skin=vector). ×\90×\9d ×\9c×\90 × ×\99ת×\9f ×¢×¨×\9a, ×\90פ×\99×\9c×\95 ×\9c×\90 ×¡×\99×\9e×\9f ×©×\95×\95×\94, ×\9c×\9eש×\9c optionname|otheroption|...â\80\8e, ×\94×\90פשר×\95ת ×ª×\90×\95פס ×\9cער×\9a ×\91ררת ×\94×\9e×\97×\93×\9c ×©×\9c×\94. ×\90×\9d ×¢×¨×\9a ×\9e×\95×¢×\91ר ×\9b×\9cש×\94×\95 ×\9e×\9b×\99×\9c ×\90ת ×ª×\95 ×\94×\9eק×\9c (<kbd>|</kbd>), ×\99ש ×\9c×\94שת×\9eש ×\91[[Special:ApiHelp/main#main/datatypes|×\9eפר×\99×\93 ×¢×¨×\9b×\99×\9d ×\9eר×\95×\91×\99×\9d ×\97×\9c×\95פ×\99]] ×\91ש×\91×\99×\9c ×¤×¢×\95×\9c×\94 × ×\9b×\95× ה.",
        "apihelp-options-param-optionname": "שם האפשרות שצריך להגדיר לערך שניתן ב־<var>$1optionvalue</var>.",
-       "apihelp-options-param-optionvalue": "ערך האפשרות שצוין ב־<var>$1optionname</var>, יכול להכיל תווי מקל.",
+       "apihelp-options-param-optionvalue": "ערך האפשרות שצוין ב־<var>$1optionname</var>.",
        "apihelp-options-example-reset": "אתחול כל ההעדפות.",
        "apihelp-options-example-change": "לשנות את ההעדפות <kbd>skin</kbd> ו־<kbd>hideminor</kbd>.",
        "apihelp-options-example-complex": "לאתחל את כל ההעדפות ואז להגדיר את <kbd>skin</kbd> ואת <kbd>nickname</kbd>.",
index 5f1d851..48521a1 100644 (file)
        "apihelp-opensearch-param-suggest": "Non fare nulla se <var>[[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> è falso.",
        "apihelp-opensearch-param-format": "Il formato dell'output.",
        "apihelp-opensearch-example-te": "Trova le pagine che iniziano con <kbd>Te</kbd>.",
+       "apihelp-options-param-optionvalue": "Il valore per l'opzione specificata da <var>$1optionname</var>.",
        "apihelp-options-example-reset": "Reimposta tutte le preferenze.",
        "apihelp-paraminfo-description": "Ottieni informazioni sui moduli API.",
        "apihelp-paraminfo-param-helpformat": "Formato delle stringhe di aiuto.",
index 054ec02..3985dc1 100644 (file)
        "apihelp-protect-description": "ページの保護レベルを変更します。",
        "apihelp-protect-param-title": "保護(解除)するページ名です。$1pageid とは同時に使用できません。",
        "apihelp-protect-param-pageid": "保護(解除)するページIDです。$1title とは同時に使用できません。",
-       "apihelp-protect-param-protections": "<kbd>action=level</kbd> の形式 (例えば、<kbd>edit=sysop</kbd>) で整形された、保護レベルの一覧。\n\n<strong>注意: </strong> ここに列挙されなかった操作の制限は解除されます。",
+       "apihelp-protect-param-protections": "<kbd>action=level</kbd> の形式 (例えば、<kbd>edit=sysop</kbd>) で整形された、保護レベルの一覧。レベル <kbd>all</kbd> は誰もが操作できる、言い換えると制限が掛かっていないことを意味します。\n\n<strong>注意: </strong> ここに列挙されなかった操作の制限は解除されます。",
        "apihelp-protect-param-expiry": "有効期限です。タイムスタンプがひとつだけ指定された場合は、それがすべての保護に適用されます。無期限の保護を行う場合は<kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd>, または <kbd>never</kbd> を指定します。",
        "apihelp-protect-param-reason": "保護(解除)の理由。",
        "apihelp-protect-param-tags": "保護記録の項目に適用する変更タグ。",
        "apihelp-query+siteinfo-paramvalue-prop-general": "システム全体の情報。",
        "apihelp-query+siteinfo-paramvalue-prop-specialpagealiases": "特別ページの別名の一覧。",
        "apihelp-query+siteinfo-paramvalue-prop-magicwords": "マジックワードとこれらの別名の一覧。",
+       "apihelp-query+siteinfo-param-numberingroup": "利用者グループに属する利用者の数を一覧表示します。",
        "apihelp-query+siteinfo-example-simple": "サイト情報を取得する。",
        "apihelp-query+tags-description": "変更タグを一覧表示します。",
        "apihelp-query+tags-param-limit": "一覧表示するタグの最大数。",
        "apihelp-query+usercontribs-param-tag": "このタグが付与された版のみを一覧表示する。",
        "apihelp-query+usercontribs-param-toponly": "最新の版である変更のみを一覧表示する。",
        "apihelp-query+usercontribs-example-user": "利用者 <kbd>Example</kbd> の投稿記録を表示する。",
+       "apihelp-query+usercontribs-example-ipprefix": "<kbd>192.0.2.</kbd> から始まるすべてのIPアドレスからの投稿記録を表示する。",
+       "apihelp-query+userinfo-description": "現在の利用者に関する情報を取得します。",
        "apihelp-query+userinfo-param-prop": "どの情報を結果に含めるか:",
        "apihelp-query+userinfo-paramvalue-prop-realname": "利用者の本名を追加します。",
        "apihelp-query+userinfo-example-simple": "現在の利用者に関する情報を取得します。",
diff --git a/includes/api/i18n/nso.json b/includes/api/i18n/nso.json
new file mode 100644 (file)
index 0000000..42b30bb
--- /dev/null
@@ -0,0 +1,9 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mohau"
+               ]
+       },
+       "apihelp-createaccount-param-name": "Leina la mošomši.",
+       "apihelp-login-example-login": "Tsena."
+}
index fb6aed8..7fae7ae 100644 (file)
@@ -23,6 +23,7 @@
        "apihelp-main-param-smaxage": "Ustaw nagłówek HTTP kontrolujący pamięć podręczną <code>s-maxage</code> na taką ilość sekund. Błędy nie będą nigdy przechowywane w pamięci podręcznej.",
        "apihelp-main-param-maxage": "Ustaw nagłówek HTTP kontrolujący pamięć podręczną <code>maxage</code> na taką ilość sekund. Błędy nie będą nigdy przechowywane w pamięci podręcznej.",
        "apihelp-main-param-assert": "Zweryfikuj, czy użytkownik jest zalogowany, jeżeli wybrano <kbd>user</kbd>, lub czy ma uprawnienia bota, jeżeli wybrano <kbd>bot</kbd>.",
+       "apihelp-main-param-assertuser": "Sprawdź, czy bieżący użytkownik posiada nazwę.",
        "apihelp-main-param-requestid": "Każda wartość tu podana będzie dołączana do odpowiedzi. Może być użyta do rozróżniania żądań.",
        "apihelp-main-param-servedby": "Dołącz do odpowiedzi nazwę hosta, który obsłużył żądanie.",
        "apihelp-main-param-curtimestamp": "Dołącz obecny znacznik czasu do wyniku.",
        "apihelp-options-param-resetkinds": "Lista typów opcji do zresetowania, jeżeli ustawiono opcję <var>$1reset</var>.",
        "apihelp-options-param-change": "Lista zmian, w formacie nazwa=wartość (np. skin=vector). Wartość nie może zawierać znaku pionowej kreski. Jeżeli nie zostanie podana wartość (a nawet znak równości), np., optionname|otheroption|..., to opcja zostanie zresetowana do jej wartości domyślnej.",
        "apihelp-options-param-optionname": "Nazwa opcji, która powinna być ustawiona na wartość <var>$1optionvalue</var>.",
-       "apihelp-options-param-optionvalue": "Wartość opcji, określona w <var>$1optionname</var>, może zawierać znaki pionowej kreski.",
+       "apihelp-options-param-optionvalue": "Wartość opcji, określona w <var>$1optionname</var>.",
        "apihelp-options-example-reset": "Resetuj wszystkie preferencje.",
        "apihelp-options-example-change": "Zmień preferencje <kbd>skin</kbd> (skórka) i <kbd>hideminor</kbd> (ukryj drobne edycje).",
        "apihelp-options-example-complex": "Zresetuj wszystkie preferencje, a następnie ustaw <kbd>skin</kbd> i <kbd>nickname</kbd>.",
        "apihelp-query+alldeletedrevisions-example-ns-main": "Wymień ostatnie 50 usuniętych edycji z przestrzeni głównej.",
        "apihelp-query+allfileusages-description": "Lista wykorzystania pliku, także dla nieistniejących.",
        "apihelp-query+allfileusages-param-prop": "Jakie informacje dołączyć:",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "Dodaje tytuł pliku.",
        "apihelp-query+allfileusages-param-limit": "Łączna liczba obiektów do zwrócenia.",
        "apihelp-query+allfileusages-example-unique": "Lista unikatowych tytułów plików.",
        "apihelp-query+allimages-param-sort": "Sortowanie według właściwości.",
        "apihelp-query+allimages-example-recent": "Pokaż listę ostatnio przesłanych plików, podobnie do [[Special:NewFiles]].",
        "apihelp-query+allimages-example-mimetypes": "Pokaż listę plików z typem MIME <kbd>image/png</kbd> lub <kbd>image/gif</kbd>",
        "apihelp-query+alllinks-param-prop": "Jakie informacje dołączyć:",
+       "apihelp-query+alllinks-paramvalue-prop-title": "Dodaje tytuł linku.",
        "apihelp-query+alllinks-param-namespace": "Przestrzeń nazw do emulacji.",
        "apihelp-query+alllinks-param-limit": "Łączna liczba obiektów do zwrócenia.",
        "apihelp-query+alllinks-example-unique": "Lista unikatowych tytułów plików.",
        "apihelp-query+allpages-example-B": "Pokaż listę stron rozpoczynających się na literę <kbd>B</kbd>.",
        "apihelp-query+allredirects-description": "Lista wszystkich przekierowań do przestrzeni nazw.",
        "apihelp-query+allredirects-param-prop": "Jakie informacje dołączyć:",
+       "apihelp-query+allredirects-paramvalue-prop-title": "Dodaje tytuł przekierowania.",
        "apihelp-query+allredirects-param-namespace": "Przestrzeń nazw do emulacji.",
        "apihelp-query+allredirects-param-limit": "Łączna liczba obiektów do zwrócenia.",
        "apihelp-query+allrevisions-description": "Wyświetl wszystkie wersje.",
        "apihelp-query+allrevisions-param-excludeuser": "Nie wyświetlaj wersji tego użytkownika.",
        "apihelp-query+allrevisions-param-namespace": "Wyświetl tylko strony w przestrzeni głównej.",
        "apihelp-query+allrevisions-example-ns-main": "Wyświetl pierwsze 50 wersji w przestrzeni głównej.",
+       "apihelp-query+mystashedfiles-param-limit": "Liczba plików do pobrania.",
        "apihelp-query+alltransclusions-param-prop": "Jakie informacje dołączyć:",
        "apihelp-query+alltransclusions-param-namespace": "Przestrzeń nazw do emulacji.",
+       "apihelp-query+alltransclusions-param-limit": "Łączna liczba elementów do zwrócenia.",
        "apihelp-query+allusers-param-dir": "Kierunek sortowania.",
        "apihelp-query+allusers-param-prop": "Jakie informacje dołączyć:",
+       "apihelp-query+allusers-param-limit": "Łączna liczba nazw użytkowników do zwrócenia.",
        "apihelp-query+allusers-param-witheditsonly": "Tylko użytkownicy, którzy edytowali.",
+       "apihelp-query+backlinks-description": "Znajdź wszystkie strony, które linkują do danej strony.",
        "apihelp-query+backlinks-param-namespace": "Przestrzeń nazw do emulacji.",
        "apihelp-query+backlinks-example-simple": "Pokazuj linki do <kbd>Main page</kbd>.",
        "apihelp-query+blocks-param-ids": "Lista zablokowanych ID do wylistowania (opcjonalne).",
        "apihelp-query+blocks-param-users": "Lista użytkowników do wyszukania (opcjonalne).",
        "apihelp-query+blocks-param-limit": "Maksymalna liczba blokad do wylistowania.",
+       "apihelp-query+blocks-paramvalue-prop-reason": "Dodaje powód zablokowania.",
        "apihelp-query+blocks-example-simple": "Listuj blokady.",
        "apihelp-query+categories-param-limit": "Liczba kategorii do zwrócenia.",
        "apihelp-query+categorymembers-description": "Wszystkie strony w danej kategorii.",
        "apihelp-query+categorymembers-paramvalue-prop-type": "Doda informacje o typie strony w kategorii (<samp>page</samp> (strona), <samp>subcat</samp> (podkategoria) lub <samp>file</samp> (plik)).",
        "apihelp-query+categorymembers-param-limit": "Maksymalna liczba zwracanych wyników.",
        "apihelp-query+categorymembers-param-sort": "Sortowanie według właściwości.",
+       "apihelp-query+categorymembers-param-dir": "W jakim kierunku sortować.",
        "apihelp-query+deletedrevisions-param-tag": "Pokazuj tylko zmiany oznaczone tym tagiem.",
        "apihelp-query+deletedrevisions-param-user": "Pokazuj tylko zmiany dokonane przez tego użytkownika.",
        "apihelp-query+deletedrevisions-param-excludeuser": "Nie pokazuj zmian dokonanych przez tego użytkownika.",
        "apihelp-query+deletedrevs-param-limit": "Maksymalna liczba zmian do wylistowania.",
        "apihelp-query+duplicatefiles-example-generated": "Szukaj duplikatów wszystkich plików.",
        "apihelp-query+embeddedin-param-filterredir": "Jaki filtrować przekierowania.",
+       "apihelp-query+embeddedin-param-limit": "Łączna liczba stron do zwrócenia.",
        "apihelp-query+extlinks-param-limit": "Liczba linków do zwrócenia.",
        "apihelp-query+exturlusage-param-prop": "Jakie informacje dołączyć:",
+       "apihelp-query+exturlusage-paramvalue-prop-ids": "Dodaje ID strony.",
+       "apihelp-query+exturlusage-paramvalue-prop-url": "Dodaje adres URL, używany na stronie.",
        "apihelp-query+exturlusage-param-limit": "Liczba stron do zwrócenia.",
        "apihelp-query+filearchive-paramvalue-prop-dimensions": "Alias rozmiaru.",
        "apihelp-query+filearchive-example-simple": "Pokaż listę wszystkich usuniętych plików.",
        "apihelp-query+filerepoinfo-example-simple": "Uzyskaj informacje na temat repozytoriów plików.",
        "apihelp-query+fileusage-paramvalue-prop-title": "Nazwa każdej strony.",
        "apihelp-query+fileusage-param-limit": "Ilość do zwrócenia.",
+       "apihelp-query+imageinfo-description": "Zwraca informacje o pliku i historię przesyłania.",
        "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Dodaje kanoniczny tytuł pliku.",
        "apihelp-query+imageinfo-paramvalue-prop-dimensions": "Alias rozmiaru.",
        "apihelp-query+imageinfo-paramvalue-prop-sha1": "Dodaj sumę kontrolną SHA-1 dla tego pliku.",
        "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Dodaje prefiks interwiki.",
        "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Dodaje tytuł interwiki.",
        "apihelp-query+iwlinks-paramvalue-prop-url": "Dodaje pełny adres URL.",
+       "apihelp-query+iwlinks-param-limit": "Łączna liczba linków interwiki do zwrócenia.",
+       "apihelp-query+langbacklinks-param-limit": "Łączna liczba stron do zwrócenia.",
+       "apihelp-query+langbacklinks-paramvalue-prop-lllang": "Dodaje kod języka linku językowego.",
+       "apihelp-query+langbacklinks-paramvalue-prop-lltitle": "Dodaje tytuł linku językowego.",
        "apihelp-query+langlinks-paramvalue-prop-url": "Dodaje pełny adres URL.",
        "apihelp-query+links-param-limit": "Liczba linków do zwrócenia.",
+       "apihelp-query+linkshere-description": "Znajdź wszystkie strony, które linkują do danych stron.",
        "apihelp-query+linkshere-paramvalue-prop-title": "Nazwa każdej strony.",
+       "apihelp-query+linkshere-paramvalue-prop-redirect": "Oznacz, jeśli strona jest przekierowaniem.",
        "apihelp-query+linkshere-param-limit": "Liczba do zwrócenia.",
        "apihelp-query+logevents-description": "Pobierz eventy z logu.",
        "apihelp-query+logevents-example-simple": "Lista ostatnich zarejestrowanych zdarzeń.",
        "apihelp-query+pageswithprop-param-prop": "Jakie informacje dołączyć:",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "Doda ID strony.",
        "apihelp-query+pageswithprop-example-generator": "Pobierz dodatkowe informacje o pierwszych 10 stronach wykorzystując <code>_&#95;NOTOC_&#95;</code>.",
        "apihelp-query+prefixsearch-param-search": "Wyszukaj tekst.",
        "apihelp-query+prefixsearch-param-namespace": "Przestrzenie nazw do przeszukania.",
        "apihelp-query+protectedtitles-param-namespace": "Listuj tylko strony z tych przestrzeni nazw.",
        "apihelp-query+protectedtitles-param-limit": "Łączna liczba stron do zwrócenia.",
        "apihelp-query+protectedtitles-example-simple": "Lista chronionych nagłówków",
+       "apihelp-query+querypage-param-limit": "Liczba zwracanych wyników.",
        "apihelp-query+recentchanges-param-user": "Listuj tylko zmiany dokonane przez tego użytkownika.",
        "apihelp-query+recentchanges-param-excludeuser": "Nie listuj zmian dokonanych przez tego użytkownika.",
        "apihelp-query+recentchanges-param-tag": "Pokazuj tylko zmiany oznaczone tym tagiem.",
        "apihelp-query+recentchanges-example-simple": "Lista ostatnich zmian.",
+       "apihelp-query+redirects-description": "Zwraca wszystkie przekierowania do danej strony.",
        "apihelp-query+redirects-paramvalue-prop-title": "Nazwa każdego przekierowania.",
        "apihelp-query+redirects-param-limit": "Ile przekierowań zwrócić.",
        "apihelp-query+revisions+base-paramvalue-prop-ids": "Identyfikator wersji.",
        "apihelp-query+revisions+base-paramvalue-prop-flags": "Znaczniki wersji (drobne).",
        "apihelp-query+revisions+base-paramvalue-prop-timestamp": "Znacznik czasu wersji.",
+       "apihelp-query+revisions+base-paramvalue-prop-size": "Długość wersji (w bajtach).",
        "apihelp-query+revisions+base-paramvalue-prop-sha1": "SHA-1 (base 16) wersji.",
        "apihelp-query+revisions+base-paramvalue-prop-content": "Tekst wersji.",
        "apihelp-query+revisions+base-paramvalue-prop-tags": "Znaczniki wersji.",
        "apihelp-query+revisions+base-param-limit": "Ograniczenie na liczbę wersji, które będą zwrócone.",
        "apihelp-query+search-description": "Wykonaj wyszukiwanie pełnotekstowe.",
        "apihelp-query+search-param-info": "Które metadane zwrócić.",
+       "apihelp-query+search-paramvalue-prop-size": "Dodaje rozmiar strony w bajtach.",
+       "apihelp-query+search-paramvalue-prop-wordcount": "Dodaje liczbę słów na stronie.",
+       "apihelp-query+search-paramvalue-prop-redirecttitle": "Dodaje tytuł pasującego przekierowania.",
        "apihelp-query+search-param-limit": "Łączna liczba stron do zwrócenia.",
        "apihelp-query+search-param-interwiki": "Dołączaj wyniki wyszukiwań interwiki w wyszukiwarce, jeśli możliwe.",
        "apihelp-query+search-example-simple": "Szukaj <kbd>meaning</kbd>.",
+       "apihelp-query+siteinfo-paramvalue-prop-general": "Ogólne informacje o systemie.",
        "apihelp-query+siteinfo-paramvalue-prop-namespaces": "Lista zarejestrowanych przestrzeni nazw i ich nazwy kanoniczne.",
        "apihelp-query+siteinfo-paramvalue-prop-namespacealiases": "Lista zarejestrowanych aliasów przestrzeni nazw.",
        "apihelp-query+siteinfo-example-simple": "Pobierz informacje o stronie.",
+       "apihelp-query+stashimageinfo-param-sessionkey": "Alias dla $1filekey, dla kompatybilności wstecznej.",
        "apihelp-query+tags-description": "Lista zmian tagów.",
        "apihelp-query+tags-param-limit": "Maksymalna liczba tagów do wyświetlenia.",
+       "apihelp-query+tags-paramvalue-prop-name": "Dodaje nazwę znacznika.",
+       "apihelp-query+tags-paramvalue-prop-displayname": "Dodaje komunikat systemowy dla znacznika.",
+       "apihelp-query+tags-paramvalue-prop-description": "Dodaje opis znacznika.",
+       "apihelp-query+tags-paramvalue-prop-active": "Czy znacznik jest nadal stosowany.",
        "apihelp-query+tags-example-simple": "Lista dostęnych tagów.",
+       "apihelp-query+templates-description": "Zwraca wszystkie strony osadzone w danych stronach.",
        "apihelp-query+templates-param-limit": "Ile szablonów zwrócić?",
+       "apihelp-query+transcludedin-paramvalue-prop-title": "Nazwa każdej strony.",
+       "apihelp-query+transcludedin-paramvalue-prop-redirect": "Oznacz, jeśli strona jest przekierowaniem.",
        "apihelp-query+transcludedin-param-limit": "Ile zwrócić.",
+       "apihelp-query+userinfo-description": "Pobierz informacje o aktualnym użytkowniku.",
+       "apihelp-query+userinfo-paramvalue-prop-registrationdate": "Dodaje datę rejestracji użytkownika.",
+       "apihelp-query+userinfo-example-simple": "Pobierz informacje o aktualnym użytkowniku.",
+       "apihelp-query+userinfo-example-data": "Pobierz dodatkowe informacje o aktualnym użytkowniku.",
+       "apihelp-query+users-description": "Pobierz informacje o liście użytkowników.",
+       "apihelp-query+users-param-prop": "Jakie informacje dołączyć:",
+       "apihelp-query+users-param-users": "Lista użytkowników, o których chcesz pobrać informacje.",
        "apihelp-query+watchlist-param-excludeuser": "Nie wyświetlaj zmian wykonanych przez tego użytkownika.",
        "apihelp-query+watchlist-paramvalue-prop-title": "Dodaje tytuł strony.",
        "apihelp-query+watchlist-paramvalue-prop-user": "Dodaje użytkownika, który wykonał edycję.",
        "apihelp-query+watchlist-paramvalue-prop-comment": "Dodaje komentarz do edycji.",
        "apihelp-query+watchlist-paramvalue-prop-timestamp": "Dodaje znacznik czasu edycji.",
        "apihelp-query+watchlist-paramvalue-prop-sizes": "Dodaje starą i nową długość strony.",
+       "apihelp-query+watchlist-paramvalue-type-external": "Zmiany zewnętrzne.",
        "apihelp-resetpassword-description": "Wyślij użytkownikowi e-mail do resetowania hasła.",
        "apihelp-resetpassword-example-email": "Wyślij e-mail do resetowania hasła do wszystkich użytkowników posiadających adres <kbd>user@example.com</kbd>.",
        "apihelp-stashedit-param-title": "Tytuł edytowanej strony.",
        "apihelp-stashedit-param-sectiontitle": "Tytuł nowej sekcji.",
        "apihelp-stashedit-param-text": "Zawartość strony.",
        "apihelp-tag-param-reason": "Powód zmiany.",
+       "apihelp-unblock-description": "Odblokuj użytkownika.",
        "apihelp-unblock-param-reason": "Powód odblokowania.",
        "apihelp-undelete-param-reason": "Powód przywracania.",
        "apihelp-upload-param-filename": "Nazwa pliku docelowego.",
+       "apihelp-upload-param-watch": "Obserwuj stronę.",
+       "apihelp-upload-param-ignorewarnings": "Ignoruj wszystkie ostrzeżenia.",
+       "apihelp-upload-param-file": "Zawartość pliku.",
        "apihelp-userrights-param-user": "Nazwa użytkownika.",
+       "apihelp-userrights-param-add": "Dodaj użytkownika do tych grup.",
        "apihelp-userrights-param-reason": "Powód zmiany.",
        "apihelp-json-description": "Dane wyjściowe w formacie JSON.",
        "apihelp-jsonfm-description": "Dane wyjściowe w formacie JSON (prawidłowo wyświetlane w HTML).",
        "api-help-permissions": "{{PLURAL:$2|Uprawnienie|Uprawnienia}}:",
        "api-help-permissions-granted-to": "{{PLURAL:$1|Przydzielone dla}}: $2",
        "api-help-right-apihighlimits": "Użyj wyższych limitów w zapytaniach API (dla zapytań powolnych: $1; dla zapytań szbkich: $2). Limity zapytań powolnych są także stosowane dla parametrów z podanymi wieloma wartościami.",
+       "api-help-open-in-apisandbox": "<small>[otwórz w brudnopisie]</small>",
        "api-credits-header": "Twórcy",
        "api-credits": "Deweloperzy API:\n* Roan Kattouw (główny programista wrzesień 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (twórca, główny programista wrzesień 2006–wrzesień 2007)\n* Brad Jorsch (główny programista 2013–obecnie)\n\nProsimy wysyłać komentarze, sugestie i pytania do mediawiki-api@lists.wikimedia.org\nlub zgłoś błąd na https://phabricator.wikimedia.org/."
 }
index 1f1ac4b..4e14f82 100644 (file)
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentação]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista de discussão]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Anúncios da API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Erros e solicitações]\n</div>\n<strong>Estado:</strong> Todas as funcionalidades mostradas nesta página deveriam estar a funcionar, mas a API ainda está em desenvolvimento ativo, e pode ser alterada a qualquer momento. Inscreva-se na [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ lista de discussão mediawiki-api-announce] para ser informado acerca das atualizações.\n\n<strong>Pedidos incorretos:</strong> Quando são enviados pedidos incorretos à API, um cabeçalho de HTTP será enviado com a chave \"MediaWiki-API-Error\" e, em seguida, tanto o valor do cabeçalho quanto o código de erro retornado serão definidos com o mesmo valor. Para mais informação, consulte [[mw:API:Errors_and_warnings|API: Errors and warnings]].\n\n<strong>Testes:</strong> Para facilitar os testes de pedidos à API, consulte [[Special:ApiSandbox]].",
        "apihelp-main-param-action": "Qual acção a executar.",
        "apihelp-main-param-format": "O formato de saída.",
-       "apihelp-main-param-origin": "Ao aceder à API usando um pedido AJAX entre domínios (CORS), coloque aqui o domínio de origem. Isto tem de ser incluído em todas as verificações prévias, e portanto tem de fazer parte da URI do pedido (e não do conteúdo do POST).\n\nPara pedidos autenticados, este valor tem de corresponder de forma exata a um dos cabeçalhos <code>Origin</code>, portanto tem de ser algo como <kbd>https://en.wikipedia.org</kbd> ou <kbd>https://meta.wikimedia.org</kbd>. Se este parâmetro não for igual ao cabeçalho <code>Origin</code>, será devolvida a resposta 403. Se este parâmetro for igual ao cabeçalho <code>Origin</code> e a origem for permitida (<i>white-listed</i>) os cabeçalhos <code>Access-Control-Allow-Origin</code> e <code>Access-Control-Allow-Credentials</code> serão preenchidos.\n\nPara pedidos não autenticados, especifique o valor <kbd>*</kbd>. Isto fará com que o cabeçalho <code>Access-Control-Allow-Origin</code>\nseja preenchido, mas <code>Access-Control-Allow-Credentials</code> terá o valor <code>false</code> e todos os dados específicos do utilizador serão restringidos.",
+       "apihelp-main-param-maxlag": "O atraso máximo pode ser usado quando o MediaWiki é instalado num <i>cluster</i> de bases de dados replicadas. Para impedir que as operações causem ainda mais atrasos de replicação do <i>site</i>, este parâmetro pode fazer o cliente aguardar até que o atraso de replicação seja inferior ao valor especificado. Caso o atraso atual exceda esse valor, o código de erro <samp>maxlag</samp> é devolvido com uma mensagem como <samp>À espera do servidor $host: $lag segundos de atraso</samp>.<br />Consulte [[mw:Manual:Maxlag_parameter|Manual: Parâmetro maxlag]] para mais informações.",
+       "apihelp-main-param-smaxage": "Definir no cabeçalho HTTP <code>s-maxage</code> de controlo da <i>cache</i> este número de segundos. Os erros nunca são armazenados na <i>cache</i>.",
+       "apihelp-main-param-maxage": "Definir no cabeçalho HTTP <code>max-age</code> de controlo da <i>cache</i> este número de segundos. Os erros nunca são armazenados na <i>cache</i>.",
+       "apihelp-main-param-assertuser": "Verificar que o utilizador atual é o utilizador nomeado.",
+       "apihelp-main-param-requestid": "Qualquer valor fornecido aqui será incluído na resposta. Pode ser usado para distinguir pedidos.",
+       "apihelp-main-param-servedby": "Incluir o nome do servidor que serviu o pedido nos resultados.",
+       "apihelp-main-param-curtimestamp": "Incluir a data e hora atuais no resultado.",
+       "apihelp-main-param-origin": "Ao aceder à API usando um pedido AJAX entre domínios (CORS), coloque aqui o domínio de origem. Isto tem de ser incluído em todas as verificações prévias e, portanto, tem de fazer parte do URI do pedido (e não do conteúdo do POST).\n\nPara pedidos autenticados, este valor tem de corresponder de forma exata a um dos cabeçalhos <code>Origin</code>, portanto tem de ser algo como <kbd>https://en.wikipedia.org</kbd> ou <kbd>https://meta.wikimedia.org</kbd>. Se este parâmetro não for igual ao cabeçalho <code>Origin</code>, será devolvida a resposta 403. Se este parâmetro for igual ao cabeçalho <code>Origin</code> e a origem for permitida (<i>white-listed</i>) os cabeçalhos <code>Access-Control-Allow-Origin</code> e <code>Access-Control-Allow-Credentials</code> serão preenchidos.\n\nPara pedidos não autenticados, especifique o valor <kbd>*</kbd>. Isto fará com que o cabeçalho <code>Access-Control-Allow-Origin</code>\nseja preenchido, mas <code>Access-Control-Allow-Credentials</code> terá o valor <code>false</code> e todos os dados específicos do utilizador serão restringidos.",
+       "apihelp-main-param-uselang": "Língua a usar nas traduções de mensagens. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> com <kbd>siprop=languages</kbd> devolve uma lista de códigos de língua, ou especifique <kbd>user</kbd> para usar a língua nas preferências do utilizador atual, ou especifique <kbd>content</kbd> para usar a língua de conteúdo desta wiki.",
        "apihelp-block-description": "Bloquear um utilizador.",
        "apihelp-block-param-user": "Nome de utilizador(a), endereço ou gama de IP que pretende bloquear.",
+       "apihelp-block-param-expiry": "O período de expiração. Pode ser relativo (p. ex. <kbd>5 meses</kbd> ou <kbd>2 semanas</kbd>) ou absoluto (p. ex. <kbd>2014-09-18T12:34:56Z</kbd>). Se definido como <kbd>infinite</kbd>, <kbd>indefinite</kbd> ou <kbd>never</kbd>, o bloqueio nunca expirará.",
        "apihelp-block-param-reason": "Motivo do bloqueio.",
+       "apihelp-block-param-anononly": "Bloquear só utilizadores anónimos (isto é, impedir edições anónimas a partir deste endereço IP)",
        "apihelp-block-param-nocreate": "Impedir criação de contas.",
+       "apihelp-block-param-autoblock": "Bloquear automaticamente o último endereço IP usado e quaisquer outros endereços IP subsequentes a partir do quais o utilizador tente iniciar uma sessão.",
+       "apihelp-block-param-noemail": "Impedir o utilizador de enviar correio eletrónico através da wiki. (Requer o privilégio <code>blockemail</code>).",
+       "apihelp-block-param-hidename": "Ocultar o nome do utilizador do registo de bloqueios. (Requer o privilégio <code>hideuser</code>).",
+       "apihelp-block-param-allowusertalk": "Permitir que o utilizador edite a sua própria página de discussão (depende de <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
+       "apihelp-block-param-reblock": "Se o utilizador já está bloqueado, sobrescrever o bloco existente.",
+       "apihelp-block-param-watchuser": "Vigiar as páginas de utilizador e de discussão, do utilizador ou do endereço IP.",
+       "apihelp-block-example-ip-simple": "Bloquear o endereço IP <kbd>192.0.2.5</kbd> por três dias com o motivo <kbd>First strike</kbd>.",
+       "apihelp-block-example-user-complex": "Bloquear o utilizador <kbd>Vandal</kbd> indefinidamente com o motivo <kbd>Vandalism</kbd>, e impedir a criação de nova conta e o envio de correio eletrónico.",
+       "apihelp-changeauthenticationdata-description": "Alterar os dados de autenticação do utilizador atual.",
+       "apihelp-checktoken-description": "Verificar a validade de uma chave a partir de <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
+       "apihelp-checktoken-param-type": "Tipo de chave que está a ser testado.",
+       "apihelp-checktoken-param-token": "Chave a testar.",
+       "apihelp-checktoken-param-maxtokenage": "Validade máxima da chave, em segundos.",
+       "apihelp-checktoken-example-simple": "Testar a validade de uma chave <kbd>csrf</kbd>.",
+       "apihelp-compare-param-fromtitle": "Primeiro título a comparar.",
+       "apihelp-compare-param-fromid": "Primeiro identificador de página a comparar.",
+       "apihelp-compare-param-fromrev": "Primeira revisão a comparar.",
+       "apihelp-compare-param-totitle": "Segundo título a comparar.",
+       "apihelp-compare-param-toid": "Segundo identificador de página a comparar.",
+       "apihelp-compare-param-torev": "Segunda revisão a comparar.",
+       "apihelp-compare-example-1": "Criar uma lista de diferenças entre as revisões 1 e 2.",
        "apihelp-createaccount-description": "Criar uma nova conta.",
        "apihelp-createaccount-param-name": "Nome de utilizador(a).",
+       "apihelp-createaccount-param-password": "Palavra-passe (ignorada se <var>$1mailpassword</var> está definida).",
+       "apihelp-createaccount-param-domain": "Domínio para autenticação externa (opcional).",
+       "apihelp-createaccount-param-token": "Chave de criação de conta obtida no primeiro pedido.",
        "apihelp-createaccount-param-email": "Endereço de correio eletrónico do utilizador (opcional).",
        "apihelp-createaccount-param-realname": "Nome verdadeiro do utilizador (opcional).",
+       "apihelp-createaccount-param-mailpassword": "Se qualquer valor estiver definido, uma palavra-passe aleatória será enviada por correio eletrónico ao utilizador.",
+       "apihelp-createaccount-param-reason": "Motivo opcional de criação da conta, para ser colocado nos registos.",
+       "apihelp-createaccount-param-language": "Código de língua a definir como padrão para o utilizador (opcional, por omissão é a língua de conteúdo).",
        "apihelp-delete-description": "Eliminar uma página.",
        "apihelp-delete-param-watch": "Adicionar a página à lista de vigiadas do utilizador atual.",
        "apihelp-delete-param-unwatch": "Remover a página da lista de vigiadas do utilizador atual.",
        "apihelp-edit-param-text": "Conteúdo da página.",
        "apihelp-edit-param-minor": "Edição menor.",
        "apihelp-edit-param-bot": "Marcar esta edição como robô.",
+       "apihelp-edit-param-token": "A chave deve ser sempre enviada como último parâmetro, ou pelo menos após o parâmetro $1text.",
        "apihelp-edit-example-edit": "Editar uma página",
        "apihelp-emailuser-description": "Enviar correio eletrónico a utilizador.",
        "apihelp-emailuser-param-subject": "Assunto.",
        "apihelp-emailuser-param-text": "Texto.",
        "apihelp-emailuser-param-ccme": "Enviar-me uma cópia desta mensagem de correio eletrónico.",
-       "apihelp-expandtemplates-description": "Expande todas as predefinições em notação wiki.",
+       "apihelp-expandtemplates-description": "Expande todas as predefinições incluídas na notação wiki.",
        "apihelp-expandtemplates-param-title": "Título da página.",
+       "apihelp-expandtemplates-paramvalue-prop-ttl": "O período máximo a partir do qual devem ser invalidados os armazenamentos na <i>cache</i> do resultado.",
        "apihelp-expandtemplates-example-simple": "Expandir a notação wiki <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>.",
        "apihelp-feedcontributions-param-feedformat": "O formato do feed.",
        "apihelp-feedcontributions-param-deletedonly": "Mostrar apenas contribuições eliminadas.",
        "apihelp-feedrecentchanges-example-simple": "Mostrar mudanças recentes",
        "apihelp-help-example-main": "Ajuda para o módulo principal",
        "apihelp-help-example-recursive": "Toda a ajuda numa página",
+       "apihelp-login-description": "Entrar e obter <i>cookies</i> de autenticação.\n\nEsta operação só deve ser usada em combinação com [[Special:BotPasswords]]; a sua utilização para entrar com a conta principal é obsoleta e poderá falhar sem aviso. Para entrar com a conta principal de forma segura, use <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
        "apihelp-login-param-name": "Nome de utilizador(a).",
        "apihelp-login-param-password": "Palavra-passe.",
        "apihelp-login-param-domain": "Domínio (opcional).",
+       "apihelp-login-param-token": "Chave de início de sessão obtida no primeiro pedido.",
+       "apihelp-login-example-gettoken": "Obter uma chave de início de sessão.",
        "apihelp-login-example-login": "Entrar",
        "apihelp-logout-description": "Terminar e limpar dados de sessão.",
        "apihelp-managetags-description": "Executar tarefas de gestão relacionadas com alteração de etiquetas.",
        "apihelp-patrol-description": "Patrulhar uma página ou edição.",
        "apihelp-patrol-example-rcid": "Patrulhar uma mudança recente",
        "apihelp-patrol-example-revid": "Patrulhar uma edição",
+       "apihelp-protect-param-expiry": "Datas e horas de expiração. Se só uma data e hora for definida, será usada para todas as proteções. Use <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd> ou <kbd>never</kbd>, para proteção sem expiração.",
        "apihelp-protect-example-protect": "Proteger uma página",
+       "apihelp-purge-description": "Limpar a <i>cache</i> para os títulos especificados.\n\nRequer um pedido POST se o utilizador não tiver iniciado uma sessão.",
+       "apihelp-query-description": "Obter dados do MediaWiki e acerca dele.\n\nTodas as modificações de dados têm primeiro de usar um pedido para adquirir uma chave, de forma a impedir ações abusivas de <i>sites</i> maliciosos.",
+       "apihelp-query-param-prop": "Que propriedades obter para as páginas consultadas.",
+       "apihelp-query-param-iwurl": "Obter, ou não, o URL completo se o título for um <i>link</i> interwikis.",
        "apihelp-query+allcategories-description": "Enumerar todas as categorias.",
+       "apihelp-query+allcategories-param-prop": "Que propriedades obter:",
        "apihelp-query+alldeletedrevisions-example-user": "Lista das últimas 50 contribuições eliminadas pelo utilizador <kbd>Example</kbd>.",
+       "apihelp-query+allmessages-param-prop": "Que propriedades obter.",
+       "apihelp-query+allmessages-example-ipb": "Mostrar mensagens que começam por <kbd>ipb-</kbd>.",
        "apihelp-query+allpages-param-prefix": "Pesquisa para todos os títulos de páginas que comecem com este valor.",
+       "apihelp-query+allpages-param-prexpiry": "Por qual tipo de expiração filtrar a página:\n;indefinite:Obter só páginas com um período de expiração indefinido.\n;definite:Obter só páginas com um período de expiração definido (específico).\n;all:Obter páginas com qualquer período de expiração.",
        "apihelp-query+allpages-example-generator": "Mostrar informação sobre 4 páginas que comecem com a letra <kbd>T</kbd>.",
+       "apihelp-query+mystashedfiles-param-prop": "Que propriedades obter para os ficheiros.",
        "apihelp-query+allusers-example-Y": "Lista de utilizadores que comecem com <kbd>Y</kbd>.",
+       "apihelp-query+authmanagerinfo-description": "Obter informação sobre o atual estado de autenticação.",
+       "apihelp-query+authmanagerinfo-param-requestsfor": "Obter informação sobre os pedidos de autenticação que são necessários para a operação de autenticação especificada.",
+       "apihelp-query+authmanagerinfo-example-securitysensitiveoperation": "Testar se a autenticação é suficiente para a operação <kbd>foo</kbd>.",
        "apihelp-query+backlinks-example-simple": "Mostrar ligações para <kbd>Main page</kbd>.",
        "apihelp-query+backlinks-example-generator": "Obter informações sobre as páginas com ligação para <kbd>Main page</kbd>.",
+       "apihelp-query+blocks-description": "Listar todos os utilizadores e endereços IP bloqueados.",
+       "apihelp-query+blocks-param-ip": "Obter todos os bloqueios aplicáveis a este endereço IP ou intervalo CIDR, incluindo bloqueios de intervalos. Não pode ser usado em conjunto com <var>$3users</var>. Não são aceites intervalos CIDR maiores que IPv4/$1 ou IPv6/$2.",
        "apihelp-query+blocks-param-limit": "O número máximo de bloqueios a listar.",
+       "apihelp-query+blocks-param-prop": "Que propriedades obter:",
+       "apihelp-query+blocks-paramvalue-prop-range": "Adiciona o intervalo de endereços IP afetado pelo bloqueio.",
+       "apihelp-query+blocks-param-show": "Mostrar só os bloqueios que preenchem estes critérios.\nPor exemplo, para ver só bloqueios indefinidos de endereços IP, defina <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+categorymembers-description": "Lista de todas as páginas numa categoria fornecida.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Modo|Modos}}: $2",
        "apihelp-query+deletedrevs-param-excludeuser": "Não listar edições deste utilizador.",
        "apihelp-query+deletedrevs-param-namespace": "Listar apenas as páginas neste domínio.",
+       "apihelp-query+deletedrevs-param-prop": "Que propriedades obter:\n;revid:Adiciona o identificador de revisão da revisão eliminada.\n;parentid:Adiciona o identificador de revisão da revisão anterior da página.\n;user:Adiciona o utilizador que fez a revisão.\n;userid:Adiciona o identificador do utilizador que fez a revisão.\n;comment:Adiciona o comentário da revisão.\n;parsedcomment:Adiciona o comentário da revisão após passagem pelo analisador sintático.\n;minor:Etiqueta a revisão como uma revisão menor.\n;len:Adiciona o comprimento (em bytes) da revisão.\n;sha1:Adiciona o SHA-1 (base 16) da revisão.\n;content:Adiciona o conteúdo da revisão.\n;token:<span class=\"apihelp-deprecated\">Obsoleto.</span> Fornece a chave da edição.\n;tags:Etiquetas da revisão.",
+       "apihelp-query+extlinks-description": "Devolve todos os URL externos (que não sejam interwikis) das páginas especificadas.",
+       "apihelp-query+extlinks-param-protocol": "Protocolo do URL. Se vazio e <var>$1query</var> está definido, o protocolo é <kbd>http</kbd>. Deixe isto e  <var>$1query</var> vazios para listar todos os <i>links</i> externos.",
+       "apihelp-query+extlinks-param-query": "Texto de pesquisa sem protocolo. Útil para verificar se uma determinada página contém um determinado URL externo.",
        "apihelp-query+extlinks-example-simple": "Obtenha uma lista de ligações externas na <kbd>Main Page</kbd>.",
+       "apihelp-query+exturlusage-description": "Enumerar as páginas que contêm um determinado URL.",
+       "apihelp-query+exturlusage-paramvalue-prop-url": "Adiciona o URL usado na página.",
+       "apihelp-query+exturlusage-param-protocol": "Protocolo do URL. Se vazio e <var>$1query</var> está definido, o protocolo é <kbd>http</kbd>. Deixe isto e  <var>$1query</var> vazios para listar todos os <i>links</i> externos.",
+       "apihelp-query+exturlusage-param-expandurl": "Expandir URL relativos a protocolos com o protocolo canónico.",
        "apihelp-query+filearchive-example-simple": "Mostrar lista de todos os ficheiros eliminados",
+       "apihelp-query+filerepoinfo-param-prop": "Propriedades do repositório a obter (em algumas wikis poderão haver mais disponíveis):\n;apiurl:URL para a API do repositório - útil para obter informação de imagens do servidor.\n;name:A chave para o repositório - usada, por exemplo, em <var>[[mw:Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> e nos valores de retorno de [[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:O nome legível da wiki repositório.\n;rooturl:URL de raiz para endereços de imagens.\n;local:Se o repositório é o local ou não.",
+       "apihelp-query+fileusage-param-prop": "Que propriedades obter:",
+       "apihelp-query+imageinfo-paramvalue-prop-url": "Devolve URL para o ficheiro e página de descrição.",
+       "apihelp-query+imageinfo-paramvalue-prop-thumbmime": "Adiciona o tipo MIME da miniatura (requer URL e o parâmetro $1urlwidth).",
+       "apihelp-query+imageinfo-param-urlwidth": "Se $2prop=url está definido, será devolvido um URL para uma imagem redimensionada com este comprimento.\nPor razões de desempenho, se esta opção for usada não serão devolvidas mais de $1 imagens redimensionadas.",
        "apihelp-query+info-description": "Obter informação básica da página.",
+       "apihelp-query+info-paramvalue-prop-url": "Fornece um URL completo, um URL de edição e o URL canónico, para cada página.",
+       "apihelp-query+info-param-token": "Em substituição, usar [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
+       "apihelp-query+iwbacklinks-param-prop": "Que propriedades obter:",
+       "apihelp-query+iwlinks-param-url": "Obter, ou não, o URL completo (não pode ser usado com $1prop).",
+       "apihelp-query+iwlinks-paramvalue-prop-url": "Adiciona o URL completo.",
+       "apihelp-query+langbacklinks-param-prop": "Que propriedades obter:",
+       "apihelp-query+langlinks-param-url": "Obter, ou não, o URL completo (não pode ser usado com $1prop).",
+       "apihelp-query+langlinks-paramvalue-prop-url": "Adiciona o URL completo.",
+       "apihelp-query+linkshere-param-prop": "Que propriedades obter:",
+       "apihelp-query+logevents-param-prop": "Que propriedades obter:",
+       "apihelp-query+protectedtitles-param-prop": "Que propriedades obter:",
+       "apihelp-query+recentchanges-paramvalue-prop-user": "Adiciona o utilizador responsável pela edição e marca se o utilizador é um endereço IP.",
+       "apihelp-query+recentchanges-param-token": "Em substituição, usar <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-query+recentchanges-example-simple": "Lista de mudanças recentes",
+       "apihelp-query+redirects-param-prop": "Que propriedades obter:",
+       "apihelp-query+revisions-param-token": "Que chaves obter para cada revisão.",
+       "apihelp-query+revisions+base-param-prop": "Que propriedades obter para cada revisão:",
+       "apihelp-query+search-param-prop": "Que propriedades devolver:",
        "apihelp-query+search-param-enablerewrites": "Ativar reescrita da consulta interna. Alguns motores de busca podem reescrever a consulta, substituindo-a por outra que consideram que dará melhores resultados, como acontece na correção de erros de ortografia.",
+       "apihelp-query+siteinfo-paramvalue-prop-dbrepllag": "Devolve o servidor da base de dados com o maior atraso de replicação.",
+       "apihelp-query+siteinfo-param-showalldb": "Listar todos os servidores da base de dados, não só aquele que tem maior atraso.",
+       "apihelp-query+siteinfo-example-replag": "Verificar o atraso de replicação atual.",
+       "apihelp-query+tags-param-prop": "Que propriedades obter:",
+       "apihelp-query+tokens-description": "Obtém chaves para operações de modificação de dados.",
+       "apihelp-query+tokens-param-type": "Tipos de chave a pedir.",
+       "apihelp-query+tokens-example-simple": "Obter uma chave csfr (padrão).",
+       "apihelp-query+tokens-example-types": "Obter uma chave de vigilância e uma chave de patrulha.",
+       "apihelp-query+transcludedin-param-prop": "Que propriedades obter:",
+       "apihelp-query+usercontribs-example-ipprefix": "Mostrar as contribuições de todos os endereços IP com o prefixo <kbd>192.0.2.</kbd>.",
+       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">Obsoleto.</span> Obter uma chave para alterar as preferências do utilizador atual.",
+       "apihelp-query+userinfo-paramvalue-prop-email": "Adicionar o correio eletrónico do utilizador e a data de autenticação do correio eletrónico.",
+       "apihelp-query+users-param-token": "Em substituição, usar <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
        "apihelp-query+watchlist-param-owner": "Usado com $1token para aceder à lista de páginas vigiadas de outro utilizador.",
        "apihelp-query+watchlist-param-token": "Uma chave de segurança (disponível nas [[Special:Preferences#mw-prefsection-watchlist|preferências]] do utilizador) para permitir acesso à lista de páginas vigiadas de outro utilizador.",
        "apihelp-query+watchlistraw-param-owner": "Usado com $1token para aceder à lista de páginas vigiadas de outro utilizador.",
        "apihelp-query+watchlistraw-param-token": "Uma chave de segurança (disponível nas [[Special:Preferences#mw-prefsection-watchlist|preferências]] do utilizador) para permitir acesso à lista de páginas vigiadas de outro utilizador.",
+       "apihelp-removeauthenticationdata-description": "Remover os dados de autenticação do utilizador atual.",
+       "apihelp-rollback-example-summary": "Reverter as últimas edições da página <kbd>Main Page</kbd> pelo utilizador IP <kbd>192.0.2.5</kbd> com o resumo <kbd>Reverting vandalism</kbd>, e marcar essas edições e a reversão como edições de robôs.",
+       "apihelp-stashedit-description": "Preparar uma edição na <i>cache</i> partilhada.\n\nIsto destina-se a ser usado via AJAX a partir do formulário de edição, para melhorar o desempenho da gravação da página.",
+       "apihelp-tokens-description": "Obter chaves para operações de modificação de dados.\n\nEste módulo é obsoleto e foi substituído por [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
+       "apihelp-tokens-param-type": "Tipos de chave a pedir.",
+       "apihelp-tokens-example-edit": "Obter uma chave de edição (padrão).",
+       "apihelp-tokens-example-emailmove": "Obter uma chave de correio eletrónico e uma chave de movimentação.",
        "apihelp-unblock-description": "Desbloquear um utilizador.",
+       "apihelp-unblock-param-user": "Nome de utilizador, endereço IP ou gama de endereços IP a desbloquear. Não pode ser usado em conjunto com <var>$1id</var>.",
        "apihelp-unblock-param-reason": "Motivo para o desbloqueio.",
        "apihelp-undelete-param-title": "Título da página a restaurar.",
        "apihelp-upload-param-watch": "Vigiar página.",
        "apihelp-upload-param-ignorewarnings": "Ignorar todos os avisos.",
+       "apihelp-upload-param-url": "URL de onde obter o ficheiro.",
+       "apihelp-upload-example-url": "Carregar de um URL.",
        "apihelp-userrights-param-user": "Nome de utilizador(a).",
        "apihelp-userrights-param-userid": "ID de utilizador.",
        "apihelp-userrights-param-add": "Adicionar o utilizador a estes grupos.",
        "api-help-param-deprecated": "Obsoleto.",
        "api-help-param-required": "Este parâmetro é obrigatório.",
        "api-help-datatypes-header": "Tipo de dados",
-       "api-help-datatypes": "Alguns tipos de parâmetro na API necessitam de mais explicações:\n;boolean\n:Os parâmetros booleanos funcionam como as caixas de seleção HTML: se o parâmetro for especificado, independentemente do valor, é considerado verdadeiro. Para um valor falso, omitir o parâmetro completo.\n;timestamp\n:Timestamps podem ser especificados em vários formatos. Formato de data e hora ISO 8601 é recomendado. Todos os horários estão em UTC, qualquer inclusão de fuso horário é ignorado.\n:* Data e hora ISO 8601, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (pontuação e <kbd>Z</kbd> são opcionais)\n:* Data e hora ISO 8601 com segundos fracionários (ignorado), <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>.<var>00001</var>Z</kbd> (traços, dois pontos e <kbd>Z</kbd> são opcionais)\n:* Formato do MediaWiki, <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* Formato numérico genérico, <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (fuso horário opcional do <kbd>GMT</kbd>, <kbd>+<var>##</var></kbd>, or <kbd>-<var>##</var></kbd> são ignorados)\n:* Formato EXIF, <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:*Formato RFC 2822 (o fuso horário pode ser omitido), <kbd><var>Mon</var>, <var>15</var> <var>Jan</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato RFC 850 (o fuso horário pode ser omitido), <kbd><var>Monday</var>, <var>15</var>-<var>Jan</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato C ctime, <kbd><var>Mon</var> <var>Jan</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>2001</var></kbd>\n:* Segundos desde 1970-01-01T00:00:00Z como um inteiro de 1 a 13 dígitos (excluindo <kbd>0</kbd>)\n:* A string <kbd>now</kbd>",
+       "api-help-datatypes": "O <i>input</i> para o MediaWiki de ser UTF-8 normalizado de acordo com a norma NFC. O MediaWiki pode converter outros tipos de entrada, mas isto pode causar que algumas operações (tais como [[Special:ApiHelp/edit|edições]] com verificações MD5) falhem.\n\nAlguns tipos de parâmetro nos pedidos à API necessitam de mais explicações:\n;boolean\n:Os parâmetros booleanos funcionam como as caixas de seleção HTML: se o parâmetro for especificado, independentemente do valor, é considerado verdadeiro. Para um valor falso, omitir o parâmetro completo.\n;timestamp\n:As datas e horas podem ser especificados em vários formatos. O formato de data e hora ISO 8601 é recomendado. Todas as horas estão em UTC, qualquer inclusão de fuso horário é ignorada.\n:* Data e hora ISO 8601, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (pontuação e <kbd>Z</kbd> são opcionais)\n:* Data e hora ISO 8601 com segundos fracionários (ignorado), <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>.<var>00001</var>Z</kbd> (traços, dois pontos e <kbd>Z</kbd> são opcionais)\n:* Formato do MediaWiki, <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* Formato numérico genérico, <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (fuso horário opcional de <kbd>GMT</kbd>, <kbd>+<var>##</var></kbd>, ou <kbd>-<var>##</var></kbd> são ignorados)\n:* Formato EXIF, <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:*Formato RFC 2822 (o fuso horário pode ser omitido), <kbd><var>Mon</var>, <var>15</var> <var>Jan</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato RFC 850 (o fuso horário pode ser omitido), <kbd><var>Monday</var>, <var>15</var>-<var>Jan</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato C ctime, <kbd><var>Mon</var> <var>Jan</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>2001</var></kbd>\n:* Segundos desde 1970-01-01T00:00:00Z como um inteiro de 1 a 13 dígitos (excluindo <kbd>0</kbd>)\n:* O texto <kbd>now</kbd>\n;separador alternativo de valores múltiplos\n:Os parâmetros que aceitam vários valores são normalmente fornecidos com os valores separados por uma barra vertical (<i>pipe</i>), por exemplo <kbd>parâmetro=valor1|valor2</kbd> ou <kbd>parâmetro=valor1%7Cvalor2</kbd>. Se um valor contém a barra vertical, use U+001F (Separador de Unidades) como separador ''e'' prefixe o valor com U+001F, isto é, <kbd>parâmetro=%1Fvalor1%1Fvalor2</kbd>.",
        "api-help-param-type-limit": "Tipo: inteiro ou <kbd>max</kbd>",
        "api-help-param-type-boolean": "Tipo: boolean ([[Special:ApiHelp/main#main/datatypes|detalhes]])",
        "api-help-param-type-user": "Tipo: {{PLURAL:$1|1=nome de utilizador|2=lista de nomes de utilizadores}}",
        "api-help-param-multi-max": "O número máximo de valores é {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} para robôs).",
        "api-help-param-default": "Padrão: $1",
        "api-help-param-default-empty": "Padrão: <span class=\"apihelp-empty\">(vazio)</span>",
+       "api-help-param-token": "Uma chave \"$1\" obtida de [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]",
+       "api-help-param-token-webui": "Para efeitos de compatibilidade, a chave usada na interface <i>web</i> também é aceite.",
        "api-help-param-no-description": "<span class=\"apihelp-empty\">(sem descrição)</span>",
        "api-help-examples": "{{PLURAL:$1|Exemplo|Exemplos}}:",
        "api-help-permissions": "{{PLURAL:$1|Permissão|Permissiões}}:",
        "api-help-permissions-granted-to": "{{PLURAL:$1|Concedida a|Concedidas a}}: $2",
        "api-help-open-in-apisandbox": "<small>[abrir na página de testes]</small>",
+       "api-help-authmanager-general-usage": "O procedimento geral para usar este módulo é:\n# Obtenha os campos disponíveis em <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> com <kbd>amirequestsfor=$4</kbd> e uma chave <kbd>$5</kbd> de <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.\n# Apresente os campos ao utilizador e obtenha os dados fornecidos por este.\n# Publique-os para este módulo, fornecendo <var>$1returnurl</var> e quaisquer campos relevantes.\n# Verifique o <samp>status</samp> na resposta.\n#* Se recebeu <samp>PASS</samp> ou <samp>FAIL</samp>, terminou. A operação terá tido sucesso ou falhado.\n#* Se recebeu <samp>UI</samp>, apresente os novos campos ao utilizador e obtenha os dados fornecidos por este. Depois publique-os para este módulo com <var>$1continue</var> e os campos relevantes preenchidos, e repita o passo 4.\n#* Se recebeu <samp>REDIRECT</samp>, encaminhe o utilizador para <samp>redirecttarget</samp> e aguarde o retorno para o URL <var>$1returnurl</var>. Depois publique para este módulo com <var>$1continue</var> e quaisquer campos que tenham sido passados ao URL de retorno, e repita o passo 4.\n#* Se recebeu <samp>RESTART</samp>, isso significa que a autenticação funcionou mas não temos uma conta de utilizador associada. Pode tratá-lo como <samp>UI</samp> ou como <samp>FAIL</samp>.",
+       "api-help-authmanagerhelper-request": "Usar este pedido de autenticação, com o <samp>id</samp> devolvido por <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> com <kbd>amirequestsfor=$1</kbd>.",
+       "api-help-authmanagerhelper-mergerequestfields": "Combinar a informação de todos os pedidos de autenticação numa única matriz.",
+       "api-help-authmanagerhelper-returnurl": "O URL de retorno para fluxos de autenticação por terceiros tem de ser absoluto. É obrigatório fornecer este URL ou <var>$1continue</var>.\n\nTipicamente, após receber uma resposta <samp>REDIRECT</samp>, abrirá um <i>browser</i> ou uma <i>web view</i> para o URL <samp>redirecttarget</samp> especificado, para dar lugar ao fluxo de autenticação por terceiros. Quando o fluxo terminar, a terceira entidade enviará o <i>browser</i> ou a <i>web view</i> para este URL. Deve extrair do URL quaisquer parâmetros de consulta ou de POST, e passá-los como um pedido <var>$1continue</var> a este módulo da API.",
+       "api-help-authmanagerhelper-additional-params": "Este módulo aceita parâmetros adicionais, dependendo dos pedidos de autenticação disponíveis. Use <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> com <kbd>amirequestsfor=$1</kbd> (ou uma resposta anterior deste módulo, se aplicável) para determinar os pedidos disponíveis e os campos que estes utilizam.",
        "api-credits-header": "Créditos",
        "api-credits": "Programadores API:\n* Roan Kattouw (programador principal Set 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (criador, programador-líder Set 2006–Set 2007)\n* Brad Jorsch (programador-líder 2013–presente)\n\nPor favor, envie os seus comentários, sugestões e perguntas para mediawiki-api@lists.wikimedia.org ou reporte um erro técnico em https://phabricator.wikimedia.org/."
 }
index bef2409..105639a 100644 (file)
        "apihelp-options-description": "更改当前用户的偏好设置。\n\n只有注册在核心或者已安装扩展中的选项,或者具有<code>userjs-</code>键值前缀(旨在被用户脚本使用)的选项可被设置。",
        "apihelp-options-param-reset": "将参数设置重置为网站默认值。",
        "apihelp-options-param-resetkinds": "当<var>$1reset</var>选项被设置时,要重置的选项类型列表。",
-       "apihelp-options-param-change": "æ\9b´æ\94¹å\88\97表ï¼\8c以name=valueæ ¼å¼\8få\8c\96ï¼\88ä¾\8bå¦\82skin=vectorï¼\89ã\80\82å\80¼ä¸\8dè\83½å\8c\85å\90«ç®¡é\81\93å­\97符ã\80\82å¦\82æ\9e\9c没æ\8f\90ä¾\9bå\80¼ï¼\88ç\94\9aè\87³æ²¡æ\9c\89ç­\89å\8f·ï¼\89ï¼\8cä¾\8bå¦\82optionname|otheroption|...ï¼\8cé\80\89项å°\86é\87\8d置为é»\98认å\80¼。",
+       "apihelp-options-param-change": "æ\9b´æ\94¹å\88\97表ï¼\8c以name=valueæ ¼å¼\8få\8c\96ï¼\88ä¾\8bå¦\82skin=vectorï¼\89ã\80\82å¦\82æ\9e\9c没æ\8f\90ä¾\9bå\80¼ï¼\88ç\94\9aè\87³æ²¡æ\9c\89ç­\89å\8f·ï¼\89ï¼\8cä¾\8bå¦\82optionname|otheroption|...ï¼\8cé\80\89项å°\86é\87\8d置为é»\98认å\80¼ã\80\82å¦\82æ\9e\9cä»»ä½\95é\80\9aè¿\87ç\9a\84å\80¼å\8c\85å\90«ç®¡é\81\93å­\97符ï¼\88<kbd>|</kbd>ï¼\89ï¼\8c请æ\94¹ç\94¨[[Special:ApiHelp/main#main/datatypes|æ\9b¿ä»£å¤\9aå\80¼å\88\86é\9a\94符]]以正确æ\93\8dä½\9c。",
        "apihelp-options-param-optionname": "应设置为由<var>$1optionvalue</var>提供值的选项名称。",
-       "apihelp-options-param-optionvalue": "用于由<var>$1optionname</var>指定的选项的值,可以包含管道字符。",
+       "apihelp-options-param-optionvalue": "用于由<var>$1optionname</var>指定的选项的值。",
        "apihelp-options-example-reset": "重置所有用户设置。",
        "apihelp-options-example-change": "更改<kbd>skin</kbd>和<kbd>hideminor</kbd>设置。",
        "apihelp-options-example-complex": "重置所有设置,然后设置<kbd>skin</kbd>和<kbd>nickname</kbd>。",
        "api-help-right-apihighlimits": "在API查询中使用更高的上限(慢查询:$1;快查询:$2)。慢查询的限制也适用于多值参数。",
        "api-help-open-in-apisandbox": "<small>[在沙盒中打开]</small>",
        "api-help-authmanager-general-usage": "使用此模块的一般程序是:\n# 通过<kbd>amirequestsfor=$4</kbd>取得来自<kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd>的可用字段,和来自<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>的<kbd>$5</kbd>令牌。\n# 向用户显示字段,并获得其提交内容。\n# 发送至此模块,提供<var>$1returnurl</var>及任何相关字段。\n# 在响应中检查<samp>status</samp>。\n#* 如果您收到了<samp>PASS</samp>或<samp>FAIL</samp>,您已经完成。操作要么成功,要么不成功。\n#* 如果您收到了<samp>UI</samp>,present the new fields to the user and obtain their submission. Then post to this module with <var>$1continue</var> and the relevant fields set, and repeat step 4.\n#* 如果您收到了<samp>REDIRECT</samp>,direct the user to the <samp>redirecttarget</samp> and wait for the return to <var>$1returnurl</var>. Then post to this module with <var>$1continue</var> and any fields passed to the return URL, and repeat step 4.\n#* 如果您收到了<samp>RESTART</samp>,that means the authentication worked but we don't have a linked user account. You might treat this as <samp>UI</samp> or as <samp>FAIL</samp>.",
+       "api-help-authmanagerhelper-requests": "只使用这些身份验证请求,通过返回自<kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd>的<samp>id</samp>与<kbd>amirequestsfor=$1</kbd>,或来自此模块之前的响应。",
        "api-help-authmanagerhelper-request": "使用此身份验证请求,通过返回自<kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd>的<samp>id</samp>与<kbd>amirequestsfor=$1</kbd>。",
        "api-help-authmanagerhelper-messageformat": "返回消息使用的格式。",
        "api-help-authmanagerhelper-mergerequestfields": "合并用于所有身份验证请求的字段信息至一个数组中。",
index feef87d..4d6c68c 100644 (file)
@@ -67,7 +67,7 @@ class HashConfig implements Config, MutableConfig {
        }
 
        /**
-        * @see Config::set
+        * @see MutableConfig::set
         */
        public function set( $name, $value ) {
                $this->settings[$name] = $value;
index 9df9360..d3a14fa 100644 (file)
@@ -2234,12 +2234,7 @@ class LocalFileDeleteBatch {
 
                // Bitfields to further suppress the content
                if ( $this->suppress ) {
-                       $bitfield = 0;
-                       // This should be 15...
-                       $bitfield |= Revision::DELETED_TEXT;
-                       $bitfield |= Revision::DELETED_COMMENT;
-                       $bitfield |= Revision::DELETED_USER;
-                       $bitfield |= Revision::DELETED_RESTRICTED;
+                       $bitfield = Revision::SUPPRESSED_ALL;
                } else {
                        $bitfield = 'oi_deleted';
                }
@@ -2259,7 +2254,6 @@ class LocalFileDeleteBatch {
                                        'fa_deleted_timestamp' => $encTimestamp,
                                        'fa_deleted_reason' => $encReason,
                                        'fa_deleted' => $this->suppress ? $bitfield : 0,
-
                                        'fa_name' => 'img_name',
                                        'fa_archive_name' => 'NULL',
                                        'fa_size' => 'img_size',
index 1f4d99e..cadb502 100644 (file)
@@ -147,6 +147,7 @@ class HTMLForm extends ContextSource {
                'namespaceselect' => 'HTMLSelectNamespace',
                'namespaceselectwithbutton' => 'HTMLSelectNamespaceWithButton',
                'tagfilter' => 'HTMLTagFilter',
+               'sizefilter' => 'HTMLSizeFilterField',
                'submit' => 'HTMLSubmitField',
                'hidden' => 'HTMLHiddenField',
                'edittools' => 'HTMLEditTools',
diff --git a/includes/htmlform/fields/HTMLSizeFilterField.php b/includes/htmlform/fields/HTMLSizeFilterField.php
new file mode 100644 (file)
index 0000000..c767d8f
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * A size filter field for use on query-type special pages. It looks a bit like:
+ *
+ *    (o) Min size  ( ) Max size:  [       ] bytes
+ *
+ * Minimum size limits are represented using a positive integer, while maximum
+ * size limits are represented using a negative integer.
+ */
+class HTMLSizeFilterField extends HTMLIntField {
+       function getSize() {
+               return isset( $this->mParams['size'] ) ? $this->mParams['size'] : 9;
+       }
+
+       function getInputHTML( $value ) {
+               $attribs = [];
+               if ( !empty( $this->mParams['disabled'] ) ) {
+                       $attribs['disabled'] = 'disabled';
+               }
+
+               $html = Xml::radioLabel(
+                       $this->msg( 'minimum-size' )->text(),
+                       $this->mName . '-mode',
+                       'min',
+                       $this->mID . '-mode-min',
+                       $value >= 0,
+                       $attribs
+               );
+               $html .= '&#160;' . Xml::radioLabel(
+                       $this->msg( 'maximum-size' )->text(),
+                       $this->mName . '-mode',
+                       'max',
+                       $this->mID . '-mode-max',
+                       $value < 0,
+                       $attribs
+               );
+               $html .= '&#160;' . parent::getInputHTML( $value ? abs( $value ) : '' );
+               $html .= '&#160;' . $this->msg( 'pagesize' )->parse();
+
+               return $html;
+       }
+
+       // No OOUI yet
+       function getInputOOUI( $value ) {
+               return false;
+       }
+
+       /**
+        * @param WebRequest $request
+        *
+        * @return string
+        */
+       function loadDataFromRequest( $request ) {
+               $size = $request->getInt( $this->mName );
+               if ( !$size ) {
+                       return $this->getDefault();
+               }
+               $size = abs( $size );
+
+               // negative numbers represent "max", positive numbers represent "min"
+               if ( $request->getVal( $this->mName . '-mode' ) === 'max' ) {
+                       return -$size;
+               } else {
+                       return $size;
+               }
+       }
+
+       protected function needsLabel() {
+               return false;
+       }
+}
index 5bd79a4..32794b4 100644 (file)
@@ -55,7 +55,7 @@
        "config-page-existingwiki": "Wiki existente",
        "config-help-restart": "Deseja limpar todos os dados gravados que introduziu e reiniciar o processo de instalação?",
        "config-restart": "Sim, reiniciar",
-       "config-welcome": "=== Verificações do ambiente ===\nSão realizadas verificações básicas para determinar se este ambiente é apropriado para instalação do MediaWiki.\nSe necessitar de pedir ajuda durante a instalação, deve fornecer os resultados destas verificações.",
+       "config-welcome": "=== Verificações do ambiente ===\nSerão agora realizadas verificações básicas para determinar se este ambiente é apropriado para instalação do MediaWiki.\nLembre-se de fornecer esta informação se necessitar de pedir ajuda para concluir a instalação.",
        "config-copyright": "=== Direitos de autor e Condições de uso ===\n\n$1\n\nEste programa é software livre; pode redistribuí-lo e/ou modificá-lo nos termos da licença GNU General Public License, tal como publicada pela Free Software Foundation; tanto a versão 2 da Licença, como (por opção sua) qualquer versão posterior.\n\nEste programa é distribuído na esperança de que seja útil, mas '''sem qualquer garantia'''; inclusive, sem a garantia implícita da '''possibilidade de ser comercializado''' ou de '''adequação para qualquer finalidade específica'''.\nConsulte a licença GNU General Public License para mais detalhes.\n\nEm conjunto com este programa deve ter recebido <doclink href=Copying>uma cópia da licença GNU General Public License</doclink>; se não a recebeu, peça-a por escrito a Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ou [http://www.gnu.org/copyleft/gpl.html leia-a na internet].",
        "config-sidebar": "* [https://www.mediawiki.org/wiki/MediaWiki/pt Página principal do MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents/pt Ajuda]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents/pt Manual técnico]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAQ]\n----\n* <doclink href=Readme>Leia-me</doclink>\n* <doclink href=ReleaseNotes>Notas de lançamento</doclink>\n* <doclink href=Copying>Cópia</doclink>\n* <doclink href=UpgradeDoc>Atualização</doclink>",
        "config-env-good": "O ambiente foi verificado.\nPode instalar o MediaWiki.",
        "config-imagemagick": "Foi encontrado o ImageMagick: <code>$1</code>.\nSe possibilitar uploads, a miniaturização de imagens será ativada.",
        "config-gd": "Foi encontrada a biblioteca gráfica GD.\nSe possibilitar uploads, a miniaturização de imagens será ativada.",
        "config-no-scaling": "Não foi encontrada a biblioteca gráfica GD nem o ImageMagick.\nA miniaturização de imagens será desativada.",
-       "config-no-uri": "'''Erro:''' Não foi possível determinar a URI atual.\nA instalação foi abortada.",
+       "config-no-uri": "<strong>Erro:</strong> Não foi possível determinar o URI atual.\nA instalação foi abortada.",
        "config-no-cli-uri": "'''Aviso''':  Não foi especificado um <code>--scriptpath</code>; por omissão, será usado: <code>$1</code>.",
        "config-using-server": "Será usado o nome do servidor \"<nowiki>$1</nowiki>\".",
-       "config-using-uri": "Será usada a URL do servidor \"<nowiki>$1$2</nowiki>\".",
+       "config-using-uri": "Será usado o URL do servidor \"<nowiki>$1$2</nowiki>\".",
        "config-uploads-not-safe": "'''Aviso:''' O diretório por omissão para carregamentos <code>$1</code>, está vulnerável à execução arbitrária de scripts.\nEmbora o MediaWiki verifique a existência de ameaças de segurança em todos os ficheiros enviados, é altamente recomendado que [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security vede esta vulnerabilidade de segurança] antes de possibilitar uploads.",
        "config-no-cli-uploads-check": "'''Aviso:''' O diretório por omissão para carregamentos, <code>$1</code>, não é verificado para determinar se é vulnerável à execução de código arbitrário durante a instalação por CLI (\"Command-line Interface\").",
        "config-brokenlibxml": "O seu sistema tem uma combinação de versões do PHP e do libxml2 conhecida por ser problemática, podendo causar corrupção de dados no MediaWiki e noutras aplicações da internet.\nAtualize para a versão 2.7.3 ou posterior do libxml2 ([https://bugs.php.net/bug.php?id=45996 incidência reportada no PHP]).\nInstalação cancelada.",
index 2c5b8ce..f434356 100644 (file)
@@ -52,7 +52,7 @@
        "config-type-oracle": "Oracle",
        "config-type-mssql": "Microsoft SQL Server",
        "config-header-mysql": "MySQL подешавања",
-       "config-header-mssql": "Поставке Microsoft SQL Server-а",
+       "config-header-mssql": "Подешавања Microsoft SQL Server-а",
        "config-invalid-db-type": "Неважећи тип базе података.",
        "config-mssql-old": "Потребан је Microsoft SQL Server $1 или новији. Ви имате $2.",
        "config-mysql-innodb": "InnoDB",
index 20c2877..e0c5408 100644 (file)
@@ -1,7 +1,8 @@
 {
        "@metadata": {
                "authors": [
-                       "Milicevic01"
+                       "Milicevic01",
+                       "Сербијана"
                ]
        },
        "config-session-error": "Greška pri započinjanju sesije: $1",
        "config-type-postgres": "PostgreSQL",
        "config-type-sqlite": "SQLite",
        "config-type-oracle": "Oracle",
+       "config-header-mssql": "Podešavanja Microsoft SQL Server-a",
        "config-site-name": "Ime vikija:",
+       "config-admin-email": "Imejl adresa:",
        "config-license-cc-0": "Creative Commons Zero (javno vlasništvo)",
+       "config-email-settings": "Podešavanja imejla",
        "config-skins": "Teme",
        "mainpagetext": "<strong>Medijaviki je uspešno instaliran.</strong>",
        "mainpagedocfooter": "Molimo vidite [https://meta.wikimedia.org/wiki/Help:Contents korisnički vodič] za informacije o upotrebi viki softvera.\n\n== Za početak ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Pomoć u vezi sa podešavanjima]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Najčešće postavljena pitanja]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mejling lista o izdanjima MedijaVikija]"
index 016b9cd..b72557a 100644 (file)
@@ -1087,7 +1087,7 @@ __INDEXATTR__;
                if ( !is_array( $types ) ) {
                        $types = [ $types ];
                }
-               if ( !$schema ) {
+               if ( $schema === false ) {
                        $schema = $this->getCoreSchema();
                }
                $table = $this->realTableName( $table, 'raw' );
@@ -1175,8 +1175,12 @@ SQL;
         * @return bool
         */
        function schemaExists( $schema ) {
-               $exists = $this->selectField( '"pg_catalog"."pg_namespace"', 1,
-                       [ 'nspname' => $schema ], __METHOD__ );
+               if ( !strlen( $schema ) ) {
+                       return false; // short-circuit
+               }
+
+               $exists = $this->selectField(
+                       '"pg_catalog"."pg_namespace"', 1, [ 'nspname' => $schema ], __METHOD__ );
 
                return (bool)$exists;
        }
@@ -1236,7 +1240,6 @@ SQL;
 
        function strencode( $s ) {
                // Should not be called by us
-
                return pg_escape_string( $this->getBindingHandle(), $s );
        }
 
index 31bb26b..46f7a5b 100644 (file)
@@ -31,20 +31,18 @@ class DatabaseSqlite extends Database {
 
        /** @var string Directory */
        protected $dbDir;
-
        /** @var string File name for SQLite database file */
        protected $dbPath;
-
        /** @var string Transaction mode */
        protected $trxMode;
 
        /** @var int The number of rows affected as an integer */
        protected $mAffectedRows;
-
        /** @var resource */
        protected $mLastResult;
 
        /** @var $mConn PDO */
+       protected $mConn;
 
        /** @var FSLockManager (hopefully on the same server as the DB) */
        protected $lockMgr;
@@ -144,7 +142,7 @@ class DatabaseSqlite extends Database {
         * @param string $dbName
         *
         * @throws DBConnectionError
-        * @return PDO
+        * @return bool
         */
        function open( $server, $user, $pass, $dbName ) {
                $this->close();
@@ -155,7 +153,7 @@ class DatabaseSqlite extends Database {
                }
                $this->openFile( $fileName );
 
-               return $this->mConn;
+               return (bool)$this->mConn;
        }
 
        /**
@@ -493,15 +491,12 @@ class DatabaseSqlite extends Database {
         * @param string $table
         * @param string $index
         * @param string $fname
-        * @return array
+        * @return array|false
         */
        function indexInfo( $table, $index, $fname = __METHOD__ ) {
                $sql = 'PRAGMA index_info(' . $this->addQuotes( $this->indexName( $index ) ) . ')';
                $res = $this->query( $sql, $fname );
-               if ( !$res ) {
-                       return null;
-               }
-               if ( $res->numRows() == 0 ) {
+               if ( !$res || $res->numRows() == 0 ) {
                        return false;
                }
                $info = [];
index 9c9f18d..ff1bd43 100644 (file)
@@ -86,28 +86,25 @@ interface ILBFactory {
 
        /**
         * Create a new load balancer for external storage. The resulting object will be
-        * untracked, not chronology-protected, and the caller is responsible for
-        * cleaning it up.
+        * untracked, not chronology-protected, and the caller is responsible for cleaning it up.
         *
         * This method is for only advanced usage and callers should almost always use
         * getExternalLB() instead. This method can be useful when a table is used as a
         * key/value store. In that cases, one might want to query it in autocommit mode
         * (DBO_TRX off) but still use DBO_TRX transaction rounds on other tables.
         *
-        * @param string $cluster External storage cluster, or false for core
-        * @param bool|string $domain Domain ID, or false for the current domain
+        * @param string $cluster External storage cluster name
         * @return ILoadBalancer
         */
-       public function newExternalLB( $cluster, $domain = false );
+       public function newExternalLB( $cluster );
 
        /**
         * Get a cached (tracked) load balancer for external storage
         *
-        * @param string $cluster External storage cluster, or false for core
-        * @param bool|string $domain Domain ID, or false for the current domain
+        * @param string $cluster External storage cluster name
         * @return ILoadBalancer
         */
-       public function getExternalLB( $cluster, $domain = false );
+       public function getExternalLB( $cluster );
 
        /**
         * Execute a function for each tracked load balancer
index f3a3275..d21289b 100644 (file)
@@ -153,18 +153,16 @@ abstract class LBFactory implements ILBFactory {
        /**
         * @see ILBFactory::newExternalLB()
         * @param string $cluster
-        * @param bool $domain
         * @return LoadBalancer
         */
-       abstract public function newExternalLB( $cluster, $domain = false );
+       abstract public function newExternalLB( $cluster );
 
        /**
         * @see ILBFactory::getExternalLB()
         * @param string $cluster
-        * @param bool $domain
         * @return LoadBalancer
         */
-       abstract public function getExternalLB( $cluster, $domain = false );
+       abstract public function getExternalLB( $cluster );
 
        /**
         * Call a method of each tracked load balancer
index 83ca650..a7cc16c 100644 (file)
@@ -255,13 +255,7 @@ class LBFactoryMulti extends LBFactory {
                return $this->mainLBs[$section];
        }
 
-       /**
-        * @param string $cluster
-        * @param DatabaseDomain|string|bool $domain Domain ID, or false for the current domain
-        * @throws InvalidArgumentException
-        * @return LoadBalancer
-        */
-       public function newExternalLB( $cluster, $domain = false ) {
+       public function newExternalLB( $cluster ) {
                if ( !isset( $this->externalLoads[$cluster] ) ) {
                        throw new InvalidArgumentException( __METHOD__ . ": Unknown cluster \"$cluster\"" );
                }
@@ -281,14 +275,9 @@ class LBFactoryMulti extends LBFactory {
                );
        }
 
-       /**
-        * @param string $cluster External storage cluster, or false for core
-        * @param DatabaseDomain|string|bool $domain Domain ID, or false for the current domain
-        * @return LoadBalancer
-        */
-       public function getExternalLB( $cluster, $domain = false ) {
+       public function getExternalLB( $cluster ) {
                if ( !isset( $this->extLBs[$cluster] ) ) {
-                       $this->extLBs[$cluster] = $this->newExternalLB( $cluster, $domain );
+                       $this->extLBs[$cluster] = $this->newExternalLB( $cluster );
                        $this->getChronologyProtector()->initLB( $this->extLBs[$cluster] );
                }
 
index 674bafd..1e69d8f 100644 (file)
@@ -91,13 +91,7 @@ class LBFactorySimple extends LBFactory {
                return $this->mainLB;
        }
 
-       /**
-        * @param string $cluster
-        * @param bool|string $domain
-        * @return LoadBalancer
-        * @throws InvalidArgumentException
-        */
-       public function newExternalLB( $cluster, $domain = false ) {
+       public function newExternalLB( $cluster ) {
                if ( !isset( $this->externalClusters[$cluster] ) ) {
                        throw new InvalidArgumentException( __METHOD__ . ": Unknown cluster \"$cluster\"." );
                }
@@ -105,14 +99,9 @@ class LBFactorySimple extends LBFactory {
                return $this->newLoadBalancer( $this->externalClusters[$cluster] );
        }
 
-       /**
-        * @param string $cluster
-        * @param bool|string $domain
-        * @return LoadBalancer
-        */
-       public function getExternalLB( $cluster, $domain = false ) {
+       public function getExternalLB( $cluster ) {
                if ( !isset( $this->extLBs[$cluster] ) ) {
-                       $this->extLBs[$cluster] = $this->newExternalLB( $cluster, $domain );
+                       $this->extLBs[$cluster] = $this->newExternalLB( $cluster );
                        $this->getChronologyProtector()->initLB( $this->extLBs[$cluster] );
                }
 
index a64117f..e116888 100644 (file)
@@ -55,36 +55,34 @@ class LBFactorySingle extends LBFactory {
        }
 
        /**
-        * @param bool|string $wiki
+        * @param bool|string $domain (unused)
         * @return LoadBalancerSingle
         */
-       public function newMainLB( $wiki = false ) {
+       public function newMainLB( $domain = false ) {
                return $this->lb;
        }
 
        /**
-        * @param bool|string $wiki
+        * @param bool|string $domain (unused)
         * @return LoadBalancerSingle
         */
-       public function getMainLB( $wiki = false ) {
+       public function getMainLB( $domain = false ) {
                return $this->lb;
        }
 
        /**
-        * @param string $cluster External storage cluster, or false for core
-        * @param bool|string $wiki Wiki ID, or false for the current wiki
+        * @param string $cluster External storage cluster name (unused)
         * @return LoadBalancerSingle
         */
-       public function newExternalLB( $cluster, $wiki = false ) {
+       public function newExternalLB( $cluster ) {
                return $this->lb;
        }
 
        /**
-        * @param string $cluster External storage cluster, or false for core
-        * @param bool|string $wiki Wiki ID, or false for the current wiki
+        * @param string $cluster External storage cluster name (unused)
         * @return LoadBalancerSingle
         */
-       public function getExternalLB( $cluster, $wiki = false ) {
+       public function getExternalLB( $cluster ) {
                return $this->lb;
        }
 
index 0dec95f..0a05202 100644 (file)
@@ -68,13 +68,6 @@ class LoadBalancerSingle extends LoadBalancer {
                return new static( [ 'connection' => $db ] + $params );
        }
 
-       /**
-        *
-        * @param string $server
-        * @param bool $dbNameOverride
-        *
-        * @return IDatabase
-        */
        protected function reallyOpenConnection( array $server, $dbNameOverride = false ) {
                return $this->db;
        }
index 53a474b..0a4f0ed 100644 (file)
@@ -326,9 +326,9 @@ class ObjectCache {
         * @throws UnexpectedValueException
         */
        public static function newWANCacheFromParams( array $params ) {
+               $erGroup = MediaWikiServices::getInstance()->getEventRelayerGroup();
                foreach ( $params['channels'] as $action => $channel ) {
-                       $params['relayers'][$action] = MediaWikiServices::getInstance()->getEventRelayerGroup()
-                               ->getRelayer( $channel );
+                       $params['relayers'][$action] = $erGroup->getRelayer( $channel );
                        $params['channels'][$action] = $channel;
                }
                $params['cache'] = self::newFromParams( $params['store'] );
index 54bc6f6..0b26d28 100644 (file)
@@ -2926,17 +2926,13 @@ class WikiPage implements Page, IDBAccessObject {
                        $content = null;
                }
 
+               $fields = Revision::selectFields();
+               $bitfield = false;
+
                // Bitfields to further suppress the content
                if ( $suppress ) {
-                       $bitfield = 0;
-                       // This should be 15...
-                       $bitfield |= Revision::DELETED_TEXT;
-                       $bitfield |= Revision::DELETED_COMMENT;
-                       $bitfield |= Revision::DELETED_USER;
-                       $bitfield |= Revision::DELETED_RESTRICTED;
-                       $deletionFields = [ $dbw->addQuotes( $bitfield ) . ' AS deleted' ];
-               } else {
-                       $deletionFields = [ 'rev_deleted AS deleted' ];
+                       $bitfield = Revision::SUPPRESSED_ALL;
+                       $fields = array_diff( $fields, [ 'rev_deleted' ] );
                }
 
                // For now, shunt the revision data into the archive table.
@@ -2947,10 +2943,9 @@ class WikiPage implements Page, IDBAccessObject {
                // the rev_deleted field, which is reserved for this purpose.
 
                // Get all of the page revisions
-               $fields = array_diff( Revision::selectFields(), [ 'rev_deleted' ] );
                $res = $dbw->select(
                        'revision',
-                       array_merge( $fields, $deletionFields ),
+                       $fields,
                        [ 'rev_page' => $id ],
                        __METHOD__,
                        'FOR UPDATE'
@@ -2973,7 +2968,7 @@ class WikiPage implements Page, IDBAccessObject {
                                'ar_flags'      => '',
                                'ar_len'        => $row->rev_len,
                                'ar_page_id'    => $id,
-                               'ar_deleted'    => $row->deleted,
+                               'ar_deleted'    => $suppress ? $bitfield : $row->rev_deleted,
                                'ar_sha1'       => $row->rev_sha1,
                        ];
                        if ( $wgContentHandlerUseDB ) {
index 01cce02..ef26db6 100644 (file)
@@ -487,40 +487,58 @@ class CoreParserFunctions {
                return $mwObject->matchStartToEnd( $value );
        }
 
-       public static function formatRaw( $num, $raw ) {
+       public static function formatRaw( $num, $raw, Language $language ) {
                if ( self::matchAgainstMagicword( 'rawsuffix', $raw ) ) {
                        return $num;
                } else {
-                       global $wgContLang;
-                       return $wgContLang->formatNum( $num );
+                       return $language->formatNum( $num );
                }
        }
+
        public static function numberofpages( $parser, $raw = null ) {
-               return self::formatRaw( SiteStats::pages(), $raw );
+               return self::formatRaw( SiteStats::pages(), $raw, $parser->getFunctionLang() );
        }
+
        public static function numberofusers( $parser, $raw = null ) {
-               return self::formatRaw( SiteStats::users(), $raw );
+               return self::formatRaw( SiteStats::users(), $raw, $parser->getFunctionLang() );
        }
        public static function numberofactiveusers( $parser, $raw = null ) {
-               return self::formatRaw( SiteStats::activeUsers(), $raw );
+               return self::formatRaw( SiteStats::activeUsers(), $raw, $parser->getFunctionLang() );
        }
+
        public static function numberofarticles( $parser, $raw = null ) {
-               return self::formatRaw( SiteStats::articles(), $raw );
+               return self::formatRaw( SiteStats::articles(), $raw, $parser->getFunctionLang() );
        }
+
        public static function numberoffiles( $parser, $raw = null ) {
-               return self::formatRaw( SiteStats::images(), $raw );
+               return self::formatRaw( SiteStats::images(), $raw, $parser->getFunctionLang() );
        }
+
        public static function numberofadmins( $parser, $raw = null ) {
-               return self::formatRaw( SiteStats::numberingroup( 'sysop' ), $raw );
+               return self::formatRaw(
+                       SiteStats::numberingroup( 'sysop' ),
+                       $raw,
+                       $parser->getFunctionLang()
+               );
        }
+
        public static function numberofedits( $parser, $raw = null ) {
-               return self::formatRaw( SiteStats::edits(), $raw );
+               return self::formatRaw( SiteStats::edits(), $raw, $parser->getFunctionLang() );
        }
+
        public static function pagesinnamespace( $parser, $namespace = 0, $raw = null ) {
-               return self::formatRaw( SiteStats::pagesInNs( intval( $namespace ) ), $raw );
+               return self::formatRaw(
+                       SiteStats::pagesInNs( intval( $namespace ) ),
+                       $raw,
+                       $parser->getFunctionLang()
+               );
        }
        public static function numberingroup( $parser, $name = '', $raw = null ) {
-               return self::formatRaw( SiteStats::numberingroup( strtolower( $name ) ), $raw );
+               return self::formatRaw(
+                       SiteStats::numberingroup( strtolower( $name ) ),
+                       $raw,
+                       $parser->getFunctionLang()
+               );
        }
 
        /**
@@ -727,7 +745,7 @@ class CoreParserFunctions {
 
                $title = Title::makeTitleSafe( NS_CATEGORY, $name );
                if ( !$title ) { # invalid title
-                       return self::formatRaw( 0, $raw );
+                       return self::formatRaw( 0, $raw, $parser->getFunctionLang() );
                }
                $wgContLang->findVariantLink( $name, $title, true );
 
@@ -753,7 +771,7 @@ class CoreParserFunctions {
                }
 
                $count = $cache[$name][$type];
-               return self::formatRaw( $count, $raw );
+               return self::formatRaw( $count, $raw, $parser->getFunctionLang() );
        }
 
        /**
@@ -769,7 +787,7 @@ class CoreParserFunctions {
                $title = Title::newFromText( $page );
 
                if ( !is_object( $title ) ) {
-                       return self::formatRaw( 0, $raw );
+                       return self::formatRaw( 0, $raw, $parser->getFunctionLang() );
                }
 
                // fetch revision from cache/database and return the value
@@ -779,7 +797,7 @@ class CoreParserFunctions {
                        // We've had bugs where rev_len was not being recorded for empty pages, see T135414
                        $length = 0;
                }
-               return self::formatRaw( $length, $raw );
+               return self::formatRaw( $length, $raw, $parser->getFunctionLang() );
        }
 
        /**
index 2c15235..669e9fc 100644 (file)
@@ -1446,7 +1446,6 @@ class Parser {
                                $keyword = 'RFC';
                                $urlmsg = 'rfcurl';
                                $cssClass = 'mw-magiclink-rfc';
-                               $trackingCategory = 'magiclinks-rfc-category';
                                $id = $m[5];
                        } elseif ( substr( $m[0], 0, 4 ) === 'PMID' ) {
                                if ( !$this->mOptions->getMagicPMIDLinks() ) {
@@ -1455,14 +1454,12 @@ class Parser {
                                $keyword = 'PMID';
                                $urlmsg = 'pubmedurl';
                                $cssClass = 'mw-magiclink-pmid';
-                               $trackingCategory = 'magiclinks-pmid-category';
                                $id = $m[5];
                        } else {
                                throw new MWException( __METHOD__ . ': unrecognised match type "' .
                                        substr( $m[0], 0, 20 ) . '"' );
                        }
                        $url = wfMessage( $urlmsg, $id )->inContentLanguage()->text();
-                       $this->addTrackingCategory( $trackingCategory );
                        return Linker::makeExternalLink( $url, "{$keyword} {$id}", true, $cssClass, [], $this->mTitle );
                } elseif ( isset( $m[6] ) && $m[6] !== ''
                        && $this->mOptions->getMagicISBNLinks()
@@ -1476,7 +1473,6 @@ class Parser {
                                ' ' => '',
                                'x' => 'X',
                        ] );
-                       $this->addTrackingCategory( 'magiclinks-isbn-category' );
                        return $this->getLinkRenderer()->makeKnownLink(
                                SpecialPage::getTitleFor( 'Booksources', $num ),
                                "ISBN $isbn",
index 78ec148..0236ea2 100644 (file)
@@ -258,6 +258,9 @@ class ExtensionRegistry {
                                case 'array_merge_recursive':
                                        $GLOBALS[$key] = array_merge_recursive( $GLOBALS[$key], $val );
                                        break;
+                               case 'array_replace_recursive':
+                                       $GLOBALS[$key] = array_replace_recursive( $GLOBALS[$key], $val );
+                                       break;
                                case 'array_plus_2d':
                                        $GLOBALS[$key] = wfArrayPlus2d( $GLOBALS[$key], $val );
                                        break;
index d719e53..be8ad8f 100755 (executable)
@@ -54,6 +54,8 @@ class SpecialNewpages extends IncludableSpecialPage {
                $opts->add( 'feed', '' );
                $opts->add( 'tagfilter', '' );
                $opts->add( 'invert', false );
+               $opts->add( 'size-mode', 'max' );
+               $opts->add( 'size', 0 );
 
                $this->customFilters = [];
                Hooks::run( 'SpecialNewPagesFilters', [ $this, &$this->customFilters ] );
@@ -214,6 +216,9 @@ class SpecialNewpages extends IncludableSpecialPage {
                $tagFilterVal = $this->opts->consumeValue( 'tagfilter' );
                $nsinvert = $this->opts->consumeValue( 'invert' );
 
+               $size = $this->opts->consumeValue( 'size' );
+               $max = $this->opts->consumeValue( 'size-mode' ) === 'max';
+
                // Check username input validity
                $ut = Title::makeTitleSafe( NS_USER, $username );
                $userText = $ut ? $ut->getText() : '';
@@ -254,6 +259,11 @@ class SpecialNewpages extends IncludableSpecialPage {
                                'size' => 30,
                                'cssclass' => 'mw-autocomplete-user', // used by mediawiki.userSuggest
                        ],
+                       'size' => [
+                               'type' => 'sizefilter',
+                               'name' => 'size',
+                               'default' => -$max * $size,
+                       ],
                ];
 
                $htmlForm = new HTMLForm( $form, $this->getContext() );
index 2d39f99..e298f10 100644 (file)
@@ -48,6 +48,15 @@ class NewPagesPager extends ReverseChronologicalPager {
                $username = $this->opts->getValue( 'username' );
                $user = Title::makeTitleSafe( NS_USER, $username );
 
+               $size = abs( intval( $this->opts->getValue( 'size' ) ) );
+               if ( $size > 0 ) {
+                       if ( $this->opts->getValue( 'size-mode' ) === 'max' ) {
+                               $conds[] = 'page_len <= ' . $size;
+                       } else {
+                               $conds[] = 'page_len >= ' . $size;
+                       }
+               }
+
                $rcIndexes = [];
 
                if ( $namespace !== false ) {
index 91b4133..3422632 100644 (file)
@@ -1440,7 +1440,11 @@ abstract class UploadBase {
                        'http://www.w3.org/tr/rec-rdf-syntax/',
                ];
 
-               if ( !in_array( $namespace, $validNamespaces ) ) {
+               // Inkscape mangles namespace definitions created by Adobe Illustrator.
+               // This is nasty but harmless. (T144827)
+               $isBuggyInkscape = preg_match( '/^&(#38;)*ns_[a-z_]+;$/', $namespace );
+
+               if ( !( $isBuggyInkscape || in_array( $namespace, $validNamespaces ) ) ) {
                        wfDebug( __METHOD__ . ": Non-svg namespace '$namespace' in uploaded file.\n" );
                        /** @todo Return a status object to a closure in XmlTypeCheck, for MW1.21+ */
                        $this->mSVGNSError = $namespace;
index b5bd434..2e4ef89 100644 (file)
@@ -338,7 +338,7 @@ class Language {
                        // People think language codes are html safe, so enforce it.
                        // Ideally we should only allow a-zA-Z0-9-
                        // but, .+ and other chars are often used for {{int:}} hacks
-                       // see bugs 37564, 37587, 36938
+                       // see bugs T39564, T39587, T38938
                        $cache[$code] =
                                // Protect against path traversal
                                strcspn( $code, ":/\\\000&<>'\"" ) === strlen( $code )
index 7611241..8c87e55 100644 (file)
        "mergehistory-from": "الصفحة المصدر:",
        "mergehistory-into": "الصفحة الهدف:",
        "mergehistory-list": "تاريخ التعديل القابل للدمج",
-       "mergehistory-merge": "المراجعات التالية من [[:$1]] يمكن دمجها إلى [[:$2]].\nاستخدم عامود الصناديق لدمج المراجعات التي تم إنشاؤها في وقبل الوقت المحدد.\nلاحظ أن استخدام وصلات التصفح سيعيد ضبط هذا العامود.",
+       "mergehistory-merge": "المراجعات التالية من [[:$1]] يمكن دمجها إلى [[:$2]].\nاستخدم عمود الصناديق لدمج المراجعات التي تم إنشاؤها في وقبل الوقت المحدد.\nلاحظ أن استخدام وصلات التصفح سيعيد ضبط هذا العمود.",
        "mergehistory-go": "عرض التعديلات القابلة للدمج",
        "mergehistory-submit": "دمج المراجعات",
        "mergehistory-empty": "لا مراجعات يمكن دمجها.",
        "mailnologin": "لا يوجد عنوان للإرسال",
        "mailnologintext": "يجب أن تقوم [[Special:UserLogin|بتسجيل الدخول]] وإدخال بريد إلكتروني صالح في صفحة [[Special:Preferences|التفضيلات]] لتتمكن من إرسال الرسائل لمستخدمين آخرين.",
        "emailuser": "مراسلة المستخدم",
-       "emailuser-title-target": "راسل بالبريد الإلكتروني هذا  {{GENDER:$1| المستخدم}}",
+       "emailuser-title-target": "راسل هذا  {{GENDER:$1| المستخدم}} بالبريد الإلكتروني",
        "emailuser-title-notarget": "مراسلة المستخدم",
        "emailpagetext": "يمكنك استخدام الاستمارة بالأسفل لإرسال رسالة بريد إلكتروني إلى {{GENDER:$1|هذا المستخدم|هذه المستخدمة}}.\n'''يمكن أن يرى المرسل إليه عنوان بريدك الإلكتروني''' الذي أدخلته في [[Special:Preferences|تفضيلاتك]] كعنوان المرسل في البريد الإلكتروني، كي يستطيع المتلقي الرد عليك مباشرة.",
        "defemailsubject": "رسالة {{SITENAME}} من المستخدم \"$1\"",
        "sp-contributions-blocked-notice-anon": "عنوان الأيبي هذا ممنوع حاليا.\nآخر مدخلة لسجل المنع معروضة هنا كمرجع:",
        "sp-contributions-search": "بحث عن مساهمات",
        "sp-contributions-username": "عنوان أيبي أو اسم مستخدم:",
-       "sp-contributions-toponly": "أظÙ\87ر Ø£Ø¹Ù\84Ù\89 Ø§Ù\84Ù\85راجعات فقط",
+       "sp-contributions-toponly": "أظÙ\87ر Ø§Ù\84Ù\86سخ Ø§Ù\84حاÙ\84Ù\8aØ© فقط",
        "sp-contributions-newonly": "أظهر إنشاء الصفحات فقط",
        "sp-contributions-hideminor": "أخف التعديلات الطفيفة",
        "sp-contributions-submit": "بحث",
index 865a51e..78e4779 100644 (file)
        "pageinfo-category-pages": "Númberu de páxines",
        "pageinfo-category-subcats": "Númberu de subcategoríes",
        "pageinfo-category-files": "Númberu de ficheros",
+       "pageinfo-user-id": "ID d'usuariu",
        "markaspatrolleddiff": "Marcar como supervisada",
        "markaspatrolledtext": "Marcar esta páxina como supervisada",
        "markaspatrolledtext-file": "Marcar esta versión del ficheru como patrullada",
index 21d16ff..57d9305 100644 (file)
@@ -37,7 +37,8 @@
                        "Ricordo.tenerissimo",
                        "Plamen",
                        "Iliev",
-                       "Spas.Z.Spasov"
+                       "Spas.Z.Spasov",
+                       "АдмиралАнимЕ"
                ]
        },
        "tog-underline": "Подчертаване на препратките:",
@@ -89,8 +90,8 @@
        "editfont-style": "Стил на шрифта в кутията за редактиране:",
        "editfont-default": "По подразбиране за браузъра",
        "editfont-monospace": "Равноширок шрифт",
-       "editfont-sansserif": "Ð\91езÑ\81еÑ\80иÑ\84ен Ñ\88Ñ\80иÑ\84Ñ\82",
-       "editfont-serif": "СеÑ\80иÑ\84ен Ñ\88Ñ\80иÑ\84Ñ\82",
+       "editfont-sansserif": "ШÑ\80иÑ\84Ñ\82 Ð±ÐµÐ· Ð¸Ð·Ð²Ð¸Ð²ÐºÐ¸",
+       "editfont-serif": "ШÑ\80иÑ\84Ñ\82 Ñ\81 Ð¸Ð·Ð²Ð¸Ð²ÐºÐ¸",
        "sunday": "неделя",
        "monday": "понеделник",
        "tuesday": "вторник",
        "october-date": "$1 октомври",
        "november-date": "$1 ноември",
        "december-date": "$1 декември",
+       "period-am": "Преди обед",
+       "period-pm": "След обед",
        "pagecategories": "{{PLURAL:$1|Категория|Категории}}",
        "category_header": "Страници в категория „$1“",
        "subcategories": "Подкатегории",
        "qbpageoptions": "Тази страница",
        "qbmyoptions": "Моите страници",
        "faq": "ЧЗВ",
-       "faqpage": "Project:ЧЗВ",
+       "faqpage": "Проект:ЧЗВ",
        "actions": "Действия",
        "namespaces": "Именни пространства",
        "variants": "Варианти",
        "talk": "Беседа",
        "views": "Прегледи",
        "toolbox": "Инструменти",
+       "tool-link-emailuser": "Писмо до {{GENDER:$1|потребителя}}",
        "userpage": "Потребителска страница",
        "projectpage": "Проектна страница",
        "imagepage": "Преглед на файла",
        "createacct-reason-ph": "Защо създавате друга сметка",
        "createacct-submit": "Създаване на сметката",
        "createacct-another-submit": "Създаване на сметка",
-       "createacct-continue-submit": "Продължаване създаването на акаунт",
-       "createacct-another-continue-submit": "Продължаване създаването на акаунт",
+       "createacct-continue-submit": "Продължаване създаването на сметка",
+       "createacct-another-continue-submit": "Продължаване създаването на сметка",
        "createacct-benefit-heading": "{{SITENAME}} се създава от хора като вас.",
        "createacct-benefit-body1": "{{PLURAL:$1|редакция|редакции}}",
        "createacct-benefit-body2": "{{PLURAL:$1|страница|страници}}",
        "passwordremindertitle": "Напомняне за парола от {{SITENAME}}",
        "passwordremindertext": "Някой (най-вероятно вие, от IP-адрес $1) е пожелал нова парола за влизане в {{SITENAME}} ($4).\nЗа потребител „$2“ е създадена временната парола „$3“.\nСега би трябвало да влезете в системата и да си изберете нова парола.\nНовата временна парола ще бъде активна {{PLURAL:$5|един ден|$5 дни}}.\n\nАко заявката е направена от друг или пък сте си спомнили паролата и не искате да я променяте, можете да пренебрегнете това съобщение и да продължите да използвате старата си парола.",
        "noemail": "Няма записана електронна поща за потребителя „$1“.",
-       "noemailcreate": "Необходимо е да въведете валиден адрес за е-поща",
+       "noemailcreate": "Необходимо е да въведете валиден адрес за ел. поща",
        "passwordsent": "Нова парола беше изпратена на електронната поща на „$1“.\nСлед като я получите, влезте отново.",
        "blocked-mailpassword": "Редактирането от Вашия IP-адрес е забранено, затова не Ви се позволява да използвате възможността за възстановяване на парола.",
        "eauthentsent": "Писмото за потвърждение е изпратено на посочения адрес. В него са описани действията, които трябва да се извършат, за да потвърдите, че този адрес за електронна поща действително е ваш.",
        "passwordreset-emailsentusername": "Ако това потребителско име е свързано с електронна поща, е изпратено писмо за възстановяване на паролата.",
        "passwordreset-invalideamil": "Неправилен email адрес",
        "changeemail": "Промяна или премахване на адреса за е-поща",
-       "changeemail-header": "Промяна на адреса за е-поща на сметката",
+       "changeemail-header": "Попълнете формуляра, за да промените адреса на електронната си поща. Ако искате да премахнете адреса на електронната си поща, при попълване на формуляра оставете полето за новия адрес празно.",
        "changeemail-no-info": "За да достъпвате тази страница директно, необходимо е да влезете в системата.",
        "changeemail-oldemail": "Текущ адрес за е-поща:",
        "changeemail-newemail": "Нов адрес за е-поща:",
        "resettokens-resetbutton": "Изчистване на избраните маркери",
        "bold_sample": "Получер текст",
        "bold_tip": "Получер (удебелен) текст",
-       "italic_sample": "Ð\9aÑ\83Ñ\80Ñ\81ивен текст",
-       "italic_tip": "Ð\9aÑ\83Ñ\80Ñ\81ивен (наклонен) текст",
+       "italic_sample": "Ð\9dаклонен текст",
+       "italic_tip": "Ð\9dаклонен текст",
        "link_sample": "Име на препратка",
        "link_tip": "Вътрешна препратка",
        "extlink_sample": "http://www.example.com Текст на външната препратка",
        "previewnote": "<strong>Обърнете внимание, че това е само предварителен преглед.</strong>\nПромените все още не са съхранени!",
        "continue-editing": "Продължаване към полето за редактиране",
        "previewconflict": "Този предварителен преглед отразява текста в горната текстова кутия така, както би се показал, ако съхраните.",
-       "session_fail_preview": "'''За съжаление редакцията ви не успя да бъде обработена поради загуба на данните за текущата сесия. Опитайте отново. Ако все още не работи, опитайте да [[Special:UserLogout|излезете]] и да влезете отново.'''",
+       "session_fail_preview": "За съжаление редакцията ви не успя да бъде обработена поради загуба на данните за текущата сесия.\n\nМоже би сте излезли от системата. <strong>Моля, уверете се, че сте влезли в профила си и опитайте отново. \nАко все още не работи, опитайте да [[Special:UserLogout|излезете]] и да влезете отново, също така проверете дали браузърът ви позволява бисквитки от този сайт.",
        "session_fail_preview_html": "'''За съжаление редакцията ви не беше записана поради изтичането на сесията ви.'''\n\n''Тъй като {{SITENAME}} приема обикновен HTML, предварителният преглед е скрит като предпазна мярка срещу атаки чрез Джаваскрипт.''\n\n'''Опитайте отново. Ако все още не сработва, пробвайте да [[Special:UserLogout|излезете]] и влезете отново.'''",
        "token_suffix_mismatch": "'''Редакцията ви беше отхвърлена, защото браузърът ви е развалил пунктуационните знаци в редакционната отметка. Евентуалното съхранение би унищожило съдържанието на страницата. Понякога това се случва при използването на грешно работещи анонимни междинни сървъри.'''",
        "edit_form_incomplete": "'''Някои части от формуляра за редактиране не достигнаха до сървъра; проверете дали редакциите ви са непокътнати и опитайте отново.'''",
        "mailnologin": "Няма електронна поща",
        "mailnologintext": "Необходимо е да [[Special:UserLogin|влезете]] и да посочите валидна електронна поща в [[Special:Preferences|настройките]] си, за да може да пращате писма на други потребители.",
        "emailuser": "Писмо до потребителя",
-       "emailuser-title-target": "Ð\98зпÑ\80аÑ\89ане Ð½Ð° Ðµ-пиÑ\81мо Ð½Ð° Ñ\82ози {{GENDER:$1|поÑ\82Ñ\80ебиÑ\82ел}}",
+       "emailuser-title-target": "Ð\9fиÑ\81мо Ð´Ð¾ {{GENDER:$1|поÑ\82Ñ\80ебиÑ\82елÑ\8f}}",
        "emailuser-title-notarget": "Изпращане на е-писмо на потребител",
        "emailpagetext": "Можете да използвате формуляра по-долу, за да изпратите електронно писмо на {{GENDER:$1|този потребител}}.\nАдресът, който се въвели в [[Special:Preferences|настройките си]], ще се появи в полето „От“ на писмото, така че получателят ще е в състояние да ви отговори директно.",
        "defemailsubject": "Писмо от потребител $1 в {{SITENAME}}",
        "sp-contributions-newbies-sub": "на нови потребители",
        "sp-contributions-newbies-title": "Потребителски приноси за нови сметки",
        "sp-contributions-blocklog": "Дневник на блокиранията",
-       "sp-contributions-deleted": "изтрити приноси на потребител",
+       "sp-contributions-deleted": "изтрити приноси на {{GENDER:$1|потребител}}",
        "sp-contributions-uploads": "качвания",
        "sp-contributions-logs": "дневници",
        "sp-contributions-talk": "беседа",
        "whatlinkshere-hideredirs": "$1 пренасочвания",
        "whatlinkshere-hidetrans": "$1 включвания",
        "whatlinkshere-hidelinks": "$1 препратки",
-       "whatlinkshere-hideimages": "$1 Ð½Ð° Ð¿Ñ\80епÑ\80аÑ\82ки ÐºÑ\8aм Ñ\84айла",
+       "whatlinkshere-hideimages": "$1 препратки към файла",
        "whatlinkshere-filters": "Филтри",
        "whatlinkshere-submit": "Отваряне",
        "autoblockid": "Автоматично блокиране #$1",
        "scarytranscludefailed": "[Зареждането на шаблона за $1 не сполучи]",
        "scarytranscludetoolong": "[Адресът е твърде дълъг]",
        "deletedwhileediting": "'''Внимание''': Страницата е била изтрита, след като сте започнали да я редактирате!",
-       "confirmrecreate": "Потребител [[Потребител:$1|$1]] ([[Потребител беседа:$1|беседа]]) е {{GENDER:$1|изтрил}} страницата, откакто сте започнали да я редактирате, като е посочил следното обяснение:\n: <em>$2</em>\nПотвърдете, че наистина желаете да създадете страницата отново.",
+       "confirmrecreate": "Потребител [[User:$1|$1]] ([[User talk:$1|беседа]]) е {{GENDER:$1|изтрил}} страницата, след като сте започнали да я редактирате, като е посочил следното обяснение:\n: <em>$2</em>\nПотвърдете, че наистина желаете да създадете страницата отново.",
        "confirmrecreate-noreason": "Потребител [[User:$1|$1]] ([[User talk:$1|беседа]]) {{GENDER:$1|изтри}} тази страница след като сте започнали да я редактирате. Необходимо е потвърждение, че наистина желаете да създадете страницата отново.",
        "recreate": "Ново създаване",
        "confirm_purge_button": "Добре",
index 371a669..2e65260 100644 (file)
        "pageswithprop-prophidden-long": "sakriveno dugo tekstualno svojstvo ($1)",
        "pageswithprop-prophidden-binary": "sakriveno dugo binarno svojstvo ($1)",
        "doubleredirects": "Dvostruka preusmjerenja",
-       "doubleredirectstext": "Ova stranica prikazuje stranice koje preusmjeravaju na druga preusmjerenja.\nSvaki red sadrži veze na prvo i drugo preusmjerenje, kao i na prvu liniju teksta drugog preusmjerenja, što obično daje \"pravi\" ciljni članak, na koji bi prvo preusmjerenje i trebalo da pokazuje.\n<del>Precrtane</del> stavke su riješene.",
+       "doubleredirectstext": "Ova stranica prikazuje stranice koje preusmjeravaju na druga preusmjerenja.\nSvaki red sadrži linkove na prvo i drugo preusmjerenje, kao i na odredišnu stranicu drugog preusmjerenja koja je obično \"pravi\" članak na koji bi prvo preusmjerenje trebalo upućivati.\n<del>Precrtane</del> stavke su riješene.",
        "double-redirect-fixed-move": "[[$1]] je premješten.\nAutomatski je ažuriran i sada preusmjerava na [[$2]].",
        "double-redirect-fixed-maintenance": "Automatsko ospravljanje dvostrukih preusmjerenja sa [[$1]] na [[$2]] je posao održavanja.",
        "double-redirect-fixer": "Popravljač preusmjerenja",
        "withoutinterwiki-legend": "Prefiks",
        "withoutinterwiki-submit": "Prikaži",
        "fewestrevisions": "Stranice sa najmanje izmjena",
-       "nbytes": "$1 {{PLURAL:$1|bajt|bajtova}}",
+       "nbytes": "$1 {{PLURAL:$1|bajt|bajta|bajtova}}",
        "ncategories": "$1 {{PLURAL:$1|kategorija|kategorije}}",
        "ninterwikis": "$1 {{PLURAL:$1|međujezična veza|međujezične veze}}",
        "nlinks": "$1 {{PLURAL:$1|veza|veze}}",
        "restriction-level-all": "svi nivoi",
        "undelete": "Pregled obrisanih stranica",
        "undeletepage": "Pregled i vraćanje obrisanih stranica",
-       "undeletepagetitle": "<strong>Sljedeći sadržaj prikazuje obrisane izmjene stranice [[:$1|$1]]<strong>.",
+       "undeletepagetitle": "<strong>Sljedeći sadržaj prikazuje obrisane izmjene stranice [[:$1|$1]]</strong>.",
        "viewdeletedpage": "Pregled obrisanih stranica",
        "undeletepagetext": "{{PLURAL:$1|Slijedeća $1 stranica je obrisana|Slijedeće $1 stranice su obrisane|Slijedećih $1 je obrisano}} ali su još uvijek u arhivi i mogu biti vraćene.\nArhiva moše biti periodično čišćena.",
        "undelete-fieldset-title": "Vraćanje izmjena",
        "movenosubpage": "Ova stranica nema podstranica.",
        "movereason": "Razlog:",
        "revertmove": "vrati",
-       "delete_and_move_text": "==Potebno brisanje==\nOdredišna stranica \"[[:$1]]\" već postoji.\nDa li je želite obrisati kako bi ste mogli izvršiti premještanje?",
+       "delete_and_move_text": "Odredišna stranica \"[[:$1]]\" već postoji.\nŽelite li je obrisati da biste oslobodili mjesto za premještanje?",
        "delete_and_move_confirm": "Da, obriši stranicu",
        "delete_and_move_reason": "Obrisano da se oslobodi mjesto za premještanje iz \"[[$1]]\"",
        "selfmove": "Izvorni i ciljani naziv su isti; strana ne može da se premjesti preko same sebe.",
index b57b2bc..695b726 100644 (file)
        "movelogpagetext": "Toto je záznam všech přesunů stránek.",
        "movesubpage": "{{PLURAL:$1|Podstránka|Podstránky}}",
        "movesubpagetext": "Tato stránka má $1 {{PLURAL:$1|podstránku uvedenou|podstránky vypsané|podstránek vypsaných}} níže.",
-       "movesubpagetalktext": "Odpovídající diskusní stránka má {{PLURAL:$1|jednu, níže zobrazenou podstránku|$1, níže zobrazené podstránky|$1, níže zobrazených podstránek}}.",
+       "movesubpagetalktext": "Odpovídající diskusní stránka má {{PLURAL:$1|jednu podstránku, zobrazenou|$1 podstránky, zobrazené|$1 podstránek, zobrazených}} níže.",
        "movenosubpage": "Tato stránka nemá žádné podstránky.",
        "movereason": "Důvod:",
        "revertmove": "vrátit",
        "pageinfo-category-pages": "Počet stránek",
        "pageinfo-category-subcats": "Počet podkategorií",
        "pageinfo-category-files": "Počet souborů",
+       "pageinfo-user-id": "ID uživatele",
        "markaspatrolleddiff": "Označit jako prověřené",
        "markaspatrolledtext": "Označit tuto stránku jako prověřenou",
        "markaspatrolledtext-file": "Označit tuto verzi souboru jako prověřenou",
        "newimages-showbots": "Zobrazit soubory načtené boty",
        "newimages-hidepatrolled": "Skrýt prověřená načtení souborů",
        "noimages": "Není co zobrazit.",
+       "gallery-slideshow-toggle": "Přepnout náhledy",
        "ilsubmit": "Hledat",
        "bydate": "podle data",
        "sp-newimages-showfrom": "Zobrazit nové soubory počínaje od $2, $1",
        "usercssispublic": "Uvědomte si prosím, že podstránky s CSS by neměly obsahovat tajné údaje, protože jsou viditelné ostatním uživatelům.",
        "restrictionsfield-badip": "Neplatná IP adresa nebo rozsah: $1",
        "restrictionsfield-label": "Povolené rozsahy IP adres:",
-       "restrictionsfield-help": "Jedna IP adresa nebo CIDR rozsah na řádek. Všechno povolíte pomocí<br><code>0.0.0.0/0</code><br><code>::/0</code>"
+       "restrictionsfield-help": "Jedna IP adresa nebo CIDR rozsah na řádek. Všechno povolíte pomocí<br><code>0.0.0.0/0</code><br><code>::/0</code>",
+       "edit-error-short": "Chyba: $1",
+       "edit-error-long": "Chyby:\n\n$1"
 }
index 794a936..b5d2523 100644 (file)
        "grant-basic": "Basisrechte",
        "grant-viewdeleted": "Gelöschte Dateien und Seiten ansehen",
        "grant-viewmywatchlist": "Deine Beobachtungsliste ansehen",
+       "grant-viewrestrictedlogs": "Beschränkte Logbucheinträge ansehen",
        "newuserlogpage": "Neuanmeldungs-Logbuch",
        "newuserlogpagetext": "Dies ist ein Logbuch der neu erstellten Benutzerkonten.",
        "rightslog": "Rechte-Logbuch",
index 3d272a3..c759984 100644 (file)
        "grant-basic": "Basic rights",
        "grant-viewdeleted": "View deleted files and pages",
        "grant-viewmywatchlist": "View your watchlist",
+       "grant-viewrestrictedlogs": "View restricted log entries",
        "newuserlogpage": "User creation log",
        "newuserlogpagetext": "This is a log of user creations.",
        "rightslog": "User rights log",
index ac7e828..52bdc63 100644 (file)
        "invalid-content-data": "Enhavo estas malvalida",
        "content-not-allowed-here": "Enhavo de $1 ne estas permesita en paĝo [[$2]]",
        "editwarning-warning": "Forlaso de ĉi tiu paĝo kaŭzos al vi perdi iun ajn ŝanĝojn kiujn vi faris.\nSe vi estas ensalutinta, vi povas malŝalti ĉi tiun averton en la sekcio \"{{int:prefs-editing}}\" de viaj preferoj.",
+       "editpage-invalidcontentmodel-title": "Enhava modelo ne subtenata",
+       "editpage-invalidcontentmodel-text": "La enhava modelo \"$1\" ne estas subtenata.",
        "editpage-notsupportedcontentformat-title": "Nesubtenata enhavoformo",
        "editpage-notsupportedcontentformat-text": "La enhava aranĝo $1 ne estas subtenata de la enhava modelo $2.",
        "content-model-wikitext": "vikiteksto",
        "apisandbox-results-fixtoken-fail": "Malsukcese venigis ĵetonon je \"$1\".",
        "apisandbox-alert-page": "Kampoj de ĉi tiu paĝo ne estas validaj.",
        "apisandbox-alert-field": "La valoro de ĉi tiu kampo ne estas valida.",
+       "apisandbox-continue": "Daŭrigi",
+       "apisandbox-continue-clear": "Vakigi",
        "booksources": "Librofontoj",
        "booksources-search-legend": "Serĉi librofontojn",
        "booksources-search": "Serĉi",
        "pageinfo-category-pages": "Nombro de paĝoj",
        "pageinfo-category-subcats": "Nombro de subkategorioj",
        "pageinfo-category-files": "Nombro de dosieroj",
+       "pageinfo-user-id": "Identigilo de uzanto",
        "markaspatrolleddiff": "Marki kiel patrolitan",
        "markaspatrolledtext": "Marki ĉi tiun paĝon patrolita",
        "markaspatrolledtext-file": "Marki ĉi tiu versio de dosiero kiel patrolita",
        "feedback-thanks": "Dankon! Via opinio-esprimo estis afiŝita al la paĝo \"[$2 $1]\".",
        "feedback-thanks-title": "Dankon!",
        "feedback-useragent": "Klienta aplikaĵo:",
-       "searchsuggest-search": "Serĉi",
+       "searchsuggest-search": "Serĉi tra {{SITENAME}}",
        "searchsuggest-containing": "enhavas...",
        "api-error-autoblocked": "Via IPa adreso estis blokita aŭtomate, ĉar ĝi estis uzita far forbara uzanto.",
        "api-error-badaccess-groups": "Vi ne havas permeson alŝuti dosierojn al tiu ĉi vikio.",
        "unlinkaccounts-success": "La konto estis malligita.",
        "authenticationdatachange-ignored": "La ŝanĝo de dateno pri aŭtentikigado ne estis traktita. Eble neniu provizanto estis agorda?",
        "userjsispublic": "Bonvolu noti: subpaĝoj en JavaScript ne enhavu konfidenciajn datumojn ĉar ili estas videblaj por aliaj uzantoj.",
-       "usercssispublic": "Bonvolu noti: subpaĝoj en CSS ne enhavu konfidenciajn datumojn ĉar ili estas videblaj por aliaj uzantoj."
+       "usercssispublic": "Bonvolu noti: subpaĝoj en CSS ne enhavu konfidenciajn datumojn ĉar ili estas videblaj por aliaj uzantoj.",
+       "edit-error-short": "Eraro: $1",
+       "edit-error-long": "Eraroj\n\n$1"
 }
index 847eab1..7393b67 100644 (file)
                        "Ivanhercaz",
                        "AlvaroMolina",
                        "Tokvo",
-                       "Irus"
+                       "Irus",
+                       "Sophivorus"
                ]
        },
        "tog-underline": "Subrayar los enlaces:",
index 7ea777c..eaa4754 100644 (file)
@@ -28,7 +28,8 @@
                        "Purodha",
                        "Macofe",
                        "Adeliine",
-                       "Metsavend"
+                       "Metsavend",
+                       "Cumbril"
                ]
        },
        "tog-underline": "Linkide allakriipsutus:",
        "right-managechangetags": "Koostada ja (in)aktiveerida [[Special:Tags|märgiseid]]",
        "right-applychangetags": "Rakendada [[Special:Tags|märgiseid]] enda muudatuste suhtes",
        "right-changetags": "Lisada ja eemaldada käsitsi rakendatavaid [[Special:Tags|märgiseid]] üksikute redaktsioonide ja logisissekannete juures",
+       "right-deletechangetags": "Kustutada andmebaasist [[Special:Tags|märgiseid]]",
        "grant-group-page-interaction": "Interaktsioon lehekülgedega",
        "grant-group-file-interaction": "Interaktsioon meediafailidega",
        "grant-group-watchlist-interaction": "Interaktsioon sinu jälgimisloendiga",
        "tag-filter": "[[Special:Tags|Märgisefilter]]:",
        "tag-filter-submit": "Filtri",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Märgis|Märgised}}]]: $2)",
+       "tag-mw-contentmodelchange": "sisumudeli muudatus",
+       "tag-mw-contentmodelchange-description": "Lehekülje [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel sisumudelit muutvad] redaktsioonid",
        "tags-title": "Märgised",
        "tags-intro": "See lehekülg loetleb märgised, millega tarkvara võib muudatused märgistada, ja nende kirjeldused.",
        "tags-tag": "Märgise nimi",
index 00d06e0..2053b44 100644 (file)
        "right-changetags": "Lisätä ja poistaa satunnaisia [[Special:Tags|merkkauksia]] yksittäisissä sivuversioissa tai lokimerkinnöissä",
        "right-deletechangetags": "Poistaa [[Special:Tags|merkkauksia]] tietokannasta",
        "grant-generic": "\"$1\" oikeuksien joukko",
-       "grant-group-page-interaction": "Ole vuorovaikutuksessa sivujen kanssa",
-       "grant-group-file-interaction": "Ole vuorovaikutuksessa mediatiedostojen kanssa",
-       "grant-group-watchlist-interaction": "Ole vuorovaikutuksessa oman tarkkailulistasi kanssa",
+       "grant-group-page-interaction": "Käsitellä sivuja",
+       "grant-group-file-interaction": "Käsitellä mediatiedostoja",
+       "grant-group-watchlist-interaction": "Käsitellä tarkkailulistaasi",
        "grant-group-email": "Lähettää sähköpostia",
        "grant-group-high-volume": "Suorittaa suuri määrä toimintoja",
        "grant-group-customization": "Mukauttaminen ja asetukset",
        "grant-editinterface": "Muokata järjestelmäviesti-nimiavaruutta ja käyttäjien CSS/JavaScript-sivuja",
        "grant-editmycssjs": "Muokata käyttäjän omia CSS/JavaScript-sivuja",
        "grant-editmyoptions": "Muokata käyttäjän omia asetuksia",
-       "grant-editmywatchlist": "Muokata omaa tarkkailulistaa",
+       "grant-editmywatchlist": "Muokata tarkkailulistaasi",
        "grant-editpage": "Muokata olemassa olevia sivuja",
        "grant-editprotected": "Muokata suojattuja sivuja",
        "grant-highvolume": "Suorittaa paljon muokkauksia",
        "grant-oversight": "Piilottaa käyttäjiä ja häivyttää yksittäisiä versioita",
        "grant-patrol": "Partioida sivuihin tehtyjä muutoksia",
        "grant-protect": "Suojata sivuja tai poistaa suojauksia",
-       "grant-rollback": "Peräyttää sivuun tehdyt muutokset",
+       "grant-rollback": "Palauttaa sivuun tehtyjä muutoksia",
        "grant-sendemail": "Lähettää sähköpostia toisille käyttäjille",
        "grant-uploadeditmovefile": "Tallentaa, korvata ja siirtää tiedostoja",
        "grant-uploadfile": "Tallentaa uusia tiedostoja",
        "version-libraries-license": "Lisenssi",
        "version-libraries-description": "Kuvaus",
        "version-libraries-authors": "Tekijät",
-       "redirect": "Ohjaus tiedoston, käyttäjän, sivun, sivuversion tai lokin tunnistenumeron mukaan",
+       "redirect": "Ohjaus kohteen tunnistenumeron mukaan",
        "redirect-summary": "Tämä toimintosivu ohjaa tiedostoon (tiedostonimen mukaan), sivulle (version tunnistenumeron tai sivun tunnistenumeron mukaan), käyttäjäsivulle (käyttäjän tunnistenumeron mukaan) taikka lokimerkintään (lokin tunnistenumeron mukaan). Käytetään seuraavasti: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]],[[{{#Special:Redirect}}/user/101]] tai [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Siirry",
        "redirect-lookup": "Hae:",
        "redirect-value": "Arvo:",
        "redirect-user": "Käyttäjän tunnistenumero",
        "redirect-page": "Sivun tunnistenumero",
-       "redirect-revision": "Sivun versio",
+       "redirect-revision": "Sivun versionumero",
        "redirect-file": "Tiedostonimi",
        "redirect-logid": "Lokin tunnistenumero",
        "redirect-not-exists": "Arvoa ei löytynyt",
        "feedback-thanks": "Kiitos. Palautteesi on jätetty sivulle [$2 $1].",
        "feedback-thanks-title": "Kiitos!",
        "feedback-useragent": "User agent:",
-       "searchsuggest-search": "Hae",
+       "searchsuggest-search": "Hae {{SITENAME}}",
        "searchsuggest-containing": "sisältää...",
        "api-error-autoblocked": "Sinun IP-osoitteesi on estetty automaattisesti, koska sitä on käyttänyt estetty käyttäjätunnus.",
        "api-error-badaccess-groups": "Sinulla ei ole oikeutta tallentaa tiedostoja tähän wikiin.",
index 42002f5..8a788a2 100644 (file)
        "passwordreset-capture-help": "Si vous cochez cette case, le courriel (avec le mot de passe temporaire) vous sera affiché en même temps qu’il sera envoyé à l’utilisateur.",
        "passwordreset-email": "Adresse de courriel :",
        "passwordreset-emailtitle": "Détails du compte sur {{SITENAME}}",
-       "passwordreset-emailtext-ip": "Quelqu’un (probablement vous, depuis l’adresse IP $1) a demandé un réinitialisation de votre mot de passe pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :\n\n$2\n\n{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. \nVous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou que vous avez retrouvé votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
+       "passwordreset-emailtext-ip": "Quelqu’un (probablement vous, depuis l’adresse IP $1) a demandé une réinitialisation de votre mot de passe pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :\n\n$2\n\n{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. \nVous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou si vous avez retrouvé votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
        "passwordreset-emailtext-user": "L’utilisateur $1 sur {{SITENAME}} a demandé une réinitialisation de votre mot de passe pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :\n\n$2\n\n{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. \nVous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou si vous avez retrouvé votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.",
        "passwordreset-emailelement": "Nom d’utilisateur : \n$1\n\nMot de passe temporaire : \n$2",
        "passwordreset-emailsentemail": "Si cette adresse de courriel est associée à votre compte, alors un courriel de réinitialisation de mot de passe sera envoyé.",
        "grant-basic": "Droits de base",
        "grant-viewdeleted": "Afficher les fichiers et pages supprimés",
        "grant-viewmywatchlist": "Afficher votre liste de suivi",
+       "grant-viewrestrictedlogs": "Afficher les entrées de journal confidentielles",
        "newuserlogpage": "Journal des créations de comptes utilisateur",
        "newuserlogpagetext": "Cette page affiche l’historique des créations de comptes utilisateur.",
        "rightslog": "Journal des modifications de droits d’utilisateurs",
index 2765143..25c12fd 100644 (file)
        "yourpasswordagain": "Athiontráil d'fhocal faire",
        "createacct-yourpasswordagain": "Deimhnigh an pasfhocal",
        "createacct-yourpasswordagain-ph": "Iontráil an pasfhocal arís",
-       "remembermypassword": "Cuimhnigh ar m'fhocal faire ar an ríomhaire seo (ar feadh uastréimhse de $1 {{PLURAL:$1|lá|lá}})",
        "userlogin-remembermypassword": "Coinnigh logáilte isteach mé",
        "yourdomainname": "D'fhearann",
        "externaldberror": "Bhí earráid bhunachair sonraí ann maidir le fíordheimhniú seachtrach, nóThere was either an external authentication database error or you are not allowed to update your external account.",
        "createacct-reason": "Cúis",
        "createacct-submit": "Cruthaigh do chuntas",
        "createacct-another-submit": "Cruthaigh cuntas eile",
+       "createacct-benefit-heading": "Daoine cosúil leatsa a dhéanann {{SITENAME}}.",
        "badretype": "D'iontráil tú dhá fhocal faire difriúla.",
        "userexists": "Tá an ainm úsáideora sin in úsáid cheana féin.<br />\nRoghnaigh ainm eile agus bain triail eile as.",
        "loginerror": "Earráid leis an logáil isteach",
        "mergehistory-reason": "Fáth:",
        "revertmerge": "Díchumaisc",
        "history-title": "Stair leasú \"$1\"",
+       "difference-title": "An difríocht idir athruithe ar: \"$1\"",
        "lineno": "Líne $1:",
        "compareselectedversions": "Cuir na leagain roghnaithe i gcomparáid",
        "editundo": "cealaigh",
        "anoncontribs": "Dréachtaí",
        "contribsub2": "Do $1 ($2)",
        "nocontribs": "Ní bhfuarthas aon athrú a bhí cosúil le na crítéir seo.",
-       "uctop": " (barr)",
+       "uctop": "(reatha)",
        "month": "Ón mhí seo (agus níos luaithe):",
        "year": "Ón bhliain seo (agus níos luaithe):",
        "sp-contributions-newbies": "Taispeáin dréachtaí ó chuntais nua amháin",
        "sp-contributions-newbies-sub": "Le cuntais nua",
        "sp-contributions-newbies-title": "Dréachtaí úsáideora do chuntasaí nua",
        "sp-contributions-blocklog": "Log coisc",
-       "sp-contributions-deleted": "dréachtaí úsáideora scriosta",
+       "sp-contributions-deleted": "dréachtaí {{GENDER:$1|úsáideora}} scriosta",
        "sp-contributions-uploads": "uaslódálacha",
        "sp-contributions-logs": "logaí",
        "sp-contributions-talk": "plé",
        "whatlinkshere-prev": "{{PLURAL:$1|roimhe|$1 roimhe}}",
        "whatlinkshere-next": "{{PLURAL:$1|ar aghaidh|$1 ar aghaidh}}",
        "whatlinkshere-links": "← naisc",
-       "whatlinkshere-hideredirs": "$1 athsheolaidh",
+       "whatlinkshere-hideredirs": "$1 an t-athsheoladh",
        "whatlinkshere-hidetrans": "$1 trasiamh",
        "whatlinkshere-hidelinks": "$1 nasc",
        "whatlinkshere-hideimages": "$1 naisc comhad",
        "movepagetalktext": "Aistreofar an leathanach plé go huathoibríoch '''ach ní tharlófar sin''':\n* má tá leathanach plé neamhfholamh ann cheana leis an teideal nua, nó\n* má bhaineann tú an tic den bhosca thíos.\n\nSna cásanna sin, caithfidh tú an leathanach a aistrigh nó a chumasc tú féin más maith leat.",
        "movenologintext": "Ní mór duit bheith i d'úsáideoir cláraithe agus [[Special:UserLogin|logáilte isteach]] chun leathanach a hathainmniú.",
        "movenotallowed": "Níl cead agat leathanaigh a athainmniú.",
-       "newtitle": "Go teideal nua",
+       "newtitle": "Teideal nua:",
        "move-watch": "Déan faire an leathanach seo",
        "movepagebtn": "Athainmnigh an leathanach",
        "pagemovedsub": "D'éirigh leis an athainmniú",
        "movelogpagetext": "Liosta is ea seo thíos de leathanaigh athainmnithe.",
        "movereason": "Fáth:",
        "revertmove": "athúsáid",
-       "delete_and_move_text": "==Tá scriosadh riachtanach==\nTá an leathanach sprice (\"[[:$1]]\") ann cheana féin.\nAr mhaith leat é a scriosadh chun áit a dhéanamh don athainmniú?",
+       "delete_and_move_text": "Tá an leathanach sprice (\"[[:$1]]\") ann cheana féin.\nAr mhaith leat é a scriosadh chun áit a dhéanamh don bhogadh?",
        "delete_and_move_confirm": "Tá, scrios an leathanach",
-       "delete_and_move_reason": "Scriosta chun áit a dhéanamh d'athainmniú",
+       "delete_and_move_reason": "Scriosta chun áit a dhéanamh do bhogadh ó [[$1]]",
        "selfmove": "Tá an ainm céanna ag an bhfoinse mar atá ar an ainm sprice; ní féidir leathanach a athainmniú bheith é féin.",
        "export": "Easportáil leathanaigh",
        "exporttext": "Is féidir an téacs agus an stair athraithe de leathanach áirithe nó sraith leathanach a easpórtáil, fillte i bpíosa XML.\nIs féidir é seo a iompórtáil i vicí eile MediaWiki trí úsáid an [[Special:Import|leathanach iompórtála]].\n\nChun leathanaigh a easpórtáil, cuir isteach na teidil sa bhosca thíos, gach teideal ar a líne féin, agus roghnaigh an leagan reatha in éineacht leis na sean-leaganacha agus stair an leathanaigh, nó an leagan reatha in éineacht le faisnéis faoin athrú deireanach.\n\nSa dara cás, is féidir leat nasc a úsáid, mar shampla [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] le haghaidh an leathanaigh \"[[{{MediaWiki:Mainpage}}]]\".",
        "filemissing": "Comhad ar iarraidh",
        "thumbnail_error": "Earráid agus mionsamhail a chruthú: $1",
        "import": "Iompórtáil leathanaigh",
-       "importinterwiki": "Iompórtáil trasna vicithe",
+       "importinterwiki": "Iompórtáil ó vicí eile",
        "import-interwiki-submit": "iompórtáil",
        "import-comment": "Nóta tráchta:",
-       "importtext": "Easportáil an comhad ón vici-fhoinse (le húsáid na [[Special:Export|tréithe easportáil]]), sábháil ar do dhíosca é agus uaslódáil anseo é.",
+       "importtext": "Easpórtáil an comhad ón vicí-fhoinse tríd an[[Special:Export|uirlis easpórtála]] a úsáid. Sábháil ar do ríomhaire é agus uaslódáil anseo é.",
        "import-revision-count": "{{PLURAL:$1|Leagan amháin|$1 leagain}}",
        "importnopages": "Níl aon leathanaigh chun iompórtáil",
        "importfailed": "Theip ar an iompórtáil: $1",
        "exif-orientation-3": "Rothlaithe trí 180°",
        "exif-orientation-4": "Iompaithe go hingearach",
        "exif-orientation-5": "Rothlaithe trí 90° CCW agus iompaithe go hingearach",
-       "exif-orientation-6": "Rothlaithe trí 90° CW",
+       "exif-orientation-6": "Rothlaithe trí 90° tuathalach",
        "exif-orientation-7": "Rothlaithe trí 90° CW agus iompaithe go hingearach",
-       "exif-orientation-8": "Rothlaithe trí 90° CCW",
+       "exif-orientation-8": "Rothlaithe trí 90° deiseal",
        "exif-planarconfiguration-1": "Formáid shmutánach",
        "exif-planarconfiguration-2": "Formáid phlánach",
        "exif-componentsconfiguration-0": "níl a leithéid ann",
        "watchlisttools-view": "Féach ar na hathruithe ábhartha",
        "watchlisttools-edit": "Féach ar do liosta faire ná cuir in eagar é",
        "watchlisttools-raw": "Cuir do amhliosta faire in eagar",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|plé]])",
        "version": "Leagan",
        "version-other": "Eile",
        "version-version": "($1)",
-       "version-license": "Ceadúnas",
+       "version-license": "Ceadúnas MediaWiki",
        "version-software": "Bogearraí suiteáilte",
        "version-software-version": "Leagan",
        "version-entrypoints-header-url": "URL",
        "fileduplicatesearch-info": "$1 × $2 picteillín<br />Méid comhad: $3<br />Saghas MIME: $4",
        "specialpages": "Leathanaigh speisialta",
        "specialpages-group-other": "Leathanaigh speisialta eile",
-       "specialpages-group-login": "Logáil isteach / cruthaigh cuntas",
+       "specialpages-group-login": "Logáil isteach / Cuntas a chruthú",
        "specialpages-group-changes": "Athruithe is déanaí agus logaí",
        "specialpages-group-users": "Úsáideoirí agus cearta",
        "specialpages-group-pages": "Liostaí leathanaigh",
        "specialpages-group-pagetools": "Uirslí leathanach",
-       "specialpages-group-wiki": "Sonraí vicí agus uirslí",
+       "specialpages-group-wiki": "Sonraí agus uirlisí",
        "specialpages-group-spam": "Uirlisí turscar",
        "blankpage": "Leathanach bán",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|chlib amháin|clib}}]]: $2)",
        "logentry-move-move": "{{GENDER:$2|Bhog}} $1 an leathanach $3 go $4",
        "feedback-cancel": "Cealaigh",
        "feedback-message": "Teachtaireacht:",
-       "searchsuggest-search": "Cuardaigh",
+       "searchsuggest-search": "Cuardaigh {{SITENAME}}",
        "expand_templates_remove_comments": "Scrios nótaí tráchta",
        "expand_templates_preview": "Réamhamharc"
 }
index f97a07f..5d7db72 100644 (file)
        "grant-basic": "Dereitos básicos",
        "grant-viewdeleted": "Ver ficheiros e páxinas eliminados",
        "grant-viewmywatchlist": "Ver a súa lista de vixilancia",
+       "grant-viewrestrictedlogs": "Ver as entradas de rexistro confidenciais",
        "newuserlogpage": "Rexistro de creación de usuarios",
        "newuserlogpagetext": "Este é un rexistro de creación de contas de usuario.",
        "rightslog": "Rexistro de dereitos de usuario",
index dc26324..4d24d4d 100644 (file)
        "grant-basic": "הרשאות בסיסיות",
        "grant-viewdeleted": "צפייה בקבצים ודפים שנמחקו",
        "grant-viewmywatchlist": "צפייה ברשימת המעקב שלך",
+       "grant-viewrestrictedlogs": "צפייה בפריטי יומן מוגבלים",
        "newuserlogpage": "יומן רישום משתמשים",
        "newuserlogpagetext": "זהו יומן המכיל הרשמות של משתמשים.",
        "rightslog": "יומן הרשאות",
index 600e3e8..2300869 100644 (file)
        "rollbacklinkcount-morethan": "$1{{PLURAL:$1|編集}}以上を巻き戻し",
        "rollbackfailed": "巻き戻しに失敗しました",
        "rollback-missingparam": "リクエストに必要なパラメーターが見当たりません。",
+       "rollback-missingrevision": "版の情報を読み込めませんでした。",
        "cantrollback": "編集を差し戻せません。\n最後の投稿者が、このページの唯一の作者です。",
        "alreadyrolled": "ページ[[:$1]]の[[User:$2|$2]] ([[User talk:$2|トーク]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) による編集を巻き戻せません。\n他の利用者が既に編集または巻き戻しを行ったためです。\n\nこのページの最後の編集は[[User:$3|$3]] ([[User talk:$3|トーク]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) によるものです。",
        "editcomment": "編集内容の要約: <em>$1</em>",
        "pageinfo-category-pages": "ページ数",
        "pageinfo-category-subcats": "下位カテゴリ数",
        "pageinfo-category-files": "ファイル数",
+       "pageinfo-user-id": "利用者 ID",
        "markaspatrolleddiff": "巡回済みにする",
        "markaspatrolledtext": "このページを巡回済みにする",
        "markaspatrolledtext-file": "このファイルの版を巡回済みにする",
        "feedback-thanks": "ありがとうございます。フィードバックを「[$2 $1]」のページに投稿しました。",
        "feedback-thanks-title": "お願いします!",
        "feedback-useragent": "ユーザーエージェント:",
-       "searchsuggest-search": "検索",
+       "searchsuggest-search": "{{SITENAME}}内を検索",
        "searchsuggest-containing": "この語句を全文検索",
        "api-error-autoblocked": "あなたの IP アドレスは、過去にブロックされた利用者によって使用されていたため、自動的にブロックされました。",
        "api-error-badaccess-groups": "このウィキへのファイルのアップロードが許可されていません。",
index 29bd82d..e02843f 100644 (file)
        "gotaccount": "Бұған дейін тіркеліп пе едіңіз? '''$1'''.",
        "gotaccountlink": "Кіріңіз",
        "userlogin-resetlink": "Қатысушы атын не құпия сөзді ұмыттыңыз ба?",
-       "userlogin-resetpassword-link": "Құпия сөздіңізді ұмыттыңыз ба?",
+       "userlogin-resetpassword-link": "Құпия сөзіңізді ұмыттыңыз ба?",
        "userlogin-helplink2": "Кіруге көмек",
        "userlogin-loggedin": "{{GENDER:$1|$1}} ретінде әлдеқашан кіргенсіз.\nТөмендегі пішінді басқа қатысушы кіруі ретінде қолданыңыз.",
        "userlogin-createanother": "Басқа тіркелгі жасау",
        "passwordtoopopular": "Көп жағдайда таңдалатын құпиясөзді қолдана алмайсыз. Басқа бірегей құпиясөз таңдаңыз.",
        "password-name-match": "Құпия сөзіңіз қатысушы атынан өзгеше болуы қажет.",
        "password-login-forbidden": "Бұл қатысушы аты мен құпия сөзін пайдалануға тыйым салынған.",
-       "mailmypassword": "Құпия сөзді қалпына кеттіру",
+       "mailmypassword": "Құпия сөзді қалпына келтіру",
        "passwordremindertitle": "{{SITENAME}} үшін жаңа уақытша құпия сөз",
        "passwordremindertext": "Біреу (IP мекенжайы: $1, бәлкім өзіңіз боларсыз) {{SITENAME}} жобасында жаңа құпия сөз жөнелету сұранымын жасаған ($4).\nҚатысушы «$2» үшін уақытша құпия сөз жасалды: «$3». Егер бұл сіздің сұранымыңыз болса қазір жүйеге кіріп жаңа құпия сөз таңдауыңыз керек. \nСіздің уақытша құпия сөзіңіз {{PLURAL:$5|бір күнге|$5 күнге}} дейін белсенді болады.\n\nЕгер бұл сұранымды басқа біреу жасаса, не құпия сөздіңізді еске түсіріп енді өзгерткіңіз келмесе ескі құпия сөзді қолдануды жалғастырып осы хатты елемеуіңізге да болады.",
        "noemail": "Осы арада жазылып алынған «$1» қатысушының е-пошта мекенжайы жоқ.",
        "botpasswords-label-update": "Жаңарту",
        "botpasswords-label-cancel": "Болдырмау",
        "botpasswords-label-delete": "Жою",
-       "botpasswords-label-resetpassword": "Құпия сөзді қалпына кеттіру",
+       "botpasswords-label-resetpassword": "Құпия сөзді қалпына келтіру",
        "botpasswords-label-grants": "Қолданылатын гранттар:",
        "botpasswords-bad-appid": "\"$1\" бот атауы жарамды емес.",
        "botpasswords-insert-failed": "\"$1\" бот атауын қосу орындалмады. Ол әлдеқашан қосылған ба еді?",
index 204579e..bc06966 100644 (file)
        "movelogpagetext": "아래는 이동된 모든 문서의 목록입니다.",
        "movesubpage": "{{PLURAL:$1|하위 문서}}",
        "movesubpagetext": "이 문서에는 다음 {{PLURAL:$1|하위 문서}} $1개가 있습니다.",
+       "movesubpagetalktext": "관련 토론 문서에 속한 $1개의 {{PLURAL:$1|하위 문서}}는 아래와 같습니다.",
        "movenosubpage": "이 문서에는 하위 문서가 존재하지 않습니다.",
        "movereason": "이유:",
        "revertmove": "되돌리기",
        "pageinfo-category-pages": "문서 수",
        "pageinfo-category-subcats": "하위 분류 수",
        "pageinfo-category-files": "파일 수",
+       "pageinfo-user-id": "사용자 ID",
        "markaspatrolleddiff": "점검한 문서로 표시",
        "markaspatrolledtext": "이 문서를 점검한 것으로 표시",
        "markaspatrolledtext-file": "이 파일 버전을 점검한 것으로 표시",
index 5c34a58..ee793ef 100644 (file)
        "tooltip-ca-move": "Movere hanc paginam",
        "tooltip-ca-watch": "Hanc paginam observandam habere",
        "tooltip-ca-unwatch": "Hanc paginam non iam observandam habere",
-       "tooltip-search": "Aliquid in {{grammar:ablative|{{SITENAME}}}} quaerere",
+       "tooltip-search": "Quaerere apud {{grammar:accusative|{{SITENAME}}}}",
        "tooltip-search-go": "Si modo sit, paginam huius ipsius tituli invisere",
        "tooltip-search-fulltext": "Hunc textum in paginis requirere",
        "tooltip-p-logo": "Ire ad paginam primam",
        "feedback-close": "Factum",
        "feedback-error2": "Error: Recensio non additur",
        "feedback-message": "Nuntius:",
-       "searchsuggest-search": "Quaerere",
+       "searchsuggest-search": "Quaerere apud {{grammar:accusative|{{SITENAME}}}}",
        "searchsuggest-containing": "continens...",
        "api-error-empty-file": "Fasciculus inmissus vacuus est.",
        "api-error-emptypage": "Vacuas novas paginas creare non licet.",
index 261c400..57262ad 100644 (file)
        "movelogpagetext": "Dëst ass eng Lëscht vun alle geréckelte Säiten.",
        "movesubpage": "{{PLURAL:$1|Ënnersäit|Ënnersäiten}}",
        "movesubpagetext": "Dës Säit huet $1 {{PLURAL:$1|Ënnersäit|Ënnersäiten}} déi hei ënnendrënner stinn.",
+       "movesubpagetalktext": "D'Diskussiounssäit déi dozou gehéiert huet $1 {{PLURAL:$1|Ënnersäit|Ënnersäiten}} déi hei ënnendrënner stinn.",
        "movenosubpage": "Dës Säit huet keng Ënnersäiten.",
        "movereason": "Grond:",
        "revertmove": "zréck réckelen",
        "tags-delete-explanation-initial": "Dir sidd am Gaang d'Markéierung (tag) \"$1\" aus der Datebank ze läschen.",
        "tags-delete-explanation-warning": "Dës Aktioun ass <strong>irreversibel</strong> a <strong>kann net réckgängeg gemaach ginn</strong>, net emol vun den Administrateure vun der Datebank. Sidd Iech sécher datt et dës Markéierung ass déi Dir läsche wëllt.",
        "tags-delete-reason": "Grond:",
+       "tags-delete-submit": "Dës Markéierung definitiv läschen",
        "tags-delete-not-found": "D'Markéierung (tag) ''$1'' gëtt et net.",
        "tags-activate-title": "Markéierung (tag) aktivéieren",
        "tags-activate-question": "Dir sidd am Gaang d'Markéierung \"$1\" z'aktivéieren.",
index 1ba8afd..eb5a34a 100644 (file)
        "grant-basic": "Основни права",
        "grant-viewdeleted": "Преглед на избришани податотеки и страници",
        "grant-viewmywatchlist": "Преглед на вашите набљудувања",
+       "grant-viewrestrictedlogs": "Погл. ограничени дневнички ставки",
        "newuserlogpage": "Дневник на регистрирања на корисници",
        "newuserlogpagetext": "Ова е дневник на регистрирани корисници.",
        "rightslog": "Дневник на корисничките права",
index ddf7c41..369ba48 100644 (file)
@@ -65,8 +65,8 @@
        "thu": "Mācuililhui",
        "fri": "6 ilhui",
        "sat": "7 ilhui",
-       "january": "Ic cē mētztli",
-       "february": "Ic ōmemētztli",
+       "january": "Icce metztli",
+       "february": "Icome metztli",
        "march": "Ic ēyi mētztli",
        "april": "Ic nāuhtetl mētztli",
        "may_long": "Ic mācuīlli mētztli",
        "october-date": "Īcmahtlactlimētztli $1",
        "november-date": "Īcmahtlactlioncēmētztli $1",
        "december-date": "Īcmahtlactliomōmemētztli $1",
-       "pagecategories": "{{PLURAL:$1|Tlaìxmatkàyòtlàlilòtl|Tlaìxmatkàyòtlàlilòme}}",
+       "pagecategories": "{{PLURAL:$1|Neneuhcayotl|Neneuhcayomeh}}",
        "category_header": "Tlâkuilòlpiltin ìpan tlaìxmatkàtlàlilòtl \"$1\"",
        "subcategories": "Tlaìxmatkàtlàlilòpilòmë",
        "category-media-header": "Media \"$1\" neneuhcāyōc",
        "mytalk": "Teixnamiquiliztli",
        "anontalk": "Tēixnāmiquiliztli",
        "navigation": "Nēnemōhualiztli",
-       "and": "&#32;īhuān",
+       "and": "&#32;ihuan",
        "qbfind": "Xicahci",
        "qbbrowse": "Xitlatepotztoca",
        "qbedit": "Xicpatla",
        "faq": "Zan īc tētlatlanīliztli",
        "faqpage": "Project:FAQ",
        "actions": "Āyiliztli",
-       "namespaces": "Tōcātlacāuhtli",
+       "namespaces": "Tocatlacauhtli",
        "variants": "Nepāpan",
-       "navigation-heading": "Nemiliztlahtōlpōhualāmatl",
+       "navigation-heading": "Nemiliztlahtolpohualamatl",
        "errorpagetitle": "Aiuhcāyōtl",
        "returnto": "Ximocuepa īhuīc $1.",
-       "tagline": "Īhuīcpa {{SITENAME}}",
-       "help": "Tēpalēhuiliztli",
-       "search": "Nican tictemoz",
-       "searchbutton": "Tictēmōz",
+       "tagline": "Itechcopa {{SITENAME}}",
+       "help": "Tepalehuiliztli",
+       "search": "Tlatemoliztli",
+       "searchbutton": "Tlatemoliztli",
        "go": "Xiyauh",
        "searcharticle": "Xiyauh",
        "history": "Tlaīxtli ītlahtōllo",
-       "history_short": "Tlahtōllōtl",
+       "history_short": "Tlahtollotl",
        "updatedmarker": "ōmoyancuīx īhuīcpa xōcoyōc notlahpololiz",
        "printableversion": "Tepoztlahcuilōlli",
        "permalink": "Mochipa tzonhuiliztli",
        "specialpage": "Nònkuâkìskàtlaìxtlapalli",
        "personaltools": "In tlein nitēquitiltilia",
        "articlepage": "Xiquitta in tlamantlaīxtli",
-       "talk": "Zānīlli",
+       "talk": "Teixnamiquiliztli",
        "views": "Tlachiyaliztli",
-       "toolbox": "Tequitīhuani",
+       "toolbox": "Tequitihualoni",
        "userpage": "Xiquitta tlatequitiltilīlli zāzanilli",
        "projectpage": "Xiquitta tlachīhualiztli zāzanilli",
        "imagepage": "Xiquitta in zāzanilli īāma",
        "otherlanguages": "Occequīntīn tlahtōlcopa",
        "redirectedfrom": "(Ōmotlacuep īhuīcpa $1)",
        "redirectpagesub": "Ōmotlacuep zāzanilli",
-       "lastmodifiedat": "Inīn zāzanilli ōtlapatlac catca īpan $2, $1.",
+       "lastmodifiedat": "Inin tlahcuilolli omopatlac immanin $1, ipan $2.",
        "viewcount": "Inīn zāzanilli quintlapōhua {{PLURAL:$1|cē tlahpololiztli|$1 tlahpololiztli}}.",
        "protectedpage": "Ōmoquīxtix zāzanilli",
        "jumpto": "Īhuīcpa ticholōz:",
        "jumptonavigation": "nēnemōhualiztli",
-       "jumptosearch": "tlatēmoliztli",
-       "aboutsite": "Ītechcopa {{SITENAME}}",
-       "aboutpage": "Project:Ītechcopa",
+       "jumptosearch": "Tlatemoliztli",
+       "aboutsite": "Itechcopa {{SITENAME}}",
+       "aboutpage": "Project:Itechcopa",
        "copyright": "In tlahcuilōlli cah tlacēcencāhuani īpan $1 tel ahmo intlā īcuepca motēnēhua.",
        "copyrightpage": "{{ns:project}}:Tlachīhualōni ītlapiyaliz",
-       "currentevents": "Āxcāncāyōtl",
+       "currentevents": "Axcancayotl",
        "currentevents-url": "Project:Āxcāncāyōtl",
-       "disclaimers": "Nahuatīllahtōl",
+       "disclaimers": "tlamamalquixtiliztli",
        "edithelp": "Tlapatlaliztechcopa tēpalēhuiliztli",
        "helppage-top-gethelp": "Tēpalēhuiliztli",
        "mainpage": "Yacatlahcuilolli",
-       "mainpage-description": "Huēyitlaīxtli",
+       "mainpage-description": "Yacatlahcuilolli",
        "policy-url": "Project:Nahuatīltōn",
        "portal": "Calīxcuātl tocalpōl",
        "portal-url": "Project:Calīxcuātl tocalpōl",
-       "privacy": "Tlahcuilōlli piyaliznahuatīlli",
+       "privacy": "Tlahcuilolli piyaliznahuatilli",
        "privacypage": "Project:Tlahcuilōlpiyaliztechcopa nahuatīltōn",
        "badaccess": "Tlahuelītiliztechcopa ahcuallōtl",
        "badaccess-group0": "Tehhuātl ahmo tiquichīhua inōn tiquiēlēhuia.",
        "editold": "xicpatla",
        "viewsourceold": "xiquitta mēyalli",
        "editlink": "xicpatla",
-       "viewsourcelink": "xiquitta mēyalli",
+       "viewsourcelink": "Tiquittaz itzintiliz",
        "editsectionhint": "Xicpatla in: $1",
        "toc": "In tlein quipiya inin tlahcuilolli",
        "showtoc": "xicnēxti",
        "page-rss-feed": "\"$1\" RSS huelītiliztli",
        "page-atom-feed": "\"$1\" RSS huelītiliztli",
        "red-link-title": "$1 (ahmo oncah tlahcuilolli)",
-       "nstab-main": "Tlaīxtli",
+       "nstab-main": "Tlahcuilolli-amatl",
        "nstab-user": "Tlatequitiltilīlli",
        "nstab-media": "Mēdiatl",
        "nstab-special": "Noncuahquizqui tlahcuilolli",
        "history-title": "«$1» ītlaceppahuiliztlahtōllo",
        "lineno": "Pāntli $1:",
        "editundo": "Ticxitiniz",
-       "searchresults": "Tlatēmoliztli",
+       "searchresults": "motlatemoliz itlananquilizhuan",
        "searchresults-title": "«$1» tlatēmōliztli īmochīhualiz",
        "prevn": "{{PLURAL:$1|$1}} achtopa",
        "nextn": "niman {{PLURAL:$1|$1}}",
        "newsectionsummary": "Yancuīc tlahtōltzintli: /* $1 */",
        "recentchangeslinked": "Tlapatlaliztli tzonhuilizpan",
        "recentchangeslinked-feed": "Tlapatlaliztli tzonhuilizpan",
-       "recentchangeslinked-toolbox": "Tlapatlaliztli tzonhuilizpan",
+       "recentchangeslinked-toolbox": "Itloc itlapatlalizhuan",
        "recentchangeslinked-title": "Tlapatlaliztli \"$1\" ītechcopa",
        "recentchangeslinked-page": "Tlaīxtli ītōcā:",
-       "upload": "Tlahcuilōlquetza",
+       "upload": "Tlahcuilolquetzaliztli",
        "uploadbtn": "Tlahcuilōlquetza",
        "uploadnologin": "Ahmo ōtimocalac",
        "uploaderror": "Tlaquetzaliztli ahcuallōtl",
        "sp-contributions-search": "Tiquintlatēmōz tlapatlaliztli",
        "sp-contributions-username": "IP nozo tlatequitiltilīlli ītōcā:",
        "sp-contributions-submit": "Tlatēmōz",
-       "whatlinkshere": "In tlein quitzonhuilia nicān",
+       "whatlinkshere": "In tlein quitzonhuilia nican",
        "whatlinkshere-title": "Zāzaniltin quitzonhuiliah $1",
        "whatlinkshere-page": "Zāzanilli:",
        "linkshere": "Inīn zāzaniltin quitzonhuiliah '''[[:$1]]''' īhuīc:",
        "tooltip-pt-mycontris": "{{GENDER:|Motlahcuilōl}}",
        "tooltip-pt-login": "Tihuelīti timocalaqui, tēl ahmo tihuīquilia.",
        "tooltip-pt-logout": "Tiquīzāz",
-       "tooltip-ca-talk": "Inīn tlahcuilōlli zānīllī ītechcopa",
-       "tooltip-ca-edit": "Xicpatla inīn tlaīxtli",
+       "tooltip-ca-talk": "Iteixnamiquiliz itechpa inin tlahcuilolli",
+       "tooltip-ca-edit": "Ticpatlaz inin tlahcuilolli",
        "tooltip-ca-addsection": "Tictzintīz yancuic xeliuhcāyōtl.",
        "tooltip-ca-viewsource": "Inīn zāzanilli ōmoquīxti. Tihuelīti tiquitta ītlahtōlcaquiliztilōni.",
        "tooltip-ca-history": "Achtopa āxcān zāzanilli īhuān in tlatequitiltilīlli ōquinchīuhqueh",
        "tooltip-search": "Tlatēmōz īpan {{SITENAME}}",
        "tooltip-search-go": "Tiyaz ihuicpa tlahcuilolli ica inin huel melahuac tocaitl intla oncah",
        "tooltip-search-fulltext": "Tictemōz inīn tlahcuilōlli in āmac",
-       "tooltip-p-logo": "Xiquitta in tohuēyitlaīx",
+       "tooltip-p-logo": "Tiquittaz in yacatlahcuilolli",
        "tooltip-n-mainpage": "Tiquittaz in yacatlahcuilolli",
        "tooltip-n-mainpage-description": "Xiquitta in tohuēyitlaīx",
        "tooltip-n-portal": "Tlachīhualiztechcopa, inōn tihuelīti titlachīhua, tlatēmoyān",
        "tooltip-n-randompage": "Tiquittaz centlaīxtli",
        "tooltip-n-help": "In tēmachtīlōyān",
        "tooltip-t-whatlinkshere": "Mochīntīn zāzaniltin huiquipan quitzonhuiliah nicān",
-       "tooltip-t-recentchangeslinked": "Yancuic tlapatlaliztli inīn zāzanilhuīcpa moquintzonhuilia",
+       "tooltip-t-recentchangeslinked": "Yancuic tlapatlaliztli ipan tlahcuiloltin tlein quitzonhuilia nican",
        "tooltip-feed-rss": "RSS tlachicāhualiztli inīn zāzaniltechcopa",
        "tooltip-feed-atom": "Atom tlachicāhualiztli inīn zāzaniltechcopa",
        "tooltip-t-contributions": "Tlapōhualmatl ītechpa {{GENDER:$1|inīn tlatequitiltilīlli}} ītlahcuilōl",
        "tooltip-t-emailuser": "Tiquihcuilōz inīn tlatequitiltililhuīc",
-       "tooltip-t-upload": "Tiquinquetzāz tlahcuilōlli",
+       "tooltip-t-upload": "Tiquinquetzaz tlahcuiloltin",
        "tooltip-t-specialpages": "Ìntlapòpòwaltekpànal mochtìn in nònkuâkìskàtlaìxtlapaltìn",
-       "tooltip-t-print": "Tepoztlahcuilōlli",
-       "tooltip-ca-nstab-main": "Xiquitta in tlamantlaīxtli",
+       "tooltip-t-print": "Tepoztlahcuilolli",
+       "tooltip-ca-nstab-main": "Tiquittaz tlein quipiya in tlahcuilolli",
        "tooltip-ca-nstab-user": "Xiquitta tlatequitiltilīlli īzāzanil",
        "tooltip-ca-nstab-special": "Inīn nōncuahquīzqui āmatl, auh ahmohuelitizpatla",
        "tooltip-ca-nstab-project": "Xiquitta in tlatequipanōllaīxtli",
index f356b98..20db454 100644 (file)
        "duplicate-defaultsort": "Advarsel: Standardsorteringen «$2» tar over for den tidligere sorteringen «$1».",
        "duplicate-displaytitle": "<strong>Advarsel:</strong> Visningstittel \"$2\" erstatter tidligere visningstittel \"$1\".",
        "restricted-displaytitle": "<strong>Advarsel:</strong> Visningstittelen «$1» ble ignorert siden den ikke tilsvarer sidens faktiske tittel.",
-       "invalid-indicator-name": "<p>Feil:</strong> Sidestatus-indikatornes <code>navn</code>-attributt kan ikke være tomt.",
+       "invalid-indicator-name": "<p>Feil:</strong> Sidestatus-indikatornes <code>name</code>-attributt kan ikke være tomt.",
        "version": "Versjon",
        "version-extensions": "Installerte utvidelser",
        "version-skins": "Installerte drakter",
        "feedback-thanks": "Din tilbakemelding til siden \"[ $2  $1 ]\" er sendt. Takk skal du ha!",
        "feedback-thanks-title": "Takk!",
        "feedback-useragent": "Brukeragent",
-       "searchsuggest-search": "Søk",
+       "searchsuggest-search": "Søk i {{SITENAME}}",
        "searchsuggest-containing": "inneholder …",
        "api-error-autoblocked": "Din IP-adresse har blitt blokkert automatisk fordi den ble brukt av en blokkert bruker.",
        "api-error-badaccess-groups": "Du har ikke tillatelse til å laste opp filer til denne wikien.",
index 79c3ea9..97dffa4 100644 (file)
        "oct": "Diphalane",
        "nov": "Dibatsela",
        "dec": "Manthole",
+       "january-date": "$1 Pherekgong",
+       "february-date": "$1 Dibokwane",
+       "march-date": "$1 Hlakola",
+       "april-date": "$1 Moranang",
+       "may-date": "$1 Mopitlo",
+       "june-date": "$1 Phupu",
+       "july-date": "$1 Mosegamanye",
+       "august-date": "$1 Phato",
+       "september-date": "$1 Lewedi",
+       "october-date": "$1 Diphalane",
+       "november-date": "$1 Dibatsela",
+       "december-date": "$1 Mathole",
        "pagecategories": "{{PLURAL:$1|Sehlopha|Dihlopha}}",
        "category_header": "Matlakala go sehlopha \"$1\"",
        "subcategories": "Dihlophana",
        "moredotdotdot": "Tše dingwe...",
        "mypage": "Letlakala",
        "mytalk": "Bolela",
-       "anontalk": "Poledišano ya IP ye",
+       "anontalk": "Poledišano",
        "navigation": "Tšwelotšo",
        "and": "&#32;le",
        "qbfind": "Humana",
+       "qbbrowse": "Leba",
        "qbedit": "Fetola",
        "qbpageoptions": "Letlakala le",
        "qbmyoptions": "Matlakala a ka",
        "updatedmarker": "fetotšwe esale ketelo yaka ya mafelelo",
        "printableversion": "''Version'' ya go gatišega",
        "permalink": "Hlomaganyo yao e tiišeditšwego",
+       "view": "Leba",
+       "view-foreign": "Leba go $1",
        "edit": "Fetola",
        "create": "Tlhoma",
        "editthispage": "Fetola letlakala  le",
        "disclaimers": "Hlapa-matsogo",
        "disclaimerpage": "Project:Hlapa-Matsogo",
        "edithelp": "Thušo ya go fetola",
+       "helppage-top-gethelp": "Thušo",
        "mainpage": "Letlakala la Pele",
        "mainpage-description": "Letlakala la Pele",
        "policy-url": "Project:Melao",
-       "portal": "''Portal'' ya badudi",
-       "portal-url": "Project:Portal ya Badudi",
+       "portal": "Sebaka sa badudi",
+       "portal-url": "Project:Sebaka sa Badudi",
        "privacy": "Melao ya praebesi",
        "privacypage": "Project:Polisi ya praefesi",
        "badaccess": "Thušo ya tumello",
        "toc": "Mateng",
        "showtoc": "bontšha",
        "hidetoc": "fihla",
+       "confirmable-yes": "Ee",
+       "confirmable-no": "Aowa",
        "thisisdeleted": "Nyakorela goba hlaphola $1?",
        "viewdeleted": "Nyakorela $1?",
        "restorelink": "{{PLURAL:$1|e tee phetogo ye phumutšwego|phetogo tše $1 tše phumutšwego}}",
        "protectedpagetext": "Letlakala le le notletšwe go thibela diphetogo.",
        "viewsourcetext": "O ka lebelela goba wa kôpiša mothapo wa letlakala le:",
        "namespaceprotected": "Ga ona tokelo ya go fetola matlakala  go  '''$1''' .",
+       "exception-nologin": "Ga wa tsena",
        "yourname": "Leina la mošomiši:",
        "yourpassword": "Ditlhaka-tša-siphiri:",
        "yourpasswordagain": "Tlanya ditlhaka-tša-siphiri gape:",
-       "remembermypassword": "Gopola sedi yaka ya go tsena khomphutha ye (bogolo bja  $1 ya {{PLURAL:$1| letšatši le|matšatši a}})",
        "login": "Tsena",
        "nav-login-createaccount": "Tsena / Tlhola tšhupaleloko (''account'')",
        "userlogin": "Tsena / tlhola tšhupaleloko (''account'')",
+       "userloginnocreate": "Tsena",
        "logout": "Etšwa/Tswalela",
        "userlogout": "Etšwa/Tswalela",
        "notloggedin": "Ga wa tsena",
        "createaccountreason": "Lebaka:",
        "badretype": "Ditlhaka-tša-siphiri tše o di šomišitšego ga di swane.",
        "noname": "Gawa fana ka leina la mošomiši la go loka.",
-       "loginsuccesstitle": "O tsene ka katlego",
+       "loginsuccesstitle": "O tsene",
        "loginsuccess": "'''Bjale o tsene go {{SITENAME}} bjalo ka \"$1\".'''",
-       "nosuchuser": "Ga gona mošomiši wa leina la \"$1\".\nMaina a huduetša ke ditlhaka.\nLebele mopeleto wa gago goba [[Special:CreateAccount|o tlhome mošomiši yo mophsa]].",
+       "nosuchuser": "Ga gona mošomiši wa leina la \"$1\".\nMaina a huduetša ke seemo sa ditlhaka (case sensitive).\nLebele mopeleto wa gago goba [[Special:CreateAccount|o tlhome mošomiši yo mophsa]].",
        "nosuchusershort": "Ga gona mošomiši wa leina la \"$1\". Hlokomela mopeleto wa gago.",
        "nouserspecified": "O swanela ke go fana ka leina la mošomiši.",
        "wrongpassword": "O loketše ditlhaka-tša-siphiri tšeo e sego tšona. Ka kgopelo, leka gape.",
        "passwordremindertext": "Motho yo mongwe (goba wena, gotšwa IP atrese $1) o\nkgopetše gore re moromele Ditlhaka-tša-siphiri tše mfsa tša {{SITENAME}} ($4).\n\nDitlhaka-tša-siphiri tša  mošomiši \"$2\" go tloga bjale ke  \"$3\".\n\nDitlhaka-tša-siphiri di tla šoma {{PLURAL:$5|letšatši|matšatši a $5}}.\n\nGa eba motho yo mongwe esego wena o dirile kgopelo ye, goba o gopola Ditlhaka-tša-siphiri gomme ga o sa\nhloka gore e fetolwe, hlokomologa molaetša wo, o tšwele pele o šumiše Ditlhaka-tša-siphiri tša kgale.",
        "noemail": "Ga gona e-mail atrese ya mošomiši \"$1\".",
        "passwordsent": "\nDihlaka tša siphiri (''password'') tše mphsa di rometšwe go e-mail atrese ya \"$1\".\nRe kgopela gore o tsene ge fetša go e hwetša.",
-       "blocked-mailpassword": "IP atrese ya gago e thibetšwe go dira diphetogo, ka fao ga wa dumellwa\ngo šomiša thulusu ya go hwetša Ditlhaka-tša-siphiri go thibela go hlapanya.",
+       "blocked-mailpassword": "IP atrese ya gago e thibetšwe go dira diphetogo.\nGo thibela go hlapanya, ga wa dumellwa\ngo šomiša thulusu ya go hwetša Ditlhaka-tša-siphiri ka aterese ye.",
        "eauthentsent": "Molaetša wa go tiišetša o  rometšwe go e-mail atrese.\n\nPele re romela melaetša ye mengwe go atrese ye, o kgopelwa go latela ditaelo tšeo dilego molaetšeng go tiišetša gore atrese ke ya gago.",
        "throttled-mailpassword": "Kgopelo ya go fetola ditlhaka-tša-siphiri e rometšwe {{PLURAL:$1|iring|diiring tše $1}} tša gofeta.\nGo thibela go hlapanya/kgobošo, kgopotšo e tee ka {{PLURAL:$1|iri|diiri tše $1}} e tla romellwa.",
        "mailerror": "Gobile le phošo go romeleng molaetša  : $1",
-       "acct_creation_throttle_hit": "Ka maswabi, IP Aterese ya gago e tlhomile {{PLURAL:$1|tšhupaleloko|$1 tša ditšhupaleloko}} e se kgale.\nGa wa dumelwa go tlhoma tše dingwe ka se sebaka.",
+       "acct_creation_throttle_hit": "Ka maswabi, IP Aterese ya gago e tlhomile {{PLURAL:$1|tšhupaleloko|$1 tša ditšhupaleloko}} sebakeng sa $2.\nGa wa dumelwa go tlhoma tše dingwe ka se sebaka.",
        "emailauthenticated": "E-mail atrese ya gago e kgonthišitšwe ka $2  $3.",
        "accountcreated": "Tšhupaleloko (Account) e tlhodilwe",
        "accountcreatedtext": "Tšhupaleloko (account) ya modiri [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) e tlhodilwe.",
        "loginlanguagelabel": "Polelo: $1",
+       "pt-login": "Tsena",
+       "pt-login-button": "Tsena",
+       "pt-createaccount": "Bula tšhupaleloko",
+       "pt-userlogout": "Etšwa/Tswalela",
        "changepassword": "Fetola ditlhaka-tša-siphiri",
        "resetpass_text": "<!-- Tsenya ditlhaka mo -->",
        "oldpassword": "Ditlhaka-tša-siphiri tša kgale:",
        "newpassword": "Ditlhaka-tša-siphiri tše mpsha:",
        "retypenew": "Tlanya ditlhaka tše mphsa tša siphiri gape:",
-       "changepassword-success": "Ditlhaka tša siphiri di fetotšwe ka katlego!",
+       "resetpass_submit": "Lokela ditlhaka-tša-siphiri o tsene",
+       "changepassword-success": "Ditlhaka tša siphiri di fetotšwe!",
        "bold_sample": "Mongwalo wa '''Bold'''",
        "bold_tip": "Ditlhaka tše Bold",
        "italic_sample": "Ditlhaka tše Italic",
        "accmailtext": "Ditlhaka-tša-siphiri tša  [[User talk:$1|$1]]  di rometšwe go $2. Di ka fetolwa go letlaka la <em>[[Special:ChangePassword|go fetola ditlhaka-tša-siphiri ]]</em> ge o tsena.",
        "newarticle": "(mpsha)",
        "newarticletext": "O latetše hlomaganyo go letlakala leo le sego gona ka se sebaka.\nGo tlhola letlakala, thoma go ngwalo lepokising le letelago\n(lebelela [$1 letlakala la thušo] go hwetša šedi).\nGa eba o le fa ka phošo, o ka boela morago ka go šumiša konopo ya '''back''' go ''browser'' ya gago.",
-       "noarticletext": "Ga gona ditlhaka letlakaleng le, oka [[Special:Search/{{PAGENAME}}|fetleka leina la letlakala]] matlakaleng a mangwe, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} fetleka \"logs\"], goba [{{fullurl:{{FULLPAGENAME}}|action=edit}} wa fetola letlakala le]</span>.",
-       "noarticletext-nopermission": "Ga gona ditlhaka letlakaleng le, \noka [[Special:Search/{{PAGENAME}}|fetleka leina la letlakala]] matlakaleng a mangwe,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} fetleka \"logs\"],\n goba [{{fullurl:{{FULLPAGENAME}}|action=edit}} wa fetola letlakala le]</span>.",
+       "noarticletext": "Ga gona ditlhaka letlakaleng le.\nO ka [[Special:Search/{{PAGENAME}}|fetleka leina la letlakala]] matlakaleng a mangwe, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} fetleka \"logs\"], goba [{{fullurl:{{FULLPAGENAME}}|action=edit}} wa fetola letlakala le]</span>.",
+       "noarticletext-nopermission": "Ga gona ditlhaka letlakaleng le.\nO ka [[Special:Search/{{PAGENAME}}|fetleka leina la letlakala]] matlakaleng a mangwe,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} fetleka \"logs\"],\n goba [{{fullurl:{{FULLPAGENAME}}|action=edit}} wa fetola letlakala le]</span>.",
        "note": "'''Ela hloko:'''",
        "previewnote": "'''Elelwa gore ye ke taetšo ya sebopego sa letlakala fela.'''\nDiphetogo tša gago ga šetšo di bolokwa!",
        "editing": "O fetola $1",
        "yourlanguage": "Polelo:",
        "yournick": "Tshaeno:",
        "badsiglength": "Leina la boreelo le letelele kudu.\nLe swanela goba fase ga $1 {{PLURAL:$1|ya tlhaka|tša ditlhaka}}",
-       "prefs-help-realname": "Leina la nnete gale gapeletšwe, efela ge o kgetha go fana ka lona, le tla šomišwa go bontšha diabe mešomong ya gago.",
+       "prefs-help-realname": "Leina la nnete gale gapeletšwe.\nGe o kgetha go fana ka lona, le tla šomišwa go bontšha diabe mešomong ya gago.",
        "prefs-help-email": "Aterese ya E-poso gae hlokagale, efela e ka hlokagala ge dihlaka tša sephiri di fetolwa, ge o ka lebala dihlaka tša gago tša sephiri",
        "prefs-help-email-others": "O ka kgetha gore batho ba bangwe ba bolele le wena ka  e-poso ga kgokaganyo letlakala la gago goba letlakala la dipoledišano.\nGa re fane ka e-poso ya gago go bašumiši ba bangwe ge ba polela le wena ka yona.",
        "prefs-help-email-required": "E-mail atrese eya nyakega.",
        "rightslog": "''log'' ya ditumello tša mošomiši",
        "action-edit": "Fetola letlakala  le",
        "nchanges": "$1 {{PLURAL:$1|phetogo|diphetogo}}",
+       "enhancedrc-history": "histori",
        "recentchanges": "Diphetogo tša bjale",
        "recentchanges-legend": "Dikgetho tša diphetogo tša bjale",
        "recentchanges-summary": "Lebalana diphetogo tše di mphsa-mphsa go wiki  letlakaleng le.",
        "rcnotefrom": "Tlase ke diphetogo go tloga ka <strong>$3, $4</strong> (go  fihla ka <strong>$1</strong>).",
        "rclistfrom": "Laêtša dipheto tše mfsa go thoma go $3 $2",
        "rcshowhideminor": "$1 ya diphetogo tše nnyenyane",
+       "rcshowhideminor-hide": "Fihla",
        "rcshowhidebots": "$1 bots",
+       "rcshowhidebots-show": "Bontšha",
        "rcshowhideliu": "$1 bašumiši bao batsebjawago",
+       "rcshowhideliu-hide": "Fihla",
        "rcshowhideanons": "$1 bašumiši bago se tsebege",
+       "rcshowhideanons-hide": "Fihla",
        "rcshowhidepatr": "$1 diphetogo tše ''patrolled''",
        "rcshowhidemine": "$1 diphetogo tsa ka",
+       "rcshowhidemine-hide": "Fihla",
        "rclinks": "Bontšha diphetogo tša bofelo tše $1 matšatšing a  $2  a bofelo <br />$3",
        "diff": "phapang",
        "hist": "histori",
        "blanknamespace": "(Hlogo)",
        "contributions": "Diabe tša mošomiši",
        "contributions-title": "Diabe tša mošumiši go $1",
-       "mycontris": "Diabe tša ka",
+       "mycontris": "Diabe",
        "contribsub2": "Ya $1 ($2)",
-       "uctop": "(godimo)",
+       "uctop": "(bjale)",
        "month": "Go tloga kgweding (le peleng):",
        "year": "Go tloga ngwageng (le peleng):",
        "sp-contributions-newbies": "Laetša diabe tša bašumiši ba bafsa fela",
        "tooltip-pt-login": "O a kgothatšwa gore o tsene, e efela ga se kgapeletšo.",
        "tooltip-pt-logout": "Etšwa fa/Tswalela/Log out",
        "tooltip-ca-talk": "Poledišano mabapi le letlakala le",
-       "tooltip-ca-edit": "O ka fetola letlakala le. Kgopelo ke gore o šumiše konopo ya go Laetša sebopego sa letlakala pele o le boloka.",
+       "tooltip-ca-edit": "Fetola letlakala  le",
        "tooltip-ca-addsection": "Lokela sekgao se seswa",
        "tooltip-ca-viewsource": "Letlakala le le lotilew. O ka lebelela mothopo fela.",
        "tooltip-ca-history": "Lebelela thumeletšo ya go feta ya letlakala le",
        "lastmodifiedatby": "Letlakala le  fetotšwe la mafelelo ka $2, $1 ke $3.",
        "others": "tše dingwe",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|mošumiši|bašumiši}} $1",
+       "pageinfo-toolboxlink": "Tsebo ya Letlakala",
        "filedeleteerror-short": "Phošo go phumuleng faele: $1",
        "filedeleteerror-long": "Diphošo di hlagile ge go phumulwa faele:\n\n$1",
        "filedelete-missing": "Faele \"$1\" ga e phumulege ka ge e segona.",
        "specialpages": "Matlakala a kgethegilego",
        "external_image_whitelist": " #Tlogela letlakale ka mokgwa wo<pre>\n#Tsenya  \"regular expression fragments\" (parata ya magareng ga //) below\n#These will be matched with the URLs of external (hotlinked) images\n#Those that match will be displayed as images, otherwise only a link to the image will be shown\n#Lines beginning with # are treated as comments\n#This is case-insensitive\n\n#Put all regex fragments above this line. Leave this line exactly as it is</pre>",
        "tag-filter": "[[Special:Tags|Tag]] \"filter\":",
+       "searchsuggest-search": "Fetleka  {{SITENAME}}",
        "expand_templates_output": "Phetho"
 }
index 0e7faf4..705cc5c 100644 (file)
        "htmlform-date-placeholder": "RRRR-MM-DD",
        "htmlform-time-placeholder": "GG:MM:SS",
        "htmlform-datetime-placeholder": "RRRR-MM-DD GG:MM:SS",
+       "htmlform-date-invalid": "Podana przez Ciebie wartość nie jest rozpoznawana jako data. Spróbuj użyć formatu RRRR-MM-DD.",
+       "htmlform-time-invalid": "Podana przez Ciebie wartość nie jest rozpoznawana jako czas. Spróbuj użyć formatu GG:MM:SS.",
+       "htmlform-datetime-invalid": "Podana przez Ciebie wartość nie jest rozpoznawana jako data i czas. Spróbuj użyć formatu RRRR-MM-DD GG:MM:SS.",
+       "htmlform-date-toolow": "Podana przez Ciebie wartość jest wcześniejsza niż dozwolona data $1.",
+       "htmlform-date-toohigh": "Podana przez Ciebie wartość jest późniejsza niż dozwolona data $1.",
+       "htmlform-time-toolow": "Podana przez Ciebie wartość jest wcześniejsza niż dozwolony czas $1.",
+       "htmlform-time-toohigh": "Podana przez Ciebie wartość jest późniejsza niż dozwolony czas $1.",
+       "htmlform-datetime-toolow": "Podana przez Ciebie wartość jest wcześniejsza niż dozwolona data i czas $1.",
+       "htmlform-datetime-toohigh": "Podana przez Ciebie wartość jest późniejsza niż dozwolona data i czas $1.",
        "htmlform-title-badnamespace": "[[:$1]] nie znajduje się w przestrzeni nazw „{{ns:$2}}”.",
        "htmlform-title-not-creatable": "Nie można użyć „$1” do utworzenia tytułu strony",
        "htmlform-title-not-exists": "$1 nie istnieje.",
index 0631fcc..fbd2f57 100644 (file)
        "nstab-category": "Categoria",
        "mainpage-nstab": "Página principal",
        "nosuchaction": "Operação não existe",
-       "nosuchactiontext": "A operação especificada pela URL é inválida.\nÉ possível que tenha escrito mal a URL ou seguido uma ligação incorreta.\nIsto pode também indicar um defeito no software da {{SITENAME}}.",
+       "nosuchactiontext": "A operação especificada pelo URL é inválida.\nÉ possível que tenha escrito mal o URL ou seguido uma ligação incorreta.\nIsto pode também indicar um defeito no software da {{SITENAME}}.",
        "nosuchspecialpage": "Esta página especial não existe",
        "nospecialpagetext": "<strong>Solicitou uma página especial inválida.</strong>\n\nEncontra uma lista das páginas especiais válidas em [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Erro",
        "databaseerror-query": "Consulta: $1",
        "databaseerror-function": "Função: $1",
        "databaseerror-error": "Erro: $1",
-       "transaction-duration-limit-exceeded": "Para evitar a criação de lag replicação alta, esta operação foi abortada porque a duração de gravação ($1) excedeu o limite de $2 {{PLURAL:$2|segundo|segundos}}. Se está a mudar muitos itens de uma vez, tente fazer várias operações menores em vez disso.",
+       "transaction-duration-limit-exceeded": "Para evitar grandes atrasos na replicação, esta operação foi cancelada porque a duração de gravação ($1) excedeu o limite de $2 {{PLURAL:$2|segundo|segundos}}. Se está a mudar muitos objetos de uma só vez, tente desmultiplicar a operação em várias de menor dimensão.",
        "laggedslavemode": "'''Aviso:''' A página pode não conter as atualizações mais recentes.",
        "readonly": "Base de dados bloqueada (limitada a leituras)",
        "enterlockreason": "Introduza um motivo para bloquear, incluindo uma estimativa de quando será desbloqueada",
        "readonlytext": "A base de dados está atualmente bloqueada para novas entradas e outras modificações, provavelmente para uma manutenção de rotina, após a qual voltará à sua normalidade.\n\nO administrador que a bloqueou deu a seguinte explicação: $1",
-       "missing-article": "A base de dados não encontrou o texto de uma página que deveria ter encontrado, com o nome \"$1\" $2.\n\nGeralmente, esta situação ocorre ao clicar numa ligação para diferenças desatualizada ou para o histórico de uma página que tenha sido removida.\n\nSe nenhuma destas situações se verifica, pode ter encontrado um defeito no programa.\nAnote a URL e reporte este incidente a um [[Special:ListUsers/sysop|administrador]], por favor.",
+       "missing-article": "A base de dados não encontrou o texto de uma página que deveria ter encontrado, com o nome \"$1\" $2.\n\nGeralmente, esta situação ocorre ao clicar numa ligação para diferenças desatualizada ou para o histórico de uma página que tenha sido removida.\n\nSe nenhuma destas situações se verifica, pode ter encontrado um defeito no programa.\nAnote o URL e reporte este incidente a um [[Special:ListUsers/sysop|administrador]], por favor.",
        "missingarticle-rev": "(revisão#: $1)",
        "missingarticle-diff": "(Dif.: $1, $2)",
        "readonly_lag": "A base de dados foi automaticamente bloqueada enquanto os servidores secundários se sincronizam com o primário",
        "logdelete-selected": "{{PLURAL:$1|Evento do registo selecionado|Eventos do registo selecionados}}:",
        "revdelete-text-text": "Revisões eliminadas ainda aparecerão no histórico da página, mas parte do seu conteúdo estará inacessível para o público.",
        "revdelete-text-file": "Versões eliminadas do ficheiro ainda aparecerão no histórico da página, mas parte do seu conteúdo estará inacessível para o público.",
-       "logdelete-text": "Os eventos eliminados ainda aparecerão no histórico da página, mas pare de seu conteúdo será inacessível ao público.",
+       "logdelete-text": "Os eventos eliminados ainda aparecerão no histórico da página, mas parte do seu conteúdo será inacessível ao público.",
        "revdelete-text-others": "Outros administradores serão ainda capazes de aceder ao conteúdo oculto e torná-lo visível novamente, a menos que sejam definidas restrições adicionais.",
        "revdelete-confirm": "Por favor, confirme que pretende executar esta operação, que compreende as suas consequências e que o faz em concordância com as [[{{MediaWiki:Policy-url}}|políticas e recomendações]].",
        "revdelete-suppress-text": "A supressão '''só''' deverá ser usada nos seguintes casos:\n* Informação potencialmente caluniosa, difamatória ou injuriosa\n* Informação pessoal imprópria\n*: ''endereços de domicílio e números de telefone, números de identificação nacional, etc''",
        "right-purge": "Limpar a ''cache'' de uma página no servidor sem confirmação",
        "right-autoconfirmed": "Não ser afetado pelos limites de frequência baseados no número de IP",
        "right-bot": "Ser tratado como um processo automatizado",
-       "right-nominornewtalk": "Não despoletar o aviso de mensagens novas ao fazer edições menores a páginas de discussão",
+       "right-nominornewtalk": "Não desencadear o aviso de mensagens novas ao fazer edições menores a páginas de discussão",
        "right-apihighlimits": "Usar limites superiores nas consultas ''(queries)'' via API",
        "right-writeapi": "Usar a API de escrita",
        "right-delete": "Eliminar páginas",
        "grant-basic": "Direitos básicos",
        "grant-viewdeleted": "Ver páginas e ficheiros eliminados",
        "grant-viewmywatchlist": "Ver a sua lista de páginas vigiadas",
+       "grant-viewrestrictedlogs": "Ver entradas de registo restritas",
        "newuserlogpage": "Registo de criação de utilizadores",
        "newuserlogpagetext": "Este é um registo de novas contas de utilizador",
        "rightslog": "Registo de privilégios de utilizadores",
        "action-upload": "enviar este ficheiro",
        "action-reupload": "sobrescrever este ficheiro existente",
        "action-reupload-shared": "sobrepor este ficheiro num repositório partilhado",
-       "action-upload_by_url": "enviar este ficheiro através de uma URL",
+       "action-upload_by_url": "enviar este ficheiro através de um URL",
        "action-writeapi": "utilizar o modo de escrita da API",
        "action-delete": "eliminar esta página",
        "action-deleterevision": "eliminar esta edição",
        "uploaded-setting-href-svg": "O uso da tag \"set\" para adicionar o atributo \"href\" ao elemento mãe está bloqueado.",
        "uploaded-wrong-setting-svg": "O uso da tag \"set\" para adicionar um destino remoto/de dados/<i>script</i> a qualquer atributo está bloqueado. No ficheiro SVG enviado foi encontrado <code>&lt;set to=\"$1\"&gt;</code>.",
        "uploaded-setting-handler-svg": "A configuração do atributo \"handler\" com destino remoto/de dados/<i>script</i> em ficheiros SVG está bloqueada. Foi detetado <code>$1=\"$2\"</code> no ficheiro SVG carregado.",
-       "uploaded-remote-url-svg": "A configuração de qualquer atributo de estilo com uma URL remota em ficheiros SVG está bloqueada. Foi detetado <code>$1=\"$2\"</code> no ficheiro SVG carregado.",
-       "uploaded-image-filter-svg": "Foi encontrado um filtro de imagem com a URL: <code>&lt;$1 $2=\"$3\"&gt;</code> no ficheiro SVG carregado.",
+       "uploaded-remote-url-svg": "A configuração de qualquer atributo de estilo com um URL remoto em ficheiros SVG está bloqueada. Foi detetado <code>$1=\"$2\"</code> no ficheiro SVG carregado.",
+       "uploaded-image-filter-svg": "Foi encontrado um filtro de imagem com o URL: <code>&lt;$1 $2=\"$3\"&gt;</code> no ficheiro SVG carregado.",
        "uploadscriptednamespace": "Este ficheiro SVG contém um domínio que não é permitido \"$1\".",
        "uploadinvalidxml": "Erro detectado na análise do XML do ficheiro carregado.",
        "uploadvirus": "O ficheiro contém um vírus! \nDetalhes: $1",
        "upload-file-error-text": "Ocorreu um erro interno ao tentar criar um ficheiro temporário no servidor.\nContacte um [[Special:ListUsers/sysop|administrador]], por favor.",
        "upload-misc-error": "Erro de carregamento desconhecido",
        "upload-misc-error-text": "Ocorreu um erro desconhecido durante o envio.\nVerifique se o endereço (URL) é válido e acessível e tente novamente.\nCaso o problema persista, contacte um [[Special:ListUsers/sysop|administrador]].",
-       "upload-too-many-redirects": "A URL continha demasiados redirecionamentos",
+       "upload-too-many-redirects": "O URL continha demasiados redirecionamentos",
        "upload-http-error": "Ocorreu um erro HTTP: $1",
        "upload-copy-upload-invalid-domain": "Não é possível realizar carregamentos remotos neste domínio.",
        "upload-foreign-cant-upload": "Esta wiki não está configurada para carregar ficheiros para o repositório externo solicitado.",
        "img-auth-streaming": "A fazer a transmissão de \"$1\".",
        "img-auth-public": "A função do img_auth.php é produzir ficheiros a partir de uma wiki privada.\nEsta wiki está configurada como uma wiki pública.\nPara optimizar a segurança, o img_auth.php está impossibilitado de executar.",
        "img-auth-noread": "O utilizador não tem acesso de leitura ao ficheiro \"$1\".",
-       "http-invalid-url": "URL inválida: $1",
-       "http-invalid-scheme": "URL iniciadas pelo prefixo \"$1\" não são aceites.",
+       "http-invalid-url": "URL inválido: $1",
+       "http-invalid-scheme": "URL iniciados pelo prefixo \"$1\" não são aceites.",
        "http-request-error": "O pedido HTTP falhou devido a um erro desconhecido.",
        "http-read-error": "Erro de leitura HTTP.",
        "http-timed-out": "O pedido HTTP expirou.",
-       "http-curl-error": "Ocorreu um erro ao aceder à URL: $1",
+       "http-curl-error": "Ocorreu um erro ao aceder ao URL: $1",
        "http-bad-status": "Ocorreu um problema durante o pedido HTTP: $1 $2",
-       "upload-curl-error6": "Não foi possível aceder à URL",
-       "upload-curl-error6-text": "Não foi possível aceder à URL.\nVerifique se o endereço está correto e o sítio disponível, por favor.",
+       "upload-curl-error6": "Não foi possível aceder ao URL",
+       "upload-curl-error6-text": "Não foi possível aceder ao URL.\nVerifique se o endereço está correto e o sítio disponível, por favor.",
        "upload-curl-error28": "Tempo limite para o envio do ficheiro excedido",
        "upload-curl-error28-text": "O sítio demorou muito tempo a responder. Verifique que o sítio está disponível, aguarde alguns momentos e tente novamente, por favor. Talvez queira tentar num horário menos congestionado.",
        "license": "Licença:",
        "nolicense": "Nenhuma selecionada",
        "licenses-edit": "Editar opções de licença",
        "license-nopreview": "(Antevisão indisponível)",
-       "upload_source_url": "(um ficheiro de uma URL válida, publicamente acessível)",
+       "upload_source_url": "(um ficheiro de um URL válido, publicamente acessível)",
        "upload_source_file": "(um ficheiro no seu computador)",
        "listfiles-delete": "eliminar",
        "listfiles-summary": "Esta página especial mostra todos os ficheiros carregados.",
        "ancientpages": "Páginas mais antigas",
        "move": "Mover",
        "movethispage": "Mover esta página",
-       "unusedimagestext": "Os seguintes ficheiros existem mas não são usados na wiki.\nNo entanto, outros sítios na Internet podem ter ligação para um ficheiro através de uma URL direta e, por isso, podem estar listados ficheiros que estão a ser ativamente usados por entidades externas.",
+       "unusedimagestext": "Os seguintes ficheiros existem mas não são usados na wiki.\nNo entanto, outros sítios na Internet podem ter ligação para um ficheiro através de um URL direto e, por isso, podem estar listados ficheiros que estão a ser ativamente usados por entidades externas.",
        "unusedcategoriestext": "As seguintes categorias existem, embora nenhuma página ou categoria faça uso delas.",
        "notargettitle": "Sem alvo",
        "notargettext": "Especifique sobre que página alvo ou utilizador pretende executar esta função.",
        "tooltip-ca-talk": "Discussão sobre o conteúdo da página",
        "tooltip-ca-edit": "Editar esta página",
        "tooltip-ca-addsection": "Iniciar uma nova secção",
-       "tooltip-ca-viewsource": "Esta página está protegida.\nApenas pode visualizar o seu conteúdo",
+       "tooltip-ca-viewsource": "Esta página está protegida.\nSó pode ver o conteúdo.",
        "tooltip-ca-history": "Edições anteriores desta página.",
        "tooltip-ca-protect": "Proteger esta página",
        "tooltip-ca-unprotect": "Alterar a proteção desta página",
        "monthsall": "todos",
        "confirmemail": "Confirmar endereço de correio eletrónico",
        "confirmemail_noemail": "Não tem um endereço de correio eletrónico válido nas suas [[Special:Preferences|preferências de utilizador]].",
-       "confirmemail_text": "{{SITENAME}} requer que valide o seu endereço de correio eletrónico antes de usar as funcionalidades de correio.\nClique o botão abaixo para enviar uma mensagem de confirmação para o seu endereço.\nA mensagem incluirá uma URL que contém um código;\ninsira a URL no seu navegador para confirmar que o seu endereço de correio eletrónico é válido.",
+       "confirmemail_text": "{{SITENAME}} requer que valide o seu endereço de correio eletrónico antes de usar as funcionalidades de correio.\nClique o botão abaixo para enviar uma mensagem de confirmação para o seu endereço.\nA mensagem incluirá um URL que contém um código;\ninsira o URL no seu navegador para confirmar que o seu endereço de correio eletrónico é válido.",
        "confirmemail_pending": "Um código de confirmação já lhe foi enviado;\ncaso tenha criado a conta recentemente, é recomendado que aguarde alguns minutos até o receber antes de tentar pedir um novo código.",
        "confirmemail_send": "Enviar código de confirmação",
        "confirmemail_sent": "Correio de confirmação enviado.",
        "scarytranscludedisabled": "[Transclusão interwikis foi impossibilitada]",
        "scarytranscludefailed": "[Não foi possível obter a predefinição a partir de $1]",
        "scarytranscludefailed-httpstatus": "[Não foi possível obter a predefinição a partir de $1: HTTP $2]",
-       "scarytranscludetoolong": "[URL longa demais]",
+       "scarytranscludetoolong": "[O URL é demasiado longo]",
        "deletedwhileediting": "<strong>AVISO:</strong> Esta página foi eliminada depois de ter começado a editá-la!",
        "confirmrecreate": "Depois de ter começado a editar esta página, {{GENDER:$1|o utilizador|a utilizadora|o(a) utilizador(a)}} [[User:$1|$1]] ([[User talk:$1|discussão]]) eliminou-a pelo seguinte motivo:\n: <em>$2</em>\nPor favor, confirme que quer realmente recriar esta página.",
        "confirmrecreate-noreason": "{{GENDER:$1|O utilizador|A utilizadora|O(a) utilizador(a)}} [[User:$1|$1]] ([[User talk:$1|discussão]]) eliminou esta página depois de ter começado a editá-la. Confirme que deseja recriar a página, por favor.",
        "specialpages-group-developer": "Ferramentas de desenvolvimento",
        "blankpage": "Página em branco",
        "intentionallyblankpage": "Esta página foi intencionalmente deixada em branco",
-       "external_image_whitelist": " # Deixe esta linha exatamente como ela está<pre>\n# Coloque fragmentos de expressões regulares (apenas a parte entre //) abaixo\n# Estas serão comparadas com as URL das imagens externas (com ligação direta)\n# As que corresponderem serão apresentadas como imagens, caso contrário apenas será apresentado um link para a imagem\n# As linhas que começam com um símbolo de cardinal (#) são tratadas como comentários\n# Esta lista não distingue maiúsculas de minúsculas\n\n# Coloque todos os fragmentos de expressões regulares (regex) acima desta linha. Deixe esta linha exatamente como ela está</pre>",
+       "external_image_whitelist": " # Deixe esta linha exatamente como ela está<pre>\n# Coloque fragmentos de expressões regulares (apenas a parte entre //) abaixo\n# Estas serão comparadas com os URL das imagens externas (com ligação direta)\n# As que corresponderem serão apresentadas como imagens, caso contrário apenas será apresentado um link para a imagem\n# As linhas que começam com um símbolo de cardinal (#) são tratadas como comentários\n# Esta lista não distingue maiúsculas de minúsculas\n\n# Coloque todos os fragmentos de expressões regulares (regex) acima desta linha. Deixe esta linha exatamente como ela está</pre>",
        "tags": "Etiquetas de modificação válidas",
        "tag-filter": "Filtro de [[Special:Tags|etiquetas]]:",
        "tag-filter-submit": "Filtrar",
        "logentry-delete-revision-legacy": "$1 {{GENDER:$2|alterou}} a visibilidade de revisões na página $3",
        "logentry-suppress-delete": "$1 {{GENDER:$2|suprimiu}} a página $3",
        "logentry-suppress-event": "$1 {{GENDER:$2|alterou}} secretamente a visibilidade de {{PLURAL:$5|uma entrada|$5 entradas}} em $3: $4",
-       "logentry-suppress-revision": "$1 secretamente alterou a visibilidade de {{PLURAL:$5|uma revisão|$5 revisões}} em $3: $4",
+       "logentry-suppress-revision": "$1 alterou secretamente a visibilidade de {{PLURAL:$5|uma revisão|$5 revisões}} em $3: $4",
        "logentry-suppress-event-legacy": "$1 {{GENDER:$2|alterou}} secretamente a visibilidade de entradas de registo em $3",
        "logentry-suppress-revision-legacy": "$1 {{GENDER:$2|alterou}} secretamente a visibilidade de revisões da página $3",
        "revdelete-content-hid": "conteúdo oculto",
index cde2575..04048d4 100644 (file)
        "grant-basic": "Name for grant \"basic\".\n{{Related|Grant}}",
        "grant-viewdeleted": "Name for grant \"viewdeleted\".\n{{Related|Grant}}",
        "grant-viewmywatchlist": "Name for grant \"viewmywatchlist\".\n{{Related|Grant}}\n{{Identical|View your watchlist}}",
+       "grant-viewrestrictedlogs": "Name for grant \"viewrestrictedlogs\".\n{{Related|Grant}}",
        "newuserlogpage": "{{doc-logpage}}\n\nPart of the \"Newuserlog\" extension. It is both the title of [[Special:Log/newusers]] and the link you can see in [[Special:RecentChanges]].",
        "newuserlogpagetext": "Part of the \"Newuserlog\" extension. It is the description you can see on [[Special:Log/newusers]].",
        "rightslog": "{{doc-logpage}}\n\nIn [[Special:Log]]",
index bb89a09..45543b5 100644 (file)
        "notextmatches": "Manam ima p'anqakunap qillqankunapipas tarisqachu",
        "prevn": "{{PLURAL:$1|$1}} ñawpaq",
        "nextn": "{{PLURAL:$1|$1}} qatiq",
+       "prev-page": "ñawpaqnin p'anqa",
+       "next-page": "qatiqnin p'anqa",
        "prevn-title": "Ñawpaq $1 {{PLURAL:$1|taripasqa|taripasqakuna}}",
        "nextn-title": "Qatiq $1 {{PLURAL:$1|taripasqa|taripasqakuna}}",
        "shown-title": "Huk p'anqapi $1 {{PLURAL:$1|taripasqata|taripasqakunata}} rikuchiy",
        "htmlform-chosen-placeholder": "Akllanata akllay",
        "htmlform-cloner-create": "Astawan yapay",
        "htmlform-cloner-delete": "Qichuy",
-       "sqlite-has-fts": "$1 hunt'a qillqa maskana yanapawan",
-       "sqlite-no-fts": "$1 mana hunt'a qillqa maskana yanapawan",
        "logentry-delete-delete": "{{GENDER:$2|}}$1 sutiyuq ruraqqa $3 nisqa p'anqatam qullun",
        "logentry-delete-restore": "{{GENDER:$2|}}$1 sutiyuq ruraqqa $3 nisqa p'anqatam qullusqamanta paqarichin",
        "logentry-delete-event": "{{GENDER:$2|}}$1 sutiyuq ruraqqa {{PLURAL:$5|huk hallch'ay|$5 hallch'ay}} ruraypa rikunalla kayninta wakinchan $3 p'anqapi: $4",
index 877e048..3a024d8 100644 (file)
        "grant-basic": "Osnovne pravice",
        "grant-viewdeleted": "Ogled izbrisanih datotek in strani",
        "grant-viewmywatchlist": "Ogled svojega spiska nadzorov",
+       "grant-viewrestrictedlogs": "Ogled omejenih dnevniških vnosov",
        "newuserlogpage": "Dnevnik registracij uporabnikov",
        "newuserlogpagetext": "Prikazan je dnevnik nedavnih registracij novih uporabnikov.",
        "rightslog": "Dnevnik uporabniških pravic",
index bc56eeb..f9c7738 100644 (file)
        "qbfind": "Пронађи",
        "qbbrowse": "Потражи",
        "qbedit": "Уреди",
-       "qbpageoptions": "Ð\9fоÑ\81Ñ\82авке Ñ\81Ñ\82Ñ\80аниÑ\86е",
+       "qbpageoptions": "Ð\9eва Ñ\81Ñ\82Ñ\80аниÑ\86а",
        "qbmyoptions": "Моје странице",
        "faq": "НПП",
        "faqpage": "Project:НПП",
        "history": "Историја странице",
        "history_short": "Историја",
        "updatedmarker": "ажурирано од моје последње посете",
-       "printableversion": "Ð\97а штампање",
+       "printableversion": "Ð\92еÑ\80зиÑ\98а Ð·а штампање",
        "permalink": "Трајна веза",
        "print": "Штампај",
        "view": "Погледај",
        "translateinterface": "Да додате или промените преводе за све викије, посетите [https://translatewiki.net/ Транслејтвики], пројекат за локализацију Медијавикија.",
        "cascadeprotected": "Ова страница је закључана јер садржи {{PLURAL:$1|следећу страницу која је заштићена|следеће странице које су заштићене}} „преносивом“ заштитом:\n$2",
        "namespaceprotected": "Немате дозволу да уређујете странице у именском простору <strong>$1</strong>.",
-       "customcssprotected": "Ð\9dемаÑ\82е Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\83 Ð´Ð° Ð¼ÐµÑ\9aаÑ\82е Ð¾Ð²Ñ\83 CSS Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ñ\98еÑ\80 Ñ\81адÑ\80жи Ð»Ð¸Ñ\87не Ð¿Ð¾Ñ\81Ñ\82авке другог корисника.",
+       "customcssprotected": "Ð\9dемаÑ\82е Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\83 Ð´Ð° Ð¼ÐµÑ\9aаÑ\82е Ð¾Ð²Ñ\83 CSS Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 Ñ\98еÑ\80 Ñ\81адÑ\80жи Ð»Ð¸Ñ\87на Ð¿Ð¾Ð´ÐµÑ\88аваÑ\9aа другог корисника.",
        "customjsprotected": "Немате дозволу да мењате ову страницу јаваскрипта јер садржи личне поставке другог корисника.",
        "mycustomcssprotected": "Немате дозволу за мењање ове CSS странице.",
        "mycustomjsprotected": "Немате дозволу за мењање ове JavaScript странице.",
        "noemailcreate": "Морате навести исправну имејл адресу.",
        "passwordsent": "Нова лозинка је послата на имејл адресу {{GENDER:$1|корисника|кориснице|корисника}} $1.\nПријавите се пошто је примите.",
        "blocked-mailpassword": "Ваша IP адреса има забрану уређивања. Ради спречавања злоупотребе, није дозвољено враћање лозинке са ње.",
-       "eauthentsent": "Ð\9dа Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ñ\83 Ð¸Ð¼ÐµÑ\98л Ð°Ð´Ñ\80еÑ\81Ñ\83 Ñ\98е Ð¿Ð¾Ñ\81лаÑ\82 Ð¿Ð¾Ñ\82вÑ\80дни ÐºÐ¾Ð´.\nÐ\9fÑ\80е Ð½ÐµÐ³Ð¾ Ñ\88Ñ\82о Ð¿Ð¾Ñ\88аÑ\99емо Ð´Ð°Ñ\99Ñ\9aе Ð¿Ð¾Ñ\80Ñ\83ке, Ð¿Ñ\80аÑ\82иÑ\82е Ñ\83пÑ\83Ñ\82Ñ\81Ñ\82ва Ñ\81 Ð¸Ð¼ÐµÑ\98ла Ð´Ð° Ð±Ð¸Ñ\81Ñ\82е Ð¿Ð¾Ñ\82вÑ\80дили Ð´Ð° Ñ\81Ñ\82е Ð²и отворили налог.",
+       "eauthentsent": "Ð\9dа Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ñ\83 Ð¸Ð¼ÐµÑ\98л Ð°Ð´Ñ\80еÑ\81Ñ\83 Ñ\98е Ð¿Ð¾Ñ\81лаÑ\82 Ð¿Ð¾Ñ\82вÑ\80дни ÐºÐ¾Ð´.\nÐ\9fÑ\80е Ð½ÐµÐ³Ð¾ Ñ\88Ñ\82о Ð¿Ð¾Ñ\88аÑ\99емо Ð´Ð°Ñ\99Ñ\9aе Ð¿Ð¾Ñ\80Ñ\83ке, Ð¿Ñ\80аÑ\82иÑ\82е Ñ\83пÑ\83Ñ\82Ñ\81Ñ\82ва Ñ\81 Ð¸Ð¼ÐµÑ\98ла Ð´Ð° Ð±Ð¸Ñ\81Ñ\82е Ð¿Ð¾Ñ\82вÑ\80дили Ð´Ð° Ñ\81Ñ\82е Ð\92и отворили налог.",
        "throttled-mailpassword": "Порука за промену лозинке је послата у {{PLURAL:$1|1=последњих сат времена|последња $1 сата|последњих $1 сати}}.\nДа бисмо спречили злоупотребу, подсетник шаљемо само једном у року од {{PLURAL:$1|1=сат времена|$1 сата|$1 сати}}.",
        "mailerror": "Грешка при слању поруке: $1",
        "acct_creation_throttle_hit": "Посетиоци овог викија који користе вашу ИП адресу су већ отворили {{PLURAL:$1|1=један налог|$1 налога}} претходни $2, што је највећи дозвољени број у том временском периоду.\nЗбог тога посетиоци с ове ИП адресе тренутно не могу отворити више налога.",
        "emailauthenticated": "Ваша имејл адреса је потврђена $2 у $3.",
-       "emailnotauthenticated": "Ð\92аÑ\88а Ð¸Ð¼ÐµÑ\98л Ð°Ð´Ñ\80еÑ\81а Ñ\98оÑ\88 Ð½Ð¸Ñ\98е Ð¿Ð¾Ñ\82вÑ\80Ñ\92ена.\nÐ\9fоÑ\80Ñ\83ке Ð½ÐµÑ\9bе Ð±Ð¸Ñ\82и Ð¿Ð¾Ñ\81лаÑ\82е ни у једном од следећих случајева.",
+       "emailnotauthenticated": "Ð\92аÑ\88а Ð¸Ð¼ÐµÑ\98л Ð°Ð´Ñ\80еÑ\81а Ñ\98оÑ\88 Ð½Ð¸Ñ\98е Ð¿Ð¾Ñ\82вÑ\80Ñ\92ена.\nÐ\98меÑ\98л Ð½ÐµÑ\9bе Ð±Ð¸Ñ\82и Ð¿Ð¾Ñ\81лаÑ\82 ни у једном од следећих случајева.",
        "noemailprefs": "Унесите имејл адресу како би ове могућности радиле.",
        "emailconfirmlink": "Потврдите своју имејл адресу",
        "invalidemailaddress": "Имејл адреса не може бити прихваћена јер је неисправног облика.\nУнесите исправну адресу или оставите празно поље.",
        "pt-createaccount": "Отвори налог",
        "pt-userlogout": "Одјави ме",
        "php-mail-error-unknown": "Непозната грешка у функцији PHP mail().",
-       "user-mail-no-addy": "Ð\9fокÑ\83Ñ\88али Ñ\81Ñ\82е Ð´Ð° Ð¿Ð¾Ñ\88аÑ\99еÑ\82е Ð¿Ð¾Ñ\80Ñ\83кÑ\83 без имејл адресе.",
+       "user-mail-no-addy": "Ð\9fокÑ\83Ñ\88али Ñ\81Ñ\82е Ð´Ð° Ð¿Ð¾Ñ\88аÑ\99еÑ\82е Ð¸Ð¼ÐµÑ\98л без имејл адресе.",
        "user-mail-no-body": "Покушано слање имејла с празним или неразумно кратким садржајем.",
        "changepassword": "Промени лозинку",
        "resetpass_announce": "Да бисте завршили пријаву, подесите нову лозинку овде.",
        "resetpass_submit": "Постави лозинку и пријави ме",
        "changepassword-success": "Ваша лозинка је успешно промењена!",
        "changepassword-throttled": "Превише пута сте покушали да се пријавите.\nМолимо вас да сачекате $1 пре него што покушате поново.",
+       "botpasswords": "Лозинке ботова",
+       "botpasswords-label-appid": "Име бота:",
        "botpasswords-label-create": "Направи",
+       "botpasswords-label-update": "Ажурирај",
        "botpasswords-label-cancel": "Откажи",
        "botpasswords-label-delete": "Обриши",
+       "botpasswords-label-grants-column": "Одобрено",
        "resetpass_forbidden": "Лозинка не може бити промењена",
        "resetpass-no-info": "Морате бити пријављени да бисте приступили овој страници.",
        "resetpass-submit-loggedin": "Промени лозинку",
        "resetpass-submit-cancel": "Откажи",
        "resetpass-wrong-oldpass": "Неисправна привремена или текућа лозинка.\nМожда сте већ променили лозинку или сте затражили нову привремену лозинку.",
        "resetpass-recycled": "Унели сте садашњу лозинку, да бисте ресетовали лозинку морате унети нову.",
-       "resetpass-temp-emailed": "Ð\9fÑ\80иÑ\98авили Ñ\81Ñ\82е Ñ\81е Ñ\81а Ð¿Ñ\80ивÑ\80еменим ÐºÐ¾Ð´Ð¾Ð¼ Ð¸Ð· Ðµ-поÑ\88Ñ\82е.\nДа бисте завршили пријављивање морате поставити нову лозинку овде:",
+       "resetpass-temp-emailed": "Ð\9fÑ\80иÑ\98авили Ñ\81Ñ\82е Ñ\81е Ñ\81а Ð¿Ñ\80ивÑ\80еменим ÐºÐ¾Ð´Ð¾Ð¼ Ð¸Ð· Ð¸Ð¼ÐµÑ\98ла.\nДа бисте завршили пријављивање морате поставити нову лозинку овде:",
        "resetpass-temp-password": "Привремена лозинка:",
        "resetpass-abort-generic": "Промену лозинке је спречио додатак.",
        "resetpass-expired": "Ваша лозинка је истекла. Поставите нову лозинку да бисте се пријавили.",
        "passwordreset-emaildisabled": "Имејл је онемогућен на овом викију.",
        "passwordreset-username": "Корисничко име:",
        "passwordreset-domain": "Домен:",
-       "passwordreset-capture": "Погледати крајњу поруку?",
-       "passwordreset-capture-help": "Ако означите ову кућицу, имејл с привременом лозинком ће бити приказан и послат кориснику.",
+       "passwordreset-capture": "Погледати крајњи имејл?",
+       "passwordreset-capture-help": "Ако означите ову кућицу, имејл (с привременом лозинком) ће бити приказан и послат кориснику.",
        "passwordreset-email": "Имејл адреса:",
        "passwordreset-emailtitle": "Детаљи налога на викију {{SITENAME}}",
        "passwordreset-emailtext-ip": "Неко (вероватно Ви, са ИП адресе $1) је затражио нову лозинку на викију {{SITENAME}} ($4).\nСледећи {{PLURAL:$3|кориснички налог је повезан|кориснички налози су повезани}} с овом имејл адресом:\n\n$2\n\n{{PLURAL:$3|Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана}}.\nПријавите се и изаберите нову лозинку. Ако је неко други захтевао ову радњу или сте се сетили лозинке и не желите да је мењате, занемарите ову поруку и наставите користити стару лозинку.",
        "changeemail-newemail": "Нова имејл адреса:",
        "changeemail-none": "(ништа)",
        "changeemail-password": "Ваша лозинка:",
-       "changeemail-submit": "Промени",
+       "changeemail-submit": "Промени имејл",
        "changeemail-throttled": "Превише пута сте покушали да се пријавите.\nМолимо вас да сачекате $1 пре него што покушате поново.",
        "changeemail-nochange": "Унесите другу имејл адресу.",
        "resettokens": "Ресетовање жетона",
        "subject-preview": "Преглед теме:",
        "previewerrortext": "Догодила се грешка приликом приказивања ваших измена.",
        "blockedtitle": "Корисник је блокиран",
-       "blockedtext": "<strong>Ваше корисничко име или ИП адреса је блокирана.</strong>\n\nБлокирање је {{GENDER:$4|извршио|извршила}} $1.\nРазлог: <em>$2</em>.\n\n* Датум блокирања: $8\n* Блокирање истиче: $6\n* Име корисника: $7\n\nОбратите се {{GENDER:$4|кориснику|корисници}} $1 или [[{{MediaWiki:Grouppage-sysop}}|администратору]] да разјасните ствар.\nНе можете користити могућност „Пошаљи имејл овом кориснику“ ако нисте унели исправну имејл адресу у [[Special:Preferences|подешавањима]].\nВаша блокирана ИП адреса је $3, а ID блокирања $5.\nНаведите све податке изнад при стварању било каквих упита.",
+       "blockedtext": "<strong>Ваше корисничко име или ИП адреса је блокирана.</strong>\n\nБлокирање је {{GENDER:$4|извршио|извршила}} $1.\nРазлог је <em>$2</em>.\n\n* Датум блокирања: $8\n* Блокирање истиче: $6\n* Име корисника: $7\n\nОбратите се {{GENDER:$4|кориснику|корисници}} $1 или [[{{MediaWiki:Grouppage-sysop}}|администратору]] да разјасните ствар.\nНе можете користити могућност „Пошаљи имејл овом кориснику“ ако нисте унели исправну имејл адресу у [[Special:Preferences|подешавањима]].\nВаша блокирана ИП адреса је $3, а ID блокирања $5.\nНаведите све податке изнад при стварању било каквих упита.",
        "autoblockedtext": "Ваша ИП адреса је блокирана јер ју је употребљавао други корисник, кога је {{GENDER:$4|блокирао|блокирала}} $1.\nРазлог:\n\n:<em>$2</em>\n\n* Датум блокирања: $8\n* Блокирање истиче: $6\n* Име корисника: $7\n\nОбратите се {{GENDER:$4|кориснику|корисници}} $1 или [[{{MediaWiki:Grouppage-sysop}}|администратору]] да разјасните ствар.\n\nНе можете користити могућност „Пошаљи имејл овом кориснику“ ако нисте унели исправну имејл адресу у [[Special:Preferences|подешавањима]].\n\nВаша блокирана ИП адреса је $3, а ID $5.\nНаведите све податке изнад при стварању било каквих упита.",
        "blockednoreason": "разлог није наведен",
        "whitelistedittext": "За уређивање странице је потребно да будете $1.",
        "revdelete-show-no-access": "Грешка при приказивању ставке од $1, $2: означена је као „ограничена“.\nНемате приступ до ње.",
        "revdelete-modify-no-access": "Грешка при мењању ставке од $1, $2: означена је као „ограничена“.\nНемате приступ до ње.",
        "revdelete-modify-missing": "Грешка при мењању ИБ ставке $1: она не постоји у бази података.",
-       "revdelete-no-change": "'''Упозорење:''' ставка од $1, $2 већ поседује затражене поставке видљивости.",
+       "revdelete-no-change": "<strong>Упозорење:</strong> ставка од $1, $2 већ поседује затражена подешавања видљивости.",
        "revdelete-concurrent-change": "Грешка при мењању ставке од $1, $2: њено стање је у међувремену промењено од стране другог корисника.\nПогледајте историју.",
        "revdelete-only-restricted": "Грешка при сакривању ставке од $1, $2: не можете сакрити ставке од администратора без избора других могућности видљивости.",
        "revdelete-reason-dropdown": "*Уобичајени разлози за брисање\n** Кршење ауторског права\n** Неприкладан коментар или лични подаци\n** Неприкладно корисничко име\n** Увредљиви подаци",
        "right-move-categorypages": "премештање категорија",
        "right-movefile": "премештање датотека",
        "right-suppressredirect": "премештање страница без остављања преусмерења",
-       "right-upload": "отпремање датотека",
+       "right-upload": "Ð\9eтпремање датотека",
        "right-reupload": "замењивање постојећих датотека",
        "right-reupload-own": "замењивање сопствених датотека",
        "right-reupload-shared": "мењање датотека на дељеном складишту мултимедије",
-       "right-upload_by_url": "оÑ\82пÑ\80емаÑ\9aе Ð´Ð°Ñ\82оÑ\82ека Ñ\81а Ð²ÐµÐ± адресе",
+       "right-upload_by_url": "Ð\9eÑ\82пÑ\80емаÑ\9aе Ð´Ð°Ñ\82оÑ\82ека Ñ\81а Ð²ÐµÐ±-адресе",
        "right-purge": "чишћење кеш меморије странице без потврде",
        "right-autoconfirmed": "без ограничавања ставки за ИП адресе",
        "right-bot": "сматрање измена као аутоматски процес",
        "right-viewsuppressed": "прегледање измена скривених од свих корисника",
        "right-suppressionlog": "прегледање приватних дневника",
        "right-block": "блокирање даљих измена других корисника",
-       "right-blockemail": "онемогÑ\83Ñ\9bаваÑ\9aе ÐºÐ¾Ñ\80иÑ\81ниÑ\86има Ð´Ð° Ñ\88аÑ\99Ñ\83 Ð¸Ð¼ÐµÑ\98лове",
+       "right-blockemail": "Ð\91локиÑ\80аÑ\98 ÐºÐ¾Ñ\80иÑ\81никÑ\83 Ñ\81лаÑ\9aе Ð¸Ð¼ÐµÑ\98ла",
        "right-hideuser": "блокирање корисничког имена и његово сакривање од јавности",
        "right-ipblock-exempt": "заобилажење блокирања ИП адресе, аутоматска блокирања и блокирања опсега",
        "right-unblockself": "деблокирање самог себе",
        "right-editmyuserjs": "уређивање сопствених JavaScript датотека",
        "right-viewmywatchlist": "види сопствени списак надгледања",
        "right-editmywatchlist": "уређивање сопственог списка надгледања; неке предузете радње ће свеједно додати странице на списак и без овог права",
-       "right-viewmyprivateinfo": "видиÑ\82е Ñ\81воÑ\98е Ð»Ð¸Ñ\87не Ð¿Ð¾Ð´Ð°Ñ\82ке (нпÑ\80. Ð°Ð´Ñ\80еÑ\81Ñ\83 Ðµ-поÑ\88Ñ\82е, право име)",
-       "right-editmyprivateinfo": "уређивање сопствених личних података (нпр. имејл адреса, право име)",
+       "right-viewmyprivateinfo": "Ð\92идиÑ\82е Ñ\81воÑ\98е Ð»Ð¸Ñ\87не Ð¿Ð¾Ð´Ð°Ñ\82ке (нпÑ\80. Ð¸Ð¼ÐµÑ\98л Ð°Ð´Ñ\80еÑ\81Ñ\83, право име)",
+       "right-editmyprivateinfo": "Уређивање сопствених личних података (нпр. имејл адреса, право име)",
        "right-editmyoptions": "уређивање сопствених подешавања",
        "right-rollback": "брзо враћање измена последњег корисника који је мењао одређену страницу",
        "right-markbotedits": "означавање враћених измена као измене бота",
        "right-userrights-interwiki": "уређивање корисничких права на другим викијима",
        "right-siteadmin": "закључавање и откључавање базе података",
        "right-override-export-depth": "извоз страница укључујући и повазене странице до дубине од пет веза",
-       "right-sendemail": "слање имејла другим корисницима",
+       "right-sendemail": "Пошаљи имејл другим корисницима",
        "right-passwordreset": "прегледање порука за обнављање лозинке",
        "right-managechangetags": "прављење и (де)активирање [[Special:Tags|ознака]]",
        "right-applychangetags": "примењивање [[Special:Tags|ознака]] на нечије измене",
        "grant-rollback": "Враћање измена",
        "grant-sendemail": "Слање имејлова другим корисницима",
        "grant-uploadeditmovefile": "Отпремање, замена и премештање датотека",
-       "grant-uploadfile": "Слање нових датотека",
+       "grant-uploadfile": "Ð\9eÑ\82пÑ\80емање нових датотека",
        "grant-basic": "Основна права",
        "grant-viewdeleted": "Преглед обрисаних страница и датотека",
        "grant-viewmywatchlist": "Преглед вашег списак надгледања",
        "action-move-rootuserpages": "премештање основних корисничких страница",
        "action-move-categorypages": "премештање категорија",
        "action-movefile": "премештање ове датотеке",
-       "action-upload": "слање ове датотеке",
+       "action-upload": "отпреми ову датотеку",
        "action-reupload": "замењивање постојеће датотеке",
        "action-reupload-shared": "постављање ове датотеке на заједничко складиште",
-       "action-upload_by_url": "слање ове датотеке преко URL адресе",
+       "action-upload_by_url": "отпремање ове датотеке преко веб-адресе",
        "action-writeapi": "писање АПИ-ја",
        "action-delete": "брисање ове странице",
        "action-deleterevision": "брисање ове измене",
        "action-managechangetags": "прављење и (де)активирање ознака",
        "action-applychangetags": "додавање ознака на ваше измене",
        "action-changetags": "додавање и уклањање разних ознака на појединачним изменама и уносима у дневницима",
+       "action-purge": "чишћење привремене меморије ове странице",
        "nchanges": "$1 {{PLURAL:$1|измена|измене|измена}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|измена од ваше последње посете}}",
        "enhancedrc-history": "историја",
        "reuploaddesc": "Назад на образац за отпремање",
        "upload-tryagain": "Пошаљи измењени опис датотеке",
        "uploadnologin": "Нисте пријављени",
-       "uploadnologintext": "Морате бити $1 да бисте отпремали датотеке.",
+       "uploadnologintext": "$1 да бисте отпремали датотеке.",
        "upload_directory_missing": "Фасцикла за слање ($1) недостаје и сервер је не може направити.",
        "upload_directory_read_only": "Сервер не може да пише по фасцикли за слање ($1).",
        "uploaderror": "Грешка при отпремању",
        "uploadwarning-text": "Измените опис датотеке и покушајте поново.",
        "savefile": "Сачувај датотеку",
        "uploaddisabled": "Отпремање је онемогућено.",
-       "copyuploaddisabled": "СлаÑ\9aе Ð¿Ñ\83Ñ\82ем URL адресе је онемогућено.",
+       "copyuploaddisabled": "Ð\9eÑ\82пÑ\80емаÑ\9aе Ð¿Ñ\83Ñ\82ем Ð²ÐµÐ±-адресе је онемогућено.",
        "uploaddisabledtext": "Отпремање датотека је онемогућено.",
-       "php-uploaddisabledtext": "СлаÑ\9aе Ð´Ð°Ñ\82оÑ\82ека Ñ\98е Ð¾Ð½ÐµÐ¼Ð¾Ð³Ñ\83Ñ\9bено Ñ\83 PHP-Ñ\83.\nÐ\9fÑ\80овеÑ\80иÑ\82е Ð¿Ð¾Ñ\81Ñ\82авке file_uploads.",
+       "php-uploaddisabledtext": "Ð\9eÑ\82пÑ\80емаÑ\9aе Ð´Ð°Ñ\82оÑ\82ека Ñ\98е Ð¾Ð½ÐµÐ¼Ð¾Ð³Ñ\83Ñ\9bено Ñ\83 PHP-Ñ\83.\nÐ\9fÑ\80овеÑ\80иÑ\82е Ð¿Ð¾Ð´ÐµÑ\88аваÑ\9aа file_uploads.",
        "uploadscripted": "Датотека садржи HTML или скриптни код који може бити погрешно протумачен од стране прегледача.",
        "upload-scripted-pi-callback": "Датотека која садржи инструкције за обраду XML стилског облика се не може отпремити.",
        "uploaded-script-svg": "Пронађен скриптни елеменат „$1“ у постављеној SVG датотеци.",
        "destfilename": "Назив:",
        "upload-maxfilesize": "Максимална величина датотеке: $1",
        "upload-description": "Опис датотеке",
-       "upload-options": "Поставке слања",
+       "upload-options": "Поставке отпремања",
        "watchthisupload": "Надгледај ову датотеку",
        "filewasdeleted": "Датотека с овим називом је раније послата, али је обрисана.\nПроверите $1 пре него што наставите с поновним слањем.",
        "filename-bad-prefix": "Назив датотеке коју шаљете почиње са <strong>„$1“</strong>, а њега обично додељују дигитални фотоапарати.\nИзаберите назив датотеке који описује њен садржај.",
        "invalid-chunk-offset": "Неисправна полазна тачка",
        "img-auth-accessdenied": "Приступ је одбијен",
        "img-auth-nopathinfo": "Недостаје PATH_INFO.\nВаш сервер није подешен да прослеђује овакве податке.\nМожда је заснован на CGI-ју који не подржава img_auth.\nПогледајте https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization?uselang=sr-ec.",
-       "img-auth-notindir": "Захтевана путања није у подешеној фасцикли за слање.",
+       "img-auth-notindir": "Захтевана путања није у подешеној фасцикли за отпремање.",
        "img-auth-badtitle": "Не могу да створим исправан наслов за „$1“.",
        "img-auth-nologinnWL": "Нисте пријављени и „$1“ није на списку дозвољених.",
        "img-auth-nofile": "Датотека „$1“ не постоји.",
        "http-bad-status": "Дошло је до проблема током захтева HTTP: $1 $2",
        "upload-curl-error6": "Не могу да приступим адреси",
        "upload-curl-error6-text": "Не могу да приступим наведеној адреси.\nПроверите да ли је адреса исправна и доступна.",
-       "upload-curl-error28": "Слање је истекло",
+       "upload-curl-error28": "Ð\9eÑ\82пÑ\80емање је истекло",
        "upload-curl-error28-text": "Сервер не одговара на упит.\nПроверите да ли сајт ради, мало осачекајте и покушајте поново.\nПробајте касније када буде мање оптерећење.",
        "license": "Лиценца:",
        "license-header": "Лиценца:",
        "trackingcategories-nodesc": "Опис није доступан.",
        "trackingcategories-disabled": "Категорија је онемогућена",
        "mailnologin": "Нема адресе за слање",
-       "mailnologintext": "Морате бити [[Special:UserLogin|пријављени]] и имати исправан имејл у [[Special:Preferences|подешавањима]] да бисте слали имејлове другим корисницима.",
+       "mailnologintext": "Морате бити [[Special:UserLogin|пријављени]] и имати исправан имејл адресу у [[Special:Preferences|подешавањима]] да бисте слали имејлове другим корисницима.",
        "emailuser": "Пошаљи имејл",
        "emailuser-title-target": "Слање имејла {{GENDER:$1|кориснику|корисници}}",
        "emailuser-title-notarget": "Слање имејла кориснику",
        "emailpagetext": "Можете да користите доњи образац да пошаљете имејл {{GENDER:$1|овом кориснику|овој корисници}}.\nИмејл који сте унели у вашим [[Special:Preferences|подешавањима]] ће се приказати у пољу „Од“, тако да ће прималац моћи да вам одговори директно.",
-       "defemailsubject": "{{SITENAME}} — Имејл од {{GENDER:$1|корисника|кориснице}} $1",
-       "usermaildisabled": "Ð\9aоÑ\80иÑ\81ниÑ\87ка Ðµ-поÑ\88Ñ\82а Ñ\98е Ð¾Ð½ÐµÐ¼Ð¾Ð³Ñ\83Ñ\9bена",
+       "defemailsubject": "{{SITENAME}} — Имејл од {{GENDER:$1|корисника|кориснице}} „$1”",
+       "usermaildisabled": "Ð\9aоÑ\80иÑ\81ниÑ\87ки Ð¸Ð¼ÐµÑ\98л Ñ\98е Ð¾Ð½ÐµÐ¼Ð¾Ð³Ñ\83Ñ\9bен",
        "usermaildisabledtext": "Не можете да шаљете имејлове другим корисницима на овом викију",
        "noemailtitle": "Нема имејл адресе",
        "noemailtext": "Овај корисник није навео исправну имејл адресу.",
        "emailtarget": "Унос корисничког имена примаоца",
        "emailusername": "Корисничко име:",
        "emailusernamesubmit": "Пошаљи",
-       "email-legend": "СлаÑ\9aе Ð¸Ð¼ÐµÑ\98ла другом кориснику",
+       "email-legend": "Ð\9fоÑ\88аÑ\99и Ð¸Ð¼ÐµÑ\98л другом кориснику",
        "emailfrom": "Од:",
        "emailto": "За:",
        "emailsubject": "Наслов:",
        "emailsend": "Пошаљи",
        "emailccme": "Пошаљи ми копију поруке на мој имејл.",
        "emailccsubject": "Копија ваше поруке кориснику $1: $2",
-       "emailsent": "Ð\9fоÑ\80Ñ\83ка Ñ\98е Ð¿Ð¾Ñ\81лаÑ\82а",
-       "emailsenttext": "Ваш имејл је послат.",
+       "emailsent": "Ð\98меÑ\98л Ñ\98е Ð¿Ð¾Ñ\81лаÑ\82",
+       "emailsenttext": "Ваша имејл порука је послата.",
        "emailuserfooter": "Овај имејл је {{GENDER:$1|послао|послала}} $1 {{GENDER:$2|кориснику|корисници}} $2 помоћу „{{int:emailuser}}“ с викија {{SITENAME}}.",
        "usermessage-summary": "Слање системске поруке.",
        "usermessage-editor": "Уређивач системских порука",
        "enotif_lastvisited": "Погледајте $1 за све измене од ваше последње посете.",
        "enotif_lastdiff": "Погледајте $1 да видите ову измену.",
        "enotif_anon_editor": "анониман корисник $1",
-       "enotif_body": "Ð\9fоÑ\88Ñ\82овани $WATCHINGUSERNAME,\n \t\n$PAGEINTRO $NEWPAGE\n\nÐ\9eпиÑ\81: $PAGESUMMARY $PAGEMINOREDIT\n\nÐ\9aонÑ\82акÑ\82:\nе-поÑ\88Ñ\82а: $PAGEEDITOR_EMAIL\nвики: $PAGEEDITOR_WIKI\n\nÐ\9dеÑ\9bе Ð±Ð¸Ñ\82и Ð´Ñ\80Ñ\83гиÑ\85 Ð¾Ð±Ð°Ð²ÐµÑ\88Ñ\82еÑ\9aа Ñ\83 Ñ\81лÑ\83Ñ\87аÑ\98Ñ\83 Ð´Ð°Ñ\99иÑ\85 Ð¸Ð·Ð¼ÐµÐ½Ð° Ñ\83колико Ð½Ðµ Ð¿Ð¾Ñ\81еÑ\82иÑ\82е Ð¾Ð²Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 ÐºÐ°Ð´Ð° Ñ\81Ñ\82е Ð¿Ñ\80иÑ\98авÑ\99ени.\nÐ\9cожеÑ\82е Ð¸ Ð´Ð° Ð¿Ð¾Ð½Ð¸Ñ\88Ñ\82иÑ\82е Ð¿Ð¾Ñ\81Ñ\82авке Ð¾Ð±Ð°Ð²ÐµÑ\88Ñ\82еÑ\9aа Ð·Ð° Ñ\81ве Ñ\81Ñ\82Ñ\80аниÑ\86е Ñ\83 Ð²Ð°Ñ\88ем Ñ\81пиÑ\81кÑ\83 Ð½Ð°Ð´Ð³Ð»ÐµÐ´Ð°Ñ\9aа.\n\nСÑ\80даÑ\87ан Ð¿Ð¾Ð·Ð´Ñ\80ав, {{SITENAME}}\n\n--\nÐ\94а Ð±Ð¸Ñ\81Ñ\82е Ð¿Ñ\80оменили Ð¿Ð¾Ñ\81Ñ\82авке Ñ\83 Ð²ÐµÐ·Ð¸ Ñ\81а Ðµ-обавеÑ\88Ñ\82еÑ\9aима, Ð¿Ð¾Ñ\81еÑ\82иÑ\82е\n{{canonicalurl:{{#special:Preferences}}}}\n\nÐ\94а Ð±Ð¸Ñ\81Ñ\82е Ð¿Ñ\80оменили Ð¿Ð¾Ñ\81Ñ\82авке Ñ\83 Ð²ÐµÐ·Ð¸ Ñ\81а Ñ\81пиÑ\81ком надгледања, посетите\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nДа бисте уклонили ову страницу са списка надгледања, посетите\n$UNWATCHURL\n\nПодршка и даља помоћ:\n$HELPPAGE",
+       "enotif_body": "Ð\9fоÑ\88Ñ\82овани $WATCHINGUSERNAME,\n \t\n$PAGEINTRO $NEWPAGE\n\nÐ\9eпиÑ\81: $PAGESUMMARY $PAGEMINOREDIT\n\nÐ\9aонÑ\82акÑ\82:\nмеÑ\98л: $PAGEEDITOR_EMAIL\nвики: $PAGEEDITOR_WIKI\n\nÐ\9dеÑ\9bе Ð±Ð¸Ñ\82и Ð´Ñ\80Ñ\83гиÑ\85 Ð¾Ð±Ð°Ð²ÐµÑ\88Ñ\82еÑ\9aа Ñ\83 Ñ\81лÑ\83Ñ\87аÑ\98Ñ\83 Ð´Ð°Ñ\99иÑ\85 Ð¸Ð·Ð¼ÐµÐ½Ð° Ñ\83колико Ð½Ðµ Ð¿Ð¾Ñ\81еÑ\82иÑ\82е Ð¾Ð²Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83 ÐºÐ°Ð´Ð° Ñ\81Ñ\82е Ð¿Ñ\80иÑ\98авÑ\99ени.\nÐ\9cожеÑ\82е Ð¸ Ð´Ð° Ð¿Ð¾Ð½Ð¸Ñ\88Ñ\82иÑ\82е Ð¿Ð¾Ñ\81Ñ\82авке Ð¾Ð±Ð°Ð²ÐµÑ\88Ñ\82еÑ\9aа Ð·Ð° Ñ\81ве Ñ\81Ñ\82Ñ\80аниÑ\86е Ñ\83 Ð²Ð°Ñ\88ем Ñ\81пиÑ\81кÑ\83 Ð½Ð°Ð´Ð³Ð»ÐµÐ´Ð°Ñ\9aа.\n\nСÑ\80даÑ\87ан Ð¿Ð¾Ð·Ð´Ñ\80ав, {{SITENAME}}\n\n--\nÐ\94а Ð±Ð¸Ñ\81Ñ\82е Ð¿Ñ\80оменили Ð¿Ð¾Ñ\81Ñ\82авке Ð¸Ð¼ÐµÑ\98л Ð¾Ð±Ð°Ð²ÐµÑ\88Ñ\82еÑ\9aа, Ð¿Ð¾Ñ\81еÑ\82иÑ\82е\n{{canonicalurl:{{#special:Preferences}}}}\n\nÐ\94а Ð±Ð¸Ñ\81Ñ\82е Ð¿Ñ\80оменили Ð¿Ð¾Ñ\81Ñ\82авке Ñ\81пиÑ\81ка надгледања, посетите\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nДа бисте уклонили ову страницу са списка надгледања, посетите\n$UNWATCHURL\n\nПодршка и даља помоћ:\n$HELPPAGE",
        "created": "направљена",
        "changed": "измењена",
        "deletepage": "Обриши страницу",
        "protectedarticle": "је заштитио „[[$1]]“",
        "modifiedarticleprotection": "промењен степен заштите за „[[$1]]“",
        "unprotectedarticle": "је скинуо заштиту са странице „[[$1]]“",
-       "movedarticleprotection": "је преместио поставке заштите са „[[$2]]“ на „[[$1]]“",
+       "movedarticleprotection": "је преместио подешавања заштите са „[[$2]]“ на „[[$1]]“",
        "protect-title": "Степен заштите за „$1“",
        "protect-title-notallowed": "Преглед степена заштите за „$1“",
        "prot_1movedto2": "је преместио [[$1]] на [[$2]]",
        "restriction-edit": "уређивање",
        "restriction-move": "премештање",
        "restriction-create": "прављење",
-       "restriction-upload": "слање",
+       "restriction-upload": "отпремање",
        "restriction-level-sysop": "потпуно заштићено",
        "restriction-level-autoconfirmed": "полузаштићено",
        "restriction-level-all": "сви нивои",
        "undeletedrevisions": "{{PLURAL:$1|измена враћено}} $1",
        "undeletedrevisions-files": "$1 {{PLURAL:$1|измена|измене|измена}} и $2 {{PLURAL:$2|датотека је враћена|датотеке су враћене|датотека је враћено}}",
        "undeletedfiles": "{{PLURAL:$1|датотека враћено}} $1",
-       "cannotundelete": "Враћање није успело:\n$1",
+       "cannotundelete": "Враћање једне или свих ставник није успјело:\n$1",
        "undeletedpage": "<strong>Страница $1 је враћена</strong>\n\nПогледајте [[Special:Log/delete|дневник брисања]] за записе о скорашњим брисањима и враћањима.",
        "undelete-header": "Погледајте [[Special:Log/delete|историјат брисања]] за недавно обрисане странице.",
        "undelete-search-title": "Претрага обрисаних страница",
        "ipbreason-dropdown": "*Најчешћи разлози за блокирање\n** Уношење лажних информација\n** Уклањање садржаја са страница\n** Постављање веза до спољашњих сајтова\n** Уношење бесмислица у странице\n** Непристојно понашање\n** Употреба више налога\n** Неприхватљиво корисничко име",
        "ipb-hardblock": "Онемогући пријављеним корисницима да уређују с ове ИП адресе",
        "ipbcreateaccount": "Онемогући отварање налога",
-       "ipbemailban": "Ð\9eнемогÑ\83Ñ\9bи ÐºÐ¾Ñ\80иÑ\81никÑ\83 да шаље имејлове",
+       "ipbemailban": "СпÑ\80еÑ\87и ÐºÐ¾Ñ\80иÑ\81ника да шаље имејлове",
        "ipbenableautoblock": "Аутоматски блокирај последњу ИП адресу овог корисника и све даљње адресе с којих покуша да уређује",
        "ipbsubmit": "Блокирај овог корисника",
        "ipbother": "Друго време:",
        "anononlyblock": "само анонимни",
        "noautoblockblock": "аутоматско блокирање је онемогућено",
        "createaccountblock": "отварање налога је онемогућено",
-       "emailblock": "е-поÑ\88Ñ\82а Ñ\98е Ð±Ð»Ð¾ÐºÐ¸Ñ\80ана",
+       "emailblock": "имеÑ\98л Ñ\98е Ð¾Ð½ÐµÐ¼Ð¾Ð³Ñ\83Ñ\9bен",
        "blocklist-nousertalk": "забрањено уређивање сопствене странице за разговор",
        "ipblocklist-empty": "Списак блокирања је празан.",
        "ipblocklist-no-results": "Тражена ИП адреса или корисничко име није блокирано.",
        "block-log-flags-anononly": "само анонимни корисници",
        "block-log-flags-nocreate": "онемогућено отварање налога",
        "block-log-flags-noautoblock": "аутоматско блокирање је онемогућено",
-       "block-log-flags-noemail": "е-поÑ\88Ñ\82а Ñ\98е Ð±Ð»Ð¾ÐºÐ¸Ñ\80ана",
+       "block-log-flags-noemail": "имеÑ\98л Ñ\98е Ð¾Ð½ÐµÐ¼Ð¾Ð³Ñ\83Ñ\9bен",
        "block-log-flags-nousertalk": "забрањено уређивање сопствене странице за разговор",
        "block-log-flags-angry-autoblock": "проширено аутоматско блокирање је омогућено",
        "block-log-flags-hiddenname": "корисничко име је сакривено",
        "tooltip-search": "Претрага",
        "tooltip-search-go": "Идите на страницу с овим именом, ако постоји",
        "tooltip-search-fulltext": "Претражите странице с овим текстом",
-       "tooltip-p-logo": "Ð\9fоÑ\81еÑ\82иÑ\82е Ð½Ð°Ñ\81ловну страну",
-       "tooltip-n-mainpage": "Ð\9fоÑ\81еÑ\82иÑ\82е Ð½Ð°Ñ\81ловну страну",
-       "tooltip-n-mainpage-description": "Ð\9fоÑ\81еÑ\82иÑ\82е Ð½Ð°Ñ\81ловну страну",
+       "tooltip-p-logo": "Ð\9fоÑ\81еÑ\82иÑ\82е Ð³Ð»Ð°вну страну",
+       "tooltip-n-mainpage": "Ð\9fоÑ\81еÑ\82иÑ\82е Ð³Ð»Ð°вну страну",
+       "tooltip-n-mainpage-description": "Ð\9fоÑ\81еÑ\82иÑ\82е Ð³Ð»Ð°вну страну",
        "tooltip-n-portal": "О пројекту, шта можете да радите и где да пронађете ствари",
        "tooltip-n-currentevents": "Сазнајте више о текућим догађајима",
        "tooltip-n-recentchanges": "Списак скорашњих измена на викију",
        "tooltip-t-contributions": "Списак доприноса {{GENDER:$1|овог корисника|ове кориснице}}",
        "tooltip-t-emailuser": "Пошаљите имејл {{GENDER:$1|овом кориснику|овој корисници}}",
        "tooltip-t-info": "Више информација о овој страници",
-       "tooltip-t-upload": "Ð\9fоÑ\88аÑ\99иÑ\82е датотеке",
+       "tooltip-t-upload": "Ð\9eÑ\82пÑ\80еми датотеке",
        "tooltip-t-specialpages": "Списак свих посебних страница",
        "tooltip-t-print": "Верзија ове странице за штампање",
        "tooltip-t-permalink": "Стална веза ка овој измени странице",
        "pageinfo-robot-index": "Дозвољено",
        "pageinfo-robot-noindex": "Није дозвољено",
        "pageinfo-watchers": "Број надгледача странице",
+       "pageinfo-visiting-watchers": "Број надгледача странице који су посјетили скорашње измјене",
        "pageinfo-few-watchers": "Мање од $1 {{PLURAL:$1|пратиоца|пратилаца}}",
        "pageinfo-redirects-name": "Број преусмерења на ову страницу",
        "pageinfo-subpages-name": "Подстранице ове странице",
        "pageinfo-protect-cascading-yes": "Да",
        "pageinfo-protect-cascading-from": "Странице са преносивом заштитом од",
        "pageinfo-category-info": "Информације о категорији",
+       "pageinfo-category-total": "Укупно",
        "pageinfo-category-pages": "Број страница",
        "pageinfo-category-subcats": "Број поткатегорија",
        "pageinfo-category-files": "Број датотека",
        "confirmemail_sendfailed": "{{SITENAME}} не може да пошаље имејл потврду.\nПроверите да ли је имејл адреса правилно написана.\n\nГрешка: $1",
        "confirmemail_invalid": "Потврдни код је неисправан. Вероватно је истекао.",
        "confirmemail_needlogin": "Морате бити $1 да бисте потврдили имејл адресу.",
-       "confirmemail_success": "Ваша имејл адреса је потврђена.\nСада можете да се [[Special:UserLogin|пријавите]]. Желимо вам пријатан боравак на викију.",
+       "confirmemail_success": "Ваша имејл адреса је потврђена.\nСада можете да се [[Special:UserLogin|пријавите]] и уживате у викију.",
        "confirmemail_loggedin": "Ваша имејл адреса је сада потврђена.",
        "confirmemail_subject": "{{SITENAME}} – потврда имејл адресе",
-       "confirmemail_body": "Неко, вероватно ви, са ИП адресе $1 \nје променио имејл адресу налога „$2“ у ову адресу на {{SITENAME}}.\n\nДа бисмо потврдили да овај налог стварно припада вама и поново активирали могућности имејла на {{SITENAME}}, отворите следећу везу у прегледачу:\n\n$3\n\nАко налог *не* припада вама, пратите следећу везу да откажете потврду имејл адресе:\n\n$5\n\nОвај потврдни код истиче $4.",
-       "confirmemail_body_changed": "Неко, вероватно ви, са ИП адресе $1 је променио имејл адресу налога „$2“ у ову адресу на викију {{SITENAME}}.\n\nДа бисте потврдили да овај налог стварно припада вама и поново активирали могућности имејла, отворите следећу везу у прегледачу:\n\n$3\n\nАко налог *не* припада вама, пратите следећу везу да откажете потврду имејл адресе:\n\n$5\n\nОвај потврдни код истиче $6 у $7",
-       "confirmemail_body_set": "Неко, вероватно ви, са ИП адресе $1 \nје променио имејл адресу налога „$2“ у ову адресу на {{SITENAME}}.\n\nДа бисмо потврдили да овај налог стварно припада вама и поново активирали могућности имејла на {{SITENAME}}, отворите следећу везу у прегледачу:\n\n$3\n\nАко налог *не* припада вама, пратите следећу везу да откажете потврду имејл адресе:\n\n$5\n\nОвај потврдни код истиче $4.",
+       "confirmemail_body": "Неко, вероватно ви, са ИП адресе $1,\nотворио је налог „$2“ са овом имејл адресом на викију {{SITENAME}}.\n\nДа потврдите да овај налог стварно припада вама и да активирате\nмогућности имејла на викију {{SITENAME}}, отворите ову везу у прегледачу:\n\n$3\n\nУколико налог *не* припада вама, пратите везу\nда откажете потврду имејл адресе:\n\n$5\n\nОвај потврдни код истиче у $4.",
+       "confirmemail_body_changed": "Неко, вероватно ви, са ИП адресе $1,\nпроменио је имејл адресу налога „$2“ у ову адресу на викију {{SITENAME}}.\n\nДа бисте потврдили да овај налог стварно припада вама и поново активирали могућности имејла, отворите следећу везу у прегледачу:\n\n$3\n\nАко налог *не* припада вама, пратите следећу везу да откажете потврду имејл адресе:\n\n$5\n\nОвај потврдни код истиче $6 у $7",
+       "confirmemail_body_set": "Неко, вероватно ви, са ИП адресе $1,\nпроменио је имејл адресу налога „$2“ у ову адресу на {{SITENAME}}.\n\nДа бисмо потврдили да овај налог стварно припада вама и поново активирали\nмогућности имејла на {{SITENAME}}, отворите следећу везу у прегледачу:\n\n$3\n\nАко налог *не* припада вама, пратите следећу везу да откажете потврду имејл адресе:\n\n$5\n\nОвај потврдни код истиче $4.",
        "confirmemail_invalidated": "Потврда имејл адресе је отказана",
        "invalidateemail": "Отказивање потврде имејла",
        "notificationemail_body_changed": "Неко, вероватно Ви је променио имејл адресу налога из $2“ у „$3“ са IP адресе $1 на сајту {{SITENAME}}.\n\nАко ово нисте били Ви, одмах обавестите администраторе сајта.",
        "mediastatistics-header-total": "Све датотеке",
        "json-error-syntax": "Грешка у синтакси",
        "headline-anchor-title": "Веза до овог одељка",
-       "special-characters-group-latin": "латиница",
+       "special-characters-group-latin": "Ð\9bатиница",
        "special-characters-group-latinextended": "проширена латиница",
        "special-characters-group-ipa": "ИПА",
        "special-characters-group-symbols": "симболи",
        "log-action-filter-protect-move_prot": "премештање заштите",
        "log-action-filter-rights-rights": "ручно",
        "log-action-filter-rights-autopromote": "аутоматски",
-       "log-action-filter-upload-upload": "ново",
-       "log-action-filter-upload-overwrite": "промена постојећег"
+       "log-action-filter-upload-upload": "Ново отпремање",
+       "log-action-filter-upload-overwrite": "промена постојећег",
+       "authmanager-email-label": "Имејл",
+       "authmanager-email-help": "Имејл адреса",
+       "changecredentials": "Промјена акредитива"
 }
index a8ba29d..b656100 100644 (file)
@@ -45,9 +45,9 @@
        "tog-previewontop": "Prikaži pregled pre okvira za uređivanje",
        "tog-previewonfirst": "Prikaži pregled na prvoj izmeni",
        "tog-enotifwatchlistpages": "Pošalji mi imejl kada se promeni stranica/datoteka koju nadgledam",
-       "tog-enotifusertalkpages": "Pošalji mi e-poruku kada se promeni moja stranica za razgovor",
-       "tog-enotifminoredits": "Pošalji mi e-poruku i za manje izmene u stranicama i datotekama",
-       "tog-enotifrevealaddr": "Prikaži moju e-adresu u porukama obaveštenja",
+       "tog-enotifusertalkpages": "Pošalji mi imejl kada se promeni moja stranica za razgovor",
+       "tog-enotifminoredits": "Pošalji mi imejl i za manje izmene u stranicama i datotekama",
+       "tog-enotifrevealaddr": "Prikaži moju imejl adresu u porukama obaveštenja",
        "tog-shownumberswatching": "Prikaži broj korisnika koji nadgledaju",
        "tog-oldsig": "Tekući potpis:",
        "tog-fancysig": "Smatraj potpis kao vikitekst (bez samopovezivanja)",
@@ -61,7 +61,7 @@
        "tog-watchlisthideanons": "Sakrij izmene anonimnih korisnika sa spiska nadgledanja",
        "tog-watchlisthidepatrolled": "Sakrij patrolirane izmene sa spiska nadgledanja",
        "tog-watchlisthidecategorization": "Sakrij kategorizaciju stranica",
-       "tog-ccmeonemails": "Pošalji mi primerke e-poruka koje pošaljem drugim korisnicima",
+       "tog-ccmeonemails": "Pošalji mi kopije imejlova koje pošaljem drugim korisnicima",
        "tog-diffonly": "Ne prikazuj sadržaj stranice ispod razlika",
        "tog-showhiddencats": "Prikaži skrivene kategorije",
        "tog-norollbackdiff": "Izostavi razliku nakon izvršenog vraćanja",
        "qbfind": "Pronađi",
        "qbbrowse": "Potraži",
        "qbedit": "Uredi",
-       "qbpageoptions": "Postavke stranice",
+       "qbpageoptions": "Ova stranica",
        "qbmyoptions": "Moje stranice",
        "faq": "NPP",
        "faqpage": "Project:NPP",
        "history": "Istorija stranice",
        "history_short": "Istorija",
        "updatedmarker": "ažurirano od moje poslednje posete",
-       "printableversion": "Za štampanje",
+       "printableversion": "Verzija za štampanje",
        "permalink": "Trajna veza",
        "print": "Štampaj",
        "view": "Pogledaj",
        "translateinterface": "Da dodate ili promenite prevode za sve vikije, posetite [https://translatewiki.net/ Translejtviki], projekat za lokalizaciju Medijavikija.",
        "cascadeprotected": "Ova stranica je zaključana jer sadrži {{PLURAL:$1|sledeću stranicu koja je zaštićena|sledeće stranice koje su zaštićene}} „prenosivom“ zaštitom:\n$2",
        "namespaceprotected": "Nemate dozvolu da uređujete stranice u imenskom prostoru <strong>$1</strong>.",
-       "customcssprotected": "Nemate dozvolu da menjate ovu CSS stranicu jer sadrži lične postavke drugog korisnika.",
+       "customcssprotected": "Nemate dozvolu da menjate ovu CSS stranicu jer sadrži lična podešavanja drugog korisnika.",
        "customjsprotected": "Nemate dozvolu da menjate ovu stranicu javaskripta jer sadrži lične postavke drugog korisnika.",
        "mycustomcssprotected": "Nemate dozvolu za menjanje ove CSS stranice.",
        "mycustomjsprotected": "Nemate dozvolu za menjanje ove JavaScript stranice.",
        "userlogin-helplink2": "Pomoć pri prijavljivanju",
        "userlogin-loggedin": "Već ste prijavljeni kao {{GENDER:$1|$1}}.\nKoristite donji obrazac da biste se prijavili kao drugi korisnik.",
        "userlogin-createanother": "Otvori još jedan nalog",
-       "createacct-emailrequired": "Adresa e-pošte",
-       "createacct-emailoptional": "Adresa e-pošte (opciono)",
-       "createacct-email-ph": "Unesite vašu adresu e-pоšte",
-       "createacct-another-email-ph": "Unesite adresu e-pošte",
+       "createacct-emailrequired": "Imejl adresa",
+       "createacct-emailoptional": "Imejl adresa (opciono)",
+       "createacct-email-ph": "Unesite Vašu imejl adresu",
+       "createacct-another-email-ph": "Unesite imejl adresu",
        "createaccountmail": "Koristite privremenu, slučajno stvorenu lozinku i pošaljite na navedenu adresu elektronske pošte",
        "createacct-realname": "Pravo ime (opciono)",
        "createaccountreason": "Razlog:",
        "mailmypassword": "Resetuj lozinku",
        "passwordremindertitle": "{{SITENAME}} — privremena lozinka",
        "passwordremindertext": "Neko, verovatno vi, sa IP adrese $1 je zatražio novu lozinku na vikiju {{SITENAME}} ($4).\nStvorena je privremena lozinka za {{GENDER:$2|korisnika|korisnicu|korisnika}} $2 koja glasi $3.\nUkoliko je ovo vaš zahtev, sada se prijavite i postavite novu lozinku.\nPrivremena lozinka ističe za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.\n\nAko je neko drugi zatražio promenu lozinke, ili ste se setili vaše lozinke i ne želite da je menjate, zanemarite ovu poruku.",
-       "noemail": "Ne postoji e-adresa za {{GENDER:$1|korisnika|korisnicu}} $1.",
-       "noemailcreate": "Morate navesti ispravnu e-adresu",
-       "passwordsent": "Nova lozinka je poslata na e-adresu {{GENDER:$1|korisnika|korisnice|korisnika}} $1.\nPrijavite se pošto je primite.",
+       "noemail": "Ne postoji imejl adresa za {{GENDER:$1|korisnika|korisnicu}} $1.",
+       "noemailcreate": "Morate navesti ispravnu imejl adresu.",
+       "passwordsent": "Nova lozinka je poslata na imejl adresu {{GENDER:$1|korisnika|korisnice|korisnika}} $1.\nPrijavite se pošto je primite.",
        "blocked-mailpassword": "Vašoj IP adresi je onemogućeno uređivanje stranica, kao i mogućnost zahtevanja nove lozinke.",
-       "eauthentsent": "Na navedenu e-adresu je poslat potvrdni kod.\nPre nego što pošaljemo daljnje poruke, pratite uputstva s e-pošte da biste potvrdili da ste vi otvorili nalog.",
+       "eauthentsent": "Na navedenu imejl adresu je poslat potvrdni kod.\nPre nego što pošaljemo daljnje poruke, pratite uputstva s imejla da biste potvrdili da ste Vi otvorili nalog.",
        "throttled-mailpassword": "Poruka za promenu lozinke je poslata u {{PLURAL:$1|1=poslednjih sat vremena|poslednja $1 sata|poslednjih $1 sati}}.\nDa bismo sprečili zloupotrebu, podsetnik šaljemo samo jednom u roku od {{PLURAL:$1|1=sat vremena|$1 sata|$1 sati}}.",
        "mailerror": "Greška pri slanju poruke: $1",
        "acct_creation_throttle_hit": "Posetioci ovog vikija koji koriste vašu IP adresu su već otvorili {{PLURAL:$1|1=jedan nalog|$1 naloga}} prethodni $2, što je najveći dozvoljeni broj u tom vremenskom periodu.\nZbog toga posetioci s ove IP adrese trenutno ne mogu otvoriti više naloga.",
-       "emailauthenticated": "Vaša e-adresa je potvrđena $2 u $3.",
-       "emailnotauthenticated": "Vaša e-adresa još nije potvrđena.\nPoruke neće biti poslate ni u jednom od sledećih slučajeva.",
-       "noemailprefs": "Unesite e-adresu kako bi ove mogućnosti radile.",
-       "emailconfirmlink": "Potvrdite svoju e-adresu",
-       "invalidemailaddress": "E-adresa ne može biti prihvaćena jer je neispravnog oblika.\nUnesite ispravnu adresu ili ostavite prazno polje.",
-       "cannotchangeemail": "Na ovom vikiju ne možete promeniti e-adresu naloga.",
-       "emaildisabled": "Ovaj sajt ne može da šalje e-poruke.",
+       "emailauthenticated": "Vaša imejl adresa je potvrđena $2 u $3.",
+       "emailnotauthenticated": "Vaša imejl adresa još nije potvrđena.\nImejl neće biti poslat ni u jednom od sledećih slučajeva.",
+       "noemailprefs": "Unesite imejl adresu kako bi ove mogućnosti radile.",
+       "emailconfirmlink": "Potvrdite svoju imejl adresu",
+       "invalidemailaddress": "Imejl adresa ne može biti prihvaćena jer je neispravnog oblika.\nUnesite ispravnu adresu ili ostavite prazno polje.",
+       "cannotchangeemail": "Na ovom vikiju ne možete promeniti imejl adresu naloga.",
+       "emaildisabled": "Ovaj sajt ne može da šalje imejlove.",
        "accountcreated": "Nalog je otvoren",
        "accountcreatedtext": "Korisnički nalog [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) je otvoren.",
        "createaccount-title": "Otvaranje korisničkog naloga za {{SITENAME}}",
-       "createaccount-text": "Neko je otvorio nalog s vašom e-adresom na {{SITENAME}} ($4) pod imenom $2 i lozinkom $3.\nPrijavite se i promenite svoju lozinku.\n\nAko je ovo greška, zanemarite ovu poruku.",
+       "createaccount-text": "Neko je otvorio nalog s vašom imejl adresom na {{SITENAME}} ($4) pod imenom $2 i lozinkom $3.\nPrijavite se i promenite svoju lozinku.\n\nAko je ovo greška, zanemarite ovu poruku.",
        "login-throttled": "Previše puta ste pokušali da se prijavite. \nMolimo vas da sačekate $1 pre nego što pokušate ponovo.",
        "login-abort-generic": "Neuspešna prijava – prekinuto",
        "login-migrated-generic": "Vaš nalog je migriran i vaše korisničko više ne postoji na ovom vikiju.",
        "pt-createaccount": "Otvori nalog",
        "pt-userlogout": "Odjavi me",
        "php-mail-error-unknown": "Nepoznata greška u funkciji PHP mail().",
-       "user-mail-no-addy": "Pokušali ste da pošaljete poruku bez e-adrese.",
+       "user-mail-no-addy": "Pokušali ste da pošaljete imejl bez imejl adrese.",
        "user-mail-no-body": "Pokušano slanje elektronske poruke s praznim ili nerazumno kratkim sadržajem.",
        "changepassword": "Promeni lozinku",
        "resetpass_announce": "Da biste završili prijavu, podesite novu lozinku ovde.",
        "resetpass_submit": "Postavi lozinku i prijavi me",
        "changepassword-success": "Vaša lozinka je uspešno promenjena.",
        "changepassword-throttled": "Previše puta ste pokušali da se prijavite.\nMolimo vas da sačekate $1 pre nego što pokušate ponovo.",
+       "botpasswords": "Lozinke botova",
        "botpasswords-label-cancel": "Otkaži",
        "botpasswords-label-delete": "Obriši",
        "resetpass_forbidden": "Lozinka ne može biti promenjena",
        "resetpass-submit-cancel": "Otkaži",
        "resetpass-wrong-oldpass": "Neispravna privremena ili tekuća lozinka.\nMožda ste već promenili lozinku ili ste zatražili novu privremenu lozinku.",
        "resetpass-recycled": "Uneli ste sadašnju lozinku, da biste resetovali lozinku morate uneti novu.",
-       "resetpass-temp-emailed": "Prijavili ste se sa privremenim kodom iz e-pošte.\nDa biste završili prijavljivanje morate postaviti novu lozinku ovde:",
+       "resetpass-temp-emailed": "Prijavili ste se sa privremenim kodom iz imejla.\nDa biste završili prijavljivanje morate postaviti novu lozinku ovde:",
        "resetpass-temp-password": "Privremena lozinka:",
        "resetpass-abort-generic": "Promenu lozinke je sprečio dodatak.",
        "resetpass-expired": "Vaša lozinka je istekla. Postavite novu lozinku da biste se prijavili.",
        "resetpass-expired-soft": "Vaša lozinka je istekla i morate postaviti novu. Postavite novu lozinku ili kliknite „{{int:authprovider-resetpass-skip-label}}“ da je postavite kasnije.",
        "resetpass-validity-soft": "Vaša lozinka nije valjana: $1\n\nMolimo izaberite novu ili kliknite „{{int:authprovider-resetpass-skip-label}}“ da resetujete kasnije.",
        "passwordreset": "Obnavljanje lozinke",
-       "passwordreset-text-one": "Popunite ovaj obrazac da biste dobili privremenu lozinku na e-poštu.",
-       "passwordreset-text-many": "{{PLURAL:$1|Ispunite jedno od polja kako biste dobili privremenu lozinku na e-poštu.}}",
+       "passwordreset-text-one": "Popunite ovaj obrazac da biste dobili privremenu lozinku na imejl.",
+       "passwordreset-text-many": "{{PLURAL:$1|Ispunite jedno od polja kako biste dobili privremenu lozinku na imejl.}}",
        "passwordreset-disabled": "Obnavljanje lozinke je onemogućeno na ovom vikiju.",
-       "passwordreset-emaildisabled": "E-pošta je onemogućena na ovom vikiju.",
+       "passwordreset-emaildisabled": "Imejl je onemogućen na ovom vikiju.",
        "passwordreset-username": "Korisničko ime:",
        "passwordreset-domain": "Domen:",
-       "passwordreset-capture": "Pogledati krajnju poruku?",
-       "passwordreset-capture-help": "Ako označite ovu kućicu, e-poruka s privremenom lozinkom će biti prikazana i poslata korisniku.",
-       "passwordreset-email": "E-adresa:",
+       "passwordreset-capture": "Pogledati krajnji imejl?",
+       "passwordreset-capture-help": "Ako označite ovo polje, imejl (s privremenom lozinkom) će biti prikazana i poslata korisniku.",
+       "passwordreset-email": "Imejl adresa:",
        "passwordreset-emailtitle": "Detalji naloga na vikiju {{SITENAME}}",
-       "passwordreset-emailtext-ip": "Neko, verovatno Vi, sa IP adrese $1 je zatražio novu lozinku na vikiju {{SITENAME}} ($4).\nSledeći {{PLURAL:$3|korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:\n\n$2\n\n{{PLURAL:$3|Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana}}.\nPrijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku i nastavite koristiti staru lozinku.",
-       "passwordreset-emailtext-user": "{{GENDER:$1|Korisnik je zatražio|Korisnica je zatražila}} podsetnik o podacima za prijavu na vikiju {{SITENAME}} ($4).\nSledeći {{PLURAL:$3|korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:\n\n$2\n\n{{PLURAL:$3|Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana}}.\nPrijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku.",
+       "passwordreset-emailtext-ip": "Neko (verovatno Vi, sa IP adrese $1) je zatražio novu lozinku na vikiju {{SITENAME}} ($4).\nSledeći {{PLURAL:$3|korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom imejl adresom:\n\n$2\n\n{{PLURAL:$3|Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana}}.\nPrijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku i nastavite koristiti staru lozinku.",
+       "passwordreset-emailtext-user": "{{GENDER:$1|Korisnik je zatražio|Korisnica je zatražila}} podsetnik o podacima za prijavu na vikiju {{SITENAME}} ($4).\nSledeći {{PLURAL:$3|korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom imejl adresom:\n\n$2\n\n{{PLURAL:$3|Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana}}.\nPrijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku.",
        "passwordreset-emailelement": "Korisničko ime: \n$1\n\nPrivremena lozinka: \n$2",
        "passwordreset-emailsentemail": "Podsetnik o lozinci je poslat na vašu adresu.",
        "passwordreset-emailsentusername": "Ako ste naveli imejl adresu prilikom registracije, biće poslat imejl za resetovanje lozinke.",
-       "changeemail": "Promeni ili ukloni e-adresu",
+       "changeemail": "Promeni ili ukloni imejl adresu",
        "changeemail-header": "Promenite e-adresu naloga",
        "changeemail-no-info": "Morate biti prijavljeni da biste pristupili ovoj stranici.",
-       "changeemail-oldemail": "Trenutna e-adresa:",
-       "changeemail-newemail": "Nova e-adresa:",
+       "changeemail-oldemail": "Trenutna imejl adresa:",
+       "changeemail-newemail": "Nova imejl adresa:",
        "changeemail-none": "(ništa)",
        "changeemail-password": "Vaša lozinka:",
-       "changeemail-submit": "Promeni",
+       "changeemail-submit": "Promeni imejl",
        "changeemail-throttled": "Previše puta ste pokušali da se prijavite.\nMolimo vas da sačekate $1 pre nego što pokušate ponovo.",
        "changeemail-nochange": "Unesite drugu imejl adresu.",
        "resettokens": "Resetovanje žetona",
        "summary-preview": "Pregled opisa:",
        "subject-preview": "Pregled tema:",
        "blockedtitle": "Korisnik je blokiran",
-       "blockedtext": "<strong>Vaše korisničko ime ili IP adresa je blokirana.</strong>\n\nBlokiranje je {{GENDER:$4|izvršio|izvršila}} $1.\nRazlog: <em>$2</em>.\n\n* Datum blokiranja: $8\n* Blokiranje ističe: $6\n* Ime korisnika: $7\n\nObratite se {{GENDER:$4|korisniku|korisnici}} $1 ili [[{{MediaWiki:Grouppage-sysop}}|administratoru]] da razjasnite stvar.\nNe možete koristiti mogućnost „Pošalji poruku ovom korisniku“ ako niste uneli ispravnu e-adresu u [[Special:Preferences|podešavanjima]].\nVaša blokirana IP adresa je $3, a ID blokiranja $5.\nNavedite sve podatke iznad pri stvaranju bilo kakvih upita.",
-       "autoblockedtext": "Vaša IP adresa je blokirana jer ju je upotrebljavao drugi korisnik, koga je {{GENDER:$4|blokirao|blokirala}} $1.\nRazlog:\n\n:<em>$2</em>\n\n* Datum blokiranja: $8\n* Blokiranje ističe: $6\n* Ime korisnika: $7\n\nObratite se {{GENDER:$4|korisniku|korisnici}} $1 ili [[{{MediaWiki:Grouppage-sysop}}|administratoru]] da razjasnite stvar.\n\nNe možete koristiti mogućnost „Pošalji poruku ovom korisniku“ ako niste uneli ispravnu e-adresu u [[Special:Preferences|podešavanjima]].\n\nVaša blokirana IP adresa je $3, a ID $5.\nNavedite sve podatke iznad pri stvaranju bilo kakvih upita.",
+       "blockedtext": "<strong>Vaše korisničko ime ili IP adresa je blokirana.</strong>\n\nBlokiranje je {{GENDER:$4|izvršio|izvršila}} $1.\nRazlog je <em>$2</em>.\n\n* Datum blokiranja: $8\n* Blokiranje ističe: $6\n* Ime korisnika: $7\n\nObratite se {{GENDER:$4|korisniku|korisnici}} $1 ili [[{{MediaWiki:Grouppage-sysop}}|administratoru]] da razjasnite stvar.\nNe možete koristiti mogućnost „Pošalji imejl ovom korisniku“ ako niste uneli ispravnu imejl adresu u [[Special:Preferences|podešavanjima]].\nVaša blokirana IP adresa je $3, a ID blokiranja $5.\nNavedite sve podatke iznad pri stvaranju bilo kakvih upita.",
+       "autoblockedtext": "Vaša IP adresa je blokirana jer ju je upotrebljavao drugi korisnik, koga je {{GENDER:$4|blokirao|blokirala}} $1.\nRazlog:\n\n:<em>$2</em>\n\n* Datum blokiranja: $8\n* Blokiranje ističe: $6\n* Ime korisnika: $7\n\nObratite se {{GENDER:$4|korisniku|korisnici}} $1 ili [[{{MediaWiki:Grouppage-sysop}}|administratoru]] da razjasnite stvar.\n\nNe možete koristiti mogućnost „Pošalji imejl ovom korisniku“ ako niste uneli ispravnu imejl adresu u [[Special:Preferences|podešavanjima]].\n\nVaša blokirana IP adresa je $3, a ID $5.\nNavedite sve podatke iznad pri stvaranju bilo kakvih upita.",
        "blockednoreason": "razlog nije naveden",
        "whitelistedittext": "Za uređivanje stranice je potrebno da budete $1.",
-       "confirmedittext": "Morate da potvrdite svoju e-adresu pre uređivanja stranica.\nPostavite i potvrdite adresu preko [[Special:Preferences|podešavanja]].",
+       "confirmedittext": "Morate da potvrdite svoju imejl adresu pre uređivanja stranica.\nPostavite i potvrdite imejl adresu preko [[Special:Preferences|podešavanja]].",
        "nosuchsectiontitle": "Ne mogu da pronađem odeljak",
        "nosuchsectiontext": "Pokušali ste da uredite odeljak koji ne postoji.\nMožda je premešten ili obrisan dok ste pregledali stranicu.",
        "loginreqtitle": "Potrebna je prijava",
        "revdelete-show-no-access": "Greška pri prikazivanju stavke od $1, $2: označena je kao „ograničena“.\nNemate pristup do nje.",
        "revdelete-modify-no-access": "Greška pri menjanju stavke od $1, $2: označena je kao „ograničena“.\nNemate pristup do nje.",
        "revdelete-modify-missing": "Greška pri menjanju IB stavke $1: ona ne postoji u bazi podataka.",
-       "revdelete-no-change": "'''Upozorenje:''' stavka od $1, $2 već poseduje zatražene postavke vidljivosti.",
+       "revdelete-no-change": "<strong>Upozorenje:</strong> stavka od $1, $2 već poseduje zatražena podešavanja vidljivosti.",
        "revdelete-concurrent-change": "Greška pri menjanju stavke od $1, $2: njeno stanje je u međuvremenu promenjeno od strane drugog korisnika.\nPogledajte istoriju.",
        "revdelete-only-restricted": "Greška pri sakrivanju stavke od $1, $2: ne možete sakriti stavke od administratora bez izbora drugih mogućnosti vidljivosti.",
        "revdelete-reason-dropdown": "*Uobičajeni razlozi za brisanje\n** Kršenje autorskog prava\n** Neprikladan komentar ili lični podaci\n** Neprikladno korisničko ime\n** Uvredljivi podaci",
        "prefs-watchlist-token": "Žeton spiska nadgledanja:",
        "prefs-misc": "Druga podešavanja",
        "prefs-resetpass": "Promeni lozinku",
-       "prefs-changeemail": "Promeni ili ukloni e-adresu",
-       "prefs-setemail": "Postavi e-adresu",
-       "prefs-email": "Postavke e-pošte",
+       "prefs-changeemail": "Promeni ili ukloni imejl adresu",
+       "prefs-setemail": "Postavi imejl adresu",
+       "prefs-email": "Postavke imejla",
        "prefs-rendering": "Izgled",
        "saveprefs": "Sačuvaj",
        "restoreprefs": "Vrati sve na podrazumevano (u svim odeljcima)",
        "timezoneregion-europe": "Evropa",
        "timezoneregion-indian": "Indijski okean",
        "timezoneregion-pacific": "Tihi okean",
-       "allowemail": "Omogući primanje e-poruka od drugih korisnika",
+       "allowemail": "Omogući primanje imejla od drugih korisnika",
        "prefs-searchoptions": "Pretraga",
        "prefs-namespaces": "Imenski prostori",
        "default": "podrazumevano",
        "prefs-custom-js": "Prilagođeni javaskript",
        "prefs-common-css-js": "Deljeni CSS/javaskript za sve teme:",
        "prefs-reset-intro": "Možete koristiti ovu stranicu da poništite svoje postavke na podrazumevane vrednosti.\nOva radnja se ne može vratiti.",
-       "prefs-emailconfirm-label": "Potvrda e-adrese:",
-       "youremail": "E-adresa:",
+       "prefs-emailconfirm-label": "Potvrda imejla:",
+       "youremail": "Imejl:",
        "username": "{{GENDER:$1|Korisničko ime}}:",
        "prefs-memberingroups": "{{PLURAL:$1|Grupa|Grupe}}:",
        "prefs-memberingroups-type": "$1",
        "gender-male": "On uređuje viki stranice",
        "gender-female": "Ona uređuje viki stranice",
        "prefs-help-gender": "Neobavezno: koristi se za ispravno obraćanje softvera korisnicima, zavisno od njihovog pola.\nOvaj podatak će biti javan.",
-       "email": "E-adresa",
+       "email": "Imejl",
        "prefs-help-realname": "Pravo ime nije obavezno.\nAko izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rada.",
-       "prefs-help-email": "E-adresa nije obavezna, ali je potrebna u slučaju da zaboravite lozinku.",
+       "prefs-help-email": "Imejl adresa nije obavezna, ali je potrebna u slučaju da zaboravite lozinku.",
        "prefs-help-email-others": "Možete je koristiti i da omogućite drugima da vas kontaktiraju preko korisničke stranice ili stranice za razgovor, bez otkrivanja svog identiteta.",
-       "prefs-help-email-required": "Potrebna je e-adresa.",
+       "prefs-help-email-required": "Potrebna je imejl adresa.",
        "prefs-info": "Osnovni podaci",
        "prefs-i18n": "Internacionalizacija",
        "prefs-signature": "Potpis",
        "right-move-categorypages": "premeštanje kategorija",
        "right-movefile": "premeštanje datoteka",
        "right-suppressredirect": "premeštanje stranica bez ostavljanja preusmerenja",
-       "right-upload": "otpremanje datoteka",
+       "right-upload": "Otpremanje datoteka",
        "right-reupload": "zamenjivanje postojećih datoteka",
        "right-reupload-own": "zamenjivanje sopstvenih datoteka",
        "right-reupload-shared": "menjanje datoteka na deljenom skladištu multimedije",
-       "right-upload_by_url": "otpremanje datoteka sa veb adrese",
+       "right-upload_by_url": "Otpremanje datoteka sa veb-adrese",
        "right-purge": "čišćenje keš memorije stranice bez potvrde",
        "right-autoconfirmed": "bez ograničavanja stavki za IP adrese",
        "right-bot": "smatranje izmena kao automatski proces",
        "right-viewsuppressed": "pregledanje izmena skrivenih od svih korisnika",
        "right-suppressionlog": "pregledanje privatnih dnevnika",
        "right-block": "blokiranje daljih izmena drugih korisnika",
-       "right-blockemail": "onemogućavanje korisnicima da šalju e-poruke",
+       "right-blockemail": "Blokiraj korisniku slanje imejla",
        "right-hideuser": "blokiranje korisničkog imena i njegovo sakrivanje od javnosti",
        "right-ipblock-exempt": "zaobilaženje blokiranja IP adrese, automatska blokiranja i blokiranja opsega",
        "right-unblockself": "deblokiranje samog sebe",
        "right-editmyuserjs": "uređivanje sopstvenih JavaScript datoteka",
        "right-viewmywatchlist": "vidi sopstveni spisak nadgledanja",
        "right-editmywatchlist": "uređivanje sopstvenog spiska nadgledanja; neke preduzete radnje će svejedno dodati stranice na spisak i bez ovog prava",
-       "right-viewmyprivateinfo": "vidite svoje lične podatke (npr. adresu e-pošte, pravo ime)",
-       "right-editmyprivateinfo": "uređivanje sopstvenih ličnih podataka (npr. adresu e-pošte, pravo ime)",
+       "right-viewmyprivateinfo": "Vidite svoje lične podatke (npr. imejl adresu, pravo ime)",
+       "right-editmyprivateinfo": "Уređivanje sopstvenih ličnih podataka (npr. imejl adresa, pravo ime)",
        "right-editmyoptions": "uređivanje sopstvenih podešavanja",
        "right-rollback": "brzo vraćanje izmena poslednjeg korisnika koji je menjao određenu stranicu",
        "right-markbotedits": "označavanje vraćenih izmena kao izmene bota",
        "right-userrights-interwiki": "uređivanje korisničkih prava na drugim vikijima",
        "right-siteadmin": "zaključavanje i otključavanje baze podataka",
        "right-override-export-depth": "izvoz stranica uključujući i povazene stranice do dubine od pet veza",
-       "right-sendemail": "slanje e-poruka drugim korisnicima",
+       "right-sendemail": "Pošalji imejl drugim korisnicima",
        "right-passwordreset": "pregledanje poruka za obnavljanje lozinke",
        "right-managechangetags": "pravljenje i (de)aktiviranje [[Special:Tags|oznaka]]",
        "grant-group-page-interaction": "Uređivanje stranica",
        "grant-editpage": "Uređivanje postojećih stranica",
        "grant-editprotected": "Uređivanje zaštićenih stranica",
        "grant-uploadeditmovefile": "Otpremanje, zamena i premeštanje datoteka",
-       "grant-uploadfile": "Slanje novih datoteka",
+       "grant-uploadfile": "Otpremanje novih datoteka",
        "newuserlogpage": "Dnevnik novih korisnika",
        "newuserlogpagetext": "Ovo je dnevnik novih korisnika.",
        "rightslog": "Dnevnik korisničkih prava",
        "action-move-rootuserpages": "premeštanje osnovnih korisničkih stranica",
        "action-move-categorypages": "premeštanje kategorija",
        "action-movefile": "premeštanje ove datoteke",
-       "action-upload": "slanje ove datoteke",
+       "action-upload": "otpremi ovu datoteku",
        "action-reupload": "zamenjivanje postojeće datoteke",
        "action-reupload-shared": "postavljanje ove datoteke na zajedničko skladište",
-       "action-upload_by_url": "slanje ove datoteke preko URL adrese",
+       "action-upload_by_url": "otpremanje ove datoteke preko veb-adrese",
        "action-writeapi": "pisanje API-ja",
        "action-delete": "brisanje ove stranice",
        "action-deleterevision": "brisanje ove izmene",
        "action-userrights": "uređivanje svih korisničkih prava",
        "action-userrights-interwiki": "uređivanje korisničkih prava na drugim vikijima",
        "action-siteadmin": "zaključavanje ili otključavanje baze podataka",
-       "action-sendemail": "slanje e-poruka",
+       "action-sendemail": "slanje imejlova",
        "action-editmywatchlist": "izmenu sopstvenog spisak nadgledanja",
        "action-viewmywatchlist": "pregled vašeg spisak nadgledanja",
        "action-viewmyprivateinfo": "pregledanje vaših ličnih podataka",
        "reuploaddesc": "Nazad na obrazac za otpremanje",
        "upload-tryagain": "Pošalji izmenjeni opis datoteke",
        "uploadnologin": "Niste prijavljeni",
-       "uploadnologintext": "Morate biti $1 da biste otpremali datoteke.",
+       "uploadnologintext": "$1 da biste otpremali datoteke.",
        "upload_directory_missing": "Fascikla za slanje ($1) nedostaje i server je ne može napraviti.",
        "upload_directory_read_only": "Server ne može da piše po fascikli za slanje ($1).",
        "uploaderror": "Greška pri otpremanju",
        "uploadwarning-text": "Izmenite opis datoteke i pokušajte ponovo.",
        "savefile": "Sačuvaj datoteku",
        "uploaddisabled": "Otpremanje je onemogućeno.",
-       "copyuploaddisabled": "Slanje putem URL adrese je onemogućeno.",
+       "copyuploaddisabled": "Otpremanje putem veb-adrese je onemogućeno.",
        "uploaddisabledtext": "Otpremanje datoteka je onemogućeno.",
-       "php-uploaddisabledtext": "Slanje datoteka je onemogućeno u PHP-u.\nProverite postavke file_uploads.",
+       "php-uploaddisabledtext": "Otpremanje datoteka je onemogućeno u PHP-u.\nProverite podešavanja file_uploads.",
        "uploadscripted": "Datoteka sadrži HTML ili skriptni kod koji može biti pogrešno protumačen od strane pregledača.",
        "uploadscriptednamespace": "Ova SVG datoteka sadrži pogrešan imenski prostor „$1“",
        "uploadvirus": "Datoteka sadrži virus!\nDetalji: $1",
        "destfilename": "Naziv:",
        "upload-maxfilesize": "Maksimalna veličina datoteke: $1",
        "upload-description": "Opis datoteke",
-       "upload-options": "Postavke slanja",
+       "upload-options": "Postavke otpremanja",
        "watchthisupload": "Nadgledaj ovu datoteku",
        "filewasdeleted": "Datoteka s ovim nazivom je ranije poslata, ali je obrisana.\nProverite $1 pre nego što nastavite s ponovnim slanjem.",
        "filename-bad-prefix": "Naziv datoteke koju šaljete počinje sa <strong>„$1“</strong>, a njega obično dodeljuju digitalni fotoaparati.\nIzaberite naziv datoteke koji opisuje njen sadržaj.",
        "invalid-chunk-offset": "Neispravna polazna tačka",
        "img-auth-accessdenied": "Pristup je odbijen",
        "img-auth-nopathinfo": "Nedostaje PATH_INFO.\nVaš server nije podešen da prosleđuje ovakve podatke.\nMožda je zasnovan na CGI-ju koji ne podržava img_auth.\nPogledajte https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization?uselang=sr-ec.",
-       "img-auth-notindir": "Zahtevana putanja nije u podešenoj fascikli za slanje.",
+       "img-auth-notindir": "Zahtevana putanja nije u podešenoj fascikli za otpremanje.",
        "img-auth-badtitle": "Ne mogu da stvorim ispravan naslov za „$1“.",
        "img-auth-nologinnWL": "Niste prijavljeni i „$1“ nije na spisku dozvoljenih.",
        "img-auth-nofile": "Datoteka „$1“ ne postoji.",
        "http-bad-status": "Došlo je do problema tokom zahteva HTTP: $1 $2",
        "upload-curl-error6": "Ne mogu da pristupim adresi",
        "upload-curl-error6-text": "Ne mogu da pristupim navedenoj adresi.\nProverite da li je adresa ispravna i dostupna.",
-       "upload-curl-error28": "Slanje je isteklo",
+       "upload-curl-error28": "Otpremanje je isteklo",
        "upload-curl-error28-text": "Server ne odgovara na upit.\nProverite da li sajt radi, malo osačekajte i pokušajte ponovo.\nProbajte kasnije kada bude manje opterećenje.",
        "license": "Licenca:",
        "license-header": "Licenca:",
        "nopagetext": "Tražena stranica ne postoji.",
        "pager-newer-n": "{{PLURAL:$1|noviji 1|novija $1|novijih $1}}",
        "pager-older-n": "{{PLURAL:$1|stariji 1|starijih $1}}",
-       "suppress": "Nadzor",
+       "suppress": "Revizija",
        "querypage-disabled": "Ova posebna stranica je onemogućena radi poboljšanja performansi.",
        "apihelp": "API pomoć",
        "apihelp-no-such-module": "Modul „$1“ nije pronađen.",
        "trackingcategories-nodesc": "Opis nije dostupan.",
        "trackingcategories-disabled": "Kategorija je onemogućena",
        "mailnologin": "Nema adrese za slanje",
-       "mailnologintext": "Morate biti [[Special:UserLogin|prijavljeni]] i imati ispravnu e-adresu u [[Special:Preferences|podešavanjima]] da biste slali e-poruke drugim korisnicima.",
-       "emailuser": "Pošalji e-poruku",
-       "emailuser-title-target": "Slanje e-poruke {{GENDER:$1|korisniku|korisnici|korisniku}}",
-       "emailuser-title-notarget": "Slanje e-poruke korisniku",
-       "emailpagetext": "Možete da koristite donji obrazac da pošaljete e-poruku {{GENDER:$1|ovom korisniku|ovoj korisnici}}.\nE-adresa koju ste uneli u vašim [[Special:Preferences|podešavanjima]] će se prikazati u polju „Od“, tako da će primalac moći da vam odgovori direktno.",
-       "defemailsubject": "{{SITENAME}} — E-pošta od {{GENDER:$1|korisnika|korisnice}} $1",
-       "usermaildisabled": "Korisnička e-pošta je onemogućena",
-       "usermaildisabledtext": "Ne možete da šaljete e-poruke drugim korisnicima na ovom vikiju",
-       "noemailtitle": "Nema e-adrese",
-       "noemailtext": "Ovaj korisnik nije naveo ispravnu e-adresu.",
-       "nowikiemailtext": "Ovaj korisnik je odlučio da ne prima e-poruke od drugih korisnika.",
+       "mailnologintext": "Morate biti [[Special:UserLogin|prijavljeni]] i imati ispravnu imejl adresu u [[Special:Preferences|podešavanjima]] da biste slali imejlove drugim korisnicima.",
+       "emailuser": "Pošalji imejl",
+       "emailuser-title-target": "Slanje imejla {{GENDER:$1|korisniku|korisnici}}",
+       "emailuser-title-notarget": "Slanje imejla korisniku",
+       "emailpagetext": "Možete da koristite donji obrazac da pošaljete imejl {{GENDER:$1|ovom korisniku|ovoj korisnici}}.\nImejl koji ste uneli u vašim [[Special:Preferences|podešavanjima]] će se prikazati u polju „Od“, tako da će primalac moći da vam odgovori direktno.",
+       "defemailsubject": "{{SITENAME}} — Imejl od {{GENDER:$1|korisnika|korisnice}} „$1”",
+       "usermaildisabled": "Korisnički imejl je onemogućen",
+       "usermaildisabledtext": "Ne možete da šaljete imejlove drugim korisnicima na ovom vikiju",
+       "noemailtitle": "Nema imejl adrese",
+       "noemailtext": "Ovaj korisnik nije naveo ispravnu imejl adresu.",
+       "nowikiemailtext": "Ovaj korisnik je odlučio da ne prima imejlove od drugih korisnika.",
        "emailnotarget": "Nepostojeće ili neispravno korisničko ime primaoca.",
        "emailtarget": "Unos korisničkog imena primaoca",
        "emailusername": "Korisničko ime:",
        "emailusernamesubmit": "Pošalji",
-       "email-legend": "Slanje e-poruka drugom korisniku",
+       "email-legend": "Pošalji imejl drugom korisniku",
        "emailfrom": "Od:",
        "emailto": "Za:",
        "emailsubject": "Naslov:",
        "emailmessage": "Poruka:",
        "emailsend": "Pošalji",
-       "emailccme": "Pošalji mi kopiju poruke na moju e-poštu.",
+       "emailccme": "Pošalji mi kopiju poruke na moj imejl.",
        "emailccsubject": "Kopija vaše poruke korisniku $1: $2",
-       "emailsent": "Poruka je poslata",
-       "emailsenttext": "Vaša e-poruka je poslata.",
-       "emailuserfooter": "Ovu e-poruku je {{GENDER:$1|poslao|poslala}} $1 {{GENDER:$2|korisniku|korisnici}} $2 pomoću „{{int:emailuser}}“ s vikija {{SITENAME}}.",
+       "emailsent": "Imejl je poslat",
+       "emailsenttext": "Vaša imejl poruka je poslata.",
+       "emailuserfooter": "Ovaj imejl je {{GENDER:$1|poslao|poslala}} $1 {{GENDER:$2|korisniku|korisnici}} $2 pomoću „{{int:emailuser}}“ s vikija {{SITENAME}}.",
        "usermessage-summary": "Slanje sistemske poruke.",
        "usermessage-editor": "Uređivač sistemskih poruka",
        "usermessage-template": "MediaWiki:UserMessage",
        "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.",
-       "wlheader-enotif": "Obaveštenje e-porukom je omogućeno.",
+       "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.",
        "wlshowlast": "Prikaži poslednjih $1 sati, $2 dana",
        "enotif_lastvisited": "Pogledajte $1 za sve izmene od vaše poslednje posete.",
        "enotif_lastdiff": "Pogledajte $1 da vidite ovu izmenu.",
        "enotif_anon_editor": "anoniman korisnik $1",
-       "enotif_body": "Poštovani $WATCHINGUSERNAME,\n \t\n$PAGEINTRO $NEWPAGE\n\nOpis: $PAGESUMMARY $PAGEMINOREDIT\n\nKontakt:\ne-pošta: $PAGEEDITOR_EMAIL\nviki: $PAGEEDITOR_WIKI\n\nNeće biti drugih obaveštenja u slučaju daljih izmena ukoliko ne posetite ovu stranicu kada ste prijavljeni.\nMožete i da poništite postavke obaveštenja za sve stranice u vašem spisku nadgledanja.\n\nSrdačan pozdrav, {{SITENAME}}\n\n--\nDa biste promenili postavke u vezi sa e-obaveštenjima, posetite\n{{canonicalurl:{{#special:Preferences}}}}\n\nDa biste promenili postavke u vezi sa spiskom nadgledanja, posetite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nDa biste uklonili ovu stranicu sa spiska nadgledanja, posetite\n$UNWATCHURL\n\nPodrška i dalja pomoć:\n$HELPPAGE",
+       "enotif_body": "Poštovani $WATCHINGUSERNAME,\n \t\n$PAGEINTRO $NEWPAGE\n\nOpis: $PAGESUMMARY $PAGEMINOREDIT\n\nKontakt:\nmejl: $PAGEEDITOR_EMAIL\nviki: $PAGEEDITOR_WIKI\n\nNeće biti drugih obaveštenja u slučaju daljih izmena ukoliko ne posetite ovu stranicu kada ste prijavljeni.\nMožete i da poništite postavke obaveštenja za sve stranice u vašem spisku nadgledanja.\n\nSrdačan pozdrav, {{SITENAME}}\n\n--\nDa biste promenili postavke imejl obaveštenja, posetite\n{{canonicalurl:{{#special:Preferences}}}}\n\nDa biste promenili postavke spiska nadgledanja, posetite\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nDa biste uklonili ovu stranicu sa spiska nadgledanja, posetite\n$UNWATCHURL\n\nPodrška i dalja pomoć:\n$HELPPAGE",
        "created": "napravljena",
        "changed": "izmenjena",
        "deletepage": "Obriši stranicu",
        "protectedarticle": "je zaštitio „[[$1]]“",
        "modifiedarticleprotection": "promenjen stepen zaštite za „[[$1]]“",
        "unprotectedarticle": "je skinuo zaštitu sa stranice „[[$1]]“",
-       "movedarticleprotection": "je premestio postavke zaštite sa „[[$2]]“ na „[[$1]]“",
+       "movedarticleprotection": "je premestio podešavanja zaštite sa „[[$2]]“ na „[[$1]]“",
        "protect-title": "Stepen zaštite za „$1“",
        "protect-title-notallowed": "Pregled stepena zaštite za „$1“",
        "prot_1movedto2": "je premestio [[$1]] na [[$2]]",
        "restriction-edit": "uređivanje",
        "restriction-move": "premeštanje",
        "restriction-create": "pravljenje",
-       "restriction-upload": "slanje",
+       "restriction-upload": "otpremanje",
        "restriction-level-sysop": "potpuno zaštićeno",
        "restriction-level-autoconfirmed": "poluzaštićeno",
        "restriction-level-all": "svi nivoi",
        "ipbreason-dropdown": "*Najčešći razlozi za blokiranje\n** Unošenje lažnih informacija\n** Uklanjanje sadržaja sa stranica\n** Postavljanje veza do spoljašnjih sajtova\n** Unošenje besmislica u stranice\n** Nepristojno ponašanje\n** Upotreba više naloga\n** Neprihvatljivo korisničko ime",
        "ipb-hardblock": "Onemogući prijavljenim korisnicima da uređuju s ove IP adrese",
        "ipbcreateaccount": "Onemogući otvaranje naloga",
-       "ipbemailban": "Onemogući korisniku da šalje e-poruke",
+       "ipbemailban": "Spreči korisnika da šalje imejlove",
        "ipbenableautoblock": "Automatski blokiraj poslednju IP adresu ovog korisnika i sve daljnje adrese s kojih pokuša da uređuje",
        "ipbsubmit": "Blokiraj ovog korisnika",
        "ipbother": "Drugo vreme:",
        "anononlyblock": "samo anonimni",
        "noautoblockblock": "automatsko blokiranje je onemogućeno",
        "createaccountblock": "otvaranje naloga je onemogućeno",
-       "emailblock": "e-pošta je blokirana",
+       "emailblock": "imejl je onemogućen",
        "blocklist-nousertalk": "zabranjeno uređivanje sopstvene stranice za razgovor",
        "ipblocklist-empty": "Spisak blokiranja je prazan.",
        "ipblocklist-no-results": "Tražena IP adresa ili korisničko ime nije blokirano.",
        "unblocklink": "deblokiraj",
        "change-blocklink": "promeni blokiranje",
        "contribslink": "doprinosi",
-       "emaillink": "pošalji e-poruku",
+       "emaillink": "pošalji imejl",
        "autoblocker": "Automatski ste blokirani jer delite IP adresu s korisnikom/com [[User:$1|$1]].\nRazlog blokiranja: „$2“",
        "blocklogpage": "Dnevnik blokiranja",
        "blocklog-showlog": "{{GENDER:$1|Ovaj korisnik je ranije blokiran|Ova korisnica je ranije blokirana|Ovaj korisnik je ranije blokiran}}.\nIstorija blokiranja se nalazi ispod:",
        "block-log-flags-anononly": "samo anonimni korisnici",
        "block-log-flags-nocreate": "onemogućeno otvaranje naloga",
        "block-log-flags-noautoblock": "automatsko blokiranje je onemogućeno",
-       "block-log-flags-noemail": "e-pošta je blokirana",
+       "block-log-flags-noemail": "imejl je onemogućen",
        "block-log-flags-nousertalk": "zabranjeno uređivanje sopstvene stranice za razgovor",
        "block-log-flags-angry-autoblock": "prošireno automatsko blokiranje je omogućeno",
        "block-log-flags-hiddenname": "korisničko ime je sakriveno",
        "tooltip-search": "Pretraga",
        "tooltip-search-go": "Idite na stranicu s ovim imenom, ako postoji",
        "tooltip-search-fulltext": "Pretražite stranice s ovim tekstom",
-       "tooltip-p-logo": "Posetite naslovnu stranu",
-       "tooltip-n-mainpage": "Posetite naslovnu stranu",
-       "tooltip-n-mainpage-description": "Posetite naslovnu stranu",
+       "tooltip-p-logo": "Posetite glavnu stranu",
+       "tooltip-n-mainpage": "Posetite glavnu stranu",
+       "tooltip-n-mainpage-description": "Posetite glavnu stranu",
        "tooltip-n-portal": "O projektu, šta možete da radite i gde da pronađete stvari",
        "tooltip-n-currentevents": "Saznajte više o tekućim događajima",
        "tooltip-n-recentchanges": "Spisak skorašnjih izmena na vikiju",
        "tooltip-t-contributions": "Spisak doprinosa {{GENDER:$1|ovog korisnika|ove korisnice}}",
        "tooltip-t-emailuser": "Pošaljite imejl {{GENDER:$1|ovom korisniku|ovoj korisnici}}",
        "tooltip-t-info": "Više informacija o ovoj stranici",
-       "tooltip-t-upload": "Pošaljite datoteke",
+       "tooltip-t-upload": "Otpremi datoteke",
        "tooltip-t-specialpages": "Spisak svih posebnih stranica",
        "tooltip-t-print": "Verzija ove stranice za štampanje",
        "tooltip-t-permalink": "Stalna veza ka ovoj izmeni stranice",
        "pageinfo-robot-index": "Dozvoljeno",
        "pageinfo-robot-noindex": "Nije dozvoljeno",
        "pageinfo-watchers": "Broj nadgledača stranicе",
+       "pageinfo-visiting-watchers": "Broj nadgledača stranice koji su posjetili skorašnje izmjene",
        "pageinfo-few-watchers": "Manje od $1 {{PLURAL:$1|pratioca|pratilaca}}",
        "pageinfo-redirects-name": "Broj preusmerenja na ovu stranicu",
        "pageinfo-subpages-name": "Podstranice ove stranice",
        "exif-urgency-other": "Prilagođeni prioritet ($1)",
        "namespacesall": "svi",
        "monthsall": "sve",
-       "confirmemail": "Potvrda e-adrese",
-       "confirmemail_noemail": "Niste uneli ispravnu e-adresu u [[Special:Preferences|podešavanjima]].",
-       "confirmemail_text": "{{SITENAME}} zahteva da potvrdite e-adresu pre nego što počnete da koristite mogućnosti e-pošte.\nKliknite na dugme ispod za slanje poruke na vašu e-adresu.\nU poruci će se nalaziti veza s potvrdnim kodom;\nunesite je u pregledač da biste potvrdili da je vaša e-adresa ispravna.",
+       "confirmemail": "Potvrda imejl adrese",
+       "confirmemail_noemail": "Niste uneli ispravnu imejl adresu u [[Special:Preferences|podešavanjima]].",
+       "confirmemail_text": "{{SITENAME}} zahteva da potvrdite imejl adresu pre nego što počnete da koristite mogućnosti imejla.\nKliknite na dugme ispod za slanje poruke na vašu adresu.\nU poruci će se nalaziti veza s potvrdnim kodom;\nunesite je u pregledač da biste potvrdili da je vaša imejl adresa ispravna.",
        "confirmemail_pending": "Potvrdni kod vam je već poslat. Ako ste upravo otvorili nalog, onda verovatno treba da sačekate nekoliko minuta da pristigne, pre nego što ponovo zatražite novi kod.",
        "confirmemail_send": "Pošalji potvrdni kod",
        "confirmemail_sent": "Potvrdna poruka je poslata.",
-       "confirmemail_oncreate": "Poslat je potvrdni kod na vašu e-adresu.\nOvaj kod nije potreban za prijavljivanje, ali vam treba da biste uključili mogućnosti e-pošte na vikiju.",
-       "confirmemail_sendfailed": "{{SITENAME}} ne može da pošalje poruku.\nProverite da li je e-adresa pravilno napisana.\n\nGreška: $1",
+       "confirmemail_oncreate": "Poslat je potvrdni kod na vašu imejl adresu.\nOvaj kod nije potreban za prijavljivanje, ali vam treba da biste uključili mogućnosti imejla na vikiju.",
+       "confirmemail_sendfailed": "{{SITENAME}} ne može da pošalje imejl potvrdu.\nProverite da li je imejl adresa pravilno napisana.\n\nGreška: $1",
        "confirmemail_invalid": "Potvrdni kod je neispravan. Verovatno je istekao.",
-       "confirmemail_needlogin": "Morate biti $1 da biste potvrdili e-adresu.",
-       "confirmemail_success": "Vaša e-adresa je potvrđena.\nSada možete da se [[Special:UserLogin|prijavite]]. Želimo vam prijatan boravak na vikiju.",
-       "confirmemail_loggedin": "Vaša e-adresa je sada potvrđena.",
-       "confirmemail_subject": "{{SITENAME}} – potvrda e-adrese",
-       "confirmemail_body": "Neko, verovatno vi, sa IP adrese $1 je otvorio nalog „$2“ na vikiju {{SITENAME}}, navodeći ovu e-adresu.\n\nDa potvrdite da ovaj nalog stvarno pripada vama, kao i da\nomogućite mogućnosti e-pošte, otvorite ovu vezu u pregledaču:\n\n$3\n\nUkoliko niste otvorili nalog, pratite vezu\nispod kako biste prekinuli postupak upisa:\n\n$5\n\nOvaj potvrdni kod ističe $6 u $5.",
-       "confirmemail_body_changed": "Neko, verovatno vi, sa IP adrese $1 je promenio e-adresu naloga „$2“ u ovu adresu na vikiju {{SITENAME}}.\n\nDa biste potvrdili da ovaj nalog stvarno pripada vama i ponovo aktivirali mogućnosti e-pošte, otvorite sledeću vezu u pregledaču:\n\n$3\n\nAko nalog *ne* pripada vama, pratite sledeću vezu da otkažete potvrdu e-adrese:\n\n$5\n\nOvaj potvrdni kod ističe $6 u $7",
-       "confirmemail_body_set": "Neko, verovatno vi, sa IP adrese $1 je promenio e-adresu naloga „$2“ u ovu adresu na {{SITENAME}}.\n\nDa bismo potvrdili da ovaj nalog stvarno pripada vama i ponovo aktivirali mogućnosti e-pošte na {{SITENAME}}, otvorite sledeću vezu u pregledaču:\n\n$3\n\nAko nalog *ne* pripada vama, pratite sledeću vezu da otkažete potvrdu e-adrese:\n\n$5\n\nOvaj potvrdni kod ističe $4.",
-       "confirmemail_invalidated": "Potvrda e-pošte je otkazana",
-       "invalidateemail": "Otkazivanje potvrde e-pošte",
+       "confirmemail_needlogin": "Morate biti $1 da biste potvrdili imejl adresu.",
+       "confirmemail_success": "Vaša imejl adresa je potvrđena.\nSada možete da se [[Special:UserLogin|prijavite]] i uživate u vikiju.",
+       "confirmemail_loggedin": "Vaša imejl adresa je sada potvrđena.",
+       "confirmemail_subject": "{{SITENAME}} – potvrda imejl adrese",
+       "confirmemail_body": "Neko, verovatno vi, sa IP adrese $1,\notvorio je nalog „$2“ sa ovom imejl adresom na vikiju {{SITENAME}}.\n\nDa potvrdite da ovaj nalog stvarno pripada vama i da aktivirate\nmogućnosti imejla na vikiju {{SITENAME}}, otvorite ovu vezu u pregledaču:\n\n$3\n\nUkoliko nalog *ne* pripada vama, pratite vezu\nda otkažete potvrdu imejl adrese:\n\n$5\n\nOvaj potvrdni kod ističe u $4.",
+       "confirmemail_body_changed": "Neko, verovatno vi, sa IP adrese $1,\npromenio je imejl adresu naloga „$2“ u ovu adresu na vikiju {{SITENAME}}.\n\nDa biste potvrdili da ovaj nalog stvarno pripada vama i ponovo aktivirali mogućnosti imejla, otvorite sledeću vezu u pregledaču:\n\n$3\n\nAko nalog *ne* pripada vama, pratite sledeću vezu da otkažete potvrdu imejl adrese:\n\n$5\n\nOvaj potvrdni kod ističe $6 u $7",
+       "confirmemail_body_set": "Neko, verovatno vi, sa IP adrese $1,\npromenio je imejl adresu naloga „$2“ u ovu adresu na {{SITENAME}}.\n\nDa bismo potvrdili da ovaj nalog stvarno pripada vama i ponovo aktivirali\nmogućnosti imejla na {{SITENAME}}, otvorite sledeću vezu u pregledaču:\n\n$3\n\nAko nalog *ne* pripada vama, pratite sledeću vezu da otkažete potvrdu imejl adrese:\n\n$5\n\nOvaj potvrdni kod ističe $4.",
+       "confirmemail_invalidated": "Potvrda imejl adrese je otkazana",
+       "invalidateemail": "Otkazivanje potvrde imejla",
        "scarytranscludedisabled": "[Međuviki uključivanje šablona je onemogućeno]",
        "scarytranscludefailed": "[Dobavljanje šablona za $1 nije uspelo]",
        "scarytranscludefailed-httpstatus": "[Ne mogu da preuzmem šablon $1: HTTP $2]",
        "logentry-newusers-newusers": "$1 je {{GENDER:$2|otvorio|otvorila}} korisnički nalog",
        "logentry-newusers-create": "$1 je {{GENDER:$2|otvorio|otvorila}} korisnički nalog",
        "logentry-newusers-create2": "$1 je {{GENDER:$2|otvorio|otvorila}} korisnički nalog $3",
-       "logentry-newusers-byemail": "$1 je {{GENDER:$2|otvorio|otvorila}} korisnički nalog $3 i lozinka je poslata na e-poštu",
+       "logentry-newusers-byemail": "$1 je {{GENDER:$2|otvorio|otvorila}} korisnički nalog $3 i lozinka je poslata na imejl",
        "logentry-newusers-autocreate": "Korisnički nalog $1 je automatski {{GENDER:$2|otvoren}}",
        "logentry-protect-move_prot": "$1 je {{GENDER:$2|premestio|premestila}} postavke zaštite sa $4 na $3",
        "logentry-protect-unprotect": "$1 je {{GENDER:$2|skinuo|skinula}} zaštitu sa stranice $3",
        "mediastatistics-header-total": "Sve datoteke",
        "json-error-syntax": "Greška u sintaksi",
        "headline-anchor-title": "Veza do ovog odeljka",
-       "special-characters-group-latin": "latinica",
+       "special-characters-group-latin": "Latinica",
        "special-characters-group-latinextended": "proširena latinica",
        "special-characters-group-ipa": "IPA",
        "special-characters-group-symbols": "Simboli",
        "mw-widgets-dateinput-placeholder-month": "GGGG-MM",
        "mw-widgets-titleinput-description-new-page": "stranica još uvek ne postoji",
        "mw-widgets-titleinput-description-redirect": "preusmerava na $1",
-       "randomrootpage": "Slučajna korenska stranica"
+       "randomrootpage": "Slučajna korenska stranica",
+       "log-action-filter-upload-upload": "Novo otpremanje",
+       "authmanager-email-label": "Imejl",
+       "authmanager-email-help": "Imejl adresa",
+       "changecredentials": "Promjena akreditiva"
 }
index b54ca99..b75ade0 100644 (file)
        "confirmemail_oncreate": "మీ ఈ-మెయిలు చిరునామాకి ఒక ధృవీకరణ సంకేతాన్ని పంపించాం.\nలోనికి ప్రవేశించేందుకు ఆ సంకేతం అవసరంలేదు, కానీ ఈ వికీలో ఈ-మెయిలు ఆధారిత సౌలభ్యాలను చేతనం చేసేముందు దాన్ని ఇవ్వవలసి ఉంటుంది.",
        "confirmemail_sendfailed": "{{SITENAME}} మీ  నిర్ధారణ మెయిలుని పంపలేకపోయింది.\nమీ ఈమెయిల్ చిరునామాలో తప్పులున్నాయేమో సరిచూసుకోండి.\n\nమెయిలరు ఇలా చెప్పింది: $1",
        "confirmemail_invalid": "ధృవీకరణ సంకేతం సరైనది కాదు. దానికి కాలం చెల్లి ఉండవచ్చు.",
-       "confirmemail_needlogin": "à°®à±\80 à°\88à°®à±\86యిలà±\81 à°\9aà°¿à°°à±\81నామాని à°¦à±\83వపరà°\9aà°\9fానిà°\95à°¿ à°®à±\80à°°à±\81 $1 à°\89à°\82డాలి.",
+       "confirmemail_needlogin": "à°®à±\80 à°\88à°®à±\86యిలà±\81 à°\9aà°¿à°°à±\81నామానà±\81 à°§à±\8dà°°à±\81à°µà±\80à°\95à°°à°¿à°\82à°\9aà±\87à°\82à°¦à±\81à°\95à±\81, $1.",
        "confirmemail_success": "మీ ఈ-మెయిలు చిరునామా ధృవీకరించబడింది.\nఇక [[Special:UserLogin|లోనికి ప్రవేశించి]] వికీని అస్వాదించండి.",
        "confirmemail_loggedin": "మీ ఈ-మెయిలు చిరునామా ఇప్పుడు రూఢి అయింది.",
        "confirmemail_subject": "{{SITENAME}} ఈ-మెయిలు చిరునామా ధృవీకరణ",
        "table_pager_empty": "ఫలితాలు లేవు",
        "autosumm-blank": "పేజీలోని విషయాన్నంతటినీ తీసేసారు.",
        "autosumm-replace": "పేజీని '$1' తో మారుస్తున్నాం",
-       "autoredircomment": "[[$1]]కు దారిమళ్ళించారు",
+       "autoredircomment": "పేజీని [[$1]] కు దారి మళ్ళించారు",
        "autosumm-new": "'$1' తో కొత్త పేజీని సృష్టించారు",
        "autosumm-newblank": "ఖాళీ పేజీని సృష్టించారు",
        "lag-warn-normal": "$1 {{PLURAL:$1|క్షణం|క్షణాల}} లోపు జరిగిన మార్పులు ఈ జాబితాలో కనిపించకపోవచ్చు.",
index 7b76fa7..f8cb2b3 100644 (file)
@@ -95,7 +95,7 @@
        "tog-hideminor": "Son değişiklikler sayfasında küçük değişiklikleri gizle",
        "tog-hidepatrolled": "Son değişikliklerde devriye görmüş değişiklikleri gizle",
        "tog-newpageshidepatrolled": "Yeni sayfalar listesinde, devriye görmüş sayfaları gizle",
-       "tog-hidecategorization": "Sayfa kategorilendirmesni gizle",
+       "tog-hidecategorization": "Sayfa kategorilendirmesini gizle",
        "tog-extendwatchlist": "İzleme listesini sadece en son değil, tüm değişiklikleri göstermek üzere genişlet",
        "tog-usenewrc": "Son değişiklikler sayfasındaki ve izleme listesindeki değişiklikleri sayfalara gruplandır",
        "tog-numberheadings": "Başlıkları otomatik numaralandır",
        "tog-watchlistreloadautomatically": "Filtre değiştiğinde izleme listesini otomatik yenile (JavaScript gerekir)",
        "tog-watchlisthideanons": "İzleme listemde, anonim kullanıcılar tarafından yapılan değişiklikleri gizle",
        "tog-watchlisthidepatrolled": "İzleme listesinde, devriye görmüş değişiklikleri gizle",
-       "tog-watchlisthidecategorization": "Sayfa kategorilendirmesni gizle",
+       "tog-watchlisthidecategorization": "Sayfa kategorilendirmesini gizle",
        "tog-ccmeonemails": "Diğer kullanıcılara gönderdiğim e-postaların bir kopyasını bana da gönder",
        "tog-diffonly": "Sayfa içeriğini, sürüm farklarının altında gösterme",
        "tog-showhiddencats": "Gizli kategorileri göster",
index 7bff7f2..4b39079 100644 (file)
@@ -6,26 +6,46 @@
                        "Udmwiki",
                        "ОйЛ",
                        "לערי ריינהארט",
-                       "TMg"
+                       "TMg",
+                       "AlnashPiyash2",
+                       "Irus",
+                       "Shklyaev",
+                       "Wadorgurt"
                ]
        },
-       "tog-underline": "Линкъёс ултӥз гожен сызоно",
-       "tog-hideminor": "Берпуметӥ тупатонъёслэн списоксэс ичи воштонъёстэк возьматыны",
-       "tog-hidepatrolled": "Берпуметӥ тупатонъёслэн списоксэс партрулировать каремын воштонъёстэк возьматыны",
-       "tog-newpageshidepatrolled": "Выль бамъёслэн списоксэс партрулировать каремын бамъёстэк возьматыны",
+       "tog-underline": "Чӧлсконъёсыз ултӥз гожен сызоно",
+       "tog-hideminor": "Выль тупатонъёслэн списоксэс ичи воштонъёстэк возьматыны",
+       "tog-hidepatrolled": "Выль тупатонъёслэн списоксэс эскерем воштонъёстэк возьматыны",
+       "tog-newpageshidepatrolled": "Выль бамъёслэн списоксэс эскерем бамъёстэк возьматыны",
+       "tog-hidecategorization": "Бамъёслэсь категоризацизэс ватыны",
        "tog-extendwatchlist": "Чаклан списокын вань тупатонъёсты возьматыны (озьытэк берпуметӥоссэс гинэ)",
        "tog-usenewrc": "Выль тупатонъёслэсь списоксэс умояллям сямен возьматыны (JavsScript кулэ)",
        "tog-numberheadings": "Заголовокъёсты автоматически нумеровать карыны",
-       "tog-showtoolbar": "Тупатон тӥрлыкъёслэн панельзэс возьматыны (JavaScript кулэ)",
+       "tog-showtoolbar": "Тупатон тӥрлыкъёслэн панельзэс возьматыны",
        "tog-editondblclick": "Бамъёсты шырлэсь зӥбонзэ кык пол зӥбыса тупатыны (JavaScript кулэ)",
        "tog-editsectiononrightclick": "Cекциолэсь заголовок вылазы шырлэн бур кнопкаеныз зӥбыса тупатонзэс лэзьыны (JavaScript кулэ)",
        "tog-watchcreations": "Мынэсьтым кылдытэм бамъёсме но ӝуткам файлъёсме чаклан списокам пыртыны",
        "tog-watchdefault": "Мынэсьтым тупатэм бамъёсме но файлъёсме чаклан списокам пыртыны",
        "tog-watchmoves": "Мынэсьтым мукет интые выжтэм бамъёсме но файлъёсме чаклан списокам пыртыны",
        "tog-watchdeletion": "Мынэсьтым ӵушыса быдтэм бамъёсме но файлъёсме чаклан списоке пыртыны",
+       "tog-watchuploads": "Мынам загрузить карем файлъёсме чаклан списоке пыртыны",
+       "tog-watchrollback": "Чаклан списоке пыртыны бамъёсыз, кудъёсаз мон откат лэсьтӥ",
        "tog-minordefault": "Вань воштонъёсты «ичи воштон» пусэн пусйыны",
        "tog-previewontop": "Утён азьвыл учконлэсь укнозэ тупатон укнолэсь азьвылгес возьматыны",
-       "tog-previewonfirst": "Бам нырысьсэ утиськыкуз уётн азьвыл учконэз возьматыны",
+       "tog-previewonfirst": "Тупатыны кутскыку возьматыны предпросмотрез",
+       "tog-enotifwatchlistpages": "Чаклан списокысь бамъёсыз но файлъёсыз тупатэм сярысь ивортыны электронной почта пыр",
+       "tog-enotifusertalkpages": "Вераськон бамез тупатон сярысь ивортыны электронной почта пыр",
+       "tog-enotifminoredits": "Ивортыны соку но, куке бамын яке файлын ичи воштон лэсьтэмын",
+       "tog-enotifrevealaddr": "Мынэсьтым почта адресме возьматыны ивортӥсь сообщениосын",
+       "tog-shownumberswatching": "Возьматыны викиавторъёслэсь лыдзэс, кудъёсыз бамез чаклан списоке пыртӥзы",
+       "tog-fancysig": "Подписьлэн аслам вики-разметкае (автоматической ӵӧлсконтэк)",
+       "tog-watchlisthideown": "Мынэсьтым тупатонъёсме чаклан списокысь ватыны",
+       "tog-watchlisthidebots": "Чаклан списокысь ватоно ботъёслэсь тупатэмзэс",
+       "tog-watchlisthideminor": "Чаклан списокысь ватоно ичи воштонъёсыз",
+       "tog-watchlisthideliu": "Авторизированной викиавторъёслэсь тупатэмъёссэс чаклан списокысь ватыны",
+       "tog-watchlisthidepatrolled": "Эскерем тупатонъёсыз чаклан списокысь ватыны",
+       "tog-watchlisthidecategorization": "Бамъёслэсь категоризацизэс ватыны",
+       "tog-showhiddencats": "Возьматоно ватэм категориосыз",
        "underline-always": "Котьку",
        "underline-never": "Ноку",
        "underline-default": "Браузерлэсь настройкаоссэ уже кутоно",
@@ -71,7 +91,7 @@
        "september-gen": "куарусёнэ",
        "october-gen": "коньывуонэ",
        "november-gen": "шуркынмонэ",
-       "december-gen": "толсурэ",
+       "december-gen": "толсуре",
        "jan": "тшт",
        "feb": "тпт",
        "mar": "южт",
        "oct": "квт",
        "nov": "шкт",
        "dec": "тст",
+       "january-date": "Толшор $1",
+       "february-date": "Тулыспал $1",
+       "march-date": "Южтолэзь $1",
+       "april-date": "Ожтолэзь $1",
+       "may-date": "Куартолэзь $1",
+       "june-date": "Инвожо $1",
+       "july-date": "Пӧсьтолэзь $1",
+       "august-date": "Гудырикошкон $1",
+       "september-date": "Куарусён $1",
+       "october-date": "Коньывуон $1",
+       "november-date": "Шуркынмон $1",
+       "december-date": "Толсур $1",
        "pagecategories": "{{PLURAL:$1|1=Категория|Категориос}}",
        "category_header": "«$1» категориысь бамъёс",
        "subcategories": "Подкатегориос",
        "category-empty": "''Та категориын али бамъёс но, файлъёс но ӧвӧл.''",
        "hidden-categories": "{{PLURAL:$1|1=Ватэм категория|Ватэм категориос}}",
        "hidden-category-category": "Ватэм категориос",
-       "category-subcat-count": "{{PLURAL:$2|1=Со категориын одӥг подкатегория гинэ.|Возьматэмын $1 подкатегория $2 пӧлысь.}}",
-       "category-subcat-count-limited": "Со категориын $1 подкатегория.",
-       "category-article-count": "{{PLURAL:$2|1=Со категориын одӥг бам гинэ.|Возьматэмын $1 бам $2 пӧлысь.}}",
-       "category-article-count-limited": "Со категориын $1 бам.",
-       "category-file-count": "{{PLURAL:$2|1=Со категориын одӥг файл гинэ.|Возьматэмын $1 файл $2 пӧлысь.}}",
-       "category-file-count-limited": "Со категориын $1 файл.",
+       "category-subcat-count": "{{PLURAL:$2|1=Со категориын одӥг подкатегория гинэ.|Возьматэмын $1 {{PLURAL:$1|подкатегория|подкатегориос}} $2 пӧлысь.}}",
+       "category-subcat-count-limited": "Со категориын {{PLURAL:$1|$1 подкатегория}}.",
+       "category-article-count": "{{PLURAL:$2|1=Со категориын одӥг бам гинэ.|Возьматэмын {{PLURAL:$1|$1 бам}} $2 пӧлысь.}}",
+       "category-article-count-limited": "Со категориын {{PLURAL:$1|$1 бам}}.",
+       "category-file-count": "{{PLURAL:$2|1=Со категориын одӥг файл гинэ.|Возьматэмын {{PLURAL:$1|$1 файл}} $2 пӧлысь.}}",
+       "category-file-count-limited": "Со категориын {{PLURAL:$1|$1 файл}}.",
        "listingcontinuesabbrev": "азьлань",
        "index-category": "Индексировать кароно бамъёс",
        "noindex-category": "Индексировать каронтэм бамъёс",
        "about": "Та сярысь",
        "article": "Статья",
-       "mypage": "Ас бам",
+       "cancel": "Берытсконо",
+       "mypage": "Бам",
        "mytalk": "Викиавтор сярысь вераськон",
-       "anontalk": "Со IP-адрес сярысь вераськон",
+       "anontalk": "Сярысь вераськон",
        "navigation": "Навигация",
+       "and": "&#32;но",
+       "qbfind": "Утчан",
+       "qbbrowse": "Учкыны",
+       "qbedit": "Тупатыны",
        "qbpageoptions": "Бамлэн настройкаосыз",
        "faq": "Юан-веран",
        "faqpage": "Project:Юан-веран",
+       "variants": "Вариантъёс",
+       "navigation-heading": "Навигация",
        "errorpagetitle": "Янгыш",
        "tagline": "{{SITENAME}}-ысь материал",
        "help": "Валэктонъёс",
        "search": "Утчан",
        "searchbutton": "Утчано",
+       "go": "Мыноно",
        "searcharticle": "Мыноно",
        "history": "Бамлэн историез",
        "history_short": "история",
+       "updatedmarker": "воштӥськемын мынам берпуметӥ пыраме бере",
        "printableversion": "Печатламон версия",
        "permalink": "Ӵапак та версиезлы линк",
        "print": "Печатлано",
+       "view": "Учкон",
+       "view-foreign": "$1 сайтын учконы",
        "edit": "тупатыны",
+       "create": "Кылдытоно",
+       "editthispage": "Та бамез тупатыны",
+       "create-this-page": "Та бамез кылдытыны",
        "delete": "Быдтыны",
+       "deletethispage": "Та бамез быдтыны",
+       "undeletethispage": "Та бамез быдтыны",
        "protect": "Утьыны",
+       "protect_change": "воштыны",
+       "protectthispage": "Та бамез утьыны",
+       "unprotect": "Утемез воштыны",
+       "unprotectthispage": "Та бамлэсь утемзэ воштыны",
+       "newpage": "Выль бам",
+       "talkpage": "Та бам сярысь вераськыны",
        "talkpagelinktext": "Вераськон",
+       "specialpage": "Ваньмыз панель",
+       "personaltools": "Нимаз тӥрлыке",
+       "articlepage": "Статьяез учкыны",
        "talk": "Вераськон",
+       "views": "Учконъёс",
        "toolbox": "Тӥрлык",
+       "userpage": "Викиавторлэсь бамзэ учкыны",
+       "templatepage": "Шаблонлэсь бамзэ учкыны",
+       "categorypage": "Категорилэсь бамзэ учкыны",
+       "viewtalkpage": "Вераськонэз учкыны",
+       "otherlanguages": "Мукет кылъёсын",
+       "redirectedfrom": "(Перенаправлять $1)",
+       "redirectpagesub": "Выжытон бам",
+       "redirectto": "Выжытон:",
+       "lastmodifiedat": "Та бамлэн берпуметӥ воштонэз: $2, $1.",
+       "protectedpage": "Утем бам",
+       "jumpto": "Выжон:",
        "jumptonavigation": "навигация",
        "jumptosearch": "утчан",
+       "pool-errorunknown": "Тодмотэм янгыш",
+       "aboutsite": "«{{SITENAME}}»-лэн описаниез",
+       "aboutpage": "Project:Описание",
+       "copyright": "Пуштрос $1 лицензияя луэ ярамон (мукетыз валэктэмын ӧвӧл дыръя).",
+       "copyrightpage": "{{ns:project}}:Автор праваос",
        "currentevents": "Выль иворъёс",
        "currentevents-url": "Project:Выль иворъёс",
+       "disclaimers": "Кыл кутыны пумит луон",
+       "disclaimerpage": "Project:Кыл кутыны пумит луон",
+       "helppage-top-gethelp": "Юрттэт",
        "mainpage": "Кутскон бам",
        "mainpage-description": "Кутскон бам",
        "portal": "Сообщество",
        "portal-url": "Project:Портал сообщества",
+       "privacy": "Конфиденциальностья политика",
+       "privacypage": "Project:Конфиденциальностья политика",
+       "badaccess": "Янгышъёс юаське",
+       "badaccess-group0": "Быдэстэм ужез тонэ уг лэзьы, кин тонэ курозы.",
+       "badaccess-groups": "Ужъёсын но, кудаз тӥледыз курисько поциент {{PLURAL:$2|туркым|группа одӥг}}: $1.",
+       "versionrequired": "MediaWiki доллар кулэ версия $1",
+       "ok": "OK",
        "retrievedfrom": "«$1»-лэсь басьтэмын",
        "editsection": "тупатыны",
+       "editold": "тупатыны",
+       "viewsourceold": "кодзэ учкыны",
+       "editlink": "тупатыны",
+       "viewsourcelink": "кодзэ учкыны",
        "editsectionhint": "$1 секциез тупатоно",
+       "toc": "Пуштрос",
        "showtoc": "возьматоно",
        "hidetoc": "ватоно",
+       "collapsible-collapse": "ватоно",
+       "collapsible-expand": "возьматоно",
+       "confirmable-yes": "Мед",
+       "confirmable-no": "Ӧвӧл",
+       "viewdeleted": "Учкыны $1",
        "site-rss-feed": "$1 — RSS-лента",
        "site-atom-feed": "$1 — Atom-лента",
+       "page-atom-feed": "«$1» Атом-лента",
        "red-link-title": "$1 (со бам ӧвӧл на)",
+       "nstab-main": "Бам",
        "nstab-user": "Викиавтор",
+       "nstab-media": "Мультимедиа",
+       "nstab-special": "Ваньмыз панель",
+       "nstab-project": "Проект сярысь",
+       "nstab-image": "Файл",
        "nstab-mediawiki": "Ивортон",
+       "nstab-template": "Шаблон",
+       "nstab-help": "Валэктон",
+       "nstab-category": "Категория",
+       "mainpage-nstab": "Кутскон бам",
+       "error": "Янгыш",
+       "databaseerror-query": "Курон: $1",
+       "databaseerror-function": "Функция: $1",
+       "databaseerror-error": "Янгыш: $1",
        "viewsource": "Кодзэ учкыны",
-       "login": "Пырон",
+       "viewsource-title": "Текст потон бам $1",
+       "actionthrottled": "Кекатыны ужъёс",
+       "actionthrottledtext": "Ужрадлэн ӟечлыкез злоупотребление-нюръяськон, та ужрад тӥ понна укыр трос поллы сюбегамын быдэстон вакчи дыр кусыпъёс, лимитъёс, та тӥляд но тубе.\nПожалуйста, кӧня ке минут ортчыса, нош ик утчасько.",
+       "protectedpagetext": "Та бамез утьыны луэ шуыса, яке мукет уже предотвращать редактировать карон.",
+       "viewsourcetext": "Та бамез учкыны быгатӥськоды тӥ но потон кӧчыро.",
+       "viewyourtext": "Ошмес но, тонэ учкыны быгатӥськоды кӧчырыны <strong>тон шонертон</strong> та бамам.",
+       "protectedinterface": "Та текст бам вайытиськом, та программаын вики интерфейсъёс, но дурбасьтэ, мед злоупотребление предотвращать.\nВика ватсаса, ваньзэ воштыны яке берыктон понна, пожалуйста, [https://translatewiki.net/ translatewiki.net] MediaWiki локализация проект.",
+       "editinginterface": "<strong>Юа:</strong> редактировать карыны бамзэ тон, программное обеспечение понна со интерфейс текстовые кылдытон понна кутыны.\nТа викилэн мукет бамаз луись туссэ воштон понна та интерфейсэз пользователь пользовательский педпал быгатонлыкъёссэс.",
+       "namespaceprotected": "Тон дорын редактировать карыны бам ӧвӧл юаське <кужмо>$1</strong> инты нимъёс.",
+       "logouttext": "<strong>Тон али потэ.</strong>\n\nУчком, мар быгатозы бам куд-ог сямъёсты тӥледыз кадь возьматӥсько ке луысал, азьвыл сямен азьвыл системая пыртэмын, тон ӧд сузя, дыр кеш браузер.",
+       "welcomeuser": "Гажаса-а, $1!",
+       "welcomecreation-msg": "Тӥляд гожъямъёсты учётной кылдытэмын вал.\nТӥ быгатӥськоды воштэ {{SITENAME}} [[Special:Preferences|параметръёсты]] ке потэ тӥледлы.",
+       "yourname": "Пырон ним:",
+       "userlogin-yourname": "Пырон ним:",
+       "yourpassword": "Лушкемкыл:",
+       "userlogin-yourpassword": "Лушкемкыл",
+       "cannotcreateaccount-title": "Уг быгатиськы гожъян кылдӥз учётной",
+       "yourdomainname": "Тӥ доменэн:",
+       "login": "Пырыны",
        "nav-login-createaccount": "Нимдэс вераны / Регистрациез ортчытыны",
        "userlogin": "Регистрациез ортчытыны яке Википедие пырыны",
-       "userloginnocreate": "Пырон",
+       "userloginnocreate": "Пырыны",
        "logout": "Кошкыны",
-       "userlogout": "Кошкыны",
+       "userlogout": "Потыны",
+       "nologin": "Учётной книга ӧвӧл-а? $1.",
+       "nologinlink": "Выль вики-авторлэн регистрациез",
        "createaccount": "выль вики-авторлэн регистрациез",
+       "gotaccountlink": "Пырыны",
+       "userlogin-resetpassword-link": "Тӥлесьтыд парольдэс куштыны?",
+       "userlogin-helplink2": "Пыронъя юрттэт",
+       "createacct-emailrequired": "Электронной почталэн адресэз",
+       "createacct-submit": "Выль вики-авторлэн регистрациез",
+       "createacct-another-submit": "Выль вики-авторлэн регистрациез",
+       "loginerror": "Янгышъёс пырон",
+       "createacct-error": "Янгышъёс бордын учётной книга кылдытыны",
+       "createaccounterror": "Уг быгатиськы гожъян учётной кылдоз: $1",
+       "nocookiesnew": "Книга кылдытыны учётной пользователь вал, нош система тон уд пыры.\n{{SITENAME}} пользователь cookies пырон понна кутыны.\nDisconnect cookies тонэ дорам.\nПожалуйста, со гожтӥське, нош собере выльысь пырыны логин но пароль.",
+       "nocookieslogin": "{{SITENAME}} пользователь cookies пырон понна кутыны.\nDisconnect cookies тонэ дорам.\nПожалуйста, соосты утчано, выльысь гожтыны.",
+       "blocked-mailpassword": "Тон IP-адрес заблокировать-ысь редактировать карон. Злоупотребление предотвращение понна, та понна кутыны ӧз лэзиське пароль-ысь восстановление IP-адрес.",
+       "loginlanguagelabel": " Кыл: $1",
+       "pt-login": "Пырыны",
+       "pt-login-button": "Пырыны",
+       "pt-createaccount": "Выль вики-авторлэн регистрациез",
+       "pt-userlogout": "Потыны",
+       "oldpassword": "Вуж лушкемкыл:",
+       "newpassword": "Выль лушкемкыл:",
+       "passwordreset-username": "Пырон ним:",
        "summary": "Мар но малы тупатэмын? (вакчияк):",
        "minoredit": "Ичи воштон",
-       "noarticletext": "В настоящий момент текст на данной странице отсутствует.\nВы можете [[Special:Search/{{PAGENAME}}|найти упоминание данного названия]] на других страницах,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} найти соответствующие записи журналов],\nили '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} создать страницу с таким названием]'''</span>.",
+       "watchthis": "Та бамез чаклан списоке пыртыны",
+       "savearticle": "Бамез гожтоно",
+       "preview": "Бамез эскерон",
+       "showpreview": "Бамез эскерон",
+       "showdiff": "Пыртэм воштонъёс",
+       "blockedtitle": "Заблокировать пыриськисьёс",
+       "blockedtext": "<strong>Книгае яке учётной IP-адрес заблокирован.</strong>\n\nБлокировка администратор потӥз $1.\nВозьмалэ вуоно мугез: \"\"$2\"\".\n\n* Кутскон блокировка: $8\n* Блокировка ортчиз: $6\n* Блокировка меретъёсыз: $7\n\nБыгатӥськод-а тон герӟаськемын $1 яке мукет котькудӥныз [[{{MediaWiki:Grouppage-sysop}}|администраторъёс]], блокировка мед эскерозы.\nУчком, мар кутыны уг быгато функцизэс \"гожтэт\", ас ке [[Special:Preferences|настройка персональной]] зуркатӥсь яке электронной почтаезлэн адресэз эн чуртна уг корректный, яке гожтӥськод ке, гожтэт ыстон укшась блокировка алон.\nТон IP-адрес — $3, блокировка идентификаторлэн — $5.\nПожалуйста, аслэсьтым тодон-та вазиськонэз котьку возьмано.",
+       "autoblockedtext": "Тон IP-адрес, герӟет автоматически заблокирован а со, мар солэн кутыны луоно азьвыл кин ке но пырисьёс пӧлысь, заблокирован {{GENDER:$4|участник|куакеч}} $1. \nБлокировка возьмано луоз вуоно мугез:\n\n: \"$2\" - лы.\n\n* Кутскон блокировка: $8\n* Блокировка ортчиз: $6\n* Блокировка меретъёсыз: $7\n\nБыгатӥськод-а тон герӟаськемын $1 яке мукет котькудӥныз [[{{MediaWiki:Grouppage-sysop}}|администраторъёс]], блокировка мед эскерозы.\n\nУчком, мар кутыны уг быгато функцизэс \"гожтэт\", ас ке [[Special:Preferences|настройка персональной]] зуркатӥсь яке электронной почтаезлэн адресэз эн чуртна уг корректный, яке гожтӥськод ке, гожтэт ыстон укшась блокировка алон.\n\nТон IP-адрес — $3, блокировка идентификаторлэн — #$5.\nПожалуйста, аслэсьтым тодон-та вазиськонэз котьку возьмано.",
+       "blockednoreason": "мугезлы эн возьмалэ",
+       "loginreqlink": "пырыны",
+       "noarticletext": "Али дыре та бамын текст ӧвӧл. \nТӥ быгатоды [[Special:Search/{{PAGENAME}}|шедьтыны со сярысь кыӵе ке ивор]] мукет бамъёсысь,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} шедьтыны журналъёсысь гожъямъёсыз], \nяке [{{fullurl:{{FULLPAGENAME}}|action=edit}} сыӵе нимын бам кылдытыны]</span>.",
+       "blocked-notice-logextract": "Пользователь заблокирован сётӥз та учырлы.\nСправка понна радъяськылӥсь журнал блокировка лапег берпуметӥ гожтэт:",
+       "continue-editing": "Тупатъянэз азьланьтоно",
+       "editing": "Тупатон: $1",
+       "editingsection": "Тупатон: $1 (люкет)",
+       "template-protected": "(утемын)",
+       "template-semiprotected": "(полузащищенный)",
+       "nocreate-loggedin": "Тон доразы юаськыны кылдӥз выль бам ӧвӧл.",
+       "permissionserrors": "Янгышъёс юаське",
+       "content-model-wikitext": "викитекст",
+       "cantcreateaccount-text": "Та книгаез кылдытонлы учётной IP-адрес (<кужмо>$1</кужмо>) заблокировать луизы [[User:$3|$3]].\n\nМугез, вайиз $3 возьматэ <em>$2</сиоз>",
+       "cantcreateaccount-range-text": "Учётной кылдытон - гожъян IP-адрес диапазонын <кужмо>$1</strong>, Тон пыриське со IP-адрес (<кужмо>$4</кужмо>), заблокировать луизы [[User:$3|$3]].\n\nМугез, вайиз $3 возьматэ <em>$2</сиоз>",
+       "viewpagelogs": "Та бамлы журналъёсыз возьматыны",
+       "revisionasof": "Версия $1",
+       "previousrevision": "← Вужгем",
+       "history-show-deleted": "Ӵушылэмъёссэ гинэ",
+       "rev-showdeleted": "возьматоно",
        "revdelete-radio-set": "Ватэм",
        "revdelete-radio-unset": "Адӟымон",
+       "revdelete-reason-dropdown": "*Вӧлскем палэнскон мугъёсты\n** Авторской правоосты тӥян\n** Яке кулэтэм информациез личной комментарий\n** Логин несоответствовать\n** Курла информациез Потенциально",
+       "history-title": "$1 — воштонъёслэн историзы",
+       "lineno": "$1-тӥ чур:",
+       "compareselectedversions": "Быръем версиосыз ӵошатыны",
+       "showhideselectedversions": "Возьматыны/ватыны быръем версиосыз",
+       "editundo": "берытсконо",
        "searchresults": "Шедьтэмын",
-       "search-result-size": "$1 кыл({{PLURAL:$2|1=1 word|$2 words}})",
+       "searchresults-title": "утчан \"$1\"",
+       "shown-title": "Адӟытылоно $1 {{PLURAL:$1|шедьтэмез}} бамлы быдэ",
+       "searchprofile-articles": "Валтӥсь бамъёс",
+       "searchprofile-images": "Мультимедиа",
+       "searchprofile-everything": "Котькытын",
+       "searchprofile-advanced": "Паськытатэм",
+       "searchprofile-images-tooltip": "Файлъёсты утчан",
+       "searchprofile-everything-tooltip": "Вань бамъёсэтӥ утчан (вераськон бамъёсты пыртыса)",
+       "search-result-size": "$1 ({{PLURAL:$2|$2 кыл}})",
+       "search-interwiki-more": "(эшшо)",
+       "searchall": "Ваньзэ",
+       "powersearch-toggleall": "Ваньзэ",
+       "powersearch-togglenone": "Номыре",
        "preferences": "настройкаос",
        "mypreferences": "Настройкаос",
        "prefs-watchlist": "Чаклан список",
+       "prefs-editing": "Тупатон",
+       "yourlanguage": "Интерфейслэн кылыз:",
+       "prefs-preview": "Бамез эскерон",
+       "group-sysop": "Администраторъёс",
+       "group-all": "(ваньзэ)",
+       "newuserlogpage": "Викиавторъёсыз регистрациосын журнал",
+       "enhancedrc-history": "история",
        "recentchanges": "Выль тупатонъёс",
+       "recentchanges-label-newpage": "Та тупатонэн выль бам кылдӥз",
+       "recentchanges-label-minor": "Пичи воштон",
+       "recentchanges-label-bot": "Та тупатонэз кариз бот",
+       "recentchanges-submit": "Возьматыны",
+       "rcshowhideminor-show": "Возьматыны",
+       "rcshowhidebots-show": "Возьматыны",
+       "rcshowhideliu-show": "Возьматыны",
+       "rcshowhideanons-show": "Возьматыны",
+       "rcshowhideanons-hide": "Ватыны",
+       "rcshowhidepatr-show": "Возьматыны",
+       "rcshowhidemine": "$1 аслэсьтым тупатонъёсме",
+       "rcshowhidemine-show": "Возьматыны",
+       "rcshowhidemine-hide": "Ватыны",
+       "rcshowhidecategorization-show": "Возьматыны",
+       "rcshowhidecategorization-hide": "Ватыны",
+       "diff": "пӧрт.",
        "hist": "история",
+       "hide": "Ватыны",
+       "show": "Возьматыны",
+       "minoreditletter": "и",
+       "newpageletter": "В",
+       "boteditletter": "б",
+       "rc-change-size-new": "Воштон бере быдӟала: $1 {{PLURAL:$1|байт}}",
+       "newsectionsummary": "/* $1 */ выль тема",
        "recentchangeslinked": "Герӟаськем тупатонъёс",
        "recentchangeslinked-feed": "Герӟаськем тупатонъёс",
        "recentchangeslinked-toolbox": "Герӟаськем тупатонъёс",
        "upload": "Файл поныны",
+       "upload-dialog-button-cancel": "Берытсконо",
+       "nolicense": "Ӧвӧл",
+       "file-anchor-link": "Файл",
+       "filehist": "Файллэн историез",
+       "filehist-datetime": "Дата/дыр",
+       "filehist-thumb": "Миниатюра",
+       "filehist-user": "Викиавтор",
+       "filehist-dimensions": "Быдӟала",
+       "filehist-comment": "Валэктон",
+       "imagelinks": "Файлэз уже кутон",
        "sharedupload": "Та файл — $1-ысь, сое мукет проектъёсын но уже кутыны луэ.",
+       "sharedupload-desc-here": "Та файл — $1-ысь, сое мукет проектъёсын но уже кутыны луэ.\n[$2 Файл гожъясь бамысьтыз] информация адӟытэмын улын.",
        "randompage": "Олокыӵе статья",
-       "nbytes": "$1 байт",
-       "move": "Мукет интые выжтыны",
+       "withoutinterwiki-submit": "Возьматыны",
+       "nbytes": "{{PLURAL:$1|$1 байт}}",
+       "prefixindex-submit": "Возьматыны",
+       "newpages": "Выль бамъёс",
+       "newpages-submit": "Возьматыны",
+       "move": "Нимзэ воштыны",
+       "log": "Журналъёс",
+       "logeventslist-submit": "Возьматыны",
+       "showhideselectedlogentries": "Возьматыны/ватыны быръем журналъёсысь гожъямъёсыз",
+       "checkbox-select": "Бырйыны: $1",
+       "checkbox-all": "Ваньзэ",
+       "checkbox-none": "Номыре",
+       "checkbox-invert": "Воштыны интыен",
+       "categories-submit": "Возьматыны",
+       "sp-deletedcontributions-contribs": "тупатонъёсыз",
+       "listusers-submit": "Возьматыны",
+       "listusers-blocked": "(заблокировать{{GENDER:$1||а}})",
+       "emailuser": "Викиавторлы гожтэт",
        "emailmessage": "Ивортон:",
-       "watchlist": "Чаклано статьяос",
+       "watchlist": "Чаклан список",
        "mywatchlist": "Чаклан список",
        "watch": "Чаклано",
        "unwatch": "Чакламысь дугдыны",
-       "mycontris": "Мынам гожтэмъёсы",
-       "whatlinkshere": "Татчы линкъёс",
-       "movearticle": "Статьяез мукет интые выжтыны",
-       "move-watch": "Та бамез чаклан списоке пыртыны",
-       "delete_and_move": "Быдтыны но мукет интые выжтыны",
+       "watchlist-details": "Тӥляд чаклан списокады {{PLURAL:$1|$1 бам}}, вераськон бамъёсыз лыдӟытэк.",
+       "watchlist-submit": "Возьматыны",
+       "watchlist-options": "Чаклан списокез тупатыны",
+       "enotif_reset": "Вань бамъёсыз лыдӟем пусйыны",
+       "historyaction-submit": "Возьматыны",
+       "rollbacklink": "ӝог берыктыны",
+       "restriction-edit": "Тупатон",
+       "blanknamespace": "(Валтӥсез)",
+       "contributions": "{{GENDER:$1|Викиавтор}} гожтэмъёсы",
+       "contributions-title": "$1 викиавтор гожтэмъёсы",
+       "mycontris": "Гожтэмъёс",
+       "whatlinkshere": "Татчы чӧлсконъёс",
+       "block": "Блокировка пыриськисьёс",
+       "blockip": "Заблокировать пыриськисьёс",
+       "unblocked": "$1 разблокировать",
+       "unblocked-id": "Блокировка $1 басьтоно луиз",
+       "blocklist-target": "Ужпумъёс",
+       "blocklist-reason": "Мугез",
+       "blocklink": "блокировать карыны",
+       "contribslink": "тупатонъёсыз",
+       "blocklogentry": "заблокировать [[$1]] дыр $2 $3",
+       "reblock-logentry": "блокировка воштӥз [[$1]] дыр $2 $3",
+       "blocklogtext": "Блокировка но та журналлэн ужезлы разблокирование пользователь.\nЗаблокировать Автоматически IP-адрес уг возьма.\nПроизведениосыз печатласько эстониын [[нимысьтыз:сьӧд списокын|сьӧд списокын]], бан список блокъёс лэсьтыны.",
+       "unblocklogentry": "разблокировать $1",
+       "range_block_disabled": "Администратор диапазонэз блокировать али.",
+       "move-watch": "Чаклан списоке пыртоно инъет но валтӥсь бамъёсыз",
        "allmessagesname": "Ивортон",
+       "allmessages-filter-all": "Ваньзэ",
+       "thumbnail-more": "Будэтоно",
+       "tooltip-pt-login": "Татын системае пырыны луоно, нош одно ик ӧвӧл",
+       "tooltip-pt-createaccount": "Татын учётной записез лэсьтыны но системае пырыны луоно, нош одно ик ӧвӧл",
        "tooltip-ca-talk": "Бамлэн контентэз сярысь вераськон",
+       "tooltip-ca-edit": "Та бамез тупатъяно",
+       "tooltip-ca-addsection": "Выль люкет кылдытоно",
+       "tooltip-ca-history": "Бамлэн воштонъёсыныз журнал",
+       "tooltip-ca-watch": "Та бамез чаклан списокады пыртоно",
        "tooltip-search": "Утчано {{SITENAME}}",
+       "tooltip-search-go": "Выжоно сыӵе ик нимын баме",
+       "tooltip-search-fulltext": "Шедьтоно бамъёсыз, кудъёсаз пумиське пусъем текст",
+       "tooltip-p-logo": "Кутскон баме мыноно",
        "tooltip-n-mainpage": "Кутскон баме мыноно",
        "tooltip-n-mainpage-description": "Кутскон баме мыноно",
        "tooltip-n-portal": "Проект сярысь, мар карыны быгатоды, ужлы кулэ луэмзэ кытысь шедьтоно",
+       "tooltip-n-currentevents": "Выль иворъёс сярысь веранъёс",
        "tooltip-n-recentchanges": "Берпуметӥ тупатонъёслэн списоксы",
        "tooltip-n-randompage": "Олокыӵе бамез учконо",
+       "tooltip-n-help": "Юрттэт басьтымон инты",
        "tooltip-t-whatlinkshere": "Ваньмыз бамъёс, кудъёсаз та бамлы линксы вань",
+       "tooltip-t-recentchangeslinked": "Выль тупатонъёс бамъёсын, кудъёссэ та бам чӧлске",
+       "tooltip-t-upload": "Файл поныны",
        "tooltip-t-specialpages": "Специальной бамъёслэн списоксы",
+       "tooltip-t-print": "Та бамысь печатламон версия",
+       "tooltip-t-permalink": "Бамлэн та версияз ялан чӧлскон",
+       "tooltip-ca-nstab-main": "Валтӥсь бамез учконо",
+       "tooltip-ca-nstab-user": "Викиавторлэн бамез",
+       "tooltip-ca-nstab-special": "Та бам нимысьтыз, сое тупатон луонтэм",
+       "tooltip-ca-nstab-image": "Файллэн бамез",
+       "tooltip-ca-nstab-category": "Категорилэн бамез",
+       "tooltip-rollback": "Берло викиавторен лэсьтэм воштонъёсыз одӥг зӥбонэн палэнтыны",
+       "pageinfo-header-edits": "Воштонъёслэн историзы",
        "pageinfo-toolboxlink": "Бам сярысь тодэтъёс",
-       "specialpages": "Ваньмыз панельёс"
+       "file-info-size": "$1 × $2 пиксель, файллэн быдӟалаез: $3, MIME-тип: $4",
+       "show-big-image-size": "$1 × $2 пиксель",
+       "metadata": "Метаданнойёс",
+       "metadata-fields": "Суредысь метаданнойёслэн та списоке пыртэм полеоссы адӟытӥськозы суред бам вылын, метаданнойёслэн таблицазы бинемын дыръя.\nМукет полеоссы ватскозы.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "exif-disclaimer": "Кыл кутыны пумит луон",
+       "namespacesall": "ваньзэ",
+       "monthsall": "ваньзэ",
+       "confirm-watch-top": "Та бамез чаклан списокады пыртоно?",
+       "autosumm-new": "Выль бам: «$1»",
+       "specialpages": "Ваньмыз панельёс",
+       "tag-filter": "[[Special:Tags|Тэгъёсыз]] фильтр:",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|1=Метка|Меткаос}}]]: $2)",
+       "tags-title": "Меткаос",
+       "logentry-newusers-create": "$1 нимо учётной запись {{GENDER:$2|кылдытэмын}} вал",
+       "searchsuggest-search": "Утчано {{SITENAME}}",
+       "searchsuggest-containing": "кудъёсаз вань...",
+       "api-error-autoblocked": "Тон IP-адрес заблокировать эрказ луи, малы ке шуоно со заблокировать пользователь кутыны луоз.",
+       "api-error-blocked": "Редактирование заблокировать вал тӥлесьтыд.",
+       "expand_templates_preview": "Эскерон",
+       "log-action-filter-all": "Ваньзэ"
 }
index 84ec923..30534c5 100644 (file)
@@ -27,7 +27,8 @@
                        "CRCHF",
                        "Shinjiman",
                        "Macofe",
-                       "Jdforrester"
+                       "Jdforrester",
+                       "Tungakl"
                ]
        },
        "tog-underline": "連結加底線:",
        "htmlform-chosen-placeholder": "揀個選項",
        "htmlform-cloner-create": "加多啲",
        "htmlform-cloner-delete": "拎走",
-       "sqlite-has-fts": "$1 有全文搜尋支援",
-       "sqlite-no-fts": "$1 冇全文搜尋支援",
        "logentry-delete-delete": "$1 刪咗頁 $3",
        "revdelete-restricted": "已經應用限制到操作員",
        "revdelete-unrestricted": "已經拎走對於操作員嘅限制",
        "feedback-back": "返轉頭",
        "feedback-cancel": "取消",
        "feedback-close": "搞掂",
-       "feedback-error-title": "出錯",
        "feedback-message": "信息:",
        "feedback-subject": "主旨:",
        "feedback-submit": "遞交",
        "feedback-thanks-title": "多謝!",
-       "searchsuggest-search": "搵",
+       "searchsuggest-search": "搵{{SITENAME}}",
        "searchsuggest-containing": "名單傳送緊...",
        "api-error-unclassified": "發生未知嘅錯誤。",
        "api-error-unknown-code": "未知嘅出錯:$1。",
index 5efd11e..3696030 100644 (file)
        "anoneditwarning": "<strong>警告:</strong>您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您<strong>[$1 登录]</strong>或<strong>[$2 创建]</strong>一个账户,您的编辑将归属于您的用户名,且将享受其他好处。",
        "anonpreviewwarning": "<em>您没有登录。保存将您的IP地址记录至此页面的编辑历史中。</em>",
        "missingsummary": "<strong>提示:</strong>您没有提供编辑摘要。如果您再次点击“{{int:savearticle}}”,您的编辑将不带摘要保存。",
-       "selfredirect": "<strong>警告:</strong>您正在将此页面重定向至它自己。您可能指定了错误的重定向目标,或者您正在编辑错误的页面。如果您再次点击“{{int:savearticle}}”,重定向将无论如何被创建。",
+       "selfredirect": "<strong>警告:</strong>您正在将此页面重定向至它自己。您可能指定了错误的重定向目标,或者您正在编辑错误的页面。如果您再次点击“{{int:savearticle}}”,重定向仍将被创建。",
        "missingcommenttext": "请在下面输入评论。",
        "missingcommentheader": "<strong>提示:</strong>您还没有为此评论提供一个标题。如果您再次点击“{{int:savearticle}}”,您的编辑将不带标题保存。",
        "summary-preview": "摘要预览:",
        "notificationemail_subject_removed": "{{SITENAME}}注册的电子邮件地址已被移除",
        "notificationemail_body_changed": "来自IP地址$1的人(可能是您)在{{SITENAME}}上更改了账户“$2”的电子邮件地址至“$3”。\n\n如果这不是您,请立即联系一位网站管理员。",
        "notificationemail_body_removed": "来自IP地址$1的人(可能是您)在{{SITENAME}}上移除了账户“$2”的电子邮件地址。\n\n如果这不是您,请立即联系一位网站管理员。",
-       "scarytranscludedisabled": "[跨网站的编码转换不可用]",
+       "scarytranscludedisabled": "[跨wiki的页面嵌入已被禁用]",
        "scarytranscludefailed": "[提取$1失败]",
        "scarytranscludefailed-httpstatus": "[模板$1读取失败:HTTP $2]",
        "scarytranscludetoolong": "[URL过长]",
index 1cb5eef..208cf17 100644 (file)
@@ -104,7 +104,7 @@ abstract class Maintenance {
 
        /**
         * Used by getDB() / setDB()
-        * @var IDatabase
+        * @var Database
         */
        private $mDb = null;
 
@@ -726,6 +726,7 @@ abstract class Maintenance {
 
                if ( is_array( $wgProfiler ) && isset( $wgProfiler['class'] ) ) {
                        $class = $wgProfiler['class'];
+                       /** @var Profiler $profiler */
                        $profiler = new $class(
                                [ 'sampling' => 1, 'output' => [ $output ] ]
                                        + $wgProfiler
@@ -1182,6 +1183,7 @@ abstract class Maintenance {
                $this->beginTransaction( $dbw, __METHOD__ );
 
                # Get "active" text records from the revisions table
+               $cur = [];
                $this->output( 'Searching for active text records in revisions table...' );
                $res = $dbw->select( 'revision', 'rev_text_id', [], __METHOD__, [ 'DISTINCT' ] );
                foreach ( $res as $row ) {
index 068ee8c..aad85da 100644 (file)
@@ -6,7 +6,6 @@
                                "name": "Base",
                                "classes": [
                                        "mw",
-                                       "mw.Map",
                                        "mw.Message",
                                        "mw.loader",
                                        "mw.loader.store",
index b96e7eb..a672e29 100755 (executable)
@@ -145,6 +145,7 @@ class UpdateMediaWiki extends Maintenance {
 
                $this->output( "Going to run database updates for " . wfWikiID() . "\n" );
                if ( $db->getType() === 'sqlite' ) {
+                       /** @var Database|DatabaseSqlite $db */
                        $this->output( "Using SQLite file: '{$db->getDbFilePath()}'\n" );
                }
                $this->output( "Depending on the size of your database this may take a while!\n" );
index d9cdf5a..022fa28 100644 (file)
@@ -99,8 +99,8 @@ table.toc td {
 .tocnumber {
        padding-left: 0;
        padding-right: 0.5em;
+       color: #222;
 }
-
 /* @noflip */
 .mw-content-ltr .tocnumber {
        padding-left: 0;
index 6b23439..6280c95 100644 (file)
        }() );
 
        /**
-        * Create an object that can be read from or written to from methods that allow
+        * Create an object that can be read from or written to via methods that allow
         * interaction both with single and multiple properties at once.
         *
-        *     @example
-        *
-        *     var collection, query, results;
-        *
-        *     // Create your address book
-        *     collection = new mw.Map();
-        *
-        *     // This data could be coming from an external source (eg. API/AJAX)
-        *     collection.set( {
-        *         'John Doe': 'john@example.org',
-        *         'Jane Doe': 'jane@example.org',
-        *         'George van Halen': 'gvanhalen@example.org'
-        *     } );
-        *
-        *     wanted = ['John Doe', 'Jane Doe', 'Daniel Jackson'];
-        *
-        *     // You can detect missing keys first
-        *     if ( !collection.exists( wanted ) ) {
-        *         // One or more are missing (in this case: "Daniel Jackson")
-        *         mw.log( 'One or more names were not found in your address book' );
-        *     }
-        *
-        *     // Or just let it give you what it can. Optionally fill in from a default.
-        *     results = collection.get( wanted, 'nobody@example.com' );
-        *     mw.log( results['Jane Doe'] ); // "jane@example.org"
-        *     mw.log( results['Daniel Jackson'] ); // "nobody@example.com"
-        *
+        * @private
         * @class mw.Map
         *
         * @constructor
-        * @param {Object|boolean} [values] The value-baring object to be mapped. Defaults to an
-        *  empty object.
-        *  For backwards-compatibility with mw.config, this can also be `true` in which case values
-        *  are copied to the Window object as global variables (T72470). Values are copied in
-        *  one direction only. Changes to globals are not reflected in the map.
+        * @param {boolean} [global=false] Whether to synchronise =values to the global
+        *  window object (for backwards-compatibility with mw.config; T72470). Values are
+        *  copied in one direction only. Changes to globals do not reflect in the map.
         */
-       function Map( values ) {
-               if ( values === true ) {
-                       this.values = {};
+       function Map( global ) {
+               this.internalValues = {};
+               if ( global === true ) {
 
                        // Override #set to also set the global variable
                        this.set = function ( selection, value ) {
                                }
                                return false;
                        };
-
-                       return;
                }
 
-               this.values = values || {};
+               // Deprecated since MediaWiki 1.28
+               log.deprecate(
+                       this,
+                       'values',
+                       this.internalValues,
+                       'mw.Map#values is deprecated. Use mw.Map#get() instead.',
+                       'Map-values'
+               );
        }
 
        /**
         * @param {Mixed} value
         */
        function setGlobalMapValue( map, key, value ) {
-               map.values[ key ] = value;
-               mw.log.deprecate(
+               map.internalValues[ key ] = value;
+               log.deprecate(
                                window,
                                key,
                                value,
        }
 
        Map.prototype = {
+               constructor: Map,
+
                /**
                 * Get the value of one or more keys.
                 *
                 * @param {Mixed} [fallback=null] Value for keys that don't exist.
                 * @return {Mixed|Object| null} If selection was a string, returns the value,
                 *  If selection was an array, returns an object of key/values.
-                *  If no selection is passed, the 'values' container is returned. (Beware that,
+                *  If no selection is passed, the internal container is returned. (Beware that,
                 *  as is the default in JavaScript, the object is returned by reference.)
                 */
                get: function ( selection, fallback ) {
                        }
 
                        if ( typeof selection === 'string' ) {
-                               if ( !hasOwn.call( this.values, selection ) ) {
+                               if ( !hasOwn.call( this.internalValues, selection ) ) {
                                        return fallback;
                                }
-                               return this.values[ selection ];
+                               return this.internalValues[ selection ];
                        }
 
                        if ( selection === undefined ) {
-                               return this.values;
+                               return this.internalValues;
                        }
 
                        // Invalid selection key
 
                        if ( $.isPlainObject( selection ) ) {
                                for ( s in selection ) {
-                                       this.values[ s ] = selection[ s ];
+                                       this.internalValues[ s ] = selection[ s ];
                                }
                                return true;
                        }
                        if ( typeof selection === 'string' && arguments.length > 1 ) {
-                               this.values[ selection ] = value;
+                               this.internalValues[ selection ] = value;
                                return true;
                        }
                        return false;
 
                        if ( $.isArray( selection ) ) {
                                for ( s = 0; s < selection.length; s++ ) {
-                                       if ( typeof selection[ s ] !== 'string' || !hasOwn.call( this.values, selection[ s ] ) ) {
+                                       if ( typeof selection[ s ] !== 'string' || !hasOwn.call( this.internalValues, selection[ s ] ) ) {
                                                return false;
                                        }
                                }
                                return true;
                        }
-                       return typeof selection === 'string' && hasOwn.call( this.values, selection );
+                       return typeof selection === 'string' && hasOwn.call( this.internalValues, selection );
                }
        };
 
                 * @param {string} key Name of property to create in `obj`
                 * @param {Mixed} val The value this property should return when accessed
                 * @param {string} [msg] Optional text to include in the deprecation message
+                * @param {string} [logName=key] Optional custom name for the feature.
+                *  This is used instead of `key` in the message and `mw.deprecate` tracking.
                 */
                log.deprecate = !Object.defineProperty ? function ( obj, key, val ) {
                        obj[ key ] = val;
-               } : function ( obj, key, val, msg ) {
-                       msg = 'Use of "' + key + '" is deprecated.' + ( msg ? ( ' ' + msg ) : '' );
+               } : function ( obj, key, val, msg, logName ) {
+                       logName = logName || key;
+                       msg = 'Use of "' + logName + '" is deprecated.' + ( msg ? ( ' ' + msg ) : '' );
                        var logged = new StringSet();
                        function uniqueTrace() {
                                var trace = new Error().stack;
                                        enumerable: true,
                                        get: function () {
                                                if ( uniqueTrace() ) {
-                                                       mw.track( 'mw.deprecate', key );
+                                                       mw.track( 'mw.deprecate', logName );
                                                        mw.log.warn( msg );
                                                }
                                                return val;
                                        },
                                        set: function ( newVal ) {
                                                if ( uniqueTrace() ) {
-                                                       mw.track( 'mw.deprecate', key );
+                                                       mw.track( 'mw.deprecate', logName );
                                                        mw.log.warn( msg );
                                                }
                                                val = newVal;
                                }
                                return {
                                        name: key.slice( 0, index ),
-                                       version: key.slice( index )
+                                       version: key.slice( index + 1 )
                                };
                        }
 
index cb62fbf..a9d17ff 100644 (file)
         */
        mw.storage = {
 
-               localStorage: window.localStorage,
+               localStorage: ( function () {
+                       // Catch exceptions to avoid fatal in Chrome's "Block data storage" mode
+                       // which throws when accessing the localStorage property itself, as opposed
+                       // to the standard behaviour of throwing on getItem/setItem. (T148998)
+                       try {
+                               return window.localStorage;
+                       } catch ( e ) {}
+               }() ),
 
                /**
                 * Retrieve value from device storage.
index 52a1efb..63e7de8 100644 (file)
@@ -89,7 +89,7 @@
                 * @return {number} Current user's id, or 0 if user is anonymous
                 */
                getId: function () {
-                       return mw.config.get( 'wgUserId', 0 );
+                       return mw.config.get( 'wgUserId' ) || 0;
                },
 
                /**
diff --git a/tests/phpunit/data/upload/buggynamespace-bad.svg b/tests/phpunit/data/upload/buggynamespace-bad.svg
new file mode 100644 (file)
index 0000000..974fac0
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1"
+        id="svg2" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:svg="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:cc="http://creativecommons.org/ns#" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" inkscape:output_extension="org.inkscape.output.svg.inkscape" sodipodi:version="0.32" sodipodi:docname="India_location_map.svg" inkscape:version="0.46"
+        xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1500px"
+        height="1614.844px" viewBox="0 0 1500 1614.844" enable-background="new 0 0 1500 1614.844" xml:space="preserve">
+<switch>
+       <foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">
+               <i:pgfRef  xlink:href="#adobe_illustrator_pgf">
+               </i:pgfRef>
+       </foreignObject>
+       <g i:extraneous="self">
+               <circle cx="750" cy="750" r="500" />
+       </g>
+</switch>
+<i:pgf  id="adobe_illustrator_pgf">
+       <![CDATA[
+       eJzsvWl3XjXyL3pf91r9HZ50MyQkfrw1awcIZCBAYyAQaEIzBMd+krjx1LYDzf/F+exXNUml/Qwx
+d1/++qv/+P2XX3/z1fc//9mvf/jyH796+/Lbc2Z9+eNXvzn/9Pbr77/64cfvvv/q7Ye//+53hNBH
++sFf/MXf/Nv/5ec/+38A7g2BFw==
+       ]]>
+</i:pgf>
+</svg>
diff --git a/tests/phpunit/data/upload/buggynamespace-evilhtml.svg b/tests/phpunit/data/upload/buggynamespace-evilhtml.svg
new file mode 100644 (file)
index 0000000..f4be479
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+       <!ENTITY ns_html "http://www.w3.org/1999/xhtml">
+]>
+<svg:svg version="1.1"
+        id="svg2"
+        xmlns="&ns_html;"
+        xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1500px"
+        height="1614.844px" viewBox="0 0 1500 1614.844" enable-background="new 0 0 1500 1614.844" xml:space="preserve">
+       <svg:g><div>foo</div></svg:g>
+</svg:svg>
diff --git a/tests/phpunit/data/upload/buggynamespace-okay.svg b/tests/phpunit/data/upload/buggynamespace-okay.svg
new file mode 100644 (file)
index 0000000..4a5c6aa
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:i="&amp;ns_ai;"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   version="1.1"
+   width="1500"
+   height="1614.844"
+   viewBox="0 0 1500 1614.844"
+   id="svg2"
+   xml:space="preserve"><metadata
+   id="metadata15"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs13" />
+<switch
+   id="switch3">
+       <foreignObject
+   id="foreignObject5"
+   height="1"
+   width="1"
+   y="0"
+   x="0"
+   requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/">
+               <i:pgfRef
+   xlink:href="#adobe_illustrator_pgf">
+               </i:pgfRef>
+       </foreignObject>
+       <g
+   id="g7">
+               <circle
+   cx="750"
+   cy="750"
+   r="500"
+   id="circle9" />
+       </g>
+</switch>
+<i:pgf
+   id="adobe_illustrator_pgf">
+       
+       eJzsvWl3XjXyL3pf91r9HZ50MyQkfrw1awcIZCBAYyAQaEIzBMd+krjx1LYDzf/F+exXNUml/Qwx
+d1/++qv/+P2XX3/z1fc//9mvf/jyH796+/Lbc2Z9+eNXvzn/9Pbr77/64cfvvv/q7Ye//+53hNBH
++sFf/MXf/Nv/5ec/+38A7g2BFw==
+       
+</i:pgf>
+</svg>
\ No newline at end of file
diff --git a/tests/phpunit/data/upload/buggynamespace-okay2.svg b/tests/phpunit/data/upload/buggynamespace-okay2.svg
new file mode 100644 (file)
index 0000000..fe42310
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:i="&amp;#38;ns_ai;"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   version="1.1"
+   width="1500"
+   height="1614.844"
+   viewBox="0 0 1500 1614.844"
+   id="svg2"
+   xml:space="preserve"><metadata
+   id="metadata15"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs13" />
+<switch
+   id="switch3">
+       <foreignObject
+   requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"
+   x="0"
+   y="0"
+   width="1"
+   height="1"
+   id="foreignObject5">
+               <i:pgfRef
+   xlink:href="#adobe_illustrator_pgf">
+               </i:pgfRef>
+       </foreignObject>
+       <g
+   id="g7">
+               <circle
+   cx="750"
+   cy="750"
+   r="500"
+   id="circle9" />
+       </g>
+</switch>
+<i:pgf
+   id="adobe_illustrator_pgf">
+       
+       eJzsvWl3XjXyL3pf91r9HZ50MyQkfrw1awcIZCBAYyAQaEIzBMd+krjx1LYDzf/F+exXNUml/Qwx
+d1/++qv/+P2XX3/z1fc//9mvf/jyH796+/Lbc2Z9+eNXvzn/9Pbr77/64cfvvv/q7Ye//+53hNBH
++sFf/MXf/Nv/5ec/+38A7g2BFw==
+       
+</i:pgf>
+</svg>
\ No newline at end of file
diff --git a/tests/phpunit/data/upload/buggynamespace-original.svg b/tests/phpunit/data/upload/buggynamespace-original.svg
new file mode 100644 (file)
index 0000000..c61c91c
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+       <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
+       <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
+       <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
+       <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
+       <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
+       <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
+       <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
+       <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
+]>
+<svg version="1.1"
+        id="svg2" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:svg="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:cc="http://creativecommons.org/ns#" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" inkscape:output_extension="org.inkscape.output.svg.inkscape" sodipodi:version="0.32" sodipodi:docname="India_location_map.svg" inkscape:version="0.46"
+        xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1500px"
+        height="1614.844px" viewBox="0 0 1500 1614.844" enable-background="new 0 0 1500 1614.844" xml:space="preserve">
+<switch>
+       <foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">
+               <i:pgfRef  xlink:href="#adobe_illustrator_pgf">
+               </i:pgfRef>
+       </foreignObject>
+       <g i:extraneous="self">
+               <circle cx="750" cy="750" r="500" />
+       </g>
+</switch>
+<i:pgf  id="adobe_illustrator_pgf">
+       <![CDATA[
+       eJzsvWl3XjXyL3pf91r9HZ50MyQkfrw1awcIZCBAYyAQaEIzBMd+krjx1LYDzf/F+exXNUml/Qwx
+d1/++qv/+P2XX3/z1fc//9mvf/jyH796+/Lbc2Z9+eNXvzn/9Pbr77/64cfvvv/q7Ye//+53hNBH
++sFf/MXf/Nv/5ec/+38A7g2BFw==
+       ]]>
+</i:pgf>
+</svg>
index 167f52a..1de4265 100644 (file)
@@ -252,6 +252,41 @@ class ExtensionRegistryTest extends MediaWikiTestCase {
                                        'mwtestT100767' => false,
                                ],
                        ],
+                       [
+                               'test array_replace_recursive',
+                               [
+                                       'mwtestJsonConfigs' => [
+                                               'JsonZeroConfig' => [
+                                                       'namespace' => 480,
+                                                       'nsName' => 'Zero',
+                                                       'isLocal' => false,
+                                               ],
+                                       ],
+                               ],
+                               [
+                                       'mwtestJsonConfigs' => [
+                                               'JsonZeroConfig' => [
+                                                       'isLocal' => false,
+                                                       'remote' => [
+                                                               'username' => 'foo',
+                                                       ],
+                                               ],
+                                               ExtensionRegistry::MERGE_STRATEGY => 'array_replace_recursive',
+                                       ],
+                               ],
+                               [
+                                       'mwtestJsonConfigs' => [
+                                               'JsonZeroConfig' => [
+                                                       'namespace' => 480,
+                                                       'nsName' => 'Zero',
+                                                       'isLocal' => false,
+                                                       'remote' => [
+                                                               'username' => 'foo',
+                                                       ],
+                                               ],
+                                       ],
+                               ],
+                       ],
                ];
        }
 }
index 3debe6e..a44926b 100644 (file)
@@ -397,6 +397,46 @@ class UploadBaseTest extends MediaWikiTestCase {
                // @codingStandardsIgnoreEnd
        }
 
+       /**
+        * @dataProvider provideDetectScriptInSvg
+        */
+       public function testDetectScriptInSvg( $svg, $expected, $message ) {
+               // This only checks some weird cases, most tests are in testCheckSvgScriptCallback() above
+               $result = $this->upload->detectScriptInSvg( $svg, false );
+               $this->assertSame( $expected, $result, $message );
+       }
+
+       public static function provideDetectScriptInSvg() {
+               global $IP;
+               return [
+                       [
+                               "$IP/tests/phpunit/data/upload/buggynamespace-original.svg",
+                               false,
+                               'SVG with a weird but valid namespace definition created by Adobe Illustrator'
+                       ],
+                       [
+                               "$IP/tests/phpunit/data/upload/buggynamespace-okay.svg",
+                               false,
+                               'SVG with a namespace definition created by Adobe Illustrator and mangled by Inkscape'
+                       ],
+                       [
+                               "$IP/tests/phpunit/data/upload/buggynamespace-okay2.svg",
+                               false,
+                               'SVG with a namespace definition created by Adobe Illustrator and mangled by Inkscape (twice)'
+                       ],
+                       [
+                               "$IP/tests/phpunit/data/upload/buggynamespace-bad.svg",
+                               [ 'uploadscriptednamespace', 'i' ],
+                               'SVG with a namespace definition using an undefined entity'
+                       ],
+                       [
+                               "$IP/tests/phpunit/data/upload/buggynamespace-evilhtml.svg",
+                               [ 'uploadscriptednamespace', 'http://www.w3.org/1999/xhtml' ],
+                               'SVG with an html namespace encoded as an entity'
+                       ],
+               ];
+       }
+
        /**
         * @dataProvider provideCheckXMLEncodingMissmatch
         */
@@ -442,4 +482,11 @@ class UploadTestHandler extends UploadBase {
                );
                return [ $check->wellFormed, $check->filterMatch ];
        }
+
+       /**
+        * Same as parent function, but override visibility to 'public'.
+        */
+       public function detectScriptInSvg( $filename, $partial ) {
+               return parent::detectScriptInSvg( $filename, $partial );
+       }
 }
index 79f37dc..b79c192 100644 (file)
         */
        QUnit.newMwEnvironment = ( function () {
                var warn, error, liveConfig, liveMessages,
+                       MwMap = mw.config.constructor, // internal use only
                        ajaxRequests = [];
 
-               liveConfig = mw.config.values;
-               liveMessages = mw.messages.values;
+               liveConfig = mw.config;
+               liveMessages = mw.messages;
 
                function suppressWarnings() {
                        warn = mw.log.warn;
                        // NOTE: It is important that we suppress warnings because extend() will also access
                        // deprecated properties and trigger deprecation warnings from mw.log#deprecate.
                        suppressWarnings();
-                       copy = $.extend( {}, liveConfig, custom );
+                       copy = $.extend( {}, liveConfig.get(), custom );
                        restoreWarnings();
 
                        return copy;
                }
 
                function freshMessagesCopy( custom ) {
-                       return $.extend( /*deep=*/true, {}, liveMessages, custom );
+                       return $.extend( /*deep=*/true, {}, liveMessages.get(), custom );
                }
 
                /**
                                setup: function () {
 
                                        // Greetings, mock environment!
-                                       mw.config.values = freshConfigCopy( localEnv.config );
-                                       mw.messages.values = freshMessagesCopy( localEnv.messages );
+                                       mw.config = new MwMap();
+                                       mw.config.set( freshConfigCopy( localEnv.config ) );
+                                       mw.messages = new MwMap();
+                                       mw.messages.set( freshMessagesCopy( localEnv.messages ) );
+                                       // Update reference to mw.messages
+                                       mw.jqueryMsg.setParserDefaults( {
+                                               messages: mw.messages
+                                       } );
+
                                        this.suppressWarnings = suppressWarnings;
                                        this.restoreWarnings = restoreWarnings;
 
                                        $( document ).off( 'ajaxSend', trackAjax );
 
                                        // Farewell, mock environment!
-                                       mw.config.values = liveConfig;
-                                       mw.messages.values = liveMessages;
+                                       mw.config = liveConfig;
+                                       mw.messages = liveMessages;
+                                       // Restore reference to mw.messages
+                                       mw.jqueryMsg.setParserDefaults( {
+                                               messages: liveMessages
+                                       } );
 
                                        // As a convenience feature, automatically restore warnings if they're
                                        // still suppressed by the end of the test.
index bfac513..7233a2e 100644 (file)
                return mw.loader.using( 'test.stale' )
                        .then( function () {
                                assert.strictEqual( count, 1 );
+                               // After implementing, registry contains version as implemented by the response.
+                               assert.strictEqual( mw.loader.getVersion( 'test.stale' ), 'v1', 'Override version' );
                                assert.strictEqual( mw.loader.getState( 'test.stale' ), 'ready' );
                                assert.ok( mw.loader.store.get( 'test.stale' ), 'In store' );
                        } )
index ab463a9..1518a80 100644 (file)
                );
        } );
 
-       QUnit.test( 'mw.Map', 35, function ( assert ) {
+       QUnit.test( 'mw.Map', function ( assert ) {
                var arry, conf, funky, globalConf, nummy, someValues;
 
                conf = new mw.Map();
+
                // Dummy variables
                funky = function () {};
                arry = [];
                        lorem: 'ipsum'
                }, 'Map.get returns multiple values correctly as an object' );
 
-               assert.deepEqual( conf, new mw.Map( conf.values ), 'new mw.Map maps over existing values-bearing object' );
-
                assert.deepEqual( conf.get( [ 'foo', 'notExist' ] ), {
                        foo: 'bar',
                        notExist: null
                }, 'Map.get return includes keys that were not found as null values' );
 
                // Interacting with globals and accessing the values object
+               this.suppressWarnings();
                assert.strictEqual( conf.get(), conf.values, 'Map.get returns the entire values object by reference (if called without arguments)' );
+               this.restoreWarnings();
 
                conf.set( 'globalMapChecker', 'Hi' );
 
                }
        } );
 
-       QUnit.test( 'mw.config', 1, function ( assert ) {
-               assert.ok( mw.config instanceof mw.Map, 'mw.config instance of mw.Map' );
-       } );
-
-       QUnit.test( 'mw.message & mw.messages', 100, function ( assert ) {
+       QUnit.test( 'mw.message & mw.messages', function ( assert ) {
                var goodbye, hello;
 
                // Convenience method for asserting the same result for multiple formats
                }
 
                assert.ok( mw.messages, 'messages defined' );
-               assert.ok( mw.messages instanceof mw.Map, 'mw.messages instance of mw.Map' );
                assert.ok( mw.messages.set( 'hello', 'Hello <b>awesome</b> world' ), 'mw.messages.set: Register' );
 
                hello = mw.message( 'hello' );
index 5122dcd..7f6efa0 100644 (file)
@@ -22,7 +22,7 @@
        QUnit.test( 'getters (anonymous)', function ( assert ) {
                // Forge an anonymous user
                mw.config.set( 'wgUserName', null );
-               delete mw.config.values.wgUserId;
+               mw.config.set( 'wgUserId', null );
 
                assert.strictEqual( mw.user.getName(), null, 'getName()' );
                assert.strictEqual( mw.user.isAnon(), true, 'isAnon()' );