Merge "Define index types as strings"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 23 Apr 2019 08:57:59 +0000 (08:57 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 23 Apr 2019 08:57:59 +0000 (08:57 +0000)
94 files changed:
RELEASE-NOTES-1.33
RELEASE-NOTES-1.34
img_auth.php
includes/DefaultSettings.php
includes/Linker.php
includes/MWNamespace.php
includes/Storage/PageEditStash.php
includes/api/i18n/de.json
includes/api/i18n/es.json
includes/api/i18n/zh-hant.json
includes/filerepo/FileRepo.php
includes/installer/i18n/es.json
includes/installer/i18n/fr.json
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/lbfactory/ILBFactory.php
includes/libs/rdbms/lbfactory/LBFactory.php
includes/linker/LinkRenderer.php
includes/media/MediaTransformOutput.php
includes/media/ThumbnailImage.php
includes/parser/Parser.php
includes/rcfeed/IRCColourfulRCFeedFormatter.php
includes/registration/ExtensionRegistry.php
includes/resourceloader/MessageBlobStore.php
includes/search/SearchEngine.php
includes/search/SearchNearMatcher.php
includes/specials/SpecialRecentChanges.php
includes/specials/SpecialRevisionDelete.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUploadStash.php
includes/specials/SpecialWatchlist.php
includes/user/User.php
languages/Language.php
languages/i18n/ar.json
languages/i18n/arz.json
languages/i18n/az.json
languages/i18n/ban.json
languages/i18n/be-tarask.json
languages/i18n/bn.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/ch.json
languages/i18n/cs.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/ee.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/exif/diq.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/fy.json
languages/i18n/he.json
languages/i18n/hr.json
languages/i18n/hu.json
languages/i18n/hy.json
languages/i18n/ia.json
languages/i18n/it.json
languages/i18n/jv.json
languages/i18n/ka.json
languages/i18n/ko.json
languages/i18n/lb.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/my.json
languages/i18n/nl.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/ru.json
languages/i18n/sah.json
languages/i18n/sh.json
languages/i18n/sr-ec.json
languages/i18n/sv.json
languages/messages/MessagesCs.php
maintenance/language/generateUcfirstOverrides.php
maintenance/language/generateUpperCharTable.php
maintenance/storage/checkStorage.php
maintenance/storage/compressOld.php
maintenance/storage/trackBlobs.php
resources/src/jquery/jquery.suggestions.js
resources/src/mediawiki.page.gallery.slideshow.js
resources/src/mediawiki.rcfilters/dm/ChangesListViewModel.js
resources/src/mediawiki.rcfilters/ui/FilterWrapperWidget.js
resources/src/startup/startup.js
tests/phpunit/includes/logging/LogFormatterTest.php
tests/phpunit/includes/resourceloader/MessageBlobStoreTest.php
tests/phpunit/includes/title/NamespaceInfoTest.php
tests/phpunit/languages/LanguageTest.php
tests/qunit/suites/resources/startup.test.js

index db5fea0..f9b2826 100644 (file)
@@ -117,6 +117,8 @@ For notes on 1.32.x and older releases, see HISTORY.
 * (T213893) Added 'MaintenanceUpdateAddParams' hook
 * (T219655) The MarkPatrolled hook has a new parameter for the tags
   associated with this entry in the patrol log.
+* (T212472) Extensions can now specify platform abilities they require to work,
+  limited to shell access for now.
 
 === External library changes in 1.33 ===
 
@@ -200,6 +202,7 @@ because of Phabricator reports.
   for NS_TEMPLATE.
 * (T212221) Added $digitTransformTable for Santali (sat).
 * (T216479) Added language support for Saisiyat (xsy).
+* (T219728) Added support for new Japanese era name "Reiwa"
 
 === Breaking changes in 1.33 ===
 * The parameteter $lang in DifferenceEngine::setTextLanguage must be of type
index a392ba1..e779842 100644 (file)
@@ -97,9 +97,19 @@ because of Phabricator reports.
   To obtain the destination title, use RedirectSpecialPage::getRedirect.
 * The 'recenteditcount' response property from action API action=query
   list=allusers, deprecated in 1.25, has been removed.
+* SearchEngine::userNamespaces(), SearchEngine::namespacesAsText(),
+  SearchEngine::create(), SearchEngine::getSearchTypes() and
+  SearchEngine::getNearMatch(), methods deprecated in 1.27, have been removed.
+* FileRepo::streamFile(), deprecated in 1.26, has been removed.
+* User::randomPassword() method, deprecated in 1.27, have been removed.
+* MWNamespace::canTalk(), deprecated in 1.30, have been removed.
+* Parser class property $mUniqPrefix, deprecated in 1.26, has been removed.
+* …
 
 === Deprecations in 1.34 ===
 * The MWNamespace class is deprecated. Use MediaWikiServices::getNamespaceInfo.
+* ExtensionRegistry->load() is deprecated, as it breaks dependency checking.
+  Instead, use ->queue().
 * …
 
 === Other changes in 1.34 ===
index 0a209e9..ba4ed74 100644 (file)
@@ -177,7 +177,7 @@ function wfImageAuthMain() {
 
        // Stream the requested file
        wfDebugLog( 'img_auth', "Streaming `" . $filename . "`." );
-       $repo->streamFile( $filename, $headers, $options );
+       $repo->streamFileWithStatus( $filename, $headers, $options );
 }
 
 /**
index af830fd..8b51c59 100644 (file)
@@ -9024,6 +9024,16 @@ $wgOriginTrials = [];
  */
 $wgPriorityHints = false;
 
+/**
+ * Ratio of requests that should get Priority Hints when the feature is enabled.
+ *
+ * @warning EXPERIMENTAL!
+ *
+ * @since 1.34
+ * @var float
+ */
+$wgPriorityHintsRatio = 1.0;
+
 /**
  * Enable Element Timing.
  *
index d2936a9..9cca0be 100644 (file)
@@ -1002,10 +1002,13 @@ class Linker {
         * @param int $userId User identifier
         * @param string $userText User name or IP address
         * @param int|null $edits User edit count (optional, for performance)
+        * @param bool $useParentheses (optional) Wrap comments in parentheses where needed
         * @return string
         */
-       public static function userToolLinksRedContribs( $userId, $userText, $edits = null ) {
-               return self::userToolLinks( $userId, $userText, true, 0, $edits, false );
+       public static function userToolLinksRedContribs(
+               $userId, $userText, $edits = null, $useParentheses = true
+       ) {
+               return self::userToolLinks( $userId, $userText, true, 0, $edits, $useParentheses );
        }
 
        /**
index 1529473..0121bd5 100644 (file)
@@ -176,19 +176,6 @@ class MWNamespace {
                return MediaWikiServices::getInstance()->getNamespaceInfo()->getValidNamespaces();
        }
 
-       /**
-        * Does this namespace ever have a talk namespace?
-        *
-        * @deprecated since 1.30, use hasTalkNamespace() instead.
-        *
-        * @param int $index Namespace index
-        * @return bool True if this namespace either is or has a corresponding talk namespace.
-        */
-       public static function canTalk( $index ) {
-               wfDeprecated( __METHOD__, '1.30' );
-               return self::hasTalkNamespace( $index );
-       }
-
        /**
         * Does this namespace ever have a talk namespace?
         *
index cc3e4bc..46f957f 100644 (file)
@@ -221,7 +221,7 @@ class PageEditStash {
 
                $editInfo = $this->getAndWaitForStashValue( $key );
                if ( !is_object( $editInfo ) || !$editInfo->output ) {
-                       $this->stats->increment( 'editstash.cache_misses.no_stash' );
+                       $this->incrStatsByContent( 'cache_misses.no_stash', $content );
                        if ( $this->recentStashEntryCount( $user ) > 0 ) {
                                $logger->info( "Empty cache for key '{key}' but not for user.", $context );
                        } else {
@@ -237,28 +237,28 @@ class PageEditStash {
                $isCacheUsable = true;
                if ( $age <= self::PRESUME_FRESH_TTL_SEC ) {
                        // Assume nothing changed in this time
-                       $this->stats->increment( 'editstash.cache_hits.presumed_fresh' );
+                       $this->incrStatsByContent( 'cache_hits.presumed_fresh', $content );
                        $logger->debug( "Timestamp-based cache hit for key '{key}'.", $context );
                } elseif ( $user->isAnon() ) {
                        $lastEdit = $this->lastEditTime( $user );
                        $cacheTime = $editInfo->output->getCacheTime();
                        if ( $lastEdit < $cacheTime ) {
                                // Logged-out user made no local upload/template edits in the meantime
-                               $this->stats->increment( 'editstash.cache_hits.presumed_fresh' );
+                               $this->incrStatsByContent( 'cache_hits.presumed_fresh', $content );
                                $logger->debug( "Edit check based cache hit for key '{key}'.", $context );
                        } else {
                                $isCacheUsable = false;
-                               $this->stats->increment( 'editstash.cache_misses.proven_stale' );
+                               $this->incrStatsByContent( 'cache_misses.proven_stale', $content );
                                $logger->info( "Stale cache for key '{key}' due to outside edits.", $context );
                        }
                } else {
                        if ( $editInfo->edits === $user->getEditCount() ) {
                                // Logged-in user made no local upload/template edits in the meantime
-                               $this->stats->increment( 'editstash.cache_hits.presumed_fresh' );
+                               $this->incrStatsByContent( 'cache_hits.presumed_fresh', $content );
                                $logger->debug( "Edit count based cache hit for key '{key}'.", $context );
                        } else {
                                $isCacheUsable = false;
-                               $this->stats->increment( 'editstash.cache_misses.proven_stale' );
+                               $this->incrStatsByContent( 'cache_misses.proven_stale', $content );
                                $logger->info( "Stale cache for key '{key}'due to outside edits.", $context );
                        }
                }
@@ -285,6 +285,15 @@ class PageEditStash {
                return $editInfo;
        }
 
+       /**
+        * @param string $subkey
+        * @param Content $content
+        */
+       private function incrStatsByContent( $subkey, Content $content ) {
+               $this->stats->increment( 'editstash.' . $subkey ); // overall for b/c
+               $this->stats->increment( 'editstash_by_model.' . $content->getModel() . '.' . $subkey );
+       }
+
        /**
         * @param string $key
         * @return bool|stdClass
index 54d6cc5..992b777 100644 (file)
        "apierror-systemblocked": "Du wurdest von MediaWiki automatisch gesperrt.",
        "apierror-timeout": "Der Server hat nicht innerhalb der erwarteten Zeit reagiert.",
        "apierror-toomanyvalues": "Es wurden zu viele Werte für den Parameter <var>$1</var> angegeben. Die Obergrenze liegt bei $2.",
+       "apierror-unknownerror-editpage": "Unbekannter EditPage-Fehler: $1.",
        "apierror-unknownerror-nocode": "Unbekannter Fehler.",
        "apierror-unknownerror": "Unbekannter Fehler: „$1“.",
        "apierror-unknownformat": "Nicht erkanntes Format „$1“.",
+       "apierror-upload-missingresult": "Kein Ergebnis in den Statusdaten.",
        "apiwarn-compare-no-next": "Die Version $2 ist die aktuelle Version von $1. Es gibt keine zu vergleichende Version für <kbd>torelative=next</kbd>.",
        "apiwarn-compare-no-prev": "Die Version $2 ist die aktuelle Version von $1. Es gibt keine zu vergleichende Version für <kbd>torelative=prev</kbd>.",
        "apiwarn-deprecation-missingparam": "Da <var>$1</var> nicht angegeben wurde, wurde ein veraltetes Format für die Ausgabe verwendet. Dieses Format ist veraltet und in Zukunft wird immer das neue Format benutzt.",
+       "apiwarn-deprecation-parameter": "Der Parameter <var>$1</var> ist veraltet.",
        "apiwarn-ignoring-invalid-templated-value": "Ignorieren des Wertes <kbd>$2</kbd> in <var>$1</var> bei der Verarbeitung von Vorlagenparametern.",
        "apiwarn-invalidcategory": "„$1“ ist keine Kategorie.",
        "apiwarn-invalidtitle": "„$1“ ist kein gültiger Titel.",
        "api-feed-error-title": "Fehler ($1)",
        "api-usage-docref": "Siehe $1 zur Verwendung der API.",
        "api-usage-mailinglist-ref": "Abonniere die Mailingliste „mediawiki-api-announce“ auf &lt;https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce&gt; zum Feststellen von API-Veralterungen und „Breaking Changes“.",
+       "api-exception-trace": "$1 bei $2($3)\n$4",
        "api-credits-header": "Danksagungen",
        "api-credits": "API-Entwickler:\n* Roan Kattouw (Hauptentwickler von September 2007 bis 2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (Autor, Hauptentwickler von September 2006 bis September 2007)\n* Brad Jorsch (Hauptentwickler seit 2013)\n\nBitte sende deine Kommentare, Vorschläge und Fragen an mediawiki-api@lists.wikimedia.org\noder reiche einen Fehlerbericht auf https://phabricator.wikimedia.org/ ein."
 }
index 4b336c3..80af88a 100644 (file)
@@ -41,7 +41,7 @@
        "apihelp-main-param-format": "El formato de la salida.",
        "apihelp-main-param-maxlag": "Se puede usar el retardo máximo cuando se instala MediaWiki en un clúster replicado de base de datos. Para evitar acciones que causen más retardo en la replicación del sitio, este parámetro puede hacer que el cliente espere hasta que el retardo en la replicación sea menor que el valor especificado. En caso de retardo excesivo, se devuelve el código de error <samp>maxlag</samp> con un mensaje como <samp>Esperando a $host: $lag segundos de retardo</samp>.<br />Consulta [[mw:Special:MyLanguage/Manual:Maxlag_parameter|Manual: parámetro Maxlag]] para más información.",
        "apihelp-main-param-smaxage": "Establece la cabecera HTTP <code>s-maxage</code> de control de caché a esta cantidad de segundos. Los errores nunca se almacenan en caché.",
-       "apihelp-main-param-maxage": "Establece la cabecera HTTP <code>max-age</code> de control de antememoria a esta cantidad de segundos. Los errores nunca se almacenan en la antememoria.",
+       "apihelp-main-param-maxage": "Establece la cabecera HTTP <code>max-age</code> de control de caché a esta cantidad de segundos. Los errores nunca se almacenan en la caché.",
        "apihelp-main-param-assert": "Comprobar que el usuario haya iniciado sesión si el valor es <kbd>user</kbd> o si tiene el permiso de bot si es <kbd>bot</kbd>.",
        "apihelp-main-param-assertuser": "Verificar el usuario actual es el usuario nombrado.",
        "apihelp-main-param-requestid": "Cualquier valor dado aquí se incluirá en la respuesta. Se puede utilizar para distinguir solicitudes.",
index 09b92d4..76ee238 100644 (file)
@@ -55,7 +55,7 @@
        "apihelp-block-param-pagerestrictions": "封鎖使用者做出編輯的標題清單。僅在 <var>partial</var> 被設定為 true 時套用。",
        "apihelp-block-param-namespacerestrictions": "封鎖使用者做出編輯的命名空間 ID 清單。僅在 <var>partial</var> 被設定為 true 時套用。",
        "apihelp-block-example-ip-simple": "封鎖 IP 位址 <kbd>192.0.2.5</kbd> 三天,原因為 <kbd>First strike</kbd>。",
-       "apihelp-block-example-user-complex": "永久封鎖 IP 位址 <kbd>Vandal</kbd>,原因為 <kbd>Vandalism</kbd>。",
+       "apihelp-block-example-user-complex": "永久封鎖用戶 <kbd>Vandal</kbd>,原因為 <kbd>Vandalism</kbd>,並防止建立新帳號及發送電子郵件。",
        "apihelp-changeauthenticationdata-summary": "為目前使用者變更身分核對資料。",
        "apihelp-changeauthenticationdata-example-password": "嘗試更改目前使用者的密碼至 <kbd>ExamplePassword</kbd>。",
        "apihelp-checktoken-summary": "檢查來自 <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> 的權杖有效性。",
index 3225625..3a366c8 100644 (file)
@@ -1630,18 +1630,6 @@ class FileRepo {
                return $status;
        }
 
-       /**
-        * Attempt to stream a file with the given virtual URL/storage path
-        *
-        * @deprecated since 1.26, use streamFileWithStatus
-        * @param string $virtualUrl
-        * @param array $headers Additional HTTP headers to send on success
-        * @return bool Success
-        */
-       public function streamFile( $virtualUrl, $headers = [] ) {
-               return $this->streamFileWithStatus( $virtualUrl, $headers )->isOK();
-       }
-
        /**
         * Call a callback function for every public regular file in the repository.
         * This only acts on the current version of files, not any old versions.
index ab0b549..6b8ceb2 100644 (file)
@@ -97,7 +97,7 @@
        "config-apc": "[https://www.php.net/apc APC] está instalado",
        "config-apcu": "[https://www.php.net/apcu APCu] está instalado",
        "config-wincache": "[https://www.iis.net/downloads/microsoft/wincache-extension WinCache] está instalado",
-       "config-no-cache-apcu": "<strong>Atención:</strong> no se pudo encontrar [https://www.php.net/apcu APCu] o [https://www.iis.net/downloads/microsoft/wincache-extension WinCache].\nEl almacenamiento en antememoria de objetos no está activado.",
+       "config-no-cache-apcu": "<strong>Atención:</strong> no se pudo encontrar [https://www.php.net/apcu APCu] o [https://www.iis.net/downloads/microsoft/wincache-extension WinCache].\nEl almacenamiento en caché de objetos no está activado.",
        "config-mod-security": "<strong>Advertencia:</strong> tu servidor web tiene activado [https://modsecurity.org/ mod_security]/mod_security2. Muchas de sus configuraciones comunes pueden causar problemas a MediaWiki u otro software que permita a los usuarios publicar contenido arbitrario. De ser posible, deberías desactivarlo. Si no, consulta la [https://modsecurity.org/documentation/ documentación de mod_security] o contacta con el administrador de tu servidor si encuentras errores aleatorios.",
        "config-diff3-bad": "GNU diff3 no se encuentra.",
        "config-git": "Se encontró el software de control de versiones Git: <code>$1</code>.",
index 3a9de62..07b61cc 100644 (file)
@@ -89,7 +89,7 @@
        "config-apc": "[https://www.php.net/apc APC] est installé",
        "config-apcu": "[https://www.php.net/apcu APCu] est installé",
        "config-wincache": "[https://www.iis.net/downloads/microsoft/wincache-extension WinCache] est installé",
-       "config-no-cache-apcu": "<strong>Attention :</strong> impossible de trouver [https://www.php.net/apcu APCu] ou [https://www.iis.net/downloads/microsoft/wincache-extension WinCache].\nLa mise en cache dobjets n’est pas activée.",
+       "config-no-cache-apcu": "<strong>Attention :</strong> impossible de trouver [https://www.php.net/apcu APCu] ou [https://www.iis.net/downloads/microsoft/wincache-extension WinCache].\nLa mise en cache des objets n’est pas activée.",
        "config-mod-security": "<strong>Attention :</strong> votre serveur web a activé [https://modsecurity.org/ mod_security]/mod_security2 . Dans plusieurs configurations communes cela pose des problèmes à MediaWiki ou à d’autres applications qui permettent aux utilisateurs de publier un contenu quelconque. \nSi possible, ceci devrait être désactivé. Sinon, reportez-vous à [https://modsecurity.org/documentation/ la documentation de mod_security] ou contactez l’assistance de votre hébergeur si vous rencontrez des erreurs aléatoires.",
        "config-diff3-bad": "L’utilitaire de comparaison de texte GNU diff3 est introuvable. Vous pouvez l’ignorer pour le moment, mais cela peut provoquer des conflits de modification plus souvent.",
        "config-git": "Logiciel de contrôle de version Git trouvé : <code>$1</code>.",
index beca663..6e30d3f 100644 (file)
@@ -2713,8 +2713,8 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                }
 
                // We can't separate explicit JOIN clauses with ',', use ' ' for those
-               $implicitJoins = $ret ? implode( ',', $ret ) : "";
-               $explicitJoins = $retJOIN ? implode( ' ', $retJOIN ) : "";
+               $implicitJoins = implode( ',', $ret );
+               $explicitJoins = implode( ' ', $retJOIN );
 
                // Compile our final table clause
                return implode( ' ', [ $implicitJoins, $explicitJoins ] );
index cb8be21..06e45f8 100644 (file)
@@ -356,6 +356,14 @@ interface ILBFactory {
         */
        public function appendShutdownCPIndexAsQuery( $url, $index );
 
+       /**
+        * Get the client ID of the ChronologyProtector instance
+        *
+        * @return string Client ID
+        * @since 1.34
+        */
+       public function getChronologyProtectorClientId();
+
        /**
         * @param array $info Map of fields, including:
         *   - IPAddress : IP address
index 4ea2eb9..b4d260f 100644 (file)
@@ -674,6 +674,10 @@ abstract class LBFactory implements ILBFactory {
                return strpos( $url, '?' ) === false ? "$url?cpPosIndex=$index" : "$url&cpPosIndex=$index";
        }
 
+       public function getChronologyProtectorClientId() {
+               return $this->getChronologyProtector()->getClientId();
+       }
+
        /**
         * @param int $index Write index
         * @param int $time UNIX timestamp; can be used to detect stale cookies (T190082)
index d096b00..c77b156 100644 (file)
@@ -293,7 +293,7 @@ class LinkRenderer {
                return $this->makePreloadedLink(
                        $target,
                        $text,
-                       $classes ? implode( ' ', $classes ) : '',
+                       implode( ' ', $classes ),
                        $extraAttribs,
                        $query
                );
index 9c06ef4..463a794 100644 (file)
@@ -202,7 +202,8 @@ abstract class MediaTransformOutput {
                        return Status::newFatal( 'backend-fail-stream', '<no path>' );
                } elseif ( FileBackend::isStoragePath( $this->path ) ) {
                        $be = $this->file->getRepo()->getBackend();
-                       return $be->streamFile( [ 'src' => $this->path, 'headers' => $headers ] );
+                       return Status::wrap(
+                               $be->streamFile( [ 'src' => $this->path, 'headers' => $headers ] ) );
                } else { // FS-file
                        $success = StreamFile::stream( $this->getLocalCopyPath(), $headers );
                        return $success ? Status::newGood() : Status::newFatal( 'backend-fail-stream', $this->path );
index 36cf422..7ee6dcb 100644 (file)
@@ -110,7 +110,7 @@ class ThumbnailImage extends MediaTransformOutput {
         * @return string
         */
        function toHtml( $options = [] ) {
-               global $wgPriorityHints, $wgElementTiming;
+               global $wgPriorityHints, $wgPriorityHintsRatio, $wgElementTiming;
 
                if ( func_num_args() == 2 ) {
                        throw new MWException( __METHOD__ . ' called in the old style' );
@@ -133,8 +133,16 @@ class ThumbnailImage extends MediaTransformOutput {
                        && $this->width * $this->height > 100 * 100 ) {
                        self::$firstNonIconImageRendered = true;
 
-                       $attribs['importance'] = 'high';
-                       $elementTimingName = 'thumbnail-high';
+                       // Generate a random number between 0.01 and 1.0, included
+                       $random = rand( 1, 100 ) / 100.0;
+
+                       if ( $random <= $wgPriorityHintsRatio ) {
+                               $attribs['importance'] = 'high';
+                               $elementTimingName = 'thumbnail-high';
+                       } else {
+                               // This lets us track that the thumbnail *would* have gotten high priority but didn't.
+                               $elementTimingName = 'thumbnail-top';
+                       }
                }
 
                if ( $wgElementTiming ) {
index 2764983..b4caff2 100644 (file)
@@ -228,12 +228,6 @@ class Parser {
        public $mRevIdForTs;   # The revision ID which was used to fetch the timestamp
        public $mInputSize = false; # For {{PAGESIZE}} on current page.
 
-       /**
-        * @var string Deprecated accessor for the strip marker prefix.
-        * @deprecated since 1.26; use Parser::MARKER_PREFIX instead.
-        */
-       public $mUniqPrefix = self::MARKER_PREFIX;
-
        /**
         * @var array Array with the language name of each language link (i.e. the
         * interwiki prefix) in the key, value arbitrary. Used to avoid sending
index 158ee59..ff85c90 100644 (file)
@@ -19,6 +19,8 @@
  * @file
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * Generates a colourful notification intended for humans on IRC.
  *
@@ -93,8 +95,9 @@ class IRCColourfulRCFeedFormatter implements RCFeedFormatter {
                        ) );
                        $flag = $attribs['rc_log_action'];
                } else {
+                       $store = MediaWikiServices::getInstance()->getCommentStore();
                        $comment = self::cleanupForIRC(
-                               CommentStore::getStore()->getComment( 'rc_comment', $attribs )->text
+                               $store->getComment( 'rc_comment', $attribs )->text
                        );
                        $flag = '';
                        if ( !$attribs['rc_patrolled']
index 2607e5a..fb89731 100644 (file)
@@ -413,10 +413,12 @@ class ExtensionRegistry {
         *
         * If some extensions are already queued, this will load
         * those as well.
-        *
+        * TODO: Remove in MediaWiki 1.35
+        * @deprecated since 1.34, use ExtensionRegistry->queue() instead
         * @param string $path Absolute path to the JSON file
         */
        public function load( $path ) {
+               wfDeprecated( __METHOD__, '1.34' );
                $this->loadFromQueue(); // First clear the queue
                $this->queue( $path );
                $this->loadFromQueue();
index b7c1904..635e433 100644 (file)
@@ -190,16 +190,18 @@ class MessageBlobStore implements LoggerAwareInterface {
         * @since 1.27
         * @param string $key Message key
         * @param string $lang Language code
-        * @return string
+        * @return string|null
         */
        protected function fetchMessage( $key, $lang ) {
                $message = wfMessage( $key )->inLanguage( $lang );
-               $value = $message->plain();
                if ( !$message->exists() ) {
                        $this->logger->warning( 'Failed to find {messageKey} ({lang})', [
                                'messageKey' => $key,
                                'lang' => $lang,
                        ] );
+                       $value = null;
+               } else {
+                       $value = $message->plain();
                }
                return $value;
        }
@@ -214,7 +216,10 @@ class MessageBlobStore implements LoggerAwareInterface {
        private function generateMessageBlob( ResourceLoaderModule $module, $lang ) {
                $messages = [];
                foreach ( $module->getMessages() as $key ) {
-                       $messages[$key] = $this->fetchMessage( $key, $lang );
+                       $value = $this->fetchMessage( $key, $lang );
+                       if ( $value !== null ) {
+                               $messages[$key] = $value;
+                       }
                }
 
                $json = FormatJson::encode( (object)$messages );
index 6ca10cc..d0912c5 100644 (file)
@@ -268,17 +268,6 @@ abstract class SearchEngine {
                return $services->newSearchEngine()->getNearMatcher( $config );
        }
 
-       /**
-        * If an exact title match can be found, or a very slightly close match,
-        * return the title. If no match, returns NULL.
-        * @deprecated since 1.27; Use SearchEngine::getNearMatcher()
-        * @param string $searchterm
-        * @return Title
-        */
-       public static function getNearMatch( $searchterm ) {
-               return static::defaultNearMatcher()->getNearMatch( $searchterm );
-       }
-
        /**
         * Get chars legal for search
         * @param int $type type of search chars (see self::CHARS_ALL
@@ -310,7 +299,7 @@ abstract class SearchEngine {
        function setNamespaces( $namespaces ) {
                if ( $namespaces ) {
                        // Filter namespaces to only keep valid ones
-                       $validNs = $this->searchableNamespaces();
+                       $validNs = MediaWikiServices::getInstance()->getSearchEngineConfig()->searchableNamespaces();
                        $namespaces = array_filter( $namespaces, function ( $ns ) use( $validNs ) {
                                return $ns < 0 || isset( $validNs[$ns] );
                        } );
@@ -729,67 +718,6 @@ abstract class SearchEngine {
                return $backend->defaultSearchBackend( $this->namespaces, $search, $this->limit, $this->offset );
        }
 
-       /**
-        * Make a list of searchable namespaces and their canonical names.
-        * @deprecated since 1.27; use SearchEngineConfig::searchableNamespaces()
-        * @return array
-        */
-       public static function searchableNamespaces() {
-               return MediaWikiServices::getInstance()->getSearchEngineConfig()->searchableNamespaces();
-       }
-
-       /**
-        * Extract default namespaces to search from the given user's
-        * settings, returning a list of index numbers.
-        * @deprecated since 1.27; use SearchEngineConfig::userNamespaces()
-        * @param user $user
-        * @return array
-        */
-       public static function userNamespaces( $user ) {
-               return MediaWikiServices::getInstance()->getSearchEngineConfig()->userNamespaces( $user );
-       }
-
-       /**
-        * An array of namespaces indexes to be searched by default
-        * @deprecated since 1.27; use SearchEngineConfig::defaultNamespaces()
-        * @return array
-        */
-       public static function defaultNamespaces() {
-               return MediaWikiServices::getInstance()->getSearchEngineConfig()->defaultNamespaces();
-       }
-
-       /**
-        * Get a list of namespace names useful for showing in tooltips
-        * and preferences
-        * @deprecated since 1.27; use SearchEngineConfig::namespacesAsText()
-        * @param array $namespaces
-        * @return array
-        */
-       public static function namespacesAsText( $namespaces ) {
-               return MediaWikiServices::getInstance()->getSearchEngineConfig()->namespacesAsText( $namespaces );
-       }
-
-       /**
-        * Load up the appropriate search engine class for the currently
-        * active database backend, and return a configured instance.
-        * @deprecated since 1.27; Use SearchEngineFactory::create
-        * @param string $type Type of search backend, if not the default
-        * @return SearchEngine
-        */
-       public static function create( $type = null ) {
-               return MediaWikiServices::getInstance()->getSearchEngineFactory()->create( $type );
-       }
-
-       /**
-        * Return the search engines we support. If only $wgSearchType
-        * is set, it'll be an array of just that one item.
-        * @deprecated since 1.27; use SearchEngineConfig::getSearchTypes()
-        * @return array
-        */
-       public static function getSearchTypes() {
-               return MediaWikiServices::getInstance()->getSearchEngineConfig()->getSearchTypes();
-       }
-
        /**
         * Get a list of supported profiles.
         * Some search engine implementations may expose specific profiles to fine-tune
index 0a64493..9ee3e17 100644 (file)
@@ -165,7 +165,7 @@ class SearchNearMatcher {
                # Quoted term? Try without the quotes...
                $matches = [];
                if ( preg_match( '/^"([^"]+)"$/', $searchterm, $matches ) ) {
-                       return self::getNearMatch( $matches[1] );
+                       return $this->getNearMatch( $matches[1] );
                }
 
                return null;
index d0846b3..9102f81 100644 (file)
@@ -918,7 +918,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        [ 'class' => 'rclistfrom' ],
                        $this->makeOptionsLink(
                                $this->msg( 'rclistfrom' )->plaintextParams( $now, $timenow, $datenow )->parse(),
-                               [ 'from' => $timestamp ],
+                               [ 'from' => $timestamp, 'fromFormatted' => $now ],
                                $nondefaults
                        )
                );
index f0bac45..dd6fea7 100644 (file)
@@ -353,7 +353,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
 
                $key = $oimage->getStorageKey();
                $path = $repo->getZonePath( 'deleted' ) . '/' . $repo->getDeletedHashPath( $key ) . $key;
-               $repo->streamFile( $path );
+               $repo->streamFileWithStatus( $path );
        }
 
        /**
index 5f69426..456face 100644 (file)
@@ -687,7 +687,7 @@ class SpecialUndelete extends SpecialPage {
 
                $repo = RepoGroup::singleton()->getLocalRepo();
                $path = $repo->getZonePath( 'deleted' ) . '/' . $repo->getDeletedHashPath( $key ) . $key;
-               $repo->streamFile( $path );
+               $repo->streamFileWithStatus( $path );
        }
 
        protected function showHistory() {
index 24d58c8..c278bab 100644 (file)
@@ -322,10 +322,10 @@ class SpecialUploadStash extends UnlistedSpecialPage {
                        );
                }
 
-               return $file->getRepo()->streamFile( $file->getPath(),
+               return $file->getRepo()->streamFileWithStatus( $file->getPath(),
                        [ 'Content-Transfer-Encoding: binary',
                                'Expires: Sun, 17-Jan-2038 19:14:07 GMT' ]
-               );
+               )->isOK();
        }
 
        /**
index c6d9fc7..c326257 100644 (file)
@@ -193,11 +193,8 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                                        'cssClassSuffix' => 'watchedunseen',
                                        'isRowApplicableCallable' => function ( $ctx, RecentChange $rc ) {
                                                $changeTs = $rc->getAttribute( 'rc_timestamp' );
-                                               $lastVisitTs = $this->watchStore->getLatestNotificationTimestamp(
-                                                       $rc->getAttribute( 'wl_notificationtimestamp' ),
-                                                       $rc->getPerformer(),
-                                                       $rc->getTitle()
-                                               );
+                                               $lastVisitTs = $this->getLatestSeenTimestamp( $rc );
+
                                                return $lastVisitTs !== null && $changeTs >= $lastVisitTs;
                                        },
                                ],
@@ -206,16 +203,26 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                                        'label' => 'rcfilters-filter-watchlistactivity-seen-label',
                                        'description' => 'rcfilters-filter-watchlistactivity-seen-description',
                                        'cssClassSuffix' => 'watchedseen',
-                                       'isRowApplicableCallable' => function ( $ctx, $rc ) {
+                                       'isRowApplicableCallable' => function ( $ctx, RecentChange $rc ) {
                                                $changeTs = $rc->getAttribute( 'rc_timestamp' );
-                                               $lastVisitTs = $rc->getAttribute( 'wl_notificationtimestamp' );
+                                               $lastVisitTs = $this->getLatestSeenTimestamp( $rc );
+
                                                return $lastVisitTs === null || $changeTs < $lastVisitTs;
                                        }
                                ],
                        ],
                        'default' => ChangesListStringOptionsFilterGroup::NONE,
-                       'queryCallable' => function ( $specialPageClassName, $context, $dbr,
-                                       &$tables, &$fields, &$conds, &$query_options, &$join_conds, $selectedValues ) {
+                       'queryCallable' => function (
+                               $specialPageClassName,
+                               $context,
+                               IDatabase $dbr,
+                               &$tables,
+                               &$fields,
+                               &$conds,
+                               &$query_options,
+                               &$join_conds,
+                               $selectedValues
+                       ) {
                                if ( $selectedValues === [ 'seen' ] ) {
                                        $conds[] = $dbr->makeList( [
                                                'wl_notificationtimestamp IS NULL',
@@ -534,7 +541,8 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                        $rc->counter = $counter++;
 
                        if ( $this->getConfig()->get( 'ShowUpdatedMarker' ) ) {
-                               $updated = $obj->wl_notificationtimestamp;
+                               $lastVisitTs = $this->getLatestSeenTimestamp( $rc );
+                               $updated = ( $lastVisitTs > $rc->getAttribute( 'timestamp' ) );
                        } else {
                                $updated = false;
                        }
@@ -598,11 +606,12 @@ class SpecialWatchlist extends ChangesListSpecialPage {
 
                $lang = $this->getLanguage();
                $timestamp = wfTimestampNow();
+               $now = $lang->userTimeAndDate( $timestamp, $user );
                $wlInfo = Html::rawElement(
                        'span',
                        [
                                'class' => 'wlinfo',
-                               'data-params' => json_encode( [ 'from' => $timestamp ] ),
+                               'data-params' => json_encode( [ 'from' => $timestamp, 'fromFormatted' => $now ] ),
                        ],
                        $this->msg( 'wlnote' )->numParams( $numRows, round( $opts['days'] * 24 ) )->params(
                                $lang->userDate( $timestamp, $user ), $lang->userTime( $timestamp, $user )
@@ -850,4 +859,16 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                $count = $store->countWatchedItems( $this->getUser() );
                return floor( $count / 2 );
        }
+
+       /**
+        * @param RecentChange $rc
+        * @return string TS_MW timestamp
+        */
+       protected function getLatestSeenTimestamp( RecentChange $rc ) {
+               return $this->watchStore->getLatestNotificationTimestamp(
+                       $rc->getAttribute( 'wl_notificationtimestamp' ),
+                       $rc->getPerformer(),
+                       $rc->getTitle()
+               );
+       }
 }
index 981204d..33d216d 100644 (file)
@@ -1290,17 +1290,6 @@ class User implements IDBAccessObject, UserIdentity {
                return $name;
        }
 
-       /**
-        * Return a random password.
-        *
-        * @deprecated since 1.27, use PasswordFactory::generateRandomPasswordString()
-        * @return string New random password
-        */
-       public static function randomPassword() {
-               global $wgMinimalPasswordLength;
-               return PasswordFactory::generateRandomPasswordString( $wgMinimalPasswordLength );
-       }
-
        /**
         * Set cached properties to default.
         *
index 1b5580c..539bdf4 100644 (file)
@@ -1977,7 +1977,11 @@ class Language {
                                        $gy_offset = '元';
                                }
                                $gy_offset = '昭和' . $gy_offset;
-                       } else {
+                       } elseif (
+                               ( ( $gy == 1989 ) && ( $gm == 1 ) && ( $gd >= 8 ) ) ||
+                               ( ( $gy > 1989 ) && ( $gy < 2019 ) ) ||
+                               ( ( $gy == 2019 ) && ( $gm < 5 ) )
+                       ) {
                                # Heisei period
                                $gy_gannen = $gy - 1989 + 1;
                                $gy_offset = $gy_gannen;
@@ -1985,6 +1989,14 @@ class Language {
                                        $gy_offset = '元';
                                }
                                $gy_offset = '平成' . $gy_offset;
+                       } else {
+                               # Reiwa period
+                               $gy_gannen = $gy - 2019 + 1;
+                               $gy_offset = $gy_gannen;
+                               if ( $gy_gannen == 1 ) {
+                                       $gy_offset = '元';
+                               }
+                               $gy_offset = '令和' . $gy_offset;
                        }
                } else {
                        $gy_offset = $gy;
index 51e7d6e..2ff7090 100644 (file)
        "rcfilters-savedqueries-already-saved": "هذه المرشحات محفوظة بالفعل. غير إعداداتك لإنشاء مرشح محفوظ جديد.",
        "rcfilters-restore-default-filters": "استرجاع المرشحات الافتراضية",
        "rcfilters-clear-all-filters": "مسح كل المرشحات",
-       "rcfilters-show-new-changes": "عرض Ø£Ø­Ø¯Ø« Ø§Ù\84تغÙ\8aÙ\8aرات",
+       "rcfilters-show-new-changes": "عرض Ø§Ù\84تغÙ\8aÙ\8aرات Ø§Ù\84جدÙ\8aدة Ù\85Ù\86Ø° $1",
        "rcfilters-search-placeholder": "رشح التغييرات (استخدم القائمة أو ابحث عن اسم المرشح)",
        "rcfilters-invalid-filter": "مرشح غير صحيح",
        "rcfilters-empty-filter": "لا مرشحات فعالة. كل المساهمات معروضة.",
        "blocklist-userblocks": "أخفِ منع الحسابات",
        "blocklist-tempblocks": "أخفِ المنع المؤقت",
        "blocklist-addressblocks": "أخفِ منع عنوان أيبي واحد",
+       "blocklist-type": "النوع:",
+       "blocklist-type-opt-all": "الكل",
+       "blocklist-type-opt-sitewide": "على مستوى الموقع",
+       "blocklist-type-opt-partial": "جزئي",
        "blocklist-rangeblocks": "أخفِ منع النطاقات",
        "blocklist-timestamp": "الزمن",
        "blocklist-target": "الهدف",
        "blocklist-editing-page": "الصفحات",
        "blocklist-editing-ns": "النطاقات",
        "ipblocklist-empty": "قائمة المنع فارغة.",
-       "ipblocklist-no-results": "عنوان الأيبي أو اسم المستخدم المطلوب غير ممنوع.",
+       "ipblocklist-no-results": "لم يتم العثور على عمليات منع مطابقة لعنوان الأيبي أو اسم المستخدم المطلوب.",
        "blocklink": "امنع",
        "unblocklink": "ارفع المنع",
        "change-blocklink": "تغيير المنع",
index 0a36627..4cc8e33 100644 (file)
        "ok": "موافئ",
        "retrievedfrom": "اتجابت من \"$1\"",
        "youhavenewmessages": "{{PLURAL:$3|عندك}} $1 ($2).",
-       "youhavenewmessagesfromusers": "{{PLURAL:$4|عندك}} $1 من {{PLURAL:${{PLURAL:$3|}}3|يوزر واحد|يوزر واحد|اتنين يوزر |$3 يوزر|$3 يوزر}} ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|عندك}} $1 من {{PLURAL:${{PLURAL:$3|}}3|يوزر واحد|يوزر واحد|اتنين يوزر |$3 يوزر}} ($2).",
        "youhavenewmessagesmanyusers": "عندك $1 من يوزرات كتير  ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|رساله جديده|999=رسايل جديده}}",
        "newmessagesdifflinkplural": "أحدث {{PLURAL:$1|تغيير|999=تغييرات}}",
        "virus-badscanner": "غلطه : ماسح فيروسات مش معروف: ''$1''",
        "virus-scanfailed": "المسح فشل(كود $1)",
        "virus-unknownscanner": "انتى فيروس مش معروف:",
-       "logouttext": "'''أنت دلوقتى مش مسجل دخولك.'''\n\nتقدر تكمل استعمال {{SITENAME}} على انك مجهول، أو [[Special:UserLogin|الدخول مرة تانيه]] بنفس الاسم أو باسم تانى.\n\nممكن تشوف بعض الصفحات  كأنك متسجل ، و دا علشان استعمال الصفحات المتخبية ف البراوزر بتاعك.",
+       "logouttext": "'''أنت دلوقتى مش مسجل دخولك.'''\n\nممكن تشوف بعض الصفحات  كأنك متسجل ، و دا علشان استعمال الصفحات المتخبية ف البراوزر بتاعك.",
        "welcomeuser": "أهلاً بيك يا $1!",
        "welcomecreation-msg": "اتفتحلك حساب.\nلو تحب ممكن تغير [[Special:Preferences|تفضيلاتك ف {{SITENAME}}]].",
        "yourname": "اليوزرنيم:",
        "nosuchusershort": "مافيش يوزر باسم $1\".\nاتاكد من تهجية الاسم.",
        "nouserspecified": "لازم تحدد اسم يوزر.",
        "login-userblocked": "اليوزر دا ممنوع من الدخول.",
-       "wrongpassword": "كلمة السر اللى كتبتها مش صحيحه. من فضلك حاول تانى.",
+       "wrongpassword": "كلمة السر اللى كتبتها مش صحيحه.\nمن فضلك حاول تانى.",
        "wrongpasswordempty": "كلمة السر المدخله كانت فاضيه.\nمن فضلك حاول تانى.",
        "passwordtooshort": "لازم تكون على الاقل{{PLURAL:$1|1 حرف|$1 حروف}}.",
        "password-name-match": "الباسورد بتاعتك لازم تكون مختلفه عن اسم اليوزر بتاعك.",
        "eauthentsent": "فيه ايميل تأكيد اتبعت  للعنوان اللى كتبته.\nعلشان تبعت اى ايميل تانى للحساب ده لازم تتبع التعليمات اللى فى الايميل اللى اتبعتلك  علشان تأكد ان  الحساب ده بتاعك .",
        "throttled-mailpassword": "بعتنالك علشان تفتكر الباسورد بتاعتك، فى خلال الـ{{PLURAL:$1|ساعة|$1 ساعة}} اللى فاتت.\nعلشان منع التخريب، ح نفكرك مرة و احدة بس كل\n{{PLURAL:$1|ساعة|$1 ساعة}}.",
        "mailerror": "غلط فى بعتان الايميل : $1",
-       "acct_creation_throttle_hit": "الناس اللى دخلت ع الويكى دا باستعمال عنوان الاى بى بتاعك فتحو {{PLURAL:$1|1 حساب|$1 حساب}} ف اليوم اللى فات دا, يعنى وصلو للحد الاقصى المسموح بيه فى الفترة الزمنيه المحدده..\nو عشان كدا, الزوار اللى بيدخلو بعنوان الاى بى دا مش مسموح لهم يفتحو حسابات اكتر فى الوقت الحالى .",
+       "acct_creation_throttle_hit": "الناس اللى دخلت ع الويكى دا باستعمال عنوان الاى بى بتاعك فتحو {{PLURAL:$1|1 حساب|$1 حساب}} ف اليوم اللى فات دا $2, يعنى وصلو للحد الاقصى المسموح بيه فى الفترة الزمنيه المحدده.\nو عشان كدا, الزوار اللى بيدخلو بعنوان الاى بى دا مش مسموح لهم يفتحو حسابات اكتر فى الوقت الحالى .",
        "emailauthenticated": "اتأكدنا من الايميل بتاعك يوم $2 الساعة $3.",
        "emailnotauthenticated": "لسة ما اتكدناش من الايميل بتاعك.\nمش ح يتبعتلك اى  ايميلات بخصوص الميزات دي.",
        "noemailprefs": "علشان الخصايص دى تشتغل لازم تحددلك عنوان ايميل.",
        "note": "'''ملحوظه:'''",
        "previewnote": "'''دى بروفه للصفحه بس.'''\nولسه ما تسييفتش! ،",
        "previewconflict": "البروفة دى بتبينلك فوق إزاى ح يكون شكل النص لو انت دوست على حفظ",
-       "session_fail_preview": "'''ما قدرناش  نحفظ التعديلات اللى قمت بيها نتيجة لضياع بيانات  الجلسه.\nالرجاء المحاولة مرة تانيه.\nفى حال استمرار المشكلة حاول  [[Special:UserLogou|تخرج]] وتدخل مرة تانيه .'''",
+       "session_fail_preview": "'''ما قدرناش  نحفظ التعديلات اللى قمت بيها نتيجة لضياع بيانات  الجلسه.\nالرجاء المحاولة مرة تانيه.\nفى حال استمرار المشكلة حاول  [[Special:UserLogout|تخرج]] وتدخل مرة تانيه .'''",
        "session_fail_preview_html": "'''ماقدرناش نعالج تعديلك بسبب ضياع بيانات الجلسة.'''\n\n''لأن {{SITENAME}} بها HTML هل الخام شغاله، البروفه مخفيه كاحتياط ضد هجمات الجافا سكريبت.''\n\n'''إذا كانت دى محاولة تعديل صادقه، من فضلك حاول مرة تانيه. إذا كانت لسه مش شغاله، حاول [[Special:UserLogout|تسجيل الخروج]] و تسجيل الدخول من جديد.'''",
        "token_suffix_mismatch": "'''تعديلك اترفض لأن عميلك غلط فى علامات الترقيم\nفى نص التعديل. التعديل اترفض علشان ما يبوظش نص المقالة.\nدا ساعات بيحصل لما تستعمل خدمة بروكسى مجهولة بايظة أساسها الويب.'''",
        "editing": "تعديل $1",
        "readonlywarning": "'''تحذير: قاعدة البيانات اتقفلت للصيانة، و علشان كدا انت مش ح تقدر تحفظ التعديلات اللى عملتها دلواتى.\nلو حبيت ممكن  تنسخ النص وتحفظه فى ملف نصى علشان تستعمله بعدين.'''\n\nالإدارى اللى قفلها كتب السبب دا $1",
        "protectedpagewarning": "'''تحذير:الصفحة دى اتقفلت بطريقه تخلى اليوزرات السيسوبات هما بس اللى يقدرو يعدلوها.'''\nاخر سجل محطوط تحت علشان المراجعه:",
        "semiprotectedpagewarning": "'''ملاحظه:''' الصفحه دى اتقفلت بطريقه تخلّى اليوزرات المتسجلين بس هما اللى يقدرو يعدّلوها.\nاخر سجل محطوط تحت علشان المراجعه:",
-       "cascadeprotectedwarning": "<strong>تحذير: الصفحة دى اتقفلت بطريقة تخلى اليوزرز السيوبات بس هم اللى يقدرو يعدلوها، ودا علشان هى مدموجة فى {{PLURAL:$1|الصفحة|الصفحات}} التالية واللى اتعملها حمتية بخاصية \"حماية الصفحات المدموجة\":</strong>",
+       "cascadeprotectedwarning": "<strong>تحذير: الصفحة دى اتقفلت بطريقة تخلى اليوزرز [[Special:ListGroupRights|السيوبات]] بس هم اللى يقدرو يعدلوها، ودا علشان هى مدموجة فى {{PLURAL:$1|الصفحة|الصفحات}} التالية واللى اتعملها حمتية بخاصية \"حماية الصفحات المدموجة\":</strong>",
        "titleprotectedwarning": "'''تحذير: الصفحه دى اتحمت بطريقه تخلّى [[Special:ListGroupRights|حقوق متحدده]] لازم تحتاجها علشان تعمل الصفحه.'''\nاخر سجل محطوط تحت علشان المراجعه:",
        "templatesused": "{{PLURAL:$1|القالب المستعمل |القوالب المستعمله }} ف الصفحه دى:",
        "templatesusedpreview": "{{PLURAL:$1|القالب المستعمل |القوالب المستعمله}} فى البروفه دى",
        "revdelete-edit-reasonlist": "عدل أسباب المسح",
        "revdelete-offender": "صاحب المراجعة:",
        "suppressionlog": "سجل الإخفاء",
-       "suppressionlogtext": "تحت فى لستة بعمليات المسح والمنع اللى فيها محتوى مستخبى على الإداريين.\nشوف [[Special:IPBlockList|للستة المنع]] علشان تشوف عمليات المنع الشغالة دلوقتى .",
+       "suppressionlogtext": "تحت فى لستة بعمليات المسح والمنع اللى فيها محتوى مستخبى على الإداريين.\nشوف [[Special:BlockList|للستة المنع]] علشان تشوف عمليات المنع الشغالة دلوقتى .",
        "mergehistory": "دمج تواريخ الصفحة",
        "mergehistory-header": "الصفحة دى بتسمح لك بدمج نسخ تاريخ صفحة  فى صفحة تانية.\nاتأكد من أن التغيير دا ح يحافظ على استمرارية تاريخ الصفحة.",
        "mergehistory-box": "دمج تعديلات صفحتين:",
        "mergehistory-go": "عرض التعديلات اللى ممكن تتدمج",
        "mergehistory-submit": "دمج النسخ",
        "mergehistory-empty": "مافيش مراجعات ممكن دمجها.",
-       "mergehistory-done": "$3 {{PLURAL:$3|مراجعة|مراجعة}} من $1 تم دمجها بنجاح فى [[:$2]].",
+       "mergehistory-done": "$3 {{PLURAL:$3|مراجعة}} من $1 تم دمجها بنجاح فى [[:$2]].",
        "mergehistory-fail": "مش قادر يعمل دمج للتاريخ، لو سمحت تتأكد تانى من محددات الصفحة والزمن.",
        "mergehistory-no-source": "الصفحة المصدر $1  مش موجودة.",
        "mergehistory-no-destination": "الصفحه الهدف $1 مش موجوده.",
        "restoreprefs": "استرجع التظبيطات الاصليه",
        "prefs-editing": "تعديل",
        "searchresultshead": "تدوير",
-       "stub-threshold": "الحد لتنسيق <a href=\"#\" class=\"stub\">لينك البذرة</a>:",
+       "stub-threshold": "الحد لتنسيق لينك البذرة ($1):",
        "stub-threshold-disabled": "معطل",
        "recentchangesdays": "عدد الأيام المعروضة فى اخرالتغييرات:",
        "recentchangesdays-max": "(الحد الاقصى $1 {{PLURAL:$1|يوم|ايام}})",
        "editusergroup": "تعديل مجموعات اليوزر",
        "editinguser": "تغيير حقوق اليوزر بتاعه اليوزر '''[[User:$1|$1]]''' $2",
        "userrights-editusergroup": "تعديل مجموعات اليوزر",
-       "saveusergroups": "حفظ مجموعات اليوزر",
+       "saveusergroups": "حفظ مجموعات {{GENDER:$1|اليوزر}}",
        "userrights-groupsmember": "عضو في:",
        "userrights-groupsmember-auto": "عضو ضمنى فى :",
        "userrights-groups-help": "إنت ممكن تغير المجموعات اللى اليوزر دا عضو فيها .\n* صندوق متعلم يعنى اليوزر دا عضو فى المجموعة دي.\n* صندوق مش متعلم يعنى  اليوزر دا مش عضو فى المجموعة دي.\n* علامة * يعنى انك مش ممكن تشيل المجموعات بعد ما تضيفها و العكس بالعكس.",
        "filehist-comment": "تعليق",
        "imagelinks": "استخدام الفايل",
        "linkstoimage": "{{PLURAL:$1|الصفحة|ال$1 صفحة}} دى فيها وصله للفايل ده:",
-       "linkstoimage-more": "أكتر من $1 {{PLURAL:$1|صفحة تصل|صفحة تصل}} للملف ده .\nالقائمة التالية تعرض {{PLURAL:$1|أول وصلة صفحة|أول $1 وصلة صفحة}} للملف ده بس.\n[[Special:WhatLinksHere/$2|قائمة كاملة]] متوفرة.",
+       "linkstoimage-more": "أكتر من $1 {{PLURAL:$1|صفحة تصل}} للملف ده .\nالقائمة التالية تعرض {{PLURAL:$1|أول وصلة صفحة|أول $1 وصلة صفحة}} للملف ده بس.\n[[Special:WhatLinksHere/$2|قائمة كاملة]] متوفرة.",
        "nolinkstoimage": "مافيش صفحات بتوصل للفايل ده.",
        "morelinkstoimage": "عرض [[Special:WhatLinksHere/$1|لينكات اكتر]] للملف دا.",
        "duplicatesoffile": "{{PLURAL:$1| الملف|ال$1 ملف اللى بعده}} متكررين من الملف ده:\n([[Special:FileDuplicateSearch/$2| تفاصيل اكتر]]):",
        "allpagesbadtitle": "العنوان االلى اديته للصفحة مش نافع أو فيه لغات تانية أو بريفيكس إنترويكي.\nيمكن فيه حروف ماينفعش تنكتب بيها العناوين.",
        "allpages-bad-ns": "{{SITENAME}} مافيهاش نطاق \"$1\".",
        "categories": "تصانيف",
-       "categoriespagetext": "{{PLURAL:$1|التصنيف دا بيحتوى على|التصنيفات دى بتحتوى على}} صفحات او ميديا.\n[[Special:UnusedCategories|التصنيفات اللى مش مستعمله]] مش معروضه  هنا.\nشوف كمان [[Special:WantedCategories|التصنيفات المتعازه]].",
+       "categoriespagetext": "{{PLURAL:$1|التصنيف دا بيحتوى على|التصنيفات دى بتحتوى على}} صفحات او ميديا.\nشوف كمان [[Special:WantedCategories|التصنيفات المتعازه]].",
        "categoriesfrom": "اعرض التصانيف من أول:",
        "deletedcontributions": "تعديلات اليوزر الممسوحة",
        "deletedcontributions-title": "تعديلات اليوزر الممسوحة",
        "listusers-blocked": "(ممنوع)",
        "activeusers": "ليستة اليوزرات اللى ليهم نشاط",
        "activeusers-intro": "دى قايمه اليوزرات اللى عملوا نشاط فى آخر $1 {{PLURAL:$1|يوم|يوم}}.",
-       "activeusers-count": "$1 {{PLURAL:$1|تعديل|تعديل}} فى آخر {{PLURAL:$3|يوم|$3 يوم}}",
+       "activeusers-count": "$1 {{PLURAL:$1|تعديل}} فى آخر {{PLURAL:$3|يوم|$3 يوم}}",
        "activeusers-from": "عرض اليوزرات بداية من:",
        "activeusers-noresult": "مالقيناش اى يوزر",
        "listgrouprights": "حقوق مجموعات اليوزرز",
        "nowatchlist": "مافيش حاجة فى لستة مراقبتك.",
        "watchlistanontext": "لو سمحت اعمل لوجين لعرض أو تعديل الصفحات فى لستة مراقبتك.",
        "watchnologin": "مش متسجل",
-       "addedwatchtext": "تمت إضافة الصفحه  \"$1\"  [[Special:Watchlist|للستة الصفحات اللى بتراقبها]].\nالتعديلات اللى بعد كده ها تتحط على الصفحه دى، وصفحة المناقش الخاصه بها ها تتحط هناك. واسم الصفحة هايظهر  بخط <b>عريض</b> فى صفحة [[Special:RecentChanges|أحدث التعديلات]] لتسهيل تحديدها واكتشافها.",
+       "addedwatchtext": "تمت إضافة الصفحه \"[[:$1]]\" [[Special:Watchlist|للستة الصفحات اللى بتراقبها]].",
        "removedwatchtext": "الصفحه دى اتشالت \"[[:$1]]\" من [[Special:Watchlist|لستة الصفحات اللى بتراقبها]].",
        "watch": "راقب",
        "watchthispage": "راقب الصفحه دى",
        "unwatchthispage": "اتوقف عن المراقبة",
        "notanarticle": "دى مش صفحة بتاعة محتوى",
        "notvisiblerev": "النسحة اتمسحت",
-       "watchlist-details": "{{PLURAL:$1|$1 صفحه|$1 صفحه}} فى قايمه مراقبتك، بدون عد صفحات المناقشه.",
+       "watchlist-details": "{{PLURAL:$1|$1 صفحه}} فى قايمه مراقبتك، بدون عد صفحات المناقشه.",
        "wlheader-enotif": "*خاصية الاعلام بالايميل متفعلة",
-       "wlheader-showupdated": "الصفحات اللى اتغيرت  بعد زيارتك ليها اخر مرة معروضة بالخط '''العريض'''",
-       "wlnote": "تحت فى {{PLURAL:$1|آخر تغيير|آخر '''$1''' تغيير}} فى آخر {{PLURAL:$2|ساعه|'''$2''' ساعه}}، من الوقت $3، $4.",
+       "wlheader-showupdated": "الصفحات اللى اتغيرت  بعد زيارتك ليها اخر مرة معروضة بالخط <strong>التخين</strong>",
+       "wlnote": "تحت فى {{PLURAL:$1|آخر تغيير|آخر <strong>$1</strong> تغيير}} فى آخر {{PLURAL:$2|ساعه|<strong>$1</strong> ساعه}}، من الوقت $3، $4.",
        "wlshowlast": "عرض اخر $1 ساعات $2 ايام",
        "watchlist-options": "اختيارات قايمة المراقبة",
        "watching": "بيراقب...",
        "deletepage": "امسح الصفحه",
        "confirm": "أكد",
        "excontent": "المحتوى كان: '$1'",
-       "excontentauthor": "المحتوى كان: '$1' (والمساهم الوحيد كان '[[Special:Contributions/$2|$2]]')",
+       "excontentauthor": "المحتوى كان: \"$1\" والمساهم الوحيد كان \"[[Special:Contributions/$2|$2]]\" ([[User talk:$2|talk]])",
        "exbeforeblank": "المحتوى قبل التفضيه كان: '$1'",
        "delete-confirm": "مسح\"$1\"",
        "delete-legend": "مسح",
-       "historywarning": "'''تحذير:''' الصفحه اللى ها  تمسحها ليها تاريخ فيه تقريبا $1 {{PLURAL:$1|مراجعة|مراجعة}}:",
+       "historywarning": "'''تحذير:''' الصفحه اللى ها  تمسحها ليها تاريخ فيه تقريبا $1 {{PLURAL:$1|مراجعة}}:",
        "confirmdeletetext": "انت على وشك انك تمسح صفحه أو صوره و كل تاريخها.\nمن فضلك  اتأكد انك عايز المسح وبأنك فاهم نتايج  العمليه  دى. عمليات المسح لازم تتم بناء على [[{{MediaWiki:Policy-url}}|القواعد المتفق عليها]].",
        "actioncomplete": "العمليه خلصت",
        "actionfailed": "الفعل فشل",
        "editcomment": "ملخص التعديل كان: \"''$1''\".",
        "revertpage": "استرجع التعديلات بتاعة [[Special:Contributions/$2|$2]] ([[User talk:$2|مناقشة]]) لآخر نسخة بتاعة [[User:$1|$1]]",
        "revertpage-nouser": "استرجع التعديلات بتاعه (اسم اليوزر اتمسح) لغايه آخر نسخه بتاعه [[User:$1|$1]]",
-       "rollback-success": "استرجع تعديلات $1؛\nاسترجع لآخر نسخة بواسطة $2.",
+       "rollback-success": "استرجع تعديلات {{GENDER:$3|$1}}؛\nاسترجع لآخر نسخة بواسطة {{GENDER:$4|$2}}.",
        "sessionfailure": "الظاهر انه فى مشكلة فى جلسة دخولك دى ؛\nوعلشان كدا العملية دى اتلغت كإجراء احترازى ضد الاختراق.\nلو سمحت دوس على زرار\"رجوع\" علشان تحمل الصفحة اللى جيت منها مرة تانية، و بعدين حاول تاني.",
        "protectlogpage": "سجل الحمايه",
        "protectlogtext": "تحت فى لستة بالصفحات اللى اعملها حماية او اتشالت منها الحماية.\nشوف [[Special:ProtectedPages|لستة الصفحات المحمية]] لستة بعمليات حماية الصفحات الشغالة دلوقتي.",
        "undeletepagetext": "{{PLURAL:$1|الصفحة دى اتمسحت بس ليه|$1الصفحات دى اتمسحت بس ليه}} موجودة فى الارشيف و ممكن تترجع.\n\n\nالأرشيف ممكن يتنضف كل شوية.",
        "undelete-fieldset-title": "رجع النسخ",
        "undeleteextrahelp": "علشان ترجع تاريخ الصفحة كله، سيب كل الصناديق فاضية و دوس '''''ترجيع'''''.\nعلشان ترجع جزء من الصفحة، حط علامة فى الصناديق أدام التعديلات اللى عايز  ترجعهاو دوس '''''ترجيع'''''.\nلو دوست على  '''''إبتدى تاني'''''  التعليق ح يتمسح و كل العلامات  اللى فى الصناديق ح تتحذف.",
-       "undeleterevisions": "$1 {{PLURAL:$1|نسخة|نسخة}} اتحطت فى  الارشيف",
+       "undeleterevisions": "$1 {{PLURAL:$1|نسخة}} اتحطت فى  الارشيف",
        "undeletehistory": "لو رجعت الصفحة، كل المراجعات ح تترجع للتاريخ دا\nلو فى صفحة جديدة اتعملت بنفس الاسم بعد المسح، المراجعات المترجعة ح تبان فى التاريخ اللى فات.",
        "undeleterevdel": "الترجيع مش ح يحصل لو كان ح يسبب ان المراجعة تيجى فى راس الصفحة أو ان الملف يتمسح حتة منه .\nفى الحالات اللى زى كدا، لازم تبين أخر المراجعات الممسوحة.",
        "undeletehistorynoadmin": "الصفحة دى اتمسحت.\nسبب المسح موجود فى الملخص اللى تحت، كمان فى تفاصيل اليوزرز اللى عملو تعديل على الصفحة دى قبل ما تتمسح.\nنص المراجعات الممسوحة دى متوفرة بس للاداريين.",
        "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": "مناقشه",
-       "sp-contributions-userrights": "ادارة حقوق اليوزر",
+       "sp-contributions-userrights": "ادارة حقوق {{GENDER:$1|اليوزر}}",
        "sp-contributions-blocked-notice": "اليوزر ده ممنوع دلوقتى.\nآخر عمليه منع في السجل موجوده تحت كمرجع:",
        "sp-contributions-search": "دور على مساهمات",
        "sp-contributions-username": "عنوان أيبى أو اسم يوزر:",
        "whatlinkshere-hideimages": "$1 وصله فايل",
        "whatlinkshere-filters": "فلاتر",
        "blockip": "بلوك {{GENDER:$1|اليوزر|اليوزره}}",
-       "blockiptext": "استخدم الاستمارة اللى تحت لمنع عنوان أيبى أو يوزر معين من الكتابة.\nدا لازم يحصل بس علشان تمنع التخريب ،و على حسب\n[[{{MediaWiki:Policy-url}}|السياسة]].\nاكتب سبب محدد تحت (يعنى مثلا، اكتب الصفحات المعينة اللى اتخربت بسببه).",
+       "blockiptext": "استخدم الاستمارة اللى تحت لمنع عنوان أيبى أو يوزر معين من الكتابة.\nدا لازم يحصل بس علشان تمنع التخريب ،و على حسب\n[[{{MediaWiki:Policy-url}}|السياسة]].\nاكتب سبب محدد تحت (يعنى مثلا، اكتب الصفحات المعينة اللى اتخربت بسببه).\nانت ممكن تمنع عناوين الايبى عن طريق [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]; اكبر نطاق مسموح بيه هوه /$1 ل IPv4 و /$2 ل IPv6.",
        "ipaddressorusername": "عنوان الأيبى أو اسم اليوزر:",
        "ipbreason": "السبب:",
        "ipbreason-dropdown": "*أسباب المنع المشهورة\n** تدخيل معلومات غلط\n** مسح المحتوى من الصفحات\n** سبام لينك لمواقع خارجية\n** كتابة كلام مالوش معنى فى الصفحات\n** سلوك عدواني/تحرش\n** إساءة استخدام اكتر من حسابات\n** اسم يوزر مش مقبول",
        "emailblock": "الإيميل ممنوع",
        "blocklist-nousertalk": "لا يمكنه تعديل صفحة نقاشه الخاصة",
        "ipblocklist-empty": "لستة المنع فاضية.",
-       "ipblocklist-no-results": "عÙ\86Ù\88اÙ\86 Ø§Ù\84Ø£Ù\8aبÙ\89 Ø£و اسم اليوزر المطلوب مش ممنوع.",
+       "ipblocklist-no-results": "عÙ\86Ù\88اÙ\86 Ø§Ù\84اÙ\8aبÙ\89 Ø§و اسم اليوزر المطلوب مش ممنوع.",
        "blocklink": "بلوك",
        "unblocklink": "شيل البلوك",
        "change-blocklink": "غير البلوك",
        "import-nonewrevisions": "كل النسخ استوردت قبل كدا.",
        "xml-error-string": "$1 عند السطر $2، العمود $3 (بايت $4): $5",
        "import-upload": "حمل بيانات إكس إم إل",
-       "import-token-mismatch": "الداتا بتاعة الجلسة ضاعت. لو سمحت تحاول تاني.",
+       "import-token-mismatch": "الداتا بتاعة الجلسة ضاعت.\nانت ممكن تكون سجلت الخروج. '''لو سمحت اتاكد انك لسه مسجل الدخول و حاول تانى'''.\nلو كان لسه مش شغال، حاول[[Special:UserLogout|تسجيل الخروج]] و تسجيل الدخول تانى.",
        "import-invalid-interwiki": "ماينفعش تستورد من الويكى المتحدد.",
        "importlogpage": "سجل الاستيراد",
        "importlogpagetext": "استيرادات إدارية لصفحات ليها تاريخ تعديل من مواقع ويكى تانية.",
        "autosumm-replace": "تبديل الصفحة ب'$1'",
        "autoredircomment": "تحويل لـ [[$1]]",
        "autosumm-new": "ابتدا صفحه جديده بـ '$1'",
-       "size-bytes": "$1 بايت",
+       "size-bytes": "$1 {{PLURAL:$1|بايت}}",
        "size-kilobytes": "$1 كيلوبايت",
        "size-megabytes": "$1 ميجابايت",
        "size-gigabytes": "$1 جيجابايت",
index 8092ad1..9ea3cf9 100644 (file)
        "yourtext": "Mətniniz",
        "storedversion": "Qeyd edilmiş versiya",
        "editingold": "'''DİQQƏT! Siz bu səhifənin köhnə versiyasını redaktə edirsiniz. Məqaləni yaddaşda saxlayacağınız halda bu versiyadan sonra edilmiş hər bir dəyişiklik itiriləcək.'''",
-       "unicode-support-fail": "Brauzeriniz Unicode-nu dəstəkləmir. Səhifələri redaktə edərkən, redaktəniz saxlanmadı.",
+       "unicode-support-fail": "Brauzeriniz Yunikodu dəstəkləmədiyindən redaktəniz yadda saxlanılmadı.",
        "yourdiff": "Fərqlər",
        "copyrightwarning": "Xahiş olunur diqqətə alasınız ki, {{SITENAME}}dakı bütün fəaliyyətləriniz $2 lisenziyasına tabe olduğu hesab edilir (təfərrüat üçün bax: $1). Əgər yazdıqlarınızın əsaslı şəkildə redaktə edilməsini və istənildiyi vaxt başqa yerə ötürülməsini istəmirsinizsə, yazılarınızı burada dərc etməyin.\n<br />\nSiz eyni zamanda söz verirsiniz ki, bu yazıları siz özünüz yazmısınız və ya onları hamıya açıq mühitdən ya da buna bənzər mənbədən köçürmüsünüz.\n\n----\n\n<div style=\"font-weight: bold; font-size: 110%; color:red;\">MÜƏLLİF HÜQUQLARI İLƏ QORUNMUŞ HEÇ BİR İŞİ İCAZƏSİZ DƏRC ETMƏYİN!</div>",
        "copyrightwarning2": "{{SITENAME}} saytında edilən bütün töhfələr digər istifadəçilər tərəfindən redaktə, dəyişdirilə və ya silinə bilər.\nYazılarınızın redaktə edilməsini istəmirsinizsə, buraya təqdim etməyin. <br />\nSiz də bunu özünüz yazdığınızı və ya ictimai bir domendən və ya digər bir etibarlı mənbədən kopyaladığınızı vəd edirsiniz (ətraflı məlumat üçün $1-ə baxın).",
-       "editpage-cannot-use-custom-model": "Bu səhifənin məzmunu modeli dəyişdirilə bilməz.",
-       "longpageerror": "<strong>Səhv: Siz təqdim etdiyiniz mətn {{PLURAL:$11 kilobayt|$1 kilobayt}} uzundur; bu {{PLURAL: $2 |bir kilobayt | $2 kilobayt}} maksimumdan daha uzundur.</strong>\nSaxlanıla bilməz.",
+       "editpage-cannot-use-custom-model": "Bu səhifənin məzmun modeli dəyişdirilə bilməz.",
+       "longpageerror": "<strong>Xəta: Daxil etdiyiniz mətnin həcmi {{PLURAL:$2|bir kilobayt|$2 kilobayt}} limitini aşır və {{PLURAL:$1|bir kilobayt|$1 kilobayt}} həcmindədir.</strong>\nRedaktəniz yadda saxlanıla bilməz.",
        "readonlywarning": "<strong>Xəbərdarlıq: Verilənlər bazası saxlamaq üçün kilidlənib, beləliklə, düzəlişlərinizi hazırda saxlaya bilməyəcəksiniz.</strong>\nMətni mətn faylına kopyalayıp yapışdırılmasını və daha sonra saxlamağınızı tövsiyə edirik.\n\nBunu kilidləyən sistem idarəçisi bu izahatı verdi: $1",
        "protectedpagewarning": "<strong>Xəbərdarlıq:</strong> Bu səhifə mühafizə edildiyi üçün yalnız idarəçilər redaktə edə bilərlər.\n\nƏn son jurnal qeydi aşağıda verilmişdir:",
        "semiprotectedpagewarning": "'''Qeyd:''' Bu səhifə mühafizəli olduğu üçün onu yalnız qeydiyyatdan keçmiş istifadəçilər redaktə edə bilərlər.",
        "yourlanguage": "Dil:",
        "yourvariant": "Dil variant;:",
        "yournick": "Ləqəb:",
+       "prefs-help-signature": "Müzakirə səhifələrindəki şərhlər \"<nowiki>~~~~</nowiki>\" işarələrinin köməyi ilə imzalanmalıdır. Bu, həmin şərhin sonuna sizin imzanızı və onun yazılma tarixini əlavə edir.",
        "badsig": "Səhv xam imza.\nHTML kodu yoxla.",
        "badsiglength": "İmzanız çox uzundur. İmza $1 {{PLURAL:$1|simvoldan|simvoldan}} uzun olmamalıdır.",
        "yourgender": "Hansı təsvir sizə daha uyğundur?",
        "gender-unknown": "Sizi nəzərdə tutarkən, proqram təminatı mümkün olduqca gender-neytral sözlərdən istifadə edəcək.",
        "gender-male": "Bu kişi istifadəçi viki-səhifələri redaktə edir",
        "gender-female": "Bu qadın istifadəçi viki-səhifələri redaktə edir",
+       "prefs-help-gender": "Bu nizamlama meyarı istəyinizə bağlıdır. \nProqram sizə müraciət etmək üçün bu dəyərdən və cinsiyyətiniz üzrə uyğun qrammatikadan istifadə edir.\nBu məlumat hər kəsə görünəcək.",
        "email": "E-məktub",
        "prefs-help-realname": "Həqiqi adınızı daxil etmək məcburi deyil.\nDaxil etsəniz, adınız redaktələrinizin müəllifliyinin təyin edilməsi üçün istifadə edilə bilər.",
        "prefs-help-email": "E-poçt ünvanınızı daxil etmək məcburi deyil.\nBu, parolunuzu unutduğunuz halda, sizə yeni parol göndərməyə imkan verir.",
index 4c2c3c6..50165f4 100644 (file)
@@ -8,17 +8,19 @@
                        "Naval Scene",
                        "Nemo bis",
                        "NoiX180",
-                       "아라"
+                       "아라",
+                       "Carma citrawati",
+                       "Joseagush",
+                       "Wandering ant"
                ]
        },
-       "tog-underline": "isinin garis ring beten pranala",
+       "tog-underline": "Garis ring beten pranala:",
        "tog-hideminor": "engkebang suntingan ring gentosan sane pinih anyar",
        "tog-hidepatrolled": "engkebang suntingan mapatrol ring gentosan sane pinih anyar",
        "tog-newpageshidepatrolled": "engkebang lembar mapatrol saking saking kepahan lembar anyar",
        "tog-extendwatchlist": "kembangang kepahan pangiwasan antuk nampilang samian panguwahan, nenten sane anyar kewanten",
        "tog-usenewrc": "aniang suntingan ring tampilan pagentosan sane pinih anyar lan kepahan pangiwasan manutin lembar",
        "tog-numberheadings": "isinin nomor murda anggen cara otomatis",
-       "tog-showtoolbar": "tampilang pekakas panyuntingan",
        "tog-editondblclick": "sunting lembar nganggen klik kaping pindo",
        "tog-editsectiononrightclick": "sayagayang panyuntingan kepahan anggen ngeklik tengen ring kepahan judul",
        "tog-watchcreations": "imbuhin lembar sane karyanin titiang ring kepahan pangiwasan",
        "tog-norollbackdiff": "sampunang tampilang binanne sesampun ngewaliang",
        "tog-useeditwarning": "elingang titiang yening ngalahin lembar panyuntingan sadurung nyimpen pagentosan",
        "tog-prefershttps": "setata nganggen sambungan sane aman rikala malebu log",
-       "underline-always": "setata",
-       "underline-never": "nenten naenin",
+       "underline-always": "Setata",
+       "underline-never": "Nénten naénin",
        "underline-default": "kulit utawi penjelajah paaban",
        "editfont-style": "model aksara ring kotak panyuntingan",
-       "editfont-default": "penjelajah paaban",
        "editfont-monospace": "aksara monospace",
        "editfont-sansserif": "aksara sans-serif",
        "editfont-serif": "aksara serif",
        "february": "Pébruari",
        "march": "Maret",
        "april": "April",
-       "may_long": "mungkin - minab",
+       "may_long": "Méi",
        "june": "Juni",
        "july": "Juli",
        "august": "Agustus",
        "september": "Séptémber",
        "october": "Oktober",
-       "november": "november",
+       "november": "Nopémber",
        "december": "Désémber",
        "january-gen": "Januari",
        "february-gen": "Pébruari",
        "january-date": "Januari $1",
        "february-date": "Februari $1",
        "march-date": "Maret $1",
+       "april-date": "April $1",
        "may-date": "Mei $1",
        "june-date": "Juni $1",
        "july-date": "Juli $1",
        "august-date": "Agustus $1",
+       "september-date": "September $1",
        "october-date": "Oktober $1",
+       "november-date": "November $1",
        "december-date": "Desember $1",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|golongan}}",
        "category_header": "lembar ring golongan \"$1\"",
        "subcategories": "sub golongan",
        "category-file-count": "{{PLURAL:$2|golongan puniki madue{{PLURAL:$1|$1 lembar}}, saking total $2.}}",
        "listingcontinuesabbrev": "samb.",
        "noindex-category": "lembar sane nenten maindeks",
-       "about": "paindikan",
-       "newwindow": "bukak ring jendela anyar",
-       "cancel": "buwungang",
+       "about": "Indik",
+       "newwindow": "(bukak ring jendela anyar)",
+       "cancel": "Buwung",
        "mytalk": "Wicara",
-       "navigation": "pengarah",
-       "qbedit": "mecikang",
+       "anontalk": "Wicara",
+       "navigation": "Pengarah",
+       "and": "&#32;miwah",
        "faq": "FAQ (pitaken sane jagi katakonang)",
-       "faqpage": "Project: FAQ(pitaken sane jagi katakonang)",
-       "actions": "parilaksana",
+       "actions": "Parilaksana",
        "namespaces": "Genah pesengan",
        "variants": "kawentenan sane lianan",
+       "navigation-heading": "menu navigasi",
        "errorpagetitle": "kaluputan",
        "returnto": "mabalik ring $1",
        "tagline": "Saka {{SITENAME}}",
        "history": "sejarah pupulan",
        "history_short": "kawentenan sane lawas",
        "printableversion": "kawentenan lian sane macetak",
-       "permalink": "pranala ajeg",
+       "permalink": "Pranala ajeg",
+       "view": "cingakin",
        "edit": "Becikang",
-       "create": "ngawe",
-       "delete": "apus",
-       "protect": "nyaga",
+       "create": "Ngae",
+       "delete": "Apus",
+       "protect": "Nyaga",
        "protect_change": "gentos",
-       "newpage": "lembar anyar",
+       "newpage": "Lembar Anyar",
        "talkpagelinktext": "Wicara",
        "personaltools": "pekakas pribadi",
        "talk": "rembug\n\nngarembug (kata kerja)",
        "disclaimerpage": "Project:Pengelidan lumrah",
        "edithelp": "pamitulung panguwahan",
        "mainpage": "Kaca Utama",
-       "mainpage-description": "lembar utama",
+       "mainpage-description": "Lembar Utama",
        "portal": "Pintu nuju sekha",
        "portal-url": "Project:pamedal sekha",
        "privacy": "kawicaksanaan padewekan",
        "nstab-template": "templat",
        "nstab-help": "lembar pamitutlung",
        "nstab-category": "golongan",
+       "mainpage-nstab": "Kaca Utama",
        "missing-article": "data utama nenten prasida nemu tulisan saking lembar sane sepatutne wenten, inggih punika  $1, $2\n\nindike puniki biasane keranayang olih pranala kaon nuju pabenahan sane dumun lembar sane sampun kaicalang\n\nyening nenten puniki sane ngranayang, ida dane minab sampun manggihin kaiwangang ring sajeroning piranti lunak.\nDurus sadokang indik puniki rin silih sinunggil anak \n\n[[Special:ListUsers/sysop|Pengurus]], antuk ngetik alamat URL sane katuju",
        "missingarticle-rev": "(pabenahan#:$1)",
        "badtitle": "murda sane nenten manut",
        "yourname": "pesengan penganggen",
        "yourpassword": "kruna sandi",
        "yourpasswordagain": "jumunin kruna sandi",
-       "login": "malebu ring log",
+       "login": "Ngranjing log",
        "nav-login-createaccount": "malebu log / ngawe pepalihan",
-       "userlogin": "malebu log / ngawe pepalihan",
        "userlogout": "medal saking Log",
-       "nologin": "durung madue akun?$1",
-       "nologinlink": "ngajuang akun anyar",
        "createaccount": "ngajuang akun anyar",
-       "gotaccount": "durung madue akun?$1",
-       "gotaccountlink": "malebu ring log",
-       "userlogin-resetlink": "Lali rerincian anggen mlebu ring log ida dane?",
        "mailmypassword": "nyumu ngaryanin kruna sandi",
        "loginlanguagelabel": "Basa: $1",
        "bold_sample": "teks puniki mesurat tebel",
        "preview": "tayangan sadurungnyane",
        "showpreview": "cingak sane lintang",
        "showdiff": "cingak pagentosan",
-       "anoneditwarning": "\"Pingetan\" ida dane nenten kacatet malebu. Alamat IP ida dane jagi kacatet ring sejarah (indik sane dumunan) ring lembar puniki.",
+       "anoneditwarning": "\"Pingetan\" ida dané nénten kacatet ngranjing. Alamat IP ida dané jagi kacatet ring sejarah (indik sané dumunan) ring lembar puniki.",
        "newarticle": "(Anyar)",
        "newarticletext": "ida dane ngiring pranala nuju lembar sane durung wenten. yening jagi ngaryanang lembar punika, ketik daging lembar ring kotak sane wenten ring beten puniki. (cingak [$1 lembar wantuan] anggen wacana salanturnyane). yening ida dane nenten nyelapang neked ring lembar puniki, klik tombol \"back\" ring \"penjelajah web\" ida dane.",
-       "noarticletext": "mangkin nenten wenten teks ring lembar puniki. ida dane prasida [[Special:Search/{{PAGENAME}}|ngarereh murda anggen lembar puniki]] ring lembar-lembar sane lianan, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ngarereh log sane mapaiketan], utawi [{{fullurl:{{FULLPAGENAME}}|action=edit}} ngubah lembar puniki]</span>.",
+       "noarticletext": "mangkin nenten wenten teks ring lembar puniki. ida dane prasida [[Special:Search/{{PAGENAME}}|ngrereh murda nganggen lembar puniki]] ring lembar-lembar sane lianan, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ngrereh log sane mapaiketan], utawi [{{fullurl:{{FULLPAGENAME}}|action=edit}} nguwah lembar puniki]</span>.",
        "noarticletext-nopermission": "mangkin nenten wenten teks ring lembar puniki. ida dane prasida [[Special:Search/{{PAGENAME}}|ngarereh murda anggen lembar puniki]] ring lembar-lembar sane lianan, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ngarereh log sane mapaiketan], utawi [{{fullurl:{{FULLPAGENAME}}|action=edit}} ngubah lembar puniki]</span>.",
        "previewnote": "\"elingang yening puniki wantah sane lintang.\" Panguwahan ida dane durung kasimpen!",
        "editing": "panguwahan $1",
        "template-protected": "nyayubang",
        "template-semiprotected": "(semi-penyaga)",
        "hiddencategories": "lembar niki inggih punika krama saking {{PLURAL:$1|1 golongan sane mengkeb|$1 golongan sane mengkeb}}",
-       "permissionserrorstext-withaction": "ida dane nenten madue kuasa malebu anggen $2, riantukan {{PLURAL:$1|alasan}} ring sor puniki:",
+       "permissionserrorstext-withaction": "ida dané nénten madué kuasa ngranjing anggén $2, riantukan {{PLURAL:$1|alasan}} ring sor puniki:",
        "recreate-moveddeleted-warn": "\"pingetan\" ida dane ngawe malih lembar sane naenin maapus.'''\n\nmangda kayunin malih napike pantes lanturang suntingan ida dane. puniki log pengapusan lan pangisidan saking lembar puniki:",
        "moveddeleted-notice": "lembar puniki sampun kaapus. anggen pewarah, puniki log pangapus lan pengisidan lembar puniki",
        "post-expand-template-inclusion-warning": "pinget: ukuran templat sane keanggen kalangkung ageng. wenten templat sane kacampahang",
        "yourrealname": "pesengan sujati",
        "prefs-help-email": "alamat email sane mawatek mamilih, nanging ngamerluang anggen nyumunin sandi yening ida dane lali",
        "prefs-help-email-others": "ida dane prasida milih anggen ngalugrain anak lianan ngubungin ida dane majalaran lembar penganggen utawi pangraos nenten ja perlu ngagah indik padewekan ida dane",
+       "right-writeapi": "nganggén API sasuratan",
        "newuserlogpage": "log penganggo anyar",
        "action-edit": "benahang lembar puniki",
        "nchanges": "$1{{PLURAL:$1|panguwahan|uwah-uwahan}}",
        "recentchangeslinked": "pangentos sane wenten paiketane",
        "recentchangeslinked-toolbox": "pangentos sane wenten paiketane",
        "recentchangeslinked-title": "panguwahan sane mapaiketan ring $1",
-       "recentchangeslinked-summary": "lembar kautamayang puniki ngicenin kepahan penguwahan kaping untat ring lembar-lembar sana mapaiket. Lembar sane [[Special:Watchlist|ida dane iwasin]] mapinget antuk masurat tebel",
+       "recentchangeslinked-summary": "lembar kautamayang puniki ngicenin kepahan penguwahan kaping untat ring lembar-lembar sana mapaiket. Lembar sane [[Special:Watchlist|ida dane iwasin]] mapinget antuk sesuratan tebel",
        "recentchangeslinked-page": "adan lembar",
        "recentchangeslinked-to": "edengang panguwahan sakin lembar-lembar sane mapaiket antuk lembar-lembar sane kaedengang",
        "upload": "ngunggahang berkas",
        "undeleteviewlink": "cingak",
        "namespace": "Genah pesengan",
        "invert": "uliang pilihan",
+       "tooltip-invert": "Centang kotak puniki mangdané ngengkebang lembar sané kauwah ring genah wastan sané kapilih (miwah genah wastan sané mapaiketan yéning kacentang)",
        "blanknamespace": "utama",
        "contributions": "kawigunan {{GENDER:$1|penganggo}}",
        "contributions-title": "Kontribusi pangangge anggen $1",
        "whatlinkshere": "Pranala balik",
        "whatlinkshere-title": "lembar-lembar sane maduwe pranala kaping \"$1\"",
        "whatlinkshere-page": "lembar",
-       "linkshere": "lembar puniki maduwe pranala ke '''[[:$1]]'''",
-       "nolinkshere": "lembar puniki maduwe pranala ke '''[[:$1]]'''",
+       "linkshere": "lembar puniki maduwe pranala ke '''$2'''",
+       "nolinkshere": "lembar puniki maduwe pranala ke '''$2'''",
        "isredirect": "lembar pangalihan",
        "istemplate": "sareng kasurat",
        "isimage": "pranala pupulan-pupulan",
        "tooltip-pt-preferences": "Preferensi titiang",
        "tooltip-pt-watchlist": "kepahan-kepahan lembar sane katinjo titiang",
        "tooltip-pt-mycontris": "kepahan-kepahan kawigunan ida dane",
-       "tooltip-pt-login": "ida dane kaaturang malebu log, nanging nenten kaswadarmayang",
+       "tooltip-pt-login": "ida dané kaaturang ngranjing log, nanging nénten kaswadarmayang",
        "tooltip-pt-logout": "medal saking Log",
+       "tooltip-pt-createaccount": "ragané mangda makarya akun miwah ngranjing log: yadiastun nénten kawajibang",
        "tooltip-ca-talk": "pabligbagan indik dagingnyane",
        "tooltip-ca-edit": "Sunting kaca iki. Nganggen tombol pratayang sadurunge nyimpen.",
        "tooltip-ca-addsection": "nyumunin kepahan anyar",
        "file-nohires": "tan kasayagaang ukuran sane lewih ageng",
        "svg-long-desc": "pupulan SVG, nominal $1 × $2 piksel, geden pupulan: $3",
        "show-big-image": "pupulan sujati",
+       "show-big-image-preview": "agengnyané pratuduh:$1",
+       "show-big-image-other": "{{PLURAL:$2|Resolusi}} iianan: $1.",
+       "show-big-image-size": "$1 × $2 piksel",
        "sunday-at": "Redite jam $1",
        "bad_image_list": "bentukne sekadi puniki:\n\nwantah kepahan daftar ( baris sane kakawitin anggen tanda *) sane kaitung pranala kapertama ring baris mangda pranala ring berkas sane kaon.\nPranala-Pranala sane selanturnyane ring baris sane pateh kamanahang antuk pinangging, inggih punika lembar sane prasida ngedengang berkas punika.",
        "metadata": "metadata",
        "duplicate-defaultsort": "pingetan: sereg pangurutan lingga \"$2\" nyampahang sereg pangurutan lingga sadurunge \"$1\"",
        "specialpages": "lembar melulu",
        "external_image_whitelist": "#banggiang baris niki sapunapi kawentenanne<pre>\n#anggen fragmen akspresi reguler (wantah kepahan ring kekelaih//) ring sor puniki\n#fragmen-fragmen puniki jagi kaadungang sareng URL saking gambar-gambar eksternal (sane kasambungang langsung)\n#fragmen sane adung jagi katampilang dados gambar, sisanne wantah dados pranala kewanten\n#baris sane kakawitin antuk # jagi kadadosang baris komentar\n#niki nenten ngabinayang aksara ageng lan alit\n#genahang samian fragmen ekspresi reguler ring sor baris puniki. banggiang baris niki sapunapi kawentennane</pre>",
-       "tag-filter": "filter [[Special:Tags|tag]]:"
+       "tag-filter": "filter [[Special:Tags|tag]]:",
+       "tag-list-wrapper": "[[Special:Tags|{{PLURAL:$1|Tag}}]]: $2",
+       "logentry-newusers-create": "$1 {{GENDER:$2|makarya}} akun sané nuénang"
 }
index 33eef77..4ac4443 100644 (file)
        "action-bigdelete": "выдаленьне старонак зь вялікай гісторыяй",
        "action-blockemail": "блякаваньне ўдзельніку магчымасьці адпраўкі лістоў электроннай поштай",
        "action-bot": "тое, каб лічыцца аўтаматычным працэсам",
+       "action-editprotected": "рэдагаваньне старонак, абароненых у рэжыме «{{int:protect-level-sysop}}»",
+       "action-editsemiprotected": "рэдагаваньне старонак, абароненых як «{{int:protect-level-autoconfirmed}}»",
+       "action-editinterface": "рэдагаваньне інтэрфэйсу карыстальніка",
+       "action-editusercss": "рэдагаваньне CSS-файлаў іншых удзельнікаў",
        "nchanges": "$1 {{PLURAL:$1|зьмена|зьмены|зьменаў}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|з апошняга візыту}}",
        "enhancedrc-history": "гісторыя",
        "blocklist-editing-page": "старонкі",
        "blocklist-editing-ns": "прасторы назваў",
        "ipblocklist-empty": "Сьпіс блякаваньняў пусты.",
-       "ipblocklist-no-results": "Ð\9fаданÑ\8b IP-адÑ\80аÑ\81 Ð°Ð»Ñ\8cбо Ñ\96мÑ\8f Ñ\9eдзелÑ\8cнÑ\96ка Ð½Ðµ Ð·Ð°Ð±Ð»Ñ\8fкаванÑ\8bÑ\8f.",
+       "ipblocklist-no-results": "Ð\9dÑ\8f Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ð° Ð±Ð»Ñ\8fкаванÑ\8cнÑ\8fÑ\9e Ð´Ð»Ñ\8f Ð¿Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ð°Ð³Ð° IP-адÑ\80аÑ\81Ñ\83 Ð°Ð»Ñ\8cбо Ñ\96мÑ\8f Ñ\9eдзелÑ\8cнÑ\96ка.",
        "blocklink": "заблякаваць",
        "unblocklink": "разблякаваць",
        "change-blocklink": "зьмяніць блякаваньне",
index cacc5af..46e79de 100644 (file)
        "page_first": "প্রথম",
        "page_last": "শেষ",
        "histlegend": "পার্থক্য নির্বাচন: যে সংস্করণগুলি তুলনা করতে চান, সেগুলি চিহ্নিত করে এন্টার বা নিচের বোতামটি টিপুন।<br />\nনির্দেশিকা: <strong>({{int:cur}})</strong> = বর্তমান সংস্করণের সাথে পার্থক্য, <strong>({{int:last}})</strong> = পূর্বের সংস্করণের সাথে পার্থক্য,  <strong>{{int:minoreditletter}}</strong> = অনুল্লেখ্য সম্পাদনা।",
-       "history-fieldset-title": "সà¦\82শà§\8bধিত à¦¸à¦\82সà§\8dà¦\95রণà§\87র à¦\9cনà§\8dয à¦\85নà§\81সনà§\8dধান à¦\95রুন",
+       "history-fieldset-title": "সà¦\82শà§\8bধনà¦\97à§\81লি à¦\9bাà¦\81à¦\95ুন",
        "history-show-deleted": "শুধুমাত্র অপসারিত সংশোধন",
        "histfirst": "সবচেয়ে পুরনো",
        "histlast": "সবচেয়ে নতুন",
        "rcfilters-savedqueries-already-saved": "এই ছাঁকনিগুলি ইতিমধ্যে সংরক্ষণ করা হয়েছে। একটি নতুন সংরক্ষিত ছাঁকনি তৈরি করতে আপনার সেটিং পরিবর্তন করুন।",
        "rcfilters-restore-default-filters": "পূর্বনির্ধারিত ছাঁকনি পুনরুদ্ধার করুন",
        "rcfilters-clear-all-filters": "সব ছাঁকনি পরিষ্কার করুন",
-       "rcfilters-show-new-changes": "নতুনতর পরিবর্তনসমূহ দেখুন",
+       "rcfilters-show-new-changes": "$1 থেকে নতুনতর পরিবর্তনসমূহ দেখুন",
        "rcfilters-search-placeholder": "সাম্প্রতিক পরিবর্তনসমূহ ছাঁকুন (ব্রাউজ বা টাইপ করা শুরু করুন)",
        "rcfilters-invalid-filter": "অকার্যকর ছাঁকনি",
        "rcfilters-empty-filter": "কোনো সক্রিয় ফিল্টার নেই। সমস্ত অবদান দেখানো হয়েছে।",
        "delete-confirm": "\"$1\" অপসারণ",
        "delete-legend": "অপসারণ",
        "historywarning": "<strong>সতর্কীকরণ:</strong> যে পাতাটি আপনি মুছে ফেলতে যাচ্ছেন তার ইতিহাসে প্রায় $1টি {{PLURAL:$1|সংশোধন}} রয়েছে:",
-       "historyaction-submit": "দà§\87à¦\96াà¦\93",
+       "historyaction-submit": "সà¦\82শà§\8bধন à¦¦à§\87à¦\96ান",
        "confirmdeletetext": "আপনি একটি পাতা সেটির সমস্ত ইতিহাসসহ মুছে ফেলতে যাচ্ছেন।\nঅনুগ্রহ করে নিশ্চিত করুন আপনি আসলেই এটি করতে চান, আপনি এর ফলাফল সম্পর্কে অবহিত, এবং আপনি [[{{MediaWiki:Policy-url}}|নীতিমালা]] মেনে এটি করছেন।",
        "actioncomplete": "কাজটি নিষ্পন্ন হয়েছে",
        "actionfailed": "অ্যাকশন ব্যর্থ",
        "blocklist-userblocks": "অ্যাকাউন্ট বাধা লুকানো হোক",
        "blocklist-tempblocks": "অস্থায়ী বাধা লুকাও",
        "blocklist-addressblocks": "একক আইপি বাধা লুকানো হোক",
+       "blocklist-type": "ধরন:",
+       "blocklist-type-opt-all": "সব",
+       "blocklist-type-opt-sitewide": "সাইটব্যাপী",
+       "blocklist-type-opt-partial": "আংশিক",
        "blocklist-rangeblocks": "রেঞ্জ ব্লকসমূহ লুকান",
        "blocklist-timestamp": "সময়বার্তা",
        "blocklist-target": "লক্ষ্য",
index 724de59..6c8c377 100644 (file)
        "blocklist-userblocks": "Amaga blocatges de compte",
        "blocklist-tempblocks": "Amaga els blocatges temporals",
        "blocklist-addressblocks": "Amaga blocatges d'una sola IP",
+       "blocklist-type": "Tipus:",
+       "blocklist-type-opt-all": "Tot",
+       "blocklist-type-opt-partial": "Parcial",
        "blocklist-rangeblocks": "Amaga els blocatges de rang",
        "blocklist-timestamp": "Marca horària",
        "blocklist-target": "Usuari blocat",
index d648d23..7301a08 100644 (file)
        "recentchangeslinked-toolbox": "Дихкина нисдарш",
        "recentchangeslinked-title": "Дихкина нисдарш «$1»",
        "recentchangeslinked-summary": "ХӀара хийцам биначу агӀонийн могӀам бу, тӀетовжар долуш хьагучу агӀон (я хьагойтуш йолучу категорена).\nАгӀонаш юькъа йогӀуш йолу хьан [[Special:Watchlist|тергаме могӀам чохь]] '''къастийна ю'''.",
-       "recentchangeslinked-page": "АгӀон цӀе:",
+       "recentchangeslinked-page": "АгӀонан цӀе:",
        "recentchangeslinked-to": "Кхечу агӀор, гайта хийцамаш агӀонашца, хӀоттийначу агӀонтӀе хьажорг йолуш",
        "recentchanges-page-added-to-category": "[[:$1]] категори чу тоьхна",
        "recentchanges-page-added-to-category-bundled": "[[:$1]] а, [[Special:WhatLinksHere/$1|{{PLURAL:$2|цхьа агӀо|$2 агӀо}}]] а категорин тӀетоьхна",
        "movenotallowed": "Хьан бакъо яц керла агӀонаш кхолла.",
        "movenotallowedfile": "Хьан файлийн цӀерш хийца бакъо яц.",
        "cant-move-user-page": "Хьан бакъо яц декъашхойн коьрта агӀонийн цӀерш хийца.",
-       "cant-move-to-user-page": "Хьан бакъо яц агӀона цӀе декъашхочун агӀон тӀе хийца (бухара агӀон тӀе хийца мега).",
+       "cant-move-to-user-page": "Хьан бакъо яц агӀона цӀе декъашхочун агӀонан тӀе хийца (бухара агӀонан тӀе хийца мега).",
        "cant-move-category-page": "Хьан категорийн цӀерш хийца бакъо яц.",
        "cant-move-to-category-page": "Хьан категорийн цӀерш хийца бакъо яц.",
        "newtitle": "Керла цӀе",
        "move-watch": "ХӀара агӀо тергаме могӀанан юкъатоха",
-       "movepagebtn": "АгӀон цӀе хийца",
+       "movepagebtn": "АгӀонан цӀе хийца",
        "pagemovedsub": "АгӀонан цӀе хийцина",
-       "movepage-moved": "'''АгӀон цӀе «$1» хийцина → «$2»'''",
+       "cannotmove": "АгӀонан цӀе хуьйцила дац {{PLURAL:$1|1=лахахь гойту бахьна|лахахь гойту бахьнаш}}:",
+       "movepage-moved": "'''АгӀонан цӀе «$1» хийцина → «$2»'''",
        "movepage-moved-redirect": "Кхоьллина дӀасахьажорг.",
        "movepage-moved-noredirect": "ДӀасхьажорг кхоллар дохина.",
        "articleexists": "ХӀарасанна цӀе йолу агӀо йолуш ю йа ахьа гойтуш йолу цӀе магош яц.\nДехар до, харжа кхин цӀе.",
-       "movetalk": "Цуьнца йогӀуш йолу дийцаре агӀон цӀе хийцар",
+       "movetalk": "Цуьнца йогӀуш йолу дийцаре агӀонан цӀе хийцар",
        "move-subpages": "Бухара агӀонийн цӀерш хийца($1 кхаччалц)",
        "move-talk-subpages": "ЦӀе хийца бухара агӀонийн а, агӀонийн дийцаре а ($1  кхаччалц)",
        "movepage-page-exists": "Агӏо $1 йолуш ю цундела и ша юху дӏаязъян йиш яц.",
        "tooltip-ca-protect": "Ларъе агӀо хийцамаш цабайта",
        "tooltip-ca-unprotect": "Хийца хӀокху агӀона ларъяр",
        "tooltip-ca-delete": "ДӀаяккха хӀара агӀо",
-       "tooltip-ca-move": "АгӀон цӀе хийца",
+       "tooltip-ca-move": "АгӀонан цӀе хийца",
        "tooltip-ca-watch": "ТӀетоха хӀара агӀо сан тергаме могӀанан юкъа",
        "tooltip-ca-unwatch": "ДӀаяккха хӀара агӀо хьай тергаме могӀанан юкъар",
        "tooltip-search": "Лаха иза дош",
-       "tooltip-search-go": "Билгала и санна цӀе йолучу агӀон чу дехьа гӀо",
+       "tooltip-search-go": "Билгала и санна цӀе йолучу агӀоне дехьа гӀо",
        "tooltip-search-fulltext": "Лаха агӀонаш ше чулацамехь хӀара йоза долуш",
        "tooltip-p-logo": "Коьрта агӀона дехьа гӀо",
        "tooltip-n-mainpage": "Коьрта агӀона дехьа гӀо",
        "table_pager_limit_label": "АгӀона чохь гойтуш ю оццул:",
        "table_pager_limit_submit": "Кхочушдé",
        "table_pager_empty": "Цакарийна",
-       "autosumm-blank": "Ð\90гÓ\8fон Ñ\87Ñ\83лаÑ\86ам Ð´Ó\8fабяккхина",
+       "autosumm-blank": "Ð\90гÓ\80онан Ð±ÐµÑ\80Ñ\80иге Ñ\87Ñ\83лаÑ\86ам Ð´Ó\80абяккхина",
        "autosumm-replace": "АгӀона чуьраниг хийцина → «$1»",
        "autoredircomment": "[[$1]] тӀе хьажийна",
        "autosumm-removed-redirect": "ДӀаяьккхина дӀасхьажог [[$1]]",
index 66d0f05..5309d1e 100644 (file)
@@ -9,7 +9,8 @@
                        "Shirayuki",
                        "아라",
                        "Macofe",
-                       "Fanjiayi"
+                       "Fanjiayi",
+                       "Cuatro Remos"
                ]
        },
        "tog-underline": "Na'raya i inachetton:",
index fa11cb5..56b7ff5 100644 (file)
@@ -42,7 +42,8 @@
                        "Ed g2s",
                        "Radana",
                        "Jan Růžička",
-                       "Jaroslav Cerny"
+                       "Jaroslav Cerny",
+                       "Slepi"
                ]
        },
        "tog-underline": "Podtrhávat odkazy:",
        "action-changetags": "přidávat libovolné značky na jednotlivé revize a protokolovací záznamy a odebírat je",
        "action-deletechangetags": "mazat značky z databáze",
        "action-purge": "vyčistit vyrovnávací paměť této stránky",
+       "action-apihighlimits": "používat vyšší limity v API dotazech",
+       "action-autoconfirmed": "nebýt omezeni rychlostními limity na dané IP adrese",
+       "action-bigdelete": "mazat stránky s dlouhou historií",
+       "action-blockemail": "zablokovat uživateli možnost posílání e-mailů",
+       "action-bot": "být označen jako \"bot\"",
+       "action-editprotected": "editovat stránky zamčené na „{{int:protect-level-sysop}}“",
+       "action-editsemiprotected": "editovat stránky zamčené na „{{int:protect-level-autoconfirmed}}“",
+       "action-editinterface": "upravovat uživatelské rozhraní",
+       "action-editusercss": "upravovat CSS soubory ostatních uživatelů",
+       "action-edituserjson": "upravovat JSON soubory ostatních uživatelů",
+       "action-edituserjs": "upravovat JavaScriptové soubory ostatních uživatelů",
+       "action-editsitecss": "upravovat CSS celého projektu",
+       "action-editsitejson": "upravovat JSON celého projektu",
+       "action-editsitejs": "upravovat JavaScript celého projektu",
+       "action-editmyusercss": "upravovat vlastní uživatelské CSS soubory",
+       "action-editmyuserjson": "upravovat vlastní uživatelské JSON soubory",
+       "action-editmyuserjs": "upravovat vlastní uživatelský JavaScript",
+       "action-viewsuppressed": "prohlížet revize skryté všem uživatelům",
+       "action-hideuser": "zablokovat uživatelské jméno a skrýt jej",
        "nchanges": "$1 {{PLURAL:$1|změna|změny|změn}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|od poslední návštěvy}}",
        "enhancedrc-history": "historie",
        "blocklist-userblocks": "Skrýt zablokované účty",
        "blocklist-tempblocks": "Skrýt dočasná zablokování",
        "blocklist-addressblocks": "Skrýt blokování jedné IP adresy",
+       "blocklist-type": "Typ:",
+       "blocklist-type-opt-all": "Vše",
+       "blocklist-type-opt-sitewide": "Na celém projektu",
+       "blocklist-type-opt-partial": "Částečný",
        "blocklist-rangeblocks": "Skrýt blokování rozsahů",
        "blocklist-timestamp": "Datum a čas",
        "blocklist-target": "Cíl",
index 5a1c423..d3b3b52 100644 (file)
        "action-changetags": "tilføje og fjerne vilkårlige tags for enkelte versioner og logposter",
        "action-deletechangetags": "slette tags fra databasen",
        "action-purge": "rense denne side",
+       "action-bot": "blive behandlet som en automatiseret proces",
        "nchanges": "$1 {{PLURAL:$1|ændring|ændringer}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|siden sidste besøg}}",
        "enhancedrc-history": "historik",
        "blocklist-userblocks": "Skjul blokeringer af kontoer",
        "blocklist-tempblocks": "Skjul midlertidige blokeringer",
        "blocklist-addressblocks": "Skjul enkel IP blokeringer",
+       "blocklist-type-opt-partial": "Delvis",
        "blocklist-rangeblocks": "Skjul blokeringsklasser",
        "blocklist-timestamp": "Tidsstempel",
        "blocklist-target": "Mål",
index 1b4f6ff..8740c73 100644 (file)
        "rcfilters-savedqueries-already-saved": "Diese Filter sind bereits gespeichert. Ändere deine Einstellungen, um einen neuen Gespeicherten Filter zu erstellen.",
        "rcfilters-restore-default-filters": "Standardfilter wiederherstellen",
        "rcfilters-clear-all-filters": "Alle Filter löschen",
-       "rcfilters-show-new-changes": "Neueste Änderungen ansehen",
+       "rcfilters-show-new-changes": "Neue Änderungen seit $1 ansehen",
        "rcfilters-search-placeholder": "Änderungen filtern (Menü oder Suche für den Filternamen verwenden)",
        "rcfilters-invalid-filter": "Ungültiger Filter",
        "rcfilters-empty-filter": "Keine aktiven Filter. Es werden alle Beiträge angezeigt.",
        "blocklist-userblocks": "Benutzersperren ausblenden",
        "blocklist-tempblocks": "Befristete Sperren ausblenden",
        "blocklist-addressblocks": "Sperren einzelner IP-Adressen ausblenden",
+       "blocklist-type": "Typ:",
+       "blocklist-type-opt-all": "Alle",
+       "blocklist-type-opt-sitewide": "Wikiweit",
+       "blocklist-type-opt-partial": "Teilweise",
        "blocklist-rangeblocks": "Bereichssperren ausblenden",
        "blocklist-timestamp": "Zeitstempel",
        "blocklist-target": "Ziel",
        "blocklist-editing-page": "Seiten",
        "blocklist-editing-ns": "Namensräume",
        "ipblocklist-empty": "Die Liste enthält keine Einträge.",
-       "ipblocklist-no-results": "Die gesuchte IP-Adresse/der Benutzername ist nicht gesperrt.",
+       "ipblocklist-no-results": "Für die angeforderte IP-Adresse/den angeforderten Benutzernamen wurden keine übereinstimmenden Sperren gefunden.",
        "blocklink": "Sperren",
        "unblocklink": "Freigeben",
        "change-blocklink": "Sperre ändern",
index b10bd1d..4653983 100644 (file)
        "newarticle": "(Newe)",
        "newarticletext": "To yew gıre tıkna be ra yew pela ke hewna çıniya.\nSeba afernayışê pele ra, qutiya metnê cêrêni bıgurene (seba melumati qaytê [$1 pela peşti] ke).\nEke be ğeletine ameya tiya, wa gocega <strong>peyser</strong>i programê xo de bıtıkne.",
        "anontalkpagetext": "----''Na pele, pela karberana ke hesab anêkerdo ya zi yê karberana ke hesab kerdo a, labelê be hesabê xo ra nêkewtê cı.'' \nNê sebeb ra adresa ma IPyi xebetnenime û nê adresanê IPyi her kes nêşeno bıvêno. Eke şıma qayil niyê wına bo, xo rê [[Special:CreateAccount|yew hesab vırazê]] ya zi [[Special:UserLogin|hesab akerê]].",
-       "noarticletext": "Ena perrer de hewna theba çıni yo.\nTı şenê zerreyê pelanê binan de [[Special:Search/{{PAGENAME}}|qandê  sernameyê ena pele cı geyre]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} qeydan miyan de cı geyre],\nya zi [{{fullurl:{{FULLPAGENAME}}|action=edit}} ena pele vıraze]</span>.{{MediaWiki mesaca pera newi}}",
+       "noarticletext": "Ena pele de hewna theba çıniyo.\nTı şenê zerreyê pelanê binan de [[Special:Search/{{PAGENAME}}|qandê sernameyê ena pele cı geyre]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} qeydan miyan de cı geyre],\nya zi [{{fullurl:{{FULLPAGENAME}}|action=edit}} ena pele vıraze]</span>.",
        "noarticletext-nopermission": "Ena pele de hewna theba çıniyo.\nTı şenay zerreyê pelanê binan de [[Special:Search/{{PAGENAME}}|seba sernameyê na pele cı geyre]], ya zi <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} qeydan miyan de cı geyre]</span>, ema destur çıniyo ke na pele vırazê.",
        "missing-revision": "Rewizyonê name dê pela da #$1 \"{{FULLPAGENAME}}\" dı çıniyo.\n\nNo normal de tarix dê pelanê besterneyan dı ena xırabin asena.\nDetayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} tiya dı] aseno.",
        "userpage-userdoesnotexist": "Hesabê karberi \"<nowiki>$1</nowiki>\" qeyd nêbiyo.\nKerem ke, tı ke wazenay na pele bafernê/bıvurnê, qontrol ke.",
        "blocklist-userblocks": "Kılitkerdışê hesaban bınımne",
        "blocklist-tempblocks": "Kılitkerdışan mıweqet bınımne",
        "blocklist-addressblocks": "Tenya kılitkerdışanê IPy bınımne",
+       "blocklist-type": "Babet:",
+       "blocklist-type-opt-all": "Pêro",
+       "blocklist-type-opt-partial": "Qısmi",
        "blocklist-rangeblocks": "Kılitkerdışanê rêzkiyan bınımne",
        "blocklist-timestamp": "İmzay demi",
        "blocklist-target": "Menzil",
        "blocklist-editing-page": "peli",
        "blocklist-editing-ns": "Heruna nameyan",
        "ipblocklist-empty": "Listay kılit kerdışi venga.",
-       "ipblocklist-no-results": "Adresa IPya waştiye ya zi nameyê karberi kılit nêbiyo.",
+       "ipblocklist-no-results": "Adresa IPya waştiye û nameyê karberiyo waşteyi rê kılitkerdışo vêrde çıniyo.",
        "blocklink": "kılit ke",
        "unblocklink": "ake",
        "change-blocklink": "kılitkerdışi bıvurne",
index 613f8f5..97619f2 100644 (file)
@@ -3,10 +3,21 @@
                "authors": [
                        "Cbrown1023",
                        "Natsubee",
-                       "아라"
+                       "아라",
+                       "Aguve",
+                       "Latercio2000"
                ]
        },
+       "tog-underline": "Flitete ɖe kadodo te:",
        "tog-hideminor": "Ɣla tɔtrɔ suewo le tɔtrɔ yeyeawo me",
+       "tog-hidepatrolled": "Ɣla asitɔtrɔ siwo wowɔ la le tɔtrɔ yeyewo me",
+       "tog-newpageshidepatrolled": "Ɣla axa siwo wowɔ tɔtrɔwo la le axa yeyewo me",
+       "tog-hidecategorization": "Ɣla axawo mama ɖe hatsotsowo me",
+       "tog-extendwatchlist": "Keke tɔtrɔkpɔƒea ne nàkpɔ tɔtrɔwo katã, ke menye yeyetɔwo ko o",
+       "tog-usenewrc": "Ƒo tɔtrɔwo nu ƒu le woƒe axawo nu le tɔtrɔ yeyewo kple tɔtrɔkpɔƒea",
+       "tog-numberheadings": "Xexlẽdzesinana tanyawo",
+       "tog-editondblclick": "Netrɔ asi le axawo ŋu ne wozi edzi zi eve",
+       "tog-editsectiononrightclick": "Tiae be woate ŋu atrɔ akpa ne wozi eƒe tanyawo dzi",
        "tog-watchcreations": "Tsɔ axa siwo gɔme medze kpakple axa siwo meda ɖe afisia la kpe ɖe axa siwo ŋu nyeƒe ŋku le la ŋu",
        "tog-watchdefault": "Tsɔ axawo kpakple nutatawo siwo ŋu metrɔ asi le la kpe ɖe axa siwo ŋu nyeƒe ŋku le la ŋu",
        "tog-watchmoves": "Tsɔ  axawo kpakple nutatawo siwo ƒe nɔƒe meɖɔli la kpe ɖe axa siwo ŋu nyeƒe ŋku le la ŋu",
        "tog-useeditwarning": "Na nyanyam ne mele asiɖem le axa si ŋu wome dzra tɔtrɔwo ɖo vɔ la o.",
        "underline-always": "Ɣesiaɣi",
        "underline-never": "Gbeɖe",
-       "sunday": "Kɔsiɖagbe",
-       "monday": "Dzoɖagbe",
-       "tuesday": "Brãɖagbe",
-       "wednesday": "Kuɖagbe",
-       "thursday": "Yawoɖagbe",
-       "friday": "Fiɖagbe",
-       "saturday": "Memleɖagbe",
-       "sun": "Kɔs",
+       "sunday": "Kwasiɖa",
+       "monday": "Dzoɖa",
+       "tuesday": "Braɖa",
+       "wednesday": "Kuɖa",
+       "thursday": "Yawoɖa",
+       "friday": "Fiɖa",
+       "saturday": "Memleɖa",
+       "sun": "Kwa",
        "mon": "Dzo",
-       "tue": "Brã",
+       "tue": "Br",
        "wed": "Kuɖ",
        "thu": "Yaw",
        "fri": "Fiɖ",
@@ -33,7 +44,7 @@
        "february": "Dzodze",
        "march": "Tedoxe",
        "april": "Afɔfiɛ",
-       "may_long": "Damɛ",
+       "may_long": "Dame",
        "june": "Masa",
        "july": "Siamlɔm",
        "august": "Dasiamime",
@@ -45,7 +56,7 @@
        "february-gen": "Dzodze",
        "march-gen": "Tedoxe",
        "april-gen": "Afɔfiɛ",
-       "may-gen": "Damɛ",
+       "may-gen": "Dame",
        "june-gen": "Masa",
        "july-gen": "Siamlɔm",
        "august-gen": "Dasiamime",
@@ -57,7 +68,7 @@
        "feb": "Dzod",
        "mar": "Ted",
        "apr": "Afɔ",
-       "may": "Damɛ",
+       "may": "Dam",
        "jun": "Mas",
        "jul": "Sia",
        "aug": "Das",
@@ -69,7 +80,7 @@
        "february-date": "Dzodze $1",
        "march-date": "Tedoxe $1",
        "april-date": "Afɔfiɛ $1",
-       "may-date": "Damɛ $1",
+       "may-date": "Dame $1",
        "june-date": "Masa $1",
        "july-date": "Siamlɔm $1",
        "august-date": "Dasiamime $1",
        "october-date": "Kele $1",
        "november-date": "Adeɛmekpɔxe $1",
        "december-date": "Dzome $1",
+       "pagecategories": "{{PLURAL:$1|Hatsotso|Hatsotsowo}}",
+       "category_header": "Axa siwo le hatsotso \"$1\"",
+       "hidden-categories": "{{PLURAL:$1||Hatsotso ɣaɣla|Hatsotso ɣaɣla}}",
        "listingcontinuesabbrev": "yi dzi",
-       "about": "Ŋutinya",
+       "about": "Kuɖe Eŋu",
        "newwindow": "(eʋua fesre yeye)",
-       "cancel": "Dzudzɔ etɔtrɔ",
+       "cancel": "Ðe asi le eŋu.",
        "mypage": "Axa nye",
        "mytalk": "Nyeƒe nyamedzroƒe",
        "navigation": "Mɔtabiala",
-       "and": "&#32;kpakple",
-       "qbfind": "Di",
-       "qbbrowse": "To eme",
-       "qbedit": "Trɔ asi le eŋu",
-       "qbpageoptions": "Axa sia",
-       "qbmyoptions": "Nyeƒe axawo",
+       "and": "&#32;kple",
+       "namespaces": "Ŋkɔteƒewo",
+       "variants": "Dzesiŋkɔwo",
+       "navigation-heading": "Nuʋunuwo",
        "errorpagetitle": "Vodada",
-       "returnto": "Gbugbɔ yi $1.",
+       "returnto": "Trɔ yi $1.",
        "tagline": "Tso {{SITENAME}}",
        "help": "Kpekpeɖeŋu",
        "search": "Dii",
        "searchbutton": "Dii",
        "go": "Yi",
        "searcharticle": "Yi",
-       "history": "Axa sia ƒe tata xoxoawo",
-       "history_short": "Xoxoawo",
+       "history": "Axa sia ƒe Ƞutinya",
+       "history_short": "Eŋutinya",
+       "printableversion": "Esi woate ŋu ata",
+       "permalink": "Kadodo liɖaa",
        "view": "Tata",
+       "view-foreign": "Kpɔe le $1",
        "edit": "Trɔ asi le eŋu",
        "create": "Dze egɔme",
-       "editthispage": "Ðɔ axa sia ɖo",
-       "create-this-page": "Dze axa sia gɔme",
-       "delete": "Tutui",
-       "deletethispage": "Tutu axa sia",
-       "protect": "Dzɔ eŋu",
+       "delete": "Tutui ɖa",
+       "protect": "Tre enu.",
        "protect_change": "ɖɔlii",
-       "protectthispage": "Dzɔ axa sia ŋu",
        "newpage": "Axa yeye",
-       "talkpagelinktext": "Nyamedzroƒe",
+       "talkpagelinktext": "Dzeɖoƒe",
        "specialpage": "Axa Tɔxe",
-       "personaltools": "Wòƒe dɔwɔnuwo",
-       "talk": "Nyamedzroƒe",
-       "toolbox": "Dɔwɔnuɖaka",
+       "personaltools": "Wò dɔwɔnuwo",
+       "talk": "Dzeɖoƒe",
+       "views": "Emenuwo",
+       "toolbox": "Dɔwɔnuwo",
        "otherlanguages": "Le gbe bubuwo me",
        "redirectedfrom": "(Woɖo wò ɖe afii tso $1)",
-       "lastmodifiedat": "Wó ɖɔ axa sia ɖo susue le $2 le ŋkeke $1 dzi.",
+       "redirectto": "Trɔe yi:",
+       "lastmodifiedat": "Zi mamlɛtɔ si wotrɔ asi le axa sia ŋue nye $1, ga $2.",
        "viewcount": "Wokpɔ axa sia zi {{PLURAL:$1|ɖeka|$1 sɔ̃}}.",
        "jumpto": "Dzo yi:",
-       "jumptonavigation": "kuɖɔɖoɖo",
+       "jumptonavigation": "Mɔtabiaƒe",
        "jumptosearch": "dii",
-       "aboutsite": "{{SITENAME}} ŋutinya",
-       "aboutpage": "Project:Ŋutinya",
+       "aboutsite": "Kuɖe {{SITENAME}} ŋu",
+       "aboutpage": "Project:Kuɖe eŋu",
        "copyright": "Nusiwo le afii le $1 mɔɖeɖea te.",
        "copyrightpage": "{{ns:project}}:Mɔɖeɖewo",
-       "currentevents": "Amaneɛ",
+       "currentevents": "Nyadzɔdzɔwo",
        "currentevents-url": "Project:Nusiwo le dzɔdzɔm",
        "disclaimers": "Nuxlɔ̃amenyawo",
-       "edithelp": "Kpekpeɖeŋu na etɔtrɔ",
-       "mainpage": "Axa do Ŋgɔ",
-       "mainpage-description": "Axa do ŋgɔ",
+       "disclaimerpage": "Project:Nu si ƒe se mebla mí o",
+       "edithelp": "Kpekpeɖeŋu hena etɔtrɔ",
+       "mainpage": "Axa Gba͂tɔ",
+       "mainpage-description": "Axa Gba͂tɔ",
        "portal": "Takpekpewɔƒe",
        "portal-url": "Project:Takpekpewɔƒe",
-       "badaccess": "Mɔɖeɖe vodada",
-       "badaccess-group0": "Se meɖe mɔ be nawɔ nusi wòle babiam be yeawɔ o.",
+       "privacy": "Ameŋunyatakaka Ŋuti Ɖoɖo",
+       "privacypage": "Project:Ameŋunyatata ŋuti ɖoɖo",
+       "badaccess": "Mɔɖeɖe meli na wò ɖe axa sia dzi o",
+       "badaccess-group0": "Se meɖe mɔ be nawɔ nusi nele babiam be yeawɔ o.",
        "retrievedfrom": "Nuŋɔŋlɔ sia tso \"$1\"",
-       "youhavenewmessages": "$1 le asiwo ($2).",
-       "youhavenewmessagesmulti": "Du yeyewo le asiwo le $1",
+       "youhavenewmessages": "$1 va ɖo ($2).",
+       "youhavenewmessagesmulti": "Du yeyewo vaɖo na wò $1",
        "editsection": "trɔ asi le eŋu",
        "editold": "trɔ asi le eŋu",
-       "viewsourceold": "kpɔ alesi wó ŋlɔe",
+       "viewsourceold": "kpɔ alesi wo ŋlɔe",
        "editlink": "trɔ asi le eŋu",
        "viewsourcelink": "kpɔ alesi woŋlɔe",
        "editsectionhint": "Trɔ akpa: $1",
        "toc": "Emenyawo",
        "showtoc": "fia",
        "hidetoc": "ɣla",
-       "thisisdeleted": "Kpɔ $1 alo wòa gbugbɔe ve hã?",
-       "viewdeleted": "Wòa kpɔ $1 a?",
+       "thisisdeleted": "Kpɔ $1 alo woa gbugbɔ ɖe tsa͂tɔa ɖe go?",
+       "viewdeleted": "Woa kpɔ $1 a?",
+       "site-atom-feed": "Atom nubiabia $1",
        "red-link-title": "$1 (womeŋlɔ axa sia haɖeke o)",
        "nstab-main": "Axa",
-       "nstab-user": "Ezãla axa",
+       "nstab-user": "Ezãla ƒe axa",
        "nstab-special": "Axa tɔxe",
        "nstab-image": "Agbalẽ",
        "nstab-mediawiki": "Du",
+       "mainpage-nstab": "Axa vevitɔ",
        "error": "Vodada",
-       "badarticleerror": "Wòmateŋu awɔ nusia le axa sia dzi o.",
+       "badarticleerror": "Womateŋu awɔ nusia le axa sia dzi o.",
        "cannotdelete": "Womateŋu atutu axa sia alo axa \"$1\" o.\nƉewomahĩ ame aɖe tutui xoxo.",
        "badtitle": "Tanya gbegblẽ",
        "viewsource": "Kpɔ alesi wowɔe",
-       "remembermypassword": "Ɖo ŋku nyeƒe dzesi ŋkɔ dzi le mɔ sia dzi (vaseɖe {{PLURAL:$1|ŋkeke|ŋkeke}} $1 megbe)",
+       "userlogin-yourname": "Ezazãŋkɔ",
+       "userlogin-yourname-ph": "Mɔʋunya",
+       "userlogin-yourpassword": "Mɔʋunya",
+       "userlogin-yourpassword-ph": "Ŋlɔ wò mɔʋunya",
+       "createacct-yourpassword-ph": "Ŋlɔ mɔʋunya",
+       "createacct-yourpasswordagain": "Ɖo kpe mɔʋunyaa dzi",
+       "createacct-yourpasswordagain-ph": "Gaŋlɔ mɔʋunya ake",
+       "userlogin-remembermypassword": "Mígaɖem le eme o",
        "login": "Ge ɖe eme",
-       "nav-login-createaccount": "Geɖe me / Ŋlɔ ŋkɔ",
-       "userlogin": "Ge ɖe eme / ŋlɔ ŋkɔ daɖi",
+       "nav-login-createaccount": "Geɖe me / Ƞlɔ ŋkɔ",
        "logout": "Do le eme",
        "userlogout": "Do le eme",
-       "nologin": "Wòmeŋlɔ ŋkɔ oa? '''$1'''.",
-       "nologinlink": "Ŋlɔ ŋkɔ daɖi",
-       "createaccount": "Ŋlɔ ŋkɔ daɖi",
-       "gotaccount": "Wò ŋlɔ ŋkɔ xoxoa? '''$1'''.",
-       "gotaccountlink": "Ge ɖe eme",
-       "loginsuccesstitle": "Wò ge ɖe eme azɔ̃.",
-       "loginsuccess": "'''Wò le {{SITENAME}} me fifia abe \"$1\" ene.'''",
-       "nouserspecified": "Elebe na ŋlɔ ŋkɔ si wò zãna",
+       "userlogin-noaccount": "Ezazãŋkɔŋɔŋlɔ mele asiwò oa?",
+       "userlogin-joinproject": "Ŋlɔ ŋkɔ ɖe {{SITENAME}}",
+       "createaccount": "Ƞlɔ ŋkɔ daɖi",
+       "userlogin-resetpassword-link": "Èŋlɔ wò mɔʋunyaa bea?",
+       "userlogin-helplink2": "Míkpe ɖe ŋunye mage ɖe eme",
+       "createacct-emailoptional": "Email adrɛs (ne èlɔ̃)",
+       "createacct-email-ph": "Ŋlɔ wò email adrɛs",
+       "createacct-submit": "Kpe wò ezazãŋkɔŋɔŋlɔ ɖo",
+       "createacct-benefit-heading": "Ame siwo le abe wò ene koe trɔ asi le {{SITENAME}} la ŋu.",
+       "createacct-benefit-body1": "{{AGBƆSƆSƆTƆ:$1|edit|edits}}",
+       "createacct-benefit-body2": "{{AGBƆSƆSƆTƆ:$1|page|pages}}",
+       "createacct-benefit-body3": "yeyetɔ {{PLURAL:$1|contributor|contributors}}",
+       "loginsuccesstitle": "Ege ɖe eme azɔ̃.",
+       "loginsuccess": "'''Ele {{SITENAME}} me fifia abe \"$1\" ene.'''",
+       "nouserspecified": "Elebe na ŋlɔ wò dzesideŋkɔ",
+       "passwordtoolong": "Mɔʋunyawo mate ŋu adidi wu {{AGBƆSƆSƆ:$1|nuŋlɔdzesi 1|$1 nuŋlɔdzesiwo}}.",
        "acct_creation_throttle_hit": "Wiki sia zãla aɖe tso wò ''IP address'' ŋlɔ {{PLURAL:$1|1 ŋkɔ|$1 ŋkɔwo}} le ŋkeke si vayi me xoxo. Mɔɖeɖe le na ŋkɔ  ɖeka ko ŋɔŋlɔ le ŋkeke ɖeka me.<br />\nLe esiata la, ''IP address'' sia zãlawo mekpɔ mɔ aŋlɔ ŋkɔ bubuwo fifia o.",
        "loginlanguagelabel": "Gbe: $1",
-       "sig_tip": "Dzesiwò kple gaƒoƒoa",
-       "subject": "Ta nya:",
+       "pt-login": "Ge ɖe eme",
+       "pt-login-button": "Ge Ɖe Eme",
+       "pt-createaccount": "Kpe ezazãŋkɔŋɔŋlɔ ɖo",
+       "pt-userlogout": "Do Le Eme",
+       "passwordreset": "Trɔ mɔʋunyaa",
+       "sig_tip": "Wò asidenute kple gaƒoƒoa",
+       "subject": "Tanya:",
        "minoredit": "Esia nye tɔtrɔ sue aɖe ko",
-       "watchthis": "Le ŋku ɖe axa sia ŋu",
+       "watchthis": "Kpɔ axa sia",
        "savearticle": "Dzra axa sia ɖo",
        "preview": "Kpɔe do ŋgɔ",
        "showpreview": "Fiae do ŋgɔ",
-       "showdiff": "Fia tɔtrɔwo",
+       "showdiff": "Fia tɔtrɔawo",
        "newarticle": "(Yeye)",
-       "newarticletext": "Eva ɖo axa si gɔme womedze haɖeke o. Ne wòadi be yeadze egɔme la, dze nuŋlɔm ɖe go sia me le afi sia ɖome (kpɔ [$1 kpekpeɖeŋu nyawo] na kpekpeɖeŋu bubuwo). Ne wòme ɖoe be yeava afii hafi o la, ekema tia '''megbe''' eye wòa gbugbɔ ayi afisi wòtso va.",
+       "newarticletext": "Eva ɖo axa si gɔme womedze haɖeke o. Ne Nedi be yeadze egɔme la, dze nuŋɔŋlɔ͂ ɖe go sia me le afii (kpɔ [$1 kpekpeɖeŋu nyawo] na kpekpeɖeŋu bubuwo). Ne meɖoe be yeava afisia hafi o la, ekema tia '''megbe''' eye nagbugbɔ ayi afisi netso va.",
        "previewnote": "'''Ɖo ŋku edzi be wole afii fiam do ŋgɔ, wome dzrae ɖo haɖeke o!'''",
        "editing": "$1 na etɔtrɔ",
-       "editingsection": "le $1 (ƒe akpa aɖe) trɔm",
+       "editingsection": "Nele $1 (ƒe akpa aɖe) trɔm",
        "yourtext": "Wò nuŋɔŋlɔ",
        "yourdiff": "Vovototowo",
-       "copyrightwarning": "Taflatse, mítsɔe be nusiwo katã netsɔ kpe ɖe {{SITENAME}} ŋu lii fãa le $2 la nu (kpɔ $1 me nyawo). Ne madze ŋuwò be amebubuwo natrɔ asi le nusiwo newɔ ŋuti o, eye woagbugbɔ dɔsiwo newɔ ama na amebubuwo fãa o la, mega dae ɖe afisia o.<br /> Wòle ŋugbe dom na mí bena wò ŋutɔe ŋlɔ nusiawo, alo etsɔe tso afisi mɔɖeɖe li fãa be amesiame na tsɔ nuwo tso afima fãa. '''Mega da nusiwo ŋu mɔɖeɖe meli na o la ɖe afisia o!'''",
+       "copyrightwarning": "Taflatse, mide dzesi be nusiwo katã mietsɔ kpe ɖe {{SITENAME}} ŋu lii fãa le $2 la nu (kpɔ $1 me nyawo). Ne madze ŋuwò be amebubuwo natrɔ asi le nusiwo neŋlɔ ŋuti o, eye woagbugbɔ dɔsiwo newɔ ama na amebubuwo fãa o la, mega dae ɖe afisia o.<br /> Nele kakaɖedzi nam mí be wò ŋutɔe ŋlɔ nusiawo, alo etsɔe tso afisi mɔɖeɖe li fãa be amesiame na tsɔ nuwo tso fãa. '''Mega da nusiwo ŋu mɔɖeɖe meli o la ɖe afisia o!'''",
+       "templatesused": "wozã {{PLURAL:$1|Template|Templates}} le axa sia:",
        "permissionserrorstext-withaction": "Se meɖe mɔ bena na $2 o, le {{PLURAL:$1|ta|ta}}:",
-       "edit-already-exists": "Wòmateŋu adze axa sia gɔme o.<br />\nWo ŋlɔe xoxo.",
-       "currentrev-asof": "Tata susue le $1 dzi",
+       "edit-already-exists": "Mateŋu adze axa sia gɔme o.<br />\nWoli xoxo.",
+       "currentrev-asof": "Asitɔtrɔ mamlea le $1 dzi",
        "revisionasof": "Tataa le $1",
        "revision-info": "Tataa le $1 si $2 wɔ",
        "previousrevision": "← Tata xoxoa",
        "nextrevision": "Tata yeyea →",
-       "currentrevisionlink": "Tata susuea",
+       "currentrevisionlink": "Tata mamlaɛ",
        "cur": "yeyea",
        "next": "eyome",
-       "last": "mamlea",
+       "last": "si dɔ ŋgɔ",
        "page_first": "gbãtɔ",
        "page_last": "mamlea",
-       "histlegend": "Vovo tatia: de dzesi tata siwo ƒe vovototowo wò di be yea kpɔ ɖa eye na tia 'enter' alo kpe si le eɖome.<br />\nGɔmeɖeɖe: '''({{int:cur}})''' = vovototo tso tata mamlea gbɔ, '''({{int:last}})''' = vovototo tso tata si do ŋgɔ gbɔ, '''{{int:minoreditletter}}''' = tɔtrɔ sue.",
-       "history-show-deleted": "Esiwo wotutu ko",
+       "histlegend": "Titia vovo: de dzesi tata siwo ƒe vovototowo nedi be yea kpɔ ɖa, eye na tia 'enter' alo kpe si le eɖome.<br />\nGɔmeɖeɖe: '''({{int:cur}})''' = vovototo tso tata mamlea gbɔ, '''({{int:last}})''' = vovototo tso tata si do ŋgɔ gbɔ, '''{{int:minoreditletter}}''' = tɔtrɔ suɛ.",
+       "history-show-deleted": "Esiwo wotutu ɖa ko",
        "histfirst": "Xoxoɔwu",
        "histlast": "Yeyeɛwu",
        "history-feed-item-nocomment": "$1 le $2",
-       "history-feed-empty": "Axa si dim wòle meli o.\nDewomahĩ, wotutui le wiki sia dzi alo wotrɔ eƒe ŋkɔ.\nZã [[Special:Search|nuwo didi le wiki sia dzi]] kpɔ na axa yeyeawo.",
+       "history-feed-empty": "Axa si dim nele meli o.\nDewomahĩ, wotutui ɖa le wiki sia dzi alo wotrɔ eƒe ŋkɔ.\nZã [[Special:Search|nuwo didi le wiki sia dzi]] kpɔ na axa yeyeawo.",
        "rev-delundel": "fia/ɣla",
        "rev-showdeleted": "fia",
        "revdelete-radio-same": "(megatrɔe o)",
        "revdelete-radio-set": "Yo",
        "revdelete-radio-unset": "Kpao",
        "history-title": "\"$1\" ƒe tata xoxoawo",
+       "difference-title": "Vovototo siwo le numetoto \"$1\" me",
        "lineno": "Fli $1:",
-       "compareselectedversions": "Kpɔ tata siwo wotia la",
-       "searchresults": "Nusiwo wòdi",
+       "compareselectedversions": "Tsɔ esiwo netia la tsɔ kpli wonɔewo",
+       "editundo": "gbugbɔe",
+       "diff-multi-sameuser": "({{AGBƆSƆSƆTƆ:$1|Ezalãa ƒe numetoto ɖeka|$1 intermediate revisions}} medze o)",
+       "searchresults": "Nusiwo nedi",
        "searchresults-title": "Nusiwo wofɔ le \"$1\" didi me",
-       "notextmatches": "Axa aɖeke ƒe nyawo mesɔ kple nyasiawo o.",
-       "prevn": "{{PLURAL:$1|$1}} do ŋgɔ",
-       "nextn": "{{PLURAL:$1|$1}} yometɔwo",
+       "notextmatches": "Axa aɖeke ƒe nyawo mesɔ kple esiawo o.",
+       "prevn": "{{PLURAL:$1|$1}} esiwo do ŋgɔ",
+       "nextn": "{{PLURAL:$1|$1}} esiwo tii ɖo",
+       "prev-page": "axa doŋgɔ",
+       "next-page": "axa kplɔeɖo",
        "viewprevnext": "Kpɔ ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''Axa si ŋkɔ enye \"[[:$1]]\" le wiki sia dzi'''",
        "searchmenu-new": "'''Dze axa \"[[:$1]]\" sia ŋlɔm ɖe wiki la dzi!'''",
+       "searchprofile-articles": "Edzinuwo ƒe axawo",
+       "searchprofile-images": "Mediahawo",
        "searchprofile-everything": "Nuɖesiaɖe",
+       "searchprofile-advanced": "Deŋgɔtɔ",
        "searchprofile-articles-tooltip": "Dii le $1",
+       "searchprofile-images-tooltip": "Di faelwo",
+       "searchprofile-everything-tooltip": "Di nuwo katã (nyamedzroƒewo hã)",
+       "searchprofile-advanced-tooltip": "Dii le ŋkɔŋlɔƒe tiatia",
        "search-result-size": "$1 ({{PLURAL:$2|nya 1|nya $2}})",
        "search-suggest": "Ɖe wò be: $1",
-       "search-interwiki-more": "(kɔ kpe ɖe eŋu)",
+       "search-interwiki-more": "(Geɖe wu)",
        "searchall": "wokatã",
        "powersearch-toggleall": "Wokatã",
        "preferences": "Didiwo",
        "group-bot": "Bɔtwo",
        "group-sysop": "Dɔdzikpɔlawo",
        "group-all": "(wokatã)",
-       "newuserlogpage": "Ŋkɔŋlɔla yeyewo ƒe xexlẽme",
+       "newuserlogpage": "Ƞkɔŋlɔla yeyeawo ƒe ŋutinya",
        "action-read": "xlẽ axa sia",
        "action-edit": "trɔ asi le axa sia ŋu",
-       "recentchanges": "Tɔtrɔ yeyewo",
+       "enhancedrc-history": "ʋuvayiawo",
+       "recentchanges": "Tɔtrɔ yeyeawo",
        "recentchanges-legend": "Tatiawo na tɔtrɔ yeyewo",
+       "recentchanges-label-newpage": "Tɔtrɔ sia to axa yeye vae",
+       "recentchanges-label-minor": "Tɔtrɔ vi aɖe koe",
+       "recentchanges-label-bot": "Mɔ́a ŋutɔe wɔ tɔtrɔ sia",
        "rcnotefrom": "Tɔtrɔwo siwo wowɔ tso '''$2''' (wofia vaseɖe '''$1''') le afii.",
        "rclistfrom": "Fia tɔtrɔ yeyewo tso $3 $2",
        "rcshowhideminor": "$1 tɔtrɔ suewo",
+       "rcshowhideminor-show": "Nedze",
+       "rcshowhideminor-hide": "Neɣla",
        "rcshowhidebots": "$1 bɔtwo",
+       "rcshowhidebots-show": "Nedze",
        "rcshowhideliu": "$1 ezãla siwo ŋlɔ ŋkɔ",
+       "rcshowhideliu-hide": "Neɣla",
        "rcshowhideanons": "$1 ŋkɔ maŋlɔlawo",
-       "rcshowhidemine": "$1 nyeƒe tɔtrɔwo",
+       "rcshowhideanons-show": "Nedze",
+       "rcshowhideanons-hide": "Neɣla",
+       "rcshowhidemine": "$1 nye tɔtrɔwo",
+       "rcshowhidemine-show": "Nedze",
+       "rcshowhidemine-hide": "Neɣla",
        "rclinks": "Fia tɔtrɔ $1 mamleawo le ŋkeke $2 siwo vayi me",
        "diff": "tɔtrɔ",
        "hist": "xoxo",
        "show": "Fia",
        "minoreditletter": "s",
        "newpageletter": "Y",
+       "boteditletter": "b",
+       "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} le etɔtrɔ megbe",
        "recentchangeslinked": "Tɔtrɔ siwo kaa afii",
        "recentchangeslinked-feed": "Tɔtrɔ siwo kaa afii",
        "recentchangeslinked-toolbox": "Tɔtrɔ siwo kaa afii",
        "recentchangeslinked-title": "Tɔtrɔ siwo ku ɖe \"$1\" ŋu",
+       "recentchangeslinked-summary": "Esiae nye tɔtrɔ siwo wowɔ le kadodo siwo woʋu tso axa aɖe koŋ (alo axawo ƒe hatsotso aɖe).\nWoŋlɔ axa siwo le [[Special:Watchlist|your watchlist]] dzi nuwo kple <strong> nuŋɔŋlɔ tòto</strong>.",
        "recentchangeslinked-page": "Axaa ƒe ŋkɔ",
        "upload": "Ɖo agbalẽ ɖa",
        "uploadbtn": "Ɖo agbalẽ ɖa",
+       "imgfile": "fael",
        "file-anchor-link": "Agbalẽ",
        "filehist": "Axa sia ƒe tata xoxoawo",
        "filehist-help": "Tia ŋkeke/gaƒoƒo ɖeka ne wòadi be yea kpɔ axa sia ƒe tata le ɣemaɣi",
        "filehist-deleteone": "tutui",
        "filehist-datetime": "Ŋkeke/Gaƒoƒo",
        "filehist-user": "Ezãla",
+       "imagelinks": "Nyatakagbaa zazã",
        "linkstoimage": "Axa {{PLURAL:$1|sia|$1 siawo}} ku ɖe agbalẽ sia ŋu.",
+       "nolinkstoimage": "Axa aɖeke medo ka kple fael sia o.",
        "sharedupload": "Agbalɛ̃ sia tso $1 eye dɔ (''alo project'') bubuawo woateŋu azãe fãa.",
+       "sharedupload-desc-here": "Nyatakagba sia tso $1 eye ɖoɖo bubuwo hã anya nɔ ezãm.\nEŋutinyatakakawo dze [$2 nyatakagba ŋuti nya] le ete.",
+       "upload-disallowed-here": "Màte ŋu atutu fael sia o.",
        "filedelete-submit": "Tutui",
        "mimesearch": "MIME me didi",
        "randompage": "Axaa ɖe ko",
        "randompage-nopages": "Axa aɖeke mele \"$1\" o.",
+       "randomincategory-submit": "Yi",
        "statistics": "Akɔntawo",
        "brokenredirects-edit": "trɔ asi le eŋu",
        "brokenredirects-delete": "tutui",
        "fewestrevisions": "Axawo siwo womeɖɔɖo zã o",
+       "nbytes": "$1 {{PLURAL:$1|bite|bitewo}}",
        "wantedpages": "Axawo siwo le hahĩam",
        "mostrevisions": "Axawo siwo woɖɔɖo wu",
        "shortpages": "Axa kpuiwo",
        "pager-older-n": "{{PLURAL:$1|1 xoxoa|$1 xoxoawo}}",
        "booksources": "Agbalɛ̃wo ƒe tsoƒe",
        "booksources-search-legend": "Di agbalẽwo ƒe tsoƒewo",
+       "booksources-search": "Di",
        "specialloguserlabel": "Ezãla:",
        "speciallogtitlelabel": "Ta nya:",
        "allpages": "Axawo katã",
        "delete-confirm": "Tutu \"$1\"",
        "delete-legend": "Tutui",
        "actioncomplete": "Wowɔe vɔ",
+       "dellogpage": "Tutu nu ʋuʋuawo",
        "dellogpagetext": "Afisia wofia axa mamleawo siwo wotutu la",
+       "rollbacklink": "gbugbɔ tɔtrɔa",
        "prot_1movedto2": "[[$1]] wohee yi [[$2]]",
        "protect-default": "Namɔ ezãlawo katã",
        "protect-level-autoconfirmed": "Xemɔ na ame yeyewo kple ŋkɔmaŋlɔlawo",
        "undeleteviewlink": "kpɔe",
        "undelete-search-submit": "Dii",
        "undelete-show-file-submit": "Yo",
+       "namespace": "Ŋkɔŋlɔƒe",
        "invert": "Trɔ tatiawo tu",
-       "contributions": "Ezãla ƒe nuŋɔŋlɔwo",
+       "blanknamespace": "(Vevitɔ)",
+       "contributions": "{{ŊUTSU/NYƆNU:$1|Ezãla}} ƒe asikpeɖeŋuwo",
        "contributions-title": "$1 ƒe nuŋɔŋlɔwo",
        "mycontris": "Nyeƒe nuŋɔŋlɔwo",
        "contribsub2": "Na $1 ($2)",
-       "uctop": "(tametɔ)",
+       "uctop": "tametɔ",
        "month": "Tso ɣleti (kple do ŋgɔ):",
        "year": "Tso ƒe (kple do ŋgɔ):",
        "sp-contributions-newbies": "Fia ŋkɔŋlɔla yeyewo ƒe ɖɔɖɔɖowo ko.",
        "whatlinkshere": "Nusiwo kaa afii ŋu",
        "whatlinkshere-title": "Axawo siwo ku ɖe \"$1\" ŋu",
        "whatlinkshere-page": "Axa:",
-       "linkshere": "Axa siwo le afisia ku ɖe '''[[:$1]]''' ŋu:",
-       "nolinkshere": "Axa aɖeke meku ɖe '''[[:$1]]''' ŋu o.",
+       "linkshere": "Axa siwo le afisia ku ɖe '''$2''' ŋu:",
+       "nolinkshere": "Axa aɖeke meku ɖe '''$2''' ŋu o.",
+       "isredirect": "trɔ axa yi afi bubu",
+       "isimage": "fael ƒe kadodo",
        "whatlinkshere-prev": "{{PLURAL:$1|do ŋgɔ|$1 do ŋgɔ}}",
        "whatlinkshere-next": "{{PLURAL:$1|eyome|$1 eyome}}",
+       "whatlinkshere-links": "← kadodowo",
        "blockip": "Xe mɔ na ezãla sia",
-       "blockip-legend": "Xe mɔ na ezãla sia",
-       "ipbexpiry": "Nuwuwu:",
        "ipboptions": "gaƒoƒo 2:2 hours,ŋkeke 1:1 day,ŋkeke 3:3 days,kɔsiɖa 1:1 week,kɔsiɖa 2:2 weeks,ɣleti 1:1 month,ɣleti 3:3 months,ɣleti 6:6 months,ƒe 1:1 year,tegbe:infinite",
        "blockipsuccesssub": "Mɔxexea dze edzi",
        "ipb-unblock-addr": "Ɖe $1 ƒe mɔxexe ɖa",
        "ipb-blocklist": "Kpɔ mɔxexe siwo li xoxo",
        "ipb-blocklist-contribs": "$1 ƒe nuŋɔŋlɔwo",
+       "block-expiry": "Nuwuwu:",
        "ipusubmit": "Ɖe mɔxexe sia ɖa",
        "ipblocklist-submit": "Dii",
        "infiniteblock": "tegbee",
        "blocklogentry": "xemɔ na [[$1]] vaseɖe $2 megbe $3",
        "block-log-flags-nocreate": "wo xemɔ na ŋkɔ ŋɔŋlɔ",
        "move-page-legend": "Ɖɔli eƒe nɔƒe",
-       "movearticle": "Ɖɔli eƒe nɔƒe:",
        "newtitle": "Yi ɖe tanya yeye la:",
        "move-watch": "Le ŋku ɖe axa sia ŋu",
        "movepagebtn": "Ɖɔli eƒe nɔƒe",
        "movepage-moved": "'''Wohe \"$1\" vayi \"$2\"'''",
        "articleexists": "Tanya alo ŋkɔ sia nye axa bubu aɖe tɔ xoxo, alo eda se dzi.\nTia ŋkɔ alo tanya bubu.",
        "cantmove-titleprotected": "Wòmateŋu ahe axa aɖeke va afii o, elabena wo xemɔ na tanya sia ƒe ŋɔŋlɔ",
+       "movelogpage": "Ɖe nu ʋuʋuawo dzoe",
        "export": "Ɖo axa siawo ɖa",
        "allmessages": "Gbeƒãɖeɖewo",
        "allmessages-filter-all": "Wokatã",
        "tooltip-pt-mycontris": "Wò nuŋɔŋlɔwo ƒe xexlẽme",
        "tooltip-pt-login": "Togbɔ be menye ɖe wò hĩa o tse la, mía ve nuwò bena na ŋlɔ ŋkɔ",
        "tooltip-pt-logout": "Do le eme",
-       "tooltip-ca-edit": "Wòateŋu aɖɔ axa sia ɖo.\nNe ewɔvɔ la, tia \"Fiae do ŋgɔ\" kpea gbã hafi na dzrae ɖo.",
+       "tooltip-pt-createaccount": "Míedi dzi ƒo na wò be nàkpe ezazãŋkɔŋɔŋlɔ yeye ɖo eye nàge ɖe eme; ke hã, mehiã godoo o",
+       "tooltip-ca-talk": "Nyamedzodzro tso edzinuwo ƒe axa ŋu",
+       "tooltip-ca-edit": "Trɔ asi le axa sia ŋu",
        "tooltip-ca-addsection": "Dze akpa yeye gɔme",
        "tooltip-ca-viewsource": "Wo dokpɔ ɖe axa sia ŋu.\nWòateŋu akpɔ alesi woŋlɔe.",
        "tooltip-ca-history": "Axa sia ƒe tata xoxoawo",
        "tooltip-ca-protect": "Dzɔ axa sia ŋu",
        "tooltip-ca-delete": "Tutu axa sia",
        "tooltip-ca-move": "Ɖɔli axa sia ƒe nɔƒe",
+       "tooltip-ca-watch": "Dzra axa sia ɖo ɖe wò axadadzraɖoƒe",
        "tooltip-search": "Dii {{SITENAME}}",
        "tooltip-search-go": "Yi axa si ƒe ŋkɔ enye esia ne woŋlɔe xoxo",
        "tooltip-search-fulltext": "Di nyasiawo le axawo me.",
+       "tooltip-p-logo": "Yi axa vevitɔ",
        "tooltip-n-mainpage": "Yi axa si do ŋgɔ",
        "tooltip-n-mainpage-description": "Yi axa si do ŋgɔ",
+       "tooltip-n-portal": "Nu siwo tso dɔwɔna la ŋu, nu siwo nàte ŋu awɔ, afi siwo nàte ŋu akpɔ nuawo le",
+       "tooltip-n-currentevents": "Kpɔ nu siwo le dzɔdzɔm fifia ŋuti nyatakakawo",
        "tooltip-n-recentchanges": "Tɔtrɔ yeyewo le wiki sia me.",
        "tooltip-n-randompage": "Kpɔ axa ɖesiaɖe ko",
        "tooltip-n-help": "Nuwo srɔ̃ƒe",
        "tooltip-t-contributions": "Kpɔ nusiwo amesia ŋlɔ",
        "tooltip-t-upload": "Ɖo nutatawo kple nuƒoƒowo ɖa",
        "tooltip-t-specialpages": "Axa tɔxewo ƒe xexlẽme",
+       "tooltip-t-print": "Axa ƒomevi si woate ŋu ata",
+       "tooltip-t-permalink": "Asitɔtrɔ si wowɔ le axa sia ƒe kadodo liɖaa",
        "tooltip-ca-nstab-main": "Kpɔ axa si tanyawo le",
-       "tooltip-ca-nstab-special": "Axa sia nye axa tɔxe.  Wò mateŋu atrɔ nu aɖeke le edzi o.",
+       "tooltip-ca-nstab-special": "Esia nye axa tɔxɛ, eye womate ŋu atrɔe o",
+       "tooltip-ca-nstab-image": "Kpɔ fael la ƒe axa",
        "tooltip-minoredit": "Esia nye tɔtrɔ sue aɖe ko",
        "tooltip-save": "Dzra wòƒe tɔtrɔwo ɖo",
        "tooltip-preview": "Kpɔ wò ɖɔɖɔɖowo do ŋgɔ, mía ve nuwo bena na zãe hafi na dzrae ɖo!",
        "tooltip-diff": "Fia tɔtrɔ siwo newɔ le nuŋɔŋlɔa me",
        "tooltip-compareselectedversions": "Kpɔ vovototwo le axa sia ƒe tata eve siwo wotia la me",
+       "tooltip-summary": "Ŋlɔ numeɖeɖe kpui aɖe",
+       "simpleantispam-label": "Ŋkuléle ɖe Anti-spam ŋu.\nŊlɔ esia <strong> ɖe eme ke menye esia </strong> o!",
+       "pageinfo-subpages-name": "Axa sia ƒe axamexɛwo ƒe xexlẽme",
+       "pageinfo-magic-words": "Madziki {{GBƆSƆSƆTƆ:$1|nya|nyawo}} ($1)",
+       "pageinfo-toolboxlink": "Axaa ŋuti nyatakaka",
        "previousdiff": "← Tata xoxoa",
        "nextdiff": "Tɔtrɔ yeyea →",
+       "file-nohires": "Kɔ̀kɔme si de ŋgɔ wu meli o.",
+       "show-big-image-size": "$1 × $2 pixelwo",
        "newimages": "Nutata yeyewo",
        "ilsubmit": "Dii",
        "namespacesall": "wokatã",
        "version": "Tata",
        "fileduplicatesearch-submit": "Dii",
        "specialpages": "Axa tɔxewo",
+       "tag-list-wrapper": "[[Tɔxɛ: Desidenyawo|{{PLURAL:$1|Desidenya|Desidenyawo}}]]: $2",
        "tags-edit": "trɔ asi le eŋu",
+       "logentry-move-move": "$1 {{ŊUTSU/NYƆNU:$2|moved}} axa $3 yi $4",
+       "logentry-newusers-create": "Ezazãŋkɔ $1 la {{AMENYENYE:$2|wɔ vɔ}}",
+       "logentry-upload-upload": "Nedze",
+       "searchsuggest-search": "Di {{SITEŊKƆ}}",
        "expand_templates_preview": "Kpɔe do ŋgɔ"
 }
index 85b991b..f8acd19 100644 (file)
        "titlematches": "Τίτλοι άρθρων που ανταποκρίνονται",
        "textmatches": "Κείμενα σελίδων που ανταποκρίνονται:",
        "notextmatches": "Δεν υπάρχουν αντίστοιχα κείμενα σελίδων.",
-       "prevn": "{{PLURAL:$1|$1}} προηγουμένων",
-       "nextn": "{{PLURAL:$1|$1}} επόμενων",
+       "prevn": "$1 {{PLURAL:$1|προηγούμενου|προηγουμένων}}",
+       "nextn": "$1 {{PLURAL:$1|επόμενου|επόμενων}}",
        "prev-page": "προηγούμενη σελίδα",
        "next-page": "επόμενη σελίδα",
        "prevn-title": "{{PLURAL:$1|Προηγούμενο $1 αποτέλεσμα|Προηγούμενα $1 αποτελέσματα}}",
index 36d6ca0..2b43dab 100644 (file)
        "rcfilters-savedqueries-already-saved": "These filters are already saved. Change your settings to create a new Saved Filter.",
        "rcfilters-restore-default-filters": "Restore default filters",
        "rcfilters-clear-all-filters": "Clear all filters",
-       "rcfilters-show-new-changes": "View newest changes",
+       "rcfilters-show-new-changes": "View new changes since $1",
        "rcfilters-search-placeholder": "Filter changes (use menu or search for filter name)",
        "rcfilters-invalid-filter": "Invalid filter",
        "rcfilters-empty-filter": "No active filters. All contributions are shown.",
        "log-action-filter-newusers-create": "Creation by anonymous user",
        "log-action-filter-newusers-create2": "Creation by registered user",
        "log-action-filter-newusers-autocreate": "Automatic creation",
-       "log-action-filter-newusers-byemail": "Creation with password sent by e-mail",
+       "log-action-filter-newusers-byemail": "Creation with password sent by email",
        "log-action-filter-patrol-patrol": "Manual patrol",
        "log-action-filter-patrol-autopatrol": "Automatic patrol",
        "log-action-filter-protect-protect": "Protection",
index 5078817..ea8dfff 100644 (file)
                        "Carlosmg.dg",
                        "Mynor Archila",
                        "Jorge Ubilla",
-                       "Marcelo9987"
+                       "Marcelo9987",
+                       "Cuatro Remos"
                ]
        },
        "tog-underline": "Enlaces a subrayar:",
        "mycontris": "Contribuciones",
        "anoncontribs": "Contribuciones",
        "contribsub2": "Para {{GENDER:$3|$1}} ($2)",
-       "contributions-subtitle": "Para {{GENDER:$3|$1}} ($2)",
+       "contributions-subtitle": "Para {{GENDER:$3|$1}}",
        "contributions-userdoesnotexist": "La cuenta de usuario «$1» no está registrada.",
        "negative-namespace-not-supported": "Los espacios de nombres con valores negativos no están permitidos",
        "nocontribs": "No se encontraron cambios que cumplieran estos criterios.",
index 53e0389..f09c093 100644 (file)
        "exif-compression-32773": "PackBits (Macintosh RLE)",
        "exif-compression-32946": "Deflate (PKZIP)",
        "exif-compression-34712": "JPEG2000",
-       "exif-copyrighted-true": "Heqê telifiye",
+       "exif-copyrighted-true": "Heqa telifi",
        "exif-copyrighted-false": "Telifiya waziyeta eyara",
        "exif-photometricinterpretation-0": "Siya u Sıpe (Sıpe 0 o)",
        "exif-photometricinterpretation-1": "Siya u sıpê (Siya 0)",
index b046b83..65b19c0 100644 (file)
        "blocklist-userblocks": "پنهان کردن بسته‌شدن‌های حساب",
        "blocklist-tempblocks": "پنهان کردن بستن‌های موقت",
        "blocklist-addressblocks": "پنهان کردن تک آی‌پی‌های بسته شده",
+       "blocklist-type": "نوع:",
+       "blocklist-type-opt-all": "همه",
+       "blocklist-type-opt-partial": "جزئی",
        "blocklist-rangeblocks": "پنهان کردن قطع دسترسی بازه‌ها",
        "blocklist-timestamp": "برچسب زمان",
        "blocklist-target": "هدف",
        "blocklist-editing-page": "صفحات",
        "blocklist-editing-ns": "فضاهای نام",
        "ipblocklist-empty": "فهرست بسته‌شدن‌ها خالی‌است.",
-       "ipblocklist-no-results": "دسترسی حساب کاربری یا نشانی آی‌پی مورد نظر قطع نیست.",
+       "ipblocklist-no-results": "دسترسی حساب کاربری یا نشانی آی‌پی موردنظر، قطع نیست.",
        "blocklink": "بستن",
        "unblocklink": "باز شود",
        "change-blocklink": "تغییر قطع دسترسی",
index 322d72b..821a630 100644 (file)
        "tog-norollbackdiff": "Älä näytä eroavaisuuksia, kun olet palauttanut muokkauksen palauta-työkalulla",
        "tog-useeditwarning": "Varoita minua, kun poistun muokkaussivulta tallentamatta muutoksia",
        "tog-prefershttps": "Käytä aina suojattua yhteyttä, kun olet kirjautunut sisään",
+       "tog-showrollbackconfirmation": "Näytä vahvistuspyyntö, kun palauta-linkkiä klikataan.",
        "underline-always": "Aina",
        "underline-never": "Ei koskaan",
        "underline-default": "Ulkoasun tai selaimen oletustapa",
        "action-deletechangetags": "poistaa merkkauksia tietokannasta",
        "action-purge": "päivittää tämän sivun välimuistia",
        "action-apihighlimits": "käyttää korkeampia rajoja API-kyselyissä",
+       "action-autoconfirmed": "ohittaa IP-pohjaisia nopeusrajoituksia",
        "action-bigdelete": "poistaa sivuja, joilla on pitkä historia",
        "action-blockemail": "estää käyttäjää lähettämästä sähköpostia",
        "action-editprotected": "muokata sivuja, jotka on suojattu tasolle ”{{int:protect-level-sysop}}”",
        "action-editsemiprotected": "muokata sivuja, jotka on suojattu tasolle ”{{int:protect-level-autoconfirmed}}”",
+       "action-editinterface": "muokata käyttöliittymää",
        "action-editusercss": "muokata toisten käyttäjien CSS-tiedostoja",
        "action-edituserjson": "muokata toisten käyttäjien JSON-tiedostoja",
        "action-edituserjs": "muokata toisten käyttäjien JavaScript-tiedostoja",
        "ipb-confirm": "Vahvista esto",
        "ipb-sitewide": "Sivuston laajuinen",
        "ipb-partial": "Osittainen",
+       "ipb-partial-help": "Tietyt sivut tai nimiavaruudet.",
        "ipb-pages-label": "Sivut",
        "ipb-namespaces-label": "Nimiavaruudet",
        "badipaddress": "IP-osoite on väärin muotoiltu.",
        "blocklist-userblocks": "Piilota tunnusten estot",
        "blocklist-tempblocks": "Piilota väliaikaiset estot",
        "blocklist-addressblocks": "Piilota yksittäiset IP-estot",
+       "blocklist-type": "Tyyppi:",
+       "blocklist-type-opt-all": "Kaikki",
+       "blocklist-type-opt-sitewide": "Sivuston laajuiset",
+       "blocklist-type-opt-partial": "Osittaiset",
        "blocklist-rangeblocks": "Piilota avaruusestot",
        "blocklist-timestamp": "Päiväys",
        "blocklist-target": "Kohde",
index 0b1d943..b0724b3 100644 (file)
        "action-unblockself": "vous débloquer vous-même",
        "action-noratelimit": "ne pas être impacté par les limites de taux",
        "action-reupload-own": "écraser les fichiers existants que vous avez vous-même téléversés",
-       "action-nominornewtalk": "ne pas déclencher la notification de nouveau message lors d’une modification mineure sur une pages de discussion",
+       "action-nominornewtalk": "ne pas déclencher la notification de nouveaux messages lors de modifications mineures sur les pages de discussion",
        "action-markbotedits": "marquer des modifications révoquées comme ayant été faites par un robot",
        "action-patrolmarks": "voir les indications de relecture dans les modifications récentes",
        "action-override-export-depth": "exporter les pages en incluant les pages liées jusqu’à une profondeur de 5 niveaux",
-       "action-suppressredirect": "ne pas créer de redirection depuis le titre d’origine en renommant les pages",
+       "action-suppressredirect": "ne pas créer de redirections depuis les pages sources lors du renommage",
        "nchanges": "$1 modification{{PLURAL:$1||s}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|depuis la dernière visite}}",
        "enhancedrc-history": "historique",
        "rcfilters-savedqueries-already-saved": "Ces filtres sont déjà enregistrés. Modifiez vos paramètres pour créer un nouveau Filtre enregistré.",
        "rcfilters-restore-default-filters": "Rétablir les filtres par défaut",
        "rcfilters-clear-all-filters": "Effacer tous les filtres",
-       "rcfilters-show-new-changes": "Afficher les modifications les plus récentes",
+       "rcfilters-show-new-changes": "Afficher les nouvelles modifications depuis $1",
        "rcfilters-search-placeholder": "Filtrer les modifications (utiliser le menu ou rechercher le nom d'un filtre)",
        "rcfilters-invalid-filter": "Filtre non valide",
        "rcfilters-empty-filter": "Aucun filtre actif. Toutes les contributions sont affichées.",
        "blocklist-userblocks": "Masquer les blocages de comptes",
        "blocklist-tempblocks": "Masquer les blocages temporaires",
        "blocklist-addressblocks": "Masquer les blocages d’adresses IP uniques",
+       "blocklist-type": "Type :",
+       "blocklist-type-opt-all": "Tous",
+       "blocklist-type-opt-sitewide": "Site entier",
+       "blocklist-type-opt-partial": "Partiel",
        "blocklist-rangeblocks": "Masquer les blocages sur intervalles",
        "blocklist-timestamp": "Date et heure",
        "blocklist-target": "Cible",
        "blocklist-editing-page": "pages",
        "blocklist-editing-ns": "espaces de noms",
        "ipblocklist-empty": "La liste des adresses IP bloquées est actuellement vide.",
-       "ipblocklist-no-results": "L'adresse IP ou l'utilisateur demandé n'est pas bloqué.",
+       "ipblocklist-no-results": "Aucun bloc correspondant trouvé pour l'adresse IP ou le nom d'utilisateur demandé.",
        "blocklink": "bloquer",
        "unblocklink": "débloquer",
        "change-blocklink": "modifier le blocage",
index 612276b..458a7f8 100644 (file)
        "watchlistedit-normal-title": "Folchlist bewurkje",
        "watchlistedit-normal-submit": "Siden wiskje",
        "watchlistedit-raw-titles": "Siden:",
-       "watchlistedit-raw-submit": "Folchlist bewurkje",
+       "watchlistedit-raw-submit": "Folchlist bywurkje",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 side is|$1 siden binne}} tafoege:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 side|$1 siden}} wiske:",
        "watchlistedit-clear-titles": "Titels:",
        "blankpage": "Side is leech",
        "intentionallyblankpage": "Dizze side is bewust leech lizzen en wurdt brûkt foar benchmarks, ensfh.",
        "tag-list-wrapper": "[[Special:Tags|{{PLURAL:$1|Lebel|Lebels}}]]: $2",
+       "tag-mw-contentmodelchange": "ynhâldsmodel wizige",
+       "tag-mw-contentmodelchange-description": "Bewurkings dy't it [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel ynhâldsmodel fan 'e side wizigje]",
        "tag-mw-new-redirect": "Nije trochferwizing",
+       "tag-mw-new-redirect-description": "Bewurkings dy't in nije trochferwizing meitsje, as in side yn in trochferwizing feroarje",
        "tag-mw-removed-redirect": "Trochferwizing wiske",
+       "tag-mw-removed-redirect-description": "Bewurkings dy't in besteande trochferwizing yn gjin trochferwizing feroarje",
        "tag-mw-changed-redirect-target": "Trochferwizingsdoel feroare",
        "tag-mw-changed-redirect-target-description": "Bewurkings dy't it einpunt fan in trochferwizing feroarje",
-       "tag-mw-blank": "Leech meitsjen",
+       "tag-mw-blank": "Leechmeitsjen",
+       "tag-mw-blank-description": "Bewurkings dy't siden leechmeitsje",
        "tag-mw-replace": "Ferfongen",
+       "tag-mw-replace-description": "Bewurkings dy't mear as 90% fan 'e sideynhâld wiskje",
        "tag-mw-rollback": "Weromdraaid",
-       "tag-mw-rollback-description": "Bewurkings mei de keppeling 'weromdraaie', dy't foargeande wizigings ûngedien makke hawwe",
-       "tag-mw-undo": "Ungedien meitsjen",
+       "tag-mw-rollback-description": "Bewurkings mei de keppeling 'weromdraaie', dy't foargeande wizigings weromdraaid hawwe",
+       "tag-mw-undo": "Weromset",
+       "tag-mw-undo-description": "Bewurkings mei de keppeling 'weromsette', dy't foargeande wizigings weromset hawwe",
        "tags-title": "Lebels",
        "tags-intro": "Op dizze side steane de lebels en har betsjutting, wêrmei't de programmatuer bewurkings markearje kin.",
        "tags-tag": "Lebelnamme",
index 714b106..3cb7cb9 100644 (file)
        "right-upload_by_url": "העלאת קבצים מכתובת אינטרנט (URL)",
        "right-purge": "ניקוי זיכרון המטמון של דף",
        "right-autoconfirmed": "עקיפת ההגבלה על קצב הפעולות שניתן לבצע מכתובת IP מסוימת",
-       "right-bot": "×\94ת×\99×\99×\97ס×\95ת ×\9cער×\99×\9b×\95ת ×\9b×\90×\95×\98×\95×\9e×\98×\99×\95ת",
+       "right-bot": "ק×\91×\9cת ×\94ת×\99×\99×\97ס×\95ת ×\9bת×\94×\9c×\99×\9a ×\90×\95×\98×\95×\9e×\98×\99",
        "right-nominornewtalk": "ביטול שליחת התראה על הודעה חדשה למשתמש בעת עריכה משנית בדף השיחה שלו",
        "right-apihighlimits": "שימוש ב־API עם פחות הגבלות",
        "right-writeapi": "שימוש ב־API לשינוי דפים",
        "right-blockemail": "חסימת משתמשים משליחת דואר אלקטרוני",
        "right-hideuser": "חסימת שם משתמש תוך הסתרתו מהציבור",
        "right-ipblock-exempt": "עקיפת חסימות של כתובות IP, חסימות אוטומטיות וחסימות טווחים",
-       "right-unblockself": "ש×\97ר×\95ר ×\97ס×\99×\9e×\94 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95",
+       "right-unblockself": "ש×\97ר×\95ר ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95 ×\9e×\97ס×\99×\9e×\94",
        "right-protect": "שינוי רמות הגנה של דפים ועריכת דפים המוגנים בהגנה מדורגת",
        "right-editprotected": "עריכת דפים המוגנים ברמת ההגנה \"{{int:protect-level-sysop}}\"",
        "right-editsemiprotected": "עריכת דפים המוגנים ברמת ההגנה \"{{int:protect-level-autoconfirmed}}\"",
        "right-editmyprivateinfo": "עריכת המידע הפרטי של המשתמש עצמו (כגון: כתובת דוא\"ל, שם אמיתי)",
        "right-editmyoptions": "עריכת ההעדפות של המשתמש עצמו",
        "right-rollback": "שחזור מהיר של העריכות שנעשו על־ידי העורך האחרון בדפים",
-       "right-markbotedits": "ס×\99×\9e×\95×\9f ×¢×¨×\99×\9b×\95ת ×\9eש×\95×\97×\96ר×\95ת ×\9bעריכות של בוט",
+       "right-markbotedits": "ס×\99×\9e×\95×\9f ×¢×¨×\99×\9b×\95ת ×©×©×\95×\97×\96ר×\95 ×\91ת×\95ר עריכות של בוט",
        "right-noratelimit": "עקיפת ההגבלה על קצב הפעולות",
        "right-import": "ייבוא דפים מאתרי ויקי אחרים",
        "right-importupload": "ייבוא דפים באמצעות העלאת קבצים",
        "action-changetags": "להוסיף או להסיר תגיות מגרסאות ומרשומות יומן",
        "action-deletechangetags": "למחוק תגיות מבסיס הנתונים",
        "action-purge": "לנקות את זיכרון המטמון של דף זה",
-       "action-apihighlimits": "להשתמש בהגבלות גבוהות יותר בשאילתות API",
-       "action-autoconfirmed": "×\9c×\90 ×\9c×\94×\99×\95ת ×ª×\97ת ×\94שפעת ×\94×\92×\91×\9c×\95ת ×§×¦×\91 ×\9e×\91×\95סס×\95ת IP",
-       "action-bigdelete": "×\9c×\9e×\97×\95ק ×\93פ×\99×\9d ×¢×\9d ×\94×\99ס×\98×\95ר×\99×\95ת ×\92×\93×\95×\9cות",
-       "action-blockemail": "לחסום משתמש מפני שליחת דור אלקטרוני",
-       "action-bot": "×\9cק×\91×\9c ×\98×\99פ×\95×\9c ×©×\9c תהליך אוטומטי",
-       "action-editprotected": "×\9cער×\95×\9a ×\93פ×\99×\9d ×©×\9e×\95×\92× ×\99×\9d ×¢×\9d \"{{int:protect-level-sysop}}\"",
-       "action-editsemiprotected": "×\9cער×\95×\9a ×\93פ×\99×\9d ×©×\9e×\95×\92× ×\99×\9d ×¢×\9d \"{{int:protect-level-autoconfirmed}}\"",
+       "action-apihighlimits": "להשתמש ב־API עם פחות הגבלות",
+       "action-autoconfirmed": "×\9cעק×\95×£ ×\90ת ×\94×\94×\92×\91×\9c×\94 ×¢×\9c ×§×¦×\91 ×\94פע×\95×\9c×\95ת ×©× ×\99ת×\9f ×\9c×\91צע ×\9e×\9bת×\95×\91ת IP ×\9eס×\95×\99×\9eת",
+       "action-bigdelete": "×\9c×\9e×\97×\95ק ×\93פ×\99×\9d ×\94×\9e×\9b×\99×\9c×\99×\9d ×\9b×\9e×\95ת ×\92×\93×\95×\9c×\94 ×©×\9c ×¢×¨×\99×\9b×\95ת ×\91×\94×\99ס×\98×\95ר×\99×\99ת ×\94×\92רס×\90ות",
+       "action-blockemail": "לחסום משתמשים משליחת דואר אלקטרוני",
+       "action-bot": "×\9cק×\91×\9c ×\94ת×\99×\99×\97ס×\95ת ×\9bתהליך אוטומטי",
+       "action-editprotected": "×\9cער×\95×\9a ×\93פ×\99×\9d ×\94×\9e×\95×\92× ×\99×\9d ×\91ר×\9eת ×\94×\94×\92× ×\94 \"{{int:protect-level-sysop}}\"",
+       "action-editsemiprotected": "×\9cער×\95×\9a ×\93פ×\99×\9d ×\94×\9e×\95×\92× ×\99×\9d ×\91ר×\9eת ×\94×\94×\92× ×\94 \"{{int:protect-level-autoconfirmed}}\"",
        "action-editinterface": "לערוך את ממשק המשתמש",
        "action-editusercss": "לערוך קובצי CSS של משתמשים אחרים",
        "action-edituserjson": "לערוך קובצי JSON של משתמשים אחרים",
        "action-edituserjs": "לערוך קובצי JavaSript של משתמשים אחרים",
-       "action-editsitecss": "לערוך CSS שחל על כל האתר",
-       "action-editsitejson": "לערוך JSON שחל על כל האתר",
-       "action-editsitejs": "לערוך JavaScript שחל על כל האתר",
+       "action-editsitecss": "לערוך קובצי CSS של האתר כולו",
+       "action-editsitejson": "לערוך קובצי JSON של האתר כולו",
+       "action-editsitejs": "לערוך קובצי JavaScript של האתר כולו",
        "action-editmyusercss": "לערוך קובצי CSS של עצמך",
        "action-editmyuserjson": "לערוך קובצי JSON של עצמך",
        "action-editmyuserjs": "לערוך קובצי JavaScript של עצמך",
-       "action-viewsuppressed": "×\9c×\94צ×\99×\92 ×\92רס×\90×\95ת ×©×\9e×\95סתר×\95ת ×\9e×\9b×\9c ×\9eשת×\9eש",
-       "action-hideuser": "לחסום שם משתמש, ולהסתיר אותו מהציבור",
-       "action-ipblock-exempt": "לעקוף חסימות IP, חסימות אוטומטיות, וחסימות טווח",
+       "action-viewsuppressed": "×\9cצפ×\95ת ×\91×\92רס×\90×\95ת ×©×\94×\95סתר×\95 ×\9e×\9b×\9c ×\94×\9eשת×\9eש×\99×\9d",
+       "action-hideuser": "לחסום שם משתמש תוך הסתרתו מהציבור",
+       "action-ipblock-exempt": "לעקוף חסימות של כתובות IP, חסימות אוטומטיות וחסימות טווחים",
        "action-unblockself": "לשחרר את עצמך מחסימה",
-       "action-noratelimit": "×\9c×\90 ×\9c×\94×\99×\95ת ×ª×\97ת ×\94שפע×\94 ×©×\9c ×\94×\92×\91×\9c×\95ת ×§×¦×\91 ×¢×¨×\99×\9b×\94",
-       "action-reupload-own": "×\9c×\93ר×\95ס קבצים קיימים שהעלית בעצמך",
-       "action-nominornewtalk": "×\9c×\90 ×\9c×\92ר×\95×\9d ×\9cער×\99×\9b×\95ת ×\9eשנ×\99×\95ת ×\9c×\93פ×\99 ×©×\99×\97×\94 ×\9c×\92ר×\95×\9d ×\9cש×\90×\9cת ×\94×\95×\93×¢×\95ת ×\97×\93ש×\95ת",
+       "action-noratelimit": "×\9cעק×\95×£ ×\90ת ×\94×\94×\92×\91×\9c×\94 ×¢×\9c ×§×¦×\91 ×\94פע×\95×\9c×\95ת",
+       "action-reupload-own": "×\9c×\94×¢×\9c×\95ת ×\92רס×\90×\95ת ×\97×\93ש×\95ת ×©×\9c קבצים קיימים שהעלית בעצמך",
+       "action-nominornewtalk": "×\9c×\91×\98×\9c ×©×\9c×\99×\97ת ×\94תר×\90×\94 ×¢×\9c ×\94×\95×\93×¢×\94 ×\97×\93ש×\94 ×\9c×\9eשת×\9eש ×\91עת ×¢×¨×\99×\9b×\94 ×\9eשנ×\99ת ×\91×\93×£ ×\94ש×\99×\97×\94 ×©×\9c×\95",
        "action-markbotedits": "לסמן עריכות ששוחזרו בתור עריכות של בוט",
-       "action-patrolmarks": "×\9c×\94צ×\99×\92 ×¡×\99×\9e×\95× ×\99 ×\91×\93×\99ק×\94 ×©×\9c ×©×\99× ×\95×\99×\99×\9d אחרונים",
-       "action-override-export-depth": "×\9c×\99×\99צ×\90 ×\93פ×\99×\9d ×\9b×\95×\9c×\9c ×\93פ×\99×\9d ×\9eק×\95שר×\99×\9d ×¢×\93 ×¢×\95×\9eק ×©×\9c 5 ×¨×\9e×\95ת",
-       "action-suppressredirect": "×\9c×\90 ×\9c×\99צ×\95ר ×\94פנ×\99×\95ת ×\9e×\93×£ המקור בעת העברת דפים",
+       "action-patrolmarks": "×\9c×\94×\91×\97×\99×\9f ×\91×\99×\9f ×¢×¨×\99×\9b×\95ת ×©× ×\91×\93ק×\95 ×\9cער×\99×\9b×\95ת ×©×\98ר×\9d × ×\91×\93ק×\95 ×\91×\93×£ ×\94ש×\99× ×\95×\99×\99×\9d ×\94אחרונים",
+       "action-override-export-depth": "×\9c×\99×\99צ×\90 ×\93פ×\99×\9d ×\9b×\95×\9c×\9c ×\94×\93פ×\99×\9d ×\94×\9eק×\95שר×\99×\9d (×¢×\93 ×¢×\95×\9eק ×©×\9c 5 ×\93פ×\99×\9d)",
+       "action-suppressredirect": "×\9c×\94×\99×\9e× ×¢ ×\9e×\99צ×\99רת ×\94פנ×\99×\95ת ×\9e×\93פ×\99 המקור בעת העברת דפים",
        "nchanges": "{{PLURAL:$1|שינוי אחד|$1 שינויים}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|מאז ביקורך האחרון}}",
        "enhancedrc-history": "היסטוריה",
        "rcfilters-savedqueries-already-saved": "מסננים אלה כבר נשמרו. באפשרותך לשנות את ההגדרות שלך כדי ליצור ולשמור מסנן חדש.",
        "rcfilters-restore-default-filters": "שחזור למסנני ברירת המחדל",
        "rcfilters-clear-all-filters": "מחיקת כל המסננים",
-       "rcfilters-show-new-changes": "×\94צ×\92ת ×\94ש×\99× ×\95×\99×\99×\9d ×\94×\97×\93ש×\99×\9d ×\91×\99×\95תר",
+       "rcfilters-show-new-changes": "×\94צ×\92ת ×\94ש×\99× ×\95×\99×\99×\9d ×\94×\97×\93ש×\99×\9d ×\9e×\90×\96 $1",
        "rcfilters-search-placeholder": "סינון שינויים (ניתן להשתמש בתפריט או לחפש שם מסנן)",
        "rcfilters-invalid-filter": "מסנן בלתי־תקין",
        "rcfilters-empty-filter": "אין מסננים פעילים. כל התרומות מוצגות.",
        "blocklist-userblocks": "הסתרת חסימות של משתמשים רשומים",
        "blocklist-tempblocks": "הסתרת חסימות זמניות",
        "blocklist-addressblocks": "הסתרת חסימות של כתובות IP בודדות",
+       "blocklist-type": "סוג:",
+       "blocklist-type-opt-all": "הכול",
+       "blocklist-type-opt-sitewide": "כל האתר",
+       "blocklist-type-opt-partial": "חלקית",
        "blocklist-rangeblocks": "הסתרת חסימות טווחים",
        "blocklist-timestamp": "תאריך ושעה",
        "blocklist-target": "המשתמש שנחסם",
        "blocklist-editing-page": "דפים",
        "blocklist-editing-ns": "מרחבי שם",
        "ipblocklist-empty": "רשימת המשתמשים החסומים ריקה.",
-       "ipblocklist-no-results": "ש×\9d ×\94×\9eשת×\9eש ×\90×\95 ×\9bת×\95×\91ת ×\94Ö¾IP ×\94×\9e×\91×\95קש×\99×\9d ×\90×\99× ×\9d ×\97ס×\95×\9eים.",
+       "ipblocklist-no-results": "×\9c×\90 × ×\9eצ×\90×\95 ×\97ס×\99×\9e×\95ת ×\9eת×\90×\99×\9e×\95ת ×\9cש×\9d ×\94×\9eשת×\9eש ×\90×\95 ×\9bת×\95×\91ת ×\94Ö¾IP ×\94×\9e×\91×\95קשים.",
        "blocklink": "חסימה",
        "unblocklink": "שחרור החסימה",
        "change-blocklink": "שינוי החסימה",
index 81ac629..7b26604 100644 (file)
        "botpasswords-label-delete": "Izbriši",
        "botpasswords-label-resetpassword": "Ponovno postavljanje lozinke",
        "botpasswords-label-grants": "Primjenjive dozvole:",
-       "botpasswords-help-grants": "Svaka dozvola daje pristup navedenim suradničkim pravima koja su već dodjeljena suradničkom računu. Vidjeti [[Special:ListGrants|tablicu dozvola]] za više informacija.",
+       "botpasswords-help-grants": "Dozvole omogućavaju pristup suradničkim pravima koja su već dodijeljena suradničkom računu. Omogućavanjem dozvola ovdje ne daje se pristup svim pravima koja Vaš suradnički račun inače ne bi imao. Za više informacija vidite [[Special:ListGrants|popis dozvola]].",
        "botpasswords-label-grants-column": "Odobreno",
        "botpasswords-bad-appid": "Ime bota \"$1\" nije valjano.",
        "botpasswords-insert-failed": "Nije moguće dodavanje imena bota \"$1\". Možda je već dodano?",
        "showpreview": "Prikaži kako će izgledati",
        "showdiff": "Prikaži promjene",
        "blankarticle": "<strong>Upozorenje:</strong> Stvorili ste stranicu koja je prazna.\nAko iznova pritisnete na \"$1\", stranica će biti stvorena bez ikakvog sadržaja.",
-       "anoneditwarning": "<strong>Upozorenje:</strong> niste prijavljeni. Ako napravite uređivanje, Vaša IP adresa će biti javno vidljiva. Ako se <strong>[$1 prijavite]</strong> ili <strong>[$2 stvorite račun]</strong>, Vaša uređivanja će biti pridružena suradničkom imenu, zajedno s ostalim pogodnostima.",
+       "anoneditwarning": "<strong>Upozorenje:</strong> niste prijavljeni. Ako napravite uređivanje, Vaša IP adresa bit će javno vidljiva. Ako se <strong>[$1 prijavite]</strong> ili <strong>[$2 stvorite račun]</strong>, Vaša će uređivanja biti pripisana Vašem suradničkom imenu, zajedno s ostalim pogodnostima.",
        "anonpreviewwarning": "<em>Niste prijavljeni. Spremanjem izmjena Vaša će IP adresa ostati zabilježena u povijesti uređivanja ove stranice.</em>",
        "missingsummary": "'''Podsjetnik:''' Niste unijeli sažetak promjena. Ako ponovno kliknete na \"Sačuvaj stranicu\", Vaše će promjene biti snimljene bez sažetka.",
        "selfredirect": "<strong>Upozorenje:</strong> Stvarate preusmjeravanje na isti članak.\nMožda ste izabrali pogrješnu odredišnu stranicu za preusmjeravanje ili uređujete pogrješnu stranicu.\nAko pritisnete na \"$1\" još jednom, preusmjeravanje će svejedno biti stvoreno.",
        "logdelete-selected": "{{PLURAL:$1|Odabrani zapis u evidenciji|Odabrani zapisi u evidenciji}}:",
        "revdelete-text-text": "Izbrisane izmjene će i dalje biti vidljive u povijesti stranice, ali dijelovi sadržaja neće biti javno vidljivi.",
        "revdelete-text-file": "Izbrisane inačice datoteke će i dalje biti vidljive u povijesti datoteke, ali neki dijelovi sadržaja neće biti javno vidljivi.",
-       "logdelete-text": "Izbrisane izmjene i dalje će biti vidljive u evidencijama, ali dijelovi njihova sadržaja biti će nedostupni za javnost.",
+       "logdelete-text": "Izbrisane evidencijske radnje i dalje će se pojavljivati u evidencijama, ali dijelovi njihova sadržaja bit će nedostupni za javnost.",
        "revdelete-text-others": "Ostali administratori na projektu moći će pristupiti izbrisanom sadržaju i vratiti ga, osim ako nisu postavljena dodatna ograničenja.",
        "revdelete-confirm": "Molimo potvrdite da namjeravate ovo učiniti, da razumijete posljedice i da to činite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].",
        "revdelete-suppress-text": "Sklanjanje uređivanja treba raditi <strong>iznimno</strong> u sljedećih par slučajeva:\n* moguće klevetničke informacije\n* neprikladne osobne informacije \n*: <em>kućna adresa i broj telefona, JMBG ili OIB, itd.</em>",
        "right-reupload-own": "Postavljanje nove inačice vlastite datoteke",
        "right-reupload-shared": "Lokalno postavljanje novih inačica datoteka na zajedničkom poslužitelju",
        "right-upload_by_url": "Postavljanje datoteke s URL adrese",
-       "right-purge": "Čišćenje priručne memorije stranice bez stranice za potvrdu",
+       "right-purge": "Brisanje međuspremnika stranice",
        "right-autoconfirmed": "Uređivanje stranica zaštićenih za neprijavljene suradnike",
        "right-bot": "Izmjene su tretirane kao automatski proces (bot)",
        "right-nominornewtalk": "Izbjegavanje prikazivanja obavijesti o novim porukama kad je označeno da je izmjena manja",
        "emailblock": "e-pošta je blokirana",
        "blocklist-nousertalk": "bez uređivanja vlastite stranice za razgovor",
        "ipblocklist-empty": "Popis blokiranja je prazan.",
-       "ipblocklist-no-results": "Tražena IP adresa ili suradničko ime nije blokirano.",
+       "ipblocklist-no-results": "Za traženu IP adresu ili suradničko ime nema pronađenih podudarnih blokiranja.",
        "blocklink": "blokiraj",
        "unblocklink": "deblokiraj",
        "change-blocklink": "promijeni blokiranje",
        "move-page-legend": "Premjesti stranicu",
        "movepagetext": "Uporabom ovog obrasca ćete preimenovati stranicu i premjestiti povijest uređivanja na novo ime.\nStari će naslov preusmjeravati na stranicu s novim imenom.\nMožete odabrati automatsko ažuriranje preusmjeravanja na izvorni naslov.\nAko se ne odlučite na to, provjerite [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|neispravna preusmjeravanja]].\nDužni ste provjeriti da sve poveznice i dalje nastave voditi na prave stranice.\n\nStranica se <strong>ne će</strong> premjestiti ako već postoji stranica s novim naslovom, osim u slučaju prazne stranice ili stranice za preusmjeravanje koja nema nikakvih starih izmjena.\nTo znači da možete preimenovati stranicu natrag odakle je preimenovana ako napravite grešku, ali ne možete prepisati preko postojeće stranice.\n\n<strong>Napomena:</strong>\novo može biti drastična i neočekivana promjena kad su u pitanju popularne stranice. Molimo dobro razmislite prije nego što preimenujete stranicu.",
        "movepagetext-noredirectfixer": "Pomoću donjeg obrasca ćete preimenovati stranicu i premjestiti sve stare izmjene na novo ime. \nStari će se naslov pretvoriti u stranicu koja automatski preusmjerava na novi naslov. \nBudite sigurni da ste provjerili [[Special:DoubleRedirects|dvostruka]] ili [[Special:BrokenRedirects|nevaljana preusmjeravanja]]. \nVi ste odgovorni za to da poveznice i dalje povezuju tamo gdje treba.\n\nImajte na umu da stranica <strong>ne će</strong> biti premještena ako već postoji stranica s novim naslovom, osim u slučaju stranice za preusmjeravanje koja nema nikakvih starih izmjena. \nTo znači da stranicu možete preimenovati u prethodno ime ako ste pogriješili te ne možete pisati preko postojeće stranice. \n\n<strong>Napomena:</strong>\nOvo može biti drastična i neočekivana promjena kad su u pitanju popularne stranice; \nbudite sigurni da razumijete posljedice ove akcije prije nastavka.",
-       "movepagetalktext": "Ako označite ovu kvačicu, pripadajuća stranica za razgovor biti će automatski premještena na novo ime osim ako već postoji stranica za razgovor koja nije prazna. \n\nU tom slučaju morat ćete ručno premjestiti ili spojiti stranice.",
+       "movepagetalktext": "Ako kvačicom označite ovu kućicu, pripadajuća stranica za razgovor bit će automatski premještena na novo ime, osim ako tamo već postoji stranica za razgovor koja nije prazna.\n\nU tom ćete slučaju morati ručno premjestiti ili spojiti stranice, ako to želite.",
        "moveuserpage-warning": "'''Upozorenje:''' Premještate suradničku stranicu. Imajte na umu da će stranica biti premještena, ali suradnik ''ne će'' biti preimenovan.",
        "movenologintext": "Ako želite premjestiti stranicu morate biti [[Special:UserLogin|prijavljeni]].",
        "movenotallowed": "Nemate pravo premještanja stranica.",
        "move-watch": "Prati ovu stranicu",
        "movepagebtn": "Premjesti stranicu",
        "pagemovedsub": "Premještanje uspjelo",
+       "cannotmove": "Stranica ne može biti premještena, zbog {{PLURAL:$1|sljedećeg razloga|sljedećih razloga}}:",
        "movepage-moved": "<strong>Stranica »$1« premještena je na »$2«</strong>.",
        "movepage-moved-redirect": "Načinjeno je preusmjeravanje.",
        "movepage-moved-noredirect": "Stvaranje preusmjeravanja bilo je izostavljeno.",
        "feedback-back": "Natrag",
        "feedback-bugcheck": "Izvrsno! Molimo provjerite da se ne radi o nekom [$1 poznatom \"bugu\"].",
        "feedback-bugnew": "Provjereno. Prijavi novi \"bug\"",
-       "feedback-bugornote": "Ako ste spremni detaljno opisati tehnički problem molimo [$1 prijavite \"bug\"].\nInače, možete ispuniti jednostavan obrazac u nastavku. Vaš komentar biti će dodan na stranicu \"[$3 $2]\", zajedno s vašim suradničkim imenom i imenom internetskog preglednika koji rabite.",
+       "feedback-bugornote": "Ako ste spremni detaljno opisati tehnički problem molimo [$1 prijavite \"bug\"].\nInače, možete ispuniti jednostavan obrazac u nastavku. Vaš komentar bit će dodan na stranicu \"[$3 $2]\", zajedno s Vašim suradničkim imenom i imenom internetskoga preglednika koji rabite.",
        "feedback-cancel": "Odustani",
        "feedback-close": "Riješeno",
        "feedback-external-bug-report-button": "Arhiviraj tehnički zadatak",
        "limitreport-unstrip-size": "Veličina nakon proširenja unstrip",
        "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|bajt|bajta|bajtova}}",
        "expandtemplates": "Prikaz sadržaja predložaka",
-       "expand_templates_intro": "Ova posebna stranica omogućuje unos wikiteksta i prikazuje njegov rezultat,\nuključujući i (rekurzivno, tj. potpuno) sve uključene predloške u wikitekstu.\nPrikazuje i rezultate funkcija kao <nowiki>{{</nowiki>#language:...}} i varijabli\nkao <nowiki>{{</nowiki>CURRENTDAY}}. Funkcionira pozivanjem parsera same MedijeWiki.",
+       "expand_templates_intro": "Ova posebna stranica uzima wikitekst i proširuje sve predloške u njemu rekurzivno.\nOna također proširuje parserske funkcije poput\n<code><nowiki>{{</nowiki>#language:…}}</code> i varijable poput\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>. U principu, proširuje gotovo sve između dvostrukih vitičastih zagrada.",
        "expand_templates_title": "Kontekstni naslov stranice, za {{FULLPAGENAME}} i sl.:",
        "expand_templates_input": "Ulazni tekst:",
        "expand_templates_output": "Rezultat",
index d7f91b9..cf1c6fc 100644 (file)
        "page_first": "első",
        "page_last": "utolsó",
        "histlegend": "Eltérések kijelölése: jelöld ki az összehasonlítandó változatokat, majd nyomd meg az Enter billentyűt, vagy az alul lévő gombot.<br />\nJelmagyarázat: (akt) = eltérés az aktuális változattól, (előző) = eltérés az előző változattól, a = apró szerkesztés",
-       "history-fieldset-title": "Keresés a laptörténetben",
+       "history-fieldset-title": "Változatok szűrése",
        "history-show-deleted": "Csak a törölt változatok",
        "histfirst": "legelső",
        "histlast": "legutolsó",
        "action-changetags": "egyedi változtatások és napló bejegyzések tetszőleges címkével való ellátása és törlése",
        "action-deletechangetags": "címkék törlése az adatbáziból",
        "action-purge": "oldal gyorsítótárának ürítése",
+       "action-apihighlimits": "nagyobb mennyiségű lekérdezés az API-n keresztül",
+       "action-autoconfirmed": "IP-alapú sebességkorlát figyelmen kívül hagyása",
+       "action-bigdelete": "nagy laptörténetű lapok törlése",
+       "action-blockemail": "szerkesztő e-mail küldési lehetőségének blokkolása",
+       "action-bot": "automatikus folyamatként való kezelés",
+       "action-editprotected": "„{{int:protect-level-sysop}}” védelmi szintű lapok szerkesztése",
+       "action-editsemiprotected": "„{{int:protect-level-autoconfirmed}}” védelmi szintű lapok szerkesztése",
+       "action-editinterface": "felhasználói felület szerkesztése",
+       "action-editusercss": "más felhasználók CSS fájljainak szerkesztése",
+       "action-edituserjson": "más felhasználók JSON fájljainak szerkesztése",
+       "action-edituserjs": "más felhasználók JavaScript fájljainak szerkesztése",
+       "action-editsitecss": "CSS-lapok szerkesztése",
+       "action-editsitejson": "JSON-lapok szerkesztése",
+       "action-editsitejs": "JavaScript-lapok szerkesztése",
+       "action-editmyusercss": "saját szerkesztői CSS-fájlok szerkesztése",
+       "action-editmyuserjson": "saját szerkesztői JSON-fájlok szerkesztése",
+       "action-editmyuserjs": "saját szerkesztői JavaScript-fájlok szerkesztése",
+       "action-ipblock-exempt": "IP-, auto- és tartományblokkok megkerülése",
+       "action-unblockself": "saját felhasználói fiók blokkjának feloldása",
+       "action-noratelimit": "sebességkorlát figyelmen kívül hagyása",
+       "action-reupload-own": "a saját maga által feltöltött fájlok felülírása",
+       "action-markbotedits": "visszaállított szerkesztések botként való jelölése",
+       "action-patrolmarks": "járőrök jelzéseinek megtekintése a friss változásokban",
+       "action-override-export-depth": "lapok exportálása a hivatkozott lapokkal együtt, legfeljebb 5-ös mélységig",
        "nchanges": "$1 változtatás",
        "enhancedrc-since-last-visit": "$1 az utolsó látogatás óta",
        "enhancedrc-history": "történet",
        "delete-confirm": "$1 törlése",
        "delete-legend": "Törlés",
        "historywarning": "<strong>Figyelem:</strong> a lapnak, amit törölni készülsz, $1 változattal rendelkező laptörténete van:",
-       "historyaction-submit": "Mutat",
+       "historyaction-submit": "Változatok megjelenítése",
        "confirmdeletetext": "Egy lapot vagy fájlt készülsz törölni a teljes laptörténetével együtt.\nKérjük, erősítsd meg, hogy valóban ezt szeretnéd tenni, átlátod a következményeit, és hogy a műveletet a [[{{MediaWiki:Policy-url}}|törlési irányelvekkel]] összhangban végzed.",
        "actioncomplete": "Művelet végrehajtva",
        "actionfailed": "A művelet nem sikerült",
        "blocklist-userblocks": "Fiókblokkolások elrejtése",
        "blocklist-tempblocks": "Ideiglenes blokkolások elrejtése",
        "blocklist-addressblocks": "IP-címek blokkolásainak elrejtése",
+       "blocklist-type": "Típus:",
+       "blocklist-type-opt-all": "Összes",
+       "blocklist-type-opt-sitewide": "Teljes körű",
+       "blocklist-type-opt-partial": "Részleges",
        "blocklist-rangeblocks": "Tartományblokkok elrejtése",
        "blocklist-timestamp": "Időbélyeg",
        "blocklist-target": "Célpont",
        "blocklist-editing-page": "lapok",
        "blocklist-editing-ns": "névterek",
        "ipblocklist-empty": "A blokkoltak listája üres.",
-       "ipblocklist-no-results": "A kért IP-cím vagy felhasználónév nem blokkolt.",
+       "ipblocklist-no-results": "Nem található blokk a kért IP-címhez vagy felhasználónévhez.",
        "blocklink": "blokkolás",
        "unblocklink": "blokk feloldása",
        "change-blocklink": "blokkolás módosítása",
index 882fa1d..bcb26e4 100644 (file)
        "virus-badscanner": "Սխալ կարգավորւմ։ Անծանոթ վիրուսների զննիչ. ''$1''",
        "virus-scanfailed": "զննման սխալ (կոդ $1)",
        "virus-unknownscanner": "անծանոթ հակավիրուս՝",
-       "logouttext": "<strong>Դուք դուրս եկաք համակարգից։</strong>\n\nԻ նկատի ունեցեք, որ որոշ էջեր կարող են ցուցադրվել այնպես՝ ինչպես եթե դեռ համակարգում լինեիք մինչև որ չջնջեք ձեր զննարկիչի հիշապահեստը։",
+       "logouttext": "<strong>Դուք դուրս եկաք համակարգից։</strong>\n\nՆկատի ունեցեք, որ որոշ էջեր կարող են ցուցադրվել այնպես, ինչպես համակարգում լինելու դեպքում, քանի դեռ չէիք ջնջել զննարկիչի հիշապահեստը։",
        "cannotlogoutnow-title": "Այժմ դուրս գալ անհնար է",
        "cannotlogoutnow-text": "$1 օգտագործելիս դուրս գալն անհնար է:",
        "welcomeuser": "Բարի գալո՜ւստ, $1",
        "publishchanges": "Պահպանել",
        "savearticle-start": "Հիշել էջը...",
        "savechanges-start": "Հիշել փոփոխությունները...",
-       "publishpage-start": "Õ\80Ö\80Õ¡Õ¿արակել էջը...",
+       "publishpage-start": "Õ\80Ö\80Õ¡Õºարակել էջը...",
        "publishchanges-start": "Պահպանել…",
        "preview": "Նախադիտում",
        "showpreview": "Նախադիտել",
        "userjsyoucanpreview": "'''Հուշում.''' Էջը հիշելուց առաջ օգտվեք «{{int:showpreview}}» կոճակից՝ ձեր նոր JS-նիշքը ստուգելու համար։",
        "usercsspreview": "'''Նկատի ունեցեք, որ դուք միայն նախադիտում եք ձեր մասնակցի CSS-նիշքը. այն դեռ հիշված չէ՛։'''",
        "userjspreview": "'''Նկատի ունեցեք, որ դուք միայն նախադիտում եք ձեր մասնակցի JavaScript-նիշքը. այն դեռ հիշված չէ՛։'''",
-       "userinvalidconfigtitle": "'''Զգուշացում.''' «$1» տեսք չի գտնվել։ Ի նկատի ունեցեք, որ մասնակցային .css և .js էջերը ունեն փոքրատառ անվանումներ, օր.՝ «{{ns:user}}:Ոմն/vector.css», և ոչ թե «{{ns:user}}:Ոմն/Vector.css»։",
+       "userinvalidconfigtitle": "'''Զգուշացում.''' «$1» տեսք չի գտնվել։ Նկատի ունեցեք, որ մասնակցային .css և .js էջերը ունեն փոքրատառ անվանումներ, օր.՝ «{{ns:user}}:Ոմն/vector.css», և ոչ թե «{{ns:user}}:Ոմն/Vector.css»։",
        "updated": "(Թարմացված)",
        "note": "'''Ծանուցում.'''",
        "previewnote": "'''Սա միայն նախադիտումն է. ձեր կատարած փոփոխությունները դեռ չե՛ն հիշվել։'''",
        "powersearch-toggleall": "Բոլորը",
        "powersearch-togglenone": "Ոչ մեկը",
        "search-external": "Արտաքին որոնում",
-       "searchdisabled": "{{SITENAME}} Õ¯Õ¡ÕµÖ\84Õ« Õ¶Õ¥Ö\80Ö\84Õ«Õ¶ Õ¸Ö\80Õ¸Õ¶Õ¸Ö\82Õ´Õ¨ Õ¡Õ¶Õ»Õ¡Õ¿Õ¾Õ¡Õ® Õ§Ö\89 Ô´Õ¸Ö\82Ö\84 Õ¯Õ¡Ö\80Õ¸Õ² Õ¥Ö\84 Õ¸Ö\80Õ¸Õ¶Õ¥Õ¬ Õ¯Õ¡ÕµÖ\84Õ« ÕºÕ¡Ö\80Õ¸Ö\82Õ¶Õ¡Õ¯Õ¸Ö\82Õ©ÕµÕ¸Ö\82Õ¶Õ¨ Õ¡Ö\80Õ¿Õ¡Ö\84Õ«Õ¶ Õ¸Ö\80Õ¸Õ¶Õ´Õ¡Õ¶ Õ·Õ¡Ö\80ÕªÕ«Õ¹Õ¶Õ¥Ö\80Õ¸Õ¾ (Google, Yahoo...), Õ½Õ¡Õ¯Õ¡ÕµÕ¶, Õ« Õ¶Õ¯Õ¡Õ¿Õ« Õ¸Ö\82Õ¶Õ¥Ö\81Õ¥Ö\84, Õ¸Ö\80 Õ¯Õ¡ÕµÖ\84Õ« Õ«Ö\80Õ¥Õ¶Ö\81 Õ«Õ¶Õ¤Õ¥Ö\84Õ½Õ¶Õ¥Ö\80Õ¨ Õ¯Õ¡Ö\80Õ¸Õ² Õ¥Õ¶ Õ°Õ¶Õ¡Ö\81Õ¡Õ® Õ¬Õ«Õ¶Õ¥Õ¬Ö\89",
+       "searchdisabled": "{{SITENAME}} կայքի ներքին որոնումը անջատված է։ Դուք կարող եք որոնել կայքի պարունակությունը արտաքին որոնման շարժիչներով (Google, Yahoo...), սակայն, նկատի ունեցեք, որ կայքի իրենց ինդեքսները կարող են հնացած լինել։",
        "preferences": "Նախընտրություններ",
        "mypreferences": "Նախընտրություններ",
        "prefs-edits": "Խմբագրումների քանակը.",
index e748e28..7378e8a 100644 (file)
        "rcfilters-savedqueries-already-saved": "Iste filtros es jam salveguardate. Cambia tu configuration pro crear un nove filtro salveguardate.",
        "rcfilters-restore-default-filters": "Restaurar filtros predefinite",
        "rcfilters-clear-all-filters": "Rader tote le filtros",
-       "rcfilters-show-new-changes": "Vider le modificationes le plus recente",
+       "rcfilters-show-new-changes": "Vider le modificationes apportate desde $1",
        "rcfilters-search-placeholder": "Filtrar le modificationes (usa le menu o cerca le nomine del filtro)",
        "rcfilters-invalid-filter": "Filtro non valide",
        "rcfilters-empty-filter": "Nulle filtro active. Tote le contributiones es monstrate.",
index 01dcb64..93e78d1 100644 (file)
        "blocklist-userblocks": "Nascondi i blocchi degli utenti registrati",
        "blocklist-tempblocks": "Nascondi i blocchi temporanei",
        "blocklist-addressblocks": "Nascondi i blocchi di un solo IP",
+       "blocklist-type": "Tipo:",
+       "blocklist-type-opt-all": "Tutto",
+       "blocklist-type-opt-partial": "Parziale",
        "blocklist-rangeblocks": "Nascondi i blocchi di range",
        "blocklist-timestamp": "Data e ora",
        "blocklist-target": "Destinazione",
        "blocklist-editing-page": "pagine",
        "blocklist-editing-ns": "namespace",
        "ipblocklist-empty": "L'elenco dei blocchi è vuoto.",
-       "ipblocklist-no-results": "L'indirizzo IP o il nome utente richiesto non è bloccato.",
+       "ipblocklist-no-results": "Nessun blocco trovato che corrisponde all'indirizzo IP o nome utente richiesto.",
        "blocklink": "blocca",
        "unblocklink": "sblocca",
        "change-blocklink": "cambia blocco",
index b81c415..643fb5f 100644 (file)
        "accmailtext": "Tembung sandi sembarang kanggo [[User talk:$1|$1]] wis dikirim menyang $2.\n\nTembung sandi iki bisa diganti ing kaca <em>[[Special:ChangePassword|salin tembung sandi]]</em> sawisé mlebu log.",
        "newarticle": "(Anyar)",
        "newarticletext": "Panjenengan ngetuti pranala kang durung ana.\nKanggo nggawé kaca, gagéa ngetik ing kothak ngisor iki (deleng [$1 kaca pitulung] ngenani katerangané).\nManawa panjenengan tekan kéné awit ora sengaja, kliken tumbul <strong>balik</strong> ana ing pangluruné panjenengan.",
-       "anontalkpagetext": "----\n<em>Iki kaca parembugané panganggo anonim kang durung gawé akun, utawa kang ora nganggo akuné.</em>\nMula, awak dhéwé kudu nganggo alamat IP-né awujud angka kanggo nglacak dhèwèké.\nAlamat IP mangkono bisa dianggo déning sawenèh panganggo.\nManawa panjenengan panganggo anonim lan rumasa yèn ana tanggepan kang ora ilok dieneraké marang panjenengan, mangga [[Special:CreateAccount|gawéa akun]] utawa [[Special:UserLogin|mlebua log]] kanggo ngéndhani salah pangira karo panganggo anonim liyané ing tembé buri.",
+       "anontalkpagetext": "----\n<em>Iki kaca parembugané panganggo anonim kang durung gawé akun, utawa kang ora nganggo akuné.</em>\nMula, awak dhéwé kudu nganggo alamat IP wujud angka kanggo nglacak dhèwèké.\nAlamat IP mangkono bisa dianggo sawatara wong.\nManawa kowé minangka panganggo anonim lan rumasa yèn ana tanggepan kang ora ilok dieneraké marang awakmu, mangga [[Special:CreateAccount|gawéa akun]] utawa [[Special:UserLogin|mlebua log]] kanggo ngéndhani bingung marang panganggo anonim liyané ing tembé buri.",
        "noarticletext": "Saiki kaca iki durung ana tulisané.\nPanjenengan bisa (1) [[Special:Search/{{PAGENAME}}|nggolèki sesirahing kaca iki]] ing kaca liyané, (2)\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nggolèki log kang magepokan],\nutawa (3) [{{fullurl:{{FULLPAGENAME}}|action=edit}} nggawé kaca iki]</span>.",
        "noarticletext-nopermission": "Saiki lagi ora ana tèks ing kaca iki. \nPanjenengan bisa [[Special:Search/{{PAGENAME}}|nggolèk sesirah kaca iki]] ing kaca liyané, \nutawa <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{urlencode:{{FULLPAGENAME}}}}}} nggolèk ing log kang gegayutan]</span>, nanging panjenengan ora kawogan nggawé kaca iki.",
        "missing-revision": "Révisi #$1 saka kaca aran \"{{FULLPAGENAME}}\" ora ana.\n\nIki biyasané kasababaké awit nututi pranala sajarah kang wis lawas saka kaca kang wis binusek.\nRerincèné bisa digolèki ing [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log besakan].",
        "page_first": "kapisan",
        "page_last": "pungkasan",
        "histlegend": "Kanggo mbandhingaké: Tandhani kothak radhioning révisi-révisi kang arep dibandhingaké lan pencèt ''Enter'' utawa tombol ing ngisor.<br />\nLegéndhah: <strong>({{int:cur}})</strong> = bédané karo révisi pungkasan, <strong>({{int:last}})</strong> = bédané karo révisi sadurungé, <strong>{{int:minoreditletter}}</strong> = besutan cilik.",
-       "history-fieldset-title": "Golèk owahan",
+       "history-fieldset-title": "Saring révisi",
        "history-show-deleted": "Mligi owahan kang binusek",
        "histfirst": "lawas dhéwé",
        "histlast": "anyar dhéwé",
        "historysize": "($1 {{PLURAL:$1|bét|bét}})",
-       "historyempty": "(suwung)",
+       "historyempty": "kosong",
        "history-feed-title": "Sajarah owahan",
        "history-feed-description": "Sajarah owahaning kaca iki ing wiki",
        "history-feed-item-nocomment": "$1 ing $2",
index 4bae059..8c458c2 100644 (file)
        "mergehistory-go": "აჩვენეთ გაერთიანებული ცვლილებები",
        "mergehistory-submit": "ცვლილებების შერწყმა",
        "mergehistory-empty": "რაიმე ცვლილების შერწყმა შეუძლებელია.",
-       "mergehistory-done": "$3 {{PLURAL:$3|á\83¨á\83\94á\83¡á\83¬á\83\9dá\83 á\83\94á\83\91á\83\90\83¨á\83\94á\83¡á\83¬á\83\9dá\83 á\83\94á\83\91á\83\94á\83\91á\83\98}} $1-á\83\93á\83\90á\83\9c á\83¬á\83\90á\83 á\83\9bá\83\90á\83¢á\83\94á\83\91á\83\98á\83\97 {{PLURAL:$3|á\83¨á\83\94á\83\94á\83 á\83¬á\83§á\83\90\83¨á\83\94á\83\94á\83 á\83¬á\83§á\83\90}} [[:$2]]-á\83¡.",
+       "mergehistory-done": "$3 {{PLURAL:$3|á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\90\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\90}} á\83\92á\83\95á\83\94á\83 á\83\93á\83\98 $1 á\83¬á\83\90á\83 á\83\9bá\83\90á\83¢á\83\94á\83\91á\83\98á\83\97 {{PLURAL:$3|á\83¨á\83\94á\83\94á\83 á\83¬á\83§á\83\90\83¨á\83\94á\83\94á\83 á\83¬á\83§á\83\90}} á\83\92á\83\95á\83\94á\83 á\83\93á\83¡ [[:$2]].",
        "mergehistory-fail": "ვერ მოხერხდა გვერდების ისტორიის გაერთიანება, გთხოვთ შეამოწმოთ გვერდის პაარამეტრები და დრო.",
        "mergehistory-fail-bad-timestamp": "მიმდევრობა არასწორია.",
        "mergehistory-fail-invalid-source": "წყაროს გვერდი არასწორია.",
        "logentry-import-upload-details": "$1-მ {{GENDER:$2|გადაიტანა}} $3 ფაილის ატვირთვით ($4 {{PLURAL:$4|ცვლილება|ცვლილება}})",
        "logentry-import-interwiki": "$1 {{GENDER:$2|იმპორტირებული}} $3 სხვა ვიკიდან",
        "logentry-import-interwiki-details": "$1-მ {{GENDER:$2|გადაიტანა}} $3 $5-ზე ($4 {{PLURAL:$4|ცვლილება|ცვლილება}})",
-       "logentry-merge-merge": "მომხმარებელმა $1 {{GENDER:$2|გააერთიანა}} $3 $4-ში ($5-მდე ვერსია)",
+       "logentry-merge-merge": "მომხმარებელმა $1 გვერდი $3 {{GENDER:$2|გააერთიანა}} გვერდში $4 ($5-მდე ვერსია)",
        "logentry-move-move": "მომხმარებელმა $1 გვერდი „$3“ {{GENDER:$2|გადაიტანა}} გვერდზე „$4“",
        "logentry-move-move-noredirect": "მომხმარებელმა $1 გვერდი „$3“ {{GENDER:$2|გადაიტანა}} გვერდზე „$4“ გადამისამართების დატოვების გარეშე",
        "logentry-move-move_redir": "მომხმარებელმა $1 გვერდი „$3“ {{GENDER:$2|გადაიტანა}} გვერდზე „$4“ გადამისამართებაზე",
index be41e53..953f3ec 100644 (file)
        "tog-norollbackdiff": "되돌리기 후 차이를 보지 않기",
        "tog-useeditwarning": "바꾼 내용을 저장하지 않고 편집 페이지를 벗어날 때 내게 알리기",
        "tog-prefershttps": "로그인하는 동안 항상 보안 연결 사용",
-       "tog-showrollbackconfirmation": "롤백 링크를 클릭할 때 확인 프롬프트를 표시합니다",
+       "tog-showrollbackconfirmation": "롤백 링크를 클릭할 때 확인창을 띄웁니다",
        "underline-always": "항상",
        "underline-never": "항상 긋지 않기",
        "underline-default": "스킨 또는 브라우저 기본값",
        "rcfilters-savedqueries-already-saved": "이 필터는 이미 저장되어 있습니다. 새로운 저장된 필터를 만들려면 설정을 변경하십시오.",
        "rcfilters-restore-default-filters": "기본 필터로 복구",
        "rcfilters-clear-all-filters": "필터 모두 지우기",
-       "rcfilters-show-new-changes": "최신 변경사항 보기",
+       "rcfilters-show-new-changes": "$1 이후 새 변경사항 보기",
        "rcfilters-search-placeholder": "필터 변경(메뉴를 사용하거나 필터 이름을 검색하세요)",
        "rcfilters-invalid-filter": "유효하지 않은 필터",
        "rcfilters-empty-filter": "활성화된 필터가 없습니다. 모든 기여가 표시됩니다.",
        "mycontris": "기여",
        "anoncontribs": "기여",
        "contribsub2": "{{GENDER:$3|$1}}($2)의 기여",
+       "contributions-subtitle": "{{GENDER:$3|$1}}의 기여",
        "contributions-userdoesnotexist": "\"$1\" 사용자 계정은 등록되어 있지 않습니다.",
        "nocontribs": "지정한 조건과 일치하는 바뀜을 찾을 수 없습니다.",
        "uctop": "최신",
        "blocklist-userblocks": "계정에 대한 차단 숨기기",
        "blocklist-tempblocks": "기한이 정해진 차단을 숨기기",
        "blocklist-addressblocks": "단일 IP 차단을 숨기기",
+       "blocklist-type": "유형:",
+       "blocklist-type-opt-all": "모두",
+       "blocklist-type-opt-sitewide": "사이트 전체",
+       "blocklist-type-opt-partial": "부분",
        "blocklist-rangeblocks": "광역 차단을 숨기기",
        "blocklist-timestamp": "시간 기록",
        "blocklist-target": "대상",
        "blocklist-editing-page": "문서",
        "blocklist-editing-ns": "이름공간",
        "ipblocklist-empty": "차단 목록이 비어 있습니다.",
-       "ipblocklist-no-results": "요청한 IP 주소나 사용자는 차단되지 않았습니다.",
+       "ipblocklist-no-results": "요청한 IP 주소나 사용자 이름과 일치하는 차단을 찾을 수 없습니다.",
        "blocklink": "차단",
        "unblocklink": "차단 해제",
        "change-blocklink": "차단 설정 바꾸기",
index 6266c29..91d3f59 100644 (file)
        "rcfilters-savedqueries-already-saved": "Dës Filtere si scho gespäichert. Ännert Är Astellunge fir en neie Gespäicherte Filter unzeleeën.",
        "rcfilters-restore-default-filters": "Standardfiltere restauréieren",
        "rcfilters-clear-all-filters": "All Filteren eidelmaachen",
-       "rcfilters-show-new-changes": "Rezentst Ännerunge weisen",
+       "rcfilters-show-new-changes": "Nei Ännerunge zanter $1 weisen",
        "rcfilters-search-placeholder": "Ännerunge filteren (benotzt de Menü oder sicht nom Numm vum Filter)",
        "rcfilters-invalid-filter": "Net valabele Filter",
        "rcfilters-empty-filter": "Keen aktive Filter. All Kontributioune gi gewisen.",
        "blocklist-userblocks": "Benotzerspäre verstoppen",
        "blocklist-tempblocks": "Temporär Späre verstoppen",
        "blocklist-addressblocks": "Eenzel IP-Späre verstoppen",
+       "blocklist-type": "Typ:",
+       "blocklist-type-opt-all": "All",
+       "blocklist-type-opt-partial": "Partiell",
        "blocklist-rangeblocks": "Späre vu ganzen IP-Beräicher verstoppen",
        "blocklist-timestamp": "Zäitstempel",
        "blocklist-target": "Zil",
index b6cfd45..0e202d0 100644 (file)
        "blocklist-userblocks": "Скриј блокирања на корис. сметки",
        "blocklist-tempblocks": "Скриј привремени блокирања",
        "blocklist-addressblocks": "Скри блокирања на поединечни IP-адреси",
+       "blocklist-type": "Вид:",
+       "blocklist-type-opt-all": "сите",
+       "blocklist-type-opt-sitewide": "Насекаде",
+       "blocklist-type-opt-partial": "Делумно",
        "blocklist-rangeblocks": "Скриј опсежни блокови",
        "blocklist-timestamp": "Време и датум",
        "blocklist-target": "Цел",
        "blocklist-editing-page": "страници",
        "blocklist-editing-ns": "именски простори",
        "ipblocklist-empty": "Списокот на блокирања е празен.",
-       "ipblocklist-no-results": "Ð\91аÑ\80анаÑ\82а IP-адÑ\80еÑ\81а Ð¸Ð»Ð¸ ÐºÐ¾Ñ\80иÑ\81ниÑ\87ка Ñ\81меÑ\82ка Ð½Ðµ Ðµ Ð±Ð»Ð¾ÐºÐ¸Ñ\80ана.",
+       "ipblocklist-no-results": "Ð\9dе Ð½Ð°Ñ\98дов Ñ\82акви Ð±Ð»Ð¾ÐºÐ¾Ð²Ð¸ Ð½Ð° Ð¿Ð¾Ð±Ð°Ñ\80анаÑ\82а IP-адÑ\80еÑ\81а Ð¸Ð»Ð¸ ÐºÐ¾Ñ\80иÑ\81ниÑ\87ко Ð¸Ð¼Ðµ.",
        "blocklink": "блокирај",
        "unblocklink": "одблокирај",
        "change-blocklink": "промена на блок",
        "scarytranscludefailed-httpstatus": "[Преземањето на шаблонот не успеа за $1: HTTP $2]",
        "scarytranscludetoolong": "[Премногу долго URL]",
        "deletedwhileediting": "'''Предупредување''': Оваа страница беше избришана откако почнавте со нејзино уредување!",
-       "confirmrecreate": "Корисникот [[User:$1|$1]] ([[User talk:$1|разговор]]) {{GENDER:$1|ја избриша}} страницава откако вие почнавте со уредување, со причината:\n: ''$2''\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": "Пресоздај",
        "unit-pixel": "п",
index 61624eb..b27df12 100644 (file)
        "userlogin-joinproject": "{{SITENAME}} സം‌രംഭത്തിൽ ചേരുക",
        "createaccount": "അംഗത്വമെടുക്കുക",
        "userlogin-resetpassword-link": "താങ്കൾ രഹസ്യവാക്ക് മറന്നോ?",
-       "userlogin-helplink2": "à´ªàµ\8dà´°à´µàµ\87ശിà´\95àµ\8dà´\95ാൻ à´¸à´¹à´¾à´¯à´®à´¾à´µà´¶àµ\8dയമàµ\86à´\99àµ\8dà´\95ിൽ",
+       "userlogin-helplink2": "à´ªàµ\8dà´°à´µàµ\87ശിà´\95àµ\8dà´\95ാനàµ\81à´³àµ\8dà´³ à´¸à´¹à´¾à´¯à´\82",
        "userlogin-loggedin": "താങ്കൾ ഇപ്പോൾ തന്നെ {{GENDER:$1|$1}} ആയി പ്രവേശിച്ചിരിക്കുന്നു.\nതാഴെ ഉള്ള ഫോം ഉപയോഗിച്ച് മറ്റൊരു ഉപയോക്താവായി പ്രവേശിക്കാവുന്നതാണ്.",
        "userlogin-reauth": "താങ്കൾ {{GENDER:$1|$1}} തന്നെയെന്ന് സ്ഥിരീകരിക്കാൻ ദയവായി വീണ്ടും ലോഗിൻ ചെയ്യുക.",
        "userlogin-createanother": "മറ്റൊരു അംഗത്വമെടുക്കുക",
        "blocklist-userblocks": "അംഗത്വ തടയലുകൾ മറയ്ക്കുക",
        "blocklist-tempblocks": "താത്കാലിക തടയലുകൾ മറയ്ക്കുക",
        "blocklist-addressblocks": "ഒറ്റയൊറ്റ ഐ.പി. തടയലുകൾ മറയ്ക്കുക",
+       "blocklist-type": "തരം:",
+       "blocklist-type-opt-all": "എല്ലാം",
+       "blocklist-type-opt-sitewide": "സൈറ്റ്-വ്യാപകം",
+       "blocklist-type-opt-partial": "ഭാഗികം",
        "blocklist-rangeblocks": "പരിധിയടച്ചുള്ള തടയലുകൾ മറയ്ക്കുക",
        "blocklist-timestamp": "സമയമുദ്ര",
        "blocklist-target": "ലക്ഷ്യം",
        "blocklist-editing-page": "താളുകൾ",
        "blocklist-editing-ns": "നാമമേഖലകൾ",
        "ipblocklist-empty": "തടയൽപ്പട്ടിക ശൂന്യമാണ്‌.",
-       "ipblocklist-no-results": "à´\88 à´\90.പി. à´µà´¿à´²à´¾à´¸à´®àµ\8b à´\89പയàµ\8bà´\95àµ\8dà´¤àµ\83നാമമàµ\8b à´¤à´\9fà´\9eàµ\8dà´\9eà´¿à´\9fàµ\8dà´\9fà´¿ല്ല.",
+       "ipblocklist-no-results": "à´\86വശàµ\8dയപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9f à´\90.പി. à´µà´¿à´²à´¾à´¸à´®àµ\8b à´\89പയàµ\8bà´\95àµ\8dà´¤àµ\83നാമമàµ\8b à´\86യി à´ªàµ\8aà´°àµ\81à´¤àµ\8dതപàµ\8dà´ªàµ\86à´\9fàµ\81à´¨àµ\8dà´¨ à´¤à´\9fയലàµ\81à´\95ൾ à´\87ല്ല.",
        "blocklink": "തടയുക",
        "unblocklink": "സ്വതന്ത്രമാക്കുക",
        "change-blocklink": "തടയലിൽ മാറ്റം വരുത്തുക",
index 6d8f5e6..a1a29db 100644 (file)
        "changeemail-submit": "အီးမေးလ်ပြောင်းလဲရန်",
        "changeemail-throttled": "သင်သည် login ဝင်ရန် အကြိမ်မြောက်မြားစွာ ပြုလုပ်ခဲ့ပြီးဖြစ်သည်။\nကျေးဇူးပြု၍ ထပ်မဝင်ခင် $1 စောင့်ပေးပါ။",
        "changeemail-nochange": "မတူညီသော အီးမေးလ်လိပ်စာအသစ်ကို ကျေးဇူးပြု၍ ရိုက်ထည့်ပါ။",
+       "resettokens": "တိုကင်များကို ပြန်လည်ချိန်ညှိမည်",
+       "resettokens-tokens": "တိုကင်များ-",
        "resettokens-token-label": "$1 (လက်ရှိတန်ဖိုး: $2)",
        "resettokens-resetbutton": "ရွေးချယ်ထားသော တိုကင်များကို ပြန်ချိန်ရန်",
        "bold_sample": "စာလုံးမည်း",
        "prefs-watchlist-edits": "စောင့်ကြည့်စာရင်းတွင် ပြရန် အပြောင်းအလဲတို့၏ အများဆုံး အရေအတွက်",
        "prefs-watchlist-edits-max": "အများဆုံးအရေအတွက် - ၁ဝဝဝ",
        "prefs-watchlist-token": "စောင့်ကြည့်စာရင်း တိုကင် -",
+       "prefs-watchlist-managetokens": "တိုကင်များကို စီမံခန့်ခွဲရန်",
        "prefs-misc": "အသေးအမွှား",
        "prefs-resetpass": "စကားဝှက် ပြောင်းရန်",
        "prefs-changeemail": "အီးမေးလိပ်စာ ပြင်ဆင် သို့ ဖယ်ရှားရန်",
        "ipb-disableusertalk": "ပိတ်ပင်ထားစဉ်အတွင်း ဤအသုံးပြုသူအား သူတို့၏ ကိုယ်ပိုင်ဆွေးနွေးချက် စာမျက်နှာကို ပြင်ဆင်ခြင်းမှ ပိတ်ပင်ရန်",
        "ipb-change-block": "အသုံးပြုသူအား ဤအပြင်အဆင်များဖြင့် ထပ်မံပိတ်ပင်ရန်",
        "ipb-confirm": "ပိတ်ပင်မှုကို အတည်ပြု",
+       "ipb-partial": "တစ်စိတ်တစ်ပိုင်း",
        "ipb-pages-label": "စာမျက်နှာများ",
+       "ipb-namespaces-label": "အမည်ညွှန်းများ",
        "badipaddress": "တရားမဝင်သော IP address",
        "blockipsuccesssub": "ပိတ်ပင်ခြင်း အောင်မြင်သည်",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] ကို ပိတ်ပင်ထားပါသည်။<br />\nပိတ်ပင်မှုများကို ပြန်လည်ဆန်းစစ်ရန် [[Special:BlockList|ပိတ်ပင်မှု စာရင်း]]ကို ကြည့်ပါ။",
        "ipb-blocklist-contribs": "{{GENDER:$1|$1}} အတွက် ဆောင်ရွက်ချက်များ",
        "ipb-blocklist-duration-left": "$1 ကျန်ရှိ",
        "block-expiry": "သက်တမ်းကုန်လွန်ရက် -",
+       "block-prevent-edit": "တည်းဖြတ်ခြင်း",
+       "block-reason": "အ​ကြောင်း​ပြ​ချက်:",
+       "block-target": "အသုံးပြုသူအမည် သို့မဟုတ် အီးမေးလ်လိပ်စာ-",
        "unblockip": "အသုံးပြုသူကို ပိတ်ပင်ထားရာမှ ပြန်ဖွင့်ပေးရန်",
        "ipusubmit": "ဤပိတ်ပင်မှုကို ဖယ်ရှားရန်",
        "unblocked": "[[User:$1|$1]] ကို ပိတ်ပင်ထားရာမှ ပြန်ဖွင့်ပေးလိုက်သည်",
        "blocklist-userblocks": "အကောင့်ပိတ်ပင်မှုများ ဝှက်",
        "blocklist-tempblocks": "ယာယီပိတ်ပင်မှုများ ဝှက်",
        "blocklist-addressblocks": "အိုင်ပီတစ်ခုတည်းပိတ်ပင်မှု ဝှက်",
+       "blocklist-type-opt-all": "အားလုံး",
+       "blocklist-type-opt-partial": "တစ်စိတ်တစ်ပိုင်း",
        "blocklist-rangeblocks": "အကွာအဝေးလိုက် ပိတ်ပင်မှုများ ဝှက်",
        "blocklist-timestamp": "အချိန်တံဆိပ်",
        "blocklist-target": "ပစ်မှတ်",
        "mediastatistics-bytespertype": "ဤအပိုင်းအတွက် စုစုပေါင်းဖိုင်အရွယ်အစား: {{PLURAL:$1|$1 ဘိုက်|$1 ဘိုက်}} ($2; $3%)။",
        "mediastatistics-allbytes": "ဖိုင်အားလုံးအတွက် စုစုပေါင်းဖိုင်အရွယ်အစား: {{PLURAL:$1|$1 ဘိုက်|$1 ဘိုက်}} ($2)။",
        "mediastatistics-table-count": "ဖိုင်များ အရေအတွက်",
+       "mediastatistics-header-unknown": "မသိရှိပါ",
+       "mediastatistics-header-audio": "အသံ",
+       "mediastatistics-header-video": "ဗီဒီယိုများ",
        "mediastatistics-header-total": "ဖိုင်အားလုံး",
        "special-characters-group-latin": "လက်တင်",
        "special-characters-group-symbols": "သင်္ကေတများ",
        "special-characters-group-greek": "ဂရိ",
        "special-characters-group-arabic": "အာရဗီ",
+       "special-characters-group-persian": "ပါရှန်း",
        "special-characters-group-hebrew": "ဟီးဘရူး",
        "special-characters-group-bangla": "ဘင်္ဂလား",
+       "special-characters-group-tamil": "တမီးလ်",
        "special-characters-group-thai": "ထိုင်း",
        "special-characters-group-lao": "လာအို",
        "special-characters-group-khmer": "ခမာ",
+       "special-characters-title-minus": "အနုတ် သင်္ကေတ",
+       "mw-widgets-abandonedit": "အရင်ဆုံး မသိမ်းဆည်းဘဲ တည်းဖြတ်ခြင်းပုံစံမှ ထွက်ခွာလိုသည်မှာ သေချာပါသလား",
        "mw-widgets-abandonedit-discard": "တည်းဖြတ်မှုများကို စွန့်လွတ်ရန်",
        "mw-widgets-abandonedit-keep": "တည်းဖြတ်ခြင်းကို ဆက်လုပ်ရန်",
        "mw-widgets-abandonedit-title": "သေချာပါသလား",
        "mw-widgets-titleinput-description-redirect": "$1 သို့ ပြန်ညွှန်း",
        "mw-widgets-categoryselector-add-category-placeholder": "ကဏ္ဍတစ်ခု ထည့်ပေါင်း...",
        "mw-widgets-usersmultiselect-placeholder": "ပို၍ ထည့်ပေါင်း...",
+       "mw-widgets-titlesmultiselect-placeholder": "ပို၍ ထည့်ပေါင်း...",
        "date-range-from": "နေ့စွဲမှ:",
        "date-range-to": "နေ့စွဲသို့:",
        "randomrootpage": "ကျပန်း အခြေ စာမျက်နှာ",
index afbc0bf..5b2afae 100644 (file)
        "action-editusercss": "de CSS-bestanden van andere gebruikers te bewerken",
        "action-edituserjson": "de JSON-bestanden van andere gebruikers te bewerken",
        "action-edituserjs": "de JavaScriptbestanden van andere gebruikers te bewerken",
+       "action-editsitecss": "wikibrede CSS te bewerken",
+       "action-editsitejson": "wikibrede JSON te bewerken",
+       "action-editsitejs": "wikibrede JavaScript te bewerken",
        "action-editmyusercss": "uw eigen CSS-pagina's te bewerken",
        "action-editmyuserjson": "uw eigen JSON-pagina's te bewerken",
        "action-editmyuserjs": "uw eigen JavaScriptpagina's te bewerken",
        "ipb-confirm": "Blokkade bevestigen",
        "ipb-sitewide": "Van de hele site",
        "ipb-partial": "Gedeeltelijk",
+       "ipb-sitewide-help": "Elke pagina op de wiki en alle andere handelingen.",
        "ipb-partial-help": "Specifieke pagina's of naamruimten.",
        "ipb-pages-label": "Pagina's",
        "ipb-namespaces-label": "Naamruimten",
        "blocklist-userblocks": "Geblokkeerde accounts verbergen",
        "blocklist-tempblocks": "Tijdelijke blokkades verbergen",
        "blocklist-addressblocks": "Blokkades van één IP-adres verbergen",
+       "blocklist-type": "Soort:",
+       "blocklist-type-opt-all": "Alle",
+       "blocklist-type-opt-sitewide": "Van de hele site",
+       "blocklist-type-opt-partial": "Gedeeltelijk",
        "blocklist-rangeblocks": "IP-adresblokken verbergen",
        "blocklist-timestamp": "Tijdstip",
        "blocklist-target": "Doel",
        "blocklist-editing-page": "pagina's",
        "blocklist-editing-ns": "naamruimten",
        "ipblocklist-empty": "De blokkeerlijst is leeg.",
-       "ipblocklist-no-results": "Dit IP-adres of deze gebruikersnaam is niet geblokkeerd.",
+       "ipblocklist-no-results": "Geen blokkades gevonden voor het IP-adres of de gebruikersnaam.",
        "blocklink": "blokkeren",
        "unblocklink": "blokkade opheffen",
        "change-blocklink": "blokkade wijzigen",
index 2f13552..af00fa4 100644 (file)
        "rcfilters-savedqueries-already-saved": "Ten zestaw filtrów jest już zapisany. Zmień swoje ustawienia aby utworzyć nowy zestaw zapisanych filtrów.",
        "rcfilters-restore-default-filters": "Przywróć domyślne filtry",
        "rcfilters-clear-all-filters": "Wyczyść filtry",
-       "rcfilters-show-new-changes": "Zobacz nowsze zmiany",
+       "rcfilters-show-new-changes": "Zobacz zmiany od $1",
        "rcfilters-search-placeholder": "Filtruj zmiany (użyj menu lub wyszukaj według nazwy filtra)",
        "rcfilters-invalid-filter": "Nieprawidłowy filtr",
        "rcfilters-empty-filter": "Brak aktywnych filtrów. Wyświetlane są wszystkie zmiany.",
        "blocklist-userblocks": "Ukryj blokady konta",
        "blocklist-tempblocks": "Ukryj tymczasowe blokady",
        "blocklist-addressblocks": "Ukryj blokady pojedynczych adresów IP",
+       "blocklist-type": "Typ:",
+       "blocklist-type-opt-all": "Wszystkie",
+       "blocklist-type-opt-sitewide": "Całkowite",
+       "blocklist-type-opt-partial": "Częściowe",
        "blocklist-rangeblocks": "Ukryj blokady zakresów",
        "blocklist-timestamp": "Sygnatura czasowa",
        "blocklist-target": "Cel",
        "blocklist-editing-page": "strony",
        "blocklist-editing-ns": "przestrzenie nazw",
        "ipblocklist-empty": "Lista blokad jest pusta.",
-       "ipblocklist-no-results": "Podany adres IP lub użytkownik nie jest zablokowany.",
+       "ipblocklist-no-results": "Nie znaleziono blokad dla podanego adresu IP lub użytkownika.",
        "blocklink": "zablokuj",
        "unblocklink": "odblokuj",
        "change-blocklink": "zmień blokadę",
index 1a1825a..af3ac42 100644 (file)
        "rcfilters-savedqueries-already-saved": "Esses filtros já foram salvos. Altere suas configurações para criar um novo Filtro Salvo.",
        "rcfilters-restore-default-filters": "Restaurar filtros padrão",
        "rcfilters-clear-all-filters": "Limpar todos os filtros",
-       "rcfilters-show-new-changes": "Veja as novas mudanças",
+       "rcfilters-show-new-changes": "Ver as novas alterações desde $1",
        "rcfilters-search-placeholder": "Filtrar mudanças (usar o menu ou procurar o nome do filtro)",
        "rcfilters-invalid-filter": "Filtro inválido",
        "rcfilters-empty-filter": "Nenhum filtro ativo. Todas as contribuições são mostradas.",
        "blocklist-userblocks": "Esconder bloqueios de contas",
        "blocklist-tempblocks": "Esconder bloqueios temporários",
        "blocklist-addressblocks": "Esconder bloqueios de IP único",
+       "blocklist-type": "Tipo:",
+       "blocklist-type-opt-all": "Todos",
+       "blocklist-type-opt-sitewide": "Em todo o site",
+       "blocklist-type-opt-partial": "Parcial",
        "blocklist-rangeblocks": "Ocultar bloqueios de faixas",
        "blocklist-timestamp": "Data e hora",
        "blocklist-target": "Destinatário",
        "blocklist-editing-page": "páginas",
        "blocklist-editing-ns": "domínios",
        "ipblocklist-empty": "A lista de bloqueios encontra-se vazia.",
-       "ipblocklist-no-results": "O endereço de IP ou nome de usuário procurado não se encontra bloqueado.",
+       "ipblocklist-no-results": "Nenhum bloqueio correspondente encontrado para o endereço IP ou nome de usuário solicitados.",
        "blocklink": "bloquear",
        "unblocklink": "desbloquear",
        "change-blocklink": "alterar bloqueio",
index 0eedadd..375cec6 100644 (file)
        "rcfilters-savedqueries-already-saved": "Estes filtros já foram gravados. Altera as suas configurações para criar um novo filtro gravado.",
        "rcfilters-restore-default-filters": "Restaurar os filtros padrão",
        "rcfilters-clear-all-filters": "Limpar todos os filtros",
-       "rcfilters-show-new-changes": "Mostrar as mudanças mais recentes",
+       "rcfilters-show-new-changes": "Ver novas alterações desde $1",
        "rcfilters-search-placeholder": "Filtrar mudanças (usar o menu ou procurar o nome do filtro)",
        "rcfilters-invalid-filter": "Filtro inválido",
        "rcfilters-empty-filter": "Não há filtros ativos. São mostradas todas as contribuições.",
        "blocklist-userblocks": "Ocultar bloqueios de contas",
        "blocklist-tempblocks": "Ocultar bloqueios temporários",
        "blocklist-addressblocks": "Ocultar bloqueios de um IP individual",
+       "blocklist-type": "Tipo:",
+       "blocklist-type-opt-all": "Todos",
+       "blocklist-type-opt-partial": "Parcial",
        "blocklist-rangeblocks": "Ocultar bloqueios de gamas",
        "blocklist-timestamp": "Data e hora",
        "blocklist-target": "Destinatário",
        "blocklist-editing-page": "páginas",
        "blocklist-editing-ns": "espaços nominais",
        "ipblocklist-empty": "A lista de bloqueios encontra-se vazia.",
-       "ipblocklist-no-results": "O endereço IP ou nome de utilizador procurado não se encontra bloqueado.",
+       "ipblocklist-no-results": "Nenhum bloqueio correspondente encontrado para o endereço de IP ou nome de utilizador(a) solicitado.",
        "blocklink": "bloquear",
        "unblocklink": "desbloquear",
        "change-blocklink": "alterar bloqueio",
index 6836812..7aed514 100644 (file)
        "rcfilters-savedqueries-already-saved": "Title for the popup in [[Special:RecentChanges]] that indicates that current set of filters is already saved. This is for a small popup, please try to use a short string.",
        "rcfilters-restore-default-filters": "Label for the button that resets filters to defaults",
        "rcfilters-clear-all-filters": "Title for the button that clears all filters",
-       "rcfilters-show-new-changes": "Label for the button to show new changes.",
+       "rcfilters-show-new-changes": "Label for the button to show new changes. Parameters:\n* $1 - timestamp from which new changes are available. It indicates that clicking the refresh link will bring changes newer than (or equal to) this timestamp. It is formatted according to the user's date, time and timezone preferences",
        "rcfilters-search-placeholder": "Placeholder for the filter search input. The first \"Filter\" is a verb, and the second \"filter\" is a noun.",
        "rcfilters-invalid-filter": "A label for an invalid filter.",
        "rcfilters-empty-filter": "Placeholder for the filter list when no filters were chosen.",
        "blocklist-tempblocks": "Used as the label for the multi-select checkbox in the form on [[Special:BlockList]].\n{{Related|Blocklist-blocks}}",
        "blocklist-addressblocks": "Used as the label for the multi-select checkbox in the form on [[Special:BlockList]].\n{{Related|Blocklist-blocks}}",
        "blocklist-type": "Used as label for dropdown box in [[Special:BlockList]].",
-       "blocklist-type-opt-all": "Used as option for dropdown box in [[Special:BlockList]]. This is the default option and indicates that \"all\" blocks will be listed",
+       "blocklist-type-opt-all": "Used as option for dropdown box in [[Special:BlockList]]. This is the default option and indicates that \"all\" blocks will be listed\n{{Identical|All}}",
        "blocklist-type-opt-sitewide": "Used as option for dropdown box in [[Special:BlockList]]. This option indicates that only \"sitewide\" blocks will be listed.",
        "blocklist-type-opt-partial": "Used as option for dropdown box in [[Special:BlockList]]. This option indicates that only \"partial\" blocks will be listed.",
        "blocklist-rangeblocks": "Used as the label for the multi-select checkbox in the form on [[Special:BlockList]].\n\nFor an explanation of \"range blocks\", see [[mw:Help:Range_blocks]]\n{{Related|Blocklist-blocks}}",
index 99f2a77..70c4e5a 100644 (file)
@@ -38,7 +38,8 @@
                        "Andrei Stroe",
                        "WebSourceContentRO",
                        "MSClaudiu",
-                       "Lucdrei"
+                       "Lucdrei",
+                       "Moyogo"
                ]
        },
        "tog-underline": "Sublinierea legăturilor:",
        "filedelete": "Șterge $1",
        "filedelete-legend": "Șterge fișierul",
        "filedelete-intro": "Sunteți pe cale să ștergeți fișierul '''[[Media:$1|$1]]''' cu tot istoricul acestuia.",
-       "filedelete-intro-old": "Ştergi versiunea fișierului '''[[Media:$1|$1]]''' din [$4 $3, $2].",
+       "filedelete-intro-old": "Ștergi versiunea fișierului '''[[Media:$1|$1]]''' din [$4 $3, $2].",
        "filedelete-comment": "Motiv:",
        "filedelete-submit": "Șterge",
        "filedelete-success": "'''$1''' a fost șters.",
        "filedelete-reason-otherlist": "Alt motiv",
        "filedelete-reason-dropdown": "*Motive uzuale\n** Încălcare drepturi de autor\n** Fișier duplicat",
        "filedelete-edit-reasonlist": "Modifică motivele ștergerii",
-       "filedelete-maintenance": "Ştergerea sau restaurarea fișierelor este temporar dezactivată pe timpul lucrărilor de mentenanță.",
+       "filedelete-maintenance": "Ștergerea sau restaurarea fișierelor este temporar dezactivată pe timpul lucrărilor de mentenanță.",
        "filedelete-maintenance-title": "Fișierul nu a putut fi șters",
        "mimesearch": "Căutare MIME",
        "mimesearch-summary": "Această pagină permite filtrarea fișierelor în funcție de tipul MIME.\nDate de intrare: tip_de_conținut/subtip sau tip_de_conținut/*; ex. <code>image/jpeg</code>.",
        "excontent": "conținutul era: '$1'",
        "excontentauthor": "conținutul era: „$1”, iar unicul contribuitor a fost „[[Special:Contributions/$2|$2]]” ([[User talk:$2|discuție]])",
        "exbeforeblank": "conținutul înainte de golire era: '$1'",
-       "delete-confirm": "Şterge \"$1\"",
+       "delete-confirm": "Șterge \"$1\"",
        "delete-legend": "Şterge",
        "historywarning": "<strong>Atenție:</strong> istoricul paginii pe care o ștergeți conține $1 {{PLURAL:$1|versiune|versiuni|de versiuni}}:",
        "historyaction-submit": "Afișează",
        "tooltip-ca-nstab-media": "Vezi pagina media",
        "tooltip-ca-nstab-special": "Aceasta este o pagină specială și nu poate fi modificată",
        "tooltip-ca-nstab-project": "Vezi pagina proiectului",
-       "tooltip-ca-nstab-image": "Vezi pagina fişierului",
+       "tooltip-ca-nstab-image": "Vezi pagina fișierului",
        "tooltip-ca-nstab-mediawiki": "Vedeți mesajul de sistem",
        "tooltip-ca-nstab-template": "Vezi formatul",
        "tooltip-ca-nstab-help": "Vezi pagina de ajutor",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discuție]])",
        "timezone-local": "Local",
        "duplicate-defaultsort": "'''Atenție:''' Cheia de sortare implicită („$2”) o înlocuiește pe precedenta („$1”).",
-       "duplicate-displaytitle": "<strong>Atenție:</strong> Titlul afișat „$2” înlocuieşte titlul afișat anterior, „$1”.",
+       "duplicate-displaytitle": "<strong>Atenție:</strong> Titlul afișat „$2” înlocuiește titlul afișat anterior, „$1”.",
        "restricted-displaytitle": "<strong>Atenție:</strong> Titlul de afișat \"$1\" a fost ignorat deoarece nu este echivalent cu titlul real al paginii.",
        "invalid-indicator-name": "<strong>Eroare:</strong> Parametrul <code>nume</code> al indicatorilor de stare a paginii nu trebuie să fie gol.",
        "version": "Versiune",
        "expand_templates_generate_xml": "Arată arborele de analiză XML",
        "expand_templates_generate_rawhtml": "Arată HTML brut",
        "expand_templates_preview": "Previzualizare",
-       "expand_templates_preview_fail_html": "<em>Întrucât la {{SITENAME}} este activat HTML brut și a avut loc o pierdere a sesiunii de date, previzualizarea a fost ascunsă ca măsură de precauție împotriva atacurilor prin JavaScript.</em>\n\n<strong>Dacă aceasta este o încercare legitimă de a previzualiza, încercați din nou.</strong>\nDacă nici astfel nu funcționează, încercați să [[Special:UserLogout|închideţi sesiunea]] şi să vă autentificaţi din nou și să verificați dacă navigatorul dumneavoastră permite module cookie pentru acest site.",
+       "expand_templates_preview_fail_html": "<em>Întrucât la {{SITENAME}} este activat HTML brut și a avut loc o pierdere a sesiunii de date, previzualizarea a fost ascunsă ca măsură de precauție împotriva atacurilor prin JavaScript.</em>\n\n<strong>Dacă aceasta este o încercare legitimă de a previzualiza, încercați din nou.</strong>\nDacă nici astfel nu funcționează, încercați să [[Special:UserLogout|închideți sesiunea]] și să vă autentificați din nou și să verificați dacă navigatorul dumneavoastră permite module cookie pentru acest site.",
        "expand_templates_preview_fail_html_anon": "<em>Întrucât la {{SITENAME}} este activat HTML brut și nu v-ați autentificat, previzualizarea a fost ascunsă ca măsură de precauție împotriva atacurilor prin JavaScript.</em>\n\n<strong>Dacă aceasta este o încercare legitimă de a previzualiza, [[Special:UserLogin|autentificați-vă]] și încercați din nou.</strong>",
        "expand_templates_input_missing": "Trebuie să furnizați cel puțin un text ca date de intrare.",
        "pagelanguage": "Modificare limbă pagină",
index a7d26b1..91401b9 100644 (file)
        "page_first": "первая",
        "page_last": "последняя",
        "histlegend": "Выбор версий: отметьте версии страницы, которые вы хотите сравнить, и нажмите <strong>{{int:compare-submit}}</strong>.<br />\nПояснения: <strong>({{int:cur}})</strong> — отличия от текущей версии; <strong>({{int:last}})</strong> — отличия от предшествующей версии; <strong>{{int:minoreditletter}}</strong> — незначительные изменения.",
-       "history-fieldset-title": "Ð\9fоиÑ\81к Ð¿Ñ\80авок",
+       "history-fieldset-title": "ФилÑ\8cÑ\82Ñ\80оваÑ\82Ñ\8c Ð¿Ñ\80авки",
        "history-show-deleted": "Только удалённые правки",
        "histfirst": "старейшие",
        "histlast": "новейшие",
        "action-changetags": "добавление и удаление произвольных меток на отдельных изменениях и записях в журнале",
        "action-deletechangetags": "удаление меток из базы данных",
        "action-purge": "очистку кэша этой страницы",
+       "action-apihighlimits": "использование высоких лимитов в API-запросах",
+       "action-autoconfirmed": "обход ограничений скорости на IP-адрес",
+       "action-bigdelete": "удаление страниц с длинными историями изменений",
+       "action-blockemail": "блокировка на отправку электронной почты",
+       "action-bot": "считаться автоматическим процессом",
+       "action-editprotected": "правка страниц, защищённых как «{{int:protect-level-sysop}}»",
+       "action-editsemiprotected": "правка страниц, защищённых как «{{int:protect-level-autoconfirmed}}»",
+       "action-editinterface": "правка пользовательского интерфейса",
+       "action-editusercss": "правка CSS-файлов других участников",
+       "action-edituserjson": "правка JSON-файлов других участников",
+       "action-edituserjs": "правка JavaScript-файлов других участников",
+       "action-editsitecss": "редактирование общесайтовых CSS-файлов",
+       "action-editsitejson": "редактирование общесайтовых JSON-файлов",
+       "action-editsitejs": "редактирование общесайтовых JavaScript-файлов",
+       "action-editmyusercss": "редактирование собственных CSS-файлов",
+       "action-editmyuserjson": "редактирование собственных JSON-файлов",
+       "action-editmyuserjs": "редактирование собственных JavaScript-файлов",
+       "action-viewsuppressed": "просмотр версий, скрытых от всех участников",
+       "action-hideuser": "запрет имени участника и его сокрытие",
+       "action-ipblock-exempt": "обход блокировок по IP, автоблокировок и блокировок диапазонов",
+       "action-unblockself": "разблокирование себя самого",
+       "action-noratelimit": "обход ограничений скорости",
+       "action-reupload-own": "перезапись существующих файлов, загруженных тем же участником",
+       "action-nominornewtalk": "малые правки на страницах обсуждений участников не создают для них уведомление о новом сообщении",
+       "action-markbotedits": "отметка откатываемых правок как правок бота",
+       "action-patrolmarks": "просмотр отметок о патрулировании в свежих правках",
+       "action-override-export-depth": "экспортирование страниц, включая связанные страницы с глубиной до 5",
+       "action-suppressredirect": "переименование страниц без создания перенаправления со старого имени",
        "nchanges": "$1 {{PLURAL:$1|изменение|изменения|изменений}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|с последнего посещения}}",
        "enhancedrc-history": "история",
        "delete-confirm": "$1: удаление",
        "delete-legend": "Удаление",
        "historywarning": "<strong>Внимание:</strong> Вы собираетесь удалить страницу, у которой есть история правок, содержащая $1 {{PLURAL:$1|версию|версии|версий}}:",
-       "historyaction-submit": "Показать",
+       "historyaction-submit": "Показать версии",
        "confirmdeletetext": "Вы запросили полное удаление страницы (или изображения) и всей её истории изменений. Пожалуйста, подтвердите, что вы действительно желаете это сделать, понимаете последствия своих действий, и делаете это в соответствии [[{{MediaWiki:Policy-url}}|с правилами]].",
        "actioncomplete": "Действие выполнено",
        "actionfailed": "Действие не выполнено",
index fbbfed5..0ad8cb8 100644 (file)
        "expansion-depth-exceeded-warning": "Сирэйгэ угуллубут билэлэр аһара элбээбиттэр",
        "parser-unstrip-loop-warning": "Сабыллыбатах pre көһүннэ",
        "unstrip-depth-warning": "Рекурсия ахсаана таһынан барбыт ($1)",
+       "unstrip-size-warning": "Unstrip ($1) кээмэйин лимиитэ куоһарыллыбыт",
+       "unstrip-size-category": "Unstrip кээмэйин лимиитэ куоһарыллыбыт сирэйдэр",
        "converter-manual-rule-error": "Тылы уларытыы быраабылатын алҕаһа таҕыста",
        "undo-success": "Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.",
        "undo-failure": "Уларытыы төннөр кыаҕа суох. Ыккардынааҕы көннөрүүлэр бэйэ бэйэлэригэр сөп түбэспэттэр.",
+       "undo-main-slot-only": "Уларытыыны сотторор кыах суох, тоҕо диэтэххэ иһинээҕитигэр атын дааннайдар эмиэ бааллар.",
        "undo-norev": "Бу көннөрүү сотуллар кыаҕа суох, тоҕо диэтэххэ ончу суох эбэтэр номнуо сотуллубут.",
        "undo-nochange": "Бу уларытыы хайыы-үйэ сотуллубут курдук.",
        "undo-summary": "[[Special:Contributions/$2|$2]] кыттааччы ([[User talk:$2|ырытыы]] | [[Special:Contributions/$2|{{MediaWiki:Contribslink}}]]) $1 нүөмэрдээх уларытыытын сотон оннугар түһэрэргэ.",
        "page_first": "бастакы",
        "page_last": "бүтэһик",
        "histlegend": "Барыллары тэҥнииргэ икки радиокнопканы бэлиэтээ. <br />\nБыһаарыылар: (бил.) = билигин баар барылтан атына,\n(инн.) = инники баар барылтан атына, '''к.''' = улахан суолтата суох көннөрүү.",
-       "history-fieldset-title": "УлаÑ\80Ñ\8bÑ\82Ñ\8bÑ\8bлаÑ\80Ñ\8b ÐºÓ©Ñ\80дөөһүн",
+       "history-fieldset-title": "СиидÑ\8d Ñ\82оÑ\80Ñ\83мнаÑ\80а",
        "history-show-deleted": "Сотуллубуту эрэ",
        "histfirst": "саамай эргэ",
        "histlast": "саамай саҥа",
        "historysize": "({{PLURAL:$1|1 байт|$1 баайтаах}})",
-       "historyempty": "(кураанах)",
+       "historyempty": "кураанах",
        "history-feed-title": "Уларытыы историята",
        "history-feed-description": "Бу сирэй Биикигэ уларыйыытын историята",
        "history-feed-item-nocomment": "$1 манна $2",
index e5108cf..4af100b 100644 (file)
        "version-variables": "Promjenjive",
        "version-editors": "Urednici",
        "version-antispam": "Sprečavanje spama",
-       "version-api": "Prilozi",
+       "version-api": "Izvršnici",
        "version-other": "Ostalo",
        "version-mediahandlers": "Upravljači medije",
        "version-hooks": "Kuke",
index cb996c9..6e1cd3a 100644 (file)
        "pool-servererror": "Услуга бројача редова није доступна ($1).",
        "poolcounter-usage-error": "Грешка при употреби: $1",
        "aboutsite": "О пројекту {{SITENAME}}",
-       "aboutpage": "Project:Ð\9e¿Ñ\80оÑ\98екÑ\82Ñ\83_{{SITENAME}}",
+       "aboutpage": "Project:Ð\9e½Ð°Ð¼Ð°",
        "copyright": "Садржај је доступан под лиценцом $1 осим ако је другачије наведено.",
        "copyrightpage": "{{ns:project}}:Ауторска права",
        "currentevents": "Актуелности",
index cb2de8b..b5bfa95 100644 (file)
        "page_first": "första",
        "page_last": "sista",
        "histlegend": "Val av diff: markera i klickrutorna för att jämföra versioner och tryck enter eller knappen längst ner.<br />\nFörklaring: '''({{int:cur}})''' = skillnad mot senaste version; '''({{int:last}})''' = skillnad mot föregående version; '''{{int:minoreditletter}}''' = mindre ändring.",
-       "history-fieldset-title": "Sök efter sidversioner",
+       "history-fieldset-title": "Filtrera sidversioner",
        "history-show-deleted": "Endast raderade sidversioner",
        "histfirst": "äldsta",
        "histlast": "nyaste",
        "action-changetags": "lägg till och ta bort godtyckliga märken på individuella sidversioner och loggposter",
        "action-deletechangetags": "radera märken från databasen",
        "action-purge": "rensa denna sida",
+       "action-apihighlimits": "använda högre gränser i API-frågor",
+       "action-autoconfirmed": "inte påverkas av IP-baserade hastighetsgränser",
+       "action-bigdelete": "radera sidor med stor historik",
+       "action-blockemail": "blockera användare från att skicka e-post",
+       "action-bot": "behandlas som en automatisk process",
+       "action-editprotected": "redigera skyddade sidor som \"{{int:protect-level-sysop}}\"",
+       "action-editsemiprotected": "redigera skyddade sidor som \"{{int:protect-level-autoconfirmed}}\"",
+       "action-editinterface": "redigera användargränssnittet",
+       "action-editusercss": "redigera andra användares CSS-filer",
+       "action-edituserjson": "redigera andra användares JSON-filer",
+       "action-edituserjs": "redigera andra användares JavaScript-filer",
+       "action-editsitecss": "redigera CSS för hela webbplatsen",
+       "action-editsitejson": "redigera JSON för hela webbplatsen",
+       "action-editsitejs": "redigera JavaScript för hela webbplatsen",
+       "action-editmyusercss": "redigera dina egna CSS-filer",
+       "action-editmyuserjson": "redigera dina egna JSON-filer",
+       "action-editmyuserjs": "redigera dina egna JavaScript-filer",
+       "action-viewsuppressed": "se sidversioner som dolts från alla användare",
+       "action-hideuser": "blockera ett användarnamn och dölj det från allmänheten",
+       "action-ipblock-exempt": "kringgå IP-blockeringar, autoblockeringar och IP-intervallsblockeringar",
+       "action-unblockself": "avblockera dig själv",
+       "action-noratelimit": "inte påverkas av hastighetsgränser",
+       "action-reupload-own": "skriva över befintliga filer som du själv har laddat upp",
+       "action-nominornewtalk": "förhindra att mindre ändringar på diskussionssidor ger besked om nya meddelanden",
+       "action-markbotedits": "markera tillbakarullningar som robotändringar",
+       "action-patrolmarks": "se markeringar av opatrullerade ändringar i senaste ändringarna",
+       "action-override-export-depth": "exportera sidor inklusive länkade sidor till ett djup på 5",
+       "action-suppressredirect": "inte skapa omdirigeringar från ursprungssidan vid sidflyttning",
        "nchanges": "$1 {{PLURAL:$1|ändring|ändringar}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|sedan senaste besöket}}",
        "enhancedrc-history": "historik",
        "delete-confirm": "Radera \"$1\"",
        "delete-legend": "Radera",
        "historywarning": "<strong>Varning:</strong> Sidan du håller på att radera har en historik med $1 {{PLURAL:$1|version|versioner}}:",
-       "historyaction-submit": "Visa",
+       "historyaction-submit": "Visa sidversioner",
        "confirmdeletetext": "Du håller på att ta bort en sida med hela dess historik.\nBekräfta att du förstår vad du håller på med och vilka konsekvenser detta leder till, och att du följer [[{{MediaWiki:Policy-url}}|riktlinjerna]].",
        "actioncomplete": "Genomfört",
        "actionfailed": "Handlingen misslyckades",
        "blocklist-userblocks": "Dölj kontoblockeringar",
        "blocklist-tempblocks": "Dölj tillfälliga blockeringar",
        "blocklist-addressblocks": "Dölj enskilda IP-blockeringar",
+       "blocklist-type": "Typ:",
+       "blocklist-type-opt-all": "Alla",
        "blocklist-rangeblocks": "Dölj intervallblockeringar",
        "blocklist-timestamp": "Tidsstämpel",
        "blocklist-target": "Mål",
index 25bab21..c14d052 100644 (file)
@@ -103,6 +103,7 @@ $specialPageAliases = [
        'MIMEsearch'                => [ 'Hledání_podle_MIME', 'Hledani_podle_MIME', 'Hledat_podle_MIME_typu' ],
        'Mostcategories'            => [ 'Stránky_s_nejvíce_kategoriemi', 'Stranky_s_nejvice_kategoriemi', 'Stránky_s_nejvyšším_počtem_kategorií' ],
        'Mostimages'                => [ 'Nejpoužívanější_soubory', 'Nejpouzivanejsi_soubory' ],
+       'Mostinterwikis'            => [ 'Stránky_s_největším_počtem_mezijazykových_odkazů', 'Nejvíce_mezijazykových_odkazů' ],
        'Mostlinked'                => [ 'Nejodkazovanější_stránky', 'Nejodkazovanejsi_stranky' ],
        'Mostlinkedcategories'      => [ 'Nejpoužívanější_kategorie', 'Nejpouzivanejsi_kategorie' ],
        'Mostlinkedtemplates'       => [ 'Nejpoužívanější_šablony', 'Nejpouzivanejsi_sablony' ],
@@ -116,6 +117,7 @@ $specialPageAliases = [
        'Newimages'                 => [ 'Nové_soubory', 'Nové_obrázky', 'Galerie_nových_obrázků', 'Nove_obrazky' ],
        'Newpages'                  => [ 'Nové_stránky', 'Nove_stranky', 'Nejnovější_stránky', 'Nejnovejsi_stranky' ],
        'PagesWithProp'             => [ 'Stránky_s_vlastností', 'Stránky_s_vlastnostmi' ],
+       'PasswordPolicies'          => [ 'Pravidla_pro_heslo' ],
        'PasswordReset'             => [ 'Reset_hesla', 'Resetovat_heslo', 'Obnova_hesla', 'Obnovit_heslo' ],
        'PermanentLink'             => [ 'Trvalý_odkaz' ],
        'Preferences'               => [ 'Nastavení', 'Nastaveni' ],
index c1e93f4..458231c 100644 (file)
@@ -54,7 +54,7 @@ class GenerateUcfirstOverrides extends Maintenance {
                foreach ( $from as $lc => $uc ) {
                        $ref = $to[$lc] ?? null;
                        if ( $ref !== null && $ref !== $uc ) {
-                               $overrides[$lc] = $uc;
+                               $overrides[$lc] = $ref;
                        }
                }
                $writer = new StaticArrayWriter();
@@ -70,8 +70,8 @@ class GenerateUcfirstOverrides extends Maintenance {
                        $msg = sprintf( "Could not load data from file '%s'\n", $filename );
                        $this->fatalError( $msg );
                }
-               $json = json_decode( $data );
-               if ( $result === null ) {
+               $json = json_decode( $data, true );
+               if ( $json === null ) {
                        $msg = sprintf( "Invalid json in the data file %s\n", $filename );
                        $this->fatalError( $msg, 2 );
                }
index b03d704..c8393bf 100644 (file)
@@ -37,6 +37,10 @@ class GenerateUpperCharTable extends Maintenance {
                $outfile = $this->getOption( 'outfile', 'upperchar.json' );
                $toUpperTable = [];
                for ( $i = 0; $i <= 0x10ffff; $i++ ) {
+                       // skip all surrogate codepoints or json_encode would fail.
+                       if ( $i >= 0xd800 && $i <= 0xdfff ) {
+                               continue;
+                       }
                        $char = UtfNormal\Utils::codepointToUtf8( $i );
                        $upper = mb_strtoupper( $char );
                        $toUpperTable[$char] = $upper;
index eed8019..173d741 100644 (file)
@@ -56,6 +56,8 @@ class CheckStorage {
        ];
 
        function check( $fix = false, $xml = '' ) {
+               global $wgMultiContentRevisionSchemaMigrationStage;
+
                $dbr = wfGetDB( DB_REPLICA );
                if ( $fix ) {
                        print "Checking, will fix errors if possible...\n";
@@ -79,13 +81,40 @@ class CheckStorage {
                        $chunkEnd = $chunkStart + $chunkSize - 1;
                        // print "$chunkStart of $maxRevId\n";
 
-                       // Fetch revision rows
                        $this->oldIdMap = [];
                        $dbr->ping();
-                       $res = $dbr->select( 'revision', [ 'rev_id', 'rev_text_id' ],
-                               [ "rev_id BETWEEN $chunkStart AND $chunkEnd" ], __METHOD__ );
-                       foreach ( $res as $row ) {
-                               $this->oldIdMap[$row->rev_id] = $row->rev_text_id;
+
+                       // Fetch revision rows
+                       if ( $wgMultiContentRevisionSchemaMigrationStage & SCHEMA_COMPAT_READ_OLD ) {
+                               $res = $dbr->select( 'revision', [ 'rev_id', 'rev_text_id' ],
+                                       [ "rev_id BETWEEN $chunkStart AND $chunkEnd" ], __METHOD__ );
+                               foreach ( $res as $row ) {
+                                       if ( !isset( $this->oldIdMap[ $row->rev_text_id ] ) ) {
+                                               $this->oldIdMap[ $row->rev_text_id ] = [ $row->rev_id ];
+                                       } elseif ( !in_array( $row->rev_id, $this->oldIdMap[ $row->rev_text_id ] ) ) {
+                                               $this->oldIdMap[ $row->rev_text_id ][] = $row->rev_id;
+                                       }
+                               }
+                       } else {
+                               $res = $dbr->select(
+                                       [ 'slots', 'content' ],
+                                       [ 'slot_revision_id', 'content_address' ],
+                                       [ "slot_revision_id BETWEEN $chunkStart AND $chunkEnd" ],
+                                       __METHOD__,
+                                       [],
+                                       [ 'content' => [ 'INNER JOIN', [ 'content_id = slot_content_id' ] ] ]
+                               );
+                               $blobStore = MediaWikiServices::getInstance()->getBlobStore();
+                               foreach ( $res as $row ) {
+                                       $textId = $blobStore->getTextIdFromAddress( $row->content_address );
+                                       if ( $textId ) {
+                                               if ( !isset( $this->oldIdMap[$textId] ) ) {
+                                                       $this->oldIdMap[ $textId ] = [ $row->slot_revision_id ];
+                                               } elseif ( !in_array( $row->slot_revision_id, $this->oldIdMap[$textId] ) ) {
+                                                       $this->oldIdMap[ $textId ][] = $row->slot_revision_id;
+                                               }
+                                       }
+                               }
                        }
 
                        if ( !count( $this->oldIdMap ) ) {
@@ -93,13 +122,13 @@ class CheckStorage {
                        }
 
                        // Fetch old_flags
-                       $missingTextRows = array_flip( $this->oldIdMap );
+                       $missingTextRows = $this->oldIdMap;
                        $externalRevs = [];
                        $objectRevs = [];
                        $res = $dbr->select(
                                'text',
                                [ 'old_id', 'old_flags' ],
-                               [ 'old_id' => $this->oldIdMap ],
+                               [ 'old_id' => array_keys( $this->oldIdMap ) ],
                                __METHOD__
                        );
                        foreach ( $res as $row ) {
@@ -149,7 +178,7 @@ class CheckStorage {
                        }
 
                        // Output errors for any missing text rows
-                       foreach ( $missingTextRows as $oldId => $revId ) {
+                       foreach ( $missingTextRows as $oldId => $revIds ) {
                                $this->addError( 'restore revision', "Error: missing text row", $oldId );
                        }
 
@@ -371,13 +400,13 @@ class CheckStorage {
                if ( is_array( $ids ) ) {
                        $revIds = [];
                        foreach ( $ids as $id ) {
-                               $revIds = array_merge( $revIds, array_keys( $this->oldIdMap, $id ) );
+                               $revIds = array_unique( array_merge( $revIds, $this->oldIdMap[$id] ) );
                        }
                        print "$msg in text rows " . implode( ', ', $ids ) .
                                ", revisions " . implode( ', ', $revIds ) . "\n";
                } else {
                        $id = $ids;
-                       $revIds = array_keys( $this->oldIdMap, $id );
+                       $revIds = $this->oldIdMap[$id];
                        if ( count( $revIds ) == 1 ) {
                                print "$msg in old_id $id, rev_id {$revIds[0]}\n";
                        } else {
index ac4e120..d3e9ce2 100644 (file)
@@ -40,6 +40,8 @@
  * @file
  * @ingroup Maintenance ExternalStorage
  */
+use MediaWiki\MediaWikiServices;
+use MediaWiki\Revision\SlotRecord;
 
 require_once __DIR__ . '/../Maintenance.php';
 
@@ -49,16 +51,6 @@ require_once __DIR__ . '/../Maintenance.php';
  * @ingroup Maintenance ExternalStorage
  */
 class CompressOld extends Maintenance {
-       /**
-        * Option to load each revision individually.
-        */
-       const LS_INDIVIDUAL = 0;
-
-       /**
-        * Option to load revisions in chunks.
-        */
-       const LS_CHUNKED = 1;
-
        public function __construct() {
                parent::__construct();
                $this->addDescription( 'Compress the text of a wiki' );
@@ -233,7 +225,7 @@ class CompressOld extends Maintenance {
        private function compressWithConcat( $startId, $maxChunkSize, $beginDate,
                $endDate, $extdb = "", $maxPageId = false
        ) {
-               $loadStyle = self::LS_CHUNKED;
+               global $wgMultiContentRevisionSchemaMigrationStage;
 
                $dbr = $this->getDB( DB_REPLICA );
                $dbw = $this->getDB( DB_MASTER );
@@ -288,17 +280,25 @@ class CompressOld extends Maintenance {
                        }
                        $conds[] = "rev_timestamp<'" . $endDate . "'";
                }
-               if ( $loadStyle == self::LS_CHUNKED ) {
+
+               if ( $wgMultiContentRevisionSchemaMigrationStage & SCHEMA_COMPAT_READ_OLD ) {
                        $tables = [ 'revision', 'text' ];
-                       $fields = [ 'rev_id', 'rev_text_id', 'old_flags', 'old_text' ];
                        $conds[] = 'rev_text_id=old_id';
-                       $revLoadOptions = 'FOR UPDATE';
                } else {
-                       $tables = [ 'revision' ];
-                       $fields = [ 'rev_id', 'rev_text_id' ];
-                       $revLoadOptions = [];
+                       $slotRoleStore = MediaWikiServices::getInstance()->getSlotRoleStore();
+                       $tables = [ 'revision', 'slots', 'content', 'text' ];
+                       $conds = array_merge( [
+                               'rev_id=slot_revision_id',
+                               'slot_role_id=' . $slotRoleStore->getId( SlotRecord::MAIN ),
+                               'content_id=slot_content_id',
+                               'SUBSTRING(content_address, 1, 3)=' . $dbr->addQuotes( 'tt:' ),
+                               'SUBSTRING(content_address, 4)=old_id',
+                       ], $conds );
                }
 
+               $fields = [ 'rev_id', 'old_id', 'old_flags', 'old_text' ];
+               $revLoadOptions = 'FOR UPDATE';
+
                # Don't work with current revisions
                # Don't lock the page table for update either -- TS 2006-04-04
                # $tables[] = 'page';
@@ -359,24 +359,14 @@ class CompressOld extends Maintenance {
                                $stubs = [];
                                $this->beginTransaction( $dbw, __METHOD__ );
                                $usedChunk = false;
-                               $primaryOldid = $revs[$i]->rev_text_id;
+                               $primaryOldid = $revs[$i]->old_id;
 
                                # Get the text of each revision and add it to the object
                                for ( $j = 0; $j < $thisChunkSize && $chunk->isHappy(); $j++ ) {
-                                       $oldid = $revs[$i + $j]->rev_text_id;
+                                       $oldid = $revs[$i + $j]->old_id;
 
                                        # Get text
-                                       if ( $loadStyle == self::LS_INDIVIDUAL ) {
-                                               $textRow = $dbw->selectRow( 'text',
-                                                       [ 'old_flags', 'old_text' ],
-                                                       [ 'old_id' => $oldid ],
-                                                       __METHOD__,
-                                                       'FOR UPDATE'
-                                               );
-                                               $text = Revision::getRevisionText( $textRow );
-                                       } else {
-                                               $text = Revision::getRevisionText( $revs[$i + $j] );
-                                       }
+                                       $text = Revision::getRevisionText( $revs[$i + $j] );
 
                                        if ( $text === false ) {
                                                $this->error( "\nError, unable to get text in old_id $oldid" );
@@ -444,13 +434,13 @@ class CompressOld extends Maintenance {
                                                # Store the stub objects
                                                for ( $j = 1; $j < $thisChunkSize; $j++ ) {
                                                        # Skip if not compressing and don't overwrite the first revision
-                                                       if ( $stubs[$j] !== false && $revs[$i + $j]->rev_text_id != $primaryOldid ) {
+                                                       if ( $stubs[$j] !== false && $revs[$i + $j]->old_id != $primaryOldid ) {
                                                                $dbw->update( 'text',
                                                                        [ /* SET */
                                                                                'old_text' => serialize( $stubs[$j] ),
                                                                                'old_flags' => 'object,utf-8',
                                                                        ], [ /* WHERE */
-                                                                               'old_id' => $revs[$i + $j]->rev_text_id
+                                                                               'old_id' => $revs[$i + $j]->old_id
                                                                        ]
                                                                );
                                                        }
index 2dd48ca..385ae6a 100644 (file)
@@ -23,6 +23,7 @@
  */
 
 use MediaWiki\MediaWikiServices;
+use MediaWiki\Revision\SlotRecord;
 use Wikimedia\Rdbms\DBConnectionError;
 
 require __DIR__ . '/../commandLine.inc';
@@ -130,6 +131,8 @@ class TrackBlobs {
         *  Scan the revision table for rows stored in the specified clusters
         */
        function trackRevisions() {
+               global $wgMultiContentRevisionSchemaMigrationStage;
+
                $dbw = wfGetDB( DB_MASTER );
                $dbr = wfGetDB( DB_REPLICA );
 
@@ -141,20 +144,40 @@ class TrackBlobs {
 
                echo "Finding revisions...\n";
 
+               $fields = [ 'rev_id', 'rev_page', 'old_id', 'old_flags', 'old_text' ];
+               $options = [
+                       'ORDER BY' => 'rev_id',
+                       'LIMIT' => $this->batchSize
+               ];
+               $conds = [
+                       $textClause,
+                       'old_flags ' . $dbr->buildLike( $dbr->anyString(), 'external', $dbr->anyString() ),
+               ];
+               if ( $wgMultiContentRevisionSchemaMigrationStage & SCHEMA_COMPAT_READ_OLD ) {
+                       $tables = [ 'revision', 'text' ];
+                       $conds = array_merge( [
+                               'rev_text_id=old_id',
+                       ], $conds );
+               } else {
+                       $slotRoleStore = MediaWikiServices::getInstance()->getSlotRoleStore();
+                       $tables = [ 'revision', 'slots', 'content', 'text' ];
+                       $conds = array_merge( [
+                               'rev_id=slot_revision_id',
+                               'slot_role_id=' . $slotRoleStore->getId( SlotRecord::MAIN ),
+                               'content_id=slot_content_id',
+                               'SUBSTRING(content_address, 1, 3)=' . $dbr->addQuotes( 'tt:' ),
+                               'SUBSTRING(content_address, 4)=old_id',
+                       ], $conds );
+               }
+
                while ( true ) {
-                       $res = $dbr->select( [ 'revision', 'text' ],
-                               [ 'rev_id', 'rev_page', 'old_id', 'old_flags', 'old_text' ],
-                               [
+                       $res = $dbr->select( $tables,
+                               $fields,
+                               array_merge( [
                                        'rev_id > ' . $dbr->addQuotes( $startId ),
-                                       'rev_text_id=old_id',
-                                       $textClause,
-                                       'old_flags ' . $dbr->buildLike( $dbr->anyString(), 'external', $dbr->anyString() ),
-                               ],
+                               ], $conds ),
                                __METHOD__,
-                               [
-                                       'ORDER BY' => 'rev_id',
-                                       'LIMIT' => $this->batchSize
-                               ]
+                               $options
                        );
                        if ( !$res->numRows() ) {
                                break;
index d9a094c..a585cf3 100644 (file)
                configure: function ( context, property, value ) {
                        var newCSS,
                                $result, $results, $spanForWidth, childrenWidth,
+                               regionIsFixed, regionPosition,
                                i, expWidth, maxWidth, text;
 
                        // Validate creation using fallback values
                                                        // Rebuild the suggestions list
                                                        context.data.$container.show();
                                                        // Update the size and position of the list
+                                                       regionIsFixed = ( function () {
+                                                               var $el = context.config.$region;
+                                                               do {
+                                                                       if ( $el.css( 'position' ) === 'fixed' ) {
+                                                                               return true;
+                                                                       }
+                                                                       $el = $( $el[ 0 ].offsetParent );
+                                                               } while ( $el.length );
+                                                               return false;
+                                                       }() );
+                                                       regionPosition = regionIsFixed ?
+                                                               context.config.$region[ 0 ].getBoundingClientRect() :
+                                                               context.config.$region.offset();
                                                        newCSS = {
-                                                               top: context.config.$region.offset().top + context.config.$region.outerHeight(),
+                                                               position: regionIsFixed ? 'fixed' : 'absolute',
+                                                               top: regionPosition.top + context.config.$region.outerHeight(),
                                                                bottom: 'auto',
                                                                width: context.config.$region.outerWidth(),
                                                                height: 'auto'
                                                                                        expandFrom = 'start';
                                                                                } else {
                                                                                        // Calculate the center points of the input and document
-                                                                                       regionCenter = $region.offset().left + regionWidth / 2;
+                                                                                       regionCenter = regionPosition.left + regionWidth / 2;
                                                                                        docCenter = docWidth / 2;
                                                                                        if ( Math.abs( regionCenter - docCenter ) < ( 0.10 * docCenter ) ) {
                                                                                                // If the input's center is within 10% of the document center
 
                                                        if ( context.config.expandFrom === 'left' ) {
                                                                // Expand from left
-                                                               newCSS.left = context.config.$region.offset().left;
+                                                               newCSS.left = regionPosition.left;
                                                                newCSS.right = 'auto';
                                                        } else {
                                                                // Expand from right
                                                                newCSS.left = 'auto';
-                                                               newCSS.right = $( 'body' ).width() - ( context.config.$region.offset().left + context.config.$region.outerWidth() );
+                                                               newCSS.right = $( 'body' ).width() - ( regionPosition.left + context.config.$region.outerWidth() );
                                                        }
 
                                                        context.data.$container.css( newCSS );
index 17caa9e..b62b45e 100644 (file)
@@ -19,9 +19,6 @@
                this.$galleryBox = this.$gallery.find( '.gallerybox' );
                this.$currentImage = null;
                this.imageInfoCache = {};
-               if ( this.$gallery.parent().attr( 'id' ) !== 'mw-content-text' ) {
-                       this.$container = this.$gallery.parent();
-               }
 
                // Initialize
                this.drawCarousel();
         * @property {jQuery} $currentImage The `<li>` element of the current image.
         */
 
-       /**
-        * @property {jQuery} $container If the gallery contained in an element that is
-        *   not the main content element, then it stores that element.
-        */
-
        /**
         * @property {Object} imageInfoCache A key value pair of thumbnail URLs and image info.
         */
         * Draws the carousel and the interface around it.
         */
        mw.GallerySlideshow.prototype.drawCarousel = function () {
-               var next, prev, toggle, interfaceElements, carouselStack;
+               var nextButton, prevButton, toggleButton, interfaceElements, carouselStack;
 
                this.$carousel = $( '<li>' ).addClass( 'gallerycarousel' );
 
                // Buttons for the interface
-               prev = new OO.ui.ButtonWidget( {
+               prevButton = new OO.ui.ButtonWidget( {
                        framed: false,
                        icon: 'previous'
-               } ).on( 'click', this.prevImage.bind( this ) );
+               } ).connect( this, { click: 'prevImage' } );
 
-               next = new OO.ui.ButtonWidget( {
+               nextButton = new OO.ui.ButtonWidget( {
                        framed: false,
                        icon: 'next'
-               } ).on( 'click', this.nextImage.bind( this ) );
+               } ).connect( this, { click: 'nextImage' } );
 
-               toggle = new OO.ui.ButtonWidget( {
+               toggleButton = new OO.ui.ButtonWidget( {
                        framed: false,
                        icon: 'imageGallery',
                        title: mw.msg( 'gallery-slideshow-toggle' )
-               } ).on( 'click', this.toggleThumbnails.bind( this ) );
+               } ).connect( this, { click: 'toggleThumbnails' } );
 
                interfaceElements = new OO.ui.PanelLayout( {
                        expanded: false,
                        classes: [ 'mw-gallery-slideshow-buttons' ],
                        $content: $( '<div>' ).append(
-                               prev.$element,
-                               toggle.$element,
-                               next.$element
+                               prevButton.$element,
+                               toggleButton.$element,
+                               nextButton.$element
                        )
                } );
                this.$interface = interfaceElements.$element;
         * size.
         */
        mw.GallerySlideshow.prototype.setSizeRequirement = function () {
-               var w, h;
-
-               if ( this.$container !== undefined ) {
-                       w = this.$container.width() * 0.9;
-                       h = ( this.$container.height() - this.getChromeHeight() ) * 0.9;
-               } else {
-                       w = this.$imgContainer.width();
+               var w = this.$imgContainer.width(),
                        h = Math.min( $( window ).height() * ( 3 / 4 ), this.$imgContainer.width() ) - this.getChromeHeight();
-               }
 
                // Only update and flush the cache if the size changed
                if ( w !== this.imageWidth || h !== this.imageHeight ) {
         * @return {number} Height
         */
        mw.GallerySlideshow.prototype.getChromeHeight = function () {
-               return this.$interface.outerHeight() + this.$galleryCaption.outerHeight();
+               return this.$interface.outerHeight() + ( this.$galleryCaption.outerHeight() || 0 );
        };
 
        /**
         * Sets the height and width of {@link #$img} based on the
         * proportion of the image and the values generated by
         * {@link #setSizeRequirement}.
-        *
-        * @return {boolean} Whether or not the image was sized.
         */
        mw.GallerySlideshow.prototype.setImageSize = function () {
                if ( this.$img === undefined || this.$thumbnail === undefined ) {
-                       return false;
+                       return;
                }
 
                // Reset height and width
                                info.thumbwidth < this.$img.width() ||
                                info.thumbheight < this.$img.height()
                        ) {
-                               this.$img.attr( 'width', info.thumbwidth + 'px' );
-                               this.$img.attr( 'height', info.thumbheight + 'px' );
+                               this.$img.attr( {
+                                       width: info.thumbwidth + 'px',
+                                       height: info.thumbheight + 'px'
+                               } );
                        }
                }.bind( this ) );
-
-               return true;
        };
 
        /**
         * Displays the image set as {@link #$currentImage} in the carousel.
         */
        mw.GallerySlideshow.prototype.showCurrentImage = function () {
-               var imageLi = this.getCurrentImage(),
-                       caption = imageLi.find( '.gallerytext' );
+               var $thumbnail,
+                       $imageLi = this.getCurrentImage(),
+                       $caption = $imageLi.find( '.gallerytext' );
 
                // The order of the following is important for size calculations
                // 1. Highlight current thumbnail
                this.$gallery
                        .find( '.gallerybox.slideshow-current' )
                        .removeClass( 'slideshow-current' );
-               imageLi.addClass( 'slideshow-current' );
+               $imageLi.addClass( 'slideshow-current' );
 
                // 2. Show thumbnail
-               this.$thumbnail = imageLi.find( 'img' );
-               this.$img.attr( 'src', this.$thumbnail.attr( 'src' ) );
-               this.$img.attr( 'alt', this.$thumbnail.attr( 'alt' ) );
-               this.$imgLink.attr( 'href', imageLi.find( 'a' ).eq( 0 ).attr( 'href' ) );
+               this.$thumbnail = $imageLi.find( 'img' );
+               this.$img.attr( {
+                       src: this.$thumbnail.attr( 'src' ),
+                       alt: this.$thumbnail.attr( 'alt' )
+               } );
+               this.$imgLink.attr( 'href', $imageLi.find( 'a' ).eq( 0 ).attr( 'href' ) );
 
                // 3. Copy caption
                this.$imgCaption
                        .empty()
-                       .append( caption.clone() );
+                       .append( $caption.clone() );
 
                // 4. Stretch thumbnail to correct size
                this.setImageSize();
 
+               $thumbnail = this.$thumbnail;
                // 5. Load image at the required size
-               this.loadImage( this.$thumbnail ).done( function ( info, $img ) {
+               this.loadImage( this.$thumbnail ).done( function ( info ) {
                        // Show this image to the user only if its still the current one
-                       if ( this.$thumbnail.attr( 'src' ) === $img.attr( 'src' ) ) {
+                       if ( this.$thumbnail.attr( 'src' ) === $thumbnail.attr( 'src' ) ) {
                                this.$img.attr( 'src', info.thumburl );
                                this.setImageSize();
 
-                               // Keep the next image ready
+                               // Pre-fetch the next image
                                this.loadImage( this.getNextImage().find( 'img' ) );
                        }
                }.bind( this ) );
        /**
         * Loads the full image given the `<img>` element of the thumbnail.
         *
-        * @param {Object} $img
+        * @param {jQuery} $img
         * @return {jQuery.Promise} Resolves with the images URL and original
-        *   element once the image has loaded.
+        *  element once the image has loaded.
         */
        mw.GallerySlideshow.prototype.loadImage = function ( $img ) {
                var img, d = $.Deferred();
                        img = new Image();
                        img.src = info.thumburl;
                        img.onload = function () {
-                               d.resolve( info, $img );
+                               d.resolve( info );
                        };
                        img.onerror = function () {
                                d.reject();
index 70677b9..d5357e0 100644 (file)
@@ -117,6 +117,7 @@ ChangesListViewModel.prototype.extractNextFrom = function ( $fieldset ) {
        var data = $fieldset.find( '.rclistfrom > a, .wlinfo' ).data( 'params' );
        if ( data && data.from ) {
                this.nextFrom = data.from;
+               this.nextFromFormatted = data.fromFormatted;
        }
 };
 
@@ -127,6 +128,13 @@ ChangesListViewModel.prototype.getNextFrom = function () {
        return this.nextFrom;
 };
 
+/**
+ * @return {string} The 'from' parameter formatted per the user's datetime format preference
+ */
+ChangesListViewModel.prototype.getNextFromFormatted = function () {
+       return this.nextFromFormatted;
+};
+
 /**
  * Toggle the 'live update' feature on/off
  *
index ce9656e..a0f098c 100644 (file)
@@ -67,7 +67,6 @@ FilterWrapperWidget = function MwRcfiltersUiFilterWrapperWidget(
        this.showNewChangesLink = new OO.ui.ButtonWidget( {
                icon: 'reload',
                framed: false,
-               label: mw.msg( 'rcfilters-show-new-changes' ),
                flags: [ 'progressive' ],
                classes: [ 'mw-rcfilters-ui-filterWrapperWidget-showNewChanges' ]
        } );
@@ -131,6 +130,14 @@ FilterWrapperWidget.prototype.onShowNewChangesClick = function () {
  * @param {boolean} newChangesExist Whether new changes exist
  */
 FilterWrapperWidget.prototype.onNewChangesExist = function ( newChangesExist ) {
+       if ( newChangesExist ) {
+               this.showNewChangesLink.setLabel(
+                       mw.message(
+                               'rcfilters-show-new-changes',
+                               this.changesListModel.getNextFromFormatted()
+                       ).text()
+               );
+       }
        this.showNewChangesLink.toggle( newChangesExist );
 };
 
index 240757c..f2d964a 100644 (file)
@@ -69,9 +69,11 @@ function isCompatible( ua ) {
                // https://caniuse.com/#feat=addeventlistener
                'addEventListener' in window &&
 
-               // Hardcoded exceptions for browsers that pass the requirement but we don't want to
-               // support in the modern run-time.
-               // Note: Please extend the regex instead of adding new ones
+               // Hardcoded exceptions for browsers that pass the requirement but we don't
+               // want to support in the modern run-time.
+               //
+               // Please extend the regex instead of adding new ones!
+               // And add a test case to startup.test.js
                !ua.match( /MSIE 10|webOS\/1\.[0-4]|SymbianOS|Series60|NetFront|Opera Mini|S40OviBrowser|MeeGo|Android.+Glass|^Mozilla\/5\.0 .+ Gecko\/$|googleweblight|PLAYSTATION|PlayStation/ )
        );
 }
index 91ce9ea..f444d40 100644 (file)
@@ -105,7 +105,8 @@ class LogFormatterTest extends MediaWikiLangTestCase {
                $userTools = Linker::userToolLinksRedContribs(
                        $this->user->getId(),
                        $this->user->getName(),
-                       $this->user->getEditCount()
+                       $this->user->getEditCount(),
+                       false
                );
 
                $titleLink = Linker::link( $this->title, null, [], [] );
index e577643..9afa232 100644 (file)
@@ -34,16 +34,27 @@ class MessageBlobStoreTest extends PHPUnit\Framework\TestCase {
                $this->assertEquals( '{"mainpage":"Main Page"}', $blob, 'Generated blob' );
        }
 
+       public function testBlobCreation_empty() {
+               $module = $this->makeModule( [] );
+               $rl = new ResourceLoader();
+               $rl->register( $module->getName(), $module );
+
+               $blobStore = $this->makeBlobStore( null, $rl );
+               $blob = $blobStore->getBlob( $module, 'en' );
+
+               $this->assertEquals( '{}', $blob, 'Generated blob' );
+       }
+
        public function testBlobCreation_unknownMessage() {
-               $module = $this->makeModule( [ 'i-dont-exist' ] );
+               $module = $this->makeModule( [ 'i-dont-exist', 'mainpage', 'i-dont-exist2' ] );
                $rl = new ResourceLoader();
                $rl->register( $module->getName(), $module );
                $blobStore = $this->makeBlobStore( null, $rl );
 
-               // Generating a blob should succeed without errors,
-               // even if a message is unknown.
+               // Generating a blob should continue without errors,
+               // with keys of unknown messages excluded from the blob.
                $blob = $blobStore->getBlob( $module, 'en' );
-               $this->assertEquals( '{"i-dont-exist":"\u29fci-dont-exist\u29fd"}', $blob, 'Generated blob' );
+               $this->assertEquals( '{"mainpage":"Main Page"}', $blob, 'Generated blob' );
        }
 
        public function testMessageCachingAndPurging() {
index cc7df8d..21b6468 100644 (file)
@@ -246,19 +246,6 @@ class NamespaceInfoTest extends MediaWikiTestCase {
                $this->assertSame( $actual, $expected, "NS $index" );
        }
 
-       /**
-        * @dataProvider provideHasTalkNamespace
-        * @covers MWNamespace::canTalk
-        *
-        * @param int $index
-        * @param bool $expected
-        */
-       public function testCanTalk( $index, $expected ) {
-               $this->hideDeprecated( 'MWNamespace::canTalk' );
-               $actual = MWNamespace::canTalk( $index );
-               $this->assertSame( $actual, $expected, "NS $index" );
-       }
-
        private function assertIsContent( $ns ) {
                $this->assertTrue( $this->obj->isContent( $ns ) );
        }
index 050f07d..b9b8306 100644 (file)
@@ -1052,6 +1052,27 @@ class LanguageTest extends LanguageClassesTestCase {
                                '平成24',
                                'nengo'
                        ],
+                       [
+                               'xtY',
+                               '20190430235959',
+                               '平成31',
+                               '平成31',
+                               'nengo - last day of heisei'
+                       ],
+                       [
+                               'xtY',
+                               '20190501000000',
+                               '令和元',
+                               '令和元',
+                               'nengo - first day of reiwa'
+                       ],
+                       [
+                               'xtY',
+                               '20200501000000',
+                               '令和2',
+                               '令和2',
+                               'nengo - second year of reiwa'
+                       ],
                        [
                                'xrxkYY',
                                '20120102090705',
index 6a704b5..e286dd8 100644 (file)
 /* global isCompatible: true */
 ( function () {
-       var testcases = {
-               tested: [
-                       /* Grade A */
+       var featureTestable, blacklisted;
 
-                       // Chrome
-                       'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16',
-                       // Firefox 4+
-                       'Mozilla/5.0 (Windows NT 6.1.1; rv:5.0) Gecko/20100101 Firefox/5.0',
-                       'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0',
-                       'Mozilla/5.0 (Macintosh; I; Intel Mac OS X 11_7_9; de-LI; rv:1.9b4) Gecko/2012010317 Firefox/10.0a4',
-                       'Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0',
-                       'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20120403211507 Firefox/12.0',
-                       'Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1',
-                       // Kindle Fire
-                       'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1',
-                       // Safari 5.0+
-                       'Mozilla/5.0 (Macintosh; I; Intel Mac OS X 10_6_7; ru-ru) AppleWebKit/534.31+ (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1',
-                       // Opera 15+ (Chromium-based)
-                       'Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36 OPR/15.0.1147.153',
-                       'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36 OPR/16.0.1196.62',
-                       'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36 OPR/23.0.1522.75',
-                       // Internet Explorer 11
-                       'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko',
-                       // Edge
-                       'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246',
-                       // Edge Mobile
-                       'Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 640 XL LTE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166',
-                       // BlackBerry 6+
-                       'Mozilla/5.0 (BlackBerry; U; BlackBerry 9300; en) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.570 Mobile Safari/534.8+',
-                       'Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+',
-                       'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.3+ (KHTML, like Gecko) Version/10.0.9.386 Mobile Safari/537.3+',
-                       // Open WebOS 1.4+ (HP Veer 4G)
-                       'Mozilla/5.0 (webOS/2.1.2; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 P160UNA/1.0',
-                       // Firefox Mobile
-                       'Mozilla/5.0 (Mobile; rv:14.0) Gecko/14.0 Firefox/14.0',
-                       // iOS
-                       'Mozilla/5.0 (ipod: U;CPU iPhone OS 2_2 like Mac OS X: es_es) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3',
-                       'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3',
-                       // Android
-                       'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17',
-                       // UC Mini (speed mode off)
-                       'Mozilla/5.0 (Linux; U; Android 6.0.1; en-US; Nexus_5 Build/MMB29S) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1 UCBrowser/10.7.6.805 Mobile',
+       // Browsers that pass or fail the feature test and get bucketed
+       // correctly as Grade A and Grade C. This is tested here to make
+       // sure they don't get caught in any bad UX-snif regexes
+       featureTestable = [
+               /* Grade A */
 
-                       /* Grade C */
+               // Chrome
+               'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.205 Safari/534.16',
+               // Firefox 4+
+               'Mozilla/5.0 (Windows NT 6.1.1; rv:5.0) Gecko/20100101 Firefox/5.0',
+               'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0',
+               'Mozilla/5.0 (Macintosh; I; Intel Mac OS X 11_7_9; de-LI; rv:1.9b4) Gecko/2012010317 Firefox/10.0a4',
+               'Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0',
+               'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20120403211507 Firefox/12.0',
+               'Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1',
+               // Kindle Fire
+               'Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Kindle Fire Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1',
+               // Safari 5.0+
+               'Mozilla/5.0 (Macintosh; I; Intel Mac OS X 10_6_7; ru-ru) AppleWebKit/534.31+ (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1',
+               // Opera 15+ (Chromium-based)
+               'Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36 OPR/15.0.1147.153',
+               'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36 OPR/16.0.1196.62',
+               'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36 OPR/23.0.1522.75',
+               // Internet Explorer 11
+               'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko',
+               // Edge
+               'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246',
+               // Edge Mobile
+               'Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 640 XL LTE) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10166',
+               // BlackBerry 6+
+               'Mozilla/5.0 (BlackBerry; U; BlackBerry 9300; en) AppleWebKit/534.8+ (KHTML, like Gecko) Version/6.0.0.570 Mobile Safari/534.8+',
+               'Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.1.0.346 Mobile Safari/534.11+',
+               'Mozilla/5.0 (BB10; Touch) AppleWebKit/537.3+ (KHTML, like Gecko) Version/10.0.9.386 Mobile Safari/537.3+',
+               // Open WebOS 1.4+ (HP Veer 4G)
+               'Mozilla/5.0 (webOS/2.1.2; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 P160UNA/1.0',
+               // Firefox Mobile
+               'Mozilla/5.0 (Mobile; rv:14.0) Gecko/14.0 Firefox/14.0',
+               // iOS
+               'Mozilla/5.0 (ipod: U;CPU iPhone OS 2_2 like Mac OS X: es_es) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3',
+               'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3',
+               // Android
+               'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17',
+               // UC Mini (speed mode off)
+               'Mozilla/5.0 (Linux; U; Android 6.0.1; en-US; Nexus_5 Build/MMB29S) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1 UCBrowser/10.7.6.805 Mobile',
 
-                       // Internet Explorer < 10
-                       'Mozilla/2.0 (compatible; MSIE 3.03; Windows 3.1)',
-                       'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)',
-                       'Mozilla/4.0 (compatible; MSIE 5.0; Windows 98;)',
-                       'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
-                       'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)',
-                       'Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; en-US)',
-                       'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; Media Center PC 4.0; SLCC1; .NET CLR 3.0.04320)',
-                       'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)',
-                       // Firefox < 4
-                       'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2',
-                       'Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.1.1) Gecko/20070311 Firefox/2.0.0.1',
-                       'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3',
-                       // Opera < 15 (Presto-based)
-                       'Mozilla/5.0 (Windows NT 5.0; U) Opera 7.54 [en]',
-                       'Opera/7.54 (Windows NT 5.0; U) [en]',
-                       'Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.0',
-                       'Opera/8.0 (X11; Linux i686; U; cs)',
-                       'Opera/9.00 (X11; Linux i686; U; de)',
-                       'Opera/9.62 (X11; Linux i686; U; en) Presto/2.1.1',
-                       'Opera/9.80 (Windows NT 6.1; U; en) Presto/2.2.15 Version/10.00',
-                       'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.8.131 Version/11.10',
-                       'Opera/9.80 (Windows NT 6.1; WOW64; U; pt) Presto/2.10.229 Version/11.62',
-                       'Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00',
-                       'Opera/9.80 (Windows NT 5.1) Presto/2.12.388 Version/12.17',
-                       // BlackBerry < 6
-                       'BlackBerry9300/5.0.0.716 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/133',
-                       'BlackBerry7250/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1',
+               /* Grade C */
 
-                       /* Grade X */
+               // Internet Explorer < 10
+               'Mozilla/2.0 (compatible; MSIE 3.03; Windows 3.1)',
+               'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)',
+               'Mozilla/4.0 (compatible; MSIE 5.0; Windows 98;)',
+               'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
+               'Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1)',
+               'Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; en-US)',
+               'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; Media Center PC 4.0; SLCC1; .NET CLR 3.0.04320)',
+               'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 7.1; Trident/5.0)',
+               // Firefox < 4
+               'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2',
+               'Mozilla/5.0 (X11; U; Linux i686; nl; rv:1.8.1.1) Gecko/20070311 Firefox/2.0.0.1',
+               'Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3',
+               // Opera < 15 (Presto-based)
+               'Mozilla/5.0 (Windows NT 5.0; U) Opera 7.54 [en]',
+               'Opera/7.54 (Windows NT 5.0; U) [en]',
+               'Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.0',
+               'Opera/8.0 (X11; Linux i686; U; cs)',
+               'Opera/9.00 (X11; Linux i686; U; de)',
+               'Opera/9.62 (X11; Linux i686; U; en) Presto/2.1.1',
+               'Opera/9.80 (Windows NT 6.1; U; en) Presto/2.2.15 Version/10.00',
+               'Opera/9.80 (Windows NT 6.1; U; ru) Presto/2.8.131 Version/11.10',
+               'Opera/9.80 (Windows NT 6.1; WOW64; U; pt) Presto/2.10.229 Version/11.62',
+               'Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00',
+               'Opera/9.80 (Windows NT 5.1) Presto/2.12.388 Version/12.17',
+               // BlackBerry < 6
+               'BlackBerry9300/5.0.0.716 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/133',
+               'BlackBerry7250/4.0.0 Profile/MIDP-2.0 Configuration/CLDC-1.1',
 
-                       // Gecko
-                       'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060928 (Debian|Debian-1.8.0.7-1) Epiphany/2.14',
-                       'Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.6) Gecko/20070817 IceWeasel/2.0.0.6-g2',
-                       // KHTML
-                       'Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.4 (like Gecko)',
-                       'Mozilla/5.0 (compatible; Konqueror/4.3; Linux) KHTML/4.3.5 (like Gecko)',
-                       // Text browsers
-                       'Links (2.1pre33; Darwin 8.11.0 Power Macintosh; x)',
-                       'Links (6.9; Unix 6.9-astral sparc; 80x25)',
-                       'Lynx/2.8.6rel.4 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8g',
-                       'w3m/0.5.1',
-                       // Bots
-                       'Googlebot/2.1 (+http://www.google.com/bot.html)',
-                       'Mozilla/5.0 (compatible; googlebot/2.1; +http://www.google.com/bot.html)',
-                       'Mozilla/5.0 (compatible; YandexBot/3.0)',
-                       // Scripts
-                       'curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5',
-                       'Wget/1.9',
-                       'Wget/1.10.1 (Red Hat modified)',
-                       // Unknown
-                       'I\'m an unknown browser',
-                       'I\'m an unknown Glass browser',
-                       // Empty
-                       ''
-               ],
-               blacklisted: [
-                       /* Grade C */
+               /* Grade X */
 
-                       // Internet Explorer 10
-                       'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)',
-                       // IE Mobile 10
-                       'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; Windows Phone 8X by HTC)',
-                       // PlayStation
-                       'Mozilla/5.0 (PLAYSTATION 3; 1.10)',
-                       'Mozilla/5.0 (PLAYSTATION 3; 3.55)',
-                       'Mozilla/5.0 (PLAYSTATION 3 4.21) AppleWebKit/531.22.8 (KHTML, like Gecko)',
-                       'Mozilla/5.0 (PlayStation 4 1.70) AppleWebKit/536.26 (KHTML, like Gecko)',
-                       // Open WebOS < 1.5 (Palm Pre, Palm Pixi)
-                       'Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0',
-                       'Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1 ',
-                       // SymbianOS
-                       'NokiaN95_8GB-3;Mozilla/5.0 SymbianOS/9.2;U;Series60/3.1 NokiaN95_8GB-3/11.2.011 Profile/MIDP-2.0 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML, like Gecko)',
-                       'Nokia7610/2.0 (5.0509.0) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0 ',
-                       'Mozilla/5.0 (SymbianOS/9.1; U; [en]; SymbianOS/91 Series60/3.0) AppleWebKit/413 (KHTML, like Gecko) Safari/413',
-                       'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-2/091.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.34 Mobile Safari/533.4',
-                       // NetFront
-                       'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)',
-                       'Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 824x1200; rotate)',
-                       'Mozilla/4.08 (Windows; Mobile Content Viewer/1.0) NetFront/3.2',
-                       // Opera Mini
-                       'Opera/9.80 (J2ME/MIDP; Opera Mini/3.1.10423/22.387; U; en) Presto/2.5.25 Version/10.54',
-                       'Opera/9.50 (J2ME/MIDP; Opera Mini/4.0.10031/298; U; en)',
-                       'Opera/9.80 (J2ME/MIDP; Opera Mini/6.24093/26.1305; U; en) Presto/2.8.119 Version/10.54',
-                       'Opera/9.80 (Android; Opera Mini/7.29530/27.1407; U; en) Presto/2.8.119 Version/11.10',
-                       // Ovi Browser
-                       'Mozilla/5.0 (Series40; NokiaX3-02/05.60; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.2.0.0.6',
-                       'Mozilla/5.0 (Series40; Nokia305/05.92; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11',
-                       // Google Glass
-                       'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Glass 1 Build/IMM76L; XE11) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
-                       // MeeGo
-                       'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13',
-                       // UC Mini (speed mode on)
-                       'Mozilla/5.0 (X11; U; Linux i686; zh-CN; r:1.2.3.4) Gecko/',
-                       // Google Web Light proxy
-                       'Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko; googleweblight) Chrome/38.0.1025.166 Mobile Safari/535.19'
-               ]
-       };
+               // Gecko
+               'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060928 (Debian|Debian-1.8.0.7-1) Epiphany/2.14',
+               'Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.8.1.6) Gecko/20070817 IceWeasel/2.0.0.6-g2',
+               // KHTML
+               'Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.4 (like Gecko)',
+               'Mozilla/5.0 (compatible; Konqueror/4.3; Linux) KHTML/4.3.5 (like Gecko)',
+               // Text browsers
+               'Links (2.1pre33; Darwin 8.11.0 Power Macintosh; x)',
+               'Links (6.9; Unix 6.9-astral sparc; 80x25)',
+               'Lynx/2.8.6rel.4 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8g',
+               'w3m/0.5.1',
+               // Bots
+               'Googlebot/2.1 (+http://www.google.com/bot.html)',
+               'Mozilla/5.0 (compatible; googlebot/2.1; +http://www.google.com/bot.html)',
+               'Mozilla/5.0 (compatible; YandexBot/3.0)',
+               // Scripts
+               'curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5',
+               'Wget/1.9',
+               'Wget/1.10.1 (Red Hat modified)',
+               // Unknown
+               'I\'m an unknown browser',
+               'I\'m an unknown Glass browser',
+               // Empty
+               ''
+       ];
+
+       // Browsers that pass the feature test but for which we chose to serve
+       // a Grade C experience instead. E.g. they have implementation bugs
+       // for which support would be more expensive than deem worthwhile.
+       blacklisted = [
+               /* Grade C */
+
+               // Internet Explorer 10
+               'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)',
+               // IE Mobile 10
+               'Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; Windows Phone 8X by HTC)',
+               // Open WebOS < 1.5 (Palm Pre, Palm Pixi)
+               'Mozilla/5.0 (webOS/1.0; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0',
+               'Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1 ',
+               // SymbianOS
+               'NokiaN95_8GB-3;Mozilla/5.0 SymbianOS/9.2;U;Series60/3.1 NokiaN95_8GB-3/11.2.011 Profile/MIDP-2.0 Configuration/CLDC-1.1 AppleWebKit/413 (KHTML, like Gecko)',
+               'Nokia7610/2.0 (5.0509.0) SymbianOS/7.0s Series60/2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0 ',
+               'Mozilla/5.0 (SymbianOS/9.1; U; [en]; SymbianOS/91 Series60/3.0) AppleWebKit/413 (KHTML, like Gecko) Safari/413',
+               'Mozilla/5.0 (SymbianOS/9.3; Series60/3.2 NokiaE52-2/091.003; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/533.4 (KHTML, like Gecko) NokiaBrowser/7.3.1.34 Mobile Safari/533.4',
+               // NetFront
+               'Mozilla/4.0 (compatible; Linux 2.6.10) NetFront/3.3 Kindle/1.0 (screen 600x800)',
+               'Mozilla/4.0 (compatible; Linux 2.6.22) NetFront/3.4 Kindle/2.0 (screen 824x1200; rotate)',
+               'Mozilla/4.08 (Windows; Mobile Content Viewer/1.0) NetFront/3.2',
+               // Opera Mini
+               'Opera/9.80 (J2ME/MIDP; Opera Mini/3.1.10423/22.387; U; en) Presto/2.5.25 Version/10.54',
+               'Opera/9.50 (J2ME/MIDP; Opera Mini/4.0.10031/298; U; en)',
+               'Opera/9.80 (J2ME/MIDP; Opera Mini/6.24093/26.1305; U; en) Presto/2.8.119 Version/10.54',
+               'Opera/9.80 (Android; Opera Mini/7.29530/27.1407; U; en) Presto/2.8.119 Version/11.10',
+               // Ovi Browser
+               'Mozilla/5.0 (Series40; NokiaX3-02/05.60; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.2.0.0.6',
+               'Mozilla/5.0 (Series40; Nokia305/05.92; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11',
+               // Google Glass
+               'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Glass 1 Build/IMM76L; XE11) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
+               // MeeGo
+               'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13',
+               // UC Mini (speed mode on)
+               'Mozilla/5.0 (X11; U; Linux i686; zh-CN; r:1.2.3.4) Gecko/',
+               // Google Web Light proxy
+               'Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 5 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko; googleweblight) Chrome/38.0.1025.166 Mobile Safari/535.19',
+               // PlayStation
+               'Mozilla/5.0 (PLAYSTATION 3; 1.10)',
+               'Mozilla/5.0 (PLAYSTATION 3; 3.55)',
+               'Mozilla/5.0 (PLAYSTATION 3 4.21) AppleWebKit/531.22.8 (KHTML, like Gecko)',
+               'Mozilla/5.0 (PlayStation 4 1.70) AppleWebKit/536.26 (KHTML, like Gecko)'
+       ];
 
        QUnit.module( 'startup', QUnit.newMwEnvironment() );
 
        QUnit.test( 'isCompatible( featureTestable )', function ( assert ) {
-               testcases.tested.forEach( function ( ua ) {
+               featureTestable.forEach( function ( ua ) {
                        assert.strictEqual( isCompatible( ua ), true, ua );
                } );
        } );
 
        QUnit.test( 'isCompatible( blacklisted )', function ( assert ) {
-               testcases.blacklisted.forEach( function ( ua ) {
+               blacklisted.forEach( function ( ua ) {
                        assert.strictEqual( isCompatible( ua ), false, ua );
                } );
        } );