Merge "Follow-up 2c74b043568e: Restore use of 'clearyourcache' message"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 19 Apr 2018 02:03:08 +0000 (02:03 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 19 Apr 2018 02:03:08 +0000 (02:03 +0000)
55 files changed:
INSTALL
RELEASE-NOTES-1.31
RELEASE-NOTES-1.32
autoload.php
composer.json
docs/scripts.txt
includes/DefaultSettings.php
includes/NoLocalSettings.php
includes/Setup.php
includes/WebRequest.php
includes/WebStart.php
includes/api/ApiMove.php
includes/filerepo/FileRepo.php
includes/import/ImportStreamSource.php
includes/installer/i18n/be-tarask.json
includes/installer/i18n/de.json
includes/installer/i18n/fr.json
includes/installer/i18n/he.json
includes/installer/i18n/li.json
includes/installer/i18n/mk.json
includes/installer/i18n/zh-hans.json
includes/installer/i18n/zh-hant.json
includes/libs/CryptRand.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/skins/MediaWikiI18N.php [deleted file]
includes/skins/QuickTemplate.php
includes/sparql/SparqlClient.php
includes/templates/NoLocalSettings.mustache
languages/i18n/be-tarask.json
languages/i18n/bs.json
languages/i18n/cdo.json
languages/i18n/de.json
languages/i18n/egl.json
languages/i18n/el.json
languages/i18n/eu.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/he.json
languages/i18n/ko.json
languages/i18n/lb.json
languages/i18n/li.json
languages/i18n/lv.json
languages/i18n/ml.json
languages/i18n/nl.json
languages/i18n/qqq.json
languages/i18n/sr-ec.json
languages/i18n/szl.json
languages/i18n/yue.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
resources/src/jquery/jquery.makeCollapsible.css
resources/src/jquery/jquery.makeCollapsible.js
tests/phpunit/ResourceLoaderTestCase.php
tests/phpunit/includes/api/ApiBaseTest.php
tests/phpunit/includes/api/ApiMoveTest.php [new file with mode: 0644]

diff --git a/INSTALL b/INSTALL
index 1a59f0b..3b93505 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -9,7 +9,7 @@ Required software:
 * Web server with PHP 5.5.9 or higher.
 * A SQL server, the following types are supported
 ** MySQL 5.5.8 or higher
-** PostgreSQL 8.3 or higher
+** PostgreSQL 9.2 or higher
 ** SQLite 3.3.7 or higher
 ** Oracle 9.0.1 or higher
 ** Microsoft SQL Server 2005 (9.00.1399)
index 21b29cb..9bdc32d 100644 (file)
@@ -37,6 +37,8 @@ production.
   set $wgTidyConfig to null and also set $wgUseTidy to true.
 * $wgLogAutopatrol now defaults to false instead of true.
 * $wgValidateAllHtml was removed and will be ignored.
+* $wgScriptExtension was removed (deprecated and ignored since 1.25).
+  See 1.25 release notes for more information.
 
 === New features in 1.31 ===
 * (T76554) User sub-pages named ….json are now protected in the same way that ….js
@@ -104,7 +106,7 @@ production.
 * Updated wikimedia/running-stat from 1.1.0 to 1.2.0.
 * Updated wikimedia/wrappedstring from 2.2.0 to 2.3.0.
 * Updated mediawiki/at-ease from 1.1.0 to 1.2.0.
-* Updated wikimedia/php-session-serializer from 1.0.4 to 1.0.5.
+* Updated wikimedia/php-session-serializer from 1.0.4 to 1.0.6.
 * Updated wikimedia/remex-html from 1.0.2 to 1.0.3.
 * …
 
@@ -121,6 +123,7 @@ production.
   'mediawiki.viewport' module instead.
 * The deprecated 'mediawiki.widgets.CategorySelector' module alias was removed.
   Use the 'mediawiki.widgets.CategoryMultiselectWidget' module directly instead.
+* mediawiki/at-ease was replaced with wikimedia/at-ease.
 
 === Bug fixes in 1.31 ===
 * (T90902) Non-breaking space in header ID breaks anchor
@@ -129,6 +132,9 @@ production.
 * (T185058) The 'name' value to tgprop for action=query&list=tags has been
   removed. It has never made a difference in the output, the name was always
   returned regardless.
+* The 'watch' and 'unwatch' parameters for action=move have been removed.  They
+  were deprecated and also accidentally nonfunctional since 1.17 in 2010.  Use
+  'watchlist' instead.
 
 === Action API internal changes in 1.31 ===
 * ApiBase::getProfileDBTime was removed (deprecated since 1.25)
@@ -372,7 +378,7 @@ Oracle and Microsoft SQL Server.
 
 The supported versions are:
 
-* MySQL 5.0.3 or later
+* MySQL 5.5.8 or later
 * PostgreSQL 9.2 or later
 * SQLite 3.3.7 or later
 * Oracle 9.0.1 or later
index 57c6e6a..291e418 100644 (file)
@@ -8,6 +8,7 @@ production.
 === Configuration changes in 1.32 ===
 * (T115414) The $wgEnableAPI and $wgEnableWriteAPI settings, deprecated in 1.31, have been removed.
 * The $wgUseAjax setting is now formally deprecated, and MediaWiki will act as if it is always set.
+* The $wgSiteSupportPage setting, unused since 1.5, was removed.
 * …
 
 === New features in 1.32 ===
@@ -42,8 +43,11 @@ changes to languages because of Phabricator reports.
 * …
 
 === Breaking changes in 1.32 ===
-* $wgRequestTime (deprecated in 1.25) was removed.
+* $wgRequestTime was removed (deprecated in 1.25).
   Use $_SERVER['REQUEST_TIME_FLOAT'] or WebRequest::getElapsedTime() instead.
+* The MediaWikiI18N class was removed (deprecated in 1.31).
+* QuickTemplate::setTranslator() was removed (deprecated in 1.31).
+  Use Skin::msg() instead.
 
 === Deprecations in 1.32 ===
 * Use of a StartProfiler.php file is deprecated in favour of placing
@@ -62,7 +66,7 @@ Oracle and Microsoft SQL Server.
 
 The supported versions are:
 
-* MySQL 5.0.3 or later
+* MySQL 5.5.8 or later
 * PostgreSQL 9.2 or later
 * SQLite 3.3.7 or later
 * Oracle 9.0.1 or later
index 0e1b30f..bc0e69e 100644 (file)
@@ -843,7 +843,6 @@ $wgAutoloadLocalClasses = [
        'MediaTransformInvalidParametersException' => __DIR__ . '/includes/media/MediaTransformInvalidParametersException.php',
        'MediaTransformOutput' => __DIR__ . '/includes/media/MediaTransformOutput.php',
        'MediaWiki' => __DIR__ . '/includes/MediaWiki.php',
-       'MediaWikiI18N' => __DIR__ . '/includes/skins/MediaWikiI18N.php',
        'MediaWikiShell' => __DIR__ . '/maintenance/shell.php',
        'MediaWikiSite' => __DIR__ . '/includes/site/MediaWikiSite.php',
        'MediaWikiTitleCodec' => __DIR__ . '/includes/title/MediaWikiTitleCodec.php',
index ebc800a..98e4d49 100644 (file)
                "ext-mbstring": "*",
                "ext-xml": "*",
                "liuggio/statsd-php-client": "1.0.18",
-               "mediawiki/at-ease": "1.2.0",
                "oojs/oojs-ui": "v0.26.4",
                "oyejorge/less.php": "1.7.0.14",
                "php": ">=5.5.9",
                "psr/log": "1.0.2",
                "wikimedia/assert": "0.2.2",
+               "wikimedia/at-ease": "1.2.0",
                "wikimedia/base-convert": "1.0.1",
                "wikimedia/cdb": "1.4.1",
                "wikimedia/cldr-plural-rule-parser": "1.0.0",
@@ -37,7 +37,7 @@
                "wikimedia/html-formatter": "1.0.1",
                "wikimedia/ip-set": "1.2.0",
                "wikimedia/object-factory": "1.0.0",
-               "wikimedia/php-session-serializer": "1.0.5",
+               "wikimedia/php-session-serializer": "1.0.6",
                "wikimedia/purtle": "1.0.7",
                "wikimedia/relpath": "2.1.1",
                "wikimedia/remex-html": "1.0.3",
index 53dff36..dff428c 100644 (file)
@@ -39,14 +39,10 @@ Primary scripts:
     maintenance/archives/patch-profiling.sql patch to the database.
 
     To enable the profileinfo.php itself, you'll need to set $wgDBadminuser
-    and $wgDBadminpassword in your LocalSettings.php, as well as $wgEnableProfileInfo 
+    and $wgDBadminpassword in your LocalSettings.php, as well as $wgEnableProfileInfo
     See also https://www.mediawiki.org/wiki/Manual:Profiling .
 
   thumb.php
     Script used to resize images if it is configured to be done when the web
     browser requests the image and not when generating the page. This script can
     be used as a 404 handler to generate image thumbs when they don't exist.
-
-There is also a file with a .php5 extension for each script. They can be used if
-the web server needs a .php5 to run the file with the PHP 5 engine and runs .php
-scripts with PHP 4. You should not use them anymore.
index f34b00a..1ea9a42 100644 (file)
@@ -157,19 +157,6 @@ $wgUsePathInfo = ( strpos( PHP_SAPI, 'cgi' ) === false ) &&
        ( strpos( PHP_SAPI, 'apache2filter' ) === false ) &&
        ( strpos( PHP_SAPI, 'isapi' ) === false );
 
-/**
- * The extension to append to script names by default.
- *
- * Some hosting providers used PHP 4 for *.php files, and PHP 5 for *.php5.
- * This variable was provided to support those providers.
- *
- * @since 1.11
- * @deprecated since 1.25; support for '.php5' has been phased out of MediaWiki
- *  proper. Backward-compatibility can be maintained by configuring your web
- *  server to rewrite URLs. See RELEASE-NOTES for details.
- */
-$wgScriptExtension = '.php';
-
 /**@}*/
 
 /************************************************************************//**
@@ -503,9 +490,6 @@ $wgImgAuthUrlPathMap = [];
  *   - descBaseUrl       URL of image description pages, e.g. https://en.wikipedia.org/wiki/File:
  *   - scriptDirUrl      URL of the MediaWiki installation, equivalent to $wgScriptPath, e.g.
  *                       https://en.wikipedia.org/w
- *   - scriptExtension   Script extension of the MediaWiki installation, equivalent to
- *                       $wgScriptExtension, e.g. ".php5". Defaults to ".php".
- *
  *   - articleUrl        Equivalent to $wgArticlePath, e.g. https://en.wikipedia.org/wiki/$1
  *   - fetchDescription  Fetch the text of the remote file description page. Equivalent to
  *                       $wgFetchCommonsDescriptions.
@@ -3260,11 +3244,6 @@ $wgXhtmlNamespaces = [];
  */
 $wgSiteNotice = '';
 
-/**
- * If this is set, a "donate" link will appear in the sidebar. Set it to a URL.
- */
-$wgSiteSupportPage = '';
-
 /**
  * Default skin, for new users and anonymous visitors. Registered users may
  * change this to any one of the other available skins in their preferences.
@@ -8294,7 +8273,7 @@ $wgMaxShellWallClockTime = 180;
 $wgShellCgroup = false;
 
 /**
- * Executable path of the PHP cli binary (php/php5). Should be set up on install.
+ * Executable path of the PHP cli binary. Should be set up on install.
  */
 $wgPhpCli = '/usr/bin/php';
 
index b8bfd6a..46e9630 100644 (file)
 
 # T32219 : can not use pathinfo() on URLs since slashes do not match
 $matches = [];
-$ext = 'php';
 $path = '/';
 foreach ( array_filter( explode( '/', $_SERVER['PHP_SELF'] ) ) as $part ) {
-       if ( !preg_match( '/\.(php5?)$/', $part, $matches ) ) {
+       if ( !preg_match( '/\.(php)$/', $part, $matches ) ) {
                $path .= "$part/";
        } else {
-               $ext = $matches[1] == 'php5' ? 'php5' : 'php';
                break;
        }
 }
@@ -56,7 +54,6 @@ try {
                [
                        'wgVersion' => ( isset( $wgVersion ) ? $wgVersion : 'VERSION' ),
                        'path' => $path,
-                       'ext' => $ext,
                        'localSettingsExists' => file_exists( MW_CONFIG_FILE ),
                        'installerStarted' => $installerStarted
                ]
index 6513cdd..6825c7b 100644 (file)
@@ -37,6 +37,11 @@ if ( !defined( 'MEDIAWIKI' ) ) {
  * Pre-config setup: Before loading LocalSettings.php
  */
 
+// Sanity check (T5782, T122807)
+if ( ini_get( 'mbstring.func_overload' ) ) {
+       die( 'MediaWiki does not support installations where mbstring.func_overload is non-zero.' );
+}
+
 // Start the autoloader, so that extensions can derive classes from core files
 require_once "$IP/includes/AutoLoader.php";
 
@@ -279,7 +284,6 @@ if ( !$wgLocalFileRepo ) {
                'name' => 'local',
                'directory' => $wgUploadDirectory,
                'scriptDirUrl' => $wgScriptPath,
-               'scriptExtension' => '.php',
                'url' => $wgUploadBaseUrl ? $wgUploadBaseUrl . $wgUploadPath : $wgUploadPath,
                'hashLevels' => $wgHashedUploadDirectory ? 2 : 0,
                'thumbScriptUrl' => $wgThumbnailScriptPath,
index fa8f84d..c6ddf81 100644 (file)
@@ -141,7 +141,7 @@ class WebRequest {
                                $router->add( "$wgScript/$1" );
 
                                if ( isset( $_SERVER['SCRIPT_NAME'] )
-                                       && preg_match( '/\.php5?/', $_SERVER['SCRIPT_NAME'] )
+                                       && preg_match( '/\.php/', $_SERVER['SCRIPT_NAME'] )
                                ) {
                                        # Check for SCRIPT_NAME, we handle index.php explicitly
                                        # But we do have some other .php files such as img_auth.php
index b24ff7a..878dd3e 100644 (file)
  * @file
  */
 
-if ( ini_get( 'mbstring.func_overload' ) ) {
-       die( 'MediaWiki does not support installations where mbstring.func_overload is non-zero.' );
-}
-
 # T17461: Make IE8 turn off content sniffing. Everybody else should ignore this
 # We're adding it here so that it's *always* set, even for alternate entry
 # points and when $wgOut gets disabled or overridden.
index 2814564..f6b6b35 100644 (file)
@@ -99,7 +99,6 @@ class ApiMove extends ApiBase {
                // a redirect to the new title. This is not safe, but what we did before was
                // even worse: we just determined whether a redirect should have been created,
                // and reported that it was created if it should have, without any checks.
-               // Also note that isRedirect() is unreliable because of T39209.
                $r['redirectcreated'] = $fromTitle->exists();
 
                $r['moveoverredirect'] = $toTitleExists;
@@ -152,10 +151,6 @@ class ApiMove extends ApiBase {
                $watch = 'preferences';
                if ( isset( $params['watchlist'] ) ) {
                        $watch = $params['watchlist'];
-               } elseif ( $params['watch'] ) {
-                       $watch = 'watch';
-               } elseif ( $params['unwatch'] ) {
-                       $watch = 'unwatch';
                }
 
                // Watch pages
@@ -250,14 +245,6 @@ class ApiMove extends ApiBase {
                        'movetalk' => false,
                        'movesubpages' => false,
                        'noredirect' => false,
-                       'watch' => [
-                               ApiBase::PARAM_DFLT => false,
-                               ApiBase::PARAM_DEPRECATED => true,
-                       ],
-                       'unwatch' => [
-                               ApiBase::PARAM_DFLT => false,
-                               ApiBase::PARAM_DEPRECATED => true,
-                       ],
                        'watchlist' => [
                                ApiBase::PARAM_DFLT => 'preferences',
                                ApiBase::PARAM_TYPE => [
index e430bc8..a67e3d6 100644 (file)
@@ -78,10 +78,6 @@ class FileRepo {
         */
        protected $scriptDirUrl;
 
-       /** @var string Script extension of the MediaWiki installation, equivalent
-        *    to the old $wgScriptExtension, e.g. .php5 defaults to .php */
-       protected $scriptExtension;
-
        /** @var string Equivalent to $wgArticlePath, e.g. https://en.wikipedia.org/wiki/$1 */
        protected $articleUrl;
 
@@ -166,7 +162,7 @@ class FileRepo {
                $optionalSettings = [
                        'descBaseUrl', 'scriptDirUrl', 'articleUrl', 'fetchDescription',
                        'thumbScriptUrl', 'pathDisclosureProtection', 'descriptionCacheExpiry',
-                       'scriptExtension', 'favicon', 'thumbProxyUrl', 'thumbProxySecret'
+                       'favicon', 'thumbProxyUrl', 'thumbProxySecret',
                ];
                foreach ( $optionalSettings as $var ) {
                        if ( isset( $info[$var] ) ) {
@@ -744,9 +740,7 @@ class FileRepo {
         */
        public function makeUrl( $query = '', $entry = 'index' ) {
                if ( isset( $this->scriptDirUrl ) ) {
-                       $ext = isset( $this->scriptExtension ) ? $this->scriptExtension : '.php';
-
-                       return wfAppendQuery( "{$this->scriptDirUrl}/{$entry}{$ext}", $query );
+                       return wfAppendQuery( "{$this->scriptDirUrl}/{$entry}.php", $query );
                }
 
                return false;
@@ -1928,7 +1922,7 @@ class FileRepo {
 
                $optionalSettings = [
                        'url', 'thumbUrl', 'initialCapital', 'descBaseUrl', 'scriptDirUrl', 'articleUrl',
-                       'fetchDescription', 'descriptionCacheExpiry', 'scriptExtension', 'favicon'
+                       'fetchDescription', 'descriptionCacheExpiry', 'favicon'
                ];
                foreach ( $optionalSettings as $k ) {
                        if ( isset( $this->$k ) ) {
index cf382e4..ebac200 100644 (file)
@@ -74,20 +74,21 @@ class ImportStreamSource implements ImportSource {
                }
                if ( !empty( $upload['error'] ) ) {
                        switch ( $upload['error'] ) {
-                               case 1:
-                                       # The uploaded file exceeds the upload_max_filesize directive in php.ini.
+                               case UPLOAD_ERR_INI_SIZE:
+                                       // The uploaded file exceeds the upload_max_filesize directive in php.ini.
                                        return Status::newFatal( 'importuploaderrorsize' );
-                               case 2:
-                                       # The uploaded file exceeds the MAX_FILE_SIZE directive that
-                                       # was specified in the HTML form.
+                               case UPLOAD_ERR_FORM_SIZE:
+                                       // The uploaded file exceeds the MAX_FILE_SIZE directive that
+                                       // was specified in the HTML form.
+                                       // FIXME This is probably never used since that directive was removed in 8e91c520?
                                        return Status::newFatal( 'importuploaderrorsize' );
-                               case 3:
-                                       # The uploaded file was only partially uploaded
+                               case UPLOAD_ERR_PARTIAL:
+                                       // The uploaded file was only partially uploaded
                                        return Status::newFatal( 'importuploaderrorpartial' );
-                               case 6:
-                                       # Missing a temporary folder.
+                               case UPLOAD_ERR_NO_TMP_DIR:
+                                       // Missing a temporary folder.
                                        return Status::newFatal( 'importuploaderrortemp' );
-                               # case else: # Currently impossible
+                               // Other error codes get the generic 'importnofile' error message below
                        }
 
                }
index 4c4504e..19e1ea0 100644 (file)
        "config-nofile": "Файл «$1» ня знойдзены. Ці быў ён выдалены?",
        "config-extension-link": "Ці ведаеце вы, што вашая вікі падтрымлівае [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions пашырэньні]?\n\nВы можаце праглядзець [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category пашырэньні паводле катэгорыяў] або [https://www.mediawiki.org/wiki/Extension_Matrix матрыцу пашырэньняў], каб пабачыць поўны сьпіс.",
        "config-skins-screenshots": "$1 (здымкі экрану: $2)",
+       "config-extensions-requires": "$1 (патрабуе $2)",
        "config-screenshot": "здымак экрану",
        "mainpagetext": "<strong>MediaWiki была ўсталяваная.</strong>",
        "mainpagedocfooter": "Глядзіце [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents дапаможнік карыстальніка] для атрыманьня інфармацыі па карыстаньні вікі-праграмамі.\n\n== З чаго пачаць ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Сьпіс парамэтраў канфігурацыі]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Частыя пытаньні MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Рассылка паведамленьняў пра зьяўленьне новых вэрсіяў MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Пераклад MediaWiki на вашую мову]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Даведайцеся, як змагацца з спамам у вашай вікі]"
index 00005d3..b20e1ed 100644 (file)
        "config-nofile": "Die Datei „$1“ konnte nicht gefunden werden. Wurde sie gelöscht?",
        "config-extension-link": "Wusstest du, dass dein Wiki die Nutzung von [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions Erweiterungen] unterstützt?\n\nDu kannst die [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category Erweiterungen nach Kategorie] anzeigen oder die [https://www.mediawiki.org/wiki/Extension_Matrix Erweiterungs-Matrix] aufrufen, um eine vollständige Liste der Erweiterungen zu sehen.",
        "config-skins-screenshots": "$1 (Bildschirmfotos: $2)",
+       "config-extensions-requires": "$1 (erfordert $2)",
        "config-screenshot": "Bildschirmfoto",
        "mainpagetext": "<strong>MediaWiki wurde installiert.</strong>",
        "mainpagedocfooter": "Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Benutzerhandbuch].\n\n== Starthilfen ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsvariablen]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki-FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]"
index 2d9b94f..3d801cc 100644 (file)
        "config-nofile": "Le fichier « $1 » est introuvable. A-t-il été supprimé ?",
        "config-extension-link": "Saviez-vous que votre wiki prend en charge [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions des extensions] ?\n\nVous pouvez consulter les [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensions par catégorie] ou la [https://www.mediawiki.org/wiki/Extension_Matrix matrice des extensions] pour voir la liste complète des extensions.",
        "config-skins-screenshots": "$1 (captures d’écran : $2)",
+       "config-extensions-requires": "$1 (nécessite $2)",
        "config-screenshot": "Captures d’écrans",
        "mainpagetext": "<strong>MediaWiki a été installé.</strong>",
        "mainpagedocfooter": "Consultez le [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel de wiki.\n\n== Pour démarrer ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste des paramètres de configuration]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/fr Questions courantes sur MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Adaptez MediaWiki dans votre langue]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Apprendre comment lutter contre le pourriel dans votre wiki]"
index d388a59..72a4d7d 100644 (file)
        "config-nofile": "הקובץ \"$1\" לא נמצא. האם הוא נמחק?",
        "config-extension-link": "הידעת שמדיה־ויקי תומכת ב־[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions הרחבות]?\n\nבאפשרותך לעיין ב־[https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category הרחבות לפי קטגוריה].",
        "config-skins-screenshots": "$1 (צילומי מסך: $2)",
+       "config-extensions-requires": "$1 (נדרשת ההרחבה $2)",
        "config-screenshot": "צילום מסך",
        "mainpagetext": "<strong>תוכנת מדיה־ויקי הותקנה בהצלחה.</strong>",
        "mainpagedocfooter": "היעזרו ב[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents מדריך למשתמש] למידע על שימוש בתוכנת הוויקי.\n\n== קישורים שימושיים ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings רשימת ההגדרות]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ שאלות ותשובות על מדיה־ויקי]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce רשימת התפוצה על השקת גרסאות]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources תרגום מדיה־ויקי לשפה שלך]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam איך להיאבק נגד ספאם באתר הוויקי שלך]"
index afd7569..a1b55a8 100644 (file)
@@ -1,9 +1,49 @@
 {
        "@metadata": {
                "authors": [
-                       "Seb35"
+                       "Seb35",
+                       "Ooswesthoesbes"
                ]
        },
-       "mainpagetext": "'''MediaWiki software succesvol geïnsjtalleerd.'''",
-       "mainpagedocfooter": "Raodpleeg de [https://meta.wikimedia.org/wiki/Help:Contents Inhoudsopgave handjleiding] veur informatie euver 't gebroek van de wikisoftware.\n\n== Mieë hölp ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lies mit instellinge]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki VGV (FAQ)]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki mailinglies veur nuuj versies]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]"
+       "config-desc": "'t Installeringsprogram veur MediaWiki",
+       "config-title": "MediaWiki-installering $1",
+       "config-information": "Gegaeves",
+       "config-localsettings-key": "Opwardeersleutel:",
+       "config-localsettings-badkey": "De opwardeersleutel dae se höbs opgegaove is ónjuus.",
+       "config-upgrade-key-missing": "'n Bestäönde installaasje van MediaWiki is aangetroffe.\nPlaats de volgende regel óngeraan dien <code>LocalSettings.php</code> veur dees installaasje bie te wirke:\n\n$1",
+       "config-localsettings-incomplete": "De bestäönde inhawd van <code>LocalSettings.php</code> liekent incompleet.\nDe variabele $1 is neet ingestèld.\nVeranger <code>LocalSettings.php</code> zodet dees variabele is ingestèld en klik op \"{{int:Config-continue}}\".",
+       "config-localsettings-connection-error": "'n Fout is opgetraoje tiejes 't verbinje mitte databank mit de instèllinge oet <code>LocalSettings.php</code>. Los 't perbleem op mit de instèllinge en perbeer 't daonao oppernuuj.\n\n$1",
+       "config-session-error": "Fout bie begin vanne sessie: $1",
+       "config-your-language": "Dien spraok:",
+       "config-your-language-help": "Sillekteer de spraok die se wils broeke tiejes 't installaasjepercès.",
+       "config-wiki-language": "Wikispraok:",
+       "config-wiki-language-help": "Sillekteer de spraok wo de wiki veurnamelik in weurt gesjreve.",
+       "config-back": "← Trök",
+       "config-continue": "Gank door →",
+       "config-page-language": "Spraok",
+       "config-page-welcome": "Wilkóm bie MediaWiki!",
+       "config-page-dbconnect": "Maak verbinjing mit database",
+       "config-page-upgrade": "Wirk bestäönde installaasje bie",
+       "config-page-dbsettings": "Databankinstèllinge",
+       "config-page-name": "Naam",
+       "config-page-options": "Opties",
+       "config-page-install": "Installeer",
+       "config-page-complete": "Vaerdig!",
+       "config-page-restart": "Begin installering oppernuuj",
+       "config-page-readme": "Laes mich",
+       "config-page-releasenotes": "Gaef ópmèrkinge vrie",
+       "config-page-copying": "Kopieer",
+       "config-page-upgradedoc": "Wirk bie",
+       "config-page-existingwiki": "Bestäönde wiki",
+       "config-restart": "Jao, begin oppernuuj",
+       "config-env-php": "PHP $1 is geïnstalleerd.",
+       "config-env-hhvm": "HHVM $1 is geïnstalleerd.",
+       "config-diff3-bad": "GNU diff3 neet gevónje.",
+       "config-db-type": "Databanksaort:",
+       "config-db-host": "Databankgashieër:",
+       "config-db-host-oracle": "Databank-TNS:",
+       "config-db-wiki-settings": "Identificeer deze wiki",
+       "config-db-name": "Databanknaam:",
+       "mainpagetext": "<strong>MediaWiki software geïnsjtalleerd.</strong>",
+       "mainpagedocfooter": "Raodpleeg de [https://meta.wikimedia.org/wiki/Help:Contents Inhoudsopgave handjleiding] veur informatie euver 't gebroek van de wikisoftware.\n\n== Mieë hölp ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lies mit instellinge]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki VGV (FAQ)]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki mailinglies veur nuuj versies]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Maak MediaWiki besjikbaar in dien spraok]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Lieër wie se spam kans verkómme op diene wiki]"
 }
index a9ae2fe..4598aa9 100644 (file)
        "config-nofile": "Податотеката „$1“ не е пронајдена. Да не е избришана?",
        "config-extension-link": "Дали сте знаеле дека вашето вики поддржува [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions додатоци]?\n\nМожете да ги прелистате [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category по категории]",
        "config-skins-screenshots": "$1 (екр. снимки: $2)",
+       "config-extensions-requires": "$1 (бара $2)",
        "config-screenshot": "екранска снимка",
        "mainpagetext": "<strong>МедијаВики е успешно воспоставен.</strong>",
        "mainpagedocfooter": "Погледнете го [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Упатството за корисници] за подетални информации како се користи вики-програмот.\n\n==Од каде да почнете==\n* [https://meta.wikimedia.org/wiki/Manual:Configuration_settings Список на нагодувања]\n* [https://meta.wikimedia.org/wiki/Manual:FAQ ЧПП (често поставувани прашања) за МедијаВики].\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Поштенски список на МедијаВики за нови верзии]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Локализирајте го МедијаВики на вашиот јазик]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Дознајте како да се борите против спам на вашето вики]"
index 635fc34..f3a4321 100644 (file)
        "config-nofile": "找不到文件“$1”。它是否已被删除?",
        "config-extension-link": "您是否知道您的wiki支持[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions 扩展]?\n\n您可以浏览[https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category 扩展分类]或[https://www.mediawiki.org/wiki/Extension_Matrix 扩展矩阵]以查看完整的扩展列表。",
        "config-skins-screenshots": "$1(截图:$2)",
+       "config-extensions-requires": "$1(需要$2)",
        "config-screenshot": "截图",
        "mainpagetext": "<strong>已安装MediaWiki。</strong>",
        "mainpagedocfooter": "请查阅[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 用户指导]以获取使用本wiki软件的信息!\n\n== 入门 ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings MediaWiki配置设置列表]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/zh-hans MediaWiki常见问题]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki发布邮件列表]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 本地化MediaWiki到您的语言]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 了解如何在您的wiki上打击破坏]"
index acc8302..93c042e 100644 (file)
        "config-nofile": "查無檔案 \"$1\",是否已被刪除?",
        "config-extension-link": "您是否了解您的 Wiki 支援 [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions 擴充套件]?\n\n\n您可以瀏覽 [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category 擴充套件分類] 或 [https://www.mediawiki.org/wiki/Extension_Matrix 擴充套件資料表] 以取得相關的資訊。",
        "config-skins-screenshots": "$1 (螢幕截圖: $2)",
+       "config-extensions-requires": "$1(需要 $2)",
        "config-screenshot": "螢幕截圖",
        "mainpagetext": "<strong>已安裝 MediaWiki。</strong>",
        "mainpagedocfooter": "有關使用wiki的訊息,請參閱[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 使用者指南]。\n\n== 新手入門 ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings 系統設定]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki常見問題]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki郵寄清單]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 將MediaWiki翻譯至您的語言]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 了解如何在您的wiki上防禦破壞]"
index 474c564..f7702dd 100644 (file)
@@ -259,43 +259,40 @@ class CryptRand {
                        }
                }
 
-               if ( strlen( $buffer ) < $bytes ) {
+               if ( strlen( $buffer ) < $bytes && function_exists( 'mcrypt_create_iv' ) ) {
                        // If available make use of mcrypt_create_iv URANDOM source to generate randomness
                        // On unix-like systems this reads from /dev/urandom but does it without any buffering
                        // and bypasses openbasedir restrictions, so it's preferable to reading directly
                        // On Windows starting in PHP 5.3.0 Windows' native CryptGenRandom is used to generate
                        // entropy so this is also preferable to just trying to read urandom because it may work
                        // on Windows systems as well.
-                       if ( function_exists( 'mcrypt_create_iv' ) ) {
-                               $rem = $bytes - strlen( $buffer );
-                               $iv = mcrypt_create_iv( $rem, MCRYPT_DEV_URANDOM );
-                               if ( $iv === false ) {
-                                       $this->logger->debug( "mcrypt_create_iv returned false." );
-                               } else {
-                                       $buffer .= $iv;
-                                       $this->logger->debug( "mcrypt_create_iv generated " . strlen( $iv ) .
-                                               " bytes of randomness." );
-                               }
+                       $rem = $bytes - strlen( $buffer );
+                       $iv = mcrypt_create_iv( $rem, MCRYPT_DEV_URANDOM );
+                       if ( $iv === false ) {
+                               $this->logger->debug( "mcrypt_create_iv returned false." );
+                       } else {
+                               $buffer .= $iv;
+                               $this->logger->debug( "mcrypt_create_iv generated " . strlen( $iv ) .
+                                       " bytes of randomness." );
                        }
                }
 
-               if ( strlen( $buffer ) < $bytes ) {
-                       if ( function_exists( 'openssl_random_pseudo_bytes' ) ) {
-                               $rem = $bytes - strlen( $buffer );
-                               $openssl_bytes = openssl_random_pseudo_bytes( $rem, $openssl_strong );
-                               if ( $openssl_bytes === false ) {
-                                       $this->logger->debug( "openssl_random_pseudo_bytes returned false." );
-                               } else {
-                                       $buffer .= $openssl_bytes;
-                                       $this->logger->debug( "openssl_random_pseudo_bytes generated " .
-                                               strlen( $openssl_bytes ) . " bytes of " .
-                                               ( $openssl_strong ? "strong" : "weak" ) . " randomness." );
-                               }
-                               if ( strlen( $buffer ) >= $bytes ) {
-                                       // openssl tells us if the random source was strong, if some of our data was generated
-                                       // using it use it's say on whether the randomness is strong
-                                       $this->strong = !!$openssl_strong;
-                               }
+               if ( strlen( $buffer ) < $bytes && function_exists( 'openssl_random_pseudo_bytes' ) ) {
+                       $rem = $bytes - strlen( $buffer );
+                       $openssl_strong = false;
+                       $openssl_bytes = openssl_random_pseudo_bytes( $rem, $openssl_strong );
+                       if ( $openssl_bytes === false ) {
+                               $this->logger->debug( "openssl_random_pseudo_bytes returned false." );
+                       } else {
+                               $buffer .= $openssl_bytes;
+                               $this->logger->debug( "openssl_random_pseudo_bytes generated " .
+                                       strlen( $openssl_bytes ) . " bytes of " .
+                                       ( $openssl_strong ? "strong" : "weak" ) . " randomness." );
+                       }
+                       if ( strlen( $buffer ) >= $bytes ) {
+                               // openssl tells us if the random source was strong, if some of our data was generated
+                               // using it use it's say on whether the randomness is strong
+                               $this->strong = !!$openssl_strong;
                        }
                }
 
index c0dd188..2e3c6fc 100644 (file)
@@ -88,7 +88,6 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        'wgUrlProtocols' => wfUrlProtocols(),
                        'wgArticlePath' => $conf->get( 'ArticlePath' ),
                        'wgScriptPath' => $conf->get( 'ScriptPath' ),
-                       'wgScriptExtension' => '.php',
                        'wgScript' => wfScript(),
                        'wgSearchType' => $conf->get( 'SearchType' ),
                        'wgVariantArticlePath' => $conf->get( 'VariantArticlePath' ),
diff --git a/includes/skins/MediaWikiI18N.php b/includes/skins/MediaWikiI18N.php
deleted file mode 100644 (file)
index 731897e..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-<?php
-/**
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
-
-/**
- * Wrapper object for MediaWiki's localization functions,
- * to be passed to the template engine.
- *
- * @private
- * @ingroup Skins
- */
-class MediaWikiI18N {
-       private $context = [];
-
-       /**
-        * @deprecate since 1.31 Use BaseTemplate::msg() or Skin::msg() instead for setting
-        *  message parameters.
-        */
-       function set( $varName, $value ) {
-               wfDeprecated( __METHOD__, '1.31' );
-               $this->context[$varName] = $value;
-       }
-
-       /**
-        * @deprecate since 1.31 Use BaseTemplate::msg(), Skin::msg(), or wfMessage() instead.
-        */
-       function translate( $value ) {
-               wfDeprecated( __METHOD__, '1.31' );
-               // Hack for i18n:attributes in PHPTAL 1.0.0 dev version as of 2004-10-23
-               $value = preg_replace( '/^string:/', '', $value );
-
-               $value = wfMessage( $value )->text();
-               // interpolate variables
-               $m = [];
-               while ( preg_match( '/\$([0-9]*?)/sm', $value, $m ) ) {
-                       list( $src, $var ) = $m;
-                       Wikimedia\suppressWarnings();
-                       $varValue = $this->context[$var];
-                       Wikimedia\restoreWarnings();
-                       $value = str_replace( $src, $varValue, $value );
-               }
-               return $value;
-       }
-}
index 1886746..aa20e20 100644 (file)
@@ -31,11 +31,6 @@ abstract class QuickTemplate {
         */
        public $data;
 
-       /**
-        * @var MediaWikiI18N
-        */
-       public $translator;
-
        /** @var Config $config */
        protected $config;
 
@@ -44,7 +39,6 @@ abstract class QuickTemplate {
         */
        function __construct( Config $config = null ) {
                $this->data = [];
-               $this->translator = new MediaWikiI18N();
                if ( $config === null ) {
                        wfDebug( __METHOD__ . ' was called with no Config instance passed to it' );
                        $config = MediaWikiServices::getInstance()->getMainConfig();
@@ -102,16 +96,6 @@ abstract class QuickTemplate {
                $this->data[$name] =& $value;
        }
 
-       /**
-        * @param MediaWikiI18N &$t
-        * @deprecate since 1.31 Use BaseTemplate::msg() or Skin::msg() instead for setting
-        *  message parameters.
-        */
-       public function setTranslator( &$t ) {
-               wfDeprecated( __METHOD__, '1.31' );
-               $this->translator = &$t;
-       }
-
        /**
         * Main function, used by classes that subclass QuickTemplate
         * to show the actual HTML output
index 6c913d2..778a3b3 100644 (file)
@@ -173,9 +173,9 @@ class SparqlClient {
                        throw new SparqlException( "HTTP error: {$status->getWikiText()}" );
                }
                $result = $request->getContent();
-               \MediaWiki\suppressWarnings();
+               \Wikimedia\suppressWarnings();
                $data = json_decode( $result, true );
-               \MediaWiki\restoreWarnings();
+               \Wikimedia\restoreWarnings();
                if ( $data === null || $data === false ) {
                        throw new SparqlException( "HTTP request failed, response:\n" .
                                substr( $result, 1024 ) );
index 5457949..36391f5 100644 (file)
                {{^localSettingsExists}}
                        <p>LocalSettings.php not found.</p>
                        {{#installerStarted}}
-                               <p>Please <a href="{{path}}mw-config/index.{{ext}}">complete the installation</a> and download LocalSettings.php.</p>
+                               <p>Please <a href="{{path}}mw-config/index.php">complete the installation</a> and download LocalSettings.php.</p>
                        {{/installerStarted}}
                        {{^installerStarted}}
-                               <p>Please <a href="{{path}}mw-config/index.{{ext}}">set up the wiki</a> first.</p>
+                               <p>Please <a href="{{path}}mw-config/index.php">set up the wiki</a> first.</p>
                        {{/installerStarted}}
                {{/localSettingsExists}}
                </div>
        </body>
-</html>
\ No newline at end of file
+</html>
index 15b54ab..eb5ee17 100644 (file)
        "action-protect": "зьмену ўзроўню абароны гэтай старонкі",
        "action-rollback": "хуткі адкат рэдагаваньняў апошняга ўдзельніка, які рэдагаваў старонку",
        "action-import": "імпарт старонак зь іншай вікі",
-       "action-importupload": "Ñ\96мпаÑ\80Ñ\82 Ñ\81Ñ\82аÑ\80онак Ð¿Ñ\80аз Ð·Ð°Ð³Ñ\80Ñ\83зкÑ\83 Ñ\84айла",
+       "action-importupload": "Ñ\96мпаÑ\80Ñ\82 Ñ\81Ñ\82аÑ\80онак Ð¿Ñ\80аз Ð·Ð°Ð³Ñ\80Ñ\83жанÑ\8b Ñ\84айл",
        "action-patrol": "пазначэньне чужых рэдагаваньняў як «патруляваныя»",
        "action-autopatrol": "пазначэньне ўласных рэдагаваньняў як «патруляваныя»",
        "action-unwatchedpages": "прагляд сьпісу старонак, за якімі ніхто не назірае",
        "statistics-files": "Колькасьць загружаных файлаў",
        "statistics-edits": "Агульная колькасьць рэдагаваньняў",
        "statistics-edits-average": "Сярэдняя колькасьць рэдагаваньняў на старонку",
-       "statistics-users": "[[Special:ListUsers|Зарэгістраваныя ўдзельнікі]]",
+       "statistics-users": "Зарэгістраваныя ўдзельнікі",
        "statistics-users-active": "Актыўныя ўдзельнікі",
        "statistics-users-active-desc": "Удзельнікі, якія выканалі нейкае дзеяньне цягам {{PLURAL:$1|апошняга $1 дня|апошніх $1 дзён|апошніх $1 дзён}}",
        "pageswithprop": "Старонкі з уласьцівасьцямі старонак",
index 12c68c2..9082dc0 100644 (file)
        "cannotlogoutnow-title": "Odjava trenutno nije moguća",
        "cannotlogoutnow-text": "Ne možete se odjaviti kad se koriste $1.",
        "welcomeuser": "Dobro došli, $1",
-       "welcomecreation-msg": "Vaš nalog je napravljen.\nNe zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} podešavanja]].",
+       "welcomecreation-msg": "Vaš račun je napravljen.\nMožete promijeniti [[Special:Preferences|postavke]] ako želite.",
        "yourname": "Korisničko ime:",
        "userlogin-yourname": "Korisničko ime",
        "userlogin-yourname-ph": "Unesite Vaše korisničko ime",
        "nosuchusershort": "Ne postoji korisnik s imenom \"$1\".\nProvjerite jeste li dobro ukucali.",
        "nouserspecified": "Morate izabrati korisničko ime.",
        "login-userblocked": "Ovaj korisnik je blokiran. Prijava nije dopuštena.",
-       "wrongpassword": "Lozinka koju ste unijeli je netačna.\nPokušate ponovno.",
+       "wrongpassword": "Lozinka koju ste unijeli je netačna.\nPokušajte ponovno.",
        "wrongpasswordempty": "Niste upisali lozinku.\nPokušajte ponovo.",
        "passwordtooshort": "Lozinka mora imati najmanje {{PLURAL:$1|1 znak|$1 znaka|$1 znakova}}.",
        "passwordtoolong": "Lozinke ne mogu biti duže od {{PLURAL:$1|jednog znaka|$1 znaka|$1 znakova}}.",
        "recentchangesdays": "Broj dana za prikaz u nedavnim izmjenama:",
        "recentchangesdays-max": "Najviše $1 {{PLURAL:$1|dan|dana}}",
        "recentchangescount": "Broj izmjena na nedavnim izmjenama:",
-       "prefs-help-recentchangescount": "Ovo uključuje nedavne izmjene, historije stranice i zapisnike.",
+       "prefs-help-recentchangescount": "Najveći broj: 1000",
        "prefs-help-watchlist-token2": "Ovo je tajni ključ sažetka vašeg spiska izmjena. Ko god da ga zna, moći će ga čitati. Ne dijelite ga ni s kim. Ako je potrebno, [[Special:ResetTokens|možete ga ponovo postaviti]].",
        "savedprefs": "Vaše postavke su sačuvane.",
        "savedrights": "Korisničke grupe {{GENDER:$1|korisnika|korisnice}} $1 su sačuvana.",
        "rcfilters-days-show-hours": "$1 {{PLURAL:$1|sat|sata|sati}}",
        "rcfilters-highlighted-filters-list": "Istaknuto: $1",
        "rcfilters-quickfilters": "Sačuvani filteri",
-       "rcfilters-quickfilters-placeholder-title": "Zasad nema sačuvanih linkova",
+       "rcfilters-quickfilters-placeholder-title": "Još nema sačuvanih filtera",
        "rcfilters-quickfilters-placeholder-description": "Da sačuvate postavke filtera da biste ih kasnije ponovo upotrijebili, kliknite na ikonu markera pod \"Aktivni filterima\" ispod.",
        "rcfilters-savedqueries-defaultlabel": "Sačuvani filteri",
        "rcfilters-savedqueries-rename": "Preimenuj",
index a1c7fc7..c14d9f5 100644 (file)
@@ -13,7 +13,8 @@
                        "Ztl8702",
                        "Macofe",
                        "GnuDoyng",
-                       "Davidzdh"
+                       "Davidzdh",
+                       "Suzukaze-c"
                ]
        },
        "tog-underline": "Â-hĕk-siáng lièng-giék",
        "recentchanges-label-newpage": "Cī siŏh bĭk siŭ-gāi cháung-gióng lāu sĭng hiĕk",
        "recentchanges-label-minor": "Cuòi sê siŏh bĭk guó-éu siŭ-gāi",
        "recentchanges-label-bot": "Cuòi sê gĭ-ké-nè̤ng siŭ-gāi gì",
+       "rcfilters-filter-humans-label": "Ìng-lôi (n̂g-sê gĭ-ké-nè̤ng)",
        "rclistfrom": "Hiēng-sê téng $3 $2 gáu dāng gì sĭng gāi-biéng",
        "rcshowhideminor": "$1 guó-éu siŭ-gāi",
        "rcshowhidebots": "$1 gĭ-ké-nè̤ng",
index 22d7192..5909c5d 100644 (file)
        "statistics-files": "Hochgeladene Dateien",
        "statistics-edits": "Seitenbearbeitungen",
        "statistics-edits-average": "Bearbeitungen pro Seite im Durchschnitt",
-       "statistics-users": "Registrierte [[Special:ListUsers|Benutzer]]",
+       "statistics-users": "Angemeldete Benutzer",
        "statistics-users-active": "Aktive Benutzer",
        "statistics-users-active-desc": "Benutzer mit Bearbeitungen {{PLURAL:$1|während der letzten 24 Stunden|während der vergangenen $1 Tage}}",
        "pageswithprop": "Seiten mit einer Seiteneigenschaft",
        "deadendpages": "Nicht verlinkende Seiten",
        "deadendpagestext": "Die folgenden Seiten verweisen nicht auf andere Seiten von {{SITENAME}}.",
        "protectedpages": "Geschützte Seiten",
+       "protectedpages-filters": "Filter:",
        "protectedpages-indef": "Nur unbeschränkt geschützte Seiten zeigen",
        "protectedpages-summary": "Diese Seite listet vorhandene Seiten auf, die derzeit geschützt sind. Für eine Liste vor Erstellung geschützter Titel, siehe „[[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]]“.",
        "protectedpages-cascade": "Nur Seiten mit Kaskadenschutz",
index 1202ecc..dcdba3f 100644 (file)
        "redirectedfrom": "(Tót còst al deşvîn da <b>$1</b>)",
        "redirectpagesub": "Pàgina 'd partèinsa",
        "redirectto": "Rimânda a:",
-       "lastmodifiedat": "Ûltmi mudéfichi 'dla pàgina: $2, $1.",
+       "lastmodifiedat": "Cla pàgina ché l'é stêda cambiêda l'ûltma vôlta al $1 a $2 ōr.",
        "viewcount": "Cla pàgina ché l'é stêda lişûda {{PLURAL:$1|'na vôlta|$1 vôlti}}.",
        "protectedpage": "Pàgina sòta prutesiòun",
        "jumpto": "Và a:",
        "nosuchusershort": "An gh'é mìa registrê un utèint ciamê ''$1''. Veréfica al nòm scrét.",
        "nouserspecified": "L'é necesâri precişêr un nòm utèint.",
        "login-userblocked": "Cl'utèinsa ché l'é bluchêda. An n'é pusébil fêr l'ingrès.",
-       "wrongpassword": "La cêv 'd ingrès e-scréta an n'é mìa giósta. Tōrna a pruvêr.",
+       "wrongpassword": "Nòm utèint e cêva 'd ingrès în şbaliêdi. Tōrna a pruvêr.",
        "wrongpasswordempty": "An n'é mìa stê scrét nisóna cêva 'd ingrès. Tōrna pruvêr.",
        "passwordtooshort": "La cêva 'd ingrès la dēv avèir almēno {{PLURAL:$1|1 carâter|$1 carâter}}",
        "passwordtoolong": "La cêva 'd ingrès la 'n pōl mìa avèir pió 'd {{PLURAL:$1|1 carâter|$1 carâter}}",
index ca4eed2..8c92710 100644 (file)
        "deadendpages": "Αδιέξοδες σελίδες",
        "deadendpagestext": "Οι σελίδες που ακολουθούν δεν συνδέονται με άλλες σελίδες στο {{SITENAME}}.",
        "protectedpages": "Προστατευμένες σελίδες",
+       "protectedpages-filters": "Φίλτρα",
        "protectedpages-indef": "Προστασίες επαόριστον μόνο",
        "protectedpages-summary": "Αυτή η σελίδα περιέχει υπάρχουσες σελίδες που τώρα είναι προστατευμένες. Για μία λίστα τίτλων που προστατεύονται από τη δημιουργία των σελίδων, δείτε τους [[{{#special:ProtectedTitles}}|Προστατευμένους τίτλους]].",
        "protectedpages-cascade": "Μόνο διαδοχικές προστασίες",
index 521f98e..470c675 100644 (file)
        "autosumm-replace": "Orriaren edukiaren ordez, «$1» jarri da",
        "autoredircomment": "«[[$1]]» orrira birzuzendua",
        "autosumm-removed-redirect": "[[$1]]-ra birbideraketa ezabatua",
-       "autosumm-changed-redirect-target": "Birbideraketa helburua [[$1]]-tik [[$2]]-ra aldatu da",
+       "autosumm-changed-redirect-target": "Birbideraketaren helburua «[[$1]]» orritik «[[$2]]» orrira aldatu da",
        "autosumm-new": "Orria sortu da. Edukia: $1",
        "autosumm-newblank": "Orrialde zuria sortu da",
        "lag-warn-normal": "{{PLURAL:$1|segundu $1|$1 segundu}} baino berriagoak diren aldaketak ez dira zerrenda honetan agertuko.",
        "tag-mw-new-redirect-description": "Birbideratze berri bat sortzen duten aldaketak edo birbidaltzeko orrialdea aldatzen dutenak",
        "tag-mw-removed-redirect": "Birbideraketa ezabatua",
        "tag-mw-removed-redirect-description": "Existitzen den birbidaltze bati ez birbidaltzeko bihurtzen duten aldaketak",
-       "tag-mw-changed-redirect-target": "Birbideraketa helburua aldatu egin da",
+       "tag-mw-changed-redirect-target": "Birbideraketaren helburua aldatu da",
        "tag-mw-changed-redirect-target-description": "Birbideraketa baten helburua eraldatzen duten aldaketak",
        "tag-mw-blank": "Husten",
        "tag-mw-blank-description": "Orria zuriz jartzen duten aldaketak",
index 7ccb363..6460f72 100644 (file)
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|tavu|tavua}}",
        "limitreport-expansiondepth": "Suurin laajennussyvyys",
        "limitreport-expensivefunctioncount": "Vaativien jäsenninfunktioiden lukumäärä",
+       "limitreport-unstrip-depth": "Unstrip-rekursion syvyys",
+       "limitreport-unstrip-size": "Unstrip laajennuksen jälkeinen koko",
        "limitreport-unstrip-size-value": "$1/$2 {{PLURAL:$2|tavu|tavua}}",
        "expandtemplates": "Laajenna mallineet",
        "expand_templates_intro": "Tämä toimintosivu ottaa syötteeksi wikitekstiä ja laajentaa kaikki siinä olevat mallineet rekursiivisesti.\nSe myös laajentaa tuetut parserifunktiot kuten\n<code><nowiki>{{</nowiki>#language:...}}</code> ja -muuttujat kuten\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nKäytännössä se laajentaa melkein kaiken, joka on kaksoisaaltosulkeiden sisällä.",
index 2c38e61..0af60f9 100644 (file)
        "statistics-files": "Fichiers importés",
        "statistics-edits": "Modifications de pages depuis l'installation de {{SITENAME}}",
        "statistics-edits-average": "Nombre moyen de modifications par page",
-       "statistics-users": "[[Special:ListUsers|Utilisateurs]] enregistrés",
+       "statistics-users": "Utilisateurs inscrits",
        "statistics-users-active": "Utilisateurs actifs",
        "statistics-users-active-desc": "Utilisateurs ayant fait au moins une action {{PLURAL:$1|il y a un jour|pendant les $1 derniers jours}}",
        "pageswithprop": "Pages avec une propriété de page",
index f854dce..832f172 100644 (file)
        "statistics-files": "קבצים שהועלו",
        "statistics-edits": "עריכות של דפים מאז התקנת {{SITENAME}}",
        "statistics-edits-average": "מספר העריכות הממוצע לדף",
-       "statistics-users": "ה[[Special:ListUsers|משתמשים]] הרשומים",
+       "statistics-users": "המשתמשים הרשומים",
        "statistics-users-active": "המשתמשים הפעילים",
        "statistics-users-active-desc": "משתמשים שביצעו פעולה כלשהי {{PLURAL:$1|ביום האחרון|ביומיים האחרונים|ב־$1 הימים האחרונים}}",
        "pageswithprop": "דפים עם מאפיין דף",
        "deadendpages": "דפים ללא קישורים",
        "deadendpagestext": "הדפים הבאים אינם מקשרים לדפים אחרים באתר {{SITENAME}}.",
        "protectedpages": "דפים מוגנים",
+       "protectedpages-filters": "מסננים:",
        "protectedpages-indef": "הגנות ללא הגבלת זמן בלבד",
        "protectedpages-summary": "בדף זה רשומים הדפים הקיימים שמוגנים כרגע. לרשימת הכותרות שמוגנות מפני יצירה, ראו [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].",
        "protectedpages-cascade": "הגנות מדורגות בלבד",
index 14c1709..316e50e 100644 (file)
@@ -69,7 +69,8 @@
                        "Garam",
                        "렌즈",
                        "CYAN",
-                       "Nuevo Paso"
+                       "Nuevo Paso",
+                       "Doyoon1995"
                ]
        },
        "tog-underline": "링크에 밑줄 긋기:",
        "deadendpages": "막다른 문서 목록",
        "deadendpagestext": "{{SITENAME}} 내의 다른 문서로 나가는 링크가 없는 문서의 목록입니다.",
        "protectedpages": "보호된 문서 목록",
+       "protectedpages-filters": "필터",
        "protectedpages-indef": "오른쪽 조건에 맞는 보호만 보기",
        "protectedpages-summary": "이 페이지는 현재 보호된 기존 문서를 나열합니다. 만들기 보호된 문서 제목 목록을 보려면 [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]]를 보세요.",
        "protectedpages-cascade": "연쇄적 보호만 보기",
index b41ab45..b3b45cf 100644 (file)
        "lineno": "Linn $1:",
        "compareselectedversions": "Ausgewielt Versioune vergläichen",
        "showhideselectedversions": "Erausgesicht Versioune weisen/verstoppen",
-       "editundo": "zréck",
+       "editundo": "réckgängeg maachen",
        "diff-empty": "(Keen Ënnerscheed)",
        "diff-multi-sameuser": "({{PLURAL:$1|Eng Tëscheversioun|$1 Tëscheversioune}} vun deemselwechte Benotzer net gewisen)",
        "diff-multi-otherusers": "({{PLURAL:$1|Eng Tëscheversioun|$1 Tëscheversioune}} vun {{PLURAL:$2|engem anere|$2}} Benotzer {{PLURAL:$1|gëtt|ginn}} net gewisen)",
        "deadendpages": "Sakgaasse-Säiten",
        "deadendpagestext": "Dës Säite si mat kenger anerer Säit op {{SITENAME}} verlinkt.",
        "protectedpages": "Gespaart Säiten",
+       "protectedpages-filters": "Filteren:",
        "protectedpages-indef": "Nëmme onbegrenzt-gespaarte Säite weisen",
        "protectedpages-summary": "Op dëser Säit stinn all déi Säiten déi elo protegéiert sinn. Fir d'Lëscht vun de Säiten déi fir d'Uleeë gespaart sinn, kuckt [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].",
        "protectedpages-cascade": "Nëmme Säiten déi duerch Kaskade gespaart sinn",
index f713b72..90bf88a 100644 (file)
@@ -55,7 +55,7 @@
        "tog-watchlisthideminor": "Klein bewirkinge op mien volglies verberge",
        "tog-watchlisthideliu": "Bewirkinge van aangemelde gebroekers op mien volglies versjtaeke",
        "tog-watchlistreloadautomatically": "Herlaaj de volglies autematis es 'n filter is verangerd (JavaScript vereis)",
-       "tog-watchlistunwatchlinks": "Veug direkte (neet) betrachte-links toe aan pagina's die op de wachlies staon (JavaScript vereis)",
+       "tog-watchlistunwatchlinks": "Veug direkte (neet) betrachte-links ({{int:Watchlist-unwatch}}/{{int:Watchlist-unwatch-undo}}) toe aan pagina's die op de wachlies staon (JavaScript vereis)",
        "tog-watchlisthideanons": "Bewirkinge van anonieme gebroekers op mien volglies versjtaeke",
        "tog-watchlisthidepatrolled": "Gemarkeerde verangeringe op mien volglies verberge",
        "tog-watchlisthidecategorization": "Verberg categorisatie  van  pagina's",
        "password-login-forbidden": "'t Gebroek van deze gebroekersnaam mit dit wachwoord is neet toegesjtange.",
        "mailmypassword": "Mail mich e nuuj wachwaord",
        "passwordremindertitle": "Nuuj tiedelik wachwaord van {{SITENAME}}",
-       "passwordremindertext": "Emes (waorsjienlik dich zelf) haet vanaaf IP-adres $1 'n nuuj wachwoord veur {{SITENAME}} ($4) verzoch. 't Nuuj wachwoord veur gebroeker \"$2\" is \"$3\". Es dat dien bedoeling waor, mèl diech daan noe aan en kees 'n nuuj wachwoord. 't Tiedelik wachwoord verluip euver {{PLURAL:$5|$5 daag|$5 daag}}.\n\nEs emes anders dit verzeuk heet gedoon, of wens te diech dien wachwoord weer herinners en 't neet mie wèls wiezige, negeer dan dit berich en blief dien aud wachwoord gebroeke.",
+       "passwordremindertext": "Emes haet vanaaf IP-adres $1 'n nuuj wachwoord veur {{SITENAME}} ($4) verzoch. 't Nuuj wachwaord veur gebroeker \"$2\" is \"$3\". Es det dien bedoeling woor, melj dich den noe aan en kees e nuuj wachwaord. 't Tiedelik wachwaord verluip euver {{PLURAL:$5|einen daag|$5 daag}}.\n\nEs emes anges dit verzeuk haet gedaon, of wens se dich die wachwaord weer herinjers en 't neet mie wils verangere, negeer den dit besjeid en blief dien aad wachwaord gebroeke.",
        "noemail": "D'r is gein geregistreerd e-mailadres veur \"$1\".",
        "noemailcreate": "Doe mós e geljig e-mailadres ópgaeve.",
        "passwordsent": "D'r is 'n nuui wachwaord verzonde nao 't e-mailadres dat geregistreerd sjtit veur \"$1\".\nGelieve na ontvangst opnieuw aan te melden.",
        "blocked-notice-logextract": "Deze gebroeker is noe geblok.\nDe leste bloklogregel wuuertj hiejónger t'r raodpleging gegaeve:",
        "clearyourcache": "<strong>Lèt op:</strong> Nao 't opsjlaon mós te diene browsercache wisse óm de verangeringe te zeen:\n* <strong>Firefox / Safari:</strong> hauw <em>Shift</em> ingedrök terwiels te op <em>Vernuuj</em> kliks of duujs op <em>Ctrl-F5</em> of <em>Ctrl-R</em> (<em>⌘-R</em> op 'ne Mac)\n* <strong>Google Chrome:</strong> duuj op <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> op 'ne Mac)\n* <strong>Internet Explorer:</strong> hauw <em>Ctrl</em> ingeduujt terwiels te op <em>Vernuuj</em> kliks of duujs op <em>Ctrl-F5</em>\n* <strong>Opera:</strong> gank nao <em>Menu → Instèllinge</em> (<em>Opera → Veurkäöre</em> op 'ne Mac) en den nao <em>Privaatheid & beveiliging → Wis browsergegaeves → Tiejelike aafbiljinge en bestenj</em>.",
        "usercssyoucanpreview": "'''Tip:''' Gebroek de knóp '{{int:showpreview}}' om dien nuuj CSS te teste veurdets te opsjleis.",
+       "userjsonyoucanpreview": "'''Tip:''' Gebroek de knóp '{{int:showpreview}}' om dien nuuj JSON te teste veurdets te opsjleis.",
        "userjsyoucanpreview": "'''Tip:''' Gebroek de knóp '{{int:showpreview}}' om dien nuuj JS te teste veurdets te opsjleis.",
        "usercsspreview": "<strong>Dit is allein 'n veurvertuining van dien perseunlike css, deze is neet opgeslage!</strong>",
+       "userjsonpreview": "<strong>'''Lèt op: doe tes noe dien persuunlik JSON.\nDe pagina is neet opgesjlage!</strong>",
        "userjspreview": "<strong>'''Lèt op: doe tes noe dien persuunlik JavaScript.\nDe pagina is neet opgesjlage!</strong>",
        "sitecsspreview": "'''Dit is allein 'n veurvertuin van de CSS.'''\n'''Deze is nog neet opgesjlage!'''",
+       "sitejsonpreview": "<strong>Dit is allein 'n veurvertuin van de JSON.\nDeze is nog neet opgesjlage!</strong>",
        "sitejspreview": "<strong>Dit is allein 'n veurvertuin van de JavaScriptcode.\nDe code is nog neet opgesjlage!</strong>",
-       "userinvalidconfigtitle": "'''Waarsjoewing:''' d'r is gein skin \"$1\". \nLèt op: dien eige .css- en .js-pagina's beginne mèt  'ne klein lètter, beveurbeeld {{ns:user}}:Naam/vector.css in plaats van {{ns:user}}:Naam/Vector.css.",
+       "userinvalidconfigtitle": "<strong>Waarsjoewing:</strong> d'r is gein skin \"$1\". \nLèt op: dien eige .css-, .json- en .js-pagina's beginne mèt  'ne klein lètter, beveurbeeld {{ns:user}}:Naam/vector.css in plaats van {{ns:user}}:Naam/Vector.css.",
        "updated": "(Biegewèrk)",
        "note": "'''Opmirking:'''",
        "previewnote": "<strong>Lèt op: dit is 'n controlepazjena; dien teks is nog neet opgesjlage!</strong>",
        "longpageerror": "Fout: De teks diese höbs toegevoegd haet is {{PLURAL:$1|'ne kilobyte|$1 kilobyte}} groet, wat groeter is es 't maximum van {{PLURAL:$2|'ne kilobyte|$2 kilobyte}}. Opslaon is neet meugelik.'''",
        "readonlywarning": "WAARSJUWING: De database is vasgezat veur óngerhawd, dus op 't mement kins se dien verangeringe neet opsjlaon.</strong>\n\nDe kins dien tèks 't biste opsjlaon in 'n tèksbesjtand om 't later hie nog es te prebere.\n\nt Is geslaote door de systeembehieërder waenger: $1",
        "protectedpagewarning": "'''WAARSJOEWING: Dees pagina is besjirmp zoedet ze allein door gebroekers mit administratorrechte kint waere verangerd.'''\nDe lèste logbookregel sjteit hiejónger:",
-       "semiprotectedpagewarning": "'''Lèt op:''' Dees pagina is beveilig en kin allein door geregistreerde gebroekers bewirk waere.\nDe lèste logbookregel steit hiejónger:",
+       "semiprotectedpagewarning": "<strong>Lèt op:</strong> Dees pagina is beveilig en kin allein door autobevestigde geregistreerde gebroekers bewirk waere.\nDe lèste logbookregel steit hiejónger:",
        "cascadeprotectedwarning": "<strong>Waarschuwing:</strong> Dees pagina is beveilig en kin allein door beheerders mit [[Special:ListGroupRights|specefieke rechte]] bewirk waere, omdet dees is opgenaome in de volgende {{PLURAL:$1|pagina|pagina's}} {{PLURAL:$1|dae|die}} beveilig {{PLURAL:$1|is|zeen}} mit de cascade-optie:",
        "titleprotectedwarning": "'''WAORSJUWING: Deze pagina is beveilig zodet allein inkele gebroekers 'm kinne aanmake. De beneuds [[Special:ListGroupRights|speciale rechte]].'''\nDe lèste logbookregel vólg hier:",
        "templatesused": "Op dees pagina {{PLURAL:$1|gebroek sjabloon|gebroekde sjablone}}:",
        "rcfilters-filter-humans-label": "Minsjelik (geine bot)",
        "rcfilters-filter-humans-description": "Bewirkinge door miensjelike gebroekers.",
        "rcfilters-filtergroup-reviewstatus": "Beoeardeilingsstaot",
+       "rcfilters-filter-reviewstatus-unpatrolled-description": "Bewirkinge die neet handjmaesig of autematis zint gecontroleerd.",
        "rcfilters-filter-reviewstatus-unpatrolled-label": "Óngecontroleerd",
+       "rcfilters-filter-reviewstatus-manual-description": "Bewirkinge die handjmaesig zint gecontroleerd.",
+       "rcfilters-filter-reviewstatus-manual-label": "Handjmaesig gecontroleerd",
+       "rcfilters-filter-reviewstatus-auto-description": "Bewirkinge door gevörderde gebroekers van waem 't werk autematis weurt gecontroleerd.",
+       "rcfilters-filter-reviewstatus-auto-label": "Autematis gecontroleerd",
        "rcfilters-filtergroup-significance": "Wichtigheid",
        "rcfilters-filter-minor-label": "Klein bewirkinge",
        "rcfilters-filter-minor-description": "Bewirkinge die zeen gelabeld door de gebroeker es klein.",
        "statistics-files": "Bestenj",
        "statistics-edits": "Paginabewerkinge sins t begin van {{SITENAME}}",
        "statistics-edits-average": "Gemiddeld aantal bewerkinge per pagina",
-       "statistics-users": "Geregistreerde [[Special:ListUsers|gebroekers]]",
+       "statistics-users": "Geregistreerde gebroekers",
        "statistics-users-active": "Actieve gebroekers",
        "statistics-users-active-desc": "Gebroekers die in de aafgeloupe {{PLURAL:$1|daag|$1 daag}} 'ne hanjeling höbbe oetgevoerd",
        "pageswithprop": "Pagina's mit pagina-eigensjap",
        "deadendpages": "Doedloupende pazjena's",
        "deadendpagestext": "De ongerstäönde pagina's verwieze neet nao anger pagina's in {{SITENAME}}.",
        "protectedpages": "Besjörmde pagina's",
+       "protectedpages-filters": "Filters:",
        "protectedpages-indef": "Allein blokkades zonger verloupdatum",
        "protectedpages-summary": "Dees pagina bevat 'n lies met beveiligde pagina's. Zuuch [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]] veur 'n lies van pagina's die neet moge waere aangemaak.",
        "protectedpages-cascade": "Allein beveiliginge mit de cascade-optie",
        "fix-double-redirects": "Alle doorverwiezinge biewerke die verwieze nao de originele paginanaam",
        "move-leave-redirect": "'n Doorverwiezing achterlaote",
        "protectedpagemovewarning": "'''Waorsjoewing: Dees pazjena is besjermp zoedat ze allein doer gebroekers mit administratorrechte kint weure verplaats.'''\nDe lèste logbookregel steit hierónger:",
-       "semiprotectedpagemovewarning": "'''Let op:''' Dees pazjena is beveilig en kin allein door geregistreerde gebroekers verplaats waere.\nDe lèste logbookregel steit hiejónger:",
+       "semiprotectedpagemovewarning": "<strong>Let op:</strong> Dees pazjena is beveilig en kin allein door geregistreerde gebroekers verplaats waere.\nDe lèste logbookregel steit hiejónger:",
        "move-over-sharedrepo": "[[:$1]] besteit al in 'ne gedeildje mediadatabank.\nE bestandj hiehaer verplaatse euversjrief 't gedeildj bestandj.",
        "file-exists-sharedrepo": "Deze bestandjsnaam besteit al in 'ne gedeildje mediadatabank.\nKees 'nen angere bestandjsnaam.",
        "export": "Exporteer pagina's",
        "file-info-png-looped": "herhaolendj",
        "file-info-png-repeat": "$1 {{PLURAL:$1|kieër|kieër}} aafgespeelj",
        "file-info-png-frames": "$1 {{PLURAL:$1|kader|kadere}}",
+       "file-no-thumb-animation": "<strong>Lit op: óm technische bepirkinge kónne gein miniature waere gemaak vwur dit bestandj.</strong>",
+       "file-no-thumb-animation-gif": "<strong>Lit op: óm technische bepirkinge kónne gein hoge-resoluusje GIF-plaetjes wie dit waere gemaak.</strong>",
        "newimages": "Nuuj plaetjes",
        "imagelisttext": "Hie volg 'n lies mit $1 {{PLURAL:$1|aafbeilding|aafbeildinge}} geordend $2.",
        "newimages-summary": "Op dees speciaal pazjena waere de meis recènt toegevoogde bestenj weergegaeve.",
        "invalidateemail": "E-mailbevestiging annulere",
        "notificationemail_subject_changed": "geregistreerd e-mailadres van {{SITENAME}} is verangerd",
        "notificationemail_subject_removed": "geregistreerd e-mailadres van {{SITENAME}} is eweggehaold",
+       "notificationemail_body_changed": "Emes, wersjienlik doe, haet vanaaf IP-adres $1, 't e-mailadres van de konto \"$2\" op {{SITENAME}} verangerd nao \"$3\". \n\nEs det neet van dich kump, num den drek kóntak op mit de sitebehieërder.",
+       "notificationemail_body_removed": "Emes, wersjienlik doe, haet vanaaf IP-adres $1, 't e-mailadres van de konto \"$2\" op {{SITENAME}} eweggehaold. \n\nEs det neet van dich kump, num den drek kóntak op mit de sitebehieërder.",
        "scarytranscludedisabled": "[Interwikitransclusie is oetgesjakeld]",
        "scarytranscludefailed": "[Sjabloon $1 kós neet opgehaold waer]",
        "scarytranscludefailed-httpstatus": "[Sjabloon $1 kós neet waere opgehaold: HTTP $2]",
        "scarytranscludetoolong": "[URL is te lank]",
        "deletedwhileediting": "'''Waorsjoewing''': Dees pazjena is gewis naodats doe bis begós mit bewirke!",
-       "confirmrecreate": "Gebroeker [[User:$1|$1]] ([[User talk:$1|euverlèk]]) heet dees pagina eweggesjaf naodats doe mèt bewirke begós mèt de rae:\n: ''$2''\nBevesteg estebleef dats te dees pazjena ech obbenuujts wils aanmake.",
-       "confirmrecreate-noreason": "Naodes se begós bös mit 't verangere haet [[User:$1|$1]] ([[User talk:$1|euverlègk]]) dees pagina gewösj.\nBevestig des se dees pagina óbbenuits wils aanmake.",
+       "confirmrecreate": "Gebroeker [[User:$1|$1]] ([[User talk:$1|euverlèk]]) {{GENDER:$1|haet}} dees pagina eweggesjaf naodes doe begós mit bewirke mit de raeje:\n: <em>$2</em>\nBevestig estebleef des se dees pazjena ech obbenuujts wils aanmake.",
+       "confirmrecreate-noreason": "Naodes se begós bös mit 't verangere {{GENDER:$1|haet}} [[User:$1|$1]] ([[User talk:$1|euverlègk]]) dees pagina gewösj.\nBevestig des se dees pagina óbbenuits wils aanmake.",
        "recreate": "Pazjena obbenuujts make",
        "confirm-purge-title": "Vernuuj dees pagina",
        "confirm_purge_button": "ok",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|euverlègk]])",
        "timezone-local": "Lokalen tied",
        "duplicate-defaultsort": "Waarsjuwing: De standaardsortering \"$2\" krieg veurrang veur de sortering \"$1\".",
+       "duplicate-displaytitle": "<strong>Waorsjoewing:</strong>Titelwaergaaf \"$2\" euversjrief ieëre titelwaergaaf \"$1\".",
        "version": "Versie",
        "version-extensions": "Geïnstalleerde oetbreijinge",
        "version-skins": "Geïnstalleerde uterlike",
        "version-ext-colheader-description": "Besjrieving",
        "version-ext-colheader-credits": "Sjrievers",
        "version-license-title": "Licentie veur $1",
+       "version-license-not-found": "Gein gedetailleerde infermasie is aangetroffe veur dees oetbreijing.",
        "version-credits-title": "Vermeljinge veur $1",
        "version-credits-not-found": "Gein gedetailleerde meljinge zint aangetroffe veur dees oetbreijing.",
        "version-poweredby-credits": "Deze wiki weurt aangedreve door '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
        "version-poweredby-others": "anger",
        "version-poweredby-translators": "translatewiki.net-euverzètters",
-       "version-license-info": "MediaWiki is vrieje sofware; de kins MediaWiki verspreien en/of aanpassen onger de veurwaerde van de GNU General Public License wie gepubliceerd door de Free Software Foundation; ofwaal versie 2 van de Licentie, of - nao diene wönsj - innig later versie.\n\nMediaWiki weurd verspreid in de haop det 't nuttig is, mer ZONGER INNIG GARANTIE; zonger zelfs de implicitiete garantie van VERKOUPBAARHEID of GESJIKHEID VEUR INNIG DOEL IN 'T BIEZÖNJER. Zuuch de GNU General Public License veur mier informatie.\n\nSame mit dit programma heurs se 'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van de GNU General Public License] te höbben ontvange; zo neet, sjrief den nao de Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA of [//www.gnu.org/licenses/old-licenses/gpl-2.0.html laes de licentie online].",
+       "version-credits-summary": "V'r erkènne gaer de volgende persone veur häör biedraag aan [[Special:Version|MediaWiki]].",
+       "version-license-info": "MediaWiki is vrieje sofware; de kins MediaWiki verspreien en/of aanpassen onger de veurwaerde van de GNU General Public License wie gepubliceerd door de Free Software Foundation; ofwaal versie 2 van de Licentie, of - nao diene wönsj - innig later versie.\n\nMediaWiki weurd verspreid in de haop det 't nuttig is, mer <em>ZONGER INNIG GARANTIE</em>; zonger zelfs de implicitiete garantie van <strong>VERKOUPBAARHEID</strong> of <strong>GESJIKHEID VEUR INNIG DOEL IN 'T BIEZÖNJER</strong>. Zuuch de GNU General Public License veur mier informatie.\n\nSame mit dit programma heurs se 'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van de GNU General Public License] te höbben ontvange; zo neet, sjrief den nao de Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA of [//www.gnu.org/licenses/old-licenses/gpl-2.0.html laes de licentie online].",
        "version-software": "Geïnstallieërde sofwaer",
        "version-software-product": "Perduk",
        "version-software-version": "Versie",
        "tags-create-warnings-below": "Wils se wiejergaon mit 't aanmake van 't label?",
        "tags-delete-title": "Haol label eweg",
        "tags-delete-explanation-initial": "Doe bös 't label \"$1\" eweg 'nt haole oete databank.",
+       "tags-delete-explanation-in-use": "'t Weurt eweggehaold van {{PLURAL:$2|ein versie of eine logbookregel|alle $2 versies en/of logbookregels}} worin 't weurt gebroek.",
        "tags-delete-reason": "Raeje:",
        "tags-delete-submit": "Haol dit label eweg zónger det 't kan waere trögkgedrejd",
        "tags-delete-not-allowed": "Labeles die waere bepaoldj door 'n oetbreijing kónne neet waeren eweggehaold, behauve wen de oetbreijing dit specefiek tousteit.",
        "tags-deactivate-not-allowed": "'t Is neet meugelik 't label \"$1\" te deaktivere.",
        "tags-deactivate-submit": "Deaktiveer",
        "tags-apply-no-permission": "Doe höbs gein rechte veur verangeringslabels tou te veuge aan dien verangeringe.",
+       "tags-edit-title": "Bewirk labels",
+       "tags-edit-manage-link": "Behier labels",
+       "tags-edit-revision-selected": "{{PLURAL:$1|Geselecteerde versie|Geselecteerde versies}} van [[:$2]]:",
+       "tags-edit-logentry-selected": "{{PLURAL:$1|Geselecteerde log gebeurtenis|Geselecteerde log gebeurtenisse}}:",
+       "tags-edit-existing-tags": "Bestäönde labels:",
+       "tags-edit-existing-tags-none": "<em>Gein</em>",
+       "tags-edit-new-tags": "Nuuj labels:",
+       "tags-edit-add": "Veug dees labels toe:",
+       "tags-edit-remove": "Haol dees labels eweg:",
+       "tags-edit-remove-all-tags": "(haol alle labels eweg)",
+       "tags-edit-chosen-placeholder": "Vink 'n aantal labels aan",
+       "tags-edit-chosen-no-results": "Gein euvereinkómmende labels gevónje",
+       "tags-edit-reason": "Raeje:",
+       "tags-edit-success": "De verangeringe zint tougepas wore.",
        "comparepages": "Vergeliek pazjena's",
        "compare-page1": "Paasj 1",
        "compare-page2": "Paasj 2",
        "compare-title-not-exists": "Aangegaeve titel besteit neet.",
        "compare-revision-not-exists": "Aangegaeve versie besteit neet.",
        "diff-form": "Verangeringe",
+       "permanentlink": "Permanente link",
+       "permanentlink-revid": "Versienómmer",
+       "permanentlink-submit": "Gank nao versie",
        "dberr-problems": "Os excuses. Deze site ongervindj op t moment technische probleme.",
        "dberr-again": "Wach n aantal minute en probeer t daonao opnuuj.",
        "dberr-info": "(Kan gein toegank kriege toet de databank: $1)",
+       "dberr-info-hidden": "(Kan gein toegank kriege toet de databank)",
        "dberr-usegoogle": "Wellich kins se in de tussetied zeuke via Google.",
        "dberr-outofdate": "Let op: häör indices ven os pagina's zeen wellich neet recent.",
        "dberr-cachederror": "Deze pagina is n kopie oet de cache en is wellich neet de lèste versie.",
        "htmlform-submit": "Opsjlaon",
        "htmlform-reset": "Maak verangeringe óngedaon",
        "htmlform-selectorother-other": "Anges",
+       "htmlform-no": "Nein",
+       "htmlform-yes": "Jao",
+       "htmlform-chosen-placeholder": "Vink 'n optie aan",
+       "htmlform-cloner-create": "Veug mier tou",
+       "htmlform-cloner-delete": "Haol eweg",
+       "htmlform-cloner-required": "Minstes ein waerd is vereisj.",
        "htmlform-date-placeholder": "JJJJ-MM-DD",
        "htmlform-time-placeholder": "HH:MM:SS",
        "htmlform-datetime-placeholder": "JJJJ-MM-DD HH:MM:SS",
+       "htmlform-date-invalid": "De waerd die se höbs opgegaove weurt neet herkènd es datum. Perbeer de stiel JJJJ-MM-DD.",
+       "htmlform-time-invalid": "De waerd die se höbs opgegaove weurt neet herkènd es tied. Perbeer de stiel OO:MM:SS.",
+       "htmlform-datetime-invalid": "De waerd die se höbs opgegaove weurt neet herkènd es datum en tied. Perbeer de stiel JJJJ-MM-DD OO:MM:SS.",
+       "htmlform-date-toolow": "De waerd die se höbs opgegaove ligk veur d'n ieëste toegestange datum van $1.",
+       "htmlform-date-toohigh": "De waerd die se höbs opgegaove ligk nao d'n ieëste toegestange datum van $1.",
+       "htmlform-time-toolow": "De waerd die se höbs opgegaove ligk veur d'n ieëste toegestange tied van $1.",
+       "htmlform-time-toohigh": "De waerd die se höbs opgegaove ligk nao d'n ieëste toegestange tied van $1.",
+       "htmlform-datetime-toolow": "De waerd die se höbs opgegaove ligk veur d'n ieëste toegestange datum en tied van $1.",
+       "htmlform-datetime-toohigh": "De waerd die se höbs opgegaove ligk nao d'n ieëste toegestange datum en tied van $1.",
+       "htmlform-title-badnamespace": "[[:$1]] bevindj zich neet inne naamruumde \"{{ns:$2}}\".",
+       "htmlform-title-not-creatable": "\"$1\" is geine paginanaam dae kan waere aangemaak",
+       "htmlform-title-not-exists": "$1 besjteit neet.",
+       "htmlform-user-not-exists": "<strong>$1</strong> besjteit neet.",
+       "htmlform-user-not-valid": "<strong>$1</strong> is geine geljige gebroekersnaam.",
        "logentry-delete-delete": "$1 {{GENDER:$1|haet}} de pagina $3 gewösj",
+       "logentry-delete-delete_redir": "$1 haet de redirek $3 {{GENDER:$2|eweggehaold}} door deze te euversjrieve",
        "logentry-delete-restore": "$1 {{GENDER:$2|haet}} de pagina $3 ($4) trögkgezatte",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|haet}} de pagina $3 trögkgezatte",
+       "restore-count-revisions": "{{PLURAL:$1|1 versie|$1 versies}}",
+       "restore-count-files": "{{PLURAL:$1|bestandj|bestenj}}",
        "logentry-delete-event": "$1 {{GENDER:$2|haet}} de zichbaarheid van {{PLURAL:$5|'ne logbookregel|$5 logbookregels}} van $3 gewiezig: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|haet}} de zichbaarheid van {{PLURAL:$5|'n versie|$5 versies}} van de pagina $3 verangerdj: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|haet}} de zichbaarheid van logbookregels van $3 gewiezig",
        "logentry-delete-revision-legacy": "$1 {{GENDER:$2|haet}} de zichbaarheid van versies van de pagina $3 verangerd",
        "logentry-suppress-delete": "$1 {{GENDER:$2|haet}} de pagina $3 óngerdrök",
-       "logentry-suppress-event": "$1 haet heimelik de zichbaarheid van {{PLURAL:$5|'ne logbookregel|$5 logbookregels}} van $3 gewiezig: $4",
-       "logentry-suppress-revision": "$1 haet heimelik de zichbaarheid van {{PLURAL:$5|'n versie|$5 versies}} van $3 gewiezig: $4",
-       "logentry-suppress-event-legacy": "$1 haet heimelik de zichbaarheid van logbookregels van $3 gewiezig",
-       "logentry-suppress-revision-legacy": "$1 haet heimelik de zichbaarheid van versies van de pagina $3 gewiezig.",
+       "logentry-suppress-event": "$1 {{GENDER:$2|haet}} heimelik de zichbaarheid van {{PLURAL:$5|'ne logbookregel|$5 logbookregels}} van $3 gewiezig: $4",
+       "logentry-suppress-revision": "$1 {{GENDER:$2|haet}} heimelik de zichbaarheid van {{PLURAL:$5|'n versie|$5 versies}} van $3 gewiezig: $4",
+       "logentry-suppress-event-legacy": "$1 {{GENDER:$2|haet}} heimelik de zichbaarheid van logbookregels van $3 gewiezig",
+       "logentry-suppress-revision-legacy": "$1 {{GENDER:$2|haet}} heimelik de zichbaarheid van versies van de pagina $3 gewiezig.",
        "revdelete-content-hid": "inhawd verbórge",
        "revdelete-summary-hid": "bewirkingssamevatting verbórge",
        "revdelete-uname-hid": "gebroekersnaam verbórge",
        "revdelete-uname-unhid": "gebroekersnaam ónthöld",
        "revdelete-restricted": "haet beperkinge aan beheerders opgelag",
        "revdelete-unrestricted": "haet beperkinge veur beheerders opgehaeve",
+       "logentry-block-block": "$1 {{GENDER:$2|haet}} {{GENDER:$4|$3}} geblokkeerd veur d'n doer van $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|haet}} {{GENDER:$4|$3}} gedeblokkeerd",
+       "logentry-block-reblock": "$1 {{GENDER:$2|haet}} de blokkaasj veur {{GENDER:$4|$3}} aangepas. Dees vervèlt noe op $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|haet}} {{GENDER:$4|$3}} geblokkeerd veur d'n doer van $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|haet}} de blokkaasj veur {{GENDER:$4|$3}} aangepas. Dees vervèlt noe op $5 $6",
+       "logentry-import-upload": "$1 {{GENDER:$2|haet}} $3 geïmporteerd via 'ne bestandjsupload",
+       "logentry-import-upload-details": "$1 {{GENDER:$2|haet}} $3 door middel van 'ne bestandjsupload geïmporteerd ($4 {{PLURAL:$4|versie|versies}})",
+       "logentry-import-interwiki": "$1 {{GENDER:$2|haet}} $3 geïmporteerd vanoet 'nen angere wiki",
+       "logentry-import-interwiki-details": "$1 {{GENDER:$2|haet}} $3 oet $5 geïmporteerd ($4 {{PLURAL:$4|versie|versies}})",
+       "logentry-merge-merge": "$1 {{GENDER:$2|haet}} $3 samegeveugd nao $4 (versies toet en mit $5)",
        "logentry-move-move": "$1 {{GENDER:$2|verplaatsde}} pagina $3 nao $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|verplaatsde}} pagina $3 nao $4 zónger 'ne redirek achter te laote",
        "logentry-move-move_redir": "$1 {{GENDER:$2|verplaatsde}} pagina $3 nao $4 euver 'ne redirek",
        "logentry-newusers-newusers": "$1 haet 'ne {{GENDER:$2|gebroeker}} aangemaak",
        "logentry-newusers-create": "Gebroeker $1 {{GENDER:$2|is}} aangemaak gewaore",
        "logentry-newusers-create2": "$1 haet 'ne gebroeker $3 aangemaak",
+       "logentry-newusers-byemail": "Gebroekersaccount $3 is {{GENDER:$2|aangemaak}} door $1 en 't wachwaord is versjik mitten e-mail",
        "logentry-newusers-autocreate": "De gebroeker $1 {{GENDER:$2|is}} autematis aangemaak gewaore",
+       "logentry-protect-move_prot": "$1 haet de beveiligingsinstèllinge {{GENDER:$2|verplaats}} van $4 nao $3",
+       "logentry-protect-unprotect": "$1 haet de beveiliging {{GENDER:$2|opgehöf}} van $3",
+       "logentry-protect-protect": "$1 haet $3 {{GENDER:$2|beveilig}} $4",
+       "logentry-protect-protect-cascade": "$1 haet $3 {{GENDER:$2|beveilid}} $4 [kaskaad]",
+       "logentry-protect-modify": "$1 haet 't beveiligingsniveau van $3 {{GENDER:$2|aangepas}} $4",
+       "logentry-protect-modify-cascade": "$1 hq4t het beveiligingsniveau van $3 {{GENDER:$2|aangepas}} $4 [kaskaad]",
+       "logentry-rights-rights": "$1 {{GENDER:$2|haet}} groepslidmaotsjap veur {{GENDER:$6|$3}} verangerd van $4 nao $5",
+       "logentry-rights-rights-legacy": "$1 {{GENDER:$2|haet}} 't groepslidmaotsjap verangerd veur $3",
+       "logentry-rights-autopromote": "$1 {{GENDER:$2|is}} automatisch gepromoveerd van $4 nao $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|loadje}} $3 up",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|haet}} 'n nuuj versie van $3 hoaggelaje",
+       "logentry-upload-revert": "$1 {{GENDER:$2|loadje}} $3 up",
+       "log-name-managetags": "Labelbehieërlogbook",
+       "log-description-managetags": "Dees pagina geuf 'n euverzich van behieërstake mit betrèkking toet [[Special:Tags|labels]]. 't Logbook bevatj allein aktiviteite die handjmaesig zint oetgeveurd door 'ne behieërder. Labels kónne waere gemaak of eweggehaold dore wikisofware zónger det 'n vermeljing hieveur weurt opgenómme in 't logbook.",
        "rightsnone": "(gein)",
        "feedback-adding": "Feedback weurt aan pagina toegevoeg...",
+       "feedback-back": "Trök",
        "feedback-bugcheck": "Good! Kónterleer ef of 't neet al ein vanne [$1 bekèndje bugs] is.",
        "feedback-bugnew": "Gekónterleerdj. Mèlj 'ne nuuj bug.",
        "feedback-bugornote": "Es se zewied bös óm e technisch perbleem in détail te besjrieve, [$1 rapperteer 'ne bug]. \nAnges kin se-n ouch 't einvawdig formeleer hieónger gebroeke. Dien commentaar zal waere toegeveug ane pagina \"[$3 $2]\", same mit diene gebroekersnaam enne browser dae se gebruuks.",
        "feedback-cancel": "Braek aaf",
        "feedback-close": "Gedaon",
+       "feedback-external-bug-report-button": "Deen 'n technische taak in",
+       "feedback-dialog-title": "Versjik feedback",
        "feedback-error1": "Fout: ónbekind rizzeltaot vanne API",
        "feedback-error2": "Fout: bewirking mislök",
        "feedback-error3": "Fout: gein reactie vanne API",
        "duration-decades": "$1 {{PLURAL:$1|decennium|decennia}}",
        "duration-centuries": "$1 {{PLURAL:$1|ieëf|ieëf}}",
        "duration-millennia": "$1 {{PLURAL:$1|millennium|millennia}}",
+       "limitreport-cputime-value": "$1 {{PLURAL:$1|sekond}}",
+       "limitreport-walltime": "Wirkelik tiedsbroek",
+       "limitreport-walltime-value": "$1 {{PLURAL:$1|sekond}}",
+       "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|byte|bytes}}",
+       "limitreport-templateargumentsize": "Gruuedje sjabloonparamaeters",
+       "limitreport-templateargumentsize-value": "$1 / $2 {{PLURAL:$2|byte|bytes}}",
        "expandtemplates": "Sjablone plekke",
-       "expand_templates_intro": "Dees speciaal pazjena laes de ingegaeve teks in en plektj (mitte functie subst) recursief alle sjablone in de teks. 't Plek ouch alle parserfuncties wie <nowiki>{{</nowiki>#language:...}} en variabele wie <nowiki>{{</nowiki>CURRENTDAY}} - vriejwaal al tösse dóbbel accolades.\nHiej veur waere de relevante functies van de MediaWiki-parser gebroek.",
+       "expand_templates_intro": "Dees speciaal pazjena laes de ingegaeve teks in en plek recursief alle sjablone in de wikiteks. 't Plek ouch alle parserfuncties wie <nowiki>{{</nowiki>#language:...}} en variabele wie <nowiki>{{</nowiki>CURRENTDAY}} - vriejwaal al tösse dóbbel accolades.\nVriewaal alles tösse dóbbel akkolades weurt geplek.",
        "expand_templates_title": "Contekstitel, veur {{FULLPAGENAME}}, etc:",
        "expand_templates_input": "Veur wikiteks in:",
        "expand_templates_output": "Rezultaot",
        "expand_templates_xml_output": "XML-oetveur",
+       "expand_templates_html_output": "Roewen HTML",
        "expand_templates_ok": "ok",
        "expand_templates_remove_comments": "Wis opmerkinge",
        "expand_templates_remove_nowiki": "Óngerdrök <nowiki>-tags in 't resultaat",
        "expand_templates_generate_xml": "XML-parserboum bekieke",
+       "expand_templates_generate_rawhtml": "Tuin roewen HTML",
        "expand_templates_preview": "Veurvertuining",
+       "mediastatistics-table-mimetype": "MIME-type",
+       "mediastatistics-table-extensions": "Meugelike oetbreijinge",
+       "mediastatistics-table-count": "Aantaal bestenj",
+       "mediastatistics-table-totalbytes": "Gruuedje biejein",
+       "mediastatistics-header-unknown": "Ónbekènd",
+       "mediastatistics-header-bitmap": "Bitmapplaetjes",
+       "mediastatistics-header-drawing": "Teikeninge (vectorbestenj)",
+       "mediastatistics-header-audio": "Audio",
+       "mediastatistics-header-video": "Video's",
+       "mediastatistics-header-multimedia": "Interactief media",
+       "mediastatistics-header-office": "Kantoearbestenj",
+       "mediastatistics-header-text": "Teksbestenj",
+       "mediastatistics-header-executable": "Oetveurbaar bestenj",
+       "mediastatistics-header-archive": "Gecomprimeerde bestenj",
+       "mediastatistics-header-total": "Alle bestenj",
        "special-characters-group-latin": "Letien",
        "special-characters-group-latinextended": "Oetgebreid letien",
        "special-characters-group-ipa": "IPA",
        "special-characters-group-thai": "Thai",
        "special-characters-group-lao": "Lao",
        "special-characters-group-khmer": "Cambodzjaans",
+       "special-characters-group-canadianaboriginal": "Canadees Inboorling",
+       "special-characters-title-endash": "koppelteike",
+       "special-characters-title-emdash": "gedechtestreep",
+       "special-characters-title-minus": "minteike",
+       "mw-widgets-dateinput-no-date": "Geinen datum gekaoze",
        "mw-widgets-dateinput-placeholder-day": "JJJJ-MM-DD",
        "mw-widgets-dateinput-placeholder-month": "JJJJ-MM",
+       "mw-widgets-mediasearch-input-placeholder": "Zeuk nao media",
+       "mw-widgets-mediasearch-noresults": "Gein rizzeltaote gevónje.",
+       "mw-widgets-titleinput-description-new-page": "pazjena besteit nag neet",
+       "mw-widgets-titleinput-description-redirect": "redirek nao $1",
        "randomrootpage": "Willekäörige wrootpagina",
+       "log-action-filter-block": "Saort blokkaasj:",
+       "log-action-filter-contentmodel": "Saort inhawdsmodelverangering:",
+       "log-action-filter-delete": "Saort ewegsjaffing:",
+       "log-action-filter-import": "Saort inveuring:",
+       "log-action-filter-managetags": "Saort labelbehieërhanjeling:",
+       "log-action-filter-move": "Saort verplaatsing:",
+       "log-action-filter-newusers": "Saort gebroekersaanmaak:",
+       "log-action-filter-patrol": "Saort markering:",
+       "log-action-filter-protect": "Saort beveiliging:",
+       "log-action-filter-rights": "Saort rechteverangering:",
+       "log-action-filter-suppress": "Saort óngerdrökking:",
+       "log-action-filter-upload": "Saort upload:",
        "log-action-filter-all": "Alle",
        "log-action-filter-block-block": "Blokkeer",
        "log-action-filter-block-reblock": "Aanpassing van blokkaasj",
        "log-action-filter-delete-event": "Ewegsjaffe van logbookregele",
        "log-action-filter-delete-revision": "Ewegsjaffe van versies",
        "log-action-filter-import-interwiki": "Transwikiimport",
+       "log-action-filter-import-upload": "Inveur middels XML-upload",
+       "log-action-filter-managetags-create": "Labelaanmaak",
+       "log-action-filter-managetags-delete": "Labelewegsjaffing",
+       "log-action-filter-managetags-activate": "Labelaktivering",
+       "log-action-filter-managetags-deactivate": "Labeldeaktivering",
        "pagedata-bad-title": "Óngeljigen titel: $1."
 }
index 47498e8..65aee6d 100644 (file)
@@ -25,7 +25,8 @@
                        "Nitalynx",
                        "Silraks",
                        "Zuiks",
-                       "Martinsdzerve"
+                       "Martinsdzerve",
+                       "Nixiéoffset"
                ]
        },
        "tog-underline": "Pasvītrot saites:",
        "customcssprotected": "Jums nav tiesību rediģēt šo CSS lapu, jo tā satur cita lietotāja personiskos iestatījumus.",
        "customjsprotected": "Jums nav tiesību rediģēt šo JavaScript lapu, jo tā satur cita lietotāja personiskos iestatījumus.",
        "mycustomcssprotected": "Jums nav tiesību rediģēt šo CSS lapu.",
+       "mycustomjsonprotected": "Jums nav tiesību rediģēt šo JSON lapu.",
        "mycustomjsprotected": "Jums nav tiesību rediģēt šo JavaScript lapu.",
        "myprivateinfoprotected": "Jums nav tiesību rediģēt savu privāto informāciju.",
        "mypreferencesprotected": "Jums nav tiesību rediģēt savus iestatījumus.",
        "invalidtitle-knownnamespace": "Nederīgs nosaukums ar vārdtelpu \"$2\" un tekstu \"$3\"",
        "invalidtitle-unknownnamespace": "Nederīgs nosaukums ar nezināmu vārdtelpas numuru \"$1\" un tekstu \"$2\"",
        "exception-nologin": "Neesat pieslēdzies",
+       "exception-nologin-text": "Lūdzu ienāciet lai piekļūtu šai lapai/veiktu šo darbību.",
+       "exception-nologin-text-manual": "Lūdzu $1, lai varētu piekļūt šai lapai/veikt šo darbību.",
        "virus-badscanner": "Nekorekta konfigurācija: nezināms vīrusu skeneris: ''$1''",
        "virus-scanfailed": "skenēšana neizdevās (kods $1)",
        "virus-unknownscanner": "nezināms antivīruss:",
        "cannotlogin-text": "Pieslēgšanās nav iespējama.",
        "cannotloginnow-title": "Šobrīd nevar pieslēgties",
        "cannotcreateaccount-title": "Nevar izveidot kontus",
+       "cannotcreateaccount-text": "Tieša konta izveide nav ieslēgta šajā viki.",
        "yourdomainname": "Tavs domēns",
        "password-change-forbidden": "Šajā wiki paroles nevar mainīt.",
        "externaldberror": "Notikusi vai nu ārējās autentifikācijas datubāzes kļūda, vai arī tev nav atļauts izmainīt savu ārējo kontu.",
        "undo-failure": "Šo labojumu nevar atcelt, jo ir veikti nozīmīgi labojumi vēl pēc šī labojuma izdarīšanas.",
        "undo-norev": "Šo izmaiņu nevar atcelt, jo tādas nav vai tā ir izdzēsta.",
        "undo-summary": "Atcēlu [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusija]]) izdarīto izmaiņu $1",
+       "undo-summary-username-hidden": "Atsaukta slēpta lietotāja revīzija $1",
        "cantcreateaccount-text": "[[Lietotājs:$3|$3]] ir bloķējis lietotāja izveidošanu no šīs IP adreses ('''$1''').\n\n$3 norādītais iemesls ir ''$2''",
        "viewpagelogs": "Apskatīt ar šo lapu saistītos reģistru ierakstus",
        "nohistory": "Šai lapai nav pieejama versiju hronoloģija.",
        "powersearch-remember": "Atcerēties izvēli turpmākajā meklēšanā",
        "search-external": "Ārējā meklēšana",
        "searchdisabled": "Meklēšana {{grammar:lokatīvs|{{SITENAME}}}} šobrīd ir atslēgta darbības traucējumu dēļ.\nPagaidām vari meklēt, izmantojot Google vai Yahoo.\nŅem vērā, ka meklētāju indeksētais {{grammar:ģenitīvs|{{SITENAME}}}} saturs var būt novecojis.",
+       "search-error": "Ir notikusi kļūda meklējot: $1",
        "preferences": "Izvēles",
        "mypreferences": "Izvēles",
        "prefs-edits": "Izmaiņu skaits:",
        "recentchangesdays": "Dienu skaits, kuru rādīt pēdējās izmaiņās:",
        "recentchangesdays-max": "Ne vairāk kā $1 {{PLURAL:$1|dienas|diena|dienas}}",
        "recentchangescount": "Izmaiņu skaits, kuru rāda pēc noklusējuma:",
-       "prefs-help-recentchangescount": "Šis parametrs attiecas uz pēdējo izmaiņu un hronoloģijas lapām, kā arī uz sistēmas žurnāliem",
+       "prefs-help-recentchangescount": "Maksimums: 1000",
        "prefs-help-watchlist-token2": "Šī ir slepena atslēga tavam uzraugāmo lapu sarakstam.\nIkvienam, kas to zinās, būs iespēja apskatīt tavu uzraugāmo lapu sarakstu, tāpēc nedalies ar to.\n[[Special:ResetTokens|Spied šeit, lai to atjaunotu]].",
        "savedprefs": "Jūsu izvēles ir saglabātas.",
        "timezonelegend": "Laika josla:",
        "userrights-nodatabase": "Datubāze $1 neeksistē vai nav lokāla.",
        "userrights-changeable-col": "Grupas, kuras tu vari izmainīt",
        "userrights-unchangeable-col": "Grupas, kuras tu nevari izmainīt",
+       "userrights-expiry-current": "beidzas $1",
        "userrights-expiry-othertime": "Cits laiks:",
        "group": "Grupa:",
        "group-user": "Dalībnieki",
        "php-uploaddisabledtext": "Failu augšupielāde ir atslēgta PHP.\nLūdzu, pārbaudi file_uploads uzstādījumu.",
        "uploadscripted": "Šis fails satur HTML vai skriptu kodu, kuru, interneta pārlūks, var kļūdas pēc, mēģināt interpretēt (ar potenciāli sliktām sekām).",
        "upload-scripted-dtd": "Nevar augšupielādēt SVG failus, kuri satur nestandarta DTD deklarāciju.",
+       "uploaded-hostile-svg": "Atrasts nedrošs CSS elements augšupielādētajā SVG failā.",
        "uploadinvalidxml": "Nevarēja apstrādāt augšupielādētā faila XML saturu.",
        "uploadvirus": "Šis fails satur vīrusu! Sīkāk: $1",
        "uploadjava": "Fails ir ZIP fails, kas satur Java .class failu.\nJava failu augšupielāde nav atļauta, jo tas var radīt iespējas apiet drošības ierobežojumus.",
        "zip-wrong-format": "Norādītais fails nebija ZIP fails.",
        "uploadstash-errclear": "Failu tīrīšana neizdevās.",
        "uploadstash-refresh": "Atsvaidzināt failu sarakstu",
+       "uploadstash-thumbnail": "aplūkot sīkbildi",
        "uploadstash-bad-path-unknown-type": "Nezināms tips \"$1\".",
        "uploadstash-bad-path-unrecognized-thumb-name": "Neatpazīts sīktēla nosaukums.",
+       "uploadstash-file-not-found-no-thumb": "Nevarēja iegūt sīkbildi.",
        "uploadstash-zero-length": "Faila garums ir nulle.",
        "img-auth-accessdenied": "Pieeja liegta",
        "img-auth-nopathinfo": "Trūkst PATH_INFO.\nJūsu serveris nav konfigurēts nodot šo informāciju.\nTas var būt bāzēts uz CGI un neatbalstīt img_auth.\nSkatīt https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
        "randomincategory-legend": "Nejauša lapa kategorijā",
        "randomincategory-submit": "Aiziet!",
        "randomredirect": "Nejauša pāradresācijas lapa",
+       "randomredirect-nopages": "Vārdtelpā \"$1\" nav pāradresāciju.",
        "statistics": "Statistika",
        "statistics-header-pages": "Lapu statistika",
        "statistics-header-edits": "Izmaiņu statistika",
index 7feb18c..39bcb0d 100644 (file)
        "password-login-forbidden": "ഈ ഉപയോക്തൃനാമത്തിന്റെയും രഹസ്യവാക്കിന്റെയും ഉപയോഗം നിരോധിച്ചിരിക്കുന്നു.",
        "mailmypassword": "രഹസ്യവാക്ക് പുനഃക്രമീകരിക്കുക",
        "passwordremindertitle": "{{SITENAME}} സംരംഭത്തിൽ ഉപയോഗിക്കാനുള്ള താത്കാലിക രഹസ്യവാക്ക്",
-       "passwordremindertext": "ആരോ ഒരാൾ ($1 എന്ന ഐ.പി. വിലാസത്തിൽനിന്ന് ഒരാൾ, ഒരു പക്ഷേ താങ്കളായിരിക്കാം) {{SITENAME}} ($4) സംരംഭത്തിലേക്ക് പുതിയ രഹസ്യവാക്ക് ആവശ്യപ്പെട്ടിരിക്കുന്നു. \"$2\" എന്ന ഉപയോക്താവിന്റെ താത്കാലിക രഹസ്യവാക്കായി \"$3\" സജ്ജീകരിച്ചിരിക്കുന്നു. താങ്കൾക്ക് ആവശ്യമെങ്കിൽ, താങ്കൾ പ്രവേശിച്ചശേഷം പുതിയ രഹസ്യവാക്ക് സജ്ജീകരിക്കേണ്ടതാണ്. താങ്കളുടെ താത്കാലിക രഹസ്യവാക്കിന്റെ കാലാവധി {{PLURAL:$5|ഒരു ദിവസമാകുന്നു|$5 ദിവങ്ങളാകുന്നു}}.\n\nഈ അഭ്യർത്ഥന മറ്റാരെങ്കിലും നടത്തിയതാണെങ്കിൽ, അതല്ല പഴയ രഹസ്യവാക്ക് ഓർമ്മയുണ്ടായിരിക്കുകയും അത് മാറ്റുവാൻ താങ്കൾക്ക് താത്പര്യവുമില്ലെങ്കിൽ, ഈ സന്ദേശം അവഗണിച്ച് താങ്കളുടെ പഴയ രഹസ്യവാക്ക് തുടർന്നും ഉപയോഗിക്കാവുന്നതാണ്‌.",
+       "passwordremindertext": "ആരോ ഒരാൾ ($1 എന്ന ഐ.പി. വിലാസത്തിൽനിന്ന് ഒരാൾ) {{SITENAME}} ($4) സംരംഭത്തിൽ പുതിയ രഹസ്യവാക്ക് ആവശ്യപ്പെട്ടിരിക്കുന്നു. \"$2\" എന്ന ഉപയോക്താവിന്റെ താത്കാലിക രഹസ്യവാക്കായി \"$3\" സജ്ജീകരിച്ചിരിക്കുന്നു. താങ്കൾക്ക് ആവശ്യമെങ്കിൽ, താങ്കൾ പ്രവേശിച്ചശേഷം പുതിയ രഹസ്യവാക്ക് സജ്ജീകരിക്കേണ്ടതാണ്. താങ്കളുടെ താത്കാലിക രഹസ്യവാക്കിന്റെ കാലാവധി {{PLURAL:$5|ഒരു ദിവസമാകുന്നു|$5 ദിവങ്ങളാകുന്നു}}.\n\nഈ അഭ്യർത്ഥന മറ്റാരെങ്കിലും നടത്തിയതാണെങ്കിൽ, അതല്ല പഴയ രഹസ്യവാക്ക് ഓർമ്മയുണ്ടായിരിക്കുകയും അത് മാറ്റുവാൻ താങ്കൾക്ക് താത്പര്യവുമില്ലെങ്കിൽ, ഈ സന്ദേശം അവഗണിച്ച് താങ്കളുടെ പഴയ രഹസ്യവാക്ക് തുടർന്നും ഉപയോഗിക്കാവുന്നതാണ്‌.",
        "noemail": "\"$1\" എന്ന ഉപയോക്താവ് ഇമെയിൽ വിലാസം ക്രമീകരിച്ചിട്ടില്ല.",
        "noemailcreate": "താങ്കൾ സാധുവായ ഇമെയിൽ വിലാസം നൽകേണ്ടതാണ്",
        "passwordsent": "‘$1” എന്ന അംഗത്വത്തിനായി രജിസ്റ്റർ ചെയ്യപ്പെട്ടിട്ടുള്ള ഇമെയിൽ വിലാസത്തിലേക്ക് ഒരു പുതിയ രഹസ്യവാക്ക് അയച്ചിട്ടുണ്ട്. അത് ലഭിച്ചശേഷം ദയവായി ലോഗിൻ ചെയ്യുക.",
        "statistics-files": "അപ്‌ലോഡ് ചെയ്തിട്ടുള്ള പ്രമാണങ്ങൾ",
        "statistics-edits": "{{SITENAME}} സം‌രംഭത്തിന്റെ തുടക്കം മുതലുള്ള തിരുത്തുകൾ",
        "statistics-edits-average": "ഒരു താളിലെ ശരാശരി തിരുത്തുകൾ",
-       "statistics-users": "അംഗത്വമെടുത്തിട്ടുള്ള [[Special:ListUsers|ഉപയോക്താക്കൾ]]",
+       "statistics-users": "അംഗത്വമെടുത്ത ഉപയോക്താക്കൾ",
        "statistics-users-active": "സജീവ ഉപയോക്താക്കൾ",
        "statistics-users-active-desc": "കഴിഞ്ഞ {{PLURAL:$1|ദിവസം|$1 ദിവസങ്ങൾക്കുള്ളിൽ}} പ്രവർത്തിച്ചിട്ടുള്ള ഉപയോക്താക്കൾ",
        "pageswithprop": "താളിന്റെ സവിശേഷതകളുള്ള താളുകൾ",
index 321a9be..571b51c 100644 (file)
        "rcfilters-filter-humans-label": "Menselijk (geen bot)",
        "rcfilters-filter-humans-description": "Bewerkingen door menselijke bewerkers.",
        "rcfilters-filtergroup-reviewstatus": "Beoordelingsstatus",
+       "rcfilters-filter-reviewstatus-unpatrolled-description": "Bewerkingen die niet handmatig of automatisch gecontroleerd zijn.",
        "rcfilters-filter-reviewstatus-unpatrolled-label": "Niet gecontroleerd",
+       "rcfilters-filter-reviewstatus-manual-description": "Bewerkingen die handmatig zijn gecontroleerd",
+       "rcfilters-filter-reviewstatus-manual-label": "Handmatig gecontroleerd",
+       "rcfilters-filter-reviewstatus-auto-description": "Bewerkingen door geavanceerde gebruikers wiens werk automatisch gecontroleerd is.",
+       "rcfilters-filter-reviewstatus-auto-label": "Automatisch gecontroleerd",
        "rcfilters-filtergroup-significance": "Belangrijkheid",
        "rcfilters-filter-minor-label": "Kleine bewerkingen",
        "rcfilters-filter-minor-description": "Bewerkingen die door de bewerker zijn gelabeld als klein.",
        "statistics-files": "Bestanden",
        "statistics-edits": "Paginabewerkingen sinds het begin van {{SITENAME}}",
        "statistics-edits-average": "Gemiddeld aantal bewerkingen per pagina",
-       "statistics-users": "Geregistreerde [[Special:ListUsers|gebruikers]]",
+       "statistics-users": "Geregistreerde gebruikers",
        "statistics-users-active": "Actieve gebruikers",
        "statistics-users-active-desc": "Gebruikers die in de afgelopen {{PLURAL:$1|dag|$1 dagen}} een handeling hebben uitgevoerd",
        "pageswithprop": "Pagina's met een pagina-eigenschap",
        "version-specialpages": "Speciale pagina's",
        "version-parserhooks": "Parserhooks",
        "version-variables": "Variabelen",
+       "version-editors": "Tekstverwerkers",
        "version-antispam": "Spampreventie",
        "version-other": "Overige",
        "version-mediahandlers": "Mediaverwerkers",
        "log-action-filter-delete-event": "Verwijderen van logboekregels",
        "log-action-filter-delete-revision": "Verwijderen van versies",
        "log-action-filter-import-interwiki": "Transwiki imports",
-       "log-action-filter-import-upload": "Import doormiddel van XML uploads",
+       "log-action-filter-import-upload": "Import door middel van XML uploads",
        "log-action-filter-managetags-create": "Aanmaken van label",
        "log-action-filter-managetags-delete": "Verwijderen van label",
        "log-action-filter-managetags-activate": "Activeren van label",
index 6b00db2..2deacb5 100644 (file)
        "deadendpages-summary": "{{notranslate}}\nThe summary displayed at the top of [[Special:Deadendpages]]. [[mw:Manual:Interface/Special pages summary|mw manual]].",
        "deadendpagestext": "Introductory text for [[Special:DeadendPages]]",
        "protectedpages": "{{doc-special|ProtectedPages}}",
-       "protectedpages-filters": "Title in [[Special:ProtectedPages]]",
+       "protectedpages-filters": "Title in [[Special:ProtectedPages]]\n{{Identical|Filter}}",
        "protectedpages-indef": "Option in [[Special:ProtectedPages]]",
        "protectedpages-summary": "Summary of [[Special:ProtectedPages]].\n\nSee also:\n* {{msg-mw|Protectedtitles-summary}}",
        "protectedpages-cascade": "Option in [[Special:ProtectedPages]]",
index e4b1807..3a2c2ba 100644 (file)
        "userlogin-createanother": "Отвори још један налог",
        "createacct-emailrequired": "Имејл адреса",
        "createacct-emailoptional": "Имејл адреса (необавезно)",
-       "createacct-email-ph": "Унесите Вашу имејл адресу",
+       "createacct-email-ph": "Унесите своју имејл адресу",
        "createacct-another-email-ph": "Унесите имејл адресу",
        "createaccountmail": "Користите привремену, случајно створену лозинку и пошаљите на наведену имејл адресу",
        "createaccountmail-help": "Може се користити да се некоме направи налог без сазнања лозинке.",
        "htmlform-int-toolow": "Наведена вредност је испод минимума од $1",
        "htmlform-int-toohigh": "Наведена вредност је изнад максимума од $1",
        "htmlform-required": "Ова вредност је обавезна.",
-       "htmlform-submit": "Ð\9fоÑ\88аÑ\99и",
+       "htmlform-submit": "Ð\9fоÑ\81Ñ\82ави",
        "htmlform-reset": "Врати измене",
        "htmlform-selectorother-other": "Друго",
        "htmlform-no": "Не",
index 5441099..30d841a 100644 (file)
                        "Przem(1)s"
                ]
        },
-       "tog-underline": "Podsztrychńyńcy linkůw:",
-       "tog-hideminor": "Schow drobne pomjyńańa we ńydowno pomjyńanych",
-       "tog-hidepatrolled": "Schow sprowdzůne sprowjyńa we ńydowno pomjyńanych",
-       "tog-newpageshidepatrolled": "Schow sprawdzůne zajty na wykoźe nowych zajtůw",
-       "tog-extendwatchlist": "Pokoż na mojij pozůrliśće wszyjske, a ńy jyno uostatńe sprowjyńa",
-       "tog-usenewrc": "Używej poszyrzyńo ńydowno pomjyńanych (JavaScript)",
-       "tog-numberheadings": "Automatyczno numeracyjo titlůw",
-       "tog-showtoolbar": "Pokoż gurt werkcojgůw (JavaScript)",
-       "tog-editondblclick": "Edycyjo napoczynajům dwa klikńyńća (JavaScript)",
-       "tog-editsectiononrightclick": "Klikńyńće prawym kneflym myszy na titlu tajli<br />napoczyno jigo sprowjańy(JavaScript)",
-       "tog-watchcreations": "Dowům pozůr na zajty, kere żech naszkryfloł",
-       "tog-watchdefault": "Dowům pozůr na zajty, kere żech sprowjoł",
-       "tog-watchmoves": "Dowům pozůr na zajty, kere żech przećepnył",
-       "tog-watchdeletion": "Dowům pozůr na zajty, kere żech wyćepnył",
-       "tog-minordefault": "Kożde moje sprowjańy je ńywjelge",
-       "tog-previewontop": "Uobźyrej przed placym sprowjańo",
-       "tog-previewonfirst": "Obźyrej zajta przi pjyrszym sprowjańu",
-       "tog-enotifwatchlistpages": "Wyślij e-brifa, kej ftoś zmjyńi zajta, na kero dowom pozůr",
+       "tog-underline": "Podsztrychniyniy linkōw:",
+       "tog-hideminor": "Schŏw drobne pōmiany we niydŏwno pōmiynianych",
+       "tog-hidepatrolled": "Schŏw przichwŏlōne pōmiany we niydŏwno pōmiynianych",
+       "tog-newpageshidepatrolled": "Schŏw przichwŏlōne zajty na wykŏzie nowych zajtōw",
+       "tog-extendwatchlist": "Pokŏż na mojij pozōrliście wszyjske, a niy jyno niydŏwne pōmiany",
+       "tog-usenewrc": "Potajluj pōmiany podug zajtōw we niydŏwnych pōmianach i pozōrliście",
+       "tog-numberheadings": "Automatycznŏ nōmeracyjŏ titlōw",
+       "tog-showtoolbar": "Pokŏż spisek nŏczyniōw",
+       "tog-editondblclick": "Edycyjõ napoczynajōm dwa klikniyncia (JavaScript)",
+       "tog-editsectiononrightclick": "Klikniyncie prawym kneflym myszy na titlu tajli<br />napoczynŏ jigo edycyjõ(JavaScript)",
+       "tog-watchcreations": "Przidej zajty, kere żech napisoł i pliki, kere żech wciepoł, na mojã pozōrlistã",
+       "tog-watchdefault": "Przidej zajty i pliki, kere edytujã dō mojij pozōrlisty",
+       "tog-watchmoves": "Przidej zajty i pliki, kere żech przeciepoł na mojã pozōrlistã",
+       "tog-watchdeletion": "Przidej zajty i pliki, kere wyciepujã dō mojij pozōrlisty",
+       "tog-minordefault": "Kożdõ mojã pōmianã cechuj kej niywielgõ",
+       "tog-previewontop": "Pokŏzywej ôbziyranie nad placym edycyje",
+       "tog-previewonfirst": "Pokŏż ôbziyraniy zajty przi piyrszyj edycyji",
+       "tog-enotifwatchlistpages": "Poślij e-brifa, kej ftoś pōmiyni zajtã abo plik ze mojij pozōrlisty.",
        "tog-enotifusertalkpages": "Wyślij e-brifa, kej zajta mojij godki bydźe půmjyńono",
        "tog-enotifminoredits": "Wyślij e-brifa tyż, kej by szło uo drobne pomjyńańa",
        "tog-enotifrevealaddr": "Ńy chow mojigo e-brifa we powjadomjyńach",
index 81c092a..1635a7c 100644 (file)
        "action-suppressionlog": "睇呢個私有日誌",
        "action-block": "封鎖呢位用戶嘅編輯",
        "action-protect": "改呢版嘅保護等級",
-       "action-rollback": "速還原某版最後修改人之修改",
+       "action-rollback": "快速反轉某版最後修改人嘅編輯",
        "action-import": "由其它wiki度倒入版",
        "action-importupload": "由檔案上載度倒入版",
        "action-patrol": "標示其它嘅編輯做已巡查嘅",
index f1ed0f4..34771e3 100644 (file)
        "statistics-files": "上传的文件",
        "statistics-edits": "自{{SITENAME}}建立以来的页面编辑数",
        "statistics-edits-average": "每页平均编辑数",
-       "statistics-users": "注册[[Special:ListUsers|用户]]",
+       "statistics-users": "注册用户",
        "statistics-users-active": "活跃用户",
        "statistics-users-active-desc": "在过去{{PLURAL:$1|$1天}}执行过操作的用户",
        "pageswithprop": "有页面属性的页面",
        "deadendpages": "断链页面",
        "deadendpagestext": "以下页面没有链接至{{SITENAME}}的其它页面。",
        "protectedpages": "受保护页面",
+       "protectedpages-filters": "过滤器:",
        "protectedpages-indef": "仅无限期保护",
        "protectedpages-summary": "本页面列出当前受保护的页面。要浏览受限制创建的标题列表,请参见[[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]]。",
        "protectedpages-cascade": "仅级联保护",
index 140f03f..ab166e7 100644 (file)
        "customcssprotected": "您並沒有權限編輯此 CSS 頁面,因為此頁面包含了其他使用者的個人設定。",
        "customjsprotected": "您並沒有權限編輯此 JavaScript 頁面,因為此頁面包含了其他使用者的個人設定。",
        "mycustomcssprotected": "您沒有權限編輯此 CSS 頁面。",
+       "mycustomjsonprotected": "您沒有權限編輯此 JSON 頁面。",
        "mycustomjsprotected": "您沒有權限編輯此 JavaScript 頁面。",
        "myprivateinfoprotected": "您沒有權限編輯您的私人資訊。",
        "mypreferencesprotected": "您沒有權限編輯您的偏好設定。",
        "savechanges": "儲存變更",
        "publishpage": "發佈頁面",
        "publishchanges": "發佈變更",
+       "savearticle-start": "儲存頁面…",
+       "savechanges-start": "儲存變更…",
+       "publishpage-start": "發佈頁面…",
+       "publishchanges-start": "發佈變更…",
        "preview": "預覽",
        "showpreview": "顯示預覽",
        "showdiff": "顯示變更",
        "default": "預設",
        "prefs-files": "檔案",
        "prefs-custom-css": "自訂 CSS",
+       "prefs-custom-json": "自定義 JSON",
        "prefs-custom-js": "自訂 JavaScript",
-       "prefs-common-config": "所有外觀共用的 CSS/JavaScript:",
+       "prefs-common-config": "所有外觀共用的 CSS/JSON/JavaScript:",
        "prefs-reset-intro": "您可以使用此頁面重設您的偏好設定為網站預設值。\n這個動作將無法復原。",
        "prefs-emailconfirm-label": "電子郵件確認:",
        "youremail": "Email:",
        "right-editcontentmodel": "編輯頁面的內容模型",
        "right-editinterface": "編輯使用者介面",
        "right-editusercss": "編輯其他使用者的 CSS 檔",
+       "right-edituserjson": "編輯其他使用者的 JSON 檔",
        "right-edituserjs": "編輯其他使用者的 JavaScript 檔",
        "right-editmyusercss": "編輯自己的使用者 CSS 檔",
+       "right-editmyuserjson": "編輯您自己的使用者 JSON 檔",
        "right-editmyuserjs": "編輯自己的使用者 JavaScript 檔",
        "right-viewmywatchlist": "檢視自己的監視清單",
        "right-editmywatchlist": "編輯自己的監視清單。注意,即使無此權限,某些操作仍會新增頁面至監視清單。",
        "grant-createaccount": "建立帳號",
        "grant-createeditmovepage": "建立、編輯與移動頁面",
        "grant-delete": "刪除頁面、修訂與日誌記錄",
-       "grant-editinterface": "編輯 MediaWiki 命名空間與使用者 CSS/JavaScript",
-       "grant-editmycssjs": "編輯您的使用者 CSS/JavaScript",
+       "grant-editinterface": "編輯 MediaWiki 命名空間與使用者 CSS/JSON/JavaScript",
+       "grant-editmycssjs": "編輯您的使用者 CSS/JSON/JavaScript",
        "grant-editmyoptions": "編輯您的使用者偏好設定",
        "grant-editmywatchlist": "編輯您的監視清單",
        "grant-editpage": "編輯現有的頁面",
        "statistics-files": "已上傳的檔案",
        "statistics-edits": "自 {{SITENAME}} 成立以來的頁面編輯數",
        "statistics-edits-average": "每頁平均編輯數",
-       "statistics-users": "已註冊的 [[Special:ListUsers|使用者]]",
+       "statistics-users": "已註冊的使用者",
        "statistics-users-active": "活動使用者",
        "statistics-users-active-desc": "在最近 $1 天操作過的使用者",
        "pageswithprop": "擁有屬性的頁面",
        "apisandbox-dynamic-error-exists": "命名的參數 \"$1\" 已經存在。",
        "apisandbox-deprecated-parameters": "停用的參數",
        "apisandbox-fetch-token": "自動填寫密鑰",
+       "apisandbox-add-multi": "新增",
        "apisandbox-submit-invalid-fields-title": "部份欄位無效",
        "apisandbox-submit-invalid-fields-message": "請更正已標註的欄位,然後再試一次。",
        "apisandbox-results": "結果",
index 693cd7f..6364c70 100644 (file)
@@ -6,10 +6,10 @@
        -ms-user-select: none;
        user-select: none;
 }
-.mw-collapsible-toggle:before {
+.mw-collapsible-toggle-default:before {
        content: '[';
 }
-.mw-collapsible-toggle:after {
+.mw-collapsible-toggle-default:after {
        content: ']';
 }
 /* Align the toggle based on the direction of the content language */
index 7826bab..1f40e0a 100644 (file)
                        buildDefaultToggleLink = function () {
                                return $( '<a class="mw-collapsible-text"></a>' )
                                        .text( collapseText )
-                                       .wrap( '<span class="mw-collapsible-toggle"></span>' )
+                                       .wrap( '<span class="mw-collapsible-toggle mw-collapsible-toggle-default"></span>' )
                                        .parent()
                                        .attr( {
                                                role: 'button',
index 514150c..d5c14a2 100644 (file)
@@ -61,7 +61,6 @@ abstract class ResourceLoaderTestCase extends MediaWikiTestCase {
 
                        // For wfScript()
                        'ScriptPath' => '/w',
-                       'ScriptExtension' => '.php',
                        'Script' => '/w/index.php',
                        'LoadScript' => '/w/load.php',
                ];
index dbedfc5..4bffc74 100644 (file)
@@ -1159,7 +1159,6 @@ class ApiBaseTest extends ApiTestCase {
                $integerTests = [
                        [ '+1', 1 ],
                        [ '-1', -1 ],
-                       [ '1e3', 1 ],
                        [ '1.5', 1 ],
                        [ '-1.5', -1 ],
                        [ '1abc', 1 ],
diff --git a/tests/phpunit/includes/api/ApiMoveTest.php b/tests/phpunit/includes/api/ApiMoveTest.php
new file mode 100644 (file)
index 0000000..fb697ff
--- /dev/null
@@ -0,0 +1,393 @@
+<?php
+
+/**
+ * @group API
+ * @group Database
+ * @group medium
+ *
+ * @covers ApiMove
+ */
+class ApiMoveTest extends ApiTestCase {
+       /**
+        * @param string $from Prefixed name of source
+        * @param string $to Prefixed name of destination
+        * @param string $id Page id of the page to move
+        * @param array|string|null $opts Options: 'noredirect' to expect no redirect
+        */
+       protected function assertMoved( $from, $to, $id, $opts = null ) {
+               $opts = (array)$opts;
+
+               $fromTitle = Title::newFromText( $from );
+               $toTitle = Title::newFromText( $to );
+
+               $this->assertTrue( $toTitle->exists(),
+                       "Destination {$toTitle->getPrefixedText()} does not exist" );
+
+               if ( in_array( 'noredirect', $opts ) ) {
+                       $this->assertFalse( $fromTitle->exists(),
+                               "Source {$fromTitle->getPrefixedText()} exists" );
+               } else {
+                       $this->assertTrue( $fromTitle->exists(),
+                               "Source {$fromTitle->getPrefixedText()} does not exist" );
+                       $this->assertTrue( $fromTitle->isRedirect(),
+                               "Source {$fromTitle->getPrefixedText()} is not a redirect" );
+
+                       $target = Revision::newFromTitle( $fromTitle )->getContent()->getRedirectTarget();
+                       $this->assertSame( $toTitle->getPrefixedText(), $target->getPrefixedText() );
+               }
+
+               $this->assertSame( $id, $toTitle->getArticleId() );
+       }
+
+       /**
+        * Shortcut function to create a page and return its id.
+        *
+        * @param string $name Page to create
+        * @return int ID of created page
+        */
+       protected function createPage( $name ) {
+               return $this->editPage( $name, 'Content' )->value['revision']->getPage();
+       }
+
+       public function testFromWithFromid() {
+               $this->setExpectedException( ApiUsageException::class,
+                       'The parameters "from" and "fromid" can not be used together.' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'move',
+                       'from' => 'Some page',
+                       'fromid' => 123,
+                       'to' => 'Some other page',
+               ] );
+       }
+
+       public function testMove() {
+               $name = ucfirst( __FUNCTION__ );
+
+               $id = $this->createPage( $name );
+
+               $res = $this->doApiRequestWithToken( [
+                       'action' => 'move',
+                       'from' => $name,
+                       'to' => "$name 2",
+               ] );
+
+               $this->assertMoved( $name, "$name 2", $id );
+               $this->assertArrayNotHasKey( 'warnings', $res[0] );
+       }
+
+       public function testMoveById() {
+               $name = ucfirst( __FUNCTION__ );
+
+               $id = $this->createPage( $name );
+
+               $res = $this->doApiRequestWithToken( [
+                       'action' => 'move',
+                       'fromid' => $id,
+                       'to' => "$name 2",
+               ] );
+
+               $this->assertMoved( $name, "$name 2", $id );
+               $this->assertArrayNotHasKey( 'warnings', $res[0] );
+       }
+
+       public function testMoveNonexistent() {
+               $this->setExpectedException( ApiUsageException::class,
+                       "The page you specified doesn't exist." );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'move',
+                       'from' => 'Nonexistent page',
+                       'to' => 'Different page'
+               ] );
+       }
+
+       public function testMoveNonexistentId() {
+               $this->setExpectedException( ApiUsageException::class,
+                       'There is no page with ID 2147483647.' );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'move',
+                       'fromid' => pow( 2, 31 ) - 1,
+                       'to' => 'Different page',
+               ] );
+       }
+
+       public function testMoveToInvalidPageName() {
+               $this->setExpectedException( ApiUsageException::class, 'Bad title "[".' );
+
+               $name = ucfirst( __FUNCTION__ );
+               $id = $this->createPage( $name );
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'move',
+                               'from' => $name,
+                               'to' => '[',
+                       ] );
+               } finally {
+                       $this->assertSame( $id, Title::newFromText( $name )->getArticleId() );
+               }
+       }
+
+       // @todo File moving
+
+       public function testPingLimiter() {
+               global $wgRateLimits;
+
+               $this->setExpectedException( ApiUsageException::class,
+                       "You've exceeded your rate limit. Please wait some time and try again." );
+
+               $name = ucfirst( __FUNCTION__ );
+
+               $this->setMwGlobals( 'wgMainCacheType', 'hash' );
+
+               $this->stashMwGlobals( 'wgRateLimits' );
+               $wgRateLimits['move'] = [ '&can-bypass' => false, 'user' => [ 1, 60 ] ];
+
+               $id = $this->createPage( $name );
+
+               $res = $this->doApiRequestWithToken( [
+                       'action' => 'move',
+                       'from' => $name,
+                       'to' => "$name 2",
+               ] );
+
+               $this->assertMoved( $name, "$name 2", $id );
+               $this->assertArrayNotHasKey( 'warnings', $res[0] );
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'move',
+                               'from' => "$name 2",
+                               'to' => "$name 3",
+                       ] );
+               } finally {
+                       $this->assertSame( $id, Title::newFromText( "$name 2" )->getArticleId() );
+                       $this->assertFalse( Title::newFromText( "$name 3" )->exists(),
+                               "\"$name 3\" should not exist" );
+               }
+       }
+
+       public function testTagsNoPermission() {
+               $this->setExpectedException( ApiUsageException::class,
+                       'You do not have permission to apply change tags along with your changes.' );
+
+               $name = ucfirst( __FUNCTION__ );
+
+               ChangeTags::defineTag( 'custom tag' );
+
+               $this->setGroupPermissions( 'user', 'applychangetags', false );
+
+               $id = $this->createPage( $name );
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'move',
+                               'from' => $name,
+                               'to' => "$name 2",
+                               'tags' => 'custom tag',
+                       ] );
+               } finally {
+                       $this->assertSame( $id, Title::newFromText( $name )->getArticleId() );
+                       $this->assertFalse( Title::newFromText( "$name 2" )->exists(),
+                               "\"$name 2\" should not exist" );
+               }
+       }
+
+       public function testSelfMove() {
+               $this->setExpectedException( ApiUsageException::class,
+                       'The title is the same; cannot move a page over itself.' );
+
+               $name = ucfirst( __FUNCTION__ );
+               $this->createPage( $name );
+
+               $this->doApiRequestWithToken( [
+                       'action' => 'move',
+                       'from' => $name,
+                       'to' => $name,
+               ] );
+       }
+
+       public function testMoveTalk() {
+               $name = ucfirst( __FUNCTION__ );
+
+               $id = $this->createPage( $name );
+               $talkId = $this->createPage( "Talk:$name" );
+
+               $res = $this->doApiRequestWithToken( [
+                       'action' => 'move',
+                       'from' => $name,
+                       'to' => "$name 2",
+                       'movetalk' => '',
+               ] );
+
+               $this->assertMoved( $name, "$name 2", $id );
+               $this->assertMoved( "Talk:$name", "Talk:$name 2", $talkId );
+
+               $this->assertArrayNotHasKey( 'warnings', $res[0] );
+       }
+
+       public function testMoveTalkFailed() {
+               $name = ucfirst( __FUNCTION__ );
+
+               $id = $this->createPage( $name );
+               $talkId = $this->createPage( "Talk:$name" );
+               $talkDestinationId = $this->createPage( "Talk:$name 2" );
+
+               $res = $this->doApiRequestWithToken( [
+                       'action' => 'move',
+                       'from' => $name,
+                       'to' => "$name 2",
+                       'movetalk' => '',
+               ] );
+
+               $this->assertMoved( $name, "$name 2", $id );
+               $this->assertSame( $talkId, Title::newFromText( "Talk:$name" )->getArticleId() );
+               $this->assertSame( $talkDestinationId,
+                       Title::newFromText( "Talk:$name 2" )->getArticleId() );
+               $this->assertSame( [ [
+                       'message' => 'articleexists',
+                       'params' => [],
+                       'code' => 'articleexists',
+                       'type' => 'error',
+               ] ], $res[0]['move']['talkmove-errors'] );
+
+               $this->assertArrayNotHasKey( 'warnings', $res[0] );
+       }
+
+       public function testMoveSubpages() {
+               global $wgNamespacesWithSubpages;
+
+               $name = ucfirst( __FUNCTION__ );
+
+               $this->stashMwGlobals( 'wgNamespacesWithSubpages' );
+               $wgNamespacesWithSubpages[NS_MAIN] = true;
+
+               $pages = [ $name, "$name/1", "$name/2", "Talk:$name", "Talk:$name/1", "Talk:$name/3" ];
+               $ids = [];
+               foreach ( array_merge( $pages, [ "$name/error", "$name 2/error" ] ) as $page ) {
+                       $ids[$page] = $this->createPage( $page );
+               }
+
+               $res = $this->doApiRequestWithToken( [
+                       'action' => 'move',
+                       'from' => $name,
+                       'to' => "$name 2",
+                       'movetalk' => '',
+                       'movesubpages' => '',
+               ] );
+
+               foreach ( $pages as $page ) {
+                       $this->assertMoved( $page, str_replace( $name, "$name 2", $page ), $ids[$page] );
+               }
+
+               $this->assertSame( $ids["$name/error"],
+                       Title::newFromText( "$name/error" )->getArticleId() );
+               $this->assertSame( $ids["$name 2/error"],
+                       Title::newFromText( "$name 2/error" )->getArticleId() );
+
+               $results = array_merge( $res[0]['move']['subpages'], $res[0]['move']['subpages-talk'] );
+               foreach ( $results as $arr ) {
+                       if ( $arr['from'] === "$name/error" ) {
+                               $this->assertSame( [ [
+                                       'message' => 'articleexists',
+                                       'params' => [],
+                                       'code' => 'articleexists',
+                                       'type' => 'error'
+                               ] ], $arr['errors'] );
+                       } else {
+                               $this->assertSame( str_replace( $name, "$name 2", $arr['from'] ), $arr['to'] );
+                       }
+                       $this->assertCount( 2, $arr );
+               }
+
+               $this->assertArrayNotHasKey( 'warnings', $res[0] );
+       }
+
+       public function testMoveNoPermission() {
+               $this->setExpectedException( ApiUsageException::class,
+                       'You must be a registered user and [[Special:UserLogin|logged in]] to move a page.' );
+
+               $name = ucfirst( __FUNCTION__ );
+
+               $id = $this->createPage( $name );
+
+               $user = new User();
+
+               try {
+                       $this->doApiRequestWithToken( [
+                               'action' => 'move',
+                               'from' => $name,
+                               'to' => "$name 2",
+                       ], null, $user );
+               } finally {
+                       $this->assertSame( $id, Title::newFromText( "$name" )->getArticleId() );
+                       $this->assertFalse( Title::newFromText( "$name 2" )->exists(),
+                               "\"$name 2\" should not exist" );
+               }
+       }
+
+       public function testSuppressRedirect() {
+               $name = ucfirst( __FUNCTION__ );
+
+               $id = $this->createPage( $name );
+
+               $res = $this->doApiRequestWithToken( [
+                       'action' => 'move',
+                       'from' => $name,
+                       'to' => "$name 2",
+                       'noredirect' => '',
+               ] );
+
+               $this->assertMoved( $name, "$name 2", $id, 'noredirect' );
+               $this->assertArrayNotHasKey( 'warnings', $res[0] );
+       }
+
+       public function testSuppressRedirectNoPermission() {
+               $name = ucfirst( __FUNCTION__ );
+
+               $this->setGroupPermissions( 'sysop', 'suppressredirect', false );
+
+               $id = $this->createPage( $name );
+
+               $res = $this->doApiRequestWithToken( [
+                       'action' => 'move',
+                       'from' => $name,
+                       'to' => "$name 2",
+                       'noredirect' => '',
+               ] );
+
+               $this->assertMoved( $name, "$name 2", $id );
+               $this->assertArrayNotHasKey( 'warnings', $res[0] );
+       }
+
+       public function testMoveSubpagesError() {
+               $name = ucfirst( __FUNCTION__ );
+
+               // Subpages are allowed in talk but not main
+               $idBase = $this->createPage( "Talk:$name" );
+               $idSub = $this->createPage( "Talk:$name/1" );
+
+               $res = $this->doApiRequestWithToken( [
+                       'action' => 'move',
+                       'from' => "Talk:$name",
+                       'to' => $name,
+                       'movesubpages' => '',
+               ] );
+
+               $this->assertMoved( "Talk:$name", $name, $idBase );
+               $this->assertSame( $idSub, Title::newFromText( "Talk:$name/1" )->getArticleId() );
+               $this->assertFalse( Title::newFromText( "$name/1" )->exists(),
+                       "\"$name/1\" should not exist" );
+
+               $this->assertSame( [ 'errors' => [ [
+                       'message' => 'namespace-nosubpages',
+                       'params' => [ '' ],
+                       'code' => 'namespace-nosubpages',
+                       'type' => 'error',
+               ] ] ], $res[0]['move']['subpages'] );
+
+               $this->assertArrayNotHasKey( 'warnings', $res[0] );
+       }
+}