Merge "Clarify comment on SpecialPage::getDescription"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 24 Dec 2013 10:52:08 +0000 (10:52 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 24 Dec 2013 10:52:08 +0000 (10:52 +0000)
169 files changed:
.gitignore
.jshintignore
.travis.yml [new file with mode: 0644]
RELEASE-NOTES-1.23
docs/hooks.txt
includes/AutoLoader.php
includes/DefaultSettings.php
includes/GlobalFunctions.php
includes/Message.php
includes/ProxyTools.php [deleted file]
includes/Setup.php
includes/User.php
includes/ZhConversion.php
includes/api/ApiQueryAllCategories.php
includes/api/ApiQueryAllImages.php
includes/api/ApiQueryAllLinks.php
includes/api/ApiQueryAllPages.php
includes/api/ApiQueryBase.php
includes/api/ApiQueryDeletedrevs.php
includes/api/ApiQueryFilearchive.php
includes/api/ApiQueryRandom.php
includes/cache/LocalisationCache.php
includes/content/TextContent.php
includes/filebackend/MemoryFileBackend.php [new file with mode: 0644]
includes/htmlform/HTMLForm.php
includes/installer/LocalSettingsGenerator.php
includes/installer/MysqlUpdater.php
includes/installer/WebInstallerOutput.php
includes/job/Job.php
includes/job/JobQueueGroup.php
includes/job/jobs/HTMLCacheUpdateJob.php
includes/job/jobs/NullJob.php
includes/job/jobs/RefreshLinksJob.php
includes/logging/LogEventsList.php
includes/media/Bitmap.php
includes/media/ExifBitmap.php
includes/specials/SpecialContributions.php
includes/specials/SpecialExpandTemplates.php
includes/specials/SpecialRandompage.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialRecentchangeslinked.php
includes/specials/SpecialRedirect.php
includes/specials/SpecialSearch.php
includes/specials/SpecialUserlogin.php
includes/utils/IP.php
languages/Language.php
languages/messages/MessagesAf.php
languages/messages/MessagesAng.php
languages/messages/MessagesAr.php
languages/messages/MessagesArc.php
languages/messages/MessagesAs.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBn.php
languages/messages/MessagesCa.php
languages/messages/MessagesCe.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCs.php
languages/messages/MessagesCu.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesEgl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEs.php
languages/messages/MessagesEu.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFr.php
languages/messages/MessagesFur.php
languages/messages/MessagesFy.php
languages/messages/MessagesGl.php
languages/messages/MessagesHe.php
languages/messages/MessagesHr.php
languages/messages/MessagesHsb.php
languages/messages/MessagesHu.php
languages/messages/MessagesIa.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesKa.php
languages/messages/MessagesKab.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKo.php
languages/messages/MessagesKsh.php
languages/messages/MessagesLb.php
languages/messages/MessagesLrc.php
languages/messages/MessagesLt.php
languages/messages/MessagesLv.php
languages/messages/MessagesMhr.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesNb.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPs.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesRm.php
languages/messages/MessagesRo.php
languages/messages/MessagesRu.php
languages/messages/MessagesSdc.php
languages/messages/MessagesSi.php
languages/messages/MessagesSl.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesSv.php
languages/messages/MessagesSzl.php
languages/messages/MessagesTr.php
languages/messages/MessagesUg_arab.php
languages/messages/MessagesUk.php
languages/messages/MessagesVep.php
languages/messages/MessagesVi.php
languages/messages/MessagesVro.php
languages/messages/MessagesYi.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
languages/utils/CLDRPluralRuleEvaluator.php
maintenance/generateJsonI18n.php [new file with mode: 0644]
maintenance/language/messages.inc
maintenance/mergeMessageFileList.php
maintenance/nextJobDB.php
maintenance/runJobs.php
maintenance/showJobs.php
resources/Makefile [new file with mode: 0644]
resources/README.txt [new file with mode: 0644]
resources/Resources.php
resources/mediawiki.action/mediawiki.action.edit.preview.js
resources/mediawiki.special/mediawiki.special.createAccount.css [deleted file]
resources/mediawiki.special/mediawiki.special.createAccount.js [deleted file]
resources/mediawiki.special/mediawiki.special.userLogin.css [deleted file]
resources/mediawiki.special/mediawiki.special.userlogin.common.css [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.userlogin.common.js [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.userlogin.login.css [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.userlogin.signup.css [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.userlogin.signup.js [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.vforms.css [deleted file]
resources/mediawiki.ui/components/default/buttons.less
resources/mediawiki.ui/components/default/forms.less
resources/mediawiki.ui/components/vector/buttons.less
resources/mediawiki.ui/styleguide.md [new file with mode: 0644]
resources/mediawiki.ui/vector.less
resources/mediawiki/mediawiki.hlist.css
resources/mediawiki/mediawiki.hlist.js
resources/mediawiki/mediawiki.js
resources/package.json [new file with mode: 0644]
resources/scripts/nodecheck.sh [new file with mode: 0755]
resources/styleguide-template/index.html [new file with mode: 0644]
resources/styleguide-template/public/kss.less [new file with mode: 0644]
resources/styleguide-template/public/less.js [new file with mode: 0644]
skins/MonoBook.php
skins/Vector.php
skins/common/commonPrint.css
skins/vector/beta/screen.less [deleted file]
skins/vector/beta/variables.less [deleted file]
skins/vector/collapsibleTabs.js
skins/vector/screen-hd.less
skins/vector/styles-beta.less [deleted file]
skins/vector/variables.less
tests/TestsAutoLoader.php
tests/phpunit/includes/api/ApiQueryAllPagesTest.php [new file with mode: 0644]
tests/phpunit/includes/api/MockApiQueryBase.php [new file with mode: 0644]
tests/phpunit/includes/api/query/ApiQueryTest.php
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/languages/utils/CLDRPluralRuleEvaluatorTest.php
tests/phpunit/mocks/filebackend/MockFileBackend.php

index 76d220a..c7d6f66 100644 (file)
@@ -47,6 +47,9 @@ node_modules/
 /composer.lock
 /composer.json
 
+# MediaWiki UI documentation
+resources/mediawiki.ui/docs
+
 # Operating systems
 ## Mac OS X
 .DS_Store
index 27bb258..db4ac44 100644 (file)
@@ -1,6 +1,10 @@
 # Generated documentation
 docs/html/
 docs/js/
+resources/mediawiki.ui/docs
+
+# kss template for mediawiki ui documentation
+resources/styleguide-template
 
 # third-party libs
 extensions/
diff --git a/.travis.yml b/.travis.yml
new file mode 100644 (file)
index 0000000..84fa456
--- /dev/null
@@ -0,0 +1,46 @@
+# Travis CI build configuration for MediaWiki
+# <https://travis-ci.org/wikimedia/mediawiki-core>
+#
+# The Wikimedia Foundation uses a self-hosted Jenkins instance to run unit
+# tests, but it tests code against the version of PHP that is deployed on
+# Wikimedia's production cluster. This Travis CI configuration is designed to
+# complement that setup by testing MediaWiki against HHVM.
+#
+language: php
+
+php:
+  - hhvm
+
+services:
+  - mysql
+
+branches:
+  # Test changes in master and in Wikimedia's production branches.
+  only:
+    - master
+    - /^wmf\/.*$/
+
+before_install:
+  - sudo apt-get install -qq djvulibre-bin tidy
+
+before_script:
+  # Initialise submodules, in case we're testing a Wikimedia production branch.
+  - git submodule update --init --recursive
+  # Travis CI's HHVM environment provides PHPUnit as a phar file, but
+  # MediaWiki's test suite only works if individual PHPUnit files are
+  # actual files on disk (bug 58881).
+  - composer require 'phpunit/phpunit=3.7.*'
+  - >
+      php maintenance/install.php testwiki admin
+      --pass travis
+      --dbname traviswiki
+      --dbuser travis
+      --dbpass ""
+      --scriptpath "/w"
+
+script:
+  - >
+      hhvm --php
+      -d include_path=".$(printf ':%s' vendor/phpunit/*)"
+      -d date.timezone="Etc/UTC"
+      tests/phpunit/phpunit.php
index 783ca3c..5ece7f1 100644 (file)
@@ -73,6 +73,7 @@ production.
 * (bug 57098) SpecialPasswordReset now obeys returnto parameter
 * (bug 37812) ResourceLoader will notice when a module's definition changes and
   recompile it accordingly.
+* (bug 57201) SpecialRecentChangesFilters hook is now executed for feeds.
 
 === API changes in 1.23 ===
 * (bug 54884) action=parse&prop=categories now indicates hidden and missing
@@ -83,8 +84,14 @@ production.
 * action=parse&prop=languageshtml was deprecated in 1.18 and will be removed in
   MediaWiki 1.24.
 * action=parse now has disabletoc flag to disable table of contents in output.
+* SpecialRecentChanges::feedSetup() was removed.
+* (bug 25702) list=allcategories, list=allimages, list=alllinks, list=allpages,
+  list=deletedrevs and list=filearchive did not handle case-sensitivity
+  properly for all parameters.
+* ApiQueryBase::titlePartToKey allows an extra parameter that indicates the
+  namespace in order to properly capitalize the title part.
 
-=== Languages updated in 1.23===
+=== Languages updated in 1.23 ===
 
 MediaWiki supports over 350 languages. Many localisations are updated
 regularly. Below only new and removed languages are listed, as well as
@@ -109,6 +116,15 @@ changes to languages because of Bugzilla reports.
 * The ExpandTemplates extension has been moved into MediaWiki core.
 * (bug 52812) Removed "Disable search suggestions" from Preference.
 * (bug 52809) Removed "Disable browser page caching" from Preference.
+* Three new modules intended for use by custom skins were added:
+  'skins.common.elements', 'skins.common.content', and 'skins.common.interface',
+  representing three levels of standard MediaWiki styling. Previously skin
+  creators wishing to use them had to refer to the file names of appropriate
+  files directly, which is now discouraged.
+* The modules 'skins.vector' and 'skins.monobook' have been renamed to
+  'skins.vector.styles' and 'skins.monobook.styles', respectively,
+  and their definition was changed not to include the common*.css files;
+  the two skins now load the 'skins.common.interface' module instead.
 
 == Compatibility ==
 
index 53382f4..ebc412b 100644 (file)
@@ -2208,7 +2208,9 @@ $sp: SpecialPage object, for context
 &$fields: Current HTMLForm fields
 
 'SpecialContributionsBeforeMainOutput': Before the form on Special:Contributions
-$id: User identifier
+$id: User id number, only provided for backwards-compatability
+$user: User object representing user contributions are being fetched for
+$sp: SpecialPage instance, providing context
 
 'SpecialListusersDefaultQuery': Called right before the end of
 UsersPager::getDefaultQuery().
index 55fef90..9a9ce17 100644 (file)
@@ -547,6 +547,7 @@ $wgAutoloadLocalClasses = array(
        'FSFileBackendDirList' => 'includes/filebackend/FSFileBackend.php',
        'FSFileBackendFileList' => 'includes/filebackend/FSFileBackend.php',
        'FSFileOpHandle' => 'includes/filebackend/FSFileBackend.php',
+       'MemoryFileBackend' => 'includes/filebackend/MemoryFileBackend.php',
        'SwiftFileBackend' => 'includes/filebackend/SwiftFileBackend.php',
        'SwiftFileBackendList' => 'includes/filebackend/SwiftFileBackend.php',
        'SwiftFileBackendDirList' => 'includes/filebackend/SwiftFileBackend.php',
index b1265c1..0f7707c 100644 (file)
@@ -3344,6 +3344,7 @@ $wgResourceLoaderLESSFunctions = array(
  */
 $wgResourceLoaderLESSImportPaths = array(
        "$IP/resources/mediawiki.less/",
+       "$IP/skins/vector/",
 );
 
 /**
@@ -5933,6 +5934,16 @@ $wgExtensionFunctions = array();
  * Variables defined in extensions will override conflicting variables defined
  * in the core.
  *
+ * Since MediaWiki 1.23, use of this variable to define messages is discouraged; instead, store
+ * messages in JSON format and use $wgMessagesDirs. For setting other variables than
+ * $messages, $wgExtensionMessagesFiles should still be used.
+ *
+ * If there is an entry in $wgMessagesDirs with the same key as one in
+ * $wgExtensionMessagesFiles, then any $messages variables set in the $wgExtensionMessagesFiles file
+ * will be ignored. This means an extension that only provides messages can be backwards compatible
+ * by using both $wgExtensionMessagesFiles and $wgMessagesDirs, and only one of the two
+ * will be used depending on what the version of MediaWiki supports.
+ *
  * @par Example:
  * @code
  *    $wgExtensionMessagesFiles['ConfirmEdit'] = __DIR__.'/ConfirmEdit.i18n.php';
@@ -5940,6 +5951,32 @@ $wgExtensionFunctions = array();
  */
 $wgExtensionMessagesFiles = array();
 
+/**
+ * Extension messages directories.
+ *
+ * Associative array mapping extension name to the path of the directory where message files can
+ * be found. The message files are expected to be JSON files named for their language code, e.g.
+ * en.json, de.json, etc. Extensions with messages in multiple places may specify an array of
+ * message directories.
+ *
+ * @par Simple example:
+ * @code
+ *    $wgMessagesDirs['ConfirmEdit'] = __DIR__ . '/i18n';
+ * @endcode
+ *
+ * @par Complex example:
+ * @code
+ *    $wgMessagesDirs['VisualEditor'] = array(
+ *        __DIR__ . '/i18n',
+ *        __DIR__ . '/modules/ve-core/i18n',
+ *        __DIR__ . '/modules/qunit/localisation',
+ *        __DIR__ . '/modules/oojs-ui/messages',
+ *    )
+ * @endcode
+ * @since 1.23
+ */
+$wgMessagesDirs = array();
+
 /**
  * Array of files with list(s) of extension entry points to be used in
  * maintenance/mergeMessageFileList.php
@@ -6093,9 +6130,19 @@ $wgJobClasses = array(
  * - Jobs that you would never want to run as part of a page rendering request.
  * - Jobs that you want to run on specialized machines ( like transcoding, or a particular
  *   machine on your cluster has 'outside' web access you could restrict uploadFromUrl )
+ * These settings should be global to all wikis.
  */
 $wgJobTypesExcludedFromDefaultQueue = array( 'AssembleUploadChunks', 'PublishStashedFile' );
 
+/**
+ * Map of job types to how many job "work items" should be run per second
+ * on each job runner process. The meaning of "work items" varies per job,
+ * but typically would be something like "pages to update". A single job
+ * may have a variable number of work items, as is the case with batch jobs.
+ * These settings should be global to all wikis.
+ */
+$wgJobBackoffThrottling = array();
+
 /**
  * Map of job types to configuration arrays.
  * This determines which queue class and storage system is used for each job type.
index 5a1ef6c..b2a8f5e 100644 (file)
@@ -4160,3 +4160,56 @@ function wfCanIPUseHTTPS( $ip ) {
        wfRunHooks( 'CanIPUseHTTPS', array( $ip, &$canDo ) );
        return !!$canDo;
 }
+
+/**
+ * Work out the IP address based on various globals
+ * For trusted proxies, use the XFF client IP (first of the chain)
+ *
+ * @deprecated in 1.19; call $wgRequest->getIP() directly.
+ * @return string
+ */
+function wfGetIP() {
+       wfDeprecated( __METHOD__, '1.19' );
+       global $wgRequest;
+       return $wgRequest->getIP();
+}
+
+/**
+ * Checks if an IP is a trusted proxy provider.
+ * Useful to tell if X-Forwarded-For data is possibly bogus.
+ * Squid cache servers for the site are whitelisted.
+ *
+ * @param $ip String
+ * @return bool
+ */
+function wfIsTrustedProxy( $ip ) {
+       $trusted = wfIsConfiguredProxy( $ip );
+       wfRunHooks( 'IsTrustedProxy', array( &$ip, &$trusted ) );
+       return $trusted;
+}
+
+/**
+ * Checks if an IP matches a proxy we've configured.
+ * @param $ip String
+ * @return bool
+ * @since 1.23 Supports CIDR ranges in $wgSquidServersNoPurge
+ */
+function wfIsConfiguredProxy( $ip ) {
+       global $wgSquidServers, $wgSquidServersNoPurge;
+
+       // quick check of known proxy servers
+       $trusted = in_array( $ip, $wgSquidServers )
+               || in_array( $ip, $wgSquidServersNoPurge );
+
+       if ( !$trusted ) {
+               // slightly slower check to see if the ip is listed directly or in a CIDR
+               // block in $wgSquidServersNoPurge
+               foreach ( $wgSquidServersNoPurge as $block ) {
+                       if ( strpos( $block, '/' ) !== false && IP::isInRange( $ip, $block ) ) {
+                               $trusted = true;
+                               break;
+                       }
+               }
+       }
+       return $trusted;
+}
index 6ac87b3..dd22844 100644 (file)
@@ -817,11 +817,12 @@ class Message {
                        } elseif ( isset( $param['bitrate'] ) ) {
                                return array( 'before', $this->language->formatBitrate( $param['bitrate'] ) );
                        } else {
-                               trigger_error(
-                                       'Invalid parameter for message "' . $this->getKey() . '": ' .
-                                       htmlspecialchars( serialize( $param ) ),
-                                       E_USER_WARNING
-                               );
+                               $warning = 'Invalid parameter for message "' . $this->getKey() . '": ' .
+                                       htmlspecialchars( serialize( $param ) );
+                               trigger_error( $warning, E_USER_WARNING );
+                               $e = new Exception;
+                               wfDebugLog( 'Bug58676', $warning . "\n" . $e->getTraceAsString() );
+
                                return array( 'before', '[INVALID]' );
                        }
                } elseif ( $param instanceof Message ) {
diff --git a/includes/ProxyTools.php b/includes/ProxyTools.php
deleted file mode 100644 (file)
index a0f9e5f..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-/**
- * Functions for dealing with proxies.
- *
- * 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
- */
-
-/**
- * Extracts the XFF string from the request header
- * Note: headers are spoofable
- *
- * @deprecated in 1.19; use $wgRequest->getHeader( 'X-Forwarded-For' ) instead.
- * @return string
- */
-function wfGetForwardedFor() {
-       wfDeprecated( __METHOD__, '1.19' );
-       global $wgRequest;
-       return $wgRequest->getHeader( 'X-Forwarded-For' );
-}
-
-/**
- * Returns the browser/OS data from the request header
- * Note: headers are spoofable
- *
- * @deprecated in 1.18; use $wgRequest->getHeader( 'User-Agent' ) instead.
- * @return string
- */
-function wfGetAgent() {
-       wfDeprecated( __METHOD__, '1.18' );
-       global $wgRequest;
-       return $wgRequest->getHeader( 'User-Agent' );
-}
-
-/**
- * Work out the IP address based on various globals
- * For trusted proxies, use the XFF client IP (first of the chain)
- *
- * @deprecated in 1.19; call $wgRequest->getIP() directly.
- * @return string
- */
-function wfGetIP() {
-       wfDeprecated( __METHOD__, '1.19' );
-       global $wgRequest;
-       return $wgRequest->getIP();
-}
-
-/**
- * Checks if an IP is a trusted proxy provider.
- * Useful to tell if X-Forwarded-For data is possibly bogus.
- * Squid cache servers for the site are whitelisted.
- *
- * @param $ip String
- * @return bool
- */
-function wfIsTrustedProxy( $ip ) {
-       $trusted = wfIsConfiguredProxy( $ip );
-       wfRunHooks( 'IsTrustedProxy', array( &$ip, &$trusted ) );
-       return $trusted;
-}
-
-/**
- * Checks if an IP matches a proxy we've configured.
- * @param $ip String
- * @return bool
- * @since 1.23 Supports CIDR ranges in $wgSquidServersNoPurge
- */
-function wfIsConfiguredProxy( $ip ) {
-       global $wgSquidServers, $wgSquidServersNoPurge;
-
-       // quick check of known proxy servers
-       $trusted = in_array( $ip, $wgSquidServers )
-               || in_array( $ip, $wgSquidServersNoPurge );
-
-       if ( !$trusted ) {
-               // slightly slower check to see if the ip is listed directly or in a CIDR
-               // block in $wgSquidServersNoPurge
-               foreach ( $wgSquidServersNoPurge as $block ) {
-                       if ( strpos( $block, '/' ) !== false && IP::isInRange( $ip, $block ) ) {
-                               $trusted = true;
-                               break;
-                       }
-               }
-       }
-       return $trusted;
-}
index eef5ccb..531d1a4 100644 (file)
@@ -248,13 +248,6 @@ foreach ( $wgForeignFileRepos as &$repo ) {
 }
 unset( $repo ); // no global pollution; destroy reference
 
-if ( is_null( $wgEnableAutoRotation ) ) {
-       wfProfileIn( $fname . '-defaults-rotation' );
-       // Only enable auto-rotation when the bitmap handler can rotate
-       $wgEnableAutoRotation = BitmapHandler::canRotate();
-       wfProfileOut( $fname . '-defaults-rotation' );
-}
-
 if ( $wgRCFilterByAge ) {
        # # Trim down $wgRCLinkDays so that it only lists links which are valid
        # # as determined by $wgRCMaxAge.
@@ -426,7 +419,6 @@ wfProfileOut( $fname . '-exception' );
 wfProfileIn( $fname . '-includes' );
 require_once "$IP/includes/normal/UtfNormalUtil.php";
 require_once "$IP/includes/GlobalFunctions.php";
-require_once "$IP/includes/ProxyTools.php";
 require_once "$IP/includes/normal/UtfNormalDefines.php";
 wfProfileOut( $fname . '-includes' );
 
index a2e7023..e7c5a32 100644 (file)
@@ -1041,7 +1041,7 @@ class User {
        /**
         * Initialize this object from a row from the user table.
         *
-        * @param array $row Row from the user table to load.
+        * @param stdClass $row Row from the user table to load.
         * @param array $data Further user data to load into the object
         *
         *      user_groups             Array with groups out of the user_groups table
index df98836..a62df6c 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Simplified / Traditional Chinese conversion tables
  *
- * Automatically generated using code and data in includes/zhtable/
+ * Automatically generated using code and data in maintenance/language/zhtable/
  * Do not modify directly!
  *
  * @file
index d0ab59e..6bf8075 100644 (file)
@@ -67,8 +67,8 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
                }
 
                $dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' );
-               $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
-               $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+               $from = ( $params['from'] === null ? null : $this->titlePartToKey( $params['from'], NS_CATEGORY ) );
+               $to = ( $params['to'] === null ? null : $this->titlePartToKey( $params['to'], NS_CATEGORY ) );
                $this->addWhereRange( 'cat_title', $dir, $from, $to );
 
                $min = $params['min'];
@@ -80,8 +80,9 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
                }
 
                if ( isset( $params['prefix'] ) ) {
-                       $this->addWhere( 'cat_title' .
-                               $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                       $this->addWhere( 'cat_title' . $db->buildLike(
+                               $this->titlePartToKey( $params['prefix'], NS_CATEGORY ),
+                               $db->anyString() ) );
                }
 
                $this->addOption( 'LIMIT', $params['limit'] + 1 );
index 9f97cac..4095bd8 100644 (file)
@@ -132,13 +132,14 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase {
                        }
 
                        // Image filters
-                       $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
-                       $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+                       $from = ( $params['from'] === null ? null : $this->titlePartToKey( $params['from'], NS_FILE ) );
+                       $to = ( $params['to'] === null ? null : $this->titlePartToKey( $params['to'], NS_FILE ) );
                        $this->addWhereRange( 'img_name', ( $ascendingOrder ? 'newer' : 'older' ), $from, $to );
 
                        if ( isset( $params['prefix'] ) ) {
-                               $this->addWhere( 'img_name' .
-                                       $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                               $this->addWhere( 'img_name' . $db->buildLike(
+                                       $this->titlePartToKey( $params['prefix'], NS_FILE ),
+                                       $db->anyString() ) );
                        }
                } else {
                        // Check mutually exclusive params
index ff53d0f..5be304d 100644 (file)
@@ -148,15 +148,16 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                }
 
                // 'continue' always overrides 'from'
-               $from = $continue || is_null( $params['from'] )
-                       ? null
-                       : $this->titlePartToKey( $params['from'] );
-               $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+               $from = ( $continue || $params['from'] === null ? null :
+                       $this->titlePartToKey( $params['from'], $params['namespace'] ) );
+               $to = ( $params['to'] === null ? null :
+                       $this->titlePartToKey( $params['to'], $params['namespace'] ) );
                $this->addWhereRange( $pfx . $fieldTitle, 'newer', $from, $to );
 
+
                if ( isset( $params['prefix'] ) ) {
-                       $this->addWhere( $pfx . $fieldTitle .
-                               $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                       $this->addWhere( $pfx . $fieldTitle . $db->buildLike( $this->titlePartToKey(
+                               $params['prefix'], $params['namespace'] ), $db->anyString() ) );
                }
 
                $this->addFields( array( 'pl_title' => $pfx . $fieldTitle ) );
index 363d657..430dd51 100644 (file)
@@ -87,13 +87,14 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase {
 
                $this->addWhereFld( 'page_namespace', $params['namespace'] );
                $dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' );
-               $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
-               $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+               $from = ( $params['from'] === null ? null : $this->titlePartToKey( $params['from'], $params['namespace'] ) );
+               $to = ( $params['to'] === null ? null : $this->titlePartToKey( $params['to'], $params['namespace'] ) );
                $this->addWhereRange( 'page_title', $dir, $from, $to );
 
                if ( isset( $params['prefix'] ) ) {
-                       $this->addWhere( 'page_title' .
-                               $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                       $this->addWhere( 'page_title' . $db->buildLike(
+                               $this->titlePartToKey( $params['prefix'], $params['namespace'] ),
+                               $db->anyString() ) );
                }
 
                if ( is_null( $resultPageSet ) ) {
index fcd3180..d9aacaa 100644 (file)
@@ -480,12 +480,28 @@ abstract class ApiQueryBase extends ApiBase {
        }
 
        /**
-        * An alternative to titleToKey() that doesn't trim trailing spaces
+        * An alternative to titleToKey() that doesn't trim trailing spaces, and
+        * does not mangle the input if starts with something that looks like a
+        * namespace. It is advisable to pass the namespace parameter in order to
+        * handle per-namespace capitalization settings.
         * @param string $titlePart Title part with spaces
+        * @param $defaultNamespace int Namespace to assume
         * @return string Title part with underscores
         */
-       public function titlePartToKey( $titlePart ) {
-               return substr( $this->titleToKey( $titlePart . 'x' ), 0, -1 );
+       public function titlePartToKey( $titlePart, $defaultNamespace = NS_MAIN ) {
+               $t = Title::makeTitleSafe( $defaultNamespace, $titlePart . 'x' );
+               if ( !$t ) {
+                       $this->dieUsageMsg( array( 'invalidtitle', $titlePart ) );
+               }
+               if ( $defaultNamespace != $t->getNamespace() || $t->getInterwiki() !== '' ) {
+                       // This can happen in two cases. First, if you call titlePartToKey with a title part
+                       // that looks like a namespace, but with $defaultNamespace = NS_MAIN. It would be very
+                       // difficult to handle such a case. Such cases cannot exist and are therefore treated
+                       // as invalid user input. The second case is when somebody specifies a title interwiki
+                       // prefix.
+                       $this->dieUsageMsg( array( 'invalidtitle', $titlePart ) );
+               }
+               return substr( $t->getDbKey(), 0, -1 );
        }
 
        /**
index f63e033..4e4b2cc 100644 (file)
@@ -170,13 +170,14 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                } elseif ( $mode == 'all' ) {
                        $this->addWhereFld( 'ar_namespace', $params['namespace'] );
 
-                       $from = is_null( $params['from'] ) ? null : $this->titleToKey( $params['from'] );
-                       $to = is_null( $params['to'] ) ? null : $this->titleToKey( $params['to'] );
+                       $from = $params['from'] === null ? null : $this->titlePartToKey( $params['from'], $params['namespace'] );
+                       $to = $params['to'] === null ? null : $this->titlePartToKey( $params['to'], $params['namespace'] );
                        $this->addWhereRange( 'ar_title', $dir, $from, $to );
 
                        if ( isset( $params['prefix'] ) ) {
-                               $this->addWhere( 'ar_title' .
-                                       $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                               $this->addWhere( 'ar_title' . $db->buildLike(
+                                       $this->titlePartToKey( $params['prefix'], $params['namespace'] ),
+                                       $db->anyString() ) );
                        }
                }
 
index f8f4558..e2c9964 100644 (file)
@@ -88,15 +88,16 @@ class ApiQueryFilearchive extends ApiQueryBase {
 
                // Image filters
                $dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' );
-               $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
+               $from = ( $params['from'] === null ? null : $this->titlePartToKey( $params['from'], NS_FILE ) );
                if ( !is_null( $params['continue'] ) ) {
                        $from = $params['continue'];
                }
-               $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+               $to = ( $params['to'] === null ? null : $this->titlePartToKey( $params['to'], NS_FILE ) );
                $this->addWhereRange( 'fa_name', $dir, $from, $to );
                if ( isset( $params['prefix'] ) ) {
-                       $this->addWhere( 'fa_name' .
-                               $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                       $this->addWhere( 'fa_name' . $db->buildLike(
+                               $this->titlePartToKey( $params['prefix'], NS_FILE ),
+                               $db->anyString() ) );
                }
 
                $sha1Set = isset( $params['sha1'] );
index e990386..0d54ffe 100644 (file)
@@ -60,7 +60,6 @@ class ApiQueryRandom extends ApiQueryGeneratorBase {
                $this->addWhereFld( 'page_namespace', $namespace );
                $this->addWhereRange( 'page_random', 'newer', $randstr, null );
                $this->addWhereFld( 'page_is_redirect', $redirect );
-               $this->addOption( 'USE INDEX', 'page_random' );
                if ( is_null( $resultPageSet ) ) {
                        $this->addFields( array( 'page_id', 'page_title', 'page_namespace' ) );
                } else {
index ccb94a2..55c4c58 100644 (file)
@@ -527,6 +527,36 @@ class LocalisationCache {
                return $data;
        }
 
+       /**
+        * Read a JSON file containing localisation messages.
+        * @param string $fileName Name of file to read
+        * @throws MWException if there is a syntax error in the JSON file
+        * @return array with a 'messages' key, or empty array if the file doesn't exist
+        */
+       protected function readJSONFile( $fileName ) {
+               wfProfileIn( __METHOD__ );
+               if ( !is_readable( $fileName ) ) {
+                       return array();
+               }
+
+               $json = file_get_contents( $fileName );
+               if ( $json === false ) {
+                       return array();
+               }
+               $data = FormatJson::decode( $json, true );
+               if ( $data === null ) {
+                       throw new MWException( __METHOD__ . ": Invalid JSON file: $fileName" );
+               }
+               // Remove keys starting with '@', they're reserved for metadata and non-message data
+               foreach ( $data as $key => $unused ) {
+                       if ( $key === '' || $key[0] === '@' ) {
+                               unset( $data[$key] );
+                       }
+               }
+               // The JSON format only supports messages, none of the other variables, so wrap the data
+               return array( 'messages' => $data );
+       }
+
        /**
         * Get the compiled plural rules for a given language from the XML files.
         * @since 1.20
@@ -609,6 +639,10 @@ class LocalisationCache {
                        $ruleElements = $ruleset->getElementsByTagName( "pluralRule" );
                        foreach ( $ruleElements as $elt ) {
                                $ruleType = $elt->getAttribute( 'count' );
+                               if ( $ruleType === 'other' ) {
+                                       // Don't record "other" rules, which have an empty condition
+                                       continue;
+                               }
                                $rules[] = $elt->nodeValue;
                                $ruleTypes[] = $ruleType;
                        }
@@ -736,7 +770,7 @@ class LocalisationCache {
         * @throws MWException
         */
        public function recache( $code ) {
-               global $wgExtensionMessagesFiles;
+               global $wgExtensionMessagesFiles, $wgMessagesDirs;
                wfProfileIn( __METHOD__ );
 
                if ( !$code ) {
@@ -810,11 +844,33 @@ class LocalisationCache {
                # like site-specific message overrides.
                wfProfileIn( __METHOD__ . '-extensions' );
                $allData = $initialData;
-               foreach ( $wgExtensionMessagesFiles as $fileName ) {
+               foreach ( $wgMessagesDirs as $dirs ) {
+                       foreach ( (array)$dirs as $dir ) {
+                               foreach ( $codeSequence as $csCode ) {
+                                       $fileName = "$dir/$csCode.json";
+                                       $data = $this->readJSONFile( $fileName );
+
+                                       foreach ( $data as $key => $item ) {
+                                               $this->mergeItem( $key, $allData[$key], $item );
+                                       }
+
+                                       $deps[] = new FileDependency( $fileName );
+                               }
+                       }
+               }
+
+               foreach ( $wgExtensionMessagesFiles as $extension => $fileName ) {
                        $data = $this->readPHPFile( $fileName, 'extension' );
                        $used = false;
 
                        foreach ( $data as $key => $item ) {
+                               if ( $key === 'messages' && isset( $wgMessagesDirs[$extension] ) ) {
+                                       # For backwards compatibility, ignore messages from extensions in
+                                       # $wgExtensionMessagesFiles that are also present in $wgMessagesDirs.
+                                       # This allows extensions to use both and be backwards compatible.
+                                       # Variables other than $messages still need to be supported though.
+                                       continue;
+                               }
                                if ( $this->mergeExtensionItem( $codeSequence, $key, $allData[$key], $item ) ) {
                                        $used = true;
                                }
@@ -833,6 +889,7 @@ class LocalisationCache {
 
                # Add cache dependencies for any referenced globals
                $deps['wgExtensionMessagesFiles'] = new GlobalDependency( 'wgExtensionMessagesFiles' );
+               $deps['wgMessagesDirs'] = new GlobalDependency( 'wgMessagesDirs' );
                $deps['version'] = new ConstantDependency( 'MW_LC_VERSION' );
 
                # Add dependencies to the cache entry
index ffb5cf2..068b150 100644 (file)
@@ -38,7 +38,7 @@ class TextContent extends AbstractContent {
 
                if ( $text === null || $text === false ) {
                        wfWarn( "TextContent constructed with \$text = " . var_export( $text, true ) . "! "
-                               . "This may indicate an error in the caller's scope." );
+                               . "This may indicate an error in the caller's scope.", 2 );
 
                        $text = '';
                }
diff --git a/includes/filebackend/MemoryFileBackend.php b/includes/filebackend/MemoryFileBackend.php
new file mode 100644 (file)
index 0000000..3924c12
--- /dev/null
@@ -0,0 +1,258 @@
+<?php
+/**
+ * Simulation of a backend storage in memory.
+ *
+ * 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
+ * @ingroup FileBackend
+ * @author Aaron Schulz
+ */
+
+/**
+ * Simulation of a backend storage in memory.
+ *
+ * All data in the backend is automatically deleted at the end of PHP execution.
+ * Since the data stored here is volatile, this is only useful for staging or testing.
+ *
+ * @ingroup FileBackend
+ * @since 1.23
+ */
+class MemoryFileBackend extends FileBackendStore {
+       /** @var array Map of (file path => (data,mtime) */
+       protected $files = array();
+
+       public function isPathUsableInternal( $storagePath ) {
+               return true;
+       }
+
+       protected function doCreateInternal( array $params ) {
+               $status = Status::newGood();
+
+               $dst = $this->resolveHashKey( $params['dst'] );
+               if ( $dst === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+                       return $status;
+               }
+
+               $this->files[$dst] = array(
+                       'data'  => $params['content'],
+                       'mtime' => wfTimestamp( TS_MW, time() )
+               );
+
+               return $status;
+       }
+
+       protected function doStoreInternal( array $params ) {
+               $status = Status::newGood();
+
+               $dst = $this->resolveHashKey( $params['dst'] );
+               if ( $dst === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+                       return $status;
+               }
+
+               wfSuppressWarnings();
+               $data = file_get_contents( $params['src'] );
+               wfRestoreWarnings();
+               if ( $data === false ) { // source doesn't exist?
+                       $status->fatal( 'backend-fail-store', $params['src'], $params['dst'] );
+                       return $status;
+               }
+
+               $this->files[$dst] = array(
+                       'data'  => $data,
+                       'mtime' => wfTimestamp( TS_MW, time() )
+               );
+
+               return $status;
+       }
+
+       protected function doCopyInternal( array $params ) {
+               $status = Status::newGood();
+
+               $src = $this->resolveHashKey( $params['src'] );
+               if ( $src === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['src'] );
+                       return $status;
+               }
+
+               $dst = $this->resolveHashKey( $params['dst'] );
+               if ( $dst === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+                       return $status;
+               }
+
+               if ( !isset( $this->files[$src] ) ) {
+                       if ( empty( $params['ignoreMissingSource'] ) ) {
+                               $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
+                       }
+                       return $status;
+               }
+
+               $this->files[$dst] = array(
+                       'data'  => $this->files[$src]['data'],
+                       'mtime' => wfTimestamp( TS_MW, time() )
+               );
+
+               return $status;
+       }
+
+       protected function doDeleteInternal( array $params ) {
+               $status = Status::newGood();
+
+               $src = $this->resolveHashKey( $params['src'] );
+               if ( $src === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['src'] );
+                       return $status;
+               }
+
+               if ( !isset( $this->files[$src] ) ) {
+                       if ( empty( $params['ignoreMissingSource'] ) ) {
+                               $status->fatal( 'backend-fail-delete', $params['src'] );
+                       }
+                       return $status;
+               }
+
+               unset( $this->files[$src] );
+
+               return $status;
+       }
+
+       protected function doGetFileStat( array $params ) {
+               $src = $this->resolveHashKey( $params['src'] );
+               if ( $src === null ) {
+                       return null;
+               }
+
+               if ( isset( $this->files[$src] ) ) {
+                       return array(
+                               'mtime' => $this->files[$src]['mtime'],
+                               'size'  => strlen( $this->files[$src]['data'] ),
+                       );
+               }
+
+               return false;
+       }
+
+       protected function doGetLocalCopyMulti( array $params ) {
+               $tmpFiles = array(); // (path => TempFSFile)
+               foreach ( $params['srcs'] as $srcPath ) {
+                       $src = $this->resolveHashKey( $srcPath );
+                       if ( $src === null || !isset( $this->files[$src] ) ) {
+                               $fsFile = null;
+                       } else {
+                               $fsFile = TempFSFile::factory( 'localcopy_' );
+                               if ( $fsFile ) {
+                                       $bytes = file_put_contents( $fsFile->getPath(), $this->files[$src]['data'] );
+                                       if ( $bytes !== strlen( $this->files[$src]['data'] ) ) {
+                                               $fsFile = null;
+                                       }
+                               }
+                       }
+                       $tmpFiles[$srcPath] = $fsFile;
+               }
+               return $tmpFiles;
+       }
+
+       protected function doStreamFile( array $params ) {
+               $status = Status::newGood();
+
+               $src = $this->resolveHashKey( $params['src'] );
+               if ( $src === null || !isset( $this->files[$src] ) ) {
+                       $status->fatal( 'backend-fail-stream', $params['src'] );
+                       return $status;
+               }
+
+               print $this->files[$src]['data'];
+
+               return $status;
+       }
+
+       protected function doDirectoryExists( $container, $dir, array $params ) {
+               $prefix = rtrim( "$container/$dir", '/' ) . '/';
+               foreach ( $this->files as $path => $data ) {
+                       if ( strpos( $path, $prefix ) === 0 ) {
+                               return true;
+                       }
+               }
+               return false;
+       }
+
+       public function getDirectoryListInternal( $container, $dir, array $params ) {
+               $dirs = array();
+               $prefix = rtrim( "$container/$dir", '/' ) . '/';
+               $prefixLen = strlen( $prefix );
+               foreach ( $this->files as $path => $data ) {
+                       if ( strpos( $path, $prefix ) === 0 ) {
+                               $relPath = substr( $path, $prefixLen );
+                               if ( $relPath === false ) {
+                                       continue;
+                               } elseif ( strpos( $relPath, '/' ) === false ) {
+                                       continue; // just a file
+                               }
+                               $parts = array_slice( explode( '/', $relPath ), 0, -1 ); // last part is file name
+                               if ( !empty( $params['topOnly'] ) ) {
+                                       $dirs[$parts[0]] = 1; // top directory
+                               } else {
+                                       $current = '';
+                                       foreach ( $parts as $part ) { // all directories
+                                               $dir = ( $current === '' ) ? $part : "$current/$part";
+                                               $dirs[$dir] = 1;
+                                               $current = $dir;
+                                       }
+                               }
+                       }
+               }
+               return array_keys( $dirs );
+       }
+
+       public function getFileListInternal( $container, $dir, array $params ) {
+               $files = array();
+               $prefix = rtrim( "$container/$dir", '/' ) . '/';
+               $prefixLen = strlen( $prefix );
+               foreach ( $this->files as $path => $data ) {
+                       if ( strpos( $path, $prefix ) === 0 ) {
+                               $relPath = substr( $path, $prefixLen );
+                               if ( $relPath === false ) {
+                                       continue;
+                               } elseif ( !empty( $params['topOnly'] ) && strpos( $relPath, '/' ) !== false ) {
+                                       continue;
+                               }
+                               $files[] = $relPath;
+                       }
+               }
+               return $files;
+       }
+
+       protected function directoriesAreVirtual() {
+               return true;
+       }
+
+       /**
+        * Get the absolute file system path for a storage path
+        *
+        * @param string $storagePath Storage path
+        * @return string|null
+        */
+       protected function resolveHashKey( $storagePath ) {
+               list( $fullCont, $relPath ) = $this->resolveStoragePathReal( $storagePath );
+               if ( $relPath === null ) {
+                       return null; // invalid
+               }
+               return ( $relPath !== '' ) ? "$fullCont/$relPath" : $fullCont;
+       }
+}
index 5621b01..0aea070 100644 (file)
@@ -700,7 +700,10 @@ class HTMLForm extends ContextSource {
                $this->getOutput()->preventClickjacking();
                $this->getOutput()->addModules( 'mediawiki.htmlform' );
                if ( $this->isVForm() ) {
-                       $this->getOutput()->addModuleStyles( 'mediawiki.ui' );
+                       $this->getOutput()->addModuleStyles( array(
+                               'mediawiki.ui',
+                               'mediawiki.ui.button',
+                       ) );
                        // @todo Should vertical form set setWrapperLegend( false )
                        // to hide ugly fieldsets?
                }
index 515cedb..68664c9 100644 (file)
@@ -288,7 +288,7 @@ ${serverSetting}
 
 ## The relative URL path to the logo.  Make sure you change this from the default,
 ## or else you'll overwrite your logo when you upgrade!
-\$wgLogo             = \"{$this->values['wgLogo']}\";
+\$wgLogo = \"{$this->values['wgLogo']}\";
 
 ## UPO means: this is also a user preference option
 
index 7833ec0..773afca 100644 (file)
@@ -246,8 +246,8 @@ class MysqlUpdater extends DatabaseUpdater {
 
                        // 1.23
                        array( 'addField', 'recentchanges', 'rc_source', 'patch-rc_source.sql' ),
-                       array( 'addIndex', 'logging', 'log_user_text_type_time',  'patch-log_user_text_type_time_index.sql' ),
-                       array( 'addIndex', 'logging', 'log_user_text_time',  'patch-log_user_text_time_index.sql' ),
+                       array( 'addIndex', 'logging', 'log_user_text_type_time',  'patch-logging_user_text_type_time_index.sql' ),
+                       array( 'addIndex', 'logging', 'log_user_text_time',  'patch-logging_user_text_time_index.sql' ),
                );
        }
 
index 00a4ff8..25634ba 100644 (file)
@@ -117,7 +117,8 @@ class WebInstallerOutput {
                // and loaded as one file.
                $moduleNames = array(
                        'mediawiki.legacy.shared',
-                       'skins.vector',
+                       'skins.common.interface',
+                       'skins.vector.styles',
                        'mediawiki.legacy.config',
                );
 
index 77652a4..067ede1 100644 (file)
@@ -197,6 +197,15 @@ abstract class Job {
                return true;
        }
 
+       /**
+        * @return integer Number of actually "work items" handled in this job
+        * @see $wgJobBackoffThrottling
+        * @since 1.23
+        */
+       public function workItemCount() {
+               return 1;
+       }
+
        /**
         * Subclasses may need to override this to make duplication detection work.
         * The resulting map conveys everything that makes the job unique. This is
index 4f11bbf..d71df15 100644 (file)
@@ -44,7 +44,6 @@ class JobQueueGroup {
        const TYPE_ANY = 2; // integer; any job
 
        const USE_CACHE = 1; // integer; use process or persistent cache
-       const USE_PRIORITY = 2; // integer; respect deprioritization
 
        const PROC_CACHE_TTL = 15; // integer; seconds
 
@@ -149,21 +148,21 @@ class JobQueueGroup {
         * This pops a job off a queue as specified by $wgJobTypeConf and
         * updates the aggregate job queue information cache as needed.
         *
-        * @param int|string $qtype JobQueueGroup::TYPE_DEFAULT or type string
+        * @param int|string $qtype JobQueueGroup::TYPE_* constant or job type string
         * @param int $flags Bitfield of JobQueueGroup::USE_* constants
+        * @param array $blacklist List of job types to ignore
         * @return Job|bool Returns false on failure
         */
-       public function pop( $qtype = self::TYPE_DEFAULT, $flags = 0 ) {
+       public function pop( $qtype = self::TYPE_DEFAULT, $flags = 0, array $blacklist = array() ) {
+               $job = false;
+
                if ( is_string( $qtype ) ) { // specific job type
-                       if ( ( $flags & self::USE_PRIORITY ) && $this->isQueueDeprioritized( $qtype ) ) {
-                               return false; // back off
-                       }
-                       $job = $this->get( $qtype )->pop();
-                       if ( !$job ) {
-                               JobQueueAggregator::singleton()->notifyQueueEmpty( $this->wiki, $qtype );
+                       if ( !in_array( $qtype, $blacklist ) ) {
+                               $job = $this->get( $qtype )->pop();
+                               if ( !$job ) {
+                                       JobQueueAggregator::singleton()->notifyQueueEmpty( $this->wiki, $qtype );
+                               }
                        }
-
-                       return $job;
                } else { // any job in the "default" jobs types
                        if ( $flags & self::USE_CACHE ) {
                                if ( !$this->cache->has( 'queues-ready', 'list', self::PROC_CACHE_TTL ) ) {
@@ -177,23 +176,22 @@ class JobQueueGroup {
                        if ( $qtype == self::TYPE_DEFAULT ) {
                                $types = array_intersect( $types, $this->getDefaultQueueTypes() );
                        }
+
+                       $types = array_diff( $types, $blacklist ); // avoid selected types
                        shuffle( $types ); // avoid starvation
 
                        foreach ( $types as $type ) { // for each queue...
-                               if ( ( $flags & self::USE_PRIORITY ) && $this->isQueueDeprioritized( $type ) ) {
-                                       continue; // back off
-                               }
                                $job = $this->get( $type )->pop();
                                if ( $job ) { // found
-                                       return $job;
+                                       break;
                                } else { // not found
                                        JobQueueAggregator::singleton()->notifyQueueEmpty( $this->wiki, $type );
                                        $this->cache->clear( 'queues-ready' );
                                }
                        }
-
-                       return false; // no jobs found
                }
+
+               return $job;
        }
 
        /**
@@ -330,32 +328,6 @@ class JobQueueGroup {
                return $this->coalescedQueues;
        }
 
-       /**
-        * Check if jobs should not be popped of a queue right now.
-        * This is only used for performance, such as to avoid spamming
-        * the queue with many sub-jobs before they actually get run.
-        *
-        * @param string $type
-        * @return bool
-        */
-       public function isQueueDeprioritized( $type ) {
-               if ( $this->cache->has( 'isDeprioritized', $type, 5 ) ) {
-                       return $this->cache->get( 'isDeprioritized', $type );
-               }
-               if ( $type === 'refreshLinks2' ) {
-                       // Don't keep converting refreshLinksPartition => refreshLinks jobs if the
-                       // later jobs have not been done yet. This helps throttle queue spam.
-                       // @TODO: this is mostly a WMF-specific hack and should be removed when
-                       // refreshLinks2 jobs are drained.
-                       $deprioritized = $this->get( 'refreshLinks' )->getSize() > 10000;
-                       $this->cache->set( 'isDeprioritized', $type, $deprioritized );
-
-                       return $deprioritized;
-               }
-
-               return false;
-       }
-
        /**
         * Execute any due periodic queue maintenance tasks for all queues.
         *
@@ -392,6 +364,10 @@ class JobQueueGroup {
                                        }
                                }
                        }
+                       // The tasks may have recycled jobs or release delayed jobs into the queue
+                       if ( isset( $tasksRun[$type] ) && !$queue->isEmpty() ) {
+                               JobQueueAggregator::singleton()->notifyQueueNonEmpty( $this->wiki, $type );
+                       }
                }
 
                $wgMemc->merge( $key, function ( $cache, $key, $lastRuns ) use ( $tasksRun ) {
index 833616d..61d100c 100644 (file)
@@ -154,4 +154,8 @@ class HTMLCacheUpdateJob extends Job {
                        }
                }
        }
+
+       public function workItemCount() {
+               return isset( $this->params['pages'] ) ? count( $this->params['pages'] ) : 1;
+       }
 }
index 1da00a1..b2d6a9a 100644 (file)
@@ -48,7 +48,6 @@ class NullJob extends Job {
        /**
         * @param Title $title
         * @param array $params job parameters (lives, usleep)
-        * @param int $id Job id
         */
        function __construct( $title, $params ) {
                parent::__construct( 'null', $title, $params );
index d8526ee..bdf0fdf 100644 (file)
@@ -170,4 +170,8 @@ class RefreshLinksJob extends Job {
 
                return $info;
        }
+
+       public function workItemCount() {
+               return isset( $this->params['pages'] ) ? count( $this->params['pages'] ) : 1;
+       }
 }
index c069fdb..ead418d 100644 (file)
@@ -561,7 +561,14 @@ class LogEventsList extends ContextSource {
 
                if ( $logBody ) {
                        if ( $msgKey[0] ) {
-                               $s = '<div class="mw-warning-with-logexcerpt">';
+                               $dir = $context->getLanguage()->getDir();
+                               $lang = $context->getLanguage()->getCode();
+
+                               $s = Xml::openElement( 'div', array(
+                                       'class' => "mw-warning-with-logexcerpt mw-content-$dir",
+                                       'dir' => $dir,
+                                       'lang' => $lang,
+                               ) );
 
                                if ( count( $msgKey ) == 1 ) {
                                        $s .= $context->msg( $msgKey[0] )->parseAsBlock();
index eeb8078..1be04a7 100644 (file)
@@ -753,6 +753,21 @@ class BitmapHandler extends ImageHandler {
                }
        }
 
+       /**
+        * @see $wgEnableAutoRotation
+        * @return bool Whether auto rotation is enabled
+        */
+       public static function autoRotateEnabled() {
+               global $wgEnableAutoRotation;
+
+               if ( $wgEnableAutoRotation === null ) {
+                       // Only enable auto-rotation when the bitmap handler can rotate
+                       $wgEnableAutoRotation = BitmapHandler::canRotate();
+               }
+
+               return $wgEnableAutoRotation;
+       }
+
        /**
         * @param File $file
         * @param array $params Rotate parameters.
index fe037b7..4bbafc1 100644 (file)
@@ -169,12 +169,11 @@ class ExifBitmapHandler extends BitmapHandler {
         * @return array
         */
        function getImageSize( $image, $path ) {
-               global $wgEnableAutoRotation;
                $gis = parent::getImageSize( $image, $path );
 
                // Don't just call $image->getMetadata(); FSFile::getPropsFromPath() calls us with a bogus object.
                // This may mean we read EXIF data twice on initial upload.
-               if ( $wgEnableAutoRotation ) {
+               if ( BitmapHandler::autoRotateEnabled() ) {
                        $meta = $this->getMetadata( $image, $path );
                        $rotation = $this->getRotationForExif( $meta );
                } else {
@@ -203,8 +202,7 @@ class ExifBitmapHandler extends BitmapHandler {
         * @return int 0, 90, 180 or 270
         */
        public function getRotation( $file ) {
-               global $wgEnableAutoRotation;
-               if ( !$wgEnableAutoRotation ) {
+               if ( !BitmapHandler::autoRotateEnabled() ) {
                        return 0;
                }
 
index af6a35b..551b972 100644 (file)
@@ -168,7 +168,7 @@ class SpecialContributions extends SpecialPage {
                // Add RSS/atom links
                $this->addFeedLinks( array( 'action' => 'feedcontributions', 'user' => $target ) );
 
-               if ( wfRunHooks( 'SpecialContributionsBeforeMainOutput', array( $id ) ) ) {
+               if ( wfRunHooks( 'SpecialContributionsBeforeMainOutput', array( $id, $userObj, $this ) ) ) {
                        $out->addHTML( $this->getForm() );
 
                        $pager = new ContribsPager( $this->getContext(), array(
index 24476fe..19d7a6b 100644 (file)
@@ -254,4 +254,8 @@ class SpecialExpandTemplates extends SpecialPage {
                $out->addHTML( $html );
                $out->addHTML( Html::closeElement( 'div' ) );
        }
+
+       protected function getGroupName() {
+               return 'wiki';
+       }
 }
index c94d2b3..086193e 100644 (file)
@@ -144,7 +144,6 @@ class RandomPage extends SpecialPage {
                        ), $this->extra ),
                        'options' => array(
                                'ORDER BY' => 'page_random',
-                               'USE INDEX' => 'page_random',
                                'LIMIT' => 1,
                        ),
                        'join_conds' => array()
index 3b121fb..f866158 100644 (file)
@@ -30,6 +30,14 @@ class SpecialRecentChanges extends IncludableSpecialPage {
        var $rcOptions, $rcSubpage;
        protected $customFilters;
 
+       /**
+        * The feed format to output as (either 'rss' or 'atom'), or null if no
+        * feed output was requested
+        *
+        * @var string $feedFormat
+        */
+       protected $feedFormat;
+
        public function __construct( $name = 'Recentchanges' ) {
                parent::__construct( $name );
        }
@@ -69,10 +77,11 @@ class SpecialRecentChanges extends IncludableSpecialPage {
         * Create a FormOptions object with options as specified by the user
         *
         * @param array $parameters
-        *
         * @return FormOptions
         */
        public function setup( $parameters ) {
+               global $wgFeedLimit;
+
                $opts = $this->getDefaultOptions();
 
                foreach ( $this->getCustomFilters() as $key => $params ) {
@@ -86,7 +95,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                        $this->parseParameters( $parameters, $opts );
                }
 
-               $opts->validateIntBounds( 'limit', 0, 5000 );
+               $opts->validateIntBounds( 'limit', 0, $this->feedFormat ? $wgFeedLimit : 5000 );
 
                return $opts;
        }
@@ -105,31 +114,12 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                return $this->customFilters;
        }
 
-       /**
-        * Create a FormOptions object specific for feed requests and return it
-        *
-        * @return FormOptions
-        */
-       public function feedSetup() {
-               global $wgFeedLimit;
-               $opts = $this->getDefaultOptions();
-               $opts->fetchValuesFromRequest( $this->getRequest() );
-               $opts->validateIntBounds( 'limit', 0, $wgFeedLimit );
-
-               return $opts;
-       }
-
        /**
         * Get the current FormOptions for this request
         */
        public function getOptions() {
                if ( $this->rcOptions === null ) {
-                       if ( $this->including() ) {
-                               $isFeed = false;
-                       } else {
-                               $isFeed = (bool)$this->getRequest()->getVal( 'feed' );
-                       }
-                       $this->rcOptions = $isFeed ? $this->feedSetup() : $this->setup( $this->rcSubpage );
+                       $this->rcOptions = $this->setup( $this->rcSubpage );
                }
 
                return $this->rcOptions;
@@ -142,12 +132,12 @@ class SpecialRecentChanges extends IncludableSpecialPage {
         */
        public function execute( $subpage ) {
                $this->rcSubpage = $subpage;
-               $feedFormat = $this->including() ? null : $this->getRequest()->getVal( 'feed' );
+               $this->feedFormat = $this->including() ? null : $this->getRequest()->getVal( 'feed' );
 
                # 10 seconds server-side caching max
                $this->getOutput()->setSquidMaxage( 10 );
                # Check if the client has a cached version
-               $lastmod = $this->checkLastModified( $feedFormat );
+               $lastmod = $this->checkLastModified( $this->feedFormat );
                if ( $lastmod === false ) {
                        return;
                }
@@ -168,7 +158,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                        return;
                }
 
-               if ( !$feedFormat ) {
+               if ( !$this->feedFormat ) {
                        $batch = new LinkBatch;
                        foreach ( $rows as $row ) {
                                $batch->add( NS_USER, $row->rc_user_text );
@@ -177,8 +167,8 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                        }
                        $batch->execute();
                }
-               if ( $feedFormat ) {
-                       list( $changesFeed, $formatter ) = $this->getFeedObject( $feedFormat );
+               if ( $this->feedFormat ) {
+                       list( $changesFeed, $formatter ) = $this->getFeedObject( $this->feedFormat );
                        /** @var ChangesFeed $changesFeed */
                        $changesFeed->execute( $formatter, $rows, $lastmod, $opts );
                } else {
index afd5b4e..1c3e05c 100644 (file)
@@ -44,12 +44,6 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges {
                $opts['target'] = $par;
        }
 
-       public function feedSetup() {
-               $opts = parent::feedSetup();
-               $opts['target'] = $this->getRequest()->getVal( 'target' );
-               return $opts;
-       }
-
        public function getFeedObject( $feedFormat ) {
                $feed = new ChangesFeed( $feedFormat, false );
                $feedObj = $feed->getFeedObject(
index f05dacb..8ec6f85 100644 (file)
@@ -135,6 +135,25 @@ class SpecialRedirect extends FormSpecialPage {
                ) );
        }
 
+       /**
+        * Handle Special:Redirect/page/xxx (by redirecting to index.php?curid=xxx)
+        *
+        * @return string|null url to redirect to, or null if $mValue is invalid.
+        */
+       function dispatchPage() {
+               $curid = $this->mValue;
+               if ( !ctype_digit( $curid ) ) {
+                       return null;
+               }
+               $curid = (int)$curid;
+               if ( $curid === 0 ) {
+                       return null;
+               }
+               return wfAppendQuery( wfScript( 'index' ), array(
+                       'curid' => $curid
+               ) );
+       }
+
        /**
         * Use appropriate dispatch* method to obtain a redirection URL,
         * and either: redirect, set a 404 error code and error message,
@@ -155,6 +174,9 @@ class SpecialRedirect extends FormSpecialPage {
                case 'revision':
                        $url = $this->dispatchRevision();
                        break;
+               case 'page':
+                       $url = $this->dispatchPage();
+                       break;
                default:
                        $this->getOutput()->setStatusCode( 404 );
                        $url = null;
@@ -177,8 +199,10 @@ class SpecialRedirect extends FormSpecialPage {
                $mp = $this->getMessagePrefix();
                $ns = array(
                        // subpage => message
-                       // Messages: redirect-user, redirect-revision, redirect-file
+                       // Messages: redirect-user, redirect-page, redirect-revision,
+                       // redirect-file
                        'user' => $mp . '-user',
+                       'page' => $mp . '-page',
                        'revision' => $mp . '-revision',
                        'file' => $mp . '-file',
                );
index b6b219f..36ccaf8 100644 (file)
@@ -87,7 +87,7 @@ class SpecialSearch extends SpecialPage {
                $out = $this->getOutput();
                $out->allowClickjacking();
                $out->addModuleStyles( array(
-                       'mediawiki.special', 'mediawiki.special.search', 'mediawiki.ui'
+                       'mediawiki.special', 'mediawiki.special.search', 'mediawiki.ui', 'mediawiki.ui.button'
                ) );
 
                // Strip underscores from title parameter; most of the time we'll want
@@ -476,7 +476,7 @@ class SpecialSearch extends SpecialPage {
                if ( strval( $term ) !== '' ) {
                        $out->setPageTitle( $this->msg( 'searchresults' ) );
                        $out->setHTMLTitle( $this->msg( 'pagetitle' )
-                               ->rawParams( $this->msg( 'searchresults-title' )->rawParams( $term ) )
+                               ->rawParams( $this->msg( 'searchresults-title' )->rawParams( $term )->text() )
                                ->inContentLanguage()->text()
                        );
                }
index 3fc5ebb..d071e75 100644 (file)
@@ -980,14 +980,23 @@ class LoginForm extends SpecialPage {
                # haven't bothered to log out before trying to create an account to
                # evade it, but we'll leave that to their guilty conscience to figure
                # out.
+               $errorParams = array(
+                       $block->getTarget(),
+                       $block->mReason ? $block->mReason : $this->msg( 'blockednoreason' )->text(),
+                       $block->getByName()
+               );
+
+               if ( $block->getType() === Block::TYPE_RANGE ) {
+                       $errorMessage = 'cantcreateaccount-range-text';
+                       $errorParams[] = $this->getRequest()->getIP();
+               } else {
+                       $errorMessage = 'cantcreateaccount-text';
+               }
+
                throw new ErrorPageError(
                        'cantcreateaccounttitle',
-                       'cantcreateaccount-text',
-                       array(
-                               $block->getTarget(),
-                               $block->mReason ? $block->mReason : $this->msg( 'blockednoreason' )->text(),
-                               $block->getByName()
-                       )
+                       $errorMessage,
+                       $errorParams
                );
        }
 
@@ -1094,36 +1103,44 @@ class LoginForm extends SpecialPage {
                        }
                }
 
-               if ( $this->mType == 'signup' ) {
-                       $template = new UsercreateTemplate();
+               // Generic styles and scripts for both login and signup form
+               $out->addModuleStyles( array(
+                       'mediawiki.ui',
+                       'mediawiki.ui.button',
+                       'mediawiki.special.userlogin.common.styles'
+               ) );
+               $out->addModules( array(
+                       'mediawiki.special.userlogin.common.js'
+               ) );
 
-                       $out->addModuleStyles( array(
-                               'mediawiki.ui',
-                               'mediawiki.special.createaccount'
-                       ) );
+               if ( $this->mType == 'signup' ) {
                        // XXX hack pending RL or JS parse() support for complex content messages
                        // https://bugzilla.wikimedia.org/show_bug.cgi?id=25349
                        $out->addJsConfigVars( 'wgCreateacctImgcaptchaHelp',
                                $this->msg( 'createacct-imgcaptcha-help' )->parse() );
+
+                       // Additional styles and scripts for signup form
                        $out->addModules( array(
-                               'mediawiki.special.createaccount.js'
+                               'mediawiki.special.userlogin.signup.js'
                        ) );
+                       $out->addModuleStyles( array(
+                               'mediawiki.special.userlogin.signup.styles'
+                       ) );
+
+                       $template = new UsercreateTemplate();
+
                        // Must match number of benefits defined in messages
                        $template->set( 'benefitCount', 3 );
 
                        $q = 'action=submitlogin&type=signup';
                        $linkq = 'type=login';
                } else {
-                       $template = new UserloginTemplate();
-
+                       // Additional styles for login form
                        $out->addModuleStyles( array(
-                               'mediawiki.ui',
-                               'mediawiki.special.userlogin'
+                               'mediawiki.special.userlogin.login.styles'
                        ) );
 
-                       $out->addModules( array(
-                               'mediawiki.special.createaccount.js'
-                       ) );
+                       $template = new UserloginTemplate();
 
                        $q = 'action=submitlogin&type=login';
                        $linkq = 'type=signup';
index 002dcd9..2686e11 100644 (file)
@@ -367,7 +367,6 @@ class IP {
        /**
         * Determine if an IP address really is an IP address, and if it is public,
         * i.e. not RFC 1918 or similar
-        * Comes from ProxyTools.php
         *
         * @param $ip String
         * @return Boolean
@@ -482,7 +481,6 @@ class IP {
        /**
         * Given an IP address in dotted-quad/octet notation, returns an unsigned integer.
         * Like ip2long() except that it actually works and has a consistent error return value.
-        * Comes from ProxyTools.php
         *
         * @param string $ip quad dotted IP address.
         * @return Mixed: string/int/false
index 0026fdf..23506e9 100644 (file)
@@ -929,6 +929,7 @@ class Language {
         * @since 1.20
         */
        public static function fetchLanguageName( $code, $inLanguage = null, $include = 'all' ) {
+               $code = strtolower( $code );
                $array = self::fetchLanguageNames( $inLanguage, $include );
                return !array_key_exists( $code, $array ) ? '' : $array[$code];
        }
index 7f28c22..c61d64f 100644 (file)
@@ -1589,16 +1589,18 @@ As u dit verskaf, sal dit gebruik word om erkenning vir u werk te gee.',
 'recentchanges-summary' => 'Volg die mees onlangse wysigings aan die wiki op die bladsy.',
 'recentchanges-noresult' => 'Geen wysigings gedurende die tydperk pas die kriteria nie.',
 'recentchanges-feed-description' => 'Hierdie voer laat u toe om die mees onlangse wysigings aan die wiki te volg.',
-'recentchanges-label-newpage' => "Met die wysiging is 'n nuwe bladsy geskep",
+'recentchanges-label-newpage' => "Met die wysiging is 'n nuwe bladsy geskep.",
 'recentchanges-label-minor' => "Hierdie is 'n klein wysiging",
-'recentchanges-label-bot' => "Hierdie wysiging was deur 'n bot uitgevoer",
+'recentchanges-label-bot' => "Hierdie wysiging is deur 'n bot uitgevoer",
 'recentchanges-label-unpatrolled' => 'Die wysiging is nog nie gekontroleer nie',
+'recentchanges-label-plusminus' => 'Bladsy is met die aantal grepe gewysig',
+'recentchanges-legend-heading' => "'''Sleutel:'''",
 'recentchanges-legend-newpage' => '$1 - nuwe bladsy',
 'rcnotefrom' => "Hier volg wysigings sedert '''$2''' (maksimum van '''$1''' word gewys).",
 'rclistfrom' => 'Vertoon wysigings vanaf $1',
 'rcshowhideminor' => '$1 klein wysigings',
 'rcshowhidebots' => '$1 robotte',
-'rcshowhideliu' => '$1 aangetekende gebruikers',
+'rcshowhideliu' => '$1 geregistreerde gebruikers',
 'rcshowhideanons' => '$1 anonieme gebruikers',
 'rcshowhidepatr' => '$1 gekontroleerde wysigings',
 'rcshowhidemine' => '$1 my wysigings',
@@ -2056,6 +2058,7 @@ Elke ry bevat skakels na die eerste en die tweede aanstuur, asook die eerste re
 'ninterwikis' => '$1 {{PLURAL:$1|interwikiskakel|interwikiskakels}}',
 'nlinks' => '$1 {{PLURAL:$1|skakel|skakels}}',
 'nmembers' => '$1 {{PLURAL:$1|lid|lede}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|lid|lede}}',
 'nrevisions' => '$1 {{PLURAL:$1|weergawe|weergawes}}',
 'nviews' => '$1 {{PLURAL:$1|keer|kere}} aangevra',
 'nimagelinks' => 'Gebruik op {{PLURAL:$1|een bladsy|$1 bladsye}}',
@@ -3122,7 +3125,7 @@ $1',
 'svg-long-desc' => 'SVG-lêer, normaalweg $1 × $2 piksels, lêergrootte: $3',
 'svg-long-desc-animated' => 'Geanimeerde SVG-lêer, normaalweg $1 × $2 piksels, lêergrootte: $3',
 'svg-long-error' => 'Ongeldige SVG-lêer: $1',
-'show-big-image' => 'Volle resolusie',
+'show-big-image' => 'Oorspronklike lêer',
 'show-big-image-preview' => 'Grootte van hierdie voorskou: $1.',
 'show-big-image-other' => 'Ander {{PLURAL:$2|resolusie|resolusies}}: $1.',
 'show-big-image-size' => '$1 × $2 piksels',
@@ -3684,6 +3687,10 @@ Bevestig dat u die bladsy wil herskep.',
 'imgmultigo' => 'Laat waai!',
 'imgmultigoto' => 'Gaan na bladsy $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(standaard taal)',
+'img-lang-go' => 'OK',
+
 # Table pager
 'ascending_abbrev' => 'op',
 'descending_abbrev' => 'af',
@@ -3812,6 +3819,7 @@ Saam met die program moes u \'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van van
 
 # Special:SpecialPages
 'specialpages' => 'Spesiale bladsye',
+'specialpages-note-top' => 'Sleutel',
 'specialpages-note' => '* Normale spesiale bladsye.
 * <span class="mw-specialpagerestricted">Spesiale bladsye met beperkte toegang.</span>
 * <span class="mw-specialpagecached">Spesiale bladsye met gegewens uit die kas (kan verouderd wees).</span>',
@@ -4035,10 +4043,12 @@ Dit word gedoen deur die relevante funksies in die MediaWiki-ontleder te roep.',
 'expand_templates_input' => 'Invoerteks:',
 'expand_templates_output' => 'Resultaat',
 'expand_templates_xml_output' => 'XML-afvoer',
+'expand_templates_html_output' => 'Rou HTML-afvoer',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Verwyder kommentaar',
 'expand_templates_remove_nowiki' => 'Onderdruk <nowiki> etikette in die resultaat',
 'expand_templates_generate_xml' => 'Wys XML-ontledingsboom',
+'expand_templates_generate_rawhtml' => 'Wys rou HTML',
 'expand_templates_preview' => 'Voorskou',
 
 );
index 6bd42cb..b1a1b1f 100644 (file)
@@ -33,11 +33,13 @@ $namespaceNames = array(
 );
 
 $namespaceAliases = array(
-       'Gesprec'      => NS_TALK,
-       'Biliþgesprec' => NS_FILE_TALK,
-       'Bysengesprec' => NS_TEMPLATE_TALK,
-       'Helpgesprec'  => NS_HELP_TALK,
-       'Floccgesprec' => NS_CATEGORY_TALK,
+       'Gesprec'       => NS_TALK,
+       'Brucend'       => NS_USER,
+       'Brucendmotung' => NS_USER_TALK,
+       'Biliþgesprec'  => NS_FILE_TALK,
+       'Bysengesprec'  => NS_TEMPLATE_TALK,
+       'Helpgesprec'   => NS_HELP_TALK,
+       'Floccgesprec'  => NS_CATEGORY_TALK,
 );
 
 $messages = array(
index 1adbced..765314e 100644 (file)
@@ -68,6 +68,7 @@
  * @author زكريا
  * @author عصام بايزيدي
  * @author عمرو
+ * @author محمد أحمد عبد الفتاح
  * @author محمد الجداوي
  * @author مشعل الحربي
  * @author نصوح
@@ -994,7 +995,7 @@ $2',
 'passwordtooshort' => 'يجب أن تتكون كلمة السر على الأقل من {{PLURAL:$1|حرف واحد|حرفين|$1 حروف|$1 حرفا|$1 حرف}}.',
 'password-name-match' => 'يجب أن تكون كلمة المرور مختلفة عن اسم المستخدم.',
 'password-login-forbidden' => 'تم منع استخدام اسم المستخدم هذا وكلمة السر.',
-'mailmypassword' => 'أرسÙ\84 Ù\84Ù\8a Ù\83Ù\84Ù\85Ø© Ø³Ø± Ø¬Ø¯Ù\8aدة',
+'mailmypassword' => 'أعد ØªØ¹Ù\8aÙ\8aÙ\86 Ù\83Ù\84Ù\85Ø© Ø§Ù\84سر',
 'passwordremindertitle' => 'كلمة سر مؤقتة جديدة ل{{SITENAME}}',
 'passwordremindertext' => 'لقد طلب شخص ما (غالبا أنت، من عنوان الآيبي $1) كلمة سر جديدة ل{{SITENAME}} ($4).
 أنشئت كلمة سر مؤقتة للمستخدم "$2" وجعلت "$3".
@@ -1615,7 +1616,7 @@ $1",
 'prefs-skin' => 'واجهة',
 'skin-preview' => 'عرض مسبق',
 'datedefault' => 'لا تفضيل',
-'prefs-beta' => 'Ù\85زاÙ\8aا Ø¨Ù\8aتا',
+'prefs-beta' => 'Ù\85زاÙ\8aا ØªØ¬Ø±Ù\8aبÙ\8aØ©',
 'prefs-datetime' => 'وقت وتاريخ',
 'prefs-labs' => 'مزايا مختبرية',
 'prefs-user-pages' => 'صفحات المستخدمين',
@@ -1634,7 +1635,7 @@ $1",
 'prefs-email' => 'خيارات البريد الإلكتروني',
 'prefs-rendering' => 'المظهر',
 'saveprefs' => 'احفظ',
-'restoreprefs' => 'Ø¥سترجع كل الإعدادات الافتراضية',
+'restoreprefs' => 'استرجع كل الإعدادات الافتراضية',
 'prefs-editing' => 'التحرير',
 'rows' => 'صفوف:',
 'columns' => 'أعمدة:',
@@ -1722,6 +1723,7 @@ $1",
 'prefs-tokenwatchlist' => 'مفتاح',
 'prefs-diffs' => 'فروقات',
 'prefs-help-prefershttps' => 'سيتم تفعيل هذا التفضيل عند ولوجوك في المرة القادمة.',
+'prefs-tabs-navigation-hint' => 'تلميح: يمكنك استخدام مفتاحي السهمين الأيمن والأيسر للتنقل بين الألسنة في قائمة الألسنة.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'يبدو أن عنوان البريد الإلكتروني صالح',
@@ -1907,6 +1909,7 @@ $1",
 'recentchanges-label-bot' => 'أُجْرِيَ هذا التعديل بواسطة بوت',
 'recentchanges-label-unpatrolled' => 'لم يراجع هذا التعديل إلى الآن',
 'recentchanges-label-plusminus' => 'حجم الصفحة تغير بهذا العدد من وحدات البايت',
+'recentchanges-legend-heading' => 'شرح',
 'recentchanges-legend-newpage' => '(راجع أيضا [[Special:NewPages|قائمة الصفحات الجديدة]])',
 'rcnotefrom' => "بالأسفل التغييرات منذ '''$2''' (إلى '''$1''' معروضة).",
 'rclistfrom' => 'أظهر التغييرات بدءا من $1',
@@ -4089,6 +4092,9 @@ $5
 'imgmultigo' => 'اذهب!',
 'imgmultigoto' => 'اذهب إلى صفحة $1',
 
+# Language selector for translatable SVGs
+'img-lang-go' => 'اذهب',
+
 # Table pager
 'ascending_abbrev' => 'تصاعدي',
 'descending_abbrev' => 'تنازلي',
index f38ec8a..bede687 100644 (file)
@@ -876,6 +876,7 @@ $1',
 'recentchanges-label-bot' => 'ܒܘܬ (bot) ܥܒܕ ܗܢܐ ܫܘܚܠܦܐ',
 'recentchanges-label-unpatrolled' => 'ܫܘܚܠܦܐ ܗܢܐ ܠܐ ܗܘ ܟܪܝܟܐ ܠܗܫܐ',
 'recentchanges-label-plusminus' => 'ܥܓܪܐ ܕܦܐܬܐ ܐܫܬܚܠܦ ܒܗܢܐ ܡܢܝܢܐ ܡܢ ܒܝܛ̈',
+'recentchanges-legend-heading' => "'''ܦܘܫܩܐ:'''",
 'recentchanges-legend-newpage' => '$1 - ܦܐܬܐ ܚܕܬܐ',
 'rcnotefrom' => "ܠܬܚܬ ܫܘܚܠܦ̈ܐ ܕܡܢ '''$2''' (ܥܕ '''$1''' ܡܬܚܙܝܢ̈ܐ).",
 'rclistfrom' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܡܢ $1',
index 22db34d..b7dce01 100644 (file)
@@ -191,8 +191,8 @@ $messages = array(
 'tog-usenewrc' => 'পৃষ্ঠাৰ পৰিৱৰ্তনসমূহ শেহতীয়া সালসলনি আৰু লক্ষ্যতালিকাত ভাগ কৰক',
 'tog-numberheadings' => 'শীৰ্ষকত স্বয়ংক্ৰিয়ভাৱে ক্ৰমিক নং দিয়ক',
 'tog-showtoolbar' => 'সম্পাদনা দণ্ডিকা দেখুৱাওক',
-'tog-editondblclick' => 'দুবাৰ ক্লিক কৰিলে পৃষ্ঠা সম্পাদনা কৰক',
-'tog-editsection' => '[সমà§\8dপাদনা] à¦¸à¦\82যà§\8bà¦\97ৰ à¦¦à§\8dবাৰা অনুচ্ছেদ সম্পাদনা কৰা সক্ৰিয় কৰক',
+'tog-editondblclick' => 'দুবাৰ ক্লিক কৰি পৃষ্ঠা সম্পাদনা কৰিব পাৰি',
+'tog-editsection' => '[সমà§\8dপাদনা] à¦¸à¦\82যà§\8bà¦\97ৰ à¦\9cৰিয়তà§\87 অনুচ্ছেদ সম্পাদনা কৰা সক্ৰিয় কৰক',
 'tog-editsectiononrightclick' => 'অনুচ্ছেদৰ শিৰোনামাত ৰাইট্‌ ক্লিক টিপি সম্পাদনা কৰাটো সক্ৰিয় কৰক',
 'tog-showtoc' => 'শিৰোনামাৰ সূচী দেখুৱাওক (যিবোৰ পৃষ্ঠাত তিনিটাতকৈ বেছি শিৰোনামা আছে)',
 'tog-rememberpassword' => 'মোৰ প্ৰৱেশ এই কম্পিউটাৰত মনত ৰাখক (সৰ্বাধিক $1 {{PLURAL:$1|দিনলৈ|দিনলৈ}})',
@@ -220,7 +220,7 @@ $messages = array(
 'tog-watchlisthidepatrolled' => 'পৰীক্ষিত সম্পাদনাসমূহ লক্ষ্য-তালিকাৰ পৰা লুকুৱাই ৰাখক',
 'tog-ccmeonemails' => 'মই অন্য সদস্যলৈ পঠোৱা ই-মেইলৰ প্ৰতিলিপি এটা মোলৈও পঠাব',
 'tog-diffonly' => 'পার্থক্যৰ তলত পৃষ্ঠাৰ বিষয়বস্তু নেদেখুৱাব',
-'tog-showhiddencats' => 'নিহিত শ্ৰেণী সমূহ দেখুৱাওক',
+'tog-showhiddencats' => 'নিহিত শ্ৰেণীসমূহ দেখুৱাওক',
 'tog-norollbackdiff' => 'পূৰ্বৱত কৰা পাছত পাৰ্থক্য নেদেখুৱাব',
 'tog-useeditwarning' => 'সালসলনি সংৰক্ষণ নকৰাকৈ সম্পাদনা পৃষ্ঠা ত্যাগৰ সময়ত মোক সাৱধান কৰক',
 'tog-prefershttps' => 'প্ৰৱেশ কৰোঁতে সদায় সুৰক্ষিত সংযোগ ব্যৱহাৰ কৰক',
@@ -230,11 +230,11 @@ $messages = array(
 'underline-default' => 'ব্ৰাউজাৰ ডিফল্ট',
 
 # Font style option in Special:Preferences
-'editfont-style' => 'সম্পাদনাৰ ফন্ট ষ্টাইল',
+'editfont-style' => "সম্পাদনা ক্ষেত্ৰৰ ফ'ণ্ট শৈলী:",
 'editfont-default' => "ব্ৰাউজাৰ ডিফ'ল্ট",
-'editfont-monospace' => 'মনোস্পেচ ফন্ট',
-'editfont-sansserif' => 'চেন্স-চেৰিফ ফন্ট',
-'editfont-serif' => 'চেৰিফ ফন্ট',
+'editfont-monospace' => "ম'ন'স্পেছ ফ'ণ্ট",
+'editfont-sansserif' => "ছেন্স-ছেৰিফ ফ'ণ্ট",
+'editfont-serif' => "ছেৰিফ ফ'ণ্ট",
 
 # Dates
 'sunday' => 'দেওবাৰ',
@@ -243,7 +243,7 @@ $messages = array(
 'wednesday' => 'বুধবাৰ',
 'thursday' => 'বৃহস্পতিবাৰ',
 'friday' => 'শুক্ৰবাৰ',
-'saturday' => 'শণিবাৰ',
+'saturday' => 'শনিবাৰ',
 'sun' => 'দেও',
 'mon' => 'সোম',
 'tue' => 'মংগল',
@@ -310,7 +310,7 @@ $messages = array(
 'hidden-category-category' => 'অদৃশ্য শ্ৰেণীসমূহ',
 'category-subcat-count' => '{{PLURAL:$2|এই শ্ৰেণীত নিম্নলিখিত উপশ্ৰেণীসমূহ আছে। মুঠ $2টা উপশ্ৰেণীৰ ভিতৰত এই শ্ৰেণীত নিম্নলিখিত {{PLURAL:$1|এটা উপশ্ৰেণী|$1 টা উপশ্ৰেণী}} আছে।}}',
 'category-subcat-count-limited' => 'এই শ্ৰেণীত নিম্নলিখিত {{PLURAL:$1|টা উপশ্ৰেণী আছে|$1টা উপশ্ৰেণী আছে}}।',
-'category-article-count' => '{{PLURAL:$2|এই শ্ৰেণীটোত কেৱল তলত দিয়া পৃষ্ঠাহে আছে । মুঠ $2 খনৰ ভিতৰত এই শ্ৰেণীটোত তলৰ {{PLURAL:$1|এখন পৃষ্ঠা আছে|$1 খন পৃষ্ঠা আছে}}।}}',
+'category-article-count' => '{{PLURAL:$2|এই শ্ৰেণীটোত কেৱল তলত দিয়া পৃষ্ঠাহে আছে। মুঠ $2 খনৰ ভিতৰত এই শ্ৰেণীটোত তলৰ {{PLURAL:$1|এটা পৃষ্ঠা আছে|$1 টা পৃষ্ঠা আছে}}।}}',
 'category-article-count-limited' => 'এই {{PLURAL:$1|পৃষ্ঠা|$1 পৃষ্ঠাসমূহ}} সাম্প্ৰতিক শ্ৰেণীত আছে ।',
 'category-file-count' => '{{PLURAL:$2|এই শ্ৰেণীটোত কেবল তলত দিয়া ফাইলটোহে আছে। মুঠ $2টাৰ ভিতৰত এই শ্ৰেণীটোত তলৰ {{PLURAL:$1|এটা ফাইল|$1 টা ফাইল}} আছে।}}',
 'category-file-count-limited' => 'তলৰ {{PLURAL:$1|ফাইলটো|$1 ফাইলসমূহ}} সাম্প্ৰতিক শ্ৰেণীত আছে।',
@@ -325,7 +325,7 @@ $messages = array(
 'cancel' => 'বাতিল কৰক',
 'moredotdotdot' => 'অধিক...',
 'morenotlisted' => 'এই তালিকা সম্পূৰ্ণ নহয়।',
-'mypage' => 'মà§\8bৰ à¦ªà§\83ষà§\8dঠা',
+'mypage' => 'পৃষ্ঠা',
 'mytalk' => 'কথা-বতৰা',
 'anontalk' => 'এই IP-ত যোগাযোগ কৰক',
 'navigation' => 'দিকদৰ্শন',
@@ -375,11 +375,11 @@ $messages = array(
 'view' => 'দেখুৱাওক',
 'edit' => 'সম্পাদনা',
 'create' => 'সৃষ্টি কৰক',
-'editthispage' => 'বৰà§\8dতমান à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦¸à¦®à§\8dপাদনা à¦\95ৰিবলà§\88',
-'create-this-page' => 'নতà§\81ন পৃষ্ঠা সৃষ্টি কৰক',
-'delete' => 'বিলোপ',
-'deletethispage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন বিলোপ কৰক',
-'undeletethispage' => 'এই পৃষ্ঠা পুনৰুদ্ধাৰ কৰক',
+'editthispage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦¸à¦®à§\8dপাদনা à¦\95ৰà¦\95',
+'create-this-page' => 'à¦\8fà¦\87 পৃষ্ঠা সৃষ্টি কৰক',
+'delete' => 'বিলোপ কৰক',
+'deletethispage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b বিলোপ কৰক',
+'undeletethispage' => 'এই পৃষ্ঠাটো পুনৰুদ্ধাৰ কৰক',
 'undelete_short' => '{{PLURAL:$1|বিলোপিত পৃষ্ঠাৰ|$1 সংখ্যক বিলোপিত পৃষ্ঠাৰ}} পূৰ্ববৎকৰণ',
 'viewdeleted_short' => '{{PLURAL:$1| এটা বিলুপ্ত সম্পাদনা|$1 টা বিলুপ্ত সম্পাদনা}} দেখুৱাওক',
 'protect' => 'সুৰক্ষিত কৰক',
@@ -388,7 +388,7 @@ $messages = array(
 'unprotect' => 'সুৰক্ষা সলনি কৰক',
 'unprotectthispage' => 'এই পৃষ্ঠাৰ সুৰক্ষা সলনি কৰক',
 'newpage' => 'নতুন পৃষ্ঠা',
-'talkpage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦¸à¦®à§\8dপৰà§\8dà¦\95à§\87 à¦\95থা-বতৰা',
+'talkpage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦¸à¦®à§\8dপৰà§\8dà¦\95à§\80য় à¦\86লà§\8bà¦\9aনা',
 'talkpagelinktext' => 'কথা-বতৰা',
 'specialpage' => 'বিশেষ পৃষ্ঠা',
 'personaltools' => 'ব্যক্তিগত সৰঞ্জাম',
@@ -408,8 +408,8 @@ $messages = array(
 'otherlanguages' => 'আন ভাষাসমূহত',
 'redirectedfrom' => '($1ৰ পৰা পুনঃনিৰ্দেশিত)',
 'redirectpagesub' => 'পুনঃনিৰ্দেশিত পৃষ্ঠা',
-'lastmodifiedat' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন শেষবাৰৰ কাৰণে $1 তাৰিখে $2 বজাত সলনি কৰা হৈছিল।',
-'viewcount' => 'এই পৃষ্ঠাটো {{PLURAL:$1|এবাৰ|$1 বাৰ}} চোৱা হৈছে',
+'lastmodifiedat' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b শেষবাৰৰ কাৰণে $1 তাৰিখে $2 বজাত সলনি কৰা হৈছিল।',
+'viewcount' => 'এই পৃষ্ঠাটো {{PLURAL:$1|এবাৰ|$1 বাৰ}} চোৱা হৈছে',
 'protectedpage' => 'সুৰক্ষিত পৃষ্ঠা',
 'jumpto' => 'গম্যাৰ্থে',
 'jumptonavigation' => 'দিকদৰ্শন',
@@ -420,7 +420,7 @@ $messages = array(
 
 $1',
 'pool-timeout' => 'বন্ধ কৰাৰ বাবে অপেক্ষা কৰাৰ সময় উকলি গৈছে',
-'pool-queuefull' => 'পà§\8bল à¦\95িà¦\89 (pool queue) à¦¸à¦®à§\82ল',
+'pool-queuefull' => 'পà§\81ল à¦\95িà¦\89 (pool queue) à¦ªà§\82ৰà§\8dণ',
 'pool-errorunknown' => 'অপৰিচিত ত্ৰুটি',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
@@ -454,8 +454,8 @@ $1',
 'youhavenewmessages' => 'আপোনাৰ কাৰণে $1 আছে। ($2)',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|আন এজন সদস্য|$3 জন সদস্য}}ৰ পৰা আপোনালৈ $1 আহিছে ($2)।',
 'youhavenewmessagesmanyusers' => 'কেইবাজনো সদস্যৰ পৰা আপোনালৈ $1 আহিছে ($2)।',
-'newmessageslinkplural' => '{{PLURAL:$1|এটা নতুন বাৰ্তা|নতুন বাৰ্তা}}',
-'newmessagesdifflinkplural' => 'à¦\85নà§\8dতিম {{PLURAL:$1|সà¦\82শà§\8bধন}}',
+'newmessageslinkplural' => '{{PLURAL:$1|এটা নতুন বাৰ্তা|999=নতুন বাৰ্তা}}',
+'newmessagesdifflinkplural' => 'à¦\85নà§\8dতিম {{PLURAL:$1|সালসলনি|999=সালসলনিসমà§\82হ}}',
 'youhavenewmessagesmulti' => '$1ত আপোনাৰ কাৰণে নতুন সংবাদ আছে',
 'editsection' => 'সম্পাদনা কৰক',
 'editold' => 'সম্পাদনা',
@@ -499,7 +499,7 @@ $1',
 'nosuchactiontext' => "এই ইউআৰএলে নিৰ্ধাৰিত কৰা কাৰ্য অবৈধ।
 আপুনি বোধহয়  ইউআৰএল ভুলকৈ লিখিছে বা এটা ভুল লিঙ্ক অনুকৰণ কৰিছে ।
 {{SITENAME}}ত ব্যৱহাৰ হোৱা চফ্টৱেৰত ত্ৰুটি হ'বও পাৰে ।",
-'nosuchspecialpage' => 'à¦\8fনà§\87 à¦§à§°à¦¨ৰ কোনো বিশেষ পৃষ্ঠা নাই',
+'nosuchspecialpage' => 'à¦\8fনà§\87 à¦§à§°à¦£ৰ কোনো বিশেষ পৃষ্ঠা নাই',
 'nospecialpagetext' => '<strong>আপুনি অবৈধ বিশেষ পৃষ্ঠা এটা অনুৰোধ কৰিছে ।</strong>
 
 বৈধ বিশেষ পৃষ্ঠাসমূহৰ তালিকা ইয়াত পাব [[Special:SpecialPages|{{int:specialpages}}]] ।',
@@ -516,7 +516,7 @@ $1',
 'laggedslavemode' => 'সাৱধানবাণী: ইয়াত সাম্প্ৰতিক সাল-সলনি নাথাকিব পাৰে',
 'readonly' => 'তথ্যকোষ বন্ধ কৰা আছে',
 'enterlockreason' => 'বন্ধ কৰাৰ কাৰণ দিয়ক, লগতে কেতিয়ামানে খোলা হব তাকো জনাব।',
-'readonlytext' => 'নতà§\81ন à¦¸à¦®à§\8dপাদন à¦\86ৰà§\81 à¦\86ন à¦¸à¦¾à¦²-সলনিৰ à¦\95াৰণà§\87 à¦¤à¦¥à§\8dযà¦\95à§\8bষ à¦¬à§°à§\8dতমানà§\87 à¦¬à¦¨à§\8dধ à¦\86à¦\9bà§\87, à¦¹à¦¯à¦¼à¦¤à§\8b à¦¨à¦¿à¦¯à¦¼à¦®à§\80য়া à¦\9aà§\8bৱা-à¦\9aিতা à¦\95ৰিবলà§\88, কিছু সময় পিছত এয়া সাধাৰণ অৱস্থালৈ আহিব।
+'readonlytext' => 'হয়তà§\8b à¦¨à¦¿à¦¯à¦¼à¦®à§\80য়া à¦ªà§°à¦¿à¦\9aৰà§\8dযাৰ à¦¬à¦¾à¦¬à§\87 à¦¤à¦¥à§\8dযà¦\95à§\8bষত à¦¨à¦¤à§\81ন à¦¸à¦®à§\8dপাদনা à¦\86ৰà§\81 à¦\86ন à¦¸à¦¾à¦²-সলনি à¦¬à¦¨à§\8dধ à¦\95ৰা à¦¹à§\88à¦\9bà§\87। কিছু সময় পিছত এয়া সাধাৰণ অৱস্থালৈ আহিব।
 
 যিজন প্ৰশাসকে বন্ধ কৰিছে তেওঁ এই কাৰণ দিছে: $1',
 'missing-article' => '"$1" $2 লেখাটো তথ্যকোষত পোৱা নগ’ল ।
@@ -545,7 +545,7 @@ $1',
 সম্ভৱ আনে আগতেই বিলোপ কৰিছে ।',
 'cannotdelete-title' => '"$1" পৃষ্ঠা বিলোপ কৰিব নোৱাৰি',
 'delete-hook-aborted' => 'হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে ।
-ইয়াৰ কোনো ব্যাখ্যা নাই ।',
+ইয়াৰ কোনো ব্যাখ্যা নাই।',
 'no-null-revision' => '"$1" পৃষ্ঠাৰ বাবে নতুন শূন্য সংশোধন সৃষ্টি কৰিব পৰা নগ\'ল',
 'badtitle' => 'অগ্ৰহণীয় শিৰোনামা',
 'badtitletext' => 'আপুনি বিচৰা পৃষ্ঠাটোৰ শিৰোনামা অযোগ্য, খালী বা ভুলকৈ জড়িত আন্তৰ্ভাষিক বা আন্তৰ্ৱিকি শিৰোনামা। ইয়াত এক বা ততোধিক বৰ্ণ আছে যাক শিৰোনামাত ব্যৱহাৰ কৰিব নোৱাৰি।',
@@ -565,7 +565,7 @@ $1',
 'editinginterface' => "'''সাৱধানবাণী:''' আপুনি যিখন পৃষ্ঠা সম্পাদনা কৰিছে সেইখন এই ছফ্টৱেৰৰ ইণ্টাৰফে’চ বাৰ্তা দিবলৈ ব্যৱহাৰ হয়।
 এই পৃষ্ঠাৰ সাল-সলনিয়ে আন ব্যৱহাৰকাৰীৰ বাবে ইণ্টাৰফে’চত প্ৰভাৱ পেলাব।
 সকলো ৱিকিৰ বাবে অনুবাদৰ বাবে অনুগ্ৰহ কৰি মিডিয়াৱিকি স্থানীয়কৰণ প্ৰকল্প [//translatewiki.net/ translatewiki.net] ব্যৱহাৰ কৰক ।",
-'cascadeprotected' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¸à¦®à§\8dপাদনাৰ à¦ªà§°à¦¾ à¦¸à§\81ৰà¦\95à§\8dষিত à¦\95াৰণ à¦\8fà¦\87 {{PLURAL:$1|পà§\83ষà§\8dঠা, à¦¯à¦¿à¦\96ন|পৃষ্ঠা, যিবোৰ}} "প্ৰপাতাকাৰ" (cascading) বিকল্পৰ সহযোগত সুৰক্ষিত কৰা হৈছে: 
+'cascadeprotected' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¸à¦®à§\8dপাদনাৰ à¦ªà§°à¦¾ à¦¸à§\81ৰà¦\95à§\8dষিত à¦\95াৰণ à¦\8fà¦\87 {{PLURAL:$1|পà§\83ষà§\8dঠা, à¦¯à¦¿à¦\9fà§\8b|পৃষ্ঠা, যিবোৰ}} "প্ৰপাতাকাৰ" (cascading) বিকল্পৰ সহযোগত সুৰক্ষিত কৰা হৈছে: 
 $2',
 'namespaceprotected' => "আপোনাৰ '''$1''' নামস্থানৰ পৃষ্ঠাসমূহ সম্পাদনা কৰাৰ অধিকাৰ নাই।",
 'customcssprotected' => 'এই CSS পৃষ্ঠা সম্পাদনা কৰাৰ অধিকাৰ আপোনাৰ নাই, কাৰণ ইয়াত আন সদস্যৰ ব্যক্তিগত পছন্দসমূহত আছে ।',
@@ -582,7 +582,8 @@ $2',
 'invalidtitle-knownnamespace' => 'নামস্থান "$2" আৰু পাঠ্য "$3" থকা অবৈধ শিৰোনাম',
 'invalidtitle-unknownnamespace' => 'অজ্ঞাত নামস্থান সংখ্যা $1 আৰু পাঠ্য "$2" থকা অবৈধ শিৰোনাম',
 'exception-nologin' => 'প্ৰৱেশ কৰা নাই',
-'exception-nologin-text' => 'এই পৃষ্ঠা অথবা কামৰ বাবে আপুনি প্ৰৱেশ কৰা বাধ্যতামূলক',
+'exception-nologin-text' => 'এই কামৰ বাবে আপুনি [[Special:Userlogin|লগ্‌ ইন]] কৰাটো বাধ্যতামূলক।',
+'exception-nologin-text-manual' => 'এই কামৰ বাবে অনুগ্ৰহ কৰি $1 কৰক।',
 
 # Virus scanner
 'virus-badscanner' => "ভুল কনফিগাৰেচন: অজ্ঞাত ভাইৰাছ স্কেনাৰ: ''$1''",
@@ -684,7 +685,7 @@ $2',
 'passwordtooshort' => "গুপ্তশব্দ কমেও {{PLURAL:$1|১ টা|$1 টা}} আখৰৰ হ'ব লাগিব ।",
 'password-name-match' => "আপোনাৰ গুপ্তশব্দ আৰু আপোনাৰ সদস্যনাম বেলেগ হ'ব লাগিব",
 'password-login-forbidden' => 'এই সদস্যনাম আৰু গুপ্তশব্দৰ ব্যৱহাৰ নিষিদ্ধ কৰা হৈছে ।',
-'mailmypassword' => 'à¦\87-মà§\87à¦\87লত à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªà¦ à¦¿à¦¯à¦¼াওক',
+'mailmypassword' => 'à¦\97à§\81পà§\8dতশবà§\8dদ à¦¨-à¦\95à§\88 à¦¬à¦¹à§\81ৱাওক',
 'passwordremindertitle' => '{{SITENAME}}ৰ কাৰণে নতুন অস্থায়ী গুপ্তশব্দ',
 'passwordremindertext' => 'কোনোবাই (হয়তো আপুনি, $1 আই-পি ঠিকনাৰ পৰা)
 {{SITENAME}}ত ব্যৱহাৰ কৰিবলৈ নতুন গুপ্তশব্দৰ বাবে অনুৰোধ কৰিছে ($4) ।
@@ -708,7 +709,7 @@ $2',
 'emailnotauthenticated' => 'আপোনাৰ ই-মেইল ঠিকনাতো এতিয়ালৈ নিশ্চিত হোৱা নাই।
 আপুনি তলৰ বিষয়বোৰৰ কাৰণে মেইল পঠিয়াব নোৱাৰে।',
 'noemailprefs' => 'এই সুবিধাবোৰ ব্যৱহাৰ কৰিবলৈ এটা ই-মেইল ঠিকনা দিয়ক।',
-'emailconfirmlink' => 'à¦\86পà§\8bনাৰ à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95নাà¦\9fà§\8b à¦ªà§\8dৰমাণিত কৰক',
+'emailconfirmlink' => 'à¦\86পà§\8bনাৰ à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95নাà¦\9fà§\8b à¦¨à¦¿à¦¶à§\8dà¦\9aিত কৰক',
 'invalidemailaddress' => 'এই ই-মেইল ঠিকনাতো গ্ৰহনযোগ্য নহয়, কাৰণ ই অবৈধ প্ৰকাৰৰ যেন লাগিছে।
 অনুগ্ৰহ কৰি এটা বৈধ ই-মেইল ঠিকনা লিখক অথবা একো নিলিখিব।',
 'cannotchangeemail' => 'এই ৱিকিত একাউন্ট ই-মেইল ঠিকনা সলনি কৰিব পৰা নাযায়',
@@ -730,7 +731,7 @@ $2',
 
 # Email sending
 'php-mail-error-unknown' => 'পি.এইছ.পি মেইল () কাৰ্যত অজ্ঞাত ত্ৰুটি ।',
-'user-mail-no-addy' => 'à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95না à¦¨à§\8bহà§\8bৱাà¦\95à§\88য়à§\87 à¦\87-মà§\87à¦\87ল à¦ªà¦ à§\8bৱাৰ চেষ্টা কৰা হৈছে ।',
+'user-mail-no-addy' => 'à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95না à¦¨à§\8bহà§\8bৱাà¦\95à§\88য়à§\87 à¦\87-মà§\87à¦\87ল à¦ªà¦ à¦¿à¦\93ৱাৰ চেষ্টা কৰা হৈছে ।',
 'user-mail-no-body' => 'কোনো সমল নোহোৱাকৈ বা অতি সংক্ষিপ্ত কথাৰে ইমেইল পঠিয়াবলৈ চেষ্টা কৰিছিল।',
 
 # Change password dialog
@@ -744,7 +745,7 @@ $2',
 'resetpass_submit' => 'গুপ্তশব্দ বহুৱাওক আৰু প্ৰৱেশ কৰক',
 'changepassword-success' => 'আপোনাৰ গুপ্তশব্দ সফলতাৰে সলনি কৰা হৈছে!',
 'resetpass_forbidden' => 'গুপ্তশব্দ সলনি কৰিব নোৱাৰি',
-'resetpass-no-info' => 'এই পৃষ্ঠা প্ৰত্যক্ষ ভাৱে ঢুকি পাবলৈ আপুনি প্ৰৱেশ কৰিব লাগিব ।',
+'resetpass-no-info' => 'এই পৃষ্ঠাটোত প্ৰৱেশাধিকাৰ পাবলৈ আপুনি লগ্‌ ইন কৰিব লাগিব ।',
 'resetpass-submit-loggedin' => 'গুপ্তশব্দ সলনি কৰক',
 'resetpass-submit-cancel' => 'বাতিল কৰক',
 'resetpass-wrong-oldpass' => 'অস্থায়ী বা সাম্প্ৰতিক গুপ্তশব্দ গ্ৰহণযোগ্য নহয় ।
@@ -755,7 +756,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'গুপ্তশব্দ ন-কৈ বহুৱাওক',
 'passwordreset-text-one' => 'আপোনাৰ গুপ্তশব্দ ন-কৈ বহুৱাবলৈ এই প্ৰপত্ৰ পূৰণ কৰক।',
-'passwordreset-text-many' => '{{PLURAL:$1|à¦\86পà§\8bনাৰ à¦\97à§\81পà§\8dতশবà§\8dদ à¦¨-à¦\95à§\88 à¦¬à¦¹à§\81ৱাবলৈ এই তথ্যসমূহৰ যিকোনো এটা দিয়ক।}}',
+'passwordreset-text-many' => '{{PLURAL:$1|à¦\87মà§\87à¦\87লত à¦\8fà¦\9fা à¦\85সà§\8dথায়à§\80 à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªাবলৈ এই তথ্যসমূহৰ যিকোনো এটা দিয়ক।}}',
 'passwordreset-legend' => 'গুপ্তশব্দ ন-কৈ বহাওক',
 'passwordreset-disabled' => 'এই ৱিকিত গুপ্তশব্দ নবীকৰণ নিষ্ক্ৰিয় কৰা হৈছে ।',
 'passwordreset-emaildisabled' => 'এই ৱিকিত ই-মেইল বৈশিষ্টসমূহ নিষ্ক্ৰিয় কৰা হৈছে।',
@@ -785,7 +786,7 @@ $2
 'changeemail' => 'ই-মেইল ঠিকনা সলনি কৰক',
 'changeemail-header' => 'একাউণ্টৰ ই-মেইল ঠিকনা সলনি কৰক',
 'changeemail-text' => 'আপোনাৰ ই-মেইল ঠিকনা সলাবলৈ এই প্ৰপত্ৰখন পূৰাওক । এই সালসলনি নিশ্চিত কৰিবলৈ আপোনাৰ গুপ্তশব্দ দিব লাগিব ।',
-'changeemail-no-info' => 'এই পৃষ্ঠা প্ৰত্যক্ষ্ ভাৱে ঢুকি পাবলৈ আপুনি প্ৰৱেশ কৰিব লাগিব ।',
+'changeemail-no-info' => 'এই পৃষ্ঠাটোত প্ৰৱেশাধিকাৰ পাবলৈ আপুনি লগ্‌ ইন কৰিব লাগিব।',
 'changeemail-oldemail' => 'বৰ্তমানৰ ই-মেইল ঠিকনা:',
 'changeemail-newemail' => 'নতুন ই-মেইল ঠিকনা:',
 'changeemail-none' => '(নাই)',
@@ -827,11 +828,11 @@ $2
 'summary' => 'সাৰাংশ:',
 'subject' => 'বিষয় / শীৰ্ষক:',
 'minoredit' => 'এইটো এটা অগুৰুত্বপূৰ্ণ সম্পাদনা',
-'watchthis' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন লক্ষ্য কৰক',
+'watchthis' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b লক্ষ্য কৰক',
 'savearticle' => 'পৃষ্ঠা সাঁচক',
 'preview' => 'খচৰা',
 'showpreview' => 'খচৰা চাওক',
-'showlivepreview' => 'পà§\8bনপà¦\9fà§\80য়া খচৰা',
+'showlivepreview' => 'পà§\8bনপà¦\9fিয়া খচৰা',
 'showdiff' => 'সালসলনিবোৰ দেখুৱাওক',
 'anoneditwarning' => "<span style=\"color:red;\">'''সাৱধান:''' আপুনি প্ৰৱেশ কৰা নাই ।</span> 
 এই পৃষ্ঠাৰ ইতিহাসত আপোনাৰ আই পি ঠিকনা সংৰক্ষিত কৰা হ'ব।",
@@ -880,7 +881,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'loginreqtitle' => 'প্ৰৱেশ আৱশ্যক',
 'loginreqlink' => 'প্ৰৱেশ',
 'loginreqpagetext' => 'অন্যান্য পৃষ্ঠা চাবলৈ আপুনি $1 কৰিব লাগিব।',
-'accmailtitle' => "à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªà¦ à§\8bৱা হ'ল।",
+'accmailtitle' => "à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªà¦ à¦¿à¦\93ৱা হ'ল।",
 'accmailtext' => "[[User talk:$1|$1]]-ৰ কাৰণে যাদৃচ্ছিকভাৱে উৎপন্ন কৰা গুপ্তশব্দ $2লৈ পঠোৱা হ'ল । 
 এই নতুন একাউন্টত প্ৰৱেশ কৰি ''[[Special:ChangePassword|গুপ্তশব্দ সলনি কৰক]]'' পৃষ্ঠাখনত শব্দতো সলনি কৰি ল’ব পাৰিব ।",
 'newarticle' => '(নতুন)',
@@ -1006,15 +1007,15 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'moveddeleted-notice' => "এই পৃষ্ঠা বাতিল কৰা হৈছে ।
 পৃষ্ঠাটিৰ বাতিল আৰু স্থানান্তৰ কৰা অভিলেখ তলত দিয়া হ'ল ।",
 'log-fulllog' => 'সম্পূৰ্ণ অভিলেখ চাওক',
-'edit-hook-aborted' => 'হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে 
-ইয়াৰ কোনো ব্যাখ্যা নাই ।',
-'edit-gone-missing' => 'পà§\83ষà§\8dঠাà¦\96ন à¦¨à¦¬à§\80à¦\95ৰণ à¦\95ৰিব à¦ªà§°à¦¾ à¦¨à¦\97â\80\99ল 
-সম্ভৱতঃ পৃষ্ঠাখন বিলোপ কৰা হৈছে ।',
-'edit-conflict' => 'সম্পাদনা দ্বন্দ্ব ।',
-'edit-no-change' => 'আপোনাৰ সম্পাদনা আওকাণ কৰা হৈছে, কাৰণ লেখাত কোনো তফাৎ নাই',
-'postedit-confirmation' => "à¦\86পà§\8bনাৰ à¦¸à¦®à§\8dপাদনা à¦¸à¦\82ৰà¦\95à§\8dষিত à¦\95ৰা à¦¹'ল ।",
-'edit-already-exists' => "নতুন পৃষ্ঠা সৃষ্টি কৰা নহ'ল 
-পà§\83ষà§\8dঠাà¦\96ন à¦\87তিমধà§\8dযà§\87 à¦\86à¦\9bà§\87à¦\87 ।",
+'edit-hook-aborted' => 'হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে।
+ইয়াৰ কোনো ব্যাখ্যা নাই।',
+'edit-gone-missing' => 'পà§\83ষà§\8dঠাà¦\9fà§\8b à¦¨à¦¬à§\80à¦\95ৰণ à¦\95ৰিব à¦ªà§°à¦¾ à¦¨à¦\97â\80\99ল
+সম্ভৱতঃ পৃষ্ঠাখন বিলোপ কৰা হৈছে।',
+'edit-conflict' => 'সম্পাদনা দ্বন্দ্ব।',
+'edit-no-change' => 'আপোনাৰ সম্পাদনা আওকাণ কৰা হৈছে, কাৰণ লেখাত কোনো তফাৎ নাই',
+'postedit-confirmation' => "à¦\86পà§\8bনাৰ à¦¸à¦®à§\8dপাদনা à¦¸à¦¾à¦\81à¦\9aি à¦¥à§\8bৱা à¦¹'ল।",
+'edit-already-exists' => "নতুন পৃষ্ঠা সৃষ্টি কৰা নহ'ল।
+পà§\83ষà§\8dঠাà¦\9fà§\8b à¦\87তিমধà§\8dযà§\87 à¦\86à¦\9bà§\87à¦\87।",
 'defaultmessagetext' => 'সাধাৰণ বাৰ্তা পাঠ্য',
 'content-failed-to-parse' => '$1 মডেলৰ বাবে $2ৰ তথ্য নিকা কৰিব পৰা নগ’ল: $3',
 'invalid-content-data' => 'অবৈধ সমল তথ্য',
@@ -1044,7 +1045,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'node-count-exceeded-category' => "ন'ড-গণনা বেছি হোৱা পৃষ্ঠাসমূহ",
 'node-count-exceeded-warning' => "পৃষ্ঠাৰ ন'ড-গণনা বেছি হৈছে",
 'expansion-depth-exceeded-category' => 'বিস্তৃতি গভীৰতা বেছি হোৱা পৃষ্ঠা',
-'expansion-depth-exceeded-warning' => 'পà§\83ষà§\8dঠাà¦\96নৰ বিস্তৃতি গভীৰতা বেছি হৈছে',
+'expansion-depth-exceeded-warning' => 'পà§\83ষà§\8dঠাà¦\9fà§\8bৰ বিস্তৃতি গভীৰতা বেছি হৈছে',
 'parser-unstrip-loop-warning' => 'আন্‌ষ্ট্ৰীপ লুপ চিনাক্ত কৰা হৈছে',
 'parser-unstrip-recursion-limit' => 'আন্‌ষ্ট্ৰিপ ৰিকাৰ্ছন সীমা অতিক্ৰম হৈছে ($1)',
 'converter-manual-rule-error' => 'মেনুৱেল ভাষা পৰিৱৰ্তন নিয়মত ত্ৰুটি পোৱা গৈছে',
@@ -1058,7 +1059,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'undo-summary-username-hidden' => 'এজন গোপন ব্যৱহাৰকাৰীয়ে কৰা $1 সংশোধন বাতিল কৰক',
 
 # Account creation failure
-'cantcreateaccounttitle' => "একাউন্ট সৃষ্টি কৰা নহ'ব",
+'cantcreateaccounttitle' => 'একাউণ্ট সৃষ্টি কৰিব নোৱাৰি',
 'cantcreateaccount-text' => "আই পি ঠিকনা ('''$1''')ৰ পৰা একাউণ্ট সৃষ্টিত [[User:$3|$3]]’য়ে বাধা প্ৰদান কৰিছে ।
 
 $3 য়ে আগবঢ়োৱা ইয়াৰ কাৰণ হৈছে ''$2''",
@@ -1071,8 +1072,8 @@ $3 য়ে আগবঢ়োৱা ইয়াৰ কাৰণ হৈছে
 'revisionasof' => '$1ৰ সংস্কৰণ',
 'revision-info' => '$1-লৈ $2ই কৰা সংশোধন',
 'previousrevision' => '← আগৰ সংশোধন',
-'nextrevision' => 'সদà§\8dযসà¦\82শà§\8bধিত',
-'currentrevisionlink' => 'শà§\87হতà§\80য়া à¦­à¦¾à¦·à§\8dয',
+'nextrevision' => 'নতà§\81ন à¦¸à¦\82শà§\8bধনâ\86\92',
+'currentrevisionlink' => 'শà§\87হতà§\80য়া à¦¸à¦\82শà§\8bধন',
 'cur' => 'বৰ্তমান',
 'next' => 'পৰৱৰ্তী',
 'last' => 'পূৰ্বৱৰ্তী',
@@ -1086,11 +1087,11 @@ $3 য়ে আগবঢ়োৱা ইয়াৰ কাৰণ হৈছে
 'histfirst' => 'আটাইতকৈ পুৰণি',
 'histlast' => 'শেহতীয়া',
 'historysize' => '({{PLURAL:$1|১ বাইট|$1 বাইট}})',
-'historyempty' => '(à¦\96ালà§\80)',
+'historyempty' => '(à¦\96ালি)',
 
 # Revision feed
-'history-feed-title' => 'সà¦\82à¦\95লন ইতিহাস',
-'history-feed-description' => 'ৱিà¦\95িত à¦\89পলবà§\8dধ à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦\82à¦\95লন ইতিহাস',
+'history-feed-title' => 'সà¦\82শà§\8bধনৰ ইতিহাস',
+'history-feed-description' => 'ৱিà¦\95িত à¦\89পলবà§\8dধ à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦\82শà§\8bধন ইতিহাস',
 'history-feed-item-nocomment' => '$1-য়ে $2',
 'history-feed-empty' => 'অনুৰোধ কৰা পৃষ্ঠাৰ কোনো অস্বিত্ব নাই।
 হয়তো ইয়াক বিলোপ কৰা হৈছে অথবা ইয়াৰ নাম সলনি কৰা হৈছে।
@@ -1131,7 +1132,7 @@ $3 য়ে আগবঢ়োৱা ইয়াৰ কাৰণ হৈছে
 'revisiondelete' => 'সংকলন বিলোপ কৰক / পুনৰ স্থাপন কৰক',
 'revdelete-nooldid-title' => 'লক্ষ্য সংশোধন যুক্তিসংগত নহয়',
 'revdelete-nooldid-text' => 'কামটো কৰাৰ বাবে আপুনি লক্ষ্য সংশোধন নিৰ্বাচন কৰা নাই, নিৰ্বাচিত সংশোধন নাই, অথবা আপুনি বৰ্তমানৰ সংশোধন লুকুৱাব বিচাৰিছে ।',
-'revdelete-no-file' => 'নিৰà§\8dধাৰিত à¦«à¦¾à¦\87লà¦\9fি à¦¨à¦¾à¦\87 ।',
+'revdelete-no-file' => 'নিৰà§\8dধাৰিত à¦«à¦¾à¦\87লà¦\9fà§\8b à¦¨à¦¾à¦\87।',
 'revdelete-show-file-confirm' => 'আপুনি "<nowiki>$1</nowiki>"  ফাইলৰ বিলোপ কৰা কৰা সংশোধন $2 তাৰিখৰ পৰা $3 সময়ত চাব বিচাৰিছে নেকি?',
 'revdelete-show-file-submit' => 'হয়',
 'revdelete-selected' => "'''[[:$1]]-ৰ {{PLURAL:$2|নিৰ্বাচিত সংশোধন|নিৰ্বাচিত সংশোধনসমূহ}}:'''",
@@ -1254,7 +1255,7 @@ $1",
 'nextn-title' => 'পিছৰ $1 {{PLURAL:$1|ফলাফল|ফলাফলবোৰ}}',
 'shown-title' => 'পৃষ্ঠাই প্ৰতি $1 {{PLURAL:$1|টা ফলাফল|টা ফলাফল}} দেখুৱাওক',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) চাওক।',
-'searchmenu-exists' => 'à¦\8fà¦\87 à§±à¦¿à¦\95িত "[[:$1]]" à¦¨à¦¾à¦®à§° à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96ন আছে ।',
+'searchmenu-exists' => 'à¦\8fà¦\87 à§±à¦¿à¦\95িত "[[:$1]]" à¦¨à¦¾à¦®à§° à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fা আছে ।',
 'searchmenu-new' => "'''এই ৱিকিত \"[[:\$1]]\" পৃষ্ঠাখন সৃষ্টি কৰক!'''",
 'searchprofile-articles' => 'বিষয়বস্তুৰ পৃষ্ঠা',
 'searchprofile-project' => 'সহায় আৰু প্ৰকল্প পৃষ্ঠাসমূহ',
@@ -1299,6 +1300,7 @@ $1",
 'preferences' => 'পছন্দসমূহ',
 'mypreferences' => 'পছন্দসমূহ',
 'prefs-edits' => 'সম্পাদনাৰ সংখ্যা:',
+'prefsnologintext2' => 'আপোনাৰ পছন্দসমূহৰ সালসলনি কৰিবলৈ অনুগ্ৰহ কৰি $1 কৰক।',
 'prefs-skin' => 'আৱৰণ',
 'skin-preview' => 'খচৰা',
 'datedefault' => 'কোনো পছন্দ নাই',
@@ -1409,6 +1411,7 @@ $1",
 'prefs-tokenwatchlist' => "ট'কেন",
 'prefs-diffs' => 'পাৰ্থক্য',
 'prefs-help-prefershttps' => "আপোনাৰ পৰৱৰ্তী প্ৰৱেশত এই পছন্দ কাৰ্যকৰী হ'ব।",
+'prefs-tabs-navigation-hint' => 'কিটিপ: টেব্‌ তালিকাত থকা টেবসমূহৰ মাজত বিচৰণ কৰিবলৈ সোঁ আৰু বাঁও কাঁড়চিনৰ কী টিপিব পাৰে।',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'ই-মেইল ঠিকনাটো সঠিক',
@@ -1502,7 +1505,8 @@ $1",
 'right-proxyunbannable' => 'প্ৰক্সীৰ স্বয়ংক্ৰিয় প্ৰতিবন্ধক এৰাই চলক',
 'right-unblockself' => 'আপোনা-আপুনি খোলা',
 'right-protect' => 'সুৰক্ষাৰ স্তৰ পৰিৱৰ্তন কৰক আৰু প্ৰপাতাকাৰ-সুৰক্ষিত পৃষ্ঠাসমূহ সম্পাদনা কৰক',
-'right-editprotected' => 'সুৰক্ষিত পৃষ্ঠা (কেশ্বকেডিঙ সুৰক্ষাৰ অবিহনে) সম্পাদনা কৰক',
+'right-editprotected' => '"{{int:protect-level-sysop}}" হিচাপে সুৰক্ষিত পৃষ্ঠা সম্পাদনা কৰক',
+'right-editsemiprotected' => '"{{int:protect-level-autoconfirmed}}" হিচাপে সুৰক্ষিত পৃষ্ঠা সম্পাদনা কৰক',
 'right-editinterface' => 'সদস্যৰ ইণ্টাৰফে’চ সম্পাদনা কৰক',
 'right-editusercssjs' => 'আন সদস্যৰ CSS আৰু JavaScript  সম্পাদনা কৰক',
 'right-editusercss' => 'আন সদস্যৰ CSS ফাইল সম্পাদনা কৰক',
@@ -1510,6 +1514,10 @@ $1",
 'right-editmyusercss' => 'আপোনাৰ নিজৰ সদস্য CSS ফাইলসমূহ সম্পাদনা কৰক।',
 'right-editmyuserjs' => 'আপোনাৰ নিজৰ সদস্য JavaScript ফাইলসমূহ সম্পাদনা কৰক',
 'right-viewmywatchlist' => 'আপোনাৰ নিজৰ লক্ষ্য-তালিকা চাওক',
+'right-editmywatchlist' => 'আপোনাৰ নিজৰ লক্ষ্যতালিকাখন সম্পাদনা কৰক। মন কৰিব যে কিছুমান কামে এই অধিকাৰ অবিহনেও পৃষ্ঠা যোগ দিয়াব।',
+'right-viewmyprivateinfo' => 'আপোনাৰ ব্যক্তিগত তথ্য চাওক (যেনে- ইমেইল ঠিকনা, প্ৰকৃত নাম)',
+'right-editmyprivateinfo' => 'আপোনাৰ ব্যক্তিগত তথ্য সম্পাদনা কৰক (যেনে- ইমেইল ঠিকনা, প্ৰকৃত নাম)',
+'right-editmyoptions' => 'আপোনাৰ নিজৰ পছন্দসমূহ সম্পাদনা কৰক',
 'right-rollback' => 'শেষৰজন সদস্যই এখন নিৰ্দিষ্ট পৃষ্টাত কৰা সম্পাদনা পূৰ্বৰ অৱস্থালৈ ঘূৰাই আনক',
 'right-markbotedits' => 'ৰ’ল্ড-বেক সম্পাদনাসমূহ বট সম্পাদনা বুলি চিহ্নিত কৰক',
 'right-noratelimit' => 'গতি সীমাৰ দ্বাৰা প্ৰভাৱিত নহ’ব',
@@ -1561,8 +1569,8 @@ $1",
 'action-block' => 'এই সদস্যক সম্পাদনা কৰাৰ পৰা বাৰণ কৰক',
 'action-protect' => 'এই পৃষ্ঠাৰ সুৰক্ষাৰ মাত্ৰা পৰিৱৰ্তন কৰক',
 'action-rollback' => 'শেষৰজন সদস্যই এখন নিৰ্দিষ্ট পৃষ্টাত কৰা সম্পাদনা পূৰ্বৰ অৱস্থালৈ ঘূৰাই আনক',
-'action-import' => 'à¦\85নà§\8dয à§±à¦¿à¦\95িৰ à¦ªà§°à¦¾ à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86মদানà§\80 কৰক',
-'action-importupload' => 'ফাà¦\87ল à¦\86পলâ\80\99ডৰ à¦ªà§°à¦¾ à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦\86মদানà§\80 কৰক',
+'action-import' => 'à¦\85নà§\8dয à§±à¦¿à¦\95িৰ à¦ªà§°à¦¾ à¦ªà§\83ষà§\8dঠা à¦\86মদানি কৰক',
+'action-importupload' => 'ফাà¦\87ল à¦\86পলâ\80\99ডৰ à¦ªà§°à¦¾ à¦ªà§\83ষà§\8dঠা à¦\86মদানি কৰক',
 'action-patrol' => 'আনৰ সম্পাদনা পৰীক্ষিত বুলি চিহ্নিত কৰক',
 'action-autopatrol' => 'আপোনাৰ সম্পাদনা পৰীক্ষিত বুলি চিহ্নিত কৰক',
 'action-unwatchedpages' => 'নিৰীক্ষণ নকৰা পৃষ্ঠাসমূহৰ তালিকা চাওক',
@@ -1571,22 +1579,33 @@ $1",
 'action-userrights-interwiki' => 'আন ৱিকিৰ সদস্যৰ অধিকাৰসমূহ সম্পাদনা কৰক',
 'action-siteadmin' => 'তথ্যকোষ বন্ধ কৰক বা খোলক',
 'action-sendemail' => 'ই-মেইল পঠিয়াওক',
+'action-editmywatchlist' => 'আপোনাৰ লক্ষ্যতালিকা সম্পাদনা কৰক',
+'action-viewmywatchlist' => 'আপোনাৰ লক্ষ্যতালিকা চাওক',
+'action-viewmyprivateinfo' => 'আপোনাৰ ব্যক্তিগত তথ্য চাওক',
+'action-editmyprivateinfo' => 'আপোনাৰ ব্যক্তিগত তথ্য সম্পাদনা কৰক',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|সাল-সলনি|সাল-সলনি}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|শেষ দৰ্শনৰ পৰা}}',
+'enhancedrc-history' => 'ইতিহাস',
 'recentchanges' => 'শেহতীয়া সাল-সলনি',
 'recentchanges-legend' => 'সাম্প্ৰতিক সালসলনিৰ পছন্দসমূহ',
 'recentchanges-summary' => 'ৱিকিত হোৱা শেহতীয়া সাল-সলনি এই পৃষ্ঠাত অনুসৰণ কৰক।',
+'recentchanges-noresult' => 'নিৰ্ধাৰিত সময়ছোৱাত এই মাপকাঠিৰ লগত মিলা কোনো সালসলনি হোৱা নাই।',
 'recentchanges-feed-description' => 'ৱিকিত হোৱা শেহতীয়া সাল-সলনি এই ফীডত অনুসৰণ কৰক।',
-'recentchanges-label-newpage' => 'à¦\8fà¦\87 à¦¸à¦®à§\8dপাদনাà¦\87 à¦\8fà¦\96ন à¦¨à¦¤à§\81ন à¦ªà§\83ষà§\8dঠা à¦¤à§\88য়াৰ কৰিছে',
+'recentchanges-label-newpage' => 'à¦\8fà¦\87 à¦¸à¦®à§\8dপাদনাà¦\87 à¦\8fà¦\9fা à¦¨à¦¤à§\81ন à¦ªà§\83ষà§\8dঠাৰ à¦¸à§\83ষà§\8dà¦\9fি কৰিছে',
 'recentchanges-label-minor' => 'এইটো অগুৰুত্বপূৰ্ণ সম্পাদনা',
-'recentchanges-label-bot' => "এই সম্পাদনা ব'টৰ দ্বাৰা কৰা হৈছে",
+'recentchanges-label-bot' => "এই সম্পাদনাটো ব'টে কৰিছে",
 'recentchanges-label-unpatrolled' => 'এই সম্পাদনাটো এতিয়াও পৰীক্ষা কৰা হোৱা নাই',
+'recentchanges-label-plusminus' => 'পৃষ্ঠাৰ আকাৰ এই পৰিমাণৰ বাইট পৰিৱৰ্তন হৈছে',
+'recentchanges-legend-heading' => "'''ব্যাখ্যা:'''",
+'recentchanges-legend-newpage' => '(লগতে [[Special:NewPages|নতুন পৃষ্ঠাসমূহৰ তালিকা]] চাওক)',
+'recentchanges-legend-plusminus' => "(''±১২৩'')",
 'rcnotefrom' => "তলত '''$2''' ৰ পৰা হোৱা ('''$1''' লৈকে) পৰিৱৰ্তন দেখুৱা হৈছে ।",
 'rclistfrom' => '$1ৰ পৰা নতুন সালসলনি দেখুৱাওক',
 'rcshowhideminor' => '$1 -সংখ্যক নগণ্য সম্পাদনা',
 'rcshowhidebots' => "ব'ট $1",
-'rcshowhideliu' => 'প্ৰবিষ্ট সভ্যৰ সাল-সলনি $1',
+'rcshowhideliu' => '$1 পঞ্জীভুক্ত সদস্য',
 'rcshowhideanons' => 'বেনামী সদস্য $1',
 'rcshowhidepatr' => '$1 নিৰীক্ষিত সম্পাদনা',
 'rcshowhidemine' => 'মোৰ সম্পাদনা $1',
@@ -1623,7 +1642,7 @@ $1",
 'reuploaddesc' => 'আপল’ড বাতিল কৰি আপল’ড প্ৰপত্ৰলৈ ঘূৰি যাওক',
 'upload-tryagain' => 'পৰিৱৰ্তিত ফাইলৰ বিৱৰণ দাখিল কৰক',
 'uploadnologin' => 'প্ৰৱেশ কৰা নাই',
-'uploadnologintext' => 'ফাà¦\87ল à¦\86পলâ\80\99ড à¦\95ৰিবলà§\88 à¦\86পà§\81নি à¦\86à¦\97তà§\87 [[Special:UserLogin|লà¦\97-à¦\87ন]] à¦\95ৰিব à¦²à¦¾à¦\97িব ।',
+'uploadnologintext' => 'ফাà¦\87ল à¦\86পলâ\80\99ড à¦\95ৰিবলà§\88 à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি $1 à¦\95ৰà¦\95।',
 'upload_directory_missing' => 'আপলোড ডিৰেক্টৰি ($1)  বিচাৰি পোৱা নগ’ল আৰু ৱেবচাৰ্ভাৰৰ দ্বাৰা তৈয়াৰ কৰিব পৰা নগ’ল ।',
 'upload_directory_read_only' => 'আপল’ড ডিৰেক্টৰি ($1) ৱেবচাৰ্ভাৰৰ দ্বাৰা লিখনযোগ্য নহয় ।',
 'uploaderror' => 'আপল’ডত সমস্যা হৈছে',
@@ -1866,8 +1885,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'upload_source_file' => '(আপোনাৰ কম্পিউটাৰৰ এটা ফাইল)',
 
 # Special:ListFiles
-'listfiles-summary' => 'এই বিশেষ পৃষ্ঠাত সকলো আপল’ড হোৱা ফাইল দেখা পাব ।
-সদস্যৰ দ্বাৰা চেকিলে কেৱল শেহতীয়াকৈ আপল’ড কৰা ফাইলৰ সংস্কৰণ দেখা পোৱা যাব ।',
+'listfiles-summary' => 'এই বিশেষ পৃষ্ঠাত সকলো আপল’ড হোৱা ফাইল দেখা পাব।',
 'listfiles_search_for' => 'মিডিয়াৰ নাম অনুসন্ধান:',
 'imgfile' => 'ফাইল',
 'listfiles' => 'ফাইলৰ তালিকা',
@@ -1878,6 +1896,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'listfiles_size' => 'আকাৰ',
 'listfiles_description' => 'বিৱৰণ',
 'listfiles_count' => 'সংস্কৰণ',
+'listfiles-show-all' => 'ছবিসমূহৰ পুৰণা সংস্কৰণ অন্তৰ্ভুক্ত কৰক',
+'listfiles-latestversion' => 'শেহতীয়া সংস্কৰণ',
 'listfiles-latestversion-yes' => 'হয়',
 'listfiles-latestversion-no' => 'নহয়',
 
@@ -1979,6 +1999,10 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 
 # Random page in category
 'randomincategory' => 'শ্ৰেণীৰ যিকোনো পৃষ্ঠা',
+'randomincategory-invalidcategory' => '"$1" বৈধ শ্ৰেণী নাম নহয়।',
+'randomincategory-nopages' => '[[:Category:$1|$1]] শ্ৰেণীত কোনো পৃষ্ঠা নাই।',
+'randomincategory-selectcategory' => 'এই শ্ৰেণীৰ পৰা যিকোনো পৃষ্ঠা চাওক: $1 $2।',
+'randomincategory-selectcategory-submit' => 'যাওক',
 
 # Random redirect
 'randomredirect' => 'অনিৰ্ধাৰিত পুননিৰ্দেশ',
@@ -1993,7 +2017,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'statistics-header-hooks' => 'অন্য পৰিসংখ্যা',
 'statistics-articles' => 'বিষয়বস্তুৰ পৃষ্ঠা',
 'statistics-pages' => 'পৃষ্ঠাসমূহ',
-'statistics-pages-desc' => 'à¦\95থা-বতৰা à¦ªà§\83ষà§\8dঠা, à¦ªà§\81ন:নিৰ্দেশিত পৃষ্ঠা আদি সহ এই ৱিকিৰ সকলো পৃষ্ঠা',
+'statistics-pages-desc' => 'à¦\86লà§\8bà¦\9aনা à¦ªà§\83ষà§\8dঠা, à¦ªà§\81নà¦\83নিৰ্দেশিত পৃষ্ঠা আদি সহ এই ৱিকিৰ সকলো পৃষ্ঠা',
 'statistics-files' => 'আপল’ড কৰা ফাইলসমূহ',
 'statistics-edits' => '{{SITENAME}} স্থাপন কৰাৰেপৰা পৃষ্ঠা সম্পাদনাসমূহ',
 'statistics-edits-average' => 'প্ৰতি পৃষ্ঠাৰ গড় সম্পাদনা',
@@ -2038,6 +2062,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'ninterwikis' => '$1 {{PLURAL:$1|ইণ্টাৰৱিকি|ইণ্টাৰৱিকিসমূহ}}',
 'nlinks' => '$1 {{PLURAL:$1|সংযোগ|সংযোগ}}',
 'nmembers' => '{{PLURAL:$1|সদস্য|$1 সদস্যবৃন্দ}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|জন সদস্য|জন সদস্য}}',
 'nrevisions' => '$1টা {{PLURAL:$1|সংশোধন|সংশোধন}}',
 'nviews' => '$1 {{PLURAL:$1|টা দৰ্শন|টা দৰ্শন}}',
 'nimagelinks' => '$1 {{PLURAL:$1|খন পৃষ্ঠাত|খন পৃষ্ঠাত}} ব্যৱহৃত',
@@ -2068,6 +2093,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'mostrevisions' => 'অধিকবাৰ সম্পাদনা কৰা পৃষ্ঠাসমূহ',
 'prefixindex' => 'উপসৰ্গসহ সকলো পৃষ্ঠা',
 'prefixindex-namespace' => 'উপসৰ্গ ($1 namespace) -ৰ সৈতে সকলো পৃষ্ঠা',
+'prefixindex-strip' => 'তালিকাৰ পৰা প্ৰিফিক্স আঁতৰাওক',
 'shortpages' => 'চুটি পৃষ্ঠাসমূহ',
 'longpages' => 'দীঘলীয়া পৃষ্ঠাসমূহ',
 'deadendpages' => 'সংযোগবিহীন পৃষ্ঠাসমূহ',
@@ -2081,6 +2107,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'listusers' => 'সদস্য তালিকা',
 'listusers-editsonly' => 'কেৱল সম্পাদনা কৰা সদস্যকহে দেখুৱাওক',
 'listusers-creationsort' => 'সৃষ্টিৰ তাৰিখমতে সজাওক',
+'listusers-desc' => 'নিম্নক্ৰমত সজাওক',
 'usereditcount' => '$1 {{PLURAL:$1|টা সম্পাদনা|টা সম্পাদনা}}',
 'usercreated' => '$1 তাৰিখে $2 সময়ত {{GENDER:$3|য়ে সৃষ্টি কৰিছে}}',
 'newpages' => 'নতুন পৃষ্ঠাসমূহ',
@@ -2182,7 +2209,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'listgrouprights' => 'ব্যৱহাৰকাৰী গোটৰ অধিকাৰ',
 'listgrouprights-summary' => 'এই ৱিকিত থকা গোটসমূহৰ তালিকা সেইবোৰৰ প্ৰৱেশাধিকাৰসহ তলত দিয়া হ’ল ।
 সুকীয়া অধিকাৰ সম্পৰ্কে [[{{MediaWiki:Listgrouprights-helppage}}|অধিক তথ্য]] থাকিব পাৰে ।',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">অনুমোদিত অধিকাৰ</span>
+'listgrouprights-key' => 'ব্যাখ্যা:
+* <span class="listgrouprights-granted">অনুমোদিত অধিকাৰ</span>
 * <span class="listgrouprights-revoked">প্ৰত্যাহাৰ কৰা অধিকাৰ</span>',
 'listgrouprights-group' => 'গোট',
 'listgrouprights-rights' => 'অধিকাৰসমূহ',
@@ -2251,9 +2279,9 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'watchthispage' => 'এই পৃষ্ঠাটো লক্ষ্য কৰক',
 'unwatch' => 'চকু দিব নালাগে',
 'unwatchthispage' => 'চকু দিয়া বন্ধ কৰক',
-'notanarticle' => 'বিষয়বসà§\8dতà§\81 পৃষ্ঠা নহয়',
+'notanarticle' => 'সমল পৃষ্ঠা নহয়',
 'notvisiblerev' => 'অন্য কোনো সদস্যই কৰা সংশোধনী বিলোপ কৰা হৈছে',
-'watchlist-details' => 'আলোচনা পৃষ্ঠা সমূহ লেখত নধৰি {{PLURAL:$1|$1 খন পৃষ্ঠা|$1 খন পৃষ্ঠা}} আপোনাৰ লক্ষ্য-তালিকাত আছে ।',
+'watchlist-details' => 'আলোচনা পৃষ্ঠাসমূহ লেখত নধৰি {{PLURAL:$1|$1 টা পৃষ্ঠা|$1 টা পৃষ্ঠা}} আপোনাৰ লক্ষ্য-তালিকাত আছে ।',
 'wlheader-enotif' => 'ইমেইল জাননী সক্ৰিয় কৰা হৈছে।',
 'wlheader-showupdated' => "আপোনাৰ শেষ পৰিদৰ্শনৰ পিছত সলনি হোৱা পৃষ্ঠাসমূহ '''গাঢ়''' আখৰত দেখুওৱা হৈছে।",
 'watchmethod-recent' => 'লক্ষ্য কৰা পৃষ্ঠাসমূহ শেহতীয়া সম্পাদনাৰ বাবে পৰীক্ষা কৰা হৈছে',
@@ -2321,7 +2349,7 @@ $UNWATCHURL
 'excontent' => 'বিষয়বস্তু আছিল: "$1"',
 'excontentauthor' => 'বিষয়বস্তু আছিল: "$1" (আৰু একমাত্ৰ অৱদানকাৰী আছিল "[[Special:Contributions/$2|$2]]")',
 'exbeforeblank' => 'খালী কৰাৰ আগেয়ে বিষয়বস্তু আছিল: $1',
-'exblank' => 'পà§\83ষà§\8dঠা à¦\96ালà§\80 আছিল',
+'exblank' => 'পà§\83ষà§\8dঠা à¦\96ালি আছিল',
 'delete-confirm' => '"$1" বিলোপ কৰক',
 'delete-legend' => 'বিলোপ কৰক',
 'historywarning' => "'''সাৱধান:''' আপুনি বিলোপ কৰিব বিচৰা পৃষ্ঠাখনৰ ইতিহাসত প্ৰায় {{PLURAL:$1|সংস্কৰণ|সংস্কৰণ}} আছে:",
@@ -2338,10 +2366,12 @@ $UNWATCHURL
 'deletecomment' => 'কাৰণ:',
 'deleteotherreason' => 'আন/অতিৰিক্ত কাৰণ:',
 'deletereasonotherlist' => 'আন কাৰণ:',
-'deletereason-dropdown' => '* অৱলুপ্তিৰ সাধাৰণ কাৰণসমূহ
-** লেখকৰ অনুৰোধ
+'deletereason-dropdown' => '* বিলোপনৰ সাধাৰণ কাৰণসমূহ
+** স্পাম
+** অসভ্যালি
 ** কপিৰাইট উলঙ্ঘন
-** অসভ্যালি',
+** লেখকৰ অনুৰোধ
+** ভঙা পুনঃনিৰ্দেশনা',
 'delete-edit-reasonlist' => 'অপসাৰণ কৰা কাৰণ সম্পাদনা কৰক',
 'delete-toobig' => 'এই পৃষ্ঠাখনৰ সম্পাদনা ইতিহাস অতি দীঘল, $1 {{PLURAL:$1|টা সংশোধনৰো|টা সংশোধনৰো}} বেছি ।
 {{SITENAME}}ৰ আকস্মিক ক্ষতি ৰোধ কৰিবলৈ এনে পৃষ্ঠাৰ ইতিহাস বিলোপ কৰাত সীমাবদ্ধতা আৰোপ কৰা হৈছে ।',
@@ -2363,7 +2393,7 @@ $UNWATCHURL
 [[User:$3|$3]] ([[User talk:$3|আলোচনা]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])ই এই পৃষ্ঠাৰ শেষ সম্পাদনা কৰিছিল ।",
 'editcomment' => "সম্পাদনাৰ সাৰাংশ আছিল: \"''\$1''\"।",
 'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|কথা-বতৰা]])ৰ সম্পাদনাসমূহ [[User:$1|$1]]য়ে কৰা শেষ সংশোধনলৈ ঘূৰাই নিয়া হৈছে ।',
-'revertpage-nouser' => '(সদস্যনাম বিলোপিত) য়ে কৰা সম্পাদনা [[User:$1|$1]] য়ে কৰা শেষ সংশোধনীলৈ ঘূৰাই নিয়া হৈছে ।',
+'revertpage-nouser' => 'এজন গোপন ব্যৱহাৰকাৰীয়ে কৰা সম্পাদনা {{GENDER:$1|[[User:$1|$1]]}}-য়ে কৰা শেষ সংশোধনীলৈ ঘূৰাই নিয়া হৈছে।',
 'rollback-success' => '$1 ৰ সম্পাদনাসমূহ পূৰ্বৰ অৱস্থালৈ ঘূৰাই নিয়া হৈছে;
 পৃষ্ঠাখন $2 য়ে কৰা শেষ সংশোধনীলৈ ঘূৰাই নিয়া হৈছে ।',
 
@@ -2532,7 +2562,7 @@ $1',
 'sp-contributions-submit' => 'সন্ধান কৰক',
 
 # What links here
-'whatlinkshere' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦¬à§\8dযৱহাৰ à¦\95ৰিà¦\9bà§\87...',
+'whatlinkshere' => 'à¦\87য়ালà§\88 à¦¥à¦\95া à¦¸à¦\82যà§\8bà¦\97সমà§\82হ',
 'whatlinkshere-title' => '"$1"লৈ সংযোজিত পৃষ্ঠাসমূহ',
 'whatlinkshere-page' => 'পৃষ্ঠা:',
 'linkshere' => "এই পৃষ্ঠাটো '''[[:$1]]''' ৰ লগত সংযোজিত:",
@@ -2704,11 +2734,11 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 যদি এইটো কৰিব নিবিচাৰে তেনেহ'লে  [[Special:DoubleRedirects|দ্বি-পুনৰ্নিৰ্দেশনাসমূহ]] বা [[Special:BrokenRedirects|ভঙা পুনৰ্নিৰ্দেশনাসমূহ]] বাছনি কৰে যেন।
 সকলো সংযোগ সঠিক দিশলৈ পোনাৱাৰ দায়িত্ব আপোনাৰ।
 
-মন à¦\95ৰিব à¦¯à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰা '''নহ'ব''' à¦¯à¦¦à¦¿à¦¹à§\87 à¦¨à¦¤à§\81ন à¦¶à¦¿à§°à§\8bনামà¦\9fà§\8bত à¦ªà§\82ৰà§\8dবৰপৰা à¦\8fà¦\96ন à¦ªà§\83ষà§\8dঠা à¦\86à¦\9bà§\87à¦\87, à¦\86ৰà§\81 à¦¯à¦¦à¦¿à¦¹à§\87 à¦ªà§\82ৰà§\8dবৰ à¦ªà§\83ষà§\8dঠাà¦\96ন কোনো পুনৰ্নিৰ্দেশ নহয় আৰু তাৰ কোনো সম্পাদনাৰ পূৰ্বইতিহাস নাই।
-à¦\87য়াৰ à¦\85ৰà§\8dথ à¦\8fয়à§\87 à¦¯à§\87 à¦­à§\81ল à¦¹à¦²à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86à¦\97ৰ à¦ à¦¾à¦\87তà§\87 à¦¥à¦¾à¦\95িব, à¦\86ৰà§\81 à¦\86পà§\81নি à¦ªà§\8dৰà¦\9aলিত à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96নà¦\95 à¦\86ন à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96নà§\87ৰে সলনি কৰিব নোৱাৰে।
+মন à¦\95ৰিব à¦¯à§\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰা '''নহ'ব''' à¦¯à¦¦à¦¿à¦¹à§\87 à¦¨à¦¤à§\81ন à¦¶à¦¿à§°à§\8bনামà¦\9fà§\8bত à¦ªà§\82ৰà§\8dবৰপৰা à¦\8fà¦\9fা à¦ªà§\83ষà§\8dঠা à¦\86à¦\9bà§\87à¦\87, à¦\86ৰà§\81 à¦¯à¦¦à¦¿à¦¹à§\87 à¦ªà§\82ৰà§\8dবৰ à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b কোনো পুনৰ্নিৰ্দেশ নহয় আৰু তাৰ কোনো সম্পাদনাৰ পূৰ্বইতিহাস নাই।
+à¦\87য়াৰ à¦\85ৰà§\8dথ à¦\8fয়à§\87 à¦¯à§\87 à¦­à§\81ল à¦¹à¦²à§\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦\86à¦\97ৰ à¦ à¦¾à¦\87তà§\87 à¦¥à¦¾à¦\95িব, à¦\86ৰà§\81 à¦\86পà§\81নি à¦ªà§\8dৰà¦\9aলিত à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fাà¦\95 à¦\86ন à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fাৰে সলনি কৰিব নোৱাৰে।
 
 '''সতৰ্কবাণী !'''
-à¦\9cনপà§\8dৰিয় à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96নৰ বাবে এয়া এক ডাঙৰ আৰু অনাকাংক্ষিত সাল-সলনি হ’ব পাৰে;
+à¦\9cনপà§\8dৰিয় à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fাৰ বাবে এয়া এক ডাঙৰ আৰু অনাকাংক্ষিত সাল-সলনি হ’ব পাৰে;
 আগবঢ়াৰ পূৰ্বে এই কাৰ্যৰ পৰিণাম ভালদৰে বিবেচনা কৰি লয় যেন।",
 'movepagetext-noredirectfixer' => "তলৰ প্ৰপত্ৰ ব্যৱহাৰ কৰিলে এই পৃষ্ঠাৰ শিৰোনামা সলনি হ'ব, লগতে সমগ্ৰ ইতিহাস নতুন শিৰোনামালৈ স্থানান্তৰ কৰা হ'ব।
 পুৰণা শিৰোনামাটো নতুন শিৰোনামালৈ এটা পুনৰ্নিৰ্দেশনা হৈ ৰ'ব।
@@ -2716,16 +2746,16 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 সকলো সংযোগে যাতে সঠিক দিশলৈ পোনায়, সেয়া লক্ষ্য কৰা দায়িত্ব আপোনাৰ।
 
 মন কৰিব যে নতুন শিৰোনামাতো যদি প্ৰচলিত, এই পৃষ্ঠা নতুন শিৰোনামালৈ সলনি কৰা '''নহ'ব''' যদিহে সেই পৃষ্ঠা খালী বা কোনো পুনৰ্নিৰ্দেশনৰ পূৰ্ব ইতিহাস নাই।
-à¦\87য়াৰ à¦\85ৰà§\8dথ à¦\8fয়à§\87 à¦¯à§\87 à¦­à§\81ল à¦¹à¦²à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86à¦\97ৰ à¦ à¦¾à¦\87তà§\87 à¦¥à¦¾à¦\95িব, à¦\86ৰà§\81 à¦\86পà§\81নি à¦ªà§\8dৰà¦\9aলিত à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96নক আন পৃষ্ঠা এখনেৰে সলনি কৰিব নোৱাৰে।
+à¦\87য়াৰ à¦\85ৰà§\8dথ à¦\8fয়à§\87 à¦¯à§\87 à¦­à§\81ল à¦¹à¦²à§\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦\86à¦\97ৰ à¦ à¦¾à¦\87তà§\87 à¦¥à¦¾à¦\95িব, à¦\86ৰà§\81 à¦\86পà§\81নি à¦ªà§\8dৰà¦\9aলিত à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fাক আন পৃষ্ঠা এখনেৰে সলনি কৰিব নোৱাৰে।
 
 '''সতৰ্কবাণী !'''
-à¦\9cনপà§\8dৰিয় à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96নৰ বাবে এয়া এক ডাঙৰ আৰু অকানাংক্ষিত সাল-সলনি হ'ব পাৰে;
+à¦\9cনপà§\8dৰিয় à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fাৰ বাবে এয়া এক ডাঙৰ আৰু অকানাংক্ষিত সাল-সলনি হ'ব পাৰে;
 এই কাৰ্য্যৰ পৰিণাম ভালদৰে বিবেচনা কৰি লয় যেন।",
 'movepagetalktext' => "পৃষ্ঠাখনৰ লগতে সংশ্লিষ্ট আলোচনা পৃষ্ঠাখনো স্বয়ংক্ৰিয়ভাৱে স্থানান্তৰ হ’ব; এনে নহয় '''যদিহে:'''
-*নতà§\81ন à¦¶à¦¿à§°à§\8bনামাৰ à¦\85ধà§\80নত à¦\8fà¦\96ন à¦\96ালà§\80 নোহোৱা আলোচনা পৃষ্ঠা ইতিমধ্যেই থাকে, বা
+*নতà§\81ন à¦¶à¦¿à§°à§\8bনামাৰ à¦\85ধà§\80নত à¦\8fà¦\9fা à¦\96ালি নোহোৱা আলোচনা পৃষ্ঠা ইতিমধ্যেই থাকে, বা
 *আপুনি তলৰ ঘৰটো অচিহ্নিত কৰে ।
 
-তà§\87নà§\87 à¦\95à§\8dষà§\87তà§\8dৰত à¦\86পà§\81নি à¦\86পà§\81নি à¦\87à¦\9aà§\8dà¦\9bা à¦\95ৰিলà§\87 à¦¨à¦¿à¦\9c à¦¹à¦¾à¦¤à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন স্থানান্তৰ বা একত্ৰীকৰণ কৰিব পাৰে ।",
+তà§\87নà§\87 à¦\95à§\8dষà§\87তà§\8dৰত à¦\86পà§\81নি à¦\86পà§\81নি à¦\87à¦\9aà§\8dà¦\9bা à¦\95ৰিলà§\87 à¦¨à¦¿à¦\9c à¦¹à¦¾à¦¤à§\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b স্থানান্তৰ বা একত্ৰীকৰণ কৰিব পাৰে ।",
 'movearticle' => 'পৃষ্ঠা স্থানান্তৰ কৰক:',
 'moveuserpage-warning' => "'''সতৰ্কবাণী:''' আপুনি এখন সদস্যপৃষ্ঠা স্থানান্তৰ কৰিবলৈ বিছাৰিছে । অনুগ্ৰহ কৰি মন কৰক যে কেৱল সদস্যপৃষ্ঠাখনহে স্থানান্তৰ হ’ব আৰু সদস্যজনৰ পুনঃনামাকৰণ নহ’ব ।",
 'movenologintext' => 'পৃষ্ঠা স্থানান্তৰ কৰিবলৈ আপুনি ভুক্ত সদস্য হৈ [[Special:UserLogin|প্ৰৱেশ]] কৰিব লাগিব ।',
@@ -2742,7 +2772,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'movepage-moved-noredirect' => 'পুনৰ্নিৰ্দেশনা সৃষ্টি কৰা নিবাৰণ কৰা হৈছে ।',
 'articleexists' => 'সেই নামৰ পৃষ্ঠা এটা আগৰ পৰাই আছে, বা সেই নামতো অযোগ্য।
 বেলেগ নাম এটা বাছি লওক।',
-'cantmove-titleprotected' => 'আপুনি ইয়ালৈ কোনো পৃষ্ঠা স্থানান্তৰ কৰিব নোৱাৰে, কাৰণ এই নতুন শিৰোনামা সৃষ্টিৰ পৰা সুৰক্ষিত ।',
+'cantmove-titleprotected' => 'আপুনি ইয়ালৈ কোনো পৃষ্ঠা স্থানান্তৰ কৰিব নোৱাৰে, কাৰণ এই নতুন শিৰোনামা সৃষ্টিৰ পৰা সুৰক্ষিত।',
 'movetalk' => 'সংলগ্ন বাৰ্তা পৃষ্ঠা স্থানান্তৰ কৰক',
 'move-subpages' => 'উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1লৈ)',
 'move-talk-subpages' => 'আলোচনা পৃষ্ঠাৰ উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1-লৈ)',
@@ -2858,7 +2888,7 @@ $2',
 'import-comment' => 'মন্তব্য:',
 'importtext' => "অনুগ্ৰহ কৰি [[Special:Export|ৰপ্তানি সুবিধা]] ব্যৱহাৰ কৰি উৎস ৱিকিৰ পৰা ফাইলটো ৰপ্তানি কৰক।
 আপোনাৰ কম্পিউটাৰত সাঁচি ৰাখক আৰু ইয়াত আপল'ড কৰক।",
-'importstart' => 'পà§\83ষà§\8dঠা à¦\86মদানি à¦\95ৰা à¦¹à§\88 à¦¹à§\88ছে...',
+'importstart' => 'পà§\83ষà§\8dঠা à¦\86মদানি à¦\95ৰা à¦¹à§\88 à¦\86ছে...',
 'import-revision-count' => '$1 {{PLURAL:$1|টা সংশোধন|টা সংশোধন}}',
 'importnopages' => 'আমদানি কৰিবলৈ কোনো পৃষ্ঠা নাই ।',
 'imported-log-entries' => "$1 {{PLURAL:$1|টা অভিলেখ ভৰ্তি|টা অভিলেখ ভৰ্তি}} আমদানি কৰা হ'ল ।",
@@ -2960,7 +2990,7 @@ $2',
 'tooltip-ca-nstab-main' => 'এই ৱিকিৰ সূচী চাওক',
 'tooltip-ca-nstab-user' => 'সভ্যৰ ব্যক্তিগত পৃষ্ঠালৈ',
 'tooltip-ca-nstab-media' => 'মিডিয়া পৃষ্ঠাখন চাওক',
-'tooltip-ca-nstab-special' => 'à¦\8fà¦\87à¦\96ন à¦\8fà¦\96ন বিশেষ পৃষ্ঠা, আপুনি সম্পাদনা কৰিব নোৱাৰে',
+'tooltip-ca-nstab-special' => 'à¦\8fà¦\87à¦\9fà§\8b à¦\8fà¦\9fা বিশেষ পৃষ্ঠা, আপুনি সম্পাদনা কৰিব নোৱাৰে',
 'tooltip-ca-nstab-project' => 'প্ৰকল্প পৃষ্ঠা চাওক',
 'tooltip-ca-nstab-image' => 'নথিৰ পৃষ্ঠা চাওক',
 'tooltip-ca-nstab-mediawiki' => 'প্ৰণালী বাৰ্তা চাওক',
@@ -3021,13 +3051,14 @@ $2',
 'pageinfo-length' => 'পৃষ্ঠাৰ দৈৰ্ঘ্য (বাইটত)',
 'pageinfo-article-id' => 'পৃষ্ঠা ID',
 'pageinfo-language' => 'পৃষ্ঠাত সন্নিবিষ্ট ভাষা',
-'pageinfo-robot-policy' => 'সন্ধান ইঞ্জিনৰ স্থিতি',
-'pageinfo-robot-index' => 'ইনডেক্স উপযোগী',
-'pageinfo-robot-noindex' => 'ইনডেক্সৰ অনুপযোগী',
+'pageinfo-content-model' => 'পৃষ্ঠাৰ সমলৰ মডেল',
+'pageinfo-robot-policy' => "ৰ'ব'টৰ জৰিয়তে ইন্‌ডেক্সিং কৰা হৈছে",
+'pageinfo-robot-index' => 'অনুমোদিত',
+'pageinfo-robot-noindex' => 'অনুমোদন অগ্ৰাহ্য',
 'pageinfo-views' => 'দৰ্শনৰ সংখ্যা',
 'pageinfo-watchers' => 'পৃষ্ঠা নিৰীক্ষকৰ সংখ্যা',
 'pageinfo-few-watchers' => '$1 {{PLURAL:$1|তকৈ কম নিৰীক্ষক}}',
-'pageinfo-redirects-name' => 'পà§\83ষà§\8dঠালà§\88 à¦¥à¦\95া à¦ªà§\81নৰà§\8dনিৰà§\8dদà§\87শ',
+'pageinfo-redirects-name' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠালà§\88 à¦¥à¦\95া à¦ªà§\81নৰà§\8dনিৰà§\8dদà§\87শৰ à¦¸à¦\82à¦\96à§\8dযা',
 'pageinfo-subpages-name' => 'এই পৃষ্ঠাৰ উপপৃষ্ঠাসমূহ',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|পুনৰ্নিৰ্দেশ|পুনৰ্নিৰ্দেশসমূহ}}; $3 {{PLURAL:$3|অপুনৰ্নিৰ্দেশ নাই|অপুনৰ্নিৰ্দেশসমূহ}})',
 'pageinfo-firstuser' => 'পৃষ্ঠাখনৰ সৃষ্টিকৰ্তা',
@@ -3363,7 +3394,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-compression-4' => "CCITT দল ৪ ফেক্স এনক'ডিং",
 
 'exif-copyrighted-true' => 'কপিৰাইট আছে',
-'exif-copyrighted-false' => "ৰাজহুৱা ড'মেইন",
+'exif-copyrighted-false' => 'কপিৰাইট সংক্ৰান্ত তথ্য নাই',
 
 'exif-unknowndate' => 'অজ্ঞাত তাৰিখ',
 
@@ -3671,11 +3702,15 @@ $5
 'imgmultigo' => 'যাওক',
 'imgmultigoto' => '$1 পৃষ্ঠালৈ যাওক',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(ডিফল্ট ভাষা)',
+'img-lang-go' => 'যাওক',
+
 # Table pager
 'ascending_abbrev' => 'আৰোহণ',
 'descending_abbrev' => 'অৱতৰণ',
 'table_pager_next' => 'পৰৱৰ্তী পৃষ্ঠা',
-'table_pager_prev' => 'পà§\82ৰà§\8dববৰ্তী পৃষ্ঠা',
+'table_pager_prev' => 'পà§\82ৰà§\8dবৱৰ্তী পৃষ্ঠা',
 'table_pager_first' => 'প্ৰথম পৃষ্ঠা',
 'table_pager_last' => 'শেষ পৃষ্ঠা',
 'table_pager_limit' => 'প্ৰতি পৃষ্ঠাত $1 টা বিষয়বস্তু দেখুৱাওক',
@@ -3754,6 +3789,7 @@ $5
 'version-license' => 'অনুজ্ঞাপত্ৰ',
 'version-poweredby-credits' => "এই ৱিকি '''[https://www.mediawiki.org/ মিডিয়াৱিকিৰ]''' দ্বাৰা প্ৰচলিত , কপিৰাইট © ২০০১-$1 $2.",
 'version-poweredby-others' => 'অন্য',
+'version-poweredby-translators' => 'translatewiki.net অনুবাদকসকল',
 'version-credits-summary' => 'আমি নিম্নোক্ত ব্যক্তিসকলক তেওঁলোকে [[Special:Version|মিডিয়াৱিকি]]লৈ দিয়া দিয়া বৰঙনিৰ বাবে চিনাকী  কৰিব বিচাৰিছো।',
 'version-license-info' => "মিডিয়াৱিকি এটা বিনামূলীয়া চফ্টৱেৰ; আপুনি Free Software Foundation -ৰ দ্বাৰা প্ৰকাশিত GNU General Public License -ৰ চুক্তিসমূহৰ অন্তৰ্গত ইয়াক পুনৰ বিতৰণ কৰিব পাৰিব অথবা সলনি কৰিব পাৰিব; হয়তো অনুজ্ঞাপত্ৰৰ সংস্কৰণ ২ 
 অথবা (আপোনাৰ বিকল্পত) যিকোনো পৰৱৰ্তী সংস্কৰণ।
@@ -3770,13 +3806,14 @@ $5
 'version-entrypoints-header-url' => 'ইউআৰএল',
 
 # Special:Redirect
-'redirect' => 'ফাà¦\87ল, à¦¸à¦¦à¦¸à§\8dয, à¦¬à¦¾ à¦¸à¦\82শà§\8bধন à¦\86à¦\87 à¦¡à¦¿ৰে পুনঃনিৰ্দেশ',
-'redirect-legend' => 'à¦\8fà¦\9fা à¦«à¦¾à¦\87ল à¦¬à¦¾ à¦\8fà¦\96ন à¦\8fà¦\96ন à¦ªà§\83ষà§\8dঠালà§\88 à¦ªà§\81নà¦\83নিৰà§\8dদà§\87শ',
+'redirect' => 'ফাà¦\87ল, à¦¸à¦¦à¦¸à§\8dয, à¦ªà§\83ষà§\8dঠা à¦¬à¦¾ à¦¸à¦\82শà§\8bধন à¦\86à¦\87 à¦¡à¦¿-ৰে পুনঃনিৰ্দেশ',
+'redirect-legend' => 'এটা ফাইল বা পৃষ্ঠালৈ পুনঃনিৰ্দেশ',
 'redirect-summary' => 'এই বিশেষ পৃষ্ঠাটোৱে আপোনাক পুনঃনির্দেশিত কৰিছে অন্য এটা নথিপত্রলৈ (নথিপত্রৰ নাম), এটা পৃষ্ঠালৈ (পৃষ্ঠাৰ নাম), অথবা অন্য সদস্যৰ পৃষ্ঠালৈ(সংখ্যাৰে লিখা সদস্যৰ আইডি) ।',
 'redirect-submit' => 'যাওক',
 'redirect-lookup' => 'চাওক:',
 'redirect-value' => 'মূল্য:',
 'redirect-user' => 'সদস্য আই ডি',
+'redirect-page' => 'পৃষ্ঠা ID',
 'redirect-revision' => 'পৃষ্ঠা সংশোধন',
 'redirect-file' => 'ফাইলৰ নাম',
 'redirect-not-exists' => "মূল্য পোৱা নগ'ল",
@@ -3794,6 +3831,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'বিশেষ পৃষ্ঠাসমূহ',
+'specialpages-note-top' => 'ব্যাখ্যা',
 'specialpages-note' => '* সাধাৰণ বিশেষ পৃষ্ঠাসমূহ।
 * <span class="mw-specialpagerestricted">সীমাবদ্ধ বিশেষ পৃষ্ঠাসমূহ।</span>
 * <span class="mw-specialpagecached">কেশ্ব কৰা বিশেষ পৃষ্ঠাসমূহ (অপ্ৰচলিতও হ\'ব পাৰে)।</span>',
@@ -3812,7 +3850,7 @@ $5
 
 # Special:BlankPage
 'blankpage' => 'উকা পৃষ্ঠা',
-'intentionallyblankpage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦\87à¦\9aà§\8dà¦\9bাà¦\95à§\83তভাৱà§\87 à¦\96ালà§\80 ৰখা হৈছে ।',
+'intentionallyblankpage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦\87à¦\9aà§\8dà¦\9bাà¦\95à§\83তভাৱà§\87 à¦\96ালি ৰখা হৈছে ।',
 
 # External image whitelist
 'external_image_whitelist' => " #এই শাৰী যেনেকৈ আছে তেনেকৈয়ে ৰাখক<pre>
@@ -3829,7 +3867,7 @@ $5
 'tag-filter' => '[[Special:Tags|টেগ]] ছেকনী:',
 'tag-filter-submit' => 'সংশোধন',
 'tags-title' => 'টেগসমূহ',
-'tags-intro' => 'ছফ্টৱেৰে সম্পাদনা চিহ্নিত কৰিব পৰা টেগসমূহ আৰু সেইবোৰৰ অৰ্থ এই পৃষ্ঠাত তালিকাভুক্ত কৰা হৈছে ।',
+'tags-intro' => 'ছফ্টৱেৰে সম্পাদনা চিহ্নিত কৰিব পৰা টেগসমূহ আৰু সেইবোৰৰ অৰ্থ এই পৃষ্ঠাত তালিকাভুক্ত কৰা হৈছে।',
 'tags-tag' => 'টেগ নাম',
 'tags-display-header' => 'পৰিৱৰ্তন তালিকাসমূহত ৰূপ',
 'tags-description-header' => 'অৰ্থৰ পূৰ্ণ বৰ্ণনা',
@@ -3945,7 +3983,7 @@ $5
 'api-error-duplicate-archive-popup-title' => 'প্ৰতিলিপি {{PLURAL:$1|ফাইল|ফাইল}} যিসমূহ ইতিমধ্যে বিলোপ কৰা হৈছে।',
 'api-error-duplicate-popup-title' => 'প্ৰতিলিপি {{PLURAL:$1|ফাইল|ফাইলসমূহ}}।',
 'api-error-empty-file' => 'আপুনি দাখিল কৰা ফাইলটো খালী ।',
-'api-error-emptypage' => 'নতà§\81ন, à¦\96ালà§\80 পৃষ্ঠা সৃষ্টি কৰিবলৈ অনুমতি নাই।',
+'api-error-emptypage' => 'নতà§\81ন, à¦\96ালি পৃষ্ঠা সৃষ্টি কৰিবলৈ অনুমতি নাই।',
 'api-error-fetchfileerror' => 'আভ্যন্তৰীণ ত্ৰুটি: ফাইলটো অনাত কিবা সমস্যা হৈছে।',
 'api-error-fileexists-forbidden' => '"$1" নামৰ এখন নথি আগৰ পৰাই উপলদ্ধ আৰু ইয়াৰ পুনৰ লিখন অসম্ভৱ ।',
 'api-error-fileexists-shared-forbidden' => 'উমৈহতীয়া ফাইল ভঁৰালত "$1" নামৰ ফাইল এটা আছেই, ইয়াৰ ওপৰত লিখিব নোৱাৰি।',
index b82e5da..57d8b4e 100644 (file)
@@ -1663,6 +1663,7 @@ $1",
 'recentchanges-label-bot' => 'Гэтае рэдагаваньне зробленае робатам',
 'recentchanges-label-unpatrolled' => 'Гэтае рэдагаваньне яшчэ не было адпатруляванае',
 'recentchanges-label-plusminus' => 'Памер старонкі зьмяніўся на такую колькасьць байтаў',
+'recentchanges-legend-heading' => "'''Легенда:'''",
 'recentchanges-legend-newpage' => '(глядзіце таксама [[Special:NewPages|сьпіс новых старонак]])',
 'rcnotefrom' => "Ніжэй знаходзяцца зьмены з '''$2''' (да '''$1''' на старонку).",
 'rclistfrom' => 'Паказаць зьмены з $1',
index d2a284a..0ee479b 100644 (file)
@@ -14,6 +14,8 @@
  * @author Dimi z
  * @author Geitost
  * @author Kaganer
+ * @author MegaAlex
+ * @author Milicevic01
  * @author Simona
  * @author Spiritia
  * @author Stanqo
@@ -634,7 +636,7 @@ $2',
 'filereadonlyerror' => 'Файлът „$1“ не може да бъде променен, тъй като файловото хранилище „$2“ е в режим само за четене.
 
 Администраторът, който го е заключил, е посочил следната причина: „$3“.',
-'exception-nologin-text' => 'УикиÑ\82о Ð¸Ð·Ð¸Ñ\81ква Ð²Ð»Ð¸Ð·Ð°Ð½Ðµ Ð·Ð° Ñ\82ази Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¸Ð»Ð¸ Ð´ÐµÐ¹Ñ\81Ñ\82вие.',
+'exception-nologin-text' => 'Ð\97а Ð´Ð¾Ñ\81Ñ\8aп Ð´Ð¾ Ð¶ÐµÐ»Ð°Ð½Ð°Ñ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¸Ð»Ð¸ Ð´ÐµÐ¹Ñ\81Ñ\82вие Ñ\83икиÑ\82о Ð¸Ð·Ð¸Ñ\81ква [[Special:Userlogin|влизане Ð² Ñ\81иÑ\81Ñ\82емаÑ\82а]].',
 
 # Virus scanner
 'virus-badscanner' => "Лоша конфигурация: непознат скенер за вируси: ''$1''",
@@ -1163,8 +1165,8 @@ $2
 'revdelete-hide-user' => 'Потребителско име/IP адрес на редактора',
 'revdelete-hide-restricted' => 'Прилагане на тези ограничения и за администраторите',
 'revdelete-radio-same' => '(да не се променя)',
-'revdelete-radio-set' => 'Ð\94а',
-'revdelete-radio-unset' => 'Ð\9dе',
+'revdelete-radio-set' => 'СкÑ\80иÑ\82',
+'revdelete-radio-unset' => 'Ð\92идим',
 'revdelete-suppress' => 'Скриване на причината за изтриването и от администраторите',
 'revdelete-unsuppress' => 'Премахване на ограниченията за възстановените версии',
 'revdelete-log' => 'Причина:',
@@ -1575,16 +1577,18 @@ $1",
 Легенда: '''тек''' = разлика на текущата версия,
 '''ист''' = история на версиите",
 'recentchanges-feed-description' => 'Проследяване на последните промени в {{SITENAME}}.',
-'recentchanges-label-newpage' => 'С Ñ\82ази Ñ\80едакÑ\86иÑ\8f Ð±ÐµÑ\88е Ñ\81Ñ\8aздадена Ð½ова страница',
+'recentchanges-label-newpage' => 'Ð\9dова страница',
 'recentchanges-label-minor' => 'Това е малка промяна',
 'recentchanges-label-bot' => 'Тази редакция е извършена от робот',
 'recentchanges-label-unpatrolled' => 'Тази редакция все още не е проверена',
+'recentchanges-label-plusminus' => 'Размерът на страницата е променен с този брой байтове',
+'recentchanges-legend-heading' => "'''Легенда:'''",
 'recentchanges-legend-newpage' => '(вижте също [[Special:NewPages|списъка с нови страници]])',
 'rcnotefrom' => 'Дадени са промените от <strong>$2</strong> (до <strong>$1</strong> показани).',
 'rclistfrom' => 'Показване на промени, като се започва от $1.',
 'rcshowhideminor' => '$1 на малки промени',
 'rcshowhidebots' => '$1 на ботове',
-'rcshowhideliu' => '$1 на влезли потребители',
+'rcshowhideliu' => '$1 на регистрирани потребители',
 'rcshowhideanons' => '$1 на анонимни потребители',
 'rcshowhidepatr' => '$1 на проверени редакции',
 'rcshowhidemine' => '$1 на моите приноси',
@@ -3497,6 +3501,9 @@ $5
 'imgmultigo' => 'Отваряне',
 'imgmultigoto' => 'Отиване на страница $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(език по подразбиране)',
+
 # Table pager
 'ascending_abbrev' => 'възх',
 'descending_abbrev' => 'низх',
@@ -3607,9 +3614,9 @@ MediaWiki се разпространява с надеждата, че ще б
 
 # Special:SpecialPages
 'specialpages' => 'Специални страници',
+'specialpages-note-top' => 'Легенда',
 'specialpages-note' => '* Обикновени специални страници.
-* <strong class="mw-specialpagerestricted">Специални страници с ограничения.</strong>
-* <span class="mw-specialpagecached">Само складирани специални страници (възможно е да са остарели).</span>',
+* <strong class="mw-specialpagerestricted">Специални страници с ограничения.</strong>',
 'specialpages-group-maintenance' => 'Доклади по поддръжката',
 'specialpages-group-other' => 'Други специални страници',
 'specialpages-group-login' => 'Влизане / създаване на сметка',
index beca0da..4487567 100644 (file)
@@ -1276,6 +1276,7 @@ $1",
 'prefs-tokenwatchlist' => 'টোকেন',
 'prefs-diffs' => 'পার্থক্য',
 'prefs-help-prefershttps' => 'পরবর্তী লগইনের পর থেকে এই পরিবর্তনগুলো কার্যকর হবে।',
+'prefs-tabs-navigation-hint' => 'সাহায্য: আপনি ডান এবং বাম অ্যারো বাটন ব্যবহার করে বিভিন্ন ট্যাবগুলোতে যেতে পারবেন।',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'ইমেইল ঠিকানাটি সঠিক',
@@ -1462,13 +1463,14 @@ $1",
 'recentchanges-label-bot' => 'এটি বট দ্বারা সম্পাদিত',
 'recentchanges-label-unpatrolled' => 'এই সম্পাদনাটি এখনও পরীক্ষিত নয়',
 'recentchanges-label-plusminus' => 'পাতার আকারে এই পরিমান বাইট পরিবর্তিত হয়েছে',
+'recentchanges-legend-heading' => "'''ব্যাখ্যামূলক বর্ণনা:'''",
 'recentchanges-legend-newpage' => '(আরও দেখুন [[Special:NewPages|নতুন পাতার তালিকা]])',
 'recentchanges-legend-plusminus' => "(''±১২৩'')",
 'rcnotefrom' => "'''$2'''-এর পরে সংঘটিত পরিবর্তনগুলো নিচে দেখানো হল ('''$1'''টি)।",
 'rclistfrom' => '$1-এর পর সংঘটিত নতুন পরিবর্তনগুলো দেখাও।',
 'rcshowhideminor' => 'অনুল্লেখ্য পরিবর্তনগুলো $1',
 'rcshowhidebots' => 'বটগুলো $1',
-'rcshowhideliu' => 'পà§\8dরবà§\87শ à¦\95রà§\87à¦\9bà§\87ন à¦\8fমন ব্যবহারকারীদের $1',
+'rcshowhideliu' => 'নিবনà§\8dধিত ব্যবহারকারীদের $1',
 'rcshowhideanons' => 'বেনামী ব্যবহারকারীদের $1',
 'rcshowhidepatr' => 'পরীক্ষিত সম্পাদনা $1',
 'rcshowhidemine' => 'আমার সম্পাদনাগুলো $1',
@@ -2841,6 +2843,7 @@ $2',
 'tooltip-undo' => '"বাতিল" এই সম্পাদনাকে পূর্ববস্থায় ফিরত নিবে এবং প্রাকদর্শন সহ সম্পাদনা ফরমটি খুলবে। এটি সম্পাদনা সারাংশতে এর কারণ যোগ করার সুযোগ দিবে।',
 'tooltip-preferences-save' => 'পছন্দ সংরক্ষণ',
 'tooltip-summary' => 'একটি সংক্ষিপ্ত সারাংশ দিন',
+'interlanguage-link-title' => '$1 - $2',
 
 # Metadata
 'notacceptable' => 'আপনার ক্লায়েন্ট পড়তে পারে এমন ফরম্যাটে উইকি সার্ভার উপাত্ত সরবরাহ করতে পারছে না।',
@@ -3525,6 +3528,7 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(ডিফল্ট ভাষা)',
+'img-lang-info' => '$1 এ ছবিটি রেন্ডার করো। $2',
 'img-lang-go' => 'যাও',
 
 # Table pager
@@ -3920,10 +3924,12 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'expand_templates_input' => 'ইনপুটকৃত লেখা:',
 'expand_templates_output' => 'ফলাফল',
 'expand_templates_xml_output' => 'XML আউটপুট',
+'expand_templates_html_output' => 'এইচটিএমএল আউটপুট',
 'expand_templates_ok' => 'ঠিক আছে',
 'expand_templates_remove_comments' => 'মন্তব্য মুছে ফেলো',
 'expand_templates_remove_nowiki' => 'ফলাফলে <nowiki> ট্যাগগুলো বাতিল করো',
 'expand_templates_generate_xml' => 'XML পার্স বৃক্ষ দেখাও',
+'expand_templates_generate_rawhtml' => 'এইচটিএমএল দেখাও',
 'expand_templates_preview' => 'প্রাকদর্শন',
 
 );
index 012ab8a..38f55e7 100644 (file)
@@ -1407,6 +1407,7 @@ Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
 'prefs-tokenwatchlist' => 'Testimoni',
 'prefs-diffs' => 'Difs',
 'prefs-help-prefershttps' => 'Aquesta preferència tindrà efecte quan inicieu una nova sessió.',
+'prefs-tabs-navigation-hint' => 'Consell: Podeu utilitzar les tecles de cursor de dreta i esquerra per a navegar entre les pestanyes.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => "L'adreça de correu electrònic sembla vàlida",
@@ -1593,13 +1594,14 @@ Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
 'recentchanges-label-bot' => 'Aquesta modificació fou feta per un bot',
 'recentchanges-label-unpatrolled' => "Aquesta modificació encara no s'ha patrullat",
 'recentchanges-label-plusminus' => 'La mida de la pàgina ha canviat aquest nombre de bytes',
+'recentchanges-legend-heading' => "'''Llegenda:'''",
 'recentchanges-legend-newpage' => '(vegeu també la [[Special:NewPages|llista de pàgines noves]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'A sota hi ha els canvis des de <b>$2</b> (es mostren fins <b>$1</b>).',
 'rclistfrom' => 'Mostra els canvis nous des de $1',
 'rcshowhideminor' => '$1 edicions menors',
 'rcshowhidebots' => '$1 bots',
-'rcshowhideliu' => '$1 usuaris identificats',
+'rcshowhideliu' => '$1 usuaris registrats',
 'rcshowhideanons' => '$1 usuaris anònims',
 'rcshowhidepatr' => '$1 edicions supervisades',
 'rcshowhidemine' => '$1 edicions pròpies',
@@ -2034,6 +2036,7 @@ Les entrades <del>ratllades</del> s\'han resolt.',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|enllaç|enllaços}}',
 'nmembers' => '$1 {{PLURAL:$1|membre|membres}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|membre|membres}}',
 'nrevisions' => '$1 {{PLURAL:$1|revisió|revisions}}',
 'nviews' => '$1 {{PLURAL:$1|visita|visites}}',
 'nimagelinks' => "S'utilitza en {{PLURAL:$1|una pàgina|$1 pàgines}}",
@@ -3676,7 +3679,7 @@ Confirmeu que realment voleu tornar-la a crear.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(llengua per defecte)',
-'img-lang-info' => 'Dibuixa aquesta imatge en $1 $2.',
+'img-lang-info' => 'Dibuixa aquesta imatge en $1. $2',
 'img-lang-go' => 'Vés-hi',
 
 # Table pager
@@ -3776,13 +3779,14 @@ Amb aquest programa heu d'haver rebut [{{SERVER}}{{SCRIPTPATH}}/COPYING una còp
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Redirigeix per fitxer, usuari o ID de la revisió',
+'redirect' => 'Redirigeix per fitxer, usuari, pàgina o ID de la revisió',
 'redirect-legend' => 'Redirigeix a un fitxer o a una pàgina',
-'redirect-summary' => "Aquesta pàgina especial redirigeix a un fitxer (donat el nom del fitxer), una pàgina (donada un ID de la revisió), o a una pàgina d'usuari (donat un ID numèric d'usuari). Ús: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
+'redirect-summary' => "Aquesta pàgina especial redirigeix a un fitxer (donat el nom del fitxer), una pàgina (donats un ID de la revisió o un ID de pàgina), o a una pàgina d'usuari (donat un ID numèric d'usuari). Ús: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
 'redirect-submit' => 'Vés-hi',
 'redirect-lookup' => 'Consulta:',
 'redirect-value' => 'Valor:',
 'redirect-user' => "ID d'usuari",
+'redirect-page' => 'ID de pàgina',
 'redirect-revision' => 'Revisió de la pàgina',
 'redirect-file' => 'Nom del fitxer',
 'redirect-not-exists' => "No s'ha trobat el valor",
@@ -4022,10 +4026,12 @@ També expandeix les funcions sintàctiques, com ara <code><nowiki>{{</nowiki>#l
 'expand_templates_input' => 'El vostre text:',
 'expand_templates_output' => 'Resultat:',
 'expand_templates_xml_output' => 'Sortida XML',
+'expand_templates_html_output' => 'Sortida en HTML sense filtrar',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Elimina els comentaris',
 'expand_templates_remove_nowiki' => "Suprimeix l'etiqueta <nowiki> en el resultat",
 'expand_templates_generate_xml' => "Mostra l'arbre XML",
+'expand_templates_generate_rawhtml' => "Mostra l'HTML sense filtrar",
 'expand_templates_preview' => 'Previsualitza',
 
 );
index 46971ae..9d62670 100644 (file)
@@ -446,7 +446,7 @@ $messages = array(
 'category-empty' => "''ХӀара категори хӀинца йаьсса ю.''",
 'hidden-categories' => '{{PLURAL:$1|Къайлаха категори|Къайлаха йолу категореш}}',
 'hidden-category-category' => 'Къайлаха йолу категореш',
-'category-subcat-count' => '{{PLURAL:$2|ХӀокх категори чохь ю хӀокхуьна бухар категори.|{{PLURAL:$1|Гойташ $1 бухар категори|Гойту $1 бухар категореш|Гойту $1 бухар категори}} оцу $2.}}',
+'category-subcat-count' => '{{PLURAL:$2|ХӀокху категори чохь ю хӀокхуьна бухар категори.|ХӀокху категори чохь ю $1 {{PLURAL:$1|бухара категори|бухара категореш}} $2 массо нах.}}',
 'category-subcat-count-limited' => 'Хlокх категори чохь {{PLURAL:$1|$1 бухар категори|$1 бухар категореша|$1 бухар категореш}}.',
 'category-article-count' => '{{PLURAL:$2|ХӀокх категори чохь яц цхьа агӀо бе.|{{PLURAL:$1|Гойташ $1 агӀо|Гойту $1 агӀонаш|Гойту $1 агӀонаш}} хӀокх категорешца кху $2.}}',
 'category-article-count-limited' => 'ХӀокх категори чохь {{PLURAL:$1|$1 агӀо|$1 агӀонаш}}.',
@@ -480,7 +480,7 @@ $messages = array(
 'faqpage' => 'Project:СиХХ',
 
 # Vector skin
-'vector-action-addsection' => 'Тlетоха хьедар',
+'vector-action-addsection' => 'ТӀетоха хьедар',
 'vector-action-delete' => 'ДӀаяккха',
 'vector-action-move' => 'Цlе хийца',
 'vector-action-protect' => 'Гlаролла дé',
@@ -681,7 +681,7 @@ $1',
 'formerror' => 'ГӀалат: йиш яц хӀара формаш дӀакхачо',
 'badarticleerror' => 'И хӀума кхочушъ дан йиш яц хӀокху агӀонехь.',
 'cannotdelete' => 'Цатарло дӀаяккха я цӀе хийца «$1».
-АгӀо хьалхо дӀаяккхина хила тарло',
+АгӀо хьалхо дӀаяьккхина хила тарло',
 'cannotdelete-title' => 'Цатарло агӀо дӀаяккха «$1»',
 'delete-hook-aborted' => 'Нисдар юхадаьккхина тӀехьожучо.
 ХӀу бахьна ду билгал дина дац.',
@@ -732,7 +732,7 @@ $1',
 'yourpasswordagain' => 'Юха язъе пароль:',
 'createacct-yourpasswordagain' => 'Бакъе пароль',
 'createacct-yourpasswordagain-ph' => 'Кхин цкъа язъе пароль',
-'remembermypassword' => 'Даглаца сан дӀавазвалар/ялар хӀокху гӀулкхдечу гӀирса тӀяхь (цхьан $1 {{PLURAL:$1|ден|динахь|динахь}})',
+'remembermypassword' => 'Даглаца сан дӀаяздар хӀокху компьютеран тӀехь (цхьан $1 {{PLURAL:$1|динахь}})',
 'userlogin-remembermypassword' => 'Дагахь латт ве/е со',
 'userlogin-signwithsecure' => 'Ларийна цхьаьнакхетар',
 'yourdomainname' => 'Хьан машан меттиг:',
@@ -753,7 +753,7 @@ $1',
 'gotaccount' => "ДӀаяздар кхоьллин ахь? '''$1'''.",
 'gotaccountlink' => 'Довзийта',
 'userlogin-resetlink' => 'Чуволу/йолу хаам биц бела?',
-'userlogin-resetpassword-link' => 'Пароль кхоссар',
+'userlogin-resetpassword-link' => 'Пароль кхоссар?',
 'helplogin-url' => 'Help:Системин довзийтар',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Системин чудаха гӀодар]]',
 'userlogin-loggedin' => 'Хьо {{GENDER:$1|$1}} цӀарца чохь ву/ю.
@@ -796,18 +796,31 @@ $1',
 'login-userblocked' => 'ХӀара декъашхо блоктоьхна ву/ю. Системин чувала/яла магийна дац.',
 'wrongpassword' => 'Ахьа язйина йолу пароль нийса яц. Хьажа юху цхьаъз.',
 'wrongpasswordempty' => 'Дехар до, язъе еса йоцу пароль.',
-'mailmypassword' => 'Яийта керла пароль электронан почтехула',
+'passwordtooshort' => 'Пароль хилла еза $1 {{PLURAL:$1|символ|символаш}} йолуш.',
+'password-name-match' => 'Язъен пароль декъашхочун дӀаяздарал башха хила еза.',
+'password-login-forbidden' => 'Иштта декъашхочун цӀе а пароль а лелаян цамаго.',
+'mailmypassword' => 'Пароль кхоссар',
 'passwordremindertitle' => 'Декъашхочун {{grammar:genitive|{{SITENAME}}}}  пароль дагайаийтар',
 'noemail' => 'ЦӀе $1 йолу декъашхочун электронни адрес яздина дац.',
 'noemailcreate' => 'Ахьа нийса электронни почтан адрес дӀаяздан деза',
 'passwordsent' => 'Керла пароль декъашхочун $1 электронни адрес тӀе дӀахьажина. Дехар до, керла пароль еъча юху системин чугӀо.',
 'blocked-mailpassword' => 'Хьан IP-адрес ца тадарш дан магийна дац, цуьндела пароль меттахӀотош йолу функци блоктоьхна ю.',
+'eauthentsent' => 'ДӀаяздинчу электронан адрес тӀе хаам баийтина.
+Даиман хаамаш баийта хааман чохь де бохург дан деза адрес хьай хилар бакъдеш.',
 'throttled-mailpassword' => 'Пароль дага йоуьйту функци {{PLURAL:$1|тӀехьара $1 сахьтехь}} лелина.
 Зулам цахилийта $1 {{PLURAL:$1|сахьтан чохь}} цӀа бен функци лело йиш яц.',
 'mailerror' => 'Кехат дохьуьйтуш гӀалат ду: $1',
-'emailauthenticated' => 'Хьан почтан адрес бакъдина $2 $3.',
+'emailauthenticated' => 'Хьан электронан почтан адрес бакъдина $2 $3.',
+'emailnotauthenticated' => 'Хьан электронан почтан адрес хӀинца а бакъдина дац.
+Хаамаш кхоьхьуьйтура бац.',
+'emailconfirmlink' => 'Бакъде хьай электронан почтан адрес',
+'emaildisabled' => 'ХӀокху сайтан таро яц электронан почте хаамаш бахьийта.',
 'accountcreated' => 'Декъашхочун дӀаяздар кхоьллина',
 'accountcreatedtext' => 'Кхоьллина декъашхочун [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|дийцаре.]]) дӀаяздар.',
+'createaccount-title' => '{{SITENAME}}: декъашхочун дӀаяздар кхоллар',
+'usernamehasherror' => 'Декъашхочун цӀеран юкъахь хийла ца еза «цаца»',
+'login-throttled' => 'Хьо дукха гӀиртира.
+Дехар до, собар де $1 юха гӀортале.',
 'loginlanguagelabel' => 'Мотт: $1',
 
 # Change password dialog
@@ -913,7 +926,7 @@ $1',
 йа <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} лаха оцуьнах терадерг кхечу тептаршкахь].</span>',
 'missing-revision' => 'АгӀона «{{PAGENAME}}» верси $1 яц.
 
-Ишта хуьйла ширелла дӀайаьккхина агӀонан хьажориган дихьа делча.
+Ишта хуьйла ширелла дӀаяьккхина агӀонан хьажораган дихьа делча.
 Ма-дара хила мега [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дӀайаьхарш йолу тептар] чохь.',
 'userpage-userdoesnotexist' => 'Ишта дlайазвар «<nowiki>$1</nowiki>» хlинца дац. Хьажа билгал, хьуна бакъалла лаьи кхолла йа хийцам ба хlокху агlон.',
 'usercsspreview' => "'''Дагахь латтаде хӀара хьа CSS-файле хьалха хьажар хилар, иза хӀинца а Ӏалаш йина яц!'''",
@@ -966,11 +979,11 @@ $1',
 'permissionserrors' => 'ТӀекхачаре бакъона гӀалат',
 'permissionserrorstext' => 'Хьан бакъо яц кхочуш хилийта хийцам оцу {{PLURAL:$1|шолгlа бахьанца|шолгlа бахьанашца}}:',
 'permissionserrorstext-withaction' => "Хьан бакъо яц хlумда «'''$2'''» оцу {{PLURAL:$1|шолгlа бахьанца|шолгlа бахьанашца}}:",
-'recreate-moveddeleted-warn' => "'''Тидам бе. Ахьа кхуллуш ю, хьалхо дӀаяккхина йолу агӀо.'''
+'recreate-moveddeleted-warn' => "'''Тидам бе. Ахьа кхуллуш ю, хьалхо дӀаяьккхина йолу агӀо.'''
 
 Хьажа, билгалла оьши хьуна хӀара агӀо юха кхолла.
 Лахахь далина ду дӀаяхарш тӀяхь долу тептарш а хӀокх агӀона цӀе хийцарш а.",
-'moveddeleted-notice' => 'Иза агӀо дӀаяккхина яра.
+'moveddeleted-notice' => 'Иза агӀо дӀаяьккхина яра.
 Хаийтарна лахахьа гойту, цуьнца долу дӀаяздарш кху тептар чура дӀаяхарш а цӀе хийцарш а.',
 'log-fulllog' => 'Хьажа деригге тептаре',
 'postedit-confirmation' => 'Хьан нисдар дӏайазъдина.',
@@ -1400,6 +1413,9 @@ $1',
 'reuploaddesc' => 'Юху гӀо файл чуйоккху агӀоне',
 'upload-tryagain' => 'ДӀадахьийта хийцина файлах лаьцнарг',
 'uploadnologintext' => 'Серверан чу файлаш яха хьо $1.',
+'upload-recreate-warning' => "'''Тегам бе: иштта цӀе йолу файл дӀаяьккхина я цӀе хийцина.'''
+
+Лахахьа гойтуш ю хӀокху агӀона тептар:",
 'upload-permitted' => 'Магийна файлийн тайпанаш: $1.',
 'uploadlogpage' => 'Чуяхаран тéптар',
 'uploadlogpagetext' => 'Лахахьа гойтуш бу могlам тlаьххьара чуяхна файлаши. Ишта хьажа. [[Special:ImageList|файлаши могlам]] йа [[Special:NewImages|галеларе файлаши]].',
@@ -1491,6 +1507,8 @@ PICT # тайп тайпан
 'sharedupload' => 'Хlара хlума оцун $1 чура ю иза хила мега лелош кхечу кхолламашкахь.',
 'sharedupload-desc-here' => 'ХӀара файл $1 чура ю и лело йиш ю массо проекташкахь.
 Цунна хаам гайтина лахахь. [$2 Файл Викигуламехь]',
+'filepage-nofile' => 'Иштта цӀе йолуш файл яц.',
+'filepage-nofile-link' => 'Ишта цӀе йолуш файл яц. Хьа йиш ю и [$1 чуяккха].',
 'uploadnewversion-linktext' => 'Чуяккха керла верси хӀокху файлан',
 'shared-repo-name-wikimediacommons' => 'Викидlайуллуче',
 
@@ -1533,6 +1551,7 @@ PICT # тайп тайпан
 'unusedtemplates' => 'Лелош доцу кепаш',
 'unusedtemplatestext' => 'Кхузахь дагар йина «{{ns:template}}» цӀерийн меттиган агӀонаш, кхечу агӀонийн юкъа тоьхна йоцу.
 Диц ма делахь хьажа кеп агӀонашкахь лелош юй.',
+'unusedtemplateswlh' => 'кхин хьажорагаш',
 
 # Random page
 'randompage' => 'Цахууш нисйелла агӀо',
@@ -1632,6 +1651,7 @@ PICT # тайп тайпан
 'movethispage' => 'Хlокху агlон цlе хийца',
 'unusedimagestext' => 'Дехар до, тидаме эца, кхин йолу дуьнана машан-меттигаш а лелош хила мега нийсса йогӀу хьажораг (URL) хӀокху хӀуман, хӀокху могӀаме йогӀуш ялахь яцахь а иза хила мега жигара лелош.',
 'notargettitle' => 'Ӏалашо билгал йина яц',
+'notargettext' => 'И кхочушдан ахьа билгал йина яц Ӏалашонан агӀо я декъашхо.',
 'nopagetitle' => 'Ишта агӀо яц',
 'nopagetext' => 'Ишта агӀо яц.',
 'pager-newer-n' => '{{PLURAL:$1|алсамо керла|алсамо керланаш|алсамо керлачарех}} $1',
@@ -1650,13 +1670,14 @@ PICT # тайп тайпан
 'alllogstext' => 'Массо тéптар могӀам. {{SITENAME}}.
 Шуьга харжалур бу хилам оцу тептаре хьаьжжина, декъашхочун цӀе (дӀаяздар диц а цадеш) я цо хьейина агӀонаш (ишта дӀаяздар а диц цадеш).',
 'logempty' => 'Тептарш чохь хӀокху агӀона дӀаяздарш дац.',
+'log-title-wildcard' => 'ХӀокху символашца болалуш болу кортанаш карабе',
 
 # Special:AllPages
 'allpages' => 'Массо агӀонаш',
 'alphaindexline' => 'оцу $1 кху $2',
 'nextpage' => 'Тlаьхьа йогlу агlо ($1)',
 'prevpage' => 'Хьалхалера агlо ($1)',
-'allpagesfrom' => 'Гучé яха агlонаш, йуьлалуш йолу оцу:',
+'allpagesfrom' => 'Гучé яха агӀонаш, йолалуш йолу оцу:',
 'allpagesto' => 'Арайахар сацадé оцу:',
 'allarticles' => 'Массо агӀонаш',
 'allinnamespace' => 'Массо агlонаш оцу цlери анахь «$1»',
@@ -1766,7 +1787,7 @@ PICT # тайп тайпан
 'confirmdeletetext' => "Хьо гӀерта агӀо я файл дӀаяккха '''дехар до''', дӀаяккхале хьалха хьажа [[{{MediaWiki:Policy-url}}|кхуза]].",
 'actioncomplete' => 'Дешдерг кхочушди',
 'actionfailed' => 'Кхочушъ дина дац',
-'deletedtext' => '«$1» дӀаяккхина яра.
+'deletedtext' => '«$1» дӀаяьккхина яра.
 Хьажа. $2 хьажарна оцу тӀаьхьара дӀаяхначара могӀаме.',
 'dellogpage' => 'ДӀадаьхнарш долу тéптар',
 'dellogpagetext' => 'Лахахь гойтуш ду дӀадахаршан тептар.',
@@ -1846,7 +1867,7 @@ PICT # тайп тайпан
 'restriction-level-all' => 'массо барам',
 
 # Undelete
-'undelete' => 'ДIайайина йолу агIонашка хьажар',
+'undelete' => 'ДӀаяхна агӀонашка хьажар',
 'undeletepage' => 'ДӀаяхина агӀонашка хьажар а меттахӀоттор а',
 'undeletepagetitle' => "'''Лахахь гайтина хӀокху [[:$1]] агӀона дӀаяхина версеш'''.",
 'viewdeletedpage' => 'ДӀаяхна йолу агӀонашка хьажар',
@@ -1871,6 +1892,7 @@ PICT # тайп тайпан
 'undelete-header' => 'Дукху хан йоцуш дӀаяхна агӀонаш хьажа мега [[Special:Log/delete|дӀадаьхьнарш долу тептар чохь]].',
 'undelete-search-title' => 'ДӀаяхна агӀонаш лахар',
 'undelete-search-box' => 'ДӀаяхна агӀонаш лахар',
+'undelete-search-prefix' => 'Гайта агӀонаш йолалуш йолу тӀера:',
 'undelete-search-submit' => 'Лаха',
 'undelete-show-file-submit' => 'Хlаъ',
 
@@ -1887,6 +1909,7 @@ PICT # тайп тайпан
 'contributions-title' => '{{GENDER:$1|Декъашхочун}} къинхьегам $1',
 'mycontris' => 'Сан къинхьегам',
 'contribsub2' => 'Къинхьегам $1 ($2)',
+'nocontribs' => 'Дехарца хийцамаш цакарий.',
 'uctop' => ' (тlаьхьара)',
 'month' => 'Баттаца (я хьалхе):',
 'year' => 'Шерачохь (я хьалхе):',
@@ -2068,7 +2091,7 @@ PICT # тайп тайпан
 И цӀе йолу аг1о «[[:$1]]» йолуш ю. 
 Лаьий хьуна и дӀаяккха, цӀе хийца таро хилийта?',
 'delete_and_move_confirm' => 'Хlаъ, дӀаяккха хlара агlо',
-'delete_and_move_reason' => 'ДӀаяккхина цӀе хийца я таро хилийта  «[[$1]]»',
+'delete_and_move_reason' => 'ДӀаяьккхина цӀе хийца я таро хилийта  «[[$1]]»',
 'selfmove' => 'АгӀона цӏе хийца йиш яц: и цӏе хӏокху агӏона йолуш ю.',
 'immobile-source-page' => 'ХӀокху агӏона цӏе хийца йиш яц.',
 'bad-target-model' => 'Йиш яц хийца $1 оцу $2: цхьаьна ца догӀу моделин хаамаш.',
@@ -2088,6 +2111,8 @@ PICT # тайп тайпан
 'exportcuronly' => 'Карара верси бен юкъа ма тоха, юзийна хьалхалерра истори йоцуш',
 'export-submit' => 'Экспорт ян',
 'export-addcattext' => 'ТӀетоха агӀонаш категори чура:',
+'export-addcat' => 'ТӀетоха',
+'export-addns' => 'ТӀетоха',
 'export-download' => 'Кховда де файл сана Ӏалашдан',
 'export-templates' => 'Латадé кепаш',
 
@@ -2364,10 +2389,10 @@ PICT # тайп тайпан
 'monthsall' => 'массо',
 
 # Delete conflict
-'confirmrecreate' => "Декъашхочо [[User:$1|$1]] ([[User talk:$1|дийцаре]]) хӀара агӀо дӀаяккхина, ахьа иза тая йолийча, дӀаяккхарна бахьна:
+'confirmrecreate' => "Декъашхочо [[User:$1|$1]] ([[User talk:$1|дийцаре]]) хӀара агӀо дӀаяьккхина, ахьа иза тая йолийча, дӀаяккхарна бахьна:
 : ''$2''
 Дехар до, тешал де, хьо иза агӀо меттахӀотто лууш ву/ю але.",
-'confirmrecreate-noreason' => 'Декъашхочо [[User:$1|$1]] ([[User talk:$1|дийцаре]]) хӀара агӀо дӀаяккхина, ахьа иза тая йолийча. Дехар до, тешал де, хьо иза агӀо меттахӀотто лууш ву/ю але.',
+'confirmrecreate-noreason' => 'Декъашхочо [[User:$1|$1]] ([[User talk:$1|дийцаре]]) хӀара агӀо дӀаяьккхина, ахьа иза тая йолийча. Дехар до, тешал де, хьо иза агӀо меттахӀотто лууш ву/ю але.',
 
 # action=watch/unwatch
 'confirm-watch-top' => 'ТӀетоха хӀара агӀо хьан тергаме могӀам юкъа?',
index a9775ba..573e705 100644 (file)
@@ -1506,6 +1506,7 @@ $1",
 'recentchanges-label-bot' => 'ئەم دەستکارییە لە لایەن بۆتەوە کراوە',
 'recentchanges-label-unpatrolled' => 'ئەم دەستکارییە ھێشتا پاس نەدراوە',
 'recentchanges-label-plusminus' => 'قەبارەی پەڕە ئەوەندە بایت گۆڕاوە',
+'recentchanges-legend-heading' => "'''کورتکراوەکان:'''",
 'recentchanges-legend-newpage' => '(ھەروەھا بڕوانە [[Special:NewPages|پێرستی پەڕە نوێکان]])',
 'recentchanges-legend-plusminus' => "(''±۱٢٣'')",
 'rcnotefrom' => "ئەوی‌ خوارەوە گۆڕانکارییەکانە لە '''$2'''ەوە (ھەتا '''$1''' نیشاندراو).",
index bdcff04..a487481 100644 (file)
@@ -1227,6 +1227,9 @@ Tyto argumenty byly vynechány.',
 'cantcreateaccounttitle' => 'Nelze vytvořit uživatelský účet',
 'cantcreateaccount-text' => "Zakládání nových účtů z této IP adresy ('''$1''') bylo zablokováno uživatelem [[User:$3|$3]].
 
+$3 uvádí toto zdůvodnění: ''$2''",
+'cantcreateaccount-range-text' => "Zakládání nových účtů z IP adres v rozsahu '''$1''', který obsahuje i vaši IP adresu ('''$4'''), bylo zablokováno {{GENDER:$3|uživatelem|uživatelkou}} [[User:$3|$3]].
+
 $3 uvádí toto zdůvodnění: ''$2''",
 
 # History pages
@@ -1757,6 +1760,7 @@ Vaše adresa v takovém případě není prozrazena.',
 'recentchanges-label-bot' => 'Tuto editaci provedl bot',
 'recentchanges-label-unpatrolled' => 'Tato změna dosud nebyla prověřena',
 'recentchanges-label-plusminus' => 'Velikost stránky se změnila o tolik bajtů',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(vizte též [[Special:NewPages|seznam nových stránek]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'Níže {{PLURAL:$1|je|jsou|je}} nejvýše <b>$1</b> {{PLURAL:$1|změna|změny|změn}} od <b>$2</b>.',
@@ -4009,13 +4013,14 @@ MediaWiki je distribuována v naději, že bude užitečná, avšak BEZ JAKÉKOL
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Cesta ke skriptům]',
 
 # Special:Redirect
-'redirect' => 'Přesměrování podle souboru, uživatele nebo ID revize',
+'redirect' => 'Přesměrování podle souboru, uživatele, stránky nebo ID revize',
 'redirect-legend' => 'Přesměrování na soubor či stránku',
-'redirect-summary' => 'Tato speciální stránka přesměrovává na soubor (podle názvu), stránku (podle ID revize) nebo uživatele (podle číselného uživatelského ID). Použití: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] nebo [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Tato speciální stránka přesměrovává na soubor (podle názvu), stránku (podle ID stránky nebo revize) nebo uživatele (podle číselného uživatelského ID). Použití: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] nebo [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Přejít',
 'redirect-lookup' => 'Najít:',
 'redirect-value' => 'Hodnota:',
 'redirect-user' => 'Uživatelské ID',
+'redirect-page' => 'ID stránky',
 'redirect-revision' => 'Revizi stránky',
 'redirect-file' => 'Jméno souboru',
 'redirect-not-exists' => 'Hodnota nenalezena',
@@ -4258,10 +4263,12 @@ V podstatě rozbalí prakticky všechno v dvojitých složených závorkách.',
 'expand_templates_input' => 'Vstupní text:',
 'expand_templates_output' => 'Výstup',
 'expand_templates_xml_output' => 'Výstup XML',
+'expand_templates_html_output' => 'Surové výsledné HTML',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Odstranit komentáře',
 'expand_templates_remove_nowiki' => 'Potlačit ve výsledku značky <nowiki>',
 'expand_templates_generate_xml' => 'Zobrazit syntaktický strom v XML',
+'expand_templates_generate_rawhtml' => 'Zobrazit surové HTML',
 'expand_templates_preview' => 'Náhled',
 
 );
index 3256569..e86553c 100644 (file)
@@ -546,7 +546,7 @@ $messages = array(
 'recentchanges-summary' => 'с҄ьдє послѣдьнѩ мѣнꙑ сѥѩ викиопꙑтьствованиꙗ видѣти можєши',
 'recentchanges-label-newpage' => 'по сѥи мѣнꙑ нова страница сътворѥна ѥстъ',
 'recentchanges-label-minor' => 'малаꙗ мѣна',
-'recentchanges-label-bot' => 'сѭ мѣноу аѵтоматъ сътворихъ',
+'recentchanges-label-bot' => 'сѭ мѣноу аѵтоматъ сътворилъ',
 'rcshowhideminor' => '$1 малꙑ мѣнꙑ',
 'rcshowhidebots' => '$1 аѵтоматъ',
 'rcshowhideliu' => '$1 польꙃєватєлъ · ѩжє съꙁижьдє сѥ мѣсто · мѣнꙑ',
index d9dbc22..03b8ff8 100644 (file)
@@ -1058,6 +1058,9 @@ Kontroller venligst sammenligningen herunder for at bekræfte at det er hvad du
 # Account creation failure
 'cantcreateaccounttitle' => 'Brugerkontoen kan ikke oprettes.',
 'cantcreateaccount-text' => "Oprettelsen af en brugerkonto fra IP-adressen <b>$1</b> er spærret af [[User:$3|$3]]. Årsagen til blokeringen er angivet som ''$2''",
+'cantcreateaccount-range-text' => "Oprettelsen af en brugerkonto fra IP-adresser i intervallet '''$1''', som omfatter din IP-adresse ('''$4'''), er blevet blokeret af [[User:$3|$3]].
+
+Årsagen angivet af $3 er ''$2''",
 
 # History pages
 'viewpagelogs' => 'Vis loglister for denne side',
@@ -1588,6 +1591,7 @@ Vær venlig at gennemse og bekræft dine ændringer.',
 'recentchanges-label-bot' => 'Denne redigering blev udført af en bot',
 'recentchanges-label-unpatrolled' => 'Denne redigering er endnu ikke blevet patruljeret',
 'recentchanges-label-plusminus' => 'Størrelsen på siden blev ændret med dette antal bytes',
+'recentchanges-legend-heading' => "'''Forklaring:'''",
 'recentchanges-legend-newpage' => '(se også [[Special:NewPages|listen over nye sider]])',
 'recentchanges-legend-plusminus' => '("±123")',
 'rcnotefrom' => "Nedenfor er op til '''$1''' ændringer siden '''$2''' vist.",
@@ -3669,7 +3673,7 @@ Bekræft venligst, at du virkelig vil oprette denne side igen.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(standardsprog)',
-'img-lang-info' => 'Gengiv dette billede på $1 $2.',
+'img-lang-info' => 'Gengiv dette billede på $1. $2',
 'img-lang-go' => 'Udfør',
 
 # Table pager
@@ -3768,13 +3772,14 @@ Du skulle have modtaget [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi af GNU General
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Omdirigering pga. fil, bruger eller udgave ID',
+'redirect' => 'Omdirigering pga. fil, bruger-, side- eller udgave-ID',
 'redirect-legend' => 'Omstilling til en fil eller en side',
-'redirect-summary' => "Denne specialside omdirigerer til en fil (hvis filnavnet er angivet), en side (hvis udgave ID'et er angivet) eller en brugerside (hvis et numerisk brugernummer er angivet). Eksempler på brug: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] eller [[{{#Special:Redirect}}/user/101]].",
-'redirect-submit' => 'Kør',
+'redirect-summary' => "Denne specialside omdirigerer til en fil (hvis filnavnet er angivet), en side (hvis udgave ID'et eller side ID'et er angivet) eller en brugerside (hvis et numerisk brugernummer er angivet). Eksempler på brug: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]],[[{{#Special:Redirect}}/revision/328429]] eller [[{{#Special:Redirect}}/user/101]].",
+'redirect-submit' => 'Vis',
 'redirect-lookup' => 'Slå op:',
 'redirect-value' => 'Værdi:',
 'redirect-user' => 'Bruger ID',
+'redirect-page' => 'Side-ID',
 'redirect-revision' => 'Sideversion',
 'redirect-file' => 'Filnavn',
 'redirect-not-exists' => 'Værdi ej fundet',
@@ -4014,10 +4019,12 @@ Faktisk udfolder den stort set alt i dobbelte tuborgklammer.',
 'expand_templates_input' => 'Inputtekst:',
 'expand_templates_output' => 'Resultat',
 'expand_templates_xml_output' => 'XML-kode',
+'expand_templates_html_output' => 'Rå HTML-output',
 'expand_templates_ok' => 'Udfold',
 'expand_templates_remove_comments' => 'Fjern kommentarer',
 'expand_templates_remove_nowiki' => 'Undertryk <nowiki>-tags i resultatet',
 'expand_templates_generate_xml' => 'Vis analysetræ som XML',
+'expand_templates_generate_rawhtml' => 'Vis rå HTML',
 'expand_templates_preview' => 'Forhåndsvisning',
 
 );
index 94e4201..ef8e0b7 100644 (file)
@@ -72,6 +72,7 @@
  * @author W (aka Wuzur)
  * @author Wikifan
  * @author Wikinaut
+ * @author Wnme
  * @author Xqt
  * @author Ziko
  * @author Zylbath
@@ -1293,6 +1294,9 @@ Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest
 'cantcreateaccount-text' => "Die Erstellung eines Benutzerkontos von der IP-Adresse '''($1)''' aus wurde durch [[User:$3|$3]] gesperrt.
 
 Grund der Sperre: ''$2''",
+'cantcreateaccount-range-text' => "Das Erstellen von Benutzerkonten von IP-Adressen im Bereich '''$1''', der deine IP-Adresse ('''$4''') enthält, wurde von [[User:$3|$3]] gesperrt.
+
+Der angegebene Grund von $3 lautet: ''$2''",
 
 # History pages
 'viewpagelogs' => 'Logbücher dieser Seite anzeigen',
@@ -3928,7 +3932,7 @@ Bitte bestätige, dass du diese Seite wirklich neu erstellen möchten.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(Standardsprache)',
-'img-lang-info' => 'Dieses Bild in $1 rendern $2.',
+'img-lang-info' => 'Dieses Bild in $1 rendern. $2',
 'img-lang-go' => 'Los',
 
 # Table pager
@@ -4045,13 +4049,14 @@ Eine [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie der ''GNU General Public License'']
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Skriptpfad]',
 
 # Special:Redirect
-'redirect' => 'Weiterleitung auf Benutzerseite, Seitenversion oder Datei',
-'redirect-legend' => 'Weiterleitung auf eine Benutzerseite, Seitenversion oder Datei',
-'redirect-summary' => 'Diese Spezialseite leitet auf eine Benutzerseite (numerische Benutzerkennung angegeben), Seitenversion (Versionskennung angegeben) oder Datei (Dateiname angegeben) weiter. Benutzung: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] oder [[{{#Special:Redirect}}/user/101]].',
+'redirect' => 'Weiterleitung auf Benutzerseite, Seite, Seitenversion oder Datei',
+'redirect-legend' => 'Weiterleitung auf eine Benutzerseite, Seite, Seitenversion oder Datei',
+'redirect-summary' => 'Diese Spezialseite leitet auf eine Benutzerseite (numerische Benutzerkennung angegeben), Seite (Seitenkennung angeben), Seitenversion (Versionskennung angegeben) oder Datei (Dateiname angegeben) weiter. Benutzung: [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] oder [[{{#Special:Redirect}}/file/Example.jpg]].',
 'redirect-submit' => 'Los',
 'redirect-lookup' => 'Suchen:',
 'redirect-value' => 'Kennung oder Dateiname:',
 'redirect-user' => 'Benutzerseite',
+'redirect-page' => 'Seite',
 'redirect-revision' => 'Seitenversion',
 'redirect-file' => 'Datei',
 'redirect-not-exists' => 'Der Wert wurde nicht gefunden',
@@ -4295,12 +4300,12 @@ Auch Parserfunktionen wie
 <code><nowiki>{{</nowiki>#language:…}}</code> und Variablen wie
 <code><nowiki>{{</nowiki>CURRENTDAY}}</code> werden ausgewertet –
 faktisch alles was in doppelten geschweiften Klammern enthalten ist.',
-'expand_templates_title' => 'Kontexttitel, für {{FULLPAGENAME}} etc.:',
+'expand_templates_title' => 'Kontexttitel für beispielsweise {{FULLPAGENAME}}:',
 'expand_templates_input' => 'Eingabefeld:',
 'expand_templates_output' => 'Ergebnis',
 'expand_templates_xml_output' => 'XML-Ausgabe',
 'expand_templates_html_output' => 'Roh-HTML-Ausgabe',
-'expand_templates_ok' => 'Okay',
+'expand_templates_ok' => 'Vorlage expandieren',
 'expand_templates_remove_comments' => 'Kommentare entfernen',
 'expand_templates_remove_nowiki' => '<nowiki>-Tags in der Ausgabe unterdrücken',
 'expand_templates_generate_xml' => 'XML-Parser-Baum zeigen',
index 5e8c235..0ef3a30 100644 (file)
@@ -1184,7 +1184,7 @@ Taye şabloni zerre pel de nêmociyayeni.',
 'undo-success' => 'No vurnayiş tepeye geryeno. pêverronayişêyê cêrıni kontrol bıkeri.',
 'undo-failure' => 'Sebayê pêverameyişê vurnayişan karo tepêya gırewtış nêbı.',
 'undo-norev' => 'Vurnayiş tepêya nêgeryeno çunke ya vere cû hewna biyo ya zi ca ra çino.',
-'undo-summary' => 'Peysergırewtışê teshisê $1i be terefê [[Special:Contributions/$2|$2i]] ([[User talk:$2|Werênayış]])',
+'undo-summary' => "Vırnayışa $1'i be terefê [[Special:Contributions/$2|$2i]] ([[User talk:$2|vatenayış]]) peyser grot",
 'undo-summary-username-hidden' => "Rewizyona veri $1'i hewada",
 
 # Account creation failure
@@ -1608,7 +1608,7 @@ Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de moc
 'right-upload_by_url' => 'Yew URL ra dosyan bar bıke',
 'right-purge' => 'Virê sita seba yew pele bêdestur bestere.',
 'right-autoconfirmed' => 'Perê ke nême kılit biyê, inan bıvurne',
-'right-bot' => 'Zey yew karê xoserkerdey be',
+'right-bot' => 'Zey yew kardê otomotiki kar bıvin',
 'right-nominornewtalk' => 'Pelanê werênayışan rê vurnayışê qıckeki çıniyê, qutiya mesacanê newiyan bıgurene',
 'right-apihighlimits' => 'Persanê API de sinoranê berzêran bıgurene',
 'right-writeapi' => 'İstıfadey APIyê nuştey',
@@ -1714,21 +1714,22 @@ Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de moc
 'enhancedrc-history' => 'verenayış',
 'recentchanges' => 'Vırnayışé bahdoyéni',
 'recentchanges-legend' => 'Tercihê vurnayışanê peyênan',
-'recentchanges-summary' => 'Ena pele de wiki sero vurnayışanê peyênan teqib ke.',
+'recentchanges-summary' => 'Ena perer de wiki sero vurnayışanê peyênan teqib ke.',
 'recentchanges-noresult' => 'Zey kiterandé şıma vırnayış névineya',
 'recentchanges-feed-description' => 'Ena feed dı vurnayişanê tewr peniyan teqip bık.',
-'recentchanges-label-newpage' => 'Enê vurnayışi pelaya newi vıraşt',
+'recentchanges-label-newpage' => 'Ena vırnayış ra pera newi vıraziyê',
 'recentchanges-label-minor' => 'Ena vırnayışa werkeka',
-'recentchanges-label-bot' => 'Yew boti xo het ra no vurnayış vıraşto',
+'recentchanges-label-bot' => 'No vurnayışé boti yo.',
 'recentchanges-label-unpatrolled' => 'Eno vurnayış hewna dewriya nêbiyo',
 'recentchanges-label-plusminus' => 'Ebata na perer ebatta na nımra de vırneya',
+'recentchanges-legend-heading' => "'''Kıtabek:'''",
 'recentchanges-legend-newpage' => '(Zewbi bıvin [[Special:NewPages|Listeya peran de newan]])',
 'recentchanges-legend-plusminus' => "''(±123)''",
 'rcnotefrom' => "Cêr de '''$2''' ra nata vurnayışiyê asenê (tewr vêşi <b> '''$1'''</b> asenê).",
 'rclistfrom' => '$1 ra tepya vırnayışané newan bıasne',
 'rcshowhideminor' => 'Vırnayışané werkekean $1',
 'rcshowhidebots' => 'Botan $1',
-'rcshowhideliu' => 'Karberané qeydınan $1',
+'rcshowhideliu' => 'Karberé qeydınan $1',
 'rcshowhideanons' => 'Karberané bénaman $1',
 'rcshowhidepatr' => '$1 vurnayışê ke dewriya geyrayê',
 'rcshowhidemine' => 'Vurnayışanê mı $1',
@@ -2469,7 +2470,7 @@ Qey hemkari u pêşniyazi:
 # Delete
 'deletepage' => 'Pele bestere',
 'confirm' => 'Testiq ke',
-'excontent' => "Zerrey cı: '$1'",
+'excontent' => "Zerreko verén: '$1'",
 'excontentauthor' => "Zerrey cı: '$1' no/na ('[[Special:Contributions/$2|$2]]'  teyna iştıraq kerdo)",
 'exbeforeblank' => "behsê verê esteriyayişi: '$1'",
 'exblank' => 'zerreyê peli vengo',
@@ -2666,11 +2667,11 @@ $1',
 'sp-contributions-newbies' => 'Tenya iştıraqanê karberanê neweyan bımocne',
 'sp-contributions-newbies-sub' => 'Qe hesebê newe',
 'sp-contributions-newbies-title' => 'Îştîrakê karberî ser hesabê neweyî',
-'sp-contributions-blocklog' => 'Qeydê kılitkerdışi',
+'sp-contributions-blocklog' => 'Qeydê bloqi',
 'sp-contributions-deleted' => 'iştırakê karberiê esterıtey',
 'sp-contributions-uploads' => 'barkerdey',
 'sp-contributions-logs' => 'qeydi',
-'sp-contributions-talk' => 'werênayış',
+'sp-contributions-talk' => 'vatenayış',
 'sp-contributions-userrights' => 'İdareyê heqanê karberan',
 'sp-contributions-blocked-notice' => 'verniyê no/na karber/e geriyayo/a
 qê referansi qeydê vernigrewtışi cêr de eşkera biyo:',
@@ -2782,7 +2783,7 @@ Sebebê kılit-biyayışê $1\'i: "$2"o',
 'blocklogpage' => 'Qeydê bloqi',
 'blocklog-showlog' => 'verniyê no/na karberi cıwa ver geriyayo/ya.',
 'blocklog-showsuppresslog' => 'verniyê no/na karberi cıwa ver geriyayo/ya.',
-'blocklogentry' => 'Karberê [[$1]] ke bloqe, bloqey cı hetana $2 $3 do bıramo.',
+'blocklogentry' => '[[$1]] biyo bloqe, sebeb: $3, hetana $2 do bıramo.',
 'reblock-logentry' => 'qey [[$1]]i tarixê qediyayişi $2 $3 pa ninan a eyarê ver-grewtışan vurna.',
 'blocklogtext' => "No kuliyatê kılitkerdış u rakerdışê fealiyetê karberano.
 Adresê IP'ya ke otomatikmen kılit biyê lista de çıniya.
@@ -3065,7 +3066,7 @@ dosyaya emaneti vindbiyo',
 'tooltip-pt-login' => 'Mayê şıma ronıştış akerdışi rê dawet keme; labelê ronıştış mecburi niyo',
 'tooltip-pt-anonlogin' => 'Seba cıkewtışê şıma rê dewato; labelê, no zeruri niyo',
 'tooltip-pt-logout' => 'Sistem ra vıcyayış',
-'tooltip-ca-talk' => 'Zerrey pela sero werênayış',
+'tooltip-ca-talk' => 'Heqdé zerreki vatenayış',
 'tooltip-ca-edit' => 'Tı şenay na perer bıvurné.Verdé qeyd kerdışi ver gocega verqayti bıkarné.',
 'tooltip-ca-addsection' => 'Zu bınnusteya newi ak',
 'tooltip-ca-viewsource' => 'Ena pele kılit biya.
@@ -4191,7 +4192,7 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 'tags-active-yes' => 'E',
 'tags-active-no' => 'Nê',
 'tags-edit' => 'bıvurne',
-'tags-hitcount' => '$1 {{PLURAL:$1|vurnayış|vurnayışi}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|vırnayış|vırnayışi}}',
 
 # Special:ComparePages
 'comparepages' => 'Pela miqeyese ke',
@@ -4370,10 +4371,12 @@ Eneri Medya wiki sera xo keno.',
 'expand_templates_input' => 'sernameyê cıkewtışi:',
 'expand_templates_output' => 'netice',
 'expand_templates_xml_output' => 'XML vıraştış',
+'expand_templates_html_output' => 'Xam vetey HTML',
 'expand_templates_ok' => 'temam',
 'expand_templates_remove_comments' => 'Tefsiran wedare',
 'expand_templates_remove_nowiki' => 'neticeyan de etiketê <nowiki> yan çap bıker',
 'expand_templates_generate_xml' => 'Dara XML arêdayoği bımocne',
+'expand_templates_generate_rawhtml' => "Xam HTML'i bıvin",
 'expand_templates_preview' => 'Verqayt',
 
 );
index 7b2f48e..a53f12f 100644 (file)
@@ -995,6 +995,9 @@ Njesmějo daś wěcej nježli $2 {{PLURAL:$2|wołanja|wołanjowu|wołanjow|woła
 'cantcreateaccount-text' => "Wutwórjenje wužywarskego konta z toś teje IP adresy ('''$1''') jo blokěrowane pśez [[User:$3|$3]].
 
 Pśicyna, kótaruž $3 jo zapódał, jo ''$2''.",
+'cantcreateaccount-range-text' => "Napóranje kontow z IP-adresow we wobcerku '''$1''', kótaryž wopśimujo twóju IP-adresu ('''$4'''), jo se wót [[User:$3|$3]] zablokěrowało.
+
+Pśicyna pódana wót $3 jo ''$2''",
 
 # History pages
 'viewpagelogs' => 'Protokole boka pokazaś',
@@ -1524,13 +1527,14 @@ Toś ta informacija buźo zjawna.',
 'recentchanges-label-bot' => 'Toś ta změna jo se pśez bośik wuwjadła.',
 'recentchanges-label-unpatrolled' => 'Toś ta změna hyšći njejo se pśekontrolěrowała',
 'recentchanges-label-plusminus' => 'Změnjona wjelikosc boka (licba bajtow)',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(glej teke [[Special:NewPages|lisćinu nowych bokow]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Dołojce pokazuju se změny wót '''$2''' (maks. '''$1''' zapisow).",
 'rclistfrom' => 'Nowe změny wót $1 pokazaś.',
 'rcshowhideminor' => 'Snadne změny $1',
 'rcshowhidebots' => 'awtomatiske programy (boty) $1',
-'rcshowhideliu' => 'pśizjawjone wužywarje $1',
+'rcshowhideliu' => 'Zregistrěrowane wužywarje $1',
 'rcshowhideanons' => 'anonymne wužywarje $1',
 'rcshowhidepatr' => 'kontrolěrowane změny $1',
 'rcshowhidemine' => 'móje pśinoski $1',
@@ -3584,7 +3588,7 @@ Pšosym wobkšuś, až napšawdu coš toś ten bok zasej napóraś.',
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(standardna rěc)',
-'img-lang-info' => 'Toś ten wobraz w $1 kresliś $2.',
+'img-lang-info' => 'Toś ten wobraz w $1 kresliś. $2',
 'img-lang-go' => 'Wótpósłaś',
 
 # Table pager
@@ -3694,14 +3698,15 @@ Ty by dejał [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licence GNU General Public
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Pó datajowem mjenju, wužywarju abo wersijowem ID dalej pósrědniś',
+'redirect' => 'Pó datajowem mjenju, wužywarju, boku abo wersijowem ID dalej pósrědniś',
 'redirect-legend' => 'Do dataje abo boka dalej pósrědniś',
-'redirect-summary' => 'Toś ten specialny bok pósrědnja se do dataje (datajowe mě jo pódane), boka (wersijowy ID jo pódany) abo wužywarskego boka (numeriski wužywarski ID jo pódany) dalej. Wužyśe:
-[[{{#Special:Redirect}}/file/Pśikład.jpg]], [[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Toś ten specialny bok pósrědnja se do dataje (datajowe mě jo pódane), boka (wersijowy ID abo ID boka jo pódany) abo wužywarskego boka (numeriski wužywarski ID jo pódany) dalej. Wužyśe:
+[[{{#Special:Redirect}}/file/Pśikład.jpg]], [[{{#Special:Redirect}}/page/64308]],[[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Pytaś',
 'redirect-lookup' => 'Pytaś:',
 'redirect-value' => 'Gódnota:',
 'redirect-user' => 'ID wužywarja',
+'redirect-page' => 'ID boka',
 'redirect-revision' => 'Bokowa wersija',
 'redirect-file' => 'Datajowe mě',
 'redirect-not-exists' => 'Gódnota njejo se namakała',
@@ -3940,10 +3945,12 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 'expand_templates_input' => 'Zapódany tekst:',
 'expand_templates_output' => 'Wuslědk',
 'expand_templates_xml_output' => 'Wudany XML',
+'expand_templates_html_output' => 'Gropne HTML-wudaśe',
 'expand_templates_ok' => 'W pórěźe',
 'expand_templates_remove_comments' => 'Komentary wótwónoźeś',
 'expand_templates_remove_nowiki' => 'Toflicki <nowiki> we wuslědku pódtłocyś',
 'expand_templates_generate_xml' => 'Parsowański bom XML pokazaś',
+'expand_templates_generate_rawhtml' => 'Gropny HTML pokazaś',
 'expand_templates_preview' => 'Pśeglěd',
 
 );
index 523228e..64cf00b 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Lévi
  * @author Reder
  */
 
@@ -15,660 +16,705 @@ $fallback = 'it';
 $messages = array(
 # Dates
 'sun' => 'Dum',
-'mon' => 'Lün',
-'tue' => 'Mär',
+'mon' => 'Lun',
+'tue' => 'Mar',
 'wed' => 'Mer',
 'thu' => 'Giu',
-'fri' => 'Van',
+'fri' => 'Ven',
 'sat' => 'Sab',
-'january' => 'Znär',
-'february' => 'Farvär',
-'march' => 'März',
-'april' => 'April',
-'may_long' => "Magg'",
-'june' => 'Giügn',
-'july' => 'Lüi',
-'august' => 'Agust',
-'september' => 'Steimbar',
-'october' => 'Uttubar',
-'november' => 'Nueimbar',
-'december' => 'Dzeimbar',
-'january-gen' => 'Znär',
-'february-gen' => 'Farvär',
-'march-gen' => 'März',
-'april-gen' => 'April',
-'may-gen' => "Magg'",
-'june-gen' => 'Giügn',
-'july-gen' => 'Lüi',
-'august-gen' => 'Agust',
-'september-gen' => 'Steimbar',
-'october-gen' => 'Uttubar',
-'november-gen' => 'Nueimbar',
-'december-gen' => 'Dzeimbar',
-'jan' => 'Znä',
-'feb' => 'Far',
-'mar' => 'Mär',
-'apr' => 'Apr',
-'may' => 'Mag',
-'jun' => 'Giü',
-'jul' => 'Lüi',
-'aug' => 'Agu',
-'sep' => 'Ste',
-'oct' => 'Utt',
-'nov' => 'Nue',
-'dec' => 'Dze',
+'january' => 'Znêr',
+'february' => 'Fervêr',
+'march' => 'Mêrs',
+'april' => 'Avrîl',
+'may_long' => 'Mâg',
+'june' => 'gn',
+'july' => 'Lój',
+'august' => 'Agòst',
+'september' => 'Setèmber',
+'october' => 'Utòber',
+'november' => 'Novèmber',
+'december' => 'Dicèmber',
+'january-gen' => 'Znêr',
+'february-gen' => 'Fervêr',
+'march-gen' => 'Mêrs',
+'april-gen' => 'Avrîl',
+'may-gen' => 'Mâg',
+'june-gen' => 'gn',
+'july-gen' => 'Lój',
+'august-gen' => 'Agòst',
+'september-gen' => 'Setèmber',
+'october-gen' => 'Utòber',
+'november-gen' => 'Novèmber',
+'december-gen' => 'Dicèmber',
+'jan' => 'Znê',
+'feb' => 'Fer',
+'mar' => 'Mêr',
+'apr' => 'Avr',
+'may' => 'Mâg',
+'jun' => 'Zóg',
+'jul' => 'Lój',
+'aug' => 'Agò',
+'sep' => 'Set',
+'oct' => 'Utò',
+'nov' => 'Nov',
+'dec' => 'Dic',
 
 # Categories related messages
-'hidden-categories' => '{{PLURAL:$1|Categuria nascost|Categuri nascost}}',
+'pagecategories' => '{{PLURAL:$1|Categoréia!Categoréi}}',
+'hidden-categories' => '{{PLURAL:$1|Categoréia lughêda|Categoréi lughêdi}}',
 
-'about' => 'Informaziun',
-'cancel' => ' 
-Cancellä',
-'mytalk' => 'Le mé discüssion',
-'navigation' => 'Navigazion',
+'about' => 'Infumasiòun',
+'cancel' => 'Scanşèla',
+'mytalk' => 'Al mē discusiòun',
+'navigation' => 'Navigasiòun',
 'and' => '&#32;e',
 
 # Cologne Blue skin
-'qbfind' => 'Trov',
-'qbedit' => 'Mudifich',
-'qbpageoptions' => "Opzion d'la pàgina",
-'qbmyoptions' => 'Le mé pàgin',
-'faq' => 'Dumand frequeint',
+'qbfind' => 'Câta',
+'qbedit' => 'Mudéfica',
+'qbpageoptions' => 'Siēlti pàgina',
+'qbmyoptions' => 'Al mē pàgini',
+'faq' => 'Dmândi fâti',
 
 # Vector skin
-'vector-action-delete' => 'Cancellä',
-'vector-action-move' => 'Spusta',
-'vector-action-protect' => "Prutegg'",
-'vector-view-create' => 'Creä',
-'vector-view-edit' => 'Mudifich',
-'vector-view-history' => 'Väda la storia',
-'vector-view-view' => "Legg'",
-'vector-view-viewsource' => 'Vadä la surgìnt',
-'actions' => 'Azion',
-'namespaces' => 'Namespace',
-'variants' => 'Variänt',
-
-'errorpagetitle' => 'Errur',
+'vector-action-delete' => 'Scanşèla',
+'vector-action-move' => 'Spôsta',
+'vector-action-protect' => 'Prutēz',
+'vector-view-create' => 'Invèinta',
+'vector-view-edit' => 'Mudéfica',
+'vector-view-history' => 'Guêrda la stôria',
+'vector-view-view' => 'Lēz',
+'vector-view-viewsource' => 'Guêrda la surzéia',
+'actions' => 'Asiòun',
+'namespaces' => 'Spâsi di nòm',
+'variants' => 'Mudéfichi',
+
+'errorpagetitle' => 'Erōr',
 'tagline' => 'Da {{SITENAME}}',
-'help' => 'At',
-'search' => 'Cercä',
-'searchbutton' => 'Cercä',
-'go' => 'Vé',
-'searcharticle' => 'Vé',
-'history' => "Storia d'la pàgina",
+'help' => 'At',
+'search' => 'Sèirca',
+'searchbutton' => 'Sèirca',
+'go' => 'Và',
+'searcharticle' => 'Và',
+'history' => "Stòria 'd la pàgina",
 'history_short' => 'Storia',
-'permalink' => 'Link permaneint',
-'print' => 'Stampa',
-'view' => 'Vada',
-'edit' => 'Mudifich',
-'create' => 'Creä',
-'delete' => 'Cancellä',
-'deletethispage' => 'Cancellä custa pàgina ché',
-'undelete_short' => 'Recuperä {{PLURAL:$1|una revision|$1 revision}}',
-'viewdeleted_short' => 'Vadä {{PLURAL:$1|una mudfich cancellät|$1 mudfich cancellät}}',
-'protect' => "Prutegg'",
-'protect_change' => 'Cambia',
-'protectthispage' => "Prutegg' custa pàgina ché",
-'unprotect' => 'Cambiä la prutezion',
-'unprotectthispage' => 'Cambiä la prutezion par custa pàgina ché',
-'newpage' => 'Pàgina növa',
-'talkpage' => 'Pàgina ad discüssion',
-'talkpagelinktext' => 'Discüssion',
-'specialpage' => 'Pàgina speciäl',
-'personaltools' => 'Strümeint parsunäl',
-'postcomment' => 'Sezion növa',
-'articlepage' => 'Vadä la pàgina ad contenüt',
-'talk' => 'Discüssion',
-'views' => 'Visit',
-'toolbox' => 'Strümeint',
-'userpage' => "Vadä la pàgina ad l'uteint",
-'projectpage' => 'Vadä la pàgina dal prugett',
-'imagepage' => 'Vadä la pàgina dal file',
-'mediawikipage' => "Vadä al messagg'",
-'templatepage' => 'Vadä al template',
-'viewhelppage' => "Vadä la pàgina d'aiüt",
-'categorypage' => 'Vadä la categoria',
-'viewtalkpage' => 'Vadä la discüssion',
-'otherlanguages' => 'Ätar leingav',
-'redirectedfrom' => '(Reindirizzameint da <b>$1</b>)',
-'redirectpagesub' => 'Pàgina ad reindirizzameint',
-'lastmodifiedat' => "Ültim mudifich d'la pàgina: $2, $1.",
-'viewcount' => "Custa pàgina ché l'è stata letta {{PLURAL:$1|vüna volta|$1 volte}}.",
-'protectedpage' => 'Pàgina bluccä',
-'jumpto' => 'Andä a',
-'jumptonavigation' => 'navigazion',
-'jumptosearch' => 'cercä',
-'pool-queuefull' => "La cua dal pool l'è piena",
-'pool-errorunknown' => 'Errur mia cugnussü',
+'printableversion' => "Stâmpa la pàgina ch' ét vèd.",
+'permalink' => 'Colegamèint fés',
+'print' => 'Stâmpa',
+'view' => 'Guardêr',
+'edit' => 'Mudéfichi',
+'create' => 'Invèinta',
+'delete' => 'Scanşéla',
+'deletethispage' => 'Canşéla cla pàgina ché',
+'undelete_short' => "Recóper ed {{PLURAL:$1|'na revisiòun|$1 revisiòun}}",
+'viewdeleted_short' => "Guèrda {{PLURAL:$1|'na mudéficha scanşlêda|$1 mudéfichi scanşlêdi}}",
+'protect' => 'Prutēz',
+'protect_change' => 'Câmbia',
+'protectthispage' => 'Prutēz cla pàgina ché',
+'unprotect' => 'Câmbia la prutesiòun',
+'unprotectthispage' => 'Câmbia la prutesiòun per cla pàgina ché',
+'newpage' => 'Pàgina nōva',
+'talkpage' => "Pàgina 'd discusiòun",
+'talkpagelinktext' => 'Discusiòun',
+'specialpage' => 'Pàgina specêla',
+'personaltools' => 'Strumèint persunêl',
+'postcomment' => 'Sesiòun nōva',
+'articlepage' => 'Guêrda la pàgina',
+'talk' => 'Discusiòun',
+'views' => 'Vîşiti',
+'toolbox' => 'Strumèint',
+'userpage' => "Guêrda la pàgina 'd l'uteint",
+'projectpage' => 'Guêrda la pàgina dal prugèt',
+'imagepage' => "Guêrda la pàgina dal 'file'",
+'mediawikipage' => 'Guêrda al mesâg',
+'templatepage' => "Guêrda al 'template'",
+'viewhelppage' => "Guêrda la pàgina 'd ajót",
+'categorypage' => 'Guêrda la categuréia',
+'viewtalkpage' => 'Guêrda la discusiòun',
+'otherlanguages' => 'In êtri léngvi',
+'redirectedfrom' => '(Tót còst al deşvîn da <b>$1</b>)',
+'redirectpagesub' => "Pàgina 'd partèinsa",
+'lastmodifiedat' => "Ûltmi mudéfichi 'dla pàgina: $2, $1.",
+'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:',
+'jumptonavigation' => 'Navigasiòun',
+'jumptosearch' => 'Sērca',
+'pool-queuefull' => 'A ghé la fîla, trôpa gînta a vōl vèder la pàgina, prōva tra soquânt minût',
+'pool-errorunknown' => 'Erōr mìa cgnusû',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
-'aboutsite' => 'Infurmazion su {{SITENAME}}',
-'aboutpage' => 'Project:Infurmäzion',
-'copyright' => "Contenüt suggètt a licinza d'üs $1.",
-'copyrightpage' => '{{ns:project}}:Copyright',
-'currentevents' => 'Eveint curreint',
-'currentevents-url' => 'Project:Eveint curreint',
-'disclaimers' => 'Informazion legäl',
-'disclaimerpage' => 'Project:Avvartenza generäl',
-'edithelp' => 'Libar di spiegazión',
-'helppage' => "Help:Tütt l'argumeint",
-'mainpage' => 'Prima pàgina',
-'mainpage-description' => 'Pàgina principäl',
-'policy-url' => 'Project:Policy',
-'portal' => "Purtäda d'la cumünitä",
-'portal-url' => "Project:Purtäda d'la cumünitä",
-'privacy' => "Legg' l'informazion parsunäl",
-
-'ok' => 'OK',
-'editsection' => 'cambi',
-'editold' => 'mudifich',
-'viewsourceold' => 'vadä la surgìnt',
-'editlink' => 'mudifich',
-'viewsourcelink' => 'vadä la surgìnt',
-'editsectionhint' => 'Mudifich la seziòn: $1',
-'toc' => 'Indez',
-'showtoc' => 'mustra',
-'hidetoc' => 'nascond',
-'collapsible-collapse' => 'Comprim',
-'collapsible-expand' => 'Espand',
-'thisisdeleted' => 'Vadä o ripristinä $1?',
-'viewdeleted' => 'Vadä $1?',
-'restorelink' => '{{PLURAL:$1|vüna mudfich cancellät|$1 mudfich cancellät}}',
+'aboutsite' => 'Infurmasiòun só {{SITENAME}}',
+'aboutpage' => 'Project:Infurmasiòun',
+'copyright' => "Còl che gh' é che dèinter a 's pōl druvêr sòta licèinsa $1, s' an gh'é mia scrét diversamèint.",
+'copyrightpage' => "{{ns:project}}:Dirét 'd avtōr",
+'currentevents' => "Côşi 'd adèsa",
+'currentevents-url' => "Project:Côşi 'd adèsa",
+'disclaimers' => 'Avertèinsi',
+'disclaimerpage' => 'Project:Avertèinsi generêli',
+'edithelp' => 'Léber dal spiegasiòun',
+'helppage' => 'Help:Tót j argumèint',
+'mainpage' => 'Préma pàgina',
+'mainpage-description' => 'Pàgina principêla',
+'policy-url' => "Project:Léni 'd cundòta",
+'portal' => 'Purtêl ed la comunitê',
+'portal-url' => 'Project:Purtêl ed la comunitê',
+'privacy' => 'Infurmasiòun só la véta privêda',
+'privacypage' => 'Project:Règoli só la secretèsa dal j infurmasiòun personêli.',
+
+'ok' => 'Va bèin',
+'retrievedfrom' => 'Tôt da "$1".',
+'editsection' => 'Mudéfica',
+'editold' => 'mudéfica',
+'viewsourceold' => 'guêrda la surzéia',
+'editlink' => 'mudéfica',
+'viewsourcelink' => 'guêrda la surzéia',
+'editsectionhint' => 'Mudéfica la sesiòn: $1',
+'toc' => 'Argumèint',
+'showtoc' => 'Fà vèder',
+'hidetoc' => 'Lōga',
+'collapsible-collapse' => 'Stréca',
+'collapsible-expand' => 'Şlêrga',
+'thisisdeleted' => 'Guêrda e tōrna a mèter $1?',
+'viewdeleted' => 'Guêrda $1?',
+'restorelink' => "{{PLURAL:$1|'na mudéfica scanşlêda|$1 mudéfichi scanşlêdi}}",
 'feedlinks' => 'Feed:',
-'feed-invalid' => "La mudalitä ad sottoscrizion dal feed l'è mia valid.",
-'feed-unavailable' => 'I feed al son mia dispunibil',
-'site-rss-feed' => 'Emissiòn RSS ad $1',
-'site-atom-feed' => 'Emission Atom ad $1',
-'page-rss-feed' => 'Emissiòn RSS par $1',
-'page-atom-feed' => 'Emission Atom par $1',
-'red-link-title' => "$1 (la pàgina a l'esist mia)",
-'sort-descending' => 'Ordinamient decrescent',
-'sort-ascending' => 'Ordinamient cresceint',
+'feed-invalid' => "Al môd ed sotoscrisiòun dal feed an n'é mìa vâlid",
+'feed-unavailable' => "An gh'é mìa di feed léber",
+'site-rss-feed' => 'Feed RSS ed $1',
+'site-atom-feed' => 'Feed Atom ed $1',
+'page-rss-feed' => 'Feed RSS per $1',
+'page-atom-feed' => 'Feed Atom per $1',
+'red-link-title' => "$1 (la pàgina l'an gh'é mìa)",
+'sort-descending' => 'Ōrdin in calêr',
+'sort-ascending' => 'Ōrdin in crèser',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Pàgina',
-'nstab-user' => 'Pàgina uteint',
+'nstab-user' => 'Pàgina utèint',
 'nstab-media' => 'File multimediäl',
-'nstab-special' => 'Pàgina speciäl',
-'nstab-project' => 'Pàgina ad sërvizi',
-'nstab-image' => 'Immàgin',
-'nstab-mediawiki' => "Messagg'",
-'nstab-template' => 'Mudell',
-'nstab-help' => 'At',
-'nstab-category' => 'Categuria',
+'nstab-special' => 'Pàgina specêla',
+'nstab-project' => "Pàgina 'd servési",
+'nstab-image' => 'Cartèla',
+'nstab-mediawiki' => 'Mesâg',
+'nstab-template' => 'Mudèl',
+'nstab-help' => 'At',
+'nstab-category' => 'Categuéria',
 
 # General errors
-'error' => 'Errur',
-'databaseerror' => 'Errur dal database',
-'readonly' => 'Database bluccä',
-'missingarticle-rev' => '(revision n°: $1)',
+'error' => 'Erōr',
+'databaseerror' => "Erōr dal 'database'",
+'readonly' => "'Database' bluchê",
+'missing-article' => "Al datebêş an n'à mìa catê al tèst ed 'na pàgina ch' l' aré duvû catêres sòt' al nòm \"\$1\" \$2. Ed sôlit còst a sucēd quând a vîn arciamê, a partîr da la stòria dal mudéfichi o dal cunfrûnt tra revisiòun, un colegamèint a 'na pàgina scanşlêda, a un cunfrûnt tra revisiòun che gh'în mìa o a un cunfrûnt tra revisiòun cun la stòria dal mudéfichi scanşlêda. In chês cuntrâri, a s'é pubabilmèint catê un erōr int al prugrâma ed Media Wiki. A se dmânda al piaşèir ed comunichêr còl ch'é sucès a un [[Special:ListUsers/sysop|amministadōr]] e comunichêregh l'indirés (URL) in quistiòun.",
+'missingarticle-rev' => '(revisiòun n°: $1)',
 'missingarticle-diff' => '(Diff: $1, $2)',
-'internalerror' => 'Errur interiur',
-'internalerror_info' => 'Errur interiur: $1',
-'viewsource' => 'Vadä la surgìnt',
-'viewsource-title' => 'Vadä la surgìnt ad $1',
+'internalerror' => 'Erōr intêren',
+'internalerror_info' => 'Erōr intêren: $1',
+'viewsource' => 'Guêrda la surzéia',
+'viewsource-title' => "Guêrda la surzéia 'd $1",
 
 # Login and logout pages
-'yourname' => 'Nom uteint:',
-'yourpassword' => 'Password:',
-'yourpasswordagain' => 'Ripett la password:',
-'login' => 'Enträ',
-'nav-login-createaccount' => 'Enträ / Creä un account',
-'userlogin' => 'Enträ / Creä un account',
-'userloginnocreate' => 'Enträ',
-'logout' => 'Üscì',
-'userlogout' => 'Üscì',
-'notloggedin' => 'Si mia enträ',
-'nologinlink' => 'Creä un cunt',
-'createaccount' => 'Creä cunt',
-'gotaccountlink' => 'Enträ',
-'createaccountmail' => 'Via e-mail',
-'createaccountreason' => 'Mutiv:',
-'loginerror' => 'Errur ad enträ',
-'accountcreated' => 'Account creä',
-'loginlanguagelabel' => 'Leingua: $1',
+'yourname' => 'Nòm utèint:',
+'yourpassword' => "Cêva 'd ingrès:",
+'yourpasswordagain' => "Scrév incòra la cêva 'd ingrès:",
+'login' => 'Và dèinter',
+'nav-login-createaccount' => 'Và dèinter / Fà la tó inscrisiòun',
+'userlogin' => 'Và dèinter / Fà la tó inscrisiòun',
+'userloginnocreate' => 'Và dèinter',
+'logout' => 'Và fōra',
+'userlogout' => 'Và fōra',
+'notloggedin' => "An t'é mìa gnû dèinter",
+'nologinlink' => 'Fà la tó inscrisiòun',
+'createaccount' => 'Fà la tó inscrisiòun',
+'gotaccountlink' => 'Và dèinter',
+'createaccountmail' => "Drōva 'na cêva 'd ingrès a chêş pruvişôria e spidésla a l'indirés ed pôsta eletrônica sgnê.",
+'createaccountreason' => 'Mutîv:',
+'loginerror' => "Erōr 'd ingrès",
+'accountcreated' => 'Ingrès fât',
+'loginlanguagelabel' => 'Léngva: $1',
 
 # Change password dialog
-'changepassword' => 'Cambiä la password',
-'oldpassword' => "Vecc' password:",
-'newpassword' => 'Növa password:',
-'resetpass-submit-loggedin' => 'Cambiä la password',
-'resetpass-submit-cancel' => 'Cancellä',
-'resetpass-temp-password' => 'Password tempural:',
+'changepassword' => "Câmbia la cêva 'd ingrès",
+'oldpassword' => "Cêva 'd ingès vècia:",
+'newpassword' => "Nōva cêva 'd ingrès:",
+'resetpass-submit-loggedin' => "Câmbia la cêva 'd ingrès",
+'resetpass-submit-cancel' => 'Canşèla',
+'resetpass-temp-password' => "Cêva 'd ingrès pruvişôria:",
 
 # Special:PasswordReset
-'passwordreset' => 'Cambiä la password',
-'passwordreset-legend' => 'Cambiä la password',
-'passwordreset-username' => 'Nom uteint:',
-'passwordreset-domain' => 'Dumini:',
+'passwordreset' => "Câmbia la cêva 'd ingrès",
+'passwordreset-legend' => "Tōrna mèter la cêva 'd ingrès",
+'passwordreset-username' => 'Nòm utèint:',
+'passwordreset-domain' => 'Proprietê:',
 
 # Edit page toolbar
-'bold_sample' => 'Grassètt',
-'italic_sample' => 'Cursìv',
-'media_tip' => 'Cullegameint al file',
+'bold_sample' => 'Grasèt',
+'italic_sample' => 'Cursîv',
+'media_tip' => "Colegamèint al 'file'",
 
 # Edit pages
-'summary' => 'Summari:',
-'savearticle' => 'Sälv la pàgina',
-'preview' => 'Vadä prima',
-'showpreview' => "Vadä l'antepeima",
-'showdiff' => 'Vadä li cambiameint',
-'blockedtitle' => 'Uteint bluccä',
-'newarticle' => '(Növ)',
-'note' => "'''Nota:'''",
-'editing' => 'Mudifich ad $1',
-'editingsection' => 'Mudifich ad $1 (sezion)',
-'editingcomment' => 'Mudifich ad $1 (növ sezion)',
-'editconflict' => 'Conflitt ad mudifich: $1',
-'yourtext' => 'Al tò test',
-'yourdiff' => 'Differeinz',
-'template-protected' => '(prutett)',
-'template-semiprotected' => '(mézz-prutett)',
-'log-fulllog' => 'Vadä al log cumplet',
-'edit-conflict' => 'Conflitt ad mudifich.',
+'summary' => 'Sûnt:',
+'savearticle' => 'Sêlva la pàgina',
+'preview' => 'Guêrda préma',
+'showpreview' => 'Guêrda al cambiamèint',
+'showdiff' => 'Guêrda i cambiamèint',
+'blockedtitle' => 'Utèint bluchê',
+'newarticle' => '(Nōv)',
+'noarticletext' => 'In cól mumèint ché la pàgina serchêda l\'é vōda. L\'é pusébil [[Special:Search/{{PAGENAME}}|serchêr sté tétol]] int al j êtri pàgini dal sît, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchêr int i regéster coleghê] opór  [{{fullurl:{{FULLPAGENAME}}|action=edit}} mudifichêr la pàgina adèsa]</span>.',
+'note' => "'''Nôta:'''",
+'editing' => 'Mudéfica ed $1',
+'editingsection' => 'Mudéfica ed $1 (sesiòun)',
+'editingcomment' => 'Mudéfica e $1 (sesiòun nōva)',
+'editconflict' => "Cuntrâst 'd edisiòun só $1",
+'yourtext' => 'Al tó tèst',
+'yourdiff' => 'Diferèinsi',
+'template-protected' => '(prutèt)',
+'template-semiprotected' => '(mèz-prutèt)',
+'log-fulllog' => 'Guêrda la stòria dal registrasiòun',
+'edit-conflict' => "Cuntrâst 'd edisiòun",
 
 # History pages
-'viewpagelogs' => 'Vadä li log ad custa pàgina ché',
-'currentrev' => 'Ã\9cltima version',
-'currentrev-asof' => 'Ã\9cltima version dle $1',
-'revisionasof' => 'Version dle $1',
-'revision-info' => 'Version dle $1, avtur: $2',
-'previousrevision' => "← Version piö vecc'",
-'nextrevision' => 'Versiòn piö növ →',
-'currentrevisionlink' => 'Ã\9cltima version',
-'cur' => 'curr',
-'next' => 'succ',
-'last' => 'prec',
-'page_first' => 'prima',
-'page_last' => 'ültim',
+'viewpagelogs' => "Guêrda la stòria 'd cla pàgina ché",
+'currentrev' => 'Ã\9bltma reviÅ\9fiòun',
+'currentrev-asof' => 'Ã\9bltma reviÅ\9fiòun dal $1',
+'revisionasof' => 'Revişiòun dal $1',
+'revision-info' => 'Revişiòun ed $1, avtōr: $2',
+'previousrevision' => '← Revişiòun pió vècia',
+'nextrevision' => 'Revişiòun pió nōva →',
+'currentrevisionlink' => 'Ã\9bltma reviÅ\9fiòun',
+'cur' => 'cur',
+'next' => 'Còl dôp',
+'last' => 'Còl préma',
+'page_first' => 'préma',
+'page_last' => 'ûltem',
 
 # Revision feed
 'history-feed-item-nocomment' => '$1 al $2',
 
 # Revision deletion
-'rev-delundel' => 'vadä/anscönd',
-'revdelete-radio-set' => 'Sì',
-'revdelete-radio-unset' => 'No',
-'revdelete-reasonotherlist' => 'Ätar ragion',
+'rev-delundel' => 'Guêrda/nascònd',
+'revdelete-radio-set' => 'Nascònd',
+'revdelete-radio-unset' => 'Fà vèder',
+'revdel-restore' => 'Câmbia la vidûda.',
+'revdelete-reasonotherlist' => 'Êtra ragiòun',
 
 # Merge log
-'revertmerge' => "Annullä l'ünion",
+'revertmerge' => "Scanşèla l'uniòun",
 
 # Diffs
-'lineno' => 'Riga $1:',
-'editundo' => 'cancellä',
+'lineno' => 'Rîga $1:',
+'editundo' => 'scanşèla',
 
 # Search results
-'searchresults' => "Risultät d'la ricerch",
-'searchresults-title' => 'Risultät d\'la ricerch ad "$1"',
-'viewprevnext' => 'Väda ($1 {{int:pipe-separator}} $2) ($3).',
-'searchprofile-articles' => 'Pàgin ad cuntinüt',
-'searchprofile-images' => 'Multimëdi',
-'searchprofile-everything' => 'Tütt',
-'searchprofile-advanced' => 'Avanzät',
-'searchprofile-articles-tooltip' => 'Cercä in $1',
-'searchprofile-project-tooltip' => 'Cercä in $1',
-'searchprofile-images-tooltip' => 'Cercä immàgin',
-'search-result-size' => '$1 ({{PLURAL:$2|1 parola|$2 paroli}})',
+'searchresults' => "Rişultê 'd la sērca",
+'searchresults-title' => 'Rişultê \'d la sērca ed "$1"',
+'prevn' => '{{PLURAL:$1|còl préma|quî préma $1}}',
+'nextn' => '{{PLURAL:$1|al seguèint|i seguèint $1}}',
+'prevn-title' => '{{PLURAL:$1|Al rişultêt ed préma|$1 i rişultêt ed préma}}',
+'nextn-title' => '{{PLURAL:$1|Al rişultêt ed préma|$1 i rişultêt ed préma}}',
+'shown-title' => 'Fà vèder {{PLURAL:$1|un rişultêt|$1 di rişultêt}}',
+'viewprevnext' => 'Guêrda ($1 {{int:pipe-separator}} $2) ($3).',
+'searchprofile-articles' => "Pàgini 'd j argumèint",
+'searchprofile-project' => "Pàgini 'd ajót e relatîvi al prugèt.",
+'searchprofile-images' => 'Multimèdia',
+'searchprofile-everything' => 'Tót',
+'searchprofile-advanced' => 'Specêla',
+'searchprofile-articles-tooltip' => 'Sèirca in $1',
+'searchprofile-project-tooltip' => 'Sèirca in $1',
+'searchprofile-images-tooltip' => "Sèirca 'file'",
+'searchprofile-everything-tooltip' => "Sērca dapertót (ânch int al pàgini 'd discusuòun).",
+'searchprofile-advanced-tooltip' => 'Sērca int i spâsi di nòm fât só mzûra.',
+'search-result-size' => "$1 ({{PLURAL:$2|'na parôla|$2 parôli}})",
 'search-redirect' => '(redirect $1)',
-'search-section' => '(sezion $1)',
-'search-interwiki-caption' => 'Prugett fradel',
-'search-interwiki-default' => 'Risültä da $1:',
-'search-interwiki-more' => '(ätar)',
-'searchall' => 'tütt',
-'powersearch-toggleall' => 'Tütt',
-'powersearch-togglenone' => 'Ansöin',
+'search-section' => '(sesiòun $1)',
+'search-interwiki-caption' => 'Prugèt fradē',
+'search-interwiki-default' => 'Rişultêt da $1:',
+'search-interwiki-more' => '(êter)',
+'searchall' => 'tót',
+'showingresultsheader' => "{{PLURAL:$5|Al risultêt '''$1''' ed '''$3'''|I risultêt '''$1 - $2''' ed '''$3'''}} per '''$4'''",
+'powersearch-toggleall' => 'Tót',
+'powersearch-togglenone' => 'Nisûn',
 
 # Preferences page
-'preferences' => 'Prefereinz',
-'mypreferences' => 'Al me prefereinz',
-'prefs-edits' => 'Nümar ad mudifich:',
-'prefs-skin' => 'Skin',
-'skin-preview' => 'Vadä prima',
-'datedefault' => 'Ansiön prefereinz',
-'prefs-beta' => 'Funzionalitä beta',
-'saveprefs' => 'Salvä',
-'prefs-editing' => 'Mudificä',
-'rows' => 'Righe',
-'searchresultshead' => 'Cercä',
-'timezoneregion-africa' => 'Africa',
-'timezoneregion-america' => 'América',
-'timezoneregion-antarctica' => 'Antartide',
-'timezoneregion-arctic' => 'Artide',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Ucean Atlantich',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Ucean Indian',
-'timezoneregion-pacific' => 'Ucean Pacifich',
+'preferences' => 'Preferèinsa',
+'mypreferences' => 'Preferèinsi',
+'prefs-edits' => 'Mudéfichi fâti:',
+'prefs-skin' => 'Aspèt grâfich (skin)',
+'skin-preview' => 'Guêrda préma',
+'datedefault' => 'Nisóna preferèinsa',
+'prefs-beta' => "Funsionamèint 'beta'",
+'saveprefs' => 'Sêlva',
+'prefs-editing' => "Caşèla 'd mudéfica",
+'rows' => 'Rîghi',
+'searchresultshead' => 'Sērca',
+'timezoneregion-africa' => 'Âfrica',
+'timezoneregion-america' => 'Amèrica',
+'timezoneregion-antarctica' => 'Antârtide',
+'timezoneregion-arctic' => 'Ârtide',
+'timezoneregion-asia' => 'Âsia',
+'timezoneregion-atlantic' => 'Ocèan Atlântich',
+'timezoneregion-australia' => 'Austrâlia',
+'timezoneregion-europe' => 'Eurôpa',
+'timezoneregion-indian' => 'Ocèan Indiân',
+'timezoneregion-pacific' => 'Ocèan Pacéfich',
 'youremail' => 'E-mail:',
-'username' => 'Nom uteint',
-'uid' => 'ID uteint',
-'prefs-memberingroups' => 'Membar {{PLURAL:$1|dal grüpp|dei grüpp}}:',
-'yourrealname' => 'Nom ver:',
-'yourlanguage' => 'Leingua',
+'username' => '{{GENDER:$1|Nòm utèint}}',
+'uid' => '{{GENDER:$1|utèint}}',
+'prefs-memberingroups' => '{{GENDER:$2|Elemèint}}{{PLURAL:$1|dal gróp|di gróp}}:',
+'yourrealname' => 'Nòm vèira:',
+'yourlanguage' => 'Léngua',
 'email' => 'E-mail',
 
 # Groups
-'group' => 'Grüpp:',
-'group-user' => 'Uteint',
-'group-autoconfirmed' => 'Uteint autoconvalidät',
+'group' => 'Gróp:',
+'group-user' => 'Utèint',
+'group-autoconfirmed' => 'Utèint cunvalidê da per ló',
 'group-bot' => 'Bot',
-'group-sysop' => 'Amministradór',
-'group-bureaucrat' => 'Bürocrat',
+'group-sysop' => 'Aministradōr',
+'group-bureaucrat' => 'Funsionâri',
 'group-suppress' => 'Oversight',
-'group-all' => '(tütt)',
+'group-all' => '(tót)',
 
-'group-user-member' => '{{GENDER:$1|uteint}}',
-'group-autoconfirmed-member' => '{{GENDER:$1|uteint autoconvalidät}}',
+'group-user-member' => '{{GENDER:$1|utèint}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|utèint convalidê da per ló}}',
 'group-bot-member' => '{{GENDER:$1|bot}}',
-'group-sysop-member' => '{{GENDER:$1|amministradór}}',
-'group-bureaucrat-member' => '{{GENDER:$1|bürocrat}}',
+'group-sysop-member' => '{{GENDER:$1|aministradōr}}',
+'group-bureaucrat-member' => '{{GENDER:$1|funsionâri}}',
 'group-suppress-member' => '{{GENDER:$1|oversight}}',
 
-'grouppage-user' => '{{ns:project}}:Uteint',
-'grouppage-autoconfirmed' => '{{ns:project}}:Uteint autoconvalidät',
+'grouppage-user' => '{{ns:project}}:Utèint',
+'grouppage-autoconfirmed' => '{{ns:project}}:Utèint convalidê da per ló',
 'grouppage-bot' => '{{ns:project}}:Bot',
-'grouppage-sysop' => '{{ns:project}}:Amministradór',
-'grouppage-bureaucrat' => '{{ns:project}}:Bürocrat',
+'grouppage-sysop' => '{{ns:project}}:Aministradōr',
+'grouppage-bureaucrat' => '{{ns:project}}:Funsionâri',
 'grouppage-suppress' => '{{ns:project}}:Oversight',
 
 # Rights
-'right-read' => "Legg' pàgin",
-'right-edit' => 'Mudifich pàgin',
+'right-read' => 'Al lēz al pàgini',
+'right-edit' => 'Mudéfica pàgini',
 
 # Associated actions - in the sentence "You do not have permission to X"
-'action-read' => "legg' custa pàgina ché",
-'action-edit' => 'mudifch custa pàgina ché',
-'action-createpage' => 'creä pàgin',
-'action-move' => 'spustä custa pàgina ché',
-'action-movefile' => 'spustä cust file ché',
-'action-upload' => 'caricä cust file ché',
-'action-delete' => 'cancellä custa pàgina ché',
+'action-read' => 'lēzer cla pàgina ché',
+'action-edit' => 'Mudifichêr cla pàgina ché',
+'action-createpage' => 'inventêr pàgini',
+'action-move' => 'spustêr cla pàgina ché',
+'action-movefile' => "spustêr cól 'file' ché",
+'action-upload' => "carghêr cól 'file' ché",
+'action-delete' => 'scanşlêr cla pàgina ché',
 
 # Recent changes
-'recentchanges' => 'Ã\9cltim cambiameint',
+'recentchanges' => 'Ã\9bltmi mudéfichi',
 'rcshowhidebots' => '$1 i bot',
-'rcshowhidemine' => '$1 le mé mudifich',
-'diff' => 'diff',
-'hist' => 'cron',
-'hide' => 'Nascond',
-'show' => 'mustra',
+'rcshowhidemine' => '$1 al mē mudéfichi',
+'diff' => 'dif',
+'hist' => 'stòr',
+'hide' => 'Nascònd',
+'show' => 'Fà vèder',
 'minoreditletter' => 'm',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
-'number_of_watching_users_pageview' => '[usservä da {{PLURAL:$1|vün uteint|$1 uteint}}]',
-'rc_categories_any' => 'Qualsía',
+'number_of_watching_users_pageview' => '[vésta da {{PLURAL:$1|un utèint|$1 utèint}}]',
+'rc_categories_any' => "Bast' ech sia",
+
+# Recent changes linked
+'recentchangeslinked-toolbox' => 'Mudéfichi coleghêdi',
+'recentchangeslinked-summary' => "Cla pàgina specêla ché la fà vèder al j ûltmi mudéfichi al pàgini coleghêdi da còla sgnêda (o dèinter int la categoréia sgnêda). Al pàgini dèint a la tó lésta 'd j [[Special:Watchlist|tgnû sòt ôc specêl]] în sgnêdi in '''grasèt'''.",
 
 # Upload
-'upload' => 'Cärga un file',
+'upload' => "Cârga un 'file'",
 
-'license' => 'Licinza:',
-'license-header' => 'Licinza',
-'nolicense' => 'Ansöna licinza seleziunä',
+'license' => 'Licèinsa:',
+'license-header' => 'Licèinsa',
+'nolicense' => 'Nisóna licèinsa sgnêda',
 
 # Special:ListFiles
-'listfiles_date' => 'Data',
-'listfiles_name' => 'Nom',
-'listfiles_user' => 'Uteint',
+'listfiles_date' => 'Dâta',
+'listfiles_name' => 'Nòm',
+'listfiles_user' => 'Utèint',
 
 # File description page
-'file-anchor-link' => 'Immàgin',
-'filehist' => 'Storia dal file',
-'filehist-current' => 'curreint',
-'filehist-datetime' => 'Data/Ura',
-'filehist-thumb' => 'Miniadüra',
-'filehist-user' => 'Uteint',
-'filehist-dimensions' => 'Dimension',
-'filehist-comment' => 'Uggett',
-'imagelinks' => 'Cullegameint al file',
+'file-anchor-link' => "'File'",
+'filehist' => "Stòria 'd la pàgina",
+'filehist-current' => "(d'adèsa)",
+'filehist-datetime' => 'Dâta/Ōra',
+'filehist-thumb' => 'Miniadûra',
+'filehist-user' => 'Utèint',
+'filehist-dimensions' => 'Amzûri',
+'filehist-comment' => 'Cumèint',
+'imagelinks' => "Ûş dal 'file'",
 
 # File deletion
-'filedelete-submit' => 'Cancellä',
+'filedelete-submit' => 'Scanşela',
 
 # Random page
-'randompage' => 'Una pàgina a cäs',
+'randompage' => "'Na pàgina a chêş",
 
-'brokenredirects-edit' => 'cambi',
+'brokenredirects-edit' => 'Mudéfica',
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|byte|byte}}',
-'newpages' => 'Pàgin növ',
-'move' => 'Spusta',
+'newpages' => 'Pàgini pió nōvi',
+'move' => 'Spôsta',
 
 # Book sources
-'booksources-go' => 'Vé',
+'booksources-go' => 'Và',
 
 # Special:AllPages
 'alphaindexline' => 'da $1 a $2',
-'allpagessubmit' => 'Vé',
+'allpagessubmit' => 'Và',
 
 # Special:ListUsers
-'listusers-submit' => 'Mustra',
+'listusers-submit' => 'Fà vèder',
 
 # Special:ListGroupRights
-'listgrouprights-group' => 'Grüpp',
+'listgrouprights-group' => 'Gróp:',
 
 # Email user
 'emailfrom' => 'Da:',
 'emailto' => 'A:',
-'emailsubject' => 'Uggett:',
-'emailmessage' => "Messagg'",
+'emailsubject' => 'Argumèint:',
+'emailmessage' => 'Mesâg',
 
 # Watchlist
-'mywatchlist' => 'Le mé üsservat speciäl',
-'watchlistfor2' => "Dall'uteint $1 $2",
-'watchnologin' => 'Si mia enträ',
-'watch' => 'Vadä',
-'watchthispage' => 'Vadä custa pàgina ché',
-'unwatch' => "N'la vadär piö",
+'mywatchlist' => 'Sòt uservasiòun',
+'watchlistfor2' => "Da l'utèint $1 $2",
+'watchnologin' => "An t'é mìa gnû dèinter",
+'watch' => 'Và adrē',
+'watchthispage' => 'Và adrē a cla pàgina ché',
+'unwatch' => 'Andêr mìa adrē',
 
 'created' => 'creät',
 'changed' => 'mudifegat',
 
 # Delete
-'delete-confirm' => 'Cancellä "$1"',
-'delete-legend' => 'Cancellä',
+'delete-confirm' => 'Scanşela "$1"',
+'delete-legend' => 'Scanşela',
 
 # Rollback
-'rollback_short' => 'Turne indré',
-'rollbacklink' => 'Avé indré la mudifech ad prima',
-'rollbackfailed' => 'Si mia riussì a turnä indré',
+'rollback_short' => 'Tōrna a préma dal mudéfichi',
+'rollbacklink' => 'tōrna a préma dal mudéfichi',
+'rollbackfailed' => "An t'é mia turnê indrē",
 
 # Protect
 'pagesize' => '(byte)',
 
 # Restrictions (nouns)
-'restriction-edit' => 'Mudifich',
-'restriction-move' => 'Spusta',
-'restriction-create' => 'Creä',
-'restriction-upload' => 'Caricä',
+'restriction-edit' => 'Mudéfichi',
+'restriction-move' => 'Spôsta',
+'restriction-create' => 'Invèinta',
+'restriction-upload' => 'Cârga',
 
 # Undelete
-'undeletelink' => 'vada/turna indré',
-'undeleteviewlink' => 'vada',
-'undelete-show-file-submit' => 'Sì',
+'undeletelink' => 'guêrda/recóper',
+'undeleteviewlink' => 'Guêrda',
+'undelete-show-file-submit' => 'Sé',
 
 # Namespace form on various pages
-'namespace' => 'Namespace:',
-'blanknamespace' => '(Principäl)',
+'namespace' => 'Spâsi di nòm',
+'blanknamespace' => '(Principêl)',
 
 # Contributions
-'contributions' => "Contribüdi de l'uteint",
-'contributions-title' => 'Contribüdi ed $1',
-'mycontris' => 'Le mé contribüdi',
-'contribsub2' => 'Par $1 ($2)',
-'uctop' => '(ültim par la pàgin)',
+'contributions' => 'Lavōr fât da {{GENDER:$1|utèint}}',
+'contributions-title' => 'Lavōr ed $1',
+'mycontris' => 'I mē lavōr',
+'contribsub2' => 'Per {{GENDER:$3|$1}}($2)',
+'uctop' => "(d'adèsa)",
 
-'sp-contributions-submit' => 'Cercä',
+'sp-contributions-submit' => 'Sērca',
 
 # What links here
+'whatlinkshere' => 'A pûnten ché',
 'whatlinkshere-page' => 'Pàgina:',
-'whatlinkshere-links' => '← cullegameint',
+'whatlinkshere-links' => '← colegamèint',
 
 # Block/unblock
-'block' => "Bluccä l'uteint",
-'unblock' => "Sbluccä l'uteint",
-'blockip' => "Bluccä l'uteint",
-'blockip-title' => "Bluccä l'uteint",
-'blockip-legend' => "Bluccä l'uteint",
-'ipbotheroption' => 'ätar',
-'ipb-unblock-addr' => 'Sbluccä $1',
-'unblockip' => "Sbluccä l'uteint",
-'blocklist' => 'Uteint bluccä',
-'ipblocklist-submit' => 'Cercä',
-'ipblocklist-otherblocks' => 'Ätar {{PLURAL:$1|blocc|blocc}}',
-'blocklink' => 'blocc',
-'unblocklink' => 'sblocc',
-'change-blocklink' => 'cambiä al blocc',
-'contribslink' => 'cuntribüti',
-'unblocklogentry' => "l'à sbluccä $1",
+'block' => "Blôca l'utèint",
+'unblock' => "Şblôcä l'utèint",
+'blockip' => "Blôcä l'utèint",
+'blockip-legend' => "Blôcä l'utèint",
+'ipb-unblock-addr' => 'Şblôcä $1',
+'unblockip' => "Şblôcä l'utèint",
+'blocklist' => 'Utèint bluchê',
+'ipblocklist-submit' => 'Sērca',
+'ipblocklist-otherblocks' => 'Êter {{PLURAL:$1|blôch}}',
+'blocklink' => 'blôca',
+'unblocklink' => 'şblôca',
+'change-blocklink' => 'câmbia blôch',
+'contribslink' => 'lavōr',
+'unblocklogentry' => "l'à şbluchê $1",
 
 # Move page
-'move-page' => 'Spustameint ad $1',
-'move-page-legend' => 'Spustä la pàgina',
-'movearticle' => 'Spustä la pàgina:',
-'movepagebtn' => 'Spustä la pàgina',
-'movelogpage' => 'Spustameint',
-'revertmove' => 'Turné indré',
+'move-page' => 'Spustamèint ed $1',
+'move-page-legend' => 'Spustamèint ed pàgina',
+'movearticle' => 'Spôsta la pàgina:',
+'movepagebtn' => 'Spôsta la pàgina',
+'movelogpage' => 'Spustamèint',
+'revertmove' => 'armèt',
 
 # Export
-'export-submit' => 'Esporta',
+'export-submit' => 'Pôrta fōra',
 
 # Namespace 8 related
-'allmessages-filter-all' => 'Tütt',
-'allmessages-language' => 'Leingua:',
-'allmessages-filter-submit' => 'Vé',
+'allmessages-filter-all' => 'Tót',
+'allmessages-language' => 'Léngua:',
+'allmessages-filter-submit' => 'Và',
 
 # Thumbnails
-'thumbnail-more' => 'Allargä',
+'thumbnail-more' => 'Ingrandés',
 
 # Special:Import
-'import-upload-filename' => 'Nom dal file:',
-'import-comment' => 'Uggett:',
-'import-upload' => 'Caricä dat XML',
+'import-upload-filename' => "Nòm dal 'file':",
+'import-comment' => 'Argumèint:',
+'import-upload' => 'Cârga infurmasiòun XML',
 
 # Tooltip help for the actions
-'tooltip-pt-logout' => 'Üscì',
-'tooltip-ca-move' => 'Spustä custa pàgina ché',
-'tooltip-search' => 'Cercä deintar ad {{SITENAME}}',
-'tooltip-p-logo' => 'Väda la pàgina principäl',
-'tooltip-n-mainpage' => 'Väda la pàgina principäl',
-'tooltip-n-mainpage-description' => 'Väda la pàgina principäl',
-'tooltip-n-randompage' => 'Fa vëd una pàgina a cäs',
-'tooltip-n-help' => 'Pàgin di aiüt',
-'tooltip-t-upload' => 'Cärag file multimediäl',
-'tooltip-ca-nstab-project' => 'Vadä la pàgina dal prugett',
-'tooltip-ca-nstab-image' => ' 
-Vadä la pàgina dal file',
-'tooltip-ca-nstab-template' => 'Väda la template',
+'tooltip-pt-userpage' => 'La tó pàgina utèint',
+'tooltip-pt-mytalk' => "La tó pàgina 'd discusiòun.",
+'tooltip-pt-preferences' => 'Al mē preferèinsi.',
+'tooltip-pt-watchlist' => "Elèinch dal pàgini che t'é drē tgnîr sòta uservasiòun.",
+'tooltip-pt-mycontris' => 'Elèinch di tō lavōr.',
+'tooltip-pt-login' => "A 's cunsélia 'd fêr la registrasiòun, ânca s' an n'é mia ubligatôri.",
+'tooltip-pt-logout' => 'Và fōra',
+'tooltip-ca-talk' => 'Guêrda al discusiòun relatîvi a cla pàgina chè.',
+'tooltip-ca-edit' => 'Ét pō mudifiche cla pàgina ché. Per piaşèir drōva al ptòun "Guêrda préma" préma \'d salvêr còl che t\'é fât.',
+'tooltip-ca-viewsource' => "Cla pàgina ché l'é sòta prutesiòun, mó 't pō vèder al só côdis surzéia.",
+'tooltip-ca-history' => 'Revişiòun fâti a cla pàgina ché.',
+'tooltip-ca-move' => 'Spôsta cla pàgina ché (câmbia tétol)',
+'tooltip-ca-watch' => "Zûnta cla pàgina ché a la tó lésta di tgnû 'd ôc specêl.",
+'tooltip-search' => 'Sērca dèinter ed {{SITENAME}}',
+'tooltip-search-fulltext' => 'Sērca int al pàgini al tèst e-sgnê.',
+'tooltip-p-logo' => 'Guêrda la pàgina principêla',
+'tooltip-n-mainpage' => 'Guêrda la pàgina principêla',
+'tooltip-n-mainpage-description' => 'Guêrda la pàgina principêlal',
+'tooltip-n-portal' => "Spiegasiòun dal prugèt, còl ch'ét pō fêr, in dó catêr al côşi.",
+'tooltip-n-currentevents' => "Infurmasiòun só i fât 'd adèsa.",
+'tooltip-n-recentchanges' => 'Elèinch dal j ûltmi mudéfichi dal sît',
+'tooltip-n-randompage' => "Fà vèder 'na pàgina a chêş",
+'tooltip-n-help' => "Pàgini 'd ajót",
+'tooltip-t-whatlinkshere' => "Elèinch ed tót' al pàgini ch'în coleghêdi a còsta.",
+'tooltip-t-recentchangeslinked' => 'Elèinch dal j ûltmi mudéfichi al pàgini coleghêdi a còsta.',
+'tooltip-feed-atom' => 'Feed Atom per cla pàgina ché.',
+'tooltip-t-upload' => "Cârga un 'file'",
+'tooltip-t-specialpages' => 'Elèinch ed tót al pàgini specêli',
+'tooltip-t-print' => 'Per stampêr cla pàgina ché.',
+'tooltip-t-permalink' => "Colegamèint fés a cla rervişiòun ché 'd  la pàgina.",
+'tooltip-ca-nstab-main' => 'Guêrda la pàgina',
+'tooltip-ca-nstab-project' => 'Guêrda la pàgina dal prugèt',
+'tooltip-ca-nstab-image' => "Guêrda la pàgina dal 'file'",
+'tooltip-ca-nstab-template' => "Guêrda 'l template",
 'tooltip-ca-nstab-help' => "Vadä la pàgina d'aiüt",
 'tooltip-ca-nstab-category' => "Vadä la pàgina d'la categoria",
-'tooltip-save' => 'Salvä li tò cambiameint',
+'tooltip-save' => 'Sêlva al mudéfichi',
+'tooltip-rollback' => "\"Rollback\" al scanşèla cun un cléch tót' al mudéfichi fâti a cla pàgina ché da l'ûltem ch' al gh'à més al mân.",
+'tooltip-undo' => '"Scanşèla" al permèt de scanşlêr cla mudéfica ché e l\'arvés al mudèl ed mudéfica in môd "Guerda préma". E al permèt ed mèter dèinter \'na spiegasiòun int l\' elemèint ed la mudéfica.',
 
 # Attribution
 'others' => 'ätar',
 
 # Info page
-'pageinfo-header-edits' => 'Mudifich',
-'pageinfo-views' => 'Nümar ad visit',
-'pageinfo-watchers' => 'Numar ad visitador',
-'pageinfo-edits' => 'Nümar ad mudifich',
-'pageinfo-authors' => 'Nümar ad devers autor',
+'pageinfo-header-edits' => 'Stòria dal mudéfichi',
+'pageinfo-views' => 'Nómer dal vîÅ\9fiti',
+'pageinfo-watchers' => "Nómer  'd utèint che gh'àn la pàgina sòt uservasiòun.",
+'pageinfo-edits' => 'Nómer totêl dal mudéfichi',
+'pageinfo-authors' => 'Nómer totêl di divêrs avtôr',
 
 # Browsing diffs
-'previousdiff' => "← Mudifich piö vecc'",
-'nextdiff' => 'Mudifich piö növa →',
+'previousdiff' => "← Diferèinsa 'd préma",
+'nextdiff' => 'Diferèinsa dôp →',
 
 # Media information
-'file-info-gif-looped' => 'ciclich',
-'file-info-png-looped' => 'ciclich',
+'file-info-gif-looped' => 'A ripetisiòun',
+'file-info-png-looped' => 'A ripetisiòun',
 
 # Special:NewFiles
-'newimages-legend' => 'Nom dal file',
+'newimages-legend' => 'Fîltra',
 'showhidebots' => '($1 i bot)',
-'ilsubmit' => 'Cercä',
-'bydate' => 'par data',
+'ilsubmit' => 'Sērca',
+'bydate' => 'per dâta',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 'ago' => '$1 fa',
 
+# Bad image list
+'bad_image_list' => "La manēra l'é còsta:
+
+a vînen cunsidrê sōl j elèinch puntê (ríghi che cumîncen cun al carâter *). Al prém colegamèint só ògni rîga al dēv èser un colegamèint a un 'file' mìa vrû. I colegamèint che vînen dôp, int l'istèsa rîga, în cunsidrê cme un chêş (oséia, pàgini in dó al 'file' al pōl èser arciamê normalmèint).",
+
 # Metadata
-'metadata' => 'Metadat',
+'metadata' => 'Metadati',
 
 # Exif tags
 'exif-exposuretime-format' => '$1 s ($2)',
-'exif-gpsareainformation' => "Nom d'la zona GPS",
-'exif-gpsdatestamp' => 'Data GPS',
-'exif-source' => 'Font',
-'exif-languagecode' => 'Leingva',
-'exif-iimcategory' => 'Categuria',
-'exif-identifier' => 'Identificativ',
+'exif-gpsareainformation' => 'Nòm ed la zôna GPS',
+'exif-gpsdatestamp' => 'Dâta GPS',
+'exif-source' => 'Surzéia',
+'exif-languagecode' => 'Léngva',
+'exif-iimcategory' => 'Categuréia',
+'exif-identifier' => 'Identificatîv',
 
 # 'all' in various places, this might be different for inflected languages
-'watchlistall2' => 'tütt',
-'namespacesall' => 'tütt',
-'monthsall' => 'tütt',
-'limitall' => 'tütt',
+'watchlistall2' => 'tót',
+'namespacesall' => 'tót',
+'monthsall' => 'tót',
 
 # Delete conflict
-'recreate' => 'Creä ad növ',
+'recreate' => 'Tōrna a fêr',
 
 # action=purge
-'confirm_purge_button' => 'OK',
+'confirm_purge_button' => 'Va bèin',
 
 # action=watch/unwatch
-'confirm-watch-button' => 'OK',
-'confirm-unwatch-button' => 'OK',
+'confirm-watch-button' => 'Va bèin',
+'confirm-unwatch-button' => 'Va bèin',
 
 # Multipage image navigation
-'imgmultigo' => 'Vé!',
-'imgmultigoto' => "Vé in s'la pàgina $1",
+'imgmultigo' => 'Và!',
+'imgmultigoto' => 'Và a la pàgina $1',
 
 # Table pager
-'ascending_abbrev' => 'cresc',
-'descending_abbrev' => 'decresc',
-'table_pager_first' => 'Prima pàgina',
-'table_pager_last' => 'Ã\9cltima pàgina',
-'table_pager_limit_submit' => 'Vé',
+'ascending_abbrev' => 'crès',
+'descending_abbrev' => 'câl',
+'table_pager_first' => 'Préma pàgina',
+'table_pager_last' => 'Ã\9bltma pàgina',
+'table_pager_limit_submit' => 'Và',
 
 # Watchlist editor
-'watchlistedit-raw-titles' => 'Titul:',
+'watchlistedit-raw-titles' => 'Tétol:',
 
 # Special:Version
-'version' => 'Version',
-'version-specialpages' => 'Pàgin speciäl',
-'version-other' => 'Ã\84tar',
-'version-version' => '(Version $1)',
-'version-license' => 'Licinza',
-'version-poweredby-others' => 'ätar',
+'version' => 'Versiòun',
+'version-specialpages' => 'Pàgina specêla',
+'version-other' => 'Ã\8ater',
+'version-version' => '(Versiòun $1)',
+'version-license' => 'Licèinsa',
+'version-poweredby-others' => 'êter',
 
 # Special:FileDuplicateSearch
-'fileduplicatesearch-filename' => 'Nom dal file:',
-'fileduplicatesearch-submit' => 'Cercä',
+'fileduplicatesearch-filename' => "Nòm dal 'file':",
+'fileduplicatesearch-submit' => 'Sērca',
 
 # Special:SpecialPages
-'specialpages' => 'Pàgin speciäl',
+'specialpages' => 'Pàgini specêli',
 
 # Special:Tags
-'tags-edit' => 'mudifich',
+'tags-edit' => 'mudéfica',
 
 # Special:ComparePages
 'compare-page1' => 'Pàgina 1',
 'compare-page2' => 'Pàgina 2',
-'compare-rev1' => 'Revisiòn 1',
-'compare-rev2' => 'Revisiòn 2',
+'compare-rev1' => 'Revişiòn 1',
+'compare-rev2' => 'Revişiòn 2',
 
 # HTML forms
-'htmlform-reset' => 'Turna indré cul la mudifich',
-'htmlform-selectorother-other' => 'Ã\84tar',
+'htmlform-reset' => 'Scanşèla la mudéfica',
+'htmlform-selectorother-other' => 'Ã\8ater',
 
 # New logging system
-'rightsnone' => '(ansöin)',
+'rightsnone' => '(nisûn)',
 
 # Feedback
-'feedback-subject' => 'Uggett:',
-'feedback-message' => "Messagg':",
-'feedback-cancel' => 'Cancellä',
+'feedback-subject' => 'Argomèint:',
+'feedback-message' => 'Mesâg',
+'feedback-cancel' => 'Scanşela',
 
 );
index a4c2056..f645531 100644 (file)
@@ -1615,6 +1615,9 @@ Please check the comparison below to verify that this is what you want to do, an
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Cannot create account',
+'cantcreateaccount-range-text' => "Account creation from IP addresses in the range '''$1''', which includes your IP address ('''$4'''), has been blocked by [[User:$3|$3]].
+
+The reason given by $3 is ''$2''",
 'cantcreateaccount-text' => "Account creation from this IP address ('''$1''') has been blocked by [[User:$3|$3]].
 
 The reason given by $3 is ''$2''",
@@ -3364,7 +3367,7 @@ See the [[Special:BlockList|block list]] for the list of currently operational b
 'ipb_expiry_invalid'              => 'Expiry time invalid.',
 'ipb_expiry_temp'                 => 'Hidden username blocks must be permanent.',
 'ipb_hide_invalid'                => 'Unable to suppress this account; it may have too many edits.',
-'ipb_already_blocked'             => '"$1" is already blocked',
+'ipb_already_blocked'             => '"$1" is already blocked.',
 'ipb-needreblock'                 => '$1 is already blocked. Do you want to change the settings?',
 'ipb-otherblocks-header'          => 'Other {{PLURAL:$1|block|blocks}}',
 'unblock-hideuser'                => 'You cannot unblock this user, as their username has been hidden.',
@@ -3379,12 +3382,12 @@ Please contact your Internet service provider or technical support of your organ
 'sorbs'                           => 'DNSBL', # only translate this message to other languages if you have to change it
 'sorbsreason'                     => 'Your IP address is listed as an open proxy in the DNSBL used by {{SITENAME}}.',
 'sorbs_create_account_reason'     => 'Your IP address is listed as an open proxy in the DNSBL used by {{SITENAME}}.
-You cannot create an account',
+You cannot create an account.',
 'xffblockreason'                  => 'An IP address present in the X-Forwarded-For header, either yours or that of a proxy server you are using, has been blocked. The original block reason was: $1',
 'cant-see-hidden-user'            => "The user you are trying to block has already been blocked and hidden.
 Since you do not have the hideuser right, you cannot see or edit the user's block.",
-'ipbblocked'                      => 'You cannot block or unblock other users because you are yourself blocked',
-'ipbnounblockself'                => 'You are not allowed to unblock yourself',
+'ipbblocked'                      => 'You cannot block or unblock other users because you are yourself blocked.',
+'ipbnounblockself'                => 'You are not allowed to unblock yourself.',
 'ipb-default-expiry'              => '', # do not translate or duplicate this message to other languages
 
 # Developer tools
@@ -4839,15 +4842,16 @@ You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU Gen
 'version-entrypoints-load-php'          => '[https://www.mediawiki.org/wiki/Manual:load.php load.php]', # do not translate or duplicate this message to other languages
 
 # Special:Redirect
-'redirect'            => 'Redirect by file, user, or revision ID',
+'redirect'            => 'Redirect by file, user, page or revision ID',
 'redirect-legend'     => 'Redirect to a file or page',
 'redirect-text'       => '', # do not translate or duplicate this message to other languages
-'redirect-summary'    => 'This special page redirects to a file (given the file name), a page (given a revision ID), or a user page (given a numeric user ID). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary'    => 'This special page redirects to a file (given the file name), a page (given a revision ID or page ID), or a user page (given a numeric user ID). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit'     => 'Go',
 'redirect-lookup'     => 'Lookup:',
 'redirect-value'      => 'Value:',
 'redirect-user'       => 'User ID',
 'redirect-revision'   => 'Page revision',
+'redirect-page'       => 'Page ID',
 'redirect-file'       => 'File name',
 'redirect-not-exists' => 'Value not found',
 
index 1f94a67..6991ab8 100644 (file)
@@ -1128,7 +1128,7 @@ La última entrada del registro de bloqueos se proporciona debajo para mayor ref
 '''¡Aún no se ha guardado!'''",
 'sitejspreview' => "'''Recuerda que sólo estás previsualizando este código JavaScript.'''
 '''¡Aún no se ha guardado!'''",
-'userinvalidcssjstitle' => "'''Aviso:''' No existe la piel «$1». Recuerda que las páginas personalizadas ''.css'' y ''.js'' tienen un título en minúsculas. Por ejemplo, {{ns:user}}:Ejemplo/vector.css en vez de {{ns:user}}:Ejemplo/Vector.css.",
+'userinvalidcssjstitle' => "'''Aviso:''' No existe la apariencia «$1». Recuerda que las páginas personalizadas ''.css'' y ''.js'' tienen un título en minúsculas. Por ejemplo, {{ns:user}}:Ejemplo/vector.css en vez de {{ns:user}}:Ejemplo/Vector.css.",
 'updated' => '(Actualizado)',
 'note' => "'''Nota:'''",
 'previewnote' => "'''Recuerda que esto es solo una previsualización.'''
@@ -3184,10 +3184,10 @@ Permite añadir una razón al resumen de edición.',
 
 # Stylesheets
 'common.css' => '/* El CSS colocado en esta página será aplicado a todas las apariencias */',
-'cologneblue.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "Cologne Blue" */',
-'monobook.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "MonoBook" */',
-'modern.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "Modern" */',
-'vector.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "Vector" */',
+'cologneblue.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia Cologne Blue */',
+'monobook.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia "MonoBook" */',
+'modern.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia Moderna */',
+'vector.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia "Vector" */',
 'print.css' => '/* Los estilos CSS colocados aquí afectarán la impresión */',
 'noscript.css' => '/* Los estilos CSS colocados aquí se aplicarán a los usuarios que hayan desactivado el JavaScript en su navegador */',
 'group-autoconfirmed.css' => '/* Los estilos CSS colocados aquí se aplicarán para todos los usuarios del grupo Usuarios autoconfirmados */',
@@ -3198,9 +3198,9 @@ Permite añadir una razón al resumen de edición.',
 # Scripts
 'common.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios en cada carga de página */',
 'cologneblue.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Colonia azul */',
-'monobook.js' => '/* El código JavaScript que se ponga aquí será cargado por los usuarios de la piel MonoBook */',
-'modern.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Moderna */',
-'vector.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Vector */',
+'monobook.js' => '/* El código JavaScript que se ponga aquí será cargado por los usuarios de la apariencia MonoBook */',
+'modern.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la apariencia Moderna */',
+'vector.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la apariencia Vector */',
 'group-autoconfirmed.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Usuarios autoconfirmados */',
 'group-bot.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Bots */',
 'group-sysop.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Administradores */',
index aa8d0a6..3c3e02b 100644 (file)
@@ -470,7 +470,7 @@ Hau ez bada kasua, agian akats bat aurkitu duzu softwarean.
 Mesedez, bidali gertakar hau administradore bati, URLaren izena jarriz.',
 'missingarticle-rev' => '(berrikuspena#: $1)',
 'missingarticle-diff' => '(Ezb: $1, $2)',
-'readonly_lag' => 'Datu-basea automatikoki blokeatu da menpeko zerbitzariak nagusiarekin sinkronizatu bitartean',
+'readonly_lag' => 'Datu-basea automatikoki blokeatu da, menpeko zerbitzariak nagusiarekin sinkronizatu bitartean',
 'internalerror' => 'Barne errorea',
 'internalerror_info' => 'Barne errorea: $1',
 'fileappenderrorread' => 'Ezin izan da "$1" irakurri, gehitzean.',
@@ -500,7 +500,7 @@ Ez du arrazoirik eman.',
 'actionthrottled' => 'Ekintzaren gainetik pasa da',
 'actionthrottledtext' => 'Spamaren aurkako neurri gisa ekintza hau denbora tarte laburrean aldi askotan egiteko mugapena duzu, eta muga hori zeharkatu duzu.
 Saia zaitez berriro minutu batzuen buruan, mesedez.',
-'protectedpagetext' => 'Orrialde hau aldaketak saihesteko blokeatu egin da.',
+'protectedpagetext' => 'Orri hau babestu da, edizioak edo beste ekintza batzuk egin ez daitezen.',
 'viewsourcetext' => 'Orri honen iturburu-testua ikusi eta kopiatu dezakezu:',
 'viewyourtext' => "Ondorengo orri honetan '''zeuk egin dituzun aldaketen''' iturburu kodea ikus eta kopia dezakezu:",
 'protectedinterface' => 'Orrialde honek softwarearentzako interfaze testua gordetzen du eta blokeatuta dago bandalismoak saihesteko.
@@ -1205,7 +1205,7 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
 'prefs-beta' => 'Beta ezaugarriak',
 'prefs-datetime' => 'Data eta ordua',
 'prefs-labs' => 'Labs ezaugarriak',
-'prefs-user-pages' => 'Erabiltzaile orrialdeak',
+'prefs-user-pages' => 'Erabiltzaile orriak',
 'prefs-personal' => 'Erabiltzaile profila',
 'prefs-rc' => 'Azken aldaketak',
 'prefs-watchlist' => 'Jarraipen zerrenda',
@@ -1334,7 +1334,7 @@ Informazio hau publikoa da.',
 'userrights-notallowed' => 'Zure kontuak ez du baimenik erabiltzaile eskumenak aldatzeko.',
 'userrights-changeable-col' => 'Alda ditzakezun taldeak',
 'userrights-unchangeable-col' => 'Aldatu ezin ditzakezun taldeak',
-'userrights-conflict' => 'Erabiltzaile eskumenen aldaketak gatazka! Mesedez, gorde eta ziurtatu zure aldaketak.',
+'userrights-conflict' => 'Gatazka gertatu da erabiltzaile eskubideak aldatzean. Mesedez, berrikusi eta baieztatu zure aldaketak.',
 'userrights-removed-self' => 'Arrakasta izan duzu zure eskumenak kentzen. Beraz jada ezin duzu orrialde hau gehiago ikusi.',
 
 # Groups
@@ -1394,9 +1394,9 @@ Informazio hau publikoa da.',
 'right-undelete' => 'Ezabatutako orrialde bat itzularazi',
 'right-suppressrevision' => 'Administratzaileentzat izkutatutako berrikuspenak berrikusi edo berrezarri',
 'right-suppressionlog' => 'Log pribatuak ikusi',
-'right-block' => 'Beste lankideek edita ez dezaten blokeatu',
-'right-blockemail' => 'Erabiltzaile batek emailak bidal ez ditzan blokeatu',
-'right-hideuser' => 'Erabiltzaile izen bat blokeatu, publikotik izkutatuz',
+'right-block' => 'Blokeatu beste erabiltzaile batzuk, edita ez dezaten',
+'right-blockemail' => 'Erabiltzaile bati blokeatu mezu elektronikoak bidaltzeko aukera',
+'right-hideuser' => 'Blokeatu erabiltzaile izen bat, publikotik ezkutatuta',
 'right-ipblock-exempt' => 'IP blokeoen, auto-blokeoen eta maila blokeoen gainetik pasa.',
 'right-proxyunbannable' => 'Proxyen blokeo automatikoen gainetik pasa',
 'right-unblockself' => 'Beren burua desblokeatu',
@@ -1426,7 +1426,7 @@ Informazio hau publikoa da.',
 'right-mergehistory' => 'Orrialdeen historia batu',
 'right-userrights' => 'Erabiltzaile guztien eskumenak aldatu',
 'right-userrights-interwiki' => 'Beste wiki batzuetan erabiltzaileen eskumenak aldatu',
-'right-siteadmin' => 'Databasea blokeatu eta desblokeatu',
+'right-siteadmin' => 'Blokeatu eta desblokeatu datu basea blokeatu',
 'right-override-export-depth' => '5eko sakonerararteko loturiko orrialdeak barne esportatu',
 'right-sendemail' => 'Beste erabiltzaileei e-posta bidali',
 'right-passwordreset' => 'Ikusi pasahitza berrezartze e-postak',
@@ -1493,6 +1493,7 @@ Informazio hau publikoa da.',
 'recentchanges-label-bot' => 'Aldaketa hau bot batek egin du',
 'recentchanges-label-unpatrolled' => 'Aldaketa hau ez da oraindik patruilatua izan',
 'recentchanges-label-plusminus' => 'Orriaren neurriak byte kopuru honen gorabehera izan du',
+'recentchanges-legend-heading' => "'''Azalpenak:'''",
 'recentchanges-legend-newpage' => '(ikus, gainera, [[Special:NewPages|orri berrien zerrenda]])',
 'rcnotefrom' => 'Jarraian azaltzen diren aldaketak data honetatik aurrerakoak dira: <b>$2</b> (gehienez <b>$1</b> erakusten dira).',
 'rclistfrom' => 'Erakutsi $1 ondorengo aldaketa berriak',
@@ -2401,10 +2402,10 @@ Blokeo erregistroa azken sarrera ematen da azpian erreferentziarako:',
 
 # Block/unblock
 'autoblockid' => 'Blokeo automatikoa #$1',
-'block' => 'Erabiltzailea blokeatu',
+'block' => 'Blokeatu erabiltzailea',
 'unblock' => 'Erabiltzailea desblokeatu',
-'blockip' => 'Erabiltzailea blokeatu',
-'blockip-legend' => 'Erabiltzailea blokeatu',
+'blockip' => 'Blokeatu erabiltzailea',
+'blockip-legend' => 'Blokeatu erabiltzailea',
 'blockiptext' => 'IP helbide edo erabiltzaile izen bati idazketa baimenak kentzeko beheko formularioa erabil dezakezu. Ekintza hau bandalismoa saihesteko baino ez da burutu behar, eta beti ere [[{{MediaWiki:Policy-url}}|politikak]] errespetatuz. Blokeoaren arrazoi bat ere zehaztu ezazu (adibidez, orrialde batzuk zehaztuz).',
 'ipadressorusername' => 'IP Helbidea edo erabiltzaile izena',
 'ipbexpiry' => 'Iraungipena',
@@ -2417,15 +2418,17 @@ Blokeo erregistroa azken sarrera ematen da azpian erreferentziarako:',
 ** Beste erabiltzaileei mehatxatzea
 ** Kontu ugari erabiltzea
 ** Erabiltzaile izen desegokia',
-'ipbcreateaccount' => 'Kontua sortzea debekatu',
-'ipbemailban' => 'Erabiltzaileak e-mailak bidal ditzan ekidin',
+'ipb-hardblock' => 'Galarazi izena emandako erabiltzaileek IP helbide honetatik editatzea',
+'ipbcreateaccount' => 'Debekatu konturik sortzea',
+'ipbemailban' => 'Galarazi erabiltzaile honi mezu elektronikoak bidal ditzan',
 'ipbenableautoblock' => 'Erabiltzaile honek erabilitako azken IP helbidea automatikoki blokeatu, eta baita erabili dezakeen beste edozein IP ere',
-'ipbsubmit' => 'Erabiltzaile hau blokeatu',
+'ipbsubmit' => 'Blokeatu erabiltzaile hau',
 'ipbother' => 'Beste denbora-tarte bat',
 'ipboptions' => '2 ordu:2 hours,1 egun:1 day,3 egun:3 days,astebete:1 week,2 aste:2 weeks,hilabete:1 month,3 hilabete:3 months,6 hilabete:6 months,urtebete:1 year,betiko:infinite',
 'ipbhidename' => 'Lankide izena aldaketa eta zerrendetatik ezkutatu',
-'ipbwatchuser' => 'Erabiltzaile honen erabiltzaile eta eztabaida orrialdeak jarraitu',
-'ipb-change-block' => 'Lankidea honako balioekin bir-blokeatu',
+'ipbwatchuser' => 'Egin jarraipena erabiltzaile honen erabiltzaile eta eztabaida orriei',
+'ipb-disableusertalk' => 'Galarazi erabiltzaile honi bere eztabaida orria editatzea, blokeatuta dagoen aldian',
+'ipb-change-block' => 'Berriz blokeatu erabiltzailea, parametro hauekin',
 'ipb-confirm' => 'Blokeoa baieztatu',
 'badipaddress' => 'Baliogabeko IP helbidea',
 'blockipsuccesssub' => 'Blokeoa burutu da',
@@ -2474,10 +2477,9 @@ Ikus [[Special:BlockList|blokeoen zerrenda]] blokeoak aztertzeko.',
 'emaillink' => 'E-maila bidali',
 'autoblocker' => '"[[User:$1|$1]]"(e)k berriki erabili duen IP helbidea duzulako autoblokeatu zaizu. $1(e)k emandako arrazoia zera da: "\'\'\'$2\'\'\'"',
 'blocklogpage' => 'Blokeo erregistroa',
-'blocklog-showlog' => 'Lankide hau aurretik blokeatua izan da.
-Blokeo erregistroa ematen da azpian erreferentziarako:',
-'blocklog-showsuppresslog' => 'Lankide hau aurretik blokeatua eta ezkutatua izan da.
-Erregistroa ematen da azpian erreferentziarako:',
+'blocklog-showlog' => 'Lankide hau blokeatua izan da lehenago ere.
+Hona hemen blokeoen erregistroa, erreferentzia gisa:',
+'blocklog-showsuppresslog' => 'Lankide hau blokeatua eta ezkutatua izan da lehenago ere. Hona hemen erregistroa, erreferentzia gisa:',
 'blocklogentry' => 'wikilariak [[$1]] erabiltzailea blokeatu du. Blokeoaldia: $2 $3',
 'reblock-logentry' => '[[$1]] wikilariari blokeoaldia aldatu diogu. Blokeoaldi berria: $2 $3',
 'blocklogtext' => 'Erabiltzaileen blokeoen ezarpen eta ezabaketen erregistroa da hau. 
@@ -2512,16 +2514,16 @@ Hala ere, $2-(r)en parte denez, blokeoa kendu daiteke.',
 'ipbnounblockself' => 'Ez duzu baimenik zure buruari blokeoa kentzeko',
 
 # Developer tools
-'lockdb' => 'Datu-basea blokeatu',
+'lockdb' => 'Blokeatu datu basea',
 'unlockdb' => 'Datu-basea desblokeatu',
 'lockdbtext' => 'Datu-basea blokeatzeak edozein erabiltzailek orrialdeak aldatzea, hobespenak aldatzea, jarraipen zerrendan aldaketak egitea, eta datu-basean edozein aldaketa behar duen edozein ekintza galaraziko du. Mesedez, baieztatu zure asmoa hori dela, eta blokeoa kenduko duzula mantenua burutu ondoren.',
 'unlockdbtext' => 'Datu-basea desblokeatzerakoan erabiltzaile guztiek orrialdeak aldatu, beraien hobespenak ezarri, jarraipen zerrendan aldaketak egin eta beste eragiketa batzuk burutzeko gaitasuna leheneratuko du. Mesedez, baieztatu egin nahi duzuna hori dela.',
 'lockconfirm' => 'Bai, datu-basea blokeatu nahi dut',
 'unlockconfirm' => 'Bai, datu-basea desblokeatu nahi dut',
-'lockbtn' => 'Datu-basea blokeatu',
+'lockbtn' => 'Blokeatu datu basea',
 'unlockbtn' => 'Datu-basea desblokeatu',
 'locknoconfirm' => 'Ez duzu baieztapen kutxa hautatu.',
-'lockdbsuccesssub' => 'Datu-basea blokeatu egin da',
+'lockdbsuccesssub' => 'Datu-basea blokeatu da',
 'unlockdbsuccesssub' => 'Datu-basearen blokeoa kendu da',
 'lockdbsuccesstext' => 'Datu-basea blokeatu egin da. <br />Ez ahaztu mantenu lanak burutu ondoren [[Special:UnlockDB|blokeoa kentzeaz]].',
 'unlockdbsuccesstext' => 'Datu-basea desblokeatu egin da.',
index 0d698e4..c96e774 100644 (file)
@@ -1344,6 +1344,8 @@ $2
 'cantcreateaccount-text' => "امكان ساختن حساب کاربری از این این نشانی آی‌پی ('''$1''') توسط [[User:$3|$3]] سلب شده است.
 
 دلیل ارائه شده توسط $3 چنین است: $2",
+'cantcreateaccount-range-text' => "ایجاد حساب از آدرس آی‌پی در مجموعه‌ی '''$1'''، که شامل آدرس آی‌پی شما ('''$4''') است، توسط [[User:$3|$3]] متوقف شده‌است.
+دلیل ارائه شده توسط $3، $2 است.",
 
 # History pages
 'viewpagelogs' => 'نمایش سیاهه‌های این صفحه',
@@ -1876,13 +1878,14 @@ $1",
 'recentchanges-label-bot' => 'این ویرایش را یک ربات انجام داده‌است',
 'recentchanges-label-unpatrolled' => 'این ویرایش هنوز گشت‌زنی نشده‌است',
 'recentchanges-label-plusminus' => 'حجم صفحه به اندازه این بایت‌ها تغییر یافته‌است',
+'recentchanges-legend-heading' => "'''اختصارها:'''",
 'recentchanges-legend-newpage' => '(همچنین به [[Special:NewPages|فهرست صفحات جدید]] نگاه کنید)',
 'recentchanges-legend-plusminus' => "('' ±۱۲۳'')",
 'rcnotefrom' => 'در زیر تغییرات از تاریخ <b>$2</b> آمده‌اند (تا <b>$1</b> مورد نشان داده می‌شود).',
 'rclistfrom' => 'نمایش تغییرات جدید با شروع از $1',
 'rcshowhideminor' => '$1 ویرایش‌های جزئی',
 'rcshowhidebots' => '$1 ربات‌ها',
-'rcshowhideliu' => 'کاربران نسخه $1 ثبت‌نام‌کردند',
+'rcshowhideliu' => 'کاربران نسخهٔ $1 ثبت‌نام‌ کردند',
 'rcshowhideanons' => '$1 کاربران ناشناس',
 'rcshowhidepatr' => '$1 ویرایش‌های گشت‌خورده',
 'rcshowhidemine' => '$1 ویرایش‌های من',
@@ -3998,14 +4001,14 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(زبان پیش‌فرض)',
-'img-lang-info' => 'ارائه این تصویر در  $1   $2 .',
+'img-lang-info' => 'ارائه این تصویر در  $1 .  $2',
 'img-lang-go' => 'برو',
 
 # Table pager
 'ascending_abbrev' => 'صعودی',
 'descending_abbrev' => 'نزولی',
 'table_pager_next' => 'صفحهٔ بعدی',
-'table_pager_prev' => 'صفحه قبل',
+'table_pager_prev' => 'صفحهٔ قبل',
 'table_pager_first' => 'صفحهٔ نخست',
 'table_pager_last' => 'صفحهٔ آخر',
 'table_pager_limit' => 'نمایش $1 مورد در هر صفحه',
@@ -4163,13 +4166,15 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath مسیر اسکریپت]',
 
 # Special:Redirect
-'redirect' => 'تغییرمسیر توسط پرونده، کاربر یا شناسهٔ نسخه',
+'redirect' => 'تغییرمسیر توسط پرونده، کاربر، صفحه یا شناسهٔ نسخه',
 'redirect-legend' => 'تغییرمسیر به یک پرونده یا صفحه',
-'redirect-summary' => 'این صفحهٔ ویژه به پرونده (نام پرونده داده‌شده)، صفحه (شماره شناسهٔ صفحه داده‌شده) یا صفحهٔ کاربری (شناسهٔ عددی کاربری داده‌شده) تغییرمسیر می‌یابد. طرز استفاده: [[{{#Special:Redirect}}/file/Example.jpg]]، [[{{#Special:Redirect}}/revision/328429]] یا [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'این صفحهٔ ویژه به پرونده (نام پرونده داده‌شده)، صفحه (شماره شناسهٔ صفحه یا شماره نسخهٔ داده‌شده) یا صفحهٔ کاربری (شناسهٔ عددی کاربری داده‌شده) تغییرمسیر می‌یابد. طرز استفاده: [[{{#Special:Redirect}}/file/Example.jpg]]، 
+[[{{#Special:Redirect}}/page/64308]]، [[{{#Special:Redirect}}/revision/328429]] یا [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'برو',
 'redirect-lookup' => 'جستجو:',
 'redirect-value' => 'مقدار:',
 'redirect-user' => 'شناسهٔ کاربر',
+'redirect-page' => 'شناسهٔ صفحه',
 'redirect-revision' => 'نسخهٔ صفحه',
 'redirect-file' => 'نام پرونده',
 'redirect-not-exists' => 'مقدار پیدا نشد',
@@ -4407,10 +4412,12 @@ $5
 'expand_templates_input' => 'متن ورودی:',
 'expand_templates_output' => 'نتیجه',
 'expand_templates_xml_output' => 'خروجی XML',
+'expand_templates_html_output' => 'خروجی اچ‌تی‌ام‌ال خام',
 'expand_templates_ok' => 'تأیید',
 'expand_templates_remove_comments' => 'حذف ملاحظات',
 'expand_templates_remove_nowiki' => 'خنثی کردن تگ‌های <nowiki> در نتیجه',
 'expand_templates_generate_xml' => 'نمایش درخت تجزیهٔ XML',
+'expand_templates_generate_rawhtml' => 'نمایش اچ‌تی‌ام‌ال خام',
 'expand_templates_preview' => 'پیش‌نمایش',
 
 );
index 149c30f..0475e13 100644 (file)
@@ -1701,12 +1701,13 @@ Tämä tieto on julkinen.',
 'recentchanges-label-bot' => 'Tämän muutoksen suoritti botti',
 'recentchanges-label-unpatrolled' => 'Tätä muutosta ei ole vielä tarkastettu',
 'recentchanges-label-plusminus' => 'Sivun koon muutos tavuina',
+'recentchanges-legend-heading' => "'''Selitys:'''",
 'recentchanges-legend-newpage' => '(katso myös [[Special:NewPages|lista uusista sivuista]])',
 'rcnotefrom' => 'Alla on muutokset <b>$2</b> lähtien. Enintään <b>$1</b> merkintää näytetään.',
 'rclistfrom' => 'Näytä uudet muutokset $1 alkaen',
 'rcshowhideminor' => '$1 pienet muutokset',
 'rcshowhidebots' => '$1 botit',
-'rcshowhideliu' => '$1 kirjautuneet käyttäjät',
+'rcshowhideliu' => '$1 rekisteröityneet käyttäjät',
 'rcshowhideanons' => '$1 anonyymit käyttäjät',
 'rcshowhidepatr' => '$1 tarkastetut muutokset',
 'rcshowhidemine' => '$1 omat muutokset',
index 365a328..31e798d 100644 (file)
@@ -1272,6 +1272,9 @@ Il devrait y avoir moins de $2 appel{{PLURAL:$2||s}}, alors qu'il y en a mainten
 'cantcreateaccount-text' => "La création de compte depuis cette adresse IP (<b>$1</b>) a été bloquée par [[User:$3|$3]].
 
 La raison donnée était ''$2''.",
+'cantcreateaccount-range-text' => "La création de compte depuis les adresses IP dans la plage '''$1''', qui comprend votre adresse IP ('''$4'''), ont été bloquées par [[User:$3|$3]].
+
+Le motif fourni par $3 est ''$2''",
 
 # History pages
 'viewpagelogs' => 'Voir les opérations sur cette page',
@@ -1799,6 +1802,7 @@ Cette information sera publique.',
 'recentchanges-label-bot' => 'Cette modification a été effectuée par un robot.',
 'recentchanges-label-unpatrolled' => "Cette modification n'a pas encore été patrouillée.",
 'recentchanges-label-plusminus' => 'La taille de la page a changé de ce nombre d’octets.',
+'recentchanges-legend-heading' => "'''Légende :'''",
 'recentchanges-legend-newpage' => '(voir aussi la [[Special:NewPages|liste des nouvelles pages]]).',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Voici les modifications effectuées depuis le '''$2''' ('''$1''' au maximum).",
@@ -4108,13 +4112,14 @@ Vous devriez avoir reçu [{{SERVER}}{{SCRIPTPATH}}/COPYING une copie de la Licen
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Chemin de script]',
 
 # Special:Redirect
-'redirect' => 'Redirigé par fichier, utilisateur, ou ID de révision',
+'redirect' => 'Redirigé par fichier, utilisateur, page ou ID de révision',
 'redirect-legend' => 'Rediriger vers une page ou un fichier',
-'redirect-summary' => 'Cette page spéciale redirige vers un fichier (nom de fichier fourni), une page (ID de révision fourni) ou une page d’utilisateur (identifiant numérique de l’utilisateur fourni). Utilisation : [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], ou [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Cette page spéciale redirige vers un fichier (nom de fichier fourni), une page (ID de révision ou de page fourni) ou une page d’utilisateur (identifiant numérique de l’utilisateur fourni). Utilisation : [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ou [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Valider',
 'redirect-lookup' => 'Recherche :',
 'redirect-value' => 'Valeur :',
 'redirect-user' => "ID de l'utilisateur",
+'redirect-page' => 'ID de page',
 'redirect-revision' => 'Révision de la page',
 'redirect-file' => 'Nom du fichier',
 'redirect-not-exists' => 'Valeur non trouvée',
@@ -4357,10 +4362,12 @@ En fait, elle réalise l'expansion de pratiquement tout ce qui est encadré par
 'expand_templates_input' => 'Texte wiki source :',
 'expand_templates_output' => 'Texte wiki obtenu après expansion',
 'expand_templates_xml_output' => 'Résultat intermédiaire de l’analyse, au format XML',
+'expand_templates_html_output' => 'Sortie en HTML brut',
 'expand_templates_ok' => 'Valider',
 'expand_templates_remove_comments' => 'Supprimer les commentaires',
 'expand_templates_remove_nowiki' => 'Supprime les marqueurs <nowiki> dans le résultat',
 'expand_templates_generate_xml' => 'Voir l’arborescence d’analyse XML',
+'expand_templates_generate_rawhtml' => 'Afficher le HTML brut',
 'expand_templates_preview' => 'Aperçu du rendu',
 
 );
index 88ba71b..b1668f1 100644 (file)
@@ -135,6 +135,8 @@ $messages = array(
 'tog-rememberpassword' => 'Visiti di me su chest sgarfadôr (par un massim di $1 {{PLURAL:$1|zornade|zornadis}})',
 'tog-watchcreations' => 'Zonte  lis pagjinis creadis e i file cjariats aes oservadis specials',
 'tog-watchdefault' => 'Zonte in automatic lis pagjinis che o cambii inte liste di chês tignudis di voli',
+'tog-watchmoves' => 'Zonte in automatic lis pagjinis che o cambii inte liste di chês tignudis di voli',
+'tog-watchdeletion' => 'Zonte in automatic lis pagjinis che o cambii inte liste di chês tignudis di voli',
 'tog-minordefault' => 'Imposte come opzion predeterminade ducj i cambiaments come piçui',
 'tog-previewontop' => 'Mostre anteprime parsore dal spazi pe modifiche',
 'tog-previewonfirst' => 'Mostre anteprime te prime modifiche',
@@ -149,16 +151,27 @@ $messages = array(
 'tog-forceeditsummary' => 'Domande conferme se il cjamp ogjet al è vueit',
 'tog-watchlisthideown' => 'Plate i miei cambiaments inte liste des pagjinis tignudis di voli',
 'tog-watchlisthidebots' => 'Plate i bot de liste dai oservâts speciai',
+'tog-watchlisthideminor' => 'Plate i piçui cambiaments de liste dai oservâts speciai',
+'tog-watchlisthideliu' => 'Plate lis modifichis dai utents regjstrâts de liste dai oservâts speciai',
+'tog-watchlisthideanons' => 'Palte lis modifichis dai utents anonims dai oservâts speciai',
+'tog-watchlisthidepatrolled' => 'Plate lis modifichis verificadis de liste dai oservâts speciai',
 'tog-ccmeonemails' => 'Mandimi une copie dai messaçs che o mandi ai altris utents',
+'tog-diffonly' => 'No mostrâ la pagjine dopo il control des versions',
 'tog-showhiddencats' => 'Mostre categoriis platadis',
+'tog-norollbackdiff' => 'No mostrâ lis diferencis dopo vê revocât une pagjine',
 'tog-useeditwarning' => 'Visimi cuant che o stoi par lassâ une pagjine dulà che a son cambiaments no salvâts',
+'tog-prefershttps' => 'Dopre simpri une conession sigure par acedi',
 
 'underline-always' => 'Simpri',
 'underline-never' => 'Mai',
 'underline-default' => 'Ten ilis impostazions dal Browser o de skin che tu stâs doprant',
 
 # Font style option in Special:Preferences
+'editfont-style' => 'Stîl di caratar de aree di scriture',
 'editfont-default' => 'Predeterminât dal sgarfadôr',
+'editfont-monospace' => 'Caratar a lungjece fisse',
+'editfont-sansserif' => 'Caratar sans-serif',
+'editfont-serif' => 'Caratar di scriture serif',
 
 # Dates
 'sunday' => 'Domenie',
@@ -211,6 +224,18 @@ $messages = array(
 'oct' => 'Otu',
 'nov' => 'Nov',
 'dec' => 'Dic',
+'january-date' => '$1 di Zenâr',
+'february-date' => '$1 di Fevrâr',
+'march-date' => '$1 di Març',
+'april-date' => '$1 di Avrîl',
+'may-date' => '$1 di Mai',
+'june-date' => '$1 di Jugn',
+'july-date' => '$1 di Lui',
+'august-date' => '$1 di Avost',
+'september-date' => '$1 di Setembar',
+'october-date' => '$1 di Otubar',
+'november-date' => '$1 di Novembar',
+'december-date' => '$1 di Dicembar',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Categorie|Categoriis}}',
@@ -227,13 +252,16 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|Cheste categorie e conten dome un file, mostrât ca sot.|Cheste categorie e conten {{PLURAL:$1|un file, mostrât|$1 files, mostrâts}} ca sot, suntun totâl di $2.}}',
 'category-file-count-limited' => 'Cheste categorie e conten {{PLURAL:$1|il file mostrât|i $1 files mostrâts}} ca sot.',
 'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Pagjinis indicizadis',
 'noindex-category' => 'Pagjinis no indicizadis',
+'broken-file-category' => 'Pagjnis cun leams a file no corets',
 
 'about' => 'Informazions',
 'article' => 'Vôs',
 'newwindow' => '(al vierç un gnûf barcon)',
 'cancel' => 'Scancele',
 'moredotdotdot' => 'Plui...',
+'morenotlisted' => 'La liste no je complete',
 'mypage' => 'Pagjine',
 'mytalk' => 'Discussions',
 'anontalk' => 'Discussion par chest IP',
@@ -247,6 +275,7 @@ $messages = array(
 'qbpageoptions' => 'Cheste pagjine',
 'qbmyoptions' => 'Mês pagjinis',
 'faq' => 'Domandis plui frecuentis',
+'faqpage' => 'Project:FAQ',
 
 # Vector skin
 'vector-action-addsection' => 'Gnove sezion',
@@ -255,6 +284,7 @@ $messages = array(
 'vector-action-protect' => 'Protêç',
 'vector-action-undelete' => 'Recupere',
 'vector-action-unprotect' => 'Gambie la protezion',
+'vector-simplesearch-preference' => 'Abilite la bare di ricjerche semplificade (dome pe Vector Skin)',
 'vector-view-create' => 'Cree',
 'vector-view-edit' => 'Cambie',
 'vector-view-history' => 'Cjale il storic',
@@ -264,6 +294,7 @@ $messages = array(
 'namespaces' => 'Spazis dai nons',
 'variants' => 'Variants',
 
+'navigation-heading' => 'Menù di Navigazion',
 'errorpagetitle' => 'Erôr',
 'returnto' => 'Torne a $1.',
 'tagline' => 'Di {{SITENAME}}',
@@ -285,6 +316,7 @@ $messages = array(
 'create-this-page' => 'Cree cheste pagjine',
 'delete' => 'Elimine',
 'deletethispage' => 'Elimine cheste pagjine',
+'undeletethispage' => 'Recupere cheste pagjine',
 'undelete_short' => 'Recupere {{PLURAL:$1|modifiche eliminade|$1 modifichis eliminadis}}',
 'viewdeleted_short' => 'Viôt {{PLURAL:$1|une modifiche eliminade|$1 modifichis eliminadis}}',
 'protect' => 'Protêç',
@@ -319,12 +351,16 @@ $messages = array(
 'jumpto' => 'Va a:',
 'jumptonavigation' => 'navigazion',
 'jumptosearch' => 'ricercje',
+'view-pool-error' => 'Scusinus ma i server a son sovrecjariats in chest moment. Masse utents a stan cjalant cheste pagjnie. Torne a provâ fra cualchi minût.
+
+$1',
+'pool-timeout' => 'Timeout durant la spiete dal sbolc.',
 'pool-errorunknown' => 'Erôr no cognossût',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
 'aboutsite' => 'Informazions su {{SITENAME}}',
 'aboutpage' => 'Project:Informazions',
-'copyright' => 'Il contignût al è disponibil sot de $1',
+'copyright' => 'Il contignût al è disponibil sot de licence $1 se nol è specificât in altre maniere',
 'copyrightpage' => '{{ns:project}}:Copyrights',
 'currentevents' => 'Lis gnovis',
 'currentevents-url' => 'Project:Lis gnovis',
@@ -334,18 +370,24 @@ $messages = array(
 'helppage' => 'Help:Contignûts',
 'mainpage' => 'Pagjine principâl',
 'mainpage-description' => 'Pagjine principâl',
+'policy-url' => 'Project:Politiche',
 'portal' => 'Ostarie',
 'portal-url' => 'Project:Ostarie',
 'privacy' => 'Politiche pe privacy',
 'privacypage' => 'Project:Politiche_pe_privacy',
 
 'badaccess' => 'Permès no suficients',
+'badaccess-group0' => 'No tu sês autorizât a  eseguî la azion domandade',
+'badaccess-groups' => 'La azione domandade è je pussibile dome dai utents {{PLURAL:$2|dal grup|di un di chescj grups}}: $1.',
 
 'versionrequired' => 'E covente la version $1 di MediaWiki',
+'versionrequiredtext' => 'La version $1 de MediaWiki a covente par doprâ cheste pagjine.
+Cjale la [[Special:Version|pagjine de version]].',
 
 'ok' => 'Va ben',
 'retrievedfrom' => 'Cjapât fûr di $1',
 'youhavenewmessages' => 'Tu âs $1 ($2).',
+'youhavenewmessagesmanyusers' => 'Tu âs $1 di tancj utents ($2)',
 'youhavenewmessagesmulti' => 'Tu âs gnûfs messaçs su $1',
 'editsection' => 'cambie',
 'editold' => 'cambie',
@@ -812,6 +854,7 @@ La tô direzion di pueste no ven mostrade cuant che i utents ti contatin.',
 'recentchanges-label-minor' => 'Chest al è un piçul cambiament',
 'recentchanges-label-bot' => 'Chest cambiament al è stât eseguît di un bot',
 'recentchanges-label-unpatrolled' => 'Chest cambiament nol è stât ancjemò verificât',
+'recentchanges-label-plusminus' => 'La dimension de pagjine e je cambiade di chest numar di byte',
 'rcnotefrom' => "Ca sot i cambiaments dal '''$2''' (fintremai al '''$1''').",
 'rclistfrom' => 'Mostre i ultins cambiaments dal $1',
 'rcshowhideminor' => '$1 i piçui cambiaments',
@@ -1292,7 +1335,7 @@ Tu puedis cambiâ il nivel di protezion di cheste pagjine, ma chest nol varà ef
 'move-page-legend' => 'Môf pagjine',
 'movepagetext' => "Cun il formulari ca sot tu puedis gambiâ il non a une pagjine, movint dut il sô storic al gnûf non.
 Il vieri titul al deventarà une pagjine di reindirizament al gnûf titul. I leams ae vecje pagjine no saran gambiâts; verifiche
-par plasê che no sedin reindirizaments doplis o no funzionants.
+par plasê che no sedin reindirizaments  [[Special:DoubleRedirects|doplis]] o [[Special:BrokenRedirects|no funzionants]].
 Tu sês responsabil che i leams a continui a mandâ tal puest just.
 
 Note che la pagjine '''no''' sarà movude se e je za une pagjine cul gnûf titul, a mancul che no sedi vueide o un reindirizament e
index ecbfdb0..89b8ea4 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Geitost
+ * @author Kening Aldgilles
  * @author Maartenvdbent
  * @author Purodha
  * @author Pyt
@@ -169,7 +170,7 @@ $messages = array(
 'tog-enotifminoredits' => 'E-mail my ek by lytse feroarings fan siden op myn folchlist',
 'tog-enotifrevealaddr' => 'Myn e-mailadres sjen litte yn e-mailberjochten',
 'tog-shownumberswatching' => 'It tal brûkers sjen litte dat dizze side folget',
-'tog-oldsig' => 'Hûdige sinjatuerprintallyk:',
+'tog-oldsig' => 'Aktuele sinjatuerprintallyk:',
 'tog-fancysig' => 'Sinjatuer as wikitekst behannelje (sûnder automatyske keppeling)',
 'tog-uselivepreview' => '"live proefbyld" brûke (JavaScript nedich - eksperimenteel)',
 'tog-forceeditsummary' => 'Warskôgje at ik de gearfetting leech lit.',
@@ -245,6 +246,18 @@ $messages = array(
 'oct' => 'okt',
 'nov' => 'nov',
 'dec' => 'des',
+'january-date' => '$1 jannewaris',
+'february-date' => '$1 febrewaris',
+'march-date' => '$1 maart',
+'april-date' => '$1 april',
+'may-date' => '$1 maaie',
+'june-date' => '$1 juny',
+'july-date' => '$1 july',
+'august-date' => '$1 augustus',
+'september-date' => '$1 septimber',
+'october-date' => '$1 oktober',
+'november-date' => '$1 novimber',
+'december-date' => '$1 desimber',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategory|Kategoryen}}',
@@ -261,6 +274,8 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|Dizze kategory befettet de folgjende triem.|Dizze kategory befettet {{PLURAL:$1|de folgjende triem|$1 de folgjende triemmen}}, fan yn totaal $2.}}',
 'category-file-count-limited' => 'Dizze kategory befettet {{PLURAL:$1|de folgjende triem|de folgjende $1 triemmen}}.',
 'listingcontinuesabbrev' => '(ferfolch)',
+'index-category' => 'Yndeksearre siden',
+'noindex-category' => 'Net-yndeksearre siden',
 
 'about' => 'Ynfo',
 'article' => 'Ynhâld side',
@@ -310,6 +325,7 @@ $messages = array(
 'printableversion' => 'Ofdruk-ferzje',
 'permalink' => 'Fêste keppeling',
 'print' => 'Ofdrukke',
+'view' => 'Lêze',
 'edit' => 'Wizigje',
 'create' => 'Oanmeitsje',
 'editthispage' => 'Side bewurkje',
@@ -420,9 +436,11 @@ $1",
 
 # Main script and global functions
 'nosuchaction' => 'Unbekende aksje.',
-'nosuchactiontext' => "De aksje dy't jo oanjoegen fia de URL is net bekind by it Wiki-program",
+'nosuchactiontext' => 'De opdracht yn de URL is ûnjildich.
+Mooglik hasto in typefout makke yn de URL of in ferkearde keppeling folge.
+It soe likegoed in programmatuerflater fan {{SITENAME}} wêze kinne.',
 'nosuchspecialpage' => 'Unbekende side',
-'nospecialpagetext' => "Jo hawwe in Wiki-side opfrege dy't net bekind is by it Wiki-programma.",
+'nospecialpagetext' => "Jo hawwe in Wiki-side opfrege dy't net bekend is by it Wiki-programma.",
 
 # General errors
 'error' => 'Fout',
@@ -455,19 +473,19 @@ Meitsje dêr melding fan by in [[Special:ListUsers/sysop|systeembehearder]] fan
 'unexpected' => 'Hommelse wearde: "$1"="$2".',
 'formerror' => 'Fout: koe formulier net oerlizze',
 'badarticleerror' => 'Dat kin op dizze side net dien wurden.',
-'cannotdelete' => 'Koe de oantsjutte side of it oantsjutte ôfbyld net wiskje. (Faaks hat in oar dat al dien.)',
+'cannotdelete' => 'Koe de oantsjutte side of it oantsjutte ôfbyld "$1" net fuorthelje. (Faaks hat in oar dat al dien.)',
 'badtitle' => 'Misse titel',
 'badtitletext' => 'De opfrege sidetitel wie ûnjildich, leech, of in miskeppele yntertaal of ynterwiki titel.',
-'perfcached' => "Dit is bewarre ynformaasje dy't mooglik ferâldere is. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
-'perfcachedts' => 'De neikommende gegevens komme út de bewarre ynformaasje, dizze is it lêst fernijd op $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => "Dit is bewarre ynformaasje dy't mooglik ferâldere is. In maksimum fan {{PLURAL:$1|ien resultaat is|$1 resultaten binne}} beskikber yn de cache.",
+'perfcachedts' => 'De neikommende gegevens komme út de bewarre ynformaasje, dizze is it lêst fernijd op $1. In maksimum fan {{PLURAL:$4|ien resultaat is|$4 resultaten binne}} beskikber yn de cache.',
 'querypage-no-updates' => 'Dizze side kin net bywurke wurde. Dizze gegevens wurde net ferfarske.',
 'viewsource' => 'Besjoch de boarne',
 'actionthrottled' => 'Hanneling opkeard',
 'actionthrottledtext' => 'As maatregel tsjin spam is it tal kearen per tiidsienheid beheind dat jo dizze hanneling ferrjochtsje kinne. Jo binne oer de limyt. Besykje it in tal minuten letter wer.',
-'protectedpagetext' => 'Dizze side is befeilige. Bewurkjen is net mûglik.',
+'protectedpagetext' => 'Dizze side is befeilige. Bewurkjen is net mooglik.',
 'viewsourcetext' => 'Jo kinne de boarnetekst fan dizze side besjen en kopiearje:',
-'protectedinterface' => "Dizze side befettet tekst foar berjochten fan 'e software en is befeilige om misbrûk tefoaren te kommen.",
-'editinginterface' => "'''Warskôging;''' Jo bewurkje in side dy't brûkt wurdt troch software. Bewurkings op dizze side beynfloedzje de gebrûksynterface fan elkenien. Oerweagje foar oersettings [//translatewiki.net/wiki/Main_Page?setlang=fy translatewiki.net] te brûken, it oersetprojekt foar MediaWiki.",
+'protectedinterface' => "Dizze side jout systeemteksten fan 'e software en is befeilige tsjin misbrûk. Asto oersettingen foar alle wiki's tafoegje of bewurkje wolst, kinsto [//translatewiki.net/ translatewiki.net] brûke.",
+'editinginterface' => "'''Tink derom;''' Jo bewurkje in side dy't brûkt wurdt foar systeemteksten foar de software. Bewurkings op dizze side beynfloedzje de brûkersynterface fan elkenien. Asto wol oersettingen tafoegje of bewurkje wolst kinsto  [//translatewiki.net/wiki/Main_Page?setlang=fy translatewiki.net] brûke, it oersetprojekt foar MediaWiki.",
 'cascadeprotected' => 'Dizze side is skoattele tsjin wizigjen, om\'t der in ûnderdiel útmakket fan de neikommende {{PLURAL:$1|side|siden}}, dy\'t skoattele {{PLURAL:$1|is|binne}} mei de "ûnderlizzende siden" opsje ynskeakele: $2',
 'namespaceprotected' => "Jo hawwe gjin rjochten om siden yn'e nammerûmte '''$1''' te bewurkjen.",
 'ns-specialprotected' => "Siden yn'e nammerûmte {{ns:special}} kinne net bewurke wurde.",
@@ -482,30 +500,65 @@ De oanfierde reden is ''$2''.",
 # Login and logout pages
 'logouttext' => "'''Jo binne no ôfmeld.'''
 
-Jo kinne de {{SITENAME}} fierders anonym brûke, of jo op 'e <span class='plainlinks'>[$1 nij oanmelde]</span> ûnder deselde of in oare namme.
-Mûglik wurdt noch in tal siden werjûn as wiene Jo oanmeld, oant Jo de cache fan Jo browser leegje.",
+Guon siden kinne noch foar it ljocht komme, krekt as wiesto noch oanmeld. Asto de cache fan dyn webblêder leechhellest feroaret dat wer.",
 'yourname' => 'Jo meidochnamme:',
+'userlogin-yourname' => 'Meidoggersnamme',
+'userlogin-yourname-ph' => 'Jou dyn brûkersnamme',
+'createacct-another-username-ph' => 'Jou dyn brûkersnamme',
 'yourpassword' => 'Jo wachtwurd',
+'userlogin-yourpassword' => 'Wachtwurd',
+'userlogin-yourpassword-ph' => 'Jou dyn wachtwurd',
+'createacct-yourpassword-ph' => 'Jou dyn wachtwurd',
 'yourpasswordagain' => 'Jo wachtwurd (nochris)',
-'remembermypassword' => 'Oare kear fansels oanmelde (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'createacct-yourpasswordagain' => 'Befêstigje wachtwurd',
+'createacct-yourpasswordagain-ph' => 'Befêstigje wachtwurd nochris',
+'remembermypassword' => 'Oare kear fansels oanmelde (maksimaal $1 {{PLURAL:$1|dei|dagen}})',
+'userlogin-remembermypassword' => 'Ynlogd bliuwe',
+'userlogin-signwithsecure' => 'Feilige ferbining brûke',
 'yourdomainname' => 'Jo domein:',
+'password-change-forbidden' => 'Op dizze wiky kinst gjin wachtwurden feroare',
 'externaldberror' => 'Der is in fout by it oanmelden by de database of jo hawwe gjin tastimming om jo ekstern account by te wurkjen.',
 'login' => 'Oanmelde',
 'nav-login-createaccount' => 'Oanmelde',
 'loginprompt' => "Jo moatte 'cookies' oanstean hawwe om yn jo oan te melden by {{SITENAME}}.",
 'userlogin' => 'Oanmelde',
+'userloginnocreate' => 'Ynlogge',
 'logout' => 'Ofmelde',
 'userlogout' => 'Ofmelde',
 'notloggedin' => 'Net oanmelde',
+'userlogin-noaccount' => 'Hasto gjin akkount?',
+'userlogin-joinproject' => 'Meidwaan {{SITENAME}}',
 'nologin' => 'Noch net oanmelden as meidogger? $1.',
 'nologinlink' => 'Meitsje in brûker oan',
 'createaccount' => 'Nije ynstellings oanmeitsje',
 'gotaccount' => "Hawwe jo jo al as meidogger oanmelde? '''$1'''.",
 'gotaccountlink' => 'Oanmelde',
+'userlogin-resetlink' => 'Ynlochdata fergetten?',
+'userlogin-resetpassword-link' => 'Wachtwurd fergetten?',
+'helplogin-url' => 'Help:Oanmelde',
+'createacct-emailrequired' => 'E-mailadres',
+'createacct-emailoptional' => 'E-mailadres (net ferplichte)',
+'createacct-email-ph' => 'E-mailadres ynfiere',
+'createacct-another-email-ph' => 'E-mailadres ynfiere',
 'createaccountmail' => 'troch e-mail',
+'createacct-realname' => 'Echte namme (net ferplichte)',
+'createaccountreason' => 'Reden:',
+'createacct-reason' => 'Reden',
+'createacct-reason-ph' => 'Wêrom makkesto in oare akkount?',
+'createacct-captcha' => 'Feiligenshifking',
+'createacct-imgcaptcha-ph' => 'Nim de tekst fan hjirboppe oer',
+'createacct-submit' => 'Meitsje in akkount',
+'createacct-another-submit' => 'Meitsje in oare akkount',
+'createacct-benefit-heading' => '{{SITENAME}} is makke troch minsken krekt as dy.',
+'createacct-benefit-body1' => '{{PLURAL:$1|bewurking|bewurkings}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|side|siden}}',
+'createacct-benefit-body3' => 'aktive {{PLURAL:$1|skriuwer|skriuwers}}',
 'badretype' => 'De ynfierde wachtwurden binne net lyk.',
-'userexists' => 'Dy meidochnamme wurdt al brûkt. Besykje in oarenien.',
+'userexists' => 'Dy meidoggersnamme wurdt al brûkt. 
+Besykje in oarenien.',
 'loginerror' => 'Oanmeldflater',
+'createacct-error' => 'Flater slein by meitsjen fan akkount',
+'createaccounterror' => 'Koe akkount net meitsje: $1',
 'nocookiesnew' => 'De brûker is oanmakke mar net oanmeld. {{SITENAME}} brûkt cookies foar it oanmelden fan brûkers. Skeakelje dy yn en meld jo dan oan mei jo nije brûkersnamme en wachtwurd.',
 'nocookieslogin' => '{{SITENAME}} brûkt cookies foar it oanmelden fan brûkers. Jo hawwe cookies útskeakele. Skeakelje dy opsje oan en besykje it nochris.',
 'noname' => 'Jo moatte in meidognamme opjaan.',
@@ -567,12 +620,22 @@ Jo moatte efkes wachtsje foar't jo it op'e nij besykje kinne.",
 'resetpass_forbidden' => 'Wachtwurden kinne net feroare wurde',
 'resetpass-no-info' => "Jo moatte oanmeld wêze foar't Jo dizze side brûke kinne.",
 'resetpass-submit-loggedin' => 'Wachtwurd feroarje',
+'resetpass-submit-cancel' => 'Ofbrekke',
 'resetpass-wrong-oldpass' => 'It momintele of tydlike wachtwurd is ûnjildich.
 Mûglik hawwe Jo Jo wachtwurd al feroare of in nij tydlik wachtwurd oanfrege.',
 'resetpass-temp-password' => 'Tydlik wachtwurd:',
 
 # Special:PasswordReset
+'passwordreset-legend' => 'Wachtwurd weromsette',
 'passwordreset-username' => 'Meidoggernamme',
+'passwordreset-domain' => 'Domein:',
+'passwordreset-email' => 'E-mailadres:',
+'passwordreset-emailtitle' => 'Akkountdetails op {{SITENAME}}',
+
+# Special:ChangeEmail
+'changeemail' => 'Feroarje e-mailadres',
+'changeemail-header' => 'Feroarje akkount e-mailadres',
+'changeemail-cancel' => 'Ofbrekke',
 
 # Edit page toolbar
 'bold_sample' => 'Fette tekst',
@@ -699,18 +762,19 @@ Hjirby sizze jo tagelyk ta, dat jo dizze tekst sels skreaun hawwe, of oernommen
 As jo net wolle dat jo teksten yngeand oanpast wurde troch oaren, set se hjir dan net.<br />
 Jo sizze ek ta dat jo de oarspronklike auteur binne fan dit materiaal, of dat jo it kopiearre hawwe út in boarne yn it publike domein, of in soartgelikense frije boarne (sjuch $1 foar details).
 '''BRUK GJIN MATERIAAL DAT BESKERME WURDT TROCH AUTEURSRJOCHT, OF JO MOATTE DER TASTIMMING FOAR HAWWE!'''",
-'longpageerror' => "'''FOUT: de tekst dy't jo tafoege hawwe is $1 kilobyte grut, wat grutter is as it maksimum fan $2 kilobytes.
+'longpageerror' => "'''FOUT: de tekst dy't jo tafoege hawwe is {{PLURAL:$1|ien kilobyte|$1 kilobytes}} grut, wat grutter is as it maksimum fan {{PLURAL:$2|ien kilobyte|$2 kilobytes}}.
 Bewarjen is net mûglik.'''",
 'readonlywarning' => "'''Warskôging: De databank is ôfsletten foar ûnderhâld, dus jo kinne jo bewurkings no net fêstlizze. Bewarje de tekst foar lettere pleatsing yn in teksttriem.'''
 
 In  behearder hat de database blokkearre om de folgjende reden: $1",
-'protectedpagewarning' => "'''Waarskôging: Dizze side is beskerme, dat gewoane brûkers dy net bewurkje kinne.'''",
+'protectedpagewarning' => "'''Warskôging: Dizze side is beskerme, dat gewoane brûkers dy net bewurkje kinne.'''",
 'semiprotectedpagewarning' => "'''Tink derom:''' dizze side is befeilige en kin allinne troch registrearre brûkers bewurke wurde.",
 'cascadeprotectedwarning' => "'''Warskôging:''' Dizze side is skoattele sadat allinnich behearders de side wizigje kinne, om't der in ûnderdiel útmakket fan de neikommende {{PLURAL:\$1|side|siden}}, dy't skoattele binne mei de \"ûnderlizzende siden\" opsje ynskeakele:",
-'titleprotectedwarning' => "'''WARSKÔGING: Dizze side is befeilige, dat allinne inkelde brûkers kinne him oanmeitsje.'''",
-'templatesused' => 'Berjochten brûkt op dizze side:',
-'templatesusedpreview' => 'Yn dit proefbyld sjabloanen:',
-'templatesusedsection' => "Sjabloanen dy't brûkt wurde yn dizze subkop:",
+'titleprotectedwarning' => "'''WARSKÔGING: Dizze side is befeilige. Der binne [[Special:ListGroupRights|spesjale rjochten]] nedich om dizze side meitsje te kinnen.'''
+De lêste lochrigel stiet hjirûnder:",
+'templatesused' => '{{PLURAL:$1|Berjocht|Berjochten}} brûkt op dizze side:',
+'templatesusedpreview' => "{{PLURAL:$1|Sjabloan|Sjabloanen}} dy't yn dizze bewurking brûkt wurde:",
+'templatesusedsection' => "{{PLURAL:$1|Sjabloan|Sjabloanen}} dy't brûkt wurde yn dizze subkop:",
 'template-protected' => '(befeilige)',
 'template-semiprotected' => '(semi-befeilige)',
 'hiddencategories' => 'Dizze side falt yn de folgjende ferburgen
@@ -733,8 +797,10 @@ Der is gjin taljochting beskikber.',
 Hy liket fuorthelle te wezen.',
 'edit-conflict' => 'Bewurkingskonflikt.',
 'edit-no-change' => "Dyn bewurking is is net trochfierd, om 't der gjin feroaring yn 'e tekst oanbrocht is.",
+'postedit-confirmation' => 'Dyn bewurking is fêstlein.',
 'edit-already-exists' => 'De side is net oanmakke.
 Hy bestie al.',
+'defaultmessagetext' => 'Standert berjochttekst',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Warskôging: Dizze side brûkt tefolle kostbere parserfunksjes.
@@ -1333,6 +1399,8 @@ Klikken op in kolomkop feroaret de sortearring.',
 'listfiles_size' => 'Grutte',
 'listfiles_description' => 'Beskriuwing',
 'listfiles_count' => 'Ferzjes',
+'listfiles-latestversion-yes' => 'Ja',
+'listfiles-latestversion-no' => 'Nee',
 
 # File description page
 'file-anchor-link' => 'Triem',
@@ -2115,6 +2183,10 @@ Alle folgjende links dy't op deselde rigel steane, wurde behannele as útsûnder
 'exif-exposuretime-format' => '$1 sek ($2)',
 'exif-flash' => 'Flits',
 'exif-filesource' => 'Triemboarne',
+'exif-contrast' => 'Kontrast',
+'exif-sharpness' => 'Skerpte',
+'exif-gpstimestamp' => 'GPS-tiid (atoomklok)',
+'exif-gpsspeedref' => 'Snelheidsienheid',
 'exif-gpsdatestamp' => 'GPS-datum',
 
 'exif-unknowndate' => 'Datum ûnbekend',
@@ -2269,4 +2341,14 @@ Wolle jo de side wier op 'e nij skriuwe?",
 'revdelete-unrestricted' => 'hat beheinings foar behearders goedmakke',
 'rightsnone' => '(gjin)',
 
+# Feedback
+'feedback-subject' => 'Underwerp:',
+'feedback-message' => 'Berjocht:',
+'feedback-cancel' => 'Ofbrekke',
+'feedback-submit' => 'Feedback ferstjoere',
+'feedback-close' => 'Dien',
+
+# Search suggestions
+'searchsuggest-search' => 'Sykje',
+
 );
index 86d3b18..2553409 100644 (file)
@@ -1043,8 +1043,8 @@ Velaquí está a última entrada do rexistro de bloqueos, por se quere consultal
 '''Este aínda non foi gardado!'''",
 'sitejspreview' => "'''Lembre que só está vendo a vista previa deste código JavaScript.'''
 '''Este aínda non foi gardado!'''",
-'userinvalidcssjstitle' => "'''Aviso:''' Non hai ningún tema chamado \"\$1\".
-Lembre que as páxinas .css e .js personalizadas utilizan un título en minúsculas, como por exemplo {{ns:user}}:Foo/vector.css no canto de {{ns:user}}:Foo/Vector.css.",
+'userinvalidcssjstitle' => '\'\'\'Aviso:\'\'\' Non hai ningunha aparencia chamada "$1".
+Lembre que as páxinas .css e .js personalizadas utilizan un título en minúsculas, como por exemplo "{{ns:user}}:Foo/vector.css" no canto de "{{ns:user}}:Foo/Vector.css".',
 'updated' => '(Actualizado)',
 'note' => "'''Nota:'''",
 'previewnote' => "'''Lembre que esta é só unha vista previa e que aínda non gardou os seus cambios!'''",
@@ -1711,6 +1711,7 @@ Se escolle dalo utilizarase para atribuírlle o seu traballo.',
 'recentchanges-label-bot' => 'Esta edición foi realizada por un bot',
 'recentchanges-label-unpatrolled' => 'Esta edición aínda non foi comprobada',
 'recentchanges-label-plusminus' => 'O tamaño da páxina variou este número de bytes',
+'recentchanges-legend-heading' => "'''Lenda:'''",
 'recentchanges-legend-newpage' => '(véxase tamén a [[Special:NewPages|lista de páxinas novas]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "A continuación móstranse os cambios feitos desde o '''$3''' ás '''$4''' (móstranse '''$1''' como máximo).",
@@ -3850,7 +3851,7 @@ Por favor, confirme que realmente quere recrear esta páxina.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(lingua por defecto)',
-'img-lang-info' => 'Renderizar esta imaxe en $1 $2.',
+'img-lang-info' => 'Renderizar esta imaxe en $1. $2',
 'img-lang-go' => 'Mostrar',
 
 # Table pager
@@ -3954,13 +3955,14 @@ Debería recibir [{{SERVER}}{{SCRIPTPATH}}/COPYING unha copia da licenza públic
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Ruta das escrituras]',
 
 # Special:Redirect
-'redirect' => 'Redirixir por nome de ficheiro, ID de usuario ou ID de revisión',
+'redirect' => 'Redirixir por nome de ficheiro, ID de usuario, ID de páxina ou ID de revisión',
 'redirect-legend' => 'Redirixir a un ficheiro ou unha páxina',
-'redirect-summary' => 'Esta páxina especial redirixe cara a un ficheiro (dado o nome), unha páxina (dado o ID dunha revisión) ou unha páxina de usuario (dado o ID dun usuario). Utilización: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Esta páxina especial redirixe cara a un ficheiro (dado o nome), unha páxina (dado o ID da páxina ou o dunha revisión) ou unha páxina de usuario (dado o ID dun usuario). Utilización: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] ou [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Continuar',
 'redirect-lookup' => 'Procurar:',
 'redirect-value' => 'Valor:',
 'redirect-user' => 'ID de usuario',
+'redirect-page' => 'ID de páxina',
 'redirect-revision' => 'Revisión de páxina',
 'redirect-file' => 'Nome de ficheiro',
 'redirect-not-exists' => 'Non se atopou o valor',
@@ -4203,10 +4205,12 @@ De feito, expande case calquera cousa entre dúas chaves.',
 'expand_templates_input' => 'Texto de entrada:',
 'expand_templates_output' => 'Resultado',
 'expand_templates_xml_output' => 'Saída XML',
+'expand_templates_html_output' => 'Saída HTML en bruto',
 'expand_templates_ok' => 'Aceptar',
 'expand_templates_remove_comments' => 'Eliminar os comentarios',
 'expand_templates_remove_nowiki' => 'Suprimir as etiquetas <nowiki> no resultado',
 'expand_templates_generate_xml' => 'Mostrar as árbores de análise XML',
+'expand_templates_generate_rawhtml' => 'Mostrar o HTML en bruto',
 'expand_templates_preview' => 'Vista previa',
 
 );
index 7581daf..b9b99c6 100644 (file)
@@ -1250,6 +1250,9 @@ $2
 'cantcreateaccount-text' => 'אפשרות יצירת החשבונות מכתובת ה־IP הזו (\'\'\'$1\'\'\') נחסמה על־ידי [[User:$3|$3]].
 
 הסיבה שניתנה על־ידי $3 היא "$2".',
+'cantcreateaccount-range-text' => "אפשרות יצירת החשבונות מכתובות IP בתוך הטווח '''\$1''', כולל כתובת ה־IP שלך ('''\$4'''), נחסמה על־ידי [[User:\$3|\$3]].
+
+הסיבה שניתנה על־ידי \$3 היא \"\$2\".",
 
 # History pages
 'viewpagelogs' => 'הצגת יומנים עבור דף זה',
@@ -1523,7 +1526,7 @@ $1",
 'prefs-help-watchlist-token2' => 'זהו המפתח הסודי של ההזנה של רשימת המעקב שלך.
 כל מי שיודע אותו יוכל לקרוא את רשימת המעקב שלך, לכן אין לשתף אותו.
 [[Special:ResetTokens|אם יש בכך צורך, אפשר לאפס אותו כאן]].',
-'savedprefs' => '×\94×¢×\93פ×\95ת×\99ך נשמרו.',
+'savedprefs' => '×\94×\94×¢×\93פ×\95ת ×©×\9cך נשמרו.',
 'timezonelegend' => 'אזור זמן:',
 'localtime' => 'זמן מקומי:',
 'timezoneuseserverdefault' => 'ברירת המחדל של האתר ($1)',
@@ -1667,13 +1670,13 @@ $1",
 'right-suppressredirect' => 'הימנעות מיצירת הפניות מדפי המקור בעת העברת דפים',
 'right-upload' => 'העלאת קבצים',
 'right-reupload' => 'דריסת קבצים קיימים',
-'right-reupload-own' => 'דריסת קבצים קיימים שהועלו על ידי אותו המשתמש',
+'right-reupload-own' => 'דריסת קבצים קיימים שהועלו על־ידי אותו המשתמש',
 'right-reupload-shared' => 'דריסה מקומית של קבצים מאתר קובצי המדיה המשותף',
 'right-upload_by_url' => 'העלאת קובץ מכתובת אינטרנט',
-'right-purge' => 'רענ×\95×\9f ×\96×\99×\9bר×\95×\9f ×\94×\9e×\98×\9e×\95×\9f ×©×\9c ×\94×\90תר ×\9c×\93×£ ×\9eס×\95×\99×\9d ×\9c×\9c×\90 דף אישור',
+'right-purge' => 'רענ×\95×\9f ×\96×\99×\9bר×\95×\9f ×\94×\9e×\98×\9e×\95×\9f ×©×\9c ×\94×\90תר ×\9c×\9c×\90 ×\9e×¢×\91ר ×\9cדף אישור',
 'right-autoconfirmed' => 'עקיפת הגבלת קצב העריכות המבוססת על כתובת IP',
 'right-bot' => 'טיפול בעריכות כאוטומטיות',
-'right-nominornewtalk' => '×\91×\99×\98×\95×\9c ×\94×\95×\93עת ×\94×\94×\95×\93×¢×\95ת ×\94×\97×\93ש×\95ת ×\91עת ×¢×¨×\99×\9b×\94 ×\9eשנ×\99ת ×\91×\93פ×\99 ×©×\99×\97×\94',
+'right-nominornewtalk' => '×\91×\99×\98×\95×\9c ×©×\9c×\99×\97ת ×\94תר×\90×\94 ×¢×\9c ×\94×\95×\93×¢×\94 ×\97×\93ש×\94 ×\9c×\9eשת×\9eש ×\91עת ×¢×¨×\99×\9b×\94 ×\9eשנ×\99ת ×\91×\93×£ ×©×\99×\97ת×\95',
 'right-apihighlimits' => 'שימוש ב־API עם פחות הגבלות',
 'right-writeapi' => 'שימוש ב־API לשינוי דפים',
 'right-delete' => 'מחיקת דפים',
@@ -1691,21 +1694,21 @@ $1",
 'right-hideuser' => 'חסימת שם משתמש תוך הסתרתו מהציבור',
 'right-ipblock-exempt' => 'עקיפת חסימות של כתובת IP, חסימות אוטומטיות וחסימות טווח',
 'right-proxyunbannable' => 'עקיפת חסימות אוטומטיות של שרתי פרוקסי',
-'right-unblockself' => 'ש×\97ר×\95ר ×\97ס×\99×\9e×\94 ×©×\9c ×¢×¦×\9e×\9a',
+'right-unblockself' => 'ש×\97ר×\95ר ×\97ס×\99×\9e×\94 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95',
 'right-protect' => 'שינוי רמות הגנה ועריכת דפים המוגנים בהגנה מדורגת',
-'right-editprotected' => 'ער×\99×\9bת ×\93פ×\99×\9d ×©מוגנים ברמת "{{int:protect-level-sysop}}"',
-'right-editsemiprotected' => 'ער×\99×\9bת ×\93פ×\99×\9d ×©מוגנים ברמת "{{int:protect-level-autoconfirmed}}"',
+'right-editprotected' => 'ער×\99×\9bת ×\93פ×\99×\9d ×\94מוגנים ברמת "{{int:protect-level-sysop}}"',
+'right-editsemiprotected' => 'ער×\99×\9bת ×\93פ×\99×\9d ×\94מוגנים ברמת "{{int:protect-level-autoconfirmed}}"',
 'right-editinterface' => 'עריכת ממשק המשתמש',
 'right-editusercssjs' => 'עריכת דפי CSS ו־JavaScript של משתמשים אחרים',
-'right-editusercss' => 'ער×\99×\9bת ×\93פ×\99 CSS של משתמשים אחרים',
-'right-edituserjs' => 'ער×\99×\9bת ×\93פי JavaScript של משתמשים אחרים',
-'right-editmyusercss' => 'ער×\99×\9bת ×\93פ×\99 CSS ×©×\9c ×¢×¦×\9e×\9a',
-'right-editmyuserjs' => 'ער×\99×\9bת ×\93פ×\99 JavaScript ×©×\9c ×¢×¦×\9e×\9a',
-'right-viewmywatchlist' => 'צפ×\99×\99×\94 ×\91רש×\99×\9eת ×\94×\9eעק×\91 ×©×\9c ×¢×¦×\9e×\9a',
-'right-editmywatchlist' => 'ער×\99×\9bת ×¨×©×\99×\9eת ×\94×\9eעק×\91 ×©×\9c ×¢×¦×\9e×\9a. ×\99צ×\95×\99×\9f ×©מספר פעולות עדיין יוסיפו דפים גם ללא הרשאה זו.',
-'right-viewmyprivateinfo' => 'צפ×\99×\99×\94 ×\91×\9e×\99×\93×¢ ×\94פר×\98×\99 ×©×\9c ×¢×¦×\9e×\9a (×\9b×\92×\95×\9f: כתובת דוא"ל, שם אמיתי)',
-'right-editmyprivateinfo' => 'ער×\99×\9bת ×\94×\9e×\99×\93×¢ ×\94פר×\98×\99 ×©×\9c ×¢×¦×\9e×\9a (×\9b×\92×\95×\9f: כתובת דוא"ל, שם אמיתי)',
-'right-editmyoptions' => 'ער×\99×\9bת ×\94×\94×¢×\93פ×\95ת ×©×\9c ×¢×¦×\9e×\9a',
+'right-editusercss' => 'ער×\99×\9bת ×\92×\99×\9c×\99×\95× ×\95ת CSS של משתמשים אחרים',
+'right-edituserjs' => 'ער×\99×\9bת ×§×\91צי JavaScript של משתמשים אחרים',
+'right-editmyusercss' => 'ער×\99×\9bת ×\92×\99×\9c×\99×\95× ×\95ת CSS ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95',
+'right-editmyuserjs' => 'ער×\99×\9bת ×§×\91צ×\99 JavaScript ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95',
+'right-viewmywatchlist' => 'צפ×\99×\99×\94 ×\91רש×\99×\9eת ×\94×\9eעק×\91 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95',
+'right-editmywatchlist' => 'ער×\99×\9bת ×¨×©×\99×\9eת ×\94×\9eעק×\91 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95מספר פעולות עדיין יוסיפו דפים גם ללא הרשאה זו.',
+'right-viewmyprivateinfo' => 'צפ×\99×\99×\94 ×\91×\9e×\99×\93×¢ ×\94פר×\98×\99 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95 (×\9b×\92×\95×\9f כתובת דוא"ל, שם אמיתי)',
+'right-editmyprivateinfo' => 'ער×\99×\9bת ×\94×\9e×\99×\93×¢ ×\94פר×\98×\99 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95 (×\9b×\92×\95×\9f כתובת דוא"ל, שם אמיתי)',
+'right-editmyoptions' => 'ער×\99×\9bת ×\94×\94×¢×\93פ×\95ת ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95',
 'right-rollback' => 'שחזור מהיר של עריכות המשתמש האחרון שערך דף מסוים',
 'right-markbotedits' => 'סימון עריכות משוחזרות כעריכות של בוט',
 'right-noratelimit' => 'עקיפת הגבלת קצב העריכות',
@@ -1713,9 +1716,9 @@ $1",
 'right-importupload' => 'ייבוא דפים באמצעות העלאת קובץ',
 'right-patrol' => 'סימון עריכות של אחרים כבדוקות',
 'right-autopatrol' => 'סימון אוטומטי של עריכות של המשתמש כבדוקות',
-'right-patrolmarks' => 'צפ×\99×\99×\94 ×\91ס×\99×\9e×\95× ×\99 ×¢×¨×\99×\9b×\95ת ×\91×\93×\95ק×\95ת ×\91שינויים האחרונים',
+'right-patrolmarks' => '×\94×\91×\97× ×\94 ×\91×\99×\9f ×¢×¨×\99×\9b×\95ת ×©× ×\91×\93ק×\95 ×\9cער×\99×\9b×\95ת ×©×\98ר×\9d × ×\91×\93ק×\95 ×\91×\93×£ ×\94שינויים האחרונים',
 'right-unwatchedpages' => 'הצגת רשימה של דפים שאינם במעקב',
-'right-mergehistory' => 'מיזוג היסטוריות של דפים',
+'right-mergehistory' => '×\9e×\99×\96×\95×\92 ×\94×\99ס×\98×\95ר×\99×\99ת ×\92רס×\90×\95ת ×©×\9c ×\93פ×\99×\9d',
 'right-userrights' => 'עריכת כל הרשאות המשתמש',
 'right-userrights-interwiki' => 'עריכת הרשאות המשתמש של משתמשים באתרי ויקי אחרים',
 'right-siteadmin' => 'נעילה וביטול נעילה של בסיס הנתונים',
@@ -1786,6 +1789,7 @@ $1",
 'recentchanges-label-bot' => 'עריכה זו בוצעה על־ידי בוט',
 'recentchanges-label-unpatrolled' => 'עריכה זו טרם נבדקה',
 'recentchanges-label-plusminus' => 'מספר הבתים שבו השתנה גודל הדף',
+'recentchanges-legend-heading' => "'''מקרא:'''",
 'recentchanges-legend-newpage' => '(ראו גם [[Special:NewPages|רשימת דפים חדשים]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'להלן <b>$1</b> השינויים האחרונים שבוצעו החל מתאריך <b>$2</b>:',
@@ -2329,7 +2333,7 @@ $1',
 'booksources-invalid-isbn' => 'המסת"ב שניתן כנראה אינו תקין; אנא בדקו אם ביצעתם טעויות בהעתקה מהמידע המקורי.',
 
 # Special:Log
-'specialloguserlabel' => 'בוצעו על ידי המשתמש:',
+'specialloguserlabel' => 'בוצעו על־ידי המשתמש:',
 'speciallogtitlelabel' => 'יעד (כותרת או משתמש):',
 'log' => 'יומנים',
 'all-logs-page' => 'כל היומנים הציבוריים',
@@ -2868,7 +2872,7 @@ $1',
 'ipb_expiry_invalid' => 'זמן פקיעת החסימה אינו תקין.',
 'ipb_expiry_temp' => 'חסימות הכוללות הסתרת שם משתמש חייבות להיות לזמן בלתי מוגבל.',
 'ipb_hide_invalid' => 'לא ניתן להסתיר שם משתמש זה; ייתכן שבוצעו ממנו יותר מדי עריכות.',
-'ipb_already_blocked' => 'המשתמש "$1" כבר נחסם',
+'ipb_already_blocked' => 'המשתמש "$1" כבר נחסם.',
 'ipb-needreblock' => '$1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסימה?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|חסימה אחרת|חסימות אחרות}}',
 'unblock-hideuser' => 'לא ניתן לשחרר משתמש זה, כיוון ששם המשתמש שלו הוסתר.',
@@ -2879,12 +2883,13 @@ $1',
 'proxyblocker' => 'חוסם פרוקסי',
 'proxyblockreason' => 'כתובת ה־IP שלכם נחסמה משום שהיא כתובת של שרת פרוקסי פתוח.
 אנא צרו קשר עם ספק האינטרנט שלכם או עם התמיכה הטכנית של הארגון שלכם והודיעו להם על בעיית האבטחה החמורה הזאת.',
-'sorbsreason' => 'כתובת ה־IP שלכם רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר זה משתמש בו.',
-'sorbs_create_account_reason' => 'כתובת ה־IP שלכם רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר זה משתמש בו. אינכם יכולים ליצור חשבון.',
+'sorbsreason' => 'כתובת ה־IP שלך רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר {{SITENAME}} משתמש בו.',
+'sorbs_create_account_reason' => 'כתובת ה־IP שלך רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר {{SITENAME}} משתמש בו.
+אין באפשרותך ליצור חשבון.',
 'xffblockreason' => 'כתובת IP הנמצאת בכותרת X-Forwarded-For, בין אם שלכם או של שרת פרוקסי שאתם משתמשים בו, נחסמה. סיבת החסימה המקורית הייתה: $1',
 'cant-see-hidden-user' => 'המשתמש שאתם מנסים לחסום כבר נחסם והוסתר. כיוון שאין לכם את ההרשאה לחסימת משתמש והסתרתו, אינכם רשאים לצפות בחסימת המשתמש או לערוך אותה.',
-'ipbblocked' => 'אינכם יכולים לחסום או לשחרר את חסימתם של משתמשים אחרים, כיוון שאתם עצמכם חסומים',
-'ipbnounblockself' => 'אינכם רשאים לשחרר את חסימתכם',
+'ipbblocked' => 'אינכם יכולים לחסום או לשחרר את חסימתם של משתמשים אחרים, כיוון שאתם עצמכם חסומים.',
+'ipbnounblockself' => 'אינכם רשאים לשחרר את חסימתכם.',
 
 # Developer tools
 'lockdb' => 'נעילת בסיס נתונים',
@@ -3917,7 +3922,7 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(שפת ברירת המחדל)',
-'img-lang-info' => 'הצגת תמונה זו בשפה $1 $2.',
+'img-lang-info' => 'הצגת תמונה זו בשפה $1. $2',
 'img-lang-go' => 'הצגה',
 
 # Table pager
@@ -4085,13 +4090,14 @@ $5
 'version-entrypoints-header-url' => 'כתובת',
 
 # Special:Redirect
-'redirect' => 'הפניה לפי שם קובץ, מספר משתמש או מספר גרסה',
+'redirect' => 'הפניה לפי שם קובץ, מספר משתמש, מספר דף או מספר גרסה',
 'redirect-legend' => 'הפניה לקובץ או לדף',
-'redirect-summary' => 'דף מיוחד זה מפנה לקובץ (בהינתן שם הקובץ), לדף (בהינתן מספר גרסה), או לדף משתמש (בהינתן מספר משתמש). דוגמאות לשימוש: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], או [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'דף מיוחד זה מפנה לקובץ (בהינתן שם הקובץ), לדף (בהינתן מספר גרסה או מספר דף), או לדף משתמש (בהינתן מספר משתמש). דוגמאות לשימוש: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], או [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'מעבר',
 'redirect-lookup' => 'סוג:',
 'redirect-value' => 'ערך:',
 'redirect-user' => 'מספר משתמש',
+'redirect-page' => 'מספר דף',
 'redirect-revision' => 'גרסת דף',
 'redirect-file' => 'שם קובץ',
 'redirect-not-exists' => 'הערך לא נמצא',
@@ -4334,10 +4340,12 @@ $5
 'expand_templates_input' => 'טקסט הקלט:',
 'expand_templates_output' => 'תוצאה',
 'expand_templates_xml_output' => 'פלט XML',
+'expand_templates_html_output' => 'פלט HTML גולמי',
 'expand_templates_ok' => 'אישור',
 'expand_templates_remove_comments' => 'הסרת הערות',
 'expand_templates_remove_nowiki' => 'הסרת תגי <nowiki> בתוצאה',
 'expand_templates_generate_xml' => 'הצגת עץ הפענוח של XML',
+'expand_templates_generate_rawhtml' => 'הצגת HTML גולמי',
 'expand_templates_preview' => 'תצוגה מקדימה',
 
 );
index e3bfae0..d0d3b70 100644 (file)
@@ -1667,6 +1667,7 @@ Ne smije biti duži od $1 {{PLURAL:$1|znaka|znaka|znakova}}.',
 'recentchanges-label-bot' => 'Ovu izmjenu napravio je bot',
 'recentchanges-label-unpatrolled' => 'Ova izmjena još nije pregledana',
 'recentchanges-label-plusminus' => 'Promjena veličine stranice (u bajtovima)',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '$1 - nova stranica',
 'rcnotefrom' => 'Slijede promjene od <b>$2</b> (prikazano ih je do <b>$1</b>).',
 'rclistfrom' => 'Prikaži nove promjene počevši od $1',
index 2ca59cc..6238c0b 100644 (file)
@@ -997,6 +997,9 @@ Dyrbjała mjenje hač $2 {{PLURAL:$2|wołanje|wołanjej|wołanja|wołanjow}} mě
 'cantcreateaccount-text' => "Wutworjenje wužiwarskeho konta z IP-adresy '''$1''' bu wot [[User:$3|$3]] zablokowane.
 
 Přičina za blokowanje, podata wot $3, je: ''$2''",
+'cantcreateaccount-range-text' => "Załoženje kontow z IP-adresow we wobłuku '''$1'', kotryž twoju IP-adresu wobsahuje ('''$4'''), je so wot [[User:$3|$3]] zablokowało.
+
+Přičina podata wot $3 je ''$2''",
 
 # History pages
 'viewpagelogs' => 'protokole tuteje strony pokazać',
@@ -1525,13 +1528,14 @@ Tuta informacija budźe zjawna.',
 'recentchanges-label-bot' => 'Tuta změna bu přez roboćik přewjedźena',
 'recentchanges-label-unpatrolled' => 'Tuta změnu hišće njebu přepruwowana',
 'recentchanges-label-plusminus' => 'Změnjena wulkosć strony (w bajtach)',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(hlej tež [[Special:NewPages|lisćinu nowych stronow]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Deleka so změny wot '''$2''' pokazuja (hač k '''$1''').",
 'rclistfrom' => 'Nowe změny pokazać, započinajo z $1',
 'rcshowhideminor' => 'snadne změny $1',
 'rcshowhidebots' => 'Boćiki $1',
-'rcshowhideliu' => 'Přizjewjeni wužiwarjo $1',
+'rcshowhideliu' => 'Zregistrowani wužiwarjo $1',
 'rcshowhideanons' => 'Anonymni wužiwarjo $1',
 'rcshowhidepatr' => 'Dohladowane změny $1',
 'rcshowhidemine' => 'moje změny $1',
@@ -3577,7 +3581,7 @@ Prošu potwjerdź, zo chceš tutu stronu woprawdźe znowa wutworić.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(standardna rěč)',
-'img-lang-info' => 'tutón wobraz w $1 $2 rysować.',
+'img-lang-info' => 'Tutón wobraz w $1 rysować. $2',
 'img-lang-go' => 'Wotpósłać',
 
 # Table pager
@@ -3682,14 +3686,15 @@ Ty měł [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licency GNU General Public Lic
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Po datajowym mjenje, wužiwarju abo wersijowym ID dale sposrědkować',
+'redirect' => 'Po datajowym mjenje, wužiwarju, stronje abo wersijowym ID dale sposrědkować',
 'redirect-legend' => 'Do dataje abo strony dale sposrědkować',
-'redirect-summary' => 'Tuta specialna strona so do dataje (datajowe mjeno je podate), strony (wersijowy ID je podaty) abo wužiwarskeje strony (numeriski wužiwarski ID je podaty) dale sposrědkuje. Wužiće:
-[[{{#Special:Redirect}}/file/Přikład.jpg]], [[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Tuta specialna strona so do dataje (datajowe mjeno je podate), strony (wersijowy ID abo ID strony je podaty) abo wužiwarskeje strony (numeriski wužiwarski ID je podaty) dale sposrědkuje. Wužiće:
+[[{{#Special:Redirect}}/file/Přikład.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Los',
 'redirect-lookup' => 'Pytać:',
 'redirect-value' => 'Hódnota:',
 'redirect-user' => 'ID wužiwarja',
+'redirect-page' => 'ID strony',
 'redirect-revision' => 'Wersija strony',
 'redirect-file' => 'Datajowe mjeno',
 'redirect-not-exists' => 'Hódnota njeje so namakała',
@@ -3928,10 +3933,12 @@ Hewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so s
 'expand_templates_input' => 'Tekst zapodać:',
 'expand_templates_output' => 'Wuslědk',
 'expand_templates_xml_output' => 'Wudaće XML',
+'expand_templates_html_output' => 'Hrube HTML-wudaće',
 'expand_templates_ok' => 'W porjadku',
 'expand_templates_remove_comments' => 'Komentary wotstronić',
 'expand_templates_remove_nowiki' => 'Taflički <nowiki> we wuslědku potłóčić',
 'expand_templates_generate_xml' => 'Analyzowy štom XML pokazać',
+'expand_templates_generate_rawhtml' => 'Hruby HTML pokazać',
 'expand_templates_preview' => 'Přehlad',
 
 );
index 2cf3cc0..8b7d268 100644 (file)
@@ -1669,7 +1669,7 @@ A műveletet nem lehet visszavonni.',
 'rclistfrom' => '$1 után történt változtatások megtekintése',
 'rcshowhideminor' => 'apró szerkesztések $1',
 'rcshowhidebots' => 'botok szerkesztéseinek $1',
-'rcshowhideliu' => 'bejelentkezett felhasználók szerkesztéseinek $1',
+'rcshowhideliu' => '$1 bejelentkezett felhasználó',
 'rcshowhideanons' => 'névtelen szerkesztések $1',
 'rcshowhidepatr' => 'ellenőrzött szerkesztések $1',
 'rcshowhidemine' => 'saját szerkesztések $1',
@@ -1958,6 +1958,8 @@ Ez a wiki publikus, így a biztonság miatt az img_auth.php ki van kapcsolva.',
 'listfiles_size' => 'Méret',
 'listfiles_description' => 'Leírás',
 'listfiles_count' => 'Változatok',
+'listfiles-latestversion-yes' => 'Igen',
+'listfiles-latestversion-no' => 'Nem',
 
 # File description page
 'file-anchor-link' => 'Fájl',
@@ -2050,6 +2052,10 @@ Ellenőrizd a meglévő hivatkozásokat, mielőtt törölnéd őket.',
 'randompage' => 'Lap találomra',
 'randompage-nopages' => 'A következő {{PLURAL:$2|névtérben|névterekben}} nincsenek lapok: $1.',
 
+# Random page in category
+'randomincategory' => 'Véletlen lap egy kategóriából',
+'randomincategory-invalidcategory' => '"$1" nem egy érvényes kategória neve.',
+
 # Random redirect
 'randomredirect' => 'Átirányítás találomra',
 'randomredirect-nopages' => 'A(z) „$1” névtérben nincsenek átirányítások.',
index a61c059..fa8aa7d 100644 (file)
@@ -1584,6 +1584,7 @@ Si tu opta pro dar lo, isto essera usate pro dar te attribution pro tu contribut
 'recentchanges-label-bot' => 'Iste modification ha essite effectuate per un robot',
 'recentchanges-label-unpatrolled' => 'Iste modification non ha ancora essite patruliate',
 'recentchanges-label-plusminus' => 'Le dimension del pagina ha cambiate de iste numero de bytes',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(vide etiam le [[Special:NewPages|lista de nove paginas]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'infra es le modificationes a partir de <b>$2</b> (usque a <b>$1</b>).',
@@ -3732,7 +3733,7 @@ Per favor confirma que tu realmente vole recrear iste pagina.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(lingua predefinite)',
-'img-lang-info' => 'Presentar iste imagine in $1 $2.',
+'img-lang-info' => 'Presentar iste imagine in $1. $2',
 'img-lang-go' => 'Va',
 
 # Table pager
@@ -4082,10 +4083,12 @@ De facto, illo expande quasi toto inter accolladas duple.',
 'expand_templates_input' => 'Texto de entrata:',
 'expand_templates_output' => 'Resultato',
 'expand_templates_xml_output' => 'Output XML',
+'expand_templates_html_output' => 'Resultato in HTML brute',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Eliminar commentos',
 'expand_templates_remove_nowiki' => 'Supprimer le etiquettas <nowiki> in le resultato',
 'expand_templates_generate_xml' => 'Monstrar arbore syntactic XML',
+'expand_templates_generate_rawhtml' => 'Monstrar HTML brute',
 'expand_templates_preview' => 'Previsualisation',
 
 );
index fe900e3..20f7fce 100644 (file)
@@ -1620,7 +1620,7 @@ Tölvupóstfang þitt er ekki gefið upp þegar aðrir notendur hafa samband vi
 'recentchanges-feed-description' => 'Hér er hægt að fylgjast með nýlegum breytingum á {{SITENAME}}.',
 'recentchanges-label-newpage' => 'Þessi breyting skapaði nýja síðu',
 'recentchanges-label-minor' => 'Þetta er minniháttar breyting',
-'recentchanges-label-bot' => 'Þessi breytingar var gerð af vélmenni',
+'recentchanges-label-bot' => 'Þessi breyting var gerð af vélmenni',
 'recentchanges-label-unpatrolled' => 'Þessi breyting hefur ekki verið yfirfarin',
 'recentchanges-legend-newpage' => '(sjá einng [[Special:NewPages|lista yfir nýjar síður]])',
 'rcnotefrom' => "Að neðan eru breytingar síðan '''$2''' (allt að '''$1''' sýndar).",
@@ -2011,7 +2011,7 @@ Leitarstrengurinn á að vera á þessu formi: efnistag/myndasnið, t.d. <code>i
 'unusedtemplateswlh' => 'aðrir tenglar',
 
 # Random page
-'randompage' => 'Handahófsvalin grein',
+'randompage' => 'Handahófsvalin síða',
 'randompage-nopages' => 'Það eru engar síður í {{PLURAL:$2|nafnrýminu|nafnrýmunum}}: $1.',
 
 # Random page in category
index 82b42f5..9c26841 100644 (file)
@@ -1150,6 +1150,9 @@ Controlla le differenze mostrate sotto fra le due versioni per essere certo che
 'cantcreateaccount-text' => "La registrazione è stata bloccata da [[User:$3|$3]] per questo indirizzo IP ('''$1''').
 
 La motivazione del blocco fornita da $3 è la seguente: ''$2''",
+'cantcreateaccount-range-text' => "La registrazione da indirizzi IP nell'intervallo '''$1''', che include il tuo ('''$4'''), è stata bloccata da [[User:$3|$3]].
+
+La motivazione fornita da $3 è ''$2''",
 
 # History pages
 'viewpagelogs' => 'Visualizza i log relativi a questa pagina.',
@@ -1673,6 +1676,7 @@ Il tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.',
 'recentchanges-label-bot' => 'Questa modifica è stata effettuata da un bot',
 'recentchanges-label-unpatrolled' => 'Questa modifica non è stata ancora verificata',
 'recentchanges-label-plusminus' => 'La dimensione della pagina è cambiata di questo numero di byte',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => "(vedi anche [[Special:NewPages|l'elenco delle nuove pagine]])",
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Di seguito sono elencate le modifiche apportate a partire da '''$2''' (fino a '''$1''').",
@@ -3757,7 +3761,7 @@ Per favore, conferma che vuoi veramente ricreare questa pagina.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(lingua predefinita)',
-'img-lang-info' => 'Converti questa immagine in $1 $2.',
+'img-lang-info' => 'Converti questa immagine in $1. $2',
 'img-lang-go' => 'Vai',
 
 # Table pager
@@ -3866,14 +3870,15 @@ Questo programma deve essere distribuito assieme ad [{{SERVER}}{{SCRIPTPATH}}/CO
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Percorso script]',
 
 # Special:Redirect
-'redirect' => 'Reindirizzamento da file, utente o ID versione',
+'redirect' => 'Reindirizzamento da file, utente, pagina o versione',
 'redirect-legend' => 'Reindirizza a un file o una pagina',
-'redirect-summary' => 'Questa pagina speciale reindirizza a un file (specificando il nome del file), a una pagina (specificando un ID di versione) o a un utente (specificando un ID utente numerico).
-Esempi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Questa pagina speciale reindirizza a un file (specificando il nome del file), a una pagina (specificando un ID di versione o un ID pagina) o a un utente (specificando un ID utente numerico).
+Esempi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Vai',
 'redirect-lookup' => 'Ricerca:',
 'redirect-value' => 'Valore:',
 'redirect-user' => 'ID utente',
+'redirect-page' => 'ID della pagina',
 'redirect-revision' => 'Versione pagina',
 'redirect-file' => 'Nome del file',
 'redirect-not-exists' => 'Valore non trovato',
@@ -4115,10 +4120,12 @@ vale a dire praticamente tutto ciò che si trova tra doppie parentesi graffe.',
 'expand_templates_input' => 'Testo da espandere:',
 'expand_templates_output' => 'Risultato',
 'expand_templates_xml_output' => 'Output in formato XML',
+'expand_templates_html_output' => 'Risultato HTML',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Ignora i commenti',
 'expand_templates_remove_nowiki' => 'Elimina il tag <nowiki> nel risultato',
 'expand_templates_generate_xml' => 'Mostra albero sintattico XML',
+'expand_templates_generate_rawhtml' => 'Mostra HTML',
 'expand_templates_preview' => 'Anteprima',
 
 );
index aaaa6c1..d0ac15b 100644 (file)
@@ -1274,9 +1274,12 @@ $1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこのブロッ
 
 # Account creation failure
 'cantcreateaccounttitle' => 'アカウントを作成できません',
-'cantcreateaccount-text' => "このIPアドレス('''$1''')からのアカウント作成は[[User:$3|$3]]によってブロックされています。
+'cantcreateaccount-text' => "この IP アドレス ('''$1''') からのアカウント作成は、[[User:$3|$3]] によってブロックされています。
 
-$3が示した理由: ''$2''",
+$3 が示した理由: ''$2''",
+'cantcreateaccount-range-text' => "この IP アドレス ('''$4''') を含む、IP アドレス範囲 '''$1''' からのアカウント作成は、[[User:$3|$3]] によってブロックされています。
+
+$3 が示した理由: ''$2''",
 
 # History pages
 'viewpagelogs' => 'このページの記録を閲覧',
@@ -1817,6 +1820,7 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'recentchanges-label-bot' => 'ボットによる編集',
 'recentchanges-label-unpatrolled' => '巡回されていない編集',
 'recentchanges-label-plusminus' => 'ページ サイズの増減 (バイト単位)',
+'recentchanges-legend-heading' => "'''凡例:'''",
 'recentchanges-legend-newpage' => '([[Special:NewPages|新しいページ一覧]]も参照)',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "以下は'''$2'''以降の更新です (最大 '''$1''' 件)。",
@@ -2928,7 +2932,7 @@ $1 のブロックの理由は「''$2''」です。",
 'ipb_expiry_invalid' => '有効期限が無効です。',
 'ipb_expiry_temp' => '利用者名秘匿のブロックは、無期限ブロックになります。',
 'ipb_hide_invalid' => 'このアカウントを秘匿できません。編集回数が非常に多いためだと思われます。',
-'ipb_already_blocked' => '「$1」は既にブロックされています',
+'ipb_already_blocked' => '「$1」は既にブロックされています',
 'ipb-needreblock' => '$1 は既にブロックされています。設定を変更しますか?',
 'ipb-otherblocks-header' => 'その他の{{PLURAL:$1|ブロック}}',
 'unblock-hideuser' => '利用者名が隠されているため、この利用者のブロックを解除できません。',
@@ -2947,8 +2951,8 @@ $1 のブロックの理由は「''$2''」です。",
 'xffblockreason' => 'X-Forwarded-For ヘッダーに含まれている IP アドレスがブロックされています。これはあなたのものか、あなたが利用しているプロキシサーバーのものです。元のブロックの理由は: $1',
 'cant-see-hidden-user' => 'ブロックしようとしている利用者は、既にブロックされ隠されています。
 あなたには hideuser 権限がないため、この利用者のブロックの閲覧/編集はできません。',
-'ipbblocked' => '自分自身をブロックしているため、他の利用者のブロックやブロック解除はできません',
-'ipbnounblockself' => '自分自身のブロックは解除できません',
+'ipbblocked' => 'あなた自身がブロックされているため、他の利用者のブロックやブロック解除はできません。',
+'ipbnounblockself' => 'あなたには自身をブロック解除する権限がありません。',
 
 # Developer tools
 'lockdb' => 'データベースのロック',
@@ -4055,8 +4059,8 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(既定の言語)',
-'img-lang-info' => 'この画像を $1 で $2',
-'img-lang-go' => '描画',
+'img-lang-info' => 'この画像を $1 で描画する。$2',
+'img-lang-go' => '実行',
 
 # Table pager
 'ascending_abbrev' => '昇順',
@@ -4227,13 +4231,14 @@ MediaWikiは、有用であることを期待して配布されていますが
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath/ja スクリプトパス]',
 
 # Special:Redirect
-'redirect' => 'ファイル名、利用者ID、版IDでの転送',
+'redirect' => 'ファイル名、利用者ID、ページID、版IDでの転送',
 'redirect-legend' => 'ファイルまたはページヘの転送',
-'redirect-summary' => 'ã\81\93ã\81®ç\89¹å\88¥ã\83\9aã\83¼ã\82¸ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83« (ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\82\92æ\8c\87å®\9a\80\81ã\83\9aã\83¼ã\82¸ (ç\89\88 ID ã\82\92æ\8c\87å®\9a\80\81å\88©ç\94¨è\80\85ã\83\9aã\83¼ã\82¸ (å\88©ç\94¨è\80\85 ID ã\82\92æ\95´æ\95°ã\81§æ\8c\87å®\9a) ã\81«è»¢é\80\81ã\81\95ã\82\8cã\81¾ã\81\99ã\80\82使ç\94¨ä¾\8b: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]]',
+'redirect-summary' => 'ã\81\93ã\81®ç\89¹å\88¥ã\83\9aã\83¼ã\82¸ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83« (ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\82\92æ\8c\87å®\9a\80\81ã\83\9aã\83¼ã\82¸ (ç\89\88 ID ã\81¾ã\81\9fã\81¯ã\83\9aã\83¼ã\82¸ ID ã\82\92æ\8c\87å®\9a\80\81å\88©ç\94¨è\80\85ã\83\9aã\83¼ã\82¸ (å\88©ç\94¨è\80\85 ID ã\82\92æ\95´æ\95°ã\81§æ\8c\87å®\9a) ã\81«è»¢é\80\81ã\81\95ã\82\8cã\81¾ã\81\99ã\80\82使ç\94¨ä¾\8b: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]]',
 'redirect-submit' => '実行',
 'redirect-lookup' => '検索の種類:',
 'redirect-value' => '値:',
 'redirect-user' => '利用者 ID',
+'redirect-page' => 'ページ ID',
 'redirect-revision' => 'ページの版 ID',
 'redirect-file' => 'ファイル名',
 'redirect-not-exists' => '値が見つかりません',
@@ -4475,10 +4480,12 @@ MediaWikiは、有用であることを期待して配布されていますが
 'expand_templates_input' => '展開するテキスト:',
 'expand_templates_output' => '展開結果',
 'expand_templates_xml_output' => 'XML 出力',
+'expand_templates_html_output' => '出力される HTML ソース',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'コメントを除去',
 'expand_templates_remove_nowiki' => '結果に含まれる <nowiki> タグを表示しない',
 'expand_templates_generate_xml' => 'XML 構文解析ツリーを表示',
+'expand_templates_generate_rawhtml' => 'HTML ソースを表示',
 'expand_templates_preview' => 'プレビュー',
 
 );
index 8327fac..93edd7f 100644 (file)
@@ -445,8 +445,8 @@ $1',
 'youhavenewmessages' => 'თქვენ გაქვთ $1 ($2).',
 'youhavenewmessagesfromusers' => 'თქვენ გაქვთ $1 {{PLURAL:$3|სხვა მომხმარებლისგან|$3 მომხმარებლებისგან}} ($2).',
 'youhavenewmessagesmanyusers' => 'თქვენ გაქვთ $1 ბევრი მომხმარებლისგან ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|ახალი შეტყობინება|ახალი შეტყობინება}}',
-'newmessagesdifflinkplural' => 'ბოლო {{PLURAL:$1|ცვლილება|ცვლილება}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ახალი შეტყობინება|999=ახალი შეტყობინება}}',
+'newmessagesdifflinkplural' => 'ბოლო {{PLURAL:$1|ცვლილება|999=ცვლილება}}',
 'youhavenewmessagesmulti' => 'თქვენ გაქვთ ახალი შეტყობინება $1-ზე',
 'editsection' => 'რედაქტირება',
 'editold' => 'რედაქტირება',
@@ -569,7 +569,7 @@ $2',
 'invalidtitle-knownnamespace' => 'დაუშვებელი სათაური სახელთა სივრცე "$2" და ტექსტი "$3"-თან',
 'invalidtitle-unknownnamespace' => 'დაუშვებელი სათაური უცნობი სახელთა სივრცის ნომერი $1 და ტექსტი "$2"-ით',
 'exception-nologin' => 'შესვლა არ განხორციელდა',
-'exception-nologin-text' => 'ამ გვერდის სანახავად ან მოთხოვნილი მოქმედების შესასრულებლად საჭიროა სისტემაში შესვლა.',
+'exception-nologin-text' => 'ამ გვერდის სანახავად ან მოთხოვნილი მოქმედების შესასრულებლად საჭიროა [[Special:Userlogin|სისტემაში შესვლა]].',
 
 # Virus scanner
 'virus-badscanner' => "შეცდომა. ვირუსთა უცნობი სკანერი: ''$1''",
@@ -665,7 +665,7 @@ $2',
 იგი უნდა შეიცავდეს მინიმუმ $1 სიმბოლოს.',
 'password-name-match' => 'შეტანილი პაროლი უნდა განსხვავდებოდეს მომხმარებლის სახელისგან.',
 'password-login-forbidden' => 'ამ მომხმარებლის სახელისა და პაროლის გამოყენება აკრძალულია.',
-'mailmypassword' => 'á\83\90á\83®á\83\90á\83\9aá\83\98 á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83\92á\83\90á\83\9bá\83\9dá\83\92á\83\96á\83\90á\83\95á\83\9cა',
+'mailmypassword' => 'á\83\90á\83®á\83\90á\83\9aá\83\98 á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83\93á\83\90á\83§á\83\94á\83\9cá\83\94á\83\91ა',
 'passwordremindertitle' => 'ახალი დროებითი პაროლი {{SITENAME}}-თვის',
 'passwordremindertext' => 'ვიღაცამ (შესაძლოა თქვენ, IP მისამართით $1) მოითხოვა
 ახალი პაროლის გაგზავნა {{SITENAME}}-სთვის ($4).
@@ -737,7 +737,7 @@ Please wait $1 before trying again.',
 # Special:PasswordReset
 'passwordreset' => 'პაროლის აღდგენა',
 'passwordreset-text-one' => 'შეავსეთ ეს ფორმა, რათა კვლავ დააყენოთ თქვენი პაროლი.',
-'passwordreset-text-many' => '{{PLURAL:$1|á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83\97á\83\90á\83\95á\83\98á\83\93á\83\90á\83\9c á\83\93á\83\90á\83¡á\83\90á\83§á\83\94á\83\9cá\83\94á\83\91á\83\9aად შეავსეთ ერთ-ერთი ველი.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|á\83\94á\83\9a\83¤á\83\9dá\83¡á\83¢á\83\90á\83\96á\83\94 á\83\93á\83 á\83\9dá\83\94á\83\91á\83\98á\83\97á\83\98 á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83\9bá\83\98á\83¡á\83\90á\83¦á\83\94á\83\91ად შეავსეთ ერთ-ერთი ველი.}}',
 'passwordreset-legend' => 'პაროლის აღდგენა',
 'passwordreset-disabled' => 'ამ ვიკიში პაროლის კვლავ დაყენების ფუნქცია გამორთულია.',
 'passwordreset-emaildisabled' => 'ამ ვიკიში ელ.ფოსტის ფუნქციები გამორთულია.',
@@ -1054,9 +1054,8 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
 'last' => 'ბოლო',
 'page_first' => 'პირველი',
 'page_last' => 'ბოლო',
-'histlegend' => '*ვერსიის დათვალიერება: დააწკაპუნეთ სასურველი ვერსიის თარიღზე მის დასათვალიერებლად.
-*ვერსიების შედარება: აირჩიეთ სასურველი ვერსიები რადიო-რგოლების მონიშვნით და დააწკაპუნეთ შედარების ღილაკზე.
-*შემოკლებები: (მიმდ.) = სხვაობა მიმდინარე ვერსიასთან, (ბოლო) = სხვაობა წინა ვერსიასთან, მ = მცირე შესწორება.',
+'histlegend' => "ვერსიების შედარება: აირჩიეთ სასურველი ვერსიები რადიო-რგოლების მონიშვნით და დააწკაპუნეთ შედარების ღილაკზე.<br />
+ლეგენდა: '''({{int:cur}})''' = სხვაობა მიმდინარე ვერსიასთან, '''({{int:last}})''' = სხვაობა წინა ვერსიასთან, '''{{int:minoreditletter}}''' = მცირე შესწორება.",
 'history-fieldset-title' => 'დათვალიერების ისტორია',
 'history-show-deleted' => 'მხოლოდ წაშლილი',
 'histfirst' => 'უძველესი',
@@ -1116,11 +1115,10 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
 'revdelete-text' => "'''გვერდებისა და მოქმედებების წაშლილი ნაწილები დარჩება ისტორიაში და ჟურნალებში, მაგრამ მათ ნაწილს ვერ ნახავენ ჩვეულებრივი მომხმარებლები.'''
 პროექტის ადმინისტრატორებს ექნებათ შესაძლებლობა {{SITENAME}}ში დაინახონ ღია და არწაშლილი ნაწილი, და შეძლებენ აღადგინონ იგივე ინტერფეისის მეშვეობით, გარდა იმ შემთხვევებისა, როდესაც დამატებითი შეზღუდვა მოქმედებს.",
 'revdelete-confirm' => 'გთხოვთ დაადასტუროთ, რომ გსურთ ქმედების განხორციელება. ასევე ვიმედოვნებთ, რომ ყველაფერს აკეთებთ  [[{{MediaWiki:Policy-url}}|წესებთან შესაბამისობაში]].',
-'revdelete-suppress-text' => "დამალვა შეიძლება განხორციელდეს მხოლოდ ამ შემთხვევებში:
-
-
-* მიუსადეგი პირადი ინფორმაცია
-*: ''სახლის მისამართი, ტელეფონისა და პასპორტის ნომერი და მისთ. ''",
+'revdelete-suppress-text' => "დამალვა შეიძლება განხორციელდეს '''მხოლოდ''' შემდეგ შემთხვევებში:
+* პოტენციურად ცილისმწამებლური ინფორმაცია
+* უადგილო პირადი ინფორმაცია
+*: ''სახლის მისამართი, ტელეფონის ნომრები, პასპორტის ნომერი და ა.შ.''",
 'revdelete-legend' => 'შეზღუდვის დაყენება',
 'revdelete-hide-text' => 'შეცვლილი ტექსტი',
 'revdelete-hide-image' => 'ფაილის შინაარსის დამალვა',
@@ -1129,8 +1127,8 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
 'revdelete-hide-user' => 'რედაქტორის მომხმარებლის სახელი/IP-მისამართი',
 'revdelete-hide-restricted' => 'დამალეთ მონაცემები ადმინისტრატორთაგან',
 'revdelete-radio-same' => '(არ შეცვალოთ)',
-'revdelete-radio-set' => 'á\83®á\83\98ლული',
-'revdelete-radio-unset' => 'á\83\93á\83\90á\83\9bá\83\90ლული',
+'revdelete-radio-set' => 'á\83\93á\83\90á\83\9bá\83\90ლული',
+'revdelete-radio-unset' => 'á\83®á\83\98ლული',
 'revdelete-suppress' => 'დამალეთ მონაცემები ადმინისტრატორთაგან',
 'revdelete-unsuppress' => 'მოხსენით შეზღუდვა ვერსიების აღდგენისგან',
 'revdelete-log' => 'მიზეზი:',
@@ -1565,7 +1563,7 @@ $1",
 'rclistfrom' => 'ახალი ცვლილებების ჩვენება დაწყებული $1-დან',
 'rcshowhideminor' => 'მცირე რედაქტირების $1',
 'rcshowhidebots' => 'რობოტების  $1',
-'rcshowhideliu' => 'რეგისტრირებული მომხმარებლების $1',
+'rcshowhideliu' => '$1 რეგისტრირებული მომხმარებელი',
 'rcshowhideanons' => 'ანონიმური მომხმარებლების $1',
 'rcshowhidepatr' => 'გაკონტროლებული ცვლილებების $1',
 'rcshowhidemine' => 'ჩემი რედაქტირების $1',
@@ -2157,7 +2155,7 @@ $1',
 შესაძლოა არსებობს [[{{MediaWiki:Listgrouprights-helppage}}|დამატებითი ინფორმაცია]] ინდივიდუალურ უფლებებთან დაკავშირებით.',
 'listgrouprights-key' => 'ლეგენდა:
 * <span class="listgrouprights-granted">მიცემული უფლებები</span>
-* <span class="listgrouprights-revoked">á\83\92á\83\90á\83¬á\83\95ეული უფლებები</span>',
+* <span class="listgrouprights-revoked">á\83©á\83\90á\83\9bá\83\9dá\83 á\83\97á\83\9bეული უფლებები</span>',
 'listgrouprights-group' => 'ჯგუფი',
 'listgrouprights-rights' => 'უფლებები',
 'listgrouprights-helppage' => 'Help:ჯგუფების უფლებები',
@@ -3084,7 +3082,7 @@ $1',
 'svg-long-desc' => 'ფაილი SVG, ნომინალურად $1 × $2 პიქსელი, ფაილის ზომა: $3',
 'svg-long-desc-animated' => 'ანიმირებული SVG ფაილი, ნომინალური $1 × $2 პიქსელი, ფაილის ზომა: $3',
 'svg-long-error' => 'არასწორი SVG ფაილი: $1',
-'show-big-image' => 'á\83¡á\83 á\83£á\83\9aá\83\98 á\83\92á\83\90á\83 á\83©á\83\94á\83\95á\83\90á\83\93á\83\9dá\83\91á\83\90',
+'show-big-image' => 'á\83\97á\83\90á\83\95á\83\93á\83\90á\83\9eá\83\98á\83 á\83\95á\83\94á\83\9aá\83\98 á\83¤á\83\90á\83\98á\83\9aá\83\98',
 'show-big-image-preview' => 'ზომა წინასწარი გადახედვისას: $1.',
 'show-big-image-other' => 'სხვა {{PLURAL:$2|გაფართოება|გაფართოება}}: $1.',
 'show-big-image-size' => '$1 × $2 პიქსელი',
@@ -3827,7 +3825,7 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath გზა სკრიპტისაკენ]',
 
 # Special:Redirect
-'redirect' => 'გადამისამართება ფაილიდან, მომხმარებლიდან ან ვერსიის იდენტიფიკატორიდან',
+'redirect' => 'გადამისამართება ფაილიდან, მომხმარებლიდან, გვერდიდან ან ვერსიის იდენტიფიკატორიდან',
 'redirect-legend' => 'გადამისამართება ფაილზე ან გვერდზე',
 'redirect-submit' => 'მიდი',
 'redirect-lookup' => 'ძიება:',
@@ -3850,8 +3848,9 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 
 # Special:SpecialPages
 'specialpages' => 'სპეციალური გვერდები',
+'specialpages-note-top' => 'ლეგენდა',
 'specialpages-note' => '* ჩვეულებრივი სპეცგვერდები.
-* <span class="mw-specialpagerestricted">á\83¡á\83\9eá\83\94á\83ªá\83\92á\83\95á\83\94á\83 á\83\93á\83\94á\83\91á\83\98 á\83¨á\83\94á\83\96á\83¦á\83£á\83\93á\83£á\83\9aá\83\98 á\83\9bá\83\98á\83¡á\83\90á\83¬á\83\95á\83\93á\83\9dá\83\9bá\83\9dá\83\91ით.</span>',
+* <span class="mw-specialpagerestricted">á\83¡á\83\9eá\83\94á\83ªá\83\92á\83\95á\83\94á\83 á\83\93á\83\94á\83\91á\83\98 á\83¨á\83\94á\83\96á\83¦á\83£á\83\93á\83£á\83\9aá\83\98 á\83¬á\83\95á\83\93á\83\9dá\83\9bით.</span>',
 'specialpages-group-maintenance' => 'ტექნიკური მომსახურების ანგარიშები',
 'specialpages-group-other' => 'სხვა სპეციალური გვერდები',
 'specialpages-group-login' => 'შესვლა / რეგისტრაცია',
index afceba8..b684790 100644 (file)
@@ -50,12 +50,12 @@ $messages = array(
 'tog-hidepatrolled' => 'Ffer ibeddlen iεessan deg yibeddlen imaynuten',
 'tog-newpageshidepatrolled' => 'Ffer isebtaren iɛessan gar umuɣ n isebtaren imaynuten',
 'tog-extendwatchlist' => 'Ssemɣer umuɣ n uɛessi iwakken ad muqleɣ akk n wayen zemreɣ ad beddleɣ',
-'tog-usenewrc' => 'Sselhu ibeddlen ifessasen (JavaScript)',
+'tog-usenewrc' => 'Ssegrew ibeddlen s usebtar deg ibeddilen imaynuten d umuɣ n uḍfar',
 'tog-numberheadings' => 'Izwal ɣur-sen imḍanen mebla ma serseɣ-iten',
-'tog-showtoolbar' => 'Ssken tanuga n dduzan n ubeddel (JavaScript)',
-'tog-editondblclick' => 'Beddel isebtar mi wekkiɣ snat n tikwal (JavaScript)',
+'tog-showtoolbar' => 'Ssken tafeggagt n ifecka n ubeddel',
+'tog-editondblclick' => 'Beddel isebtar mi wekkiɣ snat n tikwal',
 'tog-editsection' => 'Eǧǧ abeddel n umur s yizdayen [beddel]',
-'tog-editsectiononrightclick' => 'Eǧǧ abeddel n umur mi wekkiɣ ɣef uyeffus<br /> ɣef yizwal n umur (JavaScript)',
+'tog-editsectiononrightclick' => 'Ssermed abeddel n tigezmi s ukliki ayeffus ɣef izwal',
 'tog-showtoc' => 'Ssken agbur (i isebtar i yesɛan kter n 3 izwalen)',
 'tog-rememberpassword' => 'Cfu ɣef yisem n umseqdac inu di uselkim-agi (i afellay n $1 {{PLURAL:$1|ass|ussan}})',
 'tog-watchcreations' => 'Rnu isebtar i xelqeɣ deg wumuɣ n uɛessi inu',
@@ -72,7 +72,7 @@ $messages = array(
 'tog-shownumberswatching' => 'Ssken geddac yellan n yimseqdacen iɛessasen',
 'tog-oldsig' => 'Azmul yellan :',
 'tog-fancysig' => 'ǧǧ azmul am yettili (war azday awurman)',
-'tog-uselivepreview' => 'Sseqdec pre-timeẓriwt taǧiḥbuṭ (JavaScript) (Experimental)',
+'tog-uselivepreview' => 'Sseqdec askan arurad (Experimental)',
 'tog-forceeditsummary' => 'Ini-iyi-d mi sskecmeɣ agzul amecluc',
 'tog-watchlisthideown' => 'Ffer ibeddlen inu seg wumuɣ n uɛessi inu',
 'tog-watchlisthidebots' => 'Ffer ibeddlen n iboṭiyen seg wumuɣ n uɛessi inu',
@@ -85,10 +85,11 @@ $messages = array(
 'tog-showhiddencats' => 'Beqqeḍ taggayin yeffren',
 'tog-norollbackdiff' => 'Ur beqqeḍ ara "diff" ma yella usemmet',
 'tog-useeditwarning' => 'Σeggen iyid mi ara fγaγ seg usebter mebla ma skeslaγ ibeddilen.',
+'tog-prefershttps' => 'Sseqdec yalass tuqqna yettwaḥerzen mi teqqneḍ',
 
 'underline-always' => 'Daymen',
 'underline-never' => 'Abaden',
-'underline-default' => 'Browser/Explorateur ameslugen',
+'underline-default' => 'Azal s lexṣas n iminig neɣ n usentel',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Aɣanib n tasefsit n taɣzut ubeqqeḍ :',
@@ -116,7 +117,7 @@ $messages = array(
 'february' => 'Furar',
 'march' => 'Meɣres',
 'april' => 'Yebrir',
-'may_long' => 'Mayu',
+'may_long' => 'Mayyu',
 'june' => 'Yunyu',
 'july' => 'Yulyu',
 'august' => 'Ɣuct',
@@ -128,7 +129,7 @@ $messages = array(
 'february-gen' => 'Furar',
 'march-gen' => 'Meɣres',
 'april-gen' => 'Yebrir',
-'may-gen' => 'Mayu',
+'may-gen' => 'Mayyu',
 'june-gen' => 'Yunyu',
 'july-gen' => 'Yulyu',
 'august-gen' => 'Ɣuct',
@@ -163,8 +164,8 @@ $messages = array(
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Taggayt|Taggayin}}',
-'category_header' => 'Imagraden deg taggayt "$1"',
-'subcategories' => 'Taggayin tizellumin',
+'category_header' => 'Isebtar deg taggayt "$1"',
+'subcategories' => 'Adutaggayin',
 'category-media-header' => 'Media deg taggayt "$1"',
 'category-empty' => "''Taggayt-agi d tilemt.''",
 'hidden-categories' => '{{PLURAL:$1|Taggayt yeffren|Taggayin yeffren}}',
@@ -185,10 +186,11 @@ $messages = array(
 'newwindow' => '(teldi deg ttaq amaynut)',
 'cancel' => 'Eǧǧ-it am yella',
 'moredotdotdot' => 'Ugar...',
-'mypage' => 'Asebter inu',
-'mytalk' => 'Amyannan inu',
+'morenotlisted' => 'Umuɣ agi ur yella ara d ummid.',
+'mypage' => 'Asebtar',
+'mytalk' => 'Amyannan',
 'anontalk' => 'Amyannan n IP-yagi',
-'navigation' => 'Ẓer isebtar',
+'navigation' => 'Assilel',
 'and' => '&#32;u',
 
 # Cologne Blue skin
@@ -217,6 +219,7 @@ $messages = array(
 'namespaces' => 'Talluntin n isemawen',
 'variants' => 'Tineḍwa',
 
+'navigation-heading' => 'Umuɣ n tunigin',
 'errorpagetitle' => 'Agul',
 'returnto' => 'Uɣal ar $1.',
 'tagline' => 'Seg {{SITENAME}}',
@@ -238,6 +241,7 @@ $messages = array(
 'create-this-page' => 'Snulfu asebter-agi',
 'delete' => 'Mḥu',
 'deletethispage' => 'Mḥu asebter-agi',
+'undeletethispage' => 'Erred asebter agi',
 'undelete_short' => 'Fakk amḥay n {{PLURAL:$1|yiwen ubeddel|$1 yibeddlen}}',
 'viewdeleted_short' => 'Ẓeṛ {{PLURAL:$1|yiwen abeddel yettumḥan|$1 Ibeddlen yettumḥan}}',
 'protect' => 'Ḥrez',
@@ -254,7 +258,7 @@ $messages = array(
 'articlepage' => 'Ẓer ayen yellan deg usebter',
 'talk' => 'Amyannan',
 'views' => 'Tuẓrin',
-'toolbox' => 'Dduzan',
+'toolbox' => 'Ifecka',
 'userpage' => 'Ẓer asebter n wemseqdac',
 'projectpage' => 'Ẓer asebter n usenfar',
 'imagepage' => 'Ẓer asebter n tugna',
@@ -284,7 +288,7 @@ $1',
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
 'aboutsite' => 'Awal ɣef {{SITENAME}}',
 'aboutpage' => 'Project:Awal ɣef...',
-'copyright' => 'Tzemreḍ ad twaliḍ ayen yella deg $1.',
+'copyright' => 'Agbur yella ddaw $1 ḥaca ma abdar anemgal.',
 'copyrightpage' => '{{ns:project}}:Izerfanɣel',
 'currentevents' => 'Isallen',
 'currentevents-url' => 'Project:Isallen',
@@ -312,8 +316,8 @@ $1',
 'youhavenewmessages' => 'Ɣur-k $1 ($2).',
 'youhavenewmessagesfromusers' => 'Tesɛiḍ $1 n {{PLURAL:$3|useqdac nniḍen|$3 iseqdacen nniḍen}} ( $2 ).',
 'youhavenewmessagesmanyusers' => 'Tesɛiḍ $1 n aṭas n iseqdacen ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|izen amaynut|inzan imaynuten}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|abeddel aneggaru|ibeddilen ineggura}}',
+'newmessageslinkplural' => '{{PLURAL:$1|izen amaynut|999=inzan imaynuten}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|abeddel aneggaru|999=ibeddilen ineggura}}',
 'youhavenewmessagesmulti' => 'Tesɛiḍ iznan imaynuten deg $1',
 'editsection' => 'beddel',
 'editold' => 'beddel',
@@ -361,6 +365,8 @@ $1',
 # General errors
 'error' => 'Agul',
 'databaseerror' => 'Agul n database',
+'databaseerror-function' => 'Tawuri: $1',
+'databaseerror-error' => 'Tuccḍa: $1',
 'laggedslavemode' => 'Aɣtal: Ahat asebter ur yesɛi ara akk ibeddlen imaynuten.',
 'readonly' => 'Database d tamsekkert',
 'enterlockreason' => 'Ini ayɣer tsekkreḍ database, ini daɣen melmi ara ad ifukk asekker',
index 59b7eea..a785b3f 100644 (file)
@@ -1189,10 +1189,10 @@ $3 келтірілген себебі: ''$2''",
 'last' => 'соң.',
 'page_first' => 'алғашқысына',
 'page_last' => 'соңғысына',
-'histlegend' => "</span><br /><span style=\"white-space:nowrap;\">Сыртқы құралдар: [http://vs.aka-online.de/cgi-bin/wppagehiststat.pl?lang=kk.wikipedia&page={{FULLPAGENAMEE}} Өңдеу статистикасы] '''·'''</span> <span style=\"white-space:nowrap;\">[http://wikipedia.ramselehof.de/wikiblame.php?lang=kk&article={{FULLPAGENAMEE}} Өзгеріс тарихын іздеу] '''·'''</span> <span style=\"white-space:nowrap;\">[//toolserver.org/~daniel/WikiSense/Contributors.php?wikilang=kk&wikifam=.wikipedia.org&grouped=on&page={{FULLPAGENAMEE}} Үлестер статистикасы] '''·'''</span> <span style=\"white-space:nowrap;\">[http://toolserver.org/~snottywong/usersearch.html?page={{FULLPAGENAMEE}} Қатысушы өңдемелері] '''·'''</span> <span style=\"white-space:nowrap;\">[//toolserver.org/~mzmcbride/cgi-bin/watcher.py?db=kkwiki_p&titles={{FULLPAGENAMEE}} Көрушілер саны] '''·'''</span> <span style=\"white-space:nowrap;\">[http://stats.grok.se/kk/latest/{{FULLPAGENAMEE}} Бетің қаралу статистикасы] '''·'''</span> Тағы қараңыз: <span style=\"white-space:nowrap;\">[{{fullurl:{{FULLPAGENAMEE}}|action=info}} бет туралы мәліметтер]</span>
+'histlegend' => "<br /><span style=\"white-space:nowrap;\">Сыртқы құралдар: [http://vs.aka-online.de/cgi-bin/wppagehiststat.pl?lang=kk.wikipedia&page={{FULLPAGENAMEE}} Өңдеу статистикасы] '''·'''</span> <span style=\"white-space:nowrap;\">[http://wikipedia.ramselehof.de/wikiblame.php?lang=kk&article={{FULLPAGENAMEE}} Өзгеріс тарихын іздеу] '''·'''</span> <span style=\"white-space:nowrap;\">[//toolserver.org/~daniel/WikiSense/Contributors.php?wikilang=kk&wikifam=.wikipedia.org&grouped=on&page={{FULLPAGENAMEE}} Үлестер статистикасы] '''·'''</span> <span style=\"white-space:nowrap;\">[http://toolserver.org/~snottywong/usersearch.html?page={{FULLPAGENAMEE}} Қатысушы өңдемелері] '''·'''</span> <span style=\"white-space:nowrap;\">[//toolserver.org/~mzmcbride/cgi-bin/watcher.py?db=kkwiki_p&titles={{FULLPAGENAMEE}} Көрушілер саны] '''·'''</span> <span style=\"white-space:nowrap;\">[http://stats.grok.se/kk/latest/{{FULLPAGENAMEE}} Бетің қаралу статистикасы] '''·'''</span> Тағы қараңыз: <span style=\"white-space:nowrap;\">[{{fullurl:{{FULLPAGENAMEE}}|action=info}} бет туралы мәліметтер]</span>
 ----
 Айырмасын бөлектеу: салыстырмақ нұсқаларының қосу көздерін белгілеп <Enter> пернесін басыңыз, немесе төмендегі батырманы нұқыңыз.<br />
-Шартты белгілер: <span style=\"white-space:nowrap;\">(ағым.) = ағымдық нұсқамен айырмасы, <span style=\"white-space:nowrap;\">(соң.) = алдыңғы нұсқамен айырмасы, </span> <span style=\"white-space:nowrap;\">&nbsp; '''ш''' = [[Уикипедия:Шағын өңдеме|шағын өңдеме]], → = [[Help:Бөлім#Бөлімін өңдеу|бөлімін өңдеу]]</span></div>",
+Шартты белгілер: <span style=\"white-space:nowrap;\">(ағым.) = ағымдық нұсқамен айырмасы, <span style=\"white-space:nowrap;\">(соң.) = алдыңғы нұсқамен айырмасы, </span> <span style=\"white-space:nowrap;\">&nbsp; '''ш''' = [[Уикипедия:Шағын өңдеме|шағын өңдеме]], → = [[Help:Бөлім#Бөлімін өңдеу|бөлімін өңдеу]]</span>",
 'history-fieldset-title' => 'Тарихынан іздеу',
 'history-show-deleted' => 'Жойылғанын ғана көрсету',
 'histfirst' => 'Ең ескісіне',
@@ -1347,7 +1347,7 @@ $1",
 'showingresultsheader' => "«'''$4'''» үшін {{PLURAL:$5|тек '''$1''' нәтиже табылды|табылған '''$3''' нәтиженің '''$1—$2''' аралығы көрсетілген}}",
 'search-nonefound' => 'Сұрауға сәйкес нәтижелер табылмады.',
 'powersearch-legend' => 'Кеңейтілген іздеу',
-'powersearch-ns' => 'Ð\9cÑ\8bна ÐµÑ\81Ñ\96м Ð°Ñ\8fлаÑ\80Ð´а іздеу:',
+'powersearch-ns' => 'Ð\90Ñ\82аÑ\83 ÐºÐµÒ£Ñ\96Ñ\81Ñ\82Ñ\96кÑ\82еÑ\80Ñ\96 Ð±Ð¾Ð¹Ñ\8bнÑ\88а іздеу:',
 'powersearch-redir' => 'Айдатуларды тізімдеу',
 'powersearch-togglelabel' => 'Белгілеу:',
 'powersearch-toggleall' => 'Барлығы',
@@ -1643,6 +1643,7 @@ $1",
 'recentchanges-label-bot' => 'Бұл өңдемені бот жасады.',
 'recentchanges-label-unpatrolled' => 'Бұл өңдеме әлі тексеруден өтпеді.',
 'recentchanges-label-plusminus' => 'Байт бойынша беттің өзгеріс мөлшері',
+'recentchanges-legend-heading' => "'''Шартты белгілер:'''",
 'recentchanges-legend-newpage' => 'қ. [[Special:NewPages|бөлек бетте]]',
 'rcnotefrom' => "Төменде '''$2''' кезінен бергі ('''$1''' жеткенше дейін) өзгерістер көрсетіледі.",
 'rclistfrom' => '$1 кезінен бергі жаңа өзгерістерді көрсет.',
@@ -2196,7 +2197,7 @@ URL дұрыс екендігін және торап істеп тұрғаны
 'notvisiblerev' => 'Түзету жойылды',
 'watchlist-details' => 'Тізіміңізде $1 бет бар (талқылау беттері саналмайды).',
 'wlheader-enotif' => 'Ескерту хат жіберуі қосылған.',
-'wlheader-showupdated' => "Соңғы келіп-кетуіңізден бері өзгертілген беттерді '''жуан''' қаріпімен көрсет",
+'wlheader-showupdated' => "Соңғы келіп-кетуіңізден бері өзгертілген беттер '''жуан''' қаріпімен көрсетіледі.",
 'watchmethod-recent' => 'бақылаулы беттер үшін жуықтағы өзгерістерді тексеру',
 'watchmethod-list' => 'жуықтағы өзгерістер үшін бақылаулы беттерді тексеру',
 'watchlistcontains' => 'Бақылау тізіміңізде $1 бет бар.',
index f082d82..23b0d01 100644 (file)
@@ -11,6 +11,7 @@
  * @author Altostratus
  * @author Chanhee
  * @author Chulki Lee
+ * @author Clockoon
  * @author Cwt96
  * @author Devunt
  * @author Ficell
@@ -33,6 +34,7 @@
  * @author PuzzletChung
  * @author TheAlpha for knowledge
  * @author ToePeu
+ * @author Yjs5497
  * @author Yknok29
  * @author לערי ריינהארט
  * @author 관인생략
@@ -1254,6 +1256,9 @@ $2개 보다 적게 {{PLURAL:$2|써야}} 하지만 {{PLURAL:$1|지금은 $1개
 'cantcreateaccount-text' => "현재 아이피 주소('''$1''')는 [[User:$3|$3]] 사용자에 의해 계정 만들기가 차단되었습니다.
 
 차단 이유는 다음과 같습니다: $2",
+'cantcreateaccount-range-text' => "당신의 IP 주소('''\$4''')가 속해 있는 '''\$1''' 대역에서의 계정 생성을 [[User:\$3|\$3]] 사용자가 차단하였습니다.
+
+\$3 사용자가 제시한 이유는 \"\$2\"입니다.",
 
 # History pages
 'viewpagelogs' => '이 문서의 기록 보기',
@@ -1790,12 +1795,14 @@ HTML 태그를 확인하세요.',
 'recentchanges-label-bot' => '봇의 편집',
 'recentchanges-label-unpatrolled' => '아직 검토하지 않은 편집',
 'recentchanges-label-plusminus' => '바이트로 표기된 바뀐 문서 크기',
-'recentchanges-legend-newpage' => '([[Special:NewPages|새 문서 목록]]도 참고)',
+'recentchanges-legend-heading' => "'''범례:'''",
+'recentchanges-legend-newpage' => '([[Special:NewPages|새 문서 목록]]도 참고하세요)',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "다음은 '''$2'''에서부터 바뀐 문서 '''$1'''개입니다.",
 'rclistfrom' => '$1 이래로 새로 바뀐 문서 보기',
 'rcshowhideminor' => '사소한 편집을 $1',
 'rcshowhidebots' => '봇을 $1',
-'rcshowhideliu' => '등록 사용자를 $1',
+'rcshowhideliu' => '등록 사용자를 $1',
 'rcshowhideanons' => '익명 사용자를 $1',
 'rcshowhidepatr' => '검토된 편집을 $1',
 'rcshowhidemine' => '내 편집을 $1',
@@ -4064,13 +4071,14 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath 스크립트 경로]',
 
 # Special:Redirect
-'redirect' => '파일, 사용자나 판 ID별 넘겨주기',
+'redirect' => '파일, 사용자, 문서나 판 ID로 넘겨주기',
 'redirect-legend' => '파일이나 문서로 넘겨주기',
-'redirect-summary' => 'ì\9d´ í\8a¹ì\88\98 ë¬¸ì\84\9cë\8a\94 í\8c\8cì\9d¼(í\8c\8cì\9d¼ ì\9d´ë¦\84ì\9d\84 ì§\80ì \95), ë¬¸ì\84\9c\8c\90 ID를 ì§\80ì \95\82\98 ì\82¬ì\9a©ì\9e\90 ë¬¸ì\84\9c\82¬ì\9a©ì\9e\90 ID를 ì \95ì\88\98ë¡\9c ì§\80ì \95)ë¡\9c ë\84\98겨ì¤\8dë\8b\88ë\8b¤. ì\82¬ì\9a©ë²\95: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], í\98¹ì\9d\80 [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'ì\9d´ í\8a¹ì\88\98 ë¬¸ì\84\9cë\8a\94 í\8c\8cì\9d¼(í\8c\8cì\9d¼ ì\9d´ë¦\84ì\9d´ ì£¼ì\96´ì§\90), ë¬¸ì\84\9c\8c\90 IDë\82\98 ë¬¸ì\84\9c IDê°\80 ì£¼ì\96´ì§\90\82\98 ì\82¬ì\9a©ì\9e\90 ë¬¸ì\84\9c\88«ì\9e\90ë¡\9c í\91\9cì\8b\9cë\90\9c ì\82¬ì\9a©ì\9e\90 IDê°\80 ì£¼ì\96´ì§\90)ë¡\9c ë\84\98겨ì¤\8dë\8b\88ë\8b¤. ì\82¬ì\9a©ë²\95: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ë\98\90ë\8a\94 [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => '보기',
 'redirect-lookup' => '찾을 종류:',
 'redirect-value' => '값:',
 'redirect-user' => '사용자 ID',
+'redirect-page' => '문서 ID',
 'redirect-revision' => '문서 판',
 'redirect-file' => '파일 이름',
 'redirect-not-exists' => '값을 찾을 수 없습니다',
@@ -4312,10 +4320,12 @@ $5
 'expand_templates_input' => '전개할 내용:',
 'expand_templates_output' => '결과',
 'expand_templates_xml_output' => 'XML 출력',
+'expand_templates_html_output' => '원본 HTML 출력',
 'expand_templates_ok' => '확인',
 'expand_templates_remove_comments' => '주석 제거',
 'expand_templates_remove_nowiki' => '결과에서 <nowiki> 태그를 숨기기',
 'expand_templates_generate_xml' => 'XML 구문 트리 보기',
+'expand_templates_generate_rawhtml' => '원본 HTML 보이기',
 'expand_templates_preview' => '미리 보기',
 
 );
index 6cc9b00..a434f7d 100644 (file)
@@ -676,7 +676,7 @@ Wann De wells, künnts De Ding [[Special:Preferences|Enschtällonge aanpaße]].'
 'userlogin-resetpassword-link' => 'Paßwoot verjäße?',
 'helplogin-url' => 'Help:Övver et Enlogge',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hölp bem Enlogge]]',
-'userlogin-loggedin' => 'Do bes ald als {{GENDER:$2|Metmaacher|Metmaacherėn|Metmaacher|Metmaacherėn|Metmaacher}} $1 enjelogg. Met heh dämm Fommolaa kanns De jäz onger enem ander Nahme enlogge.',
+'userlogin-loggedin' => 'Do bes ald als {{GENDER:$1|Metmaacher|Metmaacherėn|Metmaacher|Metmaacherėn|Metmaacher}} [[User:$1]] enjelogg. Met heh dämm Fommolaa kanns De jäz onger enem andere Nahme enlogge.',
 'userlogin-createanother' => 'Donn ene zohsäzlejje Zohjang aanlääje',
 'createacct-join' => 'Jiv Ding Daate en:',
 'createacct-another-join' => 'Maach de nüüdeje Aanjaabe för dä neue Zohjaang.',
@@ -1712,7 +1712,7 @@ dat dänne ehr Daate topaktoell sin,
 'rclistfrom' => 'Zeich de Änderunge vum $1 aan',
 'rcshowhideminor' => '$1 klein Mini-Änderunge',
 'rcshowhidebots' => '$1 de Bots ehr Änderunge',
-'rcshowhideliu' => '$1 de aanjemeldte Metmaacher ehr Änderunge',
+'rcshowhideliu' => 'De aanjemeldte Metmaacher ehr Änderunge: $1',
 'rcshowhideanons' => '$1 de namenlose Metmaacher ehr Änderunge',
 'rcshowhidepatr' => '$1 de nohjeluurte Änderunge',
 'rcshowhidemine' => '$1 ming eije Änderunge',
index f5baf5b..b9a3343 100644 (file)
@@ -1588,6 +1588,7 @@ Dës Informatioun ass ëffentlech.",
 'recentchanges-label-bot' => 'Dës Ännerung gouf vun engem Bot gemaacht',
 'recentchanges-label-unpatrolled' => 'Dës Ännerung gouf nach net nogekuckt',
 'recentchanges-label-plusminus' => "D'Gréisst vun der Säit huet sech ëm déi Zuel vu Bytes geännert",
+'recentchanges-legend-heading' => "'''Legend:'''",
 'recentchanges-legend-newpage' => '(kuckt och [[Special:NewPages|Lëscht vun den neie Säiten]])',
 'recentchanges-legend-plusminus' => "''(±123)''",
 'rcnotefrom' => "Ugewise ginn d'Ännerunge vum '''$2''' un (maximal '''$1''' Ännerunge gi gewisen).",
@@ -3657,7 +3658,7 @@ Dëse Confirmatiounscode leeft den $4 of.',
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(Standard-Sprooch)',
-'img-lang-info' => 'Dëst Bild op $1$ $2 renderen.',
+'img-lang-info' => 'Dëst Bild op $1 renderen. $2',
 'img-lang-go' => 'Lass',
 
 # Table pager
@@ -3756,14 +3757,15 @@ Dir misst eng [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun der GNU General Public
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Viruleedung duerch e Fichier, Benotzer oder Versiouns-ID',
+'redirect' => 'Viruleedung duerch e Fichier, e Benotzer, eng Säit oder eng Versiouns-ID',
 'redirect-legend' => 'Viruleedung op ee Fichier oder eng Säit',
 'redirect-summary' => 'Dës Spezialsäit ass eng Viruleedung op e Fichier (Fichiersnumm uginn), eng Säit (Versiounsnummer uginn) oder eng Benotzersäit (numeresch Benotzeridentifikatioun uginn).
-Gebrauch: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], oder [[{{#Special:Redirect}}/user/101]].',
+Gebrauch: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], oder [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Lass',
 'redirect-lookup' => 'Nosichen:',
 'redirect-value' => 'Wäert:',
 'redirect-user' => 'Benotzernummer',
+'redirect-page' => 'ID (Nummer) vun der Säit',
 'redirect-revision' => 'Versioun vun der Säit',
 'redirect-file' => 'Numm vum Fichier',
 'redirect-not-exists' => 'Wäert net fonnt',
@@ -4003,6 +4005,7 @@ Faktesch alles wat tëscht duebelen Accolade steet gëtt ausgewäert.',
 'expand_templates_remove_comments' => 'Bemierkunge läschen',
 'expand_templates_remove_nowiki' => '<nowiki>-Taggen am Resultat suppriméieren',
 'expand_templates_generate_xml' => "Weis d'Struktur vum XML",
+'expand_templates_generate_rawhtml' => 'HTML-Format weisen',
 'expand_templates_preview' => 'Kucken ouni ofzespäicheren',
 
 );
index dc5f5d9..2ff6b71 100644 (file)
@@ -1024,6 +1024,7 @@ $2',
 'tooltip-rollback' => '"ورگشتن" لرستن د حالت اول  سی ای بلگه  که سی  يه كه هومياری  نيايی اصلاح بيه وا يه پورنسن',
 'tooltip-undo' => 'انجوم نگرتن ای ویرایشت ورگن و همه فرمیا ویرایشت تانه که حالت پیش سیل واکو.یه اجازه میئه سی اضاف کردن یه دلیل د چکسته.',
 'tooltip-summary' => 'يه چكسته كؤچك وارد بكيد',
+'interlanguage-link-title' => '$1-$2',
 
 # Browsing diffs
 'previousdiff' => '← ويرايشت كۈهنه تر',
index 133060d..5fb9199 100644 (file)
@@ -30,6 +30,7 @@
  * @author Urhixidur
  * @author Vilius2001
  * @author Vpovilaitis
+ * @author Xabier Armendaritz
  * @author לערי ריינהארט
  */
 
@@ -282,7 +283,7 @@ $messages = array(
 'mar' => 'kov',
 'apr' => 'bal',
 'may' => 'geg',
-'jun' => 'bir',
+'jun' => 'Eka',
 'jul' => 'lie',
 'aug' => 'rgp',
 'sep' => 'rgs',
index bbc051f..e4805bc 100644 (file)
@@ -1273,6 +1273,7 @@ Ja tu izvēlies to norādīt, tas tiks izmantots, lai identificētu tavu darbu (
 'recentchanges-label-bot' => 'Šī ir bota veikta izmaiņa',
 'recentchanges-label-unpatrolled' => 'Šis labojums vēl nav pārbaudīts',
 'recentchanges-label-plusminus' => 'Par tik baitiem tika izmainīts lapas izmērs',
+'recentchanges-legend-heading' => "'''Apzīmējumi:'''",
 'recentchanges-legend-newpage' => '(skatīt arī [[Special:NewPages|jaunās lapas]])',
 'rcnotefrom' => "Šobrīd redzamas izmaiņas kopš '''$2''' (parādītas ne vairāk par '''$1''').",
 'rclistfrom' => 'Parādīt jaunas izmaiņas kopš $1',
@@ -3065,6 +3066,7 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 
 # Special:SpecialPages
 'specialpages' => 'Īpašās lapas',
+'specialpages-note-top' => 'Apzīmējumi',
 'specialpages-note' => '* Normālas īpašās lapas.
 * <span class="mw-specialpagerestricted">Ierobežotas pieejas īpašās lapas.</span>
 * <span class="mw-specialpagecached">Iekešotās īpašās lapas.</span>',
index 35a1502..0fa5734 100644 (file)
@@ -258,7 +258,7 @@ $messages = array(
 'talk' => 'Каҥашымаш',
 'views' => 'Ончалаш',
 'toolbox' => 'Ӱзгар-влак',
-'userpage' => 'Пайдаланышын лаштыкым ончалаш',
+'userpage' => 'Ð\9fайдаланÑ\8bÑ\88Ñ\8bн Ð»Ð°Ñ\88Ñ\82Ñ\8bкÑ\88Ñ\8bм Ð¾Ð½Ñ\87алаÑ\88',
 'imagepage' => 'Файлын лаштыкым ончалаш',
 'templatepage' => 'Ямдылыкын лаштыкым ончалаш',
 'viewhelppage' => 'Полыш лаштыкым ончалаш',
@@ -996,7 +996,7 @@ $messages = array(
 'tooltip-ca-addsection' => 'У ужашым тӱҥалаш',
 'tooltip-ca-viewsource' => 'Тиде лаштыкым аралыме.
 Тый тудын тӱҥалтыш текстшым ончалын кертат.',
-'tooltip-ca-history' => 'Ð\9bаÑ\88Ñ\82Ñ\8bкÑ\8bм ондаксе тӧрлатымаш',
+'tooltip-ca-history' => 'Ð\9bаÑ\88Ñ\82Ñ\8bкÑ\8bн ондаксе тӧрлатымаш',
 'tooltip-ca-protect' => 'Тиде лаштыкым тӧрлатымаш деч аралаш',
 'tooltip-ca-delete' => 'Тиде лаштыкым шӧраш',
 'tooltip-ca-move' => 'Тиде лаштыкым кусараш',
index e98345f..55107a4 100644 (file)
@@ -1783,6 +1783,7 @@ $1",
 'recentchanges-label-bot' => 'Ова уредување е направено од бот',
 'recentchanges-label-unpatrolled' => 'Ова уредување сè уште не е испатролирано',
 'recentchanges-label-plusminus' => 'Промена на големината на страницата во бајти',
+'recentchanges-legend-heading' => "'''Легенда:'''",
 'recentchanges-legend-newpage' => '(погл. и [[Special:NewPages|списокот на нови страници]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'Подолу се промените од <b>$2</b> (се прикажуваат до <b>$1</b>).',
@@ -4007,7 +4008,7 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(стандарден јазик)',
-'img-lang-info' => 'Испиши ја сликата на $1 $2.',
+'img-lang-info' => 'Испиши ја сликата на $1. $2',
 'img-lang-go' => 'Прикажи',
 
 # Table pager
@@ -4192,13 +4193,14 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath?uselang=mk Скрипта]',
 
 # Special:Redirect
-'redirect' => 'Ð\9fÑ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aе Ð¿Ð¾ Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82ека, корисник или назнака на ревизија',
+'redirect' => 'Ð\9fÑ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aе Ð¿Ð¾ Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еки, корисник или назнака на ревизија',
 'redirect-legend' => 'Пренасочување кон податотека или страница',
-'redirect-summary' => 'Оваа специјална страница пренасочува кон податотека (се задава името), страница (се задава назнаката на ревизијата) или корисничка странца (се задава бројчената назнака на корисникот). Употреба: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Оваа специјална страница пренасочува кон податотека (се задава името), страница (се задава назнаката на ревизијата или страницата) или корисничка странца (се задава бројчената назнака на корисникот). Употреба: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Оди',
 'redirect-lookup' => 'Пребарај:',
 'redirect-value' => 'Вредност:',
 'redirect-user' => 'Корисничка назнака',
+'redirect-page' => 'Назнака на страницата',
 'redirect-revision' => 'Ревизија на страницата',
 'redirect-file' => 'Име на податотека',
 'redirect-not-exists' => 'Вредноста не е најдена',
@@ -4440,10 +4442,12 @@ $5
 'expand_templates_input' => 'Влезен текст:',
 'expand_templates_output' => 'Извод',
 'expand_templates_xml_output' => 'XML излез',
+'expand_templates_html_output' => 'Сиров HTML-извод',
 'expand_templates_ok' => 'ОК',
 'expand_templates_remove_comments' => 'Отстрани коментари',
 'expand_templates_remove_nowiki' => 'Притаи <nowiki> ознаки во резултатот',
 'expand_templates_generate_xml' => 'Прикажи XML дрво на парсирање',
+'expand_templates_generate_rawhtml' => 'Прикажувај сиров HTML',
 'expand_templates_preview' => 'Преглед',
 
 );
index e8a9226..4974984 100644 (file)
@@ -1737,6 +1737,7 @@ $1",
 'recentchanges-label-bot' => 'ഇത് യന്ത്രം ചെയ്ത തിരുത്താണ്',
 'recentchanges-label-unpatrolled' => 'ഇതുവരെ റോന്തുചുറ്റപ്പെടാത്ത തിരുത്ത്',
 'recentchanges-label-plusminus' => 'താളിന്റെ വലിപ്പം ഇത്രയും ബൈറ്റുകൾ മാറിയിരിക്കുന്നു',
+'recentchanges-legend-heading' => "'''സൂചന:'''",
 'recentchanges-legend-newpage' => '([[Special:NewPages|പുതിയ താളുകളുടെ പട്ടികയും]] കാണുക)',
 'rcnotefrom' => '<b>$2</b> മുതലുള്ള മാറ്റങ്ങൾ (<b>$1</b> എണ്ണം വരെ കാണാം).',
 'rclistfrom' => '$1 മുതലുള്ള മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക',
@@ -3829,7 +3830,7 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(സ്വതേ വേണ്ട ഭാഷ)',
-'img-lang-info' => 'à´\88 à´\9aà´¿à´¤àµ\8dà´°à´\82 à´\87à´\99àµ\8dà´\99à´¨àµ\86 $1 à´\95ാണിà´\95àµ\8dà´\95àµ\81à´\95 $2.',
+'img-lang-info' => 'à´\88 à´\9aà´¿à´¤àµ\8dà´°à´\82 à´\88 à´­à´¾à´·à´¯à´¿àµ½ à´\95ാണിà´\95àµ\8dà´\95àµ\81à´\95: $1. $2',
 'img-lang-go' => 'പോകൂ',
 
 # Table pager
@@ -3941,13 +3942,14 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath സ്ക്രിപ്റ്റ് പഥം]',
 
 # Special:Redirect
-'redirect' => 'പ്രമാണത്താൽ, ഉപയോക്താവിനാൽ അഥവാ നാൾപ്പതിപ്പ് ഐ.ഡി. ചെയ്യുന്ന തിരിച്ചുവിടൽ',
+'redirect' => 'പ്രമാണത്താൽ, ഉപയോക്താവിനാൽ, താളിനാൽ അഥവാ നാൾപ്പതിപ്പ് ഐ.ഡി.യാൽ ചെയ്യുന്ന തിരിച്ചുവിടൽ',
 'redirect-legend' => 'ഒരു പ്രമാണത്തിലോട്ടോ താളിലോട്ടോ ഉള്ള തിരിച്ചുവിടൽ',
-'redirect-summary' => 'ഈ പ്രത്യേക താൾ ഒരു പ്രമാണത്തിലേയ്ക്കോ (പ്രമാണത്തിന്റെ പേര് തന്നിട്ടുണ്ട്), ഒരു താളിലേയ്ക്കോ (നാൾപ്പതിപ്പിന്റെ ഐഡി തന്നിട്ടുണ്ട്), അല്ലെങ്കിൽ ഒരു ഉപയോക്തൃതാളിലേയ്ക്കോ (ഉപയോക്താവിന്റെ സംഖ്യാ ഐ.ഡി. തന്നിട്ടുണ്ട്) തിരിച്ചുവിടുന്നു. ഉപയോഗം Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], അല്ലെങ്കിൽ [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'ഈ പ്രത്യേക താൾ ഒരു പ്രമാണത്തിലേയ്ക്കോ (പ്രമാണത്തിന്റെ പേര് തന്നിട്ടുണ്ട്), ഒരു താളിലേയ്ക്കോ (നാൾപ്പതിപ്പിന്റെ ഐ.ഡി. അല്ലെങ്കിൽ താൾ തന്നിട്ടുണ്ട്), അല്ലെങ്കിൽ ഒരു ഉപയോക്തൃതാളിലേയ്ക്കോ (ഉപയോക്താവിന്റെ സംഖ്യാ ഐ.ഡി. തന്നിട്ടുണ്ട്) തിരിച്ചുവിടുന്നു. ഉപയോഗം: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]],  [[{{#Special:Redirect}}/revision/328429]], അല്ലെങ്കിൽ [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'പോകൂ',
 'redirect-lookup' => 'തേടുക:',
 'redirect-value' => 'വില:',
 'redirect-user' => 'ഉപയോക്തൃ ഐ.ഡി.',
+'redirect-page' => 'താളിന്റെ ഐ.ഡി.',
 'redirect-revision' => 'താളിന്റെ നാൾപ്പതിപ്പ്',
 'redirect-file' => 'പ്രമാണത്തിന്റെ പേര്',
 'redirect-not-exists' => 'വില കണ്ടെത്താൻ കഴിഞ്ഞില്ല',
@@ -4189,10 +4191,12 @@ $5
 'expand_templates_input' => 'ഇൻപുട്ട് ടെക്സ്റ്റ്:',
 'expand_templates_output' => 'ഫലം',
 'expand_templates_xml_output' => 'എക്സ്.എം.എൽ. ഔട്ട്പുട്ട്',
+'expand_templates_html_output' => 'അസംസ്കൃത എച്ച്.റ്റി.എം.എൽ. ഔട്ട്പുട്ട്',
 'expand_templates_ok' => 'ശരി',
 'expand_templates_remove_comments' => 'അഭിപ്രായങ്ങൾ ഒഴിവാക്കുക',
 'expand_templates_remove_nowiki' => 'ഫലങ്ങളിലെ <nowiki> റ്റാഗുകൾ ഒതുക്കുക',
 'expand_templates_generate_xml' => 'എക്സ്.എം.എൽ. പാഴ്‌സർ ട്രീ പ്രദർശിപ്പിക്കുക',
+'expand_templates_generate_rawhtml' => 'അസംസ്കൃത എച്ച്.റ്റി.എം.എൽ. പ്രദർശിപ്പിക്കുക',
 'expand_templates_preview' => 'എങ്ങനെയുണ്ടെന്നു കാണുക',
 
 );
index ec870d4..8c28e7f 100644 (file)
@@ -26,6 +26,7 @@
  * @author Jeblad
  * @author Jsoby
  * @author Jóna Þórunn
+ * @author Kjetil r
  * @author Kph
  * @author Kph-no
  * @author Laaknor
@@ -537,7 +538,7 @@ $messages = array(
 'projectpage' => 'Vis prosjektside',
 'imagepage' => 'Vis filside',
 'mediawikipage' => 'Vis beskjedside',
-'templatepage' => 'Vis mal',
+'templatepage' => 'Vis malside',
 'viewhelppage' => 'Vis hjelpeside',
 'categorypage' => 'Vis kategoriside',
 'viewtalkpage' => 'Vis diskusjon',
@@ -570,8 +571,8 @@ $1',
 'disclaimerpage' => 'Project:Generelle forbehold',
 'edithelp' => 'Redigeringshjelp',
 'helppage' => 'Help:Innhold',
-'mainpage' => 'Hovedside',
-'mainpage-description' => 'Hovedside',
+'mainpage' => 'Forside',
+'mainpage-description' => 'Forside',
 'policy-url' => 'Project:Retningslinjer',
 'portal' => 'Prosjektportal',
 'portal-url' => 'Project:Prosjektportal',
@@ -582,8 +583,8 @@ $1',
 'badaccess-group0' => 'Du har ikke tilgang til å utføre handlingen du prøvde på.',
 'badaccess-groups' => 'Handlingen du prøvde å utføre kan kun utføres av brukere i {{PLURAL:$2|gruppa|gruppene}} $1.',
 
-'versionrequired' => 'Versjon $1 av MediaWiki er påkrevd',
-'versionrequiredtext' => 'Versjon $1 av MediaWiki er nødvendig for å bruke denne siden. Se [[Special:Version|versjonsiden]]',
+'versionrequired' => 'MediaWiki-versjon $1 er påkrevd',
+'versionrequiredtext' => 'MediaWiki-versjon $1 er nødvendig for å bruke denne siden. Se [[Special:Version|versjonsiden]]',
 
 'ok' => 'OK',
 'retrievedfrom' => 'Hentet fra «$1»',
@@ -645,11 +646,11 @@ En liste over gyldige spesialsider finnes på [[Special:SpecialPages|{{int:speci
 'databaseerror' => 'Databasefeil',
 'databaseerror-text' => 'En feil skjedde med en databasespørring.
 Dette kan være et tegn på feil med programvaren.',
-'databaseerror-textcl' => 'En feil skjedde med et databasespørring.',
+'databaseerror-textcl' => 'En feil skjedde med en databasespørring.',
 'databaseerror-query' => 'Spørring: $1',
 'databaseerror-function' => 'Funksjon: $1',
 'databaseerror-error' => 'Feil: $1',
-'laggedslavemode' => 'Advarsel: Dette kan være en eldre versjon av siden.',
+'laggedslavemode' => "'''Advarsel:''' Dette kan være en eldre versjon av siden.",
 'readonly' => 'Databasen er skrivebeskyttet',
 'enterlockreason' => 'Skriv en begrunnelse for skrivebeskyttelsen, inkludert et estimat for når den blir opphevet',
 'readonlytext' => 'Databasen er for øyeblikket skrivebeskyttet, sannsynligvis på grunn av rutinemessig vedlikehold.
@@ -696,8 +697,8 @@ Den inneholder kanskje ett eller flere tegn som ikke kan brukes i titler.',
 'protectedpagetext' => 'Denne siden har blitt låst for endringer.',
 'viewsourcetext' => 'Du kan se og kopiere kilden til denne siden:',
 'viewyourtext' => "Du kan se og kopiere kilden til '''dine endringer''' på denne siden:",
-'protectedinterface' => 'Denne siden fremskaffer brukergrensesnittekst for programvaren, og er låst for å hindre misbruk.',
-'editinginterface' => "'''Advarsel:''' Du redigerer en side som brukes for å fremskaffe grensesnittekst for programvaren.
+'protectedinterface' => 'Denne siden kontrollerer brukergrensesnittekst for programvaren, og er låst for å hindre misbruk.',
+'editinginterface' => "'''Advarsel:''' Du redigerer en side som brukes til å kontrollere grensesnittekst for programvaren.
 Endringer av denne siden vil påvirke hvordan grensesnittet vil se ut for andre brukere.
 For oversettelser er det best om du bruker [//translatewiki.net/wiki/Main_Page?setlang=nb translatewiki.net], prosjektet for oversettelse av MediaWiki.",
 'cascadeprotected' => 'Denne siden er låst for redigering fordi den inkluderes på følgende sider som har dypbeskyttelse slått på:<!--{{PLURAL:$1}}-->
@@ -722,14 +723,14 @@ Administrators nærmere begrunnelse: «$3».',
 'exception-nologin-text-manual' => 'Du må $1 for å få tilgang til denne siden eller handlingen.',
 
 # Virus scanner
-'virus-badscanner' => "Dårlig konfigurasjon: Ukjent virusskanner: ''$1''",
+'virus-badscanner' => "Feilkonfigurasjon: Ukjent virusskanner: ''$1''",
 'virus-scanfailed' => 'skanning mislyktes (kode $1)',
 'virus-unknownscanner' => 'ukjent antivirusprogram:',
 
 # Login and logout pages
 'logouttext' => "'''Du er nå logget ut.'''
 
-Vær oppmerksom på at noen sider kan fortsette å dukke opp som om du fortsatt var innlogget, helt til du nullstiller nettleserens cache.",
+Vær oppmerksom på at noen sider kan fortsette å dukke opp som om du fortsatt var innlogget, helt til du nullstiller nettleserens mellomlager (cache).",
 'welcomeuser' => 'Velkommen, $1!',
 'welcomecreation-msg' => 'Kontoen din har blitt opprettet.
 Ikke glem å endre [[Special:Preferences|innstillingene dine]] på {{SITENAME}}.',
index ed9cd7c..9287f29 100644 (file)
@@ -1817,13 +1817,14 @@ Als u deze opgeeft, kan deze naam gebruikt worden om u erkenning te geven voor u
 'recentchanges-label-bot' => 'Deze bewerking is uitgevoerd door een bot',
 'recentchanges-label-unpatrolled' => 'Deze bewerking is nog niet gecontroleerd',
 'recentchanges-label-plusminus' => 'Deze paginagrootte is met dit aantal bytes gewijzigd',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => "Zie ook de [[Special:NewPages|Lijst met nieuwe pagina's]].",
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Wijzigingen sinds '''$2''' (met een maximum van '''$1''' wijzigingen).",
 'rclistfrom' => 'Wijzigingen bekijken vanaf $1',
 'rcshowhideminor' => 'Kleine wijzigingen $1',
 'rcshowhidebots' => 'bots $1',
-'rcshowhideliu' => 'aangemelde gebruikers $1',
+'rcshowhideliu' => 'geregistreerde gebruikers $1',
 'rcshowhideanons' => 'anonieme gebruikers $1',
 'rcshowhidepatr' => 'gecontroleerde bewerkingen $1',
 'rcshowhidemine' => 'mijn bewerkingen $1',
@@ -3980,7 +3981,7 @@ Bevestig dat u de pagina opnieuw wilt aanmaken.',
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(standaard taal)',
-'img-lang-info' => 'Deze afbeeldingen renderen in de taal $1 $2',
+'img-lang-info' => 'Deze afbeeldingen renderen in de taal $1. $2',
 'img-lang-go' => 'OK',
 
 # Table pager
@@ -4101,13 +4102,14 @@ Samen met dit programma hoort u een [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Script path]',
 
 # Special:Redirect
-'redirect' => 'Doorverwijzen op bestandsnaam, gebruikersnummer of versienummer',
+'redirect' => 'Doorverwijzen op bestandsnaam, gebruikersnummer, paginanummer, of versienummer',
 'redirect-legend' => 'Doorverwijzen naar een bestand of pagina',
-'redirect-summary' => 'Deze speciale pagina verwijst door naar een bestand (als een bestandsnaam wordt opgegeven), een pagina (als een versienummer wordt opgegeven) of een gebruikerspagina (als een gebruikersnummer wordt opgegeven). Gebruik: [[{{#Special:Redirect}}/file/Voorbeeld.jpg]], [[{{#Special:Redirect}}/revision/328429]] of [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Deze speciale pagina verwijst door naar een bestand (als een bestandsnaam wordt opgegeven), een pagina (als een paginanummer of versienummer wordt opgegeven) of een gebruikerspagina (als een gebruikersnummer wordt opgegeven). Gebruik: [[{{#Special:Redirect}}/file/Voorbeeld.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] of [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'OK',
 'redirect-lookup' => 'Opzoeken:',
 'redirect-value' => 'Waarde:',
 'redirect-user' => 'Gebruikersnummer',
+'redirect-page' => 'Pagina-ID',
 'redirect-revision' => 'Paginaversie',
 'redirect-file' => 'Bestandsnaam',
 'redirect-not-exists' => 'Waarde niet gevonden',
@@ -4350,10 +4352,12 @@ Vrijwel alle tekst tussen dubbele accolades wordt gesubstitueerd.',
 'expand_templates_input' => 'Invoertekst:',
 'expand_templates_output' => 'Resultaat',
 'expand_templates_xml_output' => 'XML-uitvoer',
+'expand_templates_html_output' => 'Ruwe HTML',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Opmerkingen verwijderen',
 'expand_templates_remove_nowiki' => 'Tags <nowiki> in resultaat onderdrukken',
 'expand_templates_generate_xml' => 'XML-parserboom bekijken',
+'expand_templates_generate_rawhtml' => 'Ruwe HTML weergeven',
 'expand_templates_preview' => 'Voorvertoning',
 
 );
index 6b2eefd..b8cc532 100644 (file)
@@ -644,6 +644,7 @@ Dette kan òg skuldast ein feil i programvara som er nytta av {{SITENAME}}.',
 # General errors
 'error' => 'Feil',
 'databaseerror' => 'Databasefeil',
+'databaseerror-error' => 'Feil: $1',
 'laggedslavemode' => 'Åtvaring: Det er mogleg at sida ikkje er heilt oppdatert.',
 'readonly' => 'Databasen er skriveverna',
 'enterlockreason' => 'Skriv ein grunn for vernet, inkludert eit overslag for kva tid det vil bli oppheva',
@@ -806,7 +807,7 @@ Brukarnamn skil mellom stor og liten bokstav. Sjekk at du har skrive brukarnamet
 'passwordtooshort' => 'Passord må innehalda minst {{PLURAL:$1|eitt teikn|$1 teikn}}.',
 'password-name-match' => 'Passordet ditt lyt vera noko anna enn brukarnamnet ditt.',
 'password-login-forbidden' => 'Bruk av dette brukarnamnet og passordet er vorte forbode.',
-'mailmypassword' => 'Send nytt passord',
+'mailmypassword' => 'Attendestill passord',
 'passwordremindertitle' => 'Nytt passord til {{SITENAME}}',
 'passwordremindertext' => 'Nokon (truleg du, frå IP-adressa $1) bad oss sende deg eit nytt passord til {{SITENAME}} ($4). Eit mellombels passord for «$2» er oppretta, og er sett til «$3». Om det var det du ville, må du logge inn
 og velje eit nytt passord no.
@@ -1652,12 +1653,13 @@ Denne informasjonen vil vera offentleg.',
 'recentchanges-label-bot' => 'Endringa vart gjord av ein robot',
 'recentchanges-label-unpatrolled' => 'Endringa er ikkje patruljert enno',
 'recentchanges-label-plusminus' => 'Storleiken til sida vart endra med så mange byte',
+'recentchanges-legend-heading' => "'''Tyding:'''",
 'recentchanges-legend-newpage' => '(sjå dessutan [[Special:NewPages|lista over nye sider]])',
 'rcnotefrom' => "Nedanfor vert opp til '''$1''' endringar sidan  ''' $2''' viste.",
 'rclistfrom' => 'Vis nye endringar sidan $1',
 'rcshowhideminor' => '$1 småplukk',
 'rcshowhidebots' => '$1 robotar',
-'rcshowhideliu' => '$1 innlogga brukarar',
+'rcshowhideliu' => '$1 registrerte brukarar',
 'rcshowhideanons' => '$1 anonyme brukarar',
 'rcshowhidepatr' => '$1 godkjende endringar',
 'rcshowhidemine' => '$1 endringane mine',
index 3a939d1..5d480f5 100644 (file)
@@ -1728,7 +1728,9 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'recentchanges-label-bot' => 'Ta edycja została wykonana przez bota',
 'recentchanges-label-unpatrolled' => 'Ta edycja nie została jeszcze sprawdzona',
 'recentchanges-label-plusminus' => 'Zmieniony rozmiar strony (liczba bajtów)',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(zobacz też [[Special:NewPages|listę nowych stron]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Poniżej pokazano zmiany wykonane po '''$2''' (nie więcej niż '''$1''' pozycji).",
 'rclistfrom' => 'Pokaż nowe zmiany od $1',
 'rcshowhideminor' => '$1 drobne zmiany',
@@ -3868,6 +3870,7 @@ Czy na pewno chcesz ją ponownie utworzyć?",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(język domyślny)',
+'img-lang-info' => 'Wyświetl tę ilustrację w $1. $2',
 'img-lang-go' => 'Dalej',
 
 # Table pager
@@ -4010,7 +4013,7 @@ Powinieneś otrzymać [{{SERVER}}{{SCRIPTPATH}}/COPYING kopię licencji GNU Gene
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Przekierowanie według pliku, użytkownika albo identyfikatora wersji',
+'redirect' => 'Przekierowanie według pliku, użytkownika, strony lub identyfikatora wersji',
 'redirect-legend' => 'Przekieruj do pliku lub strony',
 'redirect-summary' => 'Ta strona specjalna przekierowuje do: pliku (o podanej nazwie), do strony (o podanym numerze wersji) albo do strony użytkownika (o podanym identyfikatorze numerycznym). Sposób użycia: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] albo [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Przejdź',
@@ -4259,10 +4262,12 @@ W zasadzie rozwijane jest prawie wszystko w podwójnych nawiasach klamrowych.',
 'expand_templates_input' => 'Tekst wejściowy',
 'expand_templates_output' => 'Rezultat',
 'expand_templates_xml_output' => 'wynik w formacie XML',
+'expand_templates_html_output' => 'Wyświetlanie surowego HTML',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Usuń komentarze',
 'expand_templates_remove_nowiki' => 'Ukrywaj w wyniku znaczniki <nowiki>',
 'expand_templates_generate_xml' => 'Pokaż drzewo analizatora składni w formacie XML',
+'expand_templates_generate_rawhtml' => 'Pokaż surowy HTML',
 'expand_templates_preview' => 'Podgląd',
 
 );
index a30111d..9127bc2 100644 (file)
@@ -912,6 +912,9 @@ Costi paràmeter a son stàit ignorà.",
 'cantcreateaccount-text' => "La cression ëd cont neuv a parte da st'adrëssa IP-sì ('''$1''') a l'é stàita blocà da [[User:$3|$3]].
 
 La rason butà da $3 për ël blocagi a l'é stàita: ''$2''",
+'cantcreateaccount-range-text' => "La creassion ëd cont da l'adrëssa IP ant l'antërval '''$1''', ch'a comprend soa adrëssa IP ('''$4'''), a l'é stàita blocà da [[User:$3|$3]].
+
+La rason dàita da $3 a l'é ''$2''",
 
 # History pages
 'viewpagelogs' => 'Smon ij registr dë sta pàgina-sì',
@@ -1445,6 +1448,7 @@ Costa anformassion a sarà pùblica.",
 'recentchanges-label-bot' => "Sa modìfica a l'é stàita fàita da un trigomiro",
 'recentchanges-label-unpatrolled' => "Sta modìfica-sì a l'é pa ancó stàita verificà",
 'recentchanges-label-plusminus' => "La taja dla pàgina a l'é cangià d'un nùmer ëd bytes",
+'recentchanges-legend-heading' => "'''Legend:'''",
 'recentchanges-legend-newpage' => '(vëdde ëdcò [[Special:NewPages|lista dle pàgine neuve]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => ' Ambelessì sota a-i é la lista dle modìfiche da <b>$2</b> (fin-a a <b>$1</b>).',
@@ -3020,6 +3024,7 @@ An fasend-lo marcé ansima a sò ordinator chiel a podrìa porteje ëd dann a s
 'just-now' => 'pròpi adess',
 
 # Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|ora|ore}} fa',
 'minutes-ago' => '$1 {{PLURAL:$1|minuta|minute}} fa',
 'seconds-ago' => '$1 {{PLURAL:$1second}} fa',
 'monday-at' => 'Lùn-es a $1',
@@ -3562,7 +3567,7 @@ Për piasì, che an conferma che da bon a veul torna creélo.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(lenga predefinìa)',
-'img-lang-info' => 'Rende costa plancia an $1 $2.',
+'img-lang-info' => 'Rende costa plancia an $1. $2',
 'img-lang-go' => 'Andé',
 
 # Table pager
@@ -3682,13 +3687,14 @@ A dovrìa avèj arseivù [{{SERVER}}{{SCRIPTPATH}}/COPYING na còpia dla Licensa
 'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Senté d\'artìcol]',
 
 # Special:Redirect
-'redirect' => 'Ridirigiù da archivi, utent o ID ëd revision',
+'redirect' => 'Ridirigiù da archivi, utent, pàgina o ID ëd revision',
 'redirect-legend' => "Ridirige a n'archivi o na pàgina",
-'redirect-summary' => "Costa pàgina special a ponta a n'archivi (dàit ël nòm dl'archivi), na pàgina (dàita n'ID a la revision) o na pàgina d'utent (dàit n'identificativ numérich a l'utent). Usagi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
+'redirect-summary' => "Costa pàgina special a ponta a n'archivi (dàit ël nòm dl'archivi), na pàgina (dàit n'ID ëd revision o n'ID ëd pàgina) o na pàgina d'utent (dàit n'identificativ numérich a l'utent). Usagi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
 'redirect-submit' => 'Andé',
 'redirect-lookup' => 'Arserca:',
 'redirect-value' => 'Valor:',
 'redirect-user' => "ID dl'utent",
+'redirect-page' => 'Identificativ ëd la pàgina',
 'redirect-revision' => 'Revision ëd la pàgina',
 'redirect-file' => "Nòm ëd l'archivi",
 'redirect-not-exists' => 'Valor nen trovà',
@@ -3931,10 +3937,12 @@ An efet, a espand praticament tut lòn ch'a-i é antrames dle grafe dobie.",
 'expand_templates_input' => 'Test da analisé:',
 'expand_templates_output' => 'Arzultà',
 'expand_templates_xml_output' => 'Output an XML',
+'expand_templates_html_output' => 'Surtìa an HTML sempi',
 'expand_templates_ok' => 'Bin parèj',
 'expand_templates_remove_comments' => 'Gava via ij coment',
 'expand_templates_remove_nowiki' => "Gava ij tag <nowiki> ant l'arzultà",
 'expand_templates_generate_xml' => "Mosta l'erbo ëd parse XML",
+'expand_templates_generate_rawhtml' => "Smon-e l'HTML sempi",
 'expand_templates_preview' => 'Preuva',
 
 );
index c4c3a57..9932302 100644 (file)
@@ -484,6 +484,7 @@ $1',
 # General errors
 'error' => 'تېروتنه',
 'databaseerror' => 'د ډاټابېز تېروتنه',
+'databaseerror-error' => 'تېروتنه: $1',
 'laggedslavemode' => "'''گواښنه:''' په دې مخ کې کېدای شي تازه اوسمهالېدنې نه وي.",
 'readonly' => 'توکبنسټ تړل شوی',
 'enterlockreason' => 'د بنديز يو سبب وليکۍ، او همداراز د بنديز د ليرې کېدلو يوه اټکليزه نېټه هم څرگنده کړۍ',
@@ -583,7 +584,8 @@ $1',
 'gotaccount' => 'آيا وار دمخې يو گڼون لری؟ $1.',
 'gotaccountlink' => 'ننوتل',
 'userlogin-resetlink' => 'د ننوتلو مالومات مو هېر شوي؟',
-'userlogin-resetpassword-link' => 'پټنوم مو بياپرځايول',
+'userlogin-resetpassword-link' => 'پټنوم مو هېر شوی؟',
+'userlogin-createanother' => 'بل گڼون جوړول',
 'createacct-join' => 'خپل مالومات لاندې ورکړۍ',
 'createacct-emailrequired' => 'برېښليک پته',
 'createacct-emailoptional' => 'برېښليک پته (اختياري)',
@@ -629,7 +631,7 @@ $1',
 'passwordtooshort' => 'بايد چې پټنوم مو لږ تر لږه {{PLURAL:$1|1 توری|$1 توري}} وي.',
 'password-name-match' => 'ستاسې پټنوم بايد ستاسې د کارن-نوم سره توپير ولري.',
 'password-login-forbidden' => 'د دې کارن-نوم او پټنوم په کارېدنې بنديز دی.',
-'mailmypassword' => 'Ù\86Ù\88Û\8c Ù¾Ù¼Ù\86Ù\88Ù\85 Ø¨Ø±Û\90Ú\9aÙ\84Ù\8aÚ© Ú©ول',
+'mailmypassword' => 'پټÙ\86Ù\88Ù\85 Ø¨Ù\8aاپرÚ\81اÙ\8aول',
 'passwordremindertitle' => 'د {{SITENAME}} لپاره نوی لنډمهاله پټنوم',
 'passwordremindertext' => 'يو چا (کېدای شي چې تاسې پخپله، د $1 IP پتې نه)
 د {{SITENAME}} ($4) وېبځي لپاره د يوه نوي پټنوم د ورلېږلو غوښتنه کړې.
@@ -643,8 +645,8 @@ $1',
 'passwordsent' => 'د "$1" لپاره يو نوی پټنوم د اړونده کارن برېښليک پتې ته ولېږل شو.
 لطفاً کله چې پټنوم مو ترلاسه کړ نو بيا غونډال ته ننوځۍ.',
 'blocked-mailpassword' => 'ستاسې په IP پتې بنديز لگېدلی او تاسې نه شی کولای چې ليکنې وکړی، په همدې توگه تاسې نه شی کولای چې د پټنوم د پرځای کولو کړنې وکاروی دا ددې لپاره چې د وراني مخنيوی وشي.',
-'eauthentsent' => 'ستاسې ورکړ شوې برېښليک پتې ته مو يو تاييدي برېښليک درولېږه.
-تر دې دمخه چې ستاسې گڼون ته کوم بل برېښليک درولېږو، پکار ده چې تاسې په برېښليک کې درلېږل شوې لارښوونې پلي کړی او ددې پخلی وکړی چې همدا گڼون په رښتيا ستاسې خپل دی.',
+'eauthentsent' => 'ستاسې برېښليک پتې ته مو يو تاييدي برېښليک درولېږه.
+تر دې دمخه چې ستاسې گڼون ته کوم بل برېښليک درولېږو، بايد تاسې په برېښليک کې درلېږل شوې لارښوونې پلي کړی او د دې پخلی وکړی چې همدا گڼون په رښتيا ستاسې خپل دی.',
 'mailerror' => 'د برېښليک د لېږلو ستونزه: $1',
 'acct_creation_throttle_hit' => 'د همدې ويکي کارنانو په وروستيو ورځو کې ستاسې د IP پتې په کارولو سره {{PLURAL:$1|1 گڼون|$1 گڼونونه}} جوړ کړي، چې دا په همدې مودې کې د گڼونونو د جوړولو تر ټولو ډېر شمېر دی چې اجازه يې ورکړ شوې.
 نو په همدې خاطر د اوس لپاره د همدې IP پتې کارنان نه شي کولای چې نور گڼونونه جوړ کړي.',
@@ -1091,7 +1093,7 @@ $1',
 'prefs-registration' => 'د نومليکنې وخت:',
 'yourrealname' => 'اصلي نوم:',
 'yourlanguage' => 'ژبه:',
-'yournick' => 'کورنی نوم:',
+'yournick' => 'نوی لاسليک:',
 'badsiglength' => 'ستاسو لاسليک ډېر اوږد دی.
 بايد چې لاسليک مو له $1 {{PLURAL:$1|توري|تورو}} نه لږ وي.',
 'yourgender' => 'څنگه غواړۍ ځان څرگند کړۍ؟',
@@ -1116,7 +1118,7 @@ $1',
 'prefs-advancedrendering' => 'پرمختللې خوښنې',
 'prefs-advancedsearchoptions' => 'پرمختللې خوښنې',
 'prefs-advancedwatchlist' => 'پرمختللې خوښنې',
-'prefs-displayrc' => 'د Ú\9aکارÛ\90دÙ\86Û\90 خوښنې',
+'prefs-displayrc' => 'د Ú\9aکارÛ\90دÙ\88 خوښنې',
 'prefs-displaysearchoptions' => 'د ښکارېدنې خوښنې',
 'prefs-displaywatchlist' => 'د ښکارېدنې خوښنې',
 'prefs-diffs' => 'توپيرونه',
@@ -1128,7 +1130,7 @@ $1',
 # User rights
 'userrights' => 'د کارن رښتو سمبالښت',
 'userrights-lookup-user' => 'کارن ډلې سمبالول',
-'userrights-user-editname' => 'يو کارن نوم وليکۍ:',
+'userrights-user-editname' => 'يو کارن نوم ورکړئ:',
 'editusergroup' => 'کارن ډلې سمول',
 'editinguser' => "د '''[[کارن:$1|$1]]''' کارن رښتې بدلول $2",
 'userrights-editusergroup' => 'کارن ډلې سمول',
@@ -1189,11 +1191,14 @@ $1',
 'right-block' => 'پر نورو کارنانو د سمون د آسانتياوؤ بنديز لگول',
 'right-blockemail' => 'پر يوه کارن د برېښليک لېږلو بنديز لگول',
 'right-hideuser' => 'پر يوه کارن-نوم بنديز لگول او له خلکو نه يې پټول',
-'right-protect' => 'د ژغورنې کچه بدلول او ژغورلي مخونه سمول',
+'right-protect' => 'د Ú\98غÙ\88رÙ\86Û\90 Ú©Ú\86Ù\87 Ø¨Ø¯Ù\84Ù\88Ù\84 Ø§Ù\88 Ú\81Ù\88Ú\93اÙ\88بÛ\90زÙ\87 Ú\98غÙ\88رÙ\84Ù\8a Ù\85Ø®Ù\88Ù\86Ù\87 Ø³Ù\85Ù\88Ù\84',
 'right-editinterface' => 'د کارن ليدنمخ سمول',
 'right-editusercssjs' => 'د نورو کارنانو د CSS او JS (جاوا سکرېپټ) دوتنې سمول',
 'right-editusercss' => 'د نورو کارنانو د CSS دوتنې سمول',
 'right-edituserjs' => 'د نورو کارنانو د JS (جاوا سکرېپټ) دوتنې سمول',
+'right-viewmywatchlist' => 'خپل کتنلړ کتل',
+'right-editmyprivateinfo' => 'خپل شخصي مالومات سمول (بېلگه. برېښليک پته، آرنوم)',
+'right-editmyoptions' => 'خپل غوره توبونه سمول',
 'right-unwatchedpages' => 'د ناکتلو مخونو يو لړليک کتل',
 'right-userrights' => 'د کارن ټولې رښتې سمول',
 'right-userrights-interwiki' => 'په نورو ويکي گانو د نورو کارنانو  کارن-رښتې سمول',
@@ -1233,9 +1238,12 @@ $1',
 'action-userrights-interwiki' => 'په نورو ويکي گانو د کارنانو رښتې سمول',
 'action-siteadmin' => 'توکبنسټ کولپول يا نه کولپول',
 'action-sendemail' => 'برېښليکونه لېږل',
+'action-editmyprivateinfo' => 'خپل شخصي مالومات سمول',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|بدلون|بدلونونه}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|له وروستنۍ کتنې راپدېخوا}}',
+'enhancedrc-history' => 'پېښليک',
 'recentchanges' => 'وروستي بدلونونه',
 'recentchanges-legend' => 'د ورستي بدلونو خوښنې',
 'recentchanges-summary' => 'په دې مخ د ويکي ترټولو تازه وروستي بدلونونه وڅارۍ.',
@@ -1250,7 +1258,7 @@ $1',
 'rclistfrom' => 'هغه نوي بدلونونه ښکاره کول چې له $1 نه پيلېږي',
 'rcshowhideminor' => 'وړې سمونې $1',
 'rcshowhidebots' => 'روباټ $1',
-'rcshowhideliu' => 'غÙ\88Ù\86Ú\89اÙ\84 Ú©Û\90 Ù\86Ù\86Ù\88تي کارنان $1',
+'rcshowhideliu' => 'ثبت Ø´Ù\88ي کارنان $1',
 'rcshowhideanons' => 'بې نومه کارنان $1',
 'rcshowhidepatr' => '$1 څارلې سمونې',
 'rcshowhidemine' => 'زما سمونې $1',
@@ -1386,7 +1394,7 @@ $1',
 
 # Special:ListFiles
 'listfiles-summary' => 'همدا ځانگړی مخ ټولې پورته شوې دوتنې ښکاره کوي.',
-'listfiles_search_for' => 'د Ø§Ù\86Ú\81Ù\88ر Ø¯ Ù\86Ù\88Ù\85 Ù\84Ù¼Ù\88Ù\86:',
+'listfiles_search_for' => 'د Ø±Ø³Ù\86Û\8d Ù\86Ù\88Ù\85 Ù¾Ù\84Ù¼Ù\86Ù\87:',
 'imgfile' => 'دوتنه',
 'listfiles' => 'د دوتنو لړليک',
 'listfiles_thumb' => 'بټنوک',
@@ -1396,6 +1404,7 @@ $1',
 'listfiles_size' => 'کچه (بايټونه)',
 'listfiles_description' => 'څرگندونه',
 'listfiles_count' => 'بڼې',
+'listfiles-latestversion' => 'اوسنۍ بڼه',
 'listfiles-latestversion-yes' => 'هو',
 'listfiles-latestversion-no' => 'نه',
 
@@ -1469,6 +1478,7 @@ $1',
 'randompage-nopages' => 'په لانديني {{PLURAL:$2|نوم-تشيال|نوم-تشيالونو}} کې هېڅ کوم مخ نشته: $1.',
 
 # Random page in category
+'randomincategory' => 'په وېشنيزه کې ناټاکلی مخ',
 'randomincategory-selectcategory' => 'يو ناټاکلی مخ له وېشنيزې موندل: $1 $2.',
 'randomincategory-selectcategory-submit' => 'ورځه',
 
@@ -1495,6 +1505,9 @@ $1',
 'statistics-users-active-desc' => 'هغه کارنان چې په {{PLURAL:$1|وروستۍ ورځ|وروستيو $1 ورځو}} کې فعاله ونډه لرلې',
 'statistics-mostpopular' => 'ډېر کتل شوي مخونه',
 
+'pageswithprop' => 'د مخ ځانتياو څخه برخمن مخونه',
+'pageswithprop-legend' => 'د مخ ځانتياو څخه برخمن مخونه',
+'pageswithprop-prop' => 'د ځانتيا نوم:',
 'pageswithprop-submit' => 'ورځه',
 
 'doubleredirects' => 'دوه ځلي ورگرځېدنې',
@@ -1559,9 +1572,10 @@ $1',
 'newpages-username' => 'کارن-نوم:',
 'ancientpages' => 'تر ټولو زاړه مخونه',
 'move' => 'لېږدول',
-'movethispage' => 'دا Ù\85Ø® Ù\88Ù\84Û\90Ú\96دÙ\88Ù\87',
+'movethispage' => 'دا Ù\85Ø® Ù\84Û\90Ú\96دÙ\88Ù\84',
 'unusedimagestext' => 'دا لاندينۍ دوتنې په هېڅ کوم مخ کې نه دي ټومبېدلي. لطفاً په پام کې وساتۍ چې نور وېبځايونه به د دغو دوتنو له يو دوتنې سره يو راسن يو آر ال (URL) ولري او لا تر اوسه به دوتنه د فعالې کارېدنې سره سره دلته پرته وي.',
 'notargettitle' => 'بې موخې',
+'nopagetitle' => 'داسې کوم مخ نشته',
 'pager-newer-n' => '{{PLURAL:$1|نوی 1|نوي $1}}',
 'pager-older-n' => '{{PLURAL:$1|زوړ 1|زاړه $1}}',
 'suppress' => 'څارن',
@@ -1651,7 +1665,7 @@ $1',
 'listgrouprights-removegroup-self-all' => 'خپل گڼون نه ټولې ډلې ليري کول',
 
 # Email user
-'mailnologin' => 'هېڅ کومه لېږل شوې پته نشته',
+'mailnologin' => 'د لېږلو پته نشته',
 'emailuser' => 'کارن ته برېښليک لېږل',
 'emailuser-title-target' => 'دې {{GENDER:$1|کارن}} ته برېښليک لېږل',
 'emailuser-title-notarget' => 'کارن ته برېښليک لېږل',
@@ -1672,7 +1686,7 @@ $1',
 'emailmessage' => 'پيغام:',
 'emailsend' => 'لېږل',
 'emailccme' => 'زما د پيغام يوه بېلگه دې ماته هم برېښليک شي.',
-'emailccsubject' => '$1 ته ستاسو د پيغام لمېسه: $2',
+'emailccsubject' => '$1 ته ستاسې د پيغام لمېسه: $2',
 'emailsent' => 'برېښليک مو ولېږل شو',
 'emailsenttext' => 'ستاسې برېښليکي پيغام ولېږل شو.',
 'emailuserfooter' => 'دا برېښليک د $1 لخوا $2 ته د {{SITENAME}} په وېبځي کې د "کارن ته برېښليک لېږل" د کړنې په مرسته لېږل شوی.',
@@ -1701,7 +1715,7 @@ $1',
 'notanarticle' => 'يو منځپانګيز مخ نه دی',
 'watchlist-details' => 'ستاسې کتنلړ کې {{PLURAL:$1|$1 مخ دی|$1 مخونه دي}}، د خبرو اترو مخونه مو پکې نه دي شمېرلي.',
 'wlheader-enotif' => 'برېښليک خبرونه چارنه شوې.',
-'wlheader-showupdated' => "هغه مخونه چې وروستی ځل ستاسو د کتلو نه وروسته بدلون موندلی په '''روڼ''' ليک نښه شوي.",
+'wlheader-showupdated' => "هغه مخونه چې ستاسې د کتلو نه وروسته بدلون موندلی په '''روڼ''' ليک په نښه شوي.",
 'watchlistcontains' => 'ستاسې کتنلړ $1 {{PLURAL:$1|مخ|مخونه}} لري.',
 'iteminvalidname' => "د '$1' توکي سره ستونزه، ناسم نوم ...",
 'wlnote' => "دلته لاندې {{PLURAL:$1|وروستی بدلون دی|وروستي '''$1''' بدلونونه دي}} چې په {{PLURAL:$2|تېر ساعت|تېرو '''$2''' ساعتونو}} کې تر $3 نېټې او $4 بجو پېښ شوي.",
@@ -1797,7 +1811,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'movedarticleprotection' => 'د ژغورنې امستنې له "[[$2]]" څخه "[[$1]]" ته ولېږدېدې',
 'protect-title' => 'د "$1" لپاره د ژغورنې کچه بدلول',
 'prot_1movedto2' => '[[$1]]، [[$2]] ته ولېږدېده',
-'protect-legend' => 'د ژغورلو پخلی کول',
+'protect-legend' => 'ژغورنه تاييدول',
 'protectcomment' => 'سبب:',
 'protectexpiry' => 'د پای نېټه:',
 'protect_expiry_invalid' => 'د پای وخت ناسم دی.',
@@ -1861,7 +1875,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'undeletedfiles' => '{{PLURAL:$1|1 دوتنه بيازېرمه شوه|$1 دوتنې بيازېرمه شوې}}',
 'undelete-header' => 'د وروستيو ړنگو شوو مخونو لپاره [[Special:Log/delete|د ړنگولو يادښت]] وگورۍ.',
 'undelete-search-box' => 'ړنگ شوي مخونه لټول',
-'undelete-search-prefix' => 'Ù\87غÙ\87 Ù\85Ø®Ù\88Ù\86Ù\87 Ú\9aکارÙ\87 Ú©Ú\93Ù\87 Ú\86Û\90 Ù¾Û\90لېږي په:',
+'undelete-search-prefix' => 'Ù\87غÙ\87 Ù\85Ø®Ù\88Ù\86Ù\87 Ú\86Û\90 Ù¾Ù\8aلېږي په:',
 'undelete-search-submit' => 'پلټل',
 'undelete-show-file-submit' => 'هو',
 
@@ -2035,7 +2049,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'movenotallowedfile' => 'تاسې د دوتنو د لېږدولو پرېښله نلرۍ.',
 'cant-move-user-page' => 'تاسې د کارن مخونو د لېږدولو پرېښله نلرۍ (د څېرمه مخونو نه پرته).',
 'cant-move-to-user-page' => 'تاسې د يو کارن مخ ته د يوه بل مخ د لېږدولو پرېښله نلرۍ (د يو کارن د څېرمه مخ نه پرته).',
-'newtitle' => 'Ù\8aÙ\88 Ù\86Ù\88Ù\8a Ø³Ø±Ù\84Ù\8aÚ© ØªÙ\87:',
+'newtitle' => 'نوي سرليک ته:',
 'move-watch' => 'همدا مخ کتل',
 'movepagebtn' => 'مخ لېږدول',
 'pagemovedsub' => 'لېږدول په برياليتوب سره ترسره شوه',
@@ -2155,7 +2169,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'tooltip-ca-nstab-image' => 'د دوتنې مخ کتل',
 'tooltip-ca-nstab-mediawiki' => 'د غونډال پيغامونه کتل',
 'tooltip-ca-nstab-template' => 'کينډۍ کتل',
-'tooltip-ca-nstab-help' => 'د لارښود مخ کتل',
+'tooltip-ca-nstab-help' => 'لارښود مخ کتل',
 'tooltip-ca-nstab-category' => 'د وېشنيزې مخ ښکاره کول',
 'tooltip-minoredit' => 'دا لکه يوه وړه سمونه په نښه کوي[alt-i]',
 'tooltip-save' => 'ستاسې بدلونونه خوندي کوي',
@@ -2196,9 +2210,9 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'pageinfo-length' => 'مخ اوږدوالی (په بايټونو)',
 'pageinfo-article-id' => 'د مخ پېژند',
 'pageinfo-language' => 'د مخ د مېنځپانگې ژبه',
-'pageinfo-robot-policy' => 'د پلټن ماشين دريځ',
-'pageinfo-robot-index' => 'Ù\84Ù\8aÚ©Ù\84Ú\93Ù\88Ú\93',
-'pageinfo-robot-noindex' => 'Ù\84Ù\8aÚ©Ù\84Ú\93Ù\88Ú\93 Ù\86Ù\87',
+'pageinfo-robot-policy' => 'ليکلړ اوډنه د روباټونو لخوا',
+'pageinfo-robot-index' => 'پرÛ\90Ú\9aÙ\84',
+'pageinfo-robot-noindex' => 'Ù\86اپرÛ\90Ú\9aÙ\84',
 'pageinfo-views' => 'د کتنو شمېر',
 'pageinfo-watchers' => 'د مخ د کتونکو شمېر',
 'pageinfo-redirects-name' => 'دې مخ ته د ورگرځونو شمېر',
@@ -2241,7 +2255,9 @@ $1',
 'file-info-size' => '$1 × $2 پېکسل, د دوتنې کچه: $3, MIME بڼه: $4',
 'file-nohires' => 'تر دې کچې لوړې بېلن نښې نشته.',
 'svg-long-desc' => 'SVG دوتنه، نومېنلي $1 × $2 پېکسل، د دوتنې کچه: $3',
-'show-big-image' => 'بشپړ بېلن نښې',
+'show-big-image' => 'آرنۍ دوتنه',
+'show-big-image-preview' => 'د همدې ليدنې کچه: $1.',
+'show-big-image-size' => '$1 × $2 پېکسل',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|چوکاټ|چوکاټونه}}',
 'file-info-png-repeat' => '$1 {{PLURAL:$1|ځل|ځله}} وغږېده',
 'file-info-png-frames' => '$1 {{PLURAL:$1|چوکاټ|چوکاټونه}}',
@@ -2269,6 +2285,12 @@ $1',
 'ago' => '$1 دمخه',
 'just-now' => 'همدا اوس',
 
+# Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|گړۍ|گړۍ}} دمخه',
+'minutes-ago' => '$1 {{PLURAL:$1|دقيقه|دقيقې}} دمخه',
+'seconds-ago' => '$1 {{PLURAL:$1|ثانيه|ثانيې}} دمخه',
+'monday-at' => 'Monday at $1',
+
 # Bad image list
 'bad_image_list' => 'بڼه يې په لاندې توگه ده:
 
@@ -2301,6 +2323,7 @@ $1',
 # Exif tags
 'exif-imagewidth' => 'سوروالی',
 'exif-imagelength' => 'لوړوالی',
+'exif-stripoffsets' => 'د انځور مالوماتځی',
 'exif-datetime' => 'د دوتنې د بدلون وخت او نېټه',
 'exif-imagedescription' => 'انځور سرليک',
 'exif-make' => 'د کامرې جوړونکی',
@@ -2358,7 +2381,7 @@ $1',
 'exif-copyrighted-true' => 'په رښتو سمبال',
 'exif-copyrighted-false' => 'د خپراوي د رښتو دريځ نه دی ټاکل شوی',
 
-'exif-unknowndate' => 'نامالومه نېټه',
+'exif-unknowndate' => 'ناڅرگنده نېټه',
 
 'exif-orientation-1' => 'نورمال',
 
@@ -2471,7 +2494,7 @@ $1',
 'monthsall' => 'ټول',
 
 # Email address confirmation
-'confirmemail' => 'د Ø¨Ø±Û\90Ú\9aÙ\84Ù\8aÚ© Ù¾ØªÛ\90 Ù¾Ø®Ù\84Û\8c Ù\88Ú©Ú\93Û\8c',
+'confirmemail' => 'برÛ\90Ú\9aÙ\84Ù\8aÚ© Ù¾ØªÙ\87 ØªØ§Ù\8aÙ\8aدÙ\88Ù\84',
 'confirmemail_noemail' => 'تاسې يوه سمه برېښليک پته نه ده ثبته کړې مهرباني وکړی [[Special:Preferences|د کارن غوره توبونه]] مو بدل کړۍ.',
 'confirmemail_send' => 'يو تاييدي کوډ لېږل',
 'confirmemail_sent' => 'تاييدي برېښليک ولېږل شو.',
@@ -2501,7 +2524,7 @@ $5
 
 # action=purge
 'confirm_purge_button' => 'ښه',
-'confirm-purge-top' => 'په رښتيا د همدې مخ حافظه سپينول غواړۍ؟',
+'confirm-purge-top' => 'آيا د همدې مخ حافظه سپينول غواړۍ؟',
 
 # action=watch/unwatch
 'confirm-watch-button' => 'ښه',
@@ -2518,6 +2541,10 @@ $5
 'imgmultigo' => 'ورځه!',
 'imgmultigoto' => 'د $1 مخ ته ورځه',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(تلواليزه ژبه)',
+'img-lang-go' => 'ورځه',
+
 # Table pager
 'ascending_abbrev' => 'ختند',
 'descending_abbrev' => 'مخښکته',
@@ -2533,7 +2560,7 @@ $5
 # Auto-summaries
 'autosumm-blank' => 'مخ تش شو',
 'autosumm-replace' => "دا مخ د '$1' پرځای راوستل",
-'autoredircomment' => '[[$1]] ته وګرځولی شو',
+'autoredircomment' => '[[$1]] ته وروگرځېده',
 'autosumm-new' => 'د "$1" تورو مخ جوړ شو',
 
 # Size units
@@ -2618,6 +2645,8 @@ $5
 'version-specialpages' => 'ځانگړي مخونه',
 'version-skins' => 'پوښۍ',
 'version-other' => 'بل',
+'version-hooks' => 'کونډۍ',
+'version-hook-name' => 'کونډۍ نوم',
 'version-version' => '(بڼه $1)',
 'version-license' => 'منښتليک',
 'version-poweredby-credits' => "دا ويکي د '''[https://www.mediawiki.org/ مېډياويکي]''' په سېک چلېږي، ټولې رښتې خوندي دي © 2001-$1 $2.",
@@ -2631,6 +2660,13 @@ $5
 'version-software-product' => 'اېبره',
 'version-software-version' => 'بڼه',
 
+# Special:Redirect
+'redirect-submit' => 'ورځه',
+'redirect-value' => 'ارزښت:',
+'redirect-user' => 'کارن پېژند',
+'redirect-file' => 'د دوتنې نوم',
+'redirect-not-exists' => 'ارزښت و نه موندل شو',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'د دوه گونو دوتنو پلټنه',
 'fileduplicatesearch-legend' => 'د دوه گونو دوتنو پلټنه',
@@ -2643,8 +2679,7 @@ $5
 # Special:SpecialPages
 'specialpages' => 'ځانگړي مخونه',
 'specialpages-note' => '* نورماله ځانگړي مخونه.
-* <strong class="mw-specialpagerestricted">محدوده ځانگړي مخونه.</strong>
-* <span class="mw-specialpagecached">رانيولي ځانگړي مخونه (کېدای شي منسوخ شوی وي).</span>',
+* <strong class="mw-specialpagerestricted">محدوده ځانگړي مخونه.</strong>',
 'specialpages-group-maintenance' => 'د څارنې راپورونه',
 'specialpages-group-other' => 'نور ځانگړي مخونه',
 'specialpages-group-login' => 'ننوتل / گڼون جوړول',
@@ -2755,6 +2790,9 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|پېړۍ|پېړۍ}}',
 'duration-millennia' => '$1 {{PLURAL:$1|زرمه|زرمې}}',
 
+# Limit report
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|بايټ|بايټونه}}',
+
 # Special:ExpandTemplates
 'expandtemplates' => 'کينډۍ غځول',
 'expand_templates_input' => 'ځايونکی متن:',
index 5d5af8d..c960864 100644 (file)
@@ -1739,8 +1739,9 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'recentchanges-label-bot' => 'Esta edição foi feita por um robô',
 'recentchanges-label-unpatrolled' => 'Esta edição ainda não foi patrulhada',
 'recentchanges-label-plusminus' => 'Alteração no tamanho da página, em bytes',
+'recentchanges-legend-heading' => "'''Legenda''':",
 'recentchanges-legend-newpage' => '(veja também a [[Special:NewPages|lista de páginas novas]])',
-'recentchanges-legend-plusminus' => '±123',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Seguem as alterações desde as '''$4''' de '''$3''' (limitadas a '''$1''').",
 'rclistfrom' => 'Mostrar as novas alterações a partir das $1',
 'rcshowhideminor' => '$1 edições menores',
@@ -2214,7 +2215,7 @@ Entradas <del>riscadas</del> foram resolvidas.',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|Interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|linque|linques}}',
 'nmembers' => '$1 {{PLURAL:$1|membro|membros}}',
-'nmemberschanged' => '$ -> $2{{PLURAL:$2|membro|membro}}',
+'nmemberschanged' => '$2{{PLURAL:$2|membro|membros}}',
 'nrevisions' => '$1 {{PLURAL:$1|revisão|revisões}}',
 'nviews' => '$1 {{PLURAL:$1|visita|visitas}}',
 'nimagelinks' => 'Utilizada em $1 {{PLURAL:$1|página|páginas}}',
@@ -3981,6 +3982,7 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 
 # Special:SpecialPages
 'specialpages' => 'Páginas especiais',
+'specialpages-note-top' => 'Legenda',
 'specialpages-note' => '* Páginas especiais normais.
 * <span class="mw-specialpagerestricted">Páginas especiais restritas.</span>',
 'specialpages-group-maintenance' => 'Relatórios de manutenção',
index 807bedd..e99ab8e 100644 (file)
@@ -2262,10 +2262,17 @@ See also:
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Used as title of the error message {{msg-mw|Cantcreateaccount-text}}.',
-'cantcreateaccount-text' => 'Used as error message, with the title {{msg-mw|cantcreateaccounttitle}}.
+'cantcreateaccount-text' => 'Used as error message, with the title {{msg-mw|Cantcreateaccounttitle}}.
 * $1 - target IP address
-* $2 - reason or {{msg-mw|blockednoreason}}
-* $3 - username',
+* $2 - reason or {{msg-mw|Blockednoreason}}
+* $3 - username
+See also:
+* {{msg-mw|Cantcreateaccount-range-text}}',
+'cantcreateaccount-range-text' => "Used as more detailed version of the {{msg-mw|Cantcreateaccount-text}} error message, with the title {{msg-mw|Cantcreateaccounttitle}}.
+* $1 - target IP range
+* $2 - reason or {{msg-mw|Blockednoreason}}
+* $3 - username
+* $4 - current user's IP address",
 
 # History pages
 'viewpagelogs' => 'Link displayed in history of pages',
@@ -3592,7 +3599,8 @@ See also:
 'recentchanges-label-plusminus' => 'Legend item for plus/minus.
 
 Preceded by legend example {{msg-mw|Recentchanges-legend-plusminus}}.',
-'recentchanges-legend-heading' => 'Used as a heading for legend box on [[Special:RecentChanges]] and [[Special:Watchlist]].',
+'recentchanges-legend-heading' => 'Used as a heading for legend box on [[Special:RecentChanges]] and [[Special:Watchlist]].
+{{Identical|Legend}}',
 'recentchanges-legend-newpage' => 'Used as legend in [[Special:RecentChanges]]. Preceded by {{msg-mw|Recentchanges-label-newpage}}.',
 'recentchanges-legend-plusminus' => 'A plus/minus sign with a number for the legend.',
 'rcnotefrom' => 'This message is displayed at [[Special:RecentChanges]] when viewing recentchanges from some specific time.
@@ -7987,7 +7995,8 @@ The label and the input box are always hidden.',
 'pageinfo-display-title' => 'The title that is displayed when the page is viewed.',
 'pageinfo-default-sort' => 'The key by which the page is sorted in categories by default.',
 'pageinfo-length' => 'The length of the page, in bytes.',
-'pageinfo-article-id' => 'The numeric identifier of the page.',
+'pageinfo-article-id' => 'The numeric identifier of the page.
+{{Identical|Page ID}}',
 'pageinfo-language' => 'Language in which the page content is written.',
 'pageinfo-content-model' => 'The model in which the page content is written.
 
@@ -9958,7 +9967,7 @@ A short description of the script path entry point. Links to the mediawiki.org d
 
 # Special:Redirect
 'redirect' => "{{doc-special|Redirect}}
-This means \"Redirect by file'''name''', user '''ID''', or revision ID\".",
+This means \"Redirect by file'''name''', user '''ID''', page '''ID''', or revision ID\".",
 'redirect-legend' => 'Legend of fieldset around input box in [[Special:Redirect]]',
 'redirect-summary' => 'Shown at top of [[Special:Redirect]]',
 'redirect-submit' => 'Button label in [[Special:Redirect]].
@@ -9967,12 +9976,15 @@ This means \"Redirect by file'''name''', user '''ID''', or revision ID\".",
 
 Followed by the select box which has the following options:
 * {{msg-mw|Redirect-user}}
+* {{msg-mw|Redirect-page}}
 * {{msg-mw|Redirect-revision}}
 * {{msg-mw|Redirect-file}}',
 'redirect-value' => 'Second field label in [[Special:Redirect]]
 {{Identical|Value}}',
 'redirect-user' => 'Description of lookup type for [[Special:Redirect]].
 {{Identical|User ID}}',
+'redirect-page' => 'Description of lookup type for [[Special:Redirect]].
+{{Identical|Page ID}}',
 'redirect-revision' => "Description of lookup type for [[Special:Redirect]].
 
 This means \"Page revision '''ID'''\".",
index 0c10e93..09424e7 100644 (file)
@@ -3386,7 +3386,7 @@ Conferma per plaschair che ti vuls propi crear danovamain quest artitgel.",
 
 # action=purge
 'confirm_purge_button' => 'ok',
-'confirm-purge-top' => 'Stizzar il cache da questa pagina?',
+'confirm-purge-top' => 'Svidar il cache da questa pagina?',
 'confirm-purge-bottom' => 'Svida il cache dad ina pagina e sforza da mussar la versiun actuala.',
 
 # action=watch/unwatch
index 08f90f3..5ee6883 100644 (file)
@@ -25,6 +25,7 @@
  * @author Silviubogan
  * @author Stelistcristi
  * @author Strainu
+ * @author TTO
  * @author Urhixidur
  * @author לערי ריינהארט
  */
@@ -1173,6 +1174,9 @@ Acsete argumente au fost omise.',
 'cantcreateaccounttitle' => 'Crearea contului nu poate fi realizată',
 'cantcreateaccount-text' => "Crearea de conturi de la această adresă IP ('''$1''') a fost blocată de [[User:$3|$3]].
 
+Motivul invocat de $3 este ''$2''",
+'cantcreateaccount-range-text' => "Crearea de conturi de la adresele IP din gama '''$1''', care o include și pe a dumneavoastră ('''$4'''), a fost blocată de [[User:$3|$3]].
+
 Motivul invocat de $3 este ''$2''",
 
 # History pages
@@ -1704,13 +1708,14 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
 'recentchanges-label-bot' => 'Această modificare a fost efectuată de un robot',
 'recentchanges-label-unpatrolled' => 'Această modificare nu a fost încă verificată',
 'recentchanges-label-plusminus' => 'Dimensiunea paginii s-a modificat corespunzător acestui număr de octeți',
+'recentchanges-legend-heading' => "'''Legendă:'''",
 'recentchanges-legend-newpage' => '(vedeți și [[Special:NewPages|lista cu pagini noi]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'Dedesubt sunt modificările de la <b>$2</b> (maxim <b>$1</b> de modificări sunt afișate - schimbă numărul maxim de linii alegând altă valoare mai jos).',
 'rclistfrom' => 'Se arată modificările începând cu $1',
 'rcshowhideminor' => '$1 modificările minore',
 'rcshowhidebots' => '$1 roboții',
-'rcshowhideliu' => '$1 utilizatorii autentificați',
+'rcshowhideliu' => '$1 utilizatorii înregistrați',
 'rcshowhideanons' => '$1 utilizatorii anonimi',
 'rcshowhidepatr' => '$1 modificările patrulate',
 'rcshowhidemine' => '$1 contribuțiile mele',
@@ -2082,9 +2087,7 @@ Această pagină specială permite căutarea fișierelor în funcție de tipul M
 * Imagini animate : <code>image/gif</code>
 * Fișiere sunet : <code>audio/ogg</code>, <code>audio/x-ogg</code>
 * Fișiere video : <code>video/ogg</code>, <code>video/x-ogg</code>
-* Fișiere PDF : <code>application/pdf</code>
-
-Lista tipurilor MIME recunoscute de MediaWiki poate fi găsită la [http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/mime.types?view=markup fișiere mime.types].',
+* Fișiere PDF : <code>application/pdf</code>',
 'mimetype' => 'Tip MIME:',
 'download' => 'descarcă',
 
@@ -3812,7 +3815,7 @@ Vă rugăm să confirmați faptul că într-adevăr doriți să recreați acest
 # Language selector for translatable SVGs
 'img-lang-opt' => '$2 ($1)',
 'img-lang-default' => '(limba implicită)',
-'img-lang-info' => 'Randează această imagine în $1 $2.',
+'img-lang-info' => 'Randează această imagine în $1. $2',
 'img-lang-go' => 'Du-te',
 
 # Table pager
@@ -3911,13 +3914,14 @@ MediaWiki este distribuit în speranța că va fi folositor, dar FĂRĂ VREO GAR
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Redirecționare după fișier, utilizator sau ID-ul versiunii',
+'redirect' => 'Redirecționare după fișier, utilizator, ID-ul paginii sau al versiunii',
 'redirect-legend' => 'Redirecționare către un fișier sau o pagină',
-'redirect-summary' => 'Această pagină specială vă redirecționează către un fișier (dat fiind un nume de fișier), o pagină (dat fiind ID-ul unei versiuni) sau o pagină de utilizator (dat fiind un ID numeric al utilizatorului). Utilizare: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] sau [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Această pagină specială vă redirecționează către un fișier (dat fiind un nume de fișier), o pagină (dat fiind ID-ul unei versiuni sau ID-ul unei pagini) sau o pagină de utilizator (dat fiind un ID numeric al utilizatorului). Utilizare: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] sau [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Du-te',
 'redirect-lookup' => 'Căutare:',
 'redirect-value' => 'Valoare:',
 'redirect-user' => 'ID utilizator',
+'redirect-page' => 'ID pagină',
 'redirect-revision' => 'Versiune de pagină',
 'redirect-file' => 'Nume de fișier',
 'redirect-not-exists' => 'Valoarea nu a fot găsită',
@@ -4156,10 +4160,12 @@ MediaWiki este distribuit în speranța că va fi folositor, dar FĂRĂ VREO GAR
 'expand_templates_input' => 'Introduceți textul aici:',
 'expand_templates_output' => 'Rezultat',
 'expand_templates_xml_output' => 'Ieșire XML',
+'expand_templates_html_output' => 'Ieșire HTML brut',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Elimină comentariile',
 'expand_templates_remove_nowiki' => 'Suprimă etichetele <nowiki> în rezultat',
 'expand_templates_generate_xml' => 'Arată arborele de analiză XML',
+'expand_templates_generate_rawhtml' => 'Arată HTML brut',
 'expand_templates_preview' => 'Previzualizare',
 
 );
index df9ef8c..3312ff2 100644 (file)
@@ -26,6 +26,7 @@
  * @author Biathlon
  * @author Bouron
  * @author Chilin
+ * @author Cinemantique
  * @author Claymore
  * @author Comp1089
  * @author Cryptocoryne
@@ -70,6 +71,7 @@
  * @author Matma Rex
  * @author MaxBioHazard
  * @author MaxSem
+ * @author Milicevic01
  * @author NBS
  * @author Nemo bis
  * @author Okras
@@ -911,7 +913,7 @@ $2',
 'createacct-imgcaptcha-ph' => 'Введите текст, который вы видите выше',
 'createacct-submit' => 'Создать учётную запись',
 'createacct-another-submit' => 'Создать ещё одну учётную запись',
-'createacct-benefit-heading' => '{{SITENAME}} создана такими же людьми, как вы.',
+'createacct-benefit-heading' => '{{SITENAME}} создают такие же люди, как вы.',
 'createacct-benefit-body1' => '{{PLURAL:$1|правка|правки|правок}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|статья|статьи|статей}}',
 'createacct-benefit-body3' => '{{PLURAL:$1|участник|участника|участников}} за последнее время',
@@ -1539,8 +1541,8 @@ $1",
 'searcheverything-enable' => 'Поиск по всем пространствам имён',
 'searchrelated' => 'связанный',
 'searchall' => 'все',
-'showingresults' => "Ниже показаны до '''$1''' {{PLURAL:$1|результата|результатов}}, начиная с №'''$2'''.",
-'showingresultsnum' => "Ниже {{PLURAL:$3|показан|показаны|показаны}} '''$3''' {{PLURAL:$3|результат|результата|результатов}}, начиная с №'''$2'''.",
+'showingresults' => "Ниже показаны до '''$1''' {{PLURAL:$1|результата|результатов}}, начиная с № '''$2'''.",
+'showingresultsnum' => "Ниже {{PLURAL:$3|показан|показаны|показаны}} '''$3''' {{PLURAL:$3|результат|результата|результатов}}, начиная с № '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Результат '''$1''' из '''$3'''|Результаты '''$1—$2''' из '''$3'''}} для «'''$4'''»",
 'search-nonefound' => 'Соответствий запросу не найдено.',
 'powersearch-legend' => 'Расширенный поиск',
@@ -1855,6 +1857,7 @@ $1",
 'recentchanges-label-bot' => 'Эта правка сделана ботом',
 'recentchanges-label-unpatrolled' => 'Эта правку ещё никем не патрулировалась',
 'recentchanges-label-plusminus' => 'Размер страницы изменился на данное количество байт',
+'recentchanges-legend-heading' => "'''Легенда:'''",
 'recentchanges-legend-newpage' => '(см. также [[Special:NewPages|список новых страниц]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Ниже перечислены изменения с '''$2''' (не более '''$1''').",
@@ -4165,7 +4168,7 @@ MediaWiki распространяется в надежде, что она бу
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Путь к скрипту]',
 
 # Special:Redirect
-'redirect' => 'Перенаправление с файла, участника или идентификатора версии',
+'redirect' => 'Перенаправление с файла, участника, страницы или идентификатора версии',
 'redirect-legend' => 'Перенаправление на файл или страницу',
 'redirect-summary' => 'Эта специальная страница перенаправляет на файл (с имени файла), страницу (с идентификатора версии) или страницу участника (с числового идентификатора участника).
 Использование: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].',
index 7f13f5f..8067903 100644 (file)
@@ -117,7 +117,7 @@ $messages = array(
 'tog-editsection' => 'Mudìfigga di li sezzioni attrabessu lu cullegamentu [mudifigga]',
 'tog-editsectiononrightclick' => "Mudìfigga di li sezzioni attrabessu lu clic dresthu i' lu tìturu (nezzessàriu JavaScript)",
 'tog-showtoc' => "Musthra l'indizi pa li pàgini cun più di 3 sezzioni",
-'tog-rememberpassword' => "Ammenta la paràura d'órdhini (nezzessàriu azzittà li cookie) (for a maximum of $1 {{PLURAL:$1|day|days}})",
+'tog-rememberpassword' => "Ammenta la paràura d'órdhini (nezzessàriu azzittà li cookie) (for a maximum of $1 {{PLURAL:$1|dì|dì}})",
 'tog-watchcreations' => "Aggiungi li pàgini criaddi a l'abbaidaddi ippiziari",
 'tog-watchdefault' => "Aggiungi li pàgini mudìfiggaddi a l'abbaidaddi ippiziari",
 'tog-watchmoves' => "Aggiungi li pàgini ippusthaddi a l'abbaidaddi ippiziari",
@@ -130,6 +130,7 @@ $messages = array(
 'tog-enotifminoredits' => 'Signàrami pa postha erettrònica puru li mudìfigghi minori',
 'tog-enotifrevealaddr' => "Rivera lu me' indirizzu di postha erettrònica i' l'imbasciaddi d'avvisu",
 'tog-shownumberswatching' => "Musthra lu nùmaru d'utenti ch'àni la pàgina abbaidadda",
+'tog-oldsig' => 'Fimma esisthenti',
 'tog-fancysig' => "Interpreta i cumandi wiki i' la fimma (chena cullegaumentu otomatiggu)",
 'tog-uselivepreview' => "Attiba la funzioni ''Live preview'' (dumanda JavaScript; ippirimintari)",
 'tog-forceeditsummary' => "Dumanda cunfèimma si l'oggettu di la mudìfigga è bioddu",
@@ -196,6 +197,18 @@ $messages = array(
 'oct' => 'SAini',
 'nov' => 'SAndria',
 'dec' => 'Nad',
+'january-date' => '$1 Ginnagiu',
+'february-date' => '$1 Fribagiu',
+'march-date' => '$1 Matzu',
+'april-date' => '$1 Abriri',
+'may-date' => '$1 Maggiu',
+'june-date' => '$1 Làmpada',
+'july-date' => '$1 Tríura',
+'august-date' => '$1 Aosthu',
+'september-date' => '$1 Cabbidanni',
+'october-date' => '$1 Santuaini',
+'november-date' => "$1 Sant'Andria",
+'december-date' => '$1 Naddari',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Categuria|Categuri}}',
@@ -206,13 +219,14 @@ $messages = array(
 'hidden-categories' => '{{PLURAL:$1|Categuria cuadda|Categuri cuaddi}}',
 'hidden-category-category' => 'Categuri cuaddi',
 'category-subcat-count' => "{{PLURAL:$2|Chistha categuria cunteni un'unica sottocateguria, indicadda inogghi.|Chistha categuria cunteni {{PLURAL:$1|la sottocateguria indicadda|li $1 sottocategurì indicaddi}} inogghi, i' un tutari di $2.}}",
-'category-article-count' => "{{PLURAL:$2|Chistha categuria cunteni un'unica pagina, indicadda inogghi.|Chistha categuria cunteni {{PLURAL:$1|la pagina indicadda|li $1 pagini indicaddi}} inogghi, i' un tutari di $2.}}",
+'category-article-count' => "{{PLURAL:$2|Chistha categuria cunteni un'única pàgina, indicadda inogghi.|Chistha categuria cunteni {{PLURAL:$1|la pàgina indicadda|li $1 pàgini indicaddi}} inogghi, i' un tutari di $2.}}",
+'category-file-count' => "{{PLURAL:$2|Chistha categuria cunteni unu únicu file, indicaddu inogghi.|{{PLURAL:$1|Lu file sighenti è|$1 Li file sighenti so}} inogghi, i' un tutari di $2.}}",
 'listingcontinuesabbrev' => '(séguiddu)',
 
 'about' => 'Infuimmazioni',
 'article' => 'Pagina',
 'newwindow' => "(s'abbri in d'unu nobu balchoni)",
-'cancel' => 'Annulla',
+'cancel' => 'Annullà',
 'moredotdotdot' => 'Althru...',
 'mypage' => 'La mea pàgina',
 'mytalk' => "Li me' dischussioni",
@@ -230,14 +244,18 @@ $messages = array(
 'faqpage' => 'Project:FAQ (infuimmazioni e aggiuddu)',
 
 # Vector skin
+'vector-action-addsection' => 'Aggiungì oggettu',
 'vector-action-delete' => 'Canzella',
 'vector-action-move' => 'Ippustha',
+'vector-action-protect' => 'Pruteggì',
 'vector-view-create' => 'Cria',
 'vector-view-edit' => 'Mudifigga',
 'vector-view-history' => 'Vèdi isthòria',
 'vector-view-view' => 'Leggi',
 'vector-view-viewsource' => 'Vèdi fonti',
+'actions' => 'Azioni',
 'namespaces' => 'Tipi di pàgina:',
+'variants' => 'Varianti',
 
 'errorpagetitle' => 'Errori',
 'returnto' => 'Turra a $1.',
@@ -418,7 +436,7 @@ Zerthuni pàgini pudìani continuà a apparì cumenti si la iscidda nò fùssia
 'yourname' => 'Innòmu utenti',
 'yourpassword' => "Paràura d'órdhini",
 'yourpasswordagain' => "Ripeti la paràura d'órdhini",
-'remembermypassword' => "Ammenta la paràura d'órdhini (for a maximum of $1 {{PLURAL:$1|day|days}})",
+'remembermypassword' => "Ammenta la me' paràura d'órdhini in chisthu nabiggadori (par un màssimu di $1 {{PLURAL:$1|dì|dì}})",
 'yourdomainname' => 'Ippizzificà lu dumìniu',
 'externaldberror' => "S'è verifiggaddu un errori cu lu server di autentificazioni esthernu, oppuru nò si diponi di l'autorizazioni nezzessàri pa aggiornà la propria registhrazioni estherna.",
 'login' => 'Intra',
@@ -429,10 +447,11 @@ Zerthuni pàgini pudìani continuà a apparì cumenti si la iscidda nò fùssia
 'userlogout' => 'Esci',
 'notloggedin' => 'Intradda no effettuadda',
 'nologin' => "No ài una registhrazioni? '''$1'''.",
-'nologinlink' => 'Crèara abà',
+'nologinlink' => 'Crea una noba registhrazioni',
 'createaccount' => 'Crea una noba registhrazioni',
 'gotaccount' => "Ài già'na registhrazioni? '''$1'''.",
 'gotaccountlink' => 'Intra',
+'userlogin-resetlink' => "Hai immintiggaddu li minuddi d'intradda?",
 'createaccountmail' => 'via postha erettrònica',
 'badretype' => "Li paràuri d'órdhini insiriddi nò cuinzidhini tra èddi.",
 'userexists' => "L'innòmu utenti insiriddu è già utirizaddu. Pa pazieri chirria un'innòmu utenti dibessu.",
@@ -519,7 +538,7 @@ Pa cumprità la registhrazioni è nezzessàriu impusthà una noba paràura d'ór
 'subject' => 'Tìturu:',
 'minoredit' => 'Chistha è una mudìfigga minori',
 'watchthis' => "Aggiungi a l'abbaidaddi ippiziari",
-'savearticle' => 'Saivva la pagina',
+'savearticle' => 'Saivvà la pagina',
 'preview' => 'Antiprimma',
 'showpreview' => 'Visuarizza antiprimma',
 'showlivepreview' => "Funzioni ''Live preview''",
@@ -578,6 +597,7 @@ Si vói crià la pàgina abà, pói sùbidu ischribì in giossu (abbaidda li [[{
 S'ài sighiddu lu cullegamentu pa un'errori, è suffizenti incalchà lu buttoni '''Indareddu''' i' lu propriu nabiggadori.",
 'anontalkpagetext' => "----''Chistha è la pàgina di dischussioni di un'utenti anònimu, chi no ha ancora criaddu una registhrazioni o, in dugna modu, no la usa. Pa identifiggallu è dunca nezzessàriu usà lu sóiu nùmaru di l'indirizzu IP. L'indirizzi IP, parò, poni assé cundibisi da più utenti. Si sei un'utenti anònimu e vói chi li cummenti prisenti in chistha pàgina no si rifèrini a te, [[Special:UserLogin|crea una noba registhrazion o intra]] cu' chidda ch'hai già pa evità d'assé confusu cu' althri utenti anònimi in futuru.''",
 'noarticletext' => "Abà chistha pàgina è biodda. È pussìbiri [[Special:Search/{{PAGENAME}}|zirchà chistu tituru]] i' l'althri pàgini di lu situ, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} zirchà i' li rigisthri curriraddi] oppuru [{{fullurl:{{FULLPAGENAME}}|action=edit}} mudifiggà la pagina abà]</span>.",
+'noarticletext-nopermission' => "Abà chistha pàgina è biodda. È pussìbiri [[Special:Search/{{PAGENAME}}|zirchà chistu tìturu]] i' l'althri pàgini di lu situ, oppuru <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} zirchà i' li rigisthri reratibi]</span>, parò nò pói crià chistha pàgina.",
 'userpage-userdoesnotexist' => 'La registhrazioni "<nowiki>$1</nowiki>" nò curripundi a un\'utenti rigisthraddu. Verifiggà chi s\'aggia avveru gana di crià o mudìfiggà chistha pàgina.',
 'clearyourcache' => "'''Nota:''' daboi abé saivaddu è nezzessàriu pulì la mimória cache di lu propriu nabiggadori pà vidé li ciambamenti. Pa '''Mozilla / Firefox / Safari''': fà clic i Ricàrrigga incalchendi lu buttoni di li maiuschuri, oppuru incalchà ''Ctrl-Maiusc-R'' (''Cmd-Maiusc-R'' i Mac); pa '''Internet Explorer:''' mantinì incalchaddu lu tasthu ''Ctrl'' mentri s'incalcha lu buttoni ''Aggiorna'' o incalchà ''Ctrl-F5''; pa '''Konqueror''': incalchà lu buttoni ''Ricarica'' o lu tasthu ''F5''; pa '''Opera''' pò assé nezzessàriu ibbuiddà cumpretamenti la mimória cache da lu menù ''Strumenti → Preferenze''.",
 'usercssyoucanpreview' => "'''Suggerimentu:''' Usa lu buttoni '''Visuarizza antiprimma''' pa prubà li nobi CSS primma di sàivvaddi.",
@@ -596,7 +616,7 @@ S'ài sighiddu lu cullegamentu pa un'errori, è suffizenti incalchà lu buttoni
 
 '''Si lu probrema prisisthi, pói prubà à iscì e turrà a intrà.'''",
 'token_suffix_mismatch' => "'''La mudìfigga nò è isthadda sàivvadda parchí lu nabiggadori à musthraddu di gesthì in modu erraddu i caràtteri di punteggiaddura i' lu identifigganti di la mudìfigga. Pa evità una pussìbiri corruzioni di lu testhu di la pàgina, è isthadda rifiutadda l'intrea mudìfigga. Chistha situazioni pó verifiggassi, calch’e voltha, candu so usaddi zerthuni sivvìzi di proxy anònimi via reti chi àni di l'errori.'''",
-'editing' => 'Mudifigga di $1',
+'editing' => 'Mudìfigga di $1',
 'editingsection' => 'Mudifigga di $1 (sezzioni)',
 'editingcomment' => 'Mudifigga di $1 (cummentu)',
 'editconflict' => "Cuntrasthu d'edizioni i $1",
@@ -670,8 +690,9 @@ La rasgioni frunidda da $3 è ''$2''",
 
 Ippiegazioni: (curr) = diffarènzi cu la versioni currenti, (priz) = diffarènzi cu la versioni prizzidenti, '''m''' = mudìfigga minori, '''b''' = mudìfigga d'un bot, '''N''' = pàgina noba",
 'history-fieldset-title' => "Ischurri i' la cronologia",
-'histfirst' => 'Primma',
-'histlast' => 'Ulthima',
+'history-show-deleted' => 'Musthrà soru versioni annulladdi',
+'histfirst' => 'primma',
+'histlast' => 'ùlthimi',
 'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
 'historyempty' => '(biodda)',
 
@@ -690,7 +711,7 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'rev-deleted-text-view' => "Chistha versioni di la pàgina è isthadda buggadda da l'archìbi visìbiri a lu pùbbriggu.
 Lu testhu pò assé visuarizzaddu soru da l'amministhradori di lu situ.
 Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigisthru di canzilladdura] pa althri dettàgli.",
-'rev-delundel' => 'musthra/cua',
+'rev-delundel' => 'musthrà/cuà',
 'revisiondelete' => 'Canzella o ricùpara versioni',
 'revdelete-nooldid-title' => 'Versioni nò ippizzificadda',
 'revdelete-nooldid-text' => "No ài ippizzificaddu la o li versioni di la pàgina i' li quari eseguì chistha funzioni; pò assé chi nò esisthini.",
@@ -749,9 +770,24 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'notextmatches' => 'Nisciuna curripundènzia i lu teshu di li pàgini',
 'prevn' => 'prizzidenti {{PLURAL:$1|$1}}',
 'nextn' => 'sighenti {{PLURAL:$1|$1}}',
+'prevn-title' => 'Prizzidenti $1 {{PLURAL:$1|risulthaddu|risulthaddi}}',
+'nextn-title' => 'Sighenti $1 {{PLURAL:$1|risulthaddu|risulthaddi}}',
+'shown-title' => 'Musthra {{PLURAL:$1|un risulthaddu|$1 risulthaddi}} pa pàgina',
 'viewprevnext' => 'Vèdi ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-exists' => "'''Z'è una pàgina ciamadda\"[[:\$1]]\" in chisthu vichi.''' {{PLURAL:\$2|0=|Vèdi puru li althri risulthaddi agattaddi.}}",
+'searchmenu-new' => "'''Crea la pàgina \"[[:\$1]]\" in chistha vichi!''' {{PLURAL:\$2|0=|Vèdi puru la pàgina agattadda cun la zercha tòia.|Vèdi puru li risulthaddi agattaddi .}}",
+'searchprofile-articles' => 'Bozi',
+'searchprofile-project' => "Pàgini d'aggiuddu e di prugettu",
+'searchprofile-images' => 'Mùrthimediari',
 'searchprofile-everything' => 'Tuttu',
+'searchprofile-advanced' => 'Abanzaddu',
+'searchprofile-articles-tooltip' => 'Zercha in $1',
+'searchprofile-project-tooltip' => 'Zercha in $1',
+'searchprofile-images-tooltip' => 'Zirchà dati',
+'searchprofile-everything-tooltip' => 'Zercha in tuttu lu cuntinuddu (pàgini di dischussioni cumpresi)',
+'searchprofile-advanced-tooltip' => 'Zercha in althri tipi di pàgina',
 'search-result-size' => '$1 ({{PLURAL:$2|una paraura|$2 parauri}})',
+'search-result-category-size' => '{{PLURAL:$1|1 erementu|$1 erementi}} ({{PLURAL:$2|1 sottucateguria|$2 sottucateguri}}, {{PLURAL:$3|1 file|$3 file}})',
 'search-redirect' => '(rinviu $1)',
 'search-section' => '(sezzioni $1)',
 'search-suggest' => 'Forsi zerchabi: $1',
@@ -763,6 +799,8 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'searchall' => 'tutti',
 'showingresults' => "Accó {{PLURAL:$1|màssimu '''1''' risulthaddu|màssimu li '''$1''' risulthaddi}} à partì da lu nùmaru #'''$2'''.",
 'showingresultsnum' => "Accó {{PLURAL:$3|'''1''' risulthaddu |li '''$3''' risulthaddi}} à partì da lu nùmaru #'''$2'''.",
+'showingresultsheader' => "{{PLURAL:$5|Risulthaddu '''$1''' of '''$3'''|Risulthaddi '''$1 - $2''' di '''$3'''}} pa '''$4'''",
+'search-nonefound' => "Nisciuni risulthaddi pa la to' zercha",
 'powersearch-legend' => 'Zercha abanzadda',
 'powersearch-ns' => "Zercha i' li tipi di pàgina:",
 'powersearch-redir' => 'Listha rinvii',
@@ -864,7 +902,7 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'grouppage-bureaucrat' => '{{ns:project}}:Buròcrati',
 
 # Special:Log/newusers
-'newuserlogpage' => 'Nobi utenti',
+'newuserlogpage' => 'Rigisthru di nobi utenti',
 
 # User rights log
 'rightslog' => 'Diritti di li utenti',
@@ -876,12 +914,13 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|mudìfigga|mudìfigghi}}',
 'recentchanges' => 'Ulthimi mudìfigghi',
-'recentchanges-legend' => 'Opzioni ulthimi mudifigghi',
+'recentchanges-legend' => 'Opzioni ùlthimi mudìfigghi',
 'recentchanges-summary' => 'Chistha pàgina prisinta li mudìfigghi più rizzenti a li cuntinuddi di lu situ.',
 'recentchanges-feed-description' => 'Chisthu feed cunteni li mudìfigghi più rizzenti a li cuntinuddi di lu situ.',
 'recentchanges-label-newpage' => 'Noba pàgina',
 'recentchanges-label-minor' => 'Chistha è una mudìfigga minori',
 'recentchanges-label-bot' => 'Chistha è una mudìfigga pa unu bot',
+'recentchanges-label-unpatrolled' => 'Mudìfigga nò ancora contrulladda',
 'rcnotefrom' => "Inogghi so erencaddi li mudìfigghi arriggaddi a parthì da '''$2''' (finz'a '''$1''').",
 'rclistfrom' => 'Musthra li mudìfigghi arriggaddi à partì da $1',
 'rcshowhideminor' => '$1 li mudìfigghi minori',
@@ -902,7 +941,7 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'rc_categories' => 'Limita a li categuri (siparaddi da "|")',
 'rc_categories_any' => 'Cassisia',
 'newsectionsummary' => '/* $1 */ noba sezzioni',
-'rc-enhanced-expand' => 'Musthra dettagli (dumanda JavaScript)',
+'rc-enhanced-expand' => 'Musthrà dettagli (dumanda JavaScript)',
 'rc-enhanced-hide' => 'Cua dettàgli',
 
 # Recent changes linked
@@ -997,6 +1036,7 @@ Si si diponi di l'immàgina i' la risoruzioni originari, pa piazeri carriggalla.
 'upload-curl-error28-text' => "Lu situ à impiegaddu troppu tempu a rippundì. Verifiggà chi lu situ sia attibu, aisittà calchi minuti e turrà a prubà, pussibiimmenti candu v'è mancu genti.",
 
 'license' => "Licènzia d'usu:",
+'license-header' => "Licènzia d'usu:",
 'nolicense' => 'Nisciuna licènzia indicadda',
 'license-nopreview' => '(Antiprimma nò dipunìbiri)',
 'upload_source_url' => " (un'indirizzu vàriddu e pùbbriggu)",
@@ -1027,10 +1067,11 @@ Si si diponi di l'immàgina i' la risoruzioni originari, pa piazeri carriggalla.
 'filehist-dimensions' => 'Misuri',
 'filehist-filesize' => 'Misuri di lu file',
 'filehist-comment' => 'Oggettu',
-'imagelinks' => 'Cullegamenti a lu file',
+'imagelinks' => 'Utirizazioni di lu file',
 'linkstoimage' => "{{PLURAL:$1|La sighenti pàgina pùnta|Li sighenti $1 pàgini pùntani}} a l'immàgina:",
 'nolinkstoimage' => "Nisciuna pàgina cunteni cullegamenti a l'immàgina.",
 'sharedupload' => 'Chisthu file prubeni da $1 e pó assé utirizaddu da althri prugetti.',
+'sharedupload-desc-here' => 'Chisthu file prubeni da $1 e pó assé utirizaddu da althri prugetti. La deschrizioni di la [$2 pàgina di deschrizioni] è indicadda in giossu.',
 'uploadnewversion-linktext' => 'Carrigga una nóba versioni di chistu file',
 
 # File reversion
@@ -1135,6 +1176,7 @@ Si si diponi di l'immàgina i' la risoruzioni originari, pa piazeri carriggalla.
 'protectedtitles' => 'Tìturi prutiggiddi',
 'protectedtitlesempty' => 'Abà nò vi so tìturi prutiggiddi.',
 'listusers' => 'Erencu di li utenti',
+'usercreated' => '{{GENDER:$3|Criaddu}} lu $1 a $2',
 'newpages' => 'Pàgini più rizzenti',
 'newpages-username' => 'Nommu utenti:',
 'ancientpages' => 'Pàgini mancu rizzenti',
@@ -1185,6 +1227,7 @@ Also see [[Special:WantedCategories|wanted categories]].",
 # Special:LinkSearch
 'linksearch' => 'Cullegamenti estherni',
 'linksearch-ok' => 'Zercha',
+'linksearch-line' => '$1 ha liaddura da $2',
 
 # Special:ListUsers
 'listusersfrom' => "Musthra l'utenti parthendi da:",
@@ -1216,7 +1259,8 @@ Also see [[Special:WantedCategories|wanted categories]].",
 
 # Watchlist
 'watchlist' => 'Abbaidaddi ippiziari',
-'mywatchlist' => 'Abbaidaddi ippiziari',
+'mywatchlist' => 'Abbaiddaddi ippiziari',
+'watchlistfor2' => 'Pa $1 $2',
 'nowatchlist' => "La listha di l'abbaidaddi ippiziari è biodda.",
 'watchlistanontext' => "Pa visuarizzà e mudìfiggà l'erencu di l'abbaidaddi ippiziari è nezzessàriu $1.",
 'watchnologin' => 'Intradda nò effettuadda',
@@ -1292,8 +1336,9 @@ Pa dì cosa ni pensi e dumandà assisthènzia:
 'confirmdeletetext' => "Sei canzillendi pa sempri da la bancati una pàgina o un'immàgina, umpari a la cronologia d'edda.
 Pa piazzeri, cunfèimma chi vói canzillà avveru, ch'ài cumpresu li cunsiguènzi di l'azioni tóia e ch'edda è cunfòimmi a li [[{{MediaWiki:Policy-url}}|lìni ghia]].",
 'actioncomplete' => 'Azioni cumpritadda',
+'actionfailed' => 'Azioni craccadda',
 'deletedtext' => 'La pàgina "$1" è isthadda canzilladda. Cunsultha lu $2 pa un\'erencu di li pàgini canzilladdi da poggu tempu.',
-'dellogpage' => 'Canzilladduri',
+'dellogpage' => 'Rigisthru di li canzilladduri',
 'dellogpagetext' => 'Inogghi so erencaddi li pàgini canzilladdi da poggu tempu.',
 'deletionlog' => 'Rigisthru di li canzilladduri',
 'reverted' => 'Turra a la versioni prizzidenti',
@@ -1309,7 +1354,7 @@ Pa piazzeri, cunfèimma chi vói canzillà avveru, ch'ài cumpresu li cunsiguèn
 # Rollback
 'rollback' => 'Annulla li mudìfigghi',
 'rollback_short' => 'Turra che primma',
-'rollbacklink' => 'turra che primma',
+'rollbacklink' => 'turrà che primma',
 'rollbackfailed' => 'Nò è ridisciddu a turrà che primma',
 'cantrollback' => "Impussìbiri annullà li mudìfigghi; l'utenti chi n'è l'autori è l'unicu cuntribudori di la pàgina.",
 'editcomment' => "L'oggettu di la mudìfigga era: \"''\$1''\".",
@@ -1319,7 +1364,7 @@ Pa piazzeri, cunfèimma chi vói canzillà avveru, ch'ài cumpresu li cunsiguèn
 'sessionfailure' => "S'è verifigaddu un probrema i' la sissioni ch'identifigga l'intradda; lu sistham nò à eseguiddu lu cumandu imparthiddu pa precauzioni. Turrà a la pàgina prizzidenti cu' lu buttoni \"Indareddu\" di lu proprio nabigaddori, turrà a carriggà la pàgina e riprubà.",
 
 # Protect
-'protectlogpage' => 'Prutizioni',
+'protectlogpage' => 'Rigisthru di prutizioni',
 'protectlogtext' => "Inogghi v'è la listha di li pàgini broccaddi e ibbruccaddi. Védi la [[Special:ProtectedPages|listha di li pàgini prutiggiddi]] pa chiddi chi so attuarmenti prutiggiddi.",
 'protectedarticle' => 'à prutiggiddu "[[$1]]"',
 'modifiedarticleprotection' => 'ha mudìfiggaddu lu libellu di prutizioni di "[[$1]]"',
@@ -1373,6 +1418,7 @@ L'impusthazioni currenti pa la pàgina so '''$1''':",
 'undelete-nodiff' => 'Nò è isthadda acciappadda nisciuna ribisioni prizzidenti.',
 'undeletebtn' => 'Turra che primma',
 'undeletelink' => 'visuarizza/rimpustha',
+'undeleteviewlink' => 'vidé',
 'undeletecomment' => 'Cummentu:',
 'undeletedrevisions' => '{{PLURAL:$1|Una ribisioni ricuparadda|$1 ribisioni ricuparaddi}}',
 'undeletedrevisions-files' => '{{PLURAL:$1|Una ribisioni|$1 ribisioni}} e {{PLURAL:$2|un file ricuparaddu|$2 file ricuparaddi}}',
@@ -1398,12 +1444,12 @@ $1",
 'blanknamespace' => '(Prinzipari)',
 
 # Contributions
-'contributions' => 'Cuntributi utenti',
+'contributions' => '{{GENDER:$1|Cuntributi utenti}}',
 'contributions-title' => 'Cuntributi di $1',
 'mycontris' => "Li me' cuntributi",
-'contribsub2' => 'Pa $1 ($2)',
+'contribsub2' => 'Par {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Nò so isthaddi acciappaddi mudifigghi cunfoimmi a li criteri sciubaraddi.',
-'uctop' => '(ulthima pa la pàgina)',
+'uctop' => '(currenti)',
 'month' => 'A parthì da lu mesi (e prizzidenti):',
 'year' => "A parthì da l'anni (e prizzidenti):",
 
@@ -1415,24 +1461,26 @@ $1",
 'sp-contributions-talk' => 'dischussioni',
 'sp-contributions-search' => 'Zercha cuntributi',
 'sp-contributions-username' => 'Indirizzu IP o nommu utenti:',
+'sp-contributions-toponly' => 'Soru musthrà li versioni attuari',
 'sp-contributions-submit' => 'Zercha',
 
 # What links here
 'whatlinkshere' => 'Puntani inogghi',
 'whatlinkshere-title' => 'Pàgini chi pùntani a "$1"',
 'whatlinkshere-page' => 'Pàgina:',
-'linkshere' => "Le sighenti pàgini cuntenani dei cullegamenti a '''[[:$1]]''':",
+'linkshere' => "Li sighenti pàgini cuntenani cullegamenti a '''[[:$1]]''':",
 'nolinkshere' => "Nisciuna pàgina cunteni dei cullegamenti chi pùntani a '''[[:$1]]'''.",
 'nolinkshere-ns' => "Nò vi so pàgini chi pùntani a '''[[:$1]]''' i' lu namespace sciubaraddu.",
 'isredirect' => 'rinviu',
 'istemplate' => 'incrusioni',
-'isimage' => "cullegamentu a l'immàgina",
+'isimage' => 'Cullegamentu a file',
 'whatlinkshere-prev' => '{{PLURAL:$1|prizzidenti|prizzidenti $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|sighenti|sighenti $1}}',
 'whatlinkshere-links' => '← cullegamenti',
 'whatlinkshere-hideredirs' => '$1 rinvii',
 'whatlinkshere-hidetrans' => '$1 incrusioni',
 'whatlinkshere-hidelinks' => '$1 cullegamenti',
+'whatlinkshere-hideimages' => '$1 liadduri a file',
 'whatlinkshere-filters' => 'Filthri',
 
 # Block/unblock
@@ -1471,7 +1519,7 @@ $1",
 'emailblock' => 'postha erettrònica broccadda',
 'ipblocklist-empty' => "L'erencu di li brocchi è bioddu.",
 'ipblocklist-no-results' => "L'indirizzu IP o innòmmu utenti ciamaddu nò è broccaddu.",
-'blocklink' => 'brocca',
+'blocklink' => 'broccà',
 'unblocklink' => 'ibbrucca',
 'change-blocklink' => 'ciamba broccu',
 'contribslink' => 'cuntributi',
@@ -1551,7 +1599,7 @@ La pàgina di disthinazioni "[[:$1]]" isisthi già. Vói canzillalla pa rindì p
 'selfmove' => "Lu nobu tìturu è uguari a lu vécciu; impussìbiri ippusthà la pàgina cu' lu matessi innòmmu.",
 
 # Export
-'export' => 'Ippurtha li pàgini',
+'export' => 'Ippurthà pàgini',
 'exporttext' => "È pussìbiri ippurthà lu testhu e la cronologia di li mudìfigghi di una pàgina o di un gruppu di pàgini in fuimmaddu XML pa impurthalli i'althri siti ch'utilizzanni lu software MediaWiki, attrabessu [[Special:Import]].
 
 Pa ippurthà li pàgina indicà i tìturi i' la casella di testhu in giossu, unu pa riga, e ippizzificà si s'à gana d'uttinì la versioni currenti e tutti li versioni prizzidenti, cu' li dati di la cronologia di la pàgina, oppure soru l'ulthima versioni e i dati curripundenti a l'ulthima mudìfigga.
@@ -1580,7 +1628,7 @@ Pa piazeri utirizà [https://www.mediawiki.org/wiki/Localisation MediaWiki Lucar
 'allmessages-filter-submit' => 'Vai',
 
 # Thumbnails
-'thumbnail-more' => 'Immannitta',
+'thumbnail-more' => 'Immannittà',
 'filemissing' => 'File mancanti',
 'thumbnail_error' => "Errori i' la criazioni di la miniadduri: $1",
 'djvu_page_error' => 'Nùmaru di pàgina DjVu ibbagliaddu',
@@ -1636,7 +1684,7 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
 'tooltip-pt-logout' => 'Iscidda',
 'tooltip-ca-talk' => 'Vèdi li dischussioni reratibi a chistha pàgina',
 'tooltip-ca-edit' => "Pói mudìfiggà chistha pàgina. Pa piazeri usa lu buttoni d'antiprimma primma di saivvà",
-'tooltip-ca-addsection' => 'Ischumenza una sezzioni noba',
+'tooltip-ca-addsection' => 'Ischuminzà una sezzioni noba',
 'tooltip-ca-viewsource' => 'Chistha pàgina è prutiggidda, ma pói vidé lu còdizi soiu.',
 'tooltip-ca-history' => 'Versioni prizzidenti di chistha pàgina',
 'tooltip-ca-protect' => 'Prutiggi chistha pàgina',
@@ -1646,7 +1694,7 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
 'tooltip-ca-watch' => "Aggiungi chistha pàgina a la listha tóia di l'abbaidaddi ippiziari",
 'tooltip-ca-unwatch' => "Elimina chistha pàgina da la tóia listha d'abbaidaddi ippiziari",
 'tooltip-search' => 'Zercha di dentru a {{SITENAME}}',
-'tooltip-search-go' => "Via a una pàgina cu' lu tìturu indicaddu, si v'è",
+'tooltip-search-go' => "Vai a una pàgina cu' lu tìturu indicaddu, si v'è",
 'tooltip-search-fulltext' => "Zercha lu testhu indicaddu i' li pàgini",
 'tooltip-p-logo' => 'Visita la pàgina prinzipari',
 'tooltip-n-mainpage' => 'Visita la pàgina prinzipari',
@@ -1669,7 +1717,7 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
 'tooltip-ca-nstab-main' => 'Vèdi la bozi',
 'tooltip-ca-nstab-user' => 'Vèdi la pàgina utenti',
 'tooltip-ca-nstab-media' => 'Vedi la pàgina di lu file mùrthimediari',
-'tooltip-ca-nstab-special' => 'Chistha è una pàgina ippiziari, nò pó assé mudìfiggadda.',
+'tooltip-ca-nstab-special' => 'Chistha è una pàgina ippiziari, nò pó assé mudifiggadda.',
 'tooltip-ca-nstab-project' => 'Vèdi la pàgina di saivvìziu',
 'tooltip-ca-nstab-image' => "Vèdi la pàgina di l'immàgina",
 'tooltip-ca-nstab-mediawiki' => "Vèdi l'imbasciadda di sisthema",
@@ -1686,6 +1734,7 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
 'tooltip-upload' => 'Ischuminza lu carriggamentu',
 'tooltip-rollback' => '"Turra che primma" annulla li mudìfigghi a chistha pagina di l\'ulthimu cuntributori cu\' un soru clic.',
 'tooltip-undo' => "\"Annulla\"  pilmitti d'annullà chistha mudifigga e abbri lu modulu di mudifigga d'antiprimma. Pilmitti d'insirì una mutibazioni i' l'oggettu di la mudifigga.",
+'tooltip-summary' => 'Ischribbi un riassuntu corthu',
 
 # Metadata
 'notacceptable' => "Lu server wiki nò è bonu a frunì li dati i' un fuimmaddu liggìbiri da lu nabiggadori utirizaddu.",
@@ -1746,7 +1795,7 @@ $1",
 'file-info-size' => '$1 × $2 punti, misuri: $3, tipu MIME: $4',
 'file-nohires' => 'Nò so dipunìbiri versioni a risoruzioni maggiori.',
 'svg-long-desc' => 'file in fuimmaddu SVG, misuri nominari $1 × $2 punti, misuri di lu file: $3',
-'show-big-image' => 'Versioni a altha risoruzioni',
+'show-big-image' => "File d'orìgini",
 
 # Special:NewFiles
 'newimages' => 'Galleria di li file nobi',
@@ -1963,6 +2012,7 @@ Pa piazeri, cunfèimma chi vòi ricrià avveru chistha pàgina.",
 'specialpages-group-login' => 'Intra / registhrazioni',
 
 # Special:Tags
+'tag-filter' => '[[Special:Tags|Tag]] filthru:',
 'tags-edit' => 'mudifigga',
 
 # HTML forms
index 33a8e7a..a0da3a4 100644 (file)
@@ -405,7 +405,7 @@ $messages = array(
 'articlepage' => 'අන්තර්ගත පිටුව නරඹන්න',
 'talk' => 'සාකච්ඡාව',
 'views' => 'දෘෂ්ටි',
-'toolbox' => 'මෙවලම් ගොන්න',
+'toolbox' => 'මෙවලම්',
 'userpage' => 'පරිශීලක පිටුව නරඹන්න',
 'projectpage' => 'ව්‍යාපෘති පිටුව නරඹන්න',
 'imagepage' => 'ගොනු පිටුව නරඹන්න',
@@ -442,7 +442,7 @@ $1",
 'disclaimers' => 'වියාචනයන්',
 'disclaimerpage' => 'Project:පොදු වියාචන',
 'edithelp' => 'සංස්කරණ උදවු',
-'helppage' => 'Help:පටුන',
+'helppage' => 'උදවු:පටුන',
 'mainpage' => 'මුල් පිටුව',
 'mainpage-description' => 'මුල් පිටුව',
 'policy-url' => 'Project:ප්‍රතිපත්තිය',
@@ -677,7 +677,7 @@ $2',
 'passwordtooshort' => 'මුරපදය අඩුම වශයෙන් {{PLURAL:$1|එක් අක්ෂරයක්|අක්ෂර $1 ක්}} සහිත විය යුතුය.',
 'password-name-match' => 'ඔබගේ මුරපදය, ඔබගේ පරිශීලක නාමයෙන් වෙනස් එකක් විය යුතුය.',
 'password-login-forbidden' => 'මෙම පරිශීලක නාමයේ හා මුරපදයේ භාවිතය වලක්වා ඇත.',
-'mailmypassword' => 'නà·\80 à¶¸à·\94රපදය à·\80à·\92දà·\8aâ\80\8dයà·\94තà·\8a à¶­à·\90පà·\91ලâ\80\8dට à¶ºà·\80න්න',
+'mailmypassword' => 'මà·\94රපදය à¶´à·\8aâ\80\8dරතà·\8aâ\80\8dයà·\8fරමà·\8aභ à¶\9aරන්න',
 'passwordremindertitle' => '{{SITENAME}} සඳහා නව තාවකාලික මුර-පදය',
 'passwordremindertext' => 'යම් අයෙකු  ($1 අන්තර්ජාල ලිපිනය තුලින් සමහර විට ඔබ) විසින්  {{SITENAME}} ($4)සඳහා නව මුර-පදයක් ඉල්ලා සිට ඇත. පරිශීලක "$2"  වෙනුවෙන් තාවකාලික  මුර-පදයක් තනා "$3" බවට නියම කර ඇත. මෙය ඔබගේ අභිලාශය වූයේ නම් ඔබ විසින් ළහිළහියේ ප්‍රවිෂ්ට වී, නව මුර-පදයක් තෝරා ගත යුතුව ඇත.ඔබගේ තාවකාලික මුරපදය  {{PLURAL:$5|එක් දිනකින්|දින $5 කින්}}කල් ඉකුත්වනු ඇත.
 
@@ -1520,7 +1520,7 @@ HTML ටැගයන් පිරික්සන්න.',
 'rclistfrom' => '$1 සිට බලපැවැත්වෙන මෑත වෙනස්වීම් පෙන්වන්න',
 'rcshowhideminor' => 'සුළු සංස්කරණ $1',
 'rcshowhidebots' => 'රොබෝ $1',
-'rcshowhideliu' => 'පà·\92à·\80à·\92à·\83à·\94නà·\94 à¶´à¶»à·\92à·\81à·\93ලà¶\9aයනà·\8a $1',
+'rcshowhideliu' => 'ලà·\9aà¶\9bනà¶\9cත à¶´à¶»à·\92à·\81à·\93ලà¶\9aයà·\9d $1',
 'rcshowhideanons' => 'නිර්නාමික පරිශීලකයන් $1',
 'rcshowhidepatr' => 'පරික්‍ෂා කර බැලූ සංස්කරණයන් $1',
 'rcshowhidemine' => 'මගේ සංස්කරණයන් $1',
@@ -2402,7 +2402,7 @@ $1',
 'contributions' => '{{GENDER:$1|පරිශීලකගේ}} දායකත්වයන්',
 'contributions-title' => ' $1 සඳහා පරිශීලක දායකත්වයන්',
 'mycontris' => 'දායකත්ව',
-'contribsub2' => '$1 සඳහා ($2)',
+'contribsub2' => '{{GENDER:$3|$1}} සඳහා ($2)',
 'nocontribs' => 'මෙම උපමානයන් හා ගැලපෙන වෙනස්වීම් හමුනොවිණි.',
 'uctop' => '(වත්මන්)',
 'month' => 'මෙම මස (හා ඉන් පෙර) සිට:',
@@ -2983,7 +2983,7 @@ $1',
 'file-nohires' => 'මෙයට ඉහල විසර්ජනයක් දක්වා එළඹිය නොහැක.',
 'svg-long-desc' => 'SVG ගොනුව, නාමමාත්‍රිකව $1 × $2 පික්සල්, ගොනු විශාලත්වය: $3',
 'svg-long-error' => 'අනීතික SVG ගොනුව: $1',
-'show-big-image' => 'පà·\96රà·\8aණ à·\80à·\92භà·\9aදනය',
+'show-big-image' => 'මà·\94ලà·\8a à¶\9cà·\9cනà·\94à·\80',
 'show-big-image-preview' => 'මෙම පෙරදසුනෙහි තරම: $1.',
 'show-big-image-other' => 'අනෙකුත් {{PLURAL:$2|විභේදනය|විභේදනයන්}}: $1.',
 'show-big-image-size' => '$1 × $2  පික්සල',
index 90916e2..cafa6b1 100644 (file)
@@ -1422,6 +1422,7 @@ Ko vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo ra
 'prefs-tokenwatchlist' => 'Žeton',
 'prefs-diffs' => 'Primerjave',
 'prefs-help-prefershttps' => 'Nastavitev bo začela veljati ob vaši naslednji prijavi.',
+'prefs-tabs-navigation-hint' => 'Namig: Za krmarjenje med zavihki na seznamu zavihkov lahko uporabite levo in desno smerno tipko.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Izgleda veljaven',
@@ -1608,12 +1609,13 @@ Ko vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo ra
 'recentchanges-label-bot' => 'urejanje je izvedel bot',
 'recentchanges-label-unpatrolled' => 'Urejanje še ni bilo pregledano',
 'recentchanges-label-plusminus' => 'uporabnik je velikost strani spremenil za tolikšno število bajtov',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(glej tudi [[Special:NewPages|seznam novih strani]])',
 'rcnotefrom' => "Navedene so spremembe od '''$2''' dalje (prikazujem jih do '''$1''').",
 'rclistfrom' => 'Prikaži spremembe od $1 naprej',
 'rcshowhideminor' => '$1 manjša urejanja',
 'rcshowhidebots' => '$1 bote',
-'rcshowhideliu' => '$1 prijavljene uporabnike',
+'rcshowhideliu' => '$1 registrirane uporabnike',
 'rcshowhideanons' => '$1 brezimne uporabnike',
 'rcshowhidepatr' => '$1 pregledana urejanja',
 'rcshowhidemine' => '$1 moja urejanja',
@@ -2083,6 +2085,7 @@ Sedaj je preusmeritev na [[$2]].',
 'ninterwikis' => '$1 {{PLURAL:$1|medjezikovna povezava|medjezikovni povezavi|medjezikovne povezave|medjezikovnih povezav}}',
 'nlinks' => '$1 {{PLURAL:$1|povezava|povezavi|povezave|povezav|povezav}}',
 'nmembers' => '$1 {{PLURAL:$1|element|elementa|elementi|elementov|elementov}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|element|elementa|elementi|elementov}}',
 'nrevisions' => '$1 {{PLURAL:$1|redakcija|redakciji|redakcije|redakcij|redakcij}}',
 'nviews' => '$1 {{PLURAL:$1|ogled|ogleda|ogledi|ogledov|ogledov}}',
 'nimagelinks' => 'Uporabljeno na $1 {{PLURAL:$1|strani|straneh}}',
@@ -3731,6 +3734,11 @@ Prosimo, potrdite, da jo resnično želite znova ustvariti.",
 'imgmultigo' => 'Pojdi!',
 'imgmultigoto' => 'Pojdi na stran $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(privzeti jezik)',
+'img-lang-info' => 'Upodobi sliko v $1. $2',
+'img-lang-go' => 'Pojdi',
+
 # Table pager
 'ascending_abbrev' => 'nar',
 'descending_abbrev' => 'pad',
@@ -3830,13 +3838,14 @@ Skupaj s programom bi morali bi prejeti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopijo
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Pot skripta]',
 
 # Special:Redirect
-'redirect' => 'Preusmeri po datoteki, uporabniku ali ID-ju redakcije',
+'redirect' => 'Preusmeri po datoteki, uporabniku, strani ali ID-ju redakcije',
 'redirect-legend' => 'Preusmeritev na datoteko ali stran',
-'redirect-summary' => 'Posebna stran preusmeri na datoteko (če podate ime datoteke), stran (če podate ID redakcije) ali uporabniško stran (če podate številski ID uporabnika). Primer: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] ali [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Posebna stran preusmeri na datoteko (če podate ime datoteke), stran (če podate ID redakcije ali ID strani) ali uporabniško stran (če podate številski ID uporabnika). Uporaba: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] ali [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Pojdi',
 'redirect-lookup' => 'Iskanje:',
 'redirect-value' => 'Vrednost:',
 'redirect-user' => 'ID uporabnika',
+'redirect-page' => 'ID strani',
 'redirect-revision' => 'Redakcija strani',
 'redirect-file' => 'Ime datoteke',
 'redirect-not-exists' => 'Vrednosti ni mogoče najti',
@@ -4079,10 +4088,12 @@ Pravzaprav razširi skoraj vse v dvojnih zavitih oklepajih.',
 'expand_templates_input' => 'Vhodno besedilo:',
 'expand_templates_output' => 'Rezultat',
 'expand_templates_xml_output' => 'Izhod XML',
+'expand_templates_html_output' => 'Surovi izhod HTML',
 'expand_templates_ok' => 'V redu',
 'expand_templates_remove_comments' => 'Odstrani komentarje',
 'expand_templates_remove_nowiki' => 'V rezultatu odstrani oznake <nowiki>',
 'expand_templates_generate_xml' => 'Pokaži razčlenitveno drevo XML',
+'expand_templates_generate_rawhtml' => 'Prikaži surovi HTML',
 'expand_templates_preview' => 'Predogled',
 
 );
index 876fc71..8855862 100644 (file)
@@ -1688,7 +1688,7 @@ $1",
 'right-writeapi' => 'писање АПИ-ја',
 'right-delete' => 'брисање страница',
 'right-bigdelete' => 'брисање страница с великом историјом',
-'right-deletelogentry' => 'Ð\91рисање и враћање одређених ставки у дневнику',
+'right-deletelogentry' => 'брисање и враћање одређених ставки у дневнику',
 'right-deleterevision' => 'брисање и враћање одређених измена страница',
 'right-deletedhistory' => 'прегледање обрисаних ставки историје без повезаног текста',
 'right-deletedtext' => 'прегледање обрисаног текста и измена између обрисаних измена',
@@ -1701,17 +1701,17 @@ $1",
 'right-hideuser' => 'блокирање корисничког имена и његово сакривање од јавности',
 'right-ipblock-exempt' => 'заобилажење блокирања IP адресе, самоблокирања и блокирања опсега',
 'right-proxyunbannable' => 'заобилажење самоблокирања посредника',
-'right-unblockself' => 'Ð\9eдблокирај самог себе',
-'right-protect' => 'Ð\9fÑ\80омени Ð½Ð¸Ð²Ð¾Ðµ Ð·Ð°Ñ\88Ñ\82иÑ\82е Ð¸ Ñ\83Ñ\80еди ÐºÐ°Ñ\81кадно Ð·Ð°Ñ\88Ñ\82иÑ\9bене Ñ\81Ñ\82Ñ\80аниÑ\86е',
-'right-editprotected' => 'Уреди странице под заштитом „{{int:protect-level-sysop}}“',
-'right-editsemiprotected' => 'Уреди странице под заштитом „{{int:protect-level-autoconfirmed}}“',
+'right-unblockself' => 'одблокирај самог себе',
+'right-protect' => 'пÑ\80омени Ð½Ð¸Ð²Ð¾Ðµ Ð·Ð°Ñ\88Ñ\82иÑ\82е Ð¸ Ñ\83Ñ\80еди Ñ\81Ñ\82Ñ\80аниÑ\86е Ñ\81а Ð¿Ñ\80еноÑ\81ивом Ð·Ð°Ñ\88Ñ\82иÑ\82ом',
+'right-editprotected' => 'уреди странице под заштитом „{{int:protect-level-sysop}}“',
+'right-editsemiprotected' => 'уреди странице под заштитом „{{int:protect-level-autoconfirmed}}“',
 'right-editinterface' => 'уређивање корисничког окружења',
 'right-editusercssjs' => 'уређивање туђих CSS и јаваскрипт датотека',
 'right-editusercss' => 'уређивање туђих CSS датотека',
 'right-edituserjs' => 'уређивање туђих јаваскрипт датотека',
-'right-viewmyprivateinfo' => 'Ð\92идите своје личне податке (нпр. адресу е-поште, право име)',
-'right-editmyprivateinfo' => 'Уреди своје личне податке (нпр. адресу е-поште, право име)',
-'right-editmyoptions' => 'Уредите своја подешавања',
+'right-viewmyprivateinfo' => 'видите своје личне податке (нпр. адресу е-поште, право име)',
+'right-editmyprivateinfo' => 'уреди своје личне податке (нпр. адресу е-поште, право име)',
+'right-editmyoptions' => 'уредите своја подешавања',
 'right-rollback' => 'брзо враћање измена последњег корисника који је мењао одређену страницу',
 'right-markbotedits' => 'означавање враћених измена као измене бота',
 'right-noratelimit' => 'отпорност на ограничења',
@@ -1788,6 +1788,7 @@ $1",
 'recentchanges-label-bot' => 'Ову измену је направио бот',
 'recentchanges-label-unpatrolled' => 'Ова измена још није прегледана',
 'recentchanges-label-plusminus' => 'Промена величине странице (у бајтовима)',
+'recentchanges-legend-heading' => "'''Легенда:'''",
 'recentchanges-legend-newpage' => '([[Special:NewPages|списак нових страница]])',
 'rcnotefrom' => 'Испод су измене од <b>$3; $4</b> (до <b>$1</b> измена).',
 'rclistfrom' => 'Прикажи нове измене почев од $1',
@@ -2740,7 +2741,7 @@ $1',
 
 # Contributions
 'contributions' => '{{GENDER:$1|Кориснички}} доприноси',
-'contributions-title' => 'Доприноси {{GENDER:$1|корисника|кориснице|корисника}} $1',
+'contributions-title' => 'Доприноси {{GENDER:$1|корисника|кориснице}} $1',
 'mycontris' => 'Доприноси',
 'contribsub2' => 'За {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Измене које одговарају овим условима нису пронађене.',
@@ -4040,6 +4041,9 @@ $5
 'imgmultigo' => 'Иди!',
 'imgmultigoto' => 'Иди на страницу $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(подразумевани језик)',
+
 # Table pager
 'ascending_abbrev' => 'раст.',
 'descending_abbrev' => 'опад.',
@@ -4217,7 +4221,7 @@ $5
 'fileduplicatesearch-legend' => 'Претрага дупликата',
 'fileduplicatesearch-filename' => 'Назив датотеке:',
 'fileduplicatesearch-submit' => 'Претражи',
-'fileduplicatesearch-info' => '$1 × $2 пиксела<br />Величина: $3<br />MIME врста: $4',
+'fileduplicatesearch-info' => '$1 × $2 пиксела<br />Величина датотеке: $3<br />MIME тип: $4',
 'fileduplicatesearch-result-1' => 'Датотека „$1“ нема истоветних дупликата.',
 'fileduplicatesearch-result-n' => 'Датотека „$1“ има {{PLURAL:$2|идентичан дупликат|$2 идентична дупликата|$2 идентичних дупликата}}.',
 'fileduplicatesearch-noresults' => 'Датотека под називом „$1“ није пронађена.',
index 55594ff..5cfe5d1 100644 (file)
@@ -1571,7 +1571,7 @@ Ako izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rad
 'right-writeapi' => 'pisanje API-ja',
 'right-delete' => 'brisanje stranica',
 'right-bigdelete' => 'brisanje stranica s velikom istorijom',
-'right-deletelogentry' => 'Brisanje i vraćanje određenih stavki u dnevniku',
+'right-deletelogentry' => 'brisanje i vraćanje određenih stavki u dnevniku',
 'right-deleterevision' => 'brisanje i vraćanje određenih izmena stranica',
 'right-deletedhistory' => 'pregledanje obrisanih stavki istorije bez povezanog teksta',
 'right-deletedtext' => 'pregledanje obrisanog teksta i izmena između obrisanih izmena',
@@ -1584,9 +1584,9 @@ Ako izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rad
 'right-hideuser' => 'blokiranje korisničkog imena i njegovo sakrivanje od javnosti',
 'right-ipblock-exempt' => 'zaobilaženje blokiranja IP adrese, samoblokiranja i blokiranja opsega',
 'right-proxyunbannable' => 'zaobilaženje samoblokiranja posrednika',
-'right-unblockself' => 'Odblokiraj samog sebe',
-'right-protect' => 'Promeni nivoe zaštite i uredi kaskadno zaštićene stranice',
-'right-editprotected' => 'Uredi stranice pod zaštitom „{{int:protect-level-sysop}}“',
+'right-unblockself' => 'odblokiraj samog sebe',
+'right-protect' => 'promeni nivoe zaštite i uredi stranice sa prenosivom zaštitom',
+'right-editprotected' => 'uredi stranice pod zaštitom „{{int:protect-level-sysop}}“',
 'right-editinterface' => 'uređivanje korisničkog sučelja',
 'right-editusercssjs' => 'uređivanje tuđih CSS i javaskript datoteka',
 'right-editusercss' => 'uređivanje tuđih CSS datoteka',
@@ -2598,7 +2598,7 @@ $1',
 
 # Contributions
 'contributions' => '{{GENDER:$1|Korisnički}} doprinosi',
-'contributions-title' => 'Doprinosi {{GENDER:$1|korisnika|korisnice|korisnika}} $1',
+'contributions-title' => 'Doprinosi {{GENDER:$1|korisnika|korisnice}} $1',
 'mycontris' => 'Doprinosi',
 'contribsub2' => 'Za {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Izmene koje odgovaraju ovim uslovima nisu pronađene.',
@@ -4056,7 +4056,7 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 'fileduplicatesearch-legend' => 'Pretraga duplikata',
 'fileduplicatesearch-filename' => 'Naziv datoteke:',
 'fileduplicatesearch-submit' => 'Pretraži',
-'fileduplicatesearch-info' => '$1 × $2 piksela<br />Veličina: $3<br />MIME vrsta: $4',
+'fileduplicatesearch-info' => '$1 × $2 piksela<br />Veličina datoteke: $3<br />MIME tip: $4',
 'fileduplicatesearch-result-1' => 'Datoteka „$1“ nema istovetnih duplikata.',
 'fileduplicatesearch-result-n' => 'Datoteka „$1“ ima {{PLURAL:$2|identičan duplikat|$2 identična duplikata|$2 identičnih duplikata}}.',
 'fileduplicatesearch-noresults' => 'Datoteka pod nazivom „$1“ nije pronađena.',
index 2974706..e35c6d7 100644 (file)
@@ -346,9 +346,9 @@ $messages = array(
 'tog-watchdeletion' => 'Lägg till sidor och filer jag raderar i min bevakningslista',
 'tog-minordefault' => 'Markera automatiskt ändringar som mindre',
 'tog-previewontop' => 'Visa förhandsgranskningen ovanför redigeringsrutan',
-'tog-previewonfirst' => 'Visa förhandsgranskning när redigering påbörjas',
-'tog-enotifwatchlistpages' => 'Skicka e-post till mig när en sida på min bevakningslista ändras',
-'tog-enotifusertalkpages' => 'Skicka e-post till mig när något händer på min diskussionssida',
+'tog-previewonfirst' => 'Visa förhandsgranskning vid första redigeringen',
+'tog-enotifwatchlistpages' => 'Skicka e-post till mig när en sida eller fil på min bevakningslista ändras',
+'tog-enotifusertalkpages' => 'Skicka e-post till mig när något ändras på min diskussionssida',
 'tog-enotifminoredits' => 'Skicka mig e-post även för mindre ändringar av sidor och filer',
 'tog-enotifrevealaddr' => 'Visa min e-postadress i e-postmeddelanden om ändringar som skickas till andra',
 'tog-shownumberswatching' => 'Visa antalet användare som bevakar',
@@ -571,7 +571,7 @@ $1',
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
 'aboutsite' => 'Om {{SITENAME}}',
 'aboutpage' => 'Project:Om',
-'copyright' => 'Innehållet är tillgängligt under $1.',
+'copyright' => 'Innehållet är tillgängligt under $1 om inte annat anges.',
 'copyrightpage' => '{{ns:project}}:Upphovsrätt',
 'currentevents' => 'Aktuella händelser',
 'currentevents-url' => 'Project:Aktuella händelser',
@@ -582,22 +582,22 @@ $1',
 'mainpage' => 'Huvudsida',
 'mainpage-description' => 'Huvudsida',
 'policy-url' => 'Project:Riktlinjer',
-'portal' => 'Deltagarportalen',
-'portal-url' => 'Project:Deltagarportalen',
+'portal' => 'Gemenskapens portal',
+'portal-url' => 'Projekt:Gemenskapens portal',
 'privacy' => 'Integritetspolicy',
 'privacypage' => 'Project:Integritetspolicy',
 
 'badaccess' => 'Behörighetsfel',
 'badaccess-group0' => 'Du har inte behörighet att utföra den handling du begärt.',
-'badaccess-groups' => 'Den handling du har begärt kan enbart utföras av användare i {{PLURAL:$2|gruppen|grupperna}} $1.',
+'badaccess-groups' => 'Den handling du har begärt kan enbart utföras av användare i {{PLURAL:$2|gruppen|en av grupperna}}: $1.',
 
 'versionrequired' => 'Version $1 av MediaWiki krävs',
 'versionrequiredtext' => 'Version $1 av MediaWiki är nödvändig för att använda denna sida. Se [[Special:Version|versionssidan]].',
 
 'ok' => 'OK',
 'retrievedfrom' => 'Hämtad från "$1"',
-'youhavenewmessages' => 'Du har $1 ($2).',
-'youhavenewmessagesfromusers' => 'Du har $1 från {{PLURAL:$3|en annan användare|$3 användare}} ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|Du har}} $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Du har}} $1 från {{PLURAL:$3|en annan användare|$3 användare}} ($2).',
 'youhavenewmessagesmanyusers' => 'Du har $1 från många användare ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ett nytt meddelande|999=nya meddelanden}}',
 'newmessagesdifflinkplural' => 'senaste {{PLURAL:$1|ändring|999=ändringar}}',
@@ -611,7 +611,7 @@ $1',
 'toc' => 'Innehåll',
 'showtoc' => 'visa',
 'hidetoc' => 'göm',
-'collapsible-collapse' => 'Göm',
+'collapsible-collapse' => 'Kollapsa',
 'collapsible-expand' => 'Expandera',
 'thisisdeleted' => 'Visa eller återställ $1?',
 'viewdeleted' => 'Visa $1?',
@@ -670,7 +670,7 @@ Detta orsakas oftast av att man följer en inaktuell länk till en jämförelse
 
 Om inte så är fallet, kan du ha hittat en bugg i mjukvaran.
 Rapportera gärna problemet till någon [[Special:ListUsers/sysop|administratör]], ange då URL:en (webbadressen).',
-'missingarticle-rev' => '(version $1)',
+'missingarticle-rev' => '(version#: $1)',
 'missingarticle-diff' => '(jämförelse mellan version $1 och $2)',
 'readonly_lag' => 'Databasen har automatiskt skrivskyddats medan slavdatabasservrarna synkroniseras med huvudservern.',
 'internalerror' => 'Internt fel',
@@ -754,7 +754,7 @@ Glöm inte att justera dina [[Special:Preferences|{{SITENAME}}-inställningar]].
 'yourpasswordagain' => 'Upprepa lösenord',
 'createacct-yourpasswordagain' => 'Bekräfta lösenordet',
 'createacct-yourpasswordagain-ph' => 'Ange lösenordet igen',
-'remembermypassword' => 'Spara min inloggning på den här datorn (i max $1 {{PLURAL:$1|dygn|dygn}})',
+'remembermypassword' => 'Spara min inloggning på den här datorn (i max $1 {{PLURAL:$1|dygn}})',
 'userlogin-remembermypassword' => 'Håll mig inloggad',
 'userlogin-signwithsecure' => 'Använd säker anslutning',
 'yourdomainname' => 'Din domän',
@@ -770,10 +770,10 @@ Glöm inte att justera dina [[Special:Preferences|{{SITENAME}}-inställningar]].
 'notloggedin' => 'Inte inloggad',
 'userlogin-noaccount' => 'Har du inget konto?',
 'userlogin-joinproject' => 'Gå med i {{SITENAME}}',
-'nologin' => 'Har du inget användarkonto? $1.',
-'nologinlink' => 'Skapa ett användarkonto',
+'nologin' => 'Har du inget konto? $1.',
+'nologinlink' => 'Skapa ett konto',
 'createaccount' => 'Skapa ett konto',
-'gotaccount' => "Har du redan ett användarkonto? '''$1'''.",
+'gotaccount' => "Har du redan ett konto? '''$1'''.",
 'gotaccountlink' => 'Logga in',
 'userlogin-resetlink' => 'Har du glömt dina inloggningsuppgifter?',
 'userlogin-resetpassword-link' => 'Glömt ditt lösenord?',
@@ -791,7 +791,7 @@ Använd formuläret nedan för att logga in som en annan användare.',
 'createaccountmail' => 'Använd ett tillfälligt slumpvis valt lösenord och skicka det till den angivna e-postadressen',
 'createacct-realname' => 'Riktigt namn (valfritt)',
 'createaccountreason' => 'Orsak:',
-'createacct-reason' => 'Anledning',
+'createacct-reason' => 'Orsak',
 'createacct-reason-ph' => 'Varför du skapar ett annat konto',
 'createacct-captcha' => 'Säkerhetskontroll',
 'createacct-imgcaptcha-ph' => 'Fyll i texten du ser ovan',
@@ -854,8 +854,8 @@ Som ett resultat kan besökare som använder den här IP-adressen inte skapa nå
 Skriv in en adress med korrekt format eller töm fältet.',
 'cannotchangeemail' => 'E-post-adresser som är bundna till användarkonton kan inte ändras på denna wiki.',
 'emaildisabled' => 'Denna webbplats kan inte skicka e-post.',
-'accountcreated' => 'Användarkontot har skapats',
-'accountcreatedtext' => 'Användarkontot [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) har skapats.',
+'accountcreated' => 'Kontot har skapats',
+'accountcreatedtext' => 'Användarkontot [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|diskussion]]) har skapats.',
 'createaccount-title' => 'Konto skapat på {{SITENAME}}',
 'createaccount-text' => 'Någon har skapat ett konto åt din e-postadress på {{SITENAME}} ($4) med namnet "$2" och lösenordet "$3". Du bör nu logga in och ändra ditt lösenord.
 
@@ -870,7 +870,7 @@ Vänta $1 innan du försöker igen.',
 Om du väljer att ange det, kommer det användas för att tillskriva användaren för sitt arbete.',
 
 # Email sending
-'php-mail-error-unknown' => "Okänt fel i PHP's mail()-funktion",
+'php-mail-error-unknown' => 'Okänt fel i PHP:s mail()-funktion',
 'user-mail-no-addy' => 'Försökte skicka e-post utan en e-postadress',
 'user-mail-no-body' => 'Försökte skicka e-post med tomt eller orimligt kort innehåll.',
 
@@ -882,7 +882,7 @@ Om du väljer att ange det, kommer det användas för att tillskriva användaren
 'oldpassword' => 'Gammalt lösenord:',
 'newpassword' => 'Nytt lösenord:',
 'retypenew' => 'Upprepa det nya lösenordet:',
-'resetpass_submit' => 'Spara lösenord och logga in',
+'resetpass_submit' => 'Ange lösenord och logga in',
 'changepassword-success' => 'Ditt lösenord har ändrats!',
 'resetpass_forbidden' => 'Lösenord kan inte ändras',
 'resetpass-no-info' => 'Du måste vara inloggad för att komma åt den här sidan direkt.',
@@ -894,7 +894,7 @@ Du kanske redan har lyckats ändra ditt lösenord eller begärt ett nytt tillfä
 'resetpass-abort-generic' => 'Lösenordsändring av har avbrutits av ett tillägg.',
 
 # Special:PasswordReset
-'passwordreset' => 'Lösenordsåterställning',
+'passwordreset' => 'Återställ lösenord',
 'passwordreset-text-one' => 'Fyll i detta formulär för att återställa ditt lösenord.',
 'passwordreset-text-many' => '{{PLURAL:$1|Fyll i ett av fälten för att få ett tillfälligt lösenord via e-post.}}',
 'passwordreset-legend' => 'Återställ lösenord',
@@ -950,13 +950,13 @@ Du bör återställa om du av misstag delade dem med någon eller om ditt konto
 'resettokens-resetbutton' => 'Återställ valda nycklar',
 
 # Edit page toolbar
-'bold_sample' => 'Fet text',
-'bold_tip' => 'Fet stil',
-'italic_sample' => 'Kursiv text',
+'bold_sample' => 'Fetstil',
+'bold_tip' => 'Fetstil',
+'italic_sample' => 'Kursiv stil',
 'italic_tip' => 'Kursiv stil',
 'link_sample' => 'Länktitel',
 'link_tip' => 'Intern länk',
-'extlink_sample' => 'http://www.example.com länkens namn',
+'extlink_sample' => 'http://www.exempel.com länktitel',
 'extlink_tip' => 'Extern länk (kom ihåg prefixet http://)',
 'headline_sample' => 'Rubriktext',
 'headline_tip' => 'Rubrik i nivå 2',
@@ -974,7 +974,7 @@ Du bör återställa om du av misstag delade dem med någon eller om ditt konto
 'subject' => 'Ämne/rubrik:',
 'minoredit' => 'Mindre ändring (m)',
 'watchthis' => 'Bevaka denna sida',
-'savearticle' => 'Spara',
+'savearticle' => 'Spara sida',
 'preview' => 'Förhandsgranska',
 'showpreview' => 'Visa förhandsgranskning',
 'showlivepreview' => 'Automatiskt uppdaterad förhandsvisning',
@@ -1054,10 +1054,11 @@ Orsaken till senaste blockeringen kan ses nedan:',
 *'''Internet Explorer:'''  Håll ned ''Ctrl'' och klicka på ''Uppdatera'' eller tryck ''Ctrl-F5''
 *'''Opera:''' Rensa cachen i ''Verktyg → Inställningar''",
 'usercssyoucanpreview' => "'''Tips:''' Använd knappen \"{{int:showpreview}}\" för att testa din nya CSS innan du sparar.",
-'userjsyoucanpreview' => "'''Tips:''' Använd knappen \"{{int:showpreview}}\" för att testa din nya JavaScript innan du sparar.",
-'usercsspreview' => "'''Kom ihåg att du bara förhandsgranskar din användar-CSS.
-Den har inte sparats än!'''",
-'userjspreview' => "'''Kom ihåg att du bara testar/förhandsgranskar ditt JavaScript, det har inte sparats än!'''",
+'userjsyoucanpreview' => "'''Tips:''' Använd knappen \"{{int:showpreview}}\" för att testa ditt nya JavaScript innan du sparar.",
+'usercsspreview' => "'''Kom ihåg att du bara förhandsgranskar din användar-CSS.'''
+'''Den har inte sparats än!'''",
+'userjspreview' => "'''Kom ihåg att du bara testar/förhandsgranskar ditt JavaScript.'''
+'''Det har inte sparats än!'''",
 'sitecsspreview' => "'''Kom ihåg att du bara förhandsgranskar detta CSS.''' 
 '''Det har ännu inte sparats!'''",
 'sitejspreview' => "'''Kom ihåg att du bara förhandsgranskar denna JavaScript-kod.'''
@@ -1122,7 +1123,7 @@ Den senaste loggposten tillhandahålls nedan som referens:",
 'templatesusedsection' => '{{PLURAL:$1|Mall|Mallar}} som används i det här avsnittet:',
 'template-protected' => '(skyddad)',
 'template-semiprotected' => '(delvis skyddad)',
-'hiddencategories' => 'Denna sida är medlem i följande dolda {{PLURAL:$1|kategori|kategorier}}:',
+'hiddencategories' => 'Denna sida är medlem i följande {{PLURAL:$1|dold kategori|dolda kategorier}}:',
 'edittools' => '<!-- Denna text kommer att visas nedanför redigeringsrutor och uppladdningsformulär. -->',
 'nocreatetext' => '{{SITENAME}} har begränsat möjligheterna att skapa nya sidor.
 Du kan redigera existerande sidor, eller [[Special:UserLogin|logga in eller skapa ett användarkonto]].',
@@ -1285,10 +1286,10 @@ Andra administratörer på {{SITENAME}} kommer fortfarande att kunna läsa det d
 'revdelete-hide-comment' => 'Redigeringssammanfattning',
 'revdelete-hide-user' => 'Redigerarens användarnamn/IP-adress',
 'revdelete-hide-restricted' => 'Undanhåll data från administratörer så väl som från övriga',
-'revdelete-radio-same' => '(låt vara)',
+'revdelete-radio-same' => '(ändra inte)',
 'revdelete-radio-set' => 'Dold',
 'revdelete-radio-unset' => 'Synlig',
-'revdelete-suppress' => 'Undanhåll data även från administratörer',
+'revdelete-suppress' => 'Undanhåll data även från administratörer så väl som från övriga',
 'revdelete-unsuppress' => 'Ta bort begränsningar på återställda versioner',
 'revdelete-log' => 'Anledning:',
 'revdelete-submit' => 'Tillämpa på {{PLURAL:$1|vald version|valda versioner}}',
@@ -1418,7 +1419,7 @@ Detaljer kan hittas i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-nonefound' => 'Inga resultat matchade frågan.',
 'powersearch-legend' => 'Avancerad sökning',
 'powersearch-ns' => 'Sök i namnrymderna:',
-'powersearch-redir' => 'Visa omdirigeringar',
+'powersearch-redir' => 'Lista omdirigeringar',
 'powersearch-togglelabel' => 'Kryssa:',
 'powersearch-toggleall' => 'Alla',
 'powersearch-togglenone' => 'Ingen',
@@ -1434,7 +1435,7 @@ Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
 'prefs-edits' => 'Antal redigeringar:',
 'prefsnologintext2' => 'Var god $1 för att ändra användarinställningar.',
 'prefs-skin' => 'Utseende',
-'skin-preview' => 'förhandsvisning',
+'skin-preview' => 'Förhandsvisning',
 'datedefault' => 'Ovidkommande',
 'prefs-beta' => 'Betafunktioner',
 'prefs-datetime' => 'Datum och tid',
@@ -1508,7 +1509,7 @@ Detta kan inte återställas.',
 'yourlanguage' => 'Språk:',
 'yourvariant' => 'Språkval för innehåll:',
 'prefs-help-variant' => 'Ditt önskade variant eller ortografi för att visa innehållssidor på denna wiki i.',
-'yournick' => 'Signatur:',
+'yournick' => 'Ny signatur:',
 'prefs-help-signature' => 'Kommentarer på diskussionssidor ska signeras med "<nowiki>~~~~</nowiki>", vilket konverteras till din signatur och tidpunkt.',
 'badsig' => 'Det är något fel med råsignaturen, kontrollera HTML-koden.',
 'badsiglength' => 'Din signatur är för lång.
@@ -1730,6 +1731,7 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'recentchanges-label-bot' => 'Denna redigering gjordes av en bot',
 'recentchanges-label-unpatrolled' => 'Denna redigering har inte blivit kontrollerad ännu',
 'recentchanges-label-plusminus' => 'Sidans storlek ändrades med detta antal byte',
+'recentchanges-legend-heading' => "'''Teckenförklaring:'''",
 'recentchanges-legend-newpage' => '(se även [[Special:NewPages|listan över nya sidor]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Nedan visas ändringar sedan '''$2''' (upp till '''$1''' visas).",
@@ -3843,7 +3845,7 @@ Bekräfta att du verkligen vill återskapa sidan.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(standardspråk)',
-'img-lang-info' => 'Rendera bilden i $1 $2.',
+'img-lang-info' => 'Rendera denna bild i $1. $2',
 'img-lang-go' => 'Gå',
 
 # Table pager
@@ -4195,10 +4197,12 @@ Annars kan du använda det enkla formuläret nedan. Din kommentar kommer att lä
 'expand_templates_input' => 'Text som ska expanderas:',
 'expand_templates_output' => 'Expanderad kod',
 'expand_templates_xml_output' => 'XML-kod',
+'expand_templates_html_output' => 'Rå HTML-utdata',
 'expand_templates_ok' => 'Expandera',
 'expand_templates_remove_comments' => 'Ta bort kommentarer',
 'expand_templates_remove_nowiki' => 'Undertryck <nowiki> taggar i resultatet',
 'expand_templates_generate_xml' => 'Visa parseträd som XML',
+'expand_templates_generate_rawhtml' => 'Visa rå HTML',
 'expand_templates_preview' => 'Förhandsvisning',
 
 );
index df68f9d..d61ce8d 100644 (file)
@@ -173,6 +173,7 @@ $messages = array(
 'dec' => 'gru',
 'january-date' => '$1 styczńa',
 'february-date' => '$1 lutygo',
+'march-date' => '$1 marca',
 'april-date' => '$1 kwjytńa',
 'may-date' => '$1 moja',
 'june-date' => '$1 czyrwca',
@@ -420,6 +421,7 @@ Eli tak ńy je, możno śe trefił feler we softwaru MediaWiki. Kej ja, pedz uo
 'cannotdelete' => 'Ńy idźe wyćepać podanyj zajty abo grafiki $1.',
 'cannotdelete-title' => 'Ńy idźie wyćepać zajty "$1".',
 'delete-hook-aborted' => 'Wyćepywańe sztopńynte bez hak. Przyczyna ńyuokreślůno.',
+'no-null-revision' => 'Ńy je mogebne stworzyńe zerowyj wersyji zajty "$1"',
 'badtitle' => 'Felerny titel',
 'badtitletext' => 'Podano felerny titel zajty. Prawdopodańy sům w ńim znoki, kerych ńy wolno używać we titlach abo je pusty.',
 'perfcached' => 'To co sam je naszkryflane, to ino kopja ze pamjyńći podryncznyj a może ńy być aktualne. Nojwjyncyj {{PLURAL:$1|jydyn wynik je|$1 wyniki sům}} we tyj pamjyńći.',
@@ -441,6 +443,8 @@ $2',
 'customjsprotected' => 'Ńy mosz uprawńyń do sprowjańo tyj zajty, bo na ńij sům uosobiste sztalowańo inkszego użytkowńika.',
 'mycustomcssprotected' => 'Ńy mosz uprawńyń do sprowjańo tyj zajty CSS.',
 'mycustomjsprotected' => 'Ńy mosz uprawńyń do sprowjańo tyj zajty JavaScript.',
+'myprivateinfoprotected' => 'Ńy mosz uprowńyń coby sprowjić swoje prywatne dane.',
+'mypreferencesprotected' => 'Ńy mosz uprowńyń coby sprowjić swoje sztalowańo.',
 'ns-specialprotected' => 'Ńy idźe sprowjać zajtůw we przestrzyni mjan {{ns:special}}.',
 'titleprotected' => "Wćepańy sam zajty uo takim mjańe zawar [[User:$1|$1]].
 Powůd zawarćo: ''$2''.",
@@ -448,6 +452,7 @@ Powůd zawarćo: ''$2''.",
 
 Administrator kery zawarł wćepał kůmyntorz: "$3".',
 'invalidtitle-knownnamespace' => 'Felerne mjano "$3" w przestrzeńy "$2".',
+'invalidtitle-unknownnamespace' => 'Felerne mjano ze ńyznomům nůmerům raumu mjan $1: "$2"',
 'exception-nologin' => 'Ńy jest żeś zalogůwany',
 'exception-nologin-text' => 'Prosza [[Special:Userlogin|zaloguj śe]] coby mjeć mogebność przejśćo do tyj zajty abo akcyji.',
 
@@ -541,7 +546,7 @@ Sprowdź szrajbůng, abo [[Special:UserLogin/signup|utwůrz nowe kůnto]].',
 Hasło muśi mjeć przinojmńij {{PLURAL:$1|1 buchsztaba|$1 buchsztabůw}} a być inksze uod mjana użytkowńika.',
 'password-name-match' => 'Hasło mo być inksze atoli mjano używocza.',
 'password-login-forbidden' => 'Mogebność wyboru tygo mjana używocza abo hasła je zawarte.',
-'mailmypassword' => 'Wyślij mi nowe hasło bez e-brif',
+'mailmypassword' => 'Wyczyść hasło',
 'passwordremindertitle' => 'Nowe tymczasowe hasło lo {{SITENAME}}',
 'passwordremindertext' => 'Ftoś (cheba Ty, ze IP $1)
 pado, aże chce nowe hasło do {{SITENAME}} ($4).
@@ -583,6 +588,7 @@ Kej bydźesz chćoł je podoć, bydům użyte, coby dokůmyntowoć Twoje autorst
 # Email sending
 'php-mail-error-unknown' => 'Ńyznany feler we funkcyji mail()',
 'user-mail-no-addy' => 'Průba posłańo e‐brifa bez adresu uodbjorcy',
+'user-mail-no-body' => 'Bůła průba posłańo e-brifa uo blank abo krůtkim tekśće.',
 
 # Change password dialog
 'changepassword' => 'Zmjana hasua',
@@ -600,6 +606,7 @@ Kej bydźesz chćoł je podoć, bydům użyte, coby dokůmyntowoć Twoje autorst
 'resetpass-wrong-oldpass' => 'Felerne tymczasowe abo aktualne hasło.
 Możliwe co właśńy zmjyńiłżeś swoje hasło abo poprosiłżeś uo nowe tymczasowe hasło.',
 'resetpass-temp-password' => 'Tymczasowe hasło:',
+'resetpass-abort-generic' => 'Půmjyńańe hasła uostoła zatrzimane bez rozszyrzyńe.',
 
 # Special:PasswordReset
 'passwordreset' => 'Wyczyść hasło',
@@ -638,6 +645,9 @@ Tymczasowe hasło: $2',
 'changeemail-submit' => 'Spamjyntej nowy',
 'changeemail-cancel' => 'Uodćepej',
 
+# Special:ResetTokens
+'resettokens' => 'Resetuj tokeny',
+
 # Edit page toolbar
 'bold_sample' => 'Ruby tekst',
 'bold_tip' => 'Ruby tekst',
@@ -709,7 +719,7 @@ Możesz to zrobić we [[Special:Preferences|swojich sztalowańach]].',
 'newarticletext' => 'Ńy mo sam jeszcze artikla uo takijj titli. Eli chcesz go sprowjać, naszkryflej niżyj jego tekst (wjyncy informacyj nojdźesz [[{{MediaWiki:Helppage}}|na zajće půmocy]]). Eli żeś chćoł zrobić cośik inksze, naćiś ino knefel "Nazod".',
 'anontalkpagetext' => "---- ''To je zajta godki lo anůnimowych używoczy  - takich, kerzi ńy majům jeszcze swojigo kůnta abo ńy chcům go terozki używać.
 By jejich idyntyfikować, używomy numerůw IP.
-Eli jeżeś anůnimowym używoczym a wydowo Ći śe, aże zamjyszczůne sam kůmyntorze ńy sům skjyrowane do Ćebje, [[Special:UserLogin|utwůrz prosza kůnto]] abo [[Special:UserLogin|zalůguj śe]] - beztůż uńikńesz potym podobnych ńyporozumjyń.''",
+Eli jeżeś anůnimowym używoczym a wydowo Ći śe, aże zamjyszczůne sam kůmyntorze ńy sům skjyrowane do Ćebje, [[Special:UserLogin/signup|utwůrz kůnto]] abo [[Special:UserLogin|zaloguj śe]] - beztůż uńikńesz potym podobnych ńyporozumjyń.''",
 'noarticletext' => 'Ńy můmy zajta uo takij titli. Mogesz [{{fullurl:{{FULLPAGENAME}}|action=edit}} wćepać artikel {{FULLPAGENAME}}] abo [[Special:Search/{{PAGENAME}}|sznupać {{PAGENAME}} we inkszych]].',
 'noarticletext-nopermission' => 'Ta zajta terozki je pusto.
 Mogesz [[Special:Search/{{PAGENAME}}|wysznupać ta titla]] we treśćach inkszych zajtůw, abo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} przesznupać powjůnzane rejery]</span>, nale ńy mosz uprowńyń coby ta zajta wćepać',
@@ -799,6 +809,7 @@ Rejer wyćepań tyj zajty je podany půńiżej, cobyś mioł wygoda:",
 Zdowo śe, co zostoła wyćepano.',
 'edit-conflict' => 'Kůnflikt sprowjyń.',
 'edit-no-change' => 'Twoje sprowjyńe uostouo zignorowane pů takymu, co ńic žeś we tekśće ńy zmjyńiu.',
+'postedit-confirmation' => 'Spamjyntano twoje sprowjyńe.',
 'edit-already-exists' => 'Ńy idźe utwořić nowyj zajty.
 Tako zajta juž sam je.',
 'defaultmessagetext' => 'Tekst důmyślny',
@@ -836,7 +847,7 @@ Skuli: ''$2''",
 'revisionasof' => 'Wersyjo ze dńa $1',
 'revision-info' => 'Wersyjo s dńa $1; $2',
 'previousrevision' => '← starszo wersyjo',
-'nextrevision' => 'Nastympno wersyjo→',
+'nextrevision' => 'Nostympno wersyjo→',
 'currentrevisionlink' => 'Aktualno wersyjo',
 'cur' => 'akt.',
 'next' => 'nastympno',
@@ -1250,11 +1261,11 @@ $1',
 'recentchanges-label-minor' => 'To je ńywjelge sprowjyńy',
 'recentchanges-label-bot' => 'To sprowjyńy bůło zrobjůne uod bota',
 'recentchanges-label-unpatrolled' => 'To sprowjyńy ńy bůło jeszcze uowjerzůne',
-'rcnotefrom' => 'PůÅ\84¾ej pokazano půmjyÅ\84\84o zrobjůne pů <b>$2</b> (Å\84y wjyncyj jak <b>$1</b> pozycji).',
+'rcnotefrom' => 'PůÅ\84¼ej pokazano půmjyÅ\84\84o zrobjůne pů <b>$2</b> (Å\84y wjyncyj kej <b>$1</b> pozycji).',
 'rclistfrom' => 'Ukoż půmjyńańa uod $1',
 'rcshowhideminor' => '$1 drobne půmjyńańa',
 'rcshowhidebots' => '$1 boty',
-'rcshowhideliu' => '$1 nalogowanych używoczůw',
+'rcshowhideliu' => '$1 zaregisztrowanych',
 'rcshowhideanons' => '$1 anůńimowych',
 'rcshowhidepatr' => '$1 uowjerzůne',
 'rcshowhidemine' => '$1 uody mje sprowjůne',
@@ -1477,7 +1488,7 @@ Niżyj sům informacyje ze [$2 zajty popisu] tygo pliku.',
 'randomredirect-nopages' => 'We przestrzyńi mjan "$1" ńy ma przekerowań.',
 
 # Statistics
-'statistics' => 'Statystyka',
+'statistics' => 'Sztatystyka',
 'statistics-header-pages' => 'Statystyka zajtůw',
 'statistics-header-edits' => 'Statystyka sprowjyń',
 'statistics-header-views' => 'Statystyka bezuchůw',
@@ -1571,8 +1582,8 @@ Niżyj sům informacyje ze [$2 zajty popisu] tygo pliku.',
 
 # Book sources
 'booksources' => 'Kśůnžki',
-'booksources-search-legend' => 'Šnupej za zdřůduůma kśiůnžkowymi',
-'booksources-go' => 'Pokož',
+'booksources-search-legend' => 'Sznupej za zdrzůdłůma kśůnżkowymi',
+'booksources-go' => 'Pokoż',
 'booksources-text' => 'Půńiżyj je lista uodnośńikůw do inkszych witryn, kere pośredńiczům we sprzedaży nowych a używanych buchůw, a tyż můgům mjeć dolsze informacyje uo poszukiwanym bez ćebje buchu.',
 'booksources-invalid-isbn' => 'Podany numer ISBN zostoł rozpoznany kej felerny. Sprowdź aże podany numer je zgodny s numerym kery je we zdrzůdle.',
 
@@ -1920,7 +1931,7 @@ $1',
 'month' => 'Uod mjeśůnca (i downiyjše):',
 'year' => 'Uod roku (i dowńijše):',
 
-'sp-contributions-newbies' => 'Pokož wkuod ino uod nowych užytkowńikůw',
+'sp-contributions-newbies' => 'Pokoż ajnzac ino uod nowych użytkowńikůw',
 'sp-contributions-newbies-sub' => 'Dlo nowych užytkowńikůw',
 'sp-contributions-newbies-title' => 'Wkłod nowych użytkowńików',
 'sp-contributions-blocklog' => 'zawarća',
@@ -1929,17 +1940,17 @@ $1',
 'sp-contributions-logs' => 'rejer dźołońo',
 'sp-contributions-talk' => '↓ dyskusyjo',
 'sp-contributions-userrights' => 'Zařůndzańy prowami užytkowńikůw',
-'sp-contributions-search' => 'Šnupej za wkuodym',
+'sp-contributions-search' => 'Sznupej za wkłodym',
 'sp-contributions-username' => 'Adres IP abo mjano użytkowńika',
 'sp-contributions-toponly' => 'Ukoż jyno ůostanie wersyje',
-'sp-contributions-submit' => 'Šnupej',
+'sp-contributions-submit' => 'Sznupej',
 
 # What links here
 'whatlinkshere' => 'Co sam linkuje',
 'whatlinkshere-title' => 'Zajty, kere linkujům na "$1"',
 'whatlinkshere-page' => 'Zajta:',
 'linkshere' => "Nastympůjůnce zajty sóm adrésůwane do '''[[:$1]]''':",
-'nolinkshere' => "Žodno zajta ńy je adrésowana do '''[[:$1]]'''.",
+'nolinkshere' => "Å»odno zajta ńy je adrésowana do '''[[:$1]]'''.",
 'nolinkshere-ns' => "Žodno zajta ńy je adresowano do '''[[:$1]]''' we wybrany přestřyni mjan.",
 'isredirect' => 'překerowujůnca zajta',
 'istemplate' => 'dołůnczony muster',
@@ -2241,7 +2252,7 @@ Wšyjstke uoperacyje importu transwiki sům uodnotowywane w [[Special:Log/import
 'tooltip-feed-rss' => 'Kanau RSS do tyj zajty',
 'tooltip-feed-atom' => 'Kanoł Atom lo tyj zajty',
 'tooltip-t-contributions' => 'Ukoż ajnzace tygo używocza',
-'tooltip-t-emailuser' => 'WyÅ\9blij e-brif do tygo užytkowńika',
+'tooltip-t-emailuser' => 'WyÅ\9blij e-brif do tygo użytkowńika',
 'tooltip-t-upload' => 'Wćepej plik na serwer',
 'tooltip-t-specialpages' => 'Lista wszyjskich ekstra zajtůw',
 'tooltip-t-print' => 'Wersyjo do durku',
index cc9ac3d..3c633cb 100644 (file)
@@ -1220,6 +1220,9 @@ Bu değişkenler atlandı.",
 'cantcreateaccount-text' => "Bu IP adresinden ('''$1''') kullanıcı hesabı oluşturulması [[User:$3|$3]] tarafından engellenmiştir.
 
 $3 tarafından verilen sebep ''$2''",
+'cantcreateaccount-range-text' => "'''$1''' aralığındaki IP'ler için hesap oluşturma [[User:$3|$3]] tarafından engellendi, bu sizin IP adresinizi de ('''$4''') içeriyor.
+
+$3 tarafından verilen gerekçe ''$2''",
 
 # History pages
 'viewpagelogs' => 'Bu sayfa ile ilgili kayıtları göster',
@@ -1745,8 +1748,8 @@ Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz
 'recentchanges-noresult' => 'Belirtilen kriterlere uyan herhangi bir değişiklik bulunamadı.',
 'recentchanges-feed-description' => "Bu beslemede, viki'de yapılan en son değişiklikleri takip edin.",
 'recentchanges-label-newpage' => 'Bu değişiklikle yeni bir sayfa oluşturuldu',
-'recentchanges-label-minor' => 'Bu bir küçük değişiklik',
-'recentchanges-label-bot' => 'Bu değişiklik bir bot tarafından yapıldı',
+'recentchanges-label-minor' => 'Küçük değişiklik',
+'recentchanges-label-bot' => 'Bir bot tarafından yapılan değişiklik',
 'recentchanges-label-unpatrolled' => 'Bu değişiklik henüz gözlenmemiş',
 'recentchanges-label-plusminus' => 'Sayfa boyutundaki değişikliğin bayt bazında değeri',
 'recentchanges-legend-heading' => "'''Gösterge:'''",
@@ -3880,7 +3883,7 @@ Sayfayı baştan açmak isityorsanız, lütfen onaylayın.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(varsayılan dil)',
-'img-lang-info' => 'Bu resmi $1 ile işle $2.',
+'img-lang-info' => 'Bu resmi $1 ile işle. $2',
 'img-lang-go' => 'Gönder',
 
 # Table pager
@@ -3985,13 +3988,14 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Dosya, kullanıcı veya sayfa ID yönlendirme',
+'redirect' => 'Dosya, kullanıcı, sayfa ya da revizyon kimliği ile yönlendirme',
 'redirect-legend' => 'Bir dosya veya sayfaya yönlendirme',
-'redirect-summary' => "Bu özel sayfa sizi bir dosya (dosya adı verilen), bir sayfa (bir revizyon ID'si verilen) veya bir kullanıcı sayfasının (sayısal kullanıcı kimliği verilen) adresine yönlendirir. Kullanım: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], ya da  [[{{#Special:Redirect}}/user/101]].",
+'redirect-summary' => "Bu özel sayfa sizi bir dosya (dosya adı verilen), bir sayfa (bir revizyon ya da sayfa ID'si verilen) veya bir kullanıcı sayfasının (sayısal kullanıcı kimliği verilen) adresine yönlendirir. Kullanım: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ya da  [[{{#Special:Redirect}}/user/101]].",
 'redirect-submit' => 'Git',
 'redirect-lookup' => 'Ara:',
 'redirect-value' => 'Değer:',
 'redirect-user' => 'Kullanıcı kimliği',
+'redirect-page' => 'Sayfa kimliği',
 'redirect-revision' => 'Sayfa revizyonu',
 'redirect-file' => 'Dosya adı',
 'redirect-not-exists' => 'Değer bulunamadı',
index 9cb0dc1..d583f84 100644 (file)
@@ -1464,7 +1464,7 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
 'rclistfrom' => '$1 دىن باشلانغان يېڭى ئۆزگەرتىشنى كۆرسەت',
 'rcshowhideminor' => '$1 ئازراقلا تەھرىر',
 'rcshowhidebots' => '$1 ماشىنا ئادەمنىڭ تەھرىرى',
-'rcshowhideliu' => '$1 ØªÙ\89زÙ\89Ù\85غا Ù\83Ù\89رگÛ\95Ù\86 Ø¦Ù\89Ø´Ù\84Û\95تÙ\83Û\88Ú\86Ù\89Ù\86Ù\89Ú­ ØªÛ\95ھرÙ\89رى',
+'rcshowhideliu' => '$1 Ø®Û\95تÙ\84Û\95Ù\86Ú¯Û\95Ù\86 Ø¦Ù\89Ø´Ù\84Û\95تÙ\83Û\88Ú\86ى',
 'rcshowhideanons' => '$1 ئىمزاسىز ئىشلەتكۈچى تەھرىرى',
 'rcshowhidepatr' => '$1 كۆزىتىلگەن تەھرىر',
 'rcshowhidemine' => '$1 مېنىڭ تەھرىرىم',
index 11d6fb2..1695a88 100644 (file)
@@ -4020,7 +4020,7 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(типова мова)',
-'img-lang-info' => 'Візуалізувати це зображення у $1 $2.',
+'img-lang-info' => 'Візуалізувати це зображення у $1. $2',
 'img-lang-go' => 'Перейти',
 
 # Table pager
@@ -4186,13 +4186,14 @@ MediaWiki поширюється в надії, що вона буде кори
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Шлях до скриптів]',
 
 # Special:Redirect
-'redirect' => 'Перенаправлення за файлом, користувачем або ID версії',
+'redirect' => 'Перенаправлення за файлом, користувачем, сторінкою або ID версії',
 'redirect-legend' => 'Перенаправити на файл чи сторінку',
-'redirect-summary' => 'Ця спеціальна сторінка перенаправляє на файл (за поданою назвою файлу), сторінку (за поданим ID версії) або сторінку користувача (за поданим числовим ID користувача). Використання: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] або [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Ця спеціальна сторінка перенаправляє на файл (за поданою назвою файлу), сторінку (за поданим ID версії або сторінки) або сторінку користувача (за поданим числовим ID користувача). Використання: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]],[[{{#Special:Redirect}}/revision/328429]] або [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Перейти',
 'redirect-lookup' => 'Шукати:',
 'redirect-value' => 'Значення:',
 'redirect-user' => 'ID користувача',
+'redirect-page' => 'ID сторінки',
 'redirect-revision' => 'Версія сторінки',
 'redirect-file' => 'Назва файлу',
 'redirect-not-exists' => 'Значення не знайдено',
@@ -4435,10 +4436,12 @@ MediaWiki поширюється в надії, що вона буде кори
 'expand_templates_input' => 'Вхідний текст:',
 'expand_templates_output' => 'Результат',
 'expand_templates_xml_output' => 'XML-вивід',
+'expand_templates_html_output' => 'Сирий вивід HTML',
 'expand_templates_ok' => 'Гаразд',
 'expand_templates_remove_comments' => 'Вилучити коментарі',
 'expand_templates_remove_nowiki' => 'Ігнорувати теги <nowiki> в результаті',
 'expand_templates_generate_xml' => 'Показати дерево аналізу XML',
+'expand_templates_generate_rawhtml' => 'Показати сирий HTML',
 'expand_templates_preview' => 'Попередній перегляд',
 
 );
index 3334056..c8772dd 100644 (file)
@@ -97,27 +97,27 @@ $messages = array(
 'tog-extendwatchlist' => 'Levitagat kaclendnimikirjutez, miše nähta kaik toižetused.',
 'tog-usenewrc' => 'Kävutagat paremboitud tantoižed toižetused (pidab otta radho JavaScript)',
 'tog-numberheadings' => 'Nomeruida avtomatižikš pälkirjutesed',
-'tog-showtoolbar' => "Ozutada azegiden üläpanel' redaktiruindan aigan (JavaScript)",
+'tog-showtoolbar' => "Ozutada redaktiruindan panel'",
 'tog-editondblclick' => 'Redaktiruida lehtpoled kaksitadud plokul',
 'tog-editsection' => 'Ozutada "Redaktiruida"-kosketuz kaikuččen sekcijan täht',
 'tog-editsectiononrightclick' => 'Redaktiruida sekcijad hiren oiktal plokul pälkirjutesele',
 'tog-showtoc' => 'Ozutada südäiolend (lehtpoled, kudambil om enamba, mi 3 pälkirjutest)',
 'tog-rememberpassword' => 'Muštta minun kävutajan nimi neciš kompjuteras (enintään $1 {{PLURAL:$1|päivä|päivää}})',
-'tog-watchcreations' => 'Ližata kaik minai sätud lehtpoled minun kaclendkirjuteshe',
-'tog-watchdefault' => 'Ližata kaik minai toižetadud lehtpoled minun kaclendkirjuteshe',
-'tog-watchmoves' => 'Ližata kaik minai udesnimitadud lehtpoled minun kaclendkirjuteshe',
-'tog-watchdeletion' => 'Ližata kaik minai čutud lehtpoled minun kaclendkirjuteshe',
+'tog-watchcreations' => 'Ližata kaik minai sätud lehtpoled da failad minun kaclendkirjuteshe',
+'tog-watchdefault' => 'Ližata kaik minai toižetadud lehtpoled da failad minun kaclendkirjuteshe',
+'tog-watchmoves' => 'Ližata kaik minai udesnimitadud lehtpoled da failad minun kaclendkirjuteshe',
+'tog-watchdeletion' => 'Ližata kaik minai čutud lehtpoled da failad minun kaclendkirjuteshe',
 'tog-minordefault' => 'Znamoita äugotižjärgendusen mödhe kaik toižetused penikš',
 'tog-previewontop' => 'Panda ezikacund redaktiruindan iknan edehe',
 'tog-previewonfirst' => 'Ozutada ezikacund redaktiruindan augotades',
-'tog-enotifwatchlistpages' => 'Oigekat minei e-počt, konz lehtpoled minun kaclendnimikirjutesespäi toižetase',
+'tog-enotifwatchlistpages' => 'Oigekat minei e-počt, konz lehtpoled vai failad minun kaclendnimikirjutesespäi toižetasoiš',
 'tog-enotifusertalkpages' => "Oigeta minei e-počt, konz minun lodulehtpol' toižetase",
-'tog-enotifminoredits' => 'Oigeta minei e-počt eskai siloi, konz toižetused oma minimaližed',
+'tog-enotifminoredits' => 'Oigeta minei e-počt eskai siloi, konz toižetused lehtpolil vai failoiš oma minimaližed',
 'tog-enotifrevealaddr' => 'Ozutada minun počtadres tedotuzkirjeižiš',
 'tog-shownumberswatching' => 'Ozutada niiden kävutajiden lugu, kudambad oma mülütanuded lehtpolen ičeze kaclendnimikirjutesihe',
 'tog-oldsig' => 'Nügüdläine allekirjutez',
 'tog-fancysig' => 'Ičeze allekirjutesen wiki-znamišt (avtomatižeta kosketuseta)',
-'tog-uselivepreview' => 'Kävutada hered ezikacund (JavaScript) (Eksperimentaline)',
+'tog-uselivepreview' => 'Kävutada hered ezikacund (Eksperimentaline)',
 'tog-forceeditsummary' => 'Varutada, kunz toižetusen ümbrikirjutandan pöud ei ole täuttud',
 'tog-watchlisthideown' => 'Peitta minun redakcijad kaclendnimikirjutesespäi',
 'tog-watchlisthidebots' => 'Peitta botoiden redakcijad kaclendnimikirjutesespäi',
@@ -229,6 +229,7 @@ $messages = array(
 'newwindow' => '(avaidase udes iknas)',
 'cancel' => 'Heitta pätand',
 'moredotdotdot' => 'Edeleze...',
+'morenotlisted' => 'Nece nimikirjutez ei ole vaumiž.',
 'mypage' => "Lehtpol'",
 'mytalk' => 'Lodud',
 'anontalk' => 'Lodud neciš IP-adresas',
@@ -330,7 +331,7 @@ $1",
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
 'aboutsite' => 'Informacii saitas {{SITENAME}}',
 'aboutpage' => 'Project:Informacii',
-'copyright' => 'südäiolend kävutadas $1-licenzijan mödhe.',
+'copyright' => 'südäiolend kävutadas $1-licenzijan mödhe, ku ei ole ozutadud toižin.',
 'copyrightpage' => '{{ns:project}}:tegijan oiktused',
 'currentevents' => 'Nügüdläižed tegod',
 'currentevents-url' => 'Project:Nügüdläižed tegod',
@@ -357,6 +358,10 @@ Kacu [[Special:Version|informacii kävutadud versijoiš]].',
 'ok' => 'Ka',
 'retrievedfrom' => 'Purde - "$1"',
 'youhavenewmessages' => 'Tö sat $1 ($2).',
+'youhavenewmessagesfromusers' => 'Teil om $1 {{PLURAL:$3|toižel kävutajalpäi|$3 kävutajilpäi}} ($2).',
+'youhavenewmessagesmanyusers' => 'Teil om $1 äjil kävutajilpäi ($2).',
+'newmessageslinkplural' => "{{PLURAL:$1|uz' kirjeine|ut kirješt}}",
+'newmessagesdifflinkplural' => "{{PLURAL:$1|jäl'gmäine toižetuz|jäl'gmäšt toižetust}}",
 'youhavenewmessagesmulti' => 'Teil om uzid tedotusid $1-lehtpolel',
 'editsection' => 'redaktiruida',
 'editold' => 'redaktiruida',
@@ -408,6 +413,7 @@ Kc. [[Special:SpecialPages|specialižiden lehtpoliden nimikirj]].",
 # General errors
 'error' => 'Petuz',
 'databaseerror' => 'Andmusiden bazan petuz',
+'databaseerror-function' => 'Funkcii:$1',
 'databaseerror-error' => 'Petuz: $1',
 'laggedslavemode' => "Varutuz: voib olda, lehtpolen versijal ei ole jäl'gmäižid ližadusid.",
 'readonly' => 'Andmusiden baz om luklostadud',
@@ -437,6 +443,7 @@ Ližakat URL.',
 'cannotdelete' => 'Ei voi čuta poiš necidä lehtpol\'t vai "$1"-failad.
 Sen om jo čutnu ken-se toine.',
 'cannotdelete-title' => "Ei voi heitta «$1»-lehtpol't",
+'no-null-revision' => 'Ei voi säta ut 0-revizijad "$1"-lehtpolen täht',
 'badtitle' => 'Hond nimi',
 'badtitletext' => 'Ectud lehtpolen nimi om vär, vai mugošt nimed ei ole, vai kelidenkeskeline (interwiki) nimi om kirjutadud värin.
 Siš voib olda simvoloid, kudambid ei sa panda nimihe.',
@@ -447,7 +454,7 @@ Anttud naku andmused ei udištugoi.",
 'viewsource' => 'Kc. purde',
 'viewsource-title' => 'Ozutada $1-lehtpolen lähtmižtekst',
 'actionthrottled' => 'Tegendan piguz om kaidetud',
-'protectedpagetext' => "Nece lehtpol' om luklostadud, miše kaita se redaktiruindaspäi.",
+'protectedpagetext' => "Nece lehtpol' om luklostadud, miše kaita se redaktiruindaspäi da toižis tegendoišpäi.",
 'viewsourcetext' => 'Sab lugeda da kopiruida necen lehtpolen augotižtekst:',
 'protectedinterface' => 'Necil lehtpolel om programman interfeistedotuz. Se om luklostadud, miše kaita se vandalizmaspäi.',
 'editinginterface' => "'''Homaikat:''' Tö ladit redaktiruida lehtpol't, kudambal om programman interfeistekst.
@@ -456,9 +463,13 @@ Kändmižen täht om paremb kävutada [//translatewiki.net/wiki/Main_Page?setlan
 'namespaceprotected' => "Teil ei ole oiktust redaktiruida lehtpolid '''$1'''-nimiavaruses.",
 'customcssprotected' => 'Teil ei ole oiktust redaktiruida nece CSS-lehtpol’, sikš sil oma toižen ühtnijan personaližed järgendused.',
 'customjsprotected' => 'Teil ei ole oiktust redaktiruida nece JavaScript-lehtpol’, sikš sil oma toižen ühtnijan personaližed järgendused.',
+'mycustomcssprotected' => 'Teile ei sa redaktiruida necidä CSS-lehtpol’t.',
+'mycustomjsprotected' => "Teile ei sa redaktiruida necidä JavaScript-lehtpol't.",
+'myprivateinfoprotected' => 'Teile ei sa redaktiruida ičetoi personališt informacijad.',
 'ns-specialprotected' => 'Ei sa redaktiruida specialižid lehtpolid.',
 'titleprotected' => '[[User:$1|$1]]-kävutai om kel\'nu mugoižen lehtpolen pälkirjutesen kävutamižen.
 Sü om "\'\'$2\'\'".',
+'exception-nologin' => 'Ei ole kirjutadud sistemha',
 
 # Virus scanner
 'virus-badscanner' => "Järgendusen petuz: tundmatoi virusoiden skaner: ''$1''",
@@ -476,6 +487,7 @@ Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel te
 'createacct-another-username-ph' => 'Kirjutagat kävutajannimi',
 'yourpassword' => 'Peitsana:',
 'userlogin-yourpassword' => 'Peitsana',
+'userlogin-yourpassword-ph' => 'Kirjutagat teiden peitsana',
 'createacct-yourpassword-ph' => 'Kirjutagat peitsana',
 'yourpasswordagain' => 'Kirjutagat peitsana udes:',
 'createacct-yourpasswordagain' => 'Peitsanan vahvištoituz',
@@ -483,6 +495,7 @@ Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel te
 'remembermypassword' => 'Panda muštho minun tulendandmused neciš kompjuteras (enintään $1 {{PLURAL:$1|päivä|päivää}})',
 'userlogin-remembermypassword' => 'Jäda sistemha',
 'yourdomainname' => 'Teiden domen:',
+'password-change-forbidden' => 'Teile ei sa vajehtada peitsanad neciš vikiš.',
 'externaldberror' => 'Ozaižihe petuz autentifikacijan, kudamb tehtihe andmusiden irdbazan turbiš, aigan, vai teile ei ulotu oiktusid toižetada ičetoi irdregistracijad.',
 'login' => 'Kirjutadas sistemha',
 'nav-login-createaccount' => 'Kirjutadas / Sada registracii',
@@ -492,13 +505,18 @@ Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel te
 'logout' => 'Lähtta',
 'userlogout' => 'Lähtta',
 'notloggedin' => 'Tö et olgoi kirjutanus sistemha',
+'userlogin-joinproject' => 'Ühtne {{SITENAME}}-saiha',
 'nologin' => "Ku tö et völ olgoi sanuded registracijad, '''$1'''.",
 'nologinlink' => 'Sada registracii',
 'createaccount' => 'Sada registracii',
 'gotaccount' => "Ku teil om jo registracii, '''$1'''.",
 'gotaccountlink' => 'Kirjutagatoiš sistemha',
 'userlogin-resetlink' => 'Unohtid-ik andmused tulendan täht?',
-'createaccountmail' => 'e-počtaiči',
+'createacct-emailrequired' => 'E-počtal adres',
+'createacct-email-ph' => 'Kirjutagat teiden e-počtan adres',
+'createacct-another-email-ph' => 'Kirjutagat e-počtan adres',
+'createaccountmail' => 'Kävutagat aigaline statjaline peitsana i oigekat ozutadud e-počtan adresale',
+'createacct-realname' => 'Todesine nimi (opcionaline)',
 'createaccountreason' => 'Sü:',
 'createacct-reason' => 'Sü',
 'createacct-reason-ph' => 'Mikš sädad kävutajanprofilid?',
@@ -506,6 +524,10 @@ Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel te
 'createacct-imgcaptcha-ph' => 'Kirjutagat tekst pälpäi',
 'createacct-submit' => "Säta kävutajanprofil'",
 'createacct-another-submit' => "Säta toine kävutajanprofil'",
+'createacct-benefit-heading' => '{{SITENAME}}-saitad tehtas teiden pojavad ristitud.',
+'createacct-benefit-body1' => '{{PLURAL:$1|redakcii|redakcijad}}',
+'createacct-benefit-body2' => "{{PLURAL:$1|lehtpol'|lehtpol't}}",
+'createacct-benefit-body3' => '{{PLURAL:$1|tantoine kirjutai|tantošt kirjutajad}}',
 'badretype' => 'Teil kirjutadud peitsanad ei kožugoi toine toižhe.',
 'userexists' => 'Kirjutadud kävutajan nimi om jo kävutamižes.
 Olgat hüväd, valikat toine kävutajan nimi.',
@@ -531,7 +553,7 @@ Kirjutagat toine peitsana.",
 'passwordtooshort' => 'Peitsanha pidab mülütada {{PLURAL:$1|1 znam|$1 znamad}}.',
 'password-name-match' => 'Teiden peitsanale pidab erineda kävutajan nimespäi.',
 'password-login-forbidden' => "Necen kävutajannimen da peitsanan kävutamine om kel'tud.",
-'mailmypassword' => "Oigeta minei uz' peitsana e-počtadme",
+'mailmypassword' => 'Udestada peitsana',
 'passwordremindertitle' => "Uz' pordaigaline peitsana {{SITENAME}}-saitan täht",
 'noemail' => '"$1"-kävutai ei ole andnu ičeze e-počtan adresad.',
 'noemailcreate' => 'Bidab kirjutada todesine e-počtan adres',
@@ -558,6 +580,7 @@ Olgat hüväd, varastagat pordon aigad edel ut naprindad.',
 
 # Email sending
 'php-mail-error-unknown' => 'Tundmatoi petuz PHP:n mail()-funkcijas',
+'user-mail-no-addy' => 'Tö ladit oigeta kirjeine e-počtan adresata.',
 
 # Change password dialog
 'changepassword' => 'Peitsanan toižetuz',
@@ -592,6 +615,7 @@ Aigaline peitsana: $2',
 # Special:ChangeEmail
 'changeemail' => 'Toižetada e-počtan adres',
 'changeemail-no-info' => 'Miše kirjutada necil lehtpolel, teile pidab kirjutadas sistemha.',
+'changeemail-oldemail' => 'Nügüdläine e-počtan adres:',
 'changeemail-newemail' => "Uz' e-počtan adres",
 'changeemail-none' => '(ei ole)',
 'changeemail-submit' => 'Toižetada e-počtan adres',
@@ -686,7 +710,7 @@ Tö voit [[Special:Search/{{PAGENAME}}|ectä nece nimi]] toižil lehtpolil,
 vai [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktiruida nece lehtpol\']</span>.',
 'noarticletext-nopermission' => 'Necil lehtpolel ei ole nügüd\' tekstad.
 Tö voit [[Special:Search/{{PAGENAME}}|ectä necen lehtpolen nimi]] toižil lehtpolil,
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ectä pojavid aigkirjoiden kirjutesid]</span>.',
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ectä pojavid aigkirjoiden kirjutesid]</span>, no teile ei sa säta necidä lehtpol\'t.',
 'userpage-userdoesnotexist' => "Kävutajan nimed «<nowiki>$1</nowiki>» ei ole. Todeks-ik tahtoit säta vai toižetada nece lehtpol'?",
 'userpage-userdoesnotexist-view' => '"$1"-kävutai ei ole registriruidud.',
 'blocked-notice-logextract' => "Nece kävutai om nügüd' blokiruidud.
@@ -703,6 +727,7 @@ Alemba om anttud jälgmäine kirjutuz blokiruindaiglehtesespäi:",
 'note' => "'''Homaičend:'''",
 'previewnote' => "'''Muštkat, miše nece om vaiše ezikacund.''' 
 Teiden toižetused ei olgoi völ kirjutadud!",
+'continue-editing' => 'Mända redaktiruindtarhaze',
 'previewconflict' => "Tekst redaktiruindan üläiknas kuvazub neche ezikacundha muga, kut se nägub lopkirjutamižen jäl'ghe.",
 'editing' => '$1-lehtpolen redaktiruind',
 'creating' => 'Sätas $1',
@@ -749,7 +774,7 @@ Tö voit pörttas tagaze i redaktiruida toine lehtpol', vai [[Special:UserLogin|
 'nocreate-loggedin' => 'Teile ei sa säta uzid lehtpolid.',
 'sectioneditnotsupported-title' => "Jagadusiden redaktiruind ei ole pid'oiteldud.",
 'sectioneditnotsupported-text' => "Necil lehtpolel jagadusiden redaktiruind ei ole pid'oiteldud.",
-'permissionserrors' => 'Oiktusiden petused',
+'permissionserrors' => 'Oiktusiden petuz',
 'permissionserrorstext' => 'Teile ei sa tehta muga {{PLURAL:$1|necen sün|neniden süiden}} tagut:',
 'permissionserrorstext-withaction' => 'Teile ei sa $2 {{PLURAL:$1|necen sün|neciden süiden}} tagut:',
 'recreate-moveddeleted-warn' => "Homaikat!
@@ -765,10 +790,14 @@ Ei ole ližasüid.',
 Voib olda, se om jo čutud.",
 'edit-conflict' => 'Redakcijoiden konflikt.',
 'edit-no-change' => 'Teiden redakcii ignoriruidihe, sikš miše tekst ei ole toižetadud.',
+'postedit-confirmation' => 'Teiden redakcii om kirjutadud muštho.',
 'edit-already-exists' => "Ei voi säta uz' lehtpol'.
 Wikiš om jo mugoi lehtpol'.",
 'defaultmessagetext' => 'Tekst augotižjärgendusen mödhe',
 
+# Content models
+'content-model-text' => 'koveritoi tekst',
+
 # Parser/template warnings
 'expensive-parserfunction-category' => 'Lehtpoled, kudambil kävutadas äjahko resursokahid funkcijoid',
 'post-expand-template-inclusion-warning' => 'Varutuz: lehtpolele pandud šablonoiden suruz om surehk.
@@ -847,11 +876,11 @@ Administratorad voiškatas lugeda peittud südäimištod da endištada sidä nec
 'revdelete-hide-image' => 'Peitta failan südäiolend',
 'revdelete-hide-name' => 'Peitta tegend da sen objekt',
 'revdelete-hide-comment' => 'Peitta toižetusiden kirjutez',
-'revdelete-hide-user' => 'Peitta avtoran nimi/IP',
+'revdelete-hide-user' => 'Redaktoran nimi/IP-adres',
 'revdelete-hide-restricted' => 'Peitta andmusid eskai administratorilpäi-ki',
 'revdelete-radio-same' => '(ala toižeta)',
-'revdelete-radio-set' => 'Ka',
-'revdelete-radio-unset' => 'Ei',
+'revdelete-radio-set' => 'Peittud',
+'revdelete-radio-unset' => 'Nägub',
 'revdelete-suppress' => 'Peitta administratorilpäi-ki sadud andmused',
 'revdelete-unsuppress' => 'Heitta kaidendused endištadud versijoilpäi',
 'revdelete-log' => 'Sü:',
@@ -978,6 +1007,7 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
 'prefs-beta' => 'Beta-voindad',
 'prefs-datetime' => 'Dat da aig',
 'prefs-labs' => 'Eksperimentaližed voindad',
+'prefs-user-pages' => 'Kävutajan lehtpoled',
 'prefs-personal' => "Kävutajan profil'",
 'prefs-rc' => 'Tantoižed toižetused',
 'prefs-watchlist' => 'Kaclendnimikirjutez',
@@ -993,7 +1023,7 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
 'prefs-email' => 'E-počtan opcijad',
 'prefs-rendering' => 'Nägu',
 'saveprefs' => 'Kirjutada',
-'restoreprefs' => 'Endištada kaik augotižjärgendused',
+'restoreprefs' => 'Endištada kaik augotižjärgendused (kaikiš sekcijoiš)',
 'prefs-editing' => 'Redaktiruind',
 'rows' => 'Rivid:',
 'columns' => 'Pachid:',
@@ -1035,9 +1065,9 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
 Necidä tegendad ei sa toižetada.",
 'prefs-emailconfirm-label' => 'E-počtan vahvištand:',
 'youremail' => 'E-počt:',
-'username' => 'Kävutajan nimi:',
-'uid' => 'Kävutajan nomer:',
-'prefs-memberingroups' => '{{PLURAL:$1|Gruppan|Gruppiden}} ühtnii:',
+'username' => '{{GENDER:$1|Kävutajan nimi}}:',
+'uid' => '{{GENDER:$1|Kävutajan nomer}} ID:',
+'prefs-memberingroups' => '{{PLURAL:$1|Gruppan|Gruppiden}} {{GENDER:$2|ühtnii}}:',
 'prefs-registration' => 'Registracijan aig:',
 'yourrealname' => 'Todesine nimi:',
 'yourlanguage' => "Kel':",
@@ -1063,7 +1093,7 @@ Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.'
 'prefs-signature' => 'Allekirjutez',
 'prefs-dateformat' => 'Datan format',
 'prefs-timeoffset' => 'Aigan sirdand',
-'prefs-advancedediting' => 'Ližaopcijad',
+'prefs-advancedediting' => 'opcijad',
 'prefs-preview' => 'Ezikacund',
 'prefs-advancedrc' => 'Ližaopcijad',
 'prefs-advancedrendering' => 'Ližaopcijad',
@@ -1358,6 +1388,7 @@ Ku problem jäb jäl'ghepäi-ki, säkat pagin [[Special:ListUsers/sysop|sistemad
 # File backend
 'backend-fail-backup' => 'Ei voi tehta $1-failan rezervkopijad.',
 'backend-fail-notexists' => 'Ei ole mugošt failad: "$1".',
+'backend-fail-delete' => 'Ei voi čuta poiš "$1"-failad.',
 'backend-fail-alreadyexists' => '$1-fail om jo olmas.',
 'backend-fail-copy' => 'Ei voi kopiruida "$1"-failad "$2"-tahoze.',
 'backend-fail-move' => 'Ei voi sirta "$1"-failad "$2"-tahoze.',
@@ -1450,6 +1481,7 @@ Informacijad sen [$2 andmusiden lehtpolelpäi] om anttud alemba.',
 'uploadnewversion-linktext' => "Jügutoitta necen failan uz' versii",
 'shared-repo-from' => '$1-projektaspäi',
 'shared-repo' => 'ühthine mediavaraait',
+'upload-disallowed-here' => 'Teile ei sa toižetada necidä failad.',
 
 # File reversion
 'filerevert' => '$1n endištand vanhemban versijannoks',
@@ -1524,6 +1556,8 @@ Informacijad sen [$2 andmusiden lehtpolelpäi] om anttud alemba.',
 'statistics-users-active-desc' => "Kävutajad, kudambad ozutiba aktivižut {{PLURAL:$1|jäl’gmäižen päivän|$1 jäl'gmäižil päivil}}",
 'statistics-mostpopular' => 'Kaikiš populärižembad lehtpoled',
 
+'pageswithprop-submit' => 'Tege',
+
 'doubleredirects' => 'Kaksitadud läbikosketused',
 'double-redirect-fixed-move' => "[[$1]]-lehtpol' om udesnimitadud. Se läbikosketab nügüd' [[$2]]-lehtpolele.",
 'double-redirect-fixer' => 'Läbikosketusiden kohendai',
@@ -1717,6 +1751,7 @@ Kc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].',
 'watchnologin' => 'Pidab kirjutadas sistemha',
 'addwatch' => 'Ližata kaclendnimikirjuteshe',
 'addedwatchtext' => '"[[:$1]]"-lehtpol\' om ližadud teiden [[Special:Watchlist|kaclendnimikirjuteshe]]. Necen lehtpolen (i sidotud lehtpoliden) tulebiš toižetusiš voiškandeb tedištada neciš nimikirjutesespäi; necen polhe kirjutaškatas mugažo [[Special:RecentChanges|uziden toižetusiden lehtpolel]] lihavoitud kirjamil, miše oliži kebnemb homaita.',
+'removewatch' => 'Čuta poiš kaclendnimikirjutesespäi',
 'removedwatchtext' => '"[[:$1]]"-lehtpol\' om heittud [[Special:Watchlist|teiden kaclendnimikirjutesespäi]].',
 'watch' => 'Pida sil’miš',
 'watchthispage' => "Kacelta necidä lehtpol't",
@@ -1911,8 +1946,8 @@ Sab toižetada necen lehtpolen kaičendpind, no se ei voi toižetada kaskadkaič
 'undeletedrevisions' => '{{PLURAL:$1|1 toižetuz|$1 toižetust}} om endištadud',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 toižetuz|$1 toižetust}} da {{PLURAL:$2|1 fail|$2 failad}} oma endištadud',
 'undeletedfiles' => '{{PLURAL:$1|1 fail om|$1 failad oma}} endištadud',
-'cannotundelete' => 'Endištandan petuz;
-Voib olda, ken-se om jo endištanu necen lehtpolen ende.',
+'cannotundelete' => 'Endištandan petuz:
+$1',
 'undeletedpage' => "'''$1-lehtpol' om endištadud'''
 
 Kc. [[Special:Log/delete|čudandoiden aigkirj]], miše tedištada tantoižiš čudandoiš da endištandoiš.",
@@ -1932,6 +1967,7 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Nimiavaruz:',
 'invert' => 'Käta erigoittud sanad vastkarin',
+'namespace_association' => 'Sidotud nimiavaruz',
 'blanknamespace' => '(Pälehtpoled)',
 
 # Contributions
@@ -2335,6 +2371,9 @@ Voib olda, necil lehtpolel om kosketuz irdsaitale, kudamb om mustas nimikirjutes
 'pageinfo-authors' => 'Erazvuiččiden avtoroiden lugu',
 'pageinfo-contentpage-yes' => 'Ka',
 'pageinfo-protect-cascading-yes' => 'Ka',
+'pageinfo-category-pages' => 'Lehtpoliden lugumär',
+'pageinfo-category-subcats' => 'Alakategorijoiden lugumär',
+'pageinfo-category-files' => 'Failoiden lugumär',
 
 # Skin names
 'skinname-cologneblue' => "Köl'nan sinine",
@@ -2568,6 +2607,7 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdl
 'exif-languagecode' => 'Kel’',
 'exif-iimcategory' => 'Kategorii',
 'exif-datetimeexpires' => "Algat kävutagoi necen datan jäl'ghe",
+'exif-identifier' => 'Identifikator',
 'exif-label' => 'Arbaine',
 'exif-pngfilecomment' => 'Kommentarii PNG-failha',
 
index 80b4c3b..29a82d4 100644 (file)
@@ -1198,6 +1198,9 @@ Những tham số này sẽ bị bỏ đi.',
 'cantcreateaccount-text' => "Chức năng tài tạo khoản từ địa chỉ IP này ('''$1''') đã bị [[User:$3|$3]] cấm.
 
 Lý do được $3 đưa ra là ''$2''",
+'cantcreateaccount-range-text' => "[[User:$3|$3]] đã cấm các địa chỉ IP trong dãy '''$1''', bao gồm địa chỉ IP của bạn ('''$4'''), không được mở tài khoản.
+
+Lý do được đưa ra bởi $3 là ''$2''",
 
 # History pages
 'viewpagelogs' => 'Xem nhật trình của trang này',
@@ -1728,13 +1731,14 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'recentchanges-label-bot' => 'Sửa đổi này do bot thực hiện',
 'recentchanges-label-unpatrolled' => 'Sửa đổi này chưa được tuần tra',
 'recentchanges-label-plusminus' => 'Kích cỡ trang đã thay đổi bằng số byte này',
+'recentchanges-legend-heading' => "'''Chú giải:'''",
 'recentchanges-legend-newpage' => '(xem thêm [[Special:NewPages|danh sách các trang mới]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Thay đổi từ '''$2''' (hiển thị tối đa '''$1''' thay đổi).",
 'rclistfrom' => 'Hiển thị các thay đổi từ $1.',
 'rcshowhideminor' => '$1 sửa đổi nhỏ',
 'rcshowhidebots' => '$1 sửa đổi bot',
-'rcshowhideliu' => '$1 sửa đổi thành viên',
+'rcshowhideliu' => '$1 thành viên đăng ký',
 'rcshowhideanons' => '$1 sửa đổi vô danh',
 'rcshowhidepatr' => '$1 sửa đổi đã tuần tra',
 'rcshowhidemine' => '$1 sửa đổi của tôi',
@@ -3895,7 +3899,7 @@ Xin hãy xác nhận bạn thực sự muốn tạo lại trang này.",
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(ngôn ngữ mặc định)',
-'img-lang-info' => 'Kết xuất hình này trong $1 $2.',
+'img-lang-info' => 'Kết xuất hình này trong $1. $2',
 'img-lang-go' => 'Xem',
 
 # Table pager
@@ -4056,14 +4060,15 @@ hoặc [//www.gnu.org/licenses/old-licenses/gpl-2.0.html đọc nó trực tuy
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath?uselang=vi Đường dẫn kịch bản]',
 
 # Special:Redirect
-'redirect' => 'Đổi hướng đến tập tin, người dùng, hoặc số phiên bản',
+'redirect' => 'Đổi hướng đến tập tin, người dùng, trang, hoặc số phiên bản',
 'redirect-legend' => 'Đổi hướng đến tập tin hoặc trang',
-'redirect-summary' => 'Trang đặc biệt này đổi hướng đến một tập tin (theo tên tập tin được cho vào), trang (theo số phiên bản được cho vào), hoặc trang cá nhân (theo số thành viên). Cách sử dụng: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], hoặc [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Trang đặc biệt này đổi hướng đến một tập tin (theo tên tập tin được cho vào), trang (theo số phiên bản hoặc số trang được cho vào), hoặc trang cá nhân (theo số thành viên). Cách sử dụng: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], hoặc [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Đi',
 'redirect-lookup' => 'Tra cứu:',
 'redirect-value' => 'Giá trị:',
 'redirect-user' => 'Số thành viên',
-'redirect-revision' => 'Phiên bản trang',
+'redirect-page' => 'Số trang',
+'redirect-revision' => 'Số phiên bản trang',
 'redirect-file' => 'Tên tập tin',
 'redirect-not-exists' => 'Không tìm thấy giá trị',
 
@@ -4301,10 +4306,12 @@ Nếu không thì bạn có thể điền biểu mẫu đơn giản ở dưới.
 'expand_templates_input' => 'Mã nguồn để bung:',
 'expand_templates_output' => 'Kết quả',
 'expand_templates_xml_output' => 'Xuất XML',
+'expand_templates_html_output' => 'Mã nguồn HTML thô',
 'expand_templates_ok' => 'Bung',
 'expand_templates_remove_comments' => 'Bỏ các chú thích',
 'expand_templates_remove_nowiki' => 'Bỏ qua thẻ <nowiki> trong kết quả',
 'expand_templates_generate_xml' => 'Xem cây phân tích XML',
+'expand_templates_generate_rawhtml' => 'Hiển thị HTML thô',
 'expand_templates_preview' => 'Xem trước',
 
 );
index f79dc5d..f7ee5cf 100644 (file)
@@ -240,7 +240,7 @@ $messages = array(
 'articlepage' => 'Artiklilehekülg',
 'talk' => 'Arotus',
 'views' => 'Kaemisõq',
-'toolbox' => 'Tüüriistakast',
+'toolbox' => 'Tüüriistaq',
 'userpage' => 'Pruukjalehekülg',
 'projectpage' => 'Tallituslehekülg',
 'imagepage' => 'Näütäq teedüstülehte',
@@ -345,6 +345,7 @@ Olõmanolõvaq tallitusleheküleq ommaq löüdäq leheküle päält [[Special:Sp
 # General errors
 'error' => 'Viga',
 'databaseerror' => 'Teedüskogo viga',
+'databaseerror-error' => 'Viga: $1',
 'laggedslavemode' => 'Hoiatus: Taa lehe pääl pruugi-i ollaq perämäidsi muutmiisi.',
 'readonly' => 'Teedüskogo kirotuskaitsõ all',
 'enterlockreason' => 'Kirodaq lukkupandmisõ põhjus ja ligikaudnõ vallalõvõtmisõ aig',
index 0fe61fc..ff6c503 100644 (file)
@@ -1617,12 +1617,14 @@ $1",
 'recentchanges-label-bot' => ' די רעדאַקטירונג האט אויסגעפירט א באט',
 'recentchanges-label-unpatrolled' => 'די רעדאקטירונג איז נאך נישט נאכגעקוקט',
 'recentchanges-label-plusminus' => 'בלאט גרייס געענדערט מיט דער צאל בייטן',
+'recentchanges-legend-heading' => "'''לעגענדע:'''",
 'recentchanges-legend-newpage' => '(זעט אויך [[Special:NewPages|די רשימה פון נייע בלעטער]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "פֿאלגנד זענען די ענדערונגען זײַט '''$2''' (ביז '''$1''')",
 'rclistfrom' => 'װײַזן נײַע ענדערונגען פֿון $1',
 'rcshowhideminor' => '$1 מינערדיגע ענדערונגען',
 'rcshowhidebots' => '$1 ראבאטן',
-'rcshowhideliu' => '$1 אײַנגעשריבענע באַניצערס',
+'rcshowhideliu' => '$1 אײַנגעשריבענע באַניצער',
 'rcshowhideanons' => '$1 אַנאָנימע באַניצער',
 'rcshowhidepatr' => '$1 פאַטראלירטע ענדערונגען',
 'rcshowhidemine' => '$1 מײַנע רעדאַקטירוננגען',
@@ -2035,6 +2037,7 @@ $1",
 'ninterwikis' => '$1 {{PLURAL:$1|אינטערוויקי|אינטערוויקיס}}',
 'nlinks' => '$1 {{PLURAL:$1|לינק|לינקען}}',
 'nmembers' => '$1 {{PLURAL:$1|בלאט|בלעטער}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|מיטגליד|מיטגלידער}}',
 'nrevisions' => '{{PLURAL:$1|איין רעוויזיע|$1 רעוויזיעס}}',
 'nviews' => '{{PLURAL:$1|איין קוק|$1 קוקן}}',
 'nimagelinks' => 'געניצט אויף $1 {{PLURAL:$1|בלאַט|בלעטער}}',
index 6d4d4db..6902188 100644 (file)
@@ -530,7 +530,7 @@ $messages = array(
 'mytalk' => '讨论',
 'anontalk' => '该IP地址的讨论',
 'navigation' => '导航',
-'and' => '&#32;和',
+'and' => '和',
 
 # Cologne Blue skin
 'qbfind' => '查找',
@@ -823,7 +823,7 @@ $2',
 'gotaccount' => '已经拥有账户?请$1。',
 'gotaccountlink' => '登录',
 'userlogin-resetlink' => '忘记你的登录信息?',
-'userlogin-resetpassword-link' => '忘记您的密码?',
+'userlogin-resetpassword-link' => '忘记密码?',
 'helplogin-url' => 'Help:登录',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|登录帮助]]',
 'userlogin-loggedin' => '你已经以{{GENDER:$1|$1}}的身份登录。使用下面的表格以其他用户的身份登录。',
@@ -1198,6 +1198,8 @@ $2
 'cantcreateaccount-text' => "从该IP地址('''$1''')创建账户已被[[User:$3|$3]]禁止。
 
 $3的理由是''$2''",
+'cantcreateaccount-range-text' => "从该IP地址段'''$1'''的账户创建已被[[User:$3|$3]]禁止,而这也包括了您的IP地址('''$4''')。
+$3给出的原因是“$2”。",
 
 # History pages
 'viewpagelogs' => '查看本页面的日志',
@@ -1301,7 +1303,7 @@ $1",
 ** 潜在毁谤性信息',
 'revdelete-otherreason' => '其他/附加原因:',
 'revdelete-reasonotherlist' => '其他原因',
-'revdelete-edit-reasonlist' => 'ç¼\96è¾\91å\88 é\99¤å\9f\8bç\94±',
+'revdelete-edit-reasonlist' => 'ç¼\96è¾\91å\88 é\99¤å\8e\9få\9b ',
 'revdelete-offender' => '版本作者:',
 
 # Suppression log
@@ -1572,15 +1574,15 @@ $1",
 # Rights
 'right-read' => '阅读页面',
 'right-edit' => '编辑页面',
-'right-createpage' => 'å\88\9b建页é\9d¢ï¼\88é\9d\9e讨论页é\9d¢ï¼\89',
+'right-createpage' => 'å\88\9b建é\9d\9e讨论页é\9d¢',
 'right-createtalk' => '创建讨论页面',
-'right-createaccount' => '创建新用户账户',
-'right-minoredit' => '标记小编辑',
+'right-createaccount' => '创建账户',
+'right-minoredit' => '标记编辑为小编辑',
 'right-move' => '移动页面',
 'right-move-subpages' => '移动页面及其子页面',
 'right-move-rootuserpages' => '移动根用户页面',
 'right-movefile' => '移动文件',
-'right-suppressredirect' => '移动页面时不创建来自来源页面的重定向',
+'right-suppressredirect' => '移动页面时不创建来源页面的重定向',
 'right-upload' => '上传文件',
 'right-reupload' => '覆盖现存文件',
 'right-reupload-own' => '覆盖自己上传的文件',
@@ -1588,55 +1590,55 @@ $1",
 'right-upload_by_url' => '从URL上传文件',
 'right-purge' => '无确认清除页面缓存',
 'right-autoconfirmed' => '不受基于IP的速率限制',
-'right-bot' => '被视为自动过程',
+'right-bot' => '被视为自动程序',
 'right-nominornewtalk' => '不使小编辑在讨论页面引发新信息提示',
-'right-apihighlimits' => '在API查询中使用更高的限制',
+'right-apihighlimits' => '在API查询中使用更高的上限',
 'right-writeapi' => '使用写入API',
 'right-delete' => '删除页面',
 'right-bigdelete' => '删除有大型历史的页面',
 'right-deletelogentry' => '删除和恢复特定的日志项目',
 'right-deleterevision' => '删除和恢复页面的特定版本',
-'right-deletedhistory' => '查看被删除的历史条目,无其相关文字',
-'right-deletedtext' => '查看被删除的版本间的被删除的文字和更改',
+'right-deletedhistory' => '查看被删除的历史项目,不含相关文本',
+'right-deletedtext' => '查看被删除的文本及被删除的版本间差异',
 'right-browsearchive' => '搜索被删除的页面',
 'right-undelete' => '还原页面',
-'right-suppressrevision' => '审查和恢复管理员隐藏的版本',
+'right-suppressrevision' => '审查和恢复管理员隐藏的版本',
 'right-suppressionlog' => '查看非公开日志',
 'right-block' => '阻止其他用户编辑',
-'right-blockemail' => '阻止用户电邮联系',
+'right-blockemail' => '阻止用户发送电子邮件',
 'right-hideuser' => '封禁并隐藏用户名',
-'right-ipblock-exempt' => '避开IP封禁、自动封禁和IP段封禁',
+'right-ipblock-exempt' => '绕过IP封禁、自动封禁和段封禁',
 'right-proxyunbannable' => '避开代理服务器的自动封禁',
 'right-unblockself' => '自我解封',
 'right-protect' => '更改保护级别和编辑受连锁保护的页面',
-'right-editprotected' => '编辑页面保护需要“{{int:protect-level-sysop}}”',
-'right-editsemiprotected' => '编辑页面保护需要“{{int:protect-level-autoconfirmed}}”',
+'right-editprotected' => '编辑保护级别为“{{int:protect-level-sysop}}”的页面',
+'right-editsemiprotected' => '编辑保护级别为“{{int:protect-level-autoconfirmed}}”的页面',
 'right-editinterface' => '编辑用户界面',
 'right-editusercssjs' => '编辑其他用户的CSS和JavaScript文件',
 'right-editusercss' => '编辑其他用户的CSS文件',
 'right-edituserjs' => '编辑其他用户的JavaScript文件',
-'right-editmyusercss' => '编辑你自己的用户CSS文件',
-'right-editmyuserjs' => '编辑你自己的用户JavaScript文件',
-'right-viewmywatchlist' => '查看的监视列表',
-'right-editmywatchlist' => '编辑您的监视列表。请注意即使没有这种权利,某些操作仍将添加页面。',
-'right-viewmyprivateinfo' => '查看你自己的私人数据(如电子邮件地址、真实姓名)',
-'right-editmyprivateinfo' => '编辑你自己的私人数据(如电子邮件地址、真实姓名)',
+'right-editmyusercss' => '编辑的用户CSS文件',
+'right-editmyuserjs' => '编辑的用户JavaScript文件',
+'right-viewmywatchlist' => '查看的监视列表',
+'right-editmywatchlist' => '编辑您的监视列表。请留意即使缺少此权限,某些操作仍将添加页面至监视列表。',
+'right-viewmyprivateinfo' => '查看的私人数据(如电子邮件地址、真实姓名)',
+'right-editmyprivateinfo' => '编辑的私人数据(如电子邮件地址、真实姓名)',
 'right-editmyoptions' => '编辑您的个人设置',
-'right-rollback' => '快速回退最后编辑特定页面的用户的编辑',
+'right-rollback' => '快速回退最后一名用户对特定页面的编辑',
 'right-markbotedits' => '标记回退编辑为机器人编辑',
 'right-noratelimit' => '不受速率限制影响',
 'right-import' => '从其他wiki导入页面',
-'right-importupload' => '从文件上传导入页面',
+'right-importupload' => '通过上传文件导入页面',
 'right-patrol' => '标记他人的编辑为已巡查',
 'right-autopatrol' => '使自己的编辑自动标记为已巡查',
 'right-patrolmarks' => '查看最近更改的巡查标记',
 'right-unwatchedpages' => '查看未受监视页面的列表',
 'right-mergehistory' => '合并页面历史',
-'right-userrights' => '编辑所有用户权限',
-'right-userrights-interwiki' => '编辑其它wiki用户的用户权限',
+'right-userrights' => '编辑所有用户权限',
+'right-userrights-interwiki' => '编辑其它wiki用户的用户权限',
 'right-siteadmin' => '锁定和解锁数据库',
-'right-override-export-depth' => '导出含有链接页面深度为5的页面',
-'right-sendemail' => '电邮联系其他用户',
+'right-override-export-depth' => '导出页面,包括最多5层链接',
+'right-sendemail' => '发送电子邮件给其他用户',
 'right-passwordreset' => '查看密码重置电子邮件',
 
 # Special:Log/newusers
@@ -1702,6 +1704,7 @@ $1",
 'recentchanges-label-bot' => '该编辑由机器人执行',
 'recentchanges-label-unpatrolled' => '该编辑尚未巡查',
 'recentchanges-label-plusminus' => '该页面字节数的前后变化',
+'recentchanges-legend-heading' => "'''说明:'''",
 'recentchanges-legend-newpage' => '(另见[[Special:NewPages|新页面列表]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "下面是'''$2'''之后的更改(最多显示'''$1'''个)。",
@@ -2042,7 +2045,7 @@ $1',
 *常用删除理由
 ** 侵犯版权
 ** 重复文件',
-'filedelete-edit-reasonlist' => 'ç¼\96è¾\91å\88 é\99¤å\9f\8bç\94±',
+'filedelete-edit-reasonlist' => 'ç¼\96è¾\91å\88 é\99¤å\8e\9få\9b ',
 'filedelete-maintenance' => '维护期间文件删除和恢复暂时停用。',
 'filedelete-maintenance-title' => '无法删除文件',
 
@@ -3778,7 +3781,7 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(默认语言)',
-'img-lang-info' => '在$1 $2找到此图像。',
+'img-lang-info' => '在$1找到此图像。$2',
 'img-lang-go' => '去',
 
 # Table pager
@@ -3832,7 +3835,7 @@ $5
 'watchlistedit-raw-removed' => '$1个标题被删除:',
 
 # Watchlist editing tools
-'watchlisttools-view' => '查看关更改',
+'watchlisttools-view' => '查看关更改',
 'watchlisttools-edit' => '查看并编辑监视列表',
 'watchlisttools-raw' => '编辑原始监视列表',
 
@@ -3879,13 +3882,14 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath 脚本路径]',
 
 # Special:Redirect
-'redirect' => '重定向(按文件、用户或版本ID)',
+'redirect' => '重定向(按文件、用户、页面或版本ID)',
 'redirect-legend' => '重定向至文件或页面',
-'redirect-summary' => '本特殊页面可以跳转至一个文件(提供文件名)、页面(提供版本ID)或用户页面(提供数字用户ID)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/revision/328429]]或[[{{#Special:Redirect}}/user/101]]。',
+'redirect-summary' => '本特殊页面可以跳转至一个文件(提供文件名)、页面(提供版本ID或页面ID)或用户页面(提供数字用户ID)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/page/64308]]、[[{{#Special:Redirect}}/revision/328429]]或[[{{#Special:Redirect}}/user/101]]。',
 'redirect-submit' => '提交',
 'redirect-lookup' => '基于:',
 'redirect-value' => '值:',
 'redirect-user' => '用户ID',
+'redirect-page' => '页面ID',
 'redirect-revision' => '页面版本ID',
 'redirect-file' => '文件名',
 'redirect-not-exists' => '没找到相应值',
@@ -4125,10 +4129,12 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 'expand_templates_input' => '输入文本:',
 'expand_templates_output' => '结果:',
 'expand_templates_xml_output' => 'XML输出',
+'expand_templates_html_output' => '原始HTML输出',
 'expand_templates_ok' => '确定',
 'expand_templates_remove_comments' => '移除注释',
 'expand_templates_remove_nowiki' => '在结果中隐藏<nowiki>标签',
 'expand_templates_generate_xml' => '显示XML语法树',
+'expand_templates_generate_rawhtml' => '显示原始HTML',
 'expand_templates_preview' => '预览',
 
 );
index 7294593..c081012 100644 (file)
@@ -1130,6 +1130,8 @@ $2
 'cantcreateaccount-text' => "從這個 IP 位址 (<b>$1</b>) 建立帳號已經被 [[User:$3|$3]] 禁止。
 
 當中被 $3 封禁的原因是 ''$2''",
+'cantcreateaccount-range-text' => "於此IP位址段'''$1'''之賬戶註冊被[[User:$3|$3]]禁止,其亦包括您所使用之IP位址('''$4''')。
+$3所述禁止原因為“$2”。",
 
 # History pages
 'viewpagelogs' => '查詢這個頁面的日誌',
@@ -1641,6 +1643,7 @@ $1",
 'recentchanges-label-bot' => '這次編輯是由機器人進行',
 'recentchanges-label-unpatrolled' => '這次編輯尚未巡查過',
 'recentchanges-label-plusminus' => '更改前後頁面位元組大小的變化',
+'recentchanges-legend-heading' => "'''說明:'''",
 'recentchanges-legend-newpage' => '(另見[[Special:NewPages|新頁面列表]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "下面是自'''$2'''(最多顯示'''$1'''):",
@@ -3744,7 +3747,7 @@ $5
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(預設語言)',
-'img-lang-info' => '於$1 $2呈現此圖像。',
+'img-lang-info' => '於$1呈現此圖像。$2',
 'img-lang-go' => '走',
 
 # Table pager
@@ -3844,13 +3847,14 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath 條目路徑]',
 
 # Special:Redirect
-'redirect' => '重定向檔案、用戶ID或頁面修訂ID',
+'redirect' => '重定向檔案、用戶、頁面或修訂ID',
 'redirect-legend' => '重定向到檔案或頁面',
-'redirect-summary' => '此特殊頁面重定向到檔案(指定的檔案名稱)、頁面 (指定的頁面修訂ID) 或用戶頁面(指定的用戶ID數值)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/revision/328429]]或[[{{#Special:Redirect}}/user/101]]。',
+'redirect-summary' => '此特殊頁面重定向到檔案(請指定檔案名)、頁面(請指定修訂ID或頁面ID)或用戶頁(請指定用戶ID數值)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/page/64308]]、[[{{#Special:Redirect}}/revision/328429]]或[[{{#Special:Redirect}}/user/101]]。',
 'redirect-submit' => '提交',
 'redirect-lookup' => '尋找:',
 'redirect-value' => '值:',
 'redirect-user' => '用戶ID:',
+'redirect-page' => '頁面ID',
 'redirect-revision' => '頁面修訂ID',
 'redirect-file' => '檔案名稱',
 'redirect-not-exists' => '找不到',
@@ -4088,10 +4092,12 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'expand_templates_input' => '輸入文字:',
 'expand_templates_output' => '結果:',
 'expand_templates_xml_output' => 'XML輸出',
+'expand_templates_html_output' => '原始HTML輸出',
 'expand_templates_ok' => '確定',
 'expand_templates_remove_comments' => '移除注釋',
 'expand_templates_remove_nowiki' => '在結果中隱藏<nowiki>標記',
 'expand_templates_generate_xml' => '顯示XML語法樹',
+'expand_templates_generate_rawhtml' => '顯示原始HTML',
 'expand_templates_preview' => '預覽',
 
 );
index c2aede0..1f4d0cd 100644 (file)
@@ -2,7 +2,8 @@
 /**
  * Parse and evaluate a plural rule.
  *
- * http://unicode.org/reports/tr35/#Language_Plural_Rules
+ * UTS #35 Revision 33
+ * http://www.unicode.org/reports/tr35/tr35-33/tr35-numbers.html#Language_Plural_Rules
  *
  * @author Niklas Laxstrom, Tim Starling
  *
@@ -63,11 +64,41 @@ class CLDRPluralRuleEvaluator {
         * Evaluate a compiled set of rules returned by compile(). Do not allow
         * the user to edit the compiled form, or else PHP errors may result.
         *
-        * @param int The number to be evaluated against the rules
+        * @param string The number to be evaluated against the rules, in English, or it
+        *   may be a type convertible to string.
         * @param array The associative array of plural rules in pluralform => rule format.
         * @return int The index of the plural form which passed the evaluation
         */
        public static function evaluateCompiled( $number, array $rules ) {
+               // Calculate the values of the operand symbols
+               $number = strval( $number );
+               if ( !preg_match( '/^ -? ( ([0-9]+) (?: \. ([0-9]+) )? )$/x', $number,  $m ) ) {
+                       wfDebug( __METHOD__.': invalid number input, returning "other"' );
+                       return count( $rules );
+               }
+               if ( !isset( $m[3] ) ) {
+                       $operandSymbols = array(
+                               'n' => intval( $m[1] ),
+                               'i' => intval( $m[1] ),
+                               'v' => 0,
+                               'w' => 0,
+                               'f' => 0,
+                               't' => 0
+                       );
+               } else {
+                       $absValStr = $m[1];
+                       $intStr = $m[2];
+                       $fracStr = $m[3];
+                       $operandSymbols = array(
+                               'n' => floatval( $absValStr ),
+                               'i' => intval( $intStr ),
+                               'v' => strlen( $fracStr ),
+                               'w' => strlen( rtrim( $fracStr, '0' ) ),
+                               'f' => intval( $fracStr ),
+                               't' => intval( rtrim( $fracStr, '0' ) ),
+                       );
+               }
+
                // The compiled form is RPN, with tokens strictly delimited by
                // spaces, so this is a simple RPN evaluator.
                foreach ( $rules as $i => $rule ) {
@@ -76,8 +107,8 @@ class CLDRPluralRuleEvaluator {
                        $nine = ord( '9' );
                        foreach ( StringUtils::explode( ' ', $rule ) as $token ) {
                                $ord = ord( $token );
-                               if ( $token === 'n' ) {
-                                       $stack[] = $number;
+                               if ( isset( $operandSymbols[$token] ) ) {
+                                       $stack[] = $operandSymbols[$token];
                                } elseif ( $ord >= $zero && $ord <= $nine ) {
                                        $stack[] = intval( $token );
                                } else {
@@ -91,8 +122,8 @@ class CLDRPluralRuleEvaluator {
                                return $i;
                        }
                }
-               // None of the provided rules match. The number belongs to caregory
-               // 'other' which comes last.
+               // None of the provided rules match. The number belongs to category
+               // 'other', which comes last.
                return count( $rules );
        }
 
@@ -251,35 +282,35 @@ class CLDRPluralRuleEvaluator_Range {
  */
 class CLDRPluralRuleConverter {
        /**
-        * The rule
+        * The input string
         *
         * @var string
         */
        public $rule;
 
        /**
-        * The position
+        * The current position
         *
         * @var int
         */
        public $pos;
 
        /**
-        * The last position possible
+        * The past-the-end position
         *
         * @var int
         */
        public $end;
 
        /**
-        * The operators
+        * The operator stack
         *
         * @var array
         */
        public $operators = array();
 
        /**
-        * The operands
+        * The operand stack
         *
         * @var array
         */
@@ -311,14 +342,19 @@ class CLDRPluralRuleConverter {
 
        /**
         * Same for digits. Note that the grammar given in UTS #35 doesn't allow
-        * negative numbers or decimals.
+        * negative numbers or decimal separators.
         */
        const NUMBER_CLASS = '0123456789';
 
+       /**
+        * A character list of symbolic operands.
+        */
+       const OPERAND_SYMBOLS = 'nivwft';
+
        /**
         * An anchored regular expression which matches a word at the current offset.
         */
-       const WORD_REGEX = '/[a-zA-Z]+/A';
+       const WORD_REGEX = '/[a-zA-Z@]+/A';
 
        /**
         * Convert a rule to RPN. This is the only public entry point.
@@ -425,17 +461,19 @@ class CLDRPluralRuleConverter {
                        return $token;
                }
 
-               // Comma
-               if ( $this->rule[$this->pos] === ',' ) {
-                       $token = $this->newOperator( ',', $this->pos, 1 );
-                       $this->pos ++;
+               // Two-character operators
+               $op2 = substr( $this->rule, $this->pos, 2 );
+               if ( $op2 === '..' || $op2 === '!=' ) {
+                       $token = $this->newOperator( $op2, $this->pos, 2 );
+                       $this->pos += 2;
                        return $token;
                }
 
-               // Dot dot
-               if ( substr( $this->rule, $this->pos, 2 ) === '..' ) {
-                       $token = $this->newOperator( '..', $this->pos, 2 );
-                       $this->pos += 2;
+               // Single-character operators
+               $op1 = $this->rule[$this->pos];
+               if ( $op1 === ',' || $op1 === '=' || $op1 === '%' ) {
+                       $token = $this->newOperator( $op1, $this->pos, 1 );
+                       $this->pos ++;
                        return $token;
                }
 
@@ -474,13 +512,21 @@ class CLDRPluralRuleConverter {
                        return $token;
                }
 
-               // The special numerical keyword "n"
-               if ( $word1 === 'n' ) {
-                       $token = $this->newNumber( 'n', $this->pos );
+               // The single-character operand symbols
+               if ( strpos( self::OPERAND_SYMBOLS, $word1 ) !== false ) {
+                       $token = $this->newNumber( $word1, $this->pos );
                        $this->pos ++;
                        return $token;
                }
 
+               // Samples
+               if ( $word1 === '@integer' || $word1 === '@decimal' ) {
+                       // Samples are like comments, they have no effect on rule evaluation.
+                       // They run from the first sample indicator to the end of the string.
+                       $this->pos = $this->end;
+                       return false;
+               }
+
                $this->error( 'unrecognised word' );
        }
 
@@ -624,6 +670,15 @@ class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment
                'r' => 'range',
        );
 
+       /**
+        * Map for converting the new operators introduced in Rev 33 to the old forms
+        */
+       static $aliasMap = array(
+               '%' => 'mod',
+               '!=' => 'not-in',
+               '=' => 'in'
+       );
+
        /**
         * Initialize a new instance of a CLDRPluralRuleConverter_Operator object
         *
@@ -634,6 +689,9 @@ class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment
         */
        function __construct( $parser, $name, $pos, $length ) {
                parent::__construct( $parser, $pos, $length );
+               if ( isset( self::$aliasMap[$name] ) ) {
+                       $name = self::$aliasMap[$name];
+               }
                $this->name = $name;
        }
 
diff --git a/maintenance/generateJsonI18n.php b/maintenance/generateJsonI18n.php
new file mode 100644 (file)
index 0000000..554e0a8
--- /dev/null
@@ -0,0 +1,167 @@
+<?php
+
+/**
+ * Convert a PHP messages file to a set of JSON messages files.
+ *
+ * Usage:
+ *    php generateJsonI18n.php ExtensionName.i18n.php i18n/
+ *
+ * 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
+ * @ingroup Maintenance
+ */
+
+require_once __DIR__ . '/Maintenance.php';
+
+/**
+ * Maintenance script to generate JSON i18n files from a PHP i18n file.
+ *
+ * @ingroup Maintenance
+ */
+class GenerateJsonI18n extends Maintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->mDescription = "Build JSON messages files from a PHP messages file";
+               $this->addArg( 'phpfile', 'PHP file defining a $messages array', true );
+               $this->addArg( 'jsondir', 'Directory to write JSON files to', true );
+               $this->addOption( 'langcode', 'Language code; only needed for converting core i18n files',
+                       false, true );
+       }
+
+       public function execute() {
+               $phpfile = $this->getArg( 0 );
+               $jsondir = $this->getArg( 1 );
+
+               if ( !is_readable( $phpfile ) ) {
+                       $this->error( "Error reading $phpfile\n", 1 );
+               }
+               include $phpfile;
+               $phpfileContents = file_get_contents( $phpfile );
+
+               if ( !isset( $messages ) ) {
+                       $this->error( "PHP file $phpfile does not define \$messages array\n", 1 );
+               }
+
+               $extensionStyle = true;
+               if ( !isset( $messages['en'] ) || !is_array( $messages['en'] ) ) {
+                       if ( !$this->hasOption( 'langcode' ) ) {
+                               $this->error( "PHP file $phpfile does not set language codes, --langcode " .
+                                       "is required.\n", 1 );
+                       }
+                       $extensionStyle = false;
+                       $langcode = $this->getOption( 'langcode' );
+                       $messages = array( $langcode => $messages );
+               } else if ( $this->hasOption( 'langcode' ) ) {
+                       $this->output( "Warning: --langcode option set but will not be used.\n" );
+               }
+
+               foreach ( $messages as $langcode => $langmsgs ) {
+                       $authors = $this->getAuthorsFromComment( $this->findCommentBefore(
+                               $extensionStyle ? "\$messages['$langcode'] =" : '$messages =',
+                               $phpfileContents
+                       ) );
+                       // Make sure the @metadata key is the first key in the output
+                       $langmsgs = array_merge(
+                               array( '@metadata' => array( 'authors' => $authors ) ),
+                               $langmsgs
+                       );
+
+                       $jsonfile = "$jsondir/$langcode.json";
+                       $success = file_put_contents(
+                               $jsonfile,
+                               FormatJson::encode( $langmsgs, true, FormatJson::ALL_OK )
+                       );
+                       if ( $success === false ) {
+                               $this->error( "FAILED to write $jsonfile", 1 );
+                       }
+                       $this->output( "$jsonfile\n" );
+               }
+
+               if ( !$this->hasOption( 'langcode' ) ) {
+                       $shim = $this->doShim( $jsondir );
+                       file_put_contents( $phpfile, $shim );
+               }
+
+               $this->output( "All done.\n" );
+               $this->output( "Also add \$wgMessagesDirs['YourExtension'] = __DIR__ . /i18n';\n" );
+       }
+
+       protected function doShim( $jsondir ) {
+               $shim = <<<'PHP'
+<?php
+$messages = array();
+$GLOBALS['wgHooks']['LocalisationCacheRecache'][] = function ( $cache, $code, &$cachedData ) {
+       $codeSequence = array_merge( array( $code ), $cachedData['fallbackSequence'] );
+       foreach ( $codeSequence as $csCode ) {
+               $fileName = __DIR__ . "/{{OUT}}/$csCode.json";
+               if ( is_readable( $fileName ) ) {
+                       $data = FormatJson::decode( file_get_contents( $fileName ), true );
+                       foreach ( $data as $key => $unused ) {
+                               if ( $key === '' || $key[0] === '@' ) {
+                                       unset( $data[$key] );
+                               }
+                       }
+                       $cachedData['messages'] = array_merge( $data, $cachedData['messages'] );
+               }
+
+               $cachedData['deps'][] = new FileDependency( $fileName );
+       }
+       return true;
+};
+
+PHP;
+
+               $jsondir = str_replace('\\', '/', $jsondir );
+               $shim = str_replace( '{{OUT}}', $jsondir, $shim );
+               return $shim;
+       }
+
+       /**
+        * Find the documentation comment immediately before a given search string
+        * @param string $needle String to search for
+        * @param string $haystack String to search in
+        * @return string Substring of $haystack starting at '/**' ending right before $needle, or empty
+        */
+       protected function findCommentBefore( $needle, $haystack ) {
+               $needlePos = strpos( $haystack, $needle );
+               if ( $needlePos === false ) {
+                       return '';
+               }
+               // Need to pass a negative offset to strrpos() so it'll search backwards from the
+               // offset
+               $startPos = strrpos( $haystack, '/**', $needlePos - strlen( $haystack ) );
+               if ( $startPos === false ) {
+                       return '';
+               }
+
+               return substr( $haystack, $startPos, $needlePos - $startPos );
+       }
+
+       /**
+        * Get an array of author names from a documentation comment containing @author declarations.
+        * @param string $comment Documentation comment
+        * @return Array of author names (strings)
+        */
+       protected function getAuthorsFromComment( $comment ) {
+               $matches = null;
+               preg_match_all( '/@author (.*?)$/m', $comment, $matches );
+               return $matches && $matches[1] ? $matches[1] : array();
+       }
+}
+
+$maintClass = "GenerateJsonI18n";
+require_once RUN_MAINTENANCE_IF_MAIN;
index dab977e..5e463b2 100644 (file)
@@ -800,6 +800,7 @@ $wgMessageStructure = array(
        'cantcreateaccount' => array(
                'cantcreateaccounttitle',
                'cantcreateaccount-text',
+               'cantcreateaccount-range-text',
        ),
        'history' => array(
                'viewpagelogs',
@@ -3686,6 +3687,7 @@ $wgMessageStructure = array(
                'redirect-lookup',
                'redirect-value',
                'redirect-user',
+               'redirect-page',
                'redirect-revision',
                'redirect-file',
                'redirect-not-exists',
index 5bf04c6..a63c45b 100644 (file)
@@ -46,8 +46,8 @@ class MergeMessageFileList extends Maintenance {
                $this->addOption( 'list-file', 'A file containing a list of extension setup files, one per line.', false, true );
                $this->addOption( 'extensions-dir', 'Path where extensions can be found.', false, true );
                $this->addOption( 'output', 'Send output to this file (omit for stdout)', false, true );
-               $this->mDescription = 'Merge $wgExtensionMessagesFiles from various extensions to produce a ' .
-                       'single array containing all message files.';
+               $this->mDescription = 'Merge $wgExtensionMessagesFiles and $wgMessagesDirs from ' .
+                       ' various extensions to produce a single file listing all message files and dirs.';
        }
 
        public function execute() {
@@ -158,7 +158,8 @@ $s =
        "<" . "?php\n" .
        "## This file is generated by mergeMessageFileList.php. Do not edit it directly.\n\n" .
        "if ( defined( 'MW_NO_EXTENSION_MESSAGES' ) ) return;\n\n" .
-       '$wgExtensionMessagesFiles = ' . var_export( $wgExtensionMessagesFiles, true ) . ";\n\n";
+       '$wgExtensionMessagesFiles = ' . var_export( $wgExtensionMessagesFiles, true ) . ";\n\n" .
+       '$wgMessagesDirs = ' . var_export( $wgMessagesDirs, true ) . ";\n\n";
 
 $dirs = array(
        $IP,
index 06ccccb..9b4d194 100644 (file)
@@ -78,10 +78,6 @@ class NextJobDB extends Maintenance {
                        }
 
                        list( $type, $db ) = $candidates[mt_rand( 0, count( $candidates ) - 1 )];
-                       if ( JobQueueGroup::singleton( $db )->isQueueDeprioritized( $type ) ) {
-                               $pendingDBs[$type] = array_diff( $pendingDBs[$type], array( $db ) );
-                               $again = true;
-                       }
                } while ( $again );
 
                if ( $this->hasOption( 'types' ) ) {
index 8a4a5ab..deea5ed 100644 (file)
@@ -64,12 +64,12 @@ class RunJobs extends Maintenance {
                                }
                        }
                }
+
+               $type = $this->getOption( 'type', false );
                $maxJobs = $this->getOption( 'maxjobs', false );
                $maxTime = $this->getOption( 'maxtime', false );
                $startTime = time();
-               $type = $this->getOption( 'type', false );
                $wgTitle = Title::newFromText( 'RunJobs.php' );
-               $jobsRun = 0; // counter
 
                $group = JobQueueGroup::singleton();
                // Handle any required periodic queue maintenance
@@ -78,12 +78,21 @@ class RunJobs extends Maintenance {
                        $this->runJobsLog( "Executed $count periodic queue task(s)." );
                }
 
-               $flags = JobQueueGroup::USE_CACHE | JobQueueGroup::USE_PRIORITY;
+               $backoffs = $this->loadBackoffs(); // map of (type => UNIX expiry)
+               $startingBackoffs = $backoffs; // avoid unnecessary writes
+               $backoffExpireFunc = function( $t ) { return $t > time(); };
+
+               $jobsRun = 0; // counter
+               $flags = JobQueueGroup::USE_CACHE;
                $lastTime = time(); // time since last slave check
                do {
-                       $job = ( $type === false )
-                               ? $group->pop( JobQueueGroup::TYPE_DEFAULT, $flags )
-                               : $group->pop( $type ); // job from a single queue
+                       if ( $type === false ) {
+                               $backoffs = array_filter( $backoffs, $backoffExpireFunc );
+                               $blacklist = array_keys( $backoffs );
+                               $job = $group->pop( JobQueueGroup::TYPE_DEFAULT, $flags, $blacklist );
+                       } else {
+                               $group->pop( $type ); // job from a single queue
+                       }
                        if ( $job ) { // found a job
                                ++$jobsRun;
                                $this->runJobsLog( $job->toString() . " STARTING" );
@@ -117,6 +126,14 @@ class RunJobs extends Maintenance {
                                        $this->runJobsLog( $job->toString() . " t=$timeMs good" );
                                }
 
+                               // Back off of certain jobs for a while
+                               $ttw = $this->getBackoffTimeToWait( $job );
+                               if ( $ttw > 0 ) {
+                                       $jType = $job->getType();
+                                       $backoffs[$jType] = isset( $backoffs[$jType] ) ? $backoffs[$jType] : 0;
+                                       $backoffs[$jType] = max( $backoffs[$jType], time() + $ttw );
+                               }
+
                                // Break out if we hit the job count or wall time limits...
                                if ( $maxJobs && $jobsRun >= $maxJobs ) {
                                        break;
@@ -139,10 +156,87 @@ class RunJobs extends Maintenance {
                                $this->assertMemoryOK();
                        }
                } while ( $job ); // stop when there are no jobs
+               // Sync the persistent backoffs for the next runJobs.php pass
+               $backoffs = array_filter( $backoffs, $backoffExpireFunc );
+               if ( $backoffs !== $startingBackoffs ) {
+                       $this->syncBackoffs( $backoffs );
+               }
+       }
+
+       /**
+        * @param Job $job
+        * @return integer Seconds for this runner to avoid doing more jobs of this type
+        * @see $wgJobBackoffThrottling
+        */
+       private function getBackoffTimeToWait( Job $job ) {
+               global $wgJobBackoffThrottling;
+
+               if ( !isset( $wgJobBackoffThrottling[$job->getType()] ) ) {
+                       return 0; // not throttled
+               }
+               $itemsPerSecond = $wgJobBackoffThrottling[$job->getType()];
+               if ( $itemsPerSecond <= 0 ) {
+                       return 0; // not throttled
+               }
+
+               $seconds = 0;
+               if ( $job->workItemCount() > 0 ) {
+                       $seconds = floor( $job->workItemCount() / $itemsPerSecond );
+                       $remainder = $job->workItemCount() % $itemsPerSecond;
+                       $seconds += ( mt_rand( 1, $itemsPerSecond ) <= $remainder ) ? 1 : 0;
+               }
+
+               return (int)$seconds;
+       }
+
+       /**
+        * Get the previous backoff expiries from persistent storage
+        *
+        * @return array Map of (job type => backoff expiry timestamp)
+        */
+       private function loadBackoffs() {
+               $section = new ProfileSection( __METHOD__ );
+
+               $backoffs = array();
+               $file = wfTempDir() . '/mw-runJobs-backoffs.json';
+               if ( is_file( $file ) ) {
+                       $handle = fopen( $file, 'rb' );
+                       flock( $handle, LOCK_SH );
+                       $content = stream_get_contents( $handle );
+                       flock( $handle, LOCK_UN );
+                       fclose( $handle );
+                       $backoffs = json_decode( $content, true ) ?: array();
+               }
+
+               return $backoffs;
+       }
+
+       /**
+        * Merge the current backoff expiries from persistent storage
+        *
+        * @param array $backoffs Map of (job type => backoff expiry timestamp)
+        */
+       private function syncBackoffs( array $backoffs ) {
+               $section = new ProfileSection( __METHOD__ );
+
+               $file = wfTempDir() . '/mw-runJobs-backoffs.json';
+               $handle = fopen( $file, 'wb+' );
+               flock( $handle, LOCK_EX );
+               $content = stream_get_contents( $handle );
+               $cBackoffs = json_decode( $content, true ) ?: array();
+               foreach ( $backoffs as $type => $timestamp ) {
+                       $cBackoffs[$type] = isset( $cBackoffs[$type] ) ? $cBackoffs[$type] : 0;
+                       $cBackoffs[$type] = max( $cBackoffs[$type], $backoffs[$type] );
+               }
+               ftruncate( $handle, 0 );
+               fwrite( $handle, json_encode( $backoffs ) );
+               flock( $handle, LOCK_UN );
+               fclose( $handle );
        }
 
        /**
-        * Make sure that this script is not too close to the memory usage limit
+        * Make sure that this script is not too close to the memory usage limit.
+        * It is better to die in between jobs than OOM right in the middle of one.
         * @throws MWException
         */
        private function assertMemoryOK() {
@@ -151,7 +245,7 @@ class RunJobs extends Maintenance {
                        $m = array();
                        if ( preg_match( '!^(\d+)(k|m|g|)$!i', ini_get( 'memory_limit' ), $m ) ) {
                                list( , $num, $unit ) = $m;
-                               $conv = array( 'g' => 1024 * 1024 * 1024, 'm' => 1024 * 1024, 'k' => 1024, '' => 1 );
+                               $conv = array( 'g' => 1073741824, 'm' => 1048576, 'k' => 1024, '' => 1 );
                                $maxBytes = $num * $conv[strtolower( $unit )];
                        } else {
                                $maxBytes = 0;
index afd7c74..5e21130 100644 (file)
@@ -56,14 +56,16 @@ class ShowJobs extends Maintenance {
                } elseif ( $this->hasOption( 'group' ) ) {
                        foreach ( $group->getQueueTypes() as $type ) {
                                $queue = $group->get( $type );
+                               $delayed = $queue->getDelayedCount();
                                $pending = $queue->getSize();
                                $claimed = $queue->getAcquiredCount();
                                $abandoned = $queue->getAbandonedCount();
                                $active = max( 0, $claimed - $abandoned );
-                               if ( ( $pending + $claimed ) > 0 ) {
+                               if ( ( $pending + $claimed + $delayed ) > 0 ) {
                                        $this->output(
                                                "{$type}: $pending queued; " .
-                                               "$claimed claimed ($active active, $abandoned abandoned)\n"
+                                               "$claimed claimed ($active active, $abandoned abandoned); " .
+                                               "$delayed delayed\n"
                                        );
                                }
                        }
diff --git a/resources/Makefile b/resources/Makefile
new file mode 100644 (file)
index 0000000..4de5c2f
--- /dev/null
@@ -0,0 +1,9 @@
+kss: nodecheck
+# FIXME: Use more up-to-date Ruby version
+       @node_modules/.bin/kss-node mediawiki.ui mediawiki.ui/docs -l mediawiki.ui/vector.less -t styleguide-template
+       @echo Opening the generated style guide...
+       @command -v xdg-open >/dev/null 2>&1 || { open ${PWD}/mediawiki.ui/docs/index.html; exit 1; }
+       @xdg-open ${PWD}/mediawiki.ui/docs/index.html
+
+nodecheck:
+       @scripts/nodecheck.sh
diff --git a/resources/README.txt b/resources/README.txt
new file mode 100644 (file)
index 0000000..d91bf2a
--- /dev/null
@@ -0,0 +1,4 @@
+The Makefile, package.json, scripts, styleguide-template, and
+mediawiki.ui/styleguide.md files and directories in here support the automatic
+generation of CSS documentation from the source LESS files using kss for
+node.js, https://github.com/kneath/kss
index bf7fe8d..68dc984 100644 (file)
@@ -50,6 +50,59 @@ return array(
        // Scripts for the dynamic language specific data, like grammar forms.
        'mediawiki.language.data' => array( 'class' => 'ResourceLoaderLanguageDataModule' ),
 
+       /**
+        * Common skin styles, grouped into three graded levels.
+        *
+        * Level 1 "elements":
+        *     The base level that only contains the most basic of common skin styles.
+        *     Only styles for single elements are included, no styling for complex structures like the TOC
+        *     is present. This level is for skins that want to implement the entire style of even content area
+        *     structures like the TOC themselves.
+        *
+        * Level 2 "content":
+        *     The most commonly used level for skins implemented from scratch. This level includes all the single
+        *     element styles from "elements" as well as styles for complex structures such as the TOC that are output
+        *     in the content area by MediaWiki rather than the skin. Essentially this is the common level that lets
+        *     skins leave the style of the content area as it is normally styled, while leaving the rest of the skin
+        *     up to the skin implementation.
+        *
+        * Level 3 "interface":
+        *     The highest level, this stylesheet contains extra common styles for classes like .firstHeading, #contentSub,
+        *     et cetera which are not outputted by MediaWiki but are common to skins like MonoBook, Vector, etc...
+        *     Essentially this level is for styles that are common to MonoBook clones. And since practically every skin
+        *     that currently exists within core is a MonoBook clone, all our core skins currently use this level.
+        *
+        * These modules are typically loaded by addModuleStyles which has absolutely no concept of dependency
+        * management. As a result the skins.common.* modules contain duplicate stylesheet references instead of
+        * setting 'dependencies' to the lower level the module is based on. For this reason avoid including multiple
+        * skins.common.* modules into your skin as this will result in duplicate css.
+        */
+       'skins.common.elements' => array(
+               'styles' => array(
+                       'common/commonElements.css' => array( 'media' => 'screen' ),
+               ),
+               'remoteBasePath' => $GLOBALS['wgStylePath'],
+               'localBasePath' => $GLOBALS['wgStyleDirectory'],
+       ),
+       'skins.common.content' => array(
+               'styles' => array(
+                       'common/commonElements.css' => array( 'media' => 'screen' ),
+                       'common/commonContent.css' => array( 'media' => 'screen' ),
+               ),
+               'remoteBasePath' => $GLOBALS['wgStylePath'],
+               'localBasePath' => $GLOBALS['wgStyleDirectory'],
+       ),
+       'skins.common.interface' => array(
+               // Used in the web installer. Test it after modifying this definition!
+               'styles' => array(
+                       'common/commonElements.css' => array( 'media' => 'screen' ),
+                       'common/commonContent.css' => array( 'media' => 'screen' ),
+                       'common/commonInterface.css' => array( 'media' => 'screen' ),
+               ),
+               'remoteBasePath' => $GLOBALS['wgStylePath'],
+               'localBasePath' => $GLOBALS['wgStyleDirectory'],
+       ),
+
        /**
         * Skins
         * Be careful not to add 'scripts' to these modules,
@@ -76,6 +129,7 @@ return array(
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
+       // FIXME: Remove in favour of skins.monobook.styles when cache expires
        'skins.monobook' => array(
                'styles' => array(
                        'common/commonElements.css' => array( 'media' => 'screen' ),
@@ -86,8 +140,8 @@ return array(
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
+       // FIXME: Remove in favour of skins.vector.styles when cache expires
        'skins.vector' => array(
-               // Used in the web installer. Test it after modifying this definition!
                'styles' => array(
                        'common/commonElements.css' => array( 'media' => 'screen' ),
                        'common/commonContent.css' => array( 'media' => 'screen' ),
@@ -97,13 +151,17 @@ return array(
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
-       'skins.vector.beta' => array(
-               // Keep in sync with skins.vector
+       'skins.vector.styles' => array(
+               // Used in the web installer. Test it after modifying this definition!
                'styles' => array(
-                       'common/commonElements.css' => array( 'media' => 'screen' ),
-                       'common/commonContent.css' => array( 'media' => 'screen' ),
-                       'common/commonInterface.css' => array( 'media' => 'screen' ),
-                       'vector/styles-beta.less',
+                       'vector/styles.less',
+               ),
+               'remoteBasePath' => $GLOBALS['wgStylePath'],
+               'localBasePath' => $GLOBALS['wgStyleDirectory'],
+       ),
+       'skins.monobook.styles' => array(
+               'styles' => array(
+                       'monobook/main.css' => array( 'media' => 'screen' ),
                ),
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
@@ -1074,28 +1132,39 @@ return array(
                        'mediawiki.util',
                ),
        ),
-       'mediawiki.special.userlogin' => array(
+       'mediawiki.special.userlogin.common.styles' => array(
                'styles' => array(
-                       'resources/mediawiki.special/mediawiki.special.vforms.css',
-                       'resources/mediawiki.special/mediawiki.special.userLogin.css',
+                       'resources/mediawiki.special/mediawiki.special.userlogin.common.css',
                ),
                'position' => 'top',
        ),
-       'mediawiki.special.createaccount' => array(
+       'mediawiki.special.userlogin.signup.styles' => array(
                'styles' => array(
-                       'resources/mediawiki.special/mediawiki.special.vforms.css',
-                       'resources/mediawiki.special/mediawiki.special.createAccount.css',
+                       'resources/mediawiki.special/mediawiki.special.userlogin.signup.css',
                ),
+               'position' => 'top',
+       ),
+       'mediawiki.special.userlogin.login.styles' => array(
+               'styles' => array(
+                       'resources/mediawiki.special/mediawiki.special.userlogin.login.css',
+               ),
+               'position' => 'top',
        ),
-       'mediawiki.special.createaccount.js' => array(
-               'scripts' => 'resources/mediawiki.special/mediawiki.special.createAccount.js',
+       'mediawiki.special.userlogin.common.js' => array(
+               'scripts' => array(
+                       'resources/mediawiki.special/mediawiki.special.userlogin.common.js',
+               ),
                'messages' => array(
                        'createacct-captcha',
+                       'createacct-imgcaptcha-ph',
+               ),
+       ),
+       'mediawiki.special.userlogin.signup.js' => array(
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.userlogin.signup.js',
+               'messages' => array(
                        'createacct-emailrequired',
-                       'createacct-imgcaptcha-ph'
                ),
                'dependencies' => 'mediawiki.jqueryMsg',
-               'position' => 'top',
        ),
        'mediawiki.special.javaScriptTest' => array(
                'scripts' => 'resources/mediawiki.special/mediawiki.special.javaScriptTest.js',
index c5cd61e..664bf89 100644 (file)
                // TODO: This should use the action=parse API instead of loading the entire page,
                // although that requires figuring out how to convert that raw data into proper HTML.
                $previewDataHolder.load( targetUrl + ' ' + copySelectors.join( ',' ), postData, function () {
-                       var i, $from;
+                       var i, $from, $next, $parent;
 
                        // Copy the contents of the specified elements from the loaded page to the real page.
                        // Also copy their class attributes.
                        for ( i = 0; i < copySelectors.length; i++ ) {
                                $from = $previewDataHolder.find( copySelectors[i] );
 
-                               $( copySelectors[i] )
-                                       .empty()
-                                       .append( $from.contents() )
-                                       .attr( 'class', $from.attr( 'class' ) );
+                               if ( copySelectors[i] === '#wikiPreview' ) {
+                                       $next = $wikiPreview.next();
+                                       // If there is no next node, use parent instead.
+                                       // Only query parent if needed, false otherwise.
+                                       $parent = !$next.length && $wikiPreview.parent();
+
+                                       $wikiPreview
+                                               .detach()
+                                               .empty()
+                                               .append( $from.contents() )
+                                               .attr( 'class', $from.attr( 'class' ) );
+
+                                       mw.hook( 'wikipage.content' ).fire( $wikiPreview );
+
+                                       // Reattach
+                                       if ( $parent ) {
+                                               $parent.append( $wikiPreview );
+                                       } else {
+                                               $next.before( $wikiPreview );
+                                       }
+
+                               } else {
+                                       $( copySelectors[i] )
+                                               .empty()
+                                               .append( $from.contents() )
+                                               .attr( 'class', $from.attr( 'class' ) );
+                               }
                        }
 
                        // Deprecated: Use mw.hook instead
                        $( mw ).trigger( 'LivePreviewDone', [copySelectors] );
 
-                       mw.hook( 'wikipage.content' ).fire( $wikiPreview );
-
                        $spinner.remove();
                        $copyElements.animate( {
                                opacity: 1
diff --git a/resources/mediawiki.special/mediawiki.special.createAccount.css b/resources/mediawiki.special/mediawiki.special.createAccount.css
deleted file mode 100644 (file)
index 11d00e7..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Disable the underline that Vector puts on h2 headings, and bold them. */
-.mw-ui-container h2 {
-       border: 0;
-       font-weight: bold;
-}
-
-/**** shuffled CAPTCHA ****/
-#wpCaptchaWord {
-       margin-top: 6px;
-}
-
-.mw-createacct-captcha-container {
-       background-color: #f8f8f8;
-       border: 1px solid #c9c9c9;
-       padding: 10px;
-       text-align: center;
-}
-
-.mw-createacct-captcha-assisted {
-       display: block;
-       margin-top: 0.5em;
-}
-
-/* Put a border around the fancycaptcha-image-container. */
-.mw-createacct-captcha-and-reload {
-       border: 1px solid #c9c9c9;
-       display: table-cell; /* Other display formats end up too wide */
-       width: 270px;
-       background-color: #FFF;
-}
-
-/* Make the fancycaptcha-image-container full-width within its parent.  */
-.fancycaptcha-image-container
-{
-       width: 100%;
-}
-
-/**** Benefits column CSS to the right (if it fits) of the form. ****/
-.mw-ui-container #userloginForm {
-       float: left;
-}
-
-div.mw-createacct-benefits-container {
-       /* Keeps this column compact and close to the form, but tends to squish contents. */
-       float: left;
-}
-
-div.mw-createacct-benefits-container h2 {
-       margin-bottom: 30px;
-}
-
-.mw-number-text.icon-edits {
-       /* @embed */
-       background: url(images/icon-edits.png) no-repeat left center;
-}
-
-.mw-number-text.icon-pages {
-       /* @embed */
-       background: url(images/icon-pages.png) no-repeat left center;
-}
-
-.mw-number-text.icon-contributors {
-       /* @embed */
-       background: url(images/icon-contributors.png) no-repeat left center;
-}
-
-/* Special font for numbers in benefits*/
-div.mw-number-text h3 {
-       top: 0;
-       margin: 0;
-       padding: 0;
-       color: #252525;
-       font-family: 'Georgia', serif;
-       font-weight: normal;
-       font-size: 2.2em;
-       line-height: 1.2;
-       text-align: center;
-}
-
-/* Contains a number and explanatory text, with space for an icon */
-div.mw-number-text {
-       display: block;
-       font-size: 1.2em;
-       color: #444;
-       margin-top: 1em;
-       padding: 0 0 0 95px; /* 80px wide icon plus "margin" */
-       min-height: 75px; /* matches max icon height, ensures icon emblem is visible */
-       text-align: center;
-}
diff --git a/resources/mediawiki.special/mediawiki.special.createAccount.js b/resources/mediawiki.special/mediawiki.special.createAccount.js
deleted file mode 100644 (file)
index 609b2dd..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/**
- * JavaScript for Create account form (Special:UserLogin?type=signup).
- */
-( function ( mw, $ ) {
-       // When sending password by email, hide the password input fields.
-       // This function doesn't need to be loaded early by ResourceLoader, but is tiny.
-       function hidePasswordOnEmail() {
-               // Always required if checked, otherwise it depends, so we use the original
-               var $emailLabel = $( 'label[for="wpEmail"]' ),
-                       originalText = $emailLabel.text(),
-                       requiredText = mw.message( 'createacct-emailrequired' ).text(),
-                       $createByMailCheckbox = $( '#wpCreateaccountMail' ),
-                       $beforePwds = $( '.mw-row-password:first' ).prev(),
-                       $pwds;
-
-               function updateForCheckbox() {
-                       var checked = $createByMailCheckbox.prop( 'checked' );
-                       if ( checked ) {
-                               $pwds = $( '.mw-row-password' ).detach();
-                               $emailLabel.text( requiredText );
-                       } else {
-                               if ( $pwds ) {
-                                       $beforePwds.after( $pwds );
-                                       $pwds = null;
-                               }
-                               $emailLabel.text( originalText );
-                       }
-               }
-
-               $createByMailCheckbox.on( 'change', updateForCheckbox );
-               updateForCheckbox();
-       }
-
-       // Move the FancyCaptcha image into a more attractive container.
-       // This function does need to be run early by ResourceLoader.
-       function adjustFancyCaptcha( $content, buttonSubmit ) {
-               var $submit = $content.find( buttonSubmit ),
-                       tabIndex,
-                       $captchaStuff,
-                       $captchaImageContainer,
-                       // JavaScript can't yet parse the message createacct-imgcaptcha-help when it
-                       // contains a MediaWiki transclusion, so PHP parses it and sends the HTML.
-                       helpMsg = mw.config.get( 'wgCreateacctImgcaptchaHelp' ),
-                       helpHtml = '';
-
-               /*
-                * CAPTCHA
-                * The CAPTCHA is in a div style="captcha" at the top of the form.
-                * If it's a FancyCaptcha, then we remove it and insert it lower down,
-                * in a customized div with just what we need (e.g. no
-                * fancycaptcha-createaccount message).
-                */
-               if ( !$submit.length) {
-                       return;
-               }
-               tabIndex = $submit.prop( 'tabindex' ) - 1;
-               $captchaStuff = $content.find ( '.captcha' );
-
-               if ( $captchaStuff.length ) {
-
-                       // The FancyCaptcha has this class in the ConfirmEdit extension
-                       // after 2013-04-18.
-                       $captchaImageContainer = $captchaStuff.find( '.fancycaptcha-image-container' );
-                       if ( $captchaImageContainer.length !== 1 ) {
-                               return;
-                       }
-
-                       $captchaStuff.remove();
-
-                       if ( helpMsg) {
-                               helpHtml = '<small class="mw-createacct-captcha-assisted">' + helpMsg + '</small>';
-                       }
-
-                       // Insert another div before the submit button that will include the
-                       // repositioned FancyCaptcha div, an input field, and possible help.
-                       $submit.closest( 'div' )
-                               .before( [
-                       '<div>',
-                               '<label for="wpCaptchaWord">' + mw.message( 'createacct-captcha' ).escaped() + '</label>',
-                               '<div class="mw-createacct-captcha-container">',
-                                       '<div class="mw-createacct-captcha-and-reload" />',
-                                       '<input id="wpCaptchaWord" name="wpCaptchaWord" type="text" placeholder="' +
-                                               mw.message( 'createacct-imgcaptcha-ph' ).escaped() +
-                                               '" tabindex="' + tabIndex + '" autocapitalize="off" autocorrect="off">',
-                                               helpHtml,
-                               '</div>',
-                       '</div>'
-                                       ].join( '' )
-                               );
-
-                       // Stick the FancyCaptcha container inside our bordered and framed parents.
-                       $captchaImageContainer
-                               .prependTo( $content.find( '.mw-createacct-captcha-and-reload' ) );
-
-                       // Find the input field, add the text (if any) of the existing CAPTCHA
-                       // field (although usually it's blanked out on every redisplay),
-                       // and after it move over the hidden field that tells the CAPTCHA
-                       // what to do.
-                       $content.find( '#wpCaptchaWord' )
-                               .val( $captchaStuff.find( '#wpCaptchaWord' ).val() )
-                               .after( $captchaStuff.find( '#wpCaptchaId' ) );
-               }
-       }
-
-       $( function () {
-               // Checks if the current page is Special:UserLogin
-               var isLogin = false,
-                       $content = $( '#mw-content-text' ),
-                       buttonSubmit = '#wpCreateaccount';
-
-               if ( $content.find( buttonSubmit ).length === 0 ) {
-                       buttonSubmit = '#wpLoginAttempt';
-                       isLogin = true;
-               }
-
-               adjustFancyCaptcha( $content, buttonSubmit );
-
-               if ( !isLogin ) {
-                       hidePasswordOnEmail();
-               }
-
-       } );
-
-}( mediaWiki, jQuery ) );
diff --git a/resources/mediawiki.special/mediawiki.special.userLogin.css b/resources/mediawiki.special/mediawiki.special.userLogin.css
deleted file mode 100644 (file)
index cf9eaa0..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Styles just for VForm user login */
-#mw-userlogin-help {
-       text-align: center;
-}
-
-.mw-ui-vform .mw-secure {
-       /* @embed */
-       background: url(images/icon-lock.png) no-repeat scroll left center transparent;
-       margin: 0 0 0 1px;
-       padding: 0 0 0 11px;
-}
-
-/* The login form invites users to create an account */
-#mw-createaccount-cta {
-       width: 20em;
-       height: 10em;
-       /* @embed */
-       background: url(images/glyph-people-large.png) no-repeat 50%;
-       margin: 0 auto;
-}
-
-#mw-createaccount-cta h3,
-#mw-createaccount-another h3 {
-       font-size: 0.9em;
-       font-weight: normal;
-       text-align: center;
-}
-
-#mw-createaccount-cta h3 {
-       padding-top: 4em;
-}
-
-#mw-createaccount-join {
-       margin-left: 0.75em;
-       /* Separate from background image */
-       box-shadow: 4px 4px 4px 4px rgba(255, 255, 255, 1);
-       width: auto;
-       display: inline-block;
-}
-
-/**** shuffled CAPTCHA ****/
-#wpCaptchaWord {
-       margin-top: 6px;
-}
-
-.mw-createacct-captcha-container {
-       background-color: #f8f8f8;
-       border: 1px solid #c9c9c9;
-       padding: 10px;
-       text-align: center;
-}
-
-.mw-createacct-captcha-assisted {
-       display: block;
-       margin-top: 0.5em;
-}
-
-/* Put a border around the fancycaptcha-image-container. */
-.mw-createacct-captcha-and-reload {
-       border: 1px solid #c9c9c9;
-       display: table-cell; /* Other display formats end up too wide */
-       width: 270px;
-       background-color: #FFF;
-}
-
-/* Make the fancycaptcha-image-container full-width within its parent.  */
-.fancycaptcha-image-container
-{
-       width: 100%;
-}
diff --git a/resources/mediawiki.special/mediawiki.special.userlogin.common.css b/resources/mediawiki.special/mediawiki.special.userlogin.common.css
new file mode 100644 (file)
index 0000000..d5fd2b8
--- /dev/null
@@ -0,0 +1,65 @@
+/* Styles for user login and signup forms */
+#mw-userlogin-help {
+       text-align: center;
+}
+
+.mw-ui-vform .mw-secure {
+       /* @embed */
+       background: url(images/icon-lock.png) no-repeat scroll left center transparent;
+       margin: 0 0 0 1px;
+       padding: 0 0 0 11px;
+}
+
+/*
+ * When inside the VForm style, disable the border that Vector and other skins
+ * put on the div surrounding the login/create account form.
+ * Also disable the margin and padding that Vector puts around the form.
+ */
+.mw-ui-container #userloginForm,
+.mw-ui-container #userlogin {
+       border: 0;
+       margin: 0;
+       padding: 0;
+}
+
+/* Reposition and resize language links, which appear on a per-wiki basis */
+.mw-ui-container #languagelinks {
+       margin-bottom: 2em;
+       font-size: 0.8em;
+}
+
+/* Put some space under template's header, which may contain CAPTCHA HTML.*/
+section.mw-form-header {
+       margin-bottom: 10px;
+}
+
+/**** shuffled CAPTCHA ****/
+#wpCaptchaWord {
+       margin-top: 6px;
+}
+
+.mw-createacct-captcha-container {
+       background-color: #f8f8f8;
+       border: 1px solid #c9c9c9;
+       padding: 10px;
+       text-align: center;
+}
+
+.mw-createacct-captcha-assisted {
+       display: block;
+       margin-top: 0.5em;
+}
+
+/* Put a border around the fancycaptcha-image-container. */
+.mw-createacct-captcha-and-reload {
+       border: 1px solid #c9c9c9;
+       /* Other display formats end up too wide */
+       display: table-cell;
+       width: 270px;
+       background-color: #FFF;
+}
+
+/* Make the fancycaptcha-image-container full-width within its parent. */
+.fancycaptcha-image-container {
+       width: 100%;
+}
diff --git a/resources/mediawiki.special/mediawiki.special.userlogin.common.js b/resources/mediawiki.special/mediawiki.special.userlogin.common.js
new file mode 100644 (file)
index 0000000..a899ae7
--- /dev/null
@@ -0,0 +1,72 @@
+/**
+ * JavaScript for login and signup forms.
+ */
+( function ( mw, $ ) {
+       // Move the FancyCaptcha image into a more attractive container.
+       // The CAPTCHA is in a <div class="captcha"> at the top of the form. If it's a FancyCaptcha,
+       // then we remove it and insert it lower down, in a customized div with just what we need (e.g.
+       // no 'fancycaptcha-createaccount' message).
+       function adjustFancyCaptcha( $content, buttonSubmit ) {
+               var $submit = $content.find( buttonSubmit ),
+                       tabIndex,
+                       $captchaStuff,
+                       $captchaImageContainer,
+                       // JavaScript can't yet parse the message 'createacct-imgcaptcha-help' when it
+                       // contains a MediaWiki transclusion, so PHP parses it and sends the HTML.
+                       // This is only set for the signup form (and undefined for login).
+                       helpMsg = mw.config.get( 'wgCreateacctImgcaptchaHelp' ),
+                       helpHtml = '';
+
+               if ( !$submit.length ) {
+                       return;
+               }
+               tabIndex = $submit.prop( 'tabindex' ) - 1;
+               $captchaStuff = $content.find( '.captcha' );
+
+               if ( $captchaStuff.length ) {
+                       // The FancyCaptcha has this class in the ConfirmEdit extension since 2013-04-18.
+                       $captchaImageContainer = $captchaStuff.find( '.fancycaptcha-image-container' );
+                       if ( $captchaImageContainer.length !== 1 ) {
+                               return;
+                       }
+
+                       $captchaStuff.remove();
+
+                       if ( helpMsg ) {
+                               helpHtml = '<small class="mw-createacct-captcha-assisted">' + helpMsg + '</small>';
+                       }
+
+                       // Insert another div before the submit button that will include the
+                       // repositioned FancyCaptcha div, an input field, and possible help.
+                       $submit.closest( 'div' ).before( [
+                               '<div>',
+                                       '<label for="wpCaptchaWord">' + mw.message( 'createacct-captcha' ).escaped() + '</label>',
+                                       '<div class="mw-createacct-captcha-container">',
+                                               '<div class="mw-createacct-captcha-and-reload" />',
+                                               '<input id="wpCaptchaWord" name="wpCaptchaWord" type="text" placeholder="' +
+                                                       mw.message( 'createacct-imgcaptcha-ph' ).escaped() +
+                                                       '" tabindex="' + tabIndex + '" autocapitalize="off" autocorrect="off">',
+                                                       helpHtml,
+                                       '</div>',
+                               '</div>'
+                       ].join( '' ) );
+
+                       // Stick the FancyCaptcha container inside our bordered and framed parents.
+                       $captchaImageContainer
+                               .prependTo( $content.find( '.mw-createacct-captcha-and-reload' ) );
+
+                       // Find the input field, add the text (if any) of the existing CAPTCHA
+                       // field (although usually it's blanked out on every redisplay),
+                       // and after it move over the hidden field that tells the CAPTCHA
+                       // what to do.
+                       $content.find( '#wpCaptchaWord' )
+                               .val( $captchaStuff.find( '#wpCaptchaWord' ).val() )
+                               .after( $captchaStuff.find( '#wpCaptchaId' ) );
+               }
+       }
+
+       $( function () {
+               // Work with both login and signup form
+               adjustFancyCaptcha( $( '#mw-content-text' ), '#wpCreateaccount, #wpLoginAttempt' );
+       } );
+}( mediaWiki, jQuery ) );
diff --git a/resources/mediawiki.special/mediawiki.special.userlogin.login.css b/resources/mediawiki.special/mediawiki.special.userlogin.login.css
new file mode 100644 (file)
index 0000000..85730f5
--- /dev/null
@@ -0,0 +1,27 @@
+/* The login form invites users to create an account */
+#mw-createaccount-cta {
+       width: 20em;
+       height: 10em;
+       /* @embed */
+       background: url(images/glyph-people-large.png) no-repeat 50%;
+       margin: 0 auto;
+}
+
+#mw-createaccount-cta h3,
+#mw-createaccount-another h3 {
+       font-size: 0.9em;
+       font-weight: normal;
+       text-align: center;
+}
+
+#mw-createaccount-cta h3 {
+       padding-top: 4em;
+}
+
+#mw-createaccount-join {
+       margin-left: 0.75em;
+       /* Separate from background image */
+       box-shadow: 4px 4px 4px 4px rgba(255, 255, 255, 1);
+       width: auto;
+       display: inline-block;
+}
diff --git a/resources/mediawiki.special/mediawiki.special.userlogin.signup.css b/resources/mediawiki.special/mediawiki.special.userlogin.signup.css
new file mode 100644 (file)
index 0000000..1564712
--- /dev/null
@@ -0,0 +1,63 @@
+/* Disable the underline that Vector puts on h2 headings, and bold them. */
+.mw-ui-container h2 {
+       border: 0;
+       font-weight: bold;
+}
+
+/* Benefits column CSS to the right (if it fits) of the form. */
+.mw-ui-container #userloginForm {
+       float: left;
+       /* Override the right margin of the form to give space in case a benefits
+        * column appears to the side. */
+       margin-right: 100px;
+}
+
+div.mw-createacct-benefits-container {
+       /* Keeps this column compact and close to the form, but tends to squish contents. */
+       float: left;
+}
+
+div.mw-createacct-benefits-container h2 {
+       margin-bottom: 30px;
+}
+
+.mw-number-text.icon-edits {
+       /* @embed */
+       background: url(images/icon-edits.png) no-repeat left center;
+}
+
+.mw-number-text.icon-pages {
+       /* @embed */
+       background: url(images/icon-pages.png) no-repeat left center;
+}
+
+.mw-number-text.icon-contributors {
+       /* @embed */
+       background: url(images/icon-contributors.png) no-repeat left center;
+}
+
+/* Special font for numbers in benefits*/
+div.mw-number-text h3 {
+       top: 0;
+       margin: 0;
+       padding: 0;
+       color: #252525;
+       font-family: 'Georgia', serif;
+       font-weight: normal;
+       font-size: 2.2em;
+       line-height: 1.2;
+       text-align: center;
+}
+
+/* Contains a number and explanatory text, with space for an icon */
+div.mw-number-text {
+       display: block;
+       font-size: 1.2em;
+       color: #444;
+       margin-top: 1em;
+       /* 80px wide icon plus "margin" */
+       padding: 0 0 0 95px;
+       /* Matches max icon height, ensures icon emblem is visible */
+       min-height: 75px;
+       text-align: center;
+}
diff --git a/resources/mediawiki.special/mediawiki.special.userlogin.signup.js b/resources/mediawiki.special/mediawiki.special.userlogin.signup.js
new file mode 100644 (file)
index 0000000..c293f65
--- /dev/null
@@ -0,0 +1,34 @@
+/**
+ * JavaScript for signup form.
+ */
+( function ( mw, $ ) {
+       // When sending password by email, hide the password input fields.
+       function hidePasswordOnEmail() {
+               // Always required if checked, otherwise it depends, so we use the original
+               var $emailLabel = $( 'label[for="wpEmail"]' ),
+                       originalText = $emailLabel.text(),
+                       requiredText = mw.message( 'createacct-emailrequired' ).text(),
+                       $createByMailCheckbox = $( '#wpCreateaccountMail' ),
+                       $beforePwds = $( '.mw-row-password:first' ).prev(),
+                       $pwds;
+
+               function updateForCheckbox() {
+                       var checked = $createByMailCheckbox.prop( 'checked' );
+                       if ( checked ) {
+                               $pwds = $( '.mw-row-password' ).detach();
+                               $emailLabel.text( requiredText );
+                       } else {
+                               if ( $pwds ) {
+                                       $beforePwds.after( $pwds );
+                                       $pwds = null;
+                               }
+                               $emailLabel.text( originalText );
+                       }
+               }
+
+               $createByMailCheckbox.on( 'change', updateForCheckbox );
+               updateForCheckbox();
+       }
+
+       $( hidePasswordOnEmail );
+}( mediaWiki, jQuery ) );
diff --git a/resources/mediawiki.special/mediawiki.special.vforms.css b/resources/mediawiki.special/mediawiki.special.vforms.css
deleted file mode 100644 (file)
index 768a9c6..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * When inside the VForm style, disable the border that Vector and other skins
- * put on the div surrounding the login/create account form.
- * Also disable the margin and padding that Vector puts around the form.
- */
-.mw-ui-container #userloginForm,
-.mw-ui-container #userlogin {
-       border: 0;
-       margin: 0;
-       padding: 0;
-}
-
-/* Reposition and resize language links, which appear on a per-wiki basis */
-.mw-ui-container #languagelinks {
-       margin-bottom: 2em;
-       font-size: 0.8em;
-}
-
-/* Put some space under template's header, which may contain CAPTCHA HTML.*/
-section.mw-form-header {
-       margin-bottom: 10px;
-}
-
-/*
- * Styles for information boxes.
- */
-.mw-ui-vform .errorbox,
-.mw-ui-vform .warningbox,
-.mw-ui-vform .successbox {
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
-       font-size: 0.9em;
-       margin: 0 0 1em 0;
-       padding: 0.5em;
-       word-wrap: break-word;
-}
-
-/*
- * Override the right margin of the form to give space in case a benefits
- * column appears to the side.
- *
- */
-.mw-ui-container #userloginForm {
-       margin-right: 100px;
-}
index a931756..3dc13c5 100644 (file)
@@ -1,9 +1,21 @@
 @import "../../settings/typography";
 @import "../../mixins/effects";
 
+// Buttons
+//
+// Styleguide 2.
+
 @buttonBorderRadius: 3px;
 
 // Button styling
+//
+// Basic button styling to be used on desktop skins. Can be any element.
+// Due to a lack of a CSS reset, the exact styling of the button depends on what type of element is used.
+//
+// Markup:
+// <div class="mw-ui-button">button.mw-ui-button</div>
+//
+// Styleguide 2.1.
 .mw-ui-button {
        // Container layout
        display: inline-block;
@@ -54,6 +66,18 @@ a.mw-ui-button {
 }
 
 // Button groups
+//
+// Group of buttons. Make sure you clear the floating after using a mw-ui-button-group.
+//
+// Markup:
+// <div class="mw-ui-button-group">
+//   <div class="mw-ui-button">A</div>
+//   <div class="mw-ui-button">B</div>
+//   <div class="mw-ui-button">C</div>
+//   <div class="mw-ui-button">D</div>
+// </div><div style="clear:both"></div>
+//
+// Styleguide 2.2.
 .mw-ui-button-group > * {
        border-radius: 0;
        float: left;
index d2554c6..66f4487 100644 (file)
 @captchaContainerWidth: 290px;
 @defaultFormWidth: @captchaContainerWidth;
 
+// Forms
+//
+// Styleguide 3.
+
+// VForm
+//
 // Style a compact vertical stacked form ("VForm") and the elements in divs
-// within it.
+// within it. See button section on guidance of how and when to use mw-ui-constructive.
+//
+// Markup:
+// <form class="mw-ui-vform">
+//   <div class="mw-ui-vform-div">This is a form example.</div>
+//   <div>
+//     <label>Username </label>
+//     <input value="input">
+//   </div>
+//   <div>
+//     <button class="mw-ui-button mw-ui-constructive">Button in vform</button>
+//   </div>
+// </form>
+//
+// Styleguide 3.1.
 .mw-ui-vform {
        .box-sizing(border-box);
 
 
        }
 
-       // HTMLForm uses error, SpecialUserlogin (login and create account) uses
-       // errorbox.
-       // TODO move errorbox from mediawiki.special.vforms.css into here.
+       // Styles for information boxes
+       //
+       // Regular HTMLForm uses .error class, some special pages like
+       // SpecialUserlogin (login and create account) use .errorbox.
+       //
+       // Markup:
+       // <form class="mw-ui-vform">
+       //   <div class="errorbox">An error occurred</div>
+       //   <div class="warningbox">A warning to be noted</div>
+       //   <div class="successbox">Action successful!</div>
+       //   <div class="error">A different kind of error</div>
+       //   <div>
+       //     <input type="text" value="input" class="mw-ui-input">
+       //   <div>
+       //   </div>
+       //     <button class="mw-ui-button">Button in vform</button>
+       //   </div>
+       // </form>
+       //
+       // Styleguide 3.1.
        .error {
                .box-sizing(border-box);
                font-size: 0.9em;
                text-shadow: 0 1px #fae3e3;
                word-wrap: break-word;
        }
+
+       .errorbox,
+       .warningbox,
+       .successbox {
+               .box-sizing(border-box);
+               font-size: 0.9em;
+               margin: 0 0 1em 0;
+               padding: 0.5em;
+               word-wrap: break-word;
+       }
+
 }
 
 // --------------------------------------------------------------------------
index a49721d..2c215f6 100644 (file)
@@ -2,16 +2,44 @@
 @import "../../mixins/type";
 
 .mw-ui-button {
-       // Button colors determined by function.
-       // -----------------------------------------
+       // Primary buttons
+       //
+       // Do not use the mw-ui-primary class use mw-ui-constructive instead. For blue buttons
+       // use mw-ui-progressive (coming soon)
+       //
+       // Markup:
+       // <button class="mw-ui-button mw-ui-primary">mw-ui-primary</button>
+       //
+       // Styleguide 2.1.1.
        &.mw-ui-primary {
                .buttonColors(@agoraBlue);
        }
 
+       // Constructive buttons
+       //
+       // Use constructive buttons for actions which result in a final action in the process that results
+       // in a change of state.
+       // e.g. save changes button
+       //
+       // Markup:
+       // <button class="mw-ui-button mw-ui-constructive">mw-ui-constructive</button>
+       //
+       // Styleguide 2.1.2.
        &.mw-ui-constructive {
                .buttonColors(@agoraGreen);
        }
 
+
+       // Destructive buttons
+       //
+       // Use destructive buttons for actions which result in the destruction of data.
+       // e.g. deleting a page.
+       // This should not be used for cancel buttons.
+       //
+       // Markup:
+       // <button class="mw-ui-button mw-ui-destructive">mw-ui-destructive</button>
+       //
+       // Styleguide 2.1.3.
        &.mw-ui-destructive {
                .buttonColors(@agoraRed);
        }
diff --git a/resources/mediawiki.ui/styleguide.md b/resources/mediawiki.ui/styleguide.md
new file mode 100644 (file)
index 0000000..b7eea54
--- /dev/null
@@ -0,0 +1,26 @@
+#Wikimedia projects
+
+This is the living style guide for MediaWiki UI used in Wikimedia Projects. It is generated from existing CSS programmatically. Please use it as a reference when developing code for MediaWiki to ensure your design is consistent with others across the site. Note this document is a work in progress and subject to change.
+
+##Brand
+
+Imagine a world in which every single human being can freely share in the sum of all knowledge.
+
+Sharing knowledge is the heart of our movement. Specifically, we care about sharing the “… highest possible quality to every single person on the planet in their own language” (Jimmy Wales). The focus of our identity is being credible and is moving toward being more inviting. We want our contributors to keep contributing while our assuring our readers that the information on any of the Wikimedia projects is reliable and accurate. Our personality should embody both of those traits with a slight sense of rebellion. We are unlike traditional projects (for instance, Encyclopedias that are only created by a few select individuals). We are a global movement, and as Jimmy Wales puts it: “Wikipedia is like rock’n’roll; it’s a cultural shift."
+
+##Design Philosophy
+
+The Wikimedia movement is a global volunteer community that aims to collect and develop the world's knowledge and to make it available to everyone for free, for any purpose. “Imagine a world in which every single human being can freely share in the sum of all knowledge.” 
+
+###Credible
+We strive for the most accurate, high quality and neutral information on all Wikimedia projects. We are fact-based and honest. We do not take sides. We are fair and impartial. 
+
+###Inviting
+We are geeky about collecting and developing knowledge. We invite and welcome every single human being to share their knowledge with us and the rest of the world. We are open-minded and have a strong sense of community. Our aesthetics should be clean and encourage interaction. 
+
+###Worldly
+We are thoughtful and are aware of cultural differences. We are careful about words, color usage, and images that might offend. We are also aware of limited connectivity in some areas of the world and are thoughtful of image sizes and loading speed. 
+
+###Humble
+We are respectful of contributors’ effort and knowledge. We have a wealth of knowledge on all projects and many people to thank for that. We are humble. We are helpful and welcome help to expand the sum of all knowledge. 
+
index f736b5c..d084731 100644 (file)
@@ -4,6 +4,25 @@
 
 // FIXME: remove import for button styles as soon as extensions using mediawiki.ui are
 // updated to use mediawiki.ui.button as well.
+
+// Typography
+//
+// We prefer the usage of Georgia Bold for all headings. Georgia Regular is used to place emphasis on pull-out or short quotations. This latter usage should be used sparingly. 
+//
+// We prefer the use of Helvetica Neue Regular for body copy. Helvetiva Neue Bold for sub-headers. Pull-out quotes within the body copy should use Helvetica Neue Bold. Helvetica Neue is an not open-source font. Hence, below is a list of preferred alternate choices.
+//
+// Second choice: Helvetica
+//
+// Third choice: Arial
+//
+// Our content is predominantly text, hence visual hierarchy must be clear. Use these recommended type sizes to inform and establish information hierarchy and organization. 
+//
+// Unless if you plan to put extra attention and manually adjust spacing, avoid justifying texts and paragraphs as they are harder to read and create unnecessary visual distractions. Along with centered text, they convey a formal and less friendly environment. 
+//
+// It will be important to talk about other languages, scripts and writing direction - with the same level as importance, not as an afterthought.
+//
+// Styleguide 1.
+
 @import "components/utilities";
 @import "components/vector/buttons";
 @import "components/vector/forms";
index 0bd86fe..c21dfec 100644 (file)
@@ -2,11 +2,6 @@
        Stylesheet for mediawiki.hlist module
        @author [[User:Edokter]]
  */
-.skin-monobook .hlist dl,
-.skin-modern .hlist dl,
-.skin-vector .hlist dl {
-       line-height: 1.5em;
-}
 .hlist dl,
 .hlist ol,
 .hlist ul {
index ef98136..77d8fdc 100644 (file)
@@ -1,24 +1,31 @@
 /**
-       IE 8: Add pseudo-selector class to last-child list items
+       .hlist fallbacks for IE 6, 7 and 8.
        @author [[User:Edokter]]
 */
-jQuery( function( $ ) {
-       if ( $.client.profile().name === 'msie' ) {
-               if ( $.client.profile().versionNumber === 8 ) {
-                       $( '.hlist' ).find( 'dd:last-child, dt:last-child, li:last-child' )
-                               .addClass( 'hlist-last-child' );
+( function ( mw, $ ) {
+       var profile = $.client.profile();
+
+       if ( profile.name === 'msie' ) {
+               if ( profile.versionNumber === 8 ) {
+                       /* IE 8: Add pseudo-selector class to last-child list items */
+                       mw.hook( 'wikipage.content' ).add( function ( $content ) {
+                               $content.find( '.hlist' ).find( 'dd:last-child, dt:last-child, li:last-child' )
+                                       .addClass( 'hlist-last-child' );
+                       } );
                }
+               else if ( profile.versionNumber <= 7 ) {
                        /* IE 7 and below: Generate interpuncts and parentheses */
-               if ( $.client.profile().versionNumber <= 7 ) {
-                       var $hlists = $( '.hlist' );
-                       $hlists.find( 'dt:not(:last-child)' )
-                               .append( ': ' );
-                       $hlists.find( 'dd:not(:last-child)' )
-                               .append( '<b>·</b> ' );
-                       $hlists.find( 'li:not(:last-child)' )
-                               .append( '<b>·</b> ' );
-                       $hlists.find( 'dl dl, dl ol, dl ul, ol dl, ol ol, ol ul, ul dl, ul ol, ul ul' )
-                               .prepend( '( ' ).append( ') ' );
+                       mw.hook( 'wikipage.content' ).add( function ( $content ) {
+                               var $hlists = $content.find( '.hlist' );
+                               $hlists.find( 'dt:not(:last-child)' )
+                                       .append( ': ' );
+                               $hlists.find( 'dd:not(:last-child)' )
+                                       .append( '<b>·</b> ' );
+                               $hlists.find( 'li:not(:last-child)' )
+                                       .append( '<b>·</b> ' );
+                               $hlists.find( 'dl dl, dl ol, dl ul, ol dl, ol ol, ol ul, ul dl, ul ol, ul ul' )
+                                       .prepend( '( ' ).append( ') ' );
+                       } );
                }
        }
-} );
+}( mediaWiki, jQuery ) );
index 7764bea..89da4a2 100644 (file)
@@ -12,7 +12,9 @@ var mw = ( function ( $, undefined ) {
        /* Private Members */
 
        var hasOwn = Object.prototype.hasOwnProperty,
-               slice = Array.prototype.slice;
+               slice = Array.prototype.slice,
+               trackCallbacks = $.Callbacks( 'memory' ),
+               trackQueue = [];
 
        /**
         * Log a message to window.console, if possible. Useful to force logging of some
@@ -325,6 +327,70 @@ var mw = ( function ( $, undefined ) {
        return {
                /* Public Members */
 
+               /**
+                * Get the current time, measured in milliseconds since January 1, 1970 (UTC).
+                *
+                * On browsers that implement the Navigation Timing API, this function will produce floating-point
+                * values with microsecond precision that are guaranteed to be monotonic. On all other browsers,
+                * it will fall back to using `Date`.
+                *
+                * @returns {number} Current time
+                */
+               now: ( function () {
+                       var perf = window.performance,
+                               navStart = perf && perf.timing && perf.timing.navigationStart;
+                       return navStart && typeof perf.now === 'function' ?
+                               function () { return navStart + perf.now(); } :
+                               function () { return +new Date(); };
+               }() ),
+
+               /**
+                * Track an analytic event.
+                *
+                * This method provides a generic means for MediaWiki JavaScript code to capture state
+                * information for analysis. Each logged event specifies a string topic name that describes
+                * the kind of event that it is. Topic names consist of dot-separated path components,
+                * arranged from most general to most specific. Each path component should have a clear and
+                * well-defined purpose.
+                *
+                * Data handlers are registered via `mw.trackSubscribe`, and receive the full set of
+                * events that match their subcription, including those that fired before the handler was
+                * bound.
+                *
+                * @param {string} topic Topic name
+                * @param {Object} [data] Data describing the event, encoded as an object
+                */
+               track: function ( topic, data ) {
+                       trackQueue.push( { topic: topic, timeStamp: mw.now(), data: data } );
+                       trackCallbacks.fire( trackQueue );
+               },
+
+               /**
+                * Register a handler for subset of analytic events, specified by topic
+                *
+                * Handlers will be called once for each tracked event, including any events that fired before the
+                * handler was registered; 'this' is set to a plain object with a 'timeStamp' property indicating
+                * the exact time at which the event fired, a string 'topic' property naming the event, and a
+                * 'data' property which is an object of event-specific data. The event topic and event data are
+                * also passed to the callback as the first and second arguments, respectively.
+                *
+                * @param {string} topic Handle events whose name starts with this string prefix
+                * @param {Function} callback Handler to call for each matching tracked event
+                */
+               trackSubscribe: function ( topic, callback ) {
+                       var seen = 0;
+
+                       trackCallbacks.add( function ( trackQueue ) {
+                               var event;
+                               for ( ; seen < trackQueue.length; seen++ ) {
+                                       event = trackQueue[ seen ];
+                                       if ( event.topic.indexOf( topic ) === 0 ) {
+                                               callback.call( event, event.topic, event.data );
+                                       }
+                               }
+                       } );
+               },
+
                /**
                 * Dummy placeholder for {@link mw.log}
                 * @method
diff --git a/resources/package.json b/resources/package.json
new file mode 100644 (file)
index 0000000..a1722b5
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "name": "mediawiki-ui-dependencies",
+       "description": "Node.js dependencies used for KSS generation",
+       "version": "0.0.1",
+       "dependencies": {
+               "kss": ">=0.3.6"
+       },
+       "repository" : {
+               "type" : "git",
+               "url" : "https://gerrit.wikimedia.org/r/p/mediawiki/core.git"
+       }
+
+}
diff --git a/resources/scripts/nodecheck.sh b/resources/scripts/nodecheck.sh
new file mode 100755 (executable)
index 0000000..3ee0f83
--- /dev/null
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+if command -v npm > /dev/null ; then
+  npm install
+else
+  echo "You need to install Node.JS!"
+  echo "See http://nodejs.org/"
+  exit 1
+fi
diff --git a/resources/styleguide-template/index.html b/resources/styleguide-template/index.html
new file mode 100644 (file)
index 0000000..99f3e4f
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html class="no-js" lang="en">
+<head>
+       <meta charset="utf-8">
+       <title>MediaWiki Living Styleguide</title>
+       <meta name="description" content="">
+       <meta name="generator" content="kss-node" />
+       <meta name="viewport" content="width=device-width">
+       <link rel="stylesheet" href="public/kss.css">
+       <link rel="stylesheet" href="public/style.css">
+</head>
+<body><div id="kss-wrapper">
+       <header id="kss-header">
+               <hgroup><h1>MediaWiki Living Styleguide</h1></hgroup>
+       </header>
+       <nav class="content">
+               <ul>
+               <li><a href="index.html">0.0: Overview</a></li>
+               {{#eachRoot}}
+               <li>
+                       <a href="section-{{reference}}.html">{{reference}}.0: {{header}}</a>
+               </li>
+               {{/eachRoot}}
+               </ul>
+       </nav>
+       <article>
+               {{#if overview}}
+                       {{html overview}}
+               {{else}}
+                       {{#eachSection rootNumber}}
+                               {{#whenDepth 1}}
+                                       <h1>{{ reference }}.0 - {{ header }}</h1>
+                               {{else}}
+                                       {{#whenDepth 2}}
+                                       <h2>{{ reference }} - {{ header }}</h2>
+                                       {{/whenDepth}}
+                                       {{#whenDepth 3}}
+                                       <h3>{{ reference }} - {{ header }}</h3>
+                                       {{/whenDepth}}
+                               {{/whenDepth}}
+                               {{#ifAny markup modifiers}}
+                                               <div>{{html description}}</div>
+                                               <strong>Default styling</strong><br>
+                                               {{modifierMarkup}}
+                                               {{#eachModifier}}
+                                               {{html description}}<br>
+                                               <p>{{name}}</p>
+                                               {{modifierMarkup}}
+                                               {{/eachModifier}}
+                                               <pre class="prettyprint lang-html">{{markup}}</pre>
+                               {{else}}
+                                               {{#if description}}
+                                                       {{html description}}
+                                               {{/if}}
+                               {{/ifAny}}
+                       {{/eachSection}}
+               {{/if}}
+       </article>
+</div></body>
+</html>
diff --git a/resources/styleguide-template/public/kss.less b/resources/styleguide-template/public/kss.less
new file mode 100644 (file)
index 0000000..431303d
--- /dev/null
@@ -0,0 +1,24 @@
+header {
+       padding: .8em 16px 0;
+}
+
+nav {
+       float: left;
+       width: 200px;
+}
+
+article {
+       margin-left: 250px;
+}
+
+.content.kss-no-margin {
+       margin: 0;
+}
+
+// FIXME: Remove when typography module in mediawiki-ui
+body {
+       font-family: "Nimbus Sans L", "Liberation Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
+}
+h1,h2,h3,h4,h5 {
+       font-family: "DejaVu Serif", Georgia, serif;
+}
diff --git a/resources/styleguide-template/public/less.js b/resources/styleguide-template/public/less.js
new file mode 100644 (file)
index 0000000..89b7637
--- /dev/null
@@ -0,0 +1,9 @@
+//
+// LESS - Leaner CSS v1.2.1
+// http://lesscss.org
+// 
+// Copyright (c) 2009-2011, Alexis Sellier
+// Licensed under the Apache 2.0 License.
+//
+(function(a,b){function c(b){return a.less[b.split("/")[1]]}function m(){var a=document.getElementsByTagName("style");for(var b=0;b<a.length;b++)a[b].type.match(k)&&(new d.Parser).parse(a[b].innerHTML||"",function(c,d){var e=d.toCSS(),f=a[b];f.type="text/css",f.styleSheet?f.styleSheet.cssText=e:f.innerHTML=e})}function n(a,b){for(var c=0;c<d.sheets.length;c++)o(d.sheets[c],a,b,d.sheets.length-(c+1))}function o(b,c,e,f){var g=a.location.href.replace(/[#?].*$/,""),i=b.href.replace(/\?.*$/,""),j=h&&h.getItem(i),k=h&&h.getItem(i+":timestamp"),l={css:j,timestamp:k};/^(https?|file):/.test(i)||(i.charAt(0)=="/"?i=a.location.protocol+"//"+a.location.host+i:i=g.slice(0,g.lastIndexOf("/")+1)+i);var m=i.match(/([^\/]+)$/)[1];s(b.href,b.type,function(a,g){if(!e&&l&&g&&(new Date(g)).valueOf()===(new Date(l.timestamp)).valueOf())r(l.css,b),c(null,b,{local:!0,remaining:f});else try{(new d.Parser({optimization:d.optimization,paths:[i.replace(/[\w\.-]+$/,"")],mime:b.type,filename:m})).parse(a,function(d,e){if(d)return w(d,i);try{c(d,e,a,b,{local:!1,lastModified:g,remaining:f}),u(document.getElementById("less-error-message:"+q(i)))}catch(d){w(d,i)}})}catch(h){w(h,i)}},function(a,b){throw new Error("Couldn't load "+b+" ("+a+")")})}function q(a){return a.replace(/^[a-z]+:\/\/?[^\/]+/,"").replace(/^\//,"").replace(/\?.*$/,"").replace(/\.[^\.\/]+$/,"").replace(/[^\.\w-]+/g,"-").replace(/\./g,":")}function r(a,b,c){var d,e=b.href?b.href.replace(/\?.*$/,""):"",f="less:"+(b.title||q(e));(d=document.getElementById(f))===null&&(d=document.createElement("style"),d.type="text/css",d.media=b.media||"screen",d.id=f,document.getElementsByTagName("head")[0].appendChild(d));if(d.styleSheet)try{d.styleSheet.cssText=a}catch(g){throw new Error("Couldn't reassign styleSheet.cssText.")}else(function(a){d.childNodes.length>0?d.firstChild.nodeValue!==a.nodeValue&&d.replaceChild(a,d.firstChild):d.appendChild(a)})(document.createTextNode(a));c&&h&&(v("saving "+e+" to cache."),h.setItem(e,a),h.setItem(e+":timestamp",c))}function s(a,b,c,e){function i(b,c,d){b.status>=200&&b.status<300?c(b.responseText,b.getResponseHeader("Last-Modified")):typeof d=="function"&&d(b.status,a)}var f=t(),h=g?!1:d.async;typeof f.overrideMimeType=="function"&&f.overrideMimeType("text/css"),f.open("GET",a,h),f.setRequestHeader("Accept",b||"text/x-less, text/css; q=0.9, */*; q=0.5"),f.send(null),g?f.status===0||f.status>=200&&f.status<300?c(f.responseText):e(f.status,a):h?f.onreadystatechange=function(){f.readyState==4&&i(f,c,e)}:i(f,c,e)}function t(){if(a.XMLHttpRequest)return new XMLHttpRequest;try{return new ActiveXObject("MSXML2.XMLHTTP.3.0")}catch(b){return v("browser doesn't support AJAX."),null}}function u(a){return a&&a.parentNode.removeChild(a)}function v(a){d.env=="development"&&typeof console!="undefined"&&console.log("less: "+a)}function w(a,b){var c="less-error-message:"+q(b),e='<li><label>{line}</label><pre class="{class}">{content}</pre></li>',f=document.createElement("div"),g,h,i=[],j=a.filename||b;f.id=c,f.className="less-error-message",h="<h3>"+(a.message||"There is an error in your .less file")+"</h3>"+'<p>in <a href="'+j+'">'+j+"</a> ";var k=function(a,b,c){a.extract[b]&&i.push(e.replace(/\{line\}/,parseInt(a.line)+(b-1)).replace(/\{class\}/,c).replace(/\{content\}/,a.extract[b]))};a.stack?h+="<br/>"+a.stack.split("\n").slice(1).join("<br/>"):a.extract&&(k(a,0,""),k(a,1,"line"),k(a,2,""),h+="on line "+a.line+", column "+(a.column+1)+":</p>"+"<ul>"+i.join("")+"</ul>"),f.innerHTML=h,r([".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),f.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),d.env=="development"&&(g=setInterval(function(){document.body&&(document.getElementById(c)?document.body.replaceChild(f,document.getElementById(c)):document.body.insertBefore(f,document.body.firstChild),clearInterval(g))},10))}Array.isArray||(Array.isArray=function(a){return Object.prototype.toString.call(a)==="[object Array]"||a instanceof Array}),Array.prototype.forEach||(Array.prototype.forEach=function(a,b){var c=this.length>>>0;for(var d=0;d<c;d++)d in this&&a.call(b,this[d],d,this)}),Array.prototype.map||(Array.prototype.map=function(a){var b=this.length>>>0,c=new Array(b),d=arguments[1];for(var e=0;e<b;e++)e in this&&(c[e]=a.call(d,this[e],e,this));return c}),Array.prototype.filter||(Array.prototype.filter=function(a){var b=[],c=arguments[1];for(var d=0;d<this.length;d++)a.call(c,this[d])&&b.push(this[d]);return b}),Array.prototype.reduce||(Array.prototype.reduce=function(a){var b=this.length>>>0,c=0;if(b===0&&arguments.length===1)throw new TypeError;if(arguments.length>=2)var d=arguments[1];else do{if(c in this){d=this[c++];break}if(++c>=b)throw new TypeError}while(!0);for(;c<b;c++)c in this&&(d=a.call(null,d,this[c],c,this));return d}),Array.prototype.indexOf||(Array.prototype.indexOf=function(a){var b=this.length,c=arguments[1]||0;if(!b)return-1;if(c>=b)return-1;c<0&&(c+=b);for(;c<b;c++){if(!Object.prototype.hasOwnProperty.call(this,c))continue;if(a===this[c])return c}return-1}),Object.keys||(Object.keys=function(a){var b=[];for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b.push(c);return b}),String.prototype.trim||(String.prototype.trim=function(){return String(this).replace(/^\s\s*/,"").replace(/\s\s*$/,"")});var d,f;typeof environment=="object"&&{}.toString.call(environment)==="[object Environment]"?(typeof a=="undefined"?d={}:d=a.less={},f=d.tree={},d.mode="rhino"):typeof a=="undefined"?(d=exports,f=c("./tree"),d.mode="node"):(typeof a.less=="undefined"&&(a.less={}),d=a.less,f=a.less.tree={},d.mode="browser"),d.Parser=function(b){function t(){j=m[i],k=h,n=h}function u(){m[i]=j,h=k,n=h}function v(){h>n&&(m[i]=m[i].slice(h-n),n=h)}function w(a){var b,c,d,e,f,j,k,l;if(a instanceof Function)return a.call(o.parsers);if(typeof a=="string")b=g.charAt(h)===a?a:null,d=1,v();else{v();if(!(b=a.exec(m[i])))return null;d=b[0].length}if(b){l=h+=d,j=h+m[i].length-d;while(h<j){e=g.charCodeAt(h);if(e!==32&&e!==10&&e!==9)break;h++}return m[i]=m[i].slice(d+(h-l)),n=h,m[i].length===0&&i<m.length-1&&i++,typeof b=="string"?b:b.length===1?b[0]:b}}function x(a,b){var c=w(a);if(!!c)return c;y(b||(typeof a=="string"?"expected '"+a+"' got '"+g.charAt(h)+"'":"unexpected token"))}function y(a,b){throw{index:h,type:b||"Syntax",message:a}}function z(a){return typeof a=="string"?g.charAt(h)===a:a.test(m[i])?!0:!1}function A(a,b){return a.filename&&b.filename&&a.filename!==b.filename?o.imports.contents[a.filename]:g}function B(a,b){for(var c=a,d=-1;c>=0&&b.charAt(c)!=="\n";c--)d++;return{line:typeof a=="number"?(b.slice(0,a).match(/\n/g)||"").length:null,column:d}}function C(a,b){var c=A(a,b),d=B(a.index,c),e=d.line,f=d.column,g=c.split("\n");this.type=a.type||"Syntax",this.message=a.message,this.filename=a.filename||b.filename,this.index=a.index,this.line=typeof e=="number"?e+1:null,this.callLine=a.call&&B(a.call,c)+1,this.callExtract=g[B(a.call,c)],this.stack=a.stack,this.column=f,this.extract=[g[e-1],g[e],g[e+1]]}var g,h,i,j,k,l,m,n,o,q=this,r=function(){},s=this.imports={paths:b&&b.paths||[],queue:[],files:{},contents:{},mime:b&&b.mime,error:null,push:function(a,c){var e=this;this.queue.push(a),d.Parser.importer(a,this.paths,function(b,d,f){e.queue.splice(e.queue.indexOf(a),1),e.files[a]=d,e.contents[a]=f,b&&!e.error&&(e.error=b),c(b,d),e.queue.length===0&&r()},b)}};return this.env=b=b||{},this.optimization="optimization"in this.env?this.env.optimization:1,this.env.filename=this.env.filename||null,o={imports:s,parse:function(a,e){var j,k,p,q,s,t,u=[],v,x=null;h=i=n=l=0,m=[],g=a.replace(/\r\n/g,"\n"),m=function(a){var c=0,d=/[^"'`\{\}\/\(\)]+/g,e=/\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g,f=0,h,i=a[0],j,k;for(var l=0,m,n;l<g.length;l++){d.lastIndex=l,(h=d.exec(g))&&h.index===l&&(l+=h[0].length,i.push(h[0])),m=g.charAt(l),e.lastIndex=l,!k&&!j&&m==="/"&&(n=g.charAt(l+1),(n==="/"||n==="*")&&(h=e.exec(g))&&h.index===l&&(l+=h[0].length,i.push(h[0]),m=g.charAt(l)));if(m==="{"&&!k&&!j)f++,i.push(m);else if(m==="}"&&!k&&!j)f--,i.push(m),a[++c]=i=[];else if(m==="("&&!k&&!j)i.push(m),j=!0;else if(m===")"&&!k&&j)i.push(m),j=!1;else{if(m==='"'||m==="'"||m==="`")k?k=k===m?!1:k:k=m;i.push(m)}}if(f>0)throw{type:"Syntax",message:"Missing closing `}`",filename:b.filename};return a.map(function(a){return a.join("")})}([[]]);try{j=new f.Ruleset([],w(this.parsers.primary)),j.root=!0}catch(y){return e(new C(y,b))}j.toCSS=function(a){var e,g,h;return function(e,g){var h=[],i;e=e||{},typeof g=="object"&&!Array.isArray(g)&&(g=Object.keys(g).map(function(a){var b=g[a];return b instanceof f.Value||(b instanceof f.Expression||(b=new f.Expression([b])),b=new f.Value([b])),new f.Rule("@"+a,b,!1,0)}),h=[new f.Ruleset(null,g)]);try{var j=a.call(this,{frames:h}).toCSS([],{compress:e.compress||!1})}catch(k){throw new C(k,b)}if(i=o.imports.error)throw i instanceof C?i:new C(i,b);return e.yuicompress&&d.mode==="node"?c("./cssmin").compressor.cssmin(j):e.compress?j.replace(/(\s)+/g,"$1"):j}}(j.eval);if(h<g.length-1){h=l,t=g.split("\n"),s=(g.slice(0,h).match(/\n/g)||"").length+1;for(var z=h,A=-1;z>=0&&g.charAt(z)!=="\n";z--)A++;x={type:"Parse",message:"Syntax Error on line "+s,index:h,filename:b.filename,line:s,column:A,extract:[t[s-2],t[s-1],t[s]]}}this.imports.queue.length>0?r=function(){e(x,j)}:e(x,j)},parsers:{primary:function(){var a,b=[];while((a=w(this.mixin.definition)||w(this.rule)||w(this.ruleset)||w(this.mixin.call)||w(this.comment)||w(this.directive))||w(/^[\s\n]+/))a&&b.push(a);return b},comment:function(){var a;if(g.charAt(h)!=="/")return;if(g.charAt(h+1)==="/")return new f.Comment(w(/^\/\/.*/),!0);if(a=w(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/))return new f.Comment(a)},entities:{quoted:function(){var a,b=h,c;g.charAt(b)==="~"&&(b++,c=!0);if(g.charAt(b)!=='"'&&g.charAt(b)!=="'")return;c&&w("~");if(a=w(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/))return new f.Quoted(a[0],a[1]||a[2],c)},keyword:function(){var a;if(a=w(/^[_A-Za-z-][_A-Za-z0-9-]*/))return f.colors.hasOwnProperty(a)?new f.Color(f.colors[a].slice(1)):new f.Keyword(a)},call:function(){var a,c,d=h;if(!(a=/^([\w-]+|%|progid:[\w\.]+)\(/.exec(m[i])))return;a=a[1].toLowerCase();if(a==="url")return null;h+=a.length;if(a==="alpha")return w(this.alpha);w("("),c=w(this.entities.arguments);if(!w(")"))return;if(a)return new f.Call(a,c,d,b.filename)},arguments:function(){var a=[],b;while(b=w(this.entities.assignment)||w(this.expression)){a.push(b);if(!w(","))break}return a},literal:function(){return w(this.entities.dimension)||w(this.entities.color)||w(this.entities.quoted)},assignment:function(){var a,b;if((a=w(/^\w+(?=\s?=)/i))&&w("=")&&(b=w(this.entity)))return new f.Assignment(a,b)},url:function(){var a;if(g.charAt(h)!=="u"||!w(/^url\(/))return;return a=w(this.entities.quoted)||w(this.entities.variable)||w(this.entities.dataURI)||w(/^[-\w%@$\/.&=:;#+?~]+/)||"",x(")"),new f.URL(a.value||a.data||a instanceof f.Variable?a:new f.Anonymous(a),s.paths)},dataURI:function(){var a;if(w(/^data:/)){a={},a.mime=w(/^[^\/]+\/[^,;)]+/)||"",a.charset=w(/^;\s*charset=[^,;)]+/)||"",a.base64=w(/^;\s*base64/)||"",a.data=w(/^,\s*[^)]+/);if(a.data)return a}},variable:function(){var a,c=h;if(g.charAt(h)==="@"&&(a=w(/^@@?[\w-]+/)))return new f.Variable(a,c,b.filename)},color:function(){var a;if(g.charAt(h)==="#"&&(a=w(/^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})/)))return new f.Color(a[1])},dimension:function(){var a,b=g.charCodeAt(h);if(b>57||b<45||b===47)return;if(a=w(/^(-?\d*\.?\d+)(px|%|em|rem|pc|ex|in|deg|s|ms|pt|cm|mm|rad|grad|turn)?/))return new f.Dimension(a[1],a[2])},javascript:function(){var a,b=h,c;g.charAt(b)==="~"&&(b++,c=!0);if(g.charAt(b)!=="`")return;c&&w("~");if(a=w(/^`([^`]*)`/))return new f.JavaScript(a[1],h,c)}},variable:function(){var a;if(g.charAt(h)==="@"&&(a=w(/^(@[\w-]+)\s*:/)))return a[1]},shorthand:function(){var a,b;if(!z(/^[@\w.%-]+\/[@\w.-]+/))return;if((a=w(this.entity))&&w("/")&&(b=w(this.entity)))return new f.Shorthand(a,b)},mixin:{call:function(){var a=[],c,d,e,i=h,j=g.charAt(h),k=!1;if(j!=="."&&j!=="#")return;while(c=w(/^[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/))a.push(new f.Element(d,c,h)),d=w(">");w("(")&&(e=w(this.entities.arguments))&&w(")"),w(this.important)&&(k=!0);if(a.length>0&&(w(";")||z("}")))return new f.mixin.Call(a,e,i,b.filename,k)},definition:function(){var a,b=[],c,d,e,i,j;if(g.charAt(h)!=="."&&g.charAt(h)!=="#"||z(/^[^{]*(;|})/))return;t();if(c=w(/^([#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+)\s*\(/)){a=c[1];while(e=w(this.entities.variable)||w(this.entities.literal)||w(this.entities.keyword)){e instanceof f.Variable?w(":")?(i=x(this.expression,"expected expression"),b.push({name:e.name,value:i})):b.push({name:e.name}):b.push({value:e});if(!w(","))break}x(")"),w(/^when/)&&(j=x(this.conditions,"expected condition")),d=w(this.block);if(d)return new f.mixin.Definition(a,b,d,j);u()}}},entity:function(){return w(this.entities.literal)||w(this.entities.variable)||w(this.entities.url)||w(this.entities.call)||w(this.entities.keyword)||w(this.entities.javascript)||w(this.comment)},end:function(){return w(";")||z("}")},alpha:function(){var a;if(!w(/^\(opacity=/i))return;if(a=w(/^\d+/)||w(this.entities.variable))return x(")"),new f.Alpha(a)},element:function(){var a,b,c,d;c=w(this.combinator),a=w(/^(?:\d+\.\d+|\d+)%/)||w(/^(?:[.#]?|:*)(?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)||w("*")||w(this.attribute)||w(/^\([^)@]+\)/),a||w("(")&&(d=w(this.entities.variable))&&w(")")&&(a=new f.Paren(d));if(a)return new f.Element(c,a,h);if(c.value&&c.value.charAt(0)==="&")return new f.Element(c,null,h)},combinator:function(){var a,b=g.charAt(h);if(b===">"||b==="+"||b==="~"){h++;while(g.charAt(h)===" ")h++;return new f.Combinator(b)}if(b==="&"){a="&",h++,g.charAt(h)===" "&&(a="& ");while(g.charAt(h)===" ")h++;return new f.Combinator(a)}if(b===":"&&g.charAt(h+1)===":"){h+=2;while(g.charAt(h)===" ")h++;return new f.Combinator("::")}return g.charAt(h-1)===" "?new f.Combinator(" "):new f.Combinator(null)},selector:function(){var a,b,c=[],d,e;while(b=w(this.element)){d=g.charAt(h),c.push(b);if(d==="{"||d==="}"||d===";"||d===",")break}if(c.length>0)return new f.Selector(c)},tag:function(){return w(/^[a-zA-Z][a-zA-Z-]*[0-9]?/)||w("*")},attribute:function(){var a="",b,c,d;if(!w("["))return;if(b=w(/^[a-zA-Z-]+/)||w(this.entities.quoted))(d=w(/^[|~*$^]?=/))&&(c=w(this.entities.quoted)||w(/^[\w-]+/))?a=[b,d,c.toCSS?c.toCSS():c].join(""):a=b;if(!w("]"))return;if(a)return"["+a+"]"},block:function(){var a;if(w("{")&&(a=w(this.primary))&&w("}"))return a},ruleset:function(){var a=[],b,c,d;t();while(b=w(this.selector)){a.push(b),w(this.comment);if(!w(","))break;w(this.comment)}if(a.length>0&&(c=w(this.block)))return new f.Ruleset(a,c);l=h,u()},rule:function(){var a,b,c=g.charAt(h),d,e;t();if(c==="."||c==="#"||c==="&")return;if(a=w(this.variable)||w(this.property)){a.charAt(0)!="@"&&(e=/^([^@+\/'"*`(;{}-]*);/.exec(m[i]))?(h+=e[0].length-1,b=new f.Anonymous(e[1])):a==="font"?b=w(this.font):b=w(this.value),d=w(this.important);if(b&&w(this.end))return new f.Rule(a,b,d,k);l=h,u()}},"import":function(){var a,b,c=h;if(w(/^@import\s+/)&&(a=w(this.entities.quoted)||w(this.entities.url))){b=w(this.mediaFeatures);if(w(";"))return new f.Import(a,s,b,c)}},mediaFeature:function(){var a=[];do if(e=w(this.entities.keyword))a.push(e);else if(w("(")){p=w(this.property),e=w(this.entity);if(!w(")"))return null;if(p&&e)a.push(new f.Paren(new f.Rule(p,e,null,h,!0)));else{if(!e)return null;a.push(new f.Paren(e))}}while(e);if(a.length>0)return new f.Expression(a)},mediaFeatures:function(){var a,b=[];while(a=w(this.mediaFeature)){b.push(a);if(!w(","))break}return b.length>0?b:null},media:function(){var a;if(w(/^@media/)){a=w(this.mediaFeatures);if(rules=w(this.block))return new f.Directive("@media",rules,a)}},directive:function(){var a,b,c,d,e,i;if(g.charAt(h)!=="@")return;if(b=w(this["import"])||w(this.media))return b;if(a=w(/^@page|@keyframes/)||w(/^@(?:-webkit-|-moz-|-o-|-ms-)[a-z0-9-]+/)){d=(w(/^[^{]+/)||"").trim();if(c=w(this.block))return new f.Directive(a+" "+d,c)}else if(a=w(/^@[-a-z]+/))if(a==="@font-face"){if(c=w(this.block))return new f.Directive(a,c)}else if((b=w(this.entity))&&w(";"))return new f.Directive(a,b)},font:function(){var a=[],b=[],c,d,e,g;while(g=w(this.shorthand)||w(this.entity))b.push(g);a.push(new f.Expression(b));if(w(","))while(g=w(this.expression)){a.push(g);if(!w(","))break}return new f.Value(a)},value:function(){var a,b=[],c;while(a=w(this.expression)){b.push(a);if(!w(","))break}if(b.length>0)return new f.Value(b)},important:function(){if(g.charAt(h)==="!")return w(/^! *important/)},sub:function(){var a;if(w("(")&&(a=w(this.expression))&&w(")"))return a},multiplication:function(){var a,b,c,d;if(a=w(this.operand)){while(!z(/^\/\*/)&&(c=w("/")||w("*"))&&(b=w(this.operand)))d=new f.Operation(c,[d||a,b]);return d||a}},addition:function(){var a,b,c,d;if(a=w(this.multiplication)){while((c=w(/^[-+]\s+/)||g.charAt(h-1)!=" "&&(w("+")||w("-")))&&(b=w(this.multiplication)))d=new f.Operation(c,[d||a,b]);return d||a}},conditions:function(){var a,b,c=h,d;if(a=w(this.condition)){while(w(",")&&(b=w(this.condition)))d=new f.Condition("or",d||a,b,c);return d||a}},condition:function(){var a,b,c,d,e=h,g=!1;w(/^not/)&&(g=!0),x("(");if(a=w(this.addition)||w(this.entities.keyword)||w(this.entities.quoted))return(d=w(/^(?:>=|=<|[<=>])/))?(b=w(this.addition)||w(this.entities.keyword)||w(this.entities.quoted))?c=new f.Condition(d,a,b,e,g):y("expected expression"):c=new f.Condition("=",a,new f.Keyword("true"),e,g),x(")"),w(/^and/)?new f.Condition("and",c,w(this.condition)):c},operand:function(){var a,b=g.charAt(h+1);g.charAt(h)==="-"&&(b==="@"||b==="(")&&(a=w("-"));var c=w(this.sub)||w(this.entities.dimension)||w(this.entities.color)||w(this.entities.variable)||w(this.entities.call);return a?new f.Operation("*",[new f.Dimension(-1),c]):c},expression:function(){var a,b,c=[],d;while(a=w(this.addition)||w(this.entity))c.push(a);if(c.length>0)return new f.Expression(c)},property:function(){var a;if(a=w(/^(\*?-?[-a-z_0-9]+)\s*:/))return a[1]}}}};if(d.mode==="browser"||d.mode==="rhino")d.Parser.importer=function(a,b,c,d){a.charAt(0)!=="/"&&b.length>0&&(a=b[0]+a),o({href:a,title:a,type:d.mime},c,!0)};(function(a){function b(b){return a.functions.hsla(b.h,b.s,b.l,b.a)}function c(b){if(b instanceof a.Dimension)return parseFloat(b.unit=="%"?b.value/100:b.value);if(typeof b=="number")return b;throw{error:"RuntimeError",message:"color functions take numbers as parameters"}}function d(a){return Math.min(1,Math.max(0,a))}a.functions={rgb:function(a,b,c){return this.rgba(a,b,c,1)},rgba:function(b,d,e,f){var g=[b,d,e].map(function(a){return c(a)}),f=c(f);return new a.Color(g,f)},hsl:function(a,b,c){return this.hsla(a,b,c,1)},hsla:function(a,b,d,e){function h(a){return a=a<0?a+1:a>1?a-1:a,a*6<1?g+(f-g)*a*6:a*2<1?f:a*3<2?g+(f-g)*(2/3-a)*6:g}a=c(a)%360/360,b=c(b),d=c(d),e=c(e);var f=d<=.5?d*(b+1):d+b-d*b,g=d*2-f;return this.rgba(h(a+1/3)*255,h(a)*255,h(a-1/3)*255,e)},hue:function(b){return new a.Dimension(Math.round(b.toHSL().h))},saturation:function(b){return new a.Dimension(Math.round(b.toHSL().s*100),"%")},lightness:function(b){return new a.Dimension(Math.round(b.toHSL().l*100),"%")},alpha:function(b){return new a.Dimension(b.toHSL().a)},saturate:function(a,c){var e=a.toHSL();return e.s+=c.value/100,e.s=d(e.s),b(e)},desaturate:function(a,c){var e=a.toHSL();return e.s-=c.value/100,e.s=d(e.s),b(e)},lighten:function(a,c){var e=a.toHSL();return e.l+=c.value/100,e.l=d(e.l),b(e)},darken:function(a,c){var e=a.toHSL();return e.l-=c.value/100,e.l=d(e.l),b(e)},fadein:function(a,c){var e=a.toHSL();return e.a+=c.value/100,e.a=d(e.a),b(e)},fadeout:function(a,c){var e=a.toHSL();return e.a-=c.value/100,e.a=d(e.a),b(e)},fade:function(a,c){var e=a.toHSL();return e.a=c.value/100,e.a=d(e.a),b(e)},spin:function(a,c){var d=a.toHSL(),e=(d.h+c.value)%360;return d.h=e<0?360+e:e,b(d)},mix:function(b,c,d){var e=d.value/100,f=e*2-1,g=b.toHSL().a-c.toHSL().a,h=((f*g==-1?f:(f+g)/(1+f*g))+1)/2,i=1-h,j=[b.rgb[0]*h+c.rgb[0]*i,b.rgb[1]*h+c.rgb[1]*i,b.rgb[2]*h+c.rgb[2]*i],k=b.alpha*e+c.alpha*(1-e);return new a.Color(j,k)},greyscale:function(b){return this.desaturate(b,new a.Dimension(100))},e:function(b){return new a.Anonymous(b instanceof a.JavaScript?b.evaluated:b)},escape:function(b){return new a.Anonymous(encodeURI(b.value).replace(/=/g,"%3D").replace(/:/g,"%3A").replace(/#/g,"%23").replace(/;/g,"%3B").replace(/\(/g,"%28").replace(/\)/g,"%29"))},"%":function(b){var c=Array.prototype.slice.call(arguments,1),d=b.value;for(var e=0;e<c.length;e++)d=d.replace(/%[sda]/i,function(a){var b=a.match(/s/i)?c[e].value:c[e].toCSS();return a.match(/[A-Z]$/)?encodeURIComponent(b):b});return d=d.replace(/%%/g,"%"),new a.Quoted('"'+d+'"',d)},round:function(a){return this._math("round",a)},ceil:function(a){return this._math("ceil",a)},floor:function(a){return this._math("floor",a)},_math:function(b,d){if(d instanceof a.Dimension)return new a.Dimension(Math[b](c(d)),d.unit);if(typeof d=="number")return Math[b](d);throw{type:"Argument",message:"argument must be a number"}},argb:function(b){return new a.Anonymous(b.toARGB())},percentage:function(b){return new a.Dimension(b.value*100,"%")},color:function(b){if(b instanceof a.Quoted)return new a.Color(b.value.slice(1));throw{type:"Argument",message:"argument must be a string"}},iscolor:function(b){return this._isa(b,a.Color)},isnumber:function(b){return this._isa(b,a.Dimension)},isstring:function(b){return this._isa(b,a.Quoted)},iskeyword:function(b){return this._isa(b,a.Keyword)},isurl:function(b){return this._isa(b,a.URL)},ispixel:function(b){return b instanceof a.Dimension&&b.unit==="px"?a.True:a.False},ispercentage:function(b){return b instanceof a.Dimension&&b.unit==="%"?a.True:a.False},isem:function(b){return b instanceof a.Dimension&&b.unit==="em"?a.True:a.False},_isa:function(b,c){return b instanceof c?a.True:a.False}}})(c("./tree")),function(a){a.colors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}}(c("./tree")),function(a){a.Alpha=function(a){this.value=a},a.Alpha.prototype={toCSS:function(){return"alpha(opacity="+(this.value.toCSS?this.value.toCSS():this.value)+")"},eval:function(a){return this.value.eval&&(this.value=this.value.eval(a)),this}}}(c("../tree")),function(a){a.Anonymous=function(a){this.value=a.value||a},a.Anonymous.prototype={toCSS:function(){return this.value},eval:function(){return this}}}(c("../tree")),function(a){a.Assignment=function(a,b){this.key=a,this.value=b},a.Assignment.prototype={toCSS:function(){return this.key+"="+(this.value.toCSS?this.value.toCSS():this.value)},eval:function(a){return this.value.eval&&(this.value=this.value.eval(a)),this}}}(c("../tree")),function(a){a.Call=function(a,b,c,d){this.name=a,this.args=b,this.index=c,this.filename=d},a.Call.prototype={eval:function(b){var c=this.args.map(function(a){return a.eval(b)});if(!(this.name in a.functions))return new a.Anonymous(this.name+"("+c.map(function(a){return a.toCSS()}).join(", ")+")");try{return a.functions[this.name].apply(a.functions,c)}catch(d){throw{type:d.type||"Runtime",message:"error evaluating function `"+this.name+"`"+(d.message?": "+d.message:""),index:this.index,filename:this.filename}}},toCSS:function(a){return this.eval(a).toCSS()}}}(c("../tree")),function(a){a.Color=function(a,b){Array.isArray(a)?this.rgb=a:a.length==6?this.rgb=a.match(/.{2}/g).map(function(a){return parseInt(a,16)}):this.rgb=a.split("").map(function(a){return parseInt(a+a,16)}),this.alpha=typeof b=="number"?b:1},a.Color.prototype={eval:function(){return this},toCSS:function(){return this.alpha<1?"rgba("+this.rgb.map(function(a){return Math.round(a)}).concat(this.alpha).join(", ")+")":"#"+this.rgb.map(function(a){return a=Math.round(a),a=(a>255?255:a<0?0:a).toString(16),a.length===1?"0"+a:a}).join("")},operate:function(b,c){var d=[];c instanceof a.Color||(c=c.toColor());for(var e=0;e<3;e++)d[e]=a.operate(b,this.rgb[e],c.rgb[e]);return new a.Color(d,this.alpha+c.alpha)},toHSL:function(){var a=this.rgb[0]/255,b=this.rgb[1]/255,c=this.rgb[2]/255,d=this.alpha,e=Math.max(a,b,c),f=Math.min(a,b,c),g,h,i=(e+f)/2,j=e-f;if(e===f)g=h=0;else{h=i>.5?j/(2-e-f):j/(e+f);switch(e){case a:g=(b-c)/j+(b<c?6:0);break;case b:g=(c-a)/j+2;break;case c:g=(a-b)/j+4}g/=6}return{h:g*360,s:h,l:i,a:d}},toARGB:function(){var a=[Math.round(this.alpha*255)].concat(this.rgb);return"#"+a.map(function(a){return a=Math.round(a),a=(a>255?255:a<0?0:a).toString(16),a.length===1?"0"+a:a}).join("")}}}(c("../tree")),function(a){a.Comment=function(a,b){this.value=a,this.silent=!!b},a.Comment.prototype={toCSS:function(a){return a.compress?"":this.value},eval:function(){return this}}}(c("../tree")),function(a){a.Condition=function(a,b,c,d,e){this.op=a.trim(),this.lvalue=b,this.rvalue=c,this.index=d,this.negate=e},a.Condition.prototype.eval=function(a){var b=this.lvalue.eval(a),c=this.rvalue.eval(a),d=this.index,e,e=function(a){switch(a){case"and":return b&&c;case"or":return b||c;default:if(b.compare)e=b.compare(c);else{if(!c.compare)throw{type:"Type",message:"Unable to perform comparison",index:d};e=c.compare(b)}switch(e){case-1:return a==="<"||a==="=<";case 0:return a==="="||a===">="||a==="=<";case 1:return a===">"||a===">="}}}(this.op);return this.negate?!e:e}}(c("../tree")),function(a){a.Dimension=function(a,b){this.value=parseFloat(a),this.unit=b||null},a.Dimension.prototype={eval:function(){return this},toColor:function(){return new a.Color([this.value,this.value,this.value])},toCSS:function(){var a=this.value+this.unit;return a},operate:function(b,c){return new a.Dimension(a.operate(b,this.value,c.value),this.unit||c.unit)},compare:function(b){return b instanceof a.Dimension?b.value>this.value?-1:b.value<this.value?1:0:-1}}}(c("../tree")),function(a){a.Directive=function(b,c,d){this.name=b,this.features=d&&new a.Value(d),Array.isArray(c)?(this.ruleset=new a.Ruleset([],c),this.ruleset.allowImports=!0):this.value=c},a.Directive.prototype={toCSS:function(a,b){var c=this.features?" "+this.features.toCSS(b):"";return this.ruleset?(this.ruleset.root=!0,this.name+c+(b.compress?"{":" {\n  ")+this.ruleset.toCSS(a,b).trim().replace(/\n/g,"\n  ")+(b.compress?"}":"\n}\n")):this.name+" "+this.value.toCSS()+";\n"},eval:function(a){return this.features=this.features&&this.features.eval(a),a.frames.unshift(this),this.ruleset=this.ruleset&&this.ruleset.eval(a),a.frames.shift(),this},variable:function(b){return a.Ruleset.prototype.variable.call(this.ruleset,b)},find:function(){return a.Ruleset.prototype.find.apply(this.ruleset,arguments)},rulesets:function(){return a.Ruleset.prototype.rulesets.apply(this.ruleset)}}}(c("../tree")),function(a){a.Element=function(b,c,d){this.combinator=b instanceof a.Combinator?b:new a.Combinator(b),typeof c=="string"?this.value=c.trim():c?this.value=c:this.value="",this.index=d},a.Element.prototype.eval=function(b){return new a.Element(this.combinator,this.value.eval?this.value.eval(b):this.value,this.index)},a.Element.prototype.toCSS=function(a){return this.combinator.toCSS(a||{})+(this.value.toCSS?this.value.toCSS(a):this.value)},a.Combinator=function(a){a===" "?this.value=" ":a==="& "?this.value="& ":this.value=a?a.trim():""},a.Combinator.prototype.toCSS=function(a){return{"":""," ":" ","&":"","& ":" ",":":" :","::":"::","+":a.compress?"+":" + ","~":a.compress?"~":" ~ ",">":a.compress?">":" > "}[this.value]}}(c("../tree")),function(a){a.Expression=function(a){this.value=a},a.Expression.prototype={eval:function(b){return this.value.length>1?new a.Expression(this.value.map(function(a){return a.eval(b)})):this.value.length===1?this.value[0].eval(b):this},toCSS:function(a){return this.value.map(function(b){return b.toCSS?b.toCSS(a):""}).join(" ")}}}(c("../tree")),function(a){a.Import=function(b,c,d,e){var f=this;this.index=e,this._path=b,this.features=d&&new a.Value(d),b instanceof a.Quoted?this.path=/\.(le?|c)ss(\?.*)?$/.test(b.value)?b.value:b.value+".less":this.path=b.value.value||b.value,this.css=/css(\?.*)?$/.test(this.path),this.css||c.push(this.path,function(b,c){b&&(b.index=e),f.root=c||new a.Ruleset([],[])})},a.Import.prototype={toCSS:function(a){var b=this.features?" "+this.features.toCSS(a):"";return this.css?"@import "+this._path.toCSS()+b+";\n":""},eval:function(b){var c,d=this.features&&this.features.eval(b);if(this.css)return this;c=new a.Ruleset([],this.root.rules.slice(0));for(var e=0;e<c.rules.length;e++)c.rules[e]instanceof a.Import&&Array.prototype.splice.apply(c.rules,[e,1].concat(c.rules[e].eval(b)));return this.features?new a.Directive("@media",c.rules,this.features.value):c.rules}}}(c("../tree")),function(a){a.JavaScript=function(a,b,c){this.escaped=c,this.expression=a,this.index=b},a.JavaScript.prototype={eval:function(b){var c,d=this,e={},f=this.expression.replace(/@\{([\w-]+)\}/g,function(c,e){return a.jsify((new a.Variable("@"+e,d.index)).eval(b))});try{f=new Function("return ("+f+")")}catch(g){throw{message:"JavaScript evaluation error: `"+
+f+"`",index:this.index}}for(var h in b.frames[0].variables())e[h.slice(1)]={value:b.frames[0].variables()[h].value,toJS:function(){return this.value.eval(b).toCSS()}};try{c=f.call(e)}catch(g){throw{message:"JavaScript evaluation error: '"+g.name+": "+g.message+"'",index:this.index}}return typeof c=="string"?new a.Quoted('"'+c+'"',c,this.escaped,this.index):Array.isArray(c)?new a.Anonymous(c.join(", ")):new a.Anonymous(c)}}}(c("../tree")),function(a){a.Keyword=function(a){this.value=a},a.Keyword.prototype={eval:function(){return this},toCSS:function(){return this.value},compare:function(b){return b instanceof a.Keyword?b.value===this.value?0:1:-1}},a.True=new a.Keyword("true"),a.False=new a.Keyword("false")}(c("../tree")),function(a){a.mixin={},a.mixin.Call=function(b,c,d,e,f){this.selector=new a.Selector(b),this.arguments=c,this.index=d,this.filename=e,this.important=f},a.mixin.Call.prototype={eval:function(a){var b,c,d=[],e=!1;for(var f=0;f<a.frames.length;f++)if((b=a.frames[f].find(this.selector)).length>0){c=this.arguments&&this.arguments.map(function(b){return b.eval(a)});for(var g=0;g<b.length;g++)if(b[g].match(c,a))try{Array.prototype.push.apply(d,b[g].eval(a,this.arguments,this.important).rules),e=!0}catch(h){throw{message:h.message,index:h.index,filename:this.filename,stack:h.stack,call:this.index}}if(e)return d;throw{type:"Runtime",message:"No matching definition was found for `"+this.selector.toCSS().trim()+"("+this.arguments.map(function(a){return a.toCSS()}).join(", ")+")`",index:this.index,filename:this.filename}}throw{type:"Name",message:this.selector.toCSS().trim()+" is undefined",index:this.index,filename:this.filename}}},a.mixin.Definition=function(b,c,d,e){this.name=b,this.selectors=[new a.Selector([new a.Element(null,b)])],this.params=c,this.condition=e,this.arity=c.length,this.rules=d,this._lookups={},this.required=c.reduce(function(a,b){return!b.name||b.name&&!b.value?a+1:a},0),this.parent=a.Ruleset.prototype,this.frames=[]},a.mixin.Definition.prototype={toCSS:function(){return""},variable:function(a){return this.parent.variable.call(this,a)},variables:function(){return this.parent.variables.call(this)},find:function(){return this.parent.find.apply(this,arguments)},rulesets:function(){return this.parent.rulesets.apply(this)},evalParams:function(b,c){var d=new a.Ruleset(null,[]);for(var e=0,f;e<this.params.length;e++)if(this.params[e].name){if(!(f=c&&c[e]||this.params[e].value))throw{type:"Runtime",message:"wrong number of arguments for "+this.name+" ("+c.length+" for "+this.arity+")"};d.rules.unshift(new a.Rule(this.params[e].name,f.eval(b)))}return d},eval:function(b,c,d){var e=this.evalParams(b,c),f,g=[],h;for(var i=0;i<Math.max(this.params.length,c&&c.length);i++)g.push(c[i]||this.params[i].value);return e.rules.unshift(new a.Rule("@arguments",(new a.Expression(g)).eval(b))),h=d?this.rules.map(function(b){return new a.Rule(b.name,b.value,"!important",b.index)}):this.rules.slice(0),(new a.Ruleset(null,h)).eval({frames:[this,e].concat(this.frames,b.frames)})},match:function(a,b){var c=a&&a.length||0,d,e;if(c<this.required)return!1;if(this.required>0&&c>this.params.length)return!1;if(this.condition&&!this.condition.eval({frames:[this.evalParams(b,a)].concat(b.frames)}))return!1;d=Math.min(c,this.arity);for(var f=0;f<d;f++)if(!this.params[f].name&&a[f].eval(b).toCSS()!=this.params[f].value.eval(b).toCSS())return!1;return!0}}}(c("../tree")),function(a){a.Operation=function(a,b){this.op=a.trim(),this.operands=b},a.Operation.prototype.eval=function(b){var c=this.operands[0].eval(b),d=this.operands[1].eval(b),e;if(c instanceof a.Dimension&&d instanceof a.Color){if(this.op!=="*"&&this.op!=="+")throw{name:"OperationError",message:"Can't substract or divide a color from a number"};e=d,d=c,c=e}return c.operate(this.op,d)},a.operate=function(a,b,c){switch(a){case"+":return b+c;case"-":return b-c;case"*":return b*c;case"/":return b/c}}}(c("../tree")),function(a){a.Paren=function(a){this.value=a},a.Paren.prototype={toCSS:function(a){return"("+this.value.toCSS(a)+")"},eval:function(b){return new a.Paren(this.value.eval(b))}}}(c("../tree")),function(a){a.Quoted=function(a,b,c,d){this.escaped=c,this.value=b||"",this.quote=a.charAt(0),this.index=d},a.Quoted.prototype={toCSS:function(){return this.escaped?this.value:this.quote+this.value+this.quote},eval:function(b){var c=this,d=this.value.replace(/`([^`]+)`/g,function(d,e){return(new a.JavaScript(e,c.index,!0)).eval(b).value}).replace(/@\{([\w-]+)\}/g,function(d,e){var f=(new a.Variable("@"+e,c.index)).eval(b);return"value"in f?f.value:f.toCSS()});return new a.Quoted(this.quote+d+this.quote,d,this.escaped,this.index)}}}(c("../tree")),function(a){a.Rule=function(b,c,d,e,f){this.name=b,this.value=c instanceof a.Value?c:new a.Value([c]),this.important=d?" "+d.trim():"",this.index=e,this.inline=f||!1,b.charAt(0)==="@"?this.variable=!0:this.variable=!1},a.Rule.prototype.toCSS=function(a){return this.variable?"":this.name+(a.compress?":":": ")+this.value.toCSS(a)+this.important+(this.inline?"":";")},a.Rule.prototype.eval=function(b){return new a.Rule(this.name,this.value.eval(b),this.important,this.index,this.inline)},a.Shorthand=function(a,b){this.a=a,this.b=b},a.Shorthand.prototype={toCSS:function(a){return this.a.toCSS(a)+"/"+this.b.toCSS(a)},eval:function(){return this}}}(c("../tree")),function(a){a.Ruleset=function(a,b){this.selectors=a,this.rules=b,this._lookups={}},a.Ruleset.prototype={eval:function(b){var c=this.selectors&&this.selectors.map(function(a){return a.eval(b)}),d=new a.Ruleset(c,this.rules.slice(0));d.root=this.root,d.allowImports=this.allowImports,b.frames.unshift(d);if(d.root||d.allowImports)for(var e=0;e<d.rules.length;e++)d.rules[e]instanceof a.Import&&Array.prototype.splice.apply(d.rules,[e,1].concat(d.rules[e].eval(b)));for(var e=0;e<d.rules.length;e++)d.rules[e]instanceof a.mixin.Definition&&(d.rules[e].frames=b.frames.slice(0));for(var e=0;e<d.rules.length;e++)d.rules[e]instanceof a.mixin.Call&&Array.prototype.splice.apply(d.rules,[e,1].concat(d.rules[e].eval(b)));for(var e=0,f;e<d.rules.length;e++)f=d.rules[e],f instanceof a.mixin.Definition||(d.rules[e]=f.eval?f.eval(b):f);return b.frames.shift(),d},match:function(a){return!a||a.length===0},variables:function(){return this._variables?this._variables:this._variables=this.rules.reduce(function(b,c){return c instanceof a.Rule&&c.variable===!0&&(b[c.name]=c),b},{})},variable:function(a){return this.variables()[a]},rulesets:function(){return this._rulesets?this._rulesets:this._rulesets=this.rules.filter(function(b){return b instanceof a.Ruleset||b instanceof a.mixin.Definition})},find:function(b,c){c=c||this;var d=[],e,f,g=b.toCSS();return g in this._lookups?this._lookups[g]:(this.rulesets().forEach(function(e){if(e!==c)for(var g=0;g<e.selectors.length;g++)if(f=b.match(e.selectors[g])){b.elements.length>e.selectors[g].elements.length?Array.prototype.push.apply(d,e.find(new a.Selector(b.elements.slice(1)),c)):d.push(e);break}}),this._lookups[g]=d)},toCSS:function(b,c){var d=[],e=[],f=[],g=[],h,i;this.root||(b.length===0?g=this.selectors.map(function(a){return[a]}):this.joinSelectors(g,b,this.selectors));for(var j=0;j<this.rules.length;j++)i=this.rules[j],i.rules||i instanceof a.Directive?f.push(i.toCSS(g,c)):i instanceof a.Comment?i.silent||(this.root?f.push(i.toCSS(c)):e.push(i.toCSS(c))):i.toCSS&&!i.variable?e.push(i.toCSS(c)):i.value&&!i.variable&&e.push(i.value.toString());return f=f.join(""),this.root?d.push(e.join(c.compress?"":"\n")):e.length>0&&(h=g.map(function(a){return a.map(function(a){return a.toCSS(c)}).join("").trim()}).join(c.compress?",":g.length>3?",\n":", "),d.push(h,(c.compress?"{":" {\n  ")+e.join(c.compress?"":"\n  ")+(c.compress?"}":"\n}\n"))),d.push(f),d.join("")+(c.compress?"\n":"")},joinSelectors:function(a,b,c){for(var d=0;d<c.length;d++)this.joinSelector(a,b,c[d])},joinSelector:function(b,c,d){var e=[],f=[],g=[],h=[],i=!1,j;for(var k=0;k<d.elements.length;k++)j=d.elements[k],j.combinator.value.charAt(0)==="&"&&(i=!0),i?h.push(j):g.push(j);i||(h=g,g=[]),g.length>0&&e.push(new a.Selector(g)),h.length>0&&f.push(new a.Selector(h));for(var l=0;l<c.length;l++)b.push(e.concat(c[l]).concat(f))}}}(c("../tree")),function(a){a.Selector=function(a){this.elements=a,this.elements[0].combinator.value===""&&(this.elements[0].combinator.value=" ")},a.Selector.prototype.match=function(a){var b=this.elements.length,c=a.elements.length,d=Math.min(b,c);if(b<c)return!1;for(var e=0;e<d;e++)if(this.elements[e].value!==a.elements[e].value)return!1;return!0},a.Selector.prototype.eval=function(b){return new a.Selector(this.elements.map(function(a){return a.eval(b)}))},a.Selector.prototype.toCSS=function(a){return this._css?this._css:this._css=this.elements.map(function(b){return typeof b=="string"?" "+b.trim():b.toCSS(a)}).join("")}}(c("../tree")),function(b){b.URL=function(b,c){b.data?this.attrs=b:(typeof a!="undefined"&&!/^(?:https?:\/\/|file:\/\/|data:|\/)/.test(b.value)&&c.length>0&&(b.value=c[0]+(b.value.charAt(0)==="/"?b.value.slice(1):b.value)),this.value=b,this.paths=c)},b.URL.prototype={toCSS:function(){return"url("+(this.attrs?"data:"+this.attrs.mime+this.attrs.charset+this.attrs.base64+this.attrs.data:this.value.toCSS())+")"},eval:function(a){return this.attrs?this:new b.URL(this.value.eval(a),this.paths)}}}(c("../tree")),function(a){a.Value=function(a){this.value=a,this.is="value"},a.Value.prototype={eval:function(b){return this.value.length===1?this.value[0].eval(b):new a.Value(this.value.map(function(a){return a.eval(b)}))},toCSS:function(a){return this.value.map(function(b){return b.toCSS(a)}).join(a.compress?",":", ")}}}(c("../tree")),function(a){a.Variable=function(a,b,c){this.name=a,this.index=b,this.file=c},a.Variable.prototype={eval:function(b){var c,d,e=this.name;e.indexOf("@@")==0&&(e="@"+(new a.Variable(e.slice(1))).eval(b).value);if(c=a.find(b.frames,function(a){if(d=a.variable(e))return d.value.eval(b)}))return c;throw{type:"Name",message:"variable "+e+" is undefined",filename:this.file,index:this.index}}}}(c("../tree")),function(a){a.find=function(a,b){for(var c=0,d;c<a.length;c++)if(d=b.call(a,a[c]))return d;return null},a.jsify=function(a){return Array.isArray(a.value)&&a.value.length>1?"["+a.value.map(function(a){return a.toCSS(!1)}).join(", ")+"]":a.toCSS(!1)}}(c("./tree"));var g=location.protocol==="file:"||location.protocol==="chrome:"||location.protocol==="chrome-extension:"||location.protocol==="resource:";d.env=d.env||(location.hostname=="127.0.0.1"||location.hostname=="0.0.0.0"||location.hostname=="localhost"||location.port.length>0||g?"development":"production"),d.async=!1,d.poll=d.poll||(g?1e3:1500),d.watch=function(){return this.watchMode=!0},d.unwatch=function(){return this.watchMode=!1},d.env==="development"?(d.optimization=0,/!watch/.test(location.hash)&&d.watch(),d.watchTimer=setInterval(function(){d.watchMode&&n(function(a,b,c,d,e){b&&r(b.toCSS(),d,e.lastModified)})},d.poll)):d.optimization=3;var h;try{h=typeof a.localStorage=="undefined"?null:a.localStorage}catch(i){h=null}var j=document.getElementsByTagName("link"),k=/^text\/(x-)?less$/;d.sheets=[];for(var l=0;l<j.length;l++)(j[l].rel==="stylesheet/less"||j[l].rel.match(/stylesheet/)&&j[l].type.match(k))&&d.sheets.push(j[l]);d.refresh=function(a){var b,c;b=c=new Date,n(function(a,d,e,f,g){g.local?v("loading "+f.href+" from cache."):(v("parsed "+f.href+" successfully."),r(d.toCSS(),f,g.lastModified)),v("css for "+f.href+" generated in "+(new Date-c)+"ms"),g.remaining===0&&v("css generated in "+(new Date-b)+"ms"),c=new Date},a),m()},d.refreshStyles=m,d.refresh(d.env==="development")})(window);
\ No newline at end of file
index f7fb0d8..bd914ce 100644 (file)
@@ -45,7 +45,7 @@ class SkinMonoBook extends SkinTemplate {
        function setupSkinUserCss( OutputPage $out ) {
                parent::setupSkinUserCss( $out );
 
-               $out->addModuleStyles( 'skins.monobook' );
+               $out->addModuleStyles( array( 'skins.common.interface', 'skins.monobook.styles' ) );
 
                // TODO: Migrate all of these
                $out->addStyle( 'monobook/IE60Fixes.css', 'screen', 'IE 6' );
index 288b5fd..00b920a 100644 (file)
@@ -67,7 +67,7 @@ class SkinVector extends SkinTemplate {
        function setupSkinUserCss( OutputPage $out ) {
                parent::setupSkinUserCss( $out );
 
-               $styles = array( 'skins.vector' );
+               $styles = array( 'skins.common.interface', 'skins.vector.styles' );
                wfRunHooks( 'SkinVectorStyleModules', array( &$this, &$styles ) );
                $out->addModuleStyles( $styles );
        }
index c7804a0..2d45653 100644 (file)
@@ -17,6 +17,12 @@ a.new {
        border: 1px solid #aaaaaa;
        background-color: #f9f9f9;
        padding: 5px;
+       display: -moz-inline-block;
+       display: inline-block;
+       display: table;
+       /* IE7 and earlier */
+       zoom: 1;
+       *display: inline;
 }
 
 /* images */
diff --git a/skins/vector/beta/screen.less b/skins/vector/beta/screen.less
deleted file mode 100644 (file)
index 6d56cd5..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Content */
-#content {
-       line-height: 1.5em;
-       .mw-editsection {
-               font-family: @content-font-family;
-       }
-
-       h1,
-       #firstHeading {
-               font-family: @content-heading-font-family;
-               font-size: 1.833em;
-               line-height: 22pt;
-               padding: 0;
-               margin-bottom: 4pt;
-       }
-
-       h2 {
-               font-size: 1.5em;
-               line-height: 22pt;
-       }
-
-       h2,
-       h3,
-       h4,
-       h5,
-       h6 {
-               font-family: @content-heading-font-family;
-               padding: 0;
-               margin-bottom: 4pt;
-               margin-top: 14pt;
-       }
-
-       h3 {
-               font-size: 1.17em;
-               line-height: 22pt;
-       }
-
-       h3,
-       h4 {
-               font-weight: bold;
-       }
-
-       h4,
-       h5,
-       h6 {
-               font-size: 100%; /* (reset) */
-       }
-
-       h6 {
-               font-style: italic;
-       }
-
-       p {
-               margin-bottom: 8pt;
-       }
-
-       // FIXME: this is hacky
-       #toc h2 {
-               font-size: 100%;
-       }
-}
-
-/* Personal menu */
-#p-personal a {
-       color: #555;
-}
-
-/* Main menu */
-div#mw-panel div.portal {
-       margin-left: 1.25em;
-       h3 {
-               margin: 0;
-               line-height: 1;
-       }
-}
diff --git a/skins/vector/beta/variables.less b/skins/vector/beta/variables.less
deleted file mode 100644 (file)
index 08e662d..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-@html-font-size: 90%;
-
-@body-font-size: inherit;
-
-// Page content
-@content-font-family: "Helvetica Neue", "Helvetica", "Nimbus Sans L", "Arial", "Liberation Sans", sans-serif;
-@content-font-color: #252525;
-@content-font-size: 0.9em;
-@content-line-height: inherit;
-@content-padding: 1em;
-@content-heading-font-size: 1.6em;
-@content-heading-font-family: Georgia, "DejaVu Serif", serif;
-
-// Common menu
-@menu-link-color: #555;
-
-// Main menu
-@menu-main-font-size: 0.82em;
-@menu-main-heading-font-size: 100%;
-@menu-main-heading-padding: 5px 0;
-
-@menu-main-body-font-size: inherit;
-@menu-main-body-link-color: inherit;
-@menu-main-body-link-visited-color: inherit;
-@menu-main-body-margin: 0;
-@menu-main-body-padding: 0 0 10px;
-@menu-main-logo-left: 1.6em;
-
-// Personal menu
-@menu-personal-font-size: 0.75em;
-
-// Collapsible nav
-@collapsible-nav-heading-color: #555;
-@collapsible-nav-heading-collapsed-color: inherit;
-
-@collapsible-nav-heading-padding: 4px 0 3px 1.5em;
-@collapsible-nav-body-margin: 0 0 0 1.25em;
index 83d043e..e33cfc9 100644 (file)
                        collapsible: 'li.collapsible',
                        shifting: false,
                        expandCondition: function ( eleWidth ) {
-                               // If there's at least eleWidth pixels free space, expand.
-                               return calculateTabDistance() >= eleWidth;
+                               // If there are at least eleWidth + 1 pixels of free space, expand.
+                               // We add 1 because .width() will truncate fractional values
+                               // but .offset() will not.
+                               return calculateTabDistance() >= (eleWidth + 1);
                        },
                        collapseCondition: function () {
                                // If there's an overlap, collapse.
index 5a1fc05..2683a21 100644 (file)
@@ -2,7 +2,7 @@
 
 div#content {
        margin-left: 11em;
-       padding: 1.25em 1.5em 1.5em 1.5em;
+       padding: 1.5em 1.5em 1.5em 1.75em;
 }
 #p-logo {
        left: @menu-main-logo-left;
diff --git a/skins/vector/styles-beta.less b/skins/vector/styles-beta.less
deleted file mode 100644 (file)
index a76b639..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-@import "variables.less";
-@import "beta/variables.less";
-
-@media screen {
-       @import "screen.less";
-       @import "beta/screen.less";
-       @import "externalLinks.less";
-       @import "collapsibleNav.less";
-}
-
-@media screen and (min-width: 982px) {
-       @import "screen-hd.less";
-}
index 691e0fd..f818401 100644 (file)
@@ -7,7 +7,7 @@
 @content-font-color: black;
 @content-font-size: 0.8em;
 @content-line-height: 1.5em;
-@content-padding: 1.5em 1.5em 1.5em 1.75em;
+@content-padding: 1.25em 1.5em 1.5em 1.5em;
 @content-heading-font-size: 1.6em;
 @content-heading-font-family: sans-serif;
 
index 46a894c..58df552 100644 (file)
@@ -57,6 +57,7 @@ $wgAutoloadClasses += array(
        'ApiTestCase' => "$testDir/phpunit/includes/api/ApiTestCase.php",
        'ApiTestContext' => "$testDir/phpunit/includes/api/ApiTestContext.php",
        'MockApi' => "$testDir/phpunit/includes/api/MockApi.php",
+       'MockApiQueryBase' => "$testDir/phpunit/includes/api/MockApiQueryBase.php",
        'UserWrapper' => "$testDir/phpunit/includes/api/UserWrapper.php",
        'RandomImageGenerator' => "$testDir/phpunit/includes/api/RandomImageGenerator.php",
 
diff --git a/tests/phpunit/includes/api/ApiQueryAllPagesTest.php b/tests/phpunit/includes/api/ApiQueryAllPagesTest.php
new file mode 100644 (file)
index 0000000..bc08afe
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * @group API
+ * @group Database
+ * @group medium
+ */
+class ApiQueryAllPagesTest extends ApiTestCase {
+       protected function setUp() {
+               parent::setUp();
+               $this->doLogin();
+       }
+
+       function testBug25702() {
+               $title = Title::newFromText( 'Category:Template:xyz' );
+               $page = WikiPage::factory( $title );
+               $page->doEdit( 'Some text', 'inserting content' );
+
+               $result = $this->doApiRequest( array(
+                       'action' => 'query',
+                       'list' => 'allpages',
+                       'apnamespace' => NS_CATEGORY,
+                       'apprefix' => 'Template:x' ) );
+
+               $this->assertArrayHasKey( 'query', $result[0] );
+               $this->assertArrayHasKey( 'allpages', $result[0]['query'] );
+               $this->assertNotEquals( 0, count( $result[0]['query']['allpages'] ),
+                       'allpages list does not contain page Category:Template:xyz' );
+       }
+}
diff --git a/tests/phpunit/includes/api/MockApiQueryBase.php b/tests/phpunit/includes/api/MockApiQueryBase.php
new file mode 100644 (file)
index 0000000..4bede51
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+class MockApiQueryBase extends ApiQueryBase {
+       public function execute() {
+       }
+
+       public function getVersion() {
+       }
+
+       public function __construct() {
+       }
+}
index 2ec5fe3..ea0b323 100644 (file)
@@ -7,10 +7,32 @@
  * @covers ApiQuery
  */
 class ApiQueryTest extends ApiTestCase {
+       /**
+        * @var array Storage for $wgHooks
+        */
+       protected $hooks;
 
        protected function setUp() {
+               global $wgHooks;
+
                parent::setUp();
                $this->doLogin();
+
+               // Setup en: as interwiki prefix
+               $this->hooks = $wgHooks;
+               $wgHooks['InterwikiLoadPrefix'][] = function ( $prefix, &$data ) {
+                       if ( $prefix == 'apiquerytestiw' ) {
+                               $data = array( 'iw_url' => 'wikipedia' );
+                       }
+                       return false;
+               };
+       }
+
+       protected function tearDown() {
+               global $wgHooks;
+               $wgHooks = $this->hooks;
+
+               parent::tearDown();
        }
 
        public function testTitlesGetNormalized() {
@@ -64,4 +86,38 @@ class ApiQueryTest extends ApiTestCase {
                $this->assertArrayHasKey( 'missing', $data[0]['query']['pages'][-2] );
                $this->assertArrayHasKey( 'invalid', $data[0]['query']['pages'][-1] );
        }
+
+       /**
+        * Test the ApiBase::titlePartToKey function
+        *
+        * @param string $titlePart
+        * @param int $namespace
+        * @param string $expected
+        * @param string $description
+        * @dataProvider provideTestTitlePartToKey
+        */
+       function testTitlePartToKey( $titlePart, $namespace, $expected, $expectException ) {
+               $api = new MockApiQueryBase();
+               $exceptionCaught = false;
+               try {
+                       $this->assertEquals( $expected, $api->titlePartToKey( $titlePart, $namespace ) );
+               } catch ( UsageException $e ) {
+                       $exceptionCaught = true;
+               }
+               $this->assertEquals( $expectException, $exceptionCaught,
+                       'UsageException thrown by titlePartToKey' );
+       }
+
+       function provideTestTitlePartToKey() {
+               return array(
+                       array( 'a  b  c', NS_MAIN, 'A_b_c', false ),
+                       array( 'x', NS_MAIN, 'X', false ),
+                       array( 'y ', NS_MAIN, 'Y_', false ),
+                       array( 'template:foo', NS_CATEGORY, 'Template:foo', false ),
+                       array( 'apiquerytestiw:foo', NS_CATEGORY, 'Apiquerytestiw:foo', false ),
+                       array( "\xF7", NS_MAIN, null, true ),
+                       array( 'template:foo', NS_MAIN, null, true ),
+                       array( 'apiquerytestiw:foo', NS_MAIN, null, true ),
+               );
+       }
 }
index 124b477..c742444 100644 (file)
@@ -308,7 +308,7 @@ class NewParserTest extends MediaWikiTestCase {
                                $useConfig['name'] = 'local-backend'; // swap name
                                unset( $useConfig['lockManager'] );
                                unset( $useConfig['fileJournal'] );
-                               $class = $conf['class'];
+                               $class = $useConfig['class'];
                                self::$backendToUse = new $class( $useConfig );
                                $backend = self::$backendToUse;
                        }
@@ -318,11 +318,7 @@ class NewParserTest extends MediaWikiTestCase {
                        # informations.
                        $backend = new MockFileBackend( array(
                                'name' => 'local-backend',
-                               'wikiId' => wfWikiId(),
-                               'containerPaths' => array(
-                                       'local-public' => "$uploadDir",
-                                       'local-thumb' => "$uploadDir/thumb",
-                               )
+                               'wikiId' => wfWikiId()
                        ) );
                }
 
@@ -448,16 +444,12 @@ class NewParserTest extends MediaWikiTestCase {
                ) );
 
                // No helpful SVG file to copy, so make one ourselves
-               $tmpDir = wfTempDir();
-               $tempFsFile = new TempFSFile( "$tmpDir/Foobar.svg" );
-               $tempFsFile->autocollect(); // destroy file when $tempFsFile leaves scope
-               file_put_contents( "$tmpDir/Foobar.svg",
-                       '<?xml version="1.0" encoding="utf-8"?>' .
-                       '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"><text>Foo</text></svg>' );
+               $data = '<?xml version="1.0" encoding="utf-8"?>' .
+                       '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"><text>Foo</text></svg>';
 
                $backend->prepare( array( 'dir' => "$base/local-public/f/ff" ) );
-               $backend->quickStore( array(
-                       'src' => "$tmpDir/Foobar.svg", 'dst' => "$base/local-public/f/ff/Foobar.svg"
+               $backend->quickCreate( array(
+                       'content' => $data, 'dst' => "$base/local-public/f/ff/Foobar.svg"
                ) );
        }
 
index 6abd09f..71d32c3 100644 (file)
@@ -81,6 +81,56 @@ class CLDRPluralRuleEvaluatorTest extends MediaWikiTestCase {
                        array( 0, 'n in 3..10,13..19', 13, 'scottish rule - ranges with comma' ),
 
                        array( 0, '5 mod 3 is n', 2, 'n as result of mod - no need to pass' ),
+
+                       # Revision 33 new operand examples
+                       # expected, rule, number, comment
+                       array( 0, 'i is 1', '1.00', 'new operand i' ),
+                       array( 0, 'v is 2', '1.00', 'new operand v' ),
+                       array( 0, 'w is 0', '1.00', 'new operand w' ),
+                       array( 0, 'f is 0', '1.00', 'new operand f' ),
+                       array( 0, 't is 0', '1.00', 'new operand t' ),
+
+                       array( 0, 'i is 1', '1.30', 'new operand i' ),
+                       array( 0, 'v is 2', '1.30', 'new operand v' ),
+                       array( 0, 'w is 1', '1.30', 'new operand w' ),
+                       array( 0, 'f is 30', '1.30', 'new operand f' ),
+                       array( 0, 't is 3', '1.30', 'new operand t' ),
+
+                       array( 0, 'i is 1', '1.03', 'new operand i' ),
+                       array( 0, 'v is 2', '1.03', 'new operand v' ),
+                       array( 0, 'w is 2', '1.03', 'new operand w' ),
+                       array( 0, 'f is 3', '1.03', 'new operand f' ),
+                       array( 0, 't is 3', '1.03', 'new operand t' ),
+
+                       # Revision 33 new operator aliases
+                       # expected, rule, number, comment
+                       array( 0, 'n % 3 is 1', 7, 'new % operator' ),
+                       array( 0, 'n = 1,3,5', 3, 'new = operator' ),
+                       array( 1, 'n != 1,3,5', 5, 'new != operator' ),
+
+                       # Revision 33 samples
+                       # expected, rule, number, comment
+                       array( 0, 'n in 1,3,5@integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …', 3, 'samples' ),
+
+                       # Revision 33 some test cases from CLDR
+                       array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.1', 'pt one' ),
+                       array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.01', 'pt one' ),
+                       array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.10', 'pt one' ),
+                       array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.010', 'pt one' ),
+                       array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.100', 'pt one' ),
+                       array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '0.0', 'pt other' ),
+                       array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '0.2', 'pt other' ),
+                       array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '10.0', 'pt other' ),
+                       array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '100.0', 'pt other' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '2', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '4', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '22', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '102', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '0.2', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '0.4', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '10.2', 'bs few' ),
+                       array( 1, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '10.0', 'bs other' ),
+
                );
 
                return $tests;
index 49aefbd..de8590e 100644 (file)
  * @ingroup FileBackend
  * @since 1.22
  */
-class MockFileBackend extends FileBackendStore {
-
-       protected $mocked = array();
-
-       /** Poor man debugging */
-       protected function debug( $msg = '' ) {
-               wfDebug( wfGetCaller() . "$msg\n" );
-       }
-
-       public function isPathUsableInternal( $storagePath ) {
-               return true;
-       }
-
-       protected function doCreateInternal( array $params ) {
-               if ( isset( $params['content'] ) ) {
-                       $content = $params['content'];
-               } else {
-                       $content = 'Default mocked file content';
-               }
-               $this->debug( serialize( $params ) );
-               $dst = $params['dst'];
-               $this->mocked[$dst] = $content;
-               return Status::newGood();
-       }
-
-       protected function doStoreInternal( array $params ) {
-               $this->debug( serialize( $params ) );
-               return $this->doCreateInternal( $params );
-       }
-
-       protected function doCopyInternal( array $params ) {
-               $this->debug( serialize( $params ) );
-               $src = $params['src'];
-               $dst = $params['dst'];
-               $this->mocked[$dst] = $this->mocked[$src];
-               return Status::newGood();
-       }
-
-       protected function doDeleteInternal( array $params ) {
-               $this->debug( serialize( $params ) );
-               $src = $params['src'];
-               unset( $this->mocked[$src] );
-               return Status::newGood();
-       }
-
-       protected function doGetFileStat( array $params ) {
-               $src = $params['src'];
-               if ( array_key_exists( $src, $this->mocked ) ) {
-                       $this->debug( "('$src') found" );
-                       return array(
-                               'mtime' => wfTimestamp( TS_MW ),
-                               'size' => strlen( $this->mocked[$src] ),
-                               # No sha1, stat does not need it.
-                       );
-               } else {
-                       $this->debug( "('$src') not found" );
-                       return false;
-               }
-       }
-
+class MockFileBackend extends MemoryFileBackend {
        protected function doGetLocalCopyMulti( array $params ) {
                $tmpFiles = array(); // (path => MockFSFile)
-
-               $this->debug( '(' . serialize( $params ) . ')' );
                foreach ( $params['srcs'] as $src ) {
-                       $tmpFiles[$src] = new MockFSFile(
-                               wfTempDir() . '/' . wfRandomString( 32 )
-                       );
+                       $tmpFiles[$src] = new MockFSFile( wfTempDir() . '/' . wfRandomString( 32 ) );
                }
                return $tmpFiles;
        }
-
-       protected function doDirectoryExists( $container, $dir, array $params ) {
-               $this->debug();
-               return true;
-       }
-
-       public function getDirectoryListInternal( $container, $dir, array $params ) {
-               $this->debug();
-               return array();
-       }
-
-       public function getFileListInternal( $container, $dir, array $params ) {
-               $this->debug();
-               return array();
-       }
-
-       protected function directoriesAreVirtual() {
-               $this->debug();
-               return true;
-       }
 }