Merge "Add getMessage tests with Short and Long Contexts"
authorMwalker <mwalker@wikimedia.org>
Mon, 3 Mar 2014 19:45:04 +0000 (19:45 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 3 Mar 2014 19:45:04 +0000 (19:45 +0000)
362 files changed:
.jshintignore
.travis.yml
RELEASE-NOTES-1.23
docs/hooks.txt
includes/Action.php [deleted file]
includes/AutoLoader.php
includes/DefaultSettings.php
includes/Exception.php [deleted file]
includes/GlobalFunctions.php
includes/SiteStats.php
includes/SkinTemplate.php
includes/User.php
includes/UserMailer.php
includes/Wiki.php
includes/actions/Action.php [new file with mode: 0644]
includes/actions/FormAction.php [new file with mode: 0644]
includes/actions/FormlessAction.php [new file with mode: 0644]
includes/api/ApiFeedContributions.php
includes/api/ApiFormatBase.php
includes/api/ApiMain.php
includes/api/ApiQuery.php
includes/api/ApiQueryAllLinks.php
includes/api/ApiQueryBlocks.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQueryRedirects.php [new file with mode: 0644]
includes/api/ApiQuerySearch.php
includes/api/ApiQueryUserContributions.php
includes/api/ApiRunJobs.php [new file with mode: 0644]
includes/db/DatabaseMysqli.php
includes/db/DatabaseOracle.php
includes/diff/ArrayDiffFormatter.php
includes/diff/DairikiDiff.php
includes/exception/BadTitleError.php [new file with mode: 0644]
includes/exception/ErrorPageError.php [new file with mode: 0644]
includes/exception/FatalError.php [new file with mode: 0644]
includes/exception/HttpError.php [new file with mode: 0644]
includes/exception/MWException.php [new file with mode: 0644]
includes/exception/MWExceptionHandler.php [new file with mode: 0644]
includes/exception/PermissionsError.php [new file with mode: 0644]
includes/exception/ReadOnlyError.php [new file with mode: 0644]
includes/exception/ThrottledError.php [new file with mode: 0644]
includes/exception/UserBlockedError.php [new file with mode: 0644]
includes/exception/UserNotLoggedIn.php [new file with mode: 0644]
includes/filebackend/FileBackendStore.php
includes/filebackend/SwiftFileBackend.php
includes/filerepo/ForeignDBViaLBRepo.php
includes/htmlform/HTMLFormField.php
includes/installer/Installer.i18n.php
includes/installer/MysqlUpdater.php
includes/installer/PostgresUpdater.php
includes/installer/SqliteUpdater.php
includes/job/JobQueue.php
includes/libs/CSSJanus.php
includes/resourceloader/ResourceLoaderFileModule.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/search/SearchEngine.php
includes/specials/SpecialChangePassword.php
includes/specials/SpecialContributions.php
includes/specials/SpecialDiff.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialVersion.php
includes/templates/Userlogin.php
includes/upload/UploadBase.php
includes/upload/UploadStash.php
languages/Language.php
languages/messages/MessagesAb.php
languages/messages/MessagesAce.php
languages/messages/MessagesAeb.php
languages/messages/MessagesAf.php
languages/messages/MessagesAk.php
languages/messages/MessagesAln.php
languages/messages/MessagesAn.php
languages/messages/MessagesAnp.php
languages/messages/MessagesAr.php
languages/messages/MessagesAry.php
languages/messages/MessagesArz.php
languages/messages/MessagesAs.php
languages/messages/MessagesAst.php
languages/messages/MessagesAy.php
languages/messages/MessagesAz.php
languages/messages/MessagesAzb.php
languages/messages/MessagesBa.php
languages/messages/MessagesBar.php
languages/messages/MessagesBbc_latn.php
languages/messages/MessagesBcl.php
languages/messages/MessagesBe.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBho.php
languages/messages/MessagesBjn.php
languages/messages/MessagesBn.php
languages/messages/MessagesBpy.php
languages/messages/MessagesBqi.php
languages/messages/MessagesBrh.php
languages/messages/MessagesBs.php
languages/messages/MessagesBxr.php
languages/messages/MessagesCa.php
languages/messages/MessagesCdo.php
languages/messages/MessagesCe.php
languages/messages/MessagesCeb.php
languages/messages/MessagesCh.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCo.php
languages/messages/MessagesCps.php
languages/messages/MessagesCrh_cyrl.php
languages/messages/MessagesCrh_latn.php
languages/messages/MessagesCs.php
languages/messages/MessagesCsb.php
languages/messages/MessagesCv.php
languages/messages/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDe_ch.php
languages/messages/MessagesDe_formal.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesDtp.php
languages/messages/MessagesDz.php
languages/messages/MessagesEe.php
languages/messages/MessagesEgl.php
languages/messages/MessagesEml.php
languages/messages/MessagesEn.php
languages/messages/MessagesEn_ca.php
languages/messages/MessagesEn_gb.php
languages/messages/MessagesEo.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesEu.php
languages/messages/MessagesFa.php
languages/messages/MessagesFf.php
languages/messages/MessagesFi.php
languages/messages/MessagesFit.php
languages/messages/MessagesFo.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrc.php
languages/messages/MessagesFrp.php
languages/messages/MessagesFur.php
languages/messages/MessagesGag.php
languages/messages/MessagesGan.php
languages/messages/MessagesGd.php
languages/messages/MessagesGl.php
languages/messages/MessagesGn.php
languages/messages/MessagesGot.php
languages/messages/MessagesGsw.php
languages/messages/MessagesGu.php
languages/messages/MessagesHa.php
languages/messages/MessagesHak.php
languages/messages/MessagesHaw.php
languages/messages/MessagesHe.php
languages/messages/MessagesHi.php
languages/messages/MessagesHif_latn.php
languages/messages/MessagesHil.php
languages/messages/MessagesHr.php
languages/messages/MessagesHsb.php
languages/messages/MessagesHt.php
languages/messages/MessagesHu.php
languages/messages/MessagesIa.php
languages/messages/MessagesIe.php
languages/messages/MessagesIg.php
languages/messages/MessagesIke_cans.php
languages/messages/MessagesIke_latn.php
languages/messages/MessagesIlo.php
languages/messages/MessagesInh.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesJam.php
languages/messages/MessagesJbo.php
languages/messages/MessagesJut.php
languages/messages/MessagesJv.php
languages/messages/MessagesKa.php
languages/messages/MessagesKab.php
languages/messages/MessagesKbd_cyrl.php
languages/messages/MessagesKk.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKm.php
languages/messages/MessagesKn.php
languages/messages/MessagesKo.php
languages/messages/MessagesKoi.php
languages/messages/MessagesKrc.php
languages/messages/MessagesKri.php
languages/messages/MessagesKrj.php
languages/messages/MessagesKsh.php
languages/messages/MessagesKu_arab.php
languages/messages/MessagesKv.php
languages/messages/MessagesKy.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLez.php
languages/messages/MessagesLfn.php
languages/messages/MessagesLg.php
languages/messages/MessagesLi.php
languages/messages/MessagesLiv.php
languages/messages/MessagesLn.php
languages/messages/MessagesLoz.php
languages/messages/MessagesLrc.php
languages/messages/MessagesLt.php
languages/messages/MessagesLus.php
languages/messages/MessagesLv.php
languages/messages/MessagesLzh.php
languages/messages/MessagesLzz.php
languages/messages/MessagesMai.php
languages/messages/MessagesMap_bms.php
languages/messages/MessagesMdf.php
languages/messages/MessagesMg.php
languages/messages/MessagesMin.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMn.php
languages/messages/MessagesMrj.php
languages/messages/MessagesMs.php
languages/messages/MessagesMt.php
languages/messages/MessagesMwl.php
languages/messages/MessagesMy.php
languages/messages/MessagesMyv.php
languages/messages/MessagesMzn.php
languages/messages/MessagesNan.php
languages/messages/MessagesNb.php
languages/messages/MessagesNds.php
languages/messages/MessagesNds_nl.php
languages/messages/MessagesNe.php
languages/messages/MessagesNew.php
languages/messages/MessagesNl.php
languages/messages/MessagesNl_informal.php
languages/messages/MessagesNn.php
languages/messages/MessagesNov.php
languages/messages/MessagesNv.php
languages/messages/MessagesOc.php
languages/messages/MessagesOr.php
languages/messages/MessagesOs.php
languages/messages/MessagesPa.php
languages/messages/MessagesPag.php
languages/messages/MessagesPcd.php
languages/messages/MessagesPdt.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPnb.php
languages/messages/MessagesPnt.php
languages/messages/MessagesPs.php
languages/messages/MessagesPt.php
languages/messages/MessagesQqq.php
languages/messages/MessagesQu.php
languages/messages/MessagesQug.php
languages/messages/MessagesRgn.php
languages/messages/MessagesRif.php
languages/messages/MessagesRm.php
languages/messages/MessagesRmy.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesRue.php
languages/messages/MessagesRup.php
languages/messages/MessagesRuq_cyrl.php
languages/messages/MessagesRuq_latn.php
languages/messages/MessagesSa.php
languages/messages/MessagesSah.php
languages/messages/MessagesSat.php
languages/messages/MessagesSc.php
languages/messages/MessagesScn.php
languages/messages/MessagesSco.php
languages/messages/MessagesSd.php
languages/messages/MessagesSei.php
languages/messages/MessagesSg.php
languages/messages/MessagesShi.php
languages/messages/MessagesSi.php
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSma.php
languages/messages/MessagesSo.php
languages/messages/MessagesSq.php
languages/messages/MessagesSr.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesSrn.php
languages/messages/MessagesStq.php
languages/messages/MessagesSu.php
languages/messages/MessagesSv.php
languages/messages/MessagesSw.php
languages/messages/MessagesSzl.php
languages/messages/MessagesTa.php
languages/messages/MessagesTcy.php
languages/messages/MessagesTe.php
languages/messages/MessagesTh.php
languages/messages/MessagesTk.php
languages/messages/MessagesTl.php
languages/messages/MessagesTpi.php
languages/messages/MessagesTr.php
languages/messages/MessagesTt.php
languages/messages/MessagesTt_cyrl.php
languages/messages/MessagesTt_latn.php
languages/messages/MessagesUdm.php
languages/messages/MessagesUk.php
languages/messages/MessagesUz.php
languages/messages/MessagesVec.php
languages/messages/MessagesVep.php
languages/messages/MessagesVi.php
languages/messages/MessagesVro.php
languages/messages/MessagesWa.php
languages/messages/MessagesWuu.php
languages/messages/MessagesXal.php
languages/messages/MessagesYi.php
languages/messages/MessagesYo.php
languages/messages/MessagesZea.php
languages/messages/MessagesZh.php
languages/messages/MessagesZh_cn.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
languages/messages/MessagesZh_hk.php
languages/messages/MessagesZh_mo.php
languages/messages/MessagesZh_sg.php
languages/messages/MessagesZh_tw.php
maintenance/archives/patch-user_password_expire.sql [new file with mode: 0644]
maintenance/language/messageTypes.inc
maintenance/language/messages.inc
maintenance/mssql/tables.sql
maintenance/oracle/tables.sql
maintenance/postgres/tables.sql
maintenance/tables.sql
resources/Resources.php
resources/jquery/jquery.delayedBind.js
resources/jquery/jquery.expandableField.js
resources/jquery/jquery.suggestions.js
resources/jquery/jquery.tablesorter.js
resources/mediawiki.api/mediawiki.api.js
resources/mediawiki.api/mediawiki.api.watch.js
resources/mediawiki.less/mediawiki.mixins.animation.less [new file with mode: 0644]
resources/mediawiki.less/mediawiki.mixins.rotation.less
resources/mediawiki.libs/CLDRPluralRuleParser.js
resources/mediawiki.special/mediawiki.special.preferences.js
resources/mediawiki.ui/components/default/forms.less
resources/mediawiki.ui/mixins/forms.less
resources/mediawiki/mediawiki.js
resources/mediawiki/mediawiki.notification.js
resources/mediawiki/mediawiki.searchSuggest.js
resources/mediawiki/mediawiki.user.js
resources/oojs-ui/i18n/en.json
resources/oojs-ui/i18n/hsb.json
resources/oojs-ui/i18n/ka.json
resources/oojs-ui/i18n/qqq.json
resources/oojs-ui/oojs-ui.js
resources/oojs-ui/oojs-ui.svg.css
resources/oojs-ui/update-oojs-ui.sh [new file with mode: 0755]
resources/oojs/update-oojs.sh [new file with mode: 0755]
skins/vector/collapsibleTabs.js
skins/vector/components/search.less
skins/vector/images/edit-icon.png [deleted file]
tests/phpunit/includes/ExceptionTest.php [deleted file]
tests/phpunit/includes/LinksUpdateTest.php
tests/phpunit/includes/MWExceptionHandlerTest.php [deleted file]
tests/phpunit/includes/SiteConfigurationTest.php
tests/phpunit/includes/UserTest.php
tests/phpunit/includes/diff/ArrayDiffFormatterTest.php [new file with mode: 0644]
tests/phpunit/includes/diff/DiffOpTest.php [new file with mode: 0644]
tests/phpunit/includes/diff/DiffTest.php [new file with mode: 0644]
tests/phpunit/includes/diff/DifferenceEngineTest.php
tests/phpunit/includes/diff/FakeDiffOp.php [new file with mode: 0644]
tests/phpunit/includes/exception/BadTitleErrorTest.php [new file with mode: 0644]
tests/phpunit/includes/exception/MWExceptionHandlerTest.php [new file with mode: 0644]
tests/phpunit/includes/exception/MWExceptionTest.php [new file with mode: 0644]
tests/phpunit/includes/exception/ThrottledErrorTest.php [new file with mode: 0644]
tests/phpunit/includes/libs/CSSJanusTest.php
tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js

index 0e3c679..a44a4d4 100644 (file)
@@ -16,6 +16,7 @@ resources/jquery/jquery.cookie.js
 resources/jquery/jquery.cycle.all.js
 resources/jquery/jquery.farbtastic.js
 resources/jquery/jquery.form.js
+resources/jquery/jquery.fullscreen.js
 resources/jquery/jquery.hoverIntent.js
 resources/jquery/jquery.js
 resources/jquery/jquery.json.js
index 84fa456..eb05fe2 100644 (file)
@@ -4,12 +4,21 @@
 # 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.
+# complement that setup by testing MediaWiki on travis
 #
 language: php
 
 php:
   - hhvm
+  - 5.3
+  - 5.4
+  - 5.5
+
+matrix:
+  allow_failures:
+    - php: 5.3
+    - php: 5.4
+    - php: 5.5
 
 services:
   - mysql
@@ -29,7 +38,7 @@ before_script:
   # 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.*'
+  - composer require 'phpunit/phpunit=3.7.*' --prefer-source
   - >
       php maintenance/install.php testwiki admin
       --pass travis
@@ -40,7 +49,13 @@ before_script:
 
 script:
   - >
-      hhvm --php
-      -d include_path=".$(printf ':%s' vendor/phpunit/*)"
-      -d date.timezone="Etc/UTC"
-      tests/phpunit/phpunit.php
+      if [ "$TRAVIS_PHP_VERSION" = "hhvm" ];
+      then
+        hhvm --php \
+        -d include_path=".$(printf ':%s' vendor/phpunit/*)" \
+        -d date.timezone="Etc/UTC" \
+        tests/phpunit/phpunit.php
+      else
+        php tests/phpunit/phpunit.php \
+        --with-phpunitdir ./vendor/phpunit/phpunit
+      fi
index 64c2b3b..382b54f 100644 (file)
@@ -9,6 +9,9 @@ MediaWiki 1.23 is an alpha-quality branch and is not recommended for use in
 production.
 
 === Configuration changes in 1.23 ===
+* When $wgJobRunRate is higher that zero, jobs are now executed via an
+  asynchronous HTTP request to a MediaWiki entry point. This may require
+  increasing the number of server worker threads.
 * $wgDebugLogGroups values may be set to an associative array with a
   'destination' key specifying the log destination. The array may also contain
   a 'sample' key with a positive integer value N indicating that the log group
@@ -105,6 +108,12 @@ production.
 * HTMLForm 'select', 'selectandother', 'selectorother', 'multiselect', and
   'radio' fields can now use message keys as labels via the 'options-messages'
   parameter, which overrides the 'options' parameter.
+* Admins can expire users users passwords manually, or on a schedule using the
+  $wgPasswordExpirationDays configuration setting.
+* Add new hook SendWatchlistEmailNotification, this will be used to determine
+  whether to send a watchlist email notification.
+* (bug 42026) Special:Contributions now includes an option to filter page
+  creations, similar to the topOnly option.
 
 === Bug fixes in 1.23 ===
 * (bug 41759) The "updated since last visit" markers (on history pages, recent
@@ -140,6 +149,8 @@ production.
 * (bug 60543) Special:PrefixIndex forgot stripprefix=1 for "Next page" link
 * (bug 29762) Undoing an already-undone edit will now display an appropriate
   message instead of leading the user to make a null edit.
+* (bug 52659) mediawiki.notification: Notification area remained visible when
+  empty and thus was stealing pointer events from links on the page.
 
 === Web API changes in 1.23 ===
 * (bug 54884) action=parse&prop=categories now indicates hidden and missing
@@ -185,6 +196,11 @@ production.
 * (bug 58627) Provide language names on action=parse&prop=langlinks.
 * Deprecated llurl= in favour of llprop=url for action=query&prop=langlinks.
 * Added llprop=langname and llprop=autonym for action=query&prop=langlinks.
+* prop=redirects is added, to return redirects to the pages in the query.
+* list=allredirects is added, to list all redirects pointing to a namespace.
+* (bug 42026) Added ucshow={new,!new,top,!top} to list=usercontribs.
+  Also added newonly to action=feedcontributions.
+* (bug 42026) Deprecated uctoponly in favor of ucshow=top.
 
 === Languages updated in 1.23 ===
 
@@ -244,6 +260,11 @@ changes to languages because of Bugzilla reports.
 * mw.loader.go and mw.loader.version have been removed.
 * (bug 52815) Preference "Enable simplified search bar (Vector skin only)"
   was removed.
+* A user_password_expires column has been added to the user table. The User
+  object expects this column to exist. Use update.php to create this new field.
+* The jquery.delayedBind ResourceLoader module was deprecated in favor of the
+  jquery.throttle-debounce module. It will be removed in MediaWiki 1.24.
+* mw.user.bucket has been deprecated.
 
 ==== Removed classes ====
 * FakeMemCachedClient (deprecated in 1.18)
index 9268f83..e7fa89b 100644 (file)
@@ -277,6 +277,11 @@ $user: the User object about to be created (read-only, incomplete)
 $targetUser: the user whom to send talk page email notification
 $title: the page title
 
+'SendWatchlistEmailNotification': Return true to send watchlist email notification
+$targetUser: the user whom to send watchlist email notification
+$title: the page title
+$this: EmailNotification object
+
 'AbortChangePassword': Return false to cancel password change.
 $user: the User object to which the password change is occuring
 $mOldpass: the old password provided by the user
@@ -1606,6 +1611,11 @@ $password: the password being submitted and found wanting
 $retval: a LoginForm class constant with authenticateUserData() return
   value (SUCCESS, WRONG_PASS, etc.).
 
+'LoginPasswordResetMessage': User is being requested to reset their password on login.
+Use this hook to change the Message that will be output on Special:ChangePassword.
+&$msg: Message object that will be shown to the user
+$username: Username of the user who's password was expired.
+
 'LogLine': Processes a single log entry on Special:Log.
 $log_type: string for the type of log entry (e.g. 'move'). Corresponds to
   logging.log_type database field.
@@ -2031,6 +2041,10 @@ IContextSource $context: The RequestContext the skin is being created for.
 &$skin: A variable reference you may set a Skin instance or string key on to
   override the skin that will be used for the context.
 
+'ResetPasswordExpiration': Allow extensions to set a default password expiration
+$user: The user having their password expiration reset
+&$newExpire: The new expiration date
+
 'ResetSessionID': Called from wfResetSessionID
 $oldSessionID: old session id
 $newSessionID: new session id
diff --git a/includes/Action.php b/includes/Action.php
deleted file mode 100644 (file)
index 72be46f..0000000
+++ /dev/null
@@ -1,600 +0,0 @@
-<?php
-/**
- * Base classes for actions done on pages.
- *
- * 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
- *
- * @file
- */
-
-/**
- * @defgroup Actions Action done on pages
- */
-
-/**
- * Actions are things which can be done to pages (edit, delete, rollback, etc).  They
- * are distinct from Special Pages because an action must apply to exactly one page.
- *
- * To add an action in an extension, create a subclass of Action, and add the key to
- * $wgActions.  There is also the deprecated UnknownAction hook
- *
- * Actions generally fall into two groups: the show-a-form-then-do-something-with-the-input
- * format (protect, delete, move, etc), and the just-do-something format (watch, rollback,
- * patrol, etc). The FormAction and FormlessAction classes represent these two groups.
- */
-abstract class Action {
-
-       /**
-        * Page on which we're performing the action
-        * @var WikiPage|Article|ImagePage|CategoryPage|Page $page
-        */
-       protected $page;
-
-       /**
-        * IContextSource if specified; otherwise we'll use the Context from the Page
-        * @var IContextSource $context
-        */
-       protected $context;
-
-       /**
-        * The fields used to create the HTMLForm
-        * @var Array $fields
-        */
-       protected $fields;
-
-       /**
-        * Get the Action subclass which should be used to handle this action, false if
-        * the action is disabled, or null if it's not recognised
-        * @param $action String
-        * @param $overrides Array
-        * @return bool|null|string|callable
-        */
-       final private static function getClass( $action, array $overrides ) {
-               global $wgActions;
-               $action = strtolower( $action );
-
-               if ( !isset( $wgActions[$action] ) ) {
-                       return null;
-               }
-
-               if ( $wgActions[$action] === false ) {
-                       return false;
-               } elseif ( $wgActions[$action] === true && isset( $overrides[$action] ) ) {
-                       return $overrides[$action];
-               } elseif ( $wgActions[$action] === true ) {
-                       return ucfirst( $action ) . 'Action';
-               } else {
-                       return $wgActions[$action];
-               }
-       }
-
-       /**
-        * Get an appropriate Action subclass for the given action
-        * @param $action String
-        * @param $page Page
-        * @param $context IContextSource
-        * @return Action|bool|null false if the action is disabled, null
-        *     if it is not recognised
-        */
-       final public static function factory( $action, Page $page, IContextSource $context = null ) {
-               $classOrCallable = self::getClass( $action, $page->getActionOverrides() );
-
-               if ( is_string( $classOrCallable ) ) {
-                       $obj = new $classOrCallable( $page, $context );
-                       return $obj;
-               }
-
-               if ( is_callable( $classOrCallable ) ) {
-                       return call_user_func_array( $classOrCallable, array( $page, $context ) );
-               }
-
-               return $classOrCallable;
-       }
-
-       /**
-        * Get the action that will be executed, not necessarily the one passed
-        * passed through the "action" request parameter. Actions disabled in
-        * $wgActions will be replaced by "nosuchaction".
-        *
-        * @since 1.19
-        * @param $context IContextSource
-        * @return string: action name
-        */
-       final public static function getActionName( IContextSource $context ) {
-               global $wgActions;
-
-               $request = $context->getRequest();
-               $actionName = $request->getVal( 'action', 'view' );
-
-               // Check for disabled actions
-               if ( isset( $wgActions[$actionName] ) && $wgActions[$actionName] === false ) {
-                       $actionName = 'nosuchaction';
-               }
-
-               // Workaround for bug #20966: inability of IE to provide an action dependent
-               // on which submit button is clicked.
-               if ( $actionName === 'historysubmit' ) {
-                       if ( $request->getBool( 'revisiondelete' ) ) {
-                               $actionName = 'revisiondelete';
-                       } else {
-                               $actionName = 'view';
-                       }
-               } elseif ( $actionName == 'editredlink' ) {
-                       $actionName = 'edit';
-               }
-
-               // Trying to get a WikiPage for NS_SPECIAL etc. will result
-               // in WikiPage::factory throwing "Invalid or virtual namespace -1 given."
-               // For SpecialPages et al, default to action=view.
-               if ( !$context->canUseWikiPage() ) {
-                       return 'view';
-               }
-
-               $action = Action::factory( $actionName, $context->getWikiPage(), $context );
-               if ( $action instanceof Action ) {
-                       return $action->getName();
-               }
-
-               return 'nosuchaction';
-       }
-
-       /**
-        * Check if a given action is recognised, even if it's disabled
-        *
-        * @param string $name name of an action
-        * @return Bool
-        */
-       final public static function exists( $name ) {
-               return self::getClass( $name, array() ) !== null;
-       }
-
-       /**
-        * Get the IContextSource in use here
-        * @return IContextSource
-        */
-       final public function getContext() {
-               if ( $this->context instanceof IContextSource ) {
-                       return $this->context;
-               } elseif ( $this->page instanceof Article ) {
-                       // NOTE: $this->page can be a WikiPage, which does not have a context.
-                       wfDebug( __METHOD__ . ': no context known, falling back to Article\'s context.' );
-                       return $this->page->getContext();
-               }
-
-               wfWarn( __METHOD__ . ': no context known, falling back to RequestContext::getMain().' );
-               return RequestContext::getMain();
-       }
-
-       /**
-        * Get the WebRequest being used for this instance
-        *
-        * @return WebRequest
-        */
-       final public function getRequest() {
-               return $this->getContext()->getRequest();
-       }
-
-       /**
-        * Get the OutputPage being used for this instance
-        *
-        * @return OutputPage
-        */
-       final public function getOutput() {
-               return $this->getContext()->getOutput();
-       }
-
-       /**
-        * Shortcut to get the User being used for this instance
-        *
-        * @return User
-        */
-       final public function getUser() {
-               return $this->getContext()->getUser();
-       }
-
-       /**
-        * Shortcut to get the Skin being used for this instance
-        *
-        * @return Skin
-        */
-       final public function getSkin() {
-               return $this->getContext()->getSkin();
-       }
-
-       /**
-        * Shortcut to get the user Language being used for this instance
-        *
-        * @return Language
-        */
-       final public function getLanguage() {
-               return $this->getContext()->getLanguage();
-       }
-
-       /**
-        * Shortcut to get the user Language being used for this instance
-        *
-        * @deprecated since 1.19 Use getLanguage instead
-        * @return Language
-        */
-       final public function getLang() {
-               wfDeprecated( __METHOD__, '1.19' );
-               return $this->getLanguage();
-       }
-
-       /**
-        * Shortcut to get the Title object from the page
-        * @return Title
-        */
-       final public function getTitle() {
-               return $this->page->getTitle();
-       }
-
-       /**
-        * Get a Message object with context set
-        * Parameters are the same as wfMessage()
-        *
-        * @return Message object
-        */
-       final public function msg() {
-               $params = func_get_args();
-               return call_user_func_array( array( $this->getContext(), 'msg' ), $params );
-       }
-
-       /**
-        * Constructor.
-        *
-        * Only public since 1.21
-        *
-        * @param $page Page
-        * @param $context IContextSource
-        */
-       public function __construct( Page $page, IContextSource $context = null ) {
-               if ( $context === null ) {
-                       wfWarn( __METHOD__ . ' called without providing a Context object.' );
-                       // NOTE: We could try to initialize $context using $page->getContext(),
-                       //      if $page is an Article. That however seems to not work seamlessly.
-               }
-
-               $this->page = $page;
-               $this->context = $context;
-       }
-
-       /**
-        * Return the name of the action this object responds to
-        * @return String lowercase
-        */
-       abstract public function getName();
-
-       /**
-        * Get the permission required to perform this action.  Often, but not always,
-        * the same as the action name
-        * @return String|null
-        */
-       public function getRestriction() {
-               return null;
-       }
-
-       /**
-        * Checks if the given user (identified by an object) can perform this action.  Can be
-        * overridden by sub-classes with more complicated permissions schemes.  Failures here
-        * must throw subclasses of ErrorPageError
-        *
-        * @param $user User: the user to check, or null to use the context user
-        * @throws UserBlockedError|ReadOnlyError|PermissionsError
-        * @return bool True on success
-        */
-       protected function checkCanExecute( User $user ) {
-               $right = $this->getRestriction();
-               if ( $right !== null ) {
-                       $errors = $this->getTitle()->getUserPermissionsErrors( $right, $user );
-                       if ( count( $errors ) ) {
-                               throw new PermissionsError( $right, $errors );
-                       }
-               }
-
-               if ( $this->requiresUnblock() && $user->isBlocked() ) {
-                       $block = $user->getBlock();
-                       throw new UserBlockedError( $block );
-               }
-
-               // This should be checked at the end so that the user won't think the
-               // error is only temporary when he also don't have the rights to execute
-               // this action
-               if ( $this->requiresWrite() && wfReadOnly() ) {
-                       throw new ReadOnlyError();
-               }
-               return true;
-       }
-
-       /**
-        * Whether this action requires the wiki not to be locked
-        * @return Bool
-        */
-       public function requiresWrite() {
-               return true;
-       }
-
-       /**
-        * Whether this action can still be executed by a blocked user
-        * @return Bool
-        */
-       public function requiresUnblock() {
-               return true;
-       }
-
-       /**
-        * Set output headers for noindexing etc.  This function will not be called through
-        * the execute() entry point, so only put UI-related stuff in here.
-        */
-       protected function setHeaders() {
-               $out = $this->getOutput();
-               $out->setRobotPolicy( "noindex,nofollow" );
-               $out->setPageTitle( $this->getPageTitle() );
-               $this->getOutput()->setSubtitle( $this->getDescription() );
-               $out->setArticleRelated( true );
-       }
-
-       /**
-        * Returns the name that goes in the \<h1\> page title
-        *
-        * @return String
-        */
-       protected function getPageTitle() {
-               return $this->getTitle()->getPrefixedText();
-       }
-
-       /**
-        * Returns the description that goes below the \<h1\> tag
-        *
-        * @return String
-        */
-       protected function getDescription() {
-               return $this->msg( strtolower( $this->getName() ) )->escaped();
-       }
-
-       /**
-        * The main action entry point.  Do all output for display and send it to the context
-        * output.  Do not use globals $wgOut, $wgRequest, etc, in implementations; use
-        * $this->getOutput(), etc.
-        * @throws ErrorPageError
-        */
-       abstract public function show();
-
-       /**
-        * Execute the action in a silent fashion: do not display anything or release any errors.
-        * @return Bool whether execution was successful
-        */
-       abstract public function execute();
-}
-
-/**
- * An action which shows a form and does something based on the input from the form
- */
-abstract class FormAction extends Action {
-
-       /**
-        * Get an HTMLForm descriptor array
-        * @return Array
-        */
-       abstract protected function getFormFields();
-
-       /**
-        * Add pre- or post-text to the form
-        * @return String HTML which will be sent to $form->addPreText()
-        */
-       protected function preText() {
-               return '';
-       }
-
-       /**
-        * @return string
-        */
-       protected function postText() {
-               return '';
-       }
-
-       /**
-        * Play with the HTMLForm if you need to more substantially
-        * @param $form HTMLForm
-        */
-       protected function alterForm( HTMLForm $form ) {
-       }
-
-       /**
-        * Get the HTMLForm to control behavior
-        * @return HTMLForm|null
-        */
-       protected function getForm() {
-               $this->fields = $this->getFormFields();
-
-               // Give hooks a chance to alter the form, adding extra fields or text etc
-               wfRunHooks( 'ActionModifyFormFields', array( $this->getName(), &$this->fields, $this->page ) );
-
-               $form = new HTMLForm( $this->fields, $this->getContext(), $this->getName() );
-               $form->setSubmitCallback( array( $this, 'onSubmit' ) );
-
-               // Retain query parameters (uselang etc)
-               $form->addHiddenField( 'action', $this->getName() ); // Might not be the same as the query string
-               $params = array_diff_key(
-                       $this->getRequest()->getQueryValues(),
-                       array( 'action' => null, 'title' => null )
-               );
-               $form->addHiddenField( 'redirectparams', wfArrayToCgi( $params ) );
-
-               $form->addPreText( $this->preText() );
-               $form->addPostText( $this->postText() );
-               $this->alterForm( $form );
-
-               // Give hooks a chance to alter the form, adding extra fields or text etc
-               wfRunHooks( 'ActionBeforeFormDisplay', array( $this->getName(), &$form, $this->page ) );
-
-               return $form;
-       }
-
-       /**
-        * Process the form on POST submission.  If you return false from getFormFields(),
-        * this will obviously never be reached.  If you don't want to do anything with the
-        * form, just return false here
-        * @param  $data Array
-        * @return Bool|Array true for success, false for didn't-try, array of errors on failure
-        */
-       abstract public function onSubmit( $data );
-
-       /**
-        * Do something exciting on successful processing of the form.  This might be to show
-        * a confirmation message (watch, rollback, etc) or to redirect somewhere else (edit,
-        * protect, etc).
-        */
-       abstract public function onSuccess();
-
-       /**
-        * The basic pattern for actions is to display some sort of HTMLForm UI, maybe with
-        * some stuff underneath (history etc); to do some processing on submission of that
-        * form (delete, protect, etc) and to do something exciting on 'success', be that
-        * display something new or redirect to somewhere.  Some actions have more exotic
-        * behavior, but that's what subclassing is for :D
-        */
-       public function show() {
-               $this->setHeaders();
-
-               // This will throw exceptions if there's a problem
-               $this->checkCanExecute( $this->getUser() );
-
-               $form = $this->getForm();
-               if ( $form->show() ) {
-                       $this->onSuccess();
-               }
-       }
-
-       /**
-        * @see Action::execute()
-        *
-        * @param $data array|null
-        * @param $captureErrors bool
-        * @throws ErrorPageError|Exception
-        * @return bool
-        */
-       public function execute( array $data = null, $captureErrors = true ) {
-               try {
-                       // Set a new context so output doesn't leak.
-                       $this->context = clone $this->getContext();
-
-                       // This will throw exceptions if there's a problem
-                       $this->checkCanExecute( $this->getUser() );
-
-                       $fields = array();
-                       foreach ( $this->fields as $key => $params ) {
-                               if ( isset( $data[$key] ) ) {
-                                       $fields[$key] = $data[$key];
-                               } elseif ( isset( $params['default'] ) ) {
-                                       $fields[$key] = $params['default'];
-                               } else {
-                                       $fields[$key] = null;
-                               }
-                       }
-                       $status = $this->onSubmit( $fields );
-                       if ( $status === true ) {
-                               // This might do permanent stuff
-                               $this->onSuccess();
-                               return true;
-                       } else {
-                               return false;
-                       }
-               }
-               catch ( ErrorPageError $e ) {
-                       if ( $captureErrors ) {
-                               return false;
-                       } else {
-                               throw $e;
-                       }
-               }
-       }
-}
-
-/**
- * An action which just does something, without showing a form first.
- */
-abstract class FormlessAction extends Action {
-
-       /**
-        * Show something on GET request.
-        * @return String|null will be added to the HTMLForm if present, or just added to the
-        *     output if not.  Return null to not add anything
-        */
-       abstract public function onView();
-
-       /**
-        * We don't want an HTMLForm
-        * @return bool
-        */
-       protected function getFormFields() {
-               return false;
-       }
-
-       /**
-        * @param $data Array
-        * @return bool
-        */
-       public function onSubmit( $data ) {
-               return false;
-       }
-
-       /**
-        * @return bool
-        */
-       public function onSuccess() {
-               return false;
-       }
-
-       public function show() {
-               $this->setHeaders();
-
-               // This will throw exceptions if there's a problem
-               $this->checkCanExecute( $this->getUser() );
-
-               $this->getOutput()->addHTML( $this->onView() );
-       }
-
-       /**
-        * Execute the action silently, not giving any output.  Since these actions don't have
-        * forms, they probably won't have any data, but some (eg rollback) may do
-        * @param array $data values that would normally be in the GET request
-        * @param bool $captureErrors whether to catch exceptions and just return false
-        * @throws ErrorPageError|Exception
-        * @return Bool whether execution was successful
-        */
-       public function execute( array $data = null, $captureErrors = true ) {
-               try {
-                       // Set a new context so output doesn't leak.
-                       $this->context = clone $this->getContext();
-                       if ( is_array( $data ) ) {
-                               $this->context->setRequest( new FauxRequest( $data, false ) );
-                       }
-
-                       // This will throw exceptions if there's a problem
-                       $this->checkCanExecute( $this->getUser() );
-
-                       $this->onView();
-                       return true;
-               }
-               catch ( ErrorPageError $e ) {
-                       if ( $captureErrors ) {
-                               return false;
-                       } else {
-                               throw $e;
-                       }
-               }
-       }
-}
index 54635e9..a6733ad 100644 (file)
@@ -29,7 +29,6 @@ global $wgAutoloadLocalClasses;
 
 $wgAutoloadLocalClasses = array(
        # Includes
-       'Action' => 'includes/Action.php',
        'AjaxDispatcher' => 'includes/AjaxDispatcher.php',
        'AjaxResponse' => 'includes/AjaxResponse.php',
        'AlphabeticPager' => 'includes/Pager.php',
@@ -38,7 +37,6 @@ $wgAutoloadLocalClasses = array(
        'AuthPlugin' => 'includes/AuthPlugin.php',
        'AuthPluginUser' => 'includes/AuthPlugin.php',
        'Autopromote' => 'includes/Autopromote.php',
-       'BadTitleError' => 'includes/Exception.php',
        'BaseTemplate' => 'includes/SkinTemplate.php',
        'Block' => 'includes/Block.php',
        'CacheHelper' => 'includes/CacheHelper.php',
@@ -73,18 +71,14 @@ $wgAutoloadLocalClasses = array(
        'DumpPipeOutput' => 'includes/Export.php',
        'EditPage' => 'includes/EditPage.php',
        'EmailNotification' => 'includes/UserMailer.php',
-       'ErrorPageError' => 'includes/Exception.php',
        'FakeTitle' => 'includes/FakeTitle.php',
        'Fallback' => 'includes/Fallback.php',
-       'FatalError' => 'includes/Exception.php',
        'FauxRequest' => 'includes/WebRequest.php',
        'FauxResponse' => 'includes/WebResponse.php',
        'FeedItem' => 'includes/Feed.php',
        'FeedUtils' => 'includes/FeedUtils.php',
        'FileDeleteForm' => 'includes/FileDeleteForm.php',
        'ForkController' => 'includes/ForkController.php',
-       'FormlessAction' => 'includes/Action.php',
-       'FormAction' => 'includes/Action.php',
        'FormOptions' => 'includes/FormOptions.php',
        'FormSpecialPage' => 'includes/specialpage/FormSpecialPage.php',
        'GitInfo' => 'includes/GitInfo.php',
@@ -116,7 +110,6 @@ $wgAutoloadLocalClasses = array(
        'HTMLTextAreaField' => 'includes/htmlform/HTMLTextAreaField.php',
        'HTMLTextField' => 'includes/htmlform/HTMLTextField.php',
        'Http' => 'includes/HttpFunctions.php',
-       'HttpError' => 'includes/Exception.php',
        'ICacheHelper' => 'includes/CacheHelper.php',
        'IcuCollation' => 'includes/Collation.php',
        'IdentityCollation' => 'includes/Collation.php',
@@ -148,8 +141,6 @@ $wgAutoloadLocalClasses = array(
        'Message' => 'includes/Message.php',
        'MessageBlobStore' => 'includes/MessageBlobStore.php',
        'MimeMagic' => 'includes/MimeMagic.php',
-       'MWException' => 'includes/Exception.php',
-       'MWExceptionHandler' => 'includes/Exception.php',
        'MWHookException' => 'includes/Hooks.php',
        'MWHttpRequest' => 'includes/HttpFunctions.php',
        'MWInit' => 'includes/Init.php',
@@ -161,7 +152,6 @@ $wgAutoloadLocalClasses = array(
        'PasswordError' => 'includes/User.php',
        'PathRouter' => 'includes/PathRouter.php',
        'PathRouterPatternReplacer' => 'includes/PathRouter.php',
-       'PermissionsError' => 'includes/Exception.php',
        'PhpHttpRequest' => 'includes/HttpFunctions.php',
        'PoolCounter' => 'includes/PoolCounter.php',
        'PoolCounter_Stub' => 'includes/PoolCounter.php',
@@ -175,7 +165,6 @@ $wgAutoloadLocalClasses = array(
        'QueryPage' => 'includes/QueryPage.php',
        'QuickTemplate' => 'includes/SkinTemplate.php',
        'RawMessage' => 'includes/Message.php',
-       'ReadOnlyError' => 'includes/Exception.php',
        'RedirectSpecialArticle' => 'includes/specialpage/RedirectSpecialPage.php',
        'RedirectSpecialPage' => 'includes/specialpage/RedirectSpecialPage.php',
        'ReverseChronologicalPager' => 'includes/Pager.php',
@@ -216,15 +205,12 @@ $wgAutoloadLocalClasses = array(
        'Title' => 'includes/Title.php',
        'TitleArray' => 'includes/TitleArray.php',
        'TitleArrayFromResult' => 'includes/TitleArrayFromResult.php',
-       'ThrottledError' => 'includes/Exception.php',
        'UnlistedSpecialPage' => 'includes/specialpage/UnlistedSpecialPage.php',
        'UploadSourceAdapter' => 'includes/Import.php',
        'UppercaseCollation' => 'includes/Collation.php',
        'User' => 'includes/User.php',
        'UserArray' => 'includes/UserArray.php',
        'UserArrayFromResult' => 'includes/UserArrayFromResult.php',
-       'UserBlockedError' => 'includes/Exception.php',
-       'UserNotLoggedIn' => 'includes/Exception.php',
        'UserCache' => 'includes/cache/UserCache.php',
        'UserMailer' => 'includes/UserMailer.php',
        'UserRightsProxy' => 'includes/UserRightsProxy.php',
@@ -248,10 +234,13 @@ $wgAutoloadLocalClasses = array(
        'XmlSelect' => 'includes/Xml.php',
 
        # includes/actions
+       'Action' => 'includes/actions/Action.php',
        'CachedAction' => 'includes/actions/CachedAction.php',
        'CreditsAction' => 'includes/actions/CreditsAction.php',
        'DeleteAction' => 'includes/actions/DeleteAction.php',
        'EditAction' => 'includes/actions/EditAction.php',
+       'FormlessAction' => 'includes/actions/FormlessAction.php',
+       'FormAction' => 'includes/actions/FormAction.php',
        'HistoryAction' => 'includes/actions/HistoryAction.php',
        'HistoryPage' => 'includes/actions/HistoryAction.php',
        'HistoryPager' => 'includes/actions/HistoryAction.php',
@@ -355,6 +344,7 @@ $wgAutoloadLocalClasses = array(
        'ApiQueryRandom' => 'includes/api/ApiQueryRandom.php',
        'ApiQueryRecentChanges' => 'includes/api/ApiQueryRecentChanges.php',
        'ApiQueryFileRepoInfo' => 'includes/api/ApiQueryFileRepoInfo.php',
+       'ApiQueryRedirects' => 'includes/api/ApiQueryRedirects.php',
        'ApiQueryRevisions' => 'includes/api/ApiQueryRevisions.php',
        'ApiQuerySearch' => 'includes/api/ApiQuerySearch.php',
        'ApiQuerySiteinfo' => 'includes/api/ApiQuerySiteinfo.php',
@@ -368,6 +358,7 @@ $wgAutoloadLocalClasses = array(
        'ApiRevisionDelete' => 'includes/api/ApiRevisionDelete.php',
        'ApiRollback' => 'includes/api/ApiRollback.php',
        'ApiRsd' => 'includes/api/ApiRsd.php',
+       'ApiRunJobs' => 'includes/api/ApiRunJobs.php',
        'ApiSetNotificationTimestamp' => 'includes/api/ApiSetNotificationTimestamp.php',
        'ApiTokens' => 'includes/api/ApiTokens.php',
        'ApiUnblock' => 'includes/api/ApiUnblock.php',
@@ -526,6 +517,19 @@ $wgAutoloadLocalClasses = array(
        'WikiDiff3' => 'includes/diff/WikiDiff3.php',
        'WordLevelDiff' => 'includes/diff/DairikiDiff.php',
 
+       # includes/exception
+       'UserBlockedError' => 'includes/exception/UserBlockedError.php',
+       'UserNotLoggedIn' => 'includes/exception/UserNotLoggedIn.php',
+       'ThrottledError' => 'includes/exception/ThrottledError.php',
+       'ReadOnlyError' => 'includes/exception/ReadOnlyError.php',
+       'PermissionsError' => 'includes/exception/PermissionsError.php',
+       'MWException' => 'includes/exception/MWException.php',
+       'MWExceptionHandler' => 'includes/exception/MWExceptionHandler.php',
+       'HttpError' => 'includes/exception/HttpError.php',
+       'BadTitleError' => 'includes/exception/BadTitleError.php',
+       'ErrorPageError' => 'includes/exception/ErrorPageError.php',
+       'FatalError' => 'includes/exception/FatalError.php',
+
        # includes/externalstore
        'ExternalStore' => 'includes/externalstore/ExternalStore.php',
        'ExternalStoreDB' => 'includes/externalstore/ExternalStoreDB.php',
index b3e04d0..1dae5e7 100644 (file)
@@ -1382,6 +1382,18 @@ $wgNewPasswordExpiry = 3600 * 24 * 7;
  */
 $wgUserEmailConfirmationTokenExpiry = 7 * 24 * 60 * 60;
 
+/**
+ * The number of days that a user's password is good for. After this number of days, the
+ * user will be asked to reset their password. Set to false to disable password expiration.
+ */
+$wgPasswordExpirationDays = false;
+
+/**
+ * If a user's password is expired, the number of seconds when they can still login,
+ * and cancel their password change, but are sent to the password change form on each login.
+ */
+$wgPasswordExpireGrace = 3600 * 24 * 7; // 7 days
+
 /**
  * SMTP Mode.
  *
@@ -3154,14 +3166,23 @@ $wgResourceBasePath = null;
 
 /**
  * Maximum time in seconds to cache resources served by the resource loader.
+ * Used to set last modified headers (max-age/s-maxage).
+ *
+ * Following options to distinguish:
+ * - versioned: Used for modules with a version, because changing version
+ *   numbers causes cache misses. This normally has a long expiry time.
+ * - unversioned: Used for modules without a version to propagate changes
+ *   quickly to clients. Also used for modules with errors to recover quickly.
+ *   This normally has a short expiry time.
  *
- * @todo Document array structure
+ * Expiry time for the options to distinguish:
+ * - server: Squid/Varnish but also any other public proxy cache between the
+ *   client and MediaWiki.
+ * - client: On the client side (e.g. in the browser cache).
  */
 $wgResourceLoaderMaxage = array(
        'versioned' => array(
-               // Squid/Varnish but also any other public proxy cache between the client and MediaWiki
                'server' => 30 * 24 * 60 * 60, // 30 days
-               // On the client side (e.g. in the browser cache).
                'client' => 30 * 24 * 60 * 60, // 30 days
        ),
        'unversioned' => array(
@@ -4930,10 +4951,12 @@ $wgDebugDumpSql = false;
  * of the regular $wgDebugLogFile. Useful for enabling selective logging
  * in production.
  *
- * Log destinations may be string values specifying a filename or URI, or they
- * may be filename or an associative array mapping 'destination' to the desired
- * filename. The associative array may also contain a 'sample' key with an
- * integer value, specifying a sampling factor.
+ * Log destinations may be one of the following:
+ * - false to completely remove from the output, including from $wgDebugLogFile.
+ * - string values specifying a filename or URI.
+ * - associative array mapping 'destination' key to the desired filename or URI.
+ *   The associative array may also contain a 'sample' key with an integer value,
+ *   specifying a sampling factor.
  *
  * @par Example:
  * @code
@@ -5081,11 +5104,6 @@ $wgUDPProfilerPort = '3811';
  */
 $wgUDPProfilerFormatString = "%s - %d %f %f %f %f %s\n";
 
-/**
- * Detects non-matching wfProfileIn/wfProfileOut calls
- */
-$wgDebugProfiling = false;
-
 /**
  * Output debug message on every wfProfileIn/wfProfileOut
  */
diff --git a/includes/Exception.php b/includes/Exception.php
deleted file mode 100644 (file)
index e91a178..0000000
+++ /dev/null
@@ -1,918 +0,0 @@
-<?php
-/**
- * Exception class and handler.
- *
- * 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
- */
-
-/**
- * @defgroup Exception Exception
- */
-
-/**
- * MediaWiki exception
- *
- * @ingroup Exception
- */
-class MWException extends Exception {
-       /**
-        * Should the exception use $wgOut to output the error?
-        *
-        * @return bool
-        */
-       function useOutputPage() {
-               return $this->useMessageCache() &&
-                       !empty( $GLOBALS['wgFullyInitialised'] ) &&
-                       !empty( $GLOBALS['wgOut'] ) &&
-                       !defined( 'MEDIAWIKI_INSTALL' );
-       }
-
-       /**
-        * Whether to log this exception in the exception debug log.
-        *
-        * @since 1.23
-        * @return boolean
-        */
-       function isLoggable() {
-               return true;
-       }
-
-       /**
-        * Can the extension use the Message class/wfMessage to get i18n-ed messages?
-        *
-        * @return bool
-        */
-       function useMessageCache() {
-               global $wgLang;
-
-               foreach ( $this->getTrace() as $frame ) {
-                       if ( isset( $frame['class'] ) && $frame['class'] === 'LocalisationCache' ) {
-                               return false;
-                       }
-               }
-
-               return $wgLang instanceof Language;
-       }
-
-       /**
-        * Run hook to allow extensions to modify the text of the exception
-        *
-        * @param string $name class name of the exception
-        * @param array $args arguments to pass to the callback functions
-        * @return string|null string to output or null if any hook has been called
-        */
-       function runHooks( $name, $args = array() ) {
-               global $wgExceptionHooks;
-
-               if ( !isset( $wgExceptionHooks ) || !is_array( $wgExceptionHooks ) ) {
-                       return null; // Just silently ignore
-               }
-
-               if ( !array_key_exists( $name, $wgExceptionHooks ) ||
-                       !is_array( $wgExceptionHooks[$name] )
-               ) {
-                       return null;
-               }
-
-               $hooks = $wgExceptionHooks[$name];
-               $callargs = array_merge( array( $this ), $args );
-
-               foreach ( $hooks as $hook ) {
-                       if (
-                               is_string( $hook ) ||
-                               ( is_array( $hook ) && count( $hook ) >= 2 && is_string( $hook[0] ) )
-                       ) {
-                               // 'function' or array( 'class', hook' )
-                               $result = call_user_func_array( $hook, $callargs );
-                       } else {
-                               $result = null;
-                       }
-
-                       if ( is_string( $result ) ) {
-                               return $result;
-                       }
-               }
-               return null;
-       }
-
-       /**
-        * Get a message from i18n
-        *
-        * @param string $key message name
-        * @param string $fallback default message if the message cache can't be
-        *                  called by the exception
-        * The function also has other parameters that are arguments for the message
-        * @return string message with arguments replaced
-        */
-       function msg( $key, $fallback /*[, params...] */ ) {
-               $args = array_slice( func_get_args(), 2 );
-
-               if ( $this->useMessageCache() ) {
-                       return wfMessage( $key, $args )->plain();
-               } else {
-                       return wfMsgReplaceArgs( $fallback, $args );
-               }
-       }
-
-       /**
-        * If $wgShowExceptionDetails is true, return a HTML message with a
-        * backtrace to the error, otherwise show a message to ask to set it to true
-        * to show that information.
-        *
-        * @return string html to output
-        */
-       function getHTML() {
-               global $wgShowExceptionDetails;
-
-               if ( $wgShowExceptionDetails ) {
-                       return '<p>' . nl2br( htmlspecialchars( MWExceptionHandler::getLogMessage( $this ) ) ) .
-                               '</p><p>Backtrace:</p><p>' . nl2br( htmlspecialchars( MWExceptionHandler::getRedactedTraceAsString( $this ) ) ) .
-                               "</p>\n";
-               } else {
-                       return "<div class=\"errorbox\">" .
-                               '[' . MWExceptionHandler::getLogId( $this ) . '] ' .
-                               gmdate( 'Y-m-d H:i:s' ) .
-                               ": Fatal exception of type " . get_class( $this ) . "</div>\n" .
-                               "<!-- Set \$wgShowExceptionDetails = true; " .
-                               "at the bottom of LocalSettings.php to show detailed " .
-                               "debugging information. -->";
-               }
-       }
-
-       /**
-        * Get the text to display when reporting the error on the command line.
-        * If $wgShowExceptionDetails is true, return a text message with a
-        * backtrace to the error.
-        *
-        * @return string
-        */
-       function getText() {
-               global $wgShowExceptionDetails;
-
-               if ( $wgShowExceptionDetails ) {
-                       return MWExceptionHandler::getLogMessage( $this ) .
-                               "\nBacktrace:\n" . MWExceptionHandler::getRedactedTraceAsString( $this ) . "\n";
-               } else {
-                       return "Set \$wgShowExceptionDetails = true; " .
-                               "in LocalSettings.php to show detailed debugging information.\n";
-               }
-       }
-
-       /**
-        * Return the title of the page when reporting this error in a HTTP response.
-        *
-        * @return string
-        */
-       function getPageTitle() {
-               global $wgSitename;
-               return $this->msg( 'pagetitle', "$1 - $wgSitename", $this->msg( 'internalerror', 'Internal error' ) );
-       }
-
-       /**
-        * Get a the ID for this error.
-        *
-        * @since 1.20
-        * @deprecated since 1.22 Use MWExceptionHandler::getLogId instead.
-        * @return string
-        */
-       function getLogId() {
-               wfDeprecated( __METHOD__, '1.22' );
-               return MWExceptionHandler::getLogId( $this );
-       }
-
-       /**
-        * Return the requested URL and point to file and line number from which the
-        * exception occurred
-        *
-        * @since 1.8
-        * @deprecated since 1.22 Use MWExceptionHandler::getLogMessage instead.
-        * @return string
-        */
-       function getLogMessage() {
-               wfDeprecated( __METHOD__, '1.22' );
-               return MWExceptionHandler::getLogMessage( $this );
-       }
-
-       /**
-        * Output the exception report using HTML.
-        */
-       function reportHTML() {
-               global $wgOut;
-               if ( $this->useOutputPage() ) {
-                       $wgOut->prepareErrorPage( $this->getPageTitle() );
-
-                       $hookResult = $this->runHooks( get_class( $this ) );
-                       if ( $hookResult ) {
-                               $wgOut->addHTML( $hookResult );
-                       } else {
-                               $wgOut->addHTML( $this->getHTML() );
-                       }
-
-                       $wgOut->output();
-               } else {
-                       header( 'Content-Type: text/html; charset=utf-8' );
-                       echo "<!DOCTYPE html>\n" .
-                               '<html><head>' .
-                               '<title>' . htmlspecialchars( $this->getPageTitle() ) . '</title>' .
-                               '<style>body { font-family: sans-serif; margin: 0; padding: 0.5em 2em; }</style>' .
-                               "</head><body>\n";
-
-                       $hookResult = $this->runHooks( get_class( $this ) . 'Raw' );
-                       if ( $hookResult ) {
-                               echo $hookResult;
-                       } else {
-                               echo $this->getHTML();
-                       }
-
-                       echo "</body></html>\n";
-               }
-       }
-
-       /**
-        * Output a report about the exception and takes care of formatting.
-        * It will be either HTML or plain text based on isCommandLine().
-        */
-       function report() {
-               global $wgMimeType;
-
-               MWExceptionHandler::logException( $this );
-
-               if ( defined( 'MW_API' ) ) {
-                       // Unhandled API exception, we can't be sure that format printer is alive
-                       header( 'MediaWiki-API-Error: internal_api_error_' . get_class( $this ) );
-                       wfHttpError( 500, 'Internal Server Error', $this->getText() );
-               } elseif ( self::isCommandLine() ) {
-                       MWExceptionHandler::printError( $this->getText() );
-               } else {
-                       header( 'HTTP/1.1 500 MediaWiki exception' );
-                       header( 'Status: 500 MediaWiki exception', true );
-                       header( "Content-Type: $wgMimeType; charset=utf-8", true );
-
-                       $this->reportHTML();
-               }
-       }
-
-       /**
-        * Check whether we are in command line mode or not to report the exception
-        * in the correct format.
-        *
-        * @return bool
-        */
-       static function isCommandLine() {
-               return !empty( $GLOBALS['wgCommandLineMode'] );
-       }
-}
-
-/**
- * Exception class which takes an HTML error message, and does not
- * produce a backtrace. Replacement for OutputPage::fatalError().
- *
- * @since 1.7
- * @ingroup Exception
- */
-class FatalError extends MWException {
-
-       /**
-        * @return string
-        */
-       function getHTML() {
-               return $this->getMessage();
-       }
-
-       /**
-        * @return string
-        */
-       function getText() {
-               return $this->getMessage();
-       }
-}
-
-/**
- * An error page which can definitely be safely rendered using the OutputPage.
- *
- * @since 1.7
- * @ingroup Exception
- */
-class ErrorPageError extends MWException {
-       public $title, $msg, $params;
-
-       /**
-        * Note: these arguments are keys into wfMessage(), not text!
-        *
-        * @param string|Message $title Message key (string) for page title, or a Message object
-        * @param string|Message $msg Message key (string) for error text, or a Message object
-        * @param array $params with parameters to wfMessage()
-        */
-       function __construct( $title, $msg, $params = array() ) {
-               $this->title = $title;
-               $this->msg = $msg;
-               $this->params = $params;
-
-               // Bug 44111: Messages in the log files should be in English and not
-               // customized by the local wiki. So get the default English version for
-               // passing to the parent constructor. Our overridden report() below
-               // makes sure that the page shown to the user is not forced to English.
-               if ( $msg instanceof Message ) {
-                       $enMsg = clone( $msg );
-               } else {
-                       $enMsg = wfMessage( $msg, $params );
-               }
-               $enMsg->inLanguage( 'en' )->useDatabase( false );
-               parent::__construct( $enMsg->text() );
-       }
-
-       function report() {
-               global $wgOut;
-
-               $wgOut->showErrorPage( $this->title, $this->msg, $this->params );
-               $wgOut->output();
-       }
-}
-
-/**
- * Show an error page on a badtitle.
- * Similar to ErrorPage, but emit a 400 HTTP error code to let mobile
- * browser it is not really a valid content.
- *
- * @since 1.19
- * @ingroup Exception
- */
-class BadTitleError extends ErrorPageError {
-       /**
-        * @param string|Message $msg A message key (default: 'badtitletext')
-        * @param array $params parameter to wfMessage()
-        */
-       function __construct( $msg = 'badtitletext', $params = array() ) {
-               parent::__construct( 'badtitle', $msg, $params );
-       }
-
-       /**
-        * Just like ErrorPageError::report() but additionally set
-        * a 400 HTTP status code (bug 33646).
-        */
-       function report() {
-               global $wgOut;
-
-               // bug 33646: a badtitle error page need to return an error code
-               // to let mobile browser now that it is not a normal page.
-               $wgOut->setStatusCode( 400 );
-               parent::report();
-       }
-
-}
-
-/**
- * Show an error when a user tries to do something they do not have the necessary
- * permissions for.
- *
- * @since 1.18
- * @ingroup Exception
- */
-class PermissionsError extends ErrorPageError {
-       public $permission, $errors;
-
-       function __construct( $permission, $errors = array() ) {
-               global $wgLang;
-
-               $this->permission = $permission;
-
-               if ( !count( $errors ) ) {
-                       $groups = array_map(
-                               array( 'User', 'makeGroupLinkWiki' ),
-                               User::getGroupsWithPermission( $this->permission )
-                       );
-
-                       if ( $groups ) {
-                               $errors[] = array( 'badaccess-groups', $wgLang->commaList( $groups ), count( $groups ) );
-                       } else {
-                               $errors[] = array( 'badaccess-group0' );
-                       }
-               }
-
-               $this->errors = $errors;
-       }
-
-       function report() {
-               global $wgOut;
-
-               $wgOut->showPermissionsErrorPage( $this->errors, $this->permission );
-               $wgOut->output();
-       }
-}
-
-/**
- * Show an error when the wiki is locked/read-only and the user tries to do
- * something that requires write access.
- *
- * @since 1.18
- * @ingroup Exception
- */
-class ReadOnlyError extends ErrorPageError {
-       public function __construct() {
-               parent::__construct(
-                       'readonly',
-                       'readonlytext',
-                       wfReadOnlyReason() ?: array()
-               );
-       }
-}
-
-/**
- * Show an error when the user hits a rate limit.
- *
- * @since 1.18
- * @ingroup Exception
- */
-class ThrottledError extends ErrorPageError {
-       public function __construct() {
-               parent::__construct(
-                       'actionthrottled',
-                       'actionthrottledtext'
-               );
-       }
-
-       public function report() {
-               global $wgOut;
-               $wgOut->setStatusCode( 503 );
-               parent::report();
-       }
-}
-
-/**
- * Show an error when the user tries to do something whilst blocked.
- *
- * @since 1.18
- * @ingroup Exception
- */
-class UserBlockedError extends ErrorPageError {
-       public function __construct( Block $block ) {
-               // @todo FIXME: Implement a more proper way to get context here.
-               $params = $block->getPermissionsError( RequestContext::getMain() );
-               parent::__construct( 'blockedtitle', array_shift( $params ), $params );
-       }
-}
-
-/**
- * Shows a generic "user is not logged in" error page.
- *
- * This is essentially an ErrorPageError exception which by default uses the
- * 'exception-nologin' as a title and 'exception-nologin-text' for the message.
- * @see bug 37627
- * @since 1.20
- *
- * @par Example:
- * @code
- * if( $user->isAnon() ) {
- *     throw new UserNotLoggedIn();
- * }
- * @endcode
- *
- * Note the parameter order differs from ErrorPageError, this allows you to
- * simply specify a reason without overriding the default title.
- *
- * @par Example:
- * @code
- * if( $user->isAnon() ) {
- *     throw new UserNotLoggedIn( 'action-require-loggedin' );
- * }
- * @endcode
- *
- * @ingroup Exception
- */
-class UserNotLoggedIn extends ErrorPageError {
-
-       /**
-        * @param string $reasonMsg A message key containing the reason for the error.
-        *        Optional, default: 'exception-nologin-text'
-        * @param string $titleMsg A message key to set the page title.
-        *        Optional, default: 'exception-nologin'
-        * @param array $params Parameters to wfMessage().
-        *        Optional, default: array()
-        */
-       public function __construct(
-               $reasonMsg = 'exception-nologin-text',
-               $titleMsg = 'exception-nologin',
-               $params = array()
-       ) {
-               parent::__construct( $titleMsg, $reasonMsg, $params );
-       }
-}
-
-/**
- * Show an error that looks like an HTTP server error.
- * Replacement for wfHttpError().
- *
- * @since 1.19
- * @ingroup Exception
- */
-class HttpError extends MWException {
-       private $httpCode, $header, $content;
-
-       /**
-        * Constructor
-        *
-        * @param $httpCode Integer: HTTP status code to send to the client
-        * @param string|Message $content content of the message
-        * @param string|Message $header content of the header (\<title\> and \<h1\>)
-        */
-       public function __construct( $httpCode, $content, $header = null ) {
-               parent::__construct( $content );
-               $this->httpCode = (int)$httpCode;
-               $this->header = $header;
-               $this->content = $content;
-       }
-
-       /**
-        * Returns the HTTP status code supplied to the constructor.
-        *
-        * @return int
-        */
-       public function getStatusCode() {
-               return $this->httpCode;
-       }
-
-       /**
-        * Report the HTTP error.
-        * Sends the appropriate HTTP status code and outputs an
-        * HTML page with an error message.
-        */
-       public function report() {
-               $httpMessage = HttpStatus::getMessage( $this->httpCode );
-
-               header( "Status: {$this->httpCode} {$httpMessage}", true, $this->httpCode );
-               header( 'Content-type: text/html; charset=utf-8' );
-
-               print $this->getHTML();
-       }
-
-       /**
-        * Returns HTML for reporting the HTTP error.
-        * This will be a minimal but complete HTML document.
-        *
-        * @return string HTML
-        */
-       public function getHTML() {
-               if ( $this->header === null ) {
-                       $header = HttpStatus::getMessage( $this->httpCode );
-               } elseif ( $this->header instanceof Message ) {
-                       $header = $this->header->escaped();
-               } else {
-                       $header = htmlspecialchars( $this->header );
-               }
-
-               if ( $this->content instanceof Message ) {
-                       $content = $this->content->escaped();
-               } else {
-                       $content = htmlspecialchars( $this->content );
-               }
-
-               return "<!DOCTYPE html>\n" .
-                       "<html><head><title>$header</title></head>\n" .
-                       "<body><h1>$header</h1><p>$content</p></body></html>\n";
-       }
-}
-
-/**
- * Handler class for MWExceptions
- * @ingroup Exception
- */
-class MWExceptionHandler {
-       /**
-        * Install an exception handler for MediaWiki exception types.
-        */
-       public static function installHandler() {
-               set_exception_handler( array( 'MWExceptionHandler', 'handle' ) );
-       }
-
-       /**
-        * Report an exception to the user
-        */
-       protected static function report( Exception $e ) {
-               global $wgShowExceptionDetails;
-
-               $cmdLine = MWException::isCommandLine();
-
-               if ( $e instanceof MWException ) {
-                       try {
-                               // Try and show the exception prettily, with the normal skin infrastructure
-                               $e->report();
-                       } catch ( Exception $e2 ) {
-                               // Exception occurred from within exception handler
-                               // Show a simpler error message for the original exception,
-                               // don't try to invoke report()
-                               $message = "MediaWiki internal error.\n\n";
-
-                               if ( $wgShowExceptionDetails ) {
-                                       $message .= 'Original exception: ' . self::getLogMessage( $e ) .
-                                               "\nBacktrace:\n" . self::getRedactedTraceAsString( $e ) .
-                                               "\n\nException caught inside exception handler: " . self::getLogMessage( $e2 ) .
-                                               "\nBacktrace:\n" . self::getRedactedTraceAsString( $e2 );
-                               } else {
-                                       $message .= "Exception caught inside exception handler.\n\n" .
-                                               "Set \$wgShowExceptionDetails = true; at the bottom of LocalSettings.php " .
-                                               "to show detailed debugging information.";
-                               }
-
-                               $message .= "\n";
-
-                               if ( $cmdLine ) {
-                                       self::printError( $message );
-                               } else {
-                                       echo nl2br( htmlspecialchars( $message ) ) . "\n";
-                               }
-                       }
-               } else {
-                       $message = "Unexpected non-MediaWiki exception encountered, of type \"" .
-                               get_class( $e ) . "\"";
-
-                       if ( $wgShowExceptionDetails ) {
-                               $message .= "\n" . MWExceptionHandler::getLogMessage( $e ) . "\nBacktrace:\n" .
-                                       self::getRedactedTraceAsString( $e ) . "\n";
-                       }
-
-                       if ( $cmdLine ) {
-                               self::printError( $message );
-                       } else {
-                               echo nl2br( htmlspecialchars( $message ) ) . "\n";
-                       }
-               }
-       }
-
-       /**
-        * Print a message, if possible to STDERR.
-        * Use this in command line mode only (see isCommandLine)
-        *
-        * @param string $message Failure text
-        */
-       public static function printError( $message ) {
-               # NOTE: STDERR may not be available, especially if php-cgi is used from the
-               # command line (bug #15602). Try to produce meaningful output anyway. Using
-               # echo may corrupt output to STDOUT though.
-               if ( defined( 'STDERR' ) ) {
-                       fwrite( STDERR, $message );
-               } else {
-                       echo $message;
-               }
-       }
-
-       /**
-        * Exception handler which simulates the appropriate catch() handling:
-        *
-        *   try {
-        *       ...
-        *   } catch ( MWException $e ) {
-        *       $e->report();
-        *   } catch ( Exception $e ) {
-        *       echo $e->__toString();
-        *   }
-        */
-       public static function handle( $e ) {
-               global $wgFullyInitialised;
-
-               self::report( $e );
-
-               // Final cleanup
-               if ( $wgFullyInitialised ) {
-                       try {
-                               // uses $wgRequest, hence the $wgFullyInitialised condition
-                               wfLogProfilingData();
-                       } catch ( Exception $e ) {
-                       }
-               }
-
-               // Exit value should be nonzero for the benefit of shell jobs
-               exit( 1 );
-       }
-
-       /**
-        * Generate a string representation of an exception's stack trace
-        *
-        * Like Exception::getTraceAsString, but replaces argument values with
-        * argument type or class name.
-        *
-        * @param Exception $e
-        * @return string
-        */
-       public static function getRedactedTraceAsString( Exception $e ) {
-               $text = '';
-
-               foreach ( self::getRedactedTrace( $e ) as $level => $frame ) {
-                       if ( isset( $frame['file'] ) && isset( $frame['line'] ) ) {
-                               $text .= "#{$level} {$frame['file']}({$frame['line']}): ";
-                       } else {
-                               // 'file' and 'line' are unset for calls via call_user_func (bug 55634)
-                               // This matches behaviour of Exception::getTraceAsString to instead
-                               // display "[internal function]".
-                               $text .= "#{$level} [internal function]: ";
-                       }
-
-                       if ( isset( $frame['class'] ) ) {
-                               $text .= $frame['class'] . $frame['type'] . $frame['function'];
-                       } else {
-                               $text .= $frame['function'];
-                       }
-
-                       if ( isset( $frame['args'] ) ) {
-                               $text .= '(' . implode( ', ', $frame['args'] ) . ")\n";
-                       } else {
-                               $text .= "()\n";
-                       }
-               }
-
-               $level = $level + 1;
-               $text .= "#{$level} {main}";
-
-               return $text;
-       }
-
-       /**
-        * Return a copy of an exception's backtrace as an array.
-        *
-        * Like Exception::getTrace, but replaces each element in each frame's
-        * argument array with the name of its class (if the element is an object)
-        * or its type (if the element is a PHP primitive).
-        *
-        * @since 1.22
-        * @param Exception $e
-        * @return array
-        */
-       public static function getRedactedTrace( Exception $e ) {
-               return array_map( function ( $frame ) {
-                       if ( isset( $frame['args'] ) ) {
-                               $frame['args'] = array_map( function ( $arg ) {
-                                       return is_object( $arg ) ? get_class( $arg ) : gettype( $arg );
-                               }, $frame['args'] );
-                       }
-                       return $frame;
-               }, $e->getTrace() );
-       }
-
-       /**
-        * Get the ID for this error.
-        *
-        * The ID is saved so that one can match the one output to the user (when
-        * $wgShowExceptionDetails is set to false), to the entry in the debug log.
-        *
-        * @since 1.22
-        * @param Exception $e
-        * @return string
-        */
-       public static function getLogId( Exception $e ) {
-               if ( !isset( $e->_mwLogId ) ) {
-                       $e->_mwLogId = wfRandomString( 8 );
-               }
-               return $e->_mwLogId;
-       }
-
-       /**
-        * If the exception occurred in the course of responding to a request,
-        * returns the requested URL. Otherwise, returns false.
-        *
-        * @since 1.23
-        * @return string|bool
-        */
-       public static function getURL() {
-               global $wgRequest;
-               if ( !isset( $wgRequest ) || $wgRequest instanceof FauxRequest ) {
-                       return false;
-               }
-               return $wgRequest->getRequestURL();
-       }
-
-       /**
-        * Return the requested URL and point to file and line number from which the
-        * exception occurred.
-        *
-        * @since 1.22
-        * @param Exception $e
-        * @return string
-        */
-       public static function getLogMessage( Exception $e ) {
-               $id = self::getLogId( $e );
-               $file = $e->getFile();
-               $line = $e->getLine();
-               $message = $e->getMessage();
-               $url = self::getURL() ?: '[no req]';
-
-               return "[$id] $url   Exception from line $line of $file: $message";
-       }
-
-       /**
-        * Serialize an Exception object to JSON.
-        *
-        * The JSON object will have keys 'id', 'file', 'line', 'message', and
-        * 'url'. These keys map to string values, with the exception of 'line',
-        * which is a number, and 'url', which may be either a string URL or or
-        * null if the exception did not occur in the context of serving a web
-        * request.
-        *
-        * If $wgLogExceptionBacktrace is true, it will also have a 'backtrace'
-        * key, mapped to the array return value of Exception::getTrace, but with
-        * each element in each frame's "args" array (if set) replaced with the
-        * argument's class name (if the argument is an object) or type name (if
-        * the argument is a PHP primitive).
-        *
-        * @par Sample JSON record ($wgLogExceptionBacktrace = false):
-        * @code
-        *  {
-        *    "id": "c41fb419",
-        *    "file": "/var/www/mediawiki/includes/cache/MessageCache.php",
-        *    "line": 704,
-        *    "message": "Non-string key given",
-        *    "url": "/wiki/Main_Page"
-        *  }
-        * @endcode
-        *
-        * @par Sample JSON record ($wgLogExceptionBacktrace = true):
-        * @code
-        *  {
-        *    "id": "dc457938",
-        *    "file": "/vagrant/mediawiki/includes/cache/MessageCache.php",
-        *    "line": 704,
-        *    "message": "Non-string key given",
-        *    "url": "/wiki/Main_Page",
-        *    "backtrace": [{
-        *      "file": "/vagrant/mediawiki/extensions/VisualEditor/VisualEditor.hooks.php",
-        *      "line": 80,
-        *      "function": "get",
-        *      "class": "MessageCache",
-        *      "type": "->",
-        *      "args": ["array"]
-        *    }]
-        *  }
-        * @endcode
-        *
-        * @since 1.23
-        * @param Exception $e
-        * @param bool $pretty Add non-significant whitespace to improve readability (default: false).
-        * @param int $escaping Bitfield consisting of FormatJson::.*_OK class constants.
-        * @return string|bool: JSON string if successful; false upon failure
-        */
-       public static function jsonSerializeException( Exception $e, $pretty = false, $escaping = 0 ) {
-               global $wgLogExceptionBacktrace;
-
-               $exceptionData = array(
-                       'id' => self::getLogId( $e ),
-                       'file' => $e->getFile(),
-                       'line' => $e->getLine(),
-                       'message' => $e->getMessage(),
-               );
-
-               // Because MediaWiki is first and foremost a web application, we set a
-               // 'url' key unconditionally, but set it to null if the exception does
-               // not occur in the context of a web request, as a way of making that
-               // fact visible and explicit.
-               $exceptionData['url'] = self::getURL() ?: null;
-
-               if ( $wgLogExceptionBacktrace ) {
-                       // Argument values may not be serializable, so redact them.
-                       $exceptionData['backtrace'] = self::getRedactedTrace( $e );
-               }
-
-               return FormatJson::encode( $exceptionData, $pretty, $escaping );
-       }
-
-       /**
-        * Log an exception to the exception log (if enabled).
-        *
-        * This method must not assume the exception is an MWException,
-        * it is also used to handle PHP errors or errors from other libraries.
-        *
-        * @since 1.22
-        * @param Exception $e
-        */
-       public static function logException( Exception $e ) {
-               global $wgLogExceptionBacktrace;
-
-               if ( !( $e instanceof MWException ) || $e->isLoggable() ) {
-                       $log = self::getLogMessage( $e );
-                       if ( $wgLogExceptionBacktrace ) {
-                               wfDebugLog( 'exception', $log . "\n" . $e->getTraceAsString() );
-                       } else {
-                               wfDebugLog( 'exception', $log );
-                       }
-
-                       $json = self::jsonSerializeException( $e, false, FormatJson::ALL_OK );
-                       if ( $json !== false ) {
-                               wfDebugLog( 'exception-json', $json, 'private' );
-                       }
-               }
-
-       }
-
-}
index 6785d0c..a6f936f 100644 (file)
@@ -1064,6 +1064,9 @@ function wfDebugLog( $logGroup, $text, $dest = 'all' ) {
        }
 
        $logConfig = $wgDebugLogGroups[$logGroup];
+       if ( $logConfig === false ) {
+               return;
+       }
        if ( is_array( $logConfig ) ) {
                if ( isset( $logConfig['sample'] ) && mt_rand( 1, $logConfig['sample'] ) !== 1 ) {
                        return;
index 0df6d90..7169b2e 100644 (file)
@@ -221,6 +221,8 @@ class SiteStats {
        /**
         * Is the provided row of site stats sane, or should it be regenerated?
         *
+        * Checks only fields which are filled by SiteStatsInit::refresh.
+        *
         * @param $row
         *
         * @return bool
@@ -229,7 +231,6 @@ class SiteStats {
                if ( $row === false
                        || $row->ss_total_pages < $row->ss_good_articles
                        || $row->ss_total_edits < $row->ss_total_pages
-                       || $row->ss_users < $row->ss_active_users
                ) {
                        return false;
                }
@@ -240,7 +241,6 @@ class SiteStats {
                        'ss_good_articles',
                        'ss_total_pages',
                        'ss_users',
-                       'ss_active_users',
                        'ss_images',
                ) as $member ) {
                        if ( $row->$member > 2000000000 || $row->$member < 0 ) {
@@ -360,7 +360,6 @@ class SiteStatsInit {
         * - Boolean: whether to use the master DB
         * - DatabaseBase: database connection to use
         * @param array $options of options, may contain the following values
-        * - update Boolean: whether to update the current stats (true) or write fresh (false) (default: false)
         * - views Boolean: when true, do not update the number of page views (default: true)
         * - activeUsers Boolean: whether to update the number of active users (default: false)
         */
@@ -381,12 +380,7 @@ class SiteStatsInit {
                        $counter->views();
                }
 
-               // Update/refresh
-               if ( $options['update'] ) {
-                       $counter->update();
-               } else {
-                       $counter->refresh();
-               }
+               $counter->refresh();
 
                // Count active users if need be
                if ( $options['activeUsers'] ) {
@@ -395,39 +389,21 @@ class SiteStatsInit {
        }
 
        /**
-        * Update the current row with the selected values
-        */
-       public function update() {
-               list( $values, $conds ) = $this->getDbParams();
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->update( 'site_stats', $values, $conds, __METHOD__ );
-       }
-
-       /**
-        * Refresh site_stats. Erase the current record and save all
-        * the new values.
+        * Refresh site_stats.
         */
-       public function refresh() {
-               list( $values, $conds, $views ) = $this->getDbParams();
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->delete( 'site_stats', $conds, __METHOD__ );
-               $dbw->insert( 'site_stats', array_merge( $values, $conds, $views ), __METHOD__ );
-       }
-
-       /**
-        * Return three arrays of params for the db queries
-        * @return Array
-        */
-       private function getDbParams() {
+       protected function refresh() {
                $values = array(
+                       'ss_row_id' => 1,
                        'ss_total_edits' => $this->mEdits,
                        'ss_good_articles' => $this->mArticles,
                        'ss_total_pages' => $this->mPages,
                        'ss_users' => $this->mUsers,
-                       'ss_images' => $this->mFiles
+                       'ss_images' => $this->mFiles,
+               ) + (
+                       $this->mViews ? array( 'ss_total_views' => $this->mViews ) : array()
                );
-               $conds = array( 'ss_row_id' => 1 );
-               $views = array( 'ss_total_views' => $this->mViews );
-               return array( $values, $conds, $views );
+
+               $dbw = wfGetDB( DB_MASTER );
+               $dbw->upsert( 'site_stats', $values, array( 'ss_row_id' ), $values, __METHOD__ );
        }
 }
index 7e229ee..b13d285 100644 (file)
@@ -709,7 +709,7 @@ class SkinTemplate extends Skin {
                                'active' => $active
                        );
                        $personal_urls['logout'] = array(
-                               'text' => $this->msg( 'userlogout' )->text(),
+                               'text' => $this->msg( 'pt-userlogout' )->text(),
                                'href' => self::makeSpecialUrl( 'Userlogout',
                                        // userlogout link must always contain an & character, otherwise we might not be able
                                        // to detect a buggy precaching proxy (bug 17790)
@@ -721,7 +721,7 @@ class SkinTemplate extends Skin {
                        $useCombinedLoginLink = $this->useCombinedLoginLink();
                        $loginlink = $this->getUser()->isAllowed( 'createaccount' ) && $useCombinedLoginLink
                                ? 'nav-login-createaccount'
-                               : 'login';
+                               : 'pt-login';
                        $is_signup = $request->getText( 'type' ) == 'signup';
 
                        $login_url = array(
@@ -730,7 +730,7 @@ class SkinTemplate extends Skin {
                                'active' => $title->isSpecial( 'Userlogin' ) && ( $loginlink == 'nav-login-createaccount' || !$is_signup ),
                        );
                        $createaccount_url = array(
-                               'text' => $this->msg( 'createaccount' )->text(),
+                               'text' => $this->msg( 'pt-createaccount' )->text(),
                                'href' => self::makeSpecialUrl( 'Userlogin', "$returnto&type=signup" ),
                                'active' => $title->isSpecial( 'Userlogin' ) && $is_signup,
                        );
@@ -1596,7 +1596,7 @@ abstract class BaseTemplate extends QuickTemplate {
                        if ( isset( $plink['active'] ) ) {
                                $ptool['active'] = $plink['active'];
                        }
-                       foreach ( array( 'href', 'class', 'text' ) as $k ) {
+                       foreach ( array( 'href', 'class', 'text', 'dir' ) as $k ) {
                                if ( isset( $plink[$k] ) ) {
                                        $ptool['links'][0][$k] = $plink[$k];
                                }
index d863a06..0b28f66 100644 (file)
@@ -30,7 +30,7 @@ define( 'USER_TOKEN_LENGTH', 32 );
  * Int Serialized record version.
  * @ingroup Constants
  */
-define( 'MW_USER_VERSION', 8 );
+define( 'MW_USER_VERSION', 9 );
 
 /**
  * String Some punctuation to prevent editing from broken text-mangling proxies.
@@ -90,6 +90,7 @@ class User {
                'mEmailAuthenticated',
                'mEmailToken',
                'mEmailTokenExpires',
+               'mPasswordExpires',
                'mRegistration',
                'mEditCount',
                // user_groups table
@@ -185,6 +186,8 @@ class User {
                $mEmail, $mTouched, $mToken, $mEmailAuthenticated,
                $mEmailToken, $mEmailTokenExpires, $mRegistration, $mEditCount,
                $mGroups, $mOptionOverrides;
+
+       protected $mPasswordExpires;
        //@}
 
        /**
@@ -254,14 +257,14 @@ class User {
         * @see newFromSession()
         * @see newFromRow()
         */
-       function __construct() {
+       public function __construct() {
                $this->clearInstanceCache( 'defaults' );
        }
 
        /**
         * @return string
         */
-       function __toString() {
+       public function __toString() {
                return $this->getName();
        }
 
@@ -735,6 +738,73 @@ class User {
                }
        }
 
+       /**
+        * Expire a user's password
+        * @since 1.23
+        * @param $ts Mixed: optional timestamp to convert, default 0 for the current time
+        */
+       public function expirePassword( $ts = 0 ) {
+               $this->load();
+               $timestamp = wfTimestamp( TS_MW, $ts );
+               $this->mPasswordExpires = $timestamp;
+               $this->saveSettings();
+       }
+
+       /**
+        * Clear the password expiration for a user
+        * @since 1.23
+        * @param bool $load ensure user object is loaded first
+        */
+       public function resetPasswordExpiration( $load = true ) {
+               global $wgPasswordExpirationDays;
+               if ( $load ) {
+                       $this->load();
+               }
+               $newExpire = null;
+               if ( $wgPasswordExpirationDays ) {
+                       $newExpire = wfTimestamp(
+                               TS_MW,
+                               time() + ( $wgPasswordExpirationDays * 24 * 3600 )
+                       );
+               }
+               // Give extensions a chance to force an expiration
+               wfRunHooks( 'ResetPasswordExpiration', array( $this, &$newExpire ) );
+               $this->mPasswordExpires = $newExpire;
+       }
+
+       /**
+        * Check if the user's password is expired.
+        * TODO: Put this and password length into a PasswordPolicy object
+        * @since 1.23
+        * @return string|bool The expiration type, or false if not expired
+        *      hard: A password change is required to login
+        *      soft: Allow login, but encourage password change
+        *      false: Password is not expired
+        */
+       public function getPasswordExpired() {
+               global $wgPasswordExpireGrace;
+               $expired = false;
+               $now = wfTimestamp();
+               $expiration = $this->getPasswordExpireDate();
+               $expUnix = wfTimestamp( TS_UNIX, $expiration );
+               if ( $expiration !== null && $expUnix < $now ) {
+                       $expired = ( $expUnix + $wgPasswordExpireGrace < $now ) ? 'hard' : 'soft';
+               }
+               return $expired;
+       }
+
+       /**
+        * Get this user's password expiration date. Since this may be using
+        * the cached User object, we assume that whatever mechanism is setting
+        * the expiration date is also expiring the User cache.
+        * @since 1.23
+        * @return string|false the datestamp of the expiration, or null if not set
+        */
+       public function getPasswordExpireDate() {
+               $this->load();
+               return $this->mPasswordExpires;
+       }
+
        /**
         * Does a string look like an e-mail address?
         *
@@ -890,6 +960,8 @@ class User {
                $this->mEmailAuthenticated = null;
                $this->mEmailToken = '';
                $this->mEmailTokenExpires = null;
+               $this->mPasswordExpires = null;
+               $this->resetPasswordExpiration( false );
                $this->mRegistration = wfTimestamp( TS_MW );
                $this->mGroups = array();
 
@@ -984,7 +1056,8 @@ class User {
                        # Get the token from DB/cache and clean it up to remove garbage padding.
                        # This deals with historical problems with bugs and the default column value.
                        $token = rtrim( $proposedUser->getToken( false ) ); // correct token
-                       $passwordCorrect = ( strlen( $token ) && $token === $request->getCookie( 'Token' ) );
+                       // Make comparison in constant time (bug 61346)
+                       $passwordCorrect = strlen( $token ) && $this->compareSecrets( $token, $request->getCookie( 'Token' ) );
                        $from = 'cookie';
                } else {
                        // No session or persistent login cookie
@@ -1003,6 +1076,25 @@ class User {
                }
        }
 
+       /**
+        * A comparison of two strings, not vulnerable to timing attacks
+        * @param string $answer the secret string that you are comparing against.
+        * @param string $test compare this string to the $answer.
+        * @return bool True if the strings are the same, false otherwise
+        */
+       protected function compareSecrets( $answer, $test ) {
+               if ( strlen( $answer ) !== strlen( $test ) ) {
+                       $passwordCorrect = false;
+               } else {
+                       $result = 0;
+                       for ( $i = 0; $i < strlen( $answer ); $i++ ) {
+                               $result |= ord( $answer{$i} ) ^ ord( $test{$i} );
+                       }
+                       $passwordCorrect = ( $result == 0 );
+               }
+               return $passwordCorrect;
+       }
+
        /**
         * Load user and user_group data from the database.
         * $this->mId must be set, this is how the user is identified.
@@ -1097,6 +1189,7 @@ class User {
                        $this->mEmailAuthenticated = wfTimestampOrNull( TS_MW, $row->user_email_authenticated );
                        $this->mEmailToken = $row->user_email_token;
                        $this->mEmailTokenExpires = wfTimestampOrNull( TS_MW, $row->user_email_token_expires );
+                       $this->mPasswordExpires = wfTimestampOrNull( TS_MW, $row->user_password_expires );
                        $this->mRegistration = wfTimestampOrNull( TS_MW, $row->user_registration );
                } else {
                        $all = false;
@@ -1625,7 +1718,7 @@ class User {
         * @param bool $bFromSlave whether to check the slave database instead of the master
         * @return bool
         */
-       function isBlockedFrom( $title, $bFromSlave = false ) {
+       public function isBlockedFrom( $title, $bFromSlave = false ) {
                global $wgBlockAllowsUTEdit;
                wfProfileIn( __METHOD__ );
 
@@ -3324,6 +3417,7 @@ class User {
                                'user_token' => strval( $this->mToken ),
                                'user_email_token' => $this->mEmailToken,
                                'user_email_token_expires' => $dbw->timestampOrNull( $this->mEmailTokenExpires ),
+                               'user_password_expires' => $dbw->timestampOrNull( $this->mPasswordExpires ),
                        ), array( /* WHERE */
                                'user_id' => $this->mId
                        ), __METHOD__
@@ -3557,7 +3651,7 @@ class User {
         * Get whether the user is allowed to create an account.
         * @return bool
         */
-       function isAllowedToCreateAccount() {
+       public function isAllowedToCreateAccount() {
                return $this->isAllowed( 'createaccount' ) && !$this->isBlockedFromCreateAccount();
        }
 
@@ -3885,7 +3979,7 @@ class User {
         * @note Call saveSettings() after calling this function to commit the change.
         * @return bool Returns true
         */
-       function invalidateEmail() {
+       public function invalidateEmail() {
                $this->load();
                $this->mEmailToken = null;
                $this->mEmailTokenExpires = null;
@@ -3898,7 +3992,7 @@ class User {
         * Set the e-mail authentication timestamp.
         * @param string $timestamp TS_MW timestamp
         */
-       function setEmailAuthenticationTimestamp( $timestamp ) {
+       public function setEmailAuthenticationTimestamp( $timestamp ) {
                $this->load();
                $this->mEmailAuthenticated = $timestamp;
                wfRunHooks( 'UserSetEmailAuthenticationTimestamp', array( $this, &$this->mEmailAuthenticated ) );
@@ -4749,6 +4843,7 @@ class User {
                        'user_email_authenticated',
                        'user_email_token',
                        'user_email_token_expires',
+                       'user_password_expires',
                        'user_registration',
                        'user_editcount',
                );
index e1d00d3..fe80929 100644 (file)
@@ -649,7 +649,9 @@ class EmailNotification {
                                                && $watchingUser->isEmailConfirmed()
                                                && $watchingUser->getID() != $userTalkId
                                        ) {
-                                               $this->compose( $watchingUser );
+                                               if ( wfRunHooks( 'SendWatchlistEmailNotification', array( $watchingUser, $title, $this ) ) ) {
+                                                       $this->compose( $watchingUser );
+                                               }
                                        }
                                }
                        }
index 99857d9..5c67e5f 100644 (file)
@@ -448,6 +448,7 @@ class MediaWiki {
                        if ( function_exists( 'fastcgi_finish_request' ) ) {
                                fastcgi_finish_request();
                        }
+                       $this->triggerJobs();
                        $this->restInPeace();
                } catch ( Exception $e ) {
                        MWExceptionHandler::handle( $e );
@@ -583,6 +584,7 @@ class MediaWiki {
                        wfProfileOut( 'main-try-filecache' );
                }
 
+               // Actually do the work of the request and build up any output
                $this->performRequest();
 
                // Now commit any transactions, so that unreported errors after
@@ -602,9 +604,6 @@ class MediaWiki {
                // Do any deferred jobs
                DeferredUpdates::doUpdates( 'commit' );
 
-               // Execute a job from the queue
-               $this->doJobs();
-
                // Log profiling data, e.g. in the database or UDP
                wfLogProfilingData();
 
@@ -617,15 +616,19 @@ class MediaWiki {
        }
 
        /**
-        * Do a job from the job queue
+        * Potentially open a socket and sent an HTTP request back to the server
+        * to run a specified number of jobs. This registers a callback to cleanup
+        * the socket once it's done.
         */
-       private function doJobs() {
-               global $wgJobRunRate, $wgPhpCli, $IP;
+       protected function triggerJobs() {
+               global $wgJobRunRate, $wgServer, $wgScriptPath, $wgScriptExtension, $wgEnableAPI;
 
                if ( $wgJobRunRate <= 0 || wfReadOnly() ) {
                        return;
                }
 
+               $section = new ProfileSection( __METHOD__ );
+
                if ( $wgJobRunRate < 1 ) {
                        $max = mt_getrandmax();
                        if ( mt_rand( 0, $max ) > $max * $wgJobRunRate ) {
@@ -636,51 +639,49 @@ class MediaWiki {
                        $n = intval( $wgJobRunRate );
                }
 
-               if ( !wfShellExecDisabled() && is_executable( $wgPhpCli ) ) {
-                       // Start a background process to run some of the jobs
-                       wfProfileIn( __METHOD__ . '-exec' );
-                       $retVal = 1;
-                       $cmd = wfShellWikiCmd( "$IP/maintenance/runJobs.php",
-                               array( '--wiki', wfWikiID(), '--maxjobs', $n ) );
-                       $cmd .= " >" . wfGetNull() . " 2>&1"; // don't hang PHP on pipes
-                       if ( wfIsWindows() ) {
-                               // Using START makes this async and also works around a bug where using
-                               // wfShellExec() with a quoted script name causes a filename syntax error.
-                               $cmd = "START /B \"bg\" $cmd";
-                       } else {
-                               $cmd = "$cmd &";
-                       }
-                       wfShellExec( $cmd, $retVal );
-                       wfProfileOut( __METHOD__ . '-exec' );
+               $query = array( 'action' => 'runjobs',
+                       'tasks' => 'jobs', 'maxjobs' => $n, 'sigexpiry' => time() + 5 );
+               $query['signature'] = ApiRunJobs::getQuerySignature( $query );
+
+               if ( !$wgEnableAPI ) {
+                       ApiRunJobs::executeJobs( $n ); // slow fallback
+                       return;
+               }
+
+               $errno = $errstr = null;
+               $info = wfParseUrl( $wgServer );
+               wfSuppressWarnings();
+               $sock = fsockopen(
+                       $info['host'],
+                       isset( $info['port'] ) ? $info['port'] : 80,
+                       $errno,
+                       $errstr
+               );
+               wfRestoreWarnings();
+               if ( !$sock ) {
+                       wfDebugLog( 'runJobs', "Failed to start cron API (socket error $errno): $errstr\n" );
+                       ApiRunJobs::executeJobs( $n ); // slow fallback
+                       return;
+               }
+
+               $url = wfAppendQuery( "{$wgScriptPath}/api{$wgScriptExtension}", $query );
+               $req = "POST $url HTTP/1.1\r\nHost: {$info['host']}\r\nConnection: Close\r\n\r\n";
+
+               wfDebugLog( 'runJobs', "Running $n job(s) via '$url'\n" );
+               // Send a cron API request to be performed in the background.
+               // Give up if this takes too long to send (which should be rare).
+               stream_set_timeout( $sock, 1 );
+               $bytes = fwrite( $sock, $req );
+               if ( $bytes !== strlen( $req ) ) {
+                       wfDebugLog( 'runJobs', "Failed to start cron API (socket write error)\n" );
                } else {
-                       try {
-                               // Fallback to running the jobs here while the user waits
-                               $group = JobQueueGroup::singleton();
-                               do {
-                                       $job = $group->pop( JobQueueGroup::USE_CACHE ); // job from any queue
-                                       if ( $job ) {
-                                               $output = $job->toString() . "\n";
-                                               $t = - microtime( true );
-                                               wfProfileIn( __METHOD__ . '-' . get_class( $job ) );
-                                               $success = $job->run();
-                                               wfProfileOut( __METHOD__ . '-' . get_class( $job ) );
-                                               $group->ack( $job ); // done
-                                               $t += microtime( true );
-                                               $t = round( $t * 1000 );
-                                               if ( $success === false ) {
-                                                       $output .= "Error: " . $job->getLastError() . ", Time: $t ms\n";
-                                               } else {
-                                                       $output .= "Success, Time: $t ms\n";
-                                               }
-                                               wfDebugLog( 'jobqueue', $output );
-                                       }
-                               } while ( --$n && $job );
-                       } catch ( MWException $e ) {
-                               // We don't want exceptions thrown during job execution to
-                               // be reported to the user since the output is already sent.
-                               // Instead we just log them.
-                               MWExceptionHandler::logException( $e );
+                       // Do not wait for the response (the script should handle client aborts).
+                       // Make sure that we don't close before that script reaches ignore_user_abort().
+                       $status = fgets( $sock );
+                       if ( !preg_match( '#^HTTP/\d\.\d 202 #', $status ) ) {
+                               wfDebugLog( 'runJobs', "Failed to start cron API: received '$status'\n" );
                        }
                }
+               fclose( $sock );
        }
 }
diff --git a/includes/actions/Action.php b/includes/actions/Action.php
new file mode 100644 (file)
index 0000000..1180c5e
--- /dev/null
@@ -0,0 +1,380 @@
+<?php
+/**
+ * Base classes for actions done on pages.
+ *
+ * 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
+ *
+ * @file
+ */
+
+/**
+ * @defgroup Actions Action done on pages
+ */
+
+/**
+ * Actions are things which can be done to pages (edit, delete, rollback, etc).  They
+ * are distinct from Special Pages because an action must apply to exactly one page.
+ *
+ * To add an action in an extension, create a subclass of Action, and add the key to
+ * $wgActions.  There is also the deprecated UnknownAction hook
+ *
+ * Actions generally fall into two groups: the show-a-form-then-do-something-with-the-input
+ * format (protect, delete, move, etc), and the just-do-something format (watch, rollback,
+ * patrol, etc). The FormAction and FormlessAction classes represent these two groups.
+ */
+abstract class Action {
+
+       /**
+        * Page on which we're performing the action
+        * @var WikiPage|Article|ImagePage|CategoryPage|Page $page
+        */
+       protected $page;
+
+       /**
+        * IContextSource if specified; otherwise we'll use the Context from the Page
+        * @var IContextSource $context
+        */
+       protected $context;
+
+       /**
+        * The fields used to create the HTMLForm
+        * @var Array $fields
+        */
+       protected $fields;
+
+       /**
+        * Get the Action subclass which should be used to handle this action, false if
+        * the action is disabled, or null if it's not recognised
+        * @param $action String
+        * @param $overrides Array
+        * @return bool|null|string|callable
+        */
+       final private static function getClass( $action, array $overrides ) {
+               global $wgActions;
+               $action = strtolower( $action );
+
+               if ( !isset( $wgActions[$action] ) ) {
+                       return null;
+               }
+
+               if ( $wgActions[$action] === false ) {
+                       return false;
+               } elseif ( $wgActions[$action] === true && isset( $overrides[$action] ) ) {
+                       return $overrides[$action];
+               } elseif ( $wgActions[$action] === true ) {
+                       return ucfirst( $action ) . 'Action';
+               } else {
+                       return $wgActions[$action];
+               }
+       }
+
+       /**
+        * Get an appropriate Action subclass for the given action
+        * @param $action String
+        * @param $page Page
+        * @param $context IContextSource
+        * @return Action|bool|null false if the action is disabled, null
+        *     if it is not recognised
+        */
+       final public static function factory( $action, Page $page, IContextSource $context = null ) {
+               $classOrCallable = self::getClass( $action, $page->getActionOverrides() );
+
+               if ( is_string( $classOrCallable ) ) {
+                       $obj = new $classOrCallable( $page, $context );
+                       return $obj;
+               }
+
+               if ( is_callable( $classOrCallable ) ) {
+                       return call_user_func_array( $classOrCallable, array( $page, $context ) );
+               }
+
+               return $classOrCallable;
+       }
+
+       /**
+        * Get the action that will be executed, not necessarily the one passed
+        * passed through the "action" request parameter. Actions disabled in
+        * $wgActions will be replaced by "nosuchaction".
+        *
+        * @since 1.19
+        * @param $context IContextSource
+        * @return string: action name
+        */
+       final public static function getActionName( IContextSource $context ) {
+               global $wgActions;
+
+               $request = $context->getRequest();
+               $actionName = $request->getVal( 'action', 'view' );
+
+               // Check for disabled actions
+               if ( isset( $wgActions[$actionName] ) && $wgActions[$actionName] === false ) {
+                       $actionName = 'nosuchaction';
+               }
+
+               // Workaround for bug #20966: inability of IE to provide an action dependent
+               // on which submit button is clicked.
+               if ( $actionName === 'historysubmit' ) {
+                       if ( $request->getBool( 'revisiondelete' ) ) {
+                               $actionName = 'revisiondelete';
+                       } else {
+                               $actionName = 'view';
+                       }
+               } elseif ( $actionName == 'editredlink' ) {
+                       $actionName = 'edit';
+               }
+
+               // Trying to get a WikiPage for NS_SPECIAL etc. will result
+               // in WikiPage::factory throwing "Invalid or virtual namespace -1 given."
+               // For SpecialPages et al, default to action=view.
+               if ( !$context->canUseWikiPage() ) {
+                       return 'view';
+               }
+
+               $action = Action::factory( $actionName, $context->getWikiPage(), $context );
+               if ( $action instanceof Action ) {
+                       return $action->getName();
+               }
+
+               return 'nosuchaction';
+       }
+
+       /**
+        * Check if a given action is recognised, even if it's disabled
+        *
+        * @param string $name name of an action
+        * @return Bool
+        */
+       final public static function exists( $name ) {
+               return self::getClass( $name, array() ) !== null;
+       }
+
+       /**
+        * Get the IContextSource in use here
+        * @return IContextSource
+        */
+       final public function getContext() {
+               if ( $this->context instanceof IContextSource ) {
+                       return $this->context;
+               } elseif ( $this->page instanceof Article ) {
+                       // NOTE: $this->page can be a WikiPage, which does not have a context.
+                       wfDebug( __METHOD__ . ': no context known, falling back to Article\'s context.' );
+                       return $this->page->getContext();
+               }
+
+               wfWarn( __METHOD__ . ': no context known, falling back to RequestContext::getMain().' );
+               return RequestContext::getMain();
+       }
+
+       /**
+        * Get the WebRequest being used for this instance
+        *
+        * @return WebRequest
+        */
+       final public function getRequest() {
+               return $this->getContext()->getRequest();
+       }
+
+       /**
+        * Get the OutputPage being used for this instance
+        *
+        * @return OutputPage
+        */
+       final public function getOutput() {
+               return $this->getContext()->getOutput();
+       }
+
+       /**
+        * Shortcut to get the User being used for this instance
+        *
+        * @return User
+        */
+       final public function getUser() {
+               return $this->getContext()->getUser();
+       }
+
+       /**
+        * Shortcut to get the Skin being used for this instance
+        *
+        * @return Skin
+        */
+       final public function getSkin() {
+               return $this->getContext()->getSkin();
+       }
+
+       /**
+        * Shortcut to get the user Language being used for this instance
+        *
+        * @return Language
+        */
+       final public function getLanguage() {
+               return $this->getContext()->getLanguage();
+       }
+
+       /**
+        * Shortcut to get the user Language being used for this instance
+        *
+        * @deprecated since 1.19 Use getLanguage instead
+        * @return Language
+        */
+       final public function getLang() {
+               wfDeprecated( __METHOD__, '1.19' );
+               return $this->getLanguage();
+       }
+
+       /**
+        * Shortcut to get the Title object from the page
+        * @return Title
+        */
+       final public function getTitle() {
+               return $this->page->getTitle();
+       }
+
+       /**
+        * Get a Message object with context set
+        * Parameters are the same as wfMessage()
+        *
+        * @return Message object
+        */
+       final public function msg() {
+               $params = func_get_args();
+               return call_user_func_array( array( $this->getContext(), 'msg' ), $params );
+       }
+
+       /**
+        * Constructor.
+        *
+        * Only public since 1.21
+        *
+        * @param $page Page
+        * @param $context IContextSource
+        */
+       public function __construct( Page $page, IContextSource $context = null ) {
+               if ( $context === null ) {
+                       wfWarn( __METHOD__ . ' called without providing a Context object.' );
+                       // NOTE: We could try to initialize $context using $page->getContext(),
+                       //      if $page is an Article. That however seems to not work seamlessly.
+               }
+
+               $this->page = $page;
+               $this->context = $context;
+       }
+
+       /**
+        * Return the name of the action this object responds to
+        * @return String lowercase
+        */
+       abstract public function getName();
+
+       /**
+        * Get the permission required to perform this action.  Often, but not always,
+        * the same as the action name
+        * @return String|null
+        */
+       public function getRestriction() {
+               return null;
+       }
+
+       /**
+        * Checks if the given user (identified by an object) can perform this action.  Can be
+        * overridden by sub-classes with more complicated permissions schemes.  Failures here
+        * must throw subclasses of ErrorPageError
+        *
+        * @param $user User: the user to check, or null to use the context user
+        * @throws UserBlockedError|ReadOnlyError|PermissionsError
+        * @return bool True on success
+        */
+       protected function checkCanExecute( User $user ) {
+               $right = $this->getRestriction();
+               if ( $right !== null ) {
+                       $errors = $this->getTitle()->getUserPermissionsErrors( $right, $user );
+                       if ( count( $errors ) ) {
+                               throw new PermissionsError( $right, $errors );
+                       }
+               }
+
+               if ( $this->requiresUnblock() && $user->isBlocked() ) {
+                       $block = $user->getBlock();
+                       throw new UserBlockedError( $block );
+               }
+
+               // This should be checked at the end so that the user won't think the
+               // error is only temporary when he also don't have the rights to execute
+               // this action
+               if ( $this->requiresWrite() && wfReadOnly() ) {
+                       throw new ReadOnlyError();
+               }
+               return true;
+       }
+
+       /**
+        * Whether this action requires the wiki not to be locked
+        * @return Bool
+        */
+       public function requiresWrite() {
+               return true;
+       }
+
+       /**
+        * Whether this action can still be executed by a blocked user
+        * @return Bool
+        */
+       public function requiresUnblock() {
+               return true;
+       }
+
+       /**
+        * Set output headers for noindexing etc.  This function will not be called through
+        * the execute() entry point, so only put UI-related stuff in here.
+        */
+       protected function setHeaders() {
+               $out = $this->getOutput();
+               $out->setRobotPolicy( "noindex,nofollow" );
+               $out->setPageTitle( $this->getPageTitle() );
+               $this->getOutput()->setSubtitle( $this->getDescription() );
+               $out->setArticleRelated( true );
+       }
+
+       /**
+        * Returns the name that goes in the \<h1\> page title
+        *
+        * @return String
+        */
+       protected function getPageTitle() {
+               return $this->getTitle()->getPrefixedText();
+       }
+
+       /**
+        * Returns the description that goes below the \<h1\> tag
+        *
+        * @return String
+        */
+       protected function getDescription() {
+               return $this->msg( strtolower( $this->getName() ) )->escaped();
+       }
+
+       /**
+        * The main action entry point.  Do all output for display and send it to the context
+        * output.  Do not use globals $wgOut, $wgRequest, etc, in implementations; use
+        * $this->getOutput(), etc.
+        * @throws ErrorPageError
+        */
+       abstract public function show();
+
+       /**
+        * Execute the action in a silent fashion: do not display anything or release any errors.
+        * @return Bool whether execution was successful
+        */
+       abstract public function execute();
+}
diff --git a/includes/actions/FormAction.php b/includes/actions/FormAction.php
new file mode 100644 (file)
index 0000000..974ee94
--- /dev/null
@@ -0,0 +1,168 @@
+<?php
+/**
+ * Base classes for actions done on pages.
+ *
+ * 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
+ *
+ * @file
+ */
+
+/**
+ * @defgroup Actions Action done on pages
+ */
+
+/**
+ * An action which shows a form and does something based on the input from the form
+ */
+abstract class FormAction extends Action {
+
+       /**
+        * Get an HTMLForm descriptor array
+        * @return Array
+        */
+       abstract protected function getFormFields();
+
+       /**
+        * Add pre- or post-text to the form
+        * @return String HTML which will be sent to $form->addPreText()
+        */
+       protected function preText() {
+               return '';
+       }
+
+       /**
+        * @return string
+        */
+       protected function postText() {
+               return '';
+       }
+
+       /**
+        * Play with the HTMLForm if you need to more substantially
+        * @param $form HTMLForm
+        */
+       protected function alterForm( HTMLForm $form ) {
+       }
+
+       /**
+        * Get the HTMLForm to control behavior
+        * @return HTMLForm|null
+        */
+       protected function getForm() {
+               $this->fields = $this->getFormFields();
+
+               // Give hooks a chance to alter the form, adding extra fields or text etc
+               wfRunHooks( 'ActionModifyFormFields', array( $this->getName(), &$this->fields, $this->page ) );
+
+               $form = new HTMLForm( $this->fields, $this->getContext(), $this->getName() );
+               $form->setSubmitCallback( array( $this, 'onSubmit' ) );
+
+               // Retain query parameters (uselang etc)
+               $form->addHiddenField( 'action', $this->getName() ); // Might not be the same as the query string
+               $params = array_diff_key(
+                       $this->getRequest()->getQueryValues(),
+                       array( 'action' => null, 'title' => null )
+               );
+               $form->addHiddenField( 'redirectparams', wfArrayToCgi( $params ) );
+
+               $form->addPreText( $this->preText() );
+               $form->addPostText( $this->postText() );
+               $this->alterForm( $form );
+
+               // Give hooks a chance to alter the form, adding extra fields or text etc
+               wfRunHooks( 'ActionBeforeFormDisplay', array( $this->getName(), &$form, $this->page ) );
+
+               return $form;
+       }
+
+       /**
+        * Process the form on POST submission.  If you return false from getFormFields(),
+        * this will obviously never be reached.  If you don't want to do anything with the
+        * form, just return false here
+        * @param  $data Array
+        * @return Bool|Array true for success, false for didn't-try, array of errors on failure
+        */
+       abstract public function onSubmit( $data );
+
+       /**
+        * Do something exciting on successful processing of the form.  This might be to show
+        * a confirmation message (watch, rollback, etc) or to redirect somewhere else (edit,
+        * protect, etc).
+        */
+       abstract public function onSuccess();
+
+       /**
+        * The basic pattern for actions is to display some sort of HTMLForm UI, maybe with
+        * some stuff underneath (history etc); to do some processing on submission of that
+        * form (delete, protect, etc) and to do something exciting on 'success', be that
+        * display something new or redirect to somewhere.  Some actions have more exotic
+        * behavior, but that's what subclassing is for :D
+        */
+       public function show() {
+               $this->setHeaders();
+
+               // This will throw exceptions if there's a problem
+               $this->checkCanExecute( $this->getUser() );
+
+               $form = $this->getForm();
+               if ( $form->show() ) {
+                       $this->onSuccess();
+               }
+       }
+
+       /**
+        * @see Action::execute()
+        *
+        * @param $data array|null
+        * @param $captureErrors bool
+        * @throws ErrorPageError|Exception
+        * @return bool
+        */
+       public function execute( array $data = null, $captureErrors = true ) {
+               try {
+                       // Set a new context so output doesn't leak.
+                       $this->context = clone $this->getContext();
+
+                       // This will throw exceptions if there's a problem
+                       $this->checkCanExecute( $this->getUser() );
+
+                       $fields = array();
+                       foreach ( $this->fields as $key => $params ) {
+                               if ( isset( $data[$key] ) ) {
+                                       $fields[$key] = $data[$key];
+                               } elseif ( isset( $params['default'] ) ) {
+                                       $fields[$key] = $params['default'];
+                               } else {
+                                       $fields[$key] = null;
+                               }
+                       }
+                       $status = $this->onSubmit( $fields );
+                       if ( $status === true ) {
+                               // This might do permanent stuff
+                               $this->onSuccess();
+                               return true;
+                       } else {
+                               return false;
+                       }
+               }
+               catch ( ErrorPageError $e ) {
+                       if ( $captureErrors ) {
+                               return false;
+                       } else {
+                               throw $e;
+                       }
+               }
+       }
+}
diff --git a/includes/actions/FormlessAction.php b/includes/actions/FormlessAction.php
new file mode 100644 (file)
index 0000000..6cab4d1
--- /dev/null
@@ -0,0 +1,100 @@
+<?php
+/**
+ * Base classes for actions done on pages.
+ *
+ * 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
+ *
+ * @file
+ */
+
+/**
+ * @defgroup Actions Action done on pages
+ */
+
+/**
+ * An action which just does something, without showing a form first.
+ */
+abstract class FormlessAction extends Action {
+
+       /**
+        * Show something on GET request.
+        * @return String|null will be added to the HTMLForm if present, or just added to the
+        *     output if not.  Return null to not add anything
+        */
+       abstract public function onView();
+
+       /**
+        * We don't want an HTMLForm
+        * @return bool
+        */
+       protected function getFormFields() {
+               return false;
+       }
+
+       /**
+        * @param $data Array
+        * @return bool
+        */
+       public function onSubmit( $data ) {
+               return false;
+       }
+
+       /**
+        * @return bool
+        */
+       public function onSuccess() {
+               return false;
+       }
+
+       public function show() {
+               $this->setHeaders();
+
+               // This will throw exceptions if there's a problem
+               $this->checkCanExecute( $this->getUser() );
+
+               $this->getOutput()->addHTML( $this->onView() );
+       }
+
+       /**
+        * Execute the action silently, not giving any output.  Since these actions don't have
+        * forms, they probably won't have any data, but some (eg rollback) may do
+        * @param array $data values that would normally be in the GET request
+        * @param bool $captureErrors whether to catch exceptions and just return false
+        * @throws ErrorPageError|Exception
+        * @return Bool whether execution was successful
+        */
+       public function execute( array $data = null, $captureErrors = true ) {
+               try {
+                       // Set a new context so output doesn't leak.
+                       $this->context = clone $this->getContext();
+                       if ( is_array( $data ) ) {
+                               $this->context->setRequest( new FauxRequest( $data, false ) );
+                       }
+
+                       // This will throw exceptions if there's a problem
+                       $this->checkCanExecute( $this->getUser() );
+
+                       $this->onView();
+                       return true;
+               }
+               catch ( ErrorPageError $e ) {
+                       if ( $captureErrors ) {
+                               return false;
+                       } else {
+                               throw $e;
+                       }
+               }
+       }
+}
index f90ba98..2cdc875 100644 (file)
@@ -78,6 +78,7 @@ class ApiFeedContributions extends ApiBase {
                        'tagFilter' => $params['tagfilter'],
                        'deletedOnly' => $params['deletedonly'],
                        'topOnly' => $params['toponly'],
+                       'newOnly' => $params['newonly'],
                        'showSizeDiff' => $params['showsizediff'],
                ) );
 
@@ -186,6 +187,7 @@ class ApiFeedContributions extends ApiBase {
                        ),
                        'deletedonly' => false,
                        'toponly' => false,
+                       'newonly' => false,
                        'showsizediff' => false,
                );
        }
@@ -200,6 +202,7 @@ class ApiFeedContributions extends ApiBase {
                        'tagfilter' => 'Filter contributions that have these tags',
                        'deletedonly' => 'Show only deleted contributions',
                        'toponly' => 'Only show edits that are latest revisions',
+                       'newonly' => 'Only show edits that are page creations',
                        'showsizediff' => 'Show the size difference between revisions. Disabled in Miser Mode',
                );
        }
index 63a5502..49a02fe 100644 (file)
@@ -271,12 +271,22 @@ See the <a href='https://www.mediawiki.org/wiki/API'>complete documentation</a>,
                // encode all comments or tags as safe blue strings
                $text = str_replace( '&lt;', '<span style="color:blue;">&lt;', $text );
                $text = str_replace( '&gt;', '&gt;</span>', $text );
+
                // identify requests to api.php
-               $text = preg_replace( "#api\\.php\\?[^ <\n\t]+#", '<a href="\\0">\\0</a>', $text );
+               $text = preg_replace( '#^(\s*)(api\.php\?[^ <\n\t]+)$#m', '\1<a href="\2">\2</a>', $text );
                if ( $this->mHelp ) {
                        // make strings inside * bold
                        $text = preg_replace( "#\\*[^<>\n]+\\*#", '<b>\\0</b>', $text );
                }
+
+               // Armor links (bug 61362)
+               $masked = array();
+               $text = preg_replace_callback( '#<a .*?</a>#', function ( $matches ) use ( &$masked ) {
+                       $sha = sha1( $matches[0] );
+                       $masked[$sha] = $matches[0];
+                       return "<$sha>";
+               }, $text );
+
                // identify URLs
                $protos = wfUrlProtocolsWithoutProtRel();
                // This regex hacks around bug 13218 (&quot; included in the URL)
@@ -286,6 +296,12 @@ See the <a href='https://www.mediawiki.org/wiki/API'>complete documentation</a>,
                        $text
                );
 
+               // Unarmor links
+               $text = preg_replace_callback( '#<([0-9a-f]{40})>#', function ( $matches ) use ( &$masked ) {
+                       $sha = $matches[1];
+                       return isset( $masked[$sha] ) ? $masked[$sha] : $matches[0];
+               }, $text );
+
                /**
                 * Temporary fix for bad links in help messages. As a special case,
                 * XML-escaped metachars are de-escaped one level in the help message
index 2684f51..0939dea 100644 (file)
@@ -67,6 +67,7 @@ class ApiMain extends ApiBase {
                'purge' => 'ApiPurge',
                'setnotificationtimestamp' => 'ApiSetNotificationTimestamp',
                'rollback' => 'ApiRollback',
+               'runjobs' => 'ApiRunJobs',
                'delete' => 'ApiDelete',
                'undelete' => 'ApiUndelete',
                'protect' => 'ApiProtect',
index c054bc1..49ab591 100644 (file)
@@ -54,6 +54,7 @@ class ApiQuery extends ApiBase {
                'iwlinks' => 'ApiQueryIWLinks',
                'langlinks' => 'ApiQueryLangLinks',
                'pageprops' => 'ApiQueryPageProps',
+               'redirects' => 'ApiQueryRedirects',
                'revisions' => 'ApiQueryRevisions',
                'stashimageinfo' => 'ApiQueryStashImageInfo',
                'templates' => 'ApiQueryLinks',
@@ -69,6 +70,7 @@ class ApiQuery extends ApiBase {
                'allimages' => 'ApiQueryAllImages',
                'alllinks' => 'ApiQueryAllLinks',
                'allpages' => 'ApiQueryAllPages',
+               'allredirects' => 'ApiQueryAllLinks',
                'alltransclusions' => 'ApiQueryAllLinks',
                'allusers' => 'ApiQueryAllUsers',
                'backlinks' => 'ApiQueryBacklinks',
index bccc25f..7b5123d 100644 (file)
  */
 class ApiQueryAllLinks extends ApiQueryGeneratorBase {
 
+       private $table, $tablePrefix, $indexTag,
+               $description, $descriptionWhat, $descriptionTargets, $descriptionLinking;
+       private $fieldTitle = 'title';
+       private $dfltNamespace = NS_MAIN;
+       private $hasNamespace = true;
+       private $useIndex = null;
+       private $props = array(), $propHelp = array();
+
        public function __construct( $query, $moduleName ) {
                switch ( $moduleName ) {
                        case 'alllinks':
                                $prefix = 'al';
                                $this->table = 'pagelinks';
                                $this->tablePrefix = 'pl_';
-                               $this->fieldTitle = 'title';
-                               $this->dfltNamespace = NS_MAIN;
-                               $this->hasNamespace = true;
+                               $this->useIndex = 'pl_namespace';
                                $this->indexTag = 'l';
                                $this->description = 'Enumerate all links that point to a given namespace';
                                $this->descriptionWhat = 'link';
@@ -50,9 +56,8 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                                $prefix = 'at';
                                $this->table = 'templatelinks';
                                $this->tablePrefix = 'tl_';
-                               $this->fieldTitle = 'title';
                                $this->dfltNamespace = NS_TEMPLATE;
-                               $this->hasNamespace = true;
+                               $this->useIndex = 'tl_namespace';
                                $this->indexTag = 't';
                                $this->description =
                                        'List all transclusions (pages embedded using {{x}}), including non-existing';
@@ -73,6 +78,24 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                                $this->descriptionTargets = 'file titles';
                                $this->descriptionLinking = 'using';
                                break;
+                       case 'allredirects':
+                               $prefix = 'ar';
+                               $this->table = 'redirect';
+                               $this->tablePrefix = 'rd_';
+                               $this->indexTag = 'r';
+                               $this->description = 'List all redirects to a namespace';
+                               $this->descriptionWhat = 'redirect';
+                               $this->descriptionTargets = 'target pages';
+                               $this->descriptionLinking = 'redirecting';
+                               $this->props = array(
+                                       'fragment' => 'rd_fragment',
+                                       'interwiki' => 'rd_interwiki',
+                               );
+                               $this->propHelp = array(
+                                       ' fragment - Adds the fragment from the redirect, if any',
+                                       ' interwiki - Adds the interwiki prefix from the redirect, if any',
+                               );
+                               break;
                        default:
                                ApiBase::dieDebug( __METHOD__, 'Unknown module name' );
                }
@@ -112,10 +135,11 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                }
 
                if ( $params['unique'] ) {
-                       if ( $fld_ids ) {
+                       $matches = array_intersect_key( $prop, $this->props + array( 'ids' => 1 ) );
+                       if ( $matches ) {
+                               $p = $this->getModulePrefix();
                                $this->dieUsage(
-                                       "{$this->getModuleName()} cannot return corresponding page " .
-                                               "ids in unique {$this->descriptionWhat}s mode",
+                                       "Cannot use {$p}prop=" . join( '|', array_keys( $matches ) ) . " with {$p}unique",
                                        'params'
                                );
                        }
@@ -161,9 +185,12 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
 
                $this->addFields( array( 'pl_title' => $pfx . $fieldTitle ) );
                $this->addFieldsIf( array( 'pl_from' => $pfx . 'from' ), !$params['unique'] );
+               foreach ( $this->props as $name => $field ) {
+                       $this->addFieldsIf( $field, isset( $prop[$name] ) );
+               }
 
-               if ( $this->hasNamespace ) {
-                       $this->addOption( 'USE INDEX', $pfx . 'namespace' );
+               if ( $this->useIndex ) {
+                       $this->addOption( 'USE INDEX', $this->useIndex );
                }
                $limit = $params['limit'];
                $this->addOption( 'LIMIT', $limit + 1 );
@@ -203,6 +230,11 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                                        $title = Title::makeTitle( $namespace, $row->pl_title );
                                        ApiQueryBase::addTitleInfo( $vals, $title );
                                }
+                               foreach ( $this->props as $name => $field ) {
+                                       if ( isset( $prop[$name] ) && $row->$field !== null && $row->$field !== '' ) {
+                                               $vals[$name] = $row->$field;
+                                       }
+                               }
                                $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $vals );
                                if ( !$fit ) {
                                        if ( $params['unique'] ) {
@@ -238,10 +270,9 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                        'prop' => array(
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_DFLT => 'title',
-                               ApiBase::PARAM_TYPE => array(
-                                       'ids',
-                                       'title'
-                               )
+                               ApiBase::PARAM_TYPE => array_merge(
+                                       array( 'ids', 'title' ), array_keys( $this->props )
+                               ),
                        ),
                        'namespace' => array(
                                ApiBase::PARAM_DFLT => $this->dfltNamespace,
@@ -279,19 +310,23 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                        'to' => "The title of the $what to stop enumerating at",
                        'prefix' => "Search for all $targets that begin with this value",
                        'unique' => array(
-                               "Only show distinct $targets. Cannot be used with {$p}prop=ids.",
+                               "Only show distinct $targets. Cannot be used with {$p}prop=" .
+                                       join( '|', array_keys( array( 'ids' => 1 ) + $this->props ) ) . '.',
                                'When used as a generator, yields target pages instead of source pages.',
                        ),
                        'prop' => array(
                                'What pieces of information to include',
-                               " ids    - Adds the pageid of the $linking page (Cannot be used with {$p}unique)",
-                               " title  - Adds the title of the $what",
+                               " ids      - Adds the pageid of the $linking page (Cannot be used with {$p}unique)",
+                               " title    - Adds the title of the $what",
                        ),
                        'namespace' => 'The namespace to enumerate',
                        'limit' => 'How many total items to return',
                        'continue' => 'When more results are available, use this to continue',
                        'dir' => 'The direction in which to list',
                );
+               foreach ( $this->propHelp as $help ) {
+                       $paramDescription['prop'][] = "$help (Cannot be used with {$p}unique)";
+               }
                if ( !$this->hasNamespace ) {
                        unset( $paramDescription['namespace'] );
                }
index 57f76bc..47768cb 100644 (file)
@@ -415,7 +415,7 @@ class ApiQueryBlocks extends ApiQueryBase {
                global $wgBlockCIDRLimit;
 
                return array_merge( parent::getPossibleErrors(),
-                       $this->getRequireOnlyOneParameterErrorMessages( array( 'users', 'ip' ) ),
+                       $this->getRequireMaxOneParameterErrorMessages( array( 'users', 'ip' ) ),
                        array(
                                array(
                                        'code' => 'cidrtoobroad',
index 1578775..848c6ce 100644 (file)
@@ -65,7 +65,6 @@ class ApiQueryLogEvents extends ApiQueryBase {
 
                // Order is significant here
                $this->addTables( array( 'logging', 'user', 'page' ) );
-               $this->addOption( 'STRAIGHT_JOIN' );
                $this->addJoinConds( array(
                        'user' => array( 'LEFT JOIN',
                                'user_id=log_user' ),
diff --git a/includes/api/ApiQueryRedirects.php b/includes/api/ApiQueryRedirects.php
new file mode 100644 (file)
index 0000000..c046109
--- /dev/null
@@ -0,0 +1,267 @@
+<?php
+/**
+ * API module to return redirects to a page
+ *
+ * Created on Dec 30, 2013
+ *
+ * Copyright © 2013 Brad Jorsch <bjorsch@wikimedia.org>
+ *
+ * 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
+ * @since 1.23
+ */
+
+/**
+ * This query lists redirects to the given pages.
+ *
+ * @ingroup API
+ */
+class ApiQueryRedirects extends ApiQueryGeneratorBase {
+
+       public function __construct( $query, $moduleName ) {
+               parent::__construct( $query, $moduleName, 'rd' );
+       }
+
+       public function execute() {
+               $this->run();
+       }
+
+       public function executeGenerator( $resultPageSet ) {
+               $this->run( $resultPageSet );
+       }
+
+       /**
+        * @param $resultPageSet ApiPageSet
+        */
+       private function run( ApiPageSet $resultPageSet = null ) {
+               $db = $this->getDB();
+               $params = $this->extractRequestParams();
+               $emptyString = $db->addQuotes( '' );
+
+               $pageSet = $this->getPageSet();
+               $titles = $pageSet->getGoodTitles() + $pageSet->getMissingTitles();
+
+               if ( !is_null( $params['continue'] ) ) {
+                       $cont = explode( '|', $params['continue'] );
+                       $this->dieContinueUsageIf( count( $cont ) != 3 );
+                       $rd_namespace = (int)$cont[0];
+                       $this->dieContinueUsageIf( $rd_namespace != $cont[0] );
+                       $rd_title = $db->addQuotes( $cont[1] );
+                       $rd_from = (int)$cont[2];
+                       $this->dieContinueUsageIf( $rd_from != $cont[2] );
+                       $this->addWhere(
+                               "rd_namespace > $rd_namespace OR " .
+                               "(rd_namespace = $rd_namespace AND " .
+                               "(rd_title > $rd_title OR " .
+                               "(rd_title = $rd_title AND " .
+                               "rd_from >= $rd_from)))"
+                       );
+
+                       // Remove titles that we're past already
+                       $titles = array_filter( $titles, function ( $t ) use ( $rd_namespace, $rd_title ) {
+                               $ns = $t->getNamespace();
+                               return ( $ns > $rd_namespace ||
+                                       $ns == $rd_namespace && $t->getDBKey() >= $rd_title
+                               );
+                       } );
+               }
+
+               if ( !$titles ) {
+                       return; // nothing to do
+               }
+
+               $this->addTables( array( 'redirect', 'page' ) );
+               $this->addFields( array(
+                       'rd_from',
+                       'rd_namespace',
+                       'rd_title',
+               ) );
+
+               if ( is_null( $resultPageSet ) ) {
+                       $prop = array_flip( $params['prop'] );
+                       $fld_pageid = isset( $prop['pageid'] );
+                       $fld_title = isset( $prop['title'] );
+                       $fld_fragment = isset( $prop['fragment'] );
+
+                       $this->addFieldsIf( 'rd_fragment', $fld_fragment );
+                       $this->addFieldsIf( array( 'page_namespace', 'page_title' ), $fld_title );
+               } else {
+                       $this->addFields( array( 'page_namespace', 'page_title' ) );
+               }
+
+               $lb = new LinkBatch( $titles );
+               $this->addWhere( array(
+                       'rd_from = page_id',
+                       "rd_interwiki = $emptyString OR rd_interwiki IS NULL",
+                       $lb->constructSet( 'rd', $db ),
+               ) );
+
+               if ( $params['show'] !== null ) {
+                       $show = array_flip( $params['show'] );
+                       if ( isset( $show['fragment'] ) && isset( $show['!fragment'] ) ) {
+                               $this->dieUsageMsg( 'show' );
+                       }
+                       $this->addWhereIf( "rd_fragment != $emptyString", isset( $show['fragment'] ) );
+                       $this->addWhereIf( "rd_fragment = $emptyString OR rd_fragment IS NULL", isset( $show['!fragment'] ) );
+               }
+
+               $map = $pageSet->getAllTitlesByNamespace();
+
+               // Why, MySQL? Why do you do this to us?
+               $sortby = array();
+               if ( count( $map ) > 1 ) {
+                       $sortby[] = 'rd_namespace';
+               }
+               $theTitle = null;
+               foreach ( $map as $nsTitles ) {
+                       reset( $nsTitles );
+                       $key = key( $nsTitles );
+                       if ( $theTitle === null ) {
+                               $theTitle = $key;
+                       }
+                       if ( count( $nsTitles ) > 1 || $key !== $theTitle ) {
+                               $sortby[] = 'rd_title';
+                               break;
+                       }
+               }
+               $sortby[] = 'rd_from';
+               $this->addOption( 'ORDER BY', $sortby );
+
+               $this->addOption( 'LIMIT', $params['limit'] + 1 );
+
+               $res = $this->select( __METHOD__ );
+
+               if ( is_null( $resultPageSet ) ) {
+                       $count = 0;
+                       foreach ( $res as $row ) {
+                               if ( ++$count > $params['limit'] ) {
+                                       // We've reached the one extra which shows that
+                                       // there are additional pages to be had. Stop here...
+                                       $this->setContinueEnumParameter( 'continue',
+                                               "$row->rd_namespace|$row->rd_title|$row->rd_from"
+                                       );
+                                       break;
+                               }
+
+                               # Get the ID of the current page
+                               $id = $map[$row->rd_namespace][$row->rd_title];
+
+                               $vals = array();
+                               if ( $fld_pageid ) {
+                                       $vals['pageid'] = $row->rd_from;
+                               }
+                               if ( $fld_title ) {
+                                       ApiQueryBase::addTitleInfo( $vals,
+                                               Title::makeTitle( $row->page_namespace, $row->page_title )
+                                       );
+                               }
+                               if ( $fld_fragment && $row->rd_fragment !== null && $row->rd_fragment !== '' ) {
+                                       $vals['fragment'] = $row->rd_fragment;
+                               }
+                               $fit = $this->addPageSubItem( $id, $vals );
+                               if ( !$fit ) {
+                                       $this->setContinueEnumParameter( 'continue',
+                                               "$row->rd_namespace|$row->rd_title|$row->rd_from"
+                                       );
+                                       break;
+                               }
+                       }
+               } else {
+                       $titles = array();
+                       $count = 0;
+                       foreach ( $res as $row ) {
+                               if ( ++$count > $params['limit'] ) {
+                                       // We've reached the one extra which shows that
+                                       // there are additional pages to be had. Stop here...
+                                       $this->setContinueEnumParameter( 'continue',
+                                               "$row->rd_namespace|$row->rd_title|$row->rd_from"
+                                       );
+                                       break;
+                               }
+                               $titles[] = Title::makeTitle( $row->page_namespace, $row->page_title );
+                       }
+                       $resultPageSet->populateFromTitles( $titles );
+               }
+       }
+
+       public function getCacheMode( $params ) {
+               return 'public';
+       }
+
+       public function getAllowedParams() {
+               return array(
+                       'prop' => array(
+                               ApiBase::PARAM_TYPE => array(
+                                       'pageid',
+                                       'title',
+                                       'fragment',
+                               ),
+                               ApiBase::PARAM_ISMULTI => true,
+                               ApiBase::PARAM_DFLT => 'pageid|title',
+                       ),
+                       'show' => array(
+                               ApiBase::PARAM_TYPE => array(
+                                       'fragment', '!fragment',
+                               ),
+                               ApiBase::PARAM_ISMULTI => true,
+                       ),
+                       'limit' => array(
+                               ApiBase::PARAM_DFLT => 10,
+                               ApiBase::PARAM_TYPE => 'limit',
+                               ApiBase::PARAM_MIN => 1,
+                               ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
+                               ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
+                       ),
+                       'continue' => null,
+               );
+       }
+
+       public function getParamDescription() {
+               return array(
+                       'prop' => array(
+                               'Which properties to get:',
+                               ' pageid   - Page id of each redirect',
+                               ' title    - Title of each redirect',
+                               ' fragment - Fragment of each redirect, if any',
+                       ),
+                       'show' => array(
+                               'Show only items that meet this criteria.',
+                               ' fragment  - Only show redirects with a fragment',
+                               ' !fragment - Only show redirects without a fragment',
+                       ),
+                       'limit' => 'How many redirects to return',
+                       'continue' => 'When more results are available, use this to continue',
+               );
+       }
+
+       public function getDescription() {
+               return 'Returns all redirects to the given page(s)';
+       }
+
+       public function getExamples() {
+               return array(
+                       'api.php?action=query&prop=redirects&titles=Main%20Page'
+                               => 'Get a list of redirects to the [[Main Page]]',
+                       'api.php?action=query&generator=redirects&titles=Main%20Page&prop=info'
+                               => 'Get information about all redirects to the [[Main Page]]',
+               );
+       }
+
+       public function getHelpUrls() {
+               return 'https://www.mediawiki.org/wiki/API:Properties#redirects_.2F_rd';
+       }
+}
index 4fedebc..1132a60 100644 (file)
@@ -63,6 +63,7 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                $limit = $params['limit'];
                $query = $params['search'];
                $what = $params['what'];
+               $interwiki = $params['interwiki'];
                $searchInfo = array_flip( $params['info'] );
                $prop = array_flip( $params['prop'] );
 
@@ -197,10 +198,52 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                        $result = $matches->next();
                }
 
+               $hasInterwikiResults = false;
+               if ( $interwiki && $resultPageSet === null && $matches->hasInterwikiResults() ) {
+                       $matches = $matches->getInterwikiResults();
+                       $iwprefixes = array();
+                       $hasInterwikiResults = true;
+
+                       // Include number of results if requested
+                       if ( isset( $searchInfo['totalhits'] ) ) {
+                               $totalhits = $matches->getTotalHits();
+                               if ( $totalhits !== null ) {
+                                       $apiResult->addValue( array( 'query', 'interwikisearchinfo' ),
+                                               'totalhits', $totalhits );
+                               }
+                       }
+
+                       $result = $matches->next();
+                       while ( $result ) {
+                               $title = $result->getTitle();
+                               $vals = array(
+                                       'namespace' => $result->getInterwikiNamespaceText(),
+                                       'title' => $title->getText(),
+                                       'url' => $title->getFullUrl(),
+                               );
+
+                               // Add item to results and see whether it fits
+                               $fit = $apiResult->addValue( array( 'query', 'interwiki' . $this->getModuleName(), $result->getInterwikiPrefix()  ),
+                                       null, $vals );
+                               if ( !$fit ) {
+                                       // We hit the limit. We can't really provide any meaningful
+                                       // pagination info so just bail out
+                                       break;
+                               }
+
+                               $result = $matches->next();
+                       }
+               }
+
                if ( is_null( $resultPageSet ) ) {
                        $apiResult->setIndexedTagName_internal( array(
                                'query', $this->getModuleName()
                        ), 'p' );
+                       if ( $hasInterwikiResults ) {
+                               $apiResult->setIndexedTagName_internal( array(
+                                       'query', 'interwiki' . $this->getModuleName()
+                               ), 'p' );
+                       }
                } else {
                        $resultPageSet->populateFromTitles( $titles );
                }
@@ -264,7 +307,8 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                                ApiBase::PARAM_MIN => 1,
                                ApiBase::PARAM_MAX => ApiBase::LIMIT_SML1,
                                ApiBase::PARAM_MAX2 => ApiBase::LIMIT_SML2
-                       )
+                       ),
+                       'interwiki' => false,
                );
 
                $alternatives = SearchEngine::getSearchTypes();
@@ -303,7 +347,8 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                        ),
                        'redirects' => 'Include redirect pages in the search',
                        'offset' => 'Use this value to continue paging (return by query)',
-                       'limit' => 'How many total pages to return'
+                       'limit' => 'How many total pages to return',
+                       'interwiki' => 'Include interwiki results in the search, if available'
                );
 
                if ( count( SearchEngine::getSearchTypes() ) > 1 ) {
index b492d9a..9ad77d4 100644 (file)
@@ -207,10 +207,16 @@ class ApiQueryContributions extends ApiQueryBase {
                $this->addWhereFld( 'page_namespace', $this->params['namespace'] );
 
                $show = $this->params['show'];
+               if ( $this->params['toponly'] ) { // deprecated/old param
+                       $show[] = 'top';
+               }
                if ( !is_null( $show ) ) {
                        $show = array_flip( $show );
+
                        if ( ( isset( $show['minor'] ) && isset( $show['!minor'] ) )
                                || ( isset( $show['patrolled'] ) && isset( $show['!patrolled'] ) )
+                               || ( isset( $show['top'] ) && isset( $show['!top'] ) )
+                               || ( isset( $show['new'] ) && isset( $show['!new'] ) )
                        ) {
                                $this->dieUsageMsg( 'show' );
                        }
@@ -219,6 +225,10 @@ class ApiQueryContributions extends ApiQueryBase {
                        $this->addWhereIf( 'rev_minor_edit != 0', isset( $show['minor'] ) );
                        $this->addWhereIf( 'rc_patrolled = 0', isset( $show['!patrolled'] ) );
                        $this->addWhereIf( 'rc_patrolled != 0', isset( $show['patrolled'] ) );
+                       $this->addWhereIf( 'rev_id != page_latest', isset( $show['!top'] ) );
+                       $this->addWhereIf( 'rev_id = page_latest', isset( $show['top'] ) );
+                       $this->addWhereIf( 'rev_parent_id != 0', isset( $show['!new'] ) );
+                       $this->addWhereIf( 'rev_parent_id = 0', isset( $show['new'] ) );
                }
                $this->addOption( 'LIMIT', $this->params['limit'] + 1 );
                $index = array( 'revision' => 'usertext_timestamp' );
@@ -294,10 +304,6 @@ class ApiQueryContributions extends ApiQueryBase {
                        $this->addWhereFld( 'ct_tag', $this->params['tag'] );
                }
 
-               if ( $this->params['toponly'] ) {
-                       $this->addWhere( 'rev_id = page_latest' );
-               }
-
                $this->addOption( 'USE INDEX', $index );
        }
 
@@ -477,10 +483,17 @@ class ApiQueryContributions extends ApiQueryBase {
                                        '!minor',
                                        'patrolled',
                                        '!patrolled',
+                                       'top',
+                                       '!top',
+                                       'new',
+                                       '!new',
                                )
                        ),
                        'tag' => null,
-                       'toponly' => false,
+                       'toponly' => array(
+                               ApiBase::PARAM_DFLT => false,
+                               ApiBase::PARAM_DEPRECATED => true,
+                       ),
                );
        }
 
diff --git a/includes/api/ApiRunJobs.php b/includes/api/ApiRunJobs.php
new file mode 100644 (file)
index 0000000..e16dc5d
--- /dev/null
@@ -0,0 +1,168 @@
+<?php
+/**
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Aaron Schulz
+ */
+
+/**
+ * This is a simple class to handle action=runjobs and is only used internally
+ *
+ * @note: this does not requre "write mode" nor tokens due to the signature check
+ *
+ * @ingroup API
+ */
+class ApiRunJobs extends ApiBase {
+       public function execute() {
+               if ( wfReadOnly() ) {
+                       $this->dieUsage( 'Wiki is in read-only mode', 'read_only', 400 );
+               }
+
+               $params = $this->extractRequestParams();
+               $squery = $this->getRequest()->getValues();
+               unset( $squery['signature'] );
+               $cSig = self::getQuerySignature( $squery );
+               $rSig = $params['signature'];
+
+               // Time-insensitive signature verification
+               if ( strlen( $rSig ) !== strlen( $cSig ) ) {
+                       $verified = false;
+               } else {
+                       $result = 0;
+                       for ( $i = 0; $i < strlen( $cSig ); $i++ ) {
+                               $result |= ord( $cSig{$i} ) ^ ord( $rSig{$i} );
+                       }
+                       $verified = ( $result == 0 );
+               }
+
+               if ( !$verified || $params['sigexpiry'] < time() ) {
+                       $this->dieUsage( 'Invalid or stale signature provided', 'bad_signature', 400 );
+               }
+
+               // Client will usually disconnect before checking the response,
+               // but it needs to know when it is safe to disconnect. Until this
+               // reaches ignore_user_abort(), it is not safe as the jobs won't run.
+               ignore_user_abort( true ); // jobs may take a bit of time
+               header( "HTTP/1.0 202 Accepted" );
+               ob_flush();
+        flush();
+               // Once the client receives this response, it can disconnect
+
+               // Do all of the specified tasks...
+               if ( in_array( 'jobs', $params['tasks'] ) ) {
+                       self::executeJobs( $params['maxjobs'] );
+               }
+       }
+
+       /**
+        * @param array $query
+        * @return string
+        */
+       public static function getQuerySignature( array $query ) {
+               global $wgSecretKey;
+
+               ksort( $query ); // stable order
+               return hash_hmac( 'sha1', wfArrayToCgi( $query ), $wgSecretKey );
+       }
+
+       /**
+        * Run jobs from the job queue
+        *
+        * @note: also called from Wiki.php
+        *
+        * @param integer $maxJobs Maximum number of jobs to run
+        * @return void
+        */
+       public static function executeJobs( $maxJobs ) {
+               $n = $maxJobs; // number of jobs to run
+               if ( $n < 1 ) {
+                       return;
+               }
+               try {
+                       // Fallback to running the jobs here while the user waits
+                       $group = JobQueueGroup::singleton();
+                       do {
+                               $job = $group->pop( JobQueueGroup::USE_CACHE ); // job from any queue
+                               if ( $job ) {
+                                       $output = $job->toString() . "\n";
+                                       $t = - microtime( true );
+                                       wfProfileIn( __METHOD__ . '-' . get_class( $job ) );
+                                       $success = $job->run();
+                                       wfProfileOut( __METHOD__ . '-' . get_class( $job ) );
+                                       $group->ack( $job ); // done
+                                       $t += microtime( true );
+                                       $t = round( $t * 1000 );
+                                       if ( $success === false ) {
+                                               $output .= "Error: " . $job->getLastError() . ", Time: $t ms\n";
+                                       } else {
+                                               $output .= "Success, Time: $t ms\n";
+                                       }
+                                       wfDebugLog( 'jobqueue', $output );
+                               }
+                       } while ( --$n && $job );
+               } catch ( MWException $e ) {
+                       // We don't want exceptions thrown during job execution to
+                       // be reported to the user since the output is already sent.
+                       // Instead we just log them.
+                       MWExceptionHandler::logException( $e );
+               }
+       }
+
+       public function mustBePosted() {
+               return true;
+       }
+
+       public function getAllowedParams() {
+               return array(
+                       'tasks' => array(
+                               ApiBase::PARAM_ISMULTI => true,
+                               ApiBase::PARAM_TYPE => array( 'jobs' )
+                       ),
+                       'maxjobs' => array(
+                               ApiBase::PARAM_TYPE => 'integer',
+                               ApiBase::PARAM_DFLT => 0
+                       ),
+                       'signature' =>  array(
+                               ApiBase::PROP_TYPE => 'string',
+                       ),
+                       'sigexpiry' => array(
+                               ApiBase::PARAM_TYPE => 'integer',
+                               ApiBase::PARAM_DFLT => 0 // ~epoch
+                       ),
+               );
+       }
+
+       public function getParamDescription() {
+               return array(
+                       'tasks' => 'List of task types to perform',
+                       'maxjobs' => 'Maximum number of jobs to run',
+                       'signature' => 'HMAC Signature that signs the request',
+                       'sigexpiry' => 'HMAC signature expiry as a UNIX timestamp'
+               );
+       }
+
+       public function getDescription() {
+               return 'Perform periodic tasks or run jobs from the queue';
+       }
+
+       public function getExamples() {
+               return array(
+                       'api.php?action=runjobs&tasks=jobs&maxjobs=3' => 'Run up to 3 jobs from the queue',
+               );
+       }
+}
index e202f8a..635909c 100644 (file)
@@ -281,4 +281,18 @@ class DatabaseMysqli extends DatabaseMysqlBase {
        protected function mysqlPing() {
                return $this->mConn->ping();
        }
+
+       /**
+        * Give an id for the connection
+        *
+        * mysql driver used resource id, but mysqli objects cannot be cast to string.
+        */
+       public function __toString() {
+               if ( $this->mConn instanceof Mysqli ) {
+                       return (string)$this->mConn->thread_id;
+               } else {
+                       // mConn might be false or something.
+                       return (string)$this->mConn;
+               }
+       }
 }
index f8751a0..cad7caf 100644 (file)
@@ -642,8 +642,12 @@ class DatabaseOracle extends DatabaseBase {
                        } else {
                                $first = false;
                        }
-
-                       $sql .= $this->fieldBindStatement( $table, $col, $val );
+                       if ( $this->isQuotedIdentifier( $val ) ) {
+                               $sql .= $this->removeIdentifierQuotes( $val );
+                               unset( $row[$col] );
+                       } else {
+                               $sql .= $this->fieldBindStatement( $table, $col, $val );
+                       }
                }
                $sql .= ')';
 
@@ -774,6 +778,30 @@ class DatabaseOracle extends DatabaseBase {
                return $retval;
        }
 
+       public function upsert( $table, array $rows, array $uniqueIndexes, array $set,
+               $fname = __METHOD__
+       ) {
+               if ( !count( $rows ) ) {
+                       return true; // nothing to do
+               }
+
+               if ( !is_array( reset( $rows ) ) ) {
+                       $rows = array( $rows );
+               }
+
+               $sequenceData = $this->getSequenceData( $table );
+               if ( $sequenceData !== false ) {
+                       // add sequence column to each list of columns, when not set
+                       foreach ( $rows as &$row ) {
+                               if ( !isset( $row[$sequenceData['column']] ) ) {
+                                       $row[$sequenceData['column']] = $this->addIdentifierQuotes('GET_SEQUENCE_VALUE(\'' . $sequenceData['sequence'] . '\')');
+                               }
+                       }
+               }
+
+               return parent::upsert( $table, $rows, $uniqueIndexes, $set, $fname );
+       }
+
        function tableName( $name, $format = 'quoted' ) {
                /*
                Replace reserved words with better ones
index 331ce7d..543ee18 100644 (file)
  * @ingroup DifferenceEngine
  */
 class ArrayDiffFormatter extends DiffFormatter {
+
        /**
-        * @param $diff
+        * @param Diff $diff A Diff object.
         * @return array
         */
        public function format( $diff ) {
                $oldline = 1;
                $newline = 1;
                $retval = array();
-               foreach ( $diff->edits as $edit ) {
-                       switch ( $edit->type ) {
+               foreach ( $diff->getEdits() as $edit ) {
+                       switch ( $edit->getType() ) {
                                case 'add':
-                                       foreach ( $edit->closing as $l ) {
+                                       foreach ( $edit->getClosing() as $line ) {
                                                $retval[] = array(
                                                        'action' => 'add',
-                                                       'new' => $l,
+                                                       'new' => $line,
                                                        'newline' => $newline++
                                                );
                                        }
                                        break;
                                case 'delete':
-                                       foreach ( $edit->orig as $l ) {
+                                       foreach ( $edit->getOrig() as $line ) {
                                                $retval[] = array(
                                                        'action' => 'delete',
-                                                       'old' => $l,
+                                                       'old' => $line,
                                                        'oldline' => $oldline++,
                                                );
                                        }
                                        break;
                                case 'change':
-                                       foreach ( $edit->orig as $i => $l ) {
+                                       foreach ( $edit->getOrig() as $key => $line ) {
                                                $retval[] = array(
                                                        'action' => 'change',
-                                                       'old' => $l,
-                                                       'new' => isset( $edit->closing[$i] ) ? $edit->closing[$i] : null,
+                                                       'old' => $line,
+                                                       'new' => $edit->getClosing( $key ),
                                                        'oldline' => $oldline++,
                                                        'newline' => $newline++,
                                                );
                                        }
                                        break;
                                case 'copy':
-                                       $oldline += count( $edit->orig );
-                                       $newline += count( $edit->orig );
+                                       $oldline += count( $edit->getOrig() );
+                                       $newline += count( $edit->getOrig() );
                        }
                }
 
index c47eced..351a9dd 100644 (file)
  * @ingroup DifferenceEngine
  */
 abstract class DiffOp {
+
        public $type;
        public $orig;
        public $closing;
 
+       public function getType() {
+               return $this->type;
+       }
+
+       public function getOrig() {
+               return $this->orig;
+       }
+
+       public function getClosing( $i = null ) {
+               if( $i === null ) {
+                       return $this->closing;
+               }
+               if( array_key_exists( $i, $this->closing ) ) {
+                       return $this->closing[$i];
+               }
+               return null;
+       }
+
        abstract public function reverse();
 
        /**
         * @return int
         */
-       function norig() {
+       public function norig() {
                return $this->orig ? count( $this->orig ) : 0;
        }
 
        /**
         * @return int
         */
-       function nclosing() {
+       public function nclosing() {
                return $this->closing ? count( $this->closing ) : 0;
        }
 }
@@ -60,7 +79,7 @@ abstract class DiffOp {
 class DiffOpCopy extends DiffOp {
        public $type = 'copy';
 
-       function __construct( $orig, $closing = false ) {
+       public function __construct( $orig, $closing = false ) {
                if ( !is_array( $closing ) ) {
                        $closing = $orig;
                }
@@ -71,7 +90,7 @@ class DiffOpCopy extends DiffOp {
        /**
         * @return DiffOpCopy
         */
-       function reverse() {
+       public function reverse() {
                return new DiffOpCopy( $this->closing, $this->orig );
        }
 }
@@ -84,7 +103,7 @@ class DiffOpCopy extends DiffOp {
 class DiffOpDelete extends DiffOp {
        public $type = 'delete';
 
-       function __construct( $lines ) {
+       public function __construct( $lines ) {
                $this->orig = $lines;
                $this->closing = false;
        }
@@ -92,7 +111,7 @@ class DiffOpDelete extends DiffOp {
        /**
         * @return DiffOpAdd
         */
-       function reverse() {
+       public function reverse() {
                return new DiffOpAdd( $this->orig );
        }
 }
@@ -105,7 +124,7 @@ class DiffOpDelete extends DiffOp {
 class DiffOpAdd extends DiffOp {
        public $type = 'add';
 
-       function __construct( $lines ) {
+       public function __construct( $lines ) {
                $this->closing = $lines;
                $this->orig = false;
        }
@@ -113,7 +132,7 @@ class DiffOpAdd extends DiffOp {
        /**
         * @return DiffOpDelete
         */
-       function reverse() {
+       public function reverse() {
                return new DiffOpDelete( $this->closing );
        }
 }
@@ -126,7 +145,7 @@ class DiffOpAdd extends DiffOp {
 class DiffOpChange extends DiffOp {
        public $type = 'change';
 
-       function __construct( $orig, $closing ) {
+       public function __construct( $orig, $closing ) {
                $this->orig = $orig;
                $this->closing = $closing;
        }
@@ -134,7 +153,7 @@ class DiffOpChange extends DiffOp {
        /**
         * @return DiffOpChange
         */
-       function reverse() {
+       public function reverse() {
                return new DiffOpChange( $this->closing, $this->orig );
        }
 }
@@ -180,7 +199,7 @@ class DiffEngine {
         * @param $to_lines
         * @return array
         */
-       function diff( $from_lines, $to_lines ) {
+       public function diff( $from_lines, $to_lines ) {
                wfProfileIn( __METHOD__ );
 
                // Diff and store locally
@@ -659,6 +678,10 @@ class DiffEngine {
  * @ingroup DifferenceEngine
  */
 class Diff {
+
+       /**
+        * @var DiffOp[]
+        */
        public $edits;
 
        /**
@@ -669,11 +692,18 @@ class Diff {
         *   Typically these are lines from a file.
         * @param $to_lines array An array of strings.
         */
-       function __construct( $from_lines, $to_lines ) {
+       public function __construct( $from_lines, $to_lines ) {
                $eng = new DiffEngine;
                $this->edits = $eng->diff( $from_lines, $to_lines );
        }
 
+       /**
+        * @return array|DiffOp[]
+        */
+       public function getEdits() {
+               return $this->edits;
+       }
+
        /**
         * Compute reversed Diff.
         *
@@ -684,7 +714,7 @@ class Diff {
         * @return Object A Diff object representing the inverse of the
         *   original diff.
         */
-       function reverse() {
+       public function reverse() {
                $rev = $this;
                $rev->edits = array();
                /** @var DiffOp $edit */
@@ -700,7 +730,7 @@ class Diff {
         *
         * @return bool True if two sequences were identical.
         */
-       function isEmpty() {
+       public function isEmpty() {
                foreach ( $this->edits as $edit ) {
                        if ( $edit->type != 'copy' ) {
                                return false;
@@ -717,7 +747,7 @@ class Diff {
         *
         * @return int The length of the LCS.
         */
-       function lcs() {
+       public function lcs() {
                $lcs = 0;
                foreach ( $this->edits as $edit ) {
                        if ( $edit->type == 'copy' ) {
@@ -736,7 +766,7 @@ class Diff {
         *
         * @return array The original sequence of strings.
         */
-       function orig() {
+       public function orig() {
                $lines = array();
 
                foreach ( $this->edits as $edit ) {
@@ -756,7 +786,7 @@ class Diff {
         *
         * @return array The sequence of strings.
         */
-       function closing() {
+       public function closing() {
                $lines = array();
 
                foreach ( $this->edits as $edit ) {
@@ -798,7 +828,7 @@ class MappedDiff extends Diff {
         * @param $mapped_to_lines array This array should
         *   have the same number of elements as $to_lines.
         */
-       function __construct( $from_lines, $to_lines,
+       public function __construct( $from_lines, $to_lines,
                $mapped_from_lines, $mapped_to_lines ) {
                wfProfileIn( __METHOD__ );
 
@@ -922,7 +952,7 @@ class WordLevelDiff extends MappedDiff {
         * @param $orig_lines
         * @param $closing_lines
         */
-       function __construct( $orig_lines, $closing_lines ) {
+       public function __construct( $orig_lines, $closing_lines ) {
                wfProfileIn( __METHOD__ );
 
                list( $orig_words, $orig_stripped ) = $this->split( $orig_lines );
diff --git a/includes/exception/BadTitleError.php b/includes/exception/BadTitleError.php
new file mode 100644 (file)
index 0000000..2da3775
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Show an error page on a badtitle.
+ * Similar to ErrorPage, but emit a 400 HTTP error code to let mobile
+ * browser it is not really a valid content.
+ *
+ * @since 1.19
+ * @ingroup Exception
+ */
+class BadTitleError extends ErrorPageError {
+       /**
+        * @param string|Message $msg A message key (default: 'badtitletext')
+        * @param array $params parameter to wfMessage()
+        */
+       public function __construct( $msg = 'badtitletext', $params = array() ) {
+               parent::__construct( 'badtitle', $msg, $params );
+       }
+
+       /**
+        * Just like ErrorPageError::report() but additionally set
+        * a 400 HTTP status code (bug 33646).
+        */
+       public function report() {
+               global $wgOut;
+
+               // bug 33646: a badtitle error page need to return an error code
+               // to let mobile browser now that it is not a normal page.
+               $wgOut->setStatusCode( 400 );
+               parent::report();
+       }
+
+}
diff --git a/includes/exception/ErrorPageError.php b/includes/exception/ErrorPageError.php
new file mode 100644 (file)
index 0000000..7cd198b
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * An error page which can definitely be safely rendered using the OutputPage.
+ *
+ * @since 1.7
+ * @ingroup Exception
+ */
+class ErrorPageError extends MWException {
+       public $title, $msg, $params;
+
+       /**
+        * Note: these arguments are keys into wfMessage(), not text!
+        *
+        * @param string|Message $title Message key (string) for page title, or a Message object
+        * @param string|Message $msg Message key (string) for error text, or a Message object
+        * @param array $params with parameters to wfMessage()
+        */
+       public function __construct( $title, $msg, $params = array() ) {
+               $this->title = $title;
+               $this->msg = $msg;
+               $this->params = $params;
+
+               // Bug 44111: Messages in the log files should be in English and not
+               // customized by the local wiki. So get the default English version for
+               // passing to the parent constructor. Our overridden report() below
+               // makes sure that the page shown to the user is not forced to English.
+               if ( $msg instanceof Message ) {
+                       $enMsg = clone( $msg );
+               } else {
+                       $enMsg = wfMessage( $msg, $params );
+               }
+               $enMsg->inLanguage( 'en' )->useDatabase( false );
+               parent::__construct( $enMsg->text() );
+       }
+
+       public function report() {
+               global $wgOut;
+
+               $wgOut->showErrorPage( $this->title, $this->msg, $this->params );
+               $wgOut->output();
+       }
+}
diff --git a/includes/exception/FatalError.php b/includes/exception/FatalError.php
new file mode 100644 (file)
index 0000000..a7d672f
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Exception class which takes an HTML error message, and does not
+ * produce a backtrace. Replacement for OutputPage::fatalError().
+ *
+ * @since 1.7
+ * @ingroup Exception
+ */
+class FatalError extends MWException {
+
+       /**
+        * @return string
+        */
+       public function getHTML() {
+               return $this->getMessage();
+       }
+
+       /**
+        * @return string
+        */
+       public function getText() {
+               return $this->getMessage();
+       }
+}
diff --git a/includes/exception/HttpError.php b/includes/exception/HttpError.php
new file mode 100644 (file)
index 0000000..f955f06
--- /dev/null
@@ -0,0 +1,93 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Show an error that looks like an HTTP server error.
+ * Replacement for wfHttpError().
+ *
+ * @since 1.19
+ * @ingroup Exception
+ */
+class HttpError extends MWException {
+       private $httpCode, $header, $content;
+
+       /**
+        * Constructor
+        *
+        * @param $httpCode Integer: HTTP status code to send to the client
+        * @param string|Message $content content of the message
+        * @param string|Message $header content of the header (\<title\> and \<h1\>)
+        */
+       public function __construct( $httpCode, $content, $header = null ) {
+               parent::__construct( $content );
+               $this->httpCode = (int)$httpCode;
+               $this->header = $header;
+               $this->content = $content;
+       }
+
+       /**
+        * Returns the HTTP status code supplied to the constructor.
+        *
+        * @return int
+        */
+       public function getStatusCode() {
+               return $this->httpCode;
+       }
+
+       /**
+        * Report the HTTP error.
+        * Sends the appropriate HTTP status code and outputs an
+        * HTML page with an error message.
+        */
+       public function report() {
+               $httpMessage = HttpStatus::getMessage( $this->httpCode );
+
+               header( "Status: {$this->httpCode} {$httpMessage}", true, $this->httpCode );
+               header( 'Content-type: text/html; charset=utf-8' );
+
+               print $this->getHTML();
+       }
+
+       /**
+        * Returns HTML for reporting the HTTP error.
+        * This will be a minimal but complete HTML document.
+        *
+        * @return string HTML
+        */
+       public function getHTML() {
+               if ( $this->header === null ) {
+                       $header = HttpStatus::getMessage( $this->httpCode );
+               } elseif ( $this->header instanceof Message ) {
+                       $header = $this->header->escaped();
+               } else {
+                       $header = htmlspecialchars( $this->header );
+               }
+
+               if ( $this->content instanceof Message ) {
+                       $content = $this->content->escaped();
+               } else {
+                       $content = htmlspecialchars( $this->content );
+               }
+
+               return "<!DOCTYPE html>\n" .
+               "<html><head><title>$header</title></head>\n" .
+               "<body><h1>$header</h1><p>$content</p></body></html>\n";
+       }
+}
diff --git a/includes/exception/MWException.php b/includes/exception/MWException.php
new file mode 100644 (file)
index 0000000..f344938
--- /dev/null
@@ -0,0 +1,273 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * MediaWiki exception
+ *
+ * @ingroup Exception
+ */
+class MWException extends Exception {
+       /**
+        * Should the exception use $wgOut to output the error?
+        *
+        * @return bool
+        */
+       public function useOutputPage() {
+               return $this->useMessageCache() &&
+               !empty( $GLOBALS['wgFullyInitialised'] ) &&
+               !empty( $GLOBALS['wgOut'] ) &&
+               !defined( 'MEDIAWIKI_INSTALL' );
+       }
+
+       /**
+        * Whether to log this exception in the exception debug log.
+        *
+        * @since 1.23
+        * @return boolean
+        */
+       public function isLoggable() {
+               return true;
+       }
+
+       /**
+        * Can the extension use the Message class/wfMessage to get i18n-ed messages?
+        *
+        * @return bool
+        */
+       public function useMessageCache() {
+               global $wgLang;
+
+               foreach ( $this->getTrace() as $frame ) {
+                       if ( isset( $frame['class'] ) && $frame['class'] === 'LocalisationCache' ) {
+                               return false;
+                       }
+               }
+
+               return $wgLang instanceof Language;
+       }
+
+       /**
+        * Run hook to allow extensions to modify the text of the exception
+        *
+        * @param string $name class name of the exception
+        * @param array $args arguments to pass to the callback functions
+        * @return string|null string to output or null if any hook has been called
+        */
+       public function runHooks( $name, $args = array() ) {
+               global $wgExceptionHooks;
+
+               if ( !isset( $wgExceptionHooks ) || !is_array( $wgExceptionHooks ) ) {
+                       return null; // Just silently ignore
+               }
+
+               if ( !array_key_exists( $name, $wgExceptionHooks ) ||
+                       !is_array( $wgExceptionHooks[$name] )
+               ) {
+                       return null;
+               }
+
+               $hooks = $wgExceptionHooks[$name];
+               $callargs = array_merge( array( $this ), $args );
+
+               foreach ( $hooks as $hook ) {
+                       if (
+                               is_string( $hook ) ||
+                               ( is_array( $hook ) && count( $hook ) >= 2 && is_string( $hook[0] ) )
+                       ) {
+                               // 'function' or array( 'class', hook' )
+                               $result = call_user_func_array( $hook, $callargs );
+                       } else {
+                               $result = null;
+                       }
+
+                       if ( is_string( $result ) ) {
+                               return $result;
+                       }
+               }
+               return null;
+       }
+
+       /**
+        * Get a message from i18n
+        *
+        * @param string $key message name
+        * @param string $fallback default message if the message cache can't be
+        *                  called by the exception
+        * The function also has other parameters that are arguments for the message
+        * @return string message with arguments replaced
+        */
+       public function msg( $key, $fallback /*[, params...] */ ) {
+               $args = array_slice( func_get_args(), 2 );
+
+               if ( $this->useMessageCache() ) {
+                       return wfMessage( $key, $args )->plain();
+               } else {
+                       return wfMsgReplaceArgs( $fallback, $args );
+               }
+       }
+
+       /**
+        * If $wgShowExceptionDetails is true, return a HTML message with a
+        * backtrace to the error, otherwise show a message to ask to set it to true
+        * to show that information.
+        *
+        * @return string html to output
+        */
+       public function getHTML() {
+               global $wgShowExceptionDetails;
+
+               if ( $wgShowExceptionDetails ) {
+                       return '<p>' . nl2br( htmlspecialchars( MWExceptionHandler::getLogMessage( $this ) ) ) .
+                       '</p><p>Backtrace:</p><p>' . nl2br( htmlspecialchars( MWExceptionHandler::getRedactedTraceAsString( $this ) ) ) .
+                       "</p>\n";
+               } else {
+                       return "<div class=\"errorbox\">" .
+                       '[' . MWExceptionHandler::getLogId( $this ) . '] ' .
+                       gmdate( 'Y-m-d H:i:s' ) .
+                       ": Fatal exception of type " . get_class( $this ) . "</div>\n" .
+                       "<!-- Set \$wgShowExceptionDetails = true; " .
+                       "at the bottom of LocalSettings.php to show detailed " .
+                       "debugging information. -->";
+               }
+       }
+
+       /**
+        * Get the text to display when reporting the error on the command line.
+        * If $wgShowExceptionDetails is true, return a text message with a
+        * backtrace to the error.
+        *
+        * @return string
+        */
+       public function getText() {
+               global $wgShowExceptionDetails;
+
+               if ( $wgShowExceptionDetails ) {
+                       return MWExceptionHandler::getLogMessage( $this ) .
+                       "\nBacktrace:\n" . MWExceptionHandler::getRedactedTraceAsString( $this ) . "\n";
+               } else {
+                       return "Set \$wgShowExceptionDetails = true; " .
+                       "in LocalSettings.php to show detailed debugging information.\n";
+               }
+       }
+
+       /**
+        * Return the title of the page when reporting this error in a HTTP response.
+        *
+        * @return string
+        */
+       public function getPageTitle() {
+               global $wgSitename;
+               return $this->msg( 'pagetitle', "$1 - $wgSitename", $this->msg( 'internalerror', 'Internal error' ) );
+       }
+
+       /**
+        * Get a the ID for this error.
+        *
+        * @since 1.20
+        * @deprecated since 1.22 Use MWExceptionHandler::getLogId instead.
+        * @return string
+        */
+       public function getLogId() {
+               wfDeprecated( __METHOD__, '1.22' );
+               return MWExceptionHandler::getLogId( $this );
+       }
+
+       /**
+        * Return the requested URL and point to file and line number from which the
+        * exception occurred
+        *
+        * @since 1.8
+        * @deprecated since 1.22 Use MWExceptionHandler::getLogMessage instead.
+        * @return string
+        */
+       public function getLogMessage() {
+               wfDeprecated( __METHOD__, '1.22' );
+               return MWExceptionHandler::getLogMessage( $this );
+       }
+
+       /**
+        * Output the exception report using HTML.
+        */
+       public function reportHTML() {
+               global $wgOut;
+               if ( $this->useOutputPage() ) {
+                       $wgOut->prepareErrorPage( $this->getPageTitle() );
+
+                       $hookResult = $this->runHooks( get_class( $this ) );
+                       if ( $hookResult ) {
+                               $wgOut->addHTML( $hookResult );
+                       } else {
+                               $wgOut->addHTML( $this->getHTML() );
+                       }
+
+                       $wgOut->output();
+               } else {
+                       header( 'Content-Type: text/html; charset=utf-8' );
+                       echo "<!DOCTYPE html>\n" .
+                               '<html><head>' .
+                               '<title>' . htmlspecialchars( $this->getPageTitle() ) . '</title>' .
+                               '<style>body { font-family: sans-serif; margin: 0; padding: 0.5em 2em; }</style>' .
+                               "</head><body>\n";
+
+                       $hookResult = $this->runHooks( get_class( $this ) . 'Raw' );
+                       if ( $hookResult ) {
+                               echo $hookResult;
+                       } else {
+                               echo $this->getHTML();
+                       }
+
+                       echo "</body></html>\n";
+               }
+       }
+
+       /**
+        * Output a report about the exception and takes care of formatting.
+        * It will be either HTML or plain text based on isCommandLine().
+        */
+       public function report() {
+               global $wgMimeType;
+
+               MWExceptionHandler::logException( $this );
+
+               if ( defined( 'MW_API' ) ) {
+                       // Unhandled API exception, we can't be sure that format printer is alive
+                       header( 'MediaWiki-API-Error: internal_api_error_' . get_class( $this ) );
+                       wfHttpError( 500, 'Internal Server Error', $this->getText() );
+               } elseif ( self::isCommandLine() ) {
+                       MWExceptionHandler::printError( $this->getText() );
+               } else {
+                       header( 'HTTP/1.1 500 MediaWiki exception' );
+                       header( 'Status: 500 MediaWiki exception', true );
+                       header( "Content-Type: $wgMimeType; charset=utf-8", true );
+
+                       $this->reportHTML();
+               }
+       }
+
+       /**
+        * Check whether we are in command line mode or not to report the exception
+        * in the correct format.
+        *
+        * @return bool
+        */
+       public static function isCommandLine() {
+               return !empty( $GLOBALS['wgCommandLineMode'] );
+       }
+}
diff --git a/includes/exception/MWExceptionHandler.php b/includes/exception/MWExceptionHandler.php
new file mode 100644 (file)
index 0000000..64e8999
--- /dev/null
@@ -0,0 +1,349 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Handler class for MWExceptions
+ * @ingroup Exception
+ */
+class MWExceptionHandler {
+       /**
+        * Install an exception handler for MediaWiki exception types.
+        */
+       public static function installHandler() {
+               set_exception_handler( array( 'MWExceptionHandler', 'handle' ) );
+       }
+
+       /**
+        * Report an exception to the user
+        */
+       protected static function report( Exception $e ) {
+               global $wgShowExceptionDetails;
+
+               $cmdLine = MWException::isCommandLine();
+
+               if ( $e instanceof MWException ) {
+                       try {
+                               // Try and show the exception prettily, with the normal skin infrastructure
+                               $e->report();
+                       } catch ( Exception $e2 ) {
+                               // Exception occurred from within exception handler
+                               // Show a simpler error message for the original exception,
+                               // don't try to invoke report()
+                               $message = "MediaWiki internal error.\n\n";
+
+                               if ( $wgShowExceptionDetails ) {
+                                       $message .= 'Original exception: ' . self::getLogMessage( $e ) .
+                                               "\nBacktrace:\n" . self::getRedactedTraceAsString( $e ) .
+                                               "\n\nException caught inside exception handler: " . self::getLogMessage( $e2 ) .
+                                               "\nBacktrace:\n" . self::getRedactedTraceAsString( $e2 );
+                               } else {
+                                       $message .= "Exception caught inside exception handler.\n\n" .
+                                               "Set \$wgShowExceptionDetails = true; at the bottom of LocalSettings.php " .
+                                               "to show detailed debugging information.";
+                               }
+
+                               $message .= "\n";
+
+                               if ( $cmdLine ) {
+                                       self::printError( $message );
+                               } else {
+                                       echo nl2br( htmlspecialchars( $message ) ) . "\n";
+                               }
+                       }
+               } else {
+                       $message = "Unexpected non-MediaWiki exception encountered, of type \"" .
+                               get_class( $e ) . "\"";
+
+                       if ( $wgShowExceptionDetails ) {
+                               $message .= "\n" . MWExceptionHandler::getLogMessage( $e ) . "\nBacktrace:\n" .
+                                       self::getRedactedTraceAsString( $e ) . "\n";
+                       }
+
+                       if ( $cmdLine ) {
+                               self::printError( $message );
+                       } else {
+                               echo nl2br( htmlspecialchars( $message ) ) . "\n";
+                       }
+               }
+       }
+
+       /**
+        * Print a message, if possible to STDERR.
+        * Use this in command line mode only (see isCommandLine)
+        *
+        * @param string $message Failure text
+        */
+       public static function printError( $message ) {
+               # NOTE: STDERR may not be available, especially if php-cgi is used from the
+               # command line (bug #15602). Try to produce meaningful output anyway. Using
+               # echo may corrupt output to STDOUT though.
+               if ( defined( 'STDERR' ) ) {
+                       fwrite( STDERR, $message );
+               } else {
+                       echo $message;
+               }
+       }
+
+       /**
+        * Exception handler which simulates the appropriate catch() handling:
+        *
+        *   try {
+        *       ...
+        *   } catch ( MWException $e ) {
+        *       $e->report();
+        *   } catch ( Exception $e ) {
+        *       echo $e->__toString();
+        *   }
+        */
+       public static function handle( $e ) {
+               global $wgFullyInitialised;
+
+               self::report( $e );
+
+               // Final cleanup
+               if ( $wgFullyInitialised ) {
+                       try {
+                               // uses $wgRequest, hence the $wgFullyInitialised condition
+                               wfLogProfilingData();
+                       } catch ( Exception $e ) {
+                       }
+               }
+
+               // Exit value should be nonzero for the benefit of shell jobs
+               exit( 1 );
+       }
+
+       /**
+        * Generate a string representation of an exception's stack trace
+        *
+        * Like Exception::getTraceAsString, but replaces argument values with
+        * argument type or class name.
+        *
+        * @param Exception $e
+        * @return string
+        */
+       public static function getRedactedTraceAsString( Exception $e ) {
+               $text = '';
+
+               foreach ( self::getRedactedTrace( $e ) as $level => $frame ) {
+                       if ( isset( $frame['file'] ) && isset( $frame['line'] ) ) {
+                               $text .= "#{$level} {$frame['file']}({$frame['line']}): ";
+                       } else {
+                               // 'file' and 'line' are unset for calls via call_user_func (bug 55634)
+                               // This matches behaviour of Exception::getTraceAsString to instead
+                               // display "[internal function]".
+                               $text .= "#{$level} [internal function]: ";
+                       }
+
+                       if ( isset( $frame['class'] ) ) {
+                               $text .= $frame['class'] . $frame['type'] . $frame['function'];
+                       } else {
+                               $text .= $frame['function'];
+                       }
+
+                       if ( isset( $frame['args'] ) ) {
+                               $text .= '(' . implode( ', ', $frame['args'] ) . ")\n";
+                       } else {
+                               $text .= "()\n";
+                       }
+               }
+
+               $level = $level + 1;
+               $text .= "#{$level} {main}";
+
+               return $text;
+       }
+
+       /**
+        * Return a copy of an exception's backtrace as an array.
+        *
+        * Like Exception::getTrace, but replaces each element in each frame's
+        * argument array with the name of its class (if the element is an object)
+        * or its type (if the element is a PHP primitive).
+        *
+        * @since 1.22
+        * @param Exception $e
+        * @return array
+        */
+       public static function getRedactedTrace( Exception $e ) {
+               return array_map( function ( $frame ) {
+                       if ( isset( $frame['args'] ) ) {
+                               $frame['args'] = array_map( function ( $arg ) {
+                                       return is_object( $arg ) ? get_class( $arg ) : gettype( $arg );
+                               }, $frame['args'] );
+                       }
+                       return $frame;
+               }, $e->getTrace() );
+       }
+
+       /**
+        * Get the ID for this error.
+        *
+        * The ID is saved so that one can match the one output to the user (when
+        * $wgShowExceptionDetails is set to false), to the entry in the debug log.
+        *
+        * @since 1.22
+        * @param Exception $e
+        * @return string
+        */
+       public static function getLogId( Exception $e ) {
+               if ( !isset( $e->_mwLogId ) ) {
+                       $e->_mwLogId = wfRandomString( 8 );
+               }
+               return $e->_mwLogId;
+       }
+
+       /**
+        * If the exception occurred in the course of responding to a request,
+        * returns the requested URL. Otherwise, returns false.
+        *
+        * @since 1.23
+        * @return string|bool
+        */
+       public static function getURL() {
+               global $wgRequest;
+               if ( !isset( $wgRequest ) || $wgRequest instanceof FauxRequest ) {
+                       return false;
+               }
+               return $wgRequest->getRequestURL();
+       }
+
+       /**
+        * Return the requested URL and point to file and line number from which the
+        * exception occurred.
+        *
+        * @since 1.22
+        * @param Exception $e
+        * @return string
+        */
+       public static function getLogMessage( Exception $e ) {
+               $id = self::getLogId( $e );
+               $file = $e->getFile();
+               $line = $e->getLine();
+               $message = $e->getMessage();
+               $url = self::getURL() ?: '[no req]';
+
+               return "[$id] $url   Exception from line $line of $file: $message";
+       }
+
+       /**
+        * Serialize an Exception object to JSON.
+        *
+        * The JSON object will have keys 'id', 'file', 'line', 'message', and
+        * 'url'. These keys map to string values, with the exception of 'line',
+        * which is a number, and 'url', which may be either a string URL or or
+        * null if the exception did not occur in the context of serving a web
+        * request.
+        *
+        * If $wgLogExceptionBacktrace is true, it will also have a 'backtrace'
+        * key, mapped to the array return value of Exception::getTrace, but with
+        * each element in each frame's "args" array (if set) replaced with the
+        * argument's class name (if the argument is an object) or type name (if
+        * the argument is a PHP primitive).
+        *
+        * @par Sample JSON record ($wgLogExceptionBacktrace = false):
+        * @code
+        *  {
+        *    "id": "c41fb419",
+        *    "file": "/var/www/mediawiki/includes/cache/MessageCache.php",
+        *    "line": 704,
+        *    "message": "Non-string key given",
+        *    "url": "/wiki/Main_Page"
+        *  }
+        * @endcode
+        *
+        * @par Sample JSON record ($wgLogExceptionBacktrace = true):
+        * @code
+        *  {
+        *    "id": "dc457938",
+        *    "file": "/vagrant/mediawiki/includes/cache/MessageCache.php",
+        *    "line": 704,
+        *    "message": "Non-string key given",
+        *    "url": "/wiki/Main_Page",
+        *    "backtrace": [{
+        *      "file": "/vagrant/mediawiki/extensions/VisualEditor/VisualEditor.hooks.php",
+        *      "line": 80,
+        *      "function": "get",
+        *      "class": "MessageCache",
+        *      "type": "->",
+        *      "args": ["array"]
+        *    }]
+        *  }
+        * @endcode
+        *
+        * @since 1.23
+        * @param Exception $e
+        * @param bool $pretty Add non-significant whitespace to improve readability (default: false).
+        * @param int $escaping Bitfield consisting of FormatJson::.*_OK class constants.
+        * @return string|bool: JSON string if successful; false upon failure
+        */
+       public static function jsonSerializeException( Exception $e, $pretty = false, $escaping = 0 ) {
+               global $wgLogExceptionBacktrace;
+
+               $exceptionData = array(
+                       'id' => self::getLogId( $e ),
+                       'file' => $e->getFile(),
+                       'line' => $e->getLine(),
+                       'message' => $e->getMessage(),
+               );
+
+               // Because MediaWiki is first and foremost a web application, we set a
+               // 'url' key unconditionally, but set it to null if the exception does
+               // not occur in the context of a web request, as a way of making that
+               // fact visible and explicit.
+               $exceptionData['url'] = self::getURL() ?: null;
+
+               if ( $wgLogExceptionBacktrace ) {
+                       // Argument values may not be serializable, so redact them.
+                       $exceptionData['backtrace'] = self::getRedactedTrace( $e );
+               }
+
+               return FormatJson::encode( $exceptionData, $pretty, $escaping );
+       }
+
+       /**
+        * Log an exception to the exception log (if enabled).
+        *
+        * This method must not assume the exception is an MWException,
+        * it is also used to handle PHP errors or errors from other libraries.
+        *
+        * @since 1.22
+        * @param Exception $e
+        */
+       public static function logException( Exception $e ) {
+               global $wgLogExceptionBacktrace;
+
+               if ( !( $e instanceof MWException ) || $e->isLoggable() ) {
+                       $log = self::getLogMessage( $e );
+                       if ( $wgLogExceptionBacktrace ) {
+                               wfDebugLog( 'exception', $log . "\n" . $e->getTraceAsString() );
+                       } else {
+                               wfDebugLog( 'exception', $log );
+                       }
+
+                       $json = self::jsonSerializeException( $e, false, FormatJson::ALL_OK );
+                       if ( $json !== false ) {
+                               wfDebugLog( 'exception-json', $json, 'private' );
+                       }
+               }
+
+       }
+
+}
diff --git a/includes/exception/PermissionsError.php b/includes/exception/PermissionsError.php
new file mode 100644 (file)
index 0000000..bfba7b2
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Show an error when a user tries to do something they do not have the necessary
+ * permissions for.
+ *
+ * @since 1.18
+ * @ingroup Exception
+ */
+class PermissionsError extends ErrorPageError {
+       public $permission, $errors;
+
+       public function __construct( $permission, $errors = array() ) {
+               global $wgLang;
+
+               $this->permission = $permission;
+
+               if ( !count( $errors ) ) {
+                       $groups = array_map(
+                               array( 'User', 'makeGroupLinkWiki' ),
+                               User::getGroupsWithPermission( $this->permission )
+                       );
+
+                       if ( $groups ) {
+                               $errors[] = array( 'badaccess-groups', $wgLang->commaList( $groups ), count( $groups ) );
+                       } else {
+                               $errors[] = array( 'badaccess-group0' );
+                       }
+               }
+
+               $this->errors = $errors;
+       }
+
+       public function report() {
+               global $wgOut;
+
+               $wgOut->showPermissionsErrorPage( $this->errors, $this->permission );
+               $wgOut->output();
+       }
+}
diff --git a/includes/exception/ReadOnlyError.php b/includes/exception/ReadOnlyError.php
new file mode 100644 (file)
index 0000000..cebeb1c
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Show an error when the wiki is locked/read-only and the user tries to do
+ * something that requires write access.
+ *
+ * @since 1.18
+ * @ingroup Exception
+ */
+class ReadOnlyError extends ErrorPageError {
+       public function __construct() {
+               parent::__construct(
+                       'readonly',
+                       'readonlytext',
+                       wfReadOnlyReason() ?: array()
+               );
+       }
+}
diff --git a/includes/exception/ThrottledError.php b/includes/exception/ThrottledError.php
new file mode 100644 (file)
index 0000000..ce5d52e
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Show an error when the user hits a rate limit.
+ *
+ * @since 1.18
+ * @ingroup Exception
+ */
+class ThrottledError extends ErrorPageError {
+       public function __construct() {
+               parent::__construct(
+                       'actionthrottled',
+                       'actionthrottledtext'
+               );
+       }
+
+       public function report() {
+               global $wgOut;
+               $wgOut->setStatusCode( 503 );
+               parent::report();
+       }
+}
diff --git a/includes/exception/UserBlockedError.php b/includes/exception/UserBlockedError.php
new file mode 100644 (file)
index 0000000..9d19f8b
--- /dev/null
@@ -0,0 +1,33 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Show an error when the user tries to do something whilst blocked.
+ *
+ * @since 1.18
+ * @ingroup Exception
+ */
+class UserBlockedError extends ErrorPageError {
+       public function __construct( Block $block ) {
+               // @todo FIXME: Implement a more proper way to get context here.
+               $params = $block->getPermissionsError( RequestContext::getMain() );
+               parent::__construct( 'blockedtitle', array_shift( $params ), $params );
+       }
+}
diff --git a/includes/exception/UserNotLoggedIn.php b/includes/exception/UserNotLoggedIn.php
new file mode 100644 (file)
index 0000000..9d89009
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Shows a generic "user is not logged in" error page.
+ *
+ * This is essentially an ErrorPageError exception which by default uses the
+ * 'exception-nologin' as a title and 'exception-nologin-text' for the message.
+ * @see bug 37627
+ * @since 1.20
+ *
+ * @par Example:
+ * @code
+ * if( $user->isAnon() ) {
+ *     throw new UserNotLoggedIn();
+ * }
+ * @endcode
+ *
+ * Note the parameter order differs from ErrorPageError, this allows you to
+ * simply specify a reason without overriding the default title.
+ *
+ * @par Example:
+ * @code
+ * if( $user->isAnon() ) {
+ *     throw new UserNotLoggedIn( 'action-require-loggedin' );
+ * }
+ * @endcode
+ *
+ * @ingroup Exception
+ */
+class UserNotLoggedIn extends ErrorPageError {
+
+       /**
+        * @param string $reasonMsg A message key containing the reason for the error.
+        *        Optional, default: 'exception-nologin-text'
+        * @param string $titleMsg A message key to set the page title.
+        *        Optional, default: 'exception-nologin'
+        * @param array $params Parameters to wfMessage().
+        *        Optional, default: array()
+        */
+       public function __construct(
+               $reasonMsg = 'exception-nologin-text',
+               $titleMsg = 'exception-nologin',
+               $params = array()
+       ) {
+               parent::__construct( $titleMsg, $reasonMsg, $params );
+       }
+}
index 9a2ebb7..16300af 100644 (file)
@@ -1565,7 +1565,7 @@ abstract class FileBackendStore extends FileBackend {
         * @return string
         */
        private function containerCacheKey( $container ) {
-               return wfMemcKey( 'backend', $this->getName(), 'container', $container );
+               return "filebackend:{$this->name}:{$this->wikiId}:container:{$container}";
        }
 
        /**
@@ -1646,7 +1646,7 @@ abstract class FileBackendStore extends FileBackend {
         * @return string
         */
        private function fileCacheKey( $path ) {
-               return wfMemcKey( 'backend', $this->getName(), 'file', sha1( $path ) );
+               return "filebackend:{$this->name}:{$this->wikiId}:file:" . sha1( $path );
        }
 
        /**
index dea1666..a5c835e 100644 (file)
@@ -744,7 +744,7 @@ class SwiftFileBackend extends FileBackendStore {
                $prefix = ( $dir == '' ) ? null : "{$dir}/";
                $status = $this->objectListing( $fullCont, 'names', 1, null, $prefix );
                if ( $status->isOk() ) {
-                       return ( count( $status->value ) );
+                       return ( count( $status->value ) ) > 0;
                }
 
                return null; // error
@@ -1470,7 +1470,7 @@ class SwiftFileBackend extends FileBackendStore {
                        }
 
                        // (a) Check the container
-                       $cstat = $this->getContainerStat( $srcCont, true );
+                       $cstat = $this->getContainerStat( $srcCont );
                        if ( $cstat === false ) {
                                $stats[$path] = false;
                                continue; // ok, nothing to do
index 18f8d5d..8153ffb 100644 (file)
@@ -90,4 +90,8 @@ class ForeignDBViaLBRepo extends LocalRepo {
        protected function assertWritableRepo() {
                throw new MWException( get_class( $this ) . ': write operations are not supported.' );
        }
+
+       public function getInfo() {
+               return FileRepo::getInfo();
+       }
 }
index 27d9594..e6d316c 100644 (file)
@@ -522,7 +522,7 @@ abstract class HTMLFormField {
                foreach ( $options as $key => $value ) {
                        $key = $this->msg( $key )->plain();
                        $ret[$key] = is_array( $value )
-                               ? $this->lookupOptionsKeys($field, $value)
+                               ? $this->lookupOptionsKeys( $value )
                                : strval( $value );
                }
                return $ret;
@@ -558,7 +558,7 @@ abstract class HTMLFormField {
                                $this->mOptions = self::forceToStringRecursive( $this->mParams['options'] );
                        } elseif ( array_key_exists( 'options-message', $this->mParams ) ) {
                                /** @todo This is copied from Xml::listDropDown(), deprecate/avoid duplication? */
-                               $message = $this->msg( $this->mParams['options-message'] )->plain();
+                               $message = $this->msg( $this->mParams['options-message'] )->inContentLanguage()->plain();
 
                                $optgroup = false;
                                $this->mOptions = array();
index 9f39a87..24bc456 100644 (file)
@@ -29,7 +29,7 @@ $1',
        'config-localsettings-incomplete' => 'The existing <code>LocalSettings.php</code> appears to be incomplete.
 The $1 variable is not set.
 Please change <code>LocalSettings.php</code> so that this variable is set, and click "{{int:Config-continue}}".',
-       'config-localsettings-connection-error' => 'An error was encountered when connecting to the database using the settings specified in <code>LocalSettings.php</code> or <code>AdminSettings.php</code>. Please fix these settings and try again.
+       'config-localsettings-connection-error' => 'An error was encountered when connecting to the database using the settings specified in <code>LocalSettings.php</code>. Please fix these settings and try again.
 
 $1',
        'config-session-error'            => 'Error starting session: $1',
@@ -609,7 +609,7 @@ $messages['qqq'] = array(
        'config-localsettings-incomplete' => '{{doc-important|Do not translate <code>LocalSettings.php</code> and <code><nowiki>{{int:Config-continue}}</nowiki><code>.}}
 Parameters:
 * $1 - name of variable (any one of required variables or installer-specific global variables)',
-       'config-localsettings-connection-error' => '{{doc-important|Do not translate <code>LocalSettings.php</code> and <code>AdminSettings.php</code>.}}
+       'config-localsettings-connection-error' => '{{doc-important|Do not translate <code>LocalSettings.php</code>.}}
 Used as error message. Parameters:
 * $1 - (probably empty string)',
        'config-session-error' => 'Parameters:
index 33ff65e..bcd50b3 100644 (file)
@@ -249,6 +249,7 @@ class MysqlUpdater extends DatabaseUpdater {
                                'patch-logging_user_text_type_time_index.sql' ),
                        array( 'addIndex', 'logging', 'log_user_text_time', 'patch-logging_user_text_time_index.sql' ),
                        array( 'addField', 'page', 'page_links_updated', 'patch-page_links_updated.sql' ),
+                       array( 'addField', 'user', 'user_password_expires', 'patch-user_password_expire.sql' ),
                );
        }
 
index 1e0651c..c5c10b3 100644 (file)
@@ -404,6 +404,7 @@ class PostgresUpdater extends DatabaseUpdater {
                        // 1.23
                        array( 'addPgField', 'recentchanges', 'rc_source', "TEXT NOT NULL DEFAULT ''" ),
                        array( 'addPgField', 'page', 'page_links_updated', "TIMESTAMPTZ NULL" ),
+                       array( 'addPgField', 'mwuser', 'user_password_expires', 'TIMESTAMPTZ NULL' ),
                );
        }
 
index 2869d1f..ea19efa 100644 (file)
@@ -127,6 +127,7 @@ class SqliteUpdater extends DatabaseUpdater {
                                'patch-logging_user_text_type_time_index.sql' ),
                        array( 'addIndex', 'logging', 'log_user_text_time', 'patch-logging_user_text_time_index.sql' ),
                        array( 'addField', 'page', 'page_links_updated', 'patch-page_links_updated.sql' ),
+                       array( 'addField', 'user', 'user_password_expires', 'patch-user_password_expire.sql' ),
                );
        }
 
index 52978b8..a537861 100644 (file)
@@ -434,10 +434,10 @@ abstract class JobQueue {
         * that are actually inserted into the queue. For example, "refreshLinks" jobs are
         * spawned when a template is edited. One can think of the task as "update links
         * of pages that use template X" and an instance of that task as a "root job".
-        * However, what actually goes into the queue are potentially many refreshLinks2 jobs.
-        * Since these jobs include things like page ID ranges and DB master positions, and morph
-        * into smaller refreshLinks2 jobs recursively, simple duplicate detection (like job_sha1)
-        * for individual jobs being identical is not useful.
+        * However, what actually goes into the queue are range and leaf job subtypes.
+        * Since these jobs include things like page ID ranges and DB master positions,
+        * and can morph into smaller jobs recursively, simple duplicate detection
+        * for individual jobs being identical (like that of job_sha1) is not useful.
         *
         * In the case of "refreshLinks", if these jobs are still in the queue when the template
         * is edited again, we want all of these old refreshLinks jobs for that template to become
index 5a52fc7..0063a9b 100644 (file)
@@ -102,7 +102,7 @@ class CSSJanus {
                $patterns['possibly_negative_quantity'] = "((?:-?{$patterns['quantity']})|(?:inherit|auto))";
                $patterns['color'] = "(#?{$patterns['nmchar']}+|(?:rgba?|hsla?)\([ \d.,%-]+\))";
                $patterns['url_chars'] = "(?:{$patterns['url_special_chars']}|{$patterns['nonAscii']}|{$patterns['escape']})*";
-               $patterns['lookahead_not_open_brace'] = "(?!({$patterns['nmchar']}|\r?\n|\s|#|\:|\.|\,|\+|>|\(|\))*?{)";
+               $patterns['lookahead_not_open_brace'] = "(?!({$patterns['nmchar']}|\r?\n|\s|#|\:|\.|\,|\+|>|\(|\)|\[|\]|=|\*=|~=|\^=|'[^']*'])*?{)";
                $patterns['lookahead_not_closing_paren'] = "(?!{$patterns['url_chars']}?{$patterns['valid_after_uri_chars']}\))";
                $patterns['lookahead_for_closing_paren'] = "(?={$patterns['url_chars']}?{$patterns['valid_after_uri_chars']}\))";
                $patterns['noflip_single'] = "/({$patterns['noflip_annotation']}{$patterns['lookahead_not_open_brace']}[^;}]+;?)/i";
index 23d5825..68bfe59 100644 (file)
@@ -429,10 +429,11 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                foreach ( $styles as $styleFiles ) {
                        $files = array_merge( $files, $styleFiles );
                }
-               $skinFiles = self::tryForKey(
-                       self::collateFilePathListByOption( $this->skinStyles, 'media', 'all' ),
-                       $context->getSkin(),
-                       'default'
+
+               $skinFiles = self::collateFilePathListByOption(
+                       self::tryForKey( $this->skinStyles, $context->getSkin(), 'default' ),
+                       'media',
+                       'all'
                );
                foreach ( $skinFiles as $styleFiles ) {
                        $files = array_merge( $files, $styleFiles );
@@ -614,7 +615,9 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                return array_merge_recursive(
                        self::collateFilePathListByOption( $this->styles, 'media', 'all' ),
                        self::collateFilePathListByOption(
-                               self::tryForKey( $this->skinStyles, $context->getSkin(), 'default' ), 'media', 'all'
+                               self::tryForKey( $this->skinStyles, $context->getSkin(), 'default' ),
+                               'media',
+                               'all'
                        )
                );
        }
index d0c3068..207e96b 100644 (file)
@@ -185,6 +185,43 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                return true;
        }
 
+       /**
+        * Get the load URL of the startup modules.
+        *
+        * This is a helper for getScript(), but can also be called standalone, such
+        * as when generating an AppCache manifest.
+        *
+        * @param $context ResourceLoaderContext
+        * @return string
+        */
+       public static function getStartupModulesUrl( ResourceLoaderContext $context ) {
+               // The core modules:
+               $moduleNames = array( 'jquery', 'mediawiki' );
+               wfRunHooks( 'ResourceLoaderGetStartupModules', array( &$moduleNames ) );
+
+               // Get the latest version
+               $loader = $context->getResourceLoader();
+               $version = 0;
+               foreach ( $moduleNames as $moduleName ) {
+                       $version = max( $version,
+                               $loader->getModule( $moduleName )->getModifiedTime( $context )
+                       );
+               }
+
+               $query = array(
+                       'modules' => ResourceLoader::makePackedModulesString( $moduleNames ),
+                       'only' => 'scripts',
+                       'lang' => $context->getLanguage(),
+                       'skin' => $context->getSkin(),
+                       'debug' => $context->getDebug() ? 'true' : 'false',
+                       'version' => wfTimestamp( TS_ISO_8601_BASIC, $version )
+               );
+               // Ensure uniform query order
+               ksort( $query );
+               return  wfAppendQuery( wfScript( 'load' ), $query );
+       }
+
+
        /**
         * @param $context ResourceLoaderContext
         * @return string
@@ -195,30 +232,6 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                $out = file_get_contents( "$IP/resources/startup.js" );
                if ( $context->getOnly() === 'scripts' ) {
 
-                       // The core modules:
-                       $moduleNames = array( 'jquery', 'mediawiki' );
-                       wfRunHooks( 'ResourceLoaderGetStartupModules', array( &$moduleNames ) );
-
-                       // Get the latest version
-                       $loader = $context->getResourceLoader();
-                       $version = 0;
-                       foreach ( $moduleNames as $moduleName ) {
-                               $version = max( $version,
-                                       $loader->getModule( $moduleName )->getModifiedTime( $context )
-                               );
-                       }
-                       // Build load query for StartupModules
-                       $query = array(
-                               'modules' => ResourceLoader::makePackedModulesString( $moduleNames ),
-                               'only' => 'scripts',
-                               'lang' => $context->getLanguage(),
-                               'skin' => $context->getSkin(),
-                               'debug' => $context->getDebug() ? 'true' : 'false',
-                               'version' => wfTimestamp( TS_ISO_8601_BASIC, $version )
-                       );
-                       // Ensure uniform query order
-                       ksort( $query );
-
                        // Startup function
                        $configuration = $this->getConfig( $context );
                        $registrations = self::getModuleRegistrations( $context );
@@ -230,7 +243,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                                "};\n";
 
                        // Conditional script injection
-                       $scriptTag = Html::linkedScript( wfAppendQuery( wfScript( 'load' ), $query ) );
+                       $scriptTag = Html::linkedScript( self::getStartupModulesUrl( $context ) );
                        $out .= "if ( isCompatible() ) {\n" .
                                "\t" . Xml::encodeJsCall( 'document.write', array( $scriptTag ) ) .
                                "}\n" .
index 882919f..debf01b 100644 (file)
@@ -974,6 +974,13 @@ class SearchResult {
                return '';
        }
 
+       /**
+        * @return string interwiki namespace of the title (since we likely can't resolve it locally)
+        */
+       function getInterwikiNamespaceText() {
+               return '';
+       }
+
        /**
         * Did this match file contents (eg: PDF/DJVU)?
         */
index 484e00c..47f5b1e 100644 (file)
@@ -30,6 +30,12 @@ class SpecialChangePassword extends FormSpecialPage {
 
        protected $mUserName, $mDomain;
 
+       // Optional Wikitext Message to show above the password change form
+       protected $mPreTextMessage = null;
+
+       // label for old password input
+       protected $mOldPassMsg = null;
+
        public function __construct() {
                parent::__construct( 'ChangePassword', 'editmyprivateinfo' );
                $this->listed( false );
@@ -52,13 +58,34 @@ class SpecialChangePassword extends FormSpecialPage {
                }
        }
 
+       /**
+        * Set a message at the top of the Change Password form
+        * @since 1.23
+        * @param Message $msg to parse and add to the form header
+        */
+       public function setChangeMessage( Message $msg ) {
+               $this->mPreTextMessage = $msg;
+       }
+
+       /**
+        * Set a message at the top of the Change Password form
+        * @since 1.23
+        * @param string $msg Message label for old/temp password field
+        */
+       public function setOldPasswordMessage( $msg ) {
+               $this->mOldPassMsg = $msg;
+       }
+
        protected function getFormFields() {
                global $wgCookieExpiration;
 
                $user = $this->getUser();
                $request = $this->getRequest();
 
-               $oldpassMsg = $user->isLoggedIn() ? 'oldpassword' : 'resetpass-temp-password';
+               $oldpassMsg = $this->mOldPassMsg;
+               if ( !isset( $oldpassMsg ) ) {
+                       $oldpassMsg = $user->isLoggedIn() ? 'oldpassword' : 'resetpass-temp-password';
+               }
 
                $fields = array(
                        'Name' => array(
@@ -116,6 +143,9 @@ class SpecialChangePassword extends FormSpecialPage {
                );
                $form->addButton( 'wpCancel',  $this->msg( 'resetpass-submit-cancel' )->text() );
                $form->setHeaderText( $this->msg( 'resetpass_text' )->parseAsBlock() );
+               if ( $this->mPreTextMessage instanceof Message ) {
+                       $form->addPreText( $this->mPreTextMessage->parseAsBlock() );
+               }
                $form->addHiddenFields(
                        $this->getRequest()->getValues( 'wpName', 'wpDomain', 'returnto', 'returntoquery' ) );
        }
@@ -211,17 +241,25 @@ class SpecialChangePassword extends FormSpecialPage {
                        );
                }
 
+               // @TODO Make these separate messages, since the message is written for both cases
+               if ( !$user->checkTemporaryPassword( $oldpass ) && !$user->checkPassword( $oldpass ) ) {
+                       wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'wrongpassword' ) );
+                       throw new PasswordError( $this->msg( 'resetpass-wrong-oldpass' )->text() );
+               }
+
+               // User is resetting their password to their old password
+               if ( $oldpass === $newpass ) {
+                       throw new PasswordError( $this->msg( 'resetpass-recycled' )->text() );
+               }
+
+               // Do AbortChangePassword after checking mOldpass, so we don't leak information
+               // by possibly aborting a new password before verifying the old password.
                $abortMsg = 'resetpass-abort-generic';
                if ( !wfRunHooks( 'AbortChangePassword', array( $user, $oldpass, $newpass, &$abortMsg ) ) ) {
                        wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'abortreset' ) );
                        throw new PasswordError( $this->msg( $abortMsg )->text() );
                }
 
-               if ( !$user->checkTemporaryPassword( $oldpass ) && !$user->checkPassword( $oldpass ) ) {
-                       wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'wrongpassword' ) );
-                       throw new PasswordError( $this->msg( 'resetpass-wrong-oldpass' )->text() );
-               }
-
                // Please reset throttle for successful logins, thanks!
                if ( $throttleCount ) {
                        LoginForm::clearLoginThrottle( $this->mUserName );
@@ -240,7 +278,7 @@ class SpecialChangePassword extends FormSpecialPage {
                        // changing the password also modifies the user's token.
                        $user->setCookies();
                }
-
+               $user->resetPasswordExpiration();
                $user->saveSettings();
        }
 
index c594807..fdb781b 100644 (file)
@@ -74,6 +74,7 @@ class SpecialContributions extends IncludableSpecialPage {
                $this->opts['limit'] = $request->getInt( 'limit', $user->getOption( 'rclimit' ) );
                $this->opts['target'] = $target;
                $this->opts['topOnly'] = $request->getBool( 'topOnly' );
+               $this->opts['newOnly'] = $request->getBool( 'newOnly' );
 
                $nt = Title::makeTitleSafe( NS_USER, $target );
                if ( !$nt ) {
@@ -140,6 +141,9 @@ class SpecialContributions extends IncludableSpecialPage {
                if ( $this->opts['topOnly'] ) {
                        $feedParams['toponly'] = true;
                }
+               if ( $this->opts['newOnly'] ) {
+                       $feedParams['newonly'] = true;
+               }
                if ( $this->opts['deletedOnly'] ) {
                        $feedParams['deletedonly'] = true;
                }
@@ -185,6 +189,7 @@ class SpecialContributions extends IncludableSpecialPage {
                                'month' => $this->opts['month'],
                                'deletedOnly' => $this->opts['deletedOnly'],
                                'topOnly' => $this->opts['topOnly'],
+                               'newOnly' => $this->opts['newOnly'],
                                'nsInvert' => $this->opts['nsInvert'],
                                'associated' => $this->opts['associated'],
                        ) );
@@ -404,6 +409,10 @@ class SpecialContributions extends IncludableSpecialPage {
                        $this->opts['topOnly'] = false;
                }
 
+               if ( !isset( $this->opts['newOnly'] ) ) {
+                       $this->opts['newOnly'] = false;
+               }
+
                $form = Html::openElement(
                        'form',
                        array(
@@ -423,6 +432,7 @@ class SpecialContributions extends IncludableSpecialPage {
                        'year',
                        'month',
                        'topOnly',
+                       'newOnly',
                        'associated'
                );
 
@@ -555,10 +565,21 @@ class SpecialContributions extends IncludableSpecialPage {
                                array( 'class' => 'mw-input' )
                        )
                );
+               $checkLabelNewOnly = Html::rawElement(
+                       'span',
+                       array( 'style' => 'white-space: nowrap' ),
+                       Xml::checkLabel(
+                               $this->msg( 'sp-contributions-newonly' )->text(),
+                               'newOnly',
+                               'mw-show-new-only',
+                               $this->opts['newOnly'],
+                               array( 'class' => 'mw-input' )
+                       )
+               );
                $extraOptions = Html::rawElement(
                        'td',
                        array( 'colspan' => 2 ),
-                       $deletedOnlyCheck . $checkLabelTopOnly
+                       $deletedOnlyCheck . $checkLabelTopOnly . $checkLabelNewOnly
                );
 
                $dateSelectionAndSubmit = Xml::tags( 'td', array( 'colspan' => 2 ),
@@ -642,6 +663,7 @@ class ContribsPager extends ReverseChronologicalPager {
 
                $this->deletedOnly = !empty( $options['deletedOnly'] );
                $this->topOnly = !empty( $options['topOnly'] );
+               $this->newOnly = !empty( $options['newOnly'] );
 
                $year = isset( $options['year'] ) ? $options['year'] : false;
                $month = isset( $options['month'] ) ? $options['month'] : false;
@@ -821,6 +843,10 @@ class ContribsPager extends ReverseChronologicalPager {
                        $condition[] = 'rev_id = page_latest';
                }
 
+               if ( $this->newOnly ) {
+                       $condition[] = 'rev_parent_id = 0';
+               }
+
                return array( $tables, $index, $condition, $join_conds );
        }
 
index bc0d7e3..77d2317 100644 (file)
@@ -46,7 +46,7 @@ class SpecialDiff extends RedirectSpecialPage {
                $parts = explode( '/', $subpage );
 
                // Try to parse the values given, generating somewhat pretty URLs if possible
-               if ( count( $parts ) === 1 ) {
+               if ( count( $parts ) === 1 && $parts[0] !== '' ) {
                        $this->mAddedRedirectParams['diff'] = $parts[0];
                } elseif ( count( $parts ) === 2 ) {
                        $this->mAddedRedirectParams['oldid'] = $parts[0];
index d266e3f..f5a5206 100644 (file)
@@ -713,7 +713,6 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                $dl = $lang->pipeList( $dl );
 
                // show/hide links
-               $showhide = array( $this->msg( 'show' )->text(), $this->msg( 'hide' )->text() );
                $filters = array(
                        'hideminor' => 'rcshowhideminor',
                        'hidebots' => 'rcshowhidebots',
@@ -721,7 +720,10 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        'hideliu' => 'rcshowhideliu',
                        'hidepatrolled' => 'rcshowhidepatr',
                        'hidemyself' => 'rcshowhidemine'
-               );
+                 );
+
+               $showhide = array( 'show', 'hide' );
+
                foreach ( $this->getCustomFilters() as $key => $params ) {
                        $filters[$key] = $params['msg'];
                }
@@ -732,7 +734,18 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
 
                $links = array();
                foreach ( $filters as $key => $msg ) {
-                       $link = $this->makeOptionsLink( $showhide[1 - $options[$key]],
+                       // The following messages are used here:
+                       // rcshowhideminor-show, rcshowhideminor-hide, rcshowhidebots-show, rcshowhidebots-hide,
+                       // rcshowhideanons-show, rcshowhideanons-hide, rcshowhideliu-show, rcshowhideliu-hide,
+                       // rcshowhidepatr-show, rcshowhidepatr-hide, rcshowhidemine-show, rcshowhidemine-hide.
+                       $linkMessage = $this->msg( $msg . '-' . $showhide[1 - $options[$key]] );
+                       // Extensions can define additional filters, but don't need to define the corresponding
+                       // messages. If they don't exist, just fall back to 'show' and 'hide'.
+                       if ( !$linkMessage->exists() ) {
+                               $linkMessage = $this->msg( $showhide[1 - $options[$key]] );
+                       }
+
+                       $link = $this->makeOptionsLink( $linkMessage->text(),
                                array( $key => 1 - $options[$key] ), $nondefaults );
                        $links[] = $this->msg( $msg )->rawParams( $link )->escaped();
                }
index eca1839..bbe56ec 100644 (file)
@@ -49,6 +49,7 @@ class LoginForm extends SpecialPage {
        var $mSkipCookieCheck, $mReturnToQuery, $mToken, $mStickHTTPS;
        var $mType, $mReason, $mRealName;
        var $mAbortLoginErrorMsg = null;
+       private $mTempPasswordUsed;
        private $mLoaded = false;
        private $mSecureLoginUrl;
 
@@ -400,9 +401,15 @@ class LoginForm extends SpecialPage {
                        return Status::newFatal( 'sorbs_create_account_reason' );
                }
 
+               // Normalize the name so that silly things don't cause "invalid username" errors.
+               // User::newFromName does some rather strict checking, rejecting e.g. leading/trailing/multiple spaces.
+               $title = Title::makeTitleSafe( NS_USER, $this->mUsername );
+               if ( !is_object( $title ) ) {
+                       return Status::newFatal( 'noname' );
+               }
+
                # Now create a dummy user ($u) and check if it is valid
-               $name = trim( $this->mUsername );
-               $u = User::newFromName( $name, 'creatable' );
+               $u = User::newFromName( $title->getText(), 'creatable' );
                if ( !is_object( $u ) ) {
                        return Status::newFatal( 'noname' );
                } elseif ( 0 != $u->idForName() ) {
@@ -632,6 +639,8 @@ class LoginForm extends SpecialPage {
                                // At this point we just return an appropriate code/ indicating
                                // that the UI should show a password reset form; bot inter-
                                // faces etc will probably just fail cleanly here.
+                               $this->mAbortLoginErrorMsg = 'resetpass-temp-emailed';
+                               $this->mTempPasswordUsed = true;
                                $retval = self::RESET_PASS;
                        } else {
                                $retval = ( $this->mPassword == '' ) ? self::EMPTY_PASS : self::WRONG_PASS;
@@ -639,6 +648,10 @@ class LoginForm extends SpecialPage {
                } elseif ( $wgBlockDisablesLogin && $u->isBlocked() ) {
                        // If we've enabled it, make it so that a blocked user cannot login
                        $retval = self::USER_BLOCKED;
+               } elseif ( $u->getPasswordExpired() == 'hard' ) {
+                       // Force reset now, without logging in
+                       $retval = self::RESET_PASS;
+                       $this->mAbortLoginErrorMsg = 'resetpass-expired';
                } else {
                        $wgAuth->updateUser( $u );
                        $wgUser = $u;
@@ -792,7 +805,11 @@ class LoginForm extends SpecialPage {
                                        $this->getContext()->setLanguage( $userLang );
                                        // Reset SessionID on Successful login (bug 40995)
                                        $this->renewSessionId();
-                                       $this->successfulLogin();
+                                       if ( $this->getUser()->getPasswordExpired() == 'soft' ) {
+                                               $this->resetLoginForm( $this->msg( 'resetpass-expired-soft' ) );
+                                       } else {
+                                               $this->successfulLogin();
+                                       }
                                } else {
                                        $this->cookieRedirectCheck( 'login' );
                                }
@@ -836,7 +853,7 @@ class LoginForm extends SpecialPage {
                                break;
                        case self::RESET_PASS:
                                $error = $this->mAbortLoginErrorMsg ?: 'resetpass_announce';
-                               $this->resetLoginForm( $this->msg( $error )->text() );
+                               $this->resetLoginForm( $this->msg( $error ) );
                                break;
                        case self::CREATE_BLOCKED:
                                $this->userBlockedMessage( $this->getUser()->isBlockedFromCreateAccount() );
@@ -862,14 +879,20 @@ class LoginForm extends SpecialPage {
        }
 
        /**
-        * @param $error string
+        * Show the Special:ChangePassword form, with custom message
+        * @param Message $msg
         */
-       function resetLoginForm( $error ) {
-               $this->getOutput()->addHTML( Xml::element( 'p', array( 'class' => 'error' ), $error ) );
+       protected function resetLoginForm( Message $msg ) {
+               // Allow hooks to explain this password reset in more detail
+               wfRunHooks( 'LoginPasswordResetMessage', array( &$msg, $this->mUsername ) );
                $reset = new SpecialChangePassword();
                $derivative = new DerivativeContext( $this->getContext() );
                $derivative->setTitle( $reset->getPageTitle() );
                $reset->setContext( $derivative );
+               if ( !$this->mTempPasswordUsed ) {
+                       $reset->setOldPasswordMessage( 'oldpassword' );
+               }
+               $reset->setChangeMessage( $msg );
                $reset->execute( null );
        }
 
index c38b009..870fa11 100644 (file)
@@ -86,6 +86,9 @@ class SpecialVersion extends SpecialPage {
                                        $file = $this->getExtAuthorsFileName( dirname( $extNode['path'] ) );
                                        if ( $file ) {
                                                $wikiText = file_get_contents( $file );
+                                               if ( substr( $file, -4 ) === '.txt' ) {
+                                                       $wikiText = Html::element( 'pre', array(), $wikiText );
+                                               }
                                        }
                                }
 
index 8ed15c0..68097e3 100644 (file)
@@ -146,7 +146,7 @@ class UserloginTemplate extends BaseTemplate {
 
                        <div>
                                <?php
-                               echo Html::input( 'wpLoginAttempt', $this->getMsg( 'login' )->text(), 'submit', array(
+                               echo Html::input( 'wpLoginAttempt', $this->getMsg( 'pt-login' )->text(), 'submit', array(
                                        'id' => 'wpLoginAttempt',
                                        'tabindex' => '6',
                                        'class' => 'mw-ui-button mw-ui-big mw-ui-block mw-ui-constructive'
index 67bffc3..db7a24e 100644 (file)
@@ -42,7 +42,7 @@ abstract class UploadBase {
        protected $mFilteredName, $mFinalExtension;
        protected $mLocalFile, $mFileSize, $mFileProps;
        protected $mBlackListedExtensions;
-       protected $mJavaDetected;
+       protected $mJavaDetected, $mSVGNSError;
 
        protected static $safeXmlEncodings = array( 'UTF-8', 'ISO-8859-1', 'ISO-8859-2', 'UTF-16', 'UTF-32' );
 
@@ -1168,6 +1168,7 @@ abstract class UploadBase {
         * @return mixed false of the file is verified (does not contain scripts), array otherwise.
         */
        protected function detectScriptInSvg( $filename ) {
+               $this->mSVGNSError = false;
                $check = new XmlTypeCheck(
                        $filename,
                        array( $this, 'checkSvgScriptCallback' ),
@@ -1178,6 +1179,9 @@ abstract class UploadBase {
                        // Invalid xml (bug 58553)
                        return array( 'uploadinvalidxml' );
                } elseif ( $check->filterMatch ) {
+                       if ( $this->mSVGNSError ) {
+                               return array( 'uploadscriptednamespace', $this->mSVGNSError );
+                       }
                        return array( 'uploadscripted' );
                }
                return false;
@@ -1204,7 +1208,51 @@ abstract class UploadBase {
         * @return bool
         */
        public function checkSvgScriptCallback( $element, $attribs ) {
-               $strippedElement = $this->stripXmlNamespace( $element );
+               list( $namespace, $strippedElement ) = $this->splitXmlNamespace( $element );
+
+               static $validNamespaces = array(
+                       '',
+                       'adobe:ns:meta/',
+                       'http://creativecommons.org/ns#',
+                       'http://inkscape.sourceforge.net/dtd/sodipodi-0.dtd',
+                       'http://ns.adobe.com/adobeillustrator/10.0/',
+                       'http://ns.adobe.com/adobesvgviewerextensions/3.0/',
+                       'http://ns.adobe.com/extensibility/1.0/',
+                       'http://ns.adobe.com/flows/1.0/',
+                       'http://ns.adobe.com/illustrator/1.0/',
+                       'http://ns.adobe.com/imagereplacement/1.0/',
+                       'http://ns.adobe.com/pdf/1.3/',
+                       'http://ns.adobe.com/photoshop/1.0/',
+                       'http://ns.adobe.com/saveforweb/1.0/',
+                       'http://ns.adobe.com/variables/1.0/',
+                       'http://ns.adobe.com/xap/1.0/',
+                       'http://ns.adobe.com/xap/1.0/g/',
+                       'http://ns.adobe.com/xap/1.0/g/img/',
+                       'http://ns.adobe.com/xap/1.0/mm/',
+                       'http://ns.adobe.com/xap/1.0/rights/',
+                       'http://ns.adobe.com/xap/1.0/stype/dimensions#',
+                       'http://ns.adobe.com/xap/1.0/stype/font#',
+                       'http://ns.adobe.com/xap/1.0/stype/manifestitem#',
+                       'http://ns.adobe.com/xap/1.0/stype/resourceevent#',
+                       'http://ns.adobe.com/xap/1.0/stype/resourceref#',
+                       'http://ns.adobe.com/xap/1.0/t/pg/',
+                       'http://purl.org/dc/elements/1.1/',
+                       'http://purl.org/dc/elements/1.1',
+                       'http://schemas.microsoft.com/visio/2003/svgextensions/',
+                       'http://sodipodi.sourceforge.net/dtd/sodipodi-0.dtd',
+                       'http://web.resource.org/cc/',
+                       'http://www.freesoftware.fsf.org/bkchem/cdml',
+                       'http://www.inkscape.org/namespaces/inkscape',
+                       'http://www.w3.org/1999/02/22-rdf-syntax-ns#',
+                       'http://www.w3.org/2000/svg',
+               );
+
+               if ( !in_array( $namespace, $validNamespaces ) ) {
+                       wfDebug( __METHOD__ . ": Non-svg namespace '$namespace' in uploaded file.\n" );
+                       // @TODO return a status object to a closure in XmlTypeCheck, for MW1.21+
+                       $this->mSVGNSError = $namespace;
+                       return true;
+               }
 
                /*
                 * check for elements that can contain javascript
@@ -1226,6 +1274,13 @@ abstract class UploadBase {
                        return true;
                }
 
+               # Block iframes, in case they pass the namespace check
+               if ( $strippedElement == 'iframe' ) {
+                       wfDebug( __METHOD__ . ": iframe in uploaded file.\n" );
+                       return true;
+               }
+
+
                foreach ( $attribs as $attrib => $value ) {
                        $stripped = $this->stripXmlNamespace( $attrib );
                        $value = strtolower( $value );
@@ -1299,6 +1354,19 @@ abstract class UploadBase {
                return false; //No scripts detected
        }
 
+       /**
+        * Divide the element name passed by the xml parser to the callback into URI and prifix.
+        * @param $name string
+        * @return array containing the namespace URI and prefix
+        */
+       private static function splitXmlNamespace( $element ) {
+               // 'http://www.w3.org/2000/svg:script' -> array( 'http://www.w3.org/2000/svg', 'script' )
+               $parts = explode( ':', strtolower( $element ) );
+               $name = array_pop( $parts );
+               $ns = implode( ':', $parts );
+               return array( $ns, $name );
+       }
+
        /**
         * @param $name string
         * @return string
index ea11737..f50eb49 100644 (file)
@@ -483,6 +483,7 @@ class UploadStash {
                }
 
                $this->fileMetadata[$key] = (array)$row;
+               $this->fileMetadata[$key]['us_props'] = $dbr->decodeBlob( $row->us_props );
 
                return true;
        }
index 320688a..fcb0f09 100644 (file)
@@ -3075,8 +3075,7 @@ class Language {
         * wfMessage( 'message' )->numParams( $num )->text()
         * </code>
         *
-        * See LanguageGu.php for the Gujarati implementation and
-        * $separatorTransformTable on MessageIs.php for
+        * See $separatorTransformTable on MessageIs.php for
         * the , => . and . => , implementation.
         *
         * @todo check if it's viable to use localeconv() for the decimal
index cb68eaa..98e7691 100644 (file)
@@ -126,7 +126,7 @@ $messages = array(
 'dec' => 'ҧхҷ',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Акатегориа|Акатегориақәа}}',
+'pagecategories' => '{{PLURAL:$1|1=Акатегориа|Акатегориақәа}}',
 
 'article' => 'Адаҟьа',
 'mytalk' => 'Сахцәажәара',
index a79079b..2395e68 100644 (file)
@@ -326,7 +326,6 @@ $messages = array(
 'vector-action-protect' => 'Peulindông',
 'vector-action-undelete' => 'Bateuë sampôh',
 'vector-action-unprotect' => 'Gantoe neulindông',
-'vector-simplesearch-preference' => 'Peuudép beunteueng mita biasa (kulét Vèctor khöng)',
 'vector-view-create' => 'Peugöt',
 'vector-view-edit' => 'Andam',
 'vector-view-history' => 'Eu riwayat',
index 5f75e99..1b1c5d7 100644 (file)
@@ -165,7 +165,6 @@ $messages = array(
 'vector-action-protect' => 'احم',
 'vector-action-undelete' => 'استرجع الحذف',
 'vector-action-unprotect' => 'غير الحماية',
-'vector-simplesearch-preference' => 'مكّن مقترحات البحث المُحسّنة (لواجهة فكتور فقط)',
 'vector-view-create' => 'أنشئ',
 'vector-view-edit' => 'Baddel',
 'vector-view-history' => "Warri l'historique",
index 224121e..01ed044 100644 (file)
@@ -371,7 +371,6 @@ $messages = array(
 'vector-action-protect' => 'Beskerm',
 'vector-action-undelete' => 'Ontskrap',
 'vector-action-unprotect' => 'Wysig beskerming',
-'vector-simplesearch-preference' => 'Aktiveer vereenvoudigde soekbalk (slegs vir die Vektor-omslag)',
 'vector-view-create' => 'Skep',
 'vector-view-edit' => 'Wysig',
 'vector-view-history' => 'Wys geskiedenis',
index d9b6d96..d7cb38f 100644 (file)
@@ -35,7 +35,6 @@ $namespaceNames = array(
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Twa lenk nyina ase:',
-'tog-justify' => 'Gyastefae mparagraf',
 'tog-hideminor' => 'Suma nsesae a wɔakɔ so a wɔnnkyɛree koraa',
 'tog-hidepatrolled' => 'Suma nsesae a wɔapatrole wɔn ndansa yi ara',
 'tog-newpageshidepatrolled' => 'Suma nkrataafa a wɔapatrole wɔn fi krataafa-foforo lest no so',
index df60817..0fcdf7c 100644 (file)
@@ -216,7 +216,6 @@ $messages = array(
 'vector-action-protect' => 'Mbroj',
 'vector-action-undelete' => 'Kthe fshimjen mbrapsht',
 'vector-action-unprotect' => 'Hiq mbrojtjen',
-'vector-simplesearch-preference' => 'Aktivizo sugjerime të avancueme në kërkim (vetëm për Vector skin)',
 'vector-view-create' => 'Krijo',
 'vector-view-edit' => 'Redakto',
 'vector-view-history' => 'Shih historinë',
index e26ae09..a74b167 100644 (file)
@@ -279,7 +279,6 @@ $messages = array(
 'vector-action-protect' => 'Protecher',
 'vector-action-undelete' => 'Restaurar',
 'vector-action-unprotect' => 'Cambiar protección',
-'vector-simplesearch-preference' => "Habilitar socherencias de busca amilloradas (nomás ta l'apariencia Vector)",
 'vector-view-create' => 'Creyar',
 'vector-view-edit' => 'Editar',
 'vector-view-history' => "Amostrar l'historial",
@@ -586,7 +585,7 @@ Si a cuenta s\'ha creyato por error, simplament ignore iste mensache.',
 
 # Change password dialog
 'changepassword' => 'Cambiar a clau',
-'resetpass_announce' => 'Ha encetato una sesión con una clau temporal que se le ninvió por correu. Por favor, escriba aquí una nueva clau:',
+'resetpass_announce' => 'Ta rematar o inicio de sesión, ha de definir una nueva clau:',
 'resetpass_text' => '<!-- Adiba aquí o testo -->',
 'resetpass_header' => "Cambiar a clau d'a cuenta",
 'oldpassword' => 'Clau antiga:',
index a51ca8c..8f1cf66 100644 (file)
@@ -16,7 +16,6 @@ $fallback = 'hi';
 $messages = array(
 # User preference toggles
 'tog-underline' => ' कड़ी अधोरेखित करना:',
-'tog-justify' => 'परिच्छेद समान करॊ',
 'tog-hideminor' => 'हाल के बदलाव सॆं छोटॊ बदलाव छुपाबॊ',
 'tog-hidepatrolled' => 'निगरानी मॆं करलॊ गेलॊ संपादनॊ कॆ हाल के बदलावॊ मॆं नै देखाबॊ',
 'tog-newpageshidepatrolled' => 'निगरानी वाला पन्ना कॆ नया पन्ने वाला सूची मॆं नै देखाबॊ',
@@ -25,9 +24,7 @@ $messages = array(
 'tog-numberheadings' => 'शीर्षक स्वयं-क्रमांकित करॊ',
 'tog-showtoolbar' => 'एडिट टूलबार दर्शाबॊ (जावास्क्रीप्ट)',
 'tog-editondblclick' => 'दू-बार क्लीक करी कॆ पन्ना संपादित करॊ (जावास्क्रीप्ट)',
-'tog-editsection' => '[संपादित करॊ] कड़ी द्वारा विभाग संपादन करै के अनुमती दहॊ',
 'tog-editsectiononrightclick' => 'विभाग शीर्षक पर दायाँ क्लीक करीकॆ संपादन करै के अनुमती दॆ (जावास्क्रीप्ट)',
-'tog-showtoc' => 'अनुक्रम दर्शाबॊ (जोन पन्ना पर तीन सॆं ज्यादा विभाग छै)',
 'tog-rememberpassword' => 'इ कंप्यूटर पर हमरॊ लॉग-इन सूचना याद रखॊ (अधिकतम $1 {{PLURAL:$1|दिन|दिन}} लेली)',
 'tog-watchcreations' => 'हमरॊ तैयार करलॊ पन्ना हमरॊ ध्यानसूचीमॆं रखियै',
 'tog-watchdefault' => 'हमरॊ संपादित करलॊ पन्ना हमरॊ ध्यानसूचीमॆं रखियै',
@@ -35,7 +32,6 @@ $messages = array(
 'tog-watchdeletion' => 'हमरॊ हटैलॊ पन्ना हमरॊ ध्यानसूचीमॆं रखियै',
 'tog-previewontop' => 'एडिट बॉक्स के उपर झलक दिखाबॊ',
 'tog-previewonfirst' => 'पहलॊ सम्पादन पर पूर्वावलोकन देखॊ',
-'tog-nocache' => 'ब्राउजर पन्ना केचिंग अक्षम करॊ',
 'tog-enotifwatchlistpages' => 'हमरॊ ध्यानसूची मॆं दर्ज़ पन्ना बदलला के बाद हमरा इ-मेल करॊ',
 'tog-enotifusertalkpages' => 'हमरॊ सदस्य वार्ता पृष्ठ पर बदलाव होला सॆं हमरा इ-मेल करॊ',
 'tog-enotifminoredits' => 'तनी-मनी बदलावॊ लेली भी हमरा इ-मेल भेजॊ',
@@ -320,7 +316,6 @@ Hindi (hi)फ़िलहाल इस पन्ने पर कोई सा
 'recentchanges' => 'हाल मॆं होलॊ बदलाव',
 'recentchanges-legend' => 'हाल केरॊ परिवर्तन संबंधी विकल्प',
 'recentchanges-feed-description' => 'इ फ़ीड मॆ होय वाला विकि पर हाल मॆ होलॊ बदलाव देखियै.',
-'rcnote' => "$5, $4 के पहले के {{PLURAL:$2|'''१''' दिन|'''$2''' दिनों}} मॆं  {{PLURAL:$1|होलॊ '''१''' बदलाव इ प्रकार छै.| होलॊ '''$1''' बदलाव इ प्रकार छै}}",
 'rclistfrom' => '$1 सॆं नया बदलाव देखलाबॊ',
 'rcshowhideminor' => 'छोटॊ बदलाव $1',
 'rcshowhidebots' => 'बोट सीनी $1',
index 259e290..27a1887 100644 (file)
@@ -1037,6 +1037,9 @@ $2',
 'suspicious-userlogout' => 'رفض طلب خروجك لأنه يبدو كأنه أرسل عن طريق متصفح معطوب أو وسيط تخزين.',
 'createacct-another-realname-tip' => 'الاسم الحقيقي اختياري.
 إذا اخترت توفيره فسيستخدم لنسبة عمل المستخدم إليه.',
+'pt-login' => 'تسجيل الدخول',
+'pt-createaccount' => 'أنشئ حسابا',
+'pt-userlogout' => 'تسجيل الخروج',
 
 # Email sending
 'php-mail-error-unknown' => "خطأ غير معروف في وظيفة البريد PHP's mail()",
@@ -1045,8 +1048,7 @@ $2',
 
 # Change password dialog
 'changepassword' => 'غير كلمة السر',
-'resetpass_announce' => 'تم تسجيل دخولك بكلمة سر مؤقتة.
-للدخول بشكل نهائي، يجب عليك ضبط كلمة سر جديدة هنا:',
+'resetpass_announce' => 'لإنهاء عملية تسجيل الدخول، يجب تعيين كلمة سر جديدة.',
 'resetpass_text' => '<!-- أضف نصا هنا -->',
 'resetpass_header' => 'غير كلمة سر الحساب',
 'oldpassword' => 'كلمة السر القديمة:',
@@ -1061,8 +1063,12 @@ $2',
 'resetpass-submit-cancel' => 'إلغاء',
 'resetpass-wrong-oldpass' => 'كلمة سر حالية أو مؤقتة غير صحيحة.
 ربما تكون غيرت كلمة السر الخاصة بك بنجاح أو طلبت كلمة سر مؤقتة جديدة.',
+'resetpass-recycled' => 'الرجاء إعادة تعيين كلمة السر الخاصة بك إلى تركيبة أخرى غير كلمة السر الحالية.',
+'resetpass-temp-emailed' => 'أنت مسجل الدخول حالياً بتركيبة مرسلة عبر البريد الإلكتروني. لإكمال عملية تسجيل الدخول‘ يجب إعادة تعيين كلمة السر هنا:',
 'resetpass-temp-password' => 'كلمة سر مؤقتة:',
 'resetpass-abort-generic' => 'منعت مُلحقة إتمام صيرورة تغيير كلمة السّر.',
+'resetpass-expired' => 'انتهت مدة صلاحية كلمة السر الخاصة بك. الرجاء تعيين كلمة سر جديدة لتسجيل الدخول.',
+'resetpass-expired-soft' => 'انتهت مدة صلاحية كلمة السر الخاصة بك. الرجاء تعيين كلمة سر جديدة الآن أو النقر على زر إلغاء لإعادة تعيين كلمة السر لاحقاً.',
 
 # Special:PasswordReset
 'passwordreset' => 'إعادة ضبط كلمة السر',
@@ -1260,10 +1266,10 @@ $2
 في نص التعديل. تم رفض التعديل لمنع فساد نص المقالة.
 هذا يحدث أحيانا عندما تستخدم خدمة بروكسي مجهول معيبة مبنية على الوب.'''",
 'edit_form_incomplete' => "'''بعض أجزاء من نموذج التعديل لم تصل إلى الخادم؛ تأكد من أن تعديلاتك لم تمس وحاول مجددا.'''",
-'editing' => 'تحرÙ\8aر $1',
+'editing' => 'تعدÙ\8aÙ\84 $1',
 'creating' => 'إنشاء «$1»',
-'editingsection' => 'تحرÙ\8aر $1 (قسم)',
-'editingcomment' => 'تعدÙ\8aÙ\84 $1 (Ù\82سÙ\85 Ø¬Ø¯Ù\8aد)',
+'editingsection' => 'تعدÙ\8aÙ\84 $1 (قسم)',
+'editingcomment' => 'Ø¥Ù\86شاء Ù\82سÙ\85 Ù\85Ù\86 Â«$1»',
 'editconflict' => 'تضارب في التحرير: $1',
 'explainconflict' => "لقد عدل شخص آخر هذه الصفحة بعد أن بدأت أنت بتحريرها.
 صندوق النصوص العلوي يحتوي على النص الموجود حاليا في الصفحة.
@@ -1545,7 +1551,7 @@ $1",
 'mergelogpagetext' => 'بالأسفل قائمة بأحدث عمليات الدمج لتاريخ صفحة ما إلى أخرى.',
 
 # Diffs
-'history-title' => ' «$1»: تاريخ المراجعة',
+'history-title' => 'تاريخ "$1"',
 'difference-title' => '«$1»: الفرق بين المراجعتين',
 'difference-title-multipage' => '«$1» و«$2»: الفرق بين الصفحتين',
 'difference-multipage' => '(الفرق بين الصفحتين)',
@@ -1950,7 +1956,7 @@ $1",
 'recentchangeslinked' => 'تغييرات ذات علاقة',
 'recentchangeslinked-feed' => 'تغييرات ذات علاقة',
 'recentchangeslinked-toolbox' => 'تغييرات ذات علاقة',
-'recentchangeslinked-title' => 'التغييرات المرتبطة ب "$1"',
+'recentchangeslinked-title' => 'التغييرات المرتبطة بصفحة «$1»',
 'recentchangeslinked-summary' => "هذه قائمة بالتغييرات التي تمت حديثا للصفحات الموصولة من صفحة معينة (أو إلى الأعضاء ضمن تصنيف معين).
 الصفحات في [[Special:Watchlist|قائمة مراقبتك]] '''مغلظة'''",
 'recentchangeslinked-page' => 'اسم الصفحة:',
@@ -2058,6 +2064,7 @@ $1",
 'uploaddisabledtext' => 'رفع الملفات معطل.',
 'php-uploaddisabledtext' => 'رفع ملفات PHP معطل. من فضلك تحقق من إعدادات رفع الملفات.',
 'uploadscripted' => 'هذا الملف يضم كود HTML أو كود آخر يمكن أن يفسره متصفح الوب بطريقة خاطئة.',
+'uploadinvalidxml' => 'تعذر تحليل XML في الملف المرفوع.',
 'uploadvirus' => 'الملف يحتوي على فيروس! التفاصيل: $1',
 'uploadjava' => 'يحتوي ملف ZIP هذا على ملفات جافا .class.
 لا يسمح برفع ملفات جافا لأنها تتيح تخطي القيود الأمنية.',
@@ -2434,10 +2441,20 @@ $1',
 'deadendpagestext' => 'الصفحات التالية لا تصل إلى صفحات أخرى في {{SITENAME}}.',
 'protectedpages' => 'صفحات محمية',
 'protectedpages-indef' => 'عمليات الحماية غير المحددة فقط',
+'protectedpages-summary' => 'تحتوي هذه الصفحة على أسماء العناوين المحمية حالياً. لمطالعة قائمة الصفحات التي تم فرض حماية على إنشائها انظر [[{{#special:ProtectedTitles}}]].',
 'protectedpages-cascade' => 'الحماية المضمنة فقط',
 'protectedpages-noredirect' => 'أخفِ التحويلات',
 'protectedpagesempty' => 'لا توجد صفحات محمية حاليا بهذه المحددات.',
+'protectedpages-timestamp' => 'ختم زمني',
+'protectedpages-page' => 'الصفحة',
+'protectedpages-expiry' => 'ينتهي في',
+'protectedpages-performer' => 'حماية مستخدم',
+'protectedpages-params' => 'معاملات الحماية',
+'protectedpages-reason' => 'السبب',
+'protectedpages-unknown-timestamp' => 'غير معروف',
+'protectedpages-unknown-performer' => 'مستخدم غير معروف',
 'protectedtitles' => 'عناوين محمية',
+'protectedtitles-summary' => 'تحتوي هذه الصفحة على أسماء العناوين المحمية حالياً من الإنشاء. لمطالعة قائمة الصفحات التي تم إنشائها وحمايتها انظر [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'لا توجد عناوين محمية حاليا بهذه المحددات.',
 'listusers' => 'قائمة الأعضاء',
 'listusers-editsonly' => 'اعرض المستخدمين الذين أجروا تعديلات فقط',
@@ -2749,7 +2766,7 @@ $UNWATCHURL
 'modifiedarticleprotection' => 'غير مستوى حماية "[[$1]]"',
 'unprotectedarticle' => 'أزال الحماية من "[[$1]]"',
 'movedarticleprotection' => 'نقل إعدادات الحماية من "[[$2]]" إلى "[[$1]]"',
-'protect-title' => 'ضبط مستوى حماية "$1"',
+'protect-title' => 'ضبط حماية "$1"',
 'protect-title-notallowed' => 'عرض مستوى حماية "$1"',
 'prot_1movedto2' => 'نُقلت [[$1]] إلى [[$2]]',
 'protect-badnamespace-title' => 'نطاق لا يحمى',
@@ -3212,6 +3229,7 @@ $2',
 'thumbnail_image-type' => 'نوع الصورة غير مدعوم',
 'thumbnail_gd-library' => 'ضبط مكتبة GD غير مكتمل: دالة مفقودة $1',
 'thumbnail_image-missing' => 'الملف يبدو أنه مفقود: $1',
+'thumbnail_image-failure-limit' => 'هناك الكثير من المحاولات الفاشلة مؤخراً ($1 أو أكثر) لتَصْيير هذه الصورة المصغرة. الرجاء المحاولة مرة أخرى لاحقاً.',
 
 # Special:Import
 'import' => 'استيراد صفحات',
@@ -4555,9 +4573,7 @@ $5
 'expandtemplates' => 'فرد القوالب',
 'expand_templates_intro' => 'تتعامل هذه الصفحة الخاصة مع نصوص الويكي وتقوم بفرد كل القوالب الموجودة به.
 وتقوم أيضا بفرد دوال القوالب مثل
-<nowiki>{{</nowiki>#language:...}}، والمتغيرات مثل
-<nowiki>{{</nowiki>يوم}}-- وتقوم التعامل مع كل ما بين الأقواس المزدوجة.
-تقوم بفعل هذا عن طريق استدعاء المعالج المناسب من الميدياويكي.',
+<code><nowiki>{{</nowiki>#language:…}}</code> and variables like <code><nowiki>{{</nowiki>CURRENTDAY}}</code>. حقيقةً، تقوم التعامل مع كل ما بين الأقواس المزدوجة.',
 'expand_templates_title' => 'عنوان صفحة هذا النص، لأجل معالجة {{FULLPAGENAME}} إلخ.:',
 'expand_templates_input' => 'النص المدخل:',
 'expand_templates_output' => 'النتيجة',
@@ -4570,6 +4586,4 @@ $5
 'expand_templates_generate_rawhtml' => 'أظهر خام HTML',
 'expand_templates_preview' => 'عرض مسبق',
 
-# Unknown messages
-'uploadinvalidxml' => 'تعذر تحليل XML في الملف المرفوع.',
 );
index 31a4121..e7b6138 100644 (file)
@@ -165,7 +165,6 @@ $messages = array(
 'vector-action-protect' => 'Ḫami',
 'vector-action-undelete' => 'rja lhadf',
 'vector-action-unprotect' => 'Ḫiyed l-ḫimaya',
-'vector-simplesearch-preference' => 'ĥddem qṫiraḫaṫ l-bḫṫ l-mḫssna (ġir mĝa Vector)',
 'vector-view-create' => 'Ĥṫareĝ',
 'vector-view-edit' => 'Ĝedel',
 'vector-view-history' => 'Ṫariĥ l-fiċyé',
index c8fc7a4..30c128e 100644 (file)
@@ -466,7 +466,6 @@ $messages = array(
 'vector-action-protect' => 'حمايه',
 'vector-action-undelete' => 'الغى المسح',
 'vector-action-unprotect' => 'غير الحمايه',
-'vector-simplesearch-preference' => ' تشغيل شريط التدوير  المبسط (لمظهر فيكتور بس)',
 'vector-view-create' => 'اعمل',
 'vector-view-edit' => 'تعديل',
 'vector-view-history' => 'استعراض التاريخ',
index 2a609bb..811ae87 100644 (file)
@@ -344,7 +344,6 @@ $messages = array(
 'vector-action-protect' => 'সুৰক্ষিত কৰক',
 'vector-action-undelete' => 'পুনৰুদ্ধাৰ কৰক',
 'vector-action-unprotect' => 'সুৰক্ষা সলনি কৰক',
-'vector-simplesearch-preference' => 'সৰল সন্ধান দণ্ডিকা সক্ৰিয় কৰক (ভেক্টৰ স্কিনৰ বাবেহে)',
 'vector-view-create' => 'সৃষ্টি কৰক',
 'vector-view-edit' => 'সম্পাদনা',
 'vector-view-history' => 'ইতিহাস চাওক',
@@ -554,7 +553,7 @@ $1',
 'actionthrottled' => 'কাৰ্য লেহেম কৰা হৈছে',
 'actionthrottledtext' => 'স্পাম ৰোধ কৰিবলৈ এই ক্ৰিয়াতো কম সময়ৰ ভিতৰত বহু বেছি বাৰ কৰাতো ৰোধ কৰা হৈছে, আৰু আপুনি ইতিমধ্যে সেই সীমা অতিক্ৰম কৰিলে।
 অনুগ্ৰহ কৰি কিছু সময় পাছত চেষ্টা কৰক।',
-'protectedpagetext' => 'সমà§\8dপাদনা à§°à§\8bধ à¦\95ৰিবলà§\88 à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন সুৰক্ষিত কৰা হৈছে।',
+'protectedpagetext' => 'সমà§\8dপাদনা à§°à§\8bধ à¦\95ৰিবলà§\88 à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b সুৰক্ষিত কৰা হৈছে।',
 'viewsourcetext' => 'আপুনি এই পৃষ্ঠাটোৰ উৎস চাব আৰু নকল কৰিব পাৰে',
 'viewyourtext' => "আপুনি '''আপোনাৰ সম্পাদনাসমূহ'''ৰ উৎস চাব আৰু এই পৃষ্ঠালৈ নকল কৰিব পাৰে:",
 'protectedinterface' => 'এই পৃষ্ঠাই ৱিকি ছফ্টৱেৰৰ ইণ্টাৰফে’চ বাৰ্তা প্ৰদান কৰে আৰু ইয়াক সুৰক্ষিত কৰি ৰখা হৈছে।
@@ -562,7 +561,7 @@ $1',
 'editinginterface' => "'''সাৱধানবাণী:''' আপুনি যিখন পৃষ্ঠা সম্পাদনা কৰিছে সেইখন এই ছফ্টৱেৰৰ ইণ্টাৰফে’চ বাৰ্তা দিবলৈ ব্যৱহাৰ হয়।
 এই পৃষ্ঠাৰ সাল-সলনিয়ে আন ব্যৱহাৰকাৰীৰ বাবে ইণ্টাৰফে’চত প্ৰভাৱ পেলাব।
 সকলো ৱিকিৰ বাবে অনুবাদৰ বাবে অনুগ্ৰহ কৰি মিডিয়াৱিকি স্থানীয়কৰণ প্ৰকল্প [//translatewiki.net/ translatewiki.net] ব্যৱহাৰ কৰক ।",
-'cascadeprotected' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন সম্পাদনাৰ পৰা সুৰক্ষিত কাৰণ এই {{PLURAL:$1|পৃষ্ঠা, যিটো|পৃষ্ঠা, যিবোৰ}} "প্ৰপাতাকাৰ" (cascading) বিকল্পৰ সহযোগত সুৰক্ষিত কৰা হৈছে: 
+'cascadeprotected' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b সম্পাদনাৰ পৰা সুৰক্ষিত কাৰণ এই {{PLURAL:$1|পৃষ্ঠা, যিটো|পৃষ্ঠা, যিবোৰ}} "প্ৰপাতাকাৰ" (cascading) বিকল্পৰ সহযোগত সুৰক্ষিত কৰা হৈছে: 
 $2',
 'namespaceprotected' => "আপোনাৰ '''$1''' নামস্থানৰ পৃষ্ঠাসমূহ সম্পাদনা কৰাৰ অধিকাৰ নাই।",
 'customcssprotected' => 'এই CSS পৃষ্ঠা সম্পাদনা কৰাৰ অধিকাৰ আপোনাৰ নাই, কাৰণ ইয়াত আন সদস্যৰ ব্যক্তিগত পছন্দসমূহত আছে ।',
@@ -949,11 +948,11 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 কোনো আসোঁৱাহপূৰ্ণ ৱেব-ভিত্তিক বেনামী প্ৰক্সী সেৱা ব্যৱহাৰ কৰিলে এনে হ’ব পাৰে ।",
 'edit_form_incomplete' => "'''এই সম্পাদনাৰ কিছু অংশ চাৰ্ভাৰলৈ নগ’ল; আপোনাৰ সম্পাদনা ঠিকে আছেনে পৰীক্ষা কৰি পুনৰ চেষ্টা কৰক ।'''",
 'editing' => '$1 সম্পাদনা',
-'creating' => '$1 à¦ªà§\83ষà§\8dঠাà¦\96ন আপুনি সৃষ্টি কৰি আছে',
+'creating' => '$1 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b আপুনি সৃষ্টি কৰি আছে',
 'editingsection' => '$1 (অনুচ্ছেদ) সম্পাদনা কৰি আছে',
 'editingcomment' => '$1 (নতুন অনুচ্ছেদ) সম্পাদনা কৰি আছে',
 'editconflict' => 'সম্পাদনা দ্বন্দ্ব: $1',
-'explainconflict' => "à¦\86পà§\81নি à¦¸à¦®à§\8dপাদনা à¦\86ৰমà§\8dভ à¦\95ৰাৰ à¦ªà¦¾à¦\9bত à¦\86ন à¦\95à§\8bনà§\8bবাà¦\87 à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন সলনি কৰিলে।
+'explainconflict' => "à¦\86পà§\81নি à¦¸à¦®à§\8dপাদনা à¦\86ৰমà§\8dভ à¦\95ৰাৰ à¦ªà¦¾à¦\9bত à¦\86ন à¦\95à§\8bনà§\8bবাà¦\87 à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b সলনি কৰিলে।
 পাঠ্য-স্থানৰ উপৰ ভাগত এই পৃষ্ঠাৰ প্ৰচলিত পাঠ্য দিয়া হৈছে।
 আপোনাৰ সলনিসমূহ পাঠ্য-স্থানৰ তলৰ ভাগত দেখুওৱা হৈছে।
 আপুনি আপোনাৰ সালসলনিসমূহ প্ৰচলিত পাঠ্যত অন্তৰ্ভুক্ত কৰিব পাৰে।
@@ -985,9 +984,9 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 আপোনাৰ সুবিধাৰ বাবে পৃষ্ঠাৰ সাম্প্ৰতিক ল'গ সংৰক্ষণ তলত দিয়া হ'ল ।",
 'semiprotectedpagewarning' => "টোকা: এই পৃষ্ঠা বন্ধ ৰখা হৈছে; কেৱল পঞ্জীভূত সদস্যই হে সম্পাদনা কৰিব পাৰিব ।
 আপোনাৰ সুবিধাৰ বাবে পৃষ্ঠাৰ সাম্প্ৰতিক ল'গ সংৰক্ষণ তলত দিয়া হ'ল ।",
-'cascadeprotectedwarning' => "'''সতৰà§\8dà¦\95বাণà§\80:''' à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¸à§\81ৰà¦\95à§\8dষিত à¦\95ৰি à§°à¦\96া à¦¹à§\88à¦\9bà§\87 à¦¯à¦¾à¦¤à§\87 à¦\95à§\87ৱল à¦ªà§\8dৰশাসনিà¦\95 à¦\95à§\8dষমতা à¦¥à¦\95া à¦¸à¦¦à¦¸à§\8dযà¦\87 à¦\87য়াà¦\95 à¦¸à¦®à§\8dপাদনা à¦\95ৰিব à¦ªà¦¾à§°à§\87, à¦\95াৰণ à¦\87 à¦ªà§\8dৰপাতাà¦\95াৰ-সà§\81ৰà¦\95à§\8dষিত  {{PLURAL:$1|পà§\83ষà§\8dঠাà¦\96নৰ|পৃষ্ঠাবোৰৰ}} অন্তৰ্ভুক্ত:",
-'titleprotectedwarning' => "'''সতৰà§\8dà¦\95বাণà§\80: à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন সুৰক্ষিত কৰা হৈছে যাতে কেৱল [[Special:ListGroupRights|specific rights]] সদস্যই ইয়াক তৈয়াৰ কৰিব পাৰে ।'''
-à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰà§\8dথà§\87 à¦²à¦\97ৰ à¦¶à§\87হতà§\80য়া à¦­à§°à§\8dতি à¦¤à¦²à¦¤ à¦¦à¦¿à¦¯à¦¼à¦¾ à¦¹â\80\99ল ।",
+'cascadeprotectedwarning' => "'''সতৰà§\8dà¦\95বাণà§\80:''' à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦¸à§\81ৰà¦\95à§\8dষিত à¦\95ৰি à§°à¦\96া à¦¹à§\88à¦\9bà§\87 à¦¯à¦¾à¦¤à§\87 à¦\95à§\87ৱল à¦ªà§\8dৰশাসনিà¦\95 à¦\95à§\8dষমতা à¦¥à¦\95া à¦¸à¦¦à¦¸à§\8dযà¦\87 à¦\87য়াà¦\95 à¦¸à¦®à§\8dপাদনা à¦\95ৰিব à¦ªà¦¾à§°à§\87, à¦\95াৰণ à¦\87 à¦ªà§\8dৰপাতাà¦\95াৰ-সà§\81ৰà¦\95à§\8dষিত  {{PLURAL:$1|পà§\83ষà§\8dঠাà¦\9fà§\8bৰ|পৃষ্ঠাবোৰৰ}} অন্তৰ্ভুক্ত:",
+'titleprotectedwarning' => "'''সতৰà§\8dà¦\95বাণà§\80: à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b সুৰক্ষিত কৰা হৈছে যাতে কেৱল [[Special:ListGroupRights|specific rights]] সদস্যই ইয়াক তৈয়াৰ কৰিব পাৰে ।'''
+à¦\86পà§\8bনাৰ à¦¸à§\81বিধাৰà§\8dথà§\87 à¦\85ভিলà§\87à¦\96ৰ à¦¶à§\87হতà§\80য়া à¦­à§°à§\8dতি à¦¤à¦²à¦¤ à¦¦à¦¿à¦¯à¦¼à¦¾ à¦¹â\80\99ল।",
 'templatesused' => 'এই পৃষ্ঠাত ব্যৱহৃত {{PLURAL:$1|সাঁচ|সাঁচ সমূহ}}:',
 'templatesusedpreview' => 'এই খচৰাত ব্যৱহৃত {{PLURAL:$1|সাঁচ|সাঁচ সমূহ}}:',
 'templatesusedsection' => 'এই দফাত ব্যৱহৃত {{PLURAL:$1|সাঁচ|সাঁচ সমূহ}}:',
@@ -1215,7 +1214,7 @@ $1",
 'mergehistory-submit' => 'সংস্কৰণসমূহ মিলাই দিয়ক',
 'mergehistory-empty' => 'কোনো সংস্কৰণ একত্ৰিত কৰিব নোৱাৰি ।',
 'mergehistory-success' => '[[:$1]] ৰ $3 {{PLURAL:$3| টা সংশোধন|টা সংশোধন}}  [[:$2]] ৰ লগত সফলতাৰে একত্ৰিত কৰা হ’ল ।',
-'mergehistory-fail' => 'ইতিহাস একত্ৰিত কৰিব পৰা নগ’ল । অনুগ্ৰহ কৰি পৃষ্ঠাখন আৰু সময়ৰ পাৰামিটাৰ পুনৰ পৰীক্ষা কৰক ।',
+'mergehistory-fail' => 'ইতিহাস একত্ৰিত কৰিব পৰা নগ’ল। অনুগ্ৰহ কৰি পৃষ্ঠাটো আৰু সময়ৰ পাৰামিটাৰ পুনৰ পৰীক্ষা কৰক।',
 'mergehistory-no-source' => '$1 নামৰ কোনো উৎস পৃষ্ঠৰ অস্তিত্ব নাই ।',
 'mergehistory-no-destination' => '$1 নামৰ কোনো গন্তব্য পৃষ্ঠাৰ অস্তিত্ব নাই ।',
 'mergehistory-invalid-source' => 'উৎস পৃষ্ঠাৰ অৱশ্যেই বৈধ শিৰোনামা থাকিব লাগিব ।',
@@ -1265,7 +1264,7 @@ $1",
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) চাওক।',
 'searchmenu-exists' => "'''এই ৱিকিত \"[[:\$1]]\" নামৰ এটা পৃষ্ঠা আছে।'''
 {{PLURAL:\$2|0=|আন সন্ধান ফলাফলবোৰ চাওক।}}",
-'searchmenu-new' => '<strong>à¦\8fà¦\87 à§±à¦¿à¦\95িত "[[:$1]]" à¦ªà§\83ষà§\8dঠাà¦\96ন সৃষ্টি কৰক!</strong> 
+'searchmenu-new' => '<strong>à¦\8fà¦\87 à§±à¦¿à¦\95িত "[[:$1]]" à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b সৃষ্টি কৰক!</strong> 
 {{PLURAL:$2|0=|আপোনাৰ সন্ধানত পোৱা পৃষ্ঠাবোৰো চাওক।|সন্ধান ফলাফলসমূহো চাওক।}}',
 'searchprofile-articles' => 'বিষয়বস্তুৰ পৃষ্ঠা',
 'searchprofile-project' => 'সহায় আৰু প্ৰকল্প পৃষ্ঠাসমূহ',
@@ -1505,7 +1504,7 @@ $1",
 'right-deletedhistory' => 'বিলোপ কৰা ইতিহাসৰ ভৰ্তি সংশ্লিষ্ট লেখা অবিহনে চাওক',
 'right-deletedtext' => 'বিলোপ কৰা লেখা আৰু বিলোপ কৰা সংশোধনসমূহৰ মাজত হোৱা সালসলনি চাওক',
 'right-browsearchive' => 'বিলোপ কৰা পৃষ্ঠা অনুসন্ধান কৰক',
-'right-undelete' => 'পà§\83ষà§\8dঠাà¦\96ন পুনৰুদ্ধাৰ কৰক',
+'right-undelete' => 'পà§\83ষà§\8dঠাà¦\9fà§\8b পুনৰুদ্ধাৰ কৰক',
 'right-suppressrevision' => 'প্ৰশাসকৰ পৰা লুকুৱাই ৰখা সংশোধনসমূহ পুনৰ্নিৰীক্ষণ কৰি আগৰ ঠাইলৈ পঠিয়াওক',
 'right-suppressionlog' => "ব্যক্তিগত ল'গবোৰ চাওক",
 'right-block' => 'আন সদস্যক সম্পাদনা কৰাৰ পৰা বাৰণ কৰক',
@@ -2078,8 +2077,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'nmemberschanged' => '$1 → $2 {{PLURAL:$2|জন সদস্য}}',
 'nrevisions' => '$1টা {{PLURAL:$1|সংশোধন|সংশোধন}}',
 'nviews' => '$1 {{PLURAL:$1|টা দৰ্শন|টা দৰ্শন}}',
-'nimagelinks' => '$1 {{PLURAL:$1|à¦\96ন à¦ªà§\83ষà§\8dঠাত|à¦\96ন পৃষ্ঠাত}} ব্যৱহৃত',
-'ntransclusions' => '$1 {{PLURAL:$1|à¦\96ন à¦ªà§\83ষà§\8dঠাত|à¦\96ন পৃষ্ঠাত}} ব্যৱহৃত',
+'nimagelinks' => '$1 {{PLURAL:$1|à¦\9fা পৃষ্ঠাত}} ব্যৱহৃত',
+'ntransclusions' => '$1 {{PLURAL:$1|à¦\9fা পৃষ্ঠাত}} ব্যৱহৃত',
 'specialpage-empty' => 'এই বিৱৰণৰ কোনো ফলাফল নাই ।',
 'lonelypages' => 'অনাথ পৃষ্ঠা',
 'lonelypagestext' => 'তলৰ পৃষ্ঠাসমূহ {{SITENAME}}ৰ কোনো পৃষ্ঠাৰ লগত সংযোগকৃত নহয় ।',
@@ -2139,7 +2138,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'pager-newer-n' => '{{PLURAL:$1|নতুনতৰ ১টি|নতুনতৰ $1টি}}',
 'pager-older-n' => '{{PLURAL:$1|পুৰণতৰ ১|পুৰণতৰ $1}}',
 'suppress' => 'অমনোযোগ',
-'querypage-disabled' => 'à¦\95াৰà§\8dযà§\8dযà¦\97ত à¦\95াৰণত à¦\8fà¦\87 à¦¬à¦¿à¦¶à§\87ষ à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¨à¦¿à¦·à§\8dà¦\95à§\8dৰিয় à¦\95ৰা à¦¹à§\88à¦\9bà§\87 ।',
+'querypage-disabled' => 'à¦\95াৰà§\8dযà§\8dযà¦\97ত à¦\95াৰণত à¦\8fà¦\87 à¦¬à¦¿à¦¶à§\87ষ à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦¨à¦¿à¦·à§\8dà¦\95à§\8dৰিয় à¦\95ৰা à¦¹à§\88à¦\9bà§\87।',
 
 # Book sources
 'booksources' => 'গ্ৰন্থৰ উৎস সমূহ',
@@ -2285,7 +2284,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'watchnologin' => 'প্ৰৱেশ কৰা নাই',
 'watchnologintext' => 'নিৰীক্ষণ তালিকা পৰিৱৰ্তন কৰিবলৈ আপুনি আগতে [[Special:UserLogin|প্ৰৱেশ]] কৰিব লাগিব ।',
 'addwatch' => 'লক্ষ্য-তালিকাত অন্তৰ্ভুক্ত কৰক',
-'addedwatchtext' => 'à¦\86পà§\8bনাৰ [[Special:Watchlist|লà¦\95à§\8dষà§\8dয à¦¤à¦¾à¦²à¦¿à¦\95াত ]] "[[:$1]]" à¦ªà§\83ষà§\8dঠাà¦\96ন অন্তৰ্ভুক্ত কৰা হ\'ল।
+'addedwatchtext' => 'à¦\86পà§\8bনাৰ [[Special:Watchlist|লà¦\95à§\8dষà§\8dয à¦¤à¦¾à¦²à¦¿à¦\95াত ]] "[[:$1]]" à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b অন্তৰ্ভুক্ত কৰা হ\'ল।
 ভৱিষ্যতে এই পৃষ্ঠা বা ইয়াৰ আলোচনা পৃষ্ঠাত হোৱা সাল-সলনি আপুনি আপোনাৰ লক্ষ্য তালিকাত দেখিব।',
 'removewatch' => 'লক্ষ্য-তালিকাৰ পৰা আঁতৰাওক',
 'removedwatchtext' => '"[[:$1]]" পৃষ্ঠাটো [[Special:Watchlist|আপোনাৰ লক্ষ্য-তালিকা]]ৰ পৰা আঁতৰোৱা হৈছে ।',
@@ -2300,7 +2299,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'wlheader-showupdated' => "আপোনাৰ শেষ পৰিদৰ্শনৰ পিছত সলনি হোৱা পৃষ্ঠাসমূহ '''গাঢ়''' আখৰত দেখুওৱা হৈছে।",
 'watchmethod-recent' => 'লক্ষ্য কৰা পৃষ্ঠাসমূহ শেহতীয়া সম্পাদনাৰ বাবে পৰীক্ষা কৰা হৈছে',
 'watchmethod-list' => 'লক্ষ্য কৰা পৃষ্ঠাসমূহ শেহতীয়া সম্পাদনাৰ বাবে পৰীক্ষা কৰা হৈছে',
-'watchlistcontains' => 'আপোনাৰ লক্ষ্য-তালিকাত $1 খন {{PLURAL:$1|পৃষ্ঠা|পৃষ্ঠা}} আছে ।',
+'watchlistcontains' => 'আপোনাৰ লক্ষ্য-তালিকাত $1টা {{PLURAL:$1|পৃষ্ঠা}} আছে ।',
 'iteminvalidname' => "'$1' আইটেমটোৰ লগত সমস্যা হৈছে, অবৈধ নাম...",
 'wlshowlast' => 'যোৱা $1 ঘণ্টা $2 দিন $3 চাওক',
 'watchlist-options' => 'লক্ষ্য-তালিকা পছন্দসমূহ',
@@ -2400,14 +2399,14 @@ $UNWATCHURL
 'rollbackfailed' => 'পূৰ্ববৎ ব্যৰ্থ',
 'cantrollback' => 'পূৰ্বৰ অৱস্থালৈ ঘূৰাই নিব নোৱাৰি;
 শেষৰ সম্পাদকজন এই পৃষ্ঠাৰ একমাত্ৰ লেখক ।',
-'alreadyrolled' => "[[User:$2|$2]] ([[User talk:$2|à¦\86লà§\8bà¦\9aনা]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])à¦\8f à¦\95ৰা [[:$1]]ৰ à¦¶à§\87ষ à¦¸à¦®à§\8dপাদনা à¦ªà§\82ৰà§\8dবাৱসà§\8dথালà§\88 à¦\98à§\82ৰাà¦\87 à¦¨à¦¿à¦¬ à¦¨à§\8bৱাৰি; à¦\95à§\8bনà§\8bবাà¦\87 à¦\87তিমধà§\8dযà§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন সম্পাদনা বা ৰ'লবেক কৰিছে ।
+'alreadyrolled' => "[[User:$2|$2]] ([[User talk:$2|à¦\86লà§\8bà¦\9aনা]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])à¦\8f à¦\95ৰা [[:$1]]ৰ à¦¶à§\87ষ à¦¸à¦®à§\8dপাদনা à¦ªà§\82ৰà§\8dবাৱসà§\8dথালà§\88 à¦\98à§\82ৰাà¦\87 à¦¨à¦¿à¦¬ à¦¨à§\8bৱাৰি; à¦\95à§\8bনà§\8bবাà¦\87 à¦\87তিমধà§\8dযà§\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b সম্পাদনা বা ৰ'লবেক কৰিছে ।
 
 [[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' => 'এজন গোপন ব্যৱহাৰকাৰীয়ে কৰা সম্পাদনা {{GENDER:$1|[[User:$1|$1]]}}-য়ে কৰা শেষ সংশোধনীলৈ ঘূৰাই নিয়া হৈছে।',
 'rollback-success' => '$1 ৰ সম্পাদনাসমূহ পূৰ্বৰ অৱস্থালৈ ঘূৰাই নিয়া হৈছে;
-পà§\83ষà§\8dঠাà¦\96ন $2 য়ে কৰা শেষ সংশোধনীলৈ ঘূৰাই নিয়া হৈছে ।',
+পà§\83ষà§\8dঠাà¦\9fà§\8b $2 য়ে কৰা শেষ সংশোধনীলৈ ঘূৰাই নিয়া হৈছে ।',
 
 # Edit tokens
 'sessionfailure-title' => 'ছেছন বিফল',
@@ -2428,7 +2427,7 @@ $UNWATCHURL
 'prot_1movedto2' => '$1 ক $2 লৈ স্থানান্তৰিত কৰা হল',
 'protect-badnamespace-title' => 'অসুৰক্ষিত নামস্থান',
 'protect-badnamespace-text' => 'এই নামস্থানৰ পৃষ্ঠাসমূহ সুৰক্ষিত কৰিব নোৱাৰি।',
-'protect-norestrictiontypes-text' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন সুৰক্ষিত কৰিব নোৱাৰি কাৰণ কোনো বাধা প্ৰকাৰ নাই।',
+'protect-norestrictiontypes-text' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b সুৰক্ষিত কৰিব নোৱাৰি কাৰণ কোনো বাধা প্ৰকাৰ নাই।',
 'protect-norestrictiontypes-title' => 'সুৰক্ষা প্ৰযোজ্য নোহোৱা পৃষ্ঠা',
 'protect-legend' => 'সুৰক্ষা নিশ্চিত কৰক',
 'protectcomment' => 'কাৰণ:',
@@ -2443,7 +2442,7 @@ $UNWATCHURL
 '''$1''' পৃষ্ঠাৰ বৰ্তমান ছেটিং সমূহ ইয়াত দিয়া হ’ল:",
 'protect-locked-access' => "এই পৃষ্ঠাটোৰ সুৰক্ষা-স্তৰ সলনি কৰাৰ অনুমতি আপোনাক দিয়া হোৱা নাই ।
 '''$1''' পৃষ্ঠাখনৰ সুৰক্ষা-স্তৰৰ গাঁথনি ইয়াত আছে:",
-'protect-cascadeon' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন বৰ্তমান সুৰক্ষিত কাৰণ ই {{PLURAL:$1|খন পৃষ্ঠাৰ|খন পৃষ্ঠাৰ}} অন্তৰ্গত য’ত প্ৰপাতাকাৰ সুৰক্ষা সক্ৰিয় ।
+'protect-cascadeon' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b বৰ্তমান সুৰক্ষিত কাৰণ ই {{PLURAL:$1|খন পৃষ্ঠাৰ|খন পৃষ্ঠাৰ}} অন্তৰ্গত য’ত প্ৰপাতাকাৰ সুৰক্ষা সক্ৰিয় ।
 আপুনি এই পৃষ্ঠাৰ সুৰক্ষা স্তৰ সলাব পাৰে কিন্তু সি প্ৰপাতাকাৰ সুৰক্ষাত কোনো প্ৰভাৱ নেপেলায ।',
 'protect-default' => 'সকলো ব্যৱহাৰকাৰীৰ বাবে',
 'protect-fallback' => 'কেৱল "$1" অনুমতি থকা ব্যৱহাৰকাৰীকহে সুযোগ দিয়া হয়',
@@ -2489,17 +2488,17 @@ $UNWATCHURL
 'undeletepage' => 'বিলোপ কৰা পৃষ্ঠাসমূহ চাওক আৰু পুনৰুদ্ধাৰ কৰক',
 'undeletepagetitle' => "'''ইয়াত [[:$1|$1]]ৰ বিলোপ কৰা সংশোধনসমূহ পাব''' ।",
 'viewdeletedpage' => 'বিলোপ কৰা পৃষ্ঠাসমূহ চাওক',
-'undeletepagetext' => 'তলৰ {{PLURAL:$1|পà§\83ষà§\8dঠাà¦\96ন বিলোপ কৰা হৈছে কিন্তু সেয়া|$1 পৃষ্ঠাসমূহ বিলোপ কৰা হৈছে কিন্তু সেয়া}} এতিয়াও আৰ্কাইভত আছে আৰু পুনৰুদ্ধাৰ সম্ভৱ ।
+'undeletepagetext' => 'তলৰ {{PLURAL:$1|পà§\83ষà§\8dঠাà¦\9fà§\8b বিলোপ কৰা হৈছে কিন্তু সেয়া|$1 পৃষ্ঠাসমূহ বিলোপ কৰা হৈছে কিন্তু সেয়া}} এতিয়াও আৰ্কাইভত আছে আৰু পুনৰুদ্ধাৰ সম্ভৱ ।
 আৰ্কাইভটো সময়ে সময়ে পৰিষ্কাৰ কৰা হ’ব পাৰে ।',
 'undelete-fieldset-title' => 'সংশোধনসমূহ পুনৰুদ্ধাৰ কৰক',
 'undeleteextrahelp' => "পৃষ্ঠাখনৰ সম্পূৰ্ণ ইতিহাস পুনৰুদ্ধাৰ কৰিবলৈ সকলো ঘৰ টিক দিয়ক ৰাখক আৰু '''''{{int:undeletebtn}}'''''ত ক্লিক কৰক ।
 নিৰ্বাচিত পুনৰুদ্ধাৰ কৰিবলৈ বাছি লোৱা সংশোধনসমূহৰ কাষত থকা ঘৰবোৰত টিক দিয়ক আৰু '''''{{int:undeletebtn}}'''''ত ক্লিক কৰক ।",
 'undeleterevisions' => '$1 {{PLURAL:$1|টা সংশোধন|টা সংশোধন}} আৰ্কাইভত আছে',
-'undeletehistory' => 'যদি à¦\86পà§\81নি à¦ªà§\83ষà§\8dঠাà¦\96ন পুনৰুদ্ধাৰ কৰে, তাৰ সকলো সংশোধন ইতিহাসলৈ ঘূৰি যাব ।
+'undeletehistory' => 'যদি à¦\86পà§\81নি à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b পুনৰুদ্ধাৰ কৰে, তাৰ সকলো সংশোধন ইতিহাসলৈ ঘূৰি যাব ।
 যদি বিলোপৰ পিছত একে নামৰ নতুন পৃষ্ঠা সৃষ্টি কৰা হৈছে, তেন্তে পুনৰুদ্ধাৰ হোৱা সংশোধনসমূহ পূৰ্বৰ ইতিহাসত দেখা যাব ।',
 'undeleterevdel' => 'শীৰ্ষ পৃষ্ঠা বা ফাইল সংশোধন আংশিকভাৱে বিলোপ হোৱাৰ সম্ভাৱনা থাকিলে বিলোপ বাতিল কৰা নহ’ব ।
 তেনে ক্ষেত্ৰত আপুনি নতুনকৈ বিলোপ কৰা সংশোধন অনিৰ্বাচিত আৰু অগোপন কৰক ।',
-'undeletehistorynoadmin' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন বিলোপ কৰা হৈছে ।
+'undeletehistorynoadmin' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b বিলোপ কৰা হৈছে ।
 অৱলুপিৰ কাৰণ তলত দিয়া হ’ল । অৱলুপ্তিৰ আগতে যিজন সদস্যই ইয়াৰ সম্পাদনা কৰিছিল তেওঁৰো সবিশেষ তলত দিয়া হ’ল ।
 বিলোপ কৰা সংশোধনসমূহৰ প্ৰকৃত পাঠ কেৱল প্ৰশাসকেহে দেখা পাব ।',
 'undelete-revision' => '$3-এ কৰা $1ৰ সংশোধন ($4 তাৰিখ, $5 সময়ৰ) বিলোপ কৰা হৈছে:',
@@ -2740,7 +2739,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 
 # Move page
 'move-page' => '$1 স্থানান্তৰ কৰক',
-'move-page-legend' => 'পà§\83ষà§\8dঠাà¦\96ন স্থানান্তৰ কৰক',
+'move-page-legend' => 'পà§\83ষà§\8dঠাà¦\9fà§\8b স্থানান্তৰ কৰক',
 'movepagetext' => "তলৰ প্ৰপত্ৰ ব্যৱহাৰ কৰিলে এই পৃষ্ঠাৰ শিৰোনাম সলনি হ'ব, লগতে সমগ্ৰ ইতিহাস নতুন শিৰোনামলৈ স্থানান্তৰ কৰা হ'ব।
 পুৰণা শিৰোনামটো নতুন শিৰোনামালৈ এটা পুনৰ্নিৰ্দেশনা হৈ ৰ'ব।
 পুৰণা শিৰোনামলৈ পোনাৱা পুনৰ্নিৰ্দেশনাসমূহ আপুনি স্বয়ংক্ৰিয়ভাৱে আপডে'ট কৰিব পাৰিব।
@@ -2777,8 +2776,8 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'cant-move-user-page' => 'সদস্য পৃষ্ঠা স্থানান্তৰ কৰিবলৈ আপুনাৰ অনুমতি নাই (উপ-পৃষ্ঠাৰ বাহিৰে)।',
 'cant-move-to-user-page' => 'সদস্যপৃষ্ঠালৈ কোনো পৃষ্ঠা স্থানান্তৰ কৰাৰ অনুমতি আপোনাৰ নাই (কেৱল সদস্য উপপৃষ্ঠাৰ বাহিৰে ) ।',
 'newtitle' => 'নতুন শিৰোনামালৈ:',
-'move-watch' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন লক্ষ্য কৰক',
-'movepagebtn' => 'পà§\83ষà§\8dঠাà¦\96ন স্থানান্তৰ কৰক',
+'move-watch' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b লক্ষ্য কৰক',
+'movepagebtn' => 'পà§\83ষà§\8dঠাà¦\9fà§\8b স্থানান্তৰ কৰক',
 'pagemovedsub' => 'স্থানান্তৰ সফল হ’ল',
 'movepage-moved' => "'''“$1”ক “$2”লৈ স্থানান্তৰ কৰা হৈছে'''",
 'movepage-moved-redirect' => 'এটি পুনৰ্নিদেশনা সৃষ্টি কৰা হৈছে',
@@ -2790,13 +2789,13 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'move-subpages' => 'উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1লৈ)',
 'move-talk-subpages' => 'আলোচনা পৃষ্ঠাৰ উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1-লৈ)',
 'movepage-page-exists' => '$1 পৃষ্ঠাখন ইতিমধ্যেই আছে আৰু তাৰ ওপৰত স্বয়ংক্ৰিয়ভাৱে লিখিব নোৱাৰি ।',
-'movepage-page-moved' => "$1 à¦ªà§\83ষà§\8dঠাà¦\96ন $2লৈ স্থানান্তৰ কৰা হ'ল।",
-'movepage-page-unmoved' => '$1 à¦ªà§\83ষà§\8dঠাà¦\96ন $2লৈ স্থানান্তৰ কৰা সম্ভৱ নহয়',
+'movepage-page-moved' => "$1 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b $2লৈ স্থানান্তৰ কৰা হ'ল।",
+'movepage-page-unmoved' => '$1 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b $2লৈ স্থানান্তৰ কৰা সম্ভৱ নহয়',
 'movepage-max-pages' => 'সৰ্বোচ্চ $1 {{PLURAL:$1|পৃষ্ঠা|পৃষ্ঠা}} স্থানান্তৰ কৰা হৈছে আৰু ইয়াতকৈ অধিক স্বয়ংক্ৰিয়ভাৱে স্থানান্তৰ নহ’ব ।',
 'movelogpage' => 'স্থানান্তৰন অভিলেখ',
 'movelogpagetext' => 'সকলো পৃষ্ঠা স্থানান্তৰৰ এখন তালিকা তলত দিয়া হৈছে ।',
-'movesubpage' => '{{PLURAL:$1|à¦\96ন à¦\89পপà§\83ষà§\8dঠা|à¦\96ন উপপৃষ্ঠা}}',
-'movesubpagetext' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96নৰ à¦¤à¦²à¦¤ à¦¦à¦¿à¦¯à¦¼à¦¾ {{PLURAL:$1|à¦\96ন à¦\89পপà§\83ষà§\8dঠা|à¦\96ন উপপৃষ্ঠা}} আছে ।',
+'movesubpage' => '{{PLURAL:$1|à¦\9fা উপপৃষ্ঠা}}',
+'movesubpagetext' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96নৰ à¦¤à¦²à¦¤ à¦¦à¦¿à¦¯à¦¼à¦¾ {{PLURAL:$1|à¦\9fা উপপৃষ্ঠা}} আছে ।',
 'movenosubpage' => 'এই পৃষ্ঠাৰ কোনো উপপৃষ্ঠা নাই ।',
 'movereason' => 'কাৰণ:',
 'revertmove' => 'আগৰ অৱস্থালৈ ঘূৰি যাওক',
@@ -2804,14 +2803,14 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'delete_and_move_text' => '== বিলোপন আৱশ্যক ==
 লক্ষ্য পৃষ্ঠা "[[:$1]]" ইতিমেধ্যে আছেই ।
 আপুনি স্থানান্তৰ কৰিবলৈ এইখন বিলোপ কৰিব খুজিছে নেকি ?',
-'delete_and_move_confirm' => 'হয়, à¦ªà§\83ষà§\8dঠাà¦\96ন বিলোপ কৰক',
+'delete_and_move_confirm' => 'হয়, à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b বিলোপ কৰক',
 'delete_and_move_reason' => '"[[$1]]"ৰ পৰা স্থানান্তৰৰ স্বাৰ্থত বিলোপ কৰা হৈছে',
 'selfmove' => 'উৎস আৰু লক্ষ্য শিৰোনামা একেই;
 কোনো পৃষ্ঠাক একেখন পৃষ্ঠালৈ স্থানান্তৰ কৰিব নোৱাৰি ।',
 'immobile-source-namespace' => '"$1" নামস্থানত পৃষ্ঠা স্থানান্তৰ কৰিব নোৱাৰি',
 'immobile-target-namespace' => '"$1" নামস্থানলৈ পৃষ্ঠা স্থানান্তৰ কৰিব নোৱাৰি',
 'immobile-target-namespace-iw' => 'পৃষ্ঠা স্থানান্তৰৰ বাবে আন্তঃৱিকি সংযোগ বৈধ গন্তব্যস্থল নহয় ।',
-'immobile-source-page' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন স্থানান্তৰ কৰিব নোৱাৰি ।',
+'immobile-source-page' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b স্থানান্তৰ কৰিব নোৱাৰি ।',
 'immobile-target-page' => 'গন্তব্য শিৰোনামালৈ স্থানান্তৰ কৰিব পৰা নাযাব ।',
 'bad-target-model' => 'কাংক্ষিত লক্ষ্যস্থানৰ সমলৰ মডেলৰ সতে মিলা নাই।   $1ৰ পৰা $2লৈ সলনি কৰিব পৰা নগ’ল।',
 'imagenocrossnamespace' => 'অনা-ফাইল নামস্থানলৈ ফাইল স্থানান্তৰ কৰিব নোৱাৰি',
@@ -2929,10 +2928,10 @@ $2',
 'import-token-mismatch' => 'ছেছন তথ্য হেৰাই গৈছে ।
 অনুগ্ৰহ কৰি পুনৰ চেষ্টা কৰক ।',
 'import-invalid-interwiki' => 'নিৰ্ধাৰিত ৱিকিৰ পৰা আমদানি কৰিব নোৱাৰি ।',
-'import-error-edit' => '"$1" à¦ªà§\83ষà§\8dঠাà¦\96ন আমদানি কৰা নহ\'ল কাৰণ ইয়াক সম্পাদনা কৰিবলৈ আপোনাৰ অনুমতি নাই।',
-'import-error-create' => '"$1" à¦ªà§\83ষà§\8dঠাà¦\96ন আমদানি কৰা নহ\'ল কাৰণ ইয়াক সৃষ্টি কৰিবলৈ আপোনাৰ অনুমতি নাই।',
-'import-error-interwiki' => '"$1" à¦ªà§\83ষà§\8dঠাà¦\96ন আমদানি কৰা নহ\'ল কাৰণ ইয়াৰ নামটো বাহিৰা সংযোগৰ (আন্তঃৱিকি) বাবে সংৰক্ষিত।',
-'import-error-special' => '"$1" à¦ªà§\83ষà§\8dঠাà¦\96ন আমদানি কৰা নহ\'ল কাৰণ ই পৃষ্ঠা অনুমোদন নকৰা এটা বিশেষ নামস্থানৰ অন্তৰ্গত।',
+'import-error-edit' => '"$1" à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b আমদানি কৰা নহ\'ল কাৰণ ইয়াক সম্পাদনা কৰিবলৈ আপোনাৰ অনুমতি নাই।',
+'import-error-create' => '"$1" à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b আমদানি কৰা নহ\'ল কাৰণ ইয়াক সৃষ্টি কৰিবলৈ আপোনাৰ অনুমতি নাই।',
+'import-error-interwiki' => '"$1" à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b আমদানি কৰা নহ\'ল কাৰণ ইয়াৰ নামটো বাহিৰা সংযোগৰ (আন্তঃৱিকি) বাবে সংৰক্ষিত।',
+'import-error-special' => '"$1" à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b আমদানি কৰা নহ\'ল কাৰণ ই পৃষ্ঠা অনুমোদন নকৰা এটা বিশেষ নামস্থানৰ অন্তৰ্গত।',
 'import-error-invalid' => '"$1" পৃষ্ঠাখন আমদানি কৰা নহ\'ল কাৰণ ইয়াৰ নামটো অবৈধ।',
 'import-error-unserialize' => ' "$1" পৃষ্ঠাৰ $2 সংশোধনৰ ক্ৰম আঁতৰ কৰিব পৰা নগ\'ল। এই সংশোধনে $4 ক্ৰমৰ সমল মডেল $3 ব্যৱহাৰ কৰা বুলি জনোৱা হৈছিল।',
 'import-options-wrong' => 'ভুল {{PLURAL:$2|বিকল্প|বিকল্পসমূহ}}: <nowiki>$1</nowiki>',
@@ -2950,7 +2949,7 @@ $2',
 # JavaScriptTest
 'javascripttest' => 'জাভাস্ক্ৰিপ্ট পৰীক্ষা।',
 'javascripttest-title' => '$1 পৰীক্ষাসমূহ চলোৱা হৈছে',
-'javascripttest-pagetext-noframework' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\9cাভালিপি পৰীক্ষা চলোৱাৰ বাবে সংৰক্ষিত।',
+'javascripttest-pagetext-noframework' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦\9cাভাসà§\8dà¦\95à§\8dৰিপà§\8dà¦\9f পৰীক্ষা চলোৱাৰ বাবে সংৰক্ষিত।',
 'javascripttest-pagetext-unknownframework' => 'অজ্ঞাত সম্পৰীক্ষা ফ্ৰেমৱৰ্ক "$1"।',
 'javascripttest-pagetext-frameworks' => 'অনুগ্ৰহ কৰি তলৰ যিকোনো এটা সম্পৰীক্ষা ফ্ৰেমৱৰ্ক বাছনি কৰক: $1',
 'javascripttest-pagetext-skins' => 'পৰীক্ষা কৰিবলৈ আৱৰণ এখন বাছনি কৰক:',
@@ -2970,15 +2969,15 @@ $2',
 'tooltip-ca-talk' => 'সংশ্লিষ্ট প্ৰবন্ধ সম্পৰ্কীয় আলোচনা',
 'tooltip-ca-edit' => 'আপুনি এই পৃষ্ঠাটো সালসলনি কৰিব পাৰে, অনুগ্ৰহ কৰি সালসলনি সাচী থোৱাৰ আগতে খচৰা চাই লব',
 'tooltip-ca-addsection' => 'নতুন অনুচ্ছেদ আৰম্ভ কৰক',
-'tooltip-ca-viewsource' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন সুৰক্ষিত কৰা হৈছে, আপুনি ইয়াৰ উৎস চাব পাৰে।',
+'tooltip-ca-viewsource' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b সুৰক্ষিত কৰা হৈছে, আপুনি ইয়াৰ উৎস চাব পাৰে।',
 'tooltip-ca-history' => 'এই পৃষ্ঠাৰ যোৱা সংস্কৰণসমূহ',
-'tooltip-ca-protect' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন সুৰক্ষিত কৰক',
+'tooltip-ca-protect' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b সুৰক্ষিত কৰক',
 'tooltip-ca-unprotect' => 'এই পৃষ্ঠাৰ সুৰক্ষা সলনি কৰক',
-'tooltip-ca-delete' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন বিলোপ কৰক',
+'tooltip-ca-delete' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b বিলোপ কৰক',
 'tooltip-ca-undelete' => 'বিলোপ কৰাৰ আগেয়ে কৰা পৃষ্ঠাখনৰ সালসলনিসমূহ পুনঃসংস্থাপন কৰক',
-'tooltip-ca-move' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন স্থানান্তৰিত কৰক',
-'tooltip-ca-watch' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন আপোনাৰ লক্ষ্য-তালিকাত যোগ কৰক',
-'tooltip-ca-unwatch' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন আপোনাৰ লক্ষ্য-তালিকাৰ পৰা আঁতৰাওক',
+'tooltip-ca-move' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b স্থানান্তৰিত কৰক',
+'tooltip-ca-watch' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b আপোনাৰ লক্ষ্য-তালিকাত যোগ কৰক',
+'tooltip-ca-unwatch' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b আপোনাৰ লক্ষ্য-তালিকাৰ পৰা আঁতৰাওক',
 'tooltip-search' => '{{SITENAME}} -ত সন্ধানাৰ্থে',
 'tooltip-search-go' => 'যদি আছে, তেহে ঠিক সেই নামৰ পৃষ্ঠালৈ যাওক',
 'tooltip-search-fulltext' => 'এই পাঠ পৃষ্ঠাসমূহত বিচাৰক',
@@ -3002,7 +3001,7 @@ $2',
 'tooltip-t-permalink' => 'পৃষ্ঠাৰ এই সংস্কৰণৰ স্থায়ী সংযোগ',
 'tooltip-ca-nstab-main' => 'এই ৱিকিৰ সূচী চাওক',
 'tooltip-ca-nstab-user' => 'সভ্যৰ ব্যক্তিগত পৃষ্ঠালৈ',
-'tooltip-ca-nstab-media' => 'মিডিয়া à¦ªà§\83ষà§\8dঠাà¦\96ন চাওক',
+'tooltip-ca-nstab-media' => 'মিডিয়া à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b চাওক',
 'tooltip-ca-nstab-special' => 'এইটো এটা বিশেষ পৃষ্ঠা, আপুনি সম্পাদনা কৰিব নোৱাৰে',
 'tooltip-ca-nstab-project' => 'প্ৰকল্প পৃষ্ঠা চাওক',
 'tooltip-ca-nstab-image' => 'নথিৰ পৃষ্ঠা চাওক',
@@ -3015,10 +3014,10 @@ $2',
 'tooltip-preview' => 'আপুনি কৰা সালসলনিবোৰৰ খচৰা চাওক, অনুগ্ৰহ কৰি সালসলনি সাঁচি থোৱাৰ আগতে ব্যৱহাৰ কৰক!',
 'tooltip-diff' => 'ইয়াত আপুনি কৰা সালসলনিবোৰ দেখুৱাওক',
 'tooltip-compareselectedversions' => 'এই পৃষ্ঠাত নিৰ্বাচিত দুটা সংশোধনৰ মাজত পাৰ্থক্য দেখুৱাওক',
-'tooltip-watch' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন আপোনাৰ লক্ষ্য-তালিকাভুক্ত কৰক',
+'tooltip-watch' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b আপোনাৰ লক্ষ্য-তালিকাভুক্ত কৰক',
 'tooltip-watchlistedit-normal-submit' => 'শিৰোনামা আঁতৰাওক',
 'tooltip-watchlistedit-raw-submit' => 'লক্ষ্য-তালিকা আপডেট কৰক',
-'tooltip-recreate' => 'বিলà§\8bপ à¦\95ৰা à¦¸à¦¤à§\8dবà§\87à¦\93 à¦ªà§\83ষà§\8dঠাà¦\96ন পুনৰ সৃষ্টি কৰক',
+'tooltip-recreate' => 'বিলà§\8bপ à¦\95ৰা à¦¸à¦¤à§\8dবà§\87à¦\93 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b পুনৰ সৃষ্টি কৰক',
 'tooltip-upload' => "আপল'ড আৰম্ভ কৰক",
 'tooltip-rollback' => '"পূৰ্ববত" কৰিলে এটা ক্লিকত এই পৃষ্ঠাৰ শেষ অৱদানকাৰীৰ সম্পাদনা বাতিল কৰি ইয়াক পূৰ্বাৱস্থালৈ ঘূৰাই নিব।',
 'tooltip-undo' => '"বাতিল"এ এই সম্পাদনাক পূৰ্বাৱস্থালৈ ঘূৰাই নিব আৰু প্ৰাক্‌দৰ্শনৰ বাবে সম্পাদনাটো খুলিব। ই সম্পাদনা সাৰাংশত কাৰণ এটা লিখিবলৈ সুযোগ দিব।',
@@ -3032,7 +3031,7 @@ $2',
 'anonymous' => '{{SITENAME}}ৰ বেনামী {{PLURAL:$1|সদস্য|সদস্যসকল}}',
 'siteuser' => '{{SITENAME}} সদস্য $1',
 'anonuser' => '{{SITENAME}} বেনামী সদস্য $1',
-'lastmodifiedatby' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন শেষবাৰৰ কাৰণে $1 তাৰিখে $2 বজাত $3ৰ দ্বাৰা সলনি কৰা হৈছিল',
+'lastmodifiedatby' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b শেষবাৰৰ কাৰণে $1 তাৰিখে $2 বজাত $3ৰ দ্বাৰা সলনি কৰা হৈছিল',
 'othercontribs' => '$1ৰ কাৰ্যৰ ওপৰত ভিত্তি কৰি',
 'others' => 'অন্যান্য',
 'siteusers' => '{{SITENAME}} {{PLURAL:$2|সদস্য|সদস্যসমূহ}} $1',
@@ -3101,7 +3100,7 @@ $2',
 
 # Patrolling
 'markaspatrolleddiff' => 'নিৰীক্ষিত বুলি চিহ্নিত কৰক',
-'markaspatrolledtext' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন নিৰীক্ষিত বুলি চিহ্নিত কৰক',
+'markaspatrolledtext' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b নিৰীক্ষিত বুলি চিহ্নিত কৰক',
 'markedaspatrolled' => 'নিৰীক্ষিত বুলি চিহ্নিত কৰা হ’ল',
 'markedaspatrolledtext' => '[[:$1]] ৰ নিৰ্বাচিত সংশোধনীসমূহ নিৰীক্ষিত বুলি চিহ্নিত কৰা হৈছে ।',
 'rcpatroldisabled' => 'শেহতীয়া সালসলনিৰ নিৰীক্ষণ নিষ্ক্ৰিয় কৰা হৈছে',
@@ -3691,10 +3690,10 @@ $5
 'scarytranscludetoolong' => '[URL অত্যাধিক দীঘল]',
 
 # Delete conflict
-'deletedwhileediting' => "'''সতৰà§\8dà¦\95বাণà§\80''': à¦\86পà§\81নি à¦¸à¦®à§\8dপাদনা à¦\86ৰমà§\8dভ à¦\95ৰাৰ à¦ªà¦¿à¦\9bত à¦ªà§\83ষà§\8dঠাà¦\96ন বিলোপ কৰা হৈছে !",
-'confirmrecreate' => "à¦\86পà§\81নি à¦¸à¦®à§\8dপাদনা à¦\86ৰমà§\8dভ à¦\95ৰাৰ à¦ªà¦¿à¦\9bত à¦¸à¦¦à¦¸à§\8dয [[User:$1|$1]] ([[User talk:$1|à¦\86লà§\8bà¦\9aনা]])য়à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন বিলোপ কৰিছে, তাৰ কাৰণ:
+'deletedwhileediting' => "'''সতৰà§\8dà¦\95বাণà§\80''': à¦\86পà§\81নি à¦¸à¦®à§\8dপাদনা à¦\86ৰমà§\8dভ à¦\95ৰাৰ à¦ªà¦¾à¦\9bত à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b বিলোপ কৰা হৈছে !",
+'confirmrecreate' => "à¦\86পà§\81নি à¦¸à¦®à§\8dপাদনা à¦\86ৰমà§\8dভ à¦\95ৰাৰ à¦ªà¦¿à¦\9bত à¦¸à¦¦à¦¸à§\8dয [[User:$1|$1]] ([[User talk:$1|à¦\86লà§\8bà¦\9aনা]])য়à§\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b বিলোপ কৰিছে, তাৰ কাৰণ:
 : ''$2''
-à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন আকৌ সৃষ্টি কৰিব খোজাটো নিশ্চিত কৰক ।",
+à¦\86পà§\81নি à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b আকৌ সৃষ্টি কৰিব খোজাটো নিশ্চিত কৰক ।",
 'confirmrecreate-noreason' => 'আপুনি সম্পাদনা আৰম্ভ কৰাৰ পিছত সদস্য [[User:$1|$1]] ([[User talk:$1|আলোচনা]])য়ে পৃষ্ঠাখন বিলোপ কৰিছে । আপুনি এই পৃষ্ঠাখন আকৌ সৃষ্টি কৰিব খোজাটো অনুগ্ৰহ কৰি নিশ্চিত কৰক ।',
 'recreate' => 'পুনৰ সৃষ্টি কৰক',
 
@@ -3705,9 +3704,9 @@ $5
 
 # action=watch/unwatch
 'confirm-watch-button' => 'শুদ্ধ',
-'confirm-watch-top' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95াত à¦¯à§\8bà¦\97 à¦\95ৰà¦\95',
+'confirm-watch-top' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95াত à¦¯à§\8bà¦\97 à¦\95ৰিব?',
 'confirm-unwatch-button' => 'শুদ্ধ',
-'confirm-unwatch-top' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95াৰ à¦ªà§°à¦¾ à¦\86à¦\81তৰাà¦\93à¦\95',
+'confirm-unwatch-top' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95াৰ à¦ªà§°à¦¾ à¦\86à¦\81তৰাব?',
 
 # Multipage image navigation
 'imgmultipageprev' => '← পূৰ্বৱৰ্তী পৃষ্ঠা',
@@ -3732,7 +3731,7 @@ $5
 'table_pager_empty' => 'ফলাফল নাই',
 
 # Auto-summaries
-'autosumm-blank' => "পà§\83ষà§\8dঠাà¦\96ন খালী কৰা হ'ল",
+'autosumm-blank' => "পà§\83ষà§\8dঠাà¦\9fà§\8b খালী কৰা হ'ল",
 'autosumm-replace' => 'পৄষ্ঠাখনক "$1"ৰে সলনি কৰা হ\'ল',
 'autoredircomment' => "[[$1]]-ক পুনৰ্নিৰ্দেশ কৰা হ'ল",
 'autosumm-new' => '"$1" দি পৃষ্ঠা সৃষ্টি কৰা হ\'ল',
@@ -3939,7 +3938,7 @@ $5
 'sqlite-no-fts' => '$1 সম্পূৰ্ণ-পাঠ অনুসন্ধান সমৰ্থন অবিহনে',
 
 # New logging system
-'logentry-delete-delete' => " $3 পৃষ্ঠাখন $1ৰদ্বাৰা {{GENDER:$2|বিলোপ কৰা হ'ল}}",
+'logentry-delete-delete' => "$3 পৃষ্ঠাটো $1ৰদ্বাৰা {{GENDER:$2|বিলোপ কৰা হ'ল}}",
 'logentry-delete-restore' => "$3 পৃষ্ঠাখন $1 ৰদ্বাৰা {{GENDER:$2|পুনৰ্সংৰক্ষণ কৰা হ'ল}}",
 'logentry-delete-event' => '$3: $4 -ত {{PLURAL:$5|এটা লগ ঘটনা|$5 লগ ঘটনাসমূহ}} -ৰ $1 পৰিৱৰ্তন কৰা দৃশ্যমানতা',
 'logentry-delete-revision' => 'পৃষ্ঠা $3ত {{PLURAL:$5|এটা সংশোধন|$5 সংশোধনসমূহ}}ৰ দৃশ্যমানতা $1 {{GENDER:$2|য়ে সলালে}}: $4',
index fd3fff6..19fe6a6 100644 (file)
@@ -616,6 +616,9 @@ Por favor espera $1 enantes d'intentalo otra vuelta.",
 'suspicious-userlogout' => "La to solicitú de zarrar sesión refugose porque paez qu'unvióla un restolador frañíu o un proxy de caché.",
 'createacct-another-realname-tip' => "El nome real ye opcional.
 Si decide conseñalu, va usase p'atribuir el trabayu al usuariu.",
+'pt-login' => 'Entrar',
+'pt-createaccount' => 'Crear una cuenta',
+'pt-userlogout' => 'Salir',
 
 # Email sending
 'php-mail-error-unknown' => 'Fallu desconocíu na función mail() de PHP.',
@@ -624,8 +627,7 @@ Si decide conseñalu, va usase p'atribuir el trabayu al usuariu.",
 
 # Change password dialog
 'changepassword' => 'Camudar la clave',
-'resetpass_announce' => "Aniciasti sesión con un códigu provisional unviáu per corréu electrónicu.
-P'acabar d'aniciar sesión, tienes de configurar equí una contraseña nueva:",
+'resetpass_announce' => "P'acabar d'aniciar sesión, tien de definir equí una contraseña nueva.",
 'resetpass_text' => '<!-- Amestar testu equí -->',
 'resetpass_header' => 'Camudar la contraseña de la cuenta',
 'oldpassword' => 'Contraseña antigua:',
@@ -641,8 +643,13 @@ Por favor espera $1 enantes d'intentalo otra vuelta.",
 'resetpass-submit-cancel' => 'Encaboxar',
 'resetpass-wrong-oldpass' => 'Contraseña temporal o actual inválida.
 Seique yá camudaras correutamente la contraseña o que pidieras una nueva contraseña temporal.',
+'resetpass-recycled' => 'Por favor, cambie la so contraseña por otra distinta de la actual.',
+'resetpass-temp-emailed' => "Anició sesión con un códigu temporal unviáu per corréu electrónicu.
+Pa completar l'aniciu de sesión, tien de definir una nueva contraseña equí:",
 'resetpass-temp-password' => 'Contraseña temporal:',
 'resetpass-abort-generic' => "Una estensión encaboxó'l cambiu de la contraseña.",
+'resetpass-expired' => "La so contraseña caducó. Defina una nueva contraseña p'aniciar sesión.",
+'resetpass-expired-soft' => 'La so contraseña caducó y tien de reaniciala. Escueya una contraseña nueva o calque encaboxar pa reaniciala más sero.',
 
 # Special:PasswordReset
 'passwordreset' => 'Reaniciar contraseña',
@@ -1502,11 +1509,23 @@ Esta información sedrá pública.',
 'rcnotefrom' => "Abaxo tan los cambeos dende '''$2''' (s'amuesen fasta '''$1''').",
 'rclistfrom' => 'Amosar los nuevos cambios dende $1',
 'rcshowhideminor' => '$1 ediciones menores',
+'rcshowhideminor-show' => 'Amosar',
+'rcshowhideminor-hide' => 'Anubrir',
 'rcshowhidebots' => '$1 bots',
+'rcshowhidebots-show' => 'Amosar',
+'rcshowhidebots-hide' => 'Anubrir',
 'rcshowhideliu' => '$1 los usuarios rexistraos',
+'rcshowhideliu-show' => 'Amosar',
+'rcshowhideliu-hide' => 'Anubrir',
 'rcshowhideanons' => '$1 usuarios anónimos',
+'rcshowhideanons-show' => 'Amosar',
+'rcshowhideanons-hide' => 'Anubrir',
 'rcshowhidepatr' => '$1 ediciones supervisaes',
+'rcshowhidepatr-show' => 'Amosar',
+'rcshowhidepatr-hide' => 'Anubrir',
 'rcshowhidemine' => '$1 les mios ediciones',
+'rcshowhidemine-show' => 'Amosar',
+'rcshowhidemine-hide' => 'Anubrir',
 'rclinks' => 'Amosar los caberos $1 cambeos de los caberos $2 díes <br />$3',
 'diff' => 'dif',
 'hist' => 'hist',
@@ -1638,6 +1657,7 @@ Deberíes revisar el historial de desaniciu del ficheru enantes de xubilu otra v
 'php-uploaddisabledtext' => 'Les xubíes de ficheros tan desactivaes en PHP.
 Por favor, comprueba la configuración de file_uploads.',
 'uploadscripted' => 'Esti ficheru contién códigu HTML o scripts que se puen interpretar equivocadamente por un navegador.',
+'uploadinvalidxml' => "Nun pudo interpretase'l XML del ficheru cargáu.",
 'uploadvirus' => '¡El ficheru tien un virus!
 Detalles: $1',
 'uploadjava' => 'El ficheru ye un archivu ZIP que contién un ficheru .class de Java.
@@ -2009,6 +2029,7 @@ Les entraes <del>tachaes</del> tan resueltes.',
 'deadendpagestext' => 'Les páxines siguientes nun enllacien a páxina dala de {{SITENAME}}.',
 'protectedpages' => 'Páxines protexíes',
 'protectedpages-indef' => 'Namái les proteiciones permanentes',
+'protectedpages-summary' => 'Esta páxina llista les páxines esistentes que tan protexíes actualmente. Pa ver la llista de títulos que tienen torgada la creación, vea [[{{#special:ProtectedTitles}}]].',
 'protectedpages-cascade' => 'Namái proteiciones en cascada',
 'protectedpages-noredirect' => 'Anubrir redireiciones',
 'protectedpagesempty' => 'Nun hai páxines protexíes anguaño con estos parámetros.',
@@ -2021,6 +2042,7 @@ Les entraes <del>tachaes</del> tan resueltes.',
 'protectedpages-unknown-timestamp' => 'Desconocida',
 'protectedpages-unknown-performer' => 'Usuariu desconocíu',
 'protectedtitles' => 'Títulos protexíos',
+'protectedtitles-summary' => 'Esta páxina llista los títulos que tienen torgada la creación. Pa ver una llista de les páxines esistentes protexíes, vea [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'Nun hai títulos protexíos anguaño con estos parámetros.',
 'listusers' => "Llista d'usuarios",
 'listusers-editsonly' => 'Amosar namái usuarios con ediciones',
@@ -4016,6 +4038,4 @@ En realidá cuasi tolo qu'apaeza ente llaves dobles.",
 'expand_templates_generate_rawhtml' => 'Ver el HTML en bruto',
 'expand_templates_preview' => 'Vista previa',
 
-# Unknown messages
-'uploadinvalidxml' => "Nun pudo interpretase'l XML del ficheru cargáu.",
 );
index d3bc7b5..9252687 100644 (file)
@@ -18,7 +18,6 @@ $fallback = 'es';
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Sipita siqiraña',
-'tog-justify' => "Tanta amuyanak purapt'ayaña",
 'tog-hideminor' => 'Jichha jaqukipawina sullka askiptawix imantaña',
 'tog-hidepatrolled' => "Jichhnaki jaqukipawina askiptawix unch'ukita imantaña",
 'tog-newpageshidepatrolled' => "Machaqa uñstawix waruchatat uñstawix unch'ukita imantaña",
@@ -27,9 +26,7 @@ $messages = array(
 'tog-numberheadings' => 'Titulun chinu achuraña',
 'tog-showtoolbar' => 'Turkawit irnaqañ täta tisi uñachayaña (JavaScript munawiwa)',
 'tog-editondblclick' => 'Uñstawi turkayaña päsuxuqiña (JavaScript munawiwa)',
-'tog-editsection' => '[Turkaña] sipitampi tuqitaki turkawi luräña',
 'tog-editsectiononrightclick' => '(JavaScript munawiwa) titulxat tuqina kupi suxuqiñampi tuqitaki turkawi luräña',
-'tog-showtoc' => 'Waruchataw uñachayaña (kimsa tituljampi uñstawitaki)',
 'tog-rememberpassword' => "Akax jasanchirin imt'awija amtaña (for a maximum of $1 {{PLURAL:$1|day|days}})",
 'tog-watchcreations' => "Unch'ukit waruchatajana nayaxa uñstawix uñstayawajata yapxataña",
 'tog-watchdefault' => "Unch'ukit waruchatajana nayaxa uñstawix turkajata yapxataña",
@@ -38,7 +35,6 @@ $messages = array(
 'tog-minordefault' => 'Sullka askiptawpacha chimpuriña',
 'tog-previewontop' => 'Askiptawit llataxa nayraxa uñtawikar uñachayaña',
 'tog-previewonfirst' => 'Mayïri askiptawina uñtawikar uñachayaña',
-'tog-nocache' => "Uñstawita kachiñar jark'aña",
 'tog-enotifwatchlistpages' => "Nayaru chaski jalayiriña ukja unch'ukit waruchatana mäuñstawi turkañäna",
 'tog-enotifusertalkpages' => 'Nayaru chaski jalayiriña ukja tuqisiwit uñstawija turkañäna',
 'tog-enotifminoredits' => 'Nayaru chaski jalayiriña uñstawina sullka askiptawimpiraki',
index f6ea06f..628c8f3 100644 (file)
@@ -246,7 +246,6 @@ $messages = array(
 'vector-action-protect' => 'Mühafizə et',
 'vector-action-undelete' => 'Bərpa et',
 'vector-action-unprotect' => 'Mühafizəni kənarlaşdır',
-'vector-simplesearch-preference' => 'İnkişaf etmiş axtarma təkliflərini gətir (yalnız Vector görünüşü üçün)',
 'vector-view-create' => 'Yarat',
 'vector-view-edit' => 'Redaktə',
 'vector-view-history' => 'Tarixçəyə bax',
index cc4480b..a382b8d 100644 (file)
@@ -245,7 +245,6 @@ $messages = array(
 'vector-action-protect' => 'قورو',
 'vector-action-undelete' => 'سیلمگی قایتار',
 'vector-action-unprotect' => 'قوروماغی دَییشدیر',
-'vector-simplesearch-preference' => 'ساده‌لشدیریلمیش آختاریش چوبوغو (یالنیز Vector دَری‌سینده)',
 'vector-view-create' => 'یارات',
 'vector-view-edit' => 'دَییشدیر',
 'vector-view-history' => 'گئچمیشه باخ',
index ba84fc8..28ec8bb 100644 (file)
@@ -310,7 +310,6 @@ $messages = array(
 'vector-action-protect' => 'Һаҡларға',
 'vector-action-undelete' => 'Тергеҙергә',
 'vector-action-unprotect' => 'Һаҡлауҙы үҙгәртергә',
-'vector-simplesearch-preference' => 'Ябайлаштырылған эҙләү тәҡдимдәрен ҡулланырға ("Векторлы" күренеш өсөн генә)',
 'vector-view-create' => 'Яһау',
 'vector-view-edit' => 'Үҙгәртергә',
 'vector-view-history' => 'Тарихты ҡарау',
index 9df2e4d..15c9513 100644 (file)
@@ -208,7 +208,6 @@ $messages = array(
 'vector-action-protect' => 'Schitzn',
 'vector-action-undelete' => 'Wiederherstön',
 'vector-action-unprotect' => 'freigeem',
-'vector-simplesearch-preference' => 'Daweiterte Suachvurschläg aktivirn (netter Vector)',
 'vector-view-create' => 'Aufbaun',
 'vector-view-edit' => 'Werkln',
 'vector-view-history' => 'Gschicht oschaugn',
index 4d671d7..719816b 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Daniel Harahap
+ * @author John Vandenberg
  * @author Marvel manalu
  * @author Naval Scene
  * @author Stephensuleeman
@@ -23,7 +24,6 @@ $fallback = 'id';
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Ondolhon panait',
-'tog-justify' => 'Padasip paragrap',
 'tog-hideminor' => 'Tabunihon editing na metmet di parubaan na imbaru',
 'tog-hidepatrolled' => 'Bunihon panotaan na metmet di parubaan na imbaru',
 'tog-numberheadings' => 'Bahen nomor judul otomatis',
@@ -238,7 +238,7 @@ $messages = array(
 'nstab-mediawiki' => 'Tona',
 'nstab-template' => 'Templat',
 'nstab-help' => 'Alaman pangurupion',
-'nstab-category' => 'Hategori',
+'nstab-category' => 'Kategori',
 
 # General errors
 'error' => 'Hasesega',
@@ -438,7 +438,6 @@ Parubaan na binahenmu dang di simpan dope!",
 'recentchanges-label-minor' => 'Sada panotaan na metmet',
 'recentchanges-label-bot' => 'Panotaan on diulahon bot',
 'recentchanges-label-unpatrolled' => 'Panotaan on ndang dipamanat dope',
-'rcnote' => "Na di toru on ima {{PLURAL:$1|'''1'''|'''$1'''}} perubaan  di bagasan {{PLURAL:$2|'''1''' ari|'''$2''' ari}} na parpudi, olat ni $4 pukul $5.",
 'rclistfrom' => 'Patuduhon parubaan na imbaru mamungka sian $1',
 'rcshowhideminor' => '$1 panotaan na metmet',
 'rcshowhidebots' => '$1 bot',
index dac65f5..fd5b391 100644 (file)
@@ -260,7 +260,6 @@ $messages = array(
 'vector-action-protect' => 'Protektaran',
 'vector-action-undelete' => 'Bawion sa pagkapara',
 'vector-action-unprotect' => 'Ribayan an proteksyon',
-'vector-simplesearch-preference' => 'Paganahon an pinagyanong panukod sa paghahanap (Pansolong kublit sana)',
 'vector-view-create' => 'Magmukna',
 'vector-view-edit' => 'Liwatón',
 'vector-view-history' => 'Tanawon sa historiya',
@@ -641,6 +640,9 @@ Pakilaog sana tabi nin sarong tugmadong koreo o pabayae na mayong laman an surat
 'suspicious-userlogout' => 'An hinahagad mong magluwas pinagpundo nin huli ta ini gayod pinagpadara sa paagi nin sarong pasang kilyaw o proksing hilom.',
 'createacct-another-realname-tip' => 'An totoong pangaran opsyonal.
 Kun gustuhon mong itao ini, ini paggagamiton sa pagtatao nin pagkakabistohan kan paragamit para sa saindang mga kaggibohan.',
+'pt-login' => 'Maglaog',
+'pt-createaccount' => 'Magmukna nin panindog',
+'pt-userlogout' => 'Magluwas',
 
 # Email sending
 'php-mail-error-unknown' => 'Bakong bantog na kasalaan sa PHP mail() function.',
@@ -649,8 +651,7 @@ Kun gustuhon mong itao ini, ini paggagamiton sa pagtatao nin pagkakabistohan kan
 
 # Change password dialog
 'changepassword' => 'Ribayan an sekretong panlaog',
-'resetpass_announce' => 'Ika nakalaog na na igwang sarong temporaryong koda sa e-koreo.
-Tanganing tapuson an paglalaog, ika kaipong magkaag nin sarong baguhon na sekretong panlaog digdi:',
+'resetpass_announce' => 'Sa pagtapos kan paglalaog mo, ika kaipuhanan na magkaag nin sarong baguhong pasa-taramon.',
 'resetpass_text' => '<!-- Magdagdag nin teksto digdi -->',
 'resetpass_header' => 'Ribayan an panindog na sekretong panlaog',
 'oldpassword' => 'Dating sekretong panlaog:',
@@ -664,8 +665,12 @@ Tanganing tapuson an paglalaog, ika kaipong magkaag nin sarong baguhon na sekret
 'resetpass-submit-cancel' => 'I-kansela',
 'resetpass-wrong-oldpass' => 'Saláng temporaryo o presenteng sekretong panlaog.
 Matriumpo mo nang nailaog an sekretong panlaog o nakua an bàgong temporaryong sekretong panlaog.',
+'resetpass-recycled' => 'Tabi man pakibaguha an saimong pasa-taramon na magin sarong bagay na ibahon kesa sa ngunyan mong pasa-taramon.',
+'resetpass-temp-emailed' => 'Ika nakapaglaog na igwa nin sarong temporaryong koda na pinag-esurat saimo. Sa pagtapos kan paglalaog mo, ika kaipuhan na magkaag nin sarong baguhong pasa-taramon digde:',
 'resetpass-temp-password' => 'Temporaryong sekretong panlaog:',
 'resetpass-abort-generic' => 'Pagliwat kan sikretong panlaog ipinagpauntok kan sarong ekstensyon.',
+'resetpass-expired' => 'An saimong pasa-taramon nagpalso na. Tabi man pakikaag nin sarong baguhong pasa-taramon tanganing makalaog ka.',
+'resetpass-expired-soft' => 'An saimong pasa-taramon nagpalso na, asin kinakaipuhan na baguhan. Tabi man pakipili nin sarong baguhong pasa-taramon ngunyan, o i-klik an kanselaron sa pagbago kaini aro-atyan.',
 
 # Special:PasswordReset
 'passwordreset' => 'Pakibago kan sekretong panlaog',
index 0ac06c3..d9a3276 100644 (file)
@@ -253,7 +253,6 @@ $messages = array(
 'vector-action-protect' => 'Ахова',
 'vector-action-undelete' => 'Аднавіць',
 'vector-action-unprotect' => 'Змяніць ахову',
-'vector-simplesearch-preference' => 'Уключыць пашыраны пошук прапаноў (толькі для тэмы Vector)',
 'vector-view-create' => 'Стварыць',
 'vector-view-edit' => 'Правіць',
 'vector-view-history' => 'Паказаць гісторыю',
index 845512a..11927c1 100644 (file)
@@ -801,6 +801,9 @@ $2',
 'suspicious-userlogout' => 'Ваш запыт на выхад з сыстэмы быў адхілены, таму што выглядае, што ён быў дасланы пашкоджаным браўзэрам альбо кэшаваным проксі-сэрвэрам.',
 'createacct-another-realname-tip' => 'Сапраўднае імя паведамляць неабавязкова.
 Калі Вы яго пазначыце, яно будзе выкарыстоўвацца для пазначэньня Вашай працы.',
+'pt-login' => 'Увайсьці',
+'pt-createaccount' => 'Стварыць рахунак',
+'pt-userlogout' => 'Выйсьці',
 
 # Email sending
 'php-mail-error-unknown' => 'Узьнікла невядомая памылка ў функцыі PHP mail()',
@@ -809,8 +812,7 @@ $2',
 
 # Change password dialog
 'changepassword' => 'Зьмяніць пароль',
-'resetpass_announce' => 'Вы ўвайшлі з дапамогай часовага паролю, дасланага праз электронную пошту.
-Для завяршэньня ўваходу ў сыстэму Вы мусіце ўвесьці тут новы пароль:',
+'resetpass_announce' => 'Для завяршэньня ўваходу ў сыстэму Вы мусіце ўвесьці новы пароль.',
 'resetpass_header' => 'Зьмяніць пароль рахунку',
 'oldpassword' => 'Стары пароль:',
 'newpassword' => 'Новы пароль:',
@@ -825,8 +827,13 @@ $2',
 'resetpass-submit-cancel' => 'Скасаваць',
 'resetpass-wrong-oldpass' => 'Няслушны часовы альбо цяперашні пароль.
 Магчыма Вы ўжо пасьпяхова зьмянілі Ваш пароль альбо запыталі новы часовы пароль.',
+'resetpass-recycled' => 'Калі ласка, зьмяніце ваш пароль на нешта адрознае ад вашага цяперашняга паролю.',
+'resetpass-temp-emailed' => 'Вы ўвашлі з дапамогай часовага коду, які быў дасланы праз электронную пошту.
+Каб завершыць уваход, вы мусіце ўвесьці новы пароль:',
 'resetpass-temp-password' => 'Часовы пароль:',
 'resetpass-abort-generic' => 'Зьмяненьне паролю было скасаванае пашырэньнем.',
+'resetpass-expired' => 'Тэрмін дзеяньня вашага паролю скончыўся. Калі ласка, пазначце новы пароль для ўваходу ў сыстэму.',
+'resetpass-expired-soft' => 'Тэрмін дзеяньня вашага паролю скончыўся і ён патрабуе замены. Калі ласка, абярыце новы пароль цяпер або націсьніце «Скасаваць», каб зьмяніць яго пазьней.',
 
 # Special:PasswordReset
 'passwordreset' => 'Ачыстка паролю',
@@ -1804,6 +1811,7 @@ $1",
 'uploaddisabledtext' => 'Загрузка файлаў забароненая.',
 'php-uploaddisabledtext' => 'Загрузка файлаў была адключаная ў парамэтрах канфігурацыі PHP. Калі ласка, праверце значэньне парамэтра «file_uploads».',
 'uploadscripted' => 'Гэты файл утрымлівае HTML-код альбо скрыпт, які можа памылкова апрацоўвацца браўзэрам.',
+'uploadinvalidxml' => 'Не атрымалася прааналізаваць XML у загружаным файле.',
 'uploadvirus' => 'Файл утрымлівае вірус! Падрабязнасьці: $1',
 'uploadjava' => 'Файл зьяўляецца ZIP-архівам, які зьмяшчае .class-файл Java.
 Загрузка Java-файлаў забароненая ў мэтах бясьпекі.',
@@ -2172,6 +2180,7 @@ $1',
 'protectedpages-params' => 'Парамэтры абароны',
 'protectedpages-reason' => 'Прычына',
 'protectedpages-unknown-timestamp' => 'Невядома',
+'protectedpages-unknown-performer' => 'Невядомы ўдзельнік',
 'protectedtitles' => 'Забароненыя старонкі',
 'protectedtitlesempty' => 'Цяпер няма абароненых назваў з пазначанымі парамэтрамі.',
 'listusers' => 'Сьпіс удзельнікаў і ўдзельніц',
@@ -3885,9 +3894,9 @@ 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]].',
+'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' => 'Значэньне:',
@@ -4000,11 +4009,11 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'logentry-delete-delete' => '$1 {{GENDER:$2|выдаліў|выдаліла}} старонку $3',
 'logentry-delete-restore' => '$1 {{GENDER:$2|аднавіў|аднавіла}} старонку $3',
 'logentry-delete-event' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=падзеі ў журнале|падзеяў у журнале}} на $3: $4',
-'logentry-delete-revision' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=вэрсіі|вэрсіяў}} старонкі $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|вэрсіі|вэрсіяў}} старонкі $3: $4',
 'logentry-delete-event-legacy' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць падзеяў у журнале на $3',
 'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць вэрсіяў старонкі $3',
 'logentry-suppress-delete' => '$1 {{GENDER:$2|схаваў|схавала}} старонку $3',
-'logentry-suppress-event' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=падзеі ў журнале|падзеяў у журнале}} на $3: $4',
+'logentry-suppress-event' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|падзеі ў журнале|падзеяў у журнале}} на $3: $4',
 'logentry-suppress-revision' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=вэрсіі|вэрсіяў}} старонкі $3: $4',
 'logentry-suppress-event-legacy' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць падзеяў у журнале на $3',
 'logentry-suppress-revision-legacy' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніоа}} бачнасьць вэрсіяў старонкі $3',
@@ -4140,6 +4149,4 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'expand_templates_generate_xml' => 'Паказаць дрэва аналізу XML',
 'expand_templates_preview' => 'Папярэдні прагляд',
 
-# Unknown messages
-'uploadinvalidxml' => 'Не атрымалася прааналізаваць XML у загружаным файле.',
 );
index e8e3dec..051831d 100644 (file)
@@ -16,6 +16,7 @@
  * @author Kaganer
  * @author MegaAlex
  * @author Milicevic01
+ * @author Mitzev
  * @author Simona
  * @author Spiritia
  * @author Stanqo
@@ -404,7 +405,6 @@ $messages = array(
 'vector-action-protect' => 'Защита',
 'vector-action-undelete' => 'Възстановяване',
 'vector-action-unprotect' => 'Промяна на защитата',
-'vector-simplesearch-preference' => 'Включване на опростена лента за търсене (само за облика Vector)',
 'vector-view-create' => 'Създаване',
 'vector-view-edit' => 'Редактиране',
 'vector-view-history' => 'История',
@@ -634,6 +634,7 @@ $2',
 
 Администраторът, който го е заключил, е посочил следната причина: „$3“.',
 'exception-nologin-text' => 'За досъп до желаната страница или действие уикито изисква [[Special:Userlogin|влизане в системата]].',
+'exception-nologin-text-manual' => 'За достъп до избраното действие или страница е необходимо $1 в системата.',
 
 # Virus scanner
 'virus-badscanner' => "Лоша конфигурация: непознат скенер за вируси: ''$1''",
@@ -643,8 +644,7 @@ $2',
 # Login and logout pages
 'logouttext' => "'''Излязохте от системата.'''
 
-Можете да продължите да използвате {{SITENAME}} анонимно или да <span class='plainlinks'>[$1 влезете отново]</span> като друг потребител.
-Обърнете внимание, че някои страници все още ще се показват така, сякаш сте влезли, докато не изтриете кеш-паметта на браузъра.",
+Обърнете внимание, че някои страници все още ще се показват така, сякаш сте влезли, докато не изтриете кеша на браузъра.",
 'welcomeuser' => 'Здравейте, $1!',
 'welcomecreation-msg' => 'Вашата сметка беше създадена.
 Можете да промените [[Special:Preferences|настройките на {{SITENAME}}]] според предпочитанията си.',
@@ -660,6 +660,7 @@ $2',
 'createacct-yourpasswordagain' => 'Потвърждаване на паролата',
 'createacct-yourpasswordagain-ph' => 'Въвежда се паролата (повторно)',
 'remembermypassword' => 'Запомняне на паролата на този компютър (най-много за $1 {{PLURAL:$1|ден|дни}})',
+'userlogin-remembermypassword' => 'Запомняне',
 'userlogin-signwithsecure' => 'Използване на защитена връзка',
 'yourdomainname' => 'Домейн:',
 'password-change-forbidden' => 'Не можете да променяте пароли в това уики.',
@@ -692,6 +693,7 @@ $2',
 'createacct-another-join' => 'Попълване на информацията за новата сметка',
 'createacct-emailrequired' => 'Адрес за електронна поща',
 'createacct-emailoptional' => 'Адрес за електронна поща (незадължително)',
+'createacct-email-ph' => 'Въведете Вашия адрес за електронна поща',
 'createacct-another-email-ph' => 'Въвежда се електронна поща',
 'createaccountmail' => 'Използване на случайна временна парола, която се изпраща на електронната поща, посочена по-долу',
 'createacct-realname' => 'Истинско име (незадължително)',
@@ -768,6 +770,11 @@ $2',
 'login-abort-generic' => 'Влизането беше неуспешно - Прекратено',
 'loginlanguagelabel' => 'Език: $1',
 'suspicious-userlogout' => 'Заявката ви за излизане от системата беше отхвърлена, тъй като изглежда е била изпратена погрешка от браузъра или кеширащото прокси.',
+'createacct-another-realname-tip' => 'Истинското име е незадължително.
+В случай, че бъде избрабо да се попълни, ще бъде използвано за да му се приписват приносите в уикито.',
+'pt-login' => 'Влизане',
+'pt-createaccount' => 'Създаване на сметка',
+'pt-userlogout' => 'Излизане',
 
 # Email sending
 'php-mail-error-unknown' => 'Неизвестна грешка в mail() функцията на PHP',
@@ -775,7 +782,7 @@ $2',
 
 # Change password dialog
 'changepassword' => 'Смяна на парола',
-'resetpass_announce' => 'Ð\92лÑ\8fзоÑ\85Ñ\82е Ñ\81 Ð²Ñ\80еменен ÐºÐ¾Ð´, Ð¿Ð¾Ð»Ñ\83Ñ\87ен Ð¿Ð¾ ÐµÐ»ÐµÐºÑ\82Ñ\80оннаÑ\82а Ð¿Ð¾Ñ\89а. Ð¡ÐµÐ³Ð° Ðµ Ð½Ñ\83жно Ð´Ð° Ñ\81и Ð¸Ð·Ð±ÐµÑ\80еÑ\82е Ð½Ð¾Ð²Ð° Ð¿Ð°Ñ\80ола:',
+'resetpass_announce' => 'Ð\97а Ð´Ð° Ñ\81е Ð·Ð°Ð²Ñ\8aÑ\80Ñ\88и Ð¿Ñ\80оÑ\86еÑ\81а Ð½Ð° Ð²Ð»Ð¸Ð·Ð°Ð½Ðµ, Ð½ÐµÐ¾Ð±Ñ\85одимо Ðµ Ð´Ð° Ñ\81е Ð¸Ð·Ð±ÐµÑ\80е Ð½Ð¾Ð²Ð° Ð¿Ð°Ñ\80ола.',
 'resetpass_text' => '<!-- Тук добавете текст -->',
 'resetpass_header' => 'Промяна на парола',
 'oldpassword' => 'Стара парола:',
@@ -1582,11 +1589,23 @@ $1",
 'rcnotefrom' => 'Дадени са промените от <strong>$2</strong> (до <strong>$1</strong> показани).',
 'rclistfrom' => 'Показване на промени, като се започва от $1.',
 'rcshowhideminor' => '$1 на малки промени',
+'rcshowhideminor-show' => 'Показване',
+'rcshowhideminor-hide' => 'Скриване',
 'rcshowhidebots' => '$1 на ботове',
+'rcshowhidebots-show' => 'Показване',
+'rcshowhidebots-hide' => 'Скриване',
 'rcshowhideliu' => '$1 на регистрирани потребители',
+'rcshowhideliu-show' => 'Показване',
+'rcshowhideliu-hide' => 'Скриване',
 'rcshowhideanons' => '$1 на анонимни потребители',
+'rcshowhideanons-show' => 'Показване',
+'rcshowhideanons-hide' => 'Скриване',
 'rcshowhidepatr' => '$1 на проверени редакции',
+'rcshowhidepatr-show' => 'Показване',
+'rcshowhidepatr-hide' => 'Скриване',
 'rcshowhidemine' => '$1 на моите приноси',
+'rcshowhidemine-show' => 'Показване',
+'rcshowhidemine-hide' => 'Скриване',
 'rclinks' => 'Показване на последните $1 промени за последните $2 дни<br />$3',
 'diff' => 'разл',
 'hist' => 'ист',
@@ -1707,6 +1726,7 @@ $1",
 'uploaddisabledtext' => 'Качването на файлове е забранено.',
 'php-uploaddisabledtext' => 'Качванията на файлове са спрени през PHP. Проверете настройката file_uploads.',
 'uploadscripted' => 'Файлът съдържа HTML или скриптов код, който може да бъде погрешно  интерпретиран от браузъра.',
+'uploadscriptednamespace' => 'Този SVG файл съдържа неправилно пространство на имената " $1 "',
 'uploadvirus' => 'Файлът съдържа вирус! Подробности: $1',
 'uploadjava' => 'Файлът е ZIP файл, който съдържа Java .class файл.
 Качването на Java файлове не е позволено, тъй като могат да причинят заобикаляне на ограниченията за сигурност.',
@@ -2007,6 +2027,7 @@ $1',
 'protectedpages-indef' => 'Само безсрочни защити',
 'protectedpages-cascade' => 'Само каскадни защити',
 'protectedpagesempty' => 'В момента няма защитени страници с тези параметри.',
+'protectedpages-reason' => 'Причина',
 'protectedtitles' => 'Защитени заглавия',
 'protectedtitlesempty' => 'В момента няма заглавия, защитени с тези параметри.',
 'listusers' => 'Списък на потребителите',
@@ -2433,6 +2454,7 @@ $1',
 'sp-contributions-search' => 'Търсене на приноси',
 'sp-contributions-username' => 'IP-адрес или потребителско име:',
 'sp-contributions-toponly' => 'Показване само на последните редакции',
+'sp-contributions-newonly' => 'Показване само на редакции свързани с началното създаване на страницата.',
 'sp-contributions-submit' => 'Търсене',
 
 # What links here
@@ -2715,6 +2737,7 @@ $1',
 'allmessages-prefix' => 'Филтриране по представка:',
 'allmessages-language' => 'Език:',
 'allmessages-filter-submit' => 'Отваряне',
+'allmessages-filter-translate' => 'Превеждане',
 
 # Thumbnails
 'thumbnail-more' => 'Увеличаване',
@@ -3573,7 +3596,13 @@ $5
 'version-hook-name' => 'Име на куката',
 'version-hook-subscribedby' => 'Ползвана от',
 'version-version' => '(Версия $1)',
-'version-license' => 'Лиценз',
+'version-license' => 'Лиценз на МедияУики',
+'version-ext-license' => 'Лиценз',
+'version-ext-colheader-version' => 'Версия',
+'version-ext-colheader-license' => 'Лиценз',
+'version-ext-colheader-description' => 'Описание',
+'version-ext-colheader-credits' => 'Автори',
+'version-license-title' => 'Лиценз за $1',
 'version-poweredby-credits' => "Това уики се задвиждва от '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'други',
 'version-poweredby-translators' => 'преводачи в translatewiki.net',
index bdaac16..ba61182 100644 (file)
@@ -209,7 +209,6 @@ $messages = array(
 'vector-action-protect' => 'संरक्षित करीं',
 'vector-action-undelete' => 'मत मिटाईं',
 'vector-action-unprotect' => 'सुरक्षा बदलीं',
-'vector-simplesearch-preference' => 'सरलीकृत खोज पट्टी सक्षम करीं (केवल वेक्टर स्कीन)',
 'vector-view-create' => 'बनाईं',
 'vector-view-edit' => 'सम्पादन',
 'vector-view-history' => 'इतिहास देखीं',
index 91664e9..71f8d24 100644 (file)
@@ -293,7 +293,6 @@ $messages = array(
 'vector-action-protect' => 'Lindungi',
 'vector-action-undelete' => 'Pawalangan pahapusan',
 'vector-action-unprotect' => 'Palindungan',
-'vector-simplesearch-preference' => 'Kawa-akan saran panggagaian tingkat lanjut (Vector skin haja)',
 'vector-view-create' => 'Ulah',
 'vector-view-edit' => 'Babak',
 'vector-view-history' => 'Tiringi halam',
index b365b72..ac198f4 100644 (file)
@@ -613,7 +613,7 @@ $2',
 
 # Change password dialog
 'changepassword' => 'শব্দচাবি পরিবর্তন',
-'resetpass_announce' => 'à¦\86পন à¦\87-মà§\87à¦\87লà¦\95à§\83ত à¦¸à¦\82à¦\95à§\87ত à¦¦à§\8dবারা à¦²à¦\97-à¦\87ন à¦\86à¦\9bà§\87ন। à¦²à¦\97-à¦\87ন à¦ªà¦¦à§\8dধতি à¦¸à¦®à§\8dপà§\82রà§\8dণ à¦\95রতà§\87 à¦\86পনাà¦\95à§\87 à¦\85বশà§\8dযà¦\87 à¦\8fà¦\95à¦\9fি à¦¨à¦¤à§\81ন à¦¶à¦¬à§\8dদà¦\9aাবি à¦\97à§\8dরহণ à¦\95রতà§\87 à¦¹à¦¬à§\87:',
+'resetpass_announce' => 'লà¦\97à¦\87ন à¦\95রার à¦\9cনà§\8dয à¦\86পনাà¦\95à§\87 à¦\85বশà§\8dযà¦\87 à¦\8fনà¦\9fি à¦¨à¦¤à§\81ন à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦¨à¦¿à¦°à§\8dধারণ à¦\95রতà§\87 à¦¹à¦¬à§\87।',
 'resetpass_text' => '<!-- এখানে লেখা যোগ করুন -->',
 'resetpass_header' => 'শব্দচাবি পরিবর্তন করো',
 'oldpassword' => 'পুরনো শব্দচাবি',
@@ -628,8 +628,13 @@ $2',
 'resetpass-submit-cancel' => 'বাতিল',
 'resetpass-wrong-oldpass' => 'ভুল অস্থায়ী অথবা বর্তমান শব্দচাবি।
 সম্ভবতঃ আপনি ইতোমধ্যেই সফলভাবে আপনার শব্দচাবিটি পরিবর্তন করেছেন অথবা একটি নতুন অস্থায়ী শব্দচাবির জন্য অনুরোধ করেছেন।',
+'resetpass-recycled' => 'অনুগ্রহ করে বর্তমানে ব্যবহার করছেন এমন পাসওয়ার্ডের পরিবর্তে নতুন একটি পাসওয়ার্ড নির্ধারণ করুন।',
+'resetpass-temp-emailed' => 'সাময়িকভাবে ব্যবহার করার কোড দিয়ে আপনি লগইন করেছেন।
+লগইন করার জন্য আপনাকে অবশ্যই একটি নতুন পাসওয়ার্ড নির্ধারন করতে হবে:',
 'resetpass-temp-password' => 'অস্থায়ী শব্দচাবি:',
 'resetpass-abort-generic' => 'শব্দচাবি পরিবর্তন একটি এক্সটেনশনের কারণে স্থগিত করা হয়েছে।',
+'resetpass-expired' => 'আপনার পাসওয়ার্ডের মেয়াদ উত্তীর্ণ হয়েছে। অনুগ্রহ করে নতুন পাসওয়ার্ড নির্ধারণ করুন।',
+'resetpass-expired-soft' => 'আপনার পাসওয়ার্ড মেয়াদ উত্তীর্ণ হয়েছে, এবং আপনাকে একটি নতুন পাসওয়ার্ড নির্ধারণ করতে হবে। অনুগ্রহ করে এখনই একটি নতুন পাসওয়ার্ড নির্ধারণ করুন অথবা পরে পরিবর্তন করতে চাইলে বাতিল বাটনে ক্লিক করুন।',
 
 # Special:PasswordReset
 'passwordreset' => 'শব্দচাবি রিসেট',
@@ -894,6 +899,7 @@ $1 নিষেধাজ্ঞা আরোপ করেছেন। নিষ
 'editwarning-warning' => 'এই পাতাটি ত্যাগ করলে আপনার আপনার করা পরিবর্তনগুলো হারিয়ে যেতে পারে।
 আপনি যদি লগইন করা থাকেন, আপনি এই সতর্কীকরণ বার্তাটি আপনার পছন্দের "সম্পাদনা" অনুচ্ছেদ থেকে নিস্ক্রিয় করতে পারেন।',
 'editpage-notsupportedcontentformat-title' => 'উল্লেখিত পদ্ধতি সমর্থনযোগ্য নয়।',
+'editpage-notsupportedcontentformat-text' => '$1 লেখার ফরম্যাট, $2 কন্টেন্ট মডেলের উপযোগী নয়।',
 
 # Content models
 'content-model-wikitext' => 'উইকিটেক্সট',
@@ -927,6 +933,7 @@ $1 নিষেধাজ্ঞা আরোপ করেছেন। নিষ
 'undo-success' => 'সম্পাদনাটি বাতিল করা যাবে। অনুগ্রহ করে নিচের তুলনাটি পরীক্ষা করে দেখুন ও নিশ্চিত করুন যে এটাই আপনি করতে চান, এবং তারপর নিচের সম্পাদনাগুলি সংরক্ষণ করে সম্পাদনাটির বাতিল প্রক্রিয়া সমাপ্ত করুন।',
 'undo-failure' => 'এ সম্পাদনা মধ্যবর্তী সম্পাদনাসমূহের কারণে পূর্বাবস্থায় ফিরিয়ে নেওয়া যাবে না।',
 'undo-norev' => 'সম্পাদনাটি বাতিল করা যাচ্ছেনা কারণ এটি আর নেই বা মুছে ফেলা হয়েছে।',
+'undo-nochange' => 'সম্পাদনাটি পূর্বেই বাতিল করা হয়েছে।',
 'undo-summary' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|আলাপ]])-এর সম্পাদিত $1 নম্বর সংশোধনটি বাতিল করা হয়েছে',
 'undo-summary-username-hidden' => 'একজন লুকানো ব্যবহারকারী $1 রিভিশন পুনরায় ফিরিয়ে এনেছেন',
 
index 2d95199..592e6bd 100644 (file)
@@ -195,7 +195,6 @@ $messages = array(
 'vector-action-protect' => 'লুকর',
 'vector-action-undelete' => 'নাপুসি',
 'vector-action-unprotect' => 'লুকরানিহান সিলকর',
-'vector-simplesearch-preference' => 'বিসারানির কা পরামর্শ থা করেই (হুদ্দা ভেক্টর স্কিনর কা)',
 'vector-view-create' => 'হঙকরিক',
 'vector-view-edit' => 'পতানি',
 'vector-view-history' => 'ইতিহাস চেইক',
index 16ef6ec..a015772 100644 (file)
@@ -22,16 +22,13 @@ $rtl = true;
 $messages = array(
 # User preference toggles
 'tog-underline' => 'لینکهای خط به زیر',
-'tog-justify' => 'فاصله نهادن سی پاراگرافها',
 'tog-hideminor' => 'من ته نبیدن تغییرات کوچیک',
 'tog-extendwatchlist' => 'گپ کردن لیستهای من ته سی دیدن همه تغییراتی که ابوه',
 'tog-usenewrc' => 'گپ کردن تغییرات آخری - جاوااسکریپت',
 'tog-numberheadings' => 'شماره وندن خودکار سی سرخط ها',
 'tog-showtoolbar' => 'نشو دادن تغییرات  تولبار  یا   جای نشودادن ابزارها- جاوااسکریپت',
 'tog-editondblclick' => 'اصلاح صفحات با دوبار کلیک - جاوااسکریپت',
-'tog-editsection' => 'امکان اصلاح یه قسمت زه راه لینکها',
 'tog-editsectiononrightclick' => 'امکان اصلاح یه قسمت زه راه راست کلیک کردن رو عنوان  اوقسمت- جاوااسکریپت',
-'tog-showtoc' => 'نشودادن فهرست محتوا سی صفحاتی که بیشتر زه سه سرخط دارن',
 'tog-rememberpassword' => 'به حافظه کامپیوتر دادن نحوه ورودی خوم (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'اضاف کردن اوصفحاتی که خوم درست کردم به فهرست نمایشی',
 'tog-watchdefault' => 'اضاف کردن اوصفحاتی که خوم اصلاح کردم به فهرست نمایشی',
@@ -40,7 +37,6 @@ $messages = array(
 'tog-minordefault' => 'علامت نهادن به اصلاحات ناقص',
 'tog-previewontop' => 'نشودادن پیش نمایش قبل از یوکه جعبه یا کادر اصلاح بوه',
 'tog-previewonfirst' => 'نشو دادن پیش نمایش  دراصلاح اول',
-'tog-nocache' => 'ناتوان کردن صفحه  درحال کچ',
 'tog-enotifwatchlistpages' => 'امیل به مو وقتی که  صفحه ای که منه فهرست نمایش مونه تغییر کرد',
 'tog-enotifusertalkpages' => 'امیل به مو وقتی که صفحه گفتگوی مو تغییر کرد',
 'tog-enotifminoredits' => 'امیل به مو سی صفحات ناقص اصلاح شده',
@@ -386,7 +382,6 @@ $1',
 'lineno' => 'سطر $1:',
 'compareselectedversions' => 'مقایسه نسخه‌های انتخاب‌ وابیده',
 'editundo' => 'لغو اصلاح آخر',
-'diff-multi' => '({{PLURAL:$1|یه اصلاح میانی|$1 اصلاحات میانی}} نشو داده نوابیده.)',
 
 # Search results
 'prevn' => 'قبلی {{PLURAL:$1|$1}}',
@@ -408,7 +403,6 @@ $1',
 'nchanges' => '$1 {{PLURAL:$1|تغییر|تغییرات}}',
 'recentchanges' => 'تغییرات اخیر',
 'recentchanges-feed-description' => 'ردیابی آخرین تغییرات  ویکی در ای خورد',
-'rcnote' => "در زیر {{PLURAL:$1|'''۱''' تغییر|آخرین '''$1''' تغییر}} در آخرین {{PLURAL:$2|روز|'''$2''' روز}} را، تا $5، $4 ابینین.",
 'rcnotefrom' => 'در زیر تغییرات زه تاریخ <b>$2</b> آمده‌اند (تا <b>$1</b> مورد نشو داده ابوه).',
 'rclistfrom' => 'نشودادن تغییرات تازه با شروع زه $1',
 'rcshowhideminor' => 'اصلاحات کوچیک $1',
index 8c5cfcc..80d1f47 100644 (file)
@@ -335,7 +335,6 @@ Ná radbadal ák deskáne atíko matano.",
 'recentchanges-label-newpage' => 'Dá radbadal aŧ panna sená biná mass',
 'recentchanges-label-minor' => 'Dá cunko radbadal as e',
 'recentchanges-label-bot' => 'Dá xudkár asená dú án maroko radbadal as e',
-'rcnote' => "Şefko {{PLURAL:$1|'''1''' radbadal e|guđđíko '''$1''' radbadal áko}}, gidrengoká {{PLURAL:$2|de aŧí|'''$2''' de teŧí}}, $5, $4 ná hisáb aŧ.",
 'rcnotefrom' => "Şefko raddobadal ák '''$2''' án maroko ('''$1''' iskán páş o)",
 'rclistfrom' => '$1 án púskuná radbadal áke nişán et',
 'rcshowhideminor' => 'Cunká radbadal áte $1',
index e14b5f5..795df35 100644 (file)
@@ -445,7 +445,6 @@ $messages = array(
 'vector-action-protect' => 'Zaštiti',
 'vector-action-undelete' => 'Vrati obrisano',
 'vector-action-unprotect' => 'Promijeni zaštitu',
-'vector-simplesearch-preference' => 'Omogući pojednostavljenu traku pretrage (samo vektorski izgled)',
 'vector-view-create' => 'Napravi',
 'vector-view-edit' => 'Uredi',
 'vector-view-history' => 'Pregled historije',
index 536d199..4217418 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Amire80
  * @author Bjargal
+ * @author Elvonudinium
  * @author Korol Bumi
  * @author Soul Train
  * @author Губин Михаил
@@ -78,8 +79,7 @@ $specialPageAliases = array(
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Холбооһо доогуурнь зураха:',
-'tog-justify' => 'Мүр тэгшэлхэ',
-'tog-watchcreations' => 'Минии үүсхэһэн хуудаһа болон ашаалһан файлыем хинаха жагсаалтада оруула',
+'tog-watchcreations' => 'Минии үүдхэһэн хуудаһа болон ашаалһан файлыем хинаха жагсаалтада оруула',
 'tog-watchdefault' => 'Минии заһаһан хуудаһа болон файлыем хинаха жагсаалтада оруула',
 'tog-watchmoves' => 'Минии зөөһэн хуудаһа болон файлыем хинаха жагсаалтада оруула',
 'tog-watchdeletion' => 'Минии усадхаһан хуудаһа болон файлыем хинаха жагсаалтада оруула',
@@ -87,6 +87,9 @@ $messages = array(
 'tog-previewontop' => 'Уридшалан харахые заһабарилха талбарай урда үзүүлэ',
 'tog-previewonfirst' => 'Уридшалан харахые эхилжэ заһаха үедэ үзүүлэ',
 
+'underline-always' => 'хододоол',
+'underline-never' => 'хэзээшье',
+
 # Dates
 'sunday' => 'Няма',
 'monday' => 'Дабаа',
@@ -138,32 +141,64 @@ $messages = array(
 'oct' => '10 һара',
 'nov' => '11 һара',
 'dec' => '12 һара',
+'january-date' => '1 һарын $1',
+'february-date' => '2 һарын $1',
+'march-date' => '3 һарын $1',
+'april-date' => '4 һарын $1',
+'may-date' => '5 һарын $1',
+'june-date' => '6 һарын $1',
+'july-date' => '7 һарын $1',
+'august-date' => '8 һарын $1',
+'september-date' => '9 һарын $1',
+'october-date' => '10 һарын $1',
+'november-date' => '11 һарын $1',
+'december-date' => '12 һарын $1',
 
 # Categories related messages
-'category_header' => 'Категори "$1" үгүүллүүд',
+'category_header' => '"$1" категориин үгүүлэлнүүд',
 
 'cancel' => 'Болихо',
-'mytalk' => 'Минии хэлэлсэл',
-'navigation' => 'Залуур',
+'moredotdotdot' => 'Үшөө...',
+'morenotlisted' => 'Энэ жагсаалта дүүргэһэнгүй.',
+'mypage' => 'Хуудаһан',
+'mytalk' => 'Хэлэлсэл',
+'anontalk' => 'Энэ IP адресаарнь хэлэхэ',
+'navigation' => 'Залуурдалга',
+'and' => '&#32;ба',
+
+# Cologne Blue skin
+'qbfind' => 'Хайха',
+'qbedit' => 'Заһабарилха',
 
 # Vector skin
-'vector-action-addsection' => 'Шэнэ хэсэг',
+'vector-action-addsection' => 'Һэдэб нэмэхэ',
 'vector-action-delete' => 'Усадхаха',
-'vector-view-create' => 'Үүсхэхэ',
-'vector-view-edit' => 'Заһаха',
-'vector-view-history' => 'ТүүÑ\85Ñ\8d',
+'vector-view-create' => 'Үүдхэхэ',
+'vector-view-edit' => 'Заһабарилха',
+'vector-view-history' => 'ТүүÑ\85Ñ\8bе Ñ\85аÑ\80аÑ\85а',
 'vector-view-view' => 'Уншаха',
+'vector-view-viewsource' => 'эшэ үндэһэндэнь хандаха',
 'actions' => 'γйлэ',
+'variants' => 'Хубилбари',
 
-'navigation-heading' => 'Ð\97алÑ\83Ñ\83Ñ\80',
+'navigation-heading' => 'ТамаÑ\80алгÑ\8bн Ð¼ÐµÐ½Ñ\8e',
 'errorpagetitle' => 'Алдуу',
+'tagline' => '{{SITENAME}} сайтһаа мэдээлэл',
 'help' => 'Туһаламжа',
-'search' => 'Бэдэрхэ',
-'searchbutton' => 'Бэдэрхэ',
+'search' => 'Хайха',
+'searchbutton' => 'Хайлта',
+'go' => 'Ябаха',
+'searcharticle' => 'Ябаха',
+'history' => 'Хуудаһанай түүхэ',
 'history_short' => 'Түүхэ',
-'edit' => 'Заһаха',
-'create' => 'Үүсхэхэ',
-'protect' => 'Түһэл',
+'printableversion' => 'Хэблэхэ хубилбари',
+'permalink' => 'Үргэлжын холбооһон',
+'print' => 'Хэблэхэ',
+'view' => 'Харуулха',
+'edit' => 'Заһабарилха',
+'create' => 'Үүдхэхэ',
+'delete' => 'Усадхаха',
+'protect' => 'Хамгаалха',
 'protect_change' => 'Хубилалга',
 'newpage' => 'Шэнэ хуудаһан',
 'talkpage' => 'Тус хуудаһа хэлэлсэхэ',
@@ -173,90 +208,121 @@ $messages = array(
 'postcomment' => 'Шэнэ бүлэг',
 'talk' => 'Хэлэлсэхэ',
 'views' => 'Үзэһэн',
-'toolbox' => 'Багажын хайрсаг',
-'projectpage' => 'Түһэлэй хуудаһан',
+'toolbox' => 'Багажа зэбсэг',
+'projectpage' => 'Түлэблэлгын хуудаһые хараха',
 'otherlanguages' => 'Бусад хэлээр',
-'jumptosearch' => 'бэдэрхэ',
+'jumpto' => 'Шууд ошохо:',
+'jumptonavigation' => 'тамаралга',
+'jumptosearch' => 'хайха',
 '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).
 'aboutsite' => '{{SITENAME}} тухай',
-'aboutpage' => 'Project:Түһэл тухай',
+'aboutpage' => 'Project:Түлэблэлгын тухай',
 'currentevents' => 'Мүнөө боложо байгаа үйлэ ябадал',
 'currentevents-url' => 'Project:Һонин мэдээн',
+'disclaimers' => 'Татагалзалнууд',
+'disclaimerpage' => 'Project:Ниитэ татагалзал',
 'helppage' => 'Help:Агуулга',
 'mainpage' => 'Нюур хуудаһан',
 'mainpage-description' => 'Нюур хуудаһан',
 'portal' => 'Хурал',
 'portal-url' => 'Project:Хурал',
+'privacy' => 'Хубиин мэдээлэлэй талаар баримталал',
+'privacypage' => 'Project:Хубиин мэдээлэлэй талаар баримталал',
 
 'ok' => 'За',
-'editsection' => 'заһаха',
-'editold' => 'заһаха',
-'viewsourcelink' => 'эхэ үүсэбэрииень үзэхэ',
+'retrievedfrom' => '"$1" холбооһоо абагдаһан',
+'editsection' => 'заһабарилха',
+'editold' => 'заһабарилха',
+'viewsourceold' => 'эшэ үндэһэндэнь хандаха',
+'editlink' => 'заһабарилха',
+'viewsourcelink' => 'эшэ үндэһэндэнь хандаха',
 'editsectionhint' => '$1 гэһэн бүлэг заһаха',
 'toc' => 'Агуулга',
+'showtoc' => 'харуулха',
+'hidetoc' => 'нюуха',
+'collapsible-collapse' => 'Нюуха',
+'collapsible-expand' => 'Дэлгээхэ',
+'site-atom-feed' => '$1 Атом фиид',
 'red-link-title' => '$1 (хуудаһан үгы байна)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Хуудаһан',
+'nstab-user' => 'Хэрэглэгшын хуудаһан',
+'nstab-media' => 'Медиагай хуудаһан',
 'nstab-special' => 'Тусхай хуудаһан',
-'nstab-project' => 'Түһэлэй хуудаһан',
+'nstab-project' => 'Түлэблэлгын хуудаһан',
 'nstab-image' => 'Файл',
 'nstab-mediawiki' => 'Бэшэг',
-'nstab-template' => 'Загвар',
-'nstab-category' => 'Ангилал',
+'nstab-template' => 'Загбар',
+'nstab-help' => 'Туһаламжын хуудаһан',
+'nstab-category' => 'Категори',
+
+# General errors
+'error' => 'Алдуу',
+'internalerror' => 'Доторой алдуу',
+'internalerror_info' => 'Доторой алдуу: $1',
 
 # Login and logout pages
-'login' => 'Орохо',
-'nav-login-createaccount' => 'Нэбтэржэ орохо / дансатай болохо',
-'userlogin' => 'Нэбтэржэ орохо / дансатай болохо',
+'welcomeuser' => 'Морилжо хайрлыт, $1!',
+'welcomecreation-msg' => 'Танай данса үүдхэһэн байна.
+Та танай {{SITENAME}} [[Special:Preferences|preferences]]-ые өөршэлхэ боломжотойт.',
+'yourname' => 'Хэрэглэгшын нэрэ:',
+'userlogin-yourname' => 'Хэрэглэгшын нэрэ:',
+'userlogin-yourname-ph' => 'Танай хэрэглэгшын нэрые оруулагты',
+'createacct-another-username-ph' => 'Хэрэглэгшын нэрые оруулагты',
+'yourpassword' => 'Нюуса үгэ:',
+'login' => 'Нэбтэрхэ',
+'nav-login-createaccount' => 'Нэбтэрхэ / данса үүдхэхэ',
+'userlogin' => 'Нэбтэрхэ / данса үүдхэхэ',
 'logout' => 'Гараха',
 'userlogout' => 'Гараха',
-'createaccount' => 'Данса үүсхэхэ',
-'gotaccountlink' => 'Нэбтэржэ орохо',
+'createaccount' => 'Данса үүдхэхэ',
+'gotaccountlink' => 'Нэбтэрхэ',
 'loginlanguagelabel' => 'Хэлэн: $1',
 
 # Edit pages
-'savearticle' => 'Хуудаһа хадагалха',
-'showpreview' => 'Уридшалан үзүүлхэ',
-'showdiff' => 'Хубилалта харуулха',
+'savearticle' => 'Хуудаһые хадагалха',
+'showpreview' => 'Уридшалан хараха',
+'showdiff' => 'Хубилалтые харуул',
 'newarticle' => '(Шэнэ)',
 'template-protected' => '(хамгаалалтатай)',
 'permissionserrorstext-withaction' => 'Та доро тодорхойлһон $1 ушар шалтагаанһаа боложо, $2 эрхэгүйт.',
 
 # Revision deletion
 'rev-delundel' => 'харуулха/нюуха',
-'revdel-restore' => 'Ñ\85аÑ\80агдаÑ\85Ñ\8bенÑ\8c Ð¾Ð½Ð´Ð¾Ð¾ Ð±Ð¾Ð»Ð³Ð¾Ñ\85о',
+'revdel-restore' => 'Ñ\85аÑ\80агдаÑ\81Ñ\8bенÑ\8c Ñ\85Ñ\83билгаÑ\85а',
 
 # Diffs
 'editundo' => 'болюулха',
 
 # Search results
-'searchmenu-new' => "'''Ð\91айгÑ\83Ñ\83лÑ\85а Ò¯Ð³Ò¯Ò¯Ð»Ñ\8dл \"[[:\$1]]\"!'''",
-'searchprofile-articles' => 'Үгүүллүүд',
-'searchprofile-images-tooltip' => 'Файл бэдэрхэ',
-'search-result-size' => '$1 ({{PLURAL:$2|1 word|$2 words}})',
+'searchmenu-new' => "'''ЭнÑ\8d Ð²Ð¸ÐºÐ¸Ð´Ñ\8d \"[[:\$1]]\" Ð³Ñ\8dÒ»Ñ\8dн Ñ\85Ñ\83Ñ\83даһа Ò¯Ò¯Ñ\81Ñ\85Ñ\8dÑ\85Ñ\8d!''' Ð\9cүн Ð¾Ð»Ð´Ð¾Ò»Ð¾Ð½ Ð¾Ð½Ð´Ð¾Ð¾ Ñ\85Ñ\83Ñ\83даһа Ñ\85аÑ\80агÑ\82Ñ\8b.\"",
+'searchprofile-articles' => 'Агуулгын хуудаһанууд',
+'searchprofile-images-tooltip' => 'Файл хайха',
+'search-result-size' => '$1 (ниитэ $2 үгэ�)',
 
 # Preferences page
-'mypreferences' => 'Ð\9cинии Ñ\82ааруулга',
-'prefs-datetime' => 'Ð\9eгноо Ð±Ð¾Ð»Ð¾Ð½ саг',
+'mypreferences' => 'Тааруулга',
+'prefs-datetime' => 'Ð\9eгноо Ð±Ð° саг',
 'youremail' => 'Сахим шуудан:',
 'yourrealname' => 'Бодото нэрэ:',
 'yourlanguage' => 'Хэлэн:',
-'yourgender' => 'ХүйһÑ\8dн:',
-'gender-male' => 'Эрэ',
+'yourgender' => 'ХүйһÑ\8bеÑ\82най Ñ\85Ñ\8dн Ð³Ñ\8dжÑ\8d Ð·Ð°Ð°Ð±Ð°Ð» Ð±Ð¾Ð»Ð¾Ñ\85об?',
+'gender-male' => 'Эрэ хүн',
 
 # Associated actions - in the sentence "You do not have permission to X"
-'action-edit' => 'Хубилалга энэ үгүүлэл',
+'action-edit' => 'энэ хуудаһа заһабарилха',
 
 # Recent changes
 'recentchanges' => 'Һүүлшын хубилалта',
-'diff' => 'хубилалга',
-'hist' => 'Түүхэ',
+'diff' => 'илгаа',
+'hist' => 'түүхэ',
 'hide' => 'Нюуха',
 
 # Recent changes linked
+'recentchangeslinked' => 'Холбогдохо хубилалта',
 'recentchangeslinked-toolbox' => 'Холбогдохо хубилалта',
 
 # Upload
@@ -271,39 +337,44 @@ $messages = array(
 'filehist-user' => 'Хэрэглэгшэ',
 
 # Random page
-'randompage' => 'Санамсаргүй хуудас',
+'randompage' => 'Һанамсаргүй хуудаһан',
 
 # Statistics
 'statistics' => 'Тоо бүридхэл',
 
 # Miscellaneous special pages
-'newpages' => 'Шэнэ үгүүллүүд',
+'nbytes' => '$1 {{PLURAL:$1|байт|байтууд}}',
+'newpages' => 'Шэнэ хуудаһанууд',
 'ancientpages' => 'Хуушарһан хуудаһан',
-'move' => 'Ð\9dÑ\8dÑ\80Ñ\8dмжэ',
+'move' => 'ШÑ\8dлжүүлÑ\85э',
 
 # Special:Log
-'log' => 'Логууд',
+'log' => 'Логнууд',
 
 # Special:AllPages
-'allpages' => 'СооÑ\85и Ð±үхы хуудаһан',
-'allarticles' => 'Үгүүллүүд',
+'allpages' => 'Ð\91үхы хуудаһан',
+'allarticles' => 'Бүхы хуудаһан',
 
 # Special:Categories
-'categories' => 'Категори',
+'categories' => 'Категоринууд',
 
 # Watchlist
 'mywatchlist' => 'Ажаглаха зүйл',
-'watch' => 'ХаÑ\80ажа Ð±Ð°Ð¹ха',
+'watch' => 'Ð\90жаглаха',
 
 # Undelete
 'undeletelink' => 'хараха/һэргээхэ',
 
+# Namespace form on various pages
+'blanknamespace' => '(Гол)',
+
 # Contributions
 'mycontris' => 'Минии оруулһан зүйл',
 
 'sp-contributions-talk' => 'Хэлэлсэл',
 
 # What links here
+'whatlinkshere' => 'Эндэ холбогдоһон хуудаһанууд',
 'whatlinkshere-page' => 'Хуудаһан:',
 
 # Block/unblock
@@ -323,18 +394,30 @@ $messages = array(
 'thumbnail-more' => 'Томоруулха',
 
 # Tooltip help for the actions
+'tooltip-pt-login' => 'Бидэ та нэбтэрхые хүсэнэбди; гэбэшье, та заататай байна.',
 'tooltip-pt-logout' => 'Гараха',
-'tooltip-ca-talk' => 'Үгүүлэлынь хэлэлсэл',
-'tooltip-ca-addsection' => 'Шэнэ хэсэг',
-'tooltip-search' => 'Бэдэрхэ {{SITENAME}}',
-'tooltip-search-fulltext' => 'Бэдэрхэ үгүүллүүд',
-'tooltip-p-logo' => 'Нюур хуудаһан',
-'tooltip-n-mainpage' => 'Нюур хуудаһа руу шэлжэхэ',
-'tooltip-n-mainpage-description' => 'Нюур хуудаһа руу шэлжэхэ',
-'tooltip-n-recentchanges' => 'Энэ Википеэдийн сайтдахи хубилалтанууд',
-'tooltip-feed-atom' => 'Атом',
+'tooltip-ca-talk' => 'Агуулгын хуудаһанай хэлэлсэл',
+'tooltip-ca-edit' => 'Та энэ хуудаһа заһабарилжа боломжотой. "Уридшалан үзэлхэ" гэһэн тобшые хэрэглээрэй.',
+'tooltip-ca-addsection' => 'Шэнэ хэһэг эхилүүлхэ',
+'tooltip-ca-history' => 'Энэ хуудаһанай үмэнэхи заһабаринууд',
+'tooltip-ca-delete' => 'энэ хуудаһые усадхаха',
+'tooltip-search' => '{{SITENAME}} сайтһаа бэдэрхэ',
+'tooltip-search-fulltext' => 'Хуудаһанһаа бэдэрхэ бэшэбэри',
+'tooltip-p-logo' => 'Нюур хуудаһанда ошохо',
+'tooltip-n-mainpage' => 'Нюур хуудаһанда ошохо',
+'tooltip-n-mainpage-description' => 'Нюур хуудаһанда ошохо',
+'tooltip-n-portal' => 'Түһэл, өөрын оруулалта, туһалбари тухай мэдээлэл',
+'tooltip-n-currentevents' => 'Мүнөө боложо байгаа үйлэ ябадал тухай һониниие дуулаха',
+'tooltip-n-recentchanges' => 'Тус Викиин һүүлшын хубилалтанууд',
+'tooltip-n-randompage' => 'Гэнтын хуудаһые нээхэ',
+'tooltip-n-help' => 'Туһалалсалгые олохо газар',
+'tooltip-t-whatlinkshere' => 'Эндэ холбогдоһон хуудаһануудай жагсаалта',
+'tooltip-t-recentchangeslinked' => 'Энэ хуудаһаһаа холбоогдоһон хуудаһуудай шэнэ хубилалтууд',
+'tooltip-feed-atom' => 'Тус хуудаһанай Атом фиид',
 'tooltip-t-upload' => 'Файл ашаалха',
 'tooltip-t-specialpages' => 'Бүхы тусхай хуудаһанай жагсаалта',
+'tooltip-t-print' => 'Энэ хуудаһанай хэблэхэ хубилбари',
+'tooltip-ca-nstab-main' => 'Үгүүлэлэй хуудаһые үзэхэ',
 
 # Exif tags
 'exif-languagecode' => 'Хэлэн',
index fd77c8e..d86fcb9 100644 (file)
@@ -368,7 +368,6 @@ $messages = array(
 'vector-action-protect' => 'Protegeix',
 'vector-action-undelete' => 'Restaura',
 'vector-action-unprotect' => 'Desprotegeix',
-'vector-simplesearch-preference' => 'Activar la barra de cerca simplificada (només aparença Vector)',
 'vector-view-create' => 'Crea',
 'vector-view-edit' => 'Modifica',
 'vector-view-history' => "Mostra l'historial",
@@ -746,7 +745,7 @@ Si decidiu proporcionar-lo, s'utilitzarà per a reconèixer a l'usuari el seu tr
 
 # Change password dialog
 'changepassword' => 'Canvia la contrasenya',
-'resetpass_announce' => 'Heu iniciat la sessió amb un codi temporal enviat per correu electrònic. Per a finalitzar-la, heu de definir una nova contrasenya ací:',
+'resetpass_announce' => "Per tal de completar l'inici de sessió heu de definir una contrasenya nova.",
 'resetpass_text' => '<!-- Afegiu-hi un text -->',
 'resetpass_header' => 'Canvia la contrasenya del compte',
 'oldpassword' => 'Contrasenya antiga',
@@ -762,8 +761,13 @@ Espereu $1 abans de tornar-ho a provar.",
 'resetpass-submit-cancel' => 'Canceŀla',
 'resetpass-wrong-oldpass' => 'Contrasenya actual o temporal no vàlida.
 Deveu haver canviat la vostra contrasenya o demanat una nova contrasenya temporal.',
+'resetpass-recycled' => 'Restabliu la contrasenya amb un text diferent que el de la contrasenya actual.',
+'resetpass-temp-emailed' => "Heu iniciat una sessió amb un codi temporal enviat per correu.
+Per completar l'inici de sessió heu de definir una contrasenya nova a continuació:",
 'resetpass-temp-password' => 'Contrasenya temporal:',
 'resetpass-abort-generic' => 'Una extensió ha interromput el canvi de contrasenya.',
+'resetpass-expired' => 'La contrasenya ha vençut. Definiu una contrasenya nova per iniciar la sessió.',
+'resetpass-expired-soft' => 'La contrasenya ha vençut i cal restablir-la. Trieu una contrasenya nova ara, o feu clic a cancel·lat per a restablir-la més endavant.',
 
 # Special:PasswordReset
 'passwordreset' => 'Restablir contrasenya',
@@ -1158,7 +1162,7 @@ Els altres administradors de {{SITENAME}} encara podran accedir al contingut ama
 'revdelete-hide-text' => 'Text de la revisió',
 'revdelete-hide-image' => 'Amaga el contingut del fitxer',
 'revdelete-hide-name' => "Acció d'amagar i objectiu",
-'revdelete-hide-comment' => 'Modifica el resum',
+'revdelete-hide-comment' => 'Resum de modificacions',
 'revdelete-hide-user' => "Nom d'usuari / adreça IP de l'editor",
 'revdelete-hide-restricted' => 'Suprimir les dades als administradors així com a la resta.',
 'revdelete-radio-same' => '(no modificar)',
@@ -1243,6 +1247,7 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
 'editundo' => 'desfés',
 'diff-empty' => '(Cap diferència)',
 'diff-multi-sameuser' => '({{PLURAL:$1|Hi ha una revisió intermèdia|Hi ha $1 revisions intermèdies}} del mateix usuari que no es mostren)',
+'diff-multi-otherusers' => '({{PLURAL:$1|Una revisió intermèdia|$1 revisions intermèdies}} per {{PLURAL:$2|un altre usuari que no es mostra|$2 usuaris que no es mostren}})',
 'diff-multi-manyusers' => "({{PLURAL:$1|Hi ha una revisió intermèdia|Hi ha $1 revisions intermèdies}} sense mostrar fetes per més {{PLURAL:$2|d'un usuari|de $2 usuaris}})",
 'difference-missing-revision' => "{{PLURAL:$2|Una revisió|$2 revisions}} d'aquesta diferència ($1) no {{PLURAL:$2|s'ha|s'han}} trobat.
 
@@ -1289,6 +1294,7 @@ Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{F
 'searchrelated' => 'relacionat',
 'searchall' => 'tots',
 'showingresults' => 'Tot seguit es {{PLURAL:$1|mostra el resultat|mostren els <b>$1</b> resultats començant pel número <b>$2</b>}}.',
+'showingresultsinrange' => 'Es mostren a continuació fins a {{PLURAL:$1|<strong>1</strong> resultat|<strong>$1</strong> resultats}} de #<strong>$2</strong> a #<strong>$3</strong>.',
 'showingresultsnum' => 'Tot seguit es {{PLURAL:$3|llista el resultat|llisten els <b>$3</b> resultats començant pel número <b>$2</b>}}.',
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' de '''$3'''|Resultats '''$1 - $2''' de '''$3'''}} per '''$4'''",
 'search-nonefound' => 'La cerca no ha donat cap resultat.',
@@ -1734,6 +1740,7 @@ Si us plau, si encara desitgeu carregar el vostre fitxer, torneu enrera i carreg
 'uploaddisabledtext' => "S'ha inhabilitat la càrrega de fitxers.",
 'php-uploaddisabledtext' => 'La càrrega de fitxer està desactivada al PHP. Comproveu les opcions del fitxer file_uploads.',
 'uploadscripted' => 'Aquest fitxer conté codi HTML o de seqüències que pot ser interpretat equivocadament per un navegador.',
+'uploadinvalidxml' => "No s'ha pogut analitzar l'XML del fitxer carregat.",
 'uploadvirus' => 'El fitxer conté un virus! Detalls: $1',
 'uploadjava' => 'El fitxer és un arxiu ZIP que conté un fitxer .class de Java. No està permesa la càrrega de fitxers Java, perquè poden passar per alt les restriccions de seguretat.',
 'upload-source' => 'Fitxer font',
@@ -2082,10 +2089,20 @@ Les entrades <del>ratllades</del> s\'han resolt.',
 'deadendpagestext' => "Aquestes pàgines no tenen enllaços a d'altres pàgines del projecte {{SITENAME}}.",
 'protectedpages' => 'Pàgines protegides',
 'protectedpages-indef' => 'Només proteccions indefinides',
+'protectedpages-summary' => "Aquesta pàgina llista les pàgines existents que estan protegides actualment. Per consultar la llista de títols protegits per tal que no puguin crear-se'n pàgines, vegeu [[{{#special:ProtectedTitles}}]].",
 'protectedpages-cascade' => 'Només proteccions en cascada',
 'protectedpages-noredirect' => 'Amaga redireccions',
 'protectedpagesempty' => 'No hi ha cap pàgina protegida per ara',
+'protectedpages-timestamp' => 'Marca horària',
+'protectedpages-page' => 'Pàgina',
+'protectedpages-expiry' => 'Venç',
+'protectedpages-performer' => "Protecció de l'usuari",
+'protectedpages-params' => 'Paràmetres de protecció',
+'protectedpages-reason' => 'Motiu',
+'protectedpages-unknown-timestamp' => 'Desconegut',
+'protectedpages-unknown-performer' => 'Usuari desconegut',
 'protectedtitles' => 'Títols protegits',
+'protectedtitles-summary' => "Aquesta pàgina llista títols protegits perquè no puguin crear-se'n pàgines. Per consultar una llista actual de pàgines protegides, vegeu [[{{#special:ProtectedPages}}]].",
 'protectedtitlesempty' => 'No hi ha cap títol protegit actualment amb aquests paràmetres.',
 'listusers' => "Llista d'usuaris",
 'listusers-editsonly' => 'Mostra només usuaris amb edicions',
@@ -2642,7 +2659,7 @@ l'accés a l'escriptura a una adreça IP o un usuari prèviament bloquejat.",
 'contribslink' => 'contribucions',
 'emaillink' => 'correu electrònic',
 'autoblocker' => "Se us ha blocat automàticament perquè la vostra adreça IP ha estat recentment utilitzada per l'usuari ''[[User:$1|$1]]''.
-El motiu del bloqueig de $1 és: ''$2''.",
+El motiu del bloqueig de $1 és: «$2».",
 'blocklogpage' => 'Registre de bloquejos',
 'blocklog-showlog' => "S'ha blocat aquest usuari prèviament.
 Per més detalls, a sota es mostra el registre de bloquejos:",
@@ -2846,6 +2863,8 @@ $2",
 'thumbnail_image-type' => "Tipus d'imatge no contemplat",
 'thumbnail_gd-library' => 'Configuració de la biblioteca GD incompleta: falta la funció $1',
 'thumbnail_image-missing' => 'Sembla que falta el fitxer: $1',
+'thumbnail_image-failure-limit' => 'Hi ha hagut massa intents fallits recents ($1 o més) per dibuixar aquesta miniatura.
+Torneu-ho a provar més endavant.',
 
 # Special:Import
 'import' => 'Importació de pàgines',
@@ -2892,6 +2911,7 @@ Deseu-lo al vostre ordinador i carregueu-ne una còpia ací.",
 'import-error-special' => "No s'importa la pàgina «$1» perquè el seu nom pertany a l'espai de noms especial que no permet pàgines.",
 'import-error-invalid' => "No s'importa la pàgina «$1» perquè el seu nom no és vàlid.",
 'import-error-unserialize' => 'La revisió $2 de la pàgina "$1" no pot ser desserialitzada. La revisió indica que utilitza el model de contingut $3 serialitzat com a $4.',
+'import-error-bad-location' => 'La revisió $2 que utilitza el model de contingut $3 no es pot emmagatzemar a «$1» en aquest wiki, perquè el model no és permès en la pàgina.',
 'import-options-wrong' => '{{PLURAL:$2|Opció equivocada|Opcions equivocades}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'La pàgina arrel donada és un títol no vàlid.',
 'import-rootpage-nosubpage' => 'L\'espai de noms "$1" de la pàgina arrel no permet subpàgines.',
@@ -4056,6 +4076,4 @@ També expandeix les funcions sintàctiques, com ara <code><nowiki>{{</nowiki>#l
 'expand_templates_generate_rawhtml' => "Mostra l'HTML sense filtrar",
 'expand_templates_preview' => 'Previsualitza',
 
-# Unknown messages
-'uploadinvalidxml' => "No s'ha pogut analitzar l'XML del fitxer carregat.",
 );
index a7e553a..b9ed1ea 100644 (file)
@@ -145,7 +145,6 @@ $dateFormats = array(
 $messages = array(
 # User preference toggles
 'tog-underline' => '下劃綫鏈接',
-'tog-justify' => '調蜀調幾段',
 'tog-hideminor' => '藏起最近改變其過要修改',
 'tog-hidepatrolled' => '藏起最近改變其巡邏修改',
 'tog-numberheadings' => '自動編號其標題',
@@ -299,7 +298,6 @@ $messages = array(
 'vector-action-protect' => '保護',
 'vector-action-undelete' => '取消刪除',
 'vector-action-unprotect' => '改變保護',
-'vector-simplesearch-preference' => '允許簡化其搜索欄(儷有矢量皮膚才有)',
 'vector-view-create' => '創建',
 'vector-view-edit' => '修改',
 'vector-view-history' => '看歷史',
@@ -774,7 +772,6 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 'compareselectedversions' => '比並揀選版本',
 'showhideselectedversions' => '顯/藏揀選其調整',
 'editundo' => '取消',
-'diff-multi' => '{{PLURAL:$1}}(臺中有$2寫其$1萆版本無顯示)',
 
 # Search results
 'searchresults' => '討結果',
@@ -811,7 +808,6 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 'prefs-misc' => '其它',
 'saveprefs' => '保存',
 'searchresultshead' => '尋討',
-'resultsperpage' => '每頁訪問量:',
 'recentchangescount' => '這般改變其條目:',
 'savedprefs' => '汝其設定已經乞保存了。',
 'timezonelegend' => '時區:',
index a8b99ed..4219849 100644 (file)
@@ -329,7 +329,7 @@ $messages = array(
 'tog-showtoolbar' => 'Гайта лакхара гӀирсан дакъа нисйеш аттон оц тадар чохь (JavaScript)',
 'tog-editondblclick' => 'Нисйе агӀонаш шозза тӀетаӀийча (JavaScript)',
 'tog-editsectiononrightclick' => 'Нисде дакъа шозза бакъехьар дахка тӀетаӀийча оцу кортан (JavaScript)',
-'tog-rememberpassword' => 'Даглаца сан дӀаяздар хӀокху браузеран тӀяхь (цхьан $1 {{PLURAL:$1|де|динахь|ден}})',
+'tog-rememberpassword' => 'Даглаца сан дӀаяздар хӀокху браузеран тӀехь (цхьан $1 {{PLURAL:$1|дийнахь}})',
 'tog-watchcreations' => 'ТӀетоха ас кхоьллина агӀонаш тергаме могӀам чу',
 'tog-watchdefault' => 'ТӀетоха ас нисйина агӀонаш тергаме могӀам чу',
 'tog-watchmoves' => 'ТӀетоха ас цӀераш хийцина агӀонаш тергаме могӀам чу',
@@ -443,12 +443,12 @@ $messages = array(
 'category-empty' => "''ХӀара категори хӀинца йаьсса ю.''",
 'hidden-categories' => '{{PLURAL:$1|1=Къайлаха категори|Къайлаха йолу категореш}}',
 'hidden-category-category' => 'Къайлаха йолу категореш',
-'category-subcat-count' => '{{PLURAL:$2|1=ХӀокху категори чохь ю хӀокхуьна бухар категори.|ХӀокху категори чохь ю $1 {{PLURAL:$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|1=ХӀокху категори чохь яц цхьа агӀо бе.|{{PLURAL:$1|1=Гойташ $1 агӀо|Гойту $1 агӀонаш}} хӀокху категорешца кху $2.}}',
-'category-article-count-limited' => 'ХӀокх категори чохь {{PLURAL:$1|1=$1 агӀо|$1 агӀонаш}}.',
-'category-file-count' => '{{PLURAL:$2|ХӀокху категори чохь цхьа файл бе яц.|{{PLURAL:$1|Гойта $1 файл|Гойту $1 файлаш|Гойту $1 файл}} хӀокху категорешца кху $2.}}',
-'category-file-count-limited' => 'ХӀокх категори чохь {{PLURAL:$1|$1 файл|$1 файлаш|$1 файл}}.',
+'category-article-count' => '{{PLURAL:$2|ХӀокху категори чохь яц цхьа агӀо бе.|{{PLURAL:$1|Гойту $1 агӀо|Гойту $1 агӀонаш}} хӀокху категорешца кху $2.}}',
+'category-article-count-limited' => 'ХӀокху категори чохь {{PLURAL:$1|$1 агӀо|$1 агӀонаш}} цхьа агӀо бен яц.',
+'category-file-count' => '{{PLURAL:$2|ХӀокху категори чохь цхьа файл бе яц.|{{PLURAL:$1|Гойту $1 файл|Гойту $1 файлаш}} хӀокху категорешца кху $2.}}',
+'category-file-count-limited' => 'ХӀокху категори чохь {{PLURAL:$1|$1 файл|$1 файлаш|1=цхьаъ бен файл яц}}.',
 'listingcontinuesabbrev' => '(кхин дlа)',
 'index-category' => 'Меттигтерахьйо агlонаш',
 'noindex-category' => 'ДӀахьушйоцу агӀонаш',
@@ -604,7 +604,7 @@ $1',
 'showtoc' => 'гайта',
 'hidetoc' => 'къайлаяккха',
 'collapsible-collapse' => 'къайлаяккха',
-'collapsible-expand' => 'Ñ\85Ñ\8cайаста',
+'collapsible-expand' => 'Ñ\81Ñ\85Ñ\8cаÑ\8fста',
 'thisisdeleted' => 'Хьажа я меттахӀоттайé $1?',
 'viewdeleted' => 'Хьожий $1?',
 'restorelink' => '{{PLURAL:$1|1=$1 дӀадаьккхина нийсдар|$1 дӀадяхна нийсдарш}}',
@@ -710,6 +710,8 @@ URL язъеш гӀалат даьлла хила мега.
 'myprivateinfoprotected' => 'Хьайн долара хаамна хийцам ба хьа йиш яц',
 'mypreferencesprotected' => 'Хьай гӀирс нисбан хьа бакъо яц.',
 'ns-specialprotected' => 'ХӀокху «{{ns:special}}» цӀерийн меттигашан агӀонаш таян йиш яц.',
+'titleprotected' => "[[Декъашхочо:$1|$1]] дихкина ишта корта болуш агӀо кхоллар.
+Гайтина бахьна: ''$2''.",
 'exception-nologin' => 'ХӀинца а ахьа системин чохь болх беш бац',
 
 # Virus scanner
@@ -825,6 +827,9 @@ URL язъеш гӀалат даьлла хила мега.
 Дехар до, собар де $1 юха гӀортале.',
 'login-abort-generic' => 'Сестемин довзийта тарцаделира',
 'loginlanguagelabel' => 'Мотт: $1',
+'pt-login' => 'ЧугӀо',
+'pt-createaccount' => 'Кхолла декъашхочун дӀаяздар',
+'pt-userlogout' => 'Болх дӀаберзор',
 
 # Change password dialog
 'changepassword' => 'Хийца пароль',
@@ -1086,11 +1091,15 @@ URL язъеш гӀалат даьлла хила мега.
 Хьайна лаахь хьа йиш ю [$1 и верси хьажа].",
 'rev-deleted-text-view' => "ХӀара агӀона верси '''дӀаяьккхина''' ю.
 Бахьна далина [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дӀаяьхнарш йолу тептар чохь].",
+'rev-deleted-no-diff' => "АгӀона цхьа верси '''дӀаяьккхина''' хилар бахьнехь, хӀуна версийн башхалла хьажа цало.
+Мадарра каро мега [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дӀаяккхаран тептар чохь].",
 'rev-delundel' => 'гайта/къайла',
 'rev-showdeleted' => 'гайта',
 'revisiondelete' => 'ДӀаяха / меттахӀотае агӀона версеш',
 'revdelete-nooldid-title' => 'Билгалйина яц Ӏалашонан верси',
 'revdelete-nooldid-text' => 'Ахьа хӀара функци кхочушъян билгалйина яц Ӏалашонан верси (я версеш).',
+'revdelete-no-file' => 'Иштта файл яц.',
+'revdelete-show-file-confirm' => 'Бакъалла лаьий хьуна дӀаяьккхина файлан версега хьажа «<nowiki>$1</nowiki>» $2 тӀера, $3?',
 'revdelete-show-file-submit' => 'Хlаъ',
 'revdelete-selected' => "'''АгӀона [[:$1]] {{PLURAL:$2|1=къастина верси|къастина версеш}}:'''",
 'logdelete-selected' => "'''Тептар чура {{PLURAL:$1|1=хаьржина дӀаяздар|хаьржина дӀаяздарш}}:'''",
@@ -1103,13 +1112,14 @@ URL язъеш гӀалат даьлла хила мега.
 'revdelete-hide-name' => 'Къайлаяккха дешдерг а цуна объект а',
 'revdelete-hide-comment' => 'Хийцамах лаьцнарг',
 'revdelete-hide-user' => 'Декъашхочун цӀе/IP-адрес',
+'revdelete-hide-restricted' => 'Къайлабаха хаамаш куьйгалхойх а',
 'revdelete-radio-same' => '(ма хийца)',
 'revdelete-radio-set' => 'Къайлаяьккхина',
 'revdelete-radio-unset' => 'Гуш ерг',
 'revdelete-suppress' => 'Къайлабаха хаамаш куьйгалхойх а',
 'revdelete-unsuppress' => 'МеттахӀоьттина версешан дихкар къайладаккха',
 'revdelete-log' => 'Бахьан:',
-'revdelete-submit' => 'Ð\9aÑ\85оÑ\87Ñ\83Ñ\88де {{PLURAL:$1|1=кÑ\8aаÑ\81Ñ\82ина Ð²ÐµÑ\80Ñ\81ин|кÑ\8aаÑ\81Ñ\82ина Ð²ÐµÑ\80Ñ\81еÑ\88ан}}',
+'revdelete-submit' => 'Ð\9aÑ\85оÑ\87Ñ\83Ñ\88де {{PLURAL:$1|1=кÑ\8aаÑ\81Ñ\82ина Ð²ÐµÑ\80Ñ\81ин|кÑ\8aаÑ\81Ñ\82ина Ð²ÐµÑ\80Ñ\81ийн}}',
 'revdelete-success' => "'''Версеш гуш хилар кхиамца хийцина.'''",
 'revdelete-failure' => "'''Версеш гуш хилар хийца йиш яц:'''
 $1",
@@ -1142,19 +1152,27 @@ $1",
 'mergehistory-go' => 'Гайта цхьаьнатухуш долу нисдарш',
 'mergehistory-submit' => 'Цхьаьнатоха нисдарш',
 'mergehistory-empty' => 'Цхьаьнатоха нисдарш цакарий.',
+'mergehistory-success' => '$3 {{PLURAL:$3|нисдар|нисдарш}} [[:$1]] чура кхиамца {{PLURAL:$3|дехьа даьккхина|дехьа дехна}} [[:$2]] чу.',
 'mergehistory-fail' => 'АгӀонийн истореш вовшахтоха цаделира, дехар до агӀона параметаршка а хене а хьажа.',
+'mergehistory-no-source' => 'Коьрта агӀо «$1» яц.',
+'mergehistory-no-destination' => 'Ӏалашон агӀо «$1» яц.',
 'mergehistory-invalid-source' => 'Хьостан нийса корта хила еза.',
 'mergehistory-invalid-destination' => 'Юзийна агӀона нийса корта хила еза.',
+'mergehistory-autocomment' => 'Дехьа яьккхина [[:$1]] [[:$2]] чу',
+'mergehistory-comment' => 'Дехьа яьккхина [[:$1]] [[:$2]] чу: $3',
 'mergehistory-reason' => 'Бахьан:',
 
 # Merge log
 'mergelog' => 'Цхьаьнатохаршан тептар',
+'pagemerge-logentry' => 'цхьаьнатоьхна [[$1]] а [[$2]] а ($3 кхаччалц)',
 'revertmerge' => 'Йекъа',
 'mergelogpagetext' => 'Лахахь гойту тӀеххьара вовшахтоьхна агӀонийн могӀам.',
 
 # Diffs
 'history-title' => '$1 — хийцаман истори',
 'difference-title' => '$1 — Версешан башхалла',
+'difference-title-multipage' => 'АгӀонийн башхалла «$1» а «$2» а',
+'difference-multipage' => '(АгӀонийн башхалла)',
 'lineno' => 'МогӀа $1:',
 'compareselectedversions' => 'Хаьржина версеш муха ю хьажа',
 'showhideselectedversions' => 'Гайта/къайлаяха хаьржина башхонаш',
@@ -1167,6 +1185,7 @@ $1",
 'searchresults' => 'Лахарна хилам',
 'searchresults-title' => 'Лаха «$1»',
 'titlematches' => 'АгӀонийн цӀераш цхьаьнанисялар',
+'textmatches' => 'АгӀонийн йоза цхьаьнанисдалар',
 'notextmatches' => 'Агlонаш чура йозанашца цхьатера йогlуш яц',
 'prevn' => 'хьалхарнаш {{PLURAL:$1|$1}}',
 'nextn' => 'тӀаьхьйогӀурш {{PLURAL:$1|$1}}',
@@ -1188,16 +1207,20 @@ $1",
 'searchprofile-advanced-tooltip' => 'Лаха дехарца хlокху ана цlерашкахь',
 'search-result-size' => '$1 ({{PLURAL:$2|$2 дош|$2 дешнаш|$2 дешнаш}})',
 'search-result-category-size' => '$1 {{PLURAL:$1|юкъаяр}} ($2 {{PLURAL:$2|1=бухара категори|бухара категореш}}, $3 {{PLURAL:$3|1=файл|файлаш}}).',
+'search-result-score' => 'Релевант: $1%.',
 'search-redirect' => '(дlасахьажийна $1)',
 'search-section' => '(дакъа $1)',
+'search-file-match' => '(файлан чулацаме тера хилар)',
 'search-suggest' => 'Хила мега ахьа лоьхарг: $1',
 'search-interwiki-caption' => 'Гергара проекташ',
 'search-interwiki-default' => '$1 хилам.:',
 'search-interwiki-more' => '(кхин)',
+'search-relatedarticle' => 'ХӀоттаделларг',
 'searcheverything-enable' => 'Массо цIера анахь лахар',
 'searchrelated' => 'хlоттаделларг',
 'searchall' => 'массо',
 'showingresults' => 'Лахахьа {{PLURAL:$1|гойта|гойту|гойту}} <strong>$1</strong> {{PLURAL:$1|хилам|хиламаш|хиламаш}}, дlаболало кху № <strong>$2</strong>.',
+'showingresultsinrange' => 'Лахахь гайтина {{PLURAL:$1|<strong>1</strong> хилам}} диапазонехь <strong>$2</strong> тӀера <strong>$3</strong> кхаччалц.',
 'showingresultsheader' => "{{PLURAL:$5|1=Хилам '''$1''' кху '''$3'''|Хиламаш '''$1 — $2''' кху '''$3'''}} оцун '''$4'''",
 'search-nonefound' => 'Дехаре терра цхьа хӀума ца карийна.',
 'powersearch-legend' => 'Шуьро лахар',
@@ -1240,6 +1263,7 @@ $1",
 'columns' => 'БӀогӀамаш:',
 'searchresultshead' => 'Лаха',
 'stub-threshold' => 'Кеч яран доза <a href="#" class="stub">коьртамогӀамна хьажорагаш</a> (байташках):',
+'stub-threshold-disabled' => 'ДӀадайина',
 'recentchangesdays' => 'Керла нисдар гайта динахь:',
 'recentchangesdays-max' => 'Къезиг  $1 {{PLURAL:$1|дена}}',
 'recentchangescount' => 'Iад йитарца гойтуш долу нисдаршан дукхалла',
@@ -1247,18 +1271,20 @@ $1",
 'prefs-help-watchlist-token2' => 'Иза хьан тергаме могӀан къайла догӀа ду.
 Муьлха и хуучунна йиш ю хьан тергаме могӀам беша, цундела ма хаийта иза кхечаьрга. [[Special:ResetTokens|ТӀетаӀа йе кхуза и хьайга кхосса лууш делахь]].',
 'savedprefs' => 'Хьан гӀирс Ӏалашбина.',
-'timezonelegend' => 'Сахьатан аса:',
+'timezonelegend' => 'Сахьтан аса:',
 'localtime' => 'Меттигера хан:',
 'timezoneuseserverdefault' => 'Серверан ($1) гӀирс лелабе',
 'timezoneuseoffset' => 'Кхин (билгалде дӀахилар)',
 'servertime' => 'Сервера хан:',
 'guesstimezone' => 'Юза браузеран чура',
 'timezoneregion-asia' => 'Ази',
+'timezoneregion-atlantic' => 'Атлантикан океан',
 'timezoneregion-australia' => 'Австрали',
 'timezoneregion-indian' => 'Индин океан',
 'timezoneregion-pacific' => 'Тийна океан',
 'allowemail' => 'Магийта декъашхошна хьайга электрони почтехула кехат кхехьийта',
 'prefs-searchoptions' => 'Лаха',
+'prefs-namespaces' => 'ЦӀерийн ана',
 'defaultns' => 'Я лаха лахахь гайтинчу аннашкахь:',
 'default' => 'Iад йитарца',
 'prefs-files' => 'Файлаш',
@@ -1275,9 +1301,11 @@ $1",
 'prefs-registration' => 'ДӀаяздар кхолийна хан:',
 'yourrealname' => 'Хьан бакъ цlе:',
 'yourlanguage' => 'Мотт:',
-'yourvariant' => 'Метта башхо',
+'yourvariant' => 'Метта башхо:',
 'yournick' => 'Керла куьгтаӀор:',
 'prefs-help-signature' => 'Дийцаре агӀонаш чохь къуьгтаӀо деза символшца «<nowiki>~~~~</nowiki>», цара гойтур ду хьан къуьгтаӀор а хан а.',
+'badsiglength' => 'ТӀех деха куьг.
+Куьйган $1 {{PLURAL:$1|символ}} дукха хила цамега.',
 'yourgender' => 'Ву/Йу:',
 'gender-unknown' => 'хlоттийна яц',
 'gender-male' => 'борша',
@@ -1305,6 +1333,9 @@ $1",
 'prefs-diffs' => 'Башхон верси',
 'prefs-help-prefershttps' => 'И хийцам болх байта юхугӀо системин чу.',
 
+# User preference: email validation using jQuery
+'email-address-validity-valid' => 'Го нийса',
+
 # User rights
 'userrights' => 'Декъашхочун бакъона урхалладар',
 'userrights-lookup-user' => 'Декъашхошан бакъонашан урхалладар',
@@ -1337,10 +1368,11 @@ $1",
 'group-all' => '(массо)',
 
 'group-user-member' => '{{GENDER:$1|декъашхо}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|шашеха тӀелаьцна декъашхо}}',
 'group-bot-member' => 'шаболххо',
 'group-sysop-member' => '{{GENDER:$1|куьйгалхо}}',
 'group-bureaucrat-member' => '{{GENDER:$1|бюрократхо}}',
-'group-suppress-member' => 'левисорхо',
+'group-suppress-member' => '{{GENDER:$1|ревизор}}',
 
 'grouppage-user' => '{{ns:project}}:Декъашхой',
 'grouppage-autoconfirmed' => '{{ns:project}}:Бакъонаш йолу декъашхой',
@@ -1430,18 +1462,34 @@ $1",
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'хӀара агӀо ешар',
 'action-edit' => 'нисйа хlара агlо',
+'action-createpage' => 'агӀонаш кхолла',
+'action-createtalk' => 'дийцаре агӀонаш кхоллар',
+'action-createaccount' => 'хӀара декъашхочун дӀаяздар кхоллар',
+'action-minoredit' => 'жима нисдар сана билгало',
 'action-move' => 'хӀокху агӀон цӀе хийца',
+'action-move-subpages' => 'хӀокху агӀона цӀе хийцар цуна массо бухара агӀонийн а',
 'action-move-rootuserpages' => 'декъашхочун ораман агӀонийн цӀераш хийцар',
+'action-movefile' => 'хӀокху файлан цӀе хийца',
+'action-upload' => 'чуяккха хӀара файл',
+'action-reupload' => 'йолуш йолу файлан тӀехула дӀаязъяр',
+'action-writeapi' => 'нисдеш лелойо API',
 'action-delete' => 'дӀаяккха хӀара агӀо',
+'action-deleterevision' => 'агӀона хӀара верси дӀаяккхар',
 'action-deletedhistory' => 'хӀокху агӀона дӀаяккхинцу исторега хьажар',
 'action-browsearchive' => 'ДӀаяхна агӀонаш лахар',
 'action-undelete' => 'хӀара агӀо меттахӀоттор',
+'action-suppressionlog' => 'хӀокху долара тептаре хьажар',
+'action-block' => 'хӀокху декъашхошка тадарш ца дайта дехкар хӀоттор',
 'action-patrol' => 'кхечера нисдарш хьаьжна сана билгалдар',
 'action-autopatrol' => 'шен нисдарш хьаьжна сана билгалдар',
 'action-siteadmin' => 'хаамийн гуламан блоктохар а блокдӀаяккхар а',
+'action-sendemail' => 'Электронан кехат дӀадахьийтар',
+'action-editmywatchlist' => 'хьан тергаме могӀам табар',
+'action-viewmywatchlist' => 'шен тергаме могӀане хьажар',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|хийцам|хийцамаш|хийцамаш}}',
+'enhancedrc-history' => 'истори',
 'recentchanges' => 'Керла нисдарш',
 'recentchanges-legend' => 'Гlирс нисбарна керла нисдарш',
 'recentchanges-summary' => 'Лахахь гайтина хене хьаьжна Википедин агӀонашкахь тӀаьхьара бина хийцамаш',
@@ -1456,11 +1504,23 @@ $1",
 'rcnotefrom' => "Лахахь гайтина тӀера '''$2''' хийцамаш ('''$1''' къезиг).",
 'rclistfrom' => 'Гайта хийцам оцу $1.',
 'rcshowhideminor' => '$1 кегийра нисдарш',
+'rcshowhideminor-show' => 'Гайта',
+'rcshowhideminor-hide' => 'Къайладаха',
 'rcshowhidebots' => '$1 шабелхалой',
+'rcshowhidebots-show' => 'Гайта',
+'rcshowhidebots-hide' => 'Къайлабаха',
 'rcshowhideliu' => '$1 шайн цӀершца болу декъашхой',
+'rcshowhideliu-show' => 'Гайта',
+'rcshowhideliu-hide' => 'Къайлабаха',
 'rcshowhideanons' => '$1 цӀе хьулйина декъашхой',
+'rcshowhideanons-show' => 'Гайта',
+'rcshowhideanons-hide' => 'Къайлабаха',
 'rcshowhidepatr' => '$1 хьажжина нисдарш',
+'rcshowhidepatr-show' => 'Гайта',
+'rcshowhidepatr-hide' => 'Къайладаха',
 'rcshowhidemine' => '$1 айхьа нисдинарш',
+'rcshowhidemine-show' => 'Гайта',
+'rcshowhidemine-hide' => 'Къайладаха',
 'rclinks' => 'Гайта тlаьхьара $1 хийцамаш оцу $2 ден<br />$3',
 'diff' => 'тейп тайпнара',
 'hist' => 'истори',
@@ -1469,8 +1529,10 @@ $1",
 'minoreditletter' => 'ж',
 'newpageletter' => 'К',
 'boteditletter' => 'б',
+'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|тӀехьожу декъашхо|тӀехьожу декъашхой}}]',
+'rc_categories' => 'Категори чура бен (къасторг «|»)',
 'rc_categories_any' => 'Муьлхаа',
-'rc-change-size-new' => 'Хийцам бинчул тӀехьа болу барам: $1 {{PLURAL:$1|байт}}',
+'rc-change-size-new' => 'Хийцам бин чул тӀехьа болу барам: $1 {{PLURAL:$1|байт}}',
 'newsectionsummary' => '/* $1 */ Керла хьедар',
 'rc-enhanced-expand' => 'Гайта мадарра',
 'rc-enhanced-hide' => 'Ма дарра дерг къайладаккха',
@@ -1491,7 +1553,9 @@ $1",
 'uploadbtn' => 'Файл чуяккхар',
 'reuploaddesc' => 'Юху гӀо файл чуйоккху агӀоне',
 'upload-tryagain' => 'ДӀадахьийта хийцина файлах лаьцнарг',
+'uploadnologin' => 'Ахьа системин чохь болх беш бац',
 'uploadnologintext' => 'Серверан чу файлаш яха хьо $1.',
+'uploaderror' => 'Файл чуяккхаран гӀалат',
 'upload-recreate-warning' => "'''Тегам бе: иштта цӀе йолу файл дӀаяьккхина я цӀе хийцина.'''
 
 Лахахьа гойтуш ю хӀокху агӀона тептар:",
@@ -1503,6 +1567,9 @@ $1",
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|цунахь лаьцна хаам]]</nowiki></code>''' 200 пиксель барамехь файл чуйилар бухахь цунахь лаьцна могӀа а болуш;
 * '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' файлан тӀе хьажораг хӀотайо файл агӀонгахь ца гуш.",
 'upload-permitted' => 'Магийна файлийн тайпанаш: $1.',
+'upload-preferred' => 'Магийна файлийн тайпанаш: $1.',
+'upload-prohibited' => 'Магийна доцу файлийн тайпанаш: $1.',
+'uploadlog' => 'Чуяхаран тéптар',
 'uploadlogpage' => 'Чуяхаран тéптар',
 'uploadlogpagetext' => 'Лахахьа гойтуш бу тӀаьххьара чуяхна файлийн могӀам.
 Ишта хьажа [[Special:NewFiles|керлачу файлийн галерей]].',
@@ -1510,7 +1577,9 @@ $1",
 'filedesc' => 'Файлах лаьцна',
 'fileuploadsummary' => 'Файлах лаьцна:',
 'filereuploadsummary' => 'Файлан хийцамаш:',
+'filestatus' => 'Яржоран хьал:',
 'filesource' => 'Хьост:',
+'uploadedfiles' => 'Чуйаха файлаш',
 'ignorewarning' => 'ХӀума дац чуяккха файл',
 'ignorewarnings' => 'ДӀахедар тергал ца дан',
 'badfilename' => 'Файлан цӀе хийцина → $1.',
@@ -1540,6 +1609,7 @@ $1",
 'file-deleted-duplicate' => 'Иштта файл ([[:$1]]) хӀинцале дӀаяьккхина хилла. Дехар до, юху файл чуяккхале файл дӀаяккхаран историга хьажа.',
 'uploadwarning' => 'Дlахьедар',
 'uploadwarning-text' => 'Дехар до, лахара файлах лаьцнарг хийца а дай юху а гӀорта файл чуяккха.',
+'savefile' => 'ДӀаязе йе файл',
 'uploadedimage' => 'чуяьккхина «[[$1]]»',
 'overwroteimage' => 'Чуяьккхина файлан керла верси «[[$1]]»',
 'upload-source' => 'ДIайолалун файл',
@@ -1566,6 +1636,10 @@ MGP # Pentax
 PICT # тайп тайпан
  #</pre> <!-- битийша хlара могlа ша мабарра -->',
 
+'upload-file-error' => 'Чоьхьара гӀалат',
+'upload-unknown-size' => 'Хууш доцу барам',
+'upload-http-error' => 'Даьлла гӀалат HTTP: $1',
+
 # File backend
 'backend-fail-readonly' => 'ХӀара «$1» хӀинца еша бен таро яц. Бахьна: «$2»',
 
@@ -1610,12 +1684,14 @@ PICT # тайп тайпан
 'imagelinks' => 'Файл лелор',
 'linkstoimage' => '{{PLURAL:$1|ТӀаьхьайогӀу $1 агӀо тӀетойжина|ТӀаьхьайогlу $1 агӀонаш тӀетойжина|ТӀаьхьайогӀу $1 агӀонаш тӀетойжина}} хӀокху файлан:',
 'nolinkstoimage' => 'АгӀонашчохь файл лелош яц.',
+'duplicatesoffile' => '{{PLURAL:$1|Лахара файл ю дубликат|Лахара $1 файлаш ю дубликаташ}} хӀокху файлан ([[Special:FileDuplicateSearch/$2|мадарра]]):',
 'sharedupload' => 'ХӀара хӀума оцун $1 чура ю иза хила мега лелош кхечу проекташкахь.',
 'sharedupload-desc-here' => 'ХӀара файл $1 чура ю и лело йиш ю массо проекташкахь.
 Цунна хаам гайтина лахахь. [$2 Файл Викигуламехь]',
 'filepage-nofile' => 'Иштта цӀе йолуш файл яц.',
 'filepage-nofile-link' => 'Ишта цӀе йолуш файл яц. Хьа йиш ю и [$1 чуяккха].',
 'uploadnewversion-linktext' => 'Чуяккха керла верси хӀокху файлан',
+'shared-repo-from' => '$1 чура',
 'shared-repo-name-wikimediacommons' => 'Викидlайуллуче',
 
 # File reversion
@@ -1675,7 +1751,7 @@ PICT # тайп тайпан
 
 # Statistics
 'statistics' => 'Бухехьдерг',
-'statistics-header-pages' => 'Агlонашан жамlа',
+'statistics-header-pages' => 'АгӀонийн жамӀ',
 'statistics-header-edits' => 'Нисдаран жамӀ',
 'statistics-header-users' => 'Декъашхойн жамӀа',
 'statistics-header-hooks' => 'Кхин статистика',
@@ -1741,7 +1817,7 @@ PICT # тайп тайпан
 'mostimages' => 'Массарел дуккха лелайо файлаш',
 'mostinterwikis' => 'Дуккха юкъарвики хьажорагаш тӀе тоьхна йолу агӀонаш',
 'mostrevisions' => 'Сих сиха нисйина йолу агIонаш',
-'prefixindex' => 'Хьалха агlонашан цlераш хlотто йеза',
+'prefixindex' => 'Хьалха агӀонашан цӀераш хӀотто йеза',
 'prefixindex-namespace' => 'Хьалха агӀонашан цӀераш хӀотто еза («{{ns:$1}}»)',
 'prefixindex-strip' => 'Хиламийн могӀам чура префикс къайлаяккха',
 'shortpages' => 'Боцоа яззамаш',
@@ -1892,6 +1968,7 @@ PICT # тайп тайпан
 'unwatch' => 'Тергамах къаста',
 'notanarticle' => 'Бац яззам',
 'watchlist-details' => 'Хьан тергаме могlамца $1 {{PLURAL:$1|агlо|агlонаш|агlонаш}} ю, дийцаре агlонаша йоцуш.',
+'wlheader-enotif' => 'Электронан почте хаамаш байтар латина ду.',
 'wlheader-showupdated' => "Хийцам бина агӀонаш '''Ӏаьржа''' шрифтцан билгальяха ю.",
 'wlnote2' => 'Лахахьа гайтина {{PLURAL:$1|тӀеххьара сахьт}} чохь бина хийцамаш $2 $3.',
 'wlshowlast' => 'Гайта тlаьххьара $1 сахьташ $2 денош $3',
@@ -2076,7 +2153,7 @@ PICT # тайп тайпан
 'linkshere' => "ТӀаьхьайогӀу агӀонаш оцу '''[[:$1]]''': хьажорагца ю",
 'nolinkshere' => "ХӀокху '''[[:$1]]''' агӀона тӀе кхечу агӀонашкахь хьажорагаш яц.",
 'nolinkshere-ns' => "Хаьржинчу анахь яц '''[[:$1]]''' цӀе йолу агӀонаш",
-'isredirect' => 'агlо-дlасахьажайар',
+'isredirect' => 'агӀо-дӀасахьажайар',
 'istemplate' => 'лата йe',
 'isimage' => 'Файлан хьажораг',
 'whatlinkshere-prev' => '{{PLURAL:$1|1=хьалхайодарг|хьалхайодарш}} $1',
@@ -2333,7 +2410,7 @@ PICT # тайп тайпан
 'tooltip-t-recentchangeslinked' => 'Тlаьхьарлера хийцамаш хlокху агlонашкахь, мичхьа хьажийна хlара агlо',
 'tooltip-feed-rss' => 'Хьагайтар оцу RSS цани хlокху агlон',
 'tooltip-feed-atom' => 'Хьагайтар оцу Atom цани хlокху агlон',
-'tooltip-t-contributions' => 'Хlокху декъашхочо хийцина йолу агlонашан могlам',
+'tooltip-t-contributions' => 'ХӀокху декъашхочо хийцина йолу агӀонийн могӀам',
 'tooltip-t-emailuser' => 'ДӀабахьийта хаам оцу декъашхона',
 'tooltip-t-upload' => 'Чуйаха файлаш',
 'tooltip-t-specialpages' => 'Белха агlонаши могlам',
@@ -2607,6 +2684,10 @@ PICT # тайп тайпан
 
 # action=watch/unwatch
 'confirm-watch-top' => 'ТӀетоха хӀара агӀо хьан тергаме могӀам юкъа?',
+'confirm-unwatch-top' => 'ДӀаяккха хӀара агӀо хьай тергаме могӀанан юкъар?',
+
+# Separators for various lists, etc.
+'comma-separator' => ',&#32;',
 
 # Multipage image navigation
 'imgmultipageprev' => '← хьалхара агlо',
@@ -2721,7 +2802,7 @@ MediaWiki яржош ю и шуна пайдане хир яц те аьлла,
 'specialpages-group-users' => 'Декъашхой а бакъонаш',
 'specialpages-group-highuse' => 'Уггаре дукха лелайо агlонаш',
 'specialpages-group-pages' => 'Агlонаши могlамаш',
-'specialpages-group-pagetools' => 'Гlирсаш оцу агlонашан',
+'specialpages-group-pagetools' => 'ГӀирсаш оцу агӀонашан',
 'specialpages-group-wiki' => 'Хаамаш а гӀирсаш а',
 'specialpages-group-redirects' => 'Дlасахьажош йолу гlуллакхан агlонаш',
 'specialpages-group-spam' => 'Спаман дуьхьала гӀирсаш',
index 8a7067e..0c0b317 100644 (file)
@@ -68,7 +68,6 @@ $specialPageAliases = array(
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Binadlisan nga mga sumpay:',
-'tog-justify' => 'Ihusto ang mga parapo',
 'tog-hideminor' => 'Ipakita ang gamayng pag-usab sa mga bag-ong giusab',
 'tog-hidepatrolled' => 'Tagoa ang mga napatrol nga pag-usab sa mga bag-ong giusab',
 'tog-newpageshidepatrolled' => 'Tagoa ang napatrol nga mga panid gikan sa talaan sa mga bag-ong panid',
@@ -77,9 +76,7 @@ $messages = array(
 'tog-numberheadings' => 'Awtomatiko ang pagnumero sa mga heading',
 'tog-showtoolbar' => 'Ipakita ang toolbar sa pag-edit (JavaScript)',
 'tog-editondblclick' => 'I-edit ang panid inig dobol-klik (JavaScript)',
-'tog-editsection' => 'Mausab ang mga seksiyon gamit ang [usba] nga sumpay',
 'tog-editsectiononrightclick' => 'Mahimo ang pag-usab sa seksyon pinaagi sa pag-right click sa titulo sa seksyon (JavaScript kinahanglan)',
-'tog-showtoc' => 'Ipakita ang talaan sa sulod (alang sa mga panid nga may daghan pa sa 3 ka heading)',
 'tog-rememberpassword' => 'Hinumdomi ako sa kining kompyuter (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'Bantayi ang akong gisugdang mga panid',
 'tog-watchdefault' => 'Bantayi ang akong giusab nga mga panid',
@@ -729,7 +726,6 @@ Hinumdomi nga ang ilang indeks sa sulod sa {{SITENAME}} mahimong dugay-dugay na.
 'rows' => 'Mga row:',
 'columns' => 'Mga kolum:',
 'searchresultshead' => 'Pangitaa',
-'resultsperpage' => 'Mga hit matag panid:',
 'stub-threshold' => 'Threshold para sa <a href="#" class="stub">stub link</a> formatting (bytes):',
 'recentchangesdays' => 'Mga adlaw nga ipakita sa bag-ong giusab:',
 'recentchangesdays-max' => 'Maximum $1 {{PLURAL:$1|ka adlaw|ka mga adlaw}}',
index 165e8bb..0a95d28 100644 (file)
@@ -36,7 +36,6 @@ $messages = array(
 'tog-hideminor' => "Nå'na' i mandikike' na tinilaika siha gi påhinan tinilaika gi halacha",
 'tog-extendwatchlist' => "Na'ladångkolu i listan pinilan para u na'annok i manaplikayon na tinilaika siha",
 'tog-usenewrc' => "I manmana'lamaolek na tinilaika (JavaScript)",
-'tog-showtoc' => "Na'annok i fañodda'an (annai guåha mas ki 3 na titulo gi påhina)",
 'tog-rememberpassword' => 'Hasso iyo-ku login gi este na komputadora (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => "Po'lo i påhina siha ni fina'tinas-hu gi iyo-ku listan pinilan.",
 'tog-watchdefault' => "Po'lo i påhina siha ni hu tulaika gi iyo-ku listan pinilan.",
@@ -612,7 +611,6 @@ Fanapunta na para u na'nuebu i kolumna anggen un usa i inachetton nabegasion.",
 'lineno' => 'Liña $1:',
 'compareselectedversions' => "Akompara i tinilaika siha ma'ayek",
 'editundo' => 'funas',
-'diff-multi' => "({{PLURAL:$1|Ti mana'a'annok unu na tinilaika gi talo'|Ti manmana'a'annok $1 na tinilaika siha gi talo'}}.)",
 
 # Search results
 'searchresults' => 'Humuyongña i inaligao',
@@ -664,7 +662,6 @@ Fanapunta na fana'an ti gus nuebu i listan-ñiha i guinahan {{SITENAME}}.",
 'rows' => 'Fila siha:',
 'columns' => 'Kolumna siha:',
 'searchresultshead' => 'Aligao',
-'resultsperpage' => 'Dinanche siha kada påhina:',
 'recentchangesdays' => "Diha siha na para u na'annok gi i tinilaika gi halacha:",
 'recentchangescount' => "Kunatu na tinilaika para u na'annok gi i tinilaika gi halacha:",
 'savedprefs' => "Manmaasåtba i ga'ña-mu siha.",
index 9af4e9b..5488a6b 100644 (file)
@@ -349,7 +349,6 @@ $messages = array(
 'vector-action-protect' => 'بیپارێزە',
 'vector-action-undelete' => 'سڕینەوە بگەڕێنەوە',
 'vector-action-unprotect' => 'پاراستنی بگۆڕە',
-'vector-simplesearch-preference' => 'گەڕانی ساکار چالاک بکە (تەنیا بۆ پێستەی ڤێکتۆر)',
 'vector-view-create' => 'دروستکردن',
 'vector-view-edit' => 'دەستکاریی بکە',
 'vector-view-history' => 'مێژووەکەی ببینە',
index 3295de0..c5c3837 100644 (file)
@@ -372,6 +372,7 @@ Parechji mudelli ùn seranu micca inclusi.",
 'searchrelated' => 'currilati',
 'showingresultsheader' => "{{PLURAL:$5|Risultatu '''$1''' di '''$3'''|Risultati '''$1 - $2''' di '''$3'''}} per '''$4'''",
 'search-nonefound' => 'A ricerca ùn hà micca datu risultati.',
+'powersearch-ns' => 'Circà in u spaziu di nomi',
 
 # Preferences page
 'preferences' => 'Preferenze',
index 1a71328..bca887e 100644 (file)
@@ -161,7 +161,6 @@ $messages = array(
 'vector-action-protect' => 'Protektahan',
 'vector-action-undelete' => 'Indi pag panason',
 'vector-action-unprotect' => 'Islan ang proteksyon',
-'vector-simplesearch-preference' => 'Paganahon ang ginpanami nga mga suhestiyon sa pagpangita (panit nga Vector lang)',
 'vector-view-create' => 'Ubrahon',
 'vector-view-edit' => 'Bag-uhon',
 'vector-view-history' => 'Ipakita ang kasaysayan',
index 6ee57e5..3b31fa7 100644 (file)
@@ -255,7 +255,6 @@ $messages = array(
 'vector-action-protect' => 'Къорчала',
 'vector-action-undelete' => 'Янъыдан ярат',
 'vector-action-unprotect' => 'Къорчалавны денъиштир',
-'vector-simplesearch-preference' => 'Саделештирильген къыдырув сатырыны ишлет (тек Вектор корюниши ичюн)',
 'vector-view-create' => 'Ярат',
 'vector-view-edit' => 'Денъиштир',
 'vector-view-history' => 'Кечмишини косьтер',
index 76fcec0..0f6c8c4 100644 (file)
@@ -249,7 +249,6 @@ $messages = array(
 'vector-action-protect' => 'Qorçala',
 'vector-action-undelete' => 'Yañıdan yarat',
 'vector-action-unprotect' => 'Qorçalavnı deñiştir',
-'vector-simplesearch-preference' => 'Sadeleştirilgen qıdıruv satırını işlet (tek Vektor körünişi içün)',
 'vector-view-create' => 'Yarat',
 'vector-view-edit' => 'Deñiştir',
 'vector-view-history' => 'Keçmişini köster',
index 5b9aec3..c9a98a6 100644 (file)
@@ -904,6 +904,9 @@ Než to zkusíte znovu, musíte počkat na vypršení lhůty $1.',
 'suspicious-userlogout' => 'Váš požadavek na odhlášení byl odmítnut, neboť to vypadá, že ho poslal rozbitý prohlížeč nebo cachující proxy.',
 'createacct-another-realname-tip' => 'Skutečné jméno je nepovinné.
 Pokud se ho rozhodnete uvést, bude použito pro označení autorství vaší práce.',
+'pt-login' => 'Přihlášení',
+'pt-createaccount' => 'Vytvoření účtu',
+'pt-userlogout' => 'Odhlásit se',
 
 # Email sending
 'php-mail-error-unknown' => 'Neznámá chyba v PHP funkci mail()',
@@ -912,7 +915,7 @@ Pokud se ho rozhodnete uvést, bude použito pro označení autorství vaší pr
 
 # Change password dialog
 'changepassword' => 'Změna hesla',
-'resetpass_announce' => 'Přihlašujete se dočasným heslem zaslaným e-mailem. Přihlášení lze dokončit po nastavení nového trvalého hesla.',
+'resetpass_announce' => 'Abyste dokončili přihlášení, musíte si nastavit nové heslo.',
 'resetpass_text' => '<!-- Sem přidejte text -->',
 'resetpass_header' => 'Změna hesla',
 'oldpassword' => 'Staré heslo:',
@@ -928,8 +931,13 @@ Pokud se ho rozhodnete uvést, bude použito pro označení autorství vaší pr
 'resetpass-submit-cancel' => 'Storno',
 'resetpass-wrong-oldpass' => 'Nesprávné dočasné nebo aktuální heslo.
 Možná jste si již úspěšně heslo změnili, nebo jste si vyžádali nové dočasné heslo.',
+'resetpass-recycled' => 'Jako nové heslo si prosím nastavte něco jiného než stávající heslo.',
+'resetpass-temp-emailed' => 'Přihlašujete se dočasným heslem zaslaným e-mailem.
+Abyste dokončili přihlášení, nastavte si zde nové heslo:',
 'resetpass-temp-password' => 'Dočasné heslo:',
 'resetpass-abort-generic' => 'Změna hesla byla zablokována rozšířením.',
+'resetpass-expired' => 'Platnost vašeho hesla vypršela. Pro přihlášení si nastavte nové heslo.',
+'resetpass-expired-soft' => 'Platnost vašeho hesla vypršela, musíte si nastavit nové. Zvolte si nové heslo nebo klikněte na storno a nastavte si ho později.',
 
 # Special:PasswordReset
 'passwordreset' => 'Reset hesla',
@@ -1774,11 +1782,23 @@ Vaše adresa v takovém případě není prozrazena.',
 '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>.',
 'rclistfrom' => 'Ukázat nové změny, počínaje od $1',
 'rcshowhideminor' => '$1 malé editace',
+'rcshowhideminor-show' => 'Zobrazit',
+'rcshowhideminor-hide' => 'Skrýt',
 'rcshowhidebots' => '$1 roboty',
+'rcshowhidebots-show' => 'Zobrazit',
+'rcshowhidebots-hide' => 'Skrýt',
 'rcshowhideliu' => '$1 registrované uživatele',
+'rcshowhideliu-show' => 'Zobrazit',
+'rcshowhideliu-hide' => 'Skrýt',
 'rcshowhideanons' => '$1 anonymní uživatele',
+'rcshowhideanons-show' => 'Zobrazit',
+'rcshowhideanons-hide' => 'Skrýt',
 'rcshowhidepatr' => '$1 prověřené editace',
+'rcshowhidepatr-show' => 'Zobrazit',
+'rcshowhidepatr-hide' => 'Skrýt',
 'rcshowhidemine' => '$1 moje editace',
+'rcshowhidemine-show' => 'Zobrazit',
+'rcshowhidemine-hide' => 'Skrýt',
 'rclinks' => 'Ukázat $1 posledních změn během posledních $2 dnů<br />
 $3',
 'diff' => 'rozdíl',
@@ -1900,6 +1920,7 @@ Před tím, než soubor znovu nahrajete, byste měli požádat někoho, kdo mů
 'uploaddisabledtext' => 'Načítání souborů je vypnuto.',
 'php-uploaddisabledtext' => 'V PHP je vypnuto načítání souborů. Prosím, zkontrolujte nastavení file_uploads.',
 'uploadscripted' => 'Tento soubor obsahuje HTML nebo kód skriptu, který by mohl být prohlížečem chybně interpretován.',
+'uploadinvalidxml' => 'XML v načteném souboru nelze zpracovat.',
 'uploadvirus' => 'Tento soubor obsahuje virus! Podrobnosti: $1',
 'uploadjava' => 'Tento soubor je ZIP, který obsahuje javový soubor .class.
 Načítání javových souborů není dovoleno, neboť by mohly umožnit obcházení bezpečnostních omezení.',
@@ -2266,6 +2287,7 @@ Každý řádek obsahuje odkaz na první a druhé přesměrování a k tomu cíl
 'deadendpagestext' => 'Následující stránky neodkazují na žádnou jinou stránku {{grammar:2sg|{{SITENAME}}}}.',
 'protectedpages' => 'Zamčené stránky',
 'protectedpages-indef' => 'Pouze zámky na neurčito',
+'protectedpages-summary' => 'Tato stránka obsahuje seznam existujících stránek, které jsou momentálně zamčeny. Seznam názvů zamčených proti založení najdete na [[{{#special:ProtectedTitles}}]].',
 'protectedpages-cascade' => 'Pouze kaskádové zámky',
 'protectedpages-noredirect' => 'Skrýt přesměrování',
 'protectedpagesempty' => 'Žádná stránka není zamčena s těmito parametry.',
@@ -2278,6 +2300,7 @@ Každý řádek obsahuje odkaz na první a druhé přesměrování a k tomu cíl
 'protectedpages-unknown-timestamp' => 'Neznámé',
 'protectedpages-unknown-performer' => 'Neznámý uživatel',
 'protectedtitles' => 'Zamčené názvy stránek',
+'protectedtitles-summary' => 'Tato stránka obsahuje seznam názvů, které jsou momentálně zamčeny proti založení. Seznam existujících zamčených stránek najdete na [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'S těmito parametry nejsou zamčeny žádné názvy.',
 'listusers' => 'Uživatelé',
 'listusers-editsonly' => 'Zobrazit pouze uživatele s editacemi',
@@ -3169,6 +3192,7 @@ Uložte jej na svůj disk a nahrajte ho sem.',
 'print.css' => '/* Zde uvedené CSS bude ovlivňovat tiskový výstup */',
 'noscript.css' => '/* Zde uvedené CSS bude ovlivňovat uživatele s vypnutým JavaScriptem */',
 'group-autoconfirmed.css' => '/* Zde uvedené CSS bude ovlivňovat pouze automaticky schválené uživatele */',
+'group-user.css' => '/* Zde uvedené CSS bude ovlivňovat pouze registrované uživatele */',
 'group-bot.css' => '/* Zde uvedené CSS bude ovlivňovat pouze boty */',
 'group-sysop.css' => '/* Zde uvedené CSS bude ovlivňovat pouze správce */',
 'group-bureaucrat.css' => '/* Zde uvedené CSS bude ovlivňovat pouze byrokraty */',
@@ -3180,6 +3204,7 @@ Uložte jej na svůj disk a nahrajte ho sem.',
 'modern.js' => '/* JavaScript pro uživatele používající vzhled „Moderní“ */',
 'vector.js' => '/* JavaScript pro uživatele používající vzhled „Vektor“ */',
 'group-autoconfirmed.js' => '/* Zde uvedený JavaScript bude použit pouze pro automaticky schválené uživatele */',
+'group-user.js' => '/* Zde uvedený JavaScript bude použit pouze pro registrované uživatele */',
 'group-bot.js' => '/* Zde uvedený JavaScript bude použit pouze pro boty */',
 'group-sysop.js' => '/* Zde uvedený JavaScript bude použit pouze pro správce */',
 'group-bureaucrat.js' => '/* Zde uvedený JavaScript bude použit pouze pro byrokraty */',
@@ -3565,6 +3590,7 @@ Obsahuje pouze seznam s odrážkami (řádka začíná s *). První odkaz na ř
 'exif-compression-2' => '1-rozměrné modifikované Huffmanovo kódování délky běhu CCITT Group 3',
 'exif-compression-3' => 'Kódování faxů CCITT Group 3',
 'exif-compression-4' => 'Kódování faxů CCITT Group 4',
+'exif-compression-6' => 'JPEG (starý)',
 
 'exif-copyrighted-true' => 'Chráněno autorským právem',
 'exif-copyrighted-false' => 'Bez informací o autorských právech',
@@ -4307,6 +4333,4 @@ V podstatě rozbalí prakticky všechno v dvojitých složených závorkách.',
 'expand_templates_generate_rawhtml' => 'Zobrazit surové HTML',
 'expand_templates_preview' => 'Náhled',
 
-# Unknown messages
-'uploadinvalidxml' => 'XML v načteném souboru nelze zpracovat.',
 );
index 47b2968..f4fe54c 100644 (file)
@@ -181,7 +181,6 @@ $messages = array(
 'vector-action-protect' => 'Zazychrëjë',
 'vector-action-undelete' => 'Doprowôdzë nazôd',
 'vector-action-unprotect' => 'Òdzychrëjë',
-'vector-simplesearch-preference' => 'Włączë awansowóné pòdpòwiescë szëkbë (blós dlô skórczi Wektor)',
 'vector-view-create' => 'Ùsôdzë',
 'vector-view-edit' => 'Edicëjô',
 'vector-view-history' => 'Historëjô lopka',
index 4d52199..f97aec1 100644 (file)
@@ -47,16 +47,13 @@ $linkPrefixCharset = 'a-zA-Z"\\x{80}-\\x{10ffff}';
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Ссылкăсене аялтан туртса палармалла:',
-'tog-justify' => 'Страницăри текста сарлакăшĕпе вырнаçтармалла',
 'tog-hideminor' => 'Юлашки улшăнусене кăтарнă страницăра пĕчĕк тӳрлетӳ çеç кĕртнисене кăтартмалла мар',
 'tog-extendwatchlist' => 'Пĕтĕм улшăнусене кăтартакан анлă сăнав списокĕ',
 'tog-usenewrc' => 'Юлашки улшăнусен лайăхлатнă списокĕ (JavaScript)',
 'tog-numberheadings' => 'Заголовоксене хăй тĕллĕн номерлесе пымалла.',
 'tog-showtoolbar' => 'Тӳрлетнĕ чухне çӳлти хатĕрсен хăмине кăтартмалла (JavaScript)',
 'tog-editondblclick' => 'Иккĕ пуссан статьяна тӳрлетмелле (JavaScript)',
-'tog-editsection' => '«Тӳрлет» ссылкăна кашни пайра кăтартмалла',
 'tog-editsectiononrightclick' => 'Шăшин сылтăм пускăчне пуссан статья пайне тӳрлетмелле (JavaScript)',
-'tog-showtoc' => 'Тупмаллине кăтартмалла (3, е ытларах заголовок пулсан)',
 'tog-rememberpassword' => 'Мана ку компьютер çинче астуса хăвармалла (for a maximum of $1 {{PLURAL:$1|1=day|days}})',
 'tog-watchcreations' => 'Эпĕ тунă страницăсене сăнав списокне кĕртмелле',
 'tog-watchdefault' => 'Тӳрлетнĕ страницăсене сăнав списокне кĕртмелле',
index 5b194d8..3e538a3 100644 (file)
@@ -647,6 +647,9 @@ Oedwch $1 cyn mentro eto.',
 'suspicious-userlogout' => 'Gwrthodwyd eich cais i allgofnodi oherwydd ei fod yn ymddangos mai gweinydd wedi torri neu ddirprwy gelc a anfonodd y cais.',
 'createacct-another-realname-tip' => "Gallwch ddewis roi eich enw go iawn.
 Os y gwnewch, fe gaiff yr enw go iawn ei defnyddio wrth dadogi'ch gwaith.",
+'pt-login' => 'Mewngofnodwch',
+'pt-createaccount' => 'Creu cyfri',
+'pt-userlogout' => 'Allgofnodi',
 
 # Email sending
 'php-mail-error-unknown' => 'Gwall anhysbys yng ngweithrediad post() PHP',
@@ -655,22 +658,27 @@ Os y gwnewch, fe gaiff yr enw go iawn ei defnyddio wrth dadogi'ch gwaith.",
 
 # Change password dialog
 'changepassword' => 'Newid y cyfrinair',
-'resetpass_announce' => "Fe wnaethoch fewngofnodi gyda chôd dros dro oddi ar e-bost.
-Er mwyn cwblhau'r mewngofnodi, rhaid i chi osod cyfrinair newydd fel hyn:",
+'resetpass_announce' => 'I orffen mewngofnodi, rhaid i chi bennu cyfrinair newydd.',
 'resetpass_header' => 'Newid cyfrinair y cyfrif',
 'oldpassword' => 'Hen gyfrinair:',
 'newpassword' => 'Cyfrinair newydd:',
 'retypenew' => 'Ail-deipiwch y cyfrinair newydd:',
 'resetpass_submit' => 'Gosod y cyfrinair a mewngofnodi',
 'changepassword-success' => "Llwyddodd y newid i'ch cyfrinair!",
+'changepassword-throttled' => 'Rydych wedi ceisio logio mewn yn rhy aml.
+Arhoswch am $1 cyn trio eto.',
 'resetpass_forbidden' => 'Ni ellir newid cyfrineiriau',
 'resetpass-no-info' => 'Ni allwch fynd at y dudalen hon yn uniongyrchol heblaw eich bod wedi mewngofnodi.',
 'resetpass-submit-loggedin' => 'Newidier y cyfrinair',
 'resetpass-submit-cancel' => 'Diddymu',
 'resetpass-wrong-oldpass' => "Mae'r cyfrinair dros dro neu gyfredol yn annilys.
 Gall fod eich bod wedi llwyddo newid eich cyfrinair eisoes neu eich bod wedi gofyn am gyfrinair dros dro newydd.",
+'resetpass-recycled' => 'Ailosodwch eich cyfrinair os gwelwch yn dda i rywbeth heblaw eich cyfrinair cyfredol.',
+'resetpass-temp-emailed' => "Rydych wedi mewngofnodi gyda chod dros dro. I gwbwlhau hyn, mae'n rhaid i chi ailosod eich cyfrinair yma:",
 'resetpass-temp-password' => 'Cyfrinair dros dro:',
 'resetpass-abort-generic' => 'Mae estyniad wedi atal newid y cyfrinair.',
+'resetpass-expired' => 'Mae oes eich cyfrinair wedi dod i ben. Gosodwch gyfrinair newydd i fewngofnodi.',
+'resetpass-expired-soft' => "Mae eich cyfrinair wedi dod i ben ac mae'n rhaid ei ailosod. Dewisiwch gyfrinair newydd sbon nawr, neu ailosodwch ef rywdro eto.",
 
 # Special:PasswordReset
 'passwordreset' => 'Ailosod cyfrinair',
@@ -714,6 +722,8 @@ Y cyfrinair dros dro: $2",
 'changeemail-password' => 'Eich cyfrinair ar {{SITENAME}}:',
 'changeemail-submit' => 'Newidier y cyfeiriad e-bost',
 'changeemail-cancel' => 'Diddymer',
+'changeemail-throttled' => "'Da chi wedi trio mewngofnodi gormod o weithiau.
+Daliwch eich gafael am $1 cyn ceisio eto.",
 
 # Special:ResetTokens
 'resettokens' => 'Ailosod tocynnau',
@@ -927,6 +937,8 @@ Mae ar gael yn barod.',
 'content-not-allowed-here' => 'Nid yw cynnwys ar ffurf "$1" yn cael ei ganiatau ar y dudalen [[$2]]',
 'editwarning-warning' => 'Os y gadewch y dudalen hon mae\'n bosib y collwch eich newidiadau iddi.
 Os ydych wedi mewngofnodi gallwch ddiddymu\'r rhybudd hwn yn yr adran "{{int:prefs-editing}}" yn eich dewisiadau.',
+'editpage-notsupportedcontentformat-title' => 'Dydy fformat y cynnwys hwn ddim yn cael ei gefnogi gennym.',
+'editpage-notsupportedcontentformat-text' => 'Dydy fformat y cynnwys ddim yn cael ei gefnogi gan gynnwys model $2.',
 
 # Content models
 'content-model-wikitext' => 'cystrawen wici',
@@ -960,6 +972,7 @@ Cafodd yr argiau hyn eu hepgor.",
 'undo-success' => "Gellir dadwneud y golygiad. Byddwch gystal â gwirio'r gymhariaeth isod i sicrhau mai dyma sydd arnoch eisiau gwneud, ac yna rhowch y newidiadau ar gadw i gwblhau'r gwaith o ddadwneud y golygiad.",
 'undo-failure' => 'Methwyd a dadwneud y golygiad oherwydd gwrthdaro â golygiadau cyfamserol.',
 'undo-norev' => "Ni ellid dadwneud y golygiad oherwydd nad yw'n bod neu iddo gael ei ddileu.",
+'undo-nochange' => 'Ymddengys fod y golygiad wedi ei ddadwneud yn barod.',
 'undo-summary' => 'Dadwneud y golygiad $1 gan [[Special:Contributions/$2|$2]] ([[User talk:$2|Sgwrs]] | [[Special:Contributions/$2|{{MediaWiki:Contribslink}}]])',
 'undo-summary-username-hidden' => 'Dadwneud y golygiad $1 gan ddefnyddiwr cudd',
 
@@ -1140,6 +1153,7 @@ Pan yn gwneud hyn dylid sicrhau nad yw dilyniant hanes tudalennau yn cael ei ddi
 'showhideselectedversions' => 'Dangos/cuddio y diwygiadau dewisedig',
 'editundo' => 'dadwneud',
 'diff-empty' => '(Dim gwahaniaeth)',
+'diff-multi-sameuser' => 'Mae ({{PLURAL:$1|un golygiad|$1 golygiadau}} gan yr un defnyddiwr heb ei ddangos.',
 'diff-multi-manyusers' => '(Ni ddangosir {{PLURAL:$1|yr $1 diwygiad|yr $1 diwygiad|y $1 ddiwygiad|y $1 diwygiad|y $1 diwygiad|y $1 diwygiad}} rhyngol gan mwy na $2 {{PLURAL:$2|o ddefnyddwyr}}.)',
 'difference-missing-revision' => "Ni chafwyd hyd i $1 {{PLURAL:$2|diwygiad|diwygiad|ddiwygiad|diwygiad}} o'r gwahaniaeth ($1) {{PLURAL:$2|hwn}}.
 
@@ -1185,6 +1199,7 @@ Mae manylion pellach i'w cael yn [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'searchrelated' => 'erthyglau eraill tebyg',
 'searchall' => 'oll',
 'showingresults' => "Yn dangos $1 {{PLURAL:$1|canlyniad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} isod gan ddechrau gyda rhif '''$2'''.",
+'showingresultsinrange' => 'Yn cael ei ddangos isod yn y rhediad Showing below up to {{PLURAL:$1|<strong>1</strong> result|<strong>$1</strong> results}} #<strong>$2</strong> i #<strong>$3</strong>.',
 'showingresultsnum' => "Yn dangos $3 {{PLURAL:$3|canlyniad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} isod gan ddechrau gyda rhif '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5||Canlyniad '''$1''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''}} ar gyfer '''$4'''",
 'search-nonefound' => "Ni chafwyd dim canlyniadau i'r ymholiad.",
@@ -1638,6 +1653,7 @@ Cyn i chi ail-lwytho'r ffeil, dylech holi i rywun â'r gallu ganddo i weld data
 'php-uploaddisabledtext' => 'Anablwyd uwchlwytho ffeiliau yn PHP.
 Gwiriwch y gosodiad ar file_uploads.',
 'uploadscripted' => "Mae'r ffeil hon yn cynnwys HTML neu sgript a all achosi problemau i borwyr gwe.",
+'uploadinvalidxml' => "Ni ellid dosrannu'r XML yn y ffeil a uwchlwythwyd.",
 'uploadvirus' => 'Mae firws gan y ffeil hon! Manylion: $1',
 'uploadjava' => "Ffeil ZIP yw hwn sy'n cynnwys ffeil Java .class.
 Ni chaniateir uwchlwytho ffeiliau Java, oherwydd y gallant osgoi cyfyngiadau diogelwch.",
@@ -2194,6 +2210,7 @@ Pan fydd y dudalen hon, neu ei thudalen sgwrs, yn newid, fe fyddant yn ymddangos
 'watchmethod-list' => "yn chwilio'r tudalennau ar y rhestr wylio am ddiwygiadau diweddar",
 'watchlistcontains' => '{{PLURAL:$1|Nid oes dim tudalennau|Mae $1 dudalen|Mae $1 dudalen|Mae $1 tudalen|Mae $1 thudalen|Mae $1 o dudalennau}} ar eich rhestr wylio.',
 'iteminvalidname' => "Problem gyda'r eitem '$1', enw annilys...",
+'wlnote2' => 'Isod, fe welwch y newidiadau yn yr  {{PLURAL:$1|hour|<strong>$1</strong> awr diwethaf}}, a hynny ar $2, $3.',
 'wlshowlast' => "Dangoser newidiadau'r $1 awr ddiwethaf neu'r $2 {{PLURAL:$2|diwrnod|diwrnod|ddiwrnod|diwrnod|diwrnod|diwrnod}} diwethaf neu'r $3 newidiadau.",
 'watchlist-options' => 'Dewisiadau ar gyfer y rhestr wylio',
 
@@ -2769,6 +2786,7 @@ $2',
 'thumbnail_image-type' => "Nid yw'r math hwn o ddelwedd yn cael ei gynnal",
 'thumbnail_gd-library' => 'Mae ffurfwedd y llyfrgell GD yn anghyflawn: y ffwythiant $1 yn eisiau',
 'thumbnail_image-missing' => "Mae'n debyg bod y ffeil yn eisiau: $1",
+'thumbnail_image-failure-limit' => "'Da chi 'di methu gormod o weithiau (\$ neu fwy) i rendro'r ciplun. Ceisiwch eto nes ymlaen.",
 
 # Special:Import
 'import' => 'Mewnforio tudalennau',
@@ -3958,6 +3976,4 @@ Defnydd:
 'expand_templates_generate_rawhtml' => 'Dangos HTML crai',
 'expand_templates_preview' => 'Rhagolwg',
 
-# Unknown messages
-'uploadinvalidxml' => "Ni ellid dosrannu'r XML yn y ffeil a uwchlwythwyd.",
 );
index b46cbe9..123c5e7 100644 (file)
@@ -357,7 +357,6 @@ $messages = array(
 'vector-action-protect' => 'Beskyt',
 'vector-action-undelete' => 'Gendan',
 'vector-action-unprotect' => 'Ændr beskyttelse',
-'vector-simplesearch-preference' => 'Aktivér forenklet søgefelt (kun Vector-udseendet)',
 'vector-view-create' => 'Opret',
 'vector-view-edit' => 'Redigér',
 'vector-view-history' => 'Se historik',
@@ -732,6 +731,9 @@ Vent venligst $1, før du prøver igen.',
 'suspicious-userlogout' => 'Din anmodning om at logge af blev nægtet, fordi det ser ud som den blev sendt af en ødelagt browser eller caching proxy.',
 'createacct-another-realname-tip' => 'Angivelse af rigtigt navn er valgfrit.
 Hvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit arbejde.',
+'pt-login' => 'Log på',
+'pt-createaccount' => 'Opret konto',
+'pt-userlogout' => 'Log af',
 
 # Email sending
 'php-mail-error-unknown' => 'Ukendt fejl i PHP funktionen mail()',
@@ -756,8 +758,13 @@ Vent venligst $1, før du prøver igen.',
 'resetpass-submit-cancel' => 'Annuller',
 'resetpass-wrong-oldpass' => 'Ugyldig midlertidig eller gældende adgangskode.
 Du har muligvis allerede skiftet din adgangskode eller anmodet om en ny midlertidig kode.',
+'resetpass-recycled' => 'Vær venlig at ændre dit kodeord til et andet end dit nuværende kodeord.',
+'resetpass-temp-emailed' => 'Du loggede på med en midlertidig kode tilsendt på e-mail.
+For at afslutte indlogning, skal du oprette et nyt kodeord:',
 'resetpass-temp-password' => 'Midlertidig adgangskode',
 'resetpass-abort-generic' => 'Ændring af adgangskode er blevet afbrudt af en udvidelse',
+'resetpass-expired' => 'Dit kodeord er udløbet. Vær venlig at ændre det til et nyt.',
+'resetpass-expired-soft' => 'Dit kodeord er udløbet og skal ændres. Vær venlig at ændre det nu, eller tryk annuller for at ændre det senere.',
 
 # Special:PasswordReset
 'passwordreset' => 'Nulstil adgangskode',
@@ -1021,6 +1028,8 @@ Den ser du til at være slettet.',
 'content-not-allowed-here' => '"$1" indhold er ikke tilladt på siden [[$2]]',
 'editwarning-warning' => 'Hvis du forlader siden nu, risikerer du at miste alle ændringer, som du har lavet.
 Denne advarsel kan slås fra under "{{int:prefs-editing}}" i dine indstillinger.',
+'editpage-notsupportedcontentformat-title' => 'Indholdsformatet understøttes ikke',
+'editpage-notsupportedcontentformat-text' => 'Indholdsformatet $1 understøttes ikke af indholdsmodellen $2',
 
 # Content models
 'content-model-wikitext' => 'wikitekst',
@@ -1053,6 +1062,7 @@ Der bør være færre end {{PLURAL:$2|$2 kald}}, lige nu er der {{PLURAL:$1|$1 k
 Kontroller venligst sammenligningen herunder for at bekræfte at det er hvad du ønsker at gøre, og gem så ændringerne for at fuldføre fjernelsen.',
 'undo-failure' => 'Redigeringen kunne ikke fjernes på grund af konflikter med efterfølgende redigeringer.',
 'undo-norev' => 'Redigeringen kunne ikke fjernes fordi den ikke findes eller er blevet slettet.',
+'undo-nochange' => 'Ændringen ser ud til allerede at være blevet fjernet.',
 'undo-summary' => 'Fjerner version $1 af [[Special:Contributions/$2|$2]] ([[User talk:$2|diskussion]])',
 'undo-summary-username-hidden' => 'Fortryde revision $1 af en skjult bruger',
 
@@ -1232,6 +1242,8 @@ Vær opmæksom på at bevare kontinuiteten i sidehistorikken.
 'showhideselectedversions' => 'Vis/skjul udvalgte versioner',
 'editundo' => 'fjern redigering',
 'diff-empty' => '(Ingen forskel)',
+'diff-multi-sameuser' => '({{PLURAL:$1|En mellemliggende version|$1 mellemliggende versioner}} af den samme bruger, vises ikke)',
+'diff-multi-otherusers' => '({{PLURAL:$1|En mellemliggende version|$1 mellemliggende versioner}} af {{PLURAL:$2|en anden bruger|$2 andre brugere}} ikke vist)',
 'diff-multi-manyusers' => '({{PLURAL:$1|En mellemliggende version|$1 mellemliggende versioner}} af mere end $2 {{PLURAL:$2|bruger|brugere}} ikke vist)',
 'difference-missing-revision' => '{{PLURAL:$2|En revision|$2 revisioner}} af denne forskel ($1) {{PLURAL:$2|blev|blev}} ikke fundet.
 
@@ -1252,7 +1264,7 @@ Detaljer kan findes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'shown-title' => 'Vis $1 {{PLURAL:$1|resultat|resultater}} per side',
 'viewprevnext' => 'Vis ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Der er en side med navnet \"[[:\$1]]\" på denne wiki'''",
-'searchmenu-new' => "'''Opret siden \"[[:\$1]]\" i denne wiki'''",
+'searchmenu-new' => '<strong>Opret siden "[[:$1]]" på denne wiki!</strong> {{PLURAL:$2|0=|Se også siden der blev fundet for din søgning.|Se også de søgeresultater der blev fundet.}}',
 'searchprofile-articles' => 'Indholdssider',
 'searchprofile-project' => 'Hjælpe- og projektsider',
 'searchprofile-images' => 'Multimedia',
@@ -1598,11 +1610,23 @@ Vær venlig at gennemse og bekræft dine ændringer.',
 'rcnotefrom' => "Nedenfor er op til '''$1''' ændringer siden '''$2''' vist.",
 'rclistfrom' => 'Vis nye ændringer startende fra $1',
 'rcshowhideminor' => '$1 mindre ændringer',
+'rcshowhideminor-show' => 'Vis',
+'rcshowhideminor-hide' => 'Skjul',
 'rcshowhidebots' => '$1 robotter',
+'rcshowhidebots-show' => 'Vis',
+'rcshowhidebots-hide' => 'Skjul',
 'rcshowhideliu' => '$1 registrerede brugere',
+'rcshowhideliu-show' => 'Vis',
+'rcshowhideliu-hide' => 'Skjul',
 'rcshowhideanons' => '$1 anonyme brugere',
+'rcshowhideanons-show' => 'Vis',
+'rcshowhideanons-hide' => 'Skjul',
 'rcshowhidepatr' => '$1 kontrollerede ændringer',
+'rcshowhidepatr-show' => 'Vis',
+'rcshowhidepatr-hide' => 'Skjul',
 'rcshowhidemine' => '$1 egne bidrag',
+'rcshowhidemine-show' => 'Vis',
+'rcshowhidemine-hide' => 'Skjul',
 'rclinks' => 'Vis seneste $1 ændringer i de sidste $2 dage<br />$3',
 'diff' => 'forskel',
 'hist' => 'historik',
@@ -1727,6 +1751,7 @@ Du bør spørge en person med evnen til at se undertrykte fildata for at gennemg
 'uploaddisabledtext' => 'Oplægning af filer er deaktiveret.',
 'php-uploaddisabledtext' => 'Oplægning af filer er forhindret i PHP. Tjek indstillingen for file_uploads.',
 'uploadscripted' => 'Denne fil indeholder HTML eller script-kode, der i visse tilfælde can fejlfortolkes af en browser.',
+'uploadinvalidxml' => 'XML i den uploadede fil kunne ikke tolkes.',
 'uploadvirus' => 'Denne fil indeholder en virus! Virusnavn: $1',
 'uploadjava' => 'Denne fil er en ZIP-fil, der indeholder en Java .class-fil.
 Det er ikke tilladt at uploade Javafiler, da det kan forårsage, at sikkerhedsrestriktioner bliver sprunget over.',
@@ -2093,10 +2118,20 @@ Hver linje indeholder henvisninger til den første og den anden omdirigering, s
 'deadendpagestext' => 'De følgende sider henviser ikke til andre sider i denne wiki.',
 'protectedpages' => 'Skrivebeskyttede sider',
 'protectedpages-indef' => 'Kun beskyttelser på ubestemt tid',
+'protectedpages-summary' => 'Denne side indeholder en liste over eksisterende sider, der i øjeblikket er beskyttet. For en liste over titler, der er beskyttet fra oprettelse, se [[{{#special:ProtectedTitles}}]].',
 'protectedpages-cascade' => 'Kun nedarvende beskyttelser',
 'protectedpages-noredirect' => 'Skjul omdirigeringer',
 'protectedpagesempty' => 'I øjeblikket er ingen sider beskyttet på denne måde.',
+'protectedpages-timestamp' => 'Tidsstempel',
+'protectedpages-page' => 'Side',
+'protectedpages-expiry' => 'Udløber',
+'protectedpages-performer' => 'Beskyttende bruger',
+'protectedpages-params' => 'Beskyttelsesparametre',
+'protectedpages-reason' => 'Årsag',
+'protectedpages-unknown-timestamp' => 'Ukendt',
+'protectedpages-unknown-performer' => 'Ukendt bruger',
 'protectedtitles' => 'Beskyttede sidenavne',
+'protectedtitles-summary' => 'Denne side indeholder en liste over titler, der i øjeblikket er beskyttet fra oprettelse. For en liste over eksisterende sider, der er beskyttet, se [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'Der er ingen sidetitler der er beskyttet med disse parametre.',
 'listusers' => 'Brugerliste',
 'listusers-editsonly' => 'Vis kun brugere med redigeringer',
@@ -2283,6 +2318,7 @@ Fremtidige ændringer af denne side og dens tilknyttede diskussionsside vil bliv
 'watchmethod-list' => 'Tjekker seneste ændringer for sider i din overvågningsliste',
 'watchlistcontains' => 'Din overvågningsliste indeholder $1 {{PLURAL:$1|side|sider}}.',
 'iteminvalidname' => "Problem med '$1', ugyldigt navn...",
+'wlnote2' => 'Nedenfor ses ændringerne i {{PLURAL:$1|den sidste time|de sidste <strong>$1</strong> timer}} op til den $2 kl. $3.',
 'wlshowlast' => 'Vis de seneste $1 timer $2 dage $3',
 'watchlist-options' => 'Indstillinger for overvågningslisten',
 
@@ -2367,7 +2403,7 @@ Bekræft venligst at du virkelig vil gøre dette, at du forstår konsekvenserne,
 'delete-edit-reasonlist' => 'Rediger sletningsårsager',
 'delete-toobig' => 'Denne side har en stor historik, over {{PLURAL:$1|en version|$1 versioner}}. Sletning af sådanne sider er begrænset, for at forhindre utilsigtet forstyrrelse af {{SITENAME}}.',
 'delete-warning-toobig' => 'Denne side har en stor historik, over {{PLURAL:$1|en version|$1 versioner}} versioner, slettes den kan det forstyrre driften af {{SITENAME}}, gå forsigtigt frem.',
-'deleting-backlinks-warning' => "'''Advarsel:''' Andre sider linker til den side, du er ved at slette.",
+'deleting-backlinks-warning' => "'''Advarsel:''' Andre sider linker til eller inkluderer den side, du er ved at slette.",
 
 # Rollback
 'rollback' => 'Fjern redigeringer',
@@ -2602,6 +2638,7 @@ Angiv en konkret begrundelse herunder (for eksempel med angivelse af sider der h
 Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.',
 'ipb-blockingself' => 'Du er ved at blokere dig selv! Er du sikker på, du vil gøre det?',
 'ipb-confirmhideuser' => 'Du er ved at blokere en bruger med "skjul bruger" aktiveret. Dette vil skjule brugerens navn på alle lister og logposter. Er du sikker på du vil gøre det?',
+'ipb-confirmaction' => 'Hvis du er sikker på, at du virkelig ønsker at gøre det, kan du markerer feltet "{{int:ipb-confirm}}" nederst.',
 'ipb-edit-dropdown' => 'Rediger blokeringsbegrundelser',
 'ipb-unblock-addr' => 'Ophæv blokeringen af "$1"',
 'ipb-unblock' => 'Frigive IP-adresse/bruger',
@@ -2643,8 +2680,8 @@ Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.',
 'change-blocklink' => 'ændring af blokering',
 'contribslink' => 'bidrag',
 'emaillink' => 'send e-mail',
-'autoblocker' => 'Du er automatisk blokeret, fordi du deler IP-adresse med "[[User:$1|$1]]".
-Begrundelse: "$2".',
+'autoblocker' => 'Du er automatisk blokeret, fordi din IP-adresse for nylig er blevet brugt af "[[User:$1|$1]]".
+Begrundelsen for blokeringen af $1 er "$2".',
 'blocklogpage' => 'Blokeringslog',
 'blocklog-showlog' => 'Denne bruger har tidligere været blokeret.
 Blokeringsloggen vises nedenfor som reference:',
@@ -2666,7 +2703,7 @@ Se [[Special:BlockList|blokeringslisten]] for den nuværende liste med aktuelle
 'range_block_disabled' => 'Sysop-muligheden for at oprette blokeringsklasser er slået fra.',
 'ipb_expiry_invalid' => 'Udløbstiden er ugyldig.',
 'ipb_expiry_temp' => 'Brugernavnet kan kun skjules ved permanente blokeringer.',
-'ipb_hide_invalid' => 'Kan ikke skjule denne konto; den kan have for mange redigeringer.',
+'ipb_hide_invalid' => 'Kan ikke skjule denne konto; den har mere end {{PLURAL:$1|en redigering|$1 redigeringer}}.',
 'ipb_already_blocked' => '„$1“ er allerede blokeret',
 'ipb-needreblock' => '$1 er allerede blokeret. Vil du ændre indstillingerne?',
 'ipb-otherblocks-header' => 'Yderligere {{PLURAL:$1|blokering|blokeringer}}',
@@ -2828,6 +2865,7 @@ Besøg venligst [https://www.mediawiki.org/wiki/Localisation MediaWiki-lokaliser
 'allmessages-prefix' => 'Filtrér efter forstavelse:',
 'allmessages-language' => 'Sprog:',
 'allmessages-filter-submit' => 'Udfør',
+'allmessages-filter-translate' => 'Oversæt',
 
 # Thumbnails
 'thumbnail-more' => 'Forstør',
@@ -2878,7 +2916,7 @@ Alle Transwiki import-aktioner protokolleres i [[Special:Log/import|import-logge
 'importuploaderrortemp' => 'Upload af importfil mislykkedes da en midlertidig mappe mangler.',
 'import-parse-failure' => 'XML fortolkningsfejl under importering',
 'import-noarticle' => 'Der er ingen sider at importere!',
-'import-nonewrevisions' => 'Alle versioner er allerede importeret.',
+'import-nonewrevisions' => 'Ingen versioner importeret (alle var enten allerede til stede, eller blev sprunget over på grund af fejl).',
 'xml-error-string' => '$1 på linje $2, kolonne $3 (byte $4): $5',
 'import-upload' => 'Upload XML-data',
 'import-token-mismatch' => 'Sessionsdata er mistet. Prøv venligst igen.',
@@ -2889,6 +2927,7 @@ Alle Transwiki import-aktioner protokolleres i [[Special:Log/import|import-logge
 'import-error-special' => 'Siden "$1" importeres ikke, da den tilhører et særligt navnerum, der ikke tillader sider.',
 'import-error-invalid' => 'Siden "$1" importeres ikke, da dens navn er ugyldigt.',
 'import-error-unserialize' => 'Ændring $2 af siden "$1" kunne ikke afserialiseres. Ændringen brugte indholdsmodel $3 serialiseret som $4.',
+'import-error-bad-location' => 'Version $2 der bruger indholdsmodellen $3 kan ikke gemmes på "$1" på denne wiki, da denne model ikke understøttes på denne side.',
 'import-options-wrong' => '{{PLURAL:$2|Ugyldig indstilling|Ugyldige indstillinger}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Den rodside der er angivet har en ugyldig titel.',
 'import-rootpage-nosubpage' => 'Navnerummet "$1" tillader ikke undersider af rodsiderne.',
index 83bbb66..571001d 100644 (file)
@@ -966,6 +966,9 @@ Bitte warte $1, bevor du es erneut probierst.',
 'suspicious-userlogout' => 'Deine Abmeldeanfrage wurde verweigert, da sie vermutlich von einem defekten Browser oder einem Cache-Proxy gesendet wurde.',
 'createacct-another-realname-tip' => 'Der bürgerliche Name ist optional.
 Wenn du ihn angibst, wird er für die Zuordnung der Beiträge verwendet.',
+'pt-login' => 'Anmelden',
+'pt-createaccount' => 'Benutzerkonto erstellen',
+'pt-userlogout' => 'Abmelden',
 
 # Email sending
 'php-mail-error-unknown' => 'Unbekannter Fehler mit der Funktion mail() von PHP',
@@ -974,7 +977,7 @@ Wenn du ihn angibst, wird er für die Zuordnung der Beiträge verwendet.',
 
 # Change password dialog
 'changepassword' => 'Passwort ändern',
-'resetpass_announce' => 'Anmeldung mit dem per E-Mail zugesandten Code. Um die Anmeldung abzuschließen, musst du jetzt ein neues Passwort wählen.',
+'resetpass_announce' => 'Um die Anmeldung abzuschließen, musst du ein neues Passwort wählen.',
 'resetpass_text' => '<!-- Ergänze den Text hier -->',
 'resetpass_header' => 'Passwort ändern',
 'oldpassword' => 'Altes Passwort:',
@@ -990,8 +993,13 @@ Bitte warte $1, bevor du es erneut versuchst.',
 'resetpass-submit-cancel' => 'Abbrechen',
 'resetpass-wrong-oldpass' => 'Ungültiges temporäres oder aktuelles Passwort.
 Möglicherweise hast du dein Passwort bereits erfolgreich geändert oder ein neues temporäres Passwort beantragt.',
+'resetpass-recycled' => 'Bitte setze dein Passwort auf ein anderes Passwort als dein aktuelles fest.',
+'resetpass-temp-emailed' => 'Du hast dich mit einem temporären E-Mail-Code angemeldet.
+Um die Anmeldung abzuschließen, musst du jetzt ein neues Passwort festlegen:',
 'resetpass-temp-password' => 'Temporäres Passwort:',
 'resetpass-abort-generic' => 'Die Passwortänderung wurde durch eine Erweiterung abgebrochen.',
+'resetpass-expired' => 'Dein Passwort ist abgelaufen. Bitte lege ein neues Passwort zur Anmeldung fest.',
+'resetpass-expired-soft' => 'Dein Passwort ist abgelaufen und muss zurückgesetzt werden. Bitte wähle jetzt ein neues Passwort aus oder klicke auf „Abbrechen“, um es später zurückzusetzen.',
 
 # Special:PasswordReset
 'passwordreset' => 'Passwort zurücksetzen',
@@ -1234,8 +1242,7 @@ Zur Information folgt der aktuelle Logbucheintrag:",
 'sectioneditnotsupported-text' => 'Die Bearbeitung von Abschnitten wird auf dieser Bearbeitungsseite nicht unterstützt.',
 'permissionserrors' => 'Berechtigungsfehler',
 'permissionserrorstext' => 'Du bist nicht berechtigt, die Aktion auszuführen. {{PLURAL:$1|Grund|Gründe}}:',
-'permissionserrorstext-withaction' => 'Du bist nicht berechtigt, $2.
-{{PLURAL:$1|Grund|Gründe}}:',
+'permissionserrorstext-withaction' => 'Du bist aus {{PLURAL:$1|dem folgenden Grund|den folgenden Gründen}} nicht berechtigt, $2:',
 'recreate-moveddeleted-warn' => "'''Achtung: Du erstellst eine Seite, die bereits früher gelöscht wurde.'''
 
 Bitte prüfe sorgfältig, ob die erneute Seitenerstellung den Richtlinien entspricht.
@@ -1839,11 +1846,23 @@ Diese Information ist öffentlich.',
 'rcnotefrom' => "Angezeigt werden die Änderungen seit '''$2''' (max. '''$1''' Einträge).",
 'rclistfrom' => 'Nur Änderungen seit $1 zeigen.',
 'rcshowhideminor' => 'Kleine Änderungen $1',
+'rcshowhideminor-show' => 'anzeigen',
+'rcshowhideminor-hide' => 'ausblenden',
 'rcshowhidebots' => 'Bots $1',
+'rcshowhidebots-show' => 'anzeigen',
+'rcshowhidebots-hide' => 'ausblenden',
 'rcshowhideliu' => 'Registrierte Benutzer $1',
+'rcshowhideliu-show' => 'anzeigen',
+'rcshowhideliu-hide' => 'ausblenden',
 'rcshowhideanons' => 'Unangemeldete Benutzer $1',
+'rcshowhideanons-show' => 'anzeigen',
+'rcshowhideanons-hide' => 'ausblenden',
 'rcshowhidepatr' => 'Kontrollierte Änderungen $1',
+'rcshowhidepatr-show' => 'anzeigen',
+'rcshowhidepatr-hide' => 'ausblenden',
 'rcshowhidemine' => 'Eigene Beiträge $1',
+'rcshowhidemine-show' => 'anzeigen',
+'rcshowhidemine-hide' => 'ausblenden',
 'rclinks' => 'Zeige die letzten $1 Änderungen der letzten $2 Tage.<br />$3',
 'diff' => 'Unterschied',
 'hist' => 'Versionen',
@@ -1968,6 +1987,8 @@ Du solltest jemanden fragen, der die Möglichkeit hat, die unterdrückten Dateid
 'php-uploaddisabledtext' => 'Das Hochladen von Dateien wurde in PHP deaktiviert.
 Bitte überprüfe die <code>file_uploads</code>-Einstellung.',
 'uploadscripted' => 'Diese Datei enthält HTML- oder Scriptcode, der irrtümlich von einem Webbrowser ausgeführt werden könnte.',
+'uploadscriptednamespace' => 'Diese SVG-Datei enthält den ungültigen Namensraum „$1“.',
+'uploadinvalidxml' => 'Das XML in der hochgeladenen Datei konnte nicht geparst werden.',
 'uploadvirus' => 'Diese Datei enthält einen Virus! Details: $1',
 'uploadjava' => 'Dies ist eine ZIP-Datei, die ein CLASS-Datei von Java enthält.
 Das Hochladen von Java-Dateien ist nicht gestattet, da sie die Umgehung von Sicherheitseinschränkungen ermöglichen könnten.',
@@ -2787,6 +2808,7 @@ Zur Information folgt der aktuelle Auszug aus dem Sperr-Logbuch:',
 'sp-contributions-search' => 'Suche nach Benutzerbeiträgen',
 'sp-contributions-username' => 'IP-Adresse oder Benutzername:',
 'sp-contributions-toponly' => 'Nur aktuelle Versionen zeigen',
+'sp-contributions-newonly' => 'Nur Seitenerstellungen anzeigen',
 'sp-contributions-submit' => 'Suchen',
 
 # What links here
@@ -4347,6 +4369,4 @@ faktisch alles was in doppelten geschweiften Klammern enthalten ist.',
 'expand_templates_generate_rawhtml' => 'Rohes HTML anzeigen',
 'expand_templates_preview' => 'Vorschau',
 
-# Unknown messages
-'uploadinvalidxml' => 'Das XML in der hochgeladenen Datei konnte nicht geparst werden.',
 );
index 6937ba7..eb6852e 100644 (file)
@@ -214,6 +214,7 @@ Du hast darauf keinen Zugriff.',
 'right-passwordreset' => 'Passwort eines Benutzers zurücksetzen und das dazu verschickte E-Mail einsehen',
 
 # Recent changes
+'recentchanges-label-plusminus' => 'Die Änderung der Seitengrösse in Bytes',
 'rc_categories' => 'Nur Seiten aus den Kategorien (getrennt mit «|»):',
 'rc-old-title' => 'ursprünglich erstellt als «$1»',
 
index 5ff6250..7299a59 100644 (file)
@@ -9,6 +9,8 @@
  *
  * @author *Surak*
  * @author ChrisiPK
+ * @author Das Schäfchen
+ * @author Filzstift
  * @author Geitost
  * @author Imre
  * @author Jimmy Collins <jimmy.collins@web.de>
@@ -35,7 +37,7 @@ $messages = array(
 'tog-enotifrevealaddr' => 'Ihre E-Mail-Adresse in Benachrichtigungs-E-Mails anzeigen',
 
 'view-pool-error' => 'Entschuldigung, die Server sind im Moment überlastet.
-Zu viele Benutzer versuchen diese Seite zu besuchen.
+Zu viele Benutzer versuchen, diese Seite zu besuchen.
 Bitte warten Sie einige Minuten, bevor Sie es noch einmal versuchen.
 
 $1',
@@ -74,12 +76,14 @@ Nutzen Sie bitte [//translatewiki.net/ translatewiki.net], das Lokalisierungspro
 
 Beachten Sie, dass einige Seiten noch anzeigen können, dass Sie angemeldet sind, solange Sie nicht Ihren Browsercache geleert haben.",
 'welcomecreation-msg' => 'Ihr Benutzerkonto wurde erstellt.
-Vergissen Sie nicht, Ihre [[Special:Preferences|{{SITENAME}}-Einstellungen]] zu ändern.',
+Vergessen Sie nicht, Ihre [[Special:Preferences|{{SITENAME}}-Einstellungen]] zu ändern.',
 'yourdomainname' => 'Ihre Domain:',
 'password-change-forbidden' => 'Sie können auf diesem Wiki keine Passwörter ändern.',
 'externaldberror' => 'Entweder es liegt ein Fehler bei der externen Authentifizierung vor oder Sie dürfen Ihr externes Benutzerkonto nicht aktualisieren.',
 'nologin' => 'Sie haben kein Benutzerkonto? $1.',
 'gotaccount' => "Haben Sie bereits ein Benutzerkonto? '''$1'''.",
+'userlogin-loggedin' => 'Sie sind bereits als {{GENDER:$1|$1}} angemeldet.
+Benutzen Sie das unten stehende Formular, um sich unter einem anderen Benutzernamen anzumelden.',
 'userexists' => 'Dieser Benutzername ist schon vergeben.
 Bitte wählen Sie einen anderen.',
 'nocookiesnew' => 'Der Benutzerzugang wurde erstellt, aber Sie sind nicht angemeldet.
@@ -541,7 +545,6 @@ Bitte geben Sie den Grund für die Sperre an.',
 'autoblocker' => 'Automatische Sperre, da Sie eine gemeinsame IP-Adresse mit [[User:$1|$1]] benutzen. Grund der Benutzersperre: „$2“.',
 'ipb-needreblock' => '„$1“ ist bereits gesperrt. Möchten Sie die Sperrparameter ändern?',
 'proxyblockreason' => 'Ihre IP-Adresse wurde gesperrt, da sie ein offener Proxy ist. Bitte kontaktieren Sie Ihren Internet-Provider oder Ihre Systemadministratoren und informieren Sie sie über dieses mögliche Sicherheitsproblem.',
-'cant-block-while-blocked' => 'Sie können keine anderen Benutzer sperren, während Sie selbst gesperrt sind.',
 'cant-see-hidden-user' => 'Der Benutzer, den Sie versuchen zu sperren, wurde bereits gesperrt und verborgen. Da Sie das „hideuser“-Recht nicht haben, können Sie die Benutzersperre nicht sehen und nicht bearbeiten.',
 'ipbblocked' => 'Sie können keine anderen Benutzer sperren oder entsperren, da Sie selbst gesperrt sind',
 'ipbnounblockself' => 'Sie haben nicht die Berechtigung, sich selbst zu entsperren',
@@ -657,7 +660,6 @@ Rückmeldung des Mailservers: $1',
 'confirmemail_needlogin' => 'Sie müssen sich $1, um Ihre E-Mail-Adresse zu bestätigen.',
 'confirmemail_success' => 'Ihre E-Mail-Adresse wurde erfolgreich bestätigt. Sie können sich jetzt [[Special:UserLogin|anmelden]].',
 'confirmemail_loggedin' => 'Ihre E-Mail-Adresse wurde erfolgreich bestätigt.',
-'confirmemail_error' => 'Es gab einen Fehler bei der Bestätigung Ihrer E-Mail-Adresse.',
 'confirmemail_body' => 'Hallo,
 
 jemand mit der IP-Adresse $1, wahrscheinlich Sie selbst, hat das Benutzerkonto „$2“ bei {{SITENAME}} registriert.
index d6c1cbf..2f8b49d 100644 (file)
@@ -400,7 +400,7 @@ $messages = array(
 'sat' => 'Şem',
 'january' => 'Çele',
 'february' => 'Sıbate',
-'march' => 'Adar (Mart)',
+'march' => 'Adar',
 'april' => 'Nisane',
 'may_long' => 'Gulane',
 'june' => 'Heziran',
@@ -482,10 +482,10 @@ $messages = array(
 
 # Cologne Blue skin
 'qbfind' => 'Bıvêne',
-'qbbrowse' => 'Rovete',
+'qbbrowse' => 'Çım ra viyarne',
 'qbedit' => 'Bıvurne',
-'qbpageoptions' => 'Na per',
-'qbmyoptions' => 'Pe mı',
+'qbpageoptions' => 'Ena pele',
+'qbmyoptions' => 'Pe mı',
 'faq' => 'PZP (Persê ke zehf persiyenê)',
 'faqpage' => 'Project: PZP',
 
@@ -505,8 +505,8 @@ $messages = array(
 'namespaces' => 'Cayê namey',
 'variants' => 'Varyanti',
 
-'navigation-heading' => 'Menuya Navigasyoni',
-'errorpagetitle' => 'Ğeta',
+'navigation-heading' => 'Menuyê navigasyoni',
+'errorpagetitle' => 'Xeta',
 'returnto' => 'Peyser şo $1.',
 'tagline' => '{{SITENAME}} ra',
 'help' => 'Peşti',
@@ -515,12 +515,12 @@ $messages = array(
 'go' => 'Şo',
 'searcharticle' => 'Şo',
 'history' => 'Tarixê pele',
-'history_short' => 'Verén',
+'history_short' => 'Tarix',
 'updatedmarker' => 'cıkewtena mına peyêne ra dıme biyo rocane',
 'printableversion' => 'Asayışê çapkerdışi',
 'permalink' => 'Gıreyo jûqere',
-'print' => 'Nusten ke',
-'view' => 'Bıvin',
+'print' => 'Çap ke',
+'view' => 'Bıvêne',
 'edit' => 'Bıvurne',
 'create' => 'Vıraze',
 'editthispage' => 'Ena pele bıvurne',
@@ -779,7 +779,7 @@ Wexta ke verhafızayê cıgerayoxê şıma pak beno no benate de taye peli de he
 'userlogin-joinproject' => 'Cıkewe {{SITENAME}}',
 'nologin' => "Hesabê şıma çıniyo? '''$1'''.",
 'nologinlink' => 'Yew hesab ake',
-'createaccount' => 'Hesab vıraşten',
+'createaccount' => 'Hesab vıraze',
 'gotaccount' => "Hesabê şıma esto? '''$1'''.",
 'gotaccountlink' => 'Cı kewe',
 'userlogin-resetlink' => 'Melumatê cıkewtışi xo vira kerdê?',
@@ -875,6 +875,9 @@ Bıne vındere u newe ra dest pê bıkere.',
 'suspicious-userlogout' => 'Waştişê tu ya veciyayişi kebul nibiya cunki ihtimal o ke waştiş yew browser ya zi proksiyê heripiyaye ra ameya.',
 'createacct-another-realname-tip' => 'Nameyo raştıkên keyfiyo.
 Şıma nameyo xoyo raştıkên ke bımocnê, seba iştırakanê karberi be ney ra istıfade beno.',
+'pt-login' => 'Cı kewe',
+'pt-createaccount' => 'Hesab vıraze',
+'pt-userlogout' => 'Veciyayış',
 
 # Email sending
 'php-mail-error-unknown' => "PHP's mail() fonksiyoni de xırabin vıcyê.",
@@ -883,7 +886,7 @@ Bıne vındere u newe ra dest pê bıkere.',
 
 # Change password dialog
 'changepassword' => 'Parola bıvurne',
-'resetpass_announce' => 'Şıma pê yew parolayê muweqqet hesab kerd a, qey qedyayişe dekewtış newe yew parola bınuse:',
+'resetpass_announce' => 'Seba temamkerdışê cıkewtışi rê, şıma gani yew parolaya newiye bınusê.',
 'resetpass_text' => 'Parolayê hesab bıvurn',
 'resetpass_header' => 'Parola hesabi bıvurne',
 'oldpassword' => 'Parola kıhane:',
@@ -898,6 +901,7 @@ Bıne vındere u newe ra dest pê bıkere.',
 'resetpass-submit-cancel' => 'Bıtexelne',
 'resetpass-wrong-oldpass' => 'parolayo parola maqbul niyo.
 şıma ya parolaye xo vurnayo ya zi parolayo muwaqqat waşto.',
+'resetpass-recycled' => 'Parolaya şımaya newiye wa paroloya şımaya verêne ra ferqıne bo.',
 'resetpass-temp-password' => 'parolayo muweqet:',
 'resetpass-abort-generic' => 'Parola vurnayış jew derganey ra tepya ibtal biyo',
 
@@ -1155,7 +1159,7 @@ Hewna kerde aseno.',
 'postedit-confirmation' => 'Vurnayışê to qeyd bi.',
 'edit-already-exists' => 'Pelo newe nêvıraziyeno.
 Pel ca ra esto.',
-'defaultmessagetext' => 'Hesıbyaye metne mesaci',
+'defaultmessagetext' => 'Metnê mesacê hesabiyayey',
 'content-failed-to-parse' => 'Qandê madela $3 zereyê $1, $2 sero nêagozyayo',
 'invalid-content-data' => 'Zerrey malumati nêravêrdeyo',
 'content-not-allowed-here' => '"$1" sero per da [[$2]] rê mısade nêdeyêno',
@@ -1742,11 +1746,23 @@ Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de moc
 'rcnotefrom' => "Cêr de '''$2''' ra nata vurnayışiyê asenê (tewr vêşi <b> '''$1'''</b> asenê).",
 'rclistfrom' => '$1 ra tepiya vurnayışanê neweyan bımocne',
 'rcshowhideminor' => 'Vurnayışanê werdiyan $1',
+'rcshowhideminor-show' => 'Bımocne',
+'rcshowhideminor-hide' => 'Bınımne',
 'rcshowhidebots' => 'Botan $1',
+'rcshowhidebots-show' => 'Bımocne',
+'rcshowhidebots-hide' => 'Bınımne',
 'rcshowhideliu' => 'Karberanê qeydbiyayeyan $1',
+'rcshowhideliu-show' => 'Bımocne',
+'rcshowhideliu-hide' => 'Bınımne',
 'rcshowhideanons' => 'Karberanê bênameyan $1',
+'rcshowhideanons-show' => 'Bımocne',
+'rcshowhideanons-hide' => 'Bınımne',
 'rcshowhidepatr' => '$1 vurnayışê ke dewriya geyrayê',
+'rcshowhidepatr-show' => 'Bımocne',
+'rcshowhidepatr-hide' => 'Bınımne',
 'rcshowhidemine' => 'Vurnayışanê mı $1',
+'rcshowhidemine-show' => 'Bımocne',
+'rcshowhidemine-hide' => 'Bınımne',
 'rclinks' => 'Peyniya $2 rocan de $1 vurnayışan bımocne <br />$3',
 'diff' => 'ferq',
 'hist' => 'verên',
@@ -1869,6 +1885,7 @@ Semedê ancia barkerdışi dewamkerdış ra ver tarixê esterışê dosya gani q
 'uploaddisabledtext' => 'Bar kerdişê dosyayî iptal biyo',
 'php-uploaddisabledtext' => 'barkerdışê dosyayê PHP nıka çino. kerem kere eyarê file_uploads korol bıkerê.',
 'uploadscripted' => 'Ena dosya de yew HTML ya zi kodê scriptî este ke belki browserê webî fam nikeno.',
+'uploadinvalidxml' => 'Dosyaya barkerdiye de XML nêgureniya.',
 'uploadvirus' => 'Ena dosya de yew virus estê: Qe detayan: $1',
 'uploadjava' => 'Dosya, zerre de cıdı jew Java .class dosyaya ZIP esta.
 Dosyayn de Java barkerdışi rê icazet nêdeyê, çıkı emeleya merduman nêbena.',
@@ -3963,7 +3980,7 @@ Ma rica keno tesdiq bike ke ti raştî wazeno eno pel bivirazo.",
 'imgmultigoto' => 'Şo pela da $1',
 
 # Language selector for translatable SVGs
-'img-lang-default' => '(hesıbyayi zıwan)',
+'img-lang-default' => '(zıwano hesabiyaye)',
 'img-lang-info' => 'Resimé $1, $2 ya teké pé ke.',
 'img-lang-go' => 'Bırş',
 
@@ -4415,6 +4432,4 @@ Eneri Medya wiki sera xo keno.',
 'expand_templates_generate_rawhtml' => "Xam HTML'i bıvin",
 'expand_templates_preview' => 'Verqayt',
 
-# Unknown messages
-'uploadinvalidxml' => 'Dosyaya barkerdiye de XML nêgureniya.',
 );
index 879f221..6eb5555 100644 (file)
@@ -682,6 +682,9 @@ Móžoš toś te zdźělenje ignorowaś, jolic toś te konto jo se jano zamólnj
 'suspicious-userlogout' => 'Twójo póžedanje za wótzjawjenim jo se wótpokazało, dokulaž zda se, až jo se pósłało pśez wobškóźony wobglědowak abo pufrowański proksy',
 'createacct-another-realname-tip' => 'Napšawdne mě jo opcionalne.
 Jolic jo pódajoš, buźo se to wužywaś, aby pśinoski pśirědowało.',
+'pt-login' => 'Pśizjawiś',
+'pt-createaccount' => 'Konto załožyś',
+'pt-userlogout' => 'Wótzjawiś',
 
 # Email sending
 'php-mail-error-unknown' => 'Njeznata zmólka w PHP-funkciji mail()',
@@ -690,7 +693,7 @@ Jolic jo pódajoš, buźo se to wužywaś, aby pśinoski pśirědowało.',
 
 # Change password dialog
 'changepassword' => 'Šćitne gronidło změniś',
-'resetpass_announce' => 'Sy z nachylnym e-mailowym šćitnym gronidłom pśizjawjony. Aby pśizjawjenje zakóńcył, zapódaj how nowe šćitne gronidło:',
+'resetpass_announce' => 'Aby pśizjawjenje skóńcył, musyš nowe gronidło póstajiś.',
 'resetpass_text' => '<!-- Dodaj how tekst -->',
 'resetpass_header' => 'Kontowe gronidło změniś',
 'oldpassword' => 'Stare šćitne gronidło:',
@@ -706,8 +709,12 @@ Pócakaj pšosym $1, nježli až wopytajoš znowego.',
 'resetpass-submit-cancel' => 'Pśetergnuś',
 'resetpass-wrong-oldpass' => 'Njepłaśiwe nachylne abo aktualne gronidło.
 Sy snaź swójo gronidło južo wuspěšnje změnił abo nowe nachylne gronidło pominał.',
+'resetpass-recycled' => 'Pšosym staj swójo gronidło na druge gronidło ako twójo aktualne gronidło.',
+'resetpass-temp-emailed' => 'Sy z nachylnym e-mailowym kodom pśizjawjony. Aby pśizjawjenje skóńcył, musyš how nowe gronidło póstajiś:',
 'resetpass-temp-password' => 'Nachylne gronidło:',
 'resetpass-abort-generic' => 'Změnjanje gronidła jo se pśez rozšyrjenje pśetergnuło.',
+'resetpass-expired' => 'Twójo gronidło jo pśepadnyło. Pšosym póstaj nowe gronidło za pśizjawjenje.',
+'resetpass-expired-soft' => 'Twójo gronidło jo pśepadnyło a musy se slědk stajiś. Pšosym wubjeŕ něnto druge gronidło abo klikni na "Pśetergnuś", aby jo pózdźej slědk stajił.',
 
 # Special:PasswordReset
 'passwordreset' => 'Gronidło slědk stajiś',
@@ -1666,6 +1673,7 @@ Jolic maš toś ten wobraz w połnem rozeznaśu, nagraj jen, howac změń pšosy
 'uploaddisabledtext' => 'Nagraśa datajow su znjemóžnjone.',
 'php-uploaddisabledtext' => 'Nagraśa PHP-datajow su znjemóžnjone. Pšosym pśekontrolěruj nastajenje file_uploads.',
 'uploadscripted' => 'Toś ta dataja wopśimjejo HTML abo script code, kótaryž móžo wót browsera se zamólnje wuwjasć.',
+'uploadinvalidxml' => 'XML w nagratej dataji njedajo se parsowaś.',
 'uploadvirus' => 'Toś ta dataja ma wirus! Nadrobnosći: $1',
 'uploadjava' => 'Toś ta dataja jo ZIP-dataja, kótaraž wopśimujo dataju .class z Javy.
 Nagrawanje datajow Javy njejo dowólone, dokulaž mógli wobjeźenje wěstotnych wobgranicowanjow zmóžniś.',
@@ -2040,6 +2048,7 @@ Kužda smužka wopśimjejo wótkaze na prědne a druge dalejpósrědnjenje a tek
 'protectedpages-unknown-timestamp' => 'Njeznaty',
 'protectedpages-unknown-performer' => 'Njeznaty wužywaŕ',
 'protectedtitles' => 'Šćitane titele',
+'protectedtitles-summary' => 'Toś ten bok nalicyjo titele, kótarež su tuchylu pśeśiwo napóranjoju šćitane. Za lisćinu eksistěrujucych bokow, kótarež su šćitane, glej [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'Tuchylu njejsu žedne boki z pódanych parametrami šćitane.',
 'listusers' => 'Lisćina wužywarjow',
 'listusers-editsonly' => 'Jano wužywarjow ze změnami pokazaś',
@@ -3984,6 +3993,4 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 'expand_templates_generate_rawhtml' => 'Gropny HTML pokazaś',
 'expand_templates_preview' => 'Pśeglěd',
 
-# Unknown messages
-'uploadinvalidxml' => 'XML w nagratej dataji njedajo se parsowaś.',
 );
index cf35434..bdc2bc8 100644 (file)
@@ -163,7 +163,6 @@ $messages = array(
 'vector-action-protect' => 'Tingoligai',
 'vector-action-undelete' => 'Kada pugaso',
 'vector-action-unprotect' => 'Alanai tingolig',
-'vector-simplesearch-preference' => 'Pasagao pogigihum bar noinsanangan (Pongulit tuntuduk nopo)',
 'vector-view-create' => 'Pomonsoi',
 'vector-view-edit' => 'Idito',
 'vector-view-history' => 'Intaai susuyan',
index 36ae3ea..16a1e62 100644 (file)
@@ -297,7 +297,6 @@ $messages = array(
 'lineno' => 'གྲལ་ཐིག་ $1:',
 'compareselectedversions' => 'སེལ་འཐུ་འབད་ཡོད་པའི་ཐོན་རིམ་ཚུ་ ག་བསྡུར་རྐྱབས།',
 'editundo' => 'འབད་བཤོལ།',
-'diff-multi' => '({{PLURAL:$1|བར་ནའི་བསྐྱར་ཞིབ་གཅིག་|$1 བར་ནའི་བསྐྱར་ཞིབ་ཚུ་}} མ་སྟོན་པས།)',
 
 # Search results
 'prevn' => 'ཧེ་མའི་ {{PLURAL:$1|$1}}',
@@ -319,7 +318,6 @@ $messages = array(
 'nchanges' => '$1 {{PLURAL:$1|བསྒྱུར་བཅོས་|བསྒྱུར་བཅོས་ཚུ}}',
 'recentchanges' => 'འཕྲལ་གྱི་བསྒྱུར་བཅོས',
 'recentchanges-feed-description' => 'འབྱུང་སའི་ནང་ ཝི་ཀི་ལུ་འཕྲལ་གྱི་བསྒྱུར་བཅོས་འབད་མི་འདི་ རྗེས་འཚོལ་འབད།',
-'rcnote' => "གཤམ་འཁོད་ཚུ་ $3 ཚུན་ཚོད་ཀྱི་ མཇུག་མཐའ {{PLURAL:$2|ཉིནམ་|'''$2''' ཉིནམ་}} གྱི་ {{PLURAL:$1|བསྒྱུར་བཅོས་ | '''$1''' བསྒྱུར་བཅོས་ཚུ་ }} ཨིན།",
 'rcnotefrom' => "འོག་གི་ཚུ་ '''$2''' (up to '''$1''' shown) ལས་ཚུར་གྱི་བསྒྱུར་བཅོས་ཨིན།",
 'rclistfrom' => '$1 ལས་ འགོ་བཟུང་སྟེ་ བསྒྱུར་བཅོས་གསརཔ་ཚུ་སྟོན་',
 'rcshowhideminor' => '$1 གལ་གནད་ཆུང་བའི་ཞུན་དག།',
index e3dbaab..191157f 100644 (file)
@@ -322,7 +322,6 @@ Zã [[Special:Search|nuwo didi le wiki sia dzi]] kpɔ na axa yeyeawo.',
 # Recent changes
 'recentchanges' => 'Tɔtrɔ yeyewo',
 'recentchanges-legend' => 'Tatiawo na tɔtrɔ yeyewo',
-'rcnote' => "Afisia wofia {{PLURAL:$1|tɔtrɔ '''1''' susue|tɔtrɔ '''$1''' susuewo}} le {{PLURAL:$2|ŋkeke si|ŋkeke '''$2''' mamleawo siwo}} vayi la me, le $5, $4.",
 'rcnotefrom' => "Tɔtrɔwo siwo wowɔ tso '''$2''' (wofia vaseɖe '''$1''') le afii.",
 'rclistfrom' => 'Fia tɔtrɔ yeyewo tso $1',
 'rcshowhideminor' => '$1 tɔtrɔ suewo',
@@ -421,7 +420,6 @@ Zã [[Special:Search|nuwo didi le wiki sia dzi]] kpɔ na axa yeyeawo.',
 # Watchlist
 'watch' => 'Le ŋku ɖe eŋu',
 'watchthispage' => 'Le ŋku ɖe axa sia ŋu',
-'wlnote' => "Afisia wofia {{PLURAL:$1|tɔtrɔ '''1''' mamlea|tɔtrɔ '''$1''' mamleawo}} le {{PLURAL:$2|gaƒoƒo mamlea si|gaƒoƒo '''$2''' mamleawo siwo}} vayi la me.",
 'wlshowlast' => 'Fia gaƒoƒo $1 ŋkeke $2 mamleawo. $3',
 
 # Delete
index d90623f..5557021 100644 (file)
@@ -131,7 +131,7 @@ $messages = array(
 'december-date' => 'Dicèmber $1',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Categoréia!Categoréi}}',
+'pagecategories' => '{{PLURAL:$1|Categoréia|Categoréi}}',
 'category_header' => "Pàgini 'd la categoréia $1",
 'subcategories' => 'Sòt-categoréi',
 'category-media-header' => "File int la categoréia ''$1''",
@@ -536,7 +536,7 @@ Se l'inscrisiòun l'é stêda fâta per şbâli, es pōl scanşlêr sté mesâg.
 
 # Change password dialog
 'changepassword' => "Câmbia la cêva 'd ingrès",
-'resetpass_announce' => "L'ingrès l'é stê fâ cun un côdis pruvişôri, spidî cun la pôsta eletrônica. Per finîr l'ingrès l'é necesâri impustêr 'na nōva cêva 'd ingrès.",
+'resetpass_announce' => "Per finîr l'ingrès, l'é necesâri impustêr 'na nōva cêva 'd ingrès.",
 'resetpass_header' => "Câmbia la cêva 'd ingrès ed l'inscrisiòun.",
 'oldpassword' => "Cêva 'd ingès vècia:",
 'newpassword' => "Nōva cêva 'd ingrès:",
@@ -705,7 +705,15 @@ Al tō mudéfichi în MIA incòra stêdi salvêdi.",
 'continue-editing' => "Và int la zôna 'd mudéfica",
 'previewconflict' => "La vésta la cumbîna cun al tèst int la zôna 'd mudéfica tèst ché d'ed sōver e l'é cme la srà la pàgina s'ed decéd ed clichêr insém a \"Sêlva la pàgina\" in cól mumèint ché.",
 'session_fail_preview' => "'''An n'é mìa stê pusébil registrêr la mudéfica perchè a s' în pêrsi al j infurmasiòun relatîvi a la sesiòun. Tōrna a pruvêr. Se al prublēma al cunténva, a 's pōl pruvêr [[Special:UserLogout|ed coleghêres]] e fêr un ingrès nōv.'''",
+'session_fail_preview_html' => "'''An n'é mìa stê pusébil registrêr la mudéfica perchè în andêdi persi al j infurmasiòun relatîvi a la sesiòun.'''
+
+''Pôst che in {{SITENAME}} a gh'é al permès ed druvêr l' HTML sèinsa lémit, an 's pōl mìa guardêr préma la pàgina mudifichêda; a 's trâta ed 'n'amzûra 'd sicurèsa cûntra j atâch JavaScript.''
+
+''' Se còst l'é un tentatîv legétim ed mudéfica, pruvêr incòra. Se al prublēma l'armâgn, a 's pōl pruvêr a [[Special:UserLogout|sarêr al colegamèint]] e fêr un nōv ingrès.'''",
+'token_suffix_mismatch' => "'''La mudéfica an n'é mìa stêda salvêda perchè al ''client'' l'à fât vèder ed gestîr in môd e-sbaliê i carâter di pûn e dal virgûli int al ''token'' lighê a la mudéfica. Per schivşêr di pusébil erōr int al tèst ed la pàgina, è stê rifiutê tóta la mudéfica. Dla vôlti cla situasiòun ché la pōl sucēder quând a vînen druvê soquânt servési ''proxy'' sèinsa nòm via internèt che preşèinten di ''bug''.'''",
+'edit_form_incomplete' => "'''Soquânti pêrt dal môdul ed mudéfica în mìa rivêdi al ''server''; controlêr che al mudéfichi sién intâti e turnêr a pruvêr'''",
 'editing' => 'Mudéfica ed $1',
+'creating' => "T'é drē fêr $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",
index ee84b91..ddff3ed 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Lévi
  * @author Ottaviano II
  * @author Timichal
  * @author Tèstaquêdra
@@ -23,141 +24,141 @@ $messages = array(
 'thursday' => 'Giuvidè',
 'friday' => 'Venerdè',
 'saturday' => 'Sâbet',
-'january' => 'Znèr',
-'february' => 'Febrèr',
-'march' => 'Mèrz',
+'january' => 'Znêr',
+'february' => 'Fervêr',
+'march' => 'Mêrs',
 'april' => 'Avrîl',
 'june' => 'Zógn',
 'july' => 'Lój',
 'august' => 'Agòst',
-'september' => 'Setàmber',
-'october' => 'Utóber',
-'november' => 'Nuvàmber',
-'december' => 'Dzèmber',
-'may' => 'Mâz',
+'september' => 'Setèmber',
+'october' => 'Utòber',
+'november' => 'Nuvèmber',
+'december' => 'Dicèmber',
+'may' => 'Mâg',
 
-'mytalk' => 'I mê discussiòun',
+'mytalk' => 'Al mē discusiòun',
 
-'returnto' => 'Tórna a $1.',
+'returnto' => 'Tōrna a $1.',
 'help' => 'Per quî rivê da pôch',
 'history_short' => 'Stôria',
-'printableversion' => 'Versiòun stampàbil',
-'permalink' => 'Link permanèint',
-'edit' => 'Mudifichèr',
-'delete' => 'Dscanzèla',
-'protect' => 'Prutèzz',
-'specialpage' => 'Pàgina specla',
-'talk' => 'Discussiòun',
-'jumptosearch' => 'Zerca',
+'printableversion' => "Versiòun ch'la 's pōl stampêr",
+'permalink' => 'Colegamèint fés',
+'edit' => 'Mudéfica',
+'delete' => 'Scanşèla',
+'protect' => 'Prutēz',
+'specialpage' => 'Pàgina specêla',
+'talk' => 'Discusiòun',
+'jumptosearch' => 'Sèirca',
 
 # 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).
 'currentevents' => 'Fât e prugèt ed tót',
 'currentevents-url' => 'Project:Prugèt_ed_tót',
-'helppage' => 'Help:Introduzione',
+'helppage' => 'Help:Introdusiòun',
 'portal' => 'Discóter e quistiunêr',
 'portal-url' => 'Project:Bar',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Artéccol',
-'nstab-template' => 'Modèl',
+'nstab-main' => 'Artécol',
+'nstab-template' => 'Mudèl',
 
 # Login and logout pages
-'logouttext' => "'''Adèsa s'et discunnês.'''
-
-Putiv cuntinuèr ad usèr {{SITENAME}} anonimamèint, o putiv cunnètterv dòp cun al stèss nàmm o cun un èter.
-Nutêv ca alcuni pàgini i putrèbber cuntinuèr a cràdder ca vueter a-sîv discunnès, finchè non purghê la cache dal vòster browser.",
-'userlogin' => 'Entrèr / Argistrères',
-'logout' => 'va fôra',
-'userlogout' => 'Va fôra',
-'userexists' => "Al nòmm ch'èt scélt l'è stê bèle usê: càten un èter, per piasêr.",
-'loginsuccess' => "'''Adèsa sèt cunês in {{SITENAME}} cun al nàmm d'utèint \"\$1\".'''",
-'wrongpassword' => "La password ch'et méss l'è sbajèda. Pròva ancàrra.",
-'blocked-mailpassword' => "Al tô indirézz IP l'an pôl più feèr di cambiamèint, e l'en brisa abilitê par user la funziòun ed recópper ed password par evitèr di abûs.",
-'accountcreated' => 'Et criê un nôv account',
+'logouttext' => "''An té pió coleghê''
+Ét pō cuntinvêr a druvêr {{SITENAME}} sèina nòm, o ét pō coleghêret dôp cun l'istès nòm o cun 'n êter.
+Guêrda che soquânti pàgini a 's prén vèder incòra cme s'ét fós coleghê fîn a che an vîn mia pulî la 'cache' dal tó  'browser'.",
+'userlogin' => 'Ingrès / regéstret',
+'logout' => 'Và fōra',
+'userlogout' => 'Và fōra',
+'userexists' => "Al nòm utèint ch'èt siēlt l'è bèle stê druvê.
+Câten un èter, per piaşèir.",
+'loginsuccess' => "'''Adèsa t'é coleghê in {{SITENAME}} cun al nòm utèint \"\$1\".'''",
+'wrongpassword' => "La 'password' che t'é més l'è sbaliêda. Prōva incòra.",
+'blocked-mailpassword' => "Per anticipêr abûş, an n'é mía permès druvêr  'n' êtra 'password' da 'n indirés 'IP' bluchê.",
+'accountcreated' => "T'é fât un nōv 'account'.",
 
 # Edit pages
 'summary' => "Mutîv d'al cambiamèint:",
-'minoredit' => "Còst cambiamèint ché l'é un gnînt in tót",
-'watchthis' => "Tîn a drê a c'la pàgina chè",
-'savearticle' => 'Salva',
-'showpreview' => 'Anteprémma',
-'showdiff' => 'Guèrda al differèinzi',
-'anoneditwarning' => "'''Attenziòun:''' An sîv ménga vgnû dèinter. Al vòster indirézz IP al vrà signê in d'la stòria d'i cambiamèint ed sta pagina chè..",
-'anontalkpagetext' => "----''Sta chè l'éla pàgina ed discussiòun d'un utèint anònim c'al n'à brisa criê un sô account o c'an l'usa ménga. Bsògna quindi usêr al sô indirézz IP par identifichèrel. L'istèss indirézz IP al pôl èsser usê da di mòndi utèint. Se sèt un utèint anònim e pèinset c'a-t in sun stèdi fâti di cummèint irrilevànt, per piasér [[Special:UserLogin|criêt un account o fê al log-in]] par evitèr confusiòuni futuri cun di èter utèint anònim.''",
+'minoredit' => "Cól cambiamèint ché l'é un gnînt in tót",
+'watchthis' => 'Tîn a drē a cla pàgina chè',
+'savearticle' => 'Sêlva la pàgina',
+'showpreview' => "Guêrda préma 'd salvêr",
+'showdiff' => 'Guêrda al diferèinsi',
+'anoneditwarning' => "'''Atensiòun''': l'ingrès an n'é mía stê fât. Al tó indirés 'IP' al gnirà scrét int la stòria di cambiamèint ed cla pàgina ché.",
+'anontalkpagetext' => "''Còsta  l'é la pàgina 'd discusiòun 'd un utèint sèinsa nòm  ch' an n'à mìa incòra fât un utèinsa o che in tót al manēri l' al drōva mìa.''
+Per arcgnòsrel l'é dòunca necesâri druvêr al nómer dal só indirés IP. J indirés IP a pōlen èser spartî da pió utèint. Se  t'é un utèint sèinsa nòm e 't pèins che i cumèint preşèint in cla pàgina ché an 't riguêrden mìa [[Special:UserLogin/signup|fà 'na nōva utèinsa]] o [[Special:UserLogin|vîn dèinter cun còla ch' ét gh' ê bèle]] per fêr in môd 'd an èser mìa cunfûş in futûr cun êter utèint sèinsa nòm.",
 'editing' => 'Cambiamèint ed $1',
-'yourdiff' => 'Differèinzi',
-'templatesused' => '{{PLURAL:$1|Modêl|Modêl}} usèdi in sta pàgina:',
+'yourdiff' => 'Diferèinsi',
+'templatesused' => '{{PLURAL:$1|Modèl druvê|ModÄ\93 druvê}} in cla pàgina ché:',
 
 # Preferences page
-'mypreferences' => 'AL mê preferèinzi',
-'yourrealname' => 'Al tô vér nàmm:',
+'mypreferences' => 'preferèinzi',
+'yourrealname' => 'Al tō nòm vèira:',
 'yourlanguage' => 'Léngua:',
 
 # Special:Log/newusers
-'newuserlogpage' => 'Regestér di nōv utèint',
+'newuserlogpage' => 'Regéster di nōv utèint',
 
 # Recent changes
 'recentchanges' => 'Ûltem cambiamèint',
-'diff' => 'diferèinzi',
+'diff' => 'diferèinsi',
 'hist' => 'stôria',
 
 # Recent changes linked
-'recentchangeslinked' => 'Mudéffic curelèdi',
-'recentchangeslinked-feed' => 'Mudéffic curelèdi',
-'recentchangeslinked-toolbox' => 'Mudéffic curelèdi',
+'recentchangeslinked' => 'Mudéfichi coleghêdi',
+'recentchangeslinked-feed' => 'Mudéfichi coleghêdi',
+'recentchangeslinked-toolbox' => 'Mudéfichi coleghêdi',
 
 # Upload
-'upload' => 'Carghèr un file',
-'filedesc' => "Ugêt d'al cambiamèint",
-'fileuploadsummary' => "Ugêt d'al cambiamèint:",
+'upload' => "Carghèr un 'file'",
+'filedesc' => 'Sûnt',
+'fileuploadsummary' => "Sûnt dal 'file':",
 
 # Special:ListFiles
-'listfiles_size' => 'Dimensiòun (bytes)',
+'listfiles_size' => "Dimensiòun in 'bytes'",
 
 # Random page
-'randompage' => 'Una pàgina a chès',
+'randompage' => "'Na pàgina a chêş",
 
 # Miscellaneous special pages
-'move' => 'Môv',
+'move' => 'Spôsta',
 
 # Special:Log
-'specialloguserlabel' => 'Utèint:',
+'specialloguserlabel' => 'Asiòun fâta da:',
 
 # Special:AllPages
-'allpages' => 'Tôt al pàgin',
+'allpages' => 'Tót al pàgini',
 
 # Watchlist
-'watchlist' => 'Al còsi ca guèrd',
-'watch' => 'Tîn a drê',
-'watchthispage' => "Tîn a drê a c'la pàgina chè",
+'watchlist' => 'I lavōr che guêrd',
+'watch' => 'Tîn a drē',
+'watchthispage' => 'Tîn a drē  a cla pàgina ché',
 
 # Delete
-'excontent' => "al cointgnû l'éra: '$1'",
-'excontentauthor' => "al cointgnû l'éra: '$1' (e l'ónic cuntribudôr l'éra '[[Special:Contributions/$2|$2]]')",
-'confirmdeletetext' => "Stèt per scanzlèr 'na pàgina o n'imàgin, insìmma a tòt la sô crunolugî dal database.
-Cunfermèr per piasèr ca saîv quàl che stèv par fêr, ca capîv al pussìbil counseguèinzi e ca stèv facènd quàst in confurmitê cun [[{{MediaWiki:Policy-url}}]].",
-'deletedtext' => '"$1" l\'è stê scanzlê.
-Guèrda $2 par vèdder la lésta d\'al pàgin ch\'i sun stèdi scanzlèdi di recèint.',
-'dellogpage' => 'Regestér dal scanzladûri',
-'deletionlog' => 'regéster dal scanzladûri',
+'excontent' => "al contgnû l'ēra: '$1'",
+'excontentauthor' => "al cuntgnû l'ēra: '$1' (e l'ónich avtōr l'ēra '[[Special:Contributions/$2|$2]]')",
+'confirmdeletetext' => "T'é drē scanşlêr 'na pàgina o na figûra, insèm a tóta la só stòria dal 'database'. Per piaşèir cunfērma ch'ét vō scanşlêrla, ch'ét sê j efèt ed la tó decişiòun e ch' la cumbîna cun al léni guîda dal [[{{MediaWiki:Policy-url}}]].",
+'deletedtext' => '"$1" l\'é stê scanşlê.
+Guèrda $2 per vèder la lésta d\'al pàgini ch\' în stèdi scanşlèdi da pôch tèimp.',
+'dellogpage' => 'Regéster dal scanşladûri',
+'deletionlog' => 'regéster dal scanşladûri',
 
 # Contributions
-'mycontris' => 'I mê cuntribùdi',
+'mycontris' => 'i mē lavōr',
 
 # What links here
-'whatlinkshere' => 'I pùnten chè',
+'whatlinkshere' => 'A pûnten ché',
 
 # Block/unblock
-'blocklink' => 'blòchel',
+'blocklink' => 'blôca',
 'contribslink' => "còl ch'l'à scrét",
 
 # Move page
-'movelogpage' => 'Regestér di muvimèint',
+'movelogpage' => 'Regéster di muvimèint',
 
 # Special:NewFiles
-'ilsubmit' => 'Zerca',
+'ilsubmit' => 'rca',
 
 # Special:SpecialPages
-'specialpages' => 'Pàgin specièli',
+'specialpages' => 'Pàgini specêli',
 
 );
index c382bbf..fd2b47f 100644 (file)
@@ -808,31 +808,31 @@ future releases. Also note that since each list value is wrapped in a unique
 'and'           => '&#32;and',
 
 # Cologne Blue skin
-'qbfind'         => 'Find',
-'qbbrowse'       => 'Browse',
-'qbedit'         => 'Edit',
-'qbpageoptions'  => 'This page',
-'qbmyoptions'    => 'My pages',
-'faq'            => 'FAQ',
-'faqpage'        => 'Project:FAQ',
-'sitetitle'      => '{{SITENAME}}', # do not translate or duplicate this message to other languages
-'sitesubtitle'   => '', # do not translate or duplicate this message to other languages
+'qbfind'        => 'Find',
+'qbbrowse'      => 'Browse',
+'qbedit'        => 'Edit',
+'qbpageoptions' => 'This page',
+'qbmyoptions'   => 'My pages',
+'faq'           => 'FAQ',
+'faqpage'       => 'Project:FAQ',
+'sitetitle'     => '{{SITENAME}}', # do not translate or duplicate this message to other languages
+'sitesubtitle'  => '', # do not translate or duplicate this message to other languages
 
 # Vector skin
-'vector-action-addsection'       => 'Add topic',
-'vector-action-delete'           => 'Delete',
-'vector-action-move'             => 'Move',
-'vector-action-protect'          => 'Protect',
-'vector-action-undelete'         => 'Undelete',
-'vector-action-unprotect'        => 'Change protection',
-'vector-view-create'             => 'Create',
-'vector-view-edit'               => 'Edit',
-'vector-view-history'            => 'View history',
-'vector-view-view'               => 'Read',
-'vector-view-viewsource'         => 'View source',
-'actions'                        => 'Actions',
-'namespaces'                     => 'Namespaces',
-'variants'                       => 'Variants',
+'vector-action-addsection' => 'Add topic',
+'vector-action-delete'     => 'Delete',
+'vector-action-move'       => 'Move',
+'vector-action-protect'    => 'Protect',
+'vector-action-undelete'   => 'Undelete',
+'vector-action-unprotect'  => 'Change protection',
+'vector-view-create'       => 'Create',
+'vector-view-edit'         => 'Edit',
+'vector-view-history'      => 'View history',
+'vector-view-view'         => 'Read',
+'vector-view-viewsource'   => 'View source',
+'actions'                  => 'Actions',
+'namespaces'               => 'Namespaces',
+'variants'                 => 'Variants',
 
 'navigation-heading' => 'Navigation menu',
 'errorpagetitle'     => 'Error',
@@ -971,8 +971,6 @@ See [[Special:Version|version page]].',
 'red-link-title'               => '$1 (page does not exist)',
 'sort-descending'              => 'Sort descending',
 'sort-ascending'               => 'Sort ascending',
-'interlanguage-link-title'     => '$1 – $2', # only translate this message to other languages if you have to change it
-'interlanguage-link-title-langonly' => '$1', # do not translate or duplicate this message to other languages
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main'      => 'Page',
@@ -1062,7 +1060,7 @@ Changes to this page will affect the appearance of the user interface for other
 To add or change translations for all wikis, please use [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.',
 'cascadeprotected'              => 'This page has been protected from editing because it is included in the following {{PLURAL:$1|page, which is|pages, which are}} protected with the "cascading" option turned on:
 $2',
-'namespaceprotected'            => "You do not have permission to edit pages in the <strong>$1</strong> namespace.",
+'namespaceprotected'            => 'You do not have permission to edit pages in the <strong>$1</strong> namespace.',
 'customcssprotected'            => "You do not have permission to edit this CSS page because it contains another user's personal settings.",
 'customjsprotected'             => "You do not have permission to edit this JavaScript page because it contains another user's personal settings.",
 'mycustomcssprotected'          => 'You do not have permission to edit this CSS page.',
@@ -1082,14 +1080,14 @@ The administrator who locked it offered this explanation: "$3".',
 'exception-nologin-text-manual' => 'Please $1 to be able to access this page or action.',
 
 # Virus scanner
-'virus-badscanner'     => "Bad configuration: Unknown virus scanner: <em>$1</em>",
+'virus-badscanner'     => 'Bad configuration: Unknown virus scanner: <em>$1</em>',
 'virus-scanfailed'     => 'scan failed (code $1)',
 'virus-unknownscanner' => 'unknown antivirus:',
 
 # Login and logout pages
-'logouttext'                      => "<strong>You are now logged out.</strong>
+'logouttext'                      => '<strong>You are now logged out.</strong>
 
-Note that some pages may continue to be displayed as if you were still logged in, until you clear your browser cache.",
+Note that some pages may continue to be displayed as if you were still logged in, until you clear your browser cache.',
 'welcomeuser'                     => 'Welcome, $1!',
 'welcomecreation-msg'             => 'Your account has been created.
 You can change your {{SITENAME}} [[Special:Preferences|preferences]] if you wish.',
@@ -1178,7 +1176,7 @@ Ensure you have cookies enabled, reload this page and try again.',
 'nocookiesforlogin'               => '{{int:nocookieslogin}}', # only translate this message to other languages if you have to change it
 'noname'                          => 'You have not specified a valid username.',
 'loginsuccesstitle'               => 'Login successful',
-'loginsuccess'                    => "<strong>You are now logged in to {{SITENAME}} as \"\$1\".</strong>",
+'loginsuccess'                    => '<strong>You are now logged in to {{SITENAME}} as "$1".</strong>',
 'nosuchuser'                      => 'There is no user by the name "$1".
 Usernames are case sensitive.
 Check your spelling, or [[Special:UserLogin/signup|create a new account]].',
@@ -1254,6 +1252,9 @@ Please wait $1 before trying again.',
 'suspicious-userlogout'           => 'Your request to log out was denied because it looks like it was sent by a broken browser or caching proxy.',
 'createacct-another-realname-tip' => 'Real name is optional.
 If you choose to provide it, this will be used for giving the user attribution for their work.',
+'pt-login'                        => 'Log in',
+'pt-createaccount'                => 'Create account',
+'pt-userlogout'                   => 'Log out',
 
 # Email sending
 'pear-mail-error'        => '$1', # do not translate or duplicate this message to other languages
@@ -1265,10 +1266,7 @@ If you choose to provide it, this will be used for giving the user attribution f
 # Change password dialog
 'changepassword'            => 'Change password',
 'changepassword-summary'    => '', # do not translate or duplicate this message to other languages
-'changepassword-throttled'  => 'You have made too many recent login attempts.
-Please wait $1 before trying again.',
-'resetpass_announce'        => 'You logged in with a temporary emailed code.
-To finish logging in, you must set a new password here:',
+'resetpass_announce'        => 'To finish logging in, you must set a new password.',
 'resetpass_text'            => '<!-- Add text here -->', # only translate this message to other languages if you have to change it
 'resetpass_header'          => 'Change account password',
 'oldpassword'               => 'Old password:',
@@ -1276,14 +1274,21 @@ To finish logging in, you must set a new password here:',
 'retypenew'                 => 'Retype new password:',
 'resetpass_submit'          => 'Set password and log in',
 'changepassword-success'    => 'Your password has been changed successfully!',
+'changepassword-throttled'  => 'You have made too many recent login attempts.
+Please wait $1 before trying again.',
 'resetpass_forbidden'       => 'Passwords cannot be changed',
 'resetpass-no-info'         => 'You must be logged in to access this page directly.',
 'resetpass-submit-loggedin' => 'Change password',
 'resetpass-submit-cancel'   => 'Cancel',
 'resetpass-wrong-oldpass'   => 'Invalid temporary or current password.
 You may have already successfully changed your password or requested a new temporary password.',
+'resetpass-recycled'        => 'Please reset your password to something other than your current password.',
+'resetpass-temp-emailed'    => 'You logged in with a temporary emailed code.
+To finish logging in, you must set a new password here:',
 'resetpass-temp-password'   => 'Temporary password:',
 'resetpass-abort-generic'   => 'Password change has been aborted by an extension.',
+'resetpass-expired'         => 'Your password has expired. Please set a new password to login.',
+'resetpass-expired-soft'    => 'Your password has expired, and needs to be reset. Please choose a new password now, or click cancel to reset it later.',
 
 # Special:PasswordReset
 'passwordreset'                    => 'Reset password',
@@ -1326,17 +1331,17 @@ Temporary password: $2',
 'passwordreset-emailerror-capture' => 'A password reset email was generated, which is shown below, but sending it to the {{GENDER:$2|user}} failed: $1',
 
 # Special:ChangeEmail
-'changeemail'          => 'Change email address',
-'changeemail-summary'  => '', # do not translate or duplicate this message to other languages
-'changeemail-header'   => 'Change account email address',
-'changeemail-text'     => 'Complete this form to change your email address. You will need to enter your password to confirm this change.',
-'changeemail-no-info'  => 'You must be logged in to access this page directly.',
-'changeemail-oldemail' => 'Current email address:',
-'changeemail-newemail' => 'New email address:',
-'changeemail-none'     => '(none)',
-'changeemail-password' => 'Your {{SITENAME}} password:',
-'changeemail-submit'   => 'Change email',
-'changeemail-cancel'   => 'Cancel',
+'changeemail'           => 'Change email address',
+'changeemail-summary'   => '', # do not translate or duplicate this message to other languages
+'changeemail-header'    => 'Change account email address',
+'changeemail-text'      => 'Complete this form to change your email address. You will need to enter your password to confirm this change.',
+'changeemail-no-info'   => 'You must be logged in to access this page directly.',
+'changeemail-oldemail'  => 'Current email address:',
+'changeemail-newemail'  => 'New email address:',
+'changeemail-none'      => '(none)',
+'changeemail-password'  => 'Your {{SITENAME}} password:',
+'changeemail-submit'    => 'Change email',
+'changeemail-cancel'    => 'Cancel',
 'changeemail-throttled' => 'You have made too many login attempts.
 Please wait $1 before trying again.',
 
@@ -1375,27 +1380,27 @@ You should do it if you accidentally shared them with someone or if your account
 'hr_tip'          => 'Horizontal line (use sparingly)',
 
 # Edit pages
-'summary'                          => 'Summary:',
-'subject'                          => 'Subject/headline:',
-'minoredit'                        => 'This is a minor edit',
-'watchthis'                        => 'Watch this page',
-'savearticle'                      => 'Save page',
-'preview'                          => 'Preview',
-'showpreview'                      => 'Show preview',
-'showlivepreview'                  => 'Live preview',
-'showdiff'                         => 'Show changes',
-'anoneditwarning'                  => "<strong>Warning:</strong> You are not logged in.
+'summary'                                  => 'Summary:',
+'subject'                                  => 'Subject/headline:',
+'minoredit'                                => 'This is a minor edit',
+'watchthis'                                => 'Watch this page',
+'savearticle'                              => 'Save page',
+'preview'                                  => 'Preview',
+'showpreview'                              => 'Show preview',
+'showlivepreview'                          => 'Live preview',
+'showdiff'                                 => 'Show changes',
+'anoneditwarning'                          => "<strong>Warning:</strong> You are not logged in.
 Your IP address will be recorded in this page's edit history.",
-'anonpreviewwarning'               => "<em>You are not logged in. Saving will record your IP address in this page's edit history.</em>",
-'missingsummary'                   => "<strong>Reminder:</strong> You have not provided an edit summary.
-If you click \"{{int:savearticle}}\" again, your edit will be saved without one.",
-'missingcommenttext'               => 'Please enter a comment below.',
-'missingcommentheader'             => "<strong>Reminder:</strong> You have not provided a subject/headline for this comment.
-If you click \"{{int:savearticle}}\" again, your edit will be saved without one.",
-'summary-preview'                  => 'Summary preview:',
-'subject-preview'                  => 'Subject/headline preview:',
-'blockedtitle'                     => 'User is blocked',
-'blockedtext'                      => "<strong>Your username or IP address has been blocked.</strong>
+'anonpreviewwarning'                       => "<em>You are not logged in. Saving will record your IP address in this page's edit history.</em>",
+'missingsummary'                           => '<strong>Reminder:</strong> You have not provided an edit summary.
+If you click "{{int:savearticle}}" again, your edit will be saved without one.',
+'missingcommenttext'                       => 'Please enter a comment below.',
+'missingcommentheader'                     => '<strong>Reminder:</strong> You have not provided a subject/headline for this comment.
+If you click "{{int:savearticle}}" again, your edit will be saved without one.',
+'summary-preview'                          => 'Summary preview:',
+'subject-preview'                          => 'Subject/headline preview:',
+'blockedtitle'                             => 'User is blocked',
+'blockedtext'                              => '<strong>Your username or IP address has been blocked.</strong>
 
 The block was made by $1.
 The reason given is <em>$2</em>.
@@ -1405,10 +1410,10 @@ The reason given is <em>$2</em>.
 * Intended blockee: $7
 
 You can contact $1 or another [[{{MediaWiki:Grouppage-sysop}}|administrator]] to discuss the block.
-You cannot use the \"email this user\" feature unless a valid email address is specified in your [[Special:Preferences|account preferences]] and you have not been blocked from using it.
+You cannot use the "email this user" feature unless a valid email address is specified in your [[Special:Preferences|account preferences]] and you have not been blocked from using it.
 Your current IP address is $3, and the block ID is #$5.
-Please include all above details in any queries you make.",
-'autoblockedtext'                  => "Your IP address has been automatically blocked because it was used by another user, who was blocked by $1.
+Please include all above details in any queries you make.',
+'autoblockedtext'                          => 'Your IP address has been automatically blocked because it was used by another user, who was blocked by $1.
 The reason given is:
 
 :<em>$2</em>
@@ -1419,168 +1424,168 @@ The reason given is:
 
 You may contact $1 or one of the other [[{{MediaWiki:Grouppage-sysop}}|administrators]] to discuss the block.
 
-Note that you may not use the \"email this user\" feature unless you have a valid email address registered in your [[Special:Preferences|user preferences]] and you have not been blocked from using it.
+Note that you may not use the "email this user" feature unless you have a valid email address registered in your [[Special:Preferences|user preferences]] and you have not been blocked from using it.
 
 Your current IP address is $3, and the block ID is #$5.
-Please include all above details in any queries you make.",
-'blockednoreason'                  => 'no reason given',
-'whitelistedittext'                => 'Please $1 to edit pages.',
-'confirmedittext'                  => 'You must confirm your email address before editing pages.
+Please include all above details in any queries you make.',
+'blockednoreason'                          => 'no reason given',
+'whitelistedittext'                        => 'Please $1 to edit pages.',
+'confirmedittext'                          => 'You must confirm your email address before editing pages.
 Please set and validate your email address through your [[Special:Preferences|user preferences]].',
-'nosuchsectiontitle'               => 'Cannot find section',
-'nosuchsectiontext'                => 'You tried to edit a section that does not exist.
+'nosuchsectiontitle'                       => 'Cannot find section',
+'nosuchsectiontext'                        => 'You tried to edit a section that does not exist.
 It may have been moved or deleted while you were viewing the page.',
-'loginreqtitle'                    => 'Login required',
-'loginreqlink'                     => 'log in',
-'loginreqpagetext'                 => 'Please $1 to view other pages.',
-'accmailtitle'                     => 'Password sent',
-'accmailtext'                      => "A randomly generated password for [[User talk:$1|$1]] has been sent to $2. It can be changed on the <em>[[Special:ChangePassword|change password]]</em> page upon logging in.",
-'newarticle'                       => '(New)',
-'newarticletext'                   => "You have followed a link to a page that does not exist yet.
+'loginreqtitle'                            => 'Login required',
+'loginreqlink'                             => 'log in',
+'loginreqpagetext'                         => 'Please $1 to view other pages.',
+'accmailtitle'                             => 'Password sent',
+'accmailtext'                              => 'A randomly generated password for [[User talk:$1|$1]] has been sent to $2. It can be changed on the <em>[[Special:ChangePassword|change password]]</em> page upon logging in.',
+'newarticle'                               => '(New)',
+'newarticletext'                           => "You have followed a link to a page that does not exist yet.
 To create the page, start typing in the box below (see the [[{{MediaWiki:Helppage}}|help page]] for more info).
 If you are here by mistake, click your browser's <strong>back</strong> button.",
-'newarticletextanon'               => '{{int:newarticletext}}', # do not translate or duplicate this message to other languages
-'talkpagetext'                     => '<!-- MediaWiki:talkpagetext -->', # do not translate or duplicate this message to other languages
-'anontalkpagetext'                 => "----
+'newarticletextanon'                       => '{{int:newarticletext}}', # do not translate or duplicate this message to other languages
+'talkpagetext'                             => '<!-- MediaWiki:talkpagetext -->', # do not translate or duplicate this message to other languages
+'anontalkpagetext'                         => '----
 <em>This is the discussion page for an anonymous user who has not created an account yet, or who does not use it.</em>
 We therefore have to use the numerical IP address to identify him/her.
 Such an IP address can be shared by several users.
-If you are an anonymous user and feel that irrelevant comments have been directed at you, please [[Special:UserLogin/signup|create an account]] or [[Special:UserLogin|log in]] to avoid future confusion with other anonymous users.",
-'noarticletext'                    => 'There is currently no text in this page.
+If you are an anonymous user and feel that irrelevant comments have been directed at you, please [[Special:UserLogin/signup|create an account]] or [[Special:UserLogin|log in]] to avoid future confusion with other anonymous users.',
+'noarticletext'                            => 'There is currently no text in this page.
 You can [[Special:Search/{{PAGENAME}}|search for this page title]] in other pages,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],
 or [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this page]</span>.',
-'noarticletext-nopermission'       => 'There is currently no text in this page.
+'noarticletext-nopermission'               => 'There is currently no text in this page.
 You can [[Special:Search/{{PAGENAME}}|search for this page title]] in other pages, or <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs]</span>, but you do not have permission to create this page.',
-'noarticletextanon'                => '{{int:noarticletext}}', # do not translate or duplicate this message to other languages
-'missing-revision'                 => 'The revision #$1 of the page named "{{PAGENAME}}" does not exist.
+'noarticletextanon'                        => '{{int:noarticletext}}', # do not translate or duplicate this message to other languages
+'missing-revision'                         => 'The revision #$1 of the page named "{{PAGENAME}}" does not exist.
 
 This is usually caused by following an outdated history link to a page that has been deleted.
 Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].',
-'userpage-userdoesnotexist'        => 'User account "$1" is not registered.
+'userpage-userdoesnotexist'                => 'User account "$1" is not registered.
 Please check if you want to create/edit this page.',
-'userpage-userdoesnotexist-view'   => 'User account "$1" is not registered.',
-'blocked-notice-logextract'        => 'This user is currently blocked.
+'userpage-userdoesnotexist-view'           => 'User account "$1" is not registered.',
+'blocked-notice-logextract'                => 'This user is currently blocked.
 The latest block log entry is provided below for reference:',
-'clearyourcache'                   => "<strong>Note:</strong> After saving, you may have to bypass your browser's cache to see the changes.
+'clearyourcache'                           => "<strong>Note:</strong> After saving, you may have to bypass your browser's cache to see the changes.
 * <strong>Firefox / Safari:</strong> Hold <em>Shift</em> while clicking <em>Reload</em>, or press either <em>Ctrl-F5</em> or <em>Ctrl-R</em> (<em>⌘-R</em> on a Mac)
 * <strong>Google Chrome:</strong> Press <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> on a Mac)
 * <strong>Internet Explorer:</strong> Hold <em>Ctrl</em> while clicking <em>Refresh</em>, or press <em>Ctrl-F5</em>
 * <strong>Opera:</strong> Clear the cache in <em>Tools → Preferences</em>",
-'usercssyoucanpreview'             => "<strong>Tip:</strong> Use the \"{{int:showpreview}}\" button to test your new CSS before saving.",
-'userjsyoucanpreview'              => "<strong>Tip:</strong> Use the \"{{int:showpreview}}\" button to test your new JavaScript before saving.",
-'usercsspreview'                   => "<strong>Remember that you are only previewing your user CSS.
-It has not yet been saved!</strong>",
-'userjspreview'                    => "<strong>Remember that you are only testing/previewing your user JavaScript.
-It has not yet been saved!</strong>",
-'sitecsspreview'                   => "<strong>Remember that you are only previewing this CSS.
-It has not yet been saved!</strong>",
-'sitejspreview'                    => "<strong>Remember that you are only previewing this JavaScript code.
-It has not yet been saved!</strong>",
-'userinvalidcssjstitle'            => "<strong>Warning:</strong> There is no skin \"\$1\".
-Custom .css and .js pages use a lowercase title, e.g. {{ns:user}}:Foo/vector.css as opposed to {{ns:user}}:Foo/Vector.css.",
-'updated'                          => '(Updated)',
-'note'                             => "<strong>Note:</strong>",
-'previewnote'                      => "<strong>Remember that this is only a preview.</strong>
-Your changes have not yet been saved!",
-'continue-editing'                 => 'Go to editing area',
-'previewconflict'                  => 'This preview reflects the text in the upper text editing area as it will appear if you choose to save.',
-'session_fail_preview'             => "<strong>Sorry! We could not process your edit due to a loss of session data.</strong>
+'usercssyoucanpreview'                     => '<strong>Tip:</strong> Use the "{{int:showpreview}}" button to test your new CSS before saving.',
+'userjsyoucanpreview'                      => '<strong>Tip:</strong> Use the "{{int:showpreview}}" button to test your new JavaScript before saving.',
+'usercsspreview'                           => '<strong>Remember that you are only previewing your user CSS.
+It has not yet been saved!</strong>',
+'userjspreview'                            => '<strong>Remember that you are only testing/previewing your user JavaScript.
+It has not yet been saved!</strong>',
+'sitecsspreview'                           => '<strong>Remember that you are only previewing this CSS.
+It has not yet been saved!</strong>',
+'sitejspreview'                            => '<strong>Remember that you are only previewing this JavaScript code.
+It has not yet been saved!</strong>',
+'userinvalidcssjstitle'                    => '<strong>Warning:</strong> There is no skin "$1".
+Custom .css and .js pages use a lowercase title, e.g. {{ns:user}}:Foo/vector.css as opposed to {{ns:user}}:Foo/Vector.css.',
+'updated'                                  => '(Updated)',
+'note'                                     => '<strong>Note:</strong>',
+'previewnote'                              => '<strong>Remember that this is only a preview.</strong>
+Your changes have not yet been saved!',
+'continue-editing'                         => 'Go to editing area',
+'previewconflict'                          => 'This preview reflects the text in the upper text editing area as it will appear if you choose to save.',
+'session_fail_preview'                     => '<strong>Sorry! We could not process your edit due to a loss of session data.</strong>
 Please try again.
-If it still does not work, try [[Special:UserLogout|logging out]] and logging back in.",
-'session_fail_preview_html'        => "<strong>Sorry! We could not process your edit due to a loss of session data.</strong>
+If it still does not work, try [[Special:UserLogout|logging out]] and logging back in.',
+'session_fail_preview_html'                => '<strong>Sorry! We could not process your edit due to a loss of session data.</strong>
 
 <em>Because {{SITENAME}} has raw HTML enabled, the preview is hidden as a precaution against JavaScript attacks.</em>
 
 <strong>If this is a legitimate edit attempt, please try again.</strong>
-If it still does not work, try [[Special:UserLogout|logging out]] and logging back in.",
-'token_suffix_mismatch'            => "<strong>Your edit has been rejected because your client mangled the punctuation characters in the edit token.</strong>
+If it still does not work, try [[Special:UserLogout|logging out]] and logging back in.',
+'token_suffix_mismatch'                    => '<strong>Your edit has been rejected because your client mangled the punctuation characters in the edit token.</strong>
 The edit has been rejected to prevent corruption of the page text.
-This sometimes happens when you are using a buggy web-based anonymous proxy service.",
-'edit_form_incomplete'             => "<strong>Some parts of the edit form did not reach the server; double-check that your edits are intact and try again.</strong>",
-'editing'                          => 'Editing $1',
-'creating'                         => 'Creating $1',
-'editingsection'                   => 'Editing $1 (section)',
-'editingcomment'                   => 'Editing $1 (new section)',
-'editconflict'                     => 'Edit conflict: $1',
-'explainconflict'                  => "Someone else has changed this page since you started editing it.
+This sometimes happens when you are using a buggy web-based anonymous proxy service.',
+'edit_form_incomplete'                     => '<strong>Some parts of the edit form did not reach the server; double-check that your edits are intact and try again.</strong>',
+'editing'                                  => 'Editing $1',
+'creating'                                 => 'Creating $1',
+'editingsection'                           => 'Editing $1 (section)',
+'editingcomment'                           => 'Editing $1 (new section)',
+'editconflict'                             => 'Edit conflict: $1',
+'explainconflict'                          => 'Someone else has changed this page since you started editing it.
 The upper text area contains the page text as it currently exists.
 Your changes are shown in the lower text area.
 You will have to merge your changes into the existing text.
-<strong>Only</strong> the text in the upper text area will be saved when you press \"{{int:savearticle}}\".",
-'yourtext'                         => 'Your text',
-'storedversion'                    => 'Stored revision',
-'nonunicodebrowser'                => "<strong>Warning: Your browser is not Unicode compliant.</strong>
-A workaround is in place to allow you to safely edit pages: Non-ASCII characters will appear in the edit box as hexadecimal codes.",
-'editingold'                       => "<strong>Warning: You are editing an out-of-date revision of this page.</strong>
-If you save it, any changes made since this revision will be lost.",
-'yourdiff'                         => 'Differences',
-'copyrightwarning'                 => "Please note that all contributions to {{SITENAME}} are considered to be released under the $2 (see $1 for details).
+<strong>Only</strong> the text in the upper text area will be saved when you press "{{int:savearticle}}".',
+'yourtext'                                 => 'Your text',
+'storedversion'                            => 'Stored revision',
+'nonunicodebrowser'                        => '<strong>Warning: Your browser is not Unicode compliant.</strong>
+A workaround is in place to allow you to safely edit pages: Non-ASCII characters will appear in the edit box as hexadecimal codes.',
+'editingold'                               => '<strong>Warning: You are editing an out-of-date revision of this page.</strong>
+If you save it, any changes made since this revision will be lost.',
+'yourdiff'                                 => 'Differences',
+'copyrightwarning'                         => 'Please note that all contributions to {{SITENAME}} are considered to be released under the $2 (see $1 for details).
 If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.<br />
 You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
-<strong>Do not submit copyrighted work without permission!</strong>",
-'copyrightwarning2'                => "Please note that all contributions to {{SITENAME}} may be edited, altered, or removed by other contributors.
+<strong>Do not submit copyrighted work without permission!</strong>',
+'copyrightwarning2'                        => 'Please note that all contributions to {{SITENAME}} may be edited, altered, or removed by other contributors.
 If you do not want your writing to be edited mercilessly, then do not submit it here.<br />
 You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see $1 for details).
-<strong>Do not submit copyrighted work without permission!</strong>",
-'editpage-head-copy-warn'          => '-', # do not translate or duplicate this message to other languages
-'editpage-tos-summary'             => '-', # do not translate or duplicate this message to other languages
-'longpage-hint'                    => '-', # do not translate or duplicate this message to other languages
-'longpageerror'                    => "<strong>Error: The text you have submitted is {{PLURAL:$1|one kilobyte|$1 kilobytes}} long, which is longer than the maximum of {{PLURAL:$2|one kilobyte|$2 kilobytes}}.</strong>
-It cannot be saved.",
-'readonlywarning'                  => "<strong>Warning: The database has been locked for maintenance, so you will not be able to save your edits right now.</strong>
+<strong>Do not submit copyrighted work without permission!</strong>',
+'editpage-head-copy-warn'                  => '-', # do not translate or duplicate this message to other languages
+'editpage-tos-summary'                     => '-', # do not translate or duplicate this message to other languages
+'longpage-hint'                            => '-', # do not translate or duplicate this message to other languages
+'longpageerror'                            => '<strong>Error: The text you have submitted is {{PLURAL:$1|one kilobyte|$1 kilobytes}} long, which is longer than the maximum of {{PLURAL:$2|one kilobyte|$2 kilobytes}}.</strong>
+It cannot be saved.',
+'readonlywarning'                          => '<strong>Warning: The database has been locked for maintenance, so you will not be able to save your edits right now.</strong>
 You may wish to copy and paste your text into a text file and save it for later.
 
-The administrator who locked it offered this explanation: $1",
-'protectedpagewarning'             => "<strong>Warning: This page has been protected so that only users with administrator privileges can edit it.</strong>
-The latest log entry is provided below for reference:",
-'semiprotectedpagewarning'         => "<strong>Note:</strong> This page has been protected so that only registered users can edit it.
-The latest log entry is provided below for reference:",
-'cascadeprotectedwarning'          => "<strong>Warning:</strong> This page has been protected so that only users with administrator privileges can edit it because it is included in the following cascade-protected {{PLURAL:$1|page|pages}}:",
-'titleprotectedwarning'            => "<strong>Warning: This page has been protected so that [[Special:ListGroupRights|specific rights]] are needed to create it.</strong>
-The latest log entry is provided below for reference:",
-'templatesused'                    => '{{PLURAL:$1|Template|Templates}} used on this page:',
-'templatesusedpreview'             => '{{PLURAL:$1|Template|Templates}} used in this preview:',
-'templatesusedsection'             => '{{PLURAL:$1|Template|Templates}} used in this section:',
-'template-protected'               => '(protected)',
-'template-semiprotected'           => '(semi-protected)',
-'hiddencategories'                 => 'This page is a member of {{PLURAL:$1|1 hidden category|$1 hidden categories}}:',
-'edittools'                        => '<!-- Text here will be shown below edit and upload forms. -->', # only translate this message to other languages if you have to change it
-'edittools-upload'                 => '-', # only translate this message to other languages if you have to change it
-'nocreatetext'                     => '{{SITENAME}} has restricted the ability to create new pages.
+The administrator who locked it offered this explanation: $1',
+'protectedpagewarning'                     => '<strong>Warning: This page has been protected so that only users with administrator privileges can edit it.</strong>
+The latest log entry is provided below for reference:',
+'semiprotectedpagewarning'                 => '<strong>Note:</strong> This page has been protected so that only registered users can edit it.
+The latest log entry is provided below for reference:',
+'cascadeprotectedwarning'                  => '<strong>Warning:</strong> This page has been protected so that only users with administrator privileges can edit it because it is included in the following cascade-protected {{PLURAL:$1|page|pages}}:',
+'titleprotectedwarning'                    => '<strong>Warning: This page has been protected so that [[Special:ListGroupRights|specific rights]] are needed to create it.</strong>
+The latest log entry is provided below for reference:',
+'templatesused'                            => '{{PLURAL:$1|Template|Templates}} used on this page:',
+'templatesusedpreview'                     => '{{PLURAL:$1|Template|Templates}} used in this preview:',
+'templatesusedsection'                     => '{{PLURAL:$1|Template|Templates}} used in this section:',
+'template-protected'                       => '(protected)',
+'template-semiprotected'                   => '(semi-protected)',
+'hiddencategories'                         => 'This page is a member of {{PLURAL:$1|1 hidden category|$1 hidden categories}}:',
+'edittools'                                => '<!-- Text here will be shown below edit and upload forms. -->', # only translate this message to other languages if you have to change it
+'edittools-upload'                         => '-', # only translate this message to other languages if you have to change it
+'nocreatetext'                             => '{{SITENAME}} has restricted the ability to create new pages.
 You can go back and edit an existing page, or [[Special:UserLogin|log in or create an account]].',
-'nocreate-loggedin'                => 'You do not have permission to create new pages.',
-'sectioneditnotsupported-title'    => 'Section editing not supported',
-'sectioneditnotsupported-text'     => 'Section editing is not supported in this page.',
-'permissionserrors'                => 'Permission error',
-'permissionserrorstext'            => 'You do not have permission to do that, for the following {{PLURAL:$1|reason|reasons}}:',
-'permissionserrorstext-withaction' => 'You do not have permission to $2, for the following {{PLURAL:$1|reason|reasons}}:',
-'recreate-moveddeleted-warn'       => "<strong>Warning: You are recreating a page that was previously deleted.</strong>
+'nocreate-loggedin'                        => 'You do not have permission to create new pages.',
+'sectioneditnotsupported-title'            => 'Section editing not supported',
+'sectioneditnotsupported-text'             => 'Section editing is not supported in this page.',
+'permissionserrors'                        => 'Permission error',
+'permissionserrorstext'                    => 'You do not have permission to do that, for the following {{PLURAL:$1|reason|reasons}}:',
+'permissionserrorstext-withaction'         => 'You do not have permission to $2, for the following {{PLURAL:$1|reason|reasons}}:',
+'recreate-moveddeleted-warn'               => '<strong>Warning: You are recreating a page that was previously deleted.</strong>
 
 You should consider whether it is appropriate to continue editing this page.
-The deletion and move log for this page are provided here for convenience:",
-'moveddeleted-notice'              => 'This page has been deleted.
+The deletion and move log for this page are provided here for convenience:',
+'moveddeleted-notice'                      => 'This page has been deleted.
 The deletion and move log for the page are provided below for reference.',
-'log-fulllog'                      => 'View full log',
-'edit-hook-aborted'                => 'Edit aborted by hook.
+'log-fulllog'                              => 'View full log',
+'edit-hook-aborted'                        => 'Edit aborted by hook.
 It gave no explanation.',
-'edit-gone-missing'                => 'Could not update the page.
+'edit-gone-missing'                        => 'Could not update the page.
 It appears to have been deleted.',
-'edit-conflict'                    => 'Edit conflict.',
-'edit-no-change'                   => 'Your edit was ignored because no change was made to the text.',
-'postedit-confirmation'            => 'Your edit was saved.',
-'edit-already-exists'              => 'Could not create a new page.
+'edit-conflict'                            => 'Edit conflict.',
+'edit-no-change'                           => 'Your edit was ignored because no change was made to the text.',
+'postedit-confirmation'                    => 'Your edit was saved.',
+'edit-already-exists'                      => 'Could not create a new page.
 It already exists.',
-'addsection-preload'               => '', # do not translate or duplicate this message to other languages
-'addsection-editintro'             => '', # do not translate or duplicate this message to other languages
-'defaultmessagetext'               => 'Default message text',
-'content-failed-to-parse'          => 'Failed to parse $2 content for $1 model: $3',
-'invalid-content-data'             => 'Invalid content data',
-'content-not-allowed-here'         => '"$1" content is not allowed on page [[$2]]',
-'editwarning-warning'              => 'Leaving this page may cause you to lose any changes you have made.
+'addsection-preload'                       => '', # do not translate or duplicate this message to other languages
+'addsection-editintro'                     => '', # do not translate or duplicate this message to other languages
+'defaultmessagetext'                       => 'Default message text',
+'content-failed-to-parse'                  => 'Failed to parse $2 content for $1 model: $3',
+'invalid-content-data'                     => 'Invalid content data',
+'content-not-allowed-here'                 => '"$1" content is not allowed on page [[$2]]',
+'editwarning-warning'                      => 'Leaving this page may cause you to lose any changes you have made.
 If you are logged in, you can disable this warning in the "{{int:prefs-editing}}" section of your preferences.',
-'editpage-notsupportedcontentformat-title'=> 'Content format not supported',
-'editpage-notsupportedcontentformat-text' => 'The content format $1 is not supported by the content model $2.',
+'editpage-notsupportedcontentformat-title' => 'Content format not supported',
+'editpage-notsupportedcontentformat-text'  => 'The content format $1 is not supported by the content model $2.',
 
 # Content models
 'content-model-wikitext'   => 'wikitext',
@@ -1589,15 +1594,15 @@ If you are logged in, you can disable this warning in the "{{int:prefs-editing}}
 'content-model-css'        => 'CSS',
 
 # Parser/template warnings
-'expensive-parserfunction-warning'        => "<strong>Warning:</strong> This page contains too many expensive parser function calls.
+'expensive-parserfunction-warning'        => '<strong>Warning:</strong> This page contains too many expensive parser function calls.
 
-It should have less than $2 {{PLURAL:$2|call|calls}}, there {{PLURAL:$1|is now $1 call|are now $1 calls}}.",
+It should have less than $2 {{PLURAL:$2|call|calls}}, there {{PLURAL:$1|is now $1 call|are now $1 calls}}.',
 'expensive-parserfunction-category'       => 'Pages with too many expensive parser function calls',
-'post-expand-template-inclusion-warning'  => "<strong>Warning:</strong> Template include size is too large.
-Some templates will not be included.",
+'post-expand-template-inclusion-warning'  => '<strong>Warning:</strong> Template include size is too large.
+Some templates will not be included.',
 'post-expand-template-inclusion-category' => 'Pages where template include size is exceeded',
-'post-expand-template-argument-warning'   => "<strong>Warning:</strong> This page contains at least one template argument that has a too large expansion size.
-These arguments have been omitted.",
+'post-expand-template-argument-warning'   => '<strong>Warning:</strong> This page contains at least one template argument that has a too large expansion size.
+These arguments have been omitted.',
 'post-expand-template-argument-category'  => 'Pages containing omitted template arguments',
 'parser-template-loop-warning'            => 'Template loop detected: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Template recursion depth limit exceeded ($1)',
@@ -1620,14 +1625,14 @@ Please check the comparison below to verify that this is what you want to do, an
 'undo-summary-username-hidden' => 'Undo revision $1 by a hidden user',
 
 # Account creation failure
-'cantcreateaccounttitle' => 'Cannot create account',
+'cantcreateaccounttitle'       => 'Cannot create account',
+'cantcreateaccount-text'       => 'Account creation from this IP address (<strong>$1</strong>) has been blocked by [[User:$3|$3]].
+
+The reason given by $3 is <em>$2</em>',
 '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 (<strong>$1</strong>) has been blocked by [[User:$3|$3]].
-
-The reason given by $3 is <em>$2</em>",
-'createaccount-hook-aborted' => '$1', # do not translate or duplicate this message to other languages
+'createaccount-hook-aborted'   => '$1', # do not translate or duplicate this message to other languages
 
 # History pages
 'viewpagelogs'           => 'View logs for this page',
@@ -1646,8 +1651,8 @@ The reason given by $3 is <em>$2</em>",
 'last'                   => 'prev',
 'page_first'             => 'first',
 'page_last'              => 'last',
-'histlegend'             => "Diff selection: Mark the radio boxes of the revisions to compare and hit enter or the button at the bottom.<br />
-Legend: <strong>({{int:cur}})</strong> = difference with latest revision, <strong>({{int:last}})</strong> = difference with preceding revision, <strong>{{int:minoreditletter}}</strong> = minor edit.",
+'histlegend'             => 'Diff selection: Mark the radio boxes of the revisions to compare and hit enter or the button at the bottom.<br />
+Legend: <strong>({{int:cur}})</strong> = difference with latest revision, <strong>({{int:last}})</strong> = difference with preceding revision, <strong>{{int:minoreditletter}}</strong> = minor edit.',
 'history-fieldset-title' => 'Browse history',
 'history-show-deleted'   => 'Deleted only',
 'history_copyright'      => '-', # do not translate or duplicate this message to other languages
@@ -1669,31 +1674,31 @@ Try [[Special:Search|searching on the wiki]] for relevant new pages.',
 'rev-deleted-user'            => '(username removed)',
 'rev-deleted-event'           => '(log action removed)',
 'rev-deleted-user-contribs'   => '[username or IP address removed - edit hidden from contributions]',
-'rev-deleted-text-permission' => "This page revision has been <strong>deleted</strong>.
-Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
-'rev-deleted-text-unhide'     => "This page revision has been <strong>deleted</strong>.
+'rev-deleted-text-permission' => 'This page revision has been <strong>deleted</strong>.
+Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].',
+'rev-deleted-text-unhide'     => 'This page revision has been <strong>deleted</strong>.
 Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].
-You can still [$1 view this revision] if you wish to proceed.",
-'rev-suppressed-text-unhide'  => "This page revision has been <strong>suppressed</strong>.
+You can still [$1 view this revision] if you wish to proceed.',
+'rev-suppressed-text-unhide'  => 'This page revision has been <strong>suppressed</strong>.
 Details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].
-You can still [$1 view this revision] if you wish to proceed.",
-'rev-deleted-text-view'       => "This page revision has been <strong>deleted</strong>.
-You can view it; details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
-'rev-suppressed-text-view'    => "This page revision has been <strong>suppressed</strong>.
-You can view it; details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].",
-'rev-deleted-no-diff'         => "You cannot view this diff because one of the revisions has been <strong>deleted</strong>.
-Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
-'rev-suppressed-no-diff'      => "You cannot view this diff because one of the revisions has been <strong>deleted</strong>.",
-'rev-deleted-unhide-diff'     => "One of the revisions of this diff has been <strong>deleted</strong>.
+You can still [$1 view this revision] if you wish to proceed.',
+'rev-deleted-text-view'       => 'This page revision has been <strong>deleted</strong>.
+You can view it; details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].',
+'rev-suppressed-text-view'    => 'This page revision has been <strong>suppressed</strong>.
+You can view it; details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].',
+'rev-deleted-no-diff'         => 'You cannot view this diff because one of the revisions has been <strong>deleted</strong>.
+Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].',
+'rev-suppressed-no-diff'      => 'You cannot view this diff because one of the revisions has been <strong>deleted</strong>.',
+'rev-deleted-unhide-diff'     => 'One of the revisions of this diff has been <strong>deleted</strong>.
 Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].
-You can still [$1 view this diff] if you wish to proceed.",
-'rev-suppressed-unhide-diff'  => "One of the revisions of this diff has been <strong>suppressed</strong>.
+You can still [$1 view this diff] if you wish to proceed.',
+'rev-suppressed-unhide-diff'  => 'One of the revisions of this diff has been <strong>suppressed</strong>.
 Details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].
-You can still [$1 view this diff] if you wish to proceed.",
-'rev-deleted-diff-view'       => "One of the revisions of this diff has been <strong>deleted</strong>.
-You can view this diff; details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].",
-'rev-suppressed-diff-view'    => "One of the revisions of this diff has been <strong>suppressed</strong>.
-You can view this diff; details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].",
+You can still [$1 view this diff] if you wish to proceed.',
+'rev-deleted-diff-view'       => 'One of the revisions of this diff has been <strong>deleted</strong>.
+You can view this diff; details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].',
+'rev-suppressed-diff-view'    => 'One of the revisions of this diff has been <strong>suppressed</strong>.
+You can view this diff; details can be found in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].',
 'rev-delundel'                => 'change visibility',
 'rev-showdeleted'             => 'show',
 'revisiondelete'              => 'Delete/undelete revisions',
@@ -1703,15 +1708,15 @@ function, the specified revision does not exist, or you are attempting to hide t
 'revdelete-no-file'           => 'The file specified does not exist.',
 'revdelete-show-file-confirm' => 'Are you sure you want to view a deleted revision of the file "<nowiki>$1</nowiki>" from $2 at $3?',
 'revdelete-show-file-submit'  => 'Yes',
-'revdelete-selected'          => "<strong>{{PLURAL:$2|Selected revision|Selected revisions}} of [[:$1]]:</strong>",
-'logdelete-selected'          => "<strong>{{PLURAL:$1|Selected log event|Selected log events}}:</strong>",
-'revdelete-text'              => "<strong>Deleted revisions and events will still appear in the page history and logs, but parts of their content will be inaccessible to the public.</strong>
-Other administrators on {{SITENAME}} will still be able to access the hidden content and can undelete it again through this same interface, unless additional restrictions are set.",
+'revdelete-selected'          => '<strong>{{PLURAL:$2|Selected revision|Selected revisions}} of [[:$1]]:</strong>',
+'logdelete-selected'          => '<strong>{{PLURAL:$1|Selected log event|Selected log events}}:</strong>',
+'revdelete-text'              => '<strong>Deleted revisions and events will still appear in the page history and logs, but parts of their content will be inaccessible to the public.</strong>
+Other administrators on {{SITENAME}} will still be able to access the hidden content and can undelete it again through this same interface, unless additional restrictions are set.',
 'revdelete-confirm'           => 'Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].',
-'revdelete-suppress-text'     => "Suppression should <strong>only</strong> be used for the following cases:
+'revdelete-suppress-text'     => 'Suppression should <strong>only</strong> be used for the following cases:
 * potentially libelous information
 * inappropriate personal information
-*: <em>home addresses and telephone numbers, national identification numbers, etc.</em>",
+*: <em>home addresses and telephone numbers, national identification numbers, etc.</em>',
 'revdelete-legend'            => 'Set visibility restrictions',
 'revdelete-hide-text'         => 'Revision text',
 'revdelete-hide-image'        => 'Hide file content',
@@ -1726,12 +1731,12 @@ Other administrators on {{SITENAME}} will still be able to access the hidden con
 'revdelete-unsuppress'        => 'Remove restrictions on restored revisions',
 'revdelete-log'               => 'Reason:',
 'revdelete-submit'            => 'Apply to selected {{PLURAL:$1|revision|revisions}}',
-'revdelete-success'           => "<strong>Revision visibility successfully updated.</strong>",
-'revdelete-failure'           => "<strong>Revision visibility could not be updated:</strong>
-$1",
-'logdelete-success'           => "<strong>Log visibility successfully set.</strong>",
-'logdelete-failure'           => "<strong>Log visibility could not be set:</strong>
-$1",
+'revdelete-success'           => '<strong>Revision visibility successfully updated.</strong>',
+'revdelete-failure'           => '<strong>Revision visibility could not be updated:</strong>
+$1',
+'logdelete-success'           => '<strong>Log visibility successfully set.</strong>',
+'logdelete-failure'           => '<strong>Log visibility could not be set:</strong>
+$1',
 'revdel-restore'              => 'change visibility',
 'pagehist'                    => 'Page history',
 'deletedhist'                 => 'Deleted history',
@@ -1742,7 +1747,7 @@ You do not have access to it.',
 'revdelete-modify-no-access'  => 'Error modifying the item dated $2, $1: This item has been marked "restricted".
 You do not have access to it.',
 'revdelete-modify-missing'    => 'Error modifying item ID $1: It is missing from the database!',
-'revdelete-no-change'         => "<strong>Warning:</strong> The item dated $2, $1 already had the requested visibility settings.",
+'revdelete-no-change'         => '<strong>Warning:</strong> The item dated $2, $1 already had the requested visibility settings.',
 'revdelete-concurrent-change' => 'Error modifying the item dated $2, $1: Its status appears to have been changed by someone else while you attempted to modify it.
 Please check the logs.',
 'revdelete-only-restricted'   => 'Error hiding the item dated $2, $1: You cannot suppress items from view by administrators without also selecting one of the other visibility options.',
@@ -1825,8 +1830,8 @@ Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'nextn-title'                      => 'Next $1 {{PLURAL:$1|result|results}}',
 'shown-title'                      => 'Show $1 {{PLURAL:$1|result|results}} per page',
 'viewprevnext'                     => 'View ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-exists'                => "<strong>There is a page named \"[[:\$1]]\" on this wiki.</strong> {{PLURAL:$2|0=|See also the other search results found.}}",
-'searchmenu-new'                   => "<strong>Create the page \"[[:\$1]]\" on this wiki!</strong> {{PLURAL:$2|0=|See also the page found with your search.|See also the search results found.}}",
+'searchmenu-exists'                => '<strong>There is a page named "[[:$1]]" on this wiki.</strong> {{PLURAL:$2|0=|See also the other search results found.}}',
+'searchmenu-new'                   => '<strong>Create the page "[[:$1]]" on this wiki!</strong> {{PLURAL:$2|0=|See also the page found with your search.|See also the search results found.}}',
 'searchmenu-new-nocreate'          => '', # do not translate or duplicate this message to other languages
 'searchprofile-articles'           => 'Content pages',
 'searchprofile-project'            => 'Help and Project pages',
@@ -1853,10 +1858,10 @@ Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'searcheverything-enable'          => 'Search in all namespaces',
 'searchrelated'                    => 'related',
 'searchall'                        => 'all',
-'showingresults'                   => "Showing below up to {{PLURAL:$1|<strong>1</strong> result|<strong>$1</strong> results}} starting with #<strong>$2</strong>.",
-'showingresultsinrange'            => "Showing below up to {{PLURAL:$1|<strong>1</strong> result|<strong>$1</strong> results}} in range #<strong>$2</strong> to #<strong>$3</strong>.",
-'showingresultsnum'                => "Showing below {{PLURAL:$3|<strong>1</strong> result|<strong>$3</strong> results}} starting with #<strong>$2</strong>.",
-'showingresultsheader'             => "{{PLURAL:$5|Result <strong>$1</strong> of <strong>$3</strong>|Results <strong>$1 - $2</strong> of <strong>$3</strong>}} for <strong>$4</strong>",
+'showingresults'                   => 'Showing below up to {{PLURAL:$1|<strong>1</strong> result|<strong>$1</strong> results}} starting with #<strong>$2</strong>.',
+'showingresultsinrange'            => 'Showing below up to {{PLURAL:$1|<strong>1</strong> result|<strong>$1</strong> results}} in range #<strong>$2</strong> to #<strong>$3</strong>.',
+'showingresultsnum'                => 'Showing below {{PLURAL:$3|<strong>1</strong> result|<strong>$3</strong> results}} starting with #<strong>$2</strong>.',
+'showingresultsheader'             => '{{PLURAL:$5|Result <strong>$1</strong> of <strong>$3</strong>|Results <strong>$1 - $2</strong> of <strong>$3</strong>}} for <strong>$4</strong>',
 'search-nonefound'                 => 'There were no results matching the query.',
 'powersearch-legend'               => 'Advanced search',
 'powersearch-ns'                   => 'Search in namespaces:',
@@ -2018,7 +2023,7 @@ Your email address is not revealed when other users contact you.',
 'userrights-lookup-user'         => 'Manage user groups',
 'userrights-user-editname'       => 'Enter a username:',
 'editusergroup'                  => 'Edit user groups',
-'editinguser'                    => "Changing user rights of user <strong>[[User:$1|$1]]</strong> $2",
+'editinguser'                    => 'Changing user rights of user <strong>[[User:$1|$1]]</strong> $2',
 'userrights-editusergroup'       => 'Edit user groups',
 'saveusergroups'                 => 'Save user groups',
 'userrights-groupsmember'        => 'Member of:',
@@ -2200,15 +2205,27 @@ Your email address is not revealed when other users contact you.',
 'recentchanges-label-plusminus'     => 'The page size changed by this number of bytes',
 'recentchanges-legend-heading'      => "'''Legend:'''",
 'recentchanges-legend-newpage'      => '(also see [[Special:NewPages|list of new pages]])',
-'recentchanges-legend-plusminus'    => "(<em>±123</em>)",
-'rcnotefrom'                        => "Below are the changes since <strong>$2</strong> (up to <strong>$1</strong> shown).",
+'recentchanges-legend-plusminus'    => '(<em>±123</em>)', # only translate this message to other languages if you have to change it
+'rcnotefrom'                        => 'Below are the changes since <strong>$2</strong> (up to <strong>$1</strong> shown).',
 'rclistfrom'                        => 'Show new changes starting from $1',
 'rcshowhideminor'                   => '$1 minor edits',
+'rcshowhideminor-show'              => 'Show',
+'rcshowhideminor-hide'              => 'Hide',
 'rcshowhidebots'                    => '$1 bots',
+'rcshowhidebots-show'               => 'Show',
+'rcshowhidebots-hide'               => 'Hide',
 'rcshowhideliu'                     => '$1 registered users',
+'rcshowhideliu-show'                => 'Show',
+'rcshowhideliu-hide'                => 'Hide',
 'rcshowhideanons'                   => '$1 anonymous users',
+'rcshowhideanons-show'              => 'Show',
+'rcshowhideanons-hide'              => 'Hide',
 'rcshowhidepatr'                    => '$1 patrolled edits',
+'rcshowhidepatr-show'               => 'Show',
+'rcshowhidepatr-hide'               => 'Hide',
 'rcshowhidemine'                    => '$1 my edits',
+'rcshowhidemine-show'               => 'Show',
+'rcshowhidemine-hide'               => 'Hide',
 'rclinks'                           => 'Show last $1 changes in last $2 days<br />$3',
 'diff'                              => 'diff',
 'hist'                              => 'hist',
@@ -2234,139 +2251,140 @@ Your email address is not revealed when other users contact you.',
 'recentchangeslinked-feed'    => 'Related changes',
 'recentchangeslinked-toolbox' => 'Related changes',
 'recentchangeslinked-title'   => 'Changes related to "$1"',
-'recentchangeslinked-summary' => "This is a list of changes made recently to pages linked from a specified page (or to members of a specified category).
-Pages on [[Special:Watchlist|your watchlist]] are <strong>bold</strong>.",
+'recentchangeslinked-summary' => 'This is a list of changes made recently to pages linked from a specified page (or to members of a specified category).
+Pages on [[Special:Watchlist|your watchlist]] are <strong>bold</strong>.',
 'recentchangeslinked-page'    => 'Page name:',
 'recentchangeslinked-to'      => 'Show changes to pages linked to the given page instead',
 
 # Upload
-'upload'                      => 'Upload file',
-'uploadbtn'                   => 'Upload file',
-'reuploaddesc'                => 'Cancel upload and return to the upload form',
-'upload-tryagain'             => 'Submit modified file description',
-'uploadnologin'               => 'Not logged in',
-'uploadnologintext'           => 'Please $1 to upload files.',
-'upload_directory_missing'    => 'The upload directory ($1) is missing and could not be created by the webserver.',
-'upload_directory_read_only'  => 'The upload directory ($1) is not writable by the webserver.',
-'uploaderror'                 => 'Upload error',
-'upload-summary'              => '', # do not translate or duplicate this message to other languages
-'upload-recreate-warning'     => "<strong>Warning: A file by that name has been deleted or moved.</strong>
-
-The deletion and move log for this page are provided here for convenience:",
-'uploadtext'                  => "Use the form below to upload files.
+'upload'                         => 'Upload file',
+'uploadbtn'                      => 'Upload file',
+'reuploaddesc'                   => 'Cancel upload and return to the upload form',
+'upload-tryagain'                => 'Submit modified file description',
+'uploadnologin'                  => 'Not logged in',
+'uploadnologintext'              => 'Please $1 to upload files.',
+'upload_directory_missing'       => 'The upload directory ($1) is missing and could not be created by the webserver.',
+'upload_directory_read_only'     => 'The upload directory ($1) is not writable by the webserver.',
+'uploaderror'                    => 'Upload error',
+'upload-summary'                 => '', # do not translate or duplicate this message to other languages
+'upload-recreate-warning'        => '<strong>Warning: A file by that name has been deleted or moved.</strong>
+
+The deletion and move log for this page are provided here for convenience:',
+'uploadtext'                     => 'Use the form below to upload files.
 To view or search previously uploaded files go to the [[Special:FileList|list of uploaded files]], (re)uploads are also logged in the [[Special:Log/upload|upload log]], deletions in the [[Special:Log/delete|deletion log]].
 
 To include a file in a page, use a link in one of the following forms:
 * <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code></strong> to use the full version of the file
-* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code></strong> to use a 200 pixel wide rendition in a box in the left margin with \"alt text\" as description
-* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> for directly linking to the file without displaying the file",
-'upload-permitted'            => 'Permitted file types: $1.',
-'upload-preferred'            => 'Preferred file types: $1.',
-'upload-prohibited'           => 'Prohibited file types: $1.',
-'uploadfooter'                => '-', # do not translate or duplicate this message to other languages
-'upload-default-description'  => '-', # do not translate or duplicate this message to other languages
-'uploadlog'                   => 'upload log',
-'uploadlogpage'               => 'Upload log',
-'uploadlogpagetext'           => 'Below is a list of the most recent file uploads.
+* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code></strong> to use a 200 pixel wide rendition in a box in the left margin with "alt text" as description
+* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> for directly linking to the file without displaying the file',
+'upload-permitted'               => 'Permitted file types: $1.',
+'upload-preferred'               => 'Preferred file types: $1.',
+'upload-prohibited'              => 'Prohibited file types: $1.',
+'uploadfooter'                   => '-', # do not translate or duplicate this message to other languages
+'upload-default-description'     => '-', # do not translate or duplicate this message to other languages
+'uploadlog'                      => 'upload log',
+'uploadlogpage'                  => 'Upload log',
+'uploadlogpagetext'              => 'Below is a list of the most recent file uploads.
 See the [[Special:NewFiles|gallery of new files]] for a more visual overview.',
-'filename'                    => 'Filename',
-'filedesc'                    => 'Summary',
-'fileuploadsummary'           => 'Summary:',
-'filereuploadsummary'         => 'File changes:',
-'filestatus'                  => 'Copyright status:',
-'filesource'                  => 'Source:',
-'uploadedfiles'               => 'Uploaded files',
-'ignorewarning'               => 'Ignore warning and save file anyway',
-'ignorewarnings'              => 'Ignore any warnings',
-'minlength1'                  => 'Filenames must be at least one letter.',
-'illegalfilename'             => 'The filename "$1" contains characters that are not allowed in page titles.
+'filename'                       => 'Filename',
+'filedesc'                       => 'Summary',
+'fileuploadsummary'              => 'Summary:',
+'filereuploadsummary'            => 'File changes:',
+'filestatus'                     => 'Copyright status:',
+'filesource'                     => 'Source:',
+'uploadedfiles'                  => 'Uploaded files',
+'ignorewarning'                  => 'Ignore warning and save file anyway',
+'ignorewarnings'                 => 'Ignore any warnings',
+'minlength1'                     => 'Filenames must be at least one letter.',
+'illegalfilename'                => 'The filename "$1" contains characters that are not allowed in page titles.
 Please rename the file and try uploading it again.',
-'filename-toolong'            => 'Filenames may not be longer than 240 bytes.',
-'badfilename'                 => 'Filename has been changed to "$1".',
-'filetype-mime-mismatch'      => 'File extension ".$1" does not match the detected MIME type of the file ($2).',
-'filetype-badmime'            => 'Files of the MIME type "$1" are not allowed to be uploaded.',
-'filetype-bad-ie-mime'        => 'Cannot upload this file because Internet Explorer would detect it as "$1", which is a disallowed and potentially dangerous file type.',
-'filetype-unwanted-type'      => "<strong>\".\$1\"</strong> is an unwanted file type.
-Preferred {{PLURAL:\$3|file type is|file types are}} \$2.",
-'filetype-banned-type'        => '<strong>".$1"</strong> {{PLURAL:$4|is not a permitted file type|are not permitted file types}}.
+'filename-toolong'               => 'Filenames may not be longer than 240 bytes.',
+'badfilename'                    => 'Filename has been changed to "$1".',
+'filetype-mime-mismatch'         => 'File extension ".$1" does not match the detected MIME type of the file ($2).',
+'filetype-badmime'               => 'Files of the MIME type "$1" are not allowed to be uploaded.',
+'filetype-bad-ie-mime'           => 'Cannot upload this file because Internet Explorer would detect it as "$1", which is a disallowed and potentially dangerous file type.',
+'filetype-unwanted-type'         => '<strong>".$1"</strong> is an unwanted file type.
+Preferred {{PLURAL:$3|file type is|file types are}} $2.',
+'filetype-banned-type'           => '<strong>".$1"</strong> {{PLURAL:$4|is not a permitted file type|are not permitted file types}}.
 Permitted {{PLURAL:$3|file type is|file types are}} $2.',
-'filetype-missing'            => 'The file has no extension (like ".jpg").',
-'empty-file'                  => 'The file you submitted was empty.',
-'file-too-large'              => 'The file you submitted was too large.',
-'filename-tooshort'           => 'The filename is too short.',
-'filetype-banned'             => 'This type of file is banned.',
-'verification-error'          => 'This file did not pass file verification.',
-'hookaborted'                 => 'The modification you tried to make was aborted by an extension.',
-'illegal-filename'            => 'The filename is not allowed.',
-'overwrite'                   => 'Overwriting an existing file is not allowed.',
-'unknown-error'               => 'An unknown error occurred.',
-'tmp-create-error'            => 'Could not create temporary file.',
-'tmp-write-error'             => 'Error writing temporary file.',
-'large-file'                  => 'It is recommended that files are no larger than $1;
+'filetype-missing'               => 'The file has no extension (like ".jpg").',
+'empty-file'                     => 'The file you submitted was empty.',
+'file-too-large'                 => 'The file you submitted was too large.',
+'filename-tooshort'              => 'The filename is too short.',
+'filetype-banned'                => 'This type of file is banned.',
+'verification-error'             => 'This file did not pass file verification.',
+'hookaborted'                    => 'The modification you tried to make was aborted by an extension.',
+'illegal-filename'               => 'The filename is not allowed.',
+'overwrite'                      => 'Overwriting an existing file is not allowed.',
+'unknown-error'                  => 'An unknown error occurred.',
+'tmp-create-error'               => 'Could not create temporary file.',
+'tmp-write-error'                => 'Error writing temporary file.',
+'large-file'                     => 'It is recommended that files are no larger than $1;
 this file is $2.',
-'largefileserver'             => 'This file is bigger than the server is configured to allow.',
-'emptyfile'                   => 'The file you uploaded seems to be empty.
+'largefileserver'                => 'This file is bigger than the server is configured to allow.',
+'emptyfile'                      => 'The file you uploaded seems to be empty.
 This might be due to a typo in the filename.
 Please check whether you really want to upload this file.',
-'windows-nonascii-filename'   => 'This wiki does not support filenames with special characters.',
-'fileexists'                  => 'A file with this name exists already, please check <strong>[[:$1]]</strong> if you are not sure if you want to change it.
+'windows-nonascii-filename'      => 'This wiki does not support filenames with special characters.',
+'fileexists'                     => 'A file with this name exists already, please check <strong>[[:$1]]</strong> if you are not sure if you want to change it.
 [[$1|thumb]]',
-'filepageexists'              => 'The description page for this file has already been created at <strong>[[:$1]]</strong>, but no file with this name currently exists.
+'filepageexists'                 => 'The description page for this file has already been created at <strong>[[:$1]]</strong>, but no file with this name currently exists.
 The summary you enter will not appear on the description page.
 To make your summary appear there, you will need to manually edit it.
 [[$1|thumb]]',
-'fileexists-extension'        => 'A file with a similar name exists: [[$2|thumb]]
+'fileexists-extension'           => 'A file with a similar name exists: [[$2|thumb]]
 * Name of the uploading file: <strong>[[:$1]]</strong>
 * Name of the existing file: <strong>[[:$2]]</strong>
 Please choose a different name.',
-'fileexists-thumbnail-yes'    => "The file seems to be an image of reduced size <em>(thumbnail)</em>.
+'fileexists-thumbnail-yes'       => 'The file seems to be an image of reduced size <em>(thumbnail)</em>.
 [[$1|thumb]]
 Please check the file <strong>[[:$1]]</strong>.
-If the checked file is the same image of original size it is not necessary to upload an extra thumbnail.",
-'file-thumbnail-no'           => "The filename begins with <strong>$1</strong>.
+If the checked file is the same image of original size it is not necessary to upload an extra thumbnail.',
+'file-thumbnail-no'              => 'The filename begins with <strong>$1</strong>.
 It seems to be an image of reduced size <em>(thumbnail)</em>.
-If you have this image in full resolution upload this one, otherwise change the filename please.",
-'fileexists-forbidden'        => 'A file with this name already exists, and cannot be overwritten.
+If you have this image in full resolution upload this one, otherwise change the filename please.',
+'fileexists-forbidden'           => 'A file with this name already exists, and cannot be overwritten.
 If you still want to upload your file, please go back and use a new name.
 [[File:$1|thumb|center|$1]]',
-'fileexists-shared-forbidden' => 'A file with this name exists already in the shared file repository.
+'fileexists-shared-forbidden'    => 'A file with this name exists already in the shared file repository.
 If you still want to upload your file, please go back and use a new name.
 [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate'       => 'This file is a duplicate of the following {{PLURAL:$1|file|files}}:',
-'file-deleted-duplicate'      => "A file identical to this file ([[:$1]]) has previously been deleted.
+'file-exists-duplicate'          => 'This file is a duplicate of the following {{PLURAL:$1|file|files}}:',
+'file-deleted-duplicate'         => "A file identical to this file ([[:$1]]) has previously been deleted.
 You should check that file's deletion history before proceeding to re-upload it.",
-'file-deleted-duplicate-notitle' => "A file identical to this file has previously been deleted, and the title has been suppressed.
-You should ask someone with the ability to view suppressed file data to review the situation before proceeding to re-upload it.",
-'uploadwarning'               => 'Upload warning',
-'uploadwarning-text'          => 'Please modify the file description below and try again.',
-'savefile'                    => 'Save file',
-'uploadedimage'               => 'uploaded "[[$1]]"',
-'overwroteimage'              => 'uploaded a new version of "[[$1]]"',
-'uploaddisabled'              => 'Uploads disabled.',
-'copyuploaddisabled'          => 'Upload by URL disabled.',
-'uploadfromurl-queued'        => 'Your upload has been queued.',
-'uploaddisabledtext'          => 'File uploads are disabled.',
-'php-uploaddisabledtext'      => 'File uploads are disabled in PHP.
+'file-deleted-duplicate-notitle' => 'A file identical to this file has previously been deleted, and the title has been suppressed.
+You should ask someone with the ability to view suppressed file data to review the situation before proceeding to re-upload it.',
+'uploadwarning'                  => 'Upload warning',
+'uploadwarning-text'             => 'Please modify the file description below and try again.',
+'savefile'                       => 'Save file',
+'uploadedimage'                  => 'uploaded "[[$1]]"',
+'overwroteimage'                 => 'uploaded a new version of "[[$1]]"',
+'uploaddisabled'                 => 'Uploads disabled.',
+'copyuploaddisabled'             => 'Upload by URL disabled.',
+'uploadfromurl-queued'           => 'Your upload has been queued.',
+'uploaddisabledtext'             => 'File uploads are disabled.',
+'php-uploaddisabledtext'         => 'File uploads are disabled in PHP.
 Please check the file_uploads setting.',
-'uploadscripted'              => 'This file contains HTML or script code that may be erroneously interpreted by a web browser.',
-'uploadinvalidxml'            => 'The XML in the uploaded file could not be parsed.',
-'uploadvirus'                 => 'The file contains a virus!
+'uploadscripted'                 => 'This file contains HTML or script code that may be erroneously interpreted by a web browser.',
+'uploadscriptednamespace'        => 'This SVG file contains an illegal namespace "$1"',
+'uploadinvalidxml'               => 'The XML in the uploaded file could not be parsed.',
+'uploadvirus'                    => 'The file contains a virus!
 Details: $1',
-'uploadjava'                  => 'The file is a ZIP file that contains a Java .class file.
+'uploadjava'                     => 'The file is a ZIP file that contains a Java .class file.
 Uploading Java files is not allowed because they can cause security restrictions to be bypassed.',
-'upload-source'               => 'Source file',
-'sourcefilename'              => 'Source filename:',
-'sourceurl'                   => 'Source URL:',
-'destfilename'                => 'Destination filename:',
-'upload-maxfilesize'          => 'Maximum file size: $1',
-'upload-description'          => 'File description',
-'upload-options'              => 'Upload options',
-'watchthisupload'             => 'Watch this file',
-'filewasdeleted'              => 'A file of this name has been previously uploaded and subsequently deleted.
+'upload-source'                  => 'Source file',
+'sourcefilename'                 => 'Source filename:',
+'sourceurl'                      => 'Source URL:',
+'destfilename'                   => 'Destination filename:',
+'upload-maxfilesize'             => 'Maximum file size: $1',
+'upload-description'             => 'File description',
+'upload-options'                 => 'Upload options',
+'watchthisupload'                => 'Watch this file',
+'filewasdeleted'                 => 'A file of this name has been previously uploaded and subsequently deleted.
 You should check the $1 before proceeding to upload it again.',
-'filename-bad-prefix'         => "The name of the file you are uploading begins with <strong>\"\$1\"</strong>, which is a non-descriptive name typically assigned automatically by digital cameras.
-Please choose a more descriptive name for your file.",
-'filename-prefix-blacklist'   => ' #<!-- leave this line exactly as it is --> <pre>
+'filename-bad-prefix'            => 'The name of the file you are uploading begins with <strong>"$1"</strong>, which is a non-descriptive name typically assigned automatically by digital cameras.
+Please choose a more descriptive name for your file.',
+'filename-prefix-blacklist'      => ' #<!-- leave this line exactly as it is --> <pre>
 # Syntax is as follows:
 #   * Everything from a "#" character to the end of the line is a comment
 #   * Every non-blank line is a prefix for typical filenames assigned automatically by digital cameras
@@ -2380,14 +2398,14 @@ JD # Jenoptik
 MGP # Pentax
 PICT # misc.
  #</pre> <!-- leave this line exactly as it is -->', # only translate this message to other languages if you have to change it
-'upload-success-subj'         => 'Successful upload',
-'upload-success-msg'          => 'Your upload from [$2] was successful. It is available here: [[:{{ns:file}}:$1]]',
-'upload-failure-subj'         => 'Upload problem',
-'upload-failure-msg'          => 'There was a problem with your upload from [$2]:
+'upload-success-subj'            => 'Successful upload',
+'upload-success-msg'             => 'Your upload from [$2] was successful. It is available here: [[:{{ns:file}}:$1]]',
+'upload-failure-subj'            => 'Upload problem',
+'upload-failure-msg'             => 'There was a problem with your upload from [$2]:
 
 $1',
-'upload-warning-subj'         => 'Upload warning',
-'upload-warning-msg'          => 'There was a problem with your upload from [$2]. You may return to the [[Special:Upload/stash/$1|upload form]] to correct this problem.',
+'upload-warning-subj'            => 'Upload warning',
+'upload-warning-msg'             => 'There was a problem with your upload from [$2]. You may return to the [[Special:Upload/stash/$1|upload form]] to correct this problem.',
 
 'upload-proto-error'                => 'Incorrect protocol',
 'upload-proto-error-text'           => 'Remote upload requires URLs beginning with <code>http://</code> or <code>ftp://</code>.',
@@ -2574,24 +2592,24 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 # File reversion
 'filerevert'                => 'Revert $1',
 'filerevert-legend'         => 'Revert file',
-'filerevert-intro'          => "You are about to revert the file <strong>[[Media:$1|$1]]</strong> to the [$4 version as of $3, $2].",
+'filerevert-intro'          => 'You are about to revert the file <strong>[[Media:$1|$1]]</strong> to the [$4 version as of $3, $2].',
 'filerevert-comment'        => 'Reason:',
 'filerevert-defaultcomment' => 'Reverted to version as of $2, $1',
 'filerevert-submit'         => 'Revert',
-'filerevert-success'        => "<strong>[[Media:$1|$1]]</strong> has been reverted to the [$4 version as of $3, $2].",
+'filerevert-success'        => '<strong>[[Media:$1|$1]]</strong> has been reverted to the [$4 version as of $3, $2].',
 'filerevert-badversion'     => 'There is no previous local version of this file with the provided timestamp.',
 
 # File deletion
 'filedelete'                   => 'Delete $1',
 'filedelete-legend'            => 'Delete file',
-'filedelete-intro'             => "You are about to delete the file <strong>[[Media:$1|$1]]</strong> along with all of its history.",
-'filedelete-intro-old'         => "You are deleting the version of <strong>[[Media:$1|$1]]</strong> as of [$4 $3, $2].",
+'filedelete-intro'             => 'You are about to delete the file <strong>[[Media:$1|$1]]</strong> along with all of its history.',
+'filedelete-intro-old'         => 'You are deleting the version of <strong>[[Media:$1|$1]]</strong> as of [$4 $3, $2].',
 'filedelete-comment'           => 'Reason:',
 'filedelete-submit'            => 'Delete',
-'filedelete-success'           => "<strong>$1</strong> has been deleted.",
-'filedelete-success-old'       => "The version of <strong>[[Media:$1|$1]]</strong> as of $3, $2 has been deleted.",
-'filedelete-nofile'            => "<strong>$1</strong> does not exist.",
-'filedelete-nofile-old'        => "There is no archived version of <strong>$1</strong> with the specified attributes.",
+'filedelete-success'           => '<strong>$1</strong> has been deleted.',
+'filedelete-success-old'       => 'The version of <strong>[[Media:$1|$1]]</strong> as of $3, $2 has been deleted.',
+'filedelete-nofile'            => '<strong>$1</strong> does not exist.',
+'filedelete-nofile-old'        => 'There is no archived version of <strong>$1</strong> with the specified attributes.',
 'filedelete-otherreason'       => 'Other/additional reason:',
 'filedelete-reason-otherlist'  => 'Other reason',
 'filedelete-reason-dropdown'   => '*Common delete reasons
@@ -2696,113 +2714,113 @@ It now redirects to [[$2]].',
 'fewestrevisions-summary' => '', # do not translate or duplicate this message to other languages
 
 # Miscellaneous special pages
-'nbytes'                          => '$1 {{PLURAL:$1|byte|bytes}}',
-'ncategories'                     => '$1 {{PLURAL:$1|category|categories}}',
-'ninterwikis'                     => '$1 {{PLURAL:$1|interwiki|interwikis}}',
-'nlinks'                          => '$1 {{PLURAL:$1|link|links}}',
-'nmembers'                        => '$1 {{PLURAL:$1|member|members}}',
-'nmemberschanged'                 => '$1 → $2 {{PLURAL:$2|member|members}}',
-'nrevisions'                      => '$1 {{PLURAL:$1|revision|revisions}}',
-'nviews'                          => '$1 {{PLURAL:$1|view|views}}',
-'nimagelinks'                     => 'Used on $1 {{PLURAL:$1|page|pages}}',
-'ntransclusions'                  => 'used on $1 {{PLURAL:$1|page|pages}}',
-'specialpage-empty'               => 'There are no results for this report.',
-'lonelypages'                     => 'Orphaned pages',
-'lonelypages-summary'             => '', # do not translate or duplicate this message to other languages
-'lonelypagestext'                 => 'The following pages are not linked from or transcluded into other pages in {{SITENAME}}.',
-'uncategorizedpages'              => 'Uncategorized pages',
-'uncategorizedpages-summary'      => '', # do not translate or duplicate this message to other languages
-'uncategorizedcategories'         => 'Uncategorized categories',
-'uncategorizedcategories-summary' => '', # do not translate or duplicate this message to other languages
-'uncategorizedimages'             => 'Uncategorized files',
-'uncategorizedimages-summary'     => '', # do not translate or duplicate this message to other languages
-'uncategorizedtemplates'          => 'Uncategorized templates',
-'uncategorizedtemplates-summary'  => '', # do not translate or duplicate this message to other languages
-'unusedcategories'                => 'Unused categories',
-'unusedcategories-summary'        => '', # do not translate or duplicate this message to other languages
-'unusedimages'                    => 'Unused files',
-'unusedimages-summary'            => '', # do not translate or duplicate this message to other languages
-'popularpages'                    => 'Popular pages',
-'popularpages-summary'            => '', # do not translate or duplicate this message to other languages
-'wantedcategories'                => 'Wanted categories',
-'wantedcategories-summary'        => '', # do not translate or duplicate this message to other languages
-'wantedpages'                     => 'Wanted pages',
-'wantedpages-summary'             => '', # do not translate or duplicate this message to other languages
-'wantedpages-badtitle'            => 'Invalid title in result set: $1',
-'wantedfiles'                     => 'Wanted files',
-'wantedfiles-summary'             => '', # do not translate or duplicate this message to other languages
-'wantedfiletext-cat'              => 'The following files are used but do not exist. Files from foreign repositories may be listed despite existing. Any such false positives will be <del>struck out</del>. Additionally, pages that embed files that do not exist are listed in [[:$1]].',
-'wantedfiletext-nocat'            => 'The following files are used but do not exist. Files from foreign repositories may be listed despite existing. Any such false positives will be <del>struck out</del>.',
-'wantedtemplates'                 => 'Wanted templates',
-'wantedtemplates-summary'         => '', # do not translate or duplicate this message to other languages
-'mostlinked'                      => 'Most linked-to pages',
-'mostlinked-summary'              => '', # do not translate or duplicate this message to other languages
-'mostlinkedcategories'            => 'Most linked-to categories',
-'mostlinkedcategories-summary'    => '', # do not translate or duplicate this message to other languages
-'mostlinkedtemplates'             => 'Most linked-to templates',
-'mostlinkedtemplates-summary'     => '', # do not translate or duplicate this message to other languages
-'mostcategories'                  => 'Pages with the most categories',
-'mostcategories-summary'          => '', # do not translate or duplicate this message to other languages
-'mostimages'                      => 'Most linked-to files',
-'mostimages-summary'              => '', # do not translate or duplicate this message to other languages
-'mostinterwikis'                  => 'Pages with the most interwikis',
-'mostinterwikis-summary'          => '', # do not translate or duplicate this message to other languages
-'mostrevisions'                   => 'Pages with the most revisions',
-'mostrevisions-summary'           => '', # do not translate or duplicate this message to other languages
-'prefixindex'                     => 'All pages with prefix',
-'prefixindex-namespace'           => 'All pages with prefix ($1 namespace)',
-'prefixindex-summary'             => '', # do not translate or duplicate this message to other languages
-'prefixindex-strip'               => 'Strip prefix in list',
-'shortpages'                      => 'Short pages',
-'shortpages-summary'              => '', # do not translate or duplicate this message to other languages
-'longpages'                       => 'Long pages',
-'longpages-summary'               => '', # do not translate or duplicate this message to other languages
-'deadendpages'                    => 'Dead-end pages',
-'deadendpages-summary'            => '', # do not translate or duplicate this message to other languages
-'deadendpagestext'                => 'The following pages do not link to other pages in {{SITENAME}}.',
-'protectedpages'                  => 'Protected pages',
-'protectedpages-indef'            => 'Indefinite protections only',
-'protectedpages-summary'          => 'This page lists existing pages that are currently protected. For a list of titles that are protected from creation, see [[{{#special:ProtectedTitles}}]].',
-'protectedpages-cascade'          => 'Cascading protections only',
-'protectedpages-noredirect'       => 'Hide redirects',
-'protectedpagesempty'             => 'No pages are currently protected with these parameters.',
-'protectedpages-timestamp'        => 'Timestamp',
-'protectedpages-page'             => 'Page',
-'protectedpages-expiry'           => 'Expires',
-'protectedpages-performer'        => 'Protecting user',
-'protectedpages-params'           => 'Protection parameters',
-'protectedpages-reason'           => 'Reason',
+'nbytes'                           => '$1 {{PLURAL:$1|byte|bytes}}',
+'ncategories'                      => '$1 {{PLURAL:$1|category|categories}}',
+'ninterwikis'                      => '$1 {{PLURAL:$1|interwiki|interwikis}}',
+'nlinks'                           => '$1 {{PLURAL:$1|link|links}}',
+'nmembers'                         => '$1 {{PLURAL:$1|member|members}}',
+'nmemberschanged'                  => '$1 → $2 {{PLURAL:$2|member|members}}',
+'nrevisions'                       => '$1 {{PLURAL:$1|revision|revisions}}',
+'nviews'                           => '$1 {{PLURAL:$1|view|views}}',
+'nimagelinks'                      => 'Used on $1 {{PLURAL:$1|page|pages}}',
+'ntransclusions'                   => 'used on $1 {{PLURAL:$1|page|pages}}',
+'specialpage-empty'                => 'There are no results for this report.',
+'lonelypages'                      => 'Orphaned pages',
+'lonelypages-summary'              => '', # do not translate or duplicate this message to other languages
+'lonelypagestext'                  => 'The following pages are not linked from or transcluded into other pages in {{SITENAME}}.',
+'uncategorizedpages'               => 'Uncategorized pages',
+'uncategorizedpages-summary'       => '', # do not translate or duplicate this message to other languages
+'uncategorizedcategories'          => 'Uncategorized categories',
+'uncategorizedcategories-summary'  => '', # do not translate or duplicate this message to other languages
+'uncategorizedimages'              => 'Uncategorized files',
+'uncategorizedimages-summary'      => '', # do not translate or duplicate this message to other languages
+'uncategorizedtemplates'           => 'Uncategorized templates',
+'uncategorizedtemplates-summary'   => '', # do not translate or duplicate this message to other languages
+'unusedcategories'                 => 'Unused categories',
+'unusedcategories-summary'         => '', # do not translate or duplicate this message to other languages
+'unusedimages'                     => 'Unused files',
+'unusedimages-summary'             => '', # do not translate or duplicate this message to other languages
+'popularpages'                     => 'Popular pages',
+'popularpages-summary'             => '', # do not translate or duplicate this message to other languages
+'wantedcategories'                 => 'Wanted categories',
+'wantedcategories-summary'         => '', # do not translate or duplicate this message to other languages
+'wantedpages'                      => 'Wanted pages',
+'wantedpages-summary'              => '', # do not translate or duplicate this message to other languages
+'wantedpages-badtitle'             => 'Invalid title in result set: $1',
+'wantedfiles'                      => 'Wanted files',
+'wantedfiles-summary'              => '', # do not translate or duplicate this message to other languages
+'wantedfiletext-cat'               => 'The following files are used but do not exist. Files from foreign repositories may be listed despite existing. Any such false positives will be <del>struck out</del>. Additionally, pages that embed files that do not exist are listed in [[:$1]].',
+'wantedfiletext-nocat'             => 'The following files are used but do not exist. Files from foreign repositories may be listed despite existing. Any such false positives will be <del>struck out</del>.',
+'wantedtemplates'                  => 'Wanted templates',
+'wantedtemplates-summary'          => '', # do not translate or duplicate this message to other languages
+'mostlinked'                       => 'Most linked-to pages',
+'mostlinked-summary'               => '', # do not translate or duplicate this message to other languages
+'mostlinkedcategories'             => 'Most linked-to categories',
+'mostlinkedcategories-summary'     => '', # do not translate or duplicate this message to other languages
+'mostlinkedtemplates'              => 'Most linked-to templates',
+'mostlinkedtemplates-summary'      => '', # do not translate or duplicate this message to other languages
+'mostcategories'                   => 'Pages with the most categories',
+'mostcategories-summary'           => '', # do not translate or duplicate this message to other languages
+'mostimages'                       => 'Most linked-to files',
+'mostimages-summary'               => '', # do not translate or duplicate this message to other languages
+'mostinterwikis'                   => 'Pages with the most interwikis',
+'mostinterwikis-summary'           => '', # do not translate or duplicate this message to other languages
+'mostrevisions'                    => 'Pages with the most revisions',
+'mostrevisions-summary'            => '', # do not translate or duplicate this message to other languages
+'prefixindex'                      => 'All pages with prefix',
+'prefixindex-namespace'            => 'All pages with prefix ($1 namespace)',
+'prefixindex-summary'              => '', # do not translate or duplicate this message to other languages
+'prefixindex-strip'                => 'Strip prefix in list',
+'shortpages'                       => 'Short pages',
+'shortpages-summary'               => '', # do not translate or duplicate this message to other languages
+'longpages'                        => 'Long pages',
+'longpages-summary'                => '', # do not translate or duplicate this message to other languages
+'deadendpages'                     => 'Dead-end pages',
+'deadendpages-summary'             => '', # do not translate or duplicate this message to other languages
+'deadendpagestext'                 => 'The following pages do not link to other pages in {{SITENAME}}.',
+'protectedpages'                   => 'Protected pages',
+'protectedpages-indef'             => 'Indefinite protections only',
+'protectedpages-summary'           => 'This page lists existing pages that are currently protected. For a list of titles that are protected from creation, see [[{{#special:ProtectedTitles}}]].',
+'protectedpages-cascade'           => 'Cascading protections only',
+'protectedpages-noredirect'        => 'Hide redirects',
+'protectedpagesempty'              => 'No pages are currently protected with these parameters.',
+'protectedpages-timestamp'         => 'Timestamp',
+'protectedpages-page'              => 'Page',
+'protectedpages-expiry'            => 'Expires',
+'protectedpages-performer'         => 'Protecting user',
+'protectedpages-params'            => 'Protection parameters',
+'protectedpages-reason'            => 'Reason',
 'protectedpages-unknown-timestamp' => 'Unknown',
 'protectedpages-unknown-performer' => 'Unknown user',
-'protectedpages-unknown-reason'   => '—', # do not translate or duplicate this message to other languages
-'protectedtitles'                 => 'Protected titles',
-'protectedtitles-summary'         => 'This page lists titles that are currently protected from creation. For a list of existing pages that are protected, see [[{{#special:ProtectedPages}}]].',
-'protectedtitlesempty'            => 'No titles are currently protected with these parameters.',
-'listusers'                       => 'User list',
-'listusers-summary'               => '', # do not translate or duplicate this message to other languages
-'listusers-editsonly'             => 'Show only users with edits',
-'listusers-creationsort'          => 'Sort by creation date',
-'listusers-desc'                  => 'Sort in descending order',
-'usereditcount'                   => '$1 {{PLURAL:$1|edit|edits}}',
-'usercreated'                     => '{{GENDER:$3|Created}} on $1 at $2',
-'newpages'                        => 'New pages',
-'newpages-summary'                => '', # do not translate or duplicate this message to other languages
-'newpages-username'               => 'Username:',
-'ancientpages'                    => 'Oldest pages',
-'ancientpages-summary'            => '', # do not translate or duplicate this message to other languages
-'move'                            => 'Move',
-'movethispage'                    => 'Move this page',
-'unusedimagestext'                => 'The following files exist but are not embedded in any page.
+'protectedpages-unknown-reason'    => '—', # do not translate or duplicate this message to other languages
+'protectedtitles'                  => 'Protected titles',
+'protectedtitles-summary'          => 'This page lists titles that are currently protected from creation. For a list of existing pages that are protected, see [[{{#special:ProtectedPages}}]].',
+'protectedtitlesempty'             => 'No titles are currently protected with these parameters.',
+'listusers'                        => 'User list',
+'listusers-summary'                => '', # do not translate or duplicate this message to other languages
+'listusers-editsonly'              => 'Show only users with edits',
+'listusers-creationsort'           => 'Sort by creation date',
+'listusers-desc'                   => 'Sort in descending order',
+'usereditcount'                    => '$1 {{PLURAL:$1|edit|edits}}',
+'usercreated'                      => '{{GENDER:$3|Created}} on $1 at $2',
+'newpages'                         => 'New pages',
+'newpages-summary'                 => '', # do not translate or duplicate this message to other languages
+'newpages-username'                => 'Username:',
+'ancientpages'                     => 'Oldest pages',
+'ancientpages-summary'             => '', # do not translate or duplicate this message to other languages
+'move'                             => 'Move',
+'movethispage'                     => 'Move this page',
+'unusedimagestext'                 => 'The following files exist but are not embedded in any page.
 Please note that other web sites may link to a file with a direct URL, and so may still be listed here despite being in active use.',
-'unusedcategoriestext'            => 'The following category pages exist, although no other page or category makes use of them.',
-'notargettitle'                   => 'No target',
-'notargettext'                    => 'You have not specified a target page or user to perform this function on.',
-'nopagetitle'                     => 'No such target page',
-'nopagetext'                      => 'The target page you have specified does not exist.',
-'pager-newer-n'                   => '{{PLURAL:$1|newer 1|newer $1}}',
-'pager-older-n'                   => '{{PLURAL:$1|older 1|older $1}}',
-'suppress'                        => 'Oversight',
-'querypage-disabled'              => 'This special page is disabled for performance reasons.',
+'unusedcategoriestext'             => 'The following category pages exist, although no other page or category makes use of them.',
+'notargettitle'                    => 'No target',
+'notargettext'                     => 'You have not specified a target page or user to perform this function on.',
+'nopagetitle'                      => 'No such target page',
+'nopagetext'                       => 'The target page you have specified does not exist.',
+'pager-newer-n'                    => '{{PLURAL:$1|newer 1|newer $1}}',
+'pager-older-n'                    => '{{PLURAL:$1|older 1|older $1}}',
+'suppress'                         => 'Oversight',
+'querypage-disabled'               => 'This special page is disabled for performance reasons.',
 
 # Book sources
 'booksources'               => 'Book sources',
@@ -2977,12 +2995,12 @@ Future changes to this page and its associated talk page will be listed there.',
 'notvisiblerev'        => 'The last revision by a different user has been deleted',
 'watchlist-details'    => '{{PLURAL:$1|$1 page|$1 pages}} on your watchlist, not counting talk pages.',
 'wlheader-enotif'      => 'Email notification is enabled.',
-'wlheader-showupdated' => "Pages that have been changed since you last visited them are shown in <strong>bold</strong>.",
+'wlheader-showupdated' => 'Pages that have been changed since you last visited them are shown in <strong>bold</strong>.',
 'watchmethod-recent'   => 'checking recent edits for watched pages',
 'watchmethod-list'     => 'checking watched pages for recent edits',
 'watchlistcontains'    => 'Your watchlist contains $1 {{PLURAL:$1|page|pages}}.',
 'iteminvalidname'      => 'Problem with item "$1", invalid name...',
-'wlnote2'              => "Below are the changes in the last {{PLURAL:$1|hour|<strong>$1</strong> hours}}, as of $2, $3.",
+'wlnote2'              => 'Below are the changes in the last {{PLURAL:$1|hour|<strong>$1</strong> hours}}, as of $2, $3.',
 'wlshowlast'           => 'Show last $1 hours $2 days $3',
 'watchlist-options'    => 'Watchlist options',
 
@@ -3037,41 +3055,41 @@ Feedback and further assistance:
 'changed'                      => 'changed', # only translate this message to other languages if you have to change it
 
 # Delete
-'deletepage'             => 'Delete page',
-'confirm'                => 'Confirm',
-'excontent'              => 'content was: "$1"',
-'excontentauthor'        => 'content was: "$1" (and the only contributor was "[[Special:Contributions/$2|$2]]")',
-'exbeforeblank'          => 'content before blanking was: "$1"',
-'exblank'                => 'page was empty',
-'delete-confirm'         => 'Delete "$1"',
-'delete-legend'          => 'Delete',
-'historywarning'         => "<strong>Warning:</strong> The page you are about to delete has a history with approximately $1 {{PLURAL:$1|revision|revisions}}:",
-'confirmdeletetext'      => 'You are about to delete a page along with all of its history.
+'deletepage'                 => 'Delete page',
+'confirm'                    => 'Confirm',
+'excontent'                  => 'content was: "$1"',
+'excontentauthor'            => 'content was: "$1" (and the only contributor was "[[Special:Contributions/$2|$2]]")',
+'exbeforeblank'              => 'content before blanking was: "$1"',
+'exblank'                    => 'page was empty',
+'delete-confirm'             => 'Delete "$1"',
+'delete-legend'              => 'Delete',
+'historywarning'             => '<strong>Warning:</strong> The page you are about to delete has a history with approximately $1 {{PLURAL:$1|revision|revisions}}:',
+'confirmdeletetext'          => 'You are about to delete a page along with all of its history.
 Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].',
-'deleting-backlinks-warning' => "'''Warning:''' Other pages link to or transclude from the page you are about to delete.",
-'actioncomplete'         => 'Action complete',
-'actionfailed'           => 'Action failed',
-'deletedtext'            => '"$1" has been deleted.
+'actioncomplete'             => 'Action complete',
+'actionfailed'               => 'Action failed',
+'deletedtext'                => '"$1" has been deleted.
 See $2 for a record of recent deletions.',
-'dellogpage'             => 'Deletion log',
-'dellogpagetext'         => 'Below is a list of the most recent deletions.',
-'deletionlog'            => 'deletion log',
-'reverted'               => 'Reverted to earlier revision',
-'deletecomment'          => 'Reason:',
-'deleteotherreason'      => 'Other/additional reason:',
-'deletereasonotherlist'  => 'Other reason',
-'deletereason-dropdown'  => '* Common delete reasons
+'dellogpage'                 => 'Deletion log',
+'dellogpagetext'             => 'Below is a list of the most recent deletions.',
+'deletionlog'                => 'deletion log',
+'reverted'                   => 'Reverted to earlier revision',
+'deletecomment'              => 'Reason:',
+'deleteotherreason'          => 'Other/additional reason:',
+'deletereasonotherlist'      => 'Other reason',
+'deletereason-dropdown'      => '* Common delete reasons
 ** Spam
 ** Vandalism
 ** Copyright violation
 ** Author request
 ** Broken redirect',
-'delete-edit-reasonlist' => 'Edit deletion reasons',
-'delete-toobig'          => 'This page has a large edit history, over $1 {{PLURAL:$1|revision|revisions}}.
+'delete-edit-reasonlist'     => 'Edit deletion reasons',
+'delete-toobig'              => 'This page has a large edit history, over $1 {{PLURAL:$1|revision|revisions}}.
 Deletion of such pages has been restricted to prevent accidental disruption of {{SITENAME}}.',
-'delete-warning-toobig'  => 'This page has a large edit history, over $1 {{PLURAL:$1|revision|revisions}}.
+'delete-warning-toobig'      => 'This page has a large edit history, over $1 {{PLURAL:$1|revision|revisions}}.
 Deleting it may disrupt database operations of {{SITENAME}};
 proceed with caution.',
+'deleting-backlinks-warning' => "'''Warning:''' Other pages link to or transclude from the page you are about to delete.",
 
 # Rollback
 'rollback'                   => 'Roll back edits',
@@ -3119,13 +3137,13 @@ See the [[Special:ProtectedPages|protected pages list]] for the list of currentl
 'protect_expiry_invalid'           => 'Expiry time is invalid.',
 'protect_expiry_old'               => 'Expiry time is in the past.',
 'protect-unchain-permissions'      => 'Unlock further protect options',
-'protect-text'                     => "Here you may view and change the protection level for the page <strong>$1</strong>.",
-'protect-locked-blocked'           => "You cannot change protection levels while blocked.
-Here are the current settings for the page <strong>$1</strong>:",
-'protect-locked-dblock'            => "Protection levels cannot be changed due to an active database lock.
-Here are the current settings for the page <strong>$1</strong>:",
-'protect-locked-access'            => "Your account does not have permission to change page protection levels.
-Here are the current settings for the page <strong>$1</strong>:",
+'protect-text'                     => 'Here you may view and change the protection level for the page <strong>$1</strong>.',
+'protect-locked-blocked'           => 'You cannot change protection levels while blocked.
+Here are the current settings for the page <strong>$1</strong>:',
+'protect-locked-dblock'            => 'Protection levels cannot be changed due to an active database lock.
+Here are the current settings for the page <strong>$1</strong>:',
+'protect-locked-access'            => 'Your account does not have permission to change page protection levels.
+Here are the current settings for the page <strong>$1</strong>:',
 'protect-cascadeon'                => "This page is currently protected because it is included in the following {{PLURAL:$1|page, which has|pages, which have}} cascading protection turned on.
 You can change this page's protection level, but it will not affect the cascading protection.",
 'protect-default'                  => 'Allow all users',
@@ -3172,7 +3190,7 @@ You can change this page's protection level, but it will not affect the cascadin
 'undelete'                     => 'View deleted pages',
 'undelete-summary'             => '', # do not translate or duplicate this message to other languages
 'undeletepage'                 => 'View and restore deleted pages',
-'undeletepagetitle'            => "<strong>The following consists of deleted revisions of [[:$1|$1]]</strong>.",
+'undeletepagetitle'            => '<strong>The following consists of deleted revisions of [[:$1|$1]]</strong>.',
 'viewdeletedpage'              => 'View deleted pages',
 'undeletepagetext'             => 'The following {{PLURAL:$1|page has been deleted but is|$1 pages have been deleted but are}} still in the archive and can be restored.
 The archive may be periodically cleaned out.',
@@ -3201,9 +3219,9 @@ You may have a bad link, or the revision may have been restored or removed from
 'undeletedfiles'               => '{{PLURAL:$1|1 file|$1 files}} restored',
 'cannotundelete'               => 'Undelete failed:
 $1',
-'undeletedpage'                => "<strong>$1 has been restored</strong>
+'undeletedpage'                => '<strong>$1 has been restored</strong>
 
-Consult the [[Special:Log/delete|deletion log]] for a record of recent deletions and restorations.",
+Consult the [[Special:Log/delete|deletion log]] for a record of recent deletions and restorations.',
 'undelete-header'              => 'See [[Special:Log/delete|the deletion log]] for recently deleted pages.',
 'undelete-search-title'        => 'Search deleted pages',
 'undelete-search-box'          => 'Search deleted pages',
@@ -3222,7 +3240,7 @@ It may have already been undeleted.',
 $1',
 'undelete-show-file-confirm'   => 'Are you sure you want to view the deleted revision of the file "<nowiki>$1</nowiki>" from $2 at $3?',
 'undelete-show-file-submit'    => 'Yes',
-'undelete-revision-row'         => '$1 $2 ($3) $4 . . $5 $6 $7 $8 $9', # only translate this message to other languages if you have to change it
+'undelete-revision-row'        => '$1 $2 ($3) $4 . . $5 $6 $7 $8 $9', # only translate this message to other languages if you have to change it
 
 # Namespace form on various pages
 'namespace'                     => 'Namespace:',
@@ -3259,6 +3277,7 @@ The latest block log entry is provided below for reference:',
 'sp-contributions-search'              => 'Search for contributions',
 'sp-contributions-username'            => 'IP address or username:',
 'sp-contributions-toponly'             => 'Only show edits that are latest revisions',
+'sp-contributions-newonly'             => 'Only show edits that are page creations',
 'sp-contributions-submit'              => 'Search',
 'sp-contributions-explain'             => '', # only translate this message to other languages if you have to change it
 'sp-contributions-footer'              => '-', # do not translate or duplicate this message to other languages
@@ -3270,9 +3289,9 @@ The latest block log entry is provided below for reference:',
 'whatlinkshere-title'      => 'Pages that link to "$1"',
 'whatlinkshere-summary'    => '', # do not translate or duplicate this message to other languages
 'whatlinkshere-page'       => 'Page:',
-'linkshere'                => "The following pages link to <strong>[[:$1]]</strong>:",
-'nolinkshere'              => "No pages link to <strong>[[:$1]]</strong>.",
-'nolinkshere-ns'           => "No pages link to <strong>[[:$1]]</strong> in the chosen namespace.",
+'linkshere'                => 'The following pages link to <strong>[[:$1]]</strong>:',
+'nolinkshere'              => 'No pages link to <strong>[[:$1]]</strong>.',
+'nolinkshere-ns'           => 'No pages link to <strong>[[:$1]]</strong> in the chosen namespace.',
 'isredirect'               => 'redirect page',
 'istemplate'               => 'transclusion',
 'isimage'                  => 'file link',
@@ -3440,7 +3459,7 @@ To lock or unlock the database, this needs to be writable by the web server.',
 'move-page'                    => 'Move $1',
 'movepage-summary'             => '', # do not translate or duplicate this message to other languages
 'move-page-legend'             => 'Move page',
-'movepagetext'                 => "Using the form below will rename a page, moving all of its history to the new name.
+'movepagetext'                 => 'Using the form below will rename a page, moving all of its history to the new name.
 The old title will become a redirect page to the new title.
 You can update redirects that point to the original title automatically.
 If you choose not to, be sure to check for [[Special:DoubleRedirects|double]] or [[Special:BrokenRedirects|broken redirects]].
@@ -3451,8 +3470,8 @@ This means that you can rename a page back to where it was renamed from if you m
 
 <strong>Warning!</strong>
 This can be a drastic and unexpected change for a popular page;
-please be sure you understand the consequences of this before proceeding.",
-'movepagetext-noredirectfixer' => "Using the form below will rename a page, moving all of its history to the new name.
+please be sure you understand the consequences of this before proceeding.',
+'movepagetext-noredirectfixer' => 'Using the form below will rename a page, moving all of its history to the new name.
 The old title will become a redirect page to the new title.
 Be sure to check for [[Special:DoubleRedirects|double]] or [[Special:BrokenRedirects|broken redirects]].
 You are responsible for making sure that links continue to point where they are supposed to go.
@@ -3462,14 +3481,14 @@ This means that you can rename a page back to where it was renamed from if you m
 
 <strong>Warning!</strong>
 This can be a drastic and unexpected change for a popular page;
-please be sure you understand the consequences of this before proceeding.",
-'movepagetalktext'             => "The associated talk page will be automatically moved along with it <strong>unless:</strong>
+please be sure you understand the consequences of this before proceeding.',
+'movepagetalktext'             => 'The associated talk page will be automatically moved along with it <strong>unless:</strong>
 *A non-empty talk page already exists under the new name, or
 *You uncheck the box below.
 
-In those cases, you will have to move or merge the page manually if desired.",
+In those cases, you will have to move or merge the page manually if desired.',
 'movearticle'                  => 'Move page:',
-'moveuserpage-warning'         => "<strong>Warning:</strong> You are about to move a user page. Please note that only the page will be moved and the user will <em>not</em> be renamed.",
+'moveuserpage-warning'         => '<strong>Warning:</strong> You are about to move a user page. Please note that only the page will be moved and the user will <em>not</em> be renamed.',
 'movenologintext'              => 'You must be a registered user and [[Special:UserLogin|logged in]] to move a page.',
 'movenotallowed'               => 'You do not have permission to move pages.',
 'movenotallowedfile'           => 'You do not have permission to move files.',
@@ -3520,10 +3539,10 @@ cannot move a page over itself.',
 'imageinvalidfilename'         => 'The target filename is invalid',
 'fix-double-redirects'         => 'Update any redirects that point to the original title',
 'move-leave-redirect'          => 'Leave a redirect behind',
-'protectedpagemovewarning'     => "<strong>Warning:</strong> This page has been protected so that only users with administrator privileges can move it.
-The latest log entry is provided below for reference:",
-'semiprotectedpagemovewarning' => "<strong>Note:</strong> This page has been protected so that only registered users can move it.
-The latest log entry is provided below for reference:",
+'protectedpagemovewarning'     => '<strong>Warning:</strong> This page has been protected so that only users with administrator privileges can move it.
+The latest log entry is provided below for reference:',
+'semiprotectedpagemovewarning' => '<strong>Note:</strong> This page has been protected so that only registered users can move it.
+The latest log entry is provided below for reference:',
 'move-over-sharedrepo'         => '== File exists ==
 [[:$1]] exists on a shared repository. Moving a file to this title will override the shared file.',
 'file-exists-sharedrepo'       => 'The filename chosen is already in use on a shared repository.
@@ -3540,8 +3559,8 @@ To export pages, enter the titles in the text box below, one title per line, and
 In the latter case you can also use a link, for example [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] for the page "[[{{MediaWiki:Mainpage}}]]".',
 'exportall'         => 'Export all pages',
 'exportcuronly'     => 'Include only the current revision, not the full history',
-'exportnohistory'   => "----
-<strong>Note:</strong> Exporting the full history of pages through this form has been disabled due to performance reasons.",
+'exportnohistory'   => '----
+<strong>Note:</strong> Exporting the full history of pages through this form has been disabled due to performance reasons.',
 'exportlistauthors' => 'Include a full list of contributors for each page',
 'export-submit'     => 'Export',
 'export-addcattext' => 'Add pages from category:',
@@ -3559,7 +3578,7 @@ In the latter case you can also use a link, for example [[{{#Special:Export}}/{{
 'allmessagescurrent'            => 'Current message text',
 'allmessagestext'               => 'This is a list of system messages available in the MediaWiki namespace.
 Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
-'allmessagesnotsupportedDB'     => "This page cannot be used because <strong>\$wgUseDatabaseMessages</strong> has been disabled.",
+'allmessagesnotsupportedDB'     => 'This page cannot be used because <strong>$wgUseDatabaseMessages</strong> has been disabled.',
 'allmessages-filter-legend'     => 'Filter',
 'allmessages-filter'            => 'Filter by customization state:',
 'allmessages-filter-unmodified' => 'Unmodified',
@@ -3571,20 +3590,20 @@ Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation
 'allmessages-filter-translate'  => 'Translate',
 
 # Thumbnails
-'thumbnail-more'           => 'Enlarge',
-'filemissing'              => 'File missing',
-'thumbnail_error'          => 'Error creating thumbnail: $1',
-'thumbnail_error_remote'   => 'Error message from $1:
+'thumbnail-more'                => 'Enlarge',
+'filemissing'                   => 'File missing',
+'thumbnail_error'               => 'Error creating thumbnail: $1',
+'thumbnail_error_remote'        => 'Error message from $1:
 $2',
-'djvu_page_error'          => 'DjVu page out of range',
-'djvu_no_xml'              => 'Unable to fetch XML for DjVu file',
-'thumbnail-temp-create'    => 'Unable to create temporary thumbnail file',
-'thumbnail-dest-create'    => 'Unable to save thumbnail to destination',
-'thumbnail_invalid_params' => 'Invalid thumbnail parameters',
-'thumbnail_dest_directory' => 'Unable to create destination directory',
-'thumbnail_image-type'     => 'Image type not supported',
-'thumbnail_gd-library'     => 'Incomplete GD library configuration: Missing function $1',
-'thumbnail_image-missing'  => 'File seems to be missing: $1',
+'djvu_page_error'               => 'DjVu page out of range',
+'djvu_no_xml'                   => 'Unable to fetch XML for DjVu file',
+'thumbnail-temp-create'         => 'Unable to create temporary thumbnail file',
+'thumbnail-dest-create'         => 'Unable to save thumbnail to destination',
+'thumbnail_invalid_params'      => 'Invalid thumbnail parameters',
+'thumbnail_dest_directory'      => 'Unable to create destination directory',
+'thumbnail_image-type'          => 'Image type not supported',
+'thumbnail_gd-library'          => 'Incomplete GD library configuration: Missing function $1',
+'thumbnail_image-missing'       => 'File seems to be missing: $1',
 'thumbnail_image-failure-limit' => 'There have been too many recent failed attempts ($1 or more) to render this thumbnail. Please try again later.',
 
 # Special:Import
@@ -3799,6 +3818,8 @@ You can view its source',
 'tooltip-undo'                        => '"Undo" reverts this edit and opens the edit form in preview mode. It allows adding a reason in the summary.',
 'tooltip-preferences-save'            => 'Save preferences',
 'tooltip-summary'                     => 'Enter a short summary',
+'interlanguage-link-title'            => '$1 – $2', # only translate this message to other languages if you have to change it
+'interlanguage-link-title-langonly'   => '$1', # do not translate or duplicate this message to other languages
 
 # Stylesheets
 'common.css'              => '/* CSS placed here will be applied to all skins */', # only translate this message to other languages if you have to change it
@@ -3842,16 +3863,16 @@ You can view its source',
 'nocredits'        => 'There is no credits info available for this page.',
 
 # Spam protection
-'spamprotectiontitle' => 'Spam protection filter',
-'spamprotectiontext'  => 'The text you wanted to save was blocked by the spam filter.
+'spamprotectiontitle'  => 'Spam protection filter',
+'spamprotectiontext'   => 'The text you wanted to save was blocked by the spam filter.
 This is probably caused by a link to a blacklisted external site.',
-'spamprotectionmatch' => 'The following text is what triggered our spam filter: $1',
-'spambot_username'    => 'MediaWiki spam cleanup',
-'spam_reverting'      => 'Reverting to last revision not containing links to $1',
-'spam_blanking'       => 'All revisions contained links to $1, blanking',
-'spam_deleting'       => 'All revisions contained links to $1, deleting',
-'simpleantispam-label' => "Anti-spam check.
-Do <strong>NOT</strong> fill this in!",
+'spamprotectionmatch'  => 'The following text is what triggered our spam filter: $1',
+'spambot_username'     => 'MediaWiki spam cleanup',
+'spam_reverting'       => 'Reverting to last revision not containing links to $1',
+'spam_blanking'        => 'All revisions contained links to $1, blanking',
+'spam_deleting'        => 'All revisions contained links to $1, deleting',
+'simpleantispam-label' => 'Anti-spam check.
+Do <strong>NOT</strong> fill this in!',
 
 # Info page
 'pageinfo-header'                 => '-', # do not translate or duplicate this message to other languages
@@ -3944,9 +3965,9 @@ $1',
 'nextdiff'     => 'Newer edit →',
 
 # Media information
-'mediawarning'                => "<strong>Warning:</strong> This file type may contain malicious code.
-By executing it, your system may be compromised.",
-'imagemaxsize'                => "Image size limit:<br /><em>(for file description pages)</em>",
+'mediawarning'                => '<strong>Warning:</strong> This file type may contain malicious code.
+By executing it, your system may be compromised.',
+'imagemaxsize'                => 'Image size limit:<br /><em>(for file description pages)</em>',
 'thumbsize'                   => 'Thumbnail size:',
 'widthheight'                 => '$1 × $2', # only translate this message to other languages if you have to change it
 'widthheightpage'             => '$1 × $2, $3 {{PLURAL:$3|page|pages}}',
@@ -3966,12 +3987,12 @@ By executing it, your system may be compromised.",
 'file-info-png-looped'        => 'looped',
 'file-info-png-repeat'        => 'played $1 {{PLURAL:$1|time|times}}',
 'file-info-png-frames'        => '$1 {{PLURAL:$1|frame|frames}}',
-'file-no-thumb-animation'     => "<strong>Note: Due to technical limitations, thumbnails of this file will not be animated.</strong>",
-'file-no-thumb-animation-gif' => "<strong>Note: Due to technical limitations, thumbnails of high resolution GIF images such as this one will not be animated.</strong>",
+'file-no-thumb-animation'     => '<strong>Note: Due to technical limitations, thumbnails of this file will not be animated.</strong>',
+'file-no-thumb-animation-gif' => '<strong>Note: Due to technical limitations, thumbnails of high resolution GIF images such as this one will not be animated.</strong>',
 
 # Special:NewFiles
 'newimages'             => 'Gallery of new files',
-'imagelisttext'         => "Below is a list of <strong>$1</strong> {{PLURAL:$1|file|files}} sorted $2.",
+'imagelisttext'         => 'Below is a list of <strong>$1</strong> {{PLURAL:$1|file|files}} sorted $2.',
 'newimages-summary'     => 'This special page shows the last uploaded files.',
 'newimages-legend'      => 'Filter',
 'newimages-label'       => 'Filename (or a part of it):',
@@ -4092,7 +4113,7 @@ Others will be hidden by default.
 * gpslatitude
 * gpslongitude
 * gpsaltitude',
-'metadata-langitem'         => "<strong>$2:</strong> $1", # only translate this message to other languages if you have to change it
+'metadata-langitem'         => '<strong>$2:</strong> $1', # only translate this message to other languages if you have to change it
 'metadata-langitem-default' => '$1', # only translate this message to other languages if you have to change it
 
 # Exif tags
@@ -4610,10 +4631,10 @@ This confirmation code will expire at $4.',
 'scarytranscludetoolong'           => '[URL is too long]',
 
 # Delete conflict
-'deletedwhileediting'      => "<strong>Warning:</strong> This page was deleted after you started editing!",
-'confirmrecreate'          => "User [[User:$1|$1]] ([[User talk:$1|talk]]) deleted this page after you started editing with reason:
+'deletedwhileediting'      => '<strong>Warning:</strong> This page was deleted after you started editing!',
+'confirmrecreate'          => 'User [[User:$1|$1]] ([[User talk:$1|talk]]) deleted this page after you started editing with reason:
 : <em>$2</em>
-Please confirm that you really want to recreate this page.",
+Please confirm that you really want to recreate this page.',
 'confirmrecreate-noreason' => 'User [[User:$1|$1]] ([[User talk:$1|talk]]) deleted this page after you started editing. Please confirm that you really want to recreate this page.',
 'recreate'                 => 'Recreate',
 
@@ -4649,10 +4670,11 @@ Please confirm that you really want to recreate this page.",
 'imgmultigo'       => 'Go!',
 'imgmultigoto'     => 'Go to page $1',
 
-'img-lang-opt' => '$2 ($1)',
+# Language selector for translatable SVGs
+'img-lang-opt'     => '$2 ($1)', # only translate this message to other languages if you have to change it
 'img-lang-default' => '(default language)',
-'img-lang-info' => 'Render this image in $1. $2',
-'img-lang-go' => 'Go',
+'img-lang-info'    => 'Render this image in $1. $2',
+'img-lang-go'      => 'Go',
 
 # Table pager
 'ascending_abbrev'         => 'asc',
@@ -4842,20 +4864,20 @@ You can also [[Special:EditWatchlist|use the standard editor]].',
 'version-parser-function-hooks'         => 'Parser function hooks',
 'version-hook-name'                     => 'Hook name',
 'version-hook-subscribedby'             => 'Subscribed by',
-'version-version'                       => '($1)',
+'version-version'                       => '($1)', # only translate this message to other languages if you have to change it
 'version-svn-revision'                  => 'r$1', # only translate this message to other languages if you have to change it
 'version-license'                       => 'MediaWiki License',
-'version-license-title'                 => 'License for $1',
-'version-license-not-found'             => 'No detailed license information was found for this extension.',
-'version-credits-title'                 => 'Credits for $1',
-'version-credits-not-found'             => 'No detailed credits information was found for this extension.',
 'version-ext-license'                   => 'License',
 'version-ext-colheader-name'            => 'Extension',
 'version-ext-colheader-version'         => 'Version',
 'version-ext-colheader-license'         => 'License',
 'version-ext-colheader-description'     => 'Description',
 'version-ext-colheader-credits'         => 'Authors',
-'version-poweredby-credits'             => "This wiki is powered by <strong>[https://www.mediawiki.org/ MediaWiki]</strong>, copyright © 2001-$1 $2.",
+'version-license-title'                 => 'License for $1',
+'version-license-not-found'             => 'No detailed license information was found for this extension.',
+'version-credits-title'                 => 'Credits for $1',
+'version-credits-not-found'             => 'No detailed credits information was found for this extension.',
+'version-poweredby-credits'             => 'This wiki is powered by <strong>[https://www.mediawiki.org/ MediaWiki]</strong>, copyright © 2001-$1 $2.',
 'version-poweredby-others'              => 'others',
 'version-poweredby-translators'         => 'translatewiki.net translators',
 'version-credits-summary'               => 'We would like to recognize the following persons for their contribution to [[Special:Version|MediaWiki]].',
@@ -4892,8 +4914,8 @@ You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU Gen
 'redirect-lookup'     => 'Lookup:',
 'redirect-value'      => 'Value:',
 'redirect-user'       => 'User ID',
-'redirect-revision'   => 'Page revision',
 'redirect-page'       => 'Page ID',
+'redirect-revision'   => 'Page revision',
 'redirect-file'       => 'File name',
 'redirect-not-exists' => 'Value not found',
 
@@ -5114,6 +5136,7 @@ Otherwise, you can use the easy form below. Your comment will be added to the pa
 'api-error-overwrite'                     => 'Overwriting an existing file is not allowed.',
 'api-error-stashfailed'                   => 'Internal error: Server failed to store temporary file.',
 'api-error-publishfailed'                 => 'Internal error: Server failed to publish temporary file.',
+'api-error-stasherror'                    => 'There was an error while uploading the file to stash.',
 'api-error-timeout'                       => 'The server did not respond within the expected time.',
 'api-error-unclassified'                  => 'An unknown error occurred.',
 'api-error-unknown-code'                  => 'Unknown error: "$1".',
@@ -5122,7 +5145,6 @@ Otherwise, you can use the easy form below. Your comment will be added to the pa
 'api-error-unknownerror'                  => 'Unknown error: "$1".',
 'api-error-uploaddisabled'                => 'Uploading is disabled on this wiki.',
 'api-error-verification-error'            => 'This file might be corrupt, or have the wrong extension.',
-'api-error-stasherror'                    => 'There was an error while uploading the file to stash.',
 
 # Durations
 'duration-seconds'   => '$1 {{PLURAL:$1|second|seconds}}',
@@ -5157,7 +5179,7 @@ Otherwise, you can use the easy form below. Your comment will be added to the pa
 'limitreport-expensivefunctioncount'       => 'Expensive parser function count',
 'limitreport-expensivefunctioncount-value' => '$1/$2', # only translate this message to other languages if you have to change it
 
-# ExpandTemplates
+# Special:ExpandTemplates
 'expandtemplates'                   => 'Expand templates',
 'expand_templates_intro'            => 'This special page takes text and expands all templates in it recursively.
 It also expands supported parser functions like
@@ -5175,4 +5197,5 @@ In fact, it expands pretty much everything in double-braces.',
 'expand_templates_generate_xml'     => 'Show XML parse tree',
 'expand_templates_generate_rawhtml' => 'Show raw HTML',
 'expand_templates_preview'          => 'Preview',
+
 );
index 78fcac1..c741f02 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Dantman
  * @author FrigidNinja
+ * @author Nemo bis
  * @author Shirayuki
  * @author Techman224
  * @author គីមស៊្រុន
@@ -19,7 +20,7 @@ $messages = array(
 'talk' => 'Discussion',
 
 # 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' => 'អំពី {{SITENAME}}',
+'aboutsite' => 'About {{SITENAME}}',
 'mainpage' => 'Main Page',
 
 'editsection' => 'edit',
index 34713f8..ff6b02c 100644 (file)
@@ -152,7 +152,11 @@ If the file has been modified from its original state, some details may not full
 'confirmemail_invalidated' => 'Email address confirmation cancelled',
 
 # Special:Version
-'version-license' => 'Licence',
+'version-license' => 'MediaWiki Licence',
+'version-ext-license' => 'Licence',
+'version-ext-colheader-license' => 'Licence',
+'version-license-title' => 'Licence for $1',
+'version-license-not-found' => 'No detailed licence information was found for this extension.',
 'version-credits-summary' => 'We would like to recognise the following persons for their contribution to [[Special:Version|MediaWiki]].',
 'version-license-info' => 'MediaWiki is free software; you can redistribute it and/or modify it under the terms of the GNU General Public Licence as published by the Free Software Foundation; either version 2 of the Licence, or (at your option) any later version.
 
index 40888f6..e2405f4 100644 (file)
@@ -868,6 +868,9 @@ Bonvolu ĝisatendi $1 antaŭ reprovi.',
 'suspicious-userlogout' => 'Via peto por elsaluti estis malpermesita, ĉar verŝajne ĝi estis sendita de trompita retumilo aŭ kaŝiĝanta prokura servilo.',
 'createacct-another-realname-tip' => 'La vera nomo estas nenecesa.
 Se vi decidas indiki ĝin, ĝi estos uzata por montri atribuadon de viaj kontribuoj.',
+'pt-login' => 'Ensaluti',
+'pt-createaccount' => 'Krei novan konton',
+'pt-userlogout' => 'Elsaluti',
 
 # Email sending
 'php-mail-error-unknown' => 'Nekonata eraro en la funkcio mail() de PHP',
@@ -876,7 +879,7 @@ Se vi decidas indiki ĝin, ĝi estos uzata por montri atribuadon de viaj kontrib
 
 # Change password dialog
 'changepassword' => 'Ŝanĝi pasvorton',
-'resetpass_announce' => 'Vi ensalutis kun provizora retpoŝtita pasvorto. Por kompleti ensalutadon, vi devas fari novan pasvorton ĉi tie:',
+'resetpass_announce' => 'Por kompleti ensaluton vi devas agordi novan pasvorton.',
 'resetpass_text' => '<!-- Aldonu tekston ĉi tien -->',
 'resetpass_header' => 'Ŝanĝi kontan pasvorton',
 'oldpassword' => 'Malnova pasvorto',
@@ -884,12 +887,15 @@ Se vi decidas indiki ĝin, ĝi estos uzata por montri atribuadon de viaj kontrib
 'retypenew' => 'Retajpi novan pasvorton',
 'resetpass_submit' => 'Fari pasvorton kaj ensaluti',
 'changepassword-success' => 'Via pasvorto estis sukcese ŝanĝita!',
+'changepassword-throttled' => 'Vi tro ofte provis ensaluti al ĉi tiu konto.
+Bonvolu atendi $1 antaŭ ol reprovi.',
 'resetpass_forbidden' => 'Pasvortoj ne estas ŝanĝeblaj',
 'resetpass-no-info' => 'Vi devas ensaluti por atingi ĉi tiun paĝon rekte.',
 'resetpass-submit-loggedin' => 'Ŝanĝi pasvorton',
 'resetpass-submit-cancel' => 'Nuligi',
 'resetpass-wrong-oldpass' => 'Malvalida provizora aŭ nuna pasvorto.
 Vi eble jam ŝanĝis vian pasvorton aŭ petis novan provizoran pasvorton.',
+'resetpass-recycled' => 'Bonvolu agordi vian novan pasvorton, kiu estu alia ol via nuntempa pasvorto.',
 'resetpass-temp-password' => 'Provizora pasvorto:',
 'resetpass-abort-generic' => 'Ŝanĝo de pasvorto estis nuligita per kromprogramo.',
 
@@ -1719,15 +1725,28 @@ indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
 'recentchanges-label-minor' => 'Ĉi tiu estas eta redakto',
 'recentchanges-label-bot' => 'Ĉi tiu redakto estis farita per roboto.',
 'recentchanges-label-unpatrolled' => 'Ĉi tiu redakto ne jam estis patrolata.',
+'recentchanges-legend-heading' => "'''Klarigo:'''",
 'recentchanges-legend-newpage' => '(vidu ankaŭ [[Special:NewPages|liston de novaj paĝoj]])',
 'rcnotefrom' => "Jen la ŝanĝoj ekde '''$2''' (lastaj ĝis '''$1''').",
 'rclistfrom' => 'Montri novajn ŝanĝojn ekde "$1"',
 'rcshowhideminor' => '$1 redaktetojn',
+'rcshowhideminor-show' => 'Montri',
+'rcshowhideminor-hide' => 'Kaŝi',
 'rcshowhidebots' => '$1 robotojn',
+'rcshowhidebots-show' => 'Montri',
+'rcshowhidebots-hide' => 'Kaŝi',
 'rcshowhideliu' => '$1 registriĝintojn',
+'rcshowhideliu-show' => 'Montri',
+'rcshowhideliu-hide' => 'Kaŝi',
 'rcshowhideanons' => '$1 anonimajn redaktojn',
+'rcshowhideanons-show' => 'Montri',
+'rcshowhideanons-hide' => 'Kaŝi',
 'rcshowhidepatr' => '$1 patrolitajn redaktojn',
+'rcshowhidepatr-show' => 'Montri',
+'rcshowhidepatr-hide' => 'Kaŝi',
 'rcshowhidemine' => '$1 miajn redaktojn',
+'rcshowhidemine-show' => 'Montri',
+'rcshowhidemine-hide' => 'Kaŝi',
 'rclinks' => 'Montri $1 lastajn ŝanĝojn dum la $2 lastaj tagoj.<br />$3',
 'diff' => 'malsamoj',
 'hist' => 'historio',
@@ -1853,6 +1872,7 @@ Se vi ankoraŭ volas alŝuti vian dosieron, bonvolu retroigi kaj uzi novan nomon
 'uploaddisabledtext' => 'Alŝutado de dosieroj estas malebligita.',
 'php-uploaddisabledtext' => 'Dosiera alŝutado estas malŝalta en PHP. Bonvolu kontroli la preferon file_uploads.',
 'uploadscripted' => 'HTML-aĵo aŭ skriptokodaĵo troviĝas en tiu ĉi tiu dosiero, kiun TTT-foliumilo eble interpretus erare.',
+'uploadinvalidxml' => 'Ne eblas interpreti la XML-sintakson en la alŝutita dosiero',
 'uploadvirus' => 'Viruso troviĝas en la dosiero! Detaloj: $1',
 'uploadjava' => 'La dosiero estas ZIP-dosiero kiu enhavas .class-dosieron de Java.
 Alŝutante Java-dosieron estas malpermesita, ĉar ili povas kaŭzi sekureco-limigojn esti preterpasitaj.',
@@ -2196,6 +2216,7 @@ Bonvolu kontroli aliajn ligilojn al la ŝablonoj antaŭ ol forigi ilin.',
 'mostrevisions' => 'Artikoloj kun la plej multaj versioj',
 'prefixindex' => 'Ĉiuj paĝoj kun prefikso',
 'prefixindex-namespace' => 'Ĉiuj paĝoj kun prefikso ($1 nomspaco)',
+'prefixindex-strip' => 'Ne montri prefikson en listo',
 'shortpages' => 'Mallongaj paĝoj',
 'longpages' => 'Longaj paĝoj',
 'deadendpages' => 'Paĝoj sen interna ligilo',
@@ -2203,6 +2224,7 @@ Bonvolu kontroli aliajn ligilojn al la ŝablonoj antaŭ ol forigi ilin.',
 'protectedpages' => 'Protektitaj paĝoj',
 'protectedpages-indef' => 'Nur ĉiamaj protektaĵoj',
 'protectedpages-cascade' => 'Nur kaskadaj protektoj',
+'protectedpages-noredirect' => 'Kaŝi alidirektilojn',
 'protectedpagesempty' => 'Neniuj paĝoj estas momente protektitaj kun ĉi tiuj parametroj.',
 'protectedpages-timestamp' => 'Tempindiko',
 'protectedpages-page' => 'Paĝo',
@@ -2948,6 +2970,7 @@ se vi volus kontribui al la komuna MediaWiki-asimilado.',
 'allmessages-prefix' => 'Filtri laŭ prefikso:',
 'allmessages-language' => 'Lingvo:',
 'allmessages-filter-submit' => 'Ek!',
+'allmessages-filter-translate' => 'Traduki',
 
 # Thumbnails
 'thumbnail-more' => 'Pligrandigi',
@@ -3814,6 +3837,10 @@ Bonvolu konfirmi ke vi ja volas rekrei la paĝon.',
 'imgmultigo' => 'Ek!',
 'imgmultigoto' => 'Iri al paĝo $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(defaŭlta lingvo)',
+'img-lang-go' => 'Ek',
+
 # Table pager
 'ascending_abbrev' => 'sprn',
 'descending_abbrev' => 'subn',
@@ -3949,6 +3976,13 @@ Vi povas ankaŭ [[Special:EditWatchlist|redakti norme]].',
 'version-hook-subscribedby' => 'Abonita de',
 'version-version' => '($1)',
 'version-license' => 'Permesilo de MediaWiki',
+'version-ext-license' => 'Permesilo',
+'version-ext-colheader-version' => 'Versio',
+'version-ext-colheader-license' => 'Permesilo',
+'version-ext-colheader-description' => 'Priskribo',
+'version-ext-colheader-credits' => 'Aŭtoroj',
+'version-license-title' => 'Permesilo por $1',
+'version-credits-title' => 'Agnosko por $1',
 'version-poweredby-credits' => "Ĉi tiu vikio funkcias per '''[https://www.mediawiki.org/ MediaWiki]''', aŭtorrajto ©&thinsp;2001–$1 $2.",
 'version-poweredby-others' => 'aliaj',
 'version-poweredby-translators' => 'tradukantoj de translatewiki.net',
@@ -3966,10 +4000,12 @@ Oni devis doni al vi [{{SERVER}}{{SCRIPTPATH}}/COPYING ekzempleron de la GNU Gen
 'version-entrypoints-header-url' => 'Retadreso',
 
 # Special:Redirect
+'redirect-legend' => 'Alidirektilo al dosiero aŭ paĝo',
 'redirect-submit' => 'Ek',
 'redirect-lookup' => 'Traserĉi:',
 'redirect-value' => 'Valoro:',
 'redirect-user' => 'Salutnomo',
+'redirect-page' => 'Paĝa identigo',
 'redirect-revision' => 'Revizio de la paĝo',
 'redirect-file' => 'Dosiernomo',
 'redirect-not-exists' => 'Valoro ne trovita',
@@ -3987,6 +4023,7 @@ Oni devis doni al vi [{{SERVER}}{{SCRIPTPATH}}/COPYING ekzempleron de la GNU Gen
 
 # Special:SpecialPages
 'specialpages' => 'Specialaj paĝoj',
+'specialpages-note-top' => 'Klarigo',
 'specialpages-note' => '* Normaj specialaj paĝoj.
 * <span class="mw-specialpagerestricted">Limigitaj specialaj paĝoj.</span>',
 'specialpages-group-maintenance' => 'Raportoj pri prizorgado',
@@ -4186,8 +4223,12 @@ Aŭ vi povas uzi la facilan formularon sube. Via komento estos aldonita al la pa
 'rotate-comment' => 'Bildo pivotita $1 {{PLURAL:$1|gradon|gradojn}} dekstren',
 
 # Limit report
+'limitreport-cputime' => 'Uzo de procesora tempo',
 'limitreport-cputime-value' => '$1 {{PLURAL:$1|sekundo|sekundoj}}',
+'limitreport-walltime' => 'Uzo de reala tempo',
 'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekundo|sekundoj}}',
+'limitreport-ppvisitednodes' => 'Nombro da nodoj vizititaj de antaŭtraktilo',
+'limitreport-ppgeneratednodes' => 'Nombro da nodoj kreitaj de antaŭtraktilo',
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|bitoko|bitokoj}}',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|bitoko|bitokoj}}',
 
@@ -4201,12 +4242,12 @@ Aŭ vi povas uzi la facilan formularon sube. Via komento estos aldonita al la pa
 'expand_templates_input' => 'Enigita teksto:',
 'expand_templates_output' => 'Rezulto',
 'expand_templates_xml_output' => 'XML-eligo',
+'expand_templates_html_output' => 'Kruda eliga HTML',
 'expand_templates_ok' => 'Ek!',
 'expand_templates_remove_comments' => 'Forigi komentojn',
 'expand_templates_remove_nowiki' => 'Nuligi <nowiki> etikedojn en rezulto',
 'expand_templates_generate_xml' => 'Montri XML-sintaksarbon',
+'expand_templates_generate_rawhtml' => 'Montri krudan HTML-n',
 'expand_templates_preview' => 'Antaŭrigardo',
 
-# Unknown messages
-'uploadinvalidxml' => 'Ne eblas interpreti la XML-sintakson en la alŝutita dosiero',
 );
index 7dcca1a..d42e385 100644 (file)
@@ -26,6 +26,7 @@
  * @author Candalua
  * @author Capmo
  * @author Carlitosag
+ * @author Carlosz22
  * @author Cerealito
  * @author Ciencia Al Poder
  * @author Clerc
@@ -925,6 +926,9 @@ Puedes ignorar este mensaje si esta cuenta fue creada por error.',
 'suspicious-userlogout' => 'Tu solicitud de desconexión ha sido denegada, pues parece haber sido enviada desde un navegador defectuoso o un proxy caché.',
 'createacct-another-realname-tip' => 'El nombre real es opcional.
 Si se proporciona, se usará para dar al usuario la atribución de su trabajo.',
+'pt-login' => 'Iniciar sesión',
+'pt-createaccount' => 'Crear una cuenta',
+'pt-userlogout' => 'Cerrar sesión',
 
 # Email sending
 'php-mail-error-unknown' => 'Error desconocido en la función mail() de PHP.',
@@ -933,8 +937,7 @@ Si se proporciona, se usará para dar al usuario la atribución de su trabajo.',
 
 # Change password dialog
 'changepassword' => 'Cambiar contraseña',
-'resetpass_announce' => 'Has iniciado sesión con una contraseña temporal que fue enviada por correo electrónico.
-Establece una contraseña nueva aquí:',
+'resetpass_announce' => 'Para completar el inicio de sesión, debes definir una contraseña nueva.',
 'resetpass_text' => '<!-- Añada texto aquí -->',
 'resetpass_header' => 'Cambiar la contraseña de la cuenta',
 'oldpassword' => 'Contraseña antigua:',
@@ -950,8 +953,13 @@ Espera $1 antes de intentarlo de nuevo.',
 'resetpass-submit-cancel' => 'Cancelar',
 'resetpass-wrong-oldpass' => 'La contraseña antigua no es correcta.
 Puede que ya hayas cambiado la contraseña o que hayas pedido una temporal.',
+'resetpass-recycled' => 'Por favor, restablece tu contraseña a algo distinto de tu contraseña actual.',
+'resetpass-temp-emailed' => 'Has iniciado sesión con un código temporal por correo electrónico.
+Para terminar la sesión, debes establecer una nueva contraseña aquí:',
 'resetpass-temp-password' => 'Contraseña temporal:',
 'resetpass-abort-generic' => 'Una extensión ha cancelado el cambio de la contraseña.',
+'resetpass-expired' => 'Tu contraseña ha caducado. Por favor, establece una nueva contraseña para iniciar sesión.',
+'resetpass-expired-soft' => 'Tu contraseña ha expirado y necesita ser restablecida. Elije una nueva contraseña ahora, o haz clic en cancelar para restablecerla más tarde.',
 
 # Special:PasswordReset
 'passwordreset' => 'Restablecimiento de contraseña',
@@ -1439,6 +1447,7 @@ Nota que usar los enlaces de navegación borrará las selecciones de esta column
 'editundo' => 'deshacer',
 'diff-empty' => '(Sin diferencias)',
 'diff-multi-sameuser' => '({{PLURAL:$1|Una revisión intermedia|$1 revisiones intermedias}} por el mismo usuario no mostrado)',
+'diff-multi-otherusers' => '(No se {{PLURAL:$1|muestra una edición intermedia|muestran $1 ediciones intermedias}} de {{PLURAL:$2|un usuario|$2 usuarios}})',
 'diff-multi-manyusers' => '(No se {{PLURAL:$1|muestra una edición intermedia|muestran $1 ediciones intermedias}} de {{PLURAL:$2|un usuario|$2 usuarios}})',
 'difference-missing-revision' => 'No {{PLURAL:$2|se ha encontrado|se han encontrado}} {{PLURAL:$2|una revisión|$2 revisiones}} de esta diferencia ($1).
 
@@ -1485,6 +1494,7 @@ Los detalles pueden encontrarse en el [{{fullurl:{{#Special:Log}}/delete|page={{
 'searchrelated' => 'relacionado',
 'searchall' => 'todos',
 'showingresults' => "Abajo se {{PLURAL:$1|muestra '''1''' resultado|muestran hasta '''$1''' resultados}} comenzando por el n.º '''$2'''.",
+'showingresultsinrange' => 'Abajo se muestran hasta {{PLURAL:$1|<strong>1</strong> resultado|<strong>$1</strong> resultados}} en el rango #<strong>$2</strong> hasta #<strong>$3</strong>.',
 'showingresultsnum' => "Abajo se {{PLURAL:$3|muestra '''1''' resultado|muestran los '''$3''' resultados}} comenzando por el n.º '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1-$2''' de '''$3'''}} para '''$4'''",
 'search-nonefound' => 'No hay resultados que cumplan los criterios de búsqueda.',
@@ -1804,11 +1814,23 @@ Tu dirección de correo no se revela cuando otros usuarios te contactan.',
 'rcnotefrom' => 'A continuación se muestran los cambios desde <b>$2</b> (hasta <b>$1</b>).',
 'rclistfrom' => 'Mostrar nuevos cambios desde $1',
 'rcshowhideminor' => '$1 ediciones menores',
+'rcshowhideminor-show' => 'Mostrar',
+'rcshowhideminor-hide' => 'Ocultar',
 'rcshowhidebots' => '$1 bots',
+'rcshowhidebots-show' => 'Mostrar',
+'rcshowhidebots-hide' => 'Ocultar',
 'rcshowhideliu' => '$1 usuarios registrados',
+'rcshowhideliu-show' => 'Mostrar',
+'rcshowhideliu-hide' => 'Ocultar',
 'rcshowhideanons' => '$1 usuarios anónimos',
+'rcshowhideanons-show' => 'Mostrar',
+'rcshowhideanons-hide' => 'Ocultar',
 'rcshowhidepatr' => '$1 ediciones patrulladas',
+'rcshowhidepatr-show' => 'Mostrar',
+'rcshowhidepatr-hide' => 'Ocultar',
 'rcshowhidemine' => '$1 mis ediciones',
+'rcshowhidemine-show' => 'Mostrar',
+'rcshowhidemine-hide' => 'Ocultar',
 'rclinks' => 'Ver los últimos $1 cambios en los últimos $2 días.<br />$3',
 'diff' => 'dif',
 'hist' => 'hist',
@@ -1931,6 +1953,8 @@ Si todavía quiere subir su archivo, por favor, regrese a la página anterior y
 'uploaddisabledtext' => 'No es posible subir archivos.',
 'php-uploaddisabledtext' => 'La subida de archivos está deshabilitada en PHP. Por favor compruebe <code>file_uploads</code> en php.ini.',
 'uploadscripted' => 'Este archivo contiene script o código HTML que puede ser interpretado erróneamente por un navegador web.',
+'uploadscriptednamespace' => "Este archivo SVG contiene un espacio de nombre no permitido '$1'",
+'uploadinvalidxml' => 'No se pudo analizar el XML del archivo cargado.',
 'uploadvirus' => '¡El archivo contiene un virus!
 Detalles: $1',
 'uploadjava' => 'El archivo es un ZIP que contiene un archivo .class de Java.
@@ -2302,10 +2326,20 @@ Las entradas <del>tachadas</del> han sido resueltas.',
 'deadendpagestext' => 'Las siguientes páginas no enlazan a otras páginas de {{SITENAME}}.',
 'protectedpages' => 'Páginas protegidas',
 'protectedpages-indef' => 'Sólo protecciones indefinidas',
+'protectedpages-summary' => 'Esta página enumera las páginas existentes que actualmente están protegidas. Para obtener una lista de títulos que están protegidos desde su creación, véase [[{{#special:ProtectedTitles}}]].',
 'protectedpages-cascade' => 'Sólo protecciones en cascada',
 'protectedpages-noredirect' => 'Ocultar redirecciones',
 'protectedpagesempty' => 'Actualmente no hay ninguna página protegida con esos parámetros.',
+'protectedpages-timestamp' => 'Fecha y hora',
+'protectedpages-page' => 'Página',
+'protectedpages-expiry' => 'Expira',
+'protectedpages-performer' => 'Protección de usuario',
+'protectedpages-params' => 'Parámetros de protección',
+'protectedpages-reason' => 'Motivo',
+'protectedpages-unknown-timestamp' => 'Desconocido',
+'protectedpages-unknown-performer' => 'Usuario desconocido',
 'protectedtitles' => 'Títulos protegidos',
+'protectedtitles-summary' => 'Esta página enumera títulos que actualmente están protegidos desde su creación. Para una lista de las páginas existentes que están protegidos, véase [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'Actualmente no existen entradas protegidas con esos parámetros.',
 'listusers' => 'Lista de usuarios',
 'listusers-editsonly' => 'Muestra sólo usuarios con ediciones',
@@ -2753,6 +2787,7 @@ A continuación se muestra la última entrada del registro de bloqueos para mayo
 'sp-contributions-search' => 'Buscar contribuciones',
 'sp-contributions-username' => 'Dirección IP o nombre de usuario:',
 'sp-contributions-toponly' => 'Solo mostrar últimas ediciones de página',
+'sp-contributions-newonly' => 'Mostrar solo ediciones que son creaciones de páginas',
 'sp-contributions-submit' => 'Buscar',
 
 # What links here
@@ -3059,6 +3094,7 @@ $2',
 'thumbnail_image-type' => 'Tipo de imagen no contemplado',
 'thumbnail_gd-library' => 'Configuración de la librería GD incompleta: falta la función $1',
 'thumbnail_image-missing' => 'El fichero parece no existir: $1',
+'thumbnail_image-failure-limit' => 'Ha habido muchos intentos recientes ($1 o más) para representar esta miniatura. Inténtalo de nuevo más tarde.',
 
 # Special:Import
 'import' => 'Importar páginas',
@@ -3107,6 +3143,7 @@ No hay un directorio temporal.',
 'import-error-special' => 'La página "$1" no se ha importado porque pertenece a un espacio de nombres especial que no admite páginas.',
 'import-error-invalid' => 'La página "$1" no se ha importado porque su nombre no es válido.',
 'import-error-unserialize' => 'La revisión $2 de la página "$1" no pudo dejar de hacerse en serie. Se informó de la revisión para utilizar el modelo de contenidos $3 ejecutado en serie como $4.',
+'import-error-bad-location' => 'La revisión $2 utilizando el modelo de contenido $3 no se pueden almacenar en "$1" en este wiki, ya que ese modelo no es compatible en esa página.',
 'import-options-wrong' => '{{PLURAL:$2|Opción errónea|Opciones erróneas}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'La página raíz dada es un título inválido.',
 'import-rootpage-nosubpage' => 'El espacio de nombres "$1" de la página raíz no permite subpáginas.',
@@ -4292,6 +4329,4 @@ También expande las funciones sintácticas como <code><nowiki>{{</nowiki>#langu
 'expand_templates_generate_rawhtml' => 'Mostrar HTML en crudo',
 'expand_templates_preview' => 'Previsualización',
 
-# Unknown messages
-'uploadinvalidxml' => 'No se pudo analizar el XML del archivo cargado.',
 );
index 417d85e..e7bf3ae 100644 (file)
@@ -18,6 +18,7 @@
  * @author KaidoKikkas
  * @author KalmerE.
  * @author Ker
+ * @author Kristian.kankainen
  * @author Kyng
  * @author Morel
  * @author Nemo bis
@@ -448,7 +449,7 @@ $messages = array(
 'morenotlisted' => 'See loend pole täielik.',
 'mypage' => 'Minu lehekülg',
 'mytalk' => 'Arutelu',
-'anontalk' => 'Selle IP-aadressi artuelu',
+'anontalk' => 'Selle IP-aadressi arutelu',
 'navigation' => 'Navigeerimine',
 'and' => '&#32;ja',
 
@@ -838,6 +839,9 @@ Palun oota $1, enne kui uuesti proovid.',
 'suspicious-userlogout' => 'Sinu väljalogimiskatse nurjus, sest see näis olevat katkise veebilehitseja või puhverserveri saadetud.',
 'createacct-another-realname-tip' => 'Tegelik nimi on valikuline.
 Kui otsustad selle sisestada, kasutatakse seda kasutaja töö temale omistamiseks.',
+'pt-login' => 'Logi sisse',
+'pt-createaccount' => 'Loo konto',
+'pt-userlogout' => 'Logi välja',
 
 # Email sending
 'php-mail-error-unknown' => 'Tundmatu tõrge PHP funktsioonis mail().',
@@ -846,8 +850,7 @@ Kui otsustad selle sisestada, kasutatakse seda kasutaja töö temale omistamisek
 
 # Change password dialog
 'changepassword' => 'Muuda parool',
-'resetpass_announce' => 'Logisid sisse e-posti teel saadud ajutise koodiga.
-Sisselogimise lõpetamiseks pead siia uue parooli sisestama:',
+'resetpass_announce' => 'Pead määrama uue parooli, et sisselogimine lõpule viia.',
 'resetpass_text' => '<!-- Lisa tekst siia -->',
 'resetpass_header' => 'Konto parooli muutmine',
 'oldpassword' => 'Vana parool:',
@@ -864,8 +867,13 @@ Palun oota $1, enne kui uuesti proovid.',
 'resetpass-submit-cancel' => 'Loobu',
 'resetpass-wrong-oldpass' => 'Vigane ajutine või praegune salasõna.
 Võib-olla oled juba edukalt muudnud oma salasõna või taotlenud uut ajutist salasõna.',
+'resetpass-recycled' => 'Palun vali uus salasõna, mis erineb praegusest.',
+'resetpass-temp-emailed' => 'Logisid sisse e-posti teel saadud ajutise koodiga.
+Et sisselogimine lõpule viia, pead määrama siin uue parooli:',
 'resetpass-temp-password' => 'Ajutine parool:',
 'resetpass-abort-generic' => 'Tarkvaralisa on paroolimuudatuse abortinud.',
+'resetpass-expired' => 'Sinu parool on iganenud. Palun määra uus parool, et sisse logida.',
+'resetpass-expired-soft' => 'Sinu parool on iganenud ja tuleb uuesti määrata. Palun vali kohe uus parool või klõpsa "Loobu", et määrata see hiljem.',
 
 # Special:PasswordReset
 'passwordreset' => 'Parooli lähtestamine',
@@ -1847,6 +1855,7 @@ Enne kui jätkad uuesti üleslaadimisega, peaksid paluma olukorda hinnata kellel
 'php-uploaddisabledtext' => 'Failide üleslaadmine on PHP seadetes keelatud.
 Palun vaata <code>file_uploads</code> sätet.',
 'uploadscripted' => 'See fail sisaldab HTML- või skriptikoodi, mida veebilehitseja võib valesti kuvada.',
+'uploadinvalidxml' => 'Üleslaaditud failis sisalduvat XMLi ei õnnestunud liigendada.',
 'uploadvirus' => 'Fail sisaldab viirust! Täpsemalt: $1',
 'uploadjava' => 'See fail on ZIP-fail, milles on Java .class-fail.
 Java failide üleslaadimine on keelatud, kuna nende kaudu võidaks turvapiiranguist mööda minna.',
@@ -2188,6 +2197,7 @@ Igal real on ära toodud esimene ja teine ümbersuunamisleht ning samuti teise 
 'deadendpagestext' => 'Järgmised leheküljed ei viita ühelegi teisele {{GRAMMAR:genitive|{{SITENAME}}}} leheküljele.',
 'protectedpages' => 'Kaitstud leheküljed',
 'protectedpages-indef' => 'Ainult määramata ajani kaitstud',
+'protectedpages-summary' => 'Siin on loetletud olemasolevad leheküljed, mis on praegu kaitstud. Loomise eest kaitstud pealkirjade loendi leiad leheküljelt [[{{#special:ProtectedTitles}}]].',
 'protectedpages-cascade' => 'Ainult kaskaadkaitsega',
 'protectedpages-noredirect' => 'Peida ümbersuunamised',
 'protectedpagesempty' => 'Selliste parameetritega ei ole praegu ühtegi lehekülge kaitstud.',
@@ -2200,6 +2210,7 @@ Igal real on ära toodud esimene ja teine ümbersuunamisleht ning samuti teise 
 'protectedpages-unknown-timestamp' => 'Teadmata',
 'protectedpages-unknown-performer' => 'Teadmata kasutaja',
 'protectedtitles' => 'Kaitstud pealkirjad',
+'protectedtitles-summary' => 'Siin on loetletud pealkirjad, mis on praegu loomise eest kaitstud. Olemasolevate kaitstud lehekülgede loendi leiad leheküljelt [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'Hetkel pole ükski pealkiri kaitstud.',
 'listusers' => 'Kasutajad',
 'listusers-editsonly' => 'Näita vaid kasutajaid, kes on teinud muudatusi',
@@ -4167,6 +4178,4 @@ Samuti hõrendab see parserifunktsioonid nagu
 'expand_templates_generate_rawhtml' => 'Näita toor-HTMLi',
 'expand_templates_preview' => 'Eelvaade',
 
-# Unknown messages
-'uploadinvalidxml' => 'Üleslaaditud failis sisalduvat XMLi ei õnnestunud liigendada.',
 );
index f717947..3c786cb 100644 (file)
@@ -862,8 +862,8 @@ Hau batzuetan gertatzen da buggyan oinarritutako web proxy zerbitzua erabiltzean
 'edit_form_incomplete' => "'''Aldaketa formularioaren atal batzuk ez dira iritsi zerbitzarira; bi aldiz ziurtatu zure aldaketak osorik daudela eta berriro saiatu.'''",
 'editing' => '«$1» aldatzen',
 'creating' => '$1 sortzen',
-'editingsection' => '$1 aldatzen (atala)',
-'editingcomment' => '$1 aldatzen (atal berria)',
+'editingsection' => '«$1» aldatzen (atala)',
+'editingcomment' => '«$1» aldatzen (atal berria)',
 'editconflict' => 'Aldaketa gatazka: $1',
 'explainconflict' => "Zu orrialdea aldatzen hasi ondoren beste norbaitek ere aldaketak egin ditu.
 Goiko testu koadroan ikus daiteke orrialdeak uneotan duen edukia.
index 8cbf7a5..0bb74ef 100644 (file)
@@ -1006,6 +1006,9 @@ $2',
 'suspicious-userlogout' => 'درخواست شما برای خروج از سامانه رد شد زیرا به نظر می‌رسد که این درخواست توسط یک مرورگر معیوب یا پروکسی میانگیر ارسال شده باشد.',
 'createacct-another-realname-tip' => 'نام واقعی اختیاری است.
 اگر آن را وارد کنید هنگام ارجاع به آثارتان و انتساب آن‌ها به شما از نام واقعی‌تان استفاده خواهد شد.',
+'pt-login' => 'ورود به سامانه',
+'pt-createaccount' => 'ایجاد حساب کاربری',
+'pt-userlogout' => 'خروج',
 
 # Email sending
 'php-mail-error-unknown' => 'خطای ناشناخته در تابع  mail()‎ پی‌اچ‌پی',
@@ -1014,8 +1017,7 @@ $2',
 
 # Change password dialog
 'changepassword' => 'تغییر گذرواژه',
-'resetpass_announce' => 'شما با کد موقتی ارسال شده وارد شده‌اید.
-برای انجام فرایند ورود به سامانه باید گذروازهٔ جدیدی وارد کنید:',
+'resetpass_announce' => 'شما باید برای پایان ورود به سیستم،رمز عبور جدیدی را تنظیم کنید.',
 'resetpass_text' => '<!-- اینجا متن اضافه کنید -->',
 'resetpass_header' => 'تغییر گذرواژهٔ حساب کاربری',
 'oldpassword' => 'گذرواژهٔ پیشین:',
@@ -1031,8 +1033,13 @@ $2',
 'resetpass-submit-cancel' => 'لغو',
 'resetpass-wrong-oldpass' => 'گذرواژهٔ موقت یا اخیر نامعتبر.
 ممکن است که شما همینک گذرواژه‌تان را با موفقیت تغییر داده باشید یا درخواست یک گذرواژهٔ موقت جدید کرده باشید.',
+'resetpass-recycled' => 'لطفاً رمز عبور خود را به چیز دیگری غیر از رمز عبور فعلی تنظیم کنید.',
+'resetpass-temp-emailed' => 'شما با یک کد رایانامه شدهٔ موقت وارد شده‌اید.
+برای پایان ورود، شما باید رمز عبور جدیدی اینجا وارد کنید:',
 'resetpass-temp-password' => 'گذرواژهٔ موقت:',
 'resetpass-abort-generic' => 'تغییر گذرواژه به دست یکی از افزونه‌ها لغو شده است.',
+'resetpass-expired' => 'رمز عبور شما منقضی شده‌است. لطفاً برای ورود رمز عبور جدیدی را تنظیم کنید.',
+'resetpass-expired-soft' => 'رمز عبور شما منقضی شده‌است، و نیاز به تنظیم مجدد دارد. لطفاً اکنون رمز عبور جدیدی را انتخاب کنید، یا برای تنظیم مجدد آن بعدآً، دکمهٔ لغو را کلیک کنید.',
 
 # Special:PasswordReset
 'passwordreset' => 'بازنشانی گذرواژه',
@@ -1540,7 +1547,7 @@ $1",
 'shown-title' => 'نمایش $1 {{PLURAL:$1|نتیجه|نتیجه}} در هر صفحه',
 'viewprevnext' => 'نمایش ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''صفحه‌ای با عنوان «[[:$1]]» در این ویکی وجود دارد.'''",
-'searchmenu-new' => '<strong>ایجاد صفحه "[[:$1]]" در این ویکی!</strong> {{PLURAL:$2|0=|همچنین مشاهدهٔ صفحهٔ پیدا شده با جستجوی شما.|همچنین مشاهدهٔ جستجوی نتایج پیدا شده.}}',
+'searchmenu-new' => '<strong>ایجاد صفحهٔ «[[:$1]]» در این ویکی!</strong> {{PLURAL:$2|0=|همچنین مشاهدهٔ صفحهٔ پیدا شده با جستجوی شما.|همچنین مشاهدهٔ جستجوی نتایج پیدا شده.}}',
 'searchprofile-articles' => 'صفحه‌های محتوایی',
 'searchprofile-project' => 'صفحه‌های راهنما و پروژه',
 'searchprofile-images' => 'چندرسانه‌ای',
@@ -1891,11 +1898,23 @@ $1",
 'rcnotefrom' => 'در زیر تغییرات از تاریخ <b>$2</b> آمده‌اند (تا <b>$1</b> مورد نشان داده می‌شود).',
 'rclistfrom' => 'نمایش تغییرات جدید با شروع از $1',
 'rcshowhideminor' => '$1 ویرایش‌های جزئی',
+'rcshowhideminor-show' => 'نمایش',
+'rcshowhideminor-hide' => 'پنهان‌ کردن',
 'rcshowhidebots' => '$1 ربات‌ها',
+'rcshowhidebots-show' => 'نمایش',
+'rcshowhidebots-hide' => 'پنهان کردن',
 'rcshowhideliu' => 'کاربران نسخهٔ $1 ثبت‌نام‌ کردند',
+'rcshowhideliu-show' => 'نمایش',
+'rcshowhideliu-hide' => 'پنهان کردن',
 'rcshowhideanons' => '$1 کاربران ناشناس',
+'rcshowhideanons-show' => 'نمایش',
+'rcshowhideanons-hide' => 'پنهان کردن',
 'rcshowhidepatr' => '$1 ویرایش‌های گشت‌خورده',
+'rcshowhidepatr-show' => 'نمایش',
+'rcshowhidepatr-hide' => 'پنهان کردن',
 'rcshowhidemine' => '$1 ویرایش‌های من',
+'rcshowhidemine-show' => 'نمایش',
+'rcshowhidemine-hide' => 'پنهان کردن',
 'rclinks' => 'نمایش آخرین $1 تغییر در $2 روز اخیر<br />$3',
 'diff' => 'تفاوت',
 'hist' => 'تاریخچه',
@@ -2030,6 +2049,8 @@ $1",
 'php-uploaddisabledtext' => 'بارگذاری پرونده‌های پی‌اچ‌پی غیرفعال است.
 لطفاً تنظیمات file_uploads را بررسی کنید.',
 'uploadscripted' => 'این صفحه حاوی کد اچ‌تی‌ام‌ال یا اسکریپتی است که ممکن است به‌نادرست توسط مرورگر وب تفسیر شود.',
+'uploadscriptednamespace' => "این پوشه اس‌وی‌جی شامل فضای نام غیرقانونی '$1' است",
+'uploadinvalidxml' => 'XML در پروندهٔ بارگذاری‌شده نمی‌تواند تجزیه شود.',
 'uploadvirus' => 'این پرونده ویروس دارد!
 جزئیات : $1',
 'uploadjava' => 'این پرونده یک پرونده زیپ است که حاوی پرونده‌ای از نوع ‎‎.class جاوا است.
@@ -2391,6 +2412,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'deadendpagestext' => 'صفحه‌های زیر به هیچ صفحهٔ دیگری در {{SITENAME}} پیوند ندارند.',
 'protectedpages' => 'صفحه‌های محافظت‌شده',
 'protectedpages-indef' => 'فقط محافظت‌های بی‌پایان',
+'protectedpages-summary' => 'در این صفحه فهرست صفحات موجود است که در حال حاضر محافظت شده اند. برای فهرست عنوان‌هایی که از ایجاد محافظت شده‌اند، به [[{{#special:ProtectedTitles}}]] مراجعه کنید.',
 'protectedpages-cascade' => 'فقط محافظت‌های آبشاری',
 'protectedpages-noredirect' => 'پنهان‌کردن تغییر مسیرها',
 'protectedpagesempty' => 'در حال حاضر هیچ‌صفحه‌ای محافظت نشده‌است.',
@@ -2403,6 +2425,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'protectedpages-unknown-timestamp' => 'ناشناس',
 'protectedpages-unknown-performer' => 'کاربر ناشناس',
 'protectedtitles' => 'عنوان‌های محافظت‌شده',
+'protectedtitles-summary' => 'این صفحه فهرست صفحات موجود است که در حال حاضر محافظت از ساخت شده‌اند. برای فهرست عنوان‌هایی که محافظت از ویرایش شده‌اند، به [[{{#special:ProtectedPages}}]] مراجعه کنید.',
 'protectedtitlesempty' => 'در حال حاضر هیچ عنوانی با این پارامترها محافظت نشده‌است.',
 'listusers' => 'فهرست کاربران',
 'listusers-editsonly' => 'فقط کاربرانی که ویرایش دارند را نشان بده',
@@ -2861,6 +2884,7 @@ $1',
 'sp-contributions-search' => 'جستجوی مشارکت‌ها',
 'sp-contributions-username' => 'نشانی آی‌پی یا نام کاربری:',
 'sp-contributions-toponly' => 'فقط ویرایش‌هایی که آخرین نسخه‌اند نمایش داده شود',
+'sp-contributions-newonly' => 'فقط نمایش ویرایش‌هایی که تولید‌های صفحه هستند',
 'sp-contributions-submit' => 'جستجو',
 
 # What links here
@@ -4453,6 +4477,4 @@ $5
 'expand_templates_generate_rawhtml' => 'نمایش اچ‌تی‌ام‌ال خام',
 'expand_templates_preview' => 'پیش‌نمایش',
 
-# Unknown messages
-'uploadinvalidxml' => 'XML در پروندهٔ بارگذاری‌شده نمی‌تواند تجزیه شود.',
 );
index 034cc40..29cf006 100644 (file)
@@ -21,7 +21,6 @@ $namespaceGenderAliases = array();
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Diidtol jokke',
-'tog-justify' => 'Fonndito lelnanɗe',
 'tog-hideminor' => 'Duuɗ taƴtanɗe pamare e bayle cakkitiiɗe',
 'tog-hidepatrolled' => 'Suuɗ taƴtanɗe deenaaɗe ɗee e bayle cakkitiiɗe',
 'tog-newpageshidepatrolled' => 'Suuɗ kelle deenaaɗe e doggol kelle kese',
index 92ae6b1..53d02cd 100644 (file)
@@ -445,7 +445,7 @@ $messages = array(
 'hidden-categories' => '{{PLURAL:$1|Piilotettu luokka|Piilotetut luokat}}',
 'hidden-category-category' => 'Piilotetut luokat',
 'category-subcat-count' => '{{PLURAL:$2|Tässä luokassa on seuraava alaluokka.|{{PLURAL:$1|Seuraava alaluokka kuuluu|Seuraavat $1 alaluokkaa kuuluvat}} tähän luokkaan. Alaluokkien kokonaismäärä luokassa on $2.}}',
-'category-subcat-count-limited' => 'Tässä luokassa on {{PLURAL:$1|yksi alaluokka|$1 alaluokkaa}}.',
+'category-subcat-count-limited' => 'Tässä luokassa on {{PLURAL:$1|yksi alaluokka|seuraavat $1 alaluokkaa}}.',
 'category-article-count' => '{{PLURAL:$2|Tässä luokassa on seuraava sivu.|{{PLURAL:$1|Seuraava sivu kuuluu|Seuraavat $1 sivua kuuluvat}} tähän luokkaan. Sivujen kokonaismäärä luokassa on $2.}}',
 'category-article-count-limited' => '{{PLURAL:$1|Tämä sivu kuuluu|Nämä $1 sivua kuuluvat}} nykyiseen luokkaan.',
 'category-file-count' => '{{PLURAL:$2|Tässä luokassa on seuraava tiedosto.|{{PLURAL:$1|Seuraava tiedosto kuuluu|Seuraavat $1 tiedostoa kuuluvat}} tähän luokkaan. Tiedostoja luokassa on yhteensä $2.}}',
@@ -853,6 +853,9 @@ Odota $1 ennen kuin yrität uudelleen.',
 'suspicious-userlogout' => 'Pyyntösi kirjautua ulos evättiin, koska se näytti rikkinäisen selaimen tai välimuistipalvelimen lähettämältä.',
 'createacct-another-realname-tip' => 'Vapaaehtoinen.
 Nimesi näytetään käyttäjätunnuksesi sijasta sivun tekijäluettelossa.',
+'pt-login' => 'Kirjaudu sisään',
+'pt-createaccount' => 'Luo tunnus',
+'pt-userlogout' => 'Kirjaudu ulos',
 
 # Email sending
 'php-mail-error-unknown' => 'Tuntematon virhe PHP:n mail()-funktiossa',
@@ -861,7 +864,7 @@ Nimesi näytetään käyttäjätunnuksesi sijasta sivun tekijäluettelossa.',
 
 # Change password dialog
 'changepassword' => 'Salasanan vaihto',
-'resetpass_announce' => 'Kirjauduit sisään sähköpostitse lähetetyllä väliaikaissalasanalla. Päätä sisäänkirjautuminen asettamalla uusi salasana.',
+'resetpass_announce' => 'Jotta sisäänkirjautuminen onnistuu, sinun pitää asettaa uusi salasana.',
 'resetpass_text' => '<!-- Lisää tekstiä tähän -->',
 'resetpass_header' => 'Muuta tunnuksen salasana',
 'oldpassword' => 'Vanha salasana:',
@@ -877,8 +880,13 @@ Odota $1 ennen kuin yrität uudelleen.',
 'resetpass-submit-cancel' => 'Peruuta',
 'resetpass-wrong-oldpass' => 'Virheellinen väliaikainen tai nykyinen salasana.
 Olet saattanut jo onnistuneesti vaihtaa salasanasi tai pyytää uutta väliaikaista salasanaa.',
+'resetpass-recycled' => 'Sinun täytyy valita uudeksi salasanaksi jokin muu kuin nykyinen salasanasi.',
+'resetpass-temp-emailed' => 'Olet kirjautunut sisään väliaikaisella sähköpostitse toimitetulla koodilla.
+Jotta pääset kirjautumaan sisään kunnolla, sinun on nyt asetettava uusi salasana tässä:',
 'resetpass-temp-password' => 'Väliaikainen salasana:',
 'resetpass-abort-generic' => 'Laajennus keskeytti salasanan vaihdon.',
+'resetpass-expired' => 'Salasanasi on vanhentunut. Valitse uusi salasana, jotta pääset kirjautumaan sisään.',
+'resetpass-expired-soft' => 'Salasanasi on vanhentunut ja se pitää uudistaa. Valitse nyt uusi salasana tai peruuta toiminto, niin voit uudistaa salasanan myöhemmin.',
 
 # Special:PasswordReset
 'passwordreset' => 'Salasanan uudistus',
@@ -1373,7 +1381,7 @@ Lisätietoja löytyy [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 
 $1 {{int:pipe-separator}} $2',
 'searchmenu-exists' => "'''Tässä wikissä on sivu nimellä [[:$1]].'''",
-'searchmenu-new' => '<strong>Luo sivu "[[:$1]]" tähän wikiin.</strong>{{PLURAL:$2|0=|Katso myös sivua, joka löytyi hakutoiminnolla.
+'searchmenu-new' => '<strong>Luo sivu "[[:$1]]" tähän wikiin.</strong> {{PLURAL:$2|0=|Katso myös sivua, joka löytyi hakutoiminnolla.
 |Katso myös hakutuloksia.}}',
 'searchprofile-articles' => 'Sisältösivut',
 'searchprofile-project' => 'Ohje- ja projektisivut',
@@ -1400,7 +1408,7 @@ $1 {{int:pipe-separator}} $2',
 'searchrelated' => 'samankaltainen',
 'searchall' => 'kaikki',
 'showingresults' => '{{PLURAL:$1|<strong>Yksi</strong> tulos|<strong>$1</strong> tulosta}} tuloksesta <strong>$2</strong> alkaen.',
-'showingresultsinrange' => 'Alla näytetään enintään {{PLURAL:$1|<strong>1</strong> tulos|<strong>$1</strong> tulosta}} väliltä <strong>$2</strong> – <strong>$3</strong>.',
+'showingresultsinrange' => 'Alla näytetään {{PLURAL:$1|<strong>1</strong> tulos|<strong>$1</strong> tulosta}} väliltä <strong>$2</strong> – <strong>$3</strong>.',
 'showingresultsnum' => "Alla on {{PLURAL:$3|'''Yksi''' hakutulos|'''$3''' hakutulosta}} alkaen '''$2.''' tuloksesta.",
 'showingresultsheader' => "{{PLURAL:$5|Tulokset '''$1'''–'''$3'''|Tulokset '''$1'''–'''$2''' kaikkiaan '''$3''' osuman joukosta}} haulle '''$4'''",
 'search-nonefound' => 'Hakusi ei tuottanut tulosta.',
@@ -1719,11 +1727,23 @@ Tämä tieto on julkinen.',
 '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',
+'rcshowhideminor-show' => 'Näytä',
+'rcshowhideminor-hide' => 'Piilota',
 'rcshowhidebots' => '$1 botit',
+'rcshowhidebots-show' => 'Näytä',
+'rcshowhidebots-hide' => 'Piilota',
 'rcshowhideliu' => '$1 rekisteröityneet käyttäjät',
+'rcshowhideliu-show' => 'Näytä',
+'rcshowhideliu-hide' => 'Piilota',
 'rcshowhideanons' => '$1 anonyymit käyttäjät',
+'rcshowhideanons-show' => 'Näytä',
+'rcshowhideanons-hide' => 'Piilota',
 'rcshowhidepatr' => '$1 tarkastetut muutokset',
+'rcshowhidepatr-show' => 'Näytä',
+'rcshowhidepatr-hide' => 'Piilota',
 'rcshowhidemine' => '$1 omat muutokset',
+'rcshowhidemine-show' => 'Näytä',
+'rcshowhidemine-hide' => 'Piilota',
 'rclinks' => 'Näytä $1 tuoretta muutosta viimeisten $2 päivän ajalta.<br />$3',
 'diff' => 'ero',
 'hist' => 'historia',
@@ -1842,6 +1862,7 @@ Sinun on syytä pyytää jotakuta häivytettyjen tietojen näkemiseen oikeutettu
 'uploaddisabledtext' => 'Tiedostojen tallennus on poistettu käytöstä.',
 'php-uploaddisabledtext' => 'PHP:n tiedostojen lähetys ei ole käytössä. Tarkista asetukset kohdasta file_uploads.',
 'uploadscripted' => 'Tämä tiedosto sisältää HTML-koodia tai skriptejä, jotka selain saattaa virheellisesti suorittaa.',
+'uploadinvalidxml' => 'Ladatun tiedoston XML-koodia ei voitu jäsentää kunnolla.',
 'uploadvirus' => 'Tiedosto sisältää viruksen. Tarkemmat tiedot: $1',
 'uploadjava' => 'Tämä tiedosto on ZIP-tiedosto, joka sisältää Java .class-tiedoston.
 Java-tiedostojen tallentaminen ei ole sallittua, sillä ne saattavat aiheuttaa tietoturvariskejä.',
@@ -2202,7 +2223,7 @@ Jokaisella rivillä on linkit ensimmäiseen ja toiseen ohjaukseen sekä toisen o
 'deadendpagestext' => 'Seuraavat sivut eivät linkitä muihin sivuihin wikissä.',
 'protectedpages' => 'Suojatut sivut',
 'protectedpages-indef' => 'Vain ikuisesti suojatut',
-'protectedpages-summary' => 'Tällä sivulla on luetteloitu ne sivut, jotka ovat tällä hetkellä suojattuja. Jos haluat nähdä luettelon niistä sivujen nimistä, jotka on suojattu uudelleenluonnilta, katso  [[{{#special:ProtectedTitles}}]].',
+'protectedpages-summary' => 'Tällä sivulla on lueteltu tällä hetkellä suojatut sivut. Nähdäksesi luettelon sivuista, jotka on suojattu uudelleenluonnilta, katso  [[{{#special:ProtectedTitles}}]].',
 'protectedpages-cascade' => 'Vain tarttuvasti suojatut',
 'protectedpages-noredirect' => 'Piilota ohjaukset',
 'protectedpagesempty' => 'Mitään sivuja ei ole tällä hetkellä suojattu näillä asetuksilla.',
@@ -2215,7 +2236,7 @@ Jokaisella rivillä on linkit ensimmäiseen ja toiseen ohjaukseen sekä toisen o
 'protectedpages-unknown-timestamp' => 'Tuntematon',
 'protectedpages-unknown-performer' => 'Tuntematon käyttäjä',
 'protectedtitles' => 'Suojatut sivunimet',
-'protectedtitles-summary' => 'Tällä sivulla on lueteltu ne sivut, jotka ovat tällä hetkellä suojatut uudelleenluonnilta. Jos haluat nähdä luettelon suojatuista olemassa olevista sivuista, katso [[{{#special:ProtectedPages}}]].',
+'protectedtitles-summary' => 'Tällä sivulla on lueteltu ne sivut, jotka on tällä hetkellä suojattu uudelleenluonnilta. Nähdäksesi luettelon olemassaolevista suojatuista sivuista katso [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'Ei suojattuja sivunimiä näillä hakuehdoilla.',
 'listusers' => 'Käyttäjälista',
 'listusers-editsonly' => 'Näytä vain käyttäjät, joilla on muokkauksia',
@@ -2957,8 +2978,7 @@ $2',
 'thumbnail_image-type' => 'Kuvamuoto ei ole tuettu',
 'thumbnail_gd-library' => 'GD-kirjastoa ei ole asennettu oikein. Funktio $1 puuttuu.',
 'thumbnail_image-missing' => 'Tiedosto näyttää puuttuvan: $1',
-'thumbnail_image-failure-limit' => 'Tätä kuvan näyttöasettelua (thumbnail) on yritetty toteuttaa liian monta kertaa epäonnistuneesti ($1 tai enemmän).
-Ole hyvä ja yritä myöhemmin uudelleen.',
+'thumbnail_image-failure-limit' => 'Tätä kuvaketta on yritetty tulkita epäonnistuneesti liian monta kertaa ($1 tai enemmän). Ole hyvä ja yritä myöhemmin uudelleen.',
 
 # Special:Import
 'import' => 'Tuo sivuja',
@@ -4082,7 +4102,7 @@ Muussa tapauksessa voit käyttää alla olevaa helpompaa lomaketta. Kommenttisi
 'feedback-error3' => 'Virhe: Ohjelmointirajapinta ei vastaa',
 'feedback-thanks' => 'Kiitos. Palautteesi on jätetty sivulle [$2 $1].',
 'feedback-close' => 'Valmis',
-'feedback-bugcheck' => 'Hyvä! Varmista, että ohjelmointivirhe ei vielä löydy [$1 tästä listasta].',
+'feedback-bugcheck' => 'Hyvä! Varmista vielä, että ohjelmointivirhettä ei löydy [$1 tunnettujen virheiden luettelosta].',
 'feedback-bugnew' => 'Olen varmistanut. Ilmoitan uuden ohjelmointivirheen',
 
 # Search suggestions
@@ -4126,7 +4146,7 @@ Muussa tapauksessa voit käyttää alla olevaa helpompaa lomaketta. Kommenttisi
 'api-error-timeout' => 'Palvelin ei vastannut odotetun ajan kuluessa.',
 'api-error-unclassified' => 'Tapahtui tuntematon virhe.',
 'api-error-unknown-code' => 'Tuntematon virhe: $1.',
-'api-error-unknown-error' => 'Sisäinen virhe: Jotain meni vikaan kun tiedostosi yritettiin tallentaa.',
+'api-error-unknown-error' => 'Sisäinen virhe: Jotain meni vikaan kun tiedostoasi yritettiin tallentaa.',
 'api-error-unknown-warning' => 'Tuntematon varoitus: $1.',
 'api-error-unknownerror' => 'Tuntematon virhe: $1.',
 'api-error-uploaddisabled' => 'Tiedostojen tallentaminen ei ole käytössä.',
@@ -4161,10 +4181,11 @@ Muussa tapauksessa voit käyttää alla olevaa helpompaa lomaketta. Kommenttisi
 
 # Special:ExpandTemplates
 'expandtemplates' => 'Mallineiden laajennus',
-'expand_templates_intro' => 'Tämä toimintosivu ottaa syötteekseen tekstiä ja laajentaa kaikki mallineet rekursiivisesti sekä jäsenninfunktiot, kuten
-<code><nowiki>{{</nowiki>#language:...}}</code>, ja -muuttujat, kuten
+'expand_templates_intro' => 'Tämä toimintosivu ottaa syötteeksi tekstiä ja laajentaa kaikki siinä olevat mallineet rekursiivisesti.
+Se myös laajentaa tuetut parserifunktiot kuten
+<code><nowiki>{{</nowiki>#language:...}}</code> ja -muuttujat kuten
 <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
-Toisin sanoen melkein kaiken, joka on kaksoisaaltosulkeiden sisällä.',
+Käytännössä se laajentaa melkein kaiken, joka on kaksoisaaltosulkeiden sisällä.',
 'expand_templates_title' => 'Otsikko (esimerkiksi muuttujaa {{FULLPAGENAME}} varten)',
 'expand_templates_input' => 'Teksti',
 'expand_templates_output' => 'Tulos',
@@ -4177,6 +4198,4 @@ Toisin sanoen melkein kaiken, joka on kaksoisaaltosulkeiden sisällä.',
 'expand_templates_generate_rawhtml' => 'Näytä raaka HTML',
 'expand_templates_preview' => 'Esikatselu',
 
-# Unknown messages
-'uploadinvalidxml' => 'Ladatun tiedoston XML-koodia ei voitu jäsentää kunnolla.',
 );
index 2d43914..643b357 100644 (file)
@@ -16,7 +16,6 @@ $fallback = 'fi';
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Linkitten alleviivaus',
-'tog-justify' => 'Tassaa kappalheet',
 'tog-hideminor' => 'Piilota pienet muutokset vereksen muutoksitten listasta',
 'tog-hidepatrolled' => 'Piilota tarkastetut muutokset vereksen muutoksitten listasta',
 'tog-newpageshidepatrolled' => 'Piilota tarkastetut sivut uusitten sivuitten listalta',
@@ -25,9 +24,7 @@ $messages = array(
 'tog-numberheadings' => 'Nymreeraa rypriikit',
 'tog-showtoolbar' => 'Näytä työneuvopalkki (JavaScript)',
 'tog-editondblclick' => 'Mookkaa sivuja kaksoisknapituksella (JavaScript)',
-'tog-editsection' => 'Aktiveeraa seksuuni mookkaus [mookkaus]-linkilä',
 'tog-editsectiononrightclick' => 'Aktiveeraa seksuuni mookkaus oikeapuolen klikkauksella seksuuni tittelhiin (JavaScript)',
-'tog-showtoc' => 'Näytä sisältölista (sivuile, joila on yli 3 rypriikkiä)',
 'tog-rememberpassword' => 'Muista minun lokkauksen tässä weppilukijassa (eninthään $1 {{PLURAL:$1|päivä|päivää}})',
 'tog-watchcreations' => 'Lissää sivut mitä luon valvontasivule',
 'tog-watchdefault' => 'Lissää sivut mitä mie mookkaan valvontasivule',
@@ -36,7 +33,6 @@ $messages = array(
 'tog-minordefault' => 'Markeeraa auttomaattisesti kaikki muutokset pieneks',
 'tog-previewontop' => 'Näytä esitarkastelu mookkauspaikan yläpuolela',
 'tog-previewonfirst' => 'Näytä esitarkastelu kun mookkaus alethaan',
-'tog-nocache' => 'Älä säästä sivuja weppilukijan välimuisthiin',
 'tog-enotifwatchlistpages' => 'Lähätä e-postipreivi mulle kun sivu minun valvontalistala on muutettu',
 'tog-enotifusertalkpages' => 'Lähätä sähköposti, kun käyttäjäsivun keskustelusivu muuttuu',
 'tog-enotifminoredits' => 'Lähätä epostieto pienistäki muutoksista',
@@ -130,7 +126,6 @@ $messages = array(
 'vector-action-protect' => 'Suojaa',
 'vector-action-undelete' => 'Pane takashiin',
 'vector-action-unprotect' => 'Muuta suojaa',
-'vector-simplesearch-preference' => 'Ota käythöön paranetut hakuehotukset (vain Vector-ulkoasu)',
 'vector-view-create' => 'Luo',
 'vector-view-edit' => 'Mookkaa',
 'vector-view-history' => 'Näytä histuuria',
@@ -331,7 +326,6 @@ Merkinät: (nyk.) = eroavaisuuet nykyisheen versuunhiin, (eel.) = eroavaisuuet e
 'lineno' => 'Rivi $1:',
 'compareselectedversions' => 'Vertaile valittuja sivu versuunia',
 'editundo' => 'kumota',
-'diff-multi' => '(Näytetyitten versuunitten välissä on {{PLURAL:$1|yks mookkaus|$1 versuunit, jokka on {{PLURAL:$2|yhen käyttäjän tekemiä|$2 eri käyttäjän tekemiä}}}}.)',
 
 # Search results
 'searchresults' => 'Hakutulokset',
@@ -387,7 +381,6 @@ Merkinät: (nyk.) = eroavaisuuet nykyisheen versuunhiin, (eel.) = eroavaisuuet e
 'recentchanges-label-minor' => 'Tämä on pieni muutos',
 'recentchanges-label-bot' => 'Tämän muutoksen teki botti',
 'recentchanges-label-unpatrolled' => 'Tätä muutosta ei ole vielä tarkistettu',
-'rcnote' => 'Alla on {{PLURAL:$1|yks muutos|$1 vereksimät muutokset}} {{PLURAL:$2|yhen päivän|$2 viimi päivän}} ajalta $4 kello $5 asti.',
 'rcnotefrom' => "Alla on muutokset '''$2'''lähtien. (korkeinthaans '''$1''' näytethään).",
 'rclistfrom' => 'Näytä uuet muutokset jälkhiin $1',
 'rcshowhideminor' => '$1 pienet muutokset',
index 8b948b2..775b4ee 100644 (file)
@@ -274,7 +274,6 @@ $messages = array(
 'vector-action-protect' => 'Friða',
 'vector-action-undelete' => 'Endurstovna',
 'vector-action-unprotect' => 'Broyt verju',
-'vector-simplesearch-preference' => 'Ger lættari leititeig virknan (bert Vector útsjónd)',
 'vector-view-create' => 'Stovna',
 'vector-view-edit' => 'Rætta',
 'vector-view-history' => 'Vís søgu',
index 124fcea..8deae62 100644 (file)
  * @author Lucyin
  * @author Manohisoa
  * @author Mattho69
+ * @author Maxime Corbin
  * @author McDutchie
  * @author Meithal
  * @author Metroitendo
+ * @author Momo50WM
  * @author Moyg
  * @author Nicolas NALLET
  * @author Nicolas Raoul
@@ -419,27 +421,27 @@ $separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'Souligner les liens :',
+'tog-underline' => 'Lien hypertexte:',
 'tog-hideminor' => 'Masquer les modifications mineures dans les changements récents',
-'tog-hidepatrolled' => 'Masquer les modifications surveillées dans les modifications récentes',
+'tog-hidepatrolled' => 'Masquer les modifications surveillées dans les changements récents',
 'tog-newpageshidepatrolled' => 'Masquer les pages surveillées dans la liste des nouvelles pages',
-'tog-extendwatchlist' => 'Étendre la liste de suivi pour afficher toutes les modifications et pas uniquement les plus récentes',
+'tog-extendwatchlist' => 'Développer la liste de suivi pour voir tous les changements, non seulement le plus récent',
 'tog-usenewrc' => 'Grouper les changements par page dans les modifications récentes et la liste de suivi (nécessite JavaScript)',
 'tog-numberheadings' => 'Numéroter automatiquement les titres de section',
-'tog-showtoolbar' => "Montrer la barre d'outils de modification (nécessite JavaScript)",
+'tog-showtoolbar' => "Afficher la barre d'outils de modification (nécessite JavaScript)",
 'tog-editondblclick' => 'Modifier des pages sur double-clic (nécessite JavaScript)',
 'tog-editsectiononrightclick' => 'Activer la modification de sections par clic droit sur les titres (nécessite JavaScript)',
-'tog-rememberpassword' => 'Se souvenir de mon identification avec ce navigateur (au maximum $1 {{PLURAL:$1|jour|jours}})',
+'tog-rememberpassword' => 'Me reconnecter automatiquement lors des prochaines visites avec ce navigateur (au maximum $1&nbsp;{{PLURAL:$1|jour|jours}})',
 'tog-watchcreations' => "Ajouter les pages que je crée et les fichiers que j'importe à ma liste de suivi",
 'tog-watchdefault' => 'Ajouter les pages et les fichiers que je modifie à ma liste de suivi',
-'tog-watchmoves' => 'Ajouter les pages et les fichiers que je renomme à ma liste de suivi',
+'tog-watchmoves' => 'Ajouter les pages et les fichiers que je déplace à ma liste de suivi',
 'tog-watchdeletion' => 'Ajouter les pages et les fichiers que je supprime à ma liste de suivi',
-'tog-minordefault' => 'Marquer mes modifications comme mineures par défaut',
+'tog-minordefault' => 'Marquer toutes les modifications mineures par défaut',
 'tog-previewontop' => 'Afficher la prévisualisation au-dessus de la zone de modification',
 'tog-previewonfirst' => 'Afficher la prévisualisation lors de la première modification',
 'tog-enotifwatchlistpages' => "M'avertir par courriel lorsqu'une page ou un fichier de ma liste de suivi est modifiée",
 'tog-enotifusertalkpages' => "M'avertir par courriel si ma page de discussion est modifiée",
-'tog-enotifminoredits' => "M'avertir par courriel pour les modifications mineures de pages ou de fichiers également",
+'tog-enotifminoredits' => "M'avertir par courriel également lors des modifications mineures de pages ou de fichiers",
 'tog-enotifrevealaddr' => 'Afficher mon adresse de courriel dans les courriels de notification',
 'tog-shownumberswatching' => "Afficher le nombre d'utilisateurs qui suivent la page",
 'tog-oldsig' => 'Signature existante :',
@@ -462,30 +464,30 @@ $messages = array(
 
 'underline-always' => 'Toujours',
 'underline-never' => 'Jamais',
-'underline-default' => 'Valeur par défaut du navigateur ou du thème',
+'underline-default' => 'Navigateur ou thème par défaut',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Style de police de la zone de modification :',
-'editfont-default' => 'Police par défaut du navigateur',
-'editfont-monospace' => 'Police à chasse fixe',
-'editfont-sansserif' => 'Police sans empattement',
-'editfont-serif' => 'Police avec empattement',
+'editfont-default' => 'Navigateur par défaut',
+'editfont-monospace' => 'Police Monospaced',
+'editfont-sansserif' => 'Police Sans-serif',
+'editfont-serif' => 'Police Serif',
 
 # Dates
-'sunday' => 'dimanche',
-'monday' => 'lundi',
-'tuesday' => 'mardi',
-'wednesday' => 'mercredi',
-'thursday' => 'jeudi',
-'friday' => 'vendredi',
-'saturday' => 'samedi',
-'sun' => 'dim',
-'mon' => 'lun',
-'tue' => 'mar',
-'wed' => 'mer',
-'thu' => 'jeu',
-'fri' => 'ven',
-'sat' => 'sam',
+'sunday' => 'Dimanche',
+'monday' => 'Lundi',
+'tuesday' => 'Mardi',
+'wednesday' => 'Mercredi',
+'thursday' => 'Jeudi',
+'friday' => 'Vendredi',
+'saturday' => 'Samedi',
+'sun' => 'Dim.',
+'mon' => 'Lun.',
+'tue' => 'Mar.',
+'wed' => 'Mer.',
+'thu' => 'Jeu.',
+'fri' => 'Ven.',
+'sat' => 'Sam.',
 'january' => 'janvier',
 'february' => 'février',
 'march' => 'mars',
@@ -614,7 +616,7 @@ $messages = array(
 'delete' => 'Supprimer',
 'deletethispage' => 'Supprimer cette page',
 'undeletethispage' => 'Annuler la suppression de cette page',
-'undelete_short' => 'Restaurer $1 modification{{PLURAL:$1||s}}',
+'undelete_short' => 'Restaurer {{PLURAL:$1|une modification|$1 modifications}}',
 'viewdeleted_short' => 'Voir {{PLURAL:$1|une modification supprimée|$1 modifications supprimées}}',
 'protect' => 'Protéger',
 'protect_change' => 'modifier',
@@ -631,30 +633,30 @@ $messages = array(
 'talk' => 'Discussion',
 'views' => 'Affichages',
 'toolbox' => 'Outils',
-'userpage' => 'Page utilisateur',
-'projectpage' => 'Page méta',
+'userpage' => 'Voir la page utilisateur',
+'projectpage' => 'Voir la page du projet',
 'imagepage' => 'Voir la page du fichier',
 'mediawikipage' => 'Voir la page du message',
 'templatepage' => 'Voir la page du modèle',
 'viewhelppage' => "Voir la page d'aide",
 'categorypage' => 'Voir la page de catégorie',
-'viewtalkpage' => 'Page de discussion',
+'viewtalkpage' => 'Voir la page de discussion',
 'otherlanguages' => 'Autres langues',
 'redirectedfrom' => '(Redirigé depuis $1)',
 'redirectpagesub' => 'Page de redirection',
 'lastmodifiedat' => 'Dernière modification de cette page le $1 à $2.<br />',
-'viewcount' => 'Cette page a été consultée $1 fois.',
+'viewcount' => 'Cette page a été consultée {{PLURAL:$1|une fois|$1 fois}}.',
 'protectedpage' => 'Page protégée',
 'jumpto' => 'Aller à :',
-'jumptonavigation' => 'Navigation',
+'jumptonavigation' => 'navigation',
 'jumptosearch' => 'rechercher',
 'view-pool-error' => "Désolé, les serveurs sont surchargés en ce moment.
 Trop d'utilisateurs cherchent à consulter cette page.
 Veuillez attendre un moment avant de retenter l'accès à cette page.
 
 $1",
-'pool-timeout' => "Délai dépassé durant l'attente du verrou",
-'pool-queuefull' => 'La file de travail est pleine',
+'pool-timeout' => "Délai d'attente dépassé",
+'pool-queuefull' => "La file d'attente est pleine",
 'pool-errorunknown' => 'Erreur inconnue',
 
 # 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).
@@ -678,7 +680,7 @@ $1",
 
 'badaccess' => 'Erreur de permissions',
 'badaccess-group0' => 'Vous n’avez pas les droits suffisants pour réaliser l’action demandée.',
-'badaccess-groups' => 'L’action que vous essayez de réaliser n’est permise qu’aux utilisateurs {{PLURAL:$2|du groupe|des groupes}} : $1.',
+'badaccess-groups' => "L’action que vous essayez de réaliser n’est permise qu’aux utilisateurs {{PLURAL:$2|du groupe|d'un des groupes}} : $1.",
 
 'versionrequired' => 'Version $1 de MediaWiki nécessaire',
 'versionrequiredtext' => 'La version $1 de MediaWiki est nécessaire pour utiliser cette page. Consultez [[Special:Version|la page des versions]]',
@@ -957,6 +959,9 @@ Veuillez attendre $1 avant d'essayer à nouveau.",
 'suspicious-userlogout' => "Votre demande de déconnexion a été refusée car il semble qu'elle a été envoyée par un navigateur cassé ou la mise en cache d'un proxy.",
 'createacct-another-realname-tip' => 'Le vrai nom est optionnel.
 Si vous décidez de le fournir, il sera utilisé pour attribuer à l’utilisateur ses travaux.',
+'pt-login' => 'Se connecter',
+'pt-createaccount' => 'Créer un compte',
+'pt-userlogout' => 'Se déconnecter',
 
 # Email sending
 'php-mail-error-unknown' => 'Erreur inconnue dans la fonction mail() de PHP.',
@@ -965,7 +970,7 @@ Si vous décidez de le fournir, il sera utilisé pour attribuer à l’utilisate
 
 # Change password dialog
 'changepassword' => 'Changer de mot de passe',
-'resetpass_announce' => "Vous vous êtes enregistré{{GENDER:||e|(e)}} avec un mot de passe temporaire envoyé par courriel. Pour terminer l'enregistrement, vous devez entrer un nouveau mot de passe ici :",
+'resetpass_announce' => "Pour terminer l'enregistrement, vous devez fournir un nouveau mot de passe.",
 'resetpass_text' => '<!-- Ajoutez le texte ici -->',
 'resetpass_header' => 'Changer le mot de passe du compte',
 'oldpassword' => 'Ancien mot de passe :',
@@ -981,8 +986,13 @@ Veuillez attendre $1 avant de réessayer.',
 'resetpass-submit-cancel' => 'Annuler',
 'resetpass-wrong-oldpass' => 'Mot de passe actuel ou temporaire invalide.
 Vous avez peut-être déjà changé votre mot de passe ou demandé un nouveau mot de passe temporaire.',
+'resetpass-recycled' => 'Veuillez réinitialiser votre mot de passe à quelque chose d’autre que l’actuel.',
+'resetpass-temp-emailed' => 'Vous êtes connecté avec un code temporaire fourni par courriel.
+Pour terminer la connexion, vous devez fournir un nouveau mot de passe ici :',
 'resetpass-temp-password' => 'Mot de passe temporaire :',
 'resetpass-abort-generic' => 'La modification du mot de passe a été annulée par une extension.',
+'resetpass-expired' => 'Votre mot de passe a expiré. Veuillez en fournir un nouveau pour vous connecter.',
+'resetpass-expired-soft' => 'Votre mot de passe a expiré, et doit être réinitialisé. Veuillez en choisir un nouveau maintenant, ou cliquer sur annuler pour le faire plus tard.',
 
 # Special:PasswordReset
 'passwordreset' => 'Remise à zéro du mot de passe',
@@ -1277,7 +1287,7 @@ Il devrait y avoir moins de $2 appel{{PLURAL:$2||s}}, alors qu'il y en a mainten
 'undo-success' => 'Cette modification va être défaite. Veuillez vérifier les modifications ci-dessous, puis publier si c’est bien ce que vous voulez faire.',
 'undo-failure' => 'Cette modification ne peut pas être défaite : cela entrerait en conflit avec les modifications intermédiaires.',
 'undo-norev' => 'La modification n’a pas pu être défaite parce qu’elle est inexistante ou qu’elle a été supprimée.',
-'undo-nochange' => 'Il semble que la modification aie déjà été annulée.',
+'undo-nochange' => 'Il semblerait que la modification ait déjà été annulée.',
 'undo-summary' => 'Annulation des modifications $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussion]])',
 'undo-summary-username-hidden' => 'Annuler la révision $1 par un utilisateur masqué',
 
@@ -1825,11 +1835,23 @@ Cette information sera publique.',
 'rcnotefrom' => "Voici les modifications effectuées depuis le '''$2''' ('''$1''' au maximum).",
 'rclistfrom' => 'Afficher les nouvelles modifications depuis le $1.',
 'rcshowhideminor' => '$1 les modifications mineures',
+'rcshowhideminor-show' => 'Afficher',
+'rcshowhideminor-hide' => 'Masquer',
 'rcshowhidebots' => '$1 les robots',
+'rcshowhidebots-show' => 'Afficher',
+'rcshowhidebots-hide' => 'Masquer',
 'rcshowhideliu' => '$1 les utilisateurs enregistrés',
+'rcshowhideliu-show' => 'Afficher',
+'rcshowhideliu-hide' => 'Masquer',
 'rcshowhideanons' => '$1 les utilisateurs anonymes',
+'rcshowhideanons-show' => 'Afficher',
+'rcshowhideanons-hide' => 'Masquer',
 'rcshowhidepatr' => '$1 les modifications surveillées',
+'rcshowhidepatr-show' => 'Afficher',
+'rcshowhidepatr-hide' => 'Masquer',
 'rcshowhidemine' => '$1 mes modifications',
+'rcshowhidemine-show' => 'Afficher',
+'rcshowhidemine-hide' => 'Masquer',
 'rclinks' => 'Afficher les $1 dernières modifications effectuées au cours des $2 derniers jours<br />$3.',
 'diff' => 'diff',
 'hist' => 'hist',
@@ -1956,6 +1978,7 @@ Vous devriez demander à quelqu'un la possibilité de vérifier le journal de ce
 'uploaddisabledtext' => 'L’import de fichiers est désactivé sur ce wiki.',
 'php-uploaddisabledtext' => "L'import de fichiers a été désactivé dans PHP. Vérifiez l'option de configuration file_uploads.",
 'uploadscripted' => 'Ce fichier contient du code HTML ou un script qui pourrait être interprété de façon incorrecte par un navigateur web.',
+'uploadinvalidxml' => 'Le XML dans le fichier importé n’a pas pu être analysé.',
 'uploadvirus' => 'Ce fichier contient un virus ! Pour plus de détails, consultez : $1',
 'uploadjava' => 'C’est un fichier ZIP qui contient un fichier Java .class.
 Le téléchargement de fichiers Java n’est pas autorisé, car ils peuvent contourner certaines restrictions de sécurité.',
@@ -2327,6 +2350,7 @@ Les entrées <del>barrées</del> ont été résolues.',
 'deadendpagestext' => "Les pages suivantes ne contiennent aucun lien vers d'autres pages du wiki.",
 'protectedpages' => 'Pages protégées',
 'protectedpages-indef' => 'Uniquement les protections permanentes',
+'protectedpages-summary' => 'Cette page liste les pages existantes actuellement protégées. Pour une liste des titres protégés depuis leur création, voir [[{{#special:ProtectedTitles}}]].',
 'protectedpages-cascade' => 'Uniquement les protections en cascade',
 'protectedpages-noredirect' => 'Masquer les redirections',
 'protectedpagesempty' => "Aucune page n'est protégée de cette façon.",
@@ -2339,6 +2363,7 @@ Les entrées <del>barrées</del> ont été résolues.',
 'protectedpages-unknown-timestamp' => 'Inconnu',
 'protectedpages-unknown-performer' => 'Utilisateur inconnu',
 'protectedtitles' => 'Titres protégés',
+'protectedtitles-summary' => 'Cette page liste les titres actuellement protégés depuis leur création. Pour une liste des pages  protégées existantes, voir [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => "Aucun titre n'est actuellement protégé avec ces paramètres.",
 'listusers' => 'Liste des utilisateurs',
 'listusers-editsonly' => 'Ne montrer que les utilisateurs ayant au moins une contribution',
@@ -4461,6 +4486,4 @@ En fait, elle réalise l'expansion de pratiquement tout ce qui est encadré par
 'expand_templates_generate_rawhtml' => 'Afficher le HTML brut',
 'expand_templates_preview' => 'Aperçu du rendu',
 
-# Unknown messages
-'uploadinvalidxml' => 'Le XML dans le fichier importé n’a pas pu être analysé.',
 );
index 2f80584..7e7c262 100644 (file)
@@ -21,7 +21,6 @@ $fallback = 'fr';
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Souligner les liens:',
-'tog-justify' => 'Égalisez les paragraphes',
 'tog-hideminor' => 'Cachez les petits changements dans la liste des derniers changements',
 'tog-hidepatrolled' => '↓ Cachez les petits changements dans la liste des derniers changements',
 'tog-newpageshidepatrolled' => '↓Cache pages patrollés de la list des pages nouveau',
@@ -30,9 +29,7 @@ $messages = array(
 'tog-numberheadings' => 'Mettre les numéros sus les en-têtes',
 'tog-showtoolbar' => "Montrer la barre d'outils des changements (JavaScript)",
 'tog-editondblclick' => 'Faire un clic-double pour changer la page (JavaScript)',
-'tog-editsection' => 'Changer une section avec les liens [changer]',
 'tog-editsectiononrightclick' => 'Changer une section en faisant un clic droit sus son nom (JavaScript)',
-'tog-showtoc' => 'Montrer la table des matières (pour les pages avec plus que 3 têtes)',
 'tog-rememberpassword' => 'Garder mon mot de passe (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'Additionner les pages que je crée à ma liste des pages guettées',
 'tog-watchdefault' => 'Additionner les pages que je change à ma liste des pages guettées',
@@ -41,7 +38,6 @@ $messages = array(
 'tog-minordefault' => "Marquer tous les petits changements d'après le réglage",
 'tog-previewontop' => "Montrer la vue d'avance au-dessus la boëte de changement",
 'tog-previewonfirst' => "Montrer la vue d'avance au temps du premier changement",
-'tog-nocache' => 'Arrêter le cache des pages',
 'tog-enotifwatchlistpages' => 'Envoyer un e-mail quand une de mes pages guettées est changée',
 'tog-enotifusertalkpages' => 'Envoyer un e-mail quand ma page de discussion est changée',
 'tog-enotifminoredits' => 'Envoyer un e-mail même pour les petits changements',
@@ -567,7 +563,6 @@ Des autres administrateurs sus ce wiki ont la permission de voir et de rétablir
 'lineno' => 'Ligne $1:',
 'compareselectedversions' => 'Comparer les versions choisies',
 'editundo' => 'renverser',
-'diff-multi' => '({{PLURAL:$1|Un changement moyen caché|$1 changements moyens cachés}})',
 
 # Search results
 'searchresults' => 'Résultats de la charche',
index 0b222ce..a11e965 100644 (file)
@@ -474,7 +474,6 @@ $messages = array(
 'vector-action-protect' => 'Protègiér',
 'vector-action-undelete' => 'Refâre',
 'vector-action-unprotect' => 'Changiér la protèccion',
-'vector-simplesearch-preference' => 'Activar la bârra de rechèrche simplifiâye (solament por l’habelyâjo « Vèctor »)',
 'vector-view-create' => 'Fâre',
 'vector-view-edit' => 'Changiér',
 'vector-view-history' => 'Vêre l’historico',
index c26557c..1bfd79a 100644 (file)
@@ -281,7 +281,6 @@ $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',
index 26c001d..0b11a8f 100644 (file)
@@ -98,16 +98,13 @@ $magicWords = array(
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Baalantıların altını çiz',
-'tog-justify' => 'Paragrafları düz',
 'tog-hideminor' => 'Küçük diişmäkleri "Bitki diişmäkler" sayfasında sakla',
 'tog-extendwatchlist' => 'İlerlemiş bakmaa listası',
 'tog-usenewrc' => 'İlerlemiş bitki diişmäkler listası (JavaScript uymêêr)',
 'tog-numberheadings' => 'Başlıklara avtomatik nomer yaz',
 'tog-showtoolbar' => 'Diişmäk yapar känä yardımcı tuşları göster. (JavaScript)',
 'tog-editondblclick' => 'Sayfayı çift tuşlayarak diiştirmää başla (JavaScript)',
-'tog-editsection' => 'Bölümleri [diiştir] baalantılarılan diiştirmää hakkı ver',
 'tog-editsectiononrightclick' => 'Bölüm başlıına saa tuşla basarak bölümü düzmää izin ver.(JavaScript)',
-'tog-showtoc' => 'İçindäkiler tablițasını düz<br />(3-tän çok başlıı olan sayfalar için)',
 'tog-rememberpassword' => 'Parolu hatırla (en fazla $1 {{PLURAL:$1|gün|gün}})',
 'tog-watchcreations' => 'Yarattıım sayfaları bakmaa listama ekle',
 'tog-watchdefault' => 'Diişmäk yapılan sayfayı bakmaa listasına ekle',
@@ -554,7 +551,6 @@ Nışannar: (bitki) = şindiki versiyalan aradaki fark,
 'lineno' => '$1. liniya:',
 'compareselectedversions' => 'Karşılaştır versiyaları ani seçildi',
 'editundo' => 'geeri al',
-'diff-multi' => '({{PLURAL:$1|Ara versiya|$1 ara versiyalar}} gösterilmedi.)',
 
 # Search results
 'searchresults' => 'Aaramak rezultatları',
index 778b3f6..afc7c85 100644 (file)
@@ -40,6 +40,6 @@ $messages = array(
 # Variants for Gan language
 'variantname-gan-hans' => '简体',
 'variantname-gan-hant' => '繁體',
-'variantname-gan'      => '贛語原文',
+'variantname-gan' => '贛語原文',
 
 );
index 85066a6..70f2314 100644 (file)
@@ -198,7 +198,6 @@ $messages = array(
 'vector-action-protect' => 'Dìon',
 'vector-action-undelete' => 'Neo-dhèan an sguabadh às',
 'vector-action-unprotect' => 'Atharraich an dìon',
-'vector-simplesearch-preference' => 'Cuir an comas am bàr-luirg simplidh (craiceann vector a-mhàin)',
 'vector-view-create' => 'Cruthaich',
 'vector-view-edit' => 'Deasaich',
 'vector-view-history' => 'Seall an eachdraidh',
index db2e588..e7a29a9 100644 (file)
@@ -448,7 +448,6 @@ $messages = array(
 'vector-action-protect' => 'Protexer',
 'vector-action-undelete' => 'Restaurar',
 'vector-action-unprotect' => 'Cambiar a protección',
-'vector-simplesearch-preference' => 'Activar a barra de procuras simplificada (soamente na aparencia Vector)',
 'vector-view-create' => 'Crear',
 'vector-view-edit' => 'Editar',
 'vector-view-history' => 'Ver o historial',
@@ -837,6 +836,9 @@ Por favor, agarde $1 antes de probar outra vez.',
 'suspicious-userlogout' => 'Rexeitouse a súa petición de saír do sistema porque semella que a enviou un navegador roto ou a caché dun proxy.',
 'createacct-another-realname-tip' => 'O nome real é opcional.
 Se escolle dalo utilizarase para atribuír ao usuario o seu traballo.',
+'pt-login' => 'Iniciar sesión',
+'pt-createaccount' => 'Crear unha conta',
+'pt-userlogout' => 'Pechar sesión',
 
 # Email sending
 'php-mail-error-unknown' => 'Erro descoñecido na función mail() do PHP.',
@@ -845,7 +847,7 @@ Se escolle dalo utilizarase para atribuír ao usuario o seu traballo.',
 
 # Change password dialog
 'changepassword' => 'Cambiar o contrasinal',
-'resetpass_announce' => 'Debe rexistrarse co código temporal que recibiu por correo electrónico. Para finalizar o rexistro debe indicar un novo contrasinal aquí:',
+'resetpass_announce' => 'Para finalizar o rexistro debe indicar un novo contrasinal.',
 'resetpass_text' => '<!-- Engadir texto aquí -->',
 'resetpass_header' => 'Cambiar o contrasinal da conta',
 'oldpassword' => 'Contrasinal antigo:',
@@ -861,8 +863,13 @@ Por favor, agarde $1 antes de probar outra vez.',
 'resetpass-submit-cancel' => 'Cancelar',
 'resetpass-wrong-oldpass' => 'O contrasinal temporal ou actual é incorrecto.
 Pode ser que xa cambiase o seu contrasinal ou que solicitase un novo contrasinal temporal.',
+'resetpass-recycled' => 'Cambie o seu contrasinal por un distinto do actual.',
+'resetpass-temp-emailed' => 'Accedeu cun código temporal.
+Para completar o acceso, defina un novo contrasinal aquí:',
 'resetpass-temp-password' => 'Contrasinal temporal:',
 'resetpass-abort-generic' => 'Unha extensión cancelou a modificación do contrasinal.',
+'resetpass-expired' => 'O seu contrasinal caducou. Defina un novo contrasinal para acceder.',
+'resetpass-expired-soft' => 'O seu contrasinal caducou e debe restablecelo. Escolla un novo contrasinal ou prema «Cancelar» para restablecelo máis tarde.',
 
 # Special:PasswordReset
 'passwordreset' => 'Restablecer o contrasinal',
@@ -1726,11 +1733,23 @@ Se escolle dalo utilizarase para atribuírlle o seu traballo.',
 'rcnotefrom' => "A continuación móstranse os cambios feitos desde o '''$3''' ás '''$4''' (móstranse '''$1''' como máximo).",
 'rclistfrom' => 'Mostrar os cambios novos desde o $1',
 'rcshowhideminor' => '$1 as edicións pequenas',
+'rcshowhideminor-show' => 'Mostrar',
+'rcshowhideminor-hide' => 'Agochar',
 'rcshowhidebots' => '$1 os bots',
+'rcshowhidebots-show' => 'Mostrar',
+'rcshowhidebots-hide' => 'Agochar',
 'rcshowhideliu' => '$1 os usuarios rexistrados',
+'rcshowhideliu-show' => 'Mostrar',
+'rcshowhideliu-hide' => 'Agochar',
 'rcshowhideanons' => '$1 os usuarios anónimos',
+'rcshowhideanons-show' => 'Mostrar',
+'rcshowhideanons-hide' => 'Agochar',
 'rcshowhidepatr' => '$1 as edicións revisadas',
+'rcshowhidepatr-show' => 'Mostrar',
+'rcshowhidepatr-hide' => 'Agochar',
 'rcshowhidemine' => '$1 as edicións propias',
+'rcshowhidemine-show' => 'Mostrar',
+'rcshowhidemine-hide' => 'Agochar',
 'rclinks' => 'Mostrar os últimos $1 cambios nos últimos $2 días.<br />$3',
 'diff' => 'dif',
 'hist' => 'hist',
@@ -1861,6 +1880,8 @@ Debería contactar con alguén capaz de ver os datos de ficheiros borrados para
 'uploaddisabledtext' => 'A carga de ficheiros está desactivada.',
 'php-uploaddisabledtext' => 'As cargas de ficheiros PHP están desactivadas. Por favor, comprobe a característica file_uploads.',
 'uploadscripted' => 'Este ficheiro contén código HTML ou script que pode producir erros ao ser interpretado polo navegador.',
+'uploadscriptednamespace' => "Este ficheiro SVG contén un espazo de nome non permitido '$1'",
+'uploadinvalidxml' => 'Non se puido analizar o XML do ficheiro cargado.',
 'uploadvirus' => 'O ficheiro contén un virus! Detalles: $1',
 'uploadjava' => 'O ficheiro é un ZIP que contén un ficheiro .class de Java.
 Non están permitidas as cargas de ficheiros Java, dado que poden causar restricións de seguridade.',
@@ -2235,10 +2256,20 @@ As entradas <del>riscadas</del> xa foron resoltas.',
 'deadendpagestext' => 'Estas páxinas non ligan con ningunha outra páxina de {{SITENAME}}.',
 'protectedpages' => 'Páxinas protexidas',
 'protectedpages-indef' => 'Só as proteccións indefinidas',
+'protectedpages-summary' => 'Esta páxina lista páxinas existentes protexidas. Para obter unha lista de páxinas cuxa creación está prohibida, vexa [[{{#special:ProtectedTitles}}]].',
 'protectedpages-cascade' => 'Só as proteccións en serie',
 'protectedpages-noredirect' => 'Agochar as redireccións',
 'protectedpagesempty' => 'Actualmente non hai ningunha páxina protexida con eses parámetros.',
+'protectedpages-timestamp' => 'Data e hora',
+'protectedpages-page' => 'Páxina',
+'protectedpages-expiry' => 'Caduca',
+'protectedpages-performer' => 'Protector',
+'protectedpages-params' => 'Parámetros da protección',
+'protectedpages-reason' => 'Motivo',
+'protectedpages-unknown-timestamp' => 'Descoñecido',
+'protectedpages-unknown-performer' => 'Usuario descoñecido',
 'protectedtitles' => 'Títulos protexidos',
+'protectedtitles-summary' => 'Esta páxina lista títulos que están prohibidos para páxinas novas. Para obter unha lista de páxinas existentes protexidas, vexa [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'Actualmente non hai ningún título protexido con eses parámetros.',
 'listusers' => 'Lista de usuarios',
 'listusers-editsonly' => 'Mostrar só os usuarios con edicións',
@@ -2694,6 +2725,7 @@ Velaquí está a última entrada do rexistro de bloqueos, por se quere consultal
 'sp-contributions-search' => 'Busca de contribucións',
 'sp-contributions-username' => 'Enderezo IP ou nome de usuario:',
 'sp-contributions-toponly' => 'Mostrar só as últimas revisións',
+'sp-contributions-newonly' => 'Mostrar só edicións que son creacións de páxinas',
 'sp-contributions-submit' => 'Procurar',
 
 # What links here
@@ -3002,6 +3034,7 @@ $2',
 'thumbnail_image-type' => 'Tipo de imaxe non soportado',
 'thumbnail_gd-library' => 'Configuración da libraría GD incompleta: Falta a función $1',
 'thumbnail_image-missing' => 'Parece que falta o ficheiro: $1',
+'thumbnail_image-failure-limit' => 'Producíronse demasiados ($1 ou máis) intentos fallidos recentes de renderizar esta miniatura. Vólvao intentar máis tarde.',
 
 # Special:Import
 'import' => 'Importar páxinas',
@@ -4239,6 +4272,4 @@ De feito, expande case calquera cousa entre dúas chaves.',
 'expand_templates_generate_rawhtml' => 'Mostrar o HTML en bruto',
 'expand_templates_preview' => 'Vista previa',
 
-# Unknown messages
-'uploadinvalidxml' => 'Non se puido analizar o XML do ficheiro cargado.',
 );
index 7de827d..8865d9b 100644 (file)
@@ -38,7 +38,6 @@ $namespaceGenderAliases = array();
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Haiguy joajuha',
-'tog-justify' => 'embojoja haipyvo',
 'tog-hideminor' => 'Eñomi ñemyatyrõ michĩva «ñemoambue pyahúpe»',
 'tog-extendwatchlist' => 'Eipyso tembiapo rapykueho rysýi opaite ñemoambue ikatúvape',
 'tog-usenewrc' => "Ñemoambue ojejapo ramóva (ndoikói opaite 'navegador'-pe)",
@@ -247,7 +246,6 @@ Reikotevẽvérõ marandu, emoñe'ẽ kuatiarogue ñepytyvõ rehegua. Oiméramo
 # Diffs
 'lineno' => 'Jehai $1:',
 'editundo' => 'embyai',
-'diff-multi' => '($1 ediciones intermedias no se muestran.)',
 
 # Search results
 'searchresults' => 'Ojejuhúva jeheka',
@@ -283,7 +281,6 @@ Reikotevẽvérõ marandu, emoñe'ẽ kuatiarogue ñepytyvõ rehegua. Oiméramo
 # Recent changes
 'nchanges' => '$1 ñemoambue',
 'recentchanges' => 'Oñemoambue pyahúva',
-'rcnote' => "Iguýpe oĩ umi {{PLURAL:$1|'''1'''|$1}} oñemoambue pyahúva ko ara{{PLURAL:$2|'''1'''|$2}}ndýpe, hekopyahúva $5, $4.",
 'rclistfrom' => 'Tojehechauka oñemoambue pyahúva $1 guive',
 'rcshowhideminor' => '$1 jehaijey michĩva',
 'rcshowhideliu' => '$1 puruhára ohejáva teraguapy',
index ea1c5b5..6c71d69 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Bleakgh
  * @author Jocke Pirat
  * @author Michawiki
  * @author Node ue
@@ -35,306 +36,363 @@ $specialPageAliases = array(
 
 $messages = array(
 'underline-always' => 'Sinteino',
-'underline-never'  => 'Niu',
+'underline-never' => 'Niu',
 
 # Dates
-'sunday'        => 'Sunnonsdags',
-'monday'        => 'Meninsdags',
-'tuesday'       => 'Tiwisdags',
-'wednesday'     => 'Midiwiko',
-'thursday'      => 'Þeiƕonsdags',
-'friday'        => 'Fraujonsdags',
-'saturday'      => '𐌸𐍅𐌰𐌷𐌻𐌹𐍃𐌳𐌰𐌲𐍃',
-'sun'           => 'Sun',
-'mon'           => 'Men',
-'tue'           => 'Tiw',
-'wed'           => 'Mid',
-'thu'           => 'Þei',
-'fri'           => 'Fra',
-'sat'           => 'Þwa',
-'january'       => '𐌰𐍆𐍄𐌿𐌼𐌰 𐌾𐌹𐌿𐌻𐌴𐌹𐍃',
-'february'      => '𐍆𐌰𐌽𐌹𐌼𐌴𐌽𐍉𐌸𐍃',
-'march'         => '𐌺𐌰𐌻𐌳𐌼𐌴𐌽𐍉𐌸𐍃',
-'april'         => '𐌲𐍂𐌰𐍃𐌼𐌴𐌽𐍉𐌸𐍃',
-'may_long'      => '𐌱𐌻𐍉𐌼𐌰𐌼𐌴𐌽𐍉𐌸𐍃',
-'june'          => '𐍅𐌰𐍂𐌼𐌼𐌴𐌽𐍉𐌸𐍃',
-'july'          => '𐌷𐌰𐍅𐌹𐌼𐌴𐌽𐍉𐌸𐍃',
-'august'        => '𐌰𐍃𐌰𐌽𐌼𐌴𐌽𐍉𐌸𐍃',
-'september'     => '𐌰𐌺𐍂𐌰𐌽𐌼𐌴𐌽𐍉𐌸𐍃',
-'october'       => '𐍅𐌴𐌹𐌽𐌼𐌴𐌽𐍉𐌸𐍃',
-'november'      => '𐍆𐍂𐌿𐌼𐌰 𐌾𐌹𐌿𐌻𐌴𐌹𐍃',
-'december'      => '𐌾𐌹𐌿𐌻𐌴𐌹𐍃',
-'january-gen'   => '𐌰𐍆𐍄𐌿𐌼𐌹𐌽𐍃 𐌾𐌹𐌿𐌻𐌴𐌹𐍃',
-'february-gen'  => '𐍆𐌰𐌽𐌹𐌼𐌴𐌽𐍉𐌸𐌹𐍃',
-'march-gen'     => 'Kaldmenoþis',
-'april-gen'     => '𐌲𐍂𐌰𐍃𐌼𐌴𐌽𐍉𐌸𐌹𐍃',
-'may-gen'       => '𐌱𐌻𐍉𐌼𐌰𐌼𐌴𐌽𐍉𐌸𐌹𐍃',
-'june-gen'      => 'Warmmenoþis',
-'july-gen'      => 'Hawimenoþis',
-'august-gen'    => '𐌰𐍃𐌰𐌽𐌼𐌴𐌽𐍉𐌸𐌹𐍃',
+'sunday' => 'Sunnonsdags',
+'monday' => 'Meninsdags',
+'tuesday' => 'Tiwisdags',
+'wednesday' => 'Midiwiko',
+'thursday' => 'Þeiƕonsdags',
+'friday' => 'Fraujonsdags',
+'saturday' => '𐌸𐍅𐌰𐌷𐌻𐌹𐍃𐌳𐌰𐌲𐍃',
+'sun' => '𐍃𐌿𐌽',
+'mon' => '𐌼𐌴𐌽',
+'tue' => '𐌰𐍂𐌴',
+'wed' => '𐍅𐍉𐌳',
+'thu' => '𐍀𐌰𐌹',
+'fri' => '𐍆𐍂𐌹',
+'sat' => '𐍃𐌰𐌼',
+'january' => '𐌰𐍆𐍄𐌿𐌼𐌰 𐌾𐌹𐌿𐌻𐌴𐌹𐍃',
+'february' => '𐍆𐌰𐌽𐌹𐌼𐌴𐌽𐍉𐌸𐍃',
+'march' => '𐌺𐌰𐌻𐌳𐌼𐌴𐌽𐍉𐌸𐍃',
+'april' => '𐌲𐍂𐌰𐍃𐌼𐌴𐌽𐍉𐌸𐍃',
+'may_long' => '𐌱𐌻𐍉𐌼𐌰𐌼𐌴𐌽𐍉𐌸𐍃',
+'june' => '𐍅𐌰𐍂𐌼𐌼𐌴𐌽𐍉𐌸𐍃',
+'july' => '𐌷𐌰𐍅𐌹𐌼𐌴𐌽𐍉𐌸𐍃',
+'august' => '𐌰𐍃𐌰𐌽𐌼𐌴𐌽𐍉𐌸𐍃',
+'september' => '𐌰𐌺𐍂𐌰𐌽𐌼𐌴𐌽𐍉𐌸𐍃',
+'october' => '𐍅𐌴𐌹𐌽𐌼𐌴𐌽𐍉𐌸𐍃',
+'november' => '𐍆𐍂𐌿𐌼𐌰 𐌾𐌹𐌿𐌻𐌴𐌹𐍃',
+'december' => '𐌾𐌹𐌿𐌻𐌴𐌹𐍃',
+'january-gen' => '𐌰𐍆𐍄𐌿𐌼𐌹𐌽𐍃 𐌾𐌹𐌿𐌻𐌴𐌹𐍃',
+'february-gen' => '𐍆𐌰𐌽𐌹𐌼𐌴𐌽𐍉𐌸𐌹𐍃',
+'march-gen' => '𐌺𐌰𐌻𐌳𐌼𐌴𐌽𐍉𐌸𐌹𐍃',
+'april-gen' => '𐌲𐍂𐌰𐍃𐌼𐌴𐌽𐍉𐌸𐌹𐍃',
+'may-gen' => '𐌱𐌻𐍉𐌼𐌰𐌼𐌴𐌽𐍉𐌸𐌹𐍃',
+'june-gen' => '𐍅𐌰𐍂𐌼𐌼𐌴𐌽𐍉𐌸𐌹𐍃',
+'july-gen' => '𐌷𐌰𐍅𐌹𐌼𐌴𐌽𐍉𐌸𐌹𐍃',
+'august-gen' => '𐌰𐍃𐌰𐌽𐌼𐌴𐌽𐍉𐌸𐌹𐍃',
 'september-gen' => '𐌰𐌺𐍂𐌰𐌽𐌼𐌴𐌽𐍉𐌸𐌹𐍃',
-'october-gen'   => '𐍅𐌴𐌹𐌽𐌼𐌴𐌽𐍉𐌸𐌹𐍃',
-'november-gen'  => '𐍆𐍂𐌿𐌼𐌹𐌽𐍃 𐌾𐌹𐌿𐌻𐌴𐌹𐍃',
-'december-gen'  => '𐌾𐌹𐌿𐌻𐌴𐌹𐍃',
-'jan'           => '𐌰𐍆𐍄',
-'feb'           => 'Fan',
-'mar'           => 'Kal',
-'apr'           => '𐌲𐍂𐌰',
-'may'           => '𐌱𐌻𐍉',
-'jun'           => 'War',
-'jul'           => 'Haw',
-'aug'           => '𐌰𐍃𐌰',
-'sep'           => '𐌰𐌺𐍂',
-'oct'           => '𐍅𐌴𐌹',
-'nov'           => '𐍆𐍂𐌿',
-'dec'           => '𐌾𐌹𐌿',
+'october-gen' => '𐍅𐌴𐌹𐌽𐌼𐌴𐌽𐍉𐌸𐌹𐍃',
+'november-gen' => '𐍆𐍂𐌿𐌼𐌹𐌽𐍃 𐌾𐌹𐌿𐌻𐌴𐌹𐍃',
+'december-gen' => '𐌾𐌹𐌿𐌻𐌴𐌹𐍃',
+'jan' => '𐌰𐍆𐍄',
+'feb' => '𐍆𐌰𐌽',
+'mar' => '𐌺𐌰𐌻',
+'apr' => '𐌲𐍂𐌰',
+'may' => '𐌱𐌻𐍉',
+'jun' => '𐍅𐌰𐍂',
+'jul' => '𐌷𐌰𐍅',
+'aug' => '𐌰𐍃𐌰',
+'sep' => '𐌰𐌺𐍂',
+'oct' => '𐍅𐌴𐌹',
+'nov' => '𐍆𐍂𐌿',
+'dec' => '𐌾𐌹𐌿',
 
 # Categories related messages
-'pagecategories'        => '{{PLURAL:$1|𐌺𐌿𐌽𐌾𐌰|𐌺𐌿𐌽𐌾𐍉𐍃}}',
-'category_header'       => '𐍃𐌴𐌹𐌳𐍉𐍃 𐌹𐌽𐌽 𐌺𐌿𐌽𐌾𐌰 "$1"',
-'subcategories'         => 'Dalaþkunjos',
+'pagecategories' => '{{PLURAL:$1|𐌷𐌰𐌽𐍃𐌰|𐌷𐌰𐌽𐍃𐍉𐍃}}',
+'category_header' => '𐍃𐌴𐌹𐌳𐍉𐍃 𐌹𐌽𐌽 𐌺𐌿𐌽𐌾𐌰 "$1"',
+'subcategories' => 'Dalaþkunjos',
 'category-media-header' => '𐌼𐌴𐌳𐌾𐌰 𐌹𐌽𐌽 𐌺𐌿𐌽𐌾𐌰 "$1"',
+'hidden-categories' => '{{PLURAL:$1|𐍆𐌿𐌻𐌲𐌹𐌽𐍃 𐌺𐌰𐍄𐌴𐌲𐍉𐍂𐌹|𐍆𐌿𐌻𐌲𐌹𐌽𐌰𐌹 𐌺𐌰𐍄𐌴𐌲𐍉𐍂𐌾𐍉𐍃}}',
 
-'about'         => '𐌿𐍆𐌰𐍂',
-'article'       => '𐍃𐌰𐌸𐍃𐍃𐌴𐌹𐌳𐍉',
-'newwindow'     => '(𐌰𐌽𐌳𐌷𐌿𐌻𐌾𐌹𐌸 𐌹𐌽𐌽 𐌽𐌹𐌿𐌾𐌰 𐌰𐌿𐌲𐌰𐌳𐌰𐌿𐍂𐍉)',
-'cancel'        => '𐌷𐌰𐌻𐍄𐍃',
+'about' => '𐌿𐍆𐌰𐍂',
+'article' => '𐍃𐌰𐌸𐍃𐍃𐌴𐌹𐌳𐍉',
+'newwindow' => '(𐌰𐌽𐌳𐌷𐌿𐌻𐌾𐌹𐌸 𐌹𐌽𐌽 𐌽𐌹𐌿𐌾𐌰 𐌰𐌿𐌲𐌰𐌳𐌰𐌿𐍂𐍉)',
+'cancel' => '𐌷𐌰𐌻𐍄𐍃',
 'moredotdotdot' => '𐌼𐌰𐌹𐍃...',
-'mypage'        => '𐌼𐌴𐌹𐌽 𐍃𐌴𐌹𐌳𐍉',
-'mytalk'        => '𐌼𐌴𐌹𐌽𐌰 𐌼𐌰𐌸𐌻𐌴𐌹',
-'navigation'    => '𐍃𐌴𐌹𐌳𐍉𐌲𐌰𐍅𐌹𐍃𐍃',
-'and'           => '𐌾𐌰𐌷',
+'mypage' => '𐌼𐌴𐌹𐌽 𐍃𐌴𐌹𐌳𐍉',
+'mytalk' => '𐌼𐌴𐌹𐌽𐌰 𐌼𐌰𐌸𐌻𐌴𐌹',
+'navigation' => '𐍅𐌹𐌲𐌰𐍄𐌰𐌿𐌷𐍄𐍃',
+'and' => '𐌾𐌰𐌷',
 
 # Cologne Blue skin
-'qbfind'         => '𐍃𐍉𐌺𐌴𐌹𐌸',
-'qbedit'         => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽',
-'qbmyoptions'    => '𐌼𐌴𐌹𐌽𐌰 𐍃𐌴𐌹𐌳𐍉𐍃',
-'qbspecialpages' => '𐌿𐍃𐍃𐌹𐌽𐌳𐍃𐌴𐌹𐌳𐍉𐍃',
+'qbfind' => '𐍃𐍉𐌺𐌴𐌹𐌸',
+'qbedit' => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽',
+'qbmyoptions' => '𐌼𐌴𐌹𐌽𐌰 𐍃𐌴𐌹𐌳𐍉𐍃',
 
 # Vector skin
 'vector-action-delete' => '𐍄𐌰𐌹𐍂𐌰𐌽',
-'vector-view-create'   => 'Skapjan',
-'vector-view-edit'     => 'Máidjan',
-'vector-view-view'     => 'Lisan',
-
-'errorpagetitle'    => '𐍆𐌰𐌹𐍂𐌹𐌽𐌰 𐌳𐍅𐌰𐌻𐌹𐍃',
-'returnto'          => '𐌲𐌰𐍅𐌰𐌽𐌳𐌾𐌰𐌽 𐌰𐍄 $1.',
-'tagline'           => 'Fram {{SITENAME}}',
-'help'              => '𐌷𐌹𐌻𐍀𐌰',
-'search'            => '𐍃𐍉𐌺𐌴𐌹𐌸',
-'searchbutton'      => '𐍃𐍉𐌺𐌴𐌹𐌸',
-'go'                => '𐌲𐌰𐌲𐌲𐌰',
-'searcharticle'     => '𐌰𐍆𐌲𐌰𐌲𐌲𐌰𐌽',
-'history'           => '𐌰𐌹𐍂𐌹𐍃 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃 𐌰𐌽𐌰 𐍃𐌴𐌹𐌳𐍉',
-'history_short'     => '𐌰𐌹𐍂𐌹𐍃 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃',
-'printableversion'  => '𐌳𐍂𐌹𐌿𐍃𐌰𐌽 𐍃𐌴𐌹𐌳𐍉',
-'permalink'         => '𐌰𐍅𐌴𐌹𐌽𐍃 𐍄𐌰𐌹𐌺𐌽𐌾𐌰𐌱𐌰𐌽𐌳𐌹',
-'view'              => 'Saíhvan',
-'edit'              => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽',
-'create'            => 'Skapjan',
-'editthispage'      => '𐌼𐌰𐌹𐌳𐌾𐌰 𐌸𐍉 𐍃𐌴𐌹𐌳𐍉',
-'create-this-page'  => 'Skapja þo seido',
-'delete'            => '𐍄𐌰𐌹𐍂𐌰𐌽',
-'deletethispage'    => '𐍄𐌰𐌹𐍂𐌰 𐌸𐍉 𐍃𐌴𐌹𐌳𐍉',
-'protect'           => '𐌱𐌰𐌹𐍂𐌲𐌰𐌽',
-'protectthispage'   => 'Baírga þo siedo',
-'unprotect'         => '𐌽𐌹𐌱𐌰𐌹𐍂𐌲𐌰',
+'vector-view-create' => '𐍃𐌺𐌰𐍀𐌾𐌰𐌽',
+'vector-view-edit' => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽',
+'vector-view-history' => '𐍃𐌰𐌹𐍈𐌰𐌽 𐍅𐌰𐌿𐍂𐌸𐌰𐌽𐌽𐌰',
+'vector-view-view' => '𐌰𐌽𐌰𐌺𐌿𐌽𐌽𐌰𐌹𐍃',
+'vector-view-viewsource' => '𐍃𐌰𐌹𐍈𐌹𐍃 𐌱𐍂𐌿𐌽𐌽𐌰𐌽',
+'actions' => '𐍅𐌰𐌿𐍂𐍃𐍄𐍅𐌴𐌹𐌽𐍃',
+'namespaces' => '𐍃𐌴𐌹𐌳𐍉𐍃𐍄𐌰𐌸𐌴𐌹𐍃',
+'variants' => '𐌼𐌹𐍃𐍃𐌰𐌻𐌴𐌹𐌽𐍃',
+
+'errorpagetitle' => '𐍆𐌰𐌹𐍂𐌹𐌽𐌰 𐌳𐍅𐌰𐌻𐌹𐍃',
+'returnto' => '𐌲𐌰𐍅𐌰𐌽𐌳𐌾𐌰𐌽 𐌰𐍄 $1.',
+'tagline' => '𐍆𐍂𐌰𐌼 {{SITENAME}}',
+'help' => '𐌷𐌹𐌻𐍀𐌰',
+'search' => '𐍃𐍉𐌺𐌾𐌰𐌽',
+'searchbutton' => '𐍃𐍉𐌺𐌾𐌰𐌽',
+'go' => '𐌲𐌰𐌲𐌲𐌰',
+'searcharticle' => '𐌰𐍆𐌲𐌰𐌲𐌲𐌰𐌽',
+'history' => '𐌰𐌹𐍂𐌹𐍃 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃 𐌰𐌽𐌰 𐍃𐌴𐌹𐌳𐍉',
+'history_short' => '𐌰𐌹𐍂𐌹𐍃 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃',
+'printableversion' => '𐍅𐍂𐌴𐌹𐍄𐌼𐌰𐌷𐍄𐌴𐌹𐌲 𐍃𐌴𐌹𐌳𐍉',
+'permalink' => '𐍃𐌹𐌽𐍄𐌴𐌹𐌽𐍉 𐍃𐍄𐌰𐌽𐌳𐌰𐌽𐍃 𐌻𐌴𐌹𐌽𐌺𐌰',
+'view' => 'Saíhvan',
+'edit' => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽',
+'create' => '𐍃𐌺𐌰𐍀𐌾𐌰𐌽',
+'editthispage' => '𐌼𐌰𐌹𐌳𐌾𐌰 𐌸𐍉 𐍃𐌴𐌹𐌳𐍉',
+'create-this-page' => 'Skapja þo seido',
+'delete' => '𐍄𐌰𐌹𐍂𐌰𐌽',
+'deletethispage' => '𐍄𐌰𐌹𐍂𐌰 𐌸𐍉 𐍃𐌴𐌹𐌳𐍉',
+'protect' => '𐌱𐌰𐌹𐍂𐌲𐌰𐌽',
+'protect_change' => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽',
+'protectthispage' => 'Baírga þo siedo',
+'unprotect' => '𐌽𐌹𐌱𐌰𐌹𐍂𐌲𐌰',
 'unprotectthispage' => 'Nibaírga þo siedo',
-'newpage'           => '𐌽𐌹𐌿𐌾𐌰 𐍃𐌴𐌹𐌳𐍉',
-'talkpage'          => '𐌼𐌰𐌸𐌻𐌴𐌹𐍃𐌴𐌹𐌳𐍉',
-'talkpagelinktext'  => '𐌼𐌰𐌸𐌻𐌴𐌹𐍃𐌴𐌹𐌳𐍉',
-'specialpage'       => '𐌿𐍃𐍃𐌹𐌽𐌳𐍃𐌴𐌹𐌳𐍉𐍃',
-'personaltools'     => '𐍅𐌰𐌹𐍂𐌻𐌴𐌹𐌺𐍃 𐌱𐍂𐌿𐌺𐍅𐌰𐌹𐌷𐍄𐍃',
-'talk'              => '𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰',
-'views'             => '𐍃𐌹𐌿𐌽𐌴𐌹𐍃',
-'toolbox'           => '𐍄𐌰𐌿𐌹 𐌰𐍂𐌺𐌰',
-'otherlanguages'    => '𐌰𐌽𐌸𐌰𐍂 𐍂𐌰𐌶𐌳𐍉𐍃',
-'redirectedfrom'    => '(Náuþjan framis $1)',
-'redirectpagesub'   => '𐍄𐌰𐌹𐌺𐌾𐌰𐍃𐌴𐌹𐌳𐍉',
-'jumpto'            => 'Gaggan at:',
-'jumptonavigation'  => '𐍃𐌴𐌹𐌳𐍉𐌲𐌰𐍅𐌹𐍃𐍃',
-'jumptosearch'      => 'sokeiþ',
-
-# 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) and the disambiguation template definition (see disambiguations).
-'aboutsite'            => '𐍆𐍂𐌰𐌼 {{SITENAME}}',
-'aboutpage'            => 'Project:𐌿𐍆𐌰𐍂',
-'copyrightpage'        => '{{ns:project}}:Manleikawitoþa',
-'currentevents'        => 'Niuja waíhts',
-'currentevents-url'    => 'Project:𐌽𐌹𐌿𐌾𐌰 𐍅𐌰𐌹𐌷𐍄𐍃',
-'disclaimers'          => '𐌰𐍆𐌰𐌹𐌺𐌰𐌽 𐍅𐌹𐍄𐍉𐌸',
-'disclaimerpage'       => 'Project:𐌰𐍆𐌰𐌹𐌺𐌰𐌽 𐍅𐌹𐍄𐍉𐌸',
-'edithelp'             => '𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌷𐌹𐌻𐍀𐌰',
-'edithelppage'         => 'Help:𐌼𐌰𐌹𐌳𐌾𐌰',
-'helppage'             => 'Hilpa:Háubidaseido',
-'mainpage'             => '𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐍃𐌴𐌹𐌳𐍉',
+'newpage' => '𐌽𐌹𐌿𐌾𐌰 𐍃𐌴𐌹𐌳𐍉',
+'talkpage' => '𐌼𐌰𐌸𐌻𐌴𐌹𐍃𐌴𐌹𐌳𐍉',
+'talkpagelinktext' => '𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰',
+'specialpage' => '𐌿𐍃𐍃𐌹𐌽𐌳𐍃𐌴𐌹𐌳𐍉𐍃',
+'personaltools' => '𐍅𐌰𐌹𐍂𐌻𐌴𐌹𐌺𐍃 𐌱𐍂𐌿𐌺𐍅𐌰𐌹𐌷𐍄𐍃',
+'talk' => '𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰',
+'views' => '𐌷𐌹𐍅𐌾𐍉𐍃',
+'toolbox' => '𐍄𐌰𐌿𐌹 𐌰𐍂𐌺𐌰',
+'otherlanguages' => '𐌰𐌽𐌸𐌰𐍂 𐍂𐌰𐌶𐌳𐍉𐍃',
+'redirectedfrom' => '(𐌽𐌰𐌿𐌸𐌾𐌰𐌽 𐍆𐍂𐌰𐌼𐌹𐍃 $1)',
+'redirectpagesub' => '𐍄𐌰𐌹𐌺𐌾𐌰𐍃𐌴𐌹𐌳𐍉',
+'lastmodifiedat' => '𐌸𐌰𐍄𐌰 𐍃𐌴𐌹𐌳𐍉 𐍃𐌹𐌽𐌳 𐌼𐌰𐌽𐌰𐌲𐌹𐍃𐍄𐍃 𐌽𐌹𐌿𐌾𐌰 𐌼𐌰𐌹𐌳𐌾𐌹𐌸𐍃 ($2) ($1)',
+'jumpto' => '𐌲𐌰𐌲𐌲𐌰𐌽 𐌰𐍄:',
+'jumptonavigation' => '𐍃𐌴𐌹𐌳𐍉𐌲𐌰𐍅𐌹𐍃𐍃',
+'jumptosearch' => '𐍃𐍉𐌺𐌴𐌹𐌸',
+
+# 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' => '𐍆𐍂𐌰𐌼 {{SITENAME}}',
+'aboutpage' => 'Project:𐌿𐍆𐌰𐍂',
+'copyrightpage' => '{{ns:project}}:𐌼𐌰𐌽𐌻𐌴𐌹𐌺𐌰𐍅𐌹𐍄𐍉𐌸𐌰',
+'currentevents' => '𐌽𐌹𐌿𐌾𐌰 𐍅𐌰𐌹𐌷𐍄𐍃',
+'currentevents-url' => 'Project:𐌽𐌹𐌿𐌾𐌰 𐍅𐌰𐌹𐌷𐍄𐍃',
+'disclaimers' => '𐍅𐌰𐌳𐌾𐍉𐌱𐌹𐌻𐌰𐌲𐌴𐌹𐌽𐍃',
+'disclaimerpage' => 'Project:𐍅𐌰𐌳𐌾𐌹𐍃 𐌱𐌹𐌻𐌰𐌲𐌴𐌹𐌽𐍃',
+'edithelp' => '𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌷𐌹𐌻𐍀𐌰',
+'helppage' => 'Help:𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐍃𐌴𐌹𐌳𐍉',
+'mainpage' => '𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐍃𐌴𐌹𐌳𐍉',
 'mainpage-description' => '𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐍃𐌴𐌹𐌳𐍉',
-'portal'               => '𐌱𐌰𐌿𐍂𐌲𐍃 𐌲𐌰𐍅𐌹',
-'portal-url'           => 'Project:𐌱𐌰𐌿𐍂𐌲𐍃 𐌲𐌰𐍅𐌹',
-'privacy'              => '𐌰𐌽𐌰𐍃𐌹𐌻𐌰 𐍅𐌹𐍄𐍉𐌸',
-'privacypage'          => 'Project:𐌰𐌽𐌰𐍃𐌹𐌻𐌰 𐍅𐌹𐍄𐍉𐌸',
-
-'retrievedfrom'       => 'Niman fram "$1"',
-'youhavenewmessages'  => '𐌸𐌿 𐌷𐌰𐌱𐌹𐍃 $1 ($2).',
-'newmessageslink'     => '𐌽𐌹𐌿𐌾𐍉 𐌼𐌰𐌸𐌻𐌴𐌹',
-'newmessagesdifflink' => '𐍃𐍀𐌴𐌳𐌿𐌼𐌹𐍃𐍄𐍃 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃',
-'editsection'         => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽',
-'editold'             => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽',
-'editlink'            => 'máidjan',
-'editsectionhint'     => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽 𐌰𐍆 𐍆𐌴𐍂𐌰: $1',
-'toc'                 => '𐌹𐌽𐌽𐌰𐌽𐌰',
-'showtoc'             => '𐌰𐌿𐌲𐌾𐌰',
-'hidetoc'             => '𐍆𐌹𐌻𐌷𐌰𐌽',
-'site-rss-feed'       => '$1 RSS Miþnatifodjan',
-'site-atom-feed'      => '$1 Atom Miþnatifodjan',
+'portal' => '𐌱𐌰𐌿𐍂𐌲𐌹𐍃 𐌲𐌰𐍅𐌹',
+'portal-url' => 'Project:𐌱𐌰𐌿𐍂𐌲𐌹𐍃 𐌲𐌰𐍅𐌹',
+'privacy' => '𐍃𐌿𐌽𐌳𐍂𐌰𐍅𐌿𐍃 𐌱𐌹𐌻𐌰𐌲𐌴𐌹𐌽𐍃',
+'privacypage' => 'Project:𐍃𐌿𐌽𐌳𐍂𐌰𐍅𐌴𐌹𐌽𐍃 𐌱𐌹𐌻𐌰𐌲𐌴𐌹𐌽𐍃',
+
+'retrievedfrom' => '𐌲𐌰𐌽𐌰𐌼 𐍆𐍂𐌰𐌼 "$1"',
+'youhavenewmessages' => '𐌸𐌿 𐌷𐌰𐌱𐌹𐍃 $1 ($2).',
+'editsection' => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽',
+'editold' => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽',
+'editlink' => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽',
+'viewsourcelink' => '𐍃𐌰𐌹𐍈𐌹𐍃 𐌱𐍂𐌿𐌽𐌽𐌰𐌽',
+'editsectionhint' => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽 𐌳𐌰𐌹𐌻: $1',
+'toc' => '𐌹𐌽𐌽𐌰𐌽𐌰',
+'showtoc' => '𐌰𐌿𐌲𐌾𐌰',
+'hidetoc' => '𐍆𐌹𐌻𐌷𐌰𐌽',
+'site-rss-feed' => '$1 RSS Miþnatifodjan',
+'site-atom-feed' => '$1 𐌰𐍄𐍉𐌼 𐌼𐌹𐌸𐌽𐌰𐍄𐌹𐍆𐍉𐌳𐌾𐌰𐌽',
+'page-atom-feed' => '"$1" 𐌰𐍄𐍉𐌼 𐍂𐌹𐌽𐌽𐍉',
+'red-link-title' => '$1 (𐍃𐌴𐌹𐌳𐍉 𐍃𐌹𐌽𐌳 𐌽𐌹𐍃𐍄)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main'     => '𐍃𐌴𐌹𐌳𐍉',
-'nstab-user'     => '𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃𐍃𐌴𐌹𐌳𐍉',
-'nstab-special'  => '𐌿𐍃𐍃𐌹𐌽𐌳𐍃𐌴𐌹𐌳𐍉',
-'nstab-project'  => '𐍂𐌴𐌹𐌺𐌹𐍃𐌴𐌹𐌳𐍉',
-'nstab-image'    => '𐌼𐌰𐌽𐌻𐌴𐌹𐌺𐌰',
-'nstab-template' => 'ð\90\8c¼ð\90\8c°ð\90\8d\82ð\90\8cºð\90\8c°',
-'nstab-help'     => '𐌷𐌹𐌻𐍀𐌰',
-'nstab-category' => 'ð\90\8cºð\90\8c¿ð\90\8c½ð\90\8c¾𐌰',
+'nstab-main' => '𐍃𐌴𐌹𐌳𐍉',
+'nstab-user' => '𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃𐍃𐌴𐌹𐌳𐍉',
+'nstab-special' => '𐌿𐍃𐍃𐌹𐌽𐌳𐍃𐌴𐌹𐌳𐍉',
+'nstab-project' => '𐍂𐌴𐌹𐌺𐌹𐍃𐌴𐌹𐌳𐍉',
+'nstab-image' => '𐍆𐌴𐌹𐌻𐌰',
+'nstab-template' => 'ð\90\8d\86ð\90\8c°ð\90\8c¿ð\90\8d\82ð\90\8c°ð\90\8c¼ð\90\8c´ð\90\8c»ð\90\8c´ð\90\8c¹ð\90\8c½ð\90\8d\83',
+'nstab-help' => '𐌷𐌹𐌻𐍀𐌰',
+'nstab-category' => 'ð\90\8c·ð\90\8c°ð\90\8c½ð\90\8d\83𐌰',
 
 # General errors
-'viewsource' => '𐍃𐌰𐌹𐍈𐌰 𐌹𐌽𐌽𐌰𐌽𐌰',
+'missing-article' => '𐍃𐌰 𐌳𐌰𐍄𐌰𐌱𐌿𐍃 𐌽𐌹 𐌲𐌰𐌽𐌰𐌼 𐌸𐌰𐌽𐌰 𐌱𐍉𐌺𐌰𐍅𐌰𐌿𐍂𐌳𐌰𐌽 𐌴𐌹 𐌹𐍄𐌰 𐍃𐌺𐌰𐌻 𐌱𐌹𐌲𐌹𐍄𐌰𐌽: "$1" $2
+
+(The data base did not find the text of a page that it should have found, named "$1" $2.
+
+This is usually caused by following an outdated diff or history link to a page that has been deleted.
+
+If this is not the case, you may have found a bug in the software.
+Please report this to an [[Special:ListUsers/sysop|administrator]], making note of the URL.)',
+'viewsource' => '𐍃𐌰𐌹𐍈𐌹𐍃 𐌱𐍂𐌿𐌽𐌽𐌰𐌽',
 
 # Login and logout pages
-'yourname'                => '𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃𐌽𐌰𐌼𐍉:',
-'yourpassword'            => '𐌰𐌽𐌰𐌻𐌰𐌿𐌲𐌽𐍃 𐍅𐌰𐌿𐍂𐌳𐌰:',
-'login'                   => 'Atgaggan',
+'yourname' => '𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃𐌽𐌰𐌼𐍉:',
+'yourpassword' => '𐌰𐌽𐌰𐌻𐌰𐌿𐌲𐌽𐍃 𐍅𐌰𐌿𐍂𐌳𐌰:',
+'login' => 'Atgaggan',
 'nav-login-createaccount' => '𐌰𐍄𐌲𐌰𐌲𐌲𐌰𐌽 / 𐌲𐌰𐌻𐌰𐌽𐌲𐌾𐌰𐌽 𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃',
-'userlogin'               => 'Atgaggan / gaskapjan niutandis',
-'logout'                  => '𐌻𐌴𐌹𐌸𐌰𐌽',
-'userlogout'              => '𐌻𐌴𐌹𐌸𐌰𐌽',
-'nologinlink'             => 'Gaskapjan þein niutandis',
-'createaccount'           => '𐌲𐌰𐌻𐌰𐌲𐌾𐌰𐌽 𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃',
-'gotaccount'              => "Habiþ þu niutandis? '''$1'''",
-'gotaccountlink'          => 'Atgaggan',
-'loginlanguagelabel'      => 'Razda: $1',
+'userlogin' => 'Atgaggan / gaskapjan niutandis',
+'logout' => '𐌻𐌴𐌹𐌸𐌰𐌽',
+'userlogout' => '𐌻𐌴𐌹𐌸𐌰𐌽',
+'nologinlink' => 'Gaskapjan þein niutandis',
+'createaccount' => '𐌲𐌰𐌻𐌰𐌲𐌾𐌰𐌽 𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃',
+'gotaccount' => "Habiþ þu niutandis? '''$1'''",
+'gotaccountlink' => 'Atgaggan',
+'loginlanguagelabel' => 'Razda: $1',
 
 # Edit page toolbar
-'bold_sample'     => '𐌰𐌱𐍂𐍃 𐌱𐍉𐌺𐌰',
-'bold_tip'        => '𐌰𐌱𐍂 𐍅𐌰𐌿𐍂𐌳𐌰',
-'italic_sample'   => 'Wráiqs waúrda',
-'italic_tip'      => 'Driuso boka',
-'link_sample'     => 'Táikjanbandi namo',
-'link_tip'        => 'táikjanbandi innana',
-'extlink_sample'  => 'http://www.example.com Táikjandandi namo',
-'extlink_tip'     => 'Uta táikjabandi (maúdjan http://)',
-'headline_sample' => 'Háubidawaúrda',
-'headline_tip'    => 'Háuhs háubidaboka 2',
-'media_tip'       => 'Táikjabandjis feilanis',
-'hr_tip'          => 'Ráihtsbáurd (brukjan miþ niufarussus)',
+'bold_sample' => '𐌰𐌱𐍂𐍃 𐌱𐍉𐌺𐌰',
+'bold_tip' => '𐌰𐌱𐍂 𐍅𐌰𐌿𐍂𐌳𐌰',
+'italic_sample' => '𐍅𐍂𐌰𐌹𐌵𐍃 𐍅𐌰𐌿𐍂𐌳𐌰',
+'italic_tip' => '𐌳𐍂𐌹𐌿𐍃𐍉 𐌱𐍉𐌺𐌰',
+'link_sample' => '𐍄𐌰𐌹𐌺𐌾𐌰𐌽𐌱𐌰𐌽𐌳𐌹 𐌽𐌰𐌼𐍉',
+'link_tip' => '𐍄𐌰𐌹𐌺𐌾𐌰𐌽𐌱𐌰𐌽𐌳𐌹 𐌹𐌽𐌽𐌰𐌽𐌰',
+'extlink_sample' => 'http://www.example.com 𐍄𐌰𐌹𐌺𐌾𐌰𐌽𐌳𐌰𐌽𐌳𐌹 𐌽𐌰𐌼𐍉',
+'extlink_tip' => 'Uta táikjabandi (maúdjan http://)',
+'headline_sample' => '𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐍅𐌰𐌿𐍂𐌳𐌰',
+'headline_tip' => '𐌷𐌰𐌿𐌷𐍃 𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐌱𐍉𐌺𐌰 •𐌱•',
+'nowiki_sample' => '𐍃𐌰𐍄𐌾𐌴𐌹 𐌿𐌽𐍃𐌽𐌴𐌹𐌸𐌾𐌰𐌽𐌳𐍃 𐍄𐌴𐌺𐍃𐍄 𐌱𐍉𐌺𐌰𐍅𐌰𐌿𐍂𐌳𐌰𐌼 𐌷𐌹𐍄',
+'nowiki_tip' => '𐌿𐌽𐍅𐌹𐍄𐌾𐌹𐍃 𐍅𐌹𐌺𐌹𐍃𐌽𐌴𐌹𐌸𐌾𐌰𐌽𐌳𐍃',
+'image_tip' => '𐌹𐌽𐌽𐌱𐍉𐌳𐌰𐌽𐍃 𐍆𐌴𐌹𐌻𐌰',
+'media_tip' => '𐍄𐌰𐌹𐌺𐌾𐌰𐌱𐌰𐌽𐌳𐌾𐌹𐍃 𐍆𐌴𐌹𐌻𐌰𐌽𐌹𐍃',
+'sig_tip' => '𐌿𐌽𐌳𐌰𐍂𐌼𐌴𐌻 𐌸𐌴𐌹𐌽𐌰 𐌼𐌹𐌸 𐍃𐍄𐌿𐌽𐌳𐌰𐌼𐌴𐌻𐌰',
+'hr_tip' => '𐍂𐌰𐌹𐌷𐍄𐍃𐌱𐌰𐌿𐍂𐌳 (𐌱𐍂𐌿𐌺𐌾𐌰𐌽 𐌼𐌹𐌸 𐌽𐌹𐌿𐍆𐌰𐍂𐌿𐍃𐍃𐌿𐍃)',
 
 # Edit pages
-'summary'                => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐍃𐍀𐌹𐌻𐌻𐍉𐌽:',
-'subject'                => '𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐌱𐍉𐌺𐌰:',
-'minoredit'              => '𐍃𐌰 𐌹𐍃𐍄 𐌻𐌴𐌹𐍄𐌹𐌻𐌰 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃',
-'watchthis'              => '𐍅𐌰𐍂𐌰𐌽 𐍃𐌴𐌹𐌳𐍉',
-'savearticle'            => '𐌼𐌴𐌻𐌾𐌰 𐍃𐌴𐌹𐌳𐍉',
-'preview'                => '𐍆𐌰𐌿𐍂𐍃𐌰𐌹𐍈𐌰 𐍃𐌴𐌹𐌳𐍉',
-'showpreview'            => '𐍅𐌹𐍄𐌰𐌽 𐍆𐌰𐌿𐍂𐍃𐌰𐌹𐍈𐌰',
-'showdiff'               => '𐍅𐌹𐍄𐌰𐌽 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃',
-'newarticle'             => '(Niu)',
-'updated'                => '(Nuwisan)',
-'previewnote'            => "'''𐍃𐌰𐌷 𐌹𐍃𐍄 𐍆𐌰𐌿𐍂𐍃𐌰𐌹𐍈𐌰. 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃 𐌲𐌰𐌼𐌴𐌻𐌾𐌹𐌸 𐌽𐌹 𐌰𐍆 𐌸𐌹𐌶𐍉𐍃 𐍃𐌴𐌹𐌳𐍉𐍃!'''",
-'editing'                => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽 𐌰𐍆 $1',
-'editingsection'         => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽 𐌰𐍆 $1 (𐍆𐌴𐍂𐌰)',
-'editingcomment'         => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽 𐌰𐍆 $1 (𐍂𐍉𐌳𐌾𐌰𐍆𐌴𐍂𐌰)',
-'yourdiff'               => 'Missalieks',
-'template-protected'     => '(gabaírgan)',
+'summary' => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽𐍃𐍀𐌹𐌻𐌻𐍉𐌽:',
+'subject' => '𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐌱𐍉𐌺𐌰:',
+'minoredit' => '𐍃𐌰 𐌹𐍃𐍄 𐌻𐌴𐌹𐍄𐌹𐌻𐌰 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃',
+'watchthis' => '𐍅𐌰𐍂𐌰𐌽 𐍃𐌴𐌹𐌳𐍉',
+'savearticle' => '𐌼𐌴𐌻𐌾𐌰 𐍃𐌴𐌹𐌳𐍉',
+'preview' => '𐍆𐌰𐌿𐍂𐍃𐌰𐌹𐍈𐌰 𐍃𐌴𐌹𐌳𐍉',
+'showpreview' => '𐍅𐌹𐍄𐌰𐌽 𐍆𐌰𐌿𐍂𐍃𐌰𐌹𐍈𐌰',
+'showdiff' => '𐍅𐌹𐍄𐌰𐌽 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃',
+'newarticle' => '(Niu)',
+'updated' => '(Nuwisan)',
+'previewnote' => "'''𐍃𐌰𐌷 𐌹𐍃𐍄 𐍆𐌰𐌿𐍂𐍃𐌰𐌹𐍈𐌰. 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃 𐌲𐌰𐌼𐌴𐌻𐌾𐌹𐌸 𐌽𐌹 𐌰𐍆 𐌸𐌹𐌶𐍉𐍃 𐍃𐌴𐌹𐌳𐍉𐍃!'''",
+'editing' => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽 𐌰𐍆 $1',
+'editingsection' => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽 𐌰𐍆 $1 (𐍆𐌴𐍂𐌰)',
+'editingcomment' => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽 𐌰𐍆 $1 (𐍂𐍉𐌳𐌾𐌰𐍆𐌴𐍂𐌰)',
+'yourdiff' => 'Missalieks',
+'template-protected' => '(𐌲𐌰𐌱𐌰𐌹𐍂𐌲𐌾𐌰𐌽)',
 'template-semiprotected' => '(halb-gabaírgjan)',
 
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''𐌷𐍅𐍉𐍄𐌾𐌰𐌽𐌳𐍃:''' 𐍆𐌰𐌿𐍂𐌰𐌼𐌴𐌻𐌴𐌹𐌽𐍃 𐍃𐌹𐌽𐌳 𐌿𐍆𐌰𐍂𐌼𐌹𐌺𐌹𐌻𐍃. 𐍃𐌿𐌼𐍃 𐍆𐌰𐌿𐍂𐌴𐌼𐌴𐌻𐌴𐌹𐌽𐍉𐍃 𐌽𐌹 𐌼𐌰𐌲 𐍅𐌹𐍃𐌰𐌽 𐌸𐌰𐍂",
+'post-expand-template-inclusion-category' => '𐍃𐌴𐌹𐌳𐍉𐌽𐍃 𐌸𐌰𐍂 𐍆𐌰𐌿𐍂𐌰𐌼𐌴𐌻𐌴𐌹𐌽𐍃 𐍃𐌹𐌽𐌳 𐌿𐍆𐌰𐍂𐌼𐌹𐌺𐌹𐌻𐍃',
+
 # History pages
-'currentrev'          => '𐌽𐌿 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃',
-'revisionasof'        => '𐌲𐌰𐌼𐌴𐌻𐌹𐌳𐍉 𐌿𐍃 $1',
-'revision-info'       => 'Máideins fram $1 bi $2',
-'previousrevision'    => '←𐌰𐌹𐍂𐌹𐍃 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃',
-'nextrevision'        => 'Iftuma máideins→',
+'currentrev' => '𐌽𐌿 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃',
+'currentrev-asof' => '𐌰𐍆𐍄𐌿𐌼𐍃𐍄𐍃 𐌲𐌰𐌼𐌰𐌹𐌳𐌾𐌴𐌹𐌽𐍃 𐍆𐍂𐌰𐌼 $1',
+'revisionasof' => '𐌲𐌰𐌼𐌰𐌳𐌾𐌴𐌹 𐍆𐍂𐌰𐌼 $1',
+'revision-info' => 'Máideins fram $1 bi $2',
+'previousrevision' => '←𐌰𐌹𐍂𐌹𐍃 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃',
+'nextrevision' => 'Iftuma máideins→',
 'currentrevisionlink' => '𐌽𐌿𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃',
-'cur'                 => '𐌽𐌿',
-'next'                => '𐌹𐍆𐍄𐌿𐌼𐌰',
-'last'                => '𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐍃',
-'page_first'          => 'frumists',
-'page_last'           => '𐍃𐍀𐌴𐌳𐌿𐌼𐌹𐍃𐍄𐍃',
-'histfirst'           => '𐍆𐌰𐌿𐍂𐌸𐌹𐍃',
-'histlast'            => '𐍃𐍀𐌴𐌳𐌿𐌼𐌹𐍃𐍄𐍃',
+'cur' => '𐌽𐌿',
+'next' => '𐌹𐍆𐍄𐌿𐌼𐌰',
+'last' => '𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐍃',
+'page_first' => 'frumists',
+'page_last' => '𐍃𐍀𐌴𐌳𐌿𐌼𐌹𐍃𐍄𐍃',
+'histfirst' => '𐍆𐌰𐌿𐍂𐌸𐌹𐍃',
+'histlast' => '𐍃𐍀𐌴𐌳𐌿𐌼𐌹𐍃𐍄𐍃',
 
 # Revision feed
 'history-feed-item-nocomment' => '$1 at $2',
 
+# Revision deletion
+'revdel-restore' => '𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌹𐍃 𐌰𐌽𐌰𐍃𐌹𐌿𐌽𐌼𐌰𐌷𐍄𐌴𐌹𐌲𐍃',
+
+# Merge log
+'revertmerge' => '𐌿𐌽𐌲𐌰𐍄𐌹𐌻𐍉𐍃',
+
 # Diffs
 'history-title' => '𐌰𐍂𐌹𐍃𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃 𐌰𐍆 "$1"',
-'lineno'        => '𐌱𐍉𐌺𐌰𐍂𐌹𐌲𐌹𐌻𐍉 $1:',
-'editundo'      => '𐌽𐌹𐌿𐍃𐌺𐌰𐍀𐌾𐌰𐌽',
+'lineno' => '𐌱𐍉𐌺𐌰𐍂𐌹𐌲𐌹𐌻𐍉 $1:',
+'editundo' => '𐌽𐌹𐌿𐍃𐌺𐌰𐍀𐌾𐌰𐌽',
 
 # Search results
-'prevn'              => 'aftuma {{PLURAL:$1|$1}}',
-'nextn'              => 'iftuma {{PLURAL:$1|$1}}',
-'viewprevnext'       => '𐍃𐌹𐌿𐌽𐌴𐌹𐍃 ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url'     => 'Hilpa:Háubidaseido',
-'powersearch'        => 'Sokeiþ',
+'searchresults' => '𐍃𐍉𐌺𐌽𐌹𐍃 𐍄𐌰𐌿𐌾𐍉𐍃',
+'searchresults-title' => '𐍃𐍉𐌺𐌽𐌹𐍃 𐍄𐌰𐌿𐌾𐍉𐍃 𐍆𐌰𐌿𐍂 "$1"',
+'prevn' => '𐌰𐍆𐍄𐌿𐌼𐌰 {{PLURAL:$1|$1}}',
+'nextn' => '𐌹𐍆𐍄𐌿𐌼𐌰 {{PLURAL:$1|$1}}',
+'prevn-title' => '𐍆𐌰𐌹𐍂𐌽𐌰 $1 {{PLURAL:$1|𐍄𐌰𐌿𐌹|𐍄𐌰𐌿𐌾𐍉𐍃}}',
+'nextn-title' => '𐌰𐍆𐍄𐌿𐌼𐌰 $1 {{PLURAL:$1|𐍄𐌰𐌿𐌹|𐍄𐌰𐌿𐌾𐍉𐍃}}',
+'shown-title' => '𐌰𐌿𐌾𐌰𐌽𐌳 $1 {{PLURAL:$1|𐍄𐌰𐌿𐌹|𐍄𐌰𐌿𐌾𐍉𐍃}} 𐌸𐌰𐌹𐍂𐌷 𐍃𐌴𐌹𐌳𐍉',
+'viewprevnext' => '𐍃𐌹𐌿𐌽𐌴𐌹𐍃 ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-new' => "'''𐍃𐌺𐌰𐍀𐌾𐌹𐍃 𐌸𐍉 𐍃𐌴𐌹𐌳𐍉𐌽 \"[[:\$1]]\" 𐌸𐌹𐌶𐍉𐍃 𐍅𐌹𐌺𐌾𐍉𐍃!'''",
+'searchprofile-articles' => '𐌲𐌰𐌷𐌰𐌱𐌾𐍉𐍃 𐍃𐌴𐌹𐌳𐍉𐌽𐍃',
+'searchprofile-project' => '𐌷𐌹𐌻𐍀𐍉𐍃 𐌾𐌰𐌷 𐍀𐍂𐍉𐍃𐌾𐌴𐌺𐍄𐌹𐍃 𐍃𐌴𐌹𐌳𐍉𐌽𐍃',
+'searchprofile-images' => '𐌼𐌰𐌽𐌰𐌲𐍃𐌼𐌴𐌳𐌹𐌰',
+'searchprofile-everything' => '𐌰𐌻𐌻',
+'searchprofile-advanced' => '𐍆𐌰𐌹𐍂𐍂𐌰𐍆𐍂𐌰𐌼𐌰',
+'searchprofile-articles-tooltip' => '𐍃𐍉𐌺 𐌹𐌽𐌽𐌰 $1',
+'searchprofile-project-tooltip' => '𐍃𐍉𐌺𐌾𐌹𐍃 𐌹𐌽𐌽𐌰 $1',
+'searchprofile-images-tooltip' => '𐍃𐍉𐌺𐌾𐌹𐍃 𐍆𐌴𐌹𐌻𐌰𐌽𐍃',
+'searchprofile-everything-tooltip' => '𐍃𐍉𐌺𐌾𐌹𐍃 𐌰𐌻𐌻 𐌲𐌰𐌷𐌰𐌱𐌾𐍉𐍃 (𐌸𐌹𐌶𐌴𐌴𐌹 𐌹𐍃𐍄 𐍃𐌴𐌹𐌳𐍉𐌽𐍃 𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌹𐍃)',
+'searchprofile-advanced-tooltip' => '𐍃𐌺𐍉𐌾𐌹𐍃 𐌹𐌽𐌽𐌰 𐍃𐌹𐌻𐌱𐌰𐍃𐌺𐌰𐍀𐌹𐌸𐍃 𐌽𐌰𐌼𐌰𐌽𐍃𐍄𐌰𐌸',
+'search-result-size' => '$1 ({{PLURAL:$2|•𐌰• 𐍅𐌰𐌿𐍂𐌳|•$2• 𐍅𐌰𐌿𐍂𐌳𐌰}})',
+'search-redirect' => '(𐌰𐍆𐍄𐍂𐌰𐍅𐌴𐌹𐍄𐍃 𐍆𐍂𐌰𐌼 𐌸𐌰𐌼𐌼𐌰 $1)',
+'search-section' => '(𐍆𐌴𐍂𐌰 $1)',
+'search-suggest' => '𐍄𐌰𐌹𐌺𐌽𐌹𐌳𐌰 𐌸𐌿: $1',
+'searchall' => '𐌰𐌻𐌻𐍃',
+'showingresultsheader' => "{{PLURAL:$5|𐍄𐌰𐌿𐌹 '''$1''' 𐌸𐌹𐍃 '''$3'''|𐍄𐌰𐌿𐌾𐍉𐍃 '''$1 - $2''' 𐌸𐌹𐍃 '''$3'''}} 𐌱𐌹 𐌸𐌰𐌼𐌼𐌰 '''$4'''",
+'search-nonefound' => '𐌽𐌹 𐌰𐌹𐌽𐌷𐌿𐌽 𐌲𐌰𐌲𐌹𐌱𐌾𐍉 𐍆𐌿𐌻𐌻𐌾𐌹𐌸 𐍃𐍉𐌺𐌴𐌹𐌽',
 'powersearch-legend' => '𐍃𐍉𐌺𐌴𐌹𐌸',
-'powersearch-redir'  => '𐍄𐌰𐌻𐌰 𐌰𐍆 𐍄𐌰𐌹𐌺𐌾𐌰𐌽𐍃𐌴𐌹𐌳𐍉𐍃',
+'powersearch-redir' => '𐍄𐌰𐌻𐌰 𐌰𐍆 𐍄𐌰𐌹𐌺𐌾𐌰𐌽𐍃𐌴𐌹𐌳𐍉𐍃',
 
 # Preferences page
-'preferences'       => '𐌼𐌴𐌹𐌽𐍉𐍃 𐌱𐍂𐌿𐌺𐌾𐌰𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌴𐌹𐍃',
-'mypreferences'     => '𐌼𐌴𐌹𐌽𐍉𐍃 𐌱𐍂𐌿𐌺𐌾𐌰',
-'prefs-skin'        => 'Seidofill',
-'skin-preview'      => 'Faúrsaiƕa',
-'saveprefs'         => 'Melja',
+'preferences' => '𐌼𐌴𐌹𐌽𐍉𐍃 𐌱𐍂𐌿𐌺𐌾𐌰𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌴𐌹𐍃',
+'mypreferences' => '𐌼𐌴𐌹𐌽𐍉𐍃 𐌱𐍂𐌿𐌺𐌾𐌰',
+'prefs-skin' => 'Seidofill',
+'skin-preview' => 'Faúrsaiƕa',
+'saveprefs' => 'Melja',
 'searchresultshead' => 'Sokeiþ',
 
 'grouppage-sysop' => '{{ns:project}}:𐍃𐌴𐌹𐌳𐍉𐍆𐌰𐌸𐍃',
 
 # User rights log
-'rightslog'  => 'Niutandis stutjanlog',
-'rightsnone' => '(ni áinshun)',
+'rightslog' => 'Niutandis stutjanlog',
 
 # Recent changes
-'nchanges'        => '$1 {{PLURAL:$1|máidein|máideins}}',
-'recentchanges'   => '𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐍉𐍃 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌴𐌹𐍃',
+'nchanges' => '$1 {{PLURAL:$1|máidein|máideins}}',
+'recentchanges' => '𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐍉𐍃 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌴𐌹𐍃',
 'rcshowhideminor' => '$1 lietila máideins',
-'rcshowhidebots'  => '$1 bota',
-'rcshowhideliu'   => '$1 niutandis',
+'rcshowhidebots' => '$1 bota',
+'rcshowhideliu' => '$1 niutandis',
 'rcshowhideanons' => '$1 gasteis',
-'rcshowhidemine'  => '$1 mein máideins',
-'diff'            => '𐌻𐌴𐌹𐌺𐍃',
-'hist'            => '𐌰𐌹𐍂𐌹𐍃',
-'hide'            => 'Filhan',
-'show'            => 'Huljan',
+'rcshowhidemine' => '$1 mein máideins',
+'diff' => '𐌻𐌴𐌹𐌺𐍃',
+'hist' => '𐍆𐍂𐌼𐌵',
+'hide' => '𐍆𐌹𐌻𐌷𐌰𐌽',
+'show' => '𐌷𐌿𐌻𐌾𐌰𐌽',
 'minoreditletter' => 'l',
-'newpageletter'   => 'N',
-'boteditletter'   => 'b',
+'newpageletter' => 'N',
+'boteditletter' => 'b',
 
 # Recent changes linked
-'recentchangeslinked'         => '𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌻𐌹𐌴𐌺𐍃',
-'recentchangeslinked-feed'    => 'Máideinlieks',
+'recentchangeslinked' => '𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌻𐌹𐌴𐌺𐍃',
+'recentchangeslinked-feed' => 'Máideinlieks',
 'recentchangeslinked-toolbox' => '𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌻𐌹𐌴𐌺𐍃',
+'recentchangeslinked-summary' => "𐍃𐍉 𐌹𐍃𐍄 𐌻𐌴𐌹𐍃𐍄𐌰 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌴 𐌰𐍆𐍄𐌿𐌼𐌹𐍃𐍄𐍃 𐍃𐌺𐍉𐍀 𐌰𐌽𐌰 𐍃𐌴𐌹𐌳𐍉𐌽𐍃 𐌻𐌴𐌹𐌽𐌺𐍉𐌽𐌳 𐌿𐍃 𐌿𐍃𐍃𐌹𐌽𐌳𐌰𐌹 𐍃𐌴𐌹𐌳𐍉𐌽 (𐌰𐌹𐌸𐌸𐌰𐌿 𐌻𐌹𐌸𐌰𐌿𐍃 𐌿𐍃𐍃𐌹𐌽𐌳𐌰𐌹𐌶𐍉𐍃 𐌷𐌰𐌽𐍃𐍉𐍃). 𐍃𐌴𐌹𐌳𐍉𐌽𐍃 [[Special:Watchlist|𐍅𐌹𐍄𐌰𐌽𐌳𐌻𐌴𐌹𐍃𐍄𐍉𐍃 𐌸𐌴𐌹𐌽𐍉𐍃]] 𐍃𐌹𐌽𐌳 '''𐌳𐌹𐌲𐍂𐍃𐍄𐌰𐍆𐍃'''.",
 
 # Upload
-'upload'          => '𐌿𐍃𐌷𐌻𐌰𐌸𐌰𐌹𐌸 𐍆𐌴𐌹𐌻𐌰𐌽𐍃',
-'uploadbtn'       => 'Ushlaþaiþ Feilans',
-'uploadlogpage'   => 'Log af Ushlaþan',
-'uploadedimage'   => 'ushlaþiþ "[[$1]]"',
+'upload' => '𐌿𐍃𐌷𐌻𐌰𐌸𐌰𐌽 𐍆𐌴𐌹𐌻𐌰𐌽𐍃',
+'uploadbtn' => 'Ushlaþaiþ Feilans',
+'uploadlogpage' => 'Log af Ushlaþan',
+'uploadedimage' => 'ushlaþiþ "[[$1]]"',
 'watchthisupload' => 'Witan so seido',
 
 # Special:ListFiles
-'imgfile'   => 'Feilans',
+'imgfile' => 'Feilans',
 'listfiles' => 'Feilans tala',
 
 # File description page
-'file-anchor-link'    => 'Feilans',
-'filehist'            => 'Feilans áiris',
-'filehist-current'    => 'nu',
-'filehist-datetime'   => 'Ƕeila',
-'filehist-user'       => 'Niutandis',
-'filehist-dimensions' => 'Wahstus',
-'filehist-filesize'   => 'Feilans wahstus',
-'filehist-comment'    => 'Leitilaspillon',
-'imagelinks'          => 'Táiknjabandja',
+'file-anchor-link' => '𐍆𐌴𐌹𐌻𐌰𐌽𐍃',
+'filehist' => '𐍆𐌴𐌹𐌻𐌰𐌽𐍃 𐌰𐌹𐍂𐌹𐍃',
+'filehist-help' => '𐌺𐌻𐌹𐌺𐍉𐍃 𐌰𐌽𐌰 𐌳𐌰𐍄𐌰𐌹/𐍈𐌴𐌹𐌻𐌰𐌹 𐍃𐌰𐌹𐍈𐌰𐌽 𐍆𐌴𐌹𐌻𐌰𐌽 𐍃𐍅𐌴 𐌰𐍄𐌰𐌿𐌲𐌾𐌹𐌳𐌰 𐍃𐌹𐌺 𐌸𐌰𐌽.',
+'filehist-current' => '𐌽𐌿',
+'filehist-datetime' => '𐍈𐌴𐌹𐌻𐌰',
+'filehist-thumb' => '𐍆𐍉𐍂𐍃𐌾𐌰𐌿',
+'filehist-thumbtext' => '𐍆𐍉𐍂𐍃𐌾𐌰𐌿 𐍆𐌰𐌿𐍂 𐌿𐍃𐌲𐌰𐌱𐌰 𐍆𐍂𐌰𐌼 $1',
+'filehist-user' => '𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃',
+'filehist-dimensions' => '𐍅𐌰𐌷𐍃𐍄𐌿𐍃',
+'filehist-filesize' => 'Feilans wahstus',
+'filehist-comment' => '𐌻𐌴𐌹𐍄𐌻𐌰𐍃𐍀𐌹𐌻𐌻𐍉𐌽',
+'imagelinks' => '𐍆𐌴𐌹𐌻𐌹𐌽𐍃 𐌱𐍂𐌿𐌺𐌹𐍃',
+'linkstoimage' => '𐌰𐍆𐍄𐌿𐌼𐌰 {{PLURAL:$1|𐍃𐍉 𐍃𐌴𐌹𐌳𐍉 𐌻𐌴𐌹𐌽𐌺𐍉𐌸|𐌸𐍉𐍃 𐍃𐌴𐌹𐌳𐍉𐌽𐍃 𐌻𐌴𐌹𐌽𐌺𐍉𐌽𐌳}} 𐌸𐌹𐌶𐍉𐌶𐌿𐌷 𐍆𐌴𐌹𐌻𐍉𐍃',
+'sharedupload-desc-here' => '𐍃𐌰 𐍆𐌴𐌹𐌻𐌰 𐌹𐍃𐍄 𐍆𐍂𐌰𐌼 $1 𐌾𐌰𐌷 𐌼𐌰𐌲 𐍅𐌹𐍃𐌰𐌽 𐌱𐍂𐌿𐌺𐌾𐌰𐌽𐍃 𐍆𐍂𐌰𐌼 𐌰𐌻𐌾𐌰𐌹𐌼 𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐍉𐌼.
+𐍆𐌰𐌿𐍂𐌰𐌼𐌴𐌻𐌾𐌰𐌽𐌳𐍃 𐌰𐌽𐌰 𐍃𐌴𐌹𐌳𐌰𐌹 𐍆𐌴𐌹𐌻𐌰𐌽𐍃𐍆𐌰𐌿𐍂𐌰𐌼𐌴𐌻𐌾𐌰𐌽𐌳𐌹𐍃 𐌸𐌰𐍂 𐌹𐍃𐍄 𐌳𐌰𐌻𐌰𐌸𐌰 𐌿𐍃𐌲𐌹𐌱𐌰𐌽𐍃.',
 
 # File deletion
 'filedelete-submit' => 'Taíran',
@@ -351,34 +409,34 @@ $messages = array(
 # Statistics
 'statistics' => '𐍃𐌴𐌹𐌳𐍉𐍃𐍄𐌰𐍄𐌹𐍃𐍄𐌹𐌺',
 
-'brokenredirects-edit'   => '(𐌼𐌰𐌹𐌳𐌾𐌰𐌽)',
+'brokenredirects-edit' => '(𐌼𐌰𐌹𐌳𐌾𐌰𐌽)',
 'brokenredirects-delete' => '(𐍄𐌰𐌹𐍂𐌰𐌽)',
 
 # Miscellaneous special pages
-'nbytes'       => '$1 {{PLURAL:$1|𐌱𐌰𐌹𐍄|𐌱𐌰𐌹𐍄𐌰}}',
-'ncategories'  => '$1 {{PLURAL:$1|𐌺𐌿𐌽𐌾𐌰|𐌺𐌿𐌽𐌾𐍉𐍃}}',
-'nlinks'       => '$1 {{PLURAL:$1|táikjanbandi|táikjanbandja}}',
-'nmembers'     => '$1 {{PLURAL:$1|niutand|niutanda}}',
-'wantedpages'  => 'Gaírnedum seidam',
-'shortpages'   => '𐌻𐌴𐌹𐍄𐌹𐌻𐌰 𐍃𐌴𐌹𐌳𐍉𐍃',
-'longpages'    => '𐌻𐌰𐌲𐌲𐌰 𐍃𐌴𐌹𐌳𐍉𐍃',
-'listusers'    => '𐍂𐌴𐌲𐌹𐍃𐍄𐍂𐌴𐍂𐌰𐌳𐌴 𐌱𐍂𐌿𐌺𐌾𐌰𐌽𐌳𐍃',
-'newpages'     => '𐌽𐌹𐌿𐌾𐌰 𐍃𐌴𐌹𐌳𐍉𐍃',
-'move'         => '𐌽𐌰𐌼𐌾𐌰𐌽 𐌰𐍆𐍄𐍂𐌰',
+'nbytes' => '$1 {{PLURAL:$1|𐌱𐌰𐌹𐍄|𐌱𐌰𐌹𐍄𐌰}}',
+'ncategories' => '$1 {{PLURAL:$1|𐌺𐌿𐌽𐌾𐌰|𐌺𐌿𐌽𐌾𐍉𐍃}}',
+'nlinks' => '$1 {{PLURAL:$1|táikjanbandi|táikjanbandja}}',
+'nmembers' => '$1 {{PLURAL:$1|niutand|niutanda}}',
+'wantedpages' => 'Gaírnedum seidam',
+'shortpages' => '𐌻𐌴𐌹𐍄𐌹𐌻𐌰 𐍃𐌴𐌹𐌳𐍉𐍃',
+'longpages' => '𐌻𐌰𐌲𐌲𐌰 𐍃𐌴𐌹𐌳𐍉𐍃',
+'listusers' => '𐍂𐌴𐌲𐌹𐍃𐍄𐍂𐌴𐍂𐌰𐌳𐌴 𐌱𐍂𐌿𐌺𐌾𐌰𐌽𐌳𐍃',
+'newpages' => '𐌽𐌹𐌿𐌾𐌰 𐍃𐌴𐌹𐌳𐍉𐍃',
+'move' => '𐌽𐌰𐌼𐌾𐌰𐌽 𐌰𐍆𐍄𐍂𐌰',
 'movethispage' => '𐍃𐌺𐌹𐌿𐌱𐌰𐌽 𐍃𐌰 𐍃𐌴𐌹𐌳𐍉',
 
 # Special:Log
-'specialloguserlabel'  => 'Niutand:',
+'specialloguserlabel' => 'Niutand:',
 'speciallogtitlelabel' => 'Namo:',
-'log'                  => '𐌻𐍉𐌲𐌱𐍉𐌺𐍉𐍃',
-'all-logs-page'        => '𐌰𐌻𐌻𐌰 𐌻𐍉𐌲𐍉𐍃',
+'log' => '𐌻𐍉𐌲𐌱𐍉𐌺𐍉𐍃',
+'all-logs-page' => '𐌰𐌻𐌻𐌰 𐌻𐍉𐌲𐍉𐍃',
 
 # Special:AllPages
-'allpages'       => '𐌰𐌻𐌻𐌹𐍃 𐍃𐌴𐌹𐌳𐍉𐍃',
+'allpages' => '𐌰𐌻𐌻𐌹𐍃 𐍃𐌴𐌹𐌳𐍉𐍃',
 'alphaindexline' => '$1 du $2',
-'nextpage'       => '𐌹𐍆𐍄𐌿𐌼𐌰 𐍃𐌴𐌹𐌳𐍉 ($1)',
-'prevpage'       => '𐌰𐍆𐍄𐌿𐌼𐌰 𐍃𐌴𐌹𐌳𐍉 ($1)',
-'allarticles'    => '𐌰𐌻𐌾𐌰 𐍃𐌴𐌹𐌳𐍉𐍃',
+'nextpage' => '𐌹𐍆𐍄𐌿𐌼𐌰 𐍃𐌴𐌹𐌳𐍉 ($1)',
+'prevpage' => '𐌰𐍆𐍄𐌿𐌼𐌰 𐍃𐌴𐌹𐌳𐍉 ($1)',
+'allarticles' => '𐌰𐌻𐌾𐌰 𐍃𐌴𐌹𐌳𐍉𐍃',
 'allpagessubmit' => '𐌰𐍆𐌲𐌰𐌲𐌲𐌰𐌽',
 
 # Special:Categories
@@ -387,135 +445,171 @@ $messages = array(
 # Special:LinkSearch
 'linksearch-ns' => '𐍃𐌴𐌹𐌳𐍉𐍆𐌴𐍂𐌰:',
 
-# E-mail user
+# Email user
 'emailuser' => '𐍃𐌰𐌽𐌳𐌾𐌰𐌽 𐌸𐍉 𐌽𐌹𐌿𐍄𐌰𐌽𐌳 𐌱𐍉𐌺𐍉𐌼',
 
 # Watchlist
-'watchlist'         => '𐌼𐌴𐌹𐌽𐍉𐍃 𐍅𐌹𐍄𐌰𐌽𐌳𐍃𐌻𐌴𐌹𐍃𐍄𐌰',
-'mywatchlist'       => '𐌼𐌴𐌹𐌽𐍉𐍃 𐍅𐌹𐍄𐌰𐌽𐌳𐍃𐌻𐌴𐌹𐍃𐍄𐌰',
-'watch'             => '𐍅𐌰𐍂𐌰𐌽',
-'watchthispage'     => '𐍅𐌰𐍂𐌰𐌽 𐍃𐌴𐌹𐌳𐍉',
-'unwatch'           => '𐌽𐌹𐍅𐌰𐍂𐌰𐌽',
+'watchlist' => '𐌼𐌴𐌹𐌽𐍉𐍃 𐍅𐌹𐍄𐌰𐌽𐌳𐍃𐌻𐌴𐌹𐍃𐍄𐌰',
+'mywatchlist' => '𐌼𐌴𐌹𐌽𐍉𐍃 𐍅𐌹𐍄𐌰𐌽𐌳𐍃𐌻𐌴𐌹𐍃𐍄𐌰',
+'watch' => '𐍅𐌰𐍂𐌰𐌽',
+'watchthispage' => '𐍅𐌰𐍂𐌰𐌽 𐍃𐌴𐌹𐌳𐍉',
+'unwatch' => '𐌽𐌹𐍅𐌰𐍂𐌰𐌽',
 'watchlist-details' => '{{PLURAL:$1|$1 seido|$1 seidona}} witáiþs inu maþleiseidam.',
 
 # Displayed when you click the "watch" button and it is in the process of watching
-'watching'   => 'Wita...',
+'watching' => 'Wita...',
 'unwatching' => 'Niwita...',
 
 'created' => '𐌲𐌰𐍃𐌺𐌰𐍀𐌾𐌰𐌽',
 
 # Delete
-'deletepage'            => '𐍄𐌰𐌹𐍂𐌰 𐍃𐌴𐌹𐌳𐍉',
-'delete-legend'         => '𐍄𐌰𐌹𐍂𐌰𐌽',
-'actioncomplete'        => '𐍅𐌰𐍃𐌿𐌷 𐌹𐍄𐌰 𐌲𐌰𐌿𐍃𐍄𐌹𐌿𐌷𐌰𐌽',
-'dellogpage'            => '𐍄𐌰𐌹𐍂𐌰 𐌰𐌹𐍂𐍅𐌱𐍉𐌺𐌰',
-'deleteotherreason'     => '𐌰𐌽𐌸𐌰𐍂/𐌼𐌰𐌹𐍃 𐌼𐌹𐍄𐍉𐌽𐍃:',
+'deletepage' => '𐍄𐌰𐌹𐍂𐌰 𐍃𐌴𐌹𐌳𐍉',
+'delete-legend' => '𐍄𐌰𐌹𐍂𐌰𐌽',
+'actioncomplete' => '𐍅𐌰𐍃𐌿𐌷 𐌹𐍄𐌰 𐌲𐌰𐌿𐍃𐍄𐌹𐌿𐌷𐌰𐌽',
+'dellogpage' => '𐍄𐌰𐌹𐍂𐌰 𐌰𐌹𐍂𐍅𐌱𐍉𐌺𐌰',
+'deleteotherreason' => '𐌰𐌽𐌸𐌰𐍂/𐌼𐌰𐌹𐍃 𐌼𐌹𐍄𐍉𐌽𐍃:',
 'deletereasonotherlist' => '𐌰𐌽𐌸𐌰𐍂 𐌼𐌹𐍄𐍉𐌽𐍃',
 
 # Rollback
 'rollbacklink' => '𐌰𐍆𐍅𐌰𐌻𐍅𐌾𐌰𐌽',
 
 # Protect
-'protectlogpage'      => 'Log af Baírgjan',
-'prot_1movedto2'      => '[[$1]] skiubiþ du [[$2]]',
+'protectlogpage' => 'Log af Baírgjan',
+'prot_1movedto2' => '[[$1]] skiubiþ du [[$2]]',
 'protect-level-sysop' => '𐍃𐌴𐌹𐌳𐍉𐍆𐌰𐌸𐍃 𐌰𐌹𐌽𐌰𐌷𐌰',
-'protect-expiring'    => 'bláuþiþ $1 (UTC)',
-'restriction-type'    => 'Freihals:',
+'protect-expiring' => 'bláuþiþ $1 (UTC)',
+'restriction-type' => 'Freihals:',
 
 # Restrictions (nouns)
 'restriction-edit' => '𐌼𐌰𐌹𐌳𐌾𐌰𐌽',
 'restriction-move' => '𐍃𐌺𐌹𐌿𐌱𐌰𐌽',
 
 # Undelete
-'undeletebtn'            => '𐌰𐍆𐍄𐍂𐌰 𐌲𐌰𐌱𐍉𐍄𐌾𐌰𐌽',
+'undeletebtn' => '𐌰𐍆𐍄𐍂𐌰 𐌲𐌰𐌱𐍉𐍄𐌾𐌰𐌽',
+'undeletelink' => '𐍃𐌰𐌹𐍈𐌰𐌽/𐌰𐍆𐍄𐍂𐌰𐌲𐌰𐍃𐌰𐍄𐌾𐌰𐌽',
+'undeleteviewlink' => '𐍃𐌰𐌹𐍈𐌹𐍃',
 'undelete-search-submit' => 'Sokeiþ',
 
 # Namespace form on various pages
-'namespace'      => '𐍃𐌴𐌹𐌳𐍉𐍆𐌴𐍂𐌰:',
-'invert'         => 'Afwandjan kustus',
+'namespace' => '𐍃𐌴𐌹𐌳𐍉𐍆𐌴𐍂𐌰:',
+'invert' => 'Afwandjan kustus',
 'blanknamespace' => '(𐍆𐍂𐌿𐌼𐌹𐍃𐍄𐍃)',
 
 # Contributions
 'contributions' => '𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃 𐌰𐌹𐍅𐌻𐌰𐌲𐌹𐍉𐍃',
-'mycontris'     => '𐌼𐌴𐌹𐌽𐍉𐍃 𐌰𐌹𐍅𐌻𐌰𐌲𐌹𐍉𐍃',
-'contribsub2'   => '𐍆𐌰𐌿𐍂 $1 ($2)',
-'uctop'         => '(háubiþ)',
-'month'         => '𐍆𐍂𐌰𐌼 𐌼𐌴𐌽𐍉𐌸𐍃 (𐌾𐌰𐌷 𐌰𐍆𐍄𐌿𐌼𐌰):',
-'year'          => '𐍆𐍂𐌰𐌼 𐌾𐌴𐍂𐌰 (𐌾𐌰𐌷 𐌰𐍆𐍄𐌿𐌼𐌰):',
+'mycontris' => '𐌼𐌴𐌹𐌽𐍉𐍃 𐌰𐌹𐍅𐌻𐌰𐌲𐌹𐍉𐍃',
+'contribsub2' => '𐍆𐌰𐌿𐍂 $1 ($2)',
+'uctop' => '(háubiþ)',
+'month' => '𐍆𐍂𐌰𐌼 𐌼𐌴𐌽𐍉𐌸𐍃 (𐌾𐌰𐌷 𐌰𐍆𐍄𐌿𐌼𐌰):',
+'year' => '𐍆𐍂𐌰𐌼 𐌾𐌴𐍂𐌰 (𐌾𐌰𐌷 𐌰𐍆𐍄𐌿𐌼𐌰):',
 
 'sp-contributions-newbies-sub' => 'Faúr niujis niutandis',
-'sp-contributions-blocklog'    => 'Logboka af afdraúsjan',
-'sp-contributions-talk'        => 'Maþleiseido',
+'sp-contributions-blocklog' => 'Logboka af afdraúsjan',
+'sp-contributions-talk' => 'Maþleiseido',
 
 # What links here
-'whatlinkshere'       => '𐍈𐌰𐍂𐌾𐌹𐍃 𐍃𐌴𐌹𐌳𐍉𐌽𐌰 𐌷𐌻𐌰𐌲𐌺𐌾𐌰𐌽𐌳 𐌷𐌹𐌳𐍂𐌴',
+'whatlinkshere' => '𐍈𐌰𐍂𐌾𐌹𐍃 𐍃𐌴𐌹𐌳𐍉𐌽𐍃 𐌷𐌻𐌰𐌲𐌺𐌾𐌰𐌽𐌳 𐌷𐌹𐌳𐍂𐌴',
 'whatlinkshere-title' => 'Seidos hwarjis du $1 táiknjan',
-'isredirect'          => '𐍄𐌰𐌹𐌺𐌾𐌰𐍃𐌴𐌹𐌳𐍉',
-'istemplate'          => 'ináukan',
-'whatlinkshere-prev'  => '{{PLURAL:$1|aftuma|aftumans $1}}',
-'whatlinkshere-next'  => '{{PLURAL:$1|iftuma|iftumans $1}}',
+'isredirect' => '𐍄𐌰𐌹𐌺𐌾𐌰𐍃𐌴𐌹𐌳𐍉',
+'istemplate' => 'ináukan',
+'whatlinkshere-prev' => '{{PLURAL:$1|aftuma|aftumans $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|iftuma|iftumans $1}}',
 'whatlinkshere-links' => '← táikajanbandja',
 
 # Block/unblock
-'blockip'            => '𐌰𐍆𐌳𐍂𐌰𐌿𐍃𐌾𐌰𐌽 𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃',
-'ipbreason'          => '𐍆𐌰𐌹𐍂𐌹𐌽𐌰:',
-'ipbotheroption'     => 'anþar',
+'blockip' => '𐌰𐍆𐌳𐍂𐌰𐌿𐍃𐌾𐌰𐌽 𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃',
+'ipbreason' => '𐍆𐌰𐌹𐍂𐌹𐌽𐌰:',
+'ipboptions' => '𐌱 𐌰𐍅𐍂𐌰:2 hours, 𐌰 𐌳𐌰𐌲𐍃:1 day, 𐌲 𐌳𐌰𐌲𐍉𐍃:3 days, 𐌰 𐍅𐌹𐌺𐍉:1 week, 𐌱 𐍅𐌹𐌺𐍉𐌽𐍃:2 weeks, 𐌰 𐌼𐌴𐌽𐍉𐌸𐍃:1 month, 𐌲 𐌼𐌴𐌽𐍉𐌸𐍉𐍃:3 months, 𐌵 𐌼𐌴𐌽𐍉𐌸𐍉𐍃:6 months, 𐌰 𐌾𐌴𐍂:1 year, 𐌹𐌽𐌿𐍄𐍂𐌹𐌲𐌲𐌴𐌽𐌳𐌴𐌹𐍃:infinite',
 'ipblocklist-submit' => 'Sokeiþ',
-'infiniteblock'      => 'ajukduþs',
-'blocklink'          => '𐍅𐌰𐍂𐌲𐌾𐌰𐌽',
-'unblocklink'        => '𐍅𐌰𐌽𐌳𐌾𐌰𐌽',
-'contribslink'       => '𐌲𐌹𐌱𐍉𐍃',
-'blocklogpage'       => '𐌻𐍉𐌲𐌱𐍉𐌺𐌰 𐌰𐍆 𐌰𐍆𐌳𐍂𐌰𐌿𐍃𐌾𐌰𐌽',
-'blocklogentry'      => '𐌰𐍆𐌳𐍂𐌰𐌿𐍃𐌹𐌸 [[$1]] 𐍆𐌰𐌿𐍂 $2 $3',
+'infiniteblock' => 'ajukduþs',
+'blocklink' => '𐍅𐌰𐍂𐌲𐌾𐌰𐌽',
+'unblocklink' => '𐍅𐌰𐌽𐌳𐌾𐌰𐌽',
+'change-blocklink' => '𐌲𐌰𐌼𐌰𐌹𐌳𐌾𐌰𐌽 𐍅𐌰𐌿𐍂𐌾𐌰𐍅𐌰𐌳𐌳𐌾𐌿𐍃',
+'contribslink' => '𐌲𐌹𐌱𐍉𐍃',
+'blocklogpage' => '𐌻𐍉𐌲𐌱𐍉𐌺𐌰 𐌰𐍆 𐌰𐍆𐌳𐍂𐌰𐌿𐍃𐌾𐌰𐌽',
+'blocklogentry' => '𐌰𐍆𐌳𐍂𐌰𐌿𐍃𐌹𐌸 [[$1]] 𐍆𐌰𐌿𐍂 $2 $3',
 
 # Move page
 'movearticle' => '𐍃𐌺𐌹𐌿𐌱𐌰 𐍃𐌴𐌹𐌳𐍉:',
-'newtitle'    => '𐌳𐌿 𐌽𐌹𐌿𐌾𐌹𐍃 𐌽𐌰𐌼𐍉𐍃:',
-'move-watch'  => '𐍅𐌹𐍄𐌰𐌽 𐍃𐍉 𐍃𐌴𐌹𐌳𐍉',
+'newtitle' => '𐌳𐌿 𐌽𐌹𐌿𐌾𐌹𐍃 𐌽𐌰𐌼𐍉𐍃:',
+'move-watch' => '𐍅𐌹𐍄𐌰𐌽 𐍃𐍉 𐍃𐌴𐌹𐌳𐍉',
 'movepagebtn' => '𐍃𐌺𐌹𐌿𐌱𐌰 𐍃𐌴𐌹𐌳𐍉',
-'movedto'     => 'skiubiþ du',
 'movelogpage' => 'Log af skiubans',
-'movereason'  => '𐍆𐌰𐌹𐍂𐌹𐌽𐌰:',
-'revertmove'  => 'ráidjan',
+'movereason' => '𐍆𐌰𐌹𐍂𐌹𐌽𐌰:',
+'revertmove' => '𐍂𐌰𐌹𐌳𐌾𐌰𐌽',
+
+# Export
+'export' => '𐌿𐍄𐌼𐌹𐌸𐍃𐌰𐍄𐌾𐌹𐍃 𐍃𐌴𐌹𐌳𐍉𐌽𐍃',
 
 # Thumbnails
-'thumbnail-more' => 'Biáuknan',
+'thumbnail-more' => '𐌱𐌹𐌰𐌿𐌺𐌰𐌽',
 
 # Tooltip help for the actions
-'tooltip-pt-userpage'            => 'Meina niutandisseido',
-'tooltip-pt-mytalk'              => 'Meina maþleiseido',
-'tooltip-pt-preferences'         => 'Meinos brukjamaideineis',
-'tooltip-pt-mycontris'           => 'Tala af meina gibom',
-'tooltip-pt-logout'              => 'leiþan',
-'tooltip-ca-protect'             => '𐌱𐌰𐌹𐍂𐌲𐌰 𐌸𐍉 𐍃𐌴𐌹𐌳𐍉',
-'tooltip-ca-delete'              => '𐍄𐌰𐌹𐍂𐌰𐌽 𐍃𐍉 𐍃𐌴𐌹𐌳𐍉',
-'tooltip-ca-move'                => 'Skiuban so seido',
-'tooltip-search'                 => '𐍃𐍉𐌺𐌴𐌹𐌸 {{SITENAME}}',
-'tooltip-p-logo'                 => 'Háubidaseido',
-'tooltip-n-mainpage'             => '𐍃𐌰𐌹𐍈𐌰𐌽 𐍃𐌰 𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐍃𐌴𐌹𐌳𐍉',
-'tooltip-n-mainpage-description' => '𐍃𐌰𐌹𐍈𐌰𐌽 𐍃𐌰 𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐍃𐌴𐌹𐌳𐍉',
-'tooltip-t-upload'               => '𐌿𐍃𐌷𐌻𐌰𐌸𐌰𐌹𐌸 𐍆𐌴𐌹𐌻𐌰𐌽𐍃',
-'tooltip-t-specialpages'         => 'Findiþ alla ussindseidos',
-'tooltip-ca-nstab-user'          => '𐍃𐌰𐌹𐍈𐌰𐌽 𐍃𐌰 𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃𐍃𐌴𐌹𐌳𐍉',
-'tooltip-save'                   => 'Skreiban þein máideins',
+'tooltip-pt-userpage' => '𐌸𐌴𐌹𐌽𐌰 𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃𐍃𐌴𐌹𐌳𐍉',
+'tooltip-pt-mytalk' => '𐌸𐌴𐌹𐌽𐌰 𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌾𐌰𐍃𐌴𐌹𐌳𐍉',
+'tooltip-pt-preferences' => '𐌼𐌴𐌹𐌽𐍉𐍃 𐌱𐍂𐌿𐌺𐌾𐌰𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌴𐌹𐍃',
+'tooltip-pt-watchlist' => '𐌻𐌴𐌹𐍃𐍄𐌰 𐍃𐌴𐌹𐌳𐍉𐌽𐍃 𐌴𐌹 𐌸𐌿 𐌰𐍄𐍅𐌹𐍄𐌰𐌹𐍃 𐍆𐌰𐌿𐍂 𐌹𐌽𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐌹𐌽𐍃',
+'tooltip-pt-mycontris' => '𐍄𐌰𐌻𐌰 𐌰𐍆 𐌸𐌴𐌹𐌽 𐌲𐌹𐌱𐍉𐌽𐍃',
+'tooltip-pt-login' => '𐌸𐌿 𐌹𐍃 𐌲𐌰𐍈𐌰𐍄𐌾𐌰𐌽𐌳𐍃 𐌰𐍄𐌲𐌰𐌲𐌲𐌰𐌽; 𐌰𐌸𐌸𐌰𐌽, 𐌽𐌹𐍃𐍄 𐌸𐌰𐌿𐍂𐌱𐌰𐌽𐍃',
+'tooltip-pt-logout' => '𐌻𐌴𐌹𐌸𐌰𐌽',
+'tooltip-ca-talk' => '𐌲𐌰𐍅𐌰𐌿𐍂𐌳𐌹 𐌱𐌹 𐌲𐌰𐌷𐌰𐌱𐌾𐌰 𐍃𐌴𐌹𐌳𐍉',
+'tooltip-ca-edit' => '𐌸𐌿 𐌼𐌰𐌲𐍄 𐌼𐌰𐌹𐌳𐌾𐌹𐍃 𐌸𐌰𐍄𐌰 𐍃𐌴𐌹𐌳𐍉. 𐌾𐌰𐌱𐌰𐌹 𐍅𐌹𐌻𐌴𐌹𐍃, 𐌱𐍂𐌿𐌺𐌾𐌹𐍃 𐍆𐌰𐌿𐍂𐍃𐌰𐌹𐍈𐌰𐌹𐍃 𐍆𐍂𐌿𐌼𐌰.',
+'tooltip-ca-addsection' => '𐌰𐌽𐌰𐍃𐍄𐍉𐌳𐌾𐌹𐍃 𐌽𐌹𐌿𐌾𐌰 𐌳𐌰𐌹𐌻',
+'tooltip-ca-viewsource' => '𐍃𐍉 𐍃𐌴𐌹𐌳𐍉 𐌹𐍃𐍄 𐌷𐌻𐌴𐌹𐌱𐌾𐌰𐌽𐌳𐍃
+𐌸𐌿 𐌼𐌰𐌲𐍄 𐍃𐌰𐌹𐍈𐌹𐍃 𐌹𐌶𐍉𐍃 𐌱𐍂𐌿𐌽𐌽𐌰𐌽',
+'tooltip-ca-history' => '𐍆𐌰𐌿𐍂𐌲𐌰𐌼𐌰𐌹𐌳𐌾𐌴𐌹𐌽𐍃 𐌸𐌹𐌶𐌿𐌷 𐍃𐌴𐌹𐌳𐍉𐌽𐍃',
+'tooltip-ca-protect' => '𐌱𐌰𐌹𐍂𐌲𐌰 𐌸𐍉 𐍃𐌴𐌹𐌳𐍉',
+'tooltip-ca-delete' => '𐍄𐌰𐌹𐍂𐌰𐌽 𐍃𐍉 𐍃𐌴𐌹𐌳𐍉',
+'tooltip-ca-move' => '𐍃𐌺𐌹𐌿𐌱𐌰𐌽 𐍃𐍉 𐍃𐌴𐌹𐌳𐍉',
+'tooltip-ca-watch' => '𐌰𐌽𐌰𐌰𐌿𐌺𐌹𐍃 𐌸𐌹𐌶𐌰𐌹 𐍃𐌴𐌹𐌳𐍉𐌽 𐌰𐌽𐌰 𐌸𐌴𐌹𐌽𐌰 𐍅𐌹𐍄𐌰𐌽𐌳𐌻𐌴𐌹𐍃𐍄𐌰',
+'tooltip-search' => '𐍃𐍉𐌺𐌾𐌰𐌽 {{SITENAME}}',
+'tooltip-search-go' => '𐍆𐌰𐍂𐌹𐍃 𐌳𐌿 𐍃𐌴𐌹𐌳𐍉𐌽 𐌼𐌹𐌸 𐌲𐌻𐌰𐌲𐌲𐌿𐌾𐌰𐌼𐌰 𐌽𐌰𐌼𐌹𐌽 𐌾𐌰𐌱𐌰𐌹 𐌹𐍃𐍄',
+'tooltip-search-fulltext' => '𐍃𐍉𐌺𐌾𐌰𐌽 𐍃𐌴𐌹𐌳𐍉𐌽𐍃 𐍆𐌰𐌿𐍂 𐌸𐌰𐌽𐌰 𐌱𐍉𐌺𐌰𐍅𐌰𐌿𐍂𐌳𐌰𐌽',
+'tooltip-p-logo' => '𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐍃𐌴𐌹𐌳𐍉',
+'tooltip-n-mainpage' => '𐍃𐌰𐌹𐍈𐌰𐌽 𐍃𐌰 𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐍃𐌴𐌹𐌳𐍉',
+'tooltip-n-mainpage-description' => '𐍃𐌰𐌹𐍈𐌰𐌹𐍃 𐍃𐌰 𐌷𐌰𐌿𐌱𐌹𐌳𐌰𐍃𐌴𐌹𐌳𐍉',
+'tooltip-n-portal' => '𐌱𐌹 𐌸𐌹𐌶𐌰𐌹 𐍆𐌰𐌿𐍂𐌰𐍅𐌰𐌿𐍂𐍀𐌰𐌹, 𐍈𐌰𐍃 𐌸𐌿 𐌼𐌰𐌲 𐍄𐌰𐌿𐌾𐌰, 𐍈𐌰𐍃 𐍃𐍄𐌰𐌸𐍃 𐌱𐌹𐌲𐌹𐍄𐌰𐌽 𐌹𐌽𐍃',
+'tooltip-n-currentevents' => '𐌱𐌹𐌲𐌹𐌸𐌹𐍃 𐌱𐌰𐌺𐌲𐌰𐌷𐌰𐌱𐌹 𐌱𐌹 𐌽𐌹𐌿𐌾𐌰𐌽𐍃 𐍅𐌰𐌹𐌷𐍄𐌰𐌽𐍃',
+'tooltip-n-recentchanges' => '𐌻𐌴𐌹𐍃𐍄𐌰 𐌼𐌰𐌹𐌳𐌾𐌴𐌹𐌽𐌴 𐌽𐌿 𐌰𐌽𐌰 𐌸𐌰𐌼𐌼𐌰 𐍅𐌹𐌺𐌾𐌰',
+'tooltip-n-randompage' => '𐌿𐍃𐌻𐌰𐌸𐌰𐌹𐌸 𐍃𐌻𐌿𐌼𐍀𐌼𐌰𐍃𐍃𐌹𐌾𐌹𐍃 𐍃𐌴𐌹𐌳𐍉',
+'tooltip-n-help' => '𐍃𐌰 𐍃𐍄𐌰𐌸𐍃 𐍆𐌹𐌽𐌸𐌰𐌽',
+'tooltip-t-whatlinkshere' => '𐌻𐌴𐌹𐍃𐍄𐌰 𐌰𐌻𐌻𐌹𐍃 𐍅𐌹𐌺𐌾𐍉𐍃 𐍃𐌴𐌹𐌳𐍉𐌽𐍉 𐌴𐌹 𐌻𐌴𐌹𐌽𐌺𐍉𐌽𐌳 𐌷𐌹𐌳𐍂𐌴',
+'tooltip-t-recentchangeslinked' => '𐌲𐌰𐌼𐌰𐌹𐌳𐌾𐌴𐌹𐌽𐍃 𐌽𐌿 𐍅𐌹𐌸𐍂𐌰 𐍃𐌴𐌹𐌳𐍉𐌽𐍃 𐌸𐌰𐍄𐌴𐌹 𐍃𐌹𐌽𐌳 𐌻𐌴𐌹𐌽𐌺𐍉𐌽𐍃 𐌿𐍃 𐌸𐌰𐌼𐌼𐌰 𐍃𐌴𐌹𐌳𐍉𐌽',
+'tooltip-feed-atom' => '𐌰𐍄𐍉𐌼 𐍂𐌹𐌽𐌽𐍉 𐌱𐌹 𐌸𐌹𐌶𐌰𐌹 𐍃𐌴𐌹𐌳𐍉𐌽',
+'tooltip-t-upload' => '𐌿𐍃𐌷𐌻𐌰𐌸𐌰𐌽 𐍆𐌴𐌹𐌻𐌰𐌽𐍃',
+'tooltip-t-specialpages' => '𐌻𐌴𐌹𐍃𐍄𐌰 𐌸𐌹𐌶𐍉 𐌿𐍃𐍃𐌹𐌽𐌳𐍃𐌴𐌹𐌳𐍉𐌽𐍉',
+'tooltip-t-print' => '𐍅𐍂𐌴𐌹𐍄𐌼𐌰𐌷𐍄𐌴𐌹𐌲 𐌿𐍃𐌲𐌰𐌱𐍉𐍃 𐌸𐌹𐌶𐍉𐍃 𐍃𐌴𐌹𐌳𐍉𐌽𐍃',
+'tooltip-t-permalink' => '𐍃𐌹𐌽𐍄𐌴𐌹𐌽𐍉 𐍃𐍄𐌰𐌽𐌳𐌰𐌽𐍃 𐌻𐌴𐌹𐌽𐌺𐌰 𐍅𐌹𐌸𐍂𐌰 𐌲𐌰𐌼𐌰𐌹𐌳𐌾𐌴𐌹𐌽 𐌸𐌹𐌶𐍉𐍃 𐍃𐌴𐌹𐌳𐍉𐌽𐍃',
+'tooltip-ca-nstab-main' => '𐍃𐌰𐌹𐍈𐌰𐌹𐍃 𐌸𐌰𐍄𐌰 𐌲𐌰𐌷𐌰𐌱𐌾𐌰 𐍃𐌴𐌹𐌳𐍉',
+'tooltip-ca-nstab-user' => '𐍃𐌰𐌹𐍈𐌰𐌽 𐍃𐌰 𐌽𐌹𐌿𐍄𐌰𐌽𐌳𐌹𐍃𐍃𐌴𐌹𐌳𐍉',
+'tooltip-ca-nstab-image' => '𐍃𐌰𐌹𐍈𐌰𐌽 𐌸𐍉 𐍆𐌴𐌹𐌻𐌰𐍃𐌴𐌹𐌳𐍉𐌽',
+'tooltip-ca-nstab-template' => '𐍃𐌰𐌹𐍈𐌹𐍃 𐍆𐌰𐌿𐍂𐌰𐌼𐌴𐌻𐌴𐌹𐌽',
+'tooltip-ca-nstab-category' => '𐍃𐌰𐌹𐍈𐌹𐍃 𐍃𐌴𐌹𐌳𐍉𐌽 𐌷𐌰𐌽𐍃𐍉',
+'tooltip-save' => '𐍃𐌺𐍂𐌴𐌹𐌱𐌰𐌹𐌽 𐌸𐌴𐌹𐌽 𐌼𐌰𐌹𐌳𐌴𐌹𐌽𐍃',
+'tooltip-preview' => '𐍆𐌰𐌿𐍂𐍃𐌰𐍈𐌹𐍃 𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌴𐌹𐌽𐍉𐍃 𐌸𐌴𐌹𐌽𐌰, 𐌱𐌹𐌳𐌾𐌰 𐌸𐌿𐌺 𐌱𐍂𐌿𐌺𐌾𐌰𐌽 𐌸𐌰𐍄𐌰 𐍆𐌰𐌿𐍂𐌰 𐌼𐌴𐌻𐌾𐌹𐍃!',
+'tooltip-diff' => '𐍃𐌰𐌹𐍈𐌹𐌸 𐌸𐌰𐌽𐌶𐌴𐌹 𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌴𐌹𐌽𐍉𐍃 𐌸𐌰𐍄𐌴𐌹 𐌱𐍂𐌿𐌺𐌾𐌹𐍃 𐌱𐍉𐌺𐌰𐍅𐌰𐌿𐍂𐌳𐌹𐌽𐍃',
+'tooltip-rollback' => '"𐌰𐍆𐍅𐌰𐌻𐍅𐌾𐌰𐌽" 𐌱𐌰𐌺𐌼𐌰𐌹𐌳𐌾𐌹𐌸 𐌹𐌽𐌼𐌰𐌹𐌳𐌾𐌴𐌹𐌽𐍃 𐌱𐌹 𐌸𐌹𐌶𐌰𐌹 𐍃𐌴𐌹𐌳𐍉𐌽 𐍅𐌹𐍃𐌰𐌽 𐍃𐍉 𐌲𐌰𐌼𐌰𐌳𐌾𐌴𐌹 𐌼𐌰𐌽𐌰𐌲𐌹𐍃𐍄𐍃 𐌽𐌹𐌿𐌾𐌰 𐌲𐌹𐌱𐌰𐌾𐌹𐌽𐍃 𐍆𐍂𐌰𐌼 𐌰𐌹𐌽𐍃 𐌺𐌻𐌹𐌺',
+'tooltip-undo' => '"𐌽𐌹𐌿𐍃𐌺𐌰𐍀𐌾𐌰𐌽" 𐌱𐌰𐌺𐌼𐌰𐌹𐌳𐌾𐌹𐌸 𐌹𐌽𐌼𐌰𐌹𐌳𐌲𐌴𐌹𐌽𐍃 𐌾𐌰𐌷 𐌿𐍃𐌻𐌿𐌺𐍉𐌸 𐌼𐌰𐌹𐌳𐌾𐌰𐍆𐍉𐍂𐌼𐍉𐌽 𐍃𐍅𐌴 𐍆𐌰𐌿𐍂𐍃𐌰𐌹𐍈𐌰 𐌷𐌹𐍅𐌾𐌰. 𐌸𐌰𐍄𐌰 𐌻𐌴𐍄 𐌰𐌽𐌰𐌿𐌺𐌰𐌽𐌰𐌽 𐍃𐌰𐌿𐌸𐌰 𐌹𐌽 𐌹𐌽𐌽𐌰𐌷𐌰𐌻𐌳𐌰𐌰𐌽𐌲𐌰𐌱𐌰.',
+'tooltip-summary' => '𐌰𐍄𐌲𐌰𐌲𐌲𐌹𐍃 𐌹𐌽𐌽𐌰𐌷𐌰𐌻𐌳𐌰𐌰𐌽𐌲𐌰𐌱𐌰 𐌼𐌰𐌿𐍂𐌲𐌾𐌰',
 
 # Browsing diffs
 'previousdiff' => '← 𐌰𐍆𐍄𐌿𐌼𐌰 𐌰𐌹𐍂𐌹𐍃',
-'nextdiff'     => 'Iftuma áiris →',
+'nextdiff' => 'Iftuma áiris →',
 
 # Media information
+'file-info-size' => '$1 × $2 𐍀𐌹𐌺𐍃𐌴𐌻𐌰, 𐍆𐌴𐌹𐌻𐍅𐌰𐌷𐍃𐍄𐌿𐍃: $3, 𐌼𐌹𐌼𐌴 𐌺𐌿𐌽𐌹: $4',
 'show-big-image' => 'Fullis wahstus',
 
 # Special:NewFiles
 'ilsubmit' => 'Sokeiþ',
 
 # Metadata
-'metadata' => 'Ufardata',
+'metadata' => '𐌿𐍆𐌰𐍂𐌳𐌰𐍄𐌰',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'allis',
-'namespacesall' => 'allis',
-'monthsall'     => '𐌰𐌻𐌻𐌹𐍃',
+'namespacesall' => '𐌰𐌻𐌻𐌹𐍃',
+'monthsall' => '𐌰𐌻𐌻𐌹𐍃',
 
 # Multipage image navigation
 'imgmultigo' => 'Afgaggan!',
@@ -526,10 +620,13 @@ $messages = array(
 # Special:Version
 'version-other' => 'Anþar',
 
-# Special:FilePath
-'filepath-page' => 'Feilans:',
-
 # Special:SpecialPages
 'specialpages' => '𐌿𐍃𐍃𐌹𐌽𐌳𐍃𐌴𐌹𐌳𐍉𐍃',
 
+# Special:Tags
+'tag-filter' => '[[Special:Tags|𐍄𐌰𐌹𐌺𐌽𐍉𐍃]] 𐍆𐌹𐌻𐌷𐌰',
+
+# New logging system
+'rightsnone' => '(ni áinshun)',
+
 );
index d058211..84a3e21 100644 (file)
@@ -297,7 +297,6 @@ $messages = array(
 'vector-action-protect' => 'Schitze',
 'vector-action-undelete' => 'Widerhärstelle',
 'vector-action-unprotect' => 'Syteschutz ändere',
-'vector-simplesearch-preference' => 'Vereifachti Suechvorschleg aktiviere (nume Vector)',
 'vector-view-create' => 'Aalege',
 'vector-view-edit' => 'Bearbeite',
 'vector-view-history' => 'Versionsgschicht',
index 706ed71..c131377 100644 (file)
@@ -316,7 +316,6 @@ $messages = array(
 'vector-action-protect' => 'સુરક્ષિત કરો',
 'vector-action-undelete' => 'રદ કરેલું પાછું વાળો',
 'vector-action-unprotect' => 'સુરક્ષા બદલો',
-'vector-simplesearch-preference' => 'સરળ શોધ પટ્ટી સક્રીય કરો (માત્ર વેક્ટર સ્કિન)',
 'vector-view-create' => 'બનાવો',
 'vector-view-edit' => 'ફેરફાર કરો',
 'vector-view-history' => 'ઇતિહાસ જુઓ',
index 653336c..462462c 100644 (file)
@@ -13,7 +13,6 @@
 $messages = array(
 # User preference toggles
 'tog-underline' => 'A shaya zaruruwa',
-'tog-justify' => 'A daidaita sakin layuka',
 'tog-hideminor' => 'A ɓoye ƙananan gyare-gyare na baya-bayan nan',
 'tog-hidepatrolled' => 'A ɓoye gyare-gyaren kan ido a cikin gyare-gyare bayan-bayan nan',
 'tog-newpageshidepatrolled' => 'A ɓoye shafuna kan ido a cikin sabbin shafuna',
@@ -22,9 +21,7 @@ $messages = array(
 'tog-numberheadings' => 'A lambace kanun matani kai tsaye',
 'tog-showtoolbar' => 'A nuna sandar kayan aiki ta gyarawa (ana buƙatar JavaScript)',
 'tog-editondblclick' => 'A gyara shafuna da dabar-kiliki (ana buƙatar JavaScript)',
-'tog-editsection' => 'A lamunta gyara sashe ta hanyar zaruruwan [gyarawa]',
 'tog-editsectiononrightclick' => 'A lamunta gyara shashe da kilikin dama a kan kanun shashe (ana buƙatar JavaScript)',
-'tog-showtoc' => 'A nuna jadawalin kanu (cikin shafuna masu fiye da kanu 3)',
 'tog-rememberpassword' => 'A adana bayanan loginkina a wannan kwamfyuta (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'A daɗa shafunan da na ƙirƙira a cikin jerina na kan ido',
 'tog-watchdefault' => 'A daɗa shafunan da na gyara a cikin jerina na kan ido',
@@ -33,7 +30,6 @@ $messages = array(
 'tog-minordefault' => 'A alamta gyare-gyarena a matsayin ƙanana bisa manufa',
 'tog-previewontop' => 'A nuna filin rigya-gani sama ga filin gyare-gyare',
 'tog-previewonfirst' => 'A nuna rigya-gani tun gyaran farin',
-'tog-nocache' => 'A tsayar da kacin shafi',
 'tog-enotifwatchlistpages' => 'A shaida mani ta Imel idan wani shafin jeerina na bin-sau ya sauya',
 'tog-enotifusertalkpages' => 'A shaida mani ta Imel idan shafina na muhawara ya sauya',
 'tog-enotifminoredits' => 'A shaida mani ta Imel game da ko da ƙaramin gyara ne',
@@ -373,7 +369,6 @@ Fasali: '''({{int:cur}})''' = bambanci da zubi na yanzu, '''({{int:last}})''' =
 'recentchanges' => 'Sauye-sauyen baya-bayan nan',
 'recentchanges-legend' => 'Zaɓi na sauye-sauyen baya-bayan nan',
 'recentchanges-feed-description' => 'Bi sawun sauye-sauyen ƙarshe na wikin da ke cikin wannan kwarare',
-'rcnote' => "A nan ƙasa an nuna {{PLURAL:$1|sauyi '''1'''|sauye-sauyen ƙarshe '''$1'''}} a cikin {{PLURAL:$2|awowi 24 da suka shige|'''$2''' kwanaki}}, har zuwa $5, $4.",
 'rclistfrom' => 'Nuna sabbin sauye-sauye tun daga $1',
 'rcshowhideminor' => '$1 ƙananen sauye-sauye',
 'rcshowhidebots' => 'Rabuwat $1',
@@ -582,7 +577,6 @@ Kuna iya sake wa wannan shafi matakin kariya, amma hakan ba zai yi tasiri ga kar
 # Block/unblock
 'blockip' => "Hana ma'aikaci",
 'ipbreason' => 'Dalili:',
-'ipbreasonotherlist' => 'Wani dalili',
 'ipboptions' => 'awa 2:2 hours,kwana 1:1 day,kwana 3:3 days,mako 1:1 week,mako 2:2 weeks,wata 1:1 month,wata 3:3 months,wata 6:6 months,shekara 1:1 year,illa masha allahu:infinite',
 'ipblocklist' => "Adireshin IP da ma'aikatan da aka hana",
 'ipblocklist-submit' => 'Nema',
index e328159..4ddfee1 100644 (file)
@@ -183,7 +183,6 @@ $messages = array(
 'vector-action-protect' => '保護',
 'vector-action-undelete' => '恢復',
 'vector-action-unprotect' => '更改保護',
-'vector-simplesearch-preference' => '啟用簡化搜尋欄(僅限Vector外皮)',
 'vector-view-create' => '建立',
 'vector-view-edit' => '編寫',
 'vector-view-history' => '查看歷史',
@@ -216,8 +215,8 @@ $messages = array(
 'delete' => '刪除',
 'deletethispage' => '刪除本頁',
 'undeletethispage' => '取消刪除邇頁',
-'undelete_short' => '恢復$1隻分删除编寫',
-'viewdeleted_short' => '查看$1項已刪除修訂',
+'undelete_short' => '恢復$1隻分删除编寫',
+'viewdeleted_short' => '查看$1項已刪除修訂',
 'protect' => '保護',
 'protect_change' => '更改',
 'protectthispage' => '保護本頁',
index 7ba43b1..29c6d92 100644 (file)
@@ -89,10 +89,8 @@ $magicWords = array(
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Kahalalo i nā loulou:',
-'tog-justify' => 'Ho‘okaulihi i nā paukū',
 'tog-hideminor' => 'E hūnā i nā ho‘opololei iki ma nā loli hou',
 'tog-editondblclick' => 'Ho‘opololei i nā ‘ao‘ao ma ke kōmi pālua (JavaScript)',
-'tog-showtoc' => 'Hō‘ike i ka papa kuhikuhi',
 'tog-rememberpassword' => 'Hoʻomanaʻo iaʻu ma kēia lolo uila (no ka palena nui o $1 {{PLURAL:$1|lā|mau lā}})',
 'tog-watchcreations' => 'Ho‘ohui i nā ‘ao‘ao i hana ai au i ka‘u papa nānā pono',
 'tog-watchdefault' => 'Ho‘ohui i nā ‘ao‘ao i ho‘opololei ai au i ka‘u papa nānā pono',
index 9c41369..43a760e 100644 (file)
@@ -26,6 +26,7 @@
  * @author YaronSh
  * @author Yona b
  * @author אור שפירא
+ * @author איתן96
  * @author דולב
  * @author ערן
  * @author פדיחה
@@ -492,11 +493,11 @@ $messages = array(
 'category-empty' => "'''קטגוריה זו אינה כוללת דפים או קובצי מדיה.'''",
 'hidden-categories' => '{{PLURAL:$1|קטגוריה מוסתרת|קטגוריות מוסתרות}}',
 'hidden-category-category' => 'קטגוריות מוסתרות',
-'category-subcat-count' => '{{PLURAL:$2|קטגוריה זו כוללת את קטגוריית המשנה הבאה בלבד|דף קטגוריה זה כולל את {{PLURAL:$1|קטגוריית המשנה הבאה|$1 קטגוריות המשנה הבאות}}, מתוך $2 בקטגוריה כולה}}.',
+'category-subcat-count' => '{{PLURAL:$2|קטגוריה זו כוללת את קטגוריית המשנה הבאה בלבד.|קטגוריה זו כוללת את {{PLURAL:$1|קטגוריית המשנה המוצגת להלן|$1 קטגוריות המשנה המוצגות להלן}}, וכוללת בסך הכול $2 קטגוריות משנה.}}',
 'category-subcat-count-limited' => 'קטגוריה זו כוללת את {{PLURAL:$1|קטגוריית המשנה הבאה|$1 קטגוריות המשנה הבאות}}.',
-'category-article-count' => '{{PLURAL:$2|קטגוריה זו כוללת את הדף הבא בלבד|דף קטגוריה זה כולל את {{PLURAL:$1|הדף הבא|$1 הדפים הבאים}}, מתוך $2 בקטגוריה כולה}}.',
+'category-article-count' => '{{PLURAL:$2|קטגוריה זו כוללת את הדף הבא בלבד.|קטגוריה זו כוללת את {{PLURAL:$1|הדף המוצג להלן|$1 הדפים המוצגים להלן}}, וכוללת בסך הכול $2 דפים.}}',
 'category-article-count-limited' => 'קטגוריה זו כוללת את {{PLURAL:$1|הדף הבא|$1 הדפים הבאים}}.',
-'category-file-count' => '{{PLURAL:$2|קטגוריה זו כוללת את הקובץ הבא בלבד|קטגוריה זו כוללת את {{PLURAL:$1|הקובץ הבא|$1 הקבצים הבאים}}, מתוך $2 בקטגוריה כולה}}.',
+'category-file-count' => '{{PLURAL:$2|קטגוריה זו כוללת את הקובץ הבא בלבד.|קטגוריה זו כוללת את {{PLURAL:$1|הקובץ המוצג להלן|$1 הקבצים המוצגים להלן}}, וכוללת בסך הכול $2 קבצים.}}',
 'category-file-count-limited' => 'קטגוריה זו כוללת את {{PLURAL:$1|הקובץ הבא|$1 הקבצים הבאים}}.',
 'listingcontinuesabbrev' => '(המשך)',
 'index-category' => 'דפים המופיעים במנועי חיפוש',
@@ -916,6 +917,9 @@ $2',
 'suspicious-userlogout' => 'בקשתך לצאת מהחשבון נדחתה כיוון שנראה שהיא נשלחה על־ידי דפדפן שבור או שרת פרוקסי עם זיכרון מטמון.',
 'createacct-another-realname-tip' => 'השם האמיתי הוא אופציונאלי.
 אם תבחרו לספקו, הוא ישמש לייחוס עבודת המשתמש אליו.',
+'pt-login' => 'כניסה לחשבון',
+'pt-createaccount' => 'יצירת חשבון',
+'pt-userlogout' => 'יציאה מהחשבון',
 
 # Email sending
 'php-mail-error-unknown' => 'שגיאה לא ידועה בפונקציה mail()‎ של PHP',
@@ -924,8 +928,7 @@ $2',
 
 # Change password dialog
 'changepassword' => 'שינוי סיסמה',
-'resetpass_announce' => 'נכנסתם באמצעות סיסמה זמנית שנשלחה אליכם בדוא"ל.
-כדי לסיים את הכניסה, עליכם לקבוע כאן סיסמה חדשה:',
+'resetpass_announce' => 'כדי לסיים את הכניסה, עליכם להגדיר סיסמה חדשה.',
 'resetpass_text' => '<!-- הוסיפו טקסט כאן -->',
 'resetpass_header' => 'שינוי סיסמת החשבון',
 'oldpassword' => 'סיסמה ישנה:',
@@ -941,8 +944,13 @@ $2',
 'resetpass-submit-cancel' => 'ביטול',
 'resetpass-wrong-oldpass' => 'הסיסמה הזמנית או הנוכחית אינה תקינה.
 ייתכן שכבר שינית את סיסמתך או שכבר ביקשת סיסמה זמנית חדשה.',
+'resetpass-recycled' => 'אנא אפסו את הסיסמה לסיסמה שונה מסיסמתכם הנוכחית.',
+'resetpass-temp-emailed' => 'נכנסתם באמצעות סיסמה זמנית שנשלחה אליכם בדוא"ל.
+כדי לסיים את הכניסה, עליכם להגדיר כאן סיסמה חדשה:',
 'resetpass-temp-password' => 'סיסמה זמנית:',
 'resetpass-abort-generic' => 'שינוי הסיסמה בוטל על־ידי הרחבה.',
+'resetpass-expired' => 'סיסמתכם פקעה. אנא הגדירו סיסמה חדשה כדי להיכנס.',
+'resetpass-expired-soft' => 'סיסמתכם פקעה, ויש לאפס אותה. אנא בחרו סיסמה חדשה כעת, או לחצו על "ביטול" כדי לאפס אותה מאוחר יותר.',
 
 # Special:PasswordReset
 'passwordreset' => 'איפוס סיסמה',
@@ -1431,8 +1439,8 @@ $1",
 'showhideselectedversions' => 'הצגת/הסתרת הגרסאות שנבחרו',
 'editundo' => 'ביטול',
 'diff-empty' => '(אין הבדלים)',
-'diff-multi-sameuser' => '({{PLURAL:$1|×\92רסת ×\91×\99× ×\99×\99×\9d ×\90×\97ת|$1 ×\92רס×\90×\95ת ×\91×\99× ×\99×\99×\9d}} ×\9e×\9eשת×\9eש ×\90×\97×\93 ×\90×\99× ×\9f ×\9e×\95צ×\92×\95ת)',
-'diff-multi-otherusers' => '({{PLURAL:$1|גרסת ביניים אחת|$1 גרסאות ביניים}}  {{PLURAL:$2|ממשתמש אחד|מ-$2 משתמשים}}  אינן מוצגות)',
+'diff-multi-sameuser' => '({{PLURAL:$1|×\92רסת ×\91×\99× ×\99×\99×\9d ×\90×\97ת|$1 ×\92רס×\90×\95ת ×\91×\99× ×\99×\99×\9d}} ×©×\9c ×\90×\95ת×\95 ×\9eשת×\9eש {{PLURAL:$1|×\90×\99× ×\94 ×\9e×\95צ×\92ת|×\90×\99× ×\9f ×\9e×\95צ×\92×\95ת}})',
+'diff-multi-otherusers' => '({{PLURAL:$1|גרסת ביניים אחת|$1 גרסאות ביניים}} של {{PLURAL:$2|משתמש אחר אחד|$2 משתמשים}} {{PLURAL:$1|אינה מוצגת|אינן מוצגות}})',
 'diff-multi-manyusers' => '({{PLURAL:$1|גרסת ביניים אחת|$1 גרסאות ביניים}} של יותר {{PLURAL:$2|ממשתמש אחד|מ־$2 משתמשים}} {{PLURAL:$1|אינה מוצגת|אינן מוצגות}})',
 'difference-missing-revision' => '{{PLURAL:$2|גרסה אחת|$2 גרסאות}} של ההבדל הזה בין שתי גרסאות ($1) {{PLURAL:$2|לא נמצאה|לא נמצאו}}.
 
@@ -1479,8 +1487,8 @@ $1",
 'searcheverything-enable' => 'חיפוש בכל מרחבי השם',
 'searchrelated' => 'קשור',
 'searchall' => 'הכול',
-'showingresults' => "{{PLURAL:$1|מוצגת תוצאה '''אחת'''|מוצגות עד '''$1''' תוצאות}} החל ממספר '''$2''':",
-'showingresultsinrange' => 'מוצגים להלן עד {{PLURAL:$1|תוצאה <strong>בודדת</strong>|<strong>$1</strong> תוצאות}} בטווח שבין #<strong>$2</strong> לבין #<strong>$3</strong>.',
+'showingresults' => '{{PLURAL:$1|מוצגת תוצאה <strong>אחת</strong>|מוצגות עד <strong>$1</strong> תוצאות}} החל ממספר <strong>$2</strong>:',
+'showingresultsinrange' => '{{PLURAL:$1|מוצגת תוצאה <strong>אחת</strong>|מוצגות עד <strong>$1</strong> תוצאות}} בין המספרים <strong>$2</strong> ו‏‏־<strong>$3</strong>:',
 'showingresultsnum' => "{{PLURAL:$3|מוצגת תוצאה '''אחת'''|מוצגות '''$3''' תוצאות}} החל ממספר '''$2''':",
 'showingresultsheader' => "{{PLURAL:$5|תוצאה '''$1''' מתוך '''$3'''|תוצאות '''$1 - $2''' מתוך '''$3'''}} עבור '''$4'''",
 'search-nonefound' => 'לא נמצאו תוצאות המתאימות לחיפוש.',
@@ -1799,18 +1807,30 @@ $1",
 'recentchanges-label-minor' => 'זוהי עריכה משנית',
 'recentchanges-label-bot' => 'עריכה זו בוצעה על־ידי בוט',
 'recentchanges-label-unpatrolled' => 'עריכה זו טרם נבדקה',
-'recentchanges-label-plusminus' => '×\9eספר ×\94×\91ת×\99×\9d ×©×\91×\95 ×\94שתנ×\94 ×\92×\95×\93×\9c ×\94×\93×£',
+'recentchanges-label-plusminus' => '×\92×\95×\93×\9c ×\94×\93×£ ×\94שתנ×\94 ×\91×\9eספר ×\96×\94 ×©×\9c ×\91ת×\99×\9d',
 'recentchanges-legend-heading' => "'''מקרא:'''",
 'recentchanges-legend-newpage' => '(ראו גם [[Special:NewPages|רשימת דפים חדשים]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'להלן <b>$1</b> השינויים האחרונים שבוצעו החל מתאריך <b>$2</b>:',
 'rclistfrom' => 'הצגת שינויים חדשים החל מ־$1',
 'rcshowhideminor' => '$1 שינויים משניים',
+'rcshowhideminor-show' => 'הצגת',
+'rcshowhideminor-hide' => 'הסתרת',
 'rcshowhidebots' => '$1 בוטים',
+'rcshowhidebots-show' => 'הצגת',
+'rcshowhidebots-hide' => 'הסתרת',
 'rcshowhideliu' => '$1 משתמשים רשומים',
+'rcshowhideliu-show' => 'הצגת',
+'rcshowhideliu-hide' => 'הסתרת',
 'rcshowhideanons' => '$1 משתמשים אנונימיים',
+'rcshowhideanons-show' => 'הצגת',
+'rcshowhideanons-hide' => 'הסתרת',
 'rcshowhidepatr' => '$1 עריכות בדוקות',
+'rcshowhidepatr-show' => 'הצגת',
+'rcshowhidepatr-hide' => 'הסתרת',
 'rcshowhidemine' => '$1 עריכות שלי',
+'rcshowhidemine-show' => 'הצגת',
+'rcshowhidemine-hide' => 'הסתרת',
 'rclinks' => 'הצגת $1 שינויים אחרונים ב־$2 הימים האחרונים.<br /> $3',
 'diff' => 'הבדל',
 'hist' => 'היסטוריה',
@@ -1938,6 +1958,8 @@ $1",
 'uploaddisabledtext' => 'אפשרות העלאת הקבצים מבוטלת.',
 'php-uploaddisabledtext' => 'אפשרות העלאת הקבצים מבוטלת ברמת PHP. אנא בדקו את ההגדרה file_uploads.',
 'uploadscripted' => 'הקובץ כולל קוד סקריפט או HTML שעשוי להתפרש או להתבצע בטעות על ידי הדפדפן.',
+'uploadscriptednamespace' => "קובץ ה‏‏֫־SVG הזה כולל מרחב שם בלתי חוקי: '$1'",
+'uploadinvalidxml' => 'לא ניתן לפרש את ה־XML בקובץ שהועלה.',
 'uploadvirus' => 'הקובץ מכיל וירוס!
 פרטים:
 <div dir="ltr">$1</div>',
@@ -2300,7 +2322,7 @@ $1',
 'mostcategories' => 'הדפים עם המספר הרב ביותר של קטגוריות',
 'mostimages' => 'הקבצים המקושרים ביותר',
 'mostinterwikis' => 'הדפים עם המספר הרב ביותר של קישורי בינוויקי',
-'mostrevisions' => '×\94×\93פ×\99×\9d ×\91×¢×\9c×\99 מספר העריכות הגבוה ביותר',
+'mostrevisions' => '×\94×\93פ×\99×\9d ×¢×\9d מספר העריכות הגבוה ביותר',
 'prefixindex' => 'רשימת הדפים המתחילים ב…',
 'prefixindex-namespace' => 'רשימת הדפים המתחילים ב… (במרחב השם $1)',
 'prefixindex-strip' => 'הסתרת התחילית ברשימה',
@@ -2310,9 +2332,11 @@ $1',
 'deadendpagestext' => 'הדפים הבאים אינם מקשרים לדפים אחרים באתר {{SITENAME}}.',
 'protectedpages' => 'דפים מוגנים',
 'protectedpages-indef' => 'הגנות לזמן בלתי מוגבל בלבד',
+'protectedpages-summary' => 'בדף זה רשומים הדפים הקיימים שמוגנים כרגע. לרשימת הכותרות שמוגנות מפני יצירה, ראו את [[{{#special:ProtectedTitles}}|דף הכותרות המוגנות]].',
 'protectedpages-cascade' => 'הגנות מדורגות בלבד',
 'protectedpages-noredirect' => 'הסתרת הפניות',
 'protectedpagesempty' => 'אין כרגע דפים מוגנים עם הפרמטרים הללו.',
+'protectedpages-timestamp' => 'תאריך ושעה',
 'protectedpages-page' => 'דף',
 'protectedpages-expiry' => 'זמן פקיעה',
 'protectedpages-performer' => 'הוגן על ידי',
@@ -2321,11 +2345,12 @@ $1',
 'protectedpages-unknown-timestamp' => 'לא ידוע',
 'protectedpages-unknown-performer' => 'משתמש לא ידוע',
 'protectedtitles' => 'כותרות מוגנות',
+'protectedtitles-summary' => 'בדף זה רשומות הכותרות שמוגנות כעת מפני יצירה. לרשימת הדפים הקיימים שמוגנים, ראו את [[{{#special:ProtectedPages}}|דף הדפים המוגנים]].',
 'protectedtitlesempty' => 'אין כרגע כותרות מוגנות עם הפרמטרים האלה.',
 'listusers' => 'רשימת משתמשים',
 'listusers-editsonly' => 'הצגת משתמשים עם עריכות בלבד',
-'listusers-creationsort' => 'ס×\99×\93×\95ר לפי תאריך היצירה',
-'listusers-desc' => 'ס×\99×\93×\95ר בסדר יורד',
+'listusers-creationsort' => '×\9e×\99×\95×\9f לפי תאריך היצירה',
+'listusers-desc' => '×\9e×\99×\95×\9f בסדר יורד',
 'usereditcount' => '{{PLURAL:$1|עריכה אחת|$1 עריכות}}',
 'usercreated' => '{{GENDER:$3|נוצר|נוצרה}} ב־$2, $1',
 'newpages' => 'דפים חדשים',
@@ -2508,7 +2533,7 @@ $1',
 'watchmethod-list' => 'בודק את העריכות האחרונות בדפים שברשימת המעקב',
 'watchlistcontains' => 'רשימת המעקב כוללת {{PLURAL:$1|דף אחד|$1 דפים}}.',
 'iteminvalidname' => 'בעיה עם $1, שם שגוי…',
-'wlnote2' => 'להלן השינויים האחרונים ב{{PLURAL:$1|שעה האחרונה|-<strong> $1 </strong> שעות האחרונות}}, מ-$2, $3.',
+'wlnote2' => 'להלן השינויים האחרונים {{PLURAL:$1|בשעה האחרונה|בשעתיים האחרונות|ב‏‏־<strong>$1</strong> השעות האחרונות}}, עד $3, $2.',
 'wlshowlast' => '(הצגת $1 שעות אחרונות | $2 ימים אחרונים | $3)',
 'watchlist-options' => 'אפשרויות ברשימת המעקב',
 
@@ -2566,7 +2591,7 @@ $UNWATCHURL
 'deletepage' => 'מחיקה',
 'confirm' => 'אישור',
 'excontent' => 'התוכן היה: "$1"',
-'excontentauthor' => 'התוכן היה: "$1" (וה{{gender:$2|תורם היחיד היה|תורמת היחידה הייתה}} "[[Special:Contributions/$2|$2]]")',
+'excontentauthor' => 'התוכן היה: "$1" ({{GENDER:$2|והתורם היחיד היה|והתורמת היחידה הייתה}} "[[Special:Contributions/$2|$2]]")',
 'exbeforeblank' => 'התוכן לפני שרוקן היה: "$1"',
 'exblank' => 'הדף היה ריק',
 'delete-confirm' => 'מחיקת $1',
@@ -2771,6 +2796,7 @@ $1',
 'sp-contributions-search' => 'חיפוש תרומות',
 'sp-contributions-username' => 'שם משתמש או כתובת IP:',
 'sp-contributions-toponly' => 'הצגת עריכות שהן הגרסאות האחרונות בלבד',
+'sp-contributions-newonly' => 'הצגת עריכות שהן יצירות של דפים בלבד',
 'sp-contributions-submit' => 'חיפוש',
 
 # What links here
@@ -2874,7 +2900,7 @@ $1',
 'contribslink' => 'תרומות',
 'emaillink' => 'שליחת דוא"ל',
 'autoblocker' => 'נחסמתם באופן אוטומטי משום שאתם חולקים את כתובת ה־IP שלכם עם [[User:$1|$1]].
-הסיבה שניתנה לחסימת $1 היא "\'\'\'$2\'\'\'"',
+הסיבה שניתנה לחסימת $1 היא "$2"',
 'blocklogpage' => 'יומן חסימות',
 'blocklog-showlog' => 'משתמש זה נחסם בעבר.
 יומן החסימות מוצג להלן:',
@@ -3084,6 +3110,7 @@ $2',
 'thumbnail_image-type' => 'סוג התמונה אינו נתמך',
 'thumbnail_gd-library' => 'הגדרת הספריה GD אינה שלמה: חסרה הפונקציה $1',
 'thumbnail_image-missing' => 'נראה שהקובץ הבא חסר: $1',
+'thumbnail_image-failure-limit' => 'היו לאחרונה ניסיונות רבים מדי ($1 או יותר) ליצור את התמונה הממוזערת הזו. אנו נסו שוב מאוחר יותר.',
 
 # Special:Import
 'import' => 'ייבוא דפים',
@@ -3131,6 +3158,7 @@ $2',
 'import-error-special' => 'לא ניתן לייבא את הדף "$1" כיוון שהוא שייך למרחב שם מיוחד שלא יכול להכיל דפים.',
 'import-error-invalid' => 'לא ניתן לייבא את הדף "$1" כיוון ששמו אינו תקין.',
 'import-error-unserialize' => 'לא ניתן היה לפענח את הגרסה $2 של הדף "$1". הגרסה מסומנת כאילו היא משתמשת במודל התוכן $3, אך קודדה כ{{GRAMMAR:תחילית|$4}}.',
+'import-error-bad-location' => 'גרסה $2 המשתמשת במודל התוכן $3 אינה ניתנת לשמירה ב‏‏֫דף "$1" באתר ויקי זה, כיוון שהמודל אינו נתמך בדף זה.',
 'import-options-wrong' => '{{PLURAL:$2|אפשרות שגויה|אפשרויות שגויות}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'לדף הבסיס שניתן יש כותרת לא תקינה.',
 'import-rootpage-nosubpage' => 'מרחב השם "$1" של דף הבסיס אינו מאפשר דפי־משנה.',
@@ -3208,7 +3236,7 @@ $2',
 'tooltip-ca-nstab-help' => 'צפייה בדף העזרה',
 'tooltip-ca-nstab-category' => 'צפייה בדף הקטגוריה',
 'tooltip-minoredit' => 'סימון עריכה זו כמשנית',
-'tooltip-save' => 'ש×\9e×\99רת ×\94ש×\99× ×\95×\99×\99×\9d ×©×\91×\99צעת',
+'tooltip-save' => 'ש×\9e×\99רת ×\94ש×\99× ×\95×\99×\99×\9d ×©×\9c×\9a',
 'tooltip-preview' => 'תצוגה מקדימה, אנא השתמשו באפשרות זו לפני השמירה!',
 'tooltip-diff' => 'צפייה בשינויים שערכתם בטקסט',
 'tooltip-compareselectedversions' => 'צפייה בהשוואת שתי גרסאות של דף זה',
@@ -4384,6 +4412,4 @@ $5
 'expand_templates_generate_rawhtml' => 'הצגת HTML גולמי',
 'expand_templates_preview' => 'תצוגה מקדימה',
 
-# Unknown messages
-'uploadinvalidxml' => 'לא ניתן לפרש את ה־XML בקובץ שהועלה.',
 );
index 9e8ad31..dffde68 100644 (file)
@@ -53,6 +53,7 @@
  * @author Taxman
  * @author Venky2834
  * @author Vibhijain
+ * @author Vivek Rai
  * @author Wikiconference
  * @author לערי ריינהארט
  * @author आलोक
@@ -472,7 +473,7 @@ $1',
 'editsectionhint' => 'अनुभाग सम्पादन: $1',
 'toc' => 'विषय सूची',
 'showtoc' => 'दिखाएँ',
-'hidetoc' => 'à¤\9bिपाएँ',
+'hidetoc' => 'à¤\9bà¥\81पाएँ',
 'collapsible-collapse' => 'छोटा करें',
 'collapsible-expand' => 'विस्तार करें',
 'thisisdeleted' => '$1 देखें या वापिस लाएँ?',
@@ -738,6 +739,9 @@ $2',
 'suspicious-userlogout' => 'अपका लॉग आउट करने का अनुरोध अस्वीकृत कर दिया गया है क्योंकि ऐसा प्रतीत होता है कि यह किसी खराब ब्राउज़र या कैश करने वाली प्रॉक्सी द्वारा भेजा गया था।',
 'createacct-another-realname-tip' => 'असली नाम देना आवश्यक नहीं है।
 यदि आप प्रदान करते हैं तो इसका प्रयोग सदस्य के योगदानों के लिये उनको श्रेय (attribution) देने के लिये किया जायेगा।',
+'pt-login' => 'लॉग इन',
+'pt-createaccount' => 'खाता बनाएँ',
+'pt-userlogout' => 'लॉगआउट',
 
 # Email sending
 'php-mail-error-unknown' => 'PHP के mail() फ़ंक्शन में अज्ञात त्रुटि हुई।',
@@ -746,8 +750,7 @@ $2',
 
 # Change password dialog
 'changepassword' => 'कूटशब्द बदलें',
-'resetpass_announce' => 'आप ई-मेल से प्राप्त अस्थायी कोड से लॉग इन हुए हैं।
-लॉग इन को पूरा करने के लिये आपको यहाँ एक नया कूटशब्द देना होगा:',
+'resetpass_announce' => 'लॉग इन सम्पूर्ण करने के लिये आपको एक नया पासवर्ड देना होगा।',
 'resetpass_text' => '<!-- पाठ यहाँ लिखें -->',
 'resetpass_header' => 'खाते का कूटशब्द बदलें',
 'oldpassword' => 'पुराना कूटशब्द:',
@@ -763,8 +766,13 @@ $2',
 'resetpass-submit-cancel' => 'रद्द करें',
 'resetpass-wrong-oldpass' => 'अवैध अस्थायी या वर्तमान कूटशब्द।
 संभव है कि या तो आपने पहले ही सफलतापूर्वक अपना कूटशब्द बदल लिया हो, या आपने एक नए अस्थायी कूटशब्द का अनुरोध किया हो।',
+'resetpass-recycled' => 'रीसेट करने के लिए नये पासवर्ड में कृपया अपने वर्तमान पासवर्ड के अलावा किसी अन्य पासवर्ड का प्रयोग करें।',
+'resetpass-temp-emailed' => 'आपने एक अस्थायी ईमेल किये गये कोड के साथ लॉग इन किया।
+लॉग इन सम्पूर्ण करने के लिए आपको यहाँ एक नया पासवर्ड सेट करना होगा:',
 'resetpass-temp-password' => 'अस्थायी कूटशब्द:',
 'resetpass-abort-generic' => 'कूटशब्द में बदलाव किसी एक्सटेंशन द्वारा रोक दिया गया है।',
+'resetpass-expired' => 'आपके पासवर्ड की वैधता अवधि समाप्त हो चुकी है। कृपया लॉग इन करने के लिए एक नया पासवर्ड सेट करें।',
+'resetpass-expired-soft' => "आपका पासवर्ड की वैधता अवधि समाप्त हो गयी है, और उसे रीसेट करने की ज़रूरत है। कृपया एक नया पासवर्ड चुनें, या बाद में रीसेट करने के लिए 'रद्द करें' पर क्लिक करें।",
 
 # Special:PasswordReset
 'passwordreset' => 'कूटशब्द रीसेट',
@@ -1125,7 +1133,7 @@ $2
 'rev-deleted-comment' => '(सम्पादन सारांश हटाया)',
 'rev-deleted-user' => '(सदस्यनाम हटाया)',
 'rev-deleted-event' => '(लॉग कार्य हटाया)',
-'rev-deleted-user-contribs' => 'संशोधन उपयोगकर्ता योगदान नष्ट',
+'rev-deleted-user-contribs' => '[सदस्यनाम अथवा आइ॰पी पता छुपाया गया - सम्पादन योगदानों में से छुपाया गया]',
 'rev-deleted-text-permission' => 'यह पृष्ठ अवतरण हटाया गया है।
 इसकी अधिक जानकारी [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} हटाने की लॉग] में पाई जा सकती है।',
 'rev-deleted-text-unhide' => 'यह पृष्ठ अवतरण हटाया गया है।
@@ -1327,7 +1335,7 @@ $1",
 'prefs-skin' => 'त्वचा',
 'skin-preview' => 'झलक',
 'datedefault' => 'खा़स पसंद नहीं',
-'prefs-beta' => 'बà¥\80à¤\9fा à¤µà¤¿à¤¶à¥\87षताएँ',
+'prefs-beta' => 'बà¥\80à¤\9fा à¤¸à¥\81विधाएँ',
 'prefs-datetime' => 'दिनांक तथा समय',
 'prefs-labs' => 'लैब विशेषताएँ',
 'prefs-user-pages' => 'सदस्य पृष्ठ',
@@ -1627,15 +1635,27 @@ HTML टैग की जाँच करें।',
 'rcnotefrom' => "नीचे '''$2''' के बाद से ('''$1''' तक) हुए बदलाव दर्शाए गये हैं।",
 'rclistfrom' => '$1 से नये बदलाव दिखाएँ',
 'rcshowhideminor' => 'छोटे बदलाव $1',
+'rcshowhideminor-show' => 'दिखाएँ',
+'rcshowhideminor-hide' => 'छुपाएँ',
 'rcshowhidebots' => 'बॉट $1',
+'rcshowhidebots-show' => 'दिखाएँ',
+'rcshowhidebots-hide' => 'छुपाएँ',
 'rcshowhideliu' => 'पंजीकृत सदस्य $1',
+'rcshowhideliu-show' => 'दिखाएँ',
+'rcshowhideliu-hide' => 'छुपाएँ',
 'rcshowhideanons' => 'आइ॰पी सदस्यों के बदलाव $1',
+'rcshowhideanons-show' => 'दिखाएँ',
+'rcshowhideanons-hide' => 'छुपाएँ',
 'rcshowhidepatr' => 'परीक्षित सम्पादन $1',
+'rcshowhidepatr-show' => 'दिखाएँ',
+'rcshowhidepatr-hide' => 'छुपाएँ',
 'rcshowhidemine' => 'मेरे बदलाव $1',
+'rcshowhidemine-show' => 'दिखाएँ',
+'rcshowhidemine-hide' => 'छुपाएँ',
 'rclinks' => 'पिछले $2 दिनों में हुए $1 बदलाव दिखाएँ<br />$3',
 'diff' => 'अंतर',
 'hist' => 'इतिहास',
-'hide' => 'à¤\9bिपाएँ',
+'hide' => 'à¤\9bà¥\81पाएँ',
 'show' => 'दिखाएँ',
 'minoreditletter' => 'छो',
 'newpageletter' => 'न',
@@ -1762,6 +1782,7 @@ HTML टैग की जाँच करें।',
 'php-uploaddisabledtext' => 'पी॰एच॰पी में फ़ाइल अपलोड बंद हैं।
 कृपया file_uploads जमाव की जाँच करें।',
 'uploadscripted' => 'इस फ़ाइल में एच॰टी॰एम॰एल या स्क्रिप्ट कोड है, जो वेब ब्राउज़र द्वारा गलत पढ़ा जा सकता है।',
+'uploadinvalidxml' => 'अपलोड की गई फ़ाइल में स्थित XML पार्स नहीं की जा सकी।',
 'uploadvirus' => 'इस फ़ाइल में व्हाईरस हैं! अधिक जानकारी: $1',
 'uploadjava' => 'यह फ़ाइल एक ज़िप फ़ाइल है जिसमें एक जावा .class फ़ाइल है।
 जावा फ़ाइलों को अपलोड करना वर्जित है, क्योंकि इनके कारण सुरक्षा बाधाएँ पार की जा सकती हैं।',
@@ -2137,7 +2158,16 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 'protectedpages-cascade' => 'केवल सोपानी सुरक्षा',
 'protectedpages-noredirect' => 'पुनर्निर्देश छुपाएँ',
 'protectedpagesempty' => 'इस समय इन नियमों द्वारा कोई पृष्ठ सुरक्षित नहीं हैं।',
+'protectedpages-timestamp' => 'समय मुहर',
+'protectedpages-page' => 'पृष्ठ',
+'protectedpages-expiry' => 'समाप्ति',
+'protectedpages-performer' => 'सुरक्षित करने वाला सदस्य',
+'protectedpages-params' => 'सुरक्षा प्राचल',
+'protectedpages-reason' => 'कारण',
+'protectedpages-unknown-timestamp' => 'अज्ञात',
+'protectedpages-unknown-performer' => 'अज्ञात सदस्य',
 'protectedtitles' => 'सुरक्षित शीर्षक',
+'protectedtitles-summary' => 'यह पृष्ठ उन पृष्ठ शीर्षकों की सूची देता है जिन्हें अभी बनाने से सुरक्षित किया गया है। सुरक्षित मौजूदा पृष्ठों की सूची देखने के लिए [[{{#special:ProtectedPages}}]] देखें।',
 'protectedtitlesempty' => 'इन नियमों द्वारा कोई भी शीर्षक सुरक्षित नहीं हैं।',
 'listusers' => 'सदस्यसूची',
 'listusers-editsonly' => 'केवल संपादन कर चुके सदस्य दिखाएँ',
@@ -2323,7 +2353,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 'watchmethod-list' => 'ध्यानसूची में दिये गये पृष्ठों में हाल में हुए बदलाव देख रहे हैं',
 'watchlistcontains' => 'आपकी ध्यानसूची में $1 {{PLURAL:$1|पृष्ठ}} हैं।',
 'iteminvalidname' => "'$1' के साथ समस्या, अवैध नाम...",
-'wlnote2' => '$2,$3 तक आखरी {{PLURAL:$1|घंटे|<strong>$1</strong>घंटों}} में बदलाव निम्नलिखित हैं।',
+'wlnote2' => '$2,$3 तक आखरी {{PLURAL:$1|घंटे|<strong>$1</strong> घंटों}} में बदलाव निम्नलिखित हैं।',
 'wlshowlast' => 'पिछले $1 घंटे $2 दिन $3 देखें',
 'watchlist-options' => 'ध्यानसूची विकल्प',
 
@@ -2413,6 +2443,7 @@ $UNWATCHURL
 'delete-warning-toobig' => 'इस पृष्ठ का संपादन इतिहास $1 से अधिक {{PLURAL:$1|अवतरण}} होने की वजह से बहुत बड़ा है।
 इसे हटाने से {{SITENAME}} के डाटाबेस की गतिविधियों में व्यवधान आ सकता है;
 कृपया सोच समझ कर आगे बढ़ें।',
+'deleting-backlinks-warning' => "'''चेतावनी:''' जो पृष्ठ आप हटाने जा रहे हैं उससे अन्य पृष्ठ जुड़ते हैं अथवा उसे ट्रांसक्लूड करते हैं।",
 
 # Rollback
 'rollback' => 'संपादन वापिस लें',
@@ -2452,6 +2483,7 @@ $2 द्वारा संपादित अन्तिम अवतरण 
 'prot_1movedto2' => '[[$1]] का नाम बदलकर [[$2]] कर दिया गया है',
 'protect-badnamespace-title' => 'सुरक्षाहीन नामस्थान',
 'protect-badnamespace-text' => 'इस नामस्थान में पृष्ठ सुरक्षित नहीं किये जा सकते हैं।',
+'protect-norestrictiontypes-text' => 'यह पृष्ठ सुरक्षित नहीं किया जा सकता क्योंकि कोई सुरक्षा प्रकार उपलब्ध नहीं हैं।',
 'protect-legend' => 'सुरक्षा निर्धारित करें',
 'protectcomment' => 'कारण:',
 'protectexpiry' => 'समाप्ति:',
@@ -2668,7 +2700,7 @@ $1',
 'blocklist-tempblocks' => 'अस्थाई अवरोध छिपाएं',
 'blocklist-addressblocks' => 'एकल आईपी अवरोध छिपाएं',
 'blocklist-rangeblocks' => 'श्रेणी ब्लॉक छुपाएँ',
-'blocklist-timestamp' => 'à¤\9fाà¤\87मसà¥\8dà¤\9fà¥\88मà¥\8dप',
+'blocklist-timestamp' => 'समय à¤®à¥\81हर',
 'blocklist-target' => 'लक्ष्य',
 'blocklist-expiry' => 'अवसान',
 'blocklist-by' => 'प्रशासक अवरुद्ध',
@@ -2730,7 +2762,8 @@ $1 को अवरोधित करने का कारण है: "$2"',
 कृपया आप अपने इंटरनेट सेवा प्रदान करने वाले से या तकनीकी सहायक से सम्पर्क करें अथवा उन्हें इस भयावह सुरक्षा समस्या के बारे में सूचित करें।',
 'sorbsreason' => '{{SITENAME}} द्वारा इस्तेमालमें लाये जाने वाले DNSBL में आपके आईपी एड्रेसको ओपन प्रॉक्सीमें दर्शाया गया हैं।',
 'sorbs_create_account_reason' => '{{SITENAME}} के DNSBL ने आपका आईपी एड्रेस ओपन प्रोक्सी करके सूचित किया हैं। आप खाता खोल नहीं सकतें।',
-'cant-see-hidden-user' => 'कठबोली छुपा उपयोगकर्ता देखना',
+'cant-see-hidden-user' => 'जिस सदस्य को आप अवरोधित करने की कोशिश कर रहे हैं उसे पहले ही अवरोधित कर के छुपाया जा चुका है।
+चूँकि आपके पास hideuser अधिकार नहीं है, आप इस सदस्य का अवरोधन ना देख सकते हैं और ना ही सम्पादित कर सकते हैं।',
 'ipbblocked' => 'आप अन्य प्रयोक्ताओं को अवरोधित या अनवरोधित नहीं कर सकते, क्योंकि आप स्वयं अवरोधित हैं',
 'ipbnounblockself' => 'आपको स्वयं को अनवरोधित करने की अनुमति नहीं है',
 
@@ -2794,7 +2827,7 @@ $1 को अवरोधित करने का कारण है: "$2"',
 
 इन मामलोंमे आपको स्वयं यह पृष्ठ जोडने पड़ सकते है ।",
 'movearticle' => 'पृष्ठ का नाम बदलें',
-'moveuserpage-warning' => 'चाल उपयोगकर्ता चेतावनी पृष्ठ',
+'moveuserpage-warning' => '<strong>चेतावनी:</strong> आप एक सदस्य पृष्ठ स्थानांतरित करने जा रहे हैं। कृपया ध्यान दें कि केवल पृष्ठ का नाम बदला जाएगा और सदस्यनाम <em>नहीं</em> बदलेगा।',
 'movenologintext' => 'लेख स्थानान्तरित करने के लिये आपका [[Special:UserLogin|लॉग इन]] किया होना आवश्यक हैं।',
 'movenotallowed' => 'आपको पृष्ठ स्थानांतरित करने की अनुमति नहीं है।',
 'movenotallowedfile' => 'आपको फ़ाइलें स्थानांतरित करने की अनुमति नहीं है।',
@@ -2848,7 +2881,8 @@ $1 को अवरोधित करने का कारण है: "$2"',
 नवीनतम लॉग प्रविष्टि संदर्भ के लिये नीचे दी है:",
 'move-over-sharedrepo' => '== फ़ाइल मौजूद है ==
 [[:$1]] एक साझे भंडार पर मौजूद है। इस नाम पर स्थानांतरण से नई फ़ाइल साझा फ़ाइल को ओवरराइड करेगी।',
-'file-exists-sharedrepo' => 'फ़ाइल रेपो साझा मौजूद',
+'file-exists-sharedrepo' => 'चयनित फ़ाइल नाम पहले ही एक साझा भण्डार में प्रयुक्त है।
+कृपया अन्य नाम चुनें।',
 
 # Export
 'export' => 'पन्नों का निर्यात करें',
@@ -3154,7 +3188,8 @@ $1',
 'nextdiff' => 'ताज़ा संपादन →',
 
 # Media information
-'mediawarning' => 'चेतावनी मीडिया',
+'mediawarning' => '<strong>चेतावनी:</strong> इस फ़ाइल प्रकार में हानिकारक कोड हो सकता है।
+संभव है कि इसे चलाने से आपका सिस्टम हैक हो जाये।',
 'imagemaxsize' => "छवि आकार सीमा:<br />''(संचिका वर्णन पन्नों के लिए)''",
 'thumbsize' => 'अंगूठानख आकार:',
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|पृष्ठ|पृष्ठ}}',
@@ -3862,8 +3897,16 @@ $5
 'version-hook-subscribedby' => 'ने सदस्यत्व लिया',
 'version-version' => '($1)',
 'version-license' => 'मीडियाविकि अनुज्ञापत्र',
+'version-ext-license' => 'लाइसेंस',
+'version-ext-colheader-name' => 'एक्सटेंशन',
+'version-ext-colheader-version' => 'संस्करण',
+'version-ext-colheader-license' => 'लाइसेंस',
 'version-ext-colheader-description' => 'विवरण',
 'version-ext-colheader-credits' => 'लेखक',
+'version-license-title' => '$1 के लिए लाइसेंस',
+'version-license-not-found' => 'इस एक्सटेंशन के लिए कोई विस्तृत लाइसेंस जानकारी नहीं पायी गयी।',
+'version-credits-title' => '$1 के लिए श्रेय',
+'version-credits-not-found' => 'इस एक्सटेंशन के लिए कोई विस्तृत श्रेय जानकारी नहीं पायी गयी।',
 'version-poweredby-credits' => "यह विकि  '''[https://www.mediawiki.org/ MediaWiki]''' द्वारा संचालित है, कॉपीराइट © 2001 - $1  $2 ।",
 'version-poweredby-others' => 'अन्य',
 'version-poweredby-translators' => 'translatewiki.net अनुवादक',
@@ -3873,6 +3916,8 @@ $5
 'version-entrypoints-header-url' => 'यू॰आर॰एल',
 
 # Special:Redirect
+'redirect-submit' => 'जायें',
+'redirect-lookup' => 'ढूँढें:',
 'redirect-user' => 'सदस्य आई॰डी',
 'redirect-revision' => 'पृष्ठ अवतरण संख्या',
 'redirect-file' => 'फ़ाइल नाम',
@@ -3929,7 +3974,10 @@ $5
 'tags-tag' => 'चिप्पी का नाम',
 'tags-display-header' => 'बदलाव सूचियों में प्रदर्शन',
 'tags-description-header' => 'अर्थ का पूरा वर्णन',
+'tags-active-header' => 'सक्रिय?',
 'tags-hitcount-header' => 'चिप्पी वाले बदलाव',
+'tags-active-yes' => 'हाँ',
+'tags-active-no' => 'नहीं',
 'tags-edit' => 'सम्पादन',
 'tags-hitcount' => '$1 {{PLURAL:$1|बदलाव|बदलाव}}',
 
@@ -3949,6 +3997,7 @@ $5
 'dberr-problems' => 'क्षमा करें! इस जालस्थल को कुछ तकनीकी परेशानियों का सामना करना पड़ रहा है।',
 'dberr-again' => 'कुछ मिनट रुकने के बाद फिर से चढ़ाएँ।',
 'dberr-info' => '(आँकड़ाकोष सेवक से संपर्क नहीं हो पा रहा:$1)',
+'dberr-info-hidden' => '(डाटाबेस सर्वर से संपर्क नहीं किया जा सका)',
 'dberr-usegoogle' => 'इस बीच आप गूगल से खोज करने की कोशिश कर सकते हैं।',
 'dberr-outofdate' => 'ध्यान दे, हो सकता है कि हमारी सामग्री से संबंधित उनकी सूची बासी हो।',
 'dberr-cachederror' => 'यह अनुरोधित पन्ने की संचित प्रति है, हो सकता है यह ताज़ी न हो।',
@@ -4080,6 +4129,16 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|शताब्दी}}',
 'duration-millennia' => '$1 {{PLURAL:$1|सहस्राब्दी}}',
 
+# Limit report
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|सॅकेंड}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|सॅकेंड}}',
+'limitreport-postexpandincludesize' => 'विस्तार उपरांत विकिपाठ आकार',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|बाइट}}',
+'limitreport-templateargumentsize' => 'साँचा प्राचल आकार',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|बाइट}}',
+'limitreport-expansiondepth' => 'उच्चतम विस्तार गहराई',
+'limitreport-expensivefunctioncount' => 'महंगे पार्सर फंक्शनों की संख्या',
+
 # Special:ExpandTemplates
 'expandtemplates' => 'साँचा विस्तार',
 'expand_templates_intro' => 'यह विशेष पृष्ठ पाठ इनपुट लेता है और सभी साँचों को विस्तृत करता है।
@@ -4096,6 +4155,4 @@ $5
 'expand_templates_generate_xml' => 'XML का पार्स (parse) वृक्ष दर्शायें',
 'expand_templates_preview' => 'झलक',
 
-# Unknown messages
-'uploadinvalidxml' => 'अपलोड की गई फ़ाइल में स्थित XML पार्स नहीं की जा सकी।',
 );
index 860a64f..3205753 100644 (file)
@@ -198,7 +198,6 @@ $messages = array(
 'vector-action-protect' => 'Bachao',
 'vector-action-undelete' => 'Pahile jaise karo',
 'vector-action-unprotect' => 'Surakchha ke badlo',
-'vector-simplesearch-preference' => 'Aur achchhaa se khoje ke salah do (Khaali vector skin)',
 'vector-view-create' => 'Banao',
 'vector-view-edit' => 'Badlo',
 'vector-view-history' => 'Itihaas dekho',
index 6368b57..52b9dd9 100644 (file)
@@ -168,7 +168,6 @@ $messages = array(
 'vector-action-protect' => 'Pangapinan',
 'vector-action-undelete' => 'Dulaon ang pagpanas',
 'vector-action-unprotect' => 'Ilisan ang pagpangapin',
-'vector-simplesearch-preference' => 'Sugdan ang mas ginpamaayo nga suhestiyon sa pagpangita (Para sa vector nga panit lamang)',
 'vector-view-create' => 'Himuon',
 'vector-view-edit' => 'Ilisan',
 'vector-view-history' => 'Lantawon ang kasaysayan',
index 3b669ec..eb498f7 100644 (file)
@@ -1465,7 +1465,7 @@ Ne smije biti duži od $1 {{PLURAL:$1|znaka|znaka|znakova}}.',
 'gender-unknown' => 'Neodređeni',
 'gender-male' => 'Muški',
 'gender-female' => 'Ženski',
-'prefs-help-gender' => 'Mogućnost softvera da ispravno oslovljava razlikujući spol. Ovaj podatak bit će javan.',
+'prefs-help-gender' => 'Mogućnost softvera da ispravno oslovljava razlikujući spol. Ovaj će podatak biti javan.',
 'email' => 'Adresa elektroničke pošte *',
 'prefs-help-realname' => 'Pravo ime nije obvezno. Ako ga navedete, bit će korišteno za pravnu atribuciju Vaših doprinosa.',
 'prefs-help-email' => 'E-mail adresa nije obvezna, ali je potrebna za obnovu lozinke u slučaju da ju zaboravite.',
index 508ddf3..c62b6d4 100644 (file)
@@ -683,6 +683,9 @@ Móžeš tutu zdźělenku ignorować, jeli so wužiwarske konto zmylnje wutwori
 'suspicious-userlogout' => 'Twoje naprašowanje za wotzjewjenje bu wotpokazane, dokelž zda so, jako by so přez wobškodźeny wobhladowak abo pufrowacy proksy pósłało',
 'createacct-another-realname-tip' => '* Woprawdźite mjeno je opcionalne.
 Jeli jo podaš, budźe so to wužiwać, zo by přinoški přirjadowało.',
+'pt-login' => 'Přizjewić',
+'pt-createaccount' => 'Konto załožić',
+'pt-userlogout' => 'Wotzjewić',
 
 # Email sending
 'php-mail-error-unknown' => 'Njeznaty zmylk w PHP-funkciji mail()',
@@ -691,7 +694,7 @@ Jeli jo podaš, budźe so to wužiwać, zo by přinoški přirjadowało.',
 
 # Change password dialog
 'changepassword' => 'Hesło změnić',
-'resetpass_announce' => 'Sy so z nachwilnym e-mejlowanym kodom přizjewił. Zo by přizjewjenje zakónčił, dyrbiš nětko nowe hesło postajić:',
+'resetpass_announce' => 'Zo by přizjewjenje skónčił, dyrbiš nowe hesło postajić.',
 'resetpass_text' => '<!-- Tu tekst zasunyć -->',
 'resetpass_header' => 'Kontowe hesło změniś',
 'oldpassword' => 'Stare hesło:',
@@ -706,8 +709,13 @@ Jeli jo podaš, budźe so to wužiwać, zo by přinoški přirjadowało.',
 'resetpass-submit-cancel' => 'Přetorhnyć',
 'resetpass-wrong-oldpass' => 'Njepłaćiwe nachwilne abo aktualne hesło.
 Snano sy swoje hesło hižo wuspěšnje změnił abo nowe nachwilne hesło požadał.',
+'resetpass-recycled' => 'Prošu staj swoje hesło na druhe hesło hač twoje aktualne hesło.',
+'resetpass-temp-emailed' => 'Sy so z nachwilnym e-mejlowym kodom přizjewił.
+Zo by přizjewjenje skónčił, dyrbiš tu nowe hesło postajić:',
 'resetpass-temp-password' => 'Nachwilne hesło:',
 'resetpass-abort-generic' => 'Měnjenje hesła je so přez rozšěrjenje přetorhnyło.',
+'resetpass-expired' => 'Twoje hesło je spadnyło. Prošu postaj nowe hesło za přizjewjenje.',
+'resetpass-expired-soft' => 'Twoje hesło je spadnyło a dyrbi so wróćo stajić. Prošu wubjer nětko druhe hesło abo klikń na "Přetorhnyć", zo by jo pozdźišo wróćo stajił.',
 
 # Special:PasswordReset
 'passwordreset' => 'Hesło wróćo stajić',
@@ -1670,6 +1678,7 @@ Jeli maš tutón wobraz z połnym rozeznaćom, nahraj tutón, hewak změń proš
 'uploaddisabledtext' => 'Nahraće datajow je znjemóžnjene.',
 'php-uploaddisabledtext' => 'Nahraća PHP-datajow su znjemóžnjene. Prošu skontroluj nastajenje file_uploads.',
 'uploadscripted' => 'Dataja wobsahuje HTML- abo skriptowy kod, kotryž móhł so mylnje přez wobhladowak wuwjesć.',
+'uploadinvalidxml' => 'XML w nahratej dataji njeda so parsować.',
 'uploadvirus' => 'Dataja wirus wobsahuje! Podrobnosće: $1',
 'uploadjava' => 'Tuta dataja je ZIP-dataja, kotraž .class-dataju z Javy wobsahuje.
 Nahraće datajow Javy njeje dowolene, dokelž móhli wobeńdźenje wěstotnych wobmjezowanjow zmóžnić.',
@@ -2044,6 +2053,7 @@ Kóžda rjadka wobsahuje wotkazy k prěnjemu a druhemu daleposrědkowanju kaž t
 'protectedpages-unknown-timestamp' => 'Njeznaty',
 'protectedpages-unknown-performer' => 'Njeznaty wužiwar',
 'protectedtitles' => 'Škitane titule',
+'protectedtitles-summary' => 'Tuta strona nalistuje titule, kotrež su tuchwilu přećiwo wutworjenju škitane. Za lisćinu eksistowacych stronow, kotrež su škitane, hlej [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'Žane titule njejsu tuchwilu z tutymi parametrami škitane.',
 'listusers' => 'Lisćina wužiwarjow',
 'listusers-editsonly' => 'Jenož wužiwarjow ze změnami pokazać',
@@ -3973,6 +3983,4 @@ Hewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so s
 'expand_templates_generate_rawhtml' => 'Hruby HTML pokazać',
 'expand_templates_preview' => 'Přehlad',
 
-# Unknown messages
-'uploadinvalidxml' => 'XML w nahratej dataji njeda so parsować.',
 );
index 6fb69f7..e4e8feb 100644 (file)
@@ -146,7 +146,6 @@ $linkTrail = '/^([a-zàèòÀÈÒ]+)(.*)$/sDu';
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Souliyen lyen yo :',
-'tog-justify' => 'Aliyen paragraf yo',
 'tog-hideminor' => 'Kache tout modifikasyon resan yo ki tou piti',
 'tog-hidepatrolled' => 'Kache modifikasyon yo ki fèk fèt pou moun ki ap veye yo',
 'tog-newpageshidepatrolled' => 'Kache paj ki siveye yo nan mitan lis nouvo paj yo',
@@ -155,9 +154,7 @@ $messages = array(
 'tog-numberheadings' => 'Nimewote otomatikman tit yo',
 'tog-showtoolbar' => 'Montre meni modifikasyon an (sa mande JavaScript)',
 'tog-editondblclick' => 'Klike de fwa pou modifye yon paj (sa mande JavaScript)',
-'tog-editsection' => 'Pemèt modifye yon seksyon grasa lyen [modifye] yo',
 'tog-editsectiononrightclick' => 'Pemèt modifye yon seksyon lè ou klike a dwat sou tit seksyon an (sa mande JavaScript)',
-'tog-showtoc' => 'Montre tab de matyè yo (pou tout paj ki gen plis pase 3 tit)',
 'tog-rememberpassword' => 'Sonje mopas mwen nan òdinatè sa (pou $1 {{PLURAL:$1|jou|jou}} maximum)',
 'tog-watchcreations' => 'Mete paj mwen kreye yo nan lis swivi mwen.',
 'tog-watchdefault' => 'Mete paj mwen edite yo nan lis swivi mwen',
@@ -294,7 +291,6 @@ $messages = array(
 'vector-action-protect' => 'Pwoteje',
 'vector-action-undelete' => 'Retabli',
 'vector-action-unprotect' => 'Pa pwoteje',
-'vector-simplesearch-preference' => 'Aktive sijèsyon rechèch ranfòse yo (pou estil Vector sèlman)',
 'vector-view-create' => 'Kreye',
 'vector-view-edit' => 'Modifye',
 'vector-view-history' => 'Gade istorik',
@@ -855,7 +851,6 @@ Lejand : ({{MediaWiki:Cur}}) = diferans ak vèsyon kounye a, ({{MediaWiki:Last}}
 'lineno' => 'Liy $1 :',
 'compareselectedversions' => 'Konpare vèsyon ki seleksyone yo',
 'editundo' => 'Revoke',
-'diff-multi' => '(Genyen {{PLURAL:$1|yon revizyon|$1 revizyon yo}} ki te fèt pa {{PLURAL:$2|yon itilizatè|$2 itilizatè yo}} nan mitan evolisyon ki kache)',
 
 # Search results
 'searchresults' => 'Rezilta yo pou rechèch la',
index dd11e2f..975bc45 100644 (file)
@@ -848,6 +848,9 @@ Várj $1, mielőtt újra próbálkozol.',
 'loginlanguagelabel' => 'Nyelv: $1',
 'suspicious-userlogout' => 'A kijelentkezési kérésed vissza lett utasítva, mert úgy tűnik, hogy egy hibás böngésző vagy gyorsítótárazó proxy küldte.',
 'createacct-another-realname-tip' => 'A valódi nevet nem kötelező megadni, de ha úgy döntesz, hogy megadod, azzal leszel feltüntetve a munkád szerzőjeként.',
+'pt-login' => 'Bejelentkezés',
+'pt-createaccount' => 'Fiók létrehozása',
+'pt-userlogout' => 'Kijelentkezés',
 
 # Email sending
 'php-mail-error-unknown' => 'Ismeretlen hiba a PHP mail() függvényében',
@@ -856,7 +859,7 @@ Várj $1, mielőtt újra próbálkozol.',
 
 # Change password dialog
 'changepassword' => 'Jelszócsere',
-'resetpass_announce' => 'Az e-mailben elküldött ideiglenes kóddal jelentkeztél be. A bejelentkezés befejezéséhez meg kell adnod egy új jelszót:',
+'resetpass_announce' => 'Az ideiglenes kóddal jelentkeztél be. A bejelentkezés befejezéséhez meg kell adnod egy új jelszót:',
 'resetpass_text' => '<!-- Ide írd a szöveget -->',
 'resetpass_header' => 'A fiókhoz tartozó jelszó megváltoztatása',
 'oldpassword' => 'Régi jelszó:',
@@ -864,14 +867,20 @@ Várj $1, mielőtt újra próbálkozol.',
 'retypenew' => 'Új jelszó ismét:',
 'resetpass_submit' => 'Add meg a jelszót és jelentkezz be',
 'changepassword-success' => 'A jelszavad megváltoztatása sikeresen befejeződött!',
+'changepassword-throttled' => 'Túl sok hibás bejelentkezés.
+Várj $1, mielőtt újra próbálkozol.',
 'resetpass_forbidden' => 'A jelszavak nem változtathatók meg',
 'resetpass-no-info' => 'Be kell jelentkezned, hogy közvetlenül elérd ezt a lapot.',
 'resetpass-submit-loggedin' => 'Jelszó megváltoztatása',
 'resetpass-submit-cancel' => 'Mégse',
 'resetpass-wrong-oldpass' => 'Nem megfelelő ideiglenes vagy jelenlegi jelszó.
 Lehet, hogy már sikeresen megváltoztattad a jelszavad, vagy pedig időközben új ideiglenes jelszót kértél.',
+'resetpass-recycled' => 'Kérlek más jelszót adjál meg, mint a jelenlegi jelszavad.',
+'resetpass-temp-emailed' => 'Emailben kapott ideiglenes kóddal jelentkeztél be. A végleges bejelentkezéshez új jelszót kell beállítanod itt:',
 'resetpass-temp-password' => 'Ideiglenes jelszó:',
 'resetpass-abort-generic' => 'A jelszómódosítást megszakította egy kiterjesztés.',
+'resetpass-expired' => 'A jelszavad lejárt. Adjál meg egy új jelszót a bejelentkezéshez!',
+'resetpass-expired-soft' => 'A jelszavad lejárt, ezért újat kell beállítanod. Válassz most egy új jelszót, kattints a Mégse gombra, ha később akarod csak beállítani.',
 
 # Special:PasswordReset
 'passwordreset' => 'Jelszó törlése',
@@ -913,6 +922,8 @@ Ideiglenes jelszó: $2',
 'changeemail-password' => 'A {{SITENAME}} jelszavad:',
 'changeemail-submit' => 'E-mail cím megváltoztatása',
 'changeemail-cancel' => 'Mégse',
+'changeemail-throttled' => 'Túl sok hibás bejelentkezés.
+Várj $1, mielőtt újra próbálkozol.',
 
 # Edit page toolbar
 'bold_sample' => 'Félkövér szöveg',
@@ -1117,6 +1128,7 @@ Már létezik.',
 'content-not-allowed-here' => '"$1" tartalom nem engedélyezett a [[$2]] oldalon',
 'editwarning-warning' => 'A lap elhagyásával az összes itt végzett változtatás elveszhet.
 Ha be vagy jelentkezve letilthatod ezt a figyelmeztetést a beállításaid „{{int:prefs-editing}}” szakaszában.',
+'editpage-notsupportedcontentformat-title' => 'Nem támogatott tartalom formátum',
 
 # Content models
 'content-model-wikitext' => 'wikiszöveg',
@@ -1149,6 +1161,7 @@ Néhány sablon nem fog megjelenni.',
 'undo-success' => 'A szerkesztés visszavonható. Kérlek ellenőrizd alább a változásokat, hogy valóban ezt szeretnéd-e tenni, majd kattints a lap mentése gombra a visszavonás véglegesítéséhez.',
 'undo-failure' => 'A szerkesztést nem lehet automatikusan visszavonni vele ütköző későbbi szerkesztések miatt.',
 'undo-norev' => 'A szerkesztés nem állítható vissza, mert nem létezik vagy törölve lett.',
+'undo-nochange' => 'A szerkesztés már vissza lett állítva.',
 'undo-summary' => 'Visszavontam [[Special:Contributions/$2|$2]] ([[User talk:$2|vita]] | [[Special:Contributions/$2|{{MediaWiki:Contribslink}}]]) szerkesztését (oldid: $1)',
 
 # Account creation failure
@@ -1238,7 +1251,7 @@ A(z) {{SITENAME}} adminisztrátorai továbbra is meg tudják tekinteni az elrejt
 * Illetlen személyes információk
 *: ''otthoni cím, telefonszámok, társadalombiztosítási számok stb.''",
 'revdelete-legend' => 'Korlátozások megadása:',
-'revdelete-hide-text' => 'Változat szövegének elrejtése',
+'revdelete-hide-text' => 'Változat szövege',
 'revdelete-hide-image' => 'A fájl tartalmának elrejtése',
 'revdelete-hide-name' => 'Művelet és cél elrejtése',
 'revdelete-hide-comment' => 'Szerkesztési összefoglaló',
@@ -2310,8 +2323,8 @@ Feladóként a [[Special:Preferences|beállításaid]]nál megadott e-mail-címe
 'watchnologin' => 'Nem vagy bejelentkezve',
 'watchnologintext' => 'Ahhoz, hogy figyelőlistád lehessen, [[Special:UserLogin|be kell lépned]].',
 'addwatch' => 'Hozzáadás a figyelőlistához',
-'addedwatchtext' => "A(z) „[[:$1]]” lapot hozzáadtam a [[Special:Watchlist|figyelőlistádhoz]].
-Ezután minden, a lapon vagy annak vitalapján történő változást ott fogsz látni, és a lap '''vastagon''' fog szerepelni a [[Special:RecentChanges|friss változtatások]] lapon, hogy könnyen észrevehető legyen.",
+'addedwatchtext' => 'A(z) „[[:$1]]” lapot hozzáadtam a [[Special:Watchlist|figyelőlistádhoz]].
+Ezután minden, a lapon vagy annak vitalapján történő változást ott fogsz látni.',
 'removewatch' => 'Eltávolítás a figyelőlistáról',
 'removedwatchtext' => 'A(z) „[[:$1]]” lapot eltávolítottam a [[Special:Watchlist|figyelőlistáról]].',
 'watch' => 'Lap figyelése',
@@ -2361,9 +2374,9 @@ A szerkesztő elérhetősége:
 e-mail küldése: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Amíg nem keresed fel az oldalt, addig nem érkeznek újabb értesítések az oldal változásaival kapcsolatban. A figyelőlistádon is beállíthatod, hogy újból kapj értesítéseket, az összes lap után.
+Amíg nem keresed fel az oldalt bejelentkezve, addig nem érkeznek újabb értesítések az oldal változásaival kapcsolatban. A figyelőlistádon is beállíthatod, hogy újból kapj értesítéseket, az összes lap után.
 
-             Baráti üdvözlettel: a(z) {{SITENAME}} értesítő rendszere
+Baráti üdvözlettel: a(z) {{SITENAME}} értesítő rendszere
 
 --
 Az e-mail értesítéseid módosításához keresd fel a 
@@ -2694,7 +2707,7 @@ Add meg a blokkolás okát is (például idézd a blokkolandó személy által v
 'blocklogpage' => 'Blokkolási napló',
 'blocklog-showlog' => 'Ez a felhasználó már blokkolva volt korábban. A blokkolási napló ide vonatkozó része alább látható:',
 'blocklog-showsuppresslog' => 'Ez a felhasználó korábban blokkot kapott, és a naplóbejegyzés el lett rejtve. Az elrejtési napló alább látható tájékoztatásként:',
-'blocklogentry' => '„[[$1]]” blokkolva $2 $3 időtartamra',
+'blocklogentry' => '„[[$1]]” blokkolva $2 időtartamra $3',
 'reblock-logentry' => 'megváltoztatta [[$1]] blokkjának beállításait, a blokk lejárta: $2 $3',
 'blocklogtext' => 'Ez a felhasználókra helyezett blokkoknak és azok feloldásának listája. Az automatikus blokkolt IP címek nem szerepelnek a listában. Lásd még [[Special:BlockList|a jelenleg életben lévő blokkok listáját]].',
 'unblocklogentry' => '„$1” blokkolása feloldva',
@@ -2708,7 +2721,7 @@ Add meg a blokkolás okát is (például idézd a blokkolandó személy által v
 'range_block_disabled' => 'A rendszerfelelős tartományblokkolás létrehozási képessége letiltott.',
 'ipb_expiry_invalid' => 'Hibás lejárati dátum.',
 'ipb_expiry_temp' => 'A láthatatlan felhasználóinév-blokkok lehetnek állandóak.',
-'ipb_hide_invalid' => 'A felhasználói fiókot nem lehet elrejteni; lehet, hogy túl sok szerkesztése van.',
+'ipb_hide_invalid' => 'A felhasználói fiókot nem lehet elrejteni; több mint $1 szerkesztése van.',
 'ipb_already_blocked' => '"$1" már blokkolva',
 'ipb-needreblock' => '$1 már blokkolva van. Meg szeretnéd változtatni a beállításokat?',
 'ipb-otherblocks-header' => 'További {{PLURAL:$1|blokk|blokkok}}',
@@ -2931,7 +2944,7 @@ Mentsd el a számítógépedre, majd töltsd fel ide.',
 'importuploaderrortemp' => 'Az importálandó fájl feltöltése nem sikerült. Nem létezik ideiglenes mappa.',
 'import-parse-failure' => 'XML elemzési hiba importáláskor',
 'import-noarticle' => 'Nincs importálandó lap!',
-'import-nonewrevisions' => 'A korábban importált összes változat.',
+'import-nonewrevisions' => 'Nincs változat importálva (mindet korábban importálták vagy a hiba miatt program kihagyta).',
 'xml-error-string' => '$1 a(z) $2. sorban, $3. oszlopban ($4. bájt): $5',
 'import-upload' => 'XML-adatok feltöltése',
 'import-token-mismatch' => 'Elveszett a session adat, próbálkozz újra.',
@@ -3100,7 +3113,7 @@ Ez valószínűleg egy olyan link miatt van, ami egy feketelistán lévő oldalr
 'pageinfo-views' => 'Megtekintések száma',
 'pageinfo-watchers' => 'Figyelők száma',
 'pageinfo-few-watchers' => 'Kevesebb mint $1 szerkesztő figyeli',
-'pageinfo-redirects-name' => 'Átirányítások erre a lapra',
+'pageinfo-redirects-name' => 'Átirányítások száma erre a lapra',
 'pageinfo-subpages-name' => 'A lap allapjai',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|átirányítás}}; $3 {{PLURAL:$3|nem átirányítás}})',
 'pageinfo-firstuser' => 'A lap létrehozója',
@@ -3822,7 +3835,7 @@ minden egyes sor egy figyelt lap címe. Ha kész vagy, kattints a lista alatt ta
 'version-hook-name' => 'Hook neve',
 'version-hook-subscribedby' => 'Használja',
 'version-version' => '(verzió: $1)',
-'version-license' => 'Licenc',
+'version-license' => 'MediaWiki licenc',
 'version-poweredby-credits' => "Ez a wiki '''[https://www.mediawiki.org/ MediaWiki]''' szoftverrel működik, copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'mások',
 'version-poweredby-translators' => 'translatewiki.net fordítók',
@@ -3951,7 +3964,7 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 'logentry-delete-event-legacy' => '$1 módosította a(z) $3 című lap naplóbejegyzéseinek láthatóságát',
 'logentry-delete-revision-legacy' => '$1 módosította a(z) $3 című lap lapváltozatainak láthatóságát',
 'logentry-suppress-delete' => '$1 elrejtette a következő lapot: $3',
-'logentry-suppress-event' => '$1 rejtetten megváltoztatta {{PLURAL:$5|egy napló bejegyzés|$5 napló bejegyzés}} láthatóságát a(z) $3 című lapon: $4',
+'logentry-suppress-event' => '$1 rejtetten megváltoztatta {{PLURAL:$5|egy|$5}} naplóbejegyzés láthatóságát a(z) $3 című lapon: $4',
 'logentry-suppress-revision' => '$1 rejtetten megváltoztatta {{PLURAL:$5|egy változat|$5 változat}} láthatóságát a(z) $3 című lapon: $4',
 'logentry-suppress-event-legacy' => '$1 rejtetten megváltoztatta napló bejegyzések láthatóságát a(z) $3 című lapon',
 'logentry-suppress-revision-legacy' => '$1 rejtetten megváltoztatta változatok láthatóságát a(z) $3 lapon',
@@ -3973,7 +3986,7 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 'logentry-newusers-create' => '$1 felhasználói fiók létrehozva',
 'logentry-newusers-create2' => '$1 létrehozta $3 felhasználói fiókját',
 'logentry-newusers-byemail' => 'Szerkesztői lap $3 néven létrehozva $1 által, jelszó kiküldve emailben.',
-'logentry-newusers-autocreate' => '$1 fiók automatikusan létrehozva',
+'logentry-newusers-autocreate' => '$1 felhasználói fiók automatikusan létrehozva',
 'logentry-rights-rights' => '$1 megváltoztatta $3 csoporttagságát erről: $4 erre: $5',
 'logentry-rights-rights-legacy' => '$1 megváltoztatta $3 csoporttagságát',
 'logentry-rights-autopromote' => '$1 automatikusan előléptetve erről: $4 erre: $5',
@@ -4057,7 +4070,7 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 # Special:ExpandTemplates
 'expandtemplates' => 'Sablonok kibontása',
 'expand_templates_intro' => 'Ez a speciális lap a bevitt szövegekben megkeresi a sablonokat és rekurzívan kibontja őket.
-Kibontja az elemző függvényeket (pl. <nowiki>{{</nowiki>#language:...}}), és a változókat (pl. <nowiki>{{</nowiki>CURRENTDAY}}) is – mindent, ami a kettős kapcsos zárójelek között van.',
+Kibontja a támogatott elemző függvényeket (pl. <code><nowiki>{{</nowiki>#language:...}}</code>), és a változókat (pl. <code><nowiki>{{</nowiki>CURRENTDAY}}</code>) is – mindent, ami a kettős kapcsos zárójelek között van.',
 'expand_templates_title' => 'Szöveg címe, például {{FULLPAGENAME}} sablonhoz:',
 'expand_templates_input' => 'Vizsgálandó szöveg',
 'expand_templates_output' => 'Eredmény',
index 7280706..1b186ba 100644 (file)
@@ -309,7 +309,6 @@ $messages = array(
 'vector-action-protect' => 'Proteger',
 'vector-action-undelete' => 'Restaurar',
 'vector-action-unprotect' => 'Cambiar protection',
-'vector-simplesearch-preference' => 'Activar le barra de recerca simplificate (solmente in apparentia Vector)',
 'vector-view-create' => 'Crear',
 'vector-view-edit' => 'Modificar',
 'vector-view-history' => 'Vider historia',
@@ -697,6 +696,9 @@ Per favor attende $1 ante de probar lo novemente.',
 'suspicious-userlogout' => 'Le requesta de clauder le session ha essite refusate proque illo pare haber essite inviate per un navigator o proxy de cache defectuose.',
 'createacct-another-realname-tip' => 'Le nomine real es optional.
 Si tu opta pro dar lo, isto essera usate pro dar al usator attribution pro su contributiones.',
+'pt-login' => 'Aperir session',
+'pt-createaccount' => 'Crear conto',
+'pt-userlogout' => 'Clauder session',
 
 # Email sending
 'php-mail-error-unknown' => 'Error incognite in le function mail() de PHP',
@@ -722,8 +724,13 @@ Per favor attende $1 ante de probar lo novemente.',
 'resetpass-submit-cancel' => 'Cancellar',
 'resetpass-wrong-oldpass' => 'Le contrasigno temporari o actual es invalide.
 Es possibile que tu ha ja cambiate tu contrasigno o requestate un nove contrasigno temporari.',
+'resetpass-recycled' => 'Redefini tu contrasigno a un differente del actual, per favor.',
+'resetpass-temp-emailed' => 'Tu ha aperite session con un codice temporari que tu recipeva in e-mail.
+Pro completar le accesso, tu debe definir un nove contrasigno hic:',
 'resetpass-temp-password' => 'Contrasigno temporari:',
 'resetpass-abort-generic' => 'Le cambio del contrasigno ha essite abortate per un extension.',
+'resetpass-expired' => 'Le contrasigno ha expirate. Per favor defini un nove contrasigno pro aperir session.',
+'resetpass-expired-soft' => 'Le contrasigno ha expirate e debe esser redefinite. Per favor elige un nove contrasigno ora, o clicca sur Cancellar pro redefinir lo plus tarde.',
 
 # Special:PasswordReset
 'passwordreset' => 'Reinitialisar contrasigno',
@@ -1005,7 +1012,7 @@ Illo existe ja.',
 'invalid-content-data' => 'Datos de contento invalide',
 'content-not-allowed-here' => 'Le contento "$1" non es permittite in le pagina [[$2]]',
 'editwarning-warning' => 'Quitar iste pagina pote causar le perdita de omne modificationes que tu ha facite.
-Si tu ha aperite un session, tu pote disactivar iste aviso in le section "Modification" de tu preferentias.',
+Si tu ha aperite un session, tu pote disactivar iste aviso in le section "{{int:prefs-editing}}" de tu preferentias.',
 'editpage-notsupportedcontentformat-title' => 'Formato de contento non supportate',
 'editpage-notsupportedcontentformat-text' => 'Le formato de contento $1 non es supportate per le modello de contento $2.',
 
@@ -1042,6 +1049,7 @@ Iste parametros ha essite omittite.",
 Per favor controla le comparation infra pro verificar que tu vole facer isto, e postea salveguarda le modificationes infra pro assi disfacer le modification.',
 'undo-failure' => 'Le modification non poteva esser annullate a causa de conflicto con modificationes intermedie.',
 'undo-norev' => 'Impossibile annullar le modification proque illo non existe o esseva delite.',
+'undo-nochange' => 'Pare que iste modification ha jam essite disfacite.',
 'undo-summary' => 'Annullava le version $1 per [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussion]] | [[Special:Contributions/$2|{{MediaWiki:Contribslink}}]])',
 'undo-summary-username-hidden' => 'Disfacer le revision $1 facite per un usator celate',
 
@@ -1226,6 +1234,8 @@ Nota que le uso del ligamines de navigation causara le perdita de tote cambios i
 'showhideselectedversions' => 'Revelar/celar le versiones seligite',
 'editundo' => 'disfacer',
 'diff-empty' => '(Nulle differentia)',
+'diff-multi-sameuser' => '({{PLURAL:$1|Un version intermedie|$1 versiones intermedie}} facite per le mesme usator non es monstrate)',
+'diff-multi-otherusers' => '({{PLURAL:$1|Un version intermedie|$1 versiones intermedie}} facite per {{PLURAL:$2|un altere usator|$2 usatores}} non es monstrate)',
 'diff-multi-manyusers' => '({{PLURAL:$1|Un version intermedie|$1 versiones intermedie}} facite per plus de $2 {{PLURAL:$2|usator|usatores}} non es monstrate)',
 'difference-missing-revision' => '{{PLURAL:$2|Un version|$2 versiones}} de iste differentia ($1) non ha essite trovate.
 
@@ -1246,7 +1256,7 @@ Detalios se trova in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'shown-title' => 'Monstrar $1 {{PLURAL:$1|resultato|resultatos}} per pagina',
 'viewprevnext' => 'Vider ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-exists' => "'''Existe un pagina nominate \"[[\$1]]\" in iste wiki'''",
-'searchmenu-new' => "'''Crea le pagina \"[[:\$1]]\" in iste wiki!'''",
+'searchmenu-new' => '<strong>Crea le pagina "[[:$1]]" in iste wiki!</strong> {{PLURAL:$2|0=|Vide etiam le pagina trovate con le recerca.|Vide etiam le resultatos del recerca.}}',
 'searchprofile-articles' => 'Paginas de contento',
 'searchprofile-project' => 'Paginas de adjuta e del projecto',
 'searchprofile-images' => 'Multimedia',
@@ -1272,6 +1282,7 @@ Detalios se trova in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'searchrelated' => 'connexe',
 'searchall' => 'totes',
 'showingresults' => "Infra se monstra non plus de {{PLURAL:$1|'''1''' resultato|'''$1''' resultatos}} a partir del numero '''$2'''.",
+'showingresultsinrange' => 'In basso es monstrate usque a {{PLURAL:$1|<strong>1</strong> resultato|<strong>$1</strong> resultatos}} inter #<strong>$2</strong> e #<strong>$3</strong>.',
 'showingresultsnum' => "Infra se monstra {{PLURAL:$3|'''1''' resultato|'''$3''' resultatos}} a partir del numero '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultato '''$1'''|Resultatos '''$1 - $2'''}} de '''$3''' pro '''$4'''",
 'search-nonefound' => 'Le recerca non ha producite resultatos.',
@@ -1729,6 +1740,7 @@ Si tu vole totevia incargar iste file, per favor retorna e usa un nove nomine. [
 'uploaddisabledtext' => 'Le incargamento de files es disactivate.',
 'php-uploaddisabledtext' => 'Le incargamento de files PHP es disactivate. Per favor verifica le configuration file_uploads.',
 'uploadscripted' => 'Iste file contine codice de HTML o de script que pote esser interpretate erroneemente per un navigator del web.',
+'uploadinvalidxml' => 'Le codice XML in le file incargate non pote esser interpretate.',
 'uploadvirus' => 'Le file contine un virus! Detalios: $1',
 'uploadjava' => 'Iste file es un archivo ZIP que contine un file .class de Java.
 Non es permittite incargar files Java, proque istes pote contornar le restrictiones de securitate.',
@@ -2102,10 +2114,20 @@ Le entratas <del>cancellate</del> ha essite resolvite.',
 'deadendpagestext' => 'Le sequente paginas non ha ligamines a altere paginas in {{SITENAME}}.',
 'protectedpages' => 'Paginas protegite',
 'protectedpages-indef' => 'Solmente protectiones infinite',
+'protectedpages-summary' => 'Iste pagina lista paginas existente que es actualmente protegite. Pro un lista de titulos protegite contra creation, vide [[{{#special:ProtectedTitles}}]].',
 'protectedpages-cascade' => 'Protectiones in cascada solmente',
 'protectedpages-noredirect' => 'Celar redirectiones',
 'protectedpagesempty' => 'Nulle paginas es actualmente protegite con iste parametros.',
+'protectedpages-timestamp' => 'Data e hora',
+'protectedpages-page' => 'Pagina',
+'protectedpages-expiry' => 'Expira',
+'protectedpages-performer' => 'Protegite per',
+'protectedpages-params' => 'Parametros de protection',
+'protectedpages-reason' => 'Motivo',
+'protectedpages-unknown-timestamp' => 'Incognite',
+'protectedpages-unknown-performer' => 'Usator incognite',
 'protectedtitles' => 'Titulos protegite',
+'protectedtitles-summary' => 'Iste pagina lista titulos actualmente protegite contra creation. Pro un lista de paginas existente que ha essite protegite, vide [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'Nulle titulos es actualmente protegite con iste parametros.',
 'listusers' => 'Lista de usatores',
 'listusers-editsonly' => 'Monstrar solmente usatores con modificationes',
@@ -2675,8 +2697,8 @@ a un adresse IP blocate previemente.',
 'change-blocklink' => 'cambiar blocada',
 'contribslink' => 'contributiones',
 'emaillink' => 'inviar e-mail',
-'autoblocker' => 'Automaticamente blocate proque tu adresse IP ha recentemente essite usate per "[[User:$1|$1]]".
-Le motivo specificate pro le blocada de $1 es: "$2"',
+'autoblocker' => 'Automaticamente blocate perque tu adresse IP ha recentemente essite usate per "[[User:$1|$1]]".
+Le motivo specificate pro blocar $1 es "\'\'$2\'\'"',
 'blocklogpage' => 'Registro de blocadas',
 'blocklog-showlog' => 'Iste usator ha essite blocate previemente. Le registro de blocadas es providite ci infra pro referentia:',
 'blocklog-showsuppresslog' => 'Iste usator ha essite blocate e celate previemente. Le registro de suppressiones es providite ci infra pro referentia:',
@@ -2888,6 +2910,7 @@ $2',
 'thumbnail_image-type' => 'typo de imagine non supportate',
 'thumbnail_gd-library' => 'le configuration del bibliotheca GD es incomplete: manca le function $1',
 'thumbnail_image-missing' => 'le file pare mancar: $1',
+'thumbnail_image-failure-limit' => 'Il ha habite recentemente troppo de tentativas fallite ($1 o plus) de generar iste miniatura. Per favor reproba plus tarde.',
 
 # Special:Import
 'import' => 'Importar paginas',
@@ -4114,6 +4137,4 @@ De facto, illo expande quasi toto inter accolladas duple.',
 'expand_templates_generate_rawhtml' => 'Monstrar HTML brute',
 'expand_templates_preview' => 'Previsualisation',
 
-# Unknown messages
-'uploadinvalidxml' => 'Le codice XML in le file incargate non pote esser interpretate.',
 );
index e84cf6b..bb04575 100644 (file)
@@ -296,7 +296,6 @@ $messages = array(
 'vector-action-protect' => 'Gardar',
 'vector-action-undelete' => 'Restituer',
 'vector-action-unprotect' => 'Desgardar',
-'vector-simplesearch-preference' => 'Simplificat serch-liste (solmen Vector)',
 'vector-view-create' => 'Crear',
 'vector-view-edit' => 'Redacter',
 'vector-view-history' => 'Historie de versiones',
index 4d39d69..f626f54 100644 (file)
@@ -222,7 +222,6 @@ $messages = array(
 'vector-action-protect' => 'Cẹdolu',
 'vector-action-undelete' => 'Á gbàkashikwà',
 'vector-action-unprotect' => 'Nchẹdo mgbanwe',
-'vector-simplesearch-preference' => 'Kwe okwu ụmá nchöwa di (akpụkpọ Vector náni)',
 'vector-view-create' => 'Ké',
 'vector-view-edit' => 'Mèzi',
 'vector-view-history' => 'Zí ịta',
index 39705c5..db4744d 100644 (file)
@@ -190,7 +190,6 @@ $messages = array(
 'history-title' => 'ᑎᑎᕋᖅᑕᐅᒋᐊᕐᖓᕈᑦ ᒪᑉᐱᑕᖅ ᑭᖑᓂᑦᑎᓐᓂ "$1"',
 'lineno' => 'ᑐᑭᖅᓯᖅ $1:',
 'editundo' => 'ᐃᐱᐅᑦᔮᐹ',
-'diff-multi' => '({{PLURAL:$1|ᐊᑕᐅᓯᖅ ᑭᒻᒥᐅᕗᖅ ᑎᑎᕋᖅᑕᐅᒋᐊᕐᖓᕈᑦ|$1 ᑭᒻᒥᐅᕗᖅ ᑎᑎᕋᖅᑕᐅᒋᐊᕐᖓᕈᑦ}} ᐊᔪᖅᑐᖅ ᐅᕝᕙ.)',
 
 # Search results
 'nextn' => 'ᑕᒡᒐ {{PLURAL:$1|$1}}',
index a884787..02fb562 100644 (file)
@@ -169,7 +169,6 @@ $messages = array(
 'history-title' => 'titiraqtaugiarngarut mappitaq kingunittinni "$1"',
 'lineno' => 'tukiqsiq $1:',
 'editundo' => 'ipiutjaapaa',
-'diff-multi' => '({{PLURAL:$1|atausiq kimmiuvuq titiraqtaugiarngarut|$1 kimmiuvuq titiraqtaugiarngarut}} ajuqtuq uvva.)',
 
 # Search results
 'nextn' => 'tagga {{PLURAL:$1|$1}}',
index 47484ac..29e3636 100644 (file)
@@ -589,6 +589,9 @@ Pangngaasi nga agurayka ti $1 sakbay a padasem manen.',
 'suspicious-userlogout' => 'Naiparit ti panagkiddawmo a rummuar ngamin ket kasla inpatulod ti nadadael a panagbasabasa wenno pannakaidulin a pannakbagi.',
 'createacct-another-realname-tip' => 'Saan a nasken ti pudno a nagan.
 No kayatmo nga ited, mausarto daytoy para iti panangited ti pammadayaw para kadagiti obrada.',
+'pt-login' => 'Sumrek',
+'pt-createaccount' => 'Agaramid ti pakabilangan',
+'pt-userlogout' => 'Rummuar',
 
 # Email sending
 'php-mail-error-unknown' => 'Di ammo a biddut ti surat ti PHP() nga annong.',
@@ -597,8 +600,7 @@ No kayatmo nga ited, mausarto daytoy para iti panangited ti pammadayaw para kada
 
 # Change password dialog
 'changepassword' => 'Baliwan ti kontrasenias',
-'resetpass_announce' => 'Simrekka a nagus-usar ti temporario a kodigo ti esurat.
-Tapno malpaska a makastrek, nasken a mangikabilka ti baro a kontrasenias ditoy:',
+'resetpass_announce' => 'Tapno malpas ti panagserrek, nasken a mangiyasentarka ti baro a kontrasenias.',
 'resetpass_header' => 'Sukatan ti kontrasenias ti pakabilangan',
 'oldpassword' => 'Daan a kontrasenias:',
 'newpassword' => 'Baro a kontrasenias:',
@@ -613,8 +615,13 @@ Pangngaasi nga aguray ti $1 sakbay a padasen manen.',
 'resetpass-submit-cancel' => 'Ukasen',
 'resetpass-wrong-oldpass' => 'Imbalido ti temporario wenno agdama a kontrasenias.
 Mabalin a nagballigi ti panagsukatmo ti kontrasenias wenno nagkiddaw ti baro a temporario a kontrasenias.',
+'resetpass-recycled' => 'Pangngaasi nga iyasentar manen ti kontrasenias iti sabali ngem ti agdama a kontraseniasmo.',
+'resetpass-temp-emailed' => 'Simrekka a nagusar ti temporario a naipatulod a kodigo.
+Tapno malpas ti panagserrek, nasken a mangiyasentarka ti baro a kontrasenias ditoy:',
 'resetpass-temp-password' => 'Temporario a kontrasenias:',
 'resetpass-abort-generic' => 'Ti panagsukat ti kontrasenias ket pinasardeng babaen ti maysa a pagpaatiddog.',
+'resetpass-expired' => 'Nagpason ti kontraseniasmo. Pangngaasi a mangiyasentar ti baro a kontrasenias tapno makastrek.',
+'resetpass-expired-soft' => 'Nagpason ti kontraseniasmo, ken nasken a maiyasentar manen. Pangngaasi nga agpili tattan ti baro a kontrasenias, wenno pinduten ti ukasen tapno iyasentar no madamdama.',
 
 # Special:PasswordReset
 'passwordreset' => 'Iyasentar manen ti kontrasenias',
@@ -1626,6 +1633,7 @@ Nasken nga agdamagka ti addaan ti abilidad a mangkita ti nalapdan a datos ti pap
 'php-uploaddisabledtext' => 'Ti pinag-ipan ti papeles ket naiddep idiay PHP.
 Panngaasi a kitaem ti pannakaikabil ti pinag-ipan ti papeles.',
 'uploadscripted' => 'Daytoy a papeles ket adda nagyanna a HTML wenno panagsurat a kodigo a mabalin nga agpakamali ti panagbasa ti sapot a pagbasabasa.',
+'uploadinvalidxml' => 'Ti XML iti naikarga a papeles ket saan a maiwaswas.',
 'uploadvirus' => 'Addaan ti birus daytoy a papeles! Salaysay: $1',
 'uploadjava' => 'Daytoy a papeles ket ZIP a papeles nga adda nagyanna a Java .a kita ti papeles.
 Saan a mabalin ti pinag-ipan ti Java a papeles, ngamin ket palabsanda dagiti seguridad a pangrestrikto.',
@@ -1985,6 +1993,7 @@ Tattan ket naibaw-ing idiay [[$2]].',
 'deadendpagestext' => 'Dagitoy a pampanid ket saan a nakasilpo ti sabali a pampanid ditoy {{SITENAME}} .',
 'protectedpages' => 'Dagiti nasalakniban a panid',
 'protectedpages-indef' => 'Inggat ingana a salakniban laeng',
+'protectedpages-summary' => 'Daytoy a panid ket ilistana dagiti adda a panid nga agdama a nasalakniban. Para iti listaan dagiti titulo a nasalakniban manipud ti pannakapartuat, kitaen ti [[{{#special:ProtectedTitles}}]].',
 'protectedpages-cascade' => 'Dagiti sariap a salaknib laeng',
 'protectedpages-noredirect' => 'Ilemmeng dagiti baw-ing',
 'protectedpagesempty' => 'Awan ti pampanid nga agdama a nasalakniban babaen kadagitoy a parametro.',
@@ -1997,6 +2006,7 @@ Tattan ket naibaw-ing idiay [[$2]].',
 'protectedpages-unknown-timestamp' => 'Di ammo',
 'protectedpages-unknown-performer' => 'Di ammo nga agar-aramat',
 'protectedtitles' => 'Dagiti nasalakniban a titulo',
+'protectedtitles-summary' => 'Daytoy a panid ket ilistana dagiti titulo nga agdama a nasalakniban manipud ti pannakapartuat. Para iti listaan dagiti adda a panid a nasalakniban, kitaen ti [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'Awan dagiti titulo nga agdama a nasalakniban iti dagitoy a parametro.',
 'listusers' => 'Listaan dagiti agar-aramat',
 'listusers-editsonly' => 'Ipakita laeng dagiti agar-aramat nga adda inurnosda',
@@ -3972,6 +3982,4 @@ Iti kinapudno, palawaenna amin dagiti adda ti doble a tukol.',
 'expand_templates_generate_rawhtml' => 'Ipakita ti naata a HTML',
 'expand_templates_preview' => 'Pamadasan',
 
-# Unknown messages
-'uploadinvalidxml' => 'Ti XML iti naikarga a papeles ket saan a maiwaswas.',
 );
index 64194fe..428f654 100644 (file)
@@ -161,7 +161,6 @@ $messages = array(
 'vector-action-protect' => 'Лораде',
 'vector-action-undelete' => 'Юхаоттаде',
 'vector-action-unprotect' => 'Лорам хувца',
-'vector-simplesearch-preference' => 'Яьржа лахарий довзамаш чуяьккха (Vector skin only)',
 'vector-view-create' => 'Кхолларле',
 'vector-view-edit' => 'Хувцам',
 'vector-view-history' => 'Искар',
index fd7d8df..4041865 100644 (file)
@@ -27,6 +27,7 @@
  * @author Danmaz74
  * @author Darth Kule
  * @author DexterMorgan
+ * @author Diana
  * @author F. Cosoleto
  * @author FRacco
  * @author Felis
@@ -38,6 +39,7 @@
  * @author Kaganer
  * @author Klutzy
  * @author Marco 27
+ * @author Maria victoria
  * @author Martorell
  * @author Marzedu
  * @author McDutchie
@@ -828,6 +830,9 @@ Attendi $1 e riprova in seguito.',
 'loginlanguagelabel' => 'Lingua: $1',
 'suspicious-userlogout' => 'La tua richiesta di disconnessione è stata negata perché sembra inviata da un browser non funzionante o un proxy di caching.',
 'createacct-another-realname-tip' => "L'indicazione del proprio nome vero è opzionale; se si sceglie di inserirlo, verrà utilizzato per attribuire la paternità dei contenuti inviati.",
+'pt-login' => 'Entra',
+'pt-createaccount' => 'Registrati',
+'pt-userlogout' => 'Esci',
 
 # Email sending
 'php-mail-error-unknown' => 'Errore sconosciuto nella funzione PHP mail()',
@@ -836,7 +841,7 @@ Attendi $1 e riprova in seguito.',
 
 # Change password dialog
 'changepassword' => 'Cambia password',
-'resetpass_announce' => "L'accesso è stato effettuato con un codice temporaneo, inviato via e-mail. Per completare l'accesso è necessario impostare una nuova password:",
+'resetpass_announce' => 'Per completare il log in, è necessario impostare una nuova password.',
 'resetpass_text' => '<!-- Aggiungere il testo qui -->',
 'resetpass_header' => "Cambia la password dell'account",
 'oldpassword' => 'Vecchia password:',
@@ -852,8 +857,12 @@ Attendi $1 e riprova in seguito.',
 'resetpass-submit-cancel' => 'Annulla',
 'resetpass-wrong-oldpass' => 'Password temporanea o attuale non valida.
 La password potrebbe essere stata già cambiata, oppure potrebbe essere stata richiesta una nuova password temporanea.',
+'resetpass-recycled' => 'Si prega di reimpostare con una password diversa dalla password attuale.',
+'resetpass-temp-emailed' => "L'accesso è stato effettuato con un codice temporaneo, inviato via email. Per completare la registrazione, è necessario impostare una nuova password qui:",
 'resetpass-temp-password' => 'Password temporanea:',
 'resetpass-abort-generic' => "La modifica della password è stata interrotta da un'estensione.",
+'resetpass-expired' => "La password è scaduta. Si prega di impostare una nuova password per effettuare l'accesso.",
+'resetpass-expired-soft' => 'La tua password è scaduta e deve essere reimpostata. Si prega di scegliere una nuova password o fare clic su annulla per reimpostarla successivamente.',
 
 # Special:PasswordReset
 'passwordreset' => 'Reimposta password',
@@ -1689,11 +1698,23 @@ Il tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.',
 'rcnotefrom' => "Di seguito sono elencate le modifiche apportate a partire da '''$2''' (fino a '''$1''').",
 'rclistfrom' => 'Mostra le modifiche apportate a partire da $1',
 'rcshowhideminor' => '$1 le modifiche minori',
+'rcshowhideminor-show' => 'Mostra',
+'rcshowhideminor-hide' => 'Nascondi',
 'rcshowhidebots' => '$1 i bot',
+'rcshowhidebots-show' => 'Mostra',
+'rcshowhidebots-hide' => 'Nascondi',
 'rcshowhideliu' => '$1 gli utenti registrati',
+'rcshowhideliu-show' => 'Mostra',
+'rcshowhideliu-hide' => 'Nascondi',
 'rcshowhideanons' => '$1 gli utenti anonimi',
+'rcshowhideanons-show' => 'Mostra',
+'rcshowhideanons-hide' => 'Nascondi',
 'rcshowhidepatr' => '$1 le modifiche verificate',
+'rcshowhidepatr-show' => 'Mostra',
+'rcshowhidepatr-hide' => 'Nascondi',
 'rcshowhidemine' => '$1 le mie modifiche',
+'rcshowhidemine-show' => 'Mostra',
+'rcshowhidemine-hide' => 'Nascondi',
 'rclinks' => 'Mostra le $1 modifiche più recenti apportate negli ultimi $2 giorni<br />$3',
 'diff' => 'diff',
 'hist' => 'cron',
@@ -1810,6 +1831,7 @@ Se si dispone dell'immagine nella risoluzione originale, si prega di caricarla.
 'uploaddisabledtext' => 'Il caricamento dei file non è attivo.',
 'php-uploaddisabledtext' => 'Il caricamento di file tramite PHP è disabilitato. Controlla la configurazione di file_uploads.',
 'uploadscripted' => 'Questo file contiene codice HTML o di script, che potrebbe essere interpretato erroneamente da un browser web.',
+'uploadinvalidxml' => 'Il codice XML nel file caricato non può essere elaborato.',
 'uploadvirus' => 'Questo file contiene un virus! Dettagli: $1',
 'uploadjava' => "Questo file è un file ZIP che contiene un file .class Java.
 Carica i file Java non è consentito, perché possono causare l'aggiramento delle restrizioni di sicurezza.",
@@ -2181,6 +2203,7 @@ I redirect <del>cancellati</del> sono stati corretti.',
 'protectedpages-timestamp' => 'Data e ora',
 'protectedpages-page' => 'Pagina',
 'protectedpages-expiry' => 'Scadenza',
+'protectedpages-performer' => "Protezione dell'utente",
 'protectedpages-params' => 'Parametri di protezione',
 'protectedpages-reason' => 'Motivo',
 'protectedpages-unknown-timestamp' => 'Sconosciuto',
@@ -4163,6 +4186,4 @@ vale a dire praticamente tutto ciò che si trova tra doppie parentesi graffe.',
 'expand_templates_generate_rawhtml' => 'Mostra HTML',
 'expand_templates_preview' => 'Anteprima',
 
-# Unknown messages
-'uploadinvalidxml' => 'Il codice XML nel file caricato non può essere elaborato.',
 );
index 16f83ec..2eb878d 100644 (file)
@@ -925,6 +925,9 @@ $1待ってから再度試してください。',
 'suspicious-userlogout' => '壊れたブラウザーまたはキャッシュプロキシによって送信された可能性があるため、ログアウト要求は拒否されました。',
 'createacct-another-realname-tip' => '本名は省略できます。
 入力すると、その利用者の著作物の帰属表示に使われます。',
+'pt-login' => 'ログイン',
+'pt-createaccount' => 'アカウント作成',
+'pt-userlogout' => 'ログアウト',
 
 # Email sending
 'php-mail-error-unknown' => 'PHPのmail()関数での不明なエラーです。',
@@ -933,8 +936,7 @@ $1待ってから再度試してください。',
 
 # Change password dialog
 'changepassword' => 'パスワードの変更',
-'resetpass_announce' => 'メールでお送りした仮パスワードでログインしました。
-ログインを完了するには、ここで新しいパスワードを設定する必要があります:',
+'resetpass_announce' => 'ログインを完了するには、新しいパスワードを設定する必要があります。',
 'resetpass_text' => '<!-- ここに文を挿入 -->',
 'resetpass_header' => 'アカウントのパスワードの変更',
 'oldpassword' => '古いパスワード:',
@@ -950,8 +952,13 @@ $1待ってから再度試してください。',
 'resetpass-submit-cancel' => '中止',
 'resetpass-wrong-oldpass' => '仮パスワードまたは現在のパスワードが正しくありません。
 パスワードを既に変更した、または新しい仮パスワードを依頼した可能性があります。',
+'resetpass-recycled' => '現在のパスワードとは異なるパスワードを設定してください。',
+'resetpass-temp-emailed' => 'メールでお送りした一時的なコードでログインしています。
+ログインを完了するには、新しいパスワードをここで設定してください:',
 'resetpass-temp-password' => '仮パスワード:',
 'resetpass-abort-generic' => '拡張機能により、パスワードの変更は取り消されました。',
+'resetpass-expired' => 'パスワードの有効期限が切れました。ログインするには新しいパスワードを設定してください。',
+'resetpass-expired-soft' => 'パスワードの有効期限が切れたため、再設定する必要があります。新しいパスワードを今すぐ設定するか、またはキャンセルをクリックしてあとで再設定してください。',
 
 # Special:PasswordReset
 'passwordreset' => 'パスワードの再設定',
@@ -1832,11 +1839,23 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'rcnotefrom' => '以下は<strong>$2</strong>以降の更新です (最大 <strong>$1</strong> 件)。',
 'rclistfrom' => '$1以降の更新を表示する',
 'rcshowhideminor' => '細部の編集を$1',
+'rcshowhideminor-show' => '表示',
+'rcshowhideminor-hide' => '非表示',
 'rcshowhidebots' => 'ボットを$1',
+'rcshowhidebots-show' => '表示',
+'rcshowhidebots-hide' => '非表示',
 'rcshowhideliu' => '登録利用者を$1',
+'rcshowhideliu-show' => '表示',
+'rcshowhideliu-hide' => '非表示',
 'rcshowhideanons' => '匿名利用者を$1',
+'rcshowhideanons-show' => '表示',
+'rcshowhideanons-hide' => '非表示',
 'rcshowhidepatr' => '巡回された編集を$1',
+'rcshowhidepatr-show' => '表示',
+'rcshowhidepatr-hide' => '非表示',
 'rcshowhidemine' => '自分の編集を$1',
+'rcshowhidemine-show' => '表示',
+'rcshowhidemine-hide' => '非表示',
 'rclinks' => '最近 $2 日間の更新を最大 $1 件表示<br />$3',
 'diff' => '差分',
 'hist' => '履歴',
@@ -1974,6 +1993,7 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'php-uploaddisabledtext' => 'ファイルのアップロードがPHPで無効化されています。
 file_uploadsの設定を確認してください。',
 'uploadscripted' => 'このファイルは、ウェブブラウザーが誤って解釈してしまうおそれがあるHTMLまたはスクリプトコードを含んでいます。',
+'uploadinvalidxml' => 'アップロードされたファイルに含まれる XML が構文解析できませんでした。',
 'uploadvirus' => 'このファイルはウイルスを含んでいます!
 詳細: $1',
 'uploadjava' => 'このファイルは、Javaの.classファイルを含むZIPファイルです。
@@ -2358,8 +2378,10 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 'protectedpages-timestamp' => '日時',
 'protectedpages-page' => 'ページ',
 'protectedpages-expiry' => '有効期限',
+'protectedpages-performer' => '保護の実行者',
 'protectedpages-reason' => '理由',
 'protectedpages-unknown-timestamp' => '不明',
+'protectedpages-unknown-performer' => '不明な利用者',
 'protectedtitles' => '作成保護されているページ名',
 'protectedtitles-summary' => 'このページでは、現時点で新規作成が禁止されているページ名を列挙します。保護されている既存のページの一覧は、[[{{#special:ProtectedPages}}]] を参照してください。',
 'protectedtitlesempty' => 'これらの引数で現在保護されているページはありません。',
@@ -4517,6 +4539,4 @@ MediaWikiは、有用であることを期待して配布されていますが
 'expand_templates_generate_rawhtml' => 'HTML ソースを表示',
 'expand_templates_preview' => 'プレビュー',
 
-# Unknown messages
-'uploadinvalidxml' => 'アップロードされたファイルに含まれる XML が構文解析できませんでした。',
 );
index 14c4d26..3f56622 100644 (file)
@@ -16,7 +16,6 @@
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Lingk andalainin',
-'tog-justify' => 'Jostifai paragraaf',
 'tog-hideminor' => 'Aid maina edit ina riisant chienj',
 'tog-hidepatrolled' => 'Aid pachruol edit ina riisant chienj',
 'tog-newpageshidepatrolled' => 'Aid pachruol piej frahn nyuu piej lis',
@@ -25,9 +24,7 @@ $messages = array(
 'tog-numberheadings' => 'Aato-nomba edndem',
 'tog-showtoolbar' => 'Shuo edit tuulbaar (rikwaya JavaScript)',
 'tog-editondblclick' => 'Edit piej pahn dobl klik (rikwaya JavaScript)',
-'tog-editsection' => 'Eniebl sekshan editin vaya [edit] lingk',
 'tog-editsectiononrightclick' => 'Eniebl sekshan editin bai rait klikin pahn sekshan taikl (rikwaya JavaScript)',
-'tog-showtoc' => 'Shuo tiebl a kantent (fi piej wid muo dan 3 edn)',
 'tog-rememberpassword' => 'Memba mi lagiin pahn dis brouza (fi a maximom a $1 {{PLURAL:$1|die|die}})',
 'tog-watchcreations' => 'Ad piej mi kriet tu mi wachlis',
 'tog-watchdefault' => 'Ad piej mi edit tu mi wachlis',
@@ -164,7 +161,6 @@ Lef aaf dif afta pofaamin ruolbak',
 'vector-action-protect' => 'Protek',
 'vector-action-undelete' => 'Andiliit',
 'vector-action-unprotect' => 'Neu protektian',
-'vector-simplesearch-preference' => 'Eniebl enans saach sojeshan (Vekta skin onli)',
 'vector-view-create' => 'Kriet',
 'vector-view-edit' => 'Hedit',
 'vector-view-history' => 'Vyuu ischri',
index a0968b9..887d06a 100644 (file)
@@ -18,9 +18,6 @@
  */
 
 $messages = array(
-# User preference toggles
-'tog-justify' => 'jufmei co mulno selkuspe',
-
 'underline-always' => 'roroi',
 'underline-never' => 'noroi',
 
@@ -85,6 +82,7 @@ $messages = array(
 'listingcontinuesabbrev' => "co'unai",
 
 'about' => 've skicu',
+'cancel' => 'naljetnygau',
 'moredotdotdot' => '.au zmadu',
 'mytalk' => 'lo casnu be mi',
 'navigation' => 'ckupau',
@@ -112,6 +110,7 @@ $messages = array(
 'variants' => 'loi jutsi',
 
 'errorpagetitle' => 'fliba',
+'returnto' => "xrugau fi la'e zoi gy. $1 .gy",
 'tagline' => "ra'i {{SITENAME}}",
 'help' => 'sidju ckupau',
 'search' => 'sisku',
@@ -146,7 +145,7 @@ $messages = array(
 'jumptosearch' => 'sisku',
 
 # 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' => 'អំពី {{SITENAME}}',
+'aboutsite' => "skicu la'e zoi gy.{{SITENAME}}.gy",
 'aboutpage' => "Project:sera'a",
 'copyright' => "lo selvau cu gubni ja'i la'o gy. $1 .gy.",
 'copyrightpage' => "{{ns:project}}:fukyzifpo'e",
@@ -173,7 +172,7 @@ $messages = array(
 'editsectionhint' => "stika lo te fendi noi du la'oi $1",
 'toc' => 'ckupau pagbu',
 'showtoc' => 'jarco',
-'hidetoc' => 'toljarco',
+'hidetoc' => 'cancygau',
 'thisisdeleted' => 'View or restore $1?',
 'viewdeleted' => 'View $1?',
 'restorelink' => '{{PLURAL:$1|one deleted edit|$1 deleted edits}}',
@@ -186,7 +185,7 @@ $messages = array(
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'lo ckupau',
-'nstab-user' => 'pilno kibypapri',
+'nstab-user' => 'lo pilno kibypapri',
 'nstab-media' => 'Media page',
 'nstab-special' => 'steci ckupau',
 'nstab-project' => 'gungunma ckupau',
@@ -212,10 +211,17 @@ $messages = array(
 'gotaccountlink' => "co'a se jaspu",
 'loginlanguagelabel' => 'to bangu toi $1',
 
+# Change password dialog
+'resetpass-submit-cancel' => 'naljetnygau',
+
 # Special:PasswordReset
 'passwordreset-username' => 'to pilno cmene toi',
 
+# Special:ChangeEmail
+'changeemail-cancel' => 'naljetnygau',
+
 # Edit page toolbar
+'link_tip' => 'lo nenri judri',
 'extlink_sample' => 'http://www.example.com link title',
 'media_tip' => 'judri lo vreji',
 
@@ -225,7 +231,7 @@ $messages = array(
 'watchthis' => 'zgana ti',
 'savearticle' => 'stogau lo ckupau',
 'showpreview' => 'zganygau lo jai se troci',
-'showdiff' => 'jarco lo te frica',
+'showdiff' => 'catlu lo jai te frica',
 'loginreqlink' => "co'a se jaspu",
 'newarticle' => 'to cnino toi',
 'previewnote' => "'''do o'i morji lo du'u di'e jai se troci se zgana po'o'''
@@ -237,6 +243,7 @@ $messages = array(
 
 # History pages
 'revisionasof' => "ve farvi soi se detri la'oi $1",
+'previousrevision' => 'lo laldo zmadu versio',
 'cur' => 'cab',
 'last' => "prula'i",
 'page_first' => 'pamoi',
@@ -258,7 +265,9 @@ $messages = array(
 'prevn' => 'lo lidne {{PLURAL:$1|$1}}',
 'nextn' => 'lo se lidne {{PLURAL:$1|$1}}',
 'prevn-title' => 'lo lidne $1 {{PLURAL:$1|result|results}}',
+'shown-title' => 'zganygau $1 lo {{PLURAL:$1|danfu}} fau ro papri',
 'searchprofile-articles' => 'lo se vasru papri',
+'searchprofile-images' => 'tarti vreji',
 'searchprofile-everything' => "ro co'e",
 'searchprofile-advanced' => 'lo tcila',
 'searchprofile-articles-tooltip' => "sisku fi la'oi $1",
@@ -272,7 +281,7 @@ $messages = array(
 # Preferences page
 'preferences' => 'lo se nelci',
 'mypreferences' => 'lo se nelci',
-'prefs-rc' => 'puzi nu stika',
+'prefs-rc' => 'lo nu puzi stika',
 'prefs-editing' => "ca'o stika",
 'searchresultshead' => "tu'a le se sisku",
 'savedprefs' => 'le do zmaselnei pu vreji',
@@ -282,17 +291,18 @@ $messages = array(
 'action-edit' => 'stika lo vi ckupau',
 
 # Recent changes
-'recentchanges' => 'puzi nunstika',
+'recentchanges' => 'lo nu puzi stika',
 'recentchanges-summary' => 'liste loi nu puzi galfi la .uikis.',
 'rcshowhidebots' => '$1 lo zmiku',
-'rcshowhideliu' => '$1 lo samyzva',
+'rcshowhideliu' => '$1 lo se jaspu pilno',
 'diff' => 'te frica',
 'hist' => 'galfi plivei',
-'hide' => 'Toljarco',
+'hide' => 'cancygau',
 'show' => 'Jarco',
 'minoreditletter' => 'm',
 'newpageletter' => 'n',
 'boteditletter' => 'z',
+'rc-enhanced-expand' => 'zganygau lo tcila',
 
 # Recent changes linked
 'recentchangeslinked' => 'lo srana nu gasnu',
@@ -300,8 +310,8 @@ $messages = array(
 'recentchangeslinked-page' => 'to ckupau cmene toi',
 
 # Upload
-'upload' => 'benji pa vreji',
-'uploadbtn' => 'benji pa vreji',
+'upload' => 'benji lo pa vreji',
+'uploadbtn' => 'benji lo pa vreji',
 'filedesc' => 'to ve skicu toi',
 
 # File description page
@@ -401,6 +411,8 @@ $messages = array(
 'tooltip-pt-login' => "e'u do co'a pilno lo jaspu ije ku'i do na bilga",
 'tooltip-pt-logout' => "co'u se jaspu",
 'tooltip-ca-talk' => 'lo nu casnu lo se vasru be lo dei ckupau',
+'tooltip-ca-history' => 'lo purci versio be lo dei papri',
+'tooltip-ca-protect' => 'bandu lo dei papri',
 'tooltip-ca-delete' => 'vimcu lo vi ckupau',
 'tooltip-ca-move' => 'ko galfi lo cmene be lo vi ckupau',
 'tooltip-ca-watch' => 'jmive lo dei ckupau lo se zgana liste pe do',
@@ -411,14 +423,15 @@ $messages = array(
 'tooltip-n-mainpage' => 'vitke lo ralju ckupau',
 'tooltip-n-mainpage-description' => 'vitke lo ralju ckupau',
 'tooltip-n-portal' => "srana lo dei proiekto je zo'e noi ka'e se zukte do vau je lo stuzi be lo plixau info",
-'tooltip-n-recentchanges' => "liste lo puzi nunstika vreji be bu'u lo vi uitke",
+'tooltip-n-recentchanges' => "liste lo vreji be lo nu puzi stika bu'u lo dei uitki",
 'tooltip-n-randompage' => 'jarco lo cunso ckupau',
 'tooltip-n-help' => 'sidju kibypapri',
 'tooltip-t-whatlinkshere' => "nu liste lo zifyga'ikibjudri poi ke'a kibjorne le vi ckupau",
 'tooltip-t-recentchangeslinked' => "lo puzi nunga'i pe lo kibypapri poi kibjorne le vi ckupau",
-'tooltip-t-upload' => 'benji lo vreji',
+'tooltip-t-upload' => 'benji lo pa vreji',
 'tooltip-t-specialpages' => 'liste ro steci ckupau',
 'tooltip-t-print' => 'lo prina versio be lo dei ckupau',
+'tooltip-t-permalink' => 'lo stodi judri be lo dei versio be lo dei papri',
 'tooltip-ca-nstab-main' => 'catlu lo se vasru ckupau',
 'tooltip-ca-nstab-project' => 'cpacu lo gungunma ckupau',
 'tooltip-ca-nstab-image' => 'catlu lo ckupau pe lo vreji',
@@ -429,6 +442,13 @@ $messages = array(
 # Info page
 'pageinfo-toolboxlink' => 'lo info be lo ckupau',
 
+# Bad image list
+'bad_image_list' => "lo formate cu jai ve ciksi do'e di'e
+
+i lo po'o liste cmima (to lo linji poi zo'oi * cu pamoi lerfu ke'a) cu se pilno
+i lo pamoi ke linji judrysni cu ei judrysni lo jai se curmi nai fail
+i ro lo se lidne judrysni pe lo bi'unai linji cu nai jai se javni vau je va'i me lo papri poi lo fail sinxa ka'e zvati lo bi'unai linji",
+
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => "ro co'e",
 'namespacesall' => "ro co'e",
@@ -437,4 +457,7 @@ $messages = array(
 # Special:SpecialPages
 'specialpages' => 'steci ckupau',
 
+# Feedback
+'feedback-cancel' => 'naljetnygau',
+
 );
index ad51c0e..9b61005 100644 (file)
@@ -19,16 +19,13 @@ $fallback = 'da';
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Understreg henvesnenger',
-'tog-justify' => 'Ves ertikler ve lege margener',
 'tog-hideminor' => "Skjul mendre ændrenger i'n liste åver seneste ændrenger",
 'tog-extendwatchlist' => 'Udvedet liste ve seneste ændrenger',
 'tog-usenewrc' => 'Førbedret liste åver seneste ændrenger (JavaScript)',
 'tog-numberheadings' => 'Åtåmatisk nåmererenge åf åverskrefter',
 'tog-showtoolbar' => 'Ves værktøjslenje til redigærenge (JavaScript)',
 'tog-editondblclick' => 'Redigær sider ve dåbeltklik (JavaScript)',
-'tog-editsection' => 'Redigær åfsnet ve hjælp åf [redigær]-henvesnenger',
 'tog-editsectiononrightclick' => 'Redigær åfsnet ve at klikke på deres titler (JavaScript)',
-'tog-showtoc' => 'Ves endholtsførtegnelse (i artikler ve mære end tre åfsnet)',
 'tog-rememberpassword' => 'Husk adgengskode til næste besøĝ frå denne kompjuter (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'Tilføj sider a åpretter til miin åvervågnengsliste',
 'tog-watchdefault' => 'Tilføj sider a redigærer til miin åvervågnengsliste',
@@ -37,7 +34,6 @@ $messages = array(
 'tog-minordefault' => 'Markær søm standård ål redigærenge søm mendre',
 'tog-previewontop' => 'Ves førhåndsvesnenge åver æ rædigerengsboks',
 'tog-previewonfirst' => 'Ves førhåndsvesnenge når du stårtst ve at redigære',
-'tog-nocache' => 'Slå caching åf sider frå',
 'tog-enotifwatchlistpages' => 'Send mig en e-mail ve sideændrenger',
 'tog-enotifusertalkpages' => 'Send mig en e-mail når miin brugerdiskusjeside ændres',
 'tog-enotifminoredits' => 'Send mig også en e-mail ve mendre ændrenger åf åvervågede sider',
@@ -416,7 +412,6 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre 
 'lineno' => 'Lenje $1:',
 'compareselectedversions' => 'Sammenlign valgte hersenenger',
 'editundo' => 'baĝgøt',
-'diff-multi' => '(Æ hersenengssammenlegnenge vetåger {{PLURAL:$1|en mellemleggende hersenenge|$1 mellemleggende hersenenger}}.)',
 
 # Search results
 'prevn' => 'førge {{PLURAL:$1|$1}}',
@@ -445,7 +440,6 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre 
 'nchanges' => '$1 {{PLURAL:$1|ændrenge|ændrenger}}',
 'recentchanges' => 'Seneste ændrenger',
 'recentchanges-feed-description' => 'Ve dette fiid ken du følge de seneste ændrenger på {{SITENAME}}.',
-'rcnote' => "Herunder ses {{PLURAL:$1|'''1''' ændrenge|de sedste '''$1''' ændrenger}} frå {{PLURAL:$2|i dåg|de sedste '''$2''' dåg}}, søm i $3.",
 'rcnotefrom' => "Nedenfør ses ændrengerne frå '''$2''' til '''$1''' vest.",
 'rclistfrom' => 'Ves nye ændrenger startende frå $1',
 'rcshowhideminor' => '$1 lile ændrenger',
index 11983ec..41b75c8 100644 (file)
@@ -215,7 +215,6 @@ $messages = array(
 'vector-action-protect' => 'Reksa',
 'vector-action-undelete' => 'Batalna pambusakan',
 'vector-action-unprotect' => 'Owahi pangreksan',
-'vector-simplesearch-preference' => 'Urubaké wilah panggolèkan ringkes (namung kulit Vèktor)',
 'vector-view-create' => 'Gawé',
 'vector-view-edit' => 'Sunting',
 'vector-view-history' => 'Sajarah kaca',
index 37d7ea0..670622c 100644 (file)
@@ -22,6 +22,7 @@
  * @author Reedy
  * @author Sopho
  * @author Temuri rajavi
+ * @author Tokoko
  * @author ka.wikipedia.org sysops
  * @author לערי ריינהארט
  * @author გიორგიმელა
@@ -332,7 +333,6 @@ $messages = array(
 'vector-action-protect' => 'დაცვა',
 'vector-action-undelete' => 'აღდგენა',
 'vector-action-unprotect' => 'დაცვის შეცვლა',
-'vector-simplesearch-preference' => 'ძიების გაფართოებული ველის ჩართვა (მხოლოდ ვექტორული იერსახისთვის)',
 'vector-view-create' => 'შექმნა',
 'vector-view-edit' => 'რედაქტირება',
 'vector-view-history' => 'ისტორია',
@@ -706,6 +706,9 @@ Please wait $1 before trying again.',
 'login-abort-generic' => 'თქვენი ავტორიზაცია წარუმატებელია – გაუქმდა',
 'loginlanguagelabel' => 'ენა: $1',
 'suspicious-userlogout' => 'თქვენი მოთხოვნა გასვლის შესახებ გაუქმებულია, რადგანაც იგი გავს ქეშირებადი პროქსის ან არაკორექტული ბრაუზერის მოთხოვნას.',
+'pt-login' => 'შესვლა',
+'pt-createaccount' => 'ანგარიშის შექმნა',
+'pt-userlogout' => 'გასვლა',
 
 # Email sending
 'php-mail-error-unknown' => 'ამოუცნობი შეცდომა PHP-ის mail() ფუნქციაში',
@@ -722,6 +725,7 @@ Please wait $1 before trying again.',
 'retypenew' => 'ახალი პაროლი განმეორებით:',
 'resetpass_submit' => 'მიუთითეთ პაროლი და დარეგისტრირდით',
 'changepassword-success' => 'თქვენი პაროლი წარმატებით შეიცვალა!',
+'changepassword-throttled' => 'თქვენ განახორციელეთ ანგარიშში შესვლის ზედმეტად ბევრი მცდელობა. გამორებით შეყვანამდე გთხოვთ დაიცადოთ $1.',
 'resetpass_forbidden' => 'პაროლის შეცვლა შეუძლებელია',
 'resetpass-no-info' => 'კონკრეტულად ამ გვერდთან სამუშაოდ თქვენ უნდა წარადგინოთ თავი სისტემისადმი.',
 'resetpass-submit-loggedin' => 'პაროლის შეცვლა',
@@ -730,6 +734,7 @@ Please wait $1 before trying again.',
 შესაძლოა თქვენ წარმატებით შეცვალეთ პაროლი ან მოითხოვეთ ახალი.',
 'resetpass-temp-password' => 'დროებითი პაროლი:',
 'resetpass-abort-generic' => 'პაროლის შეცვლა შეჩერდა გაფართოების მიერ.',
+'resetpass-expired' => 'თქვენს პაროლს ვადა გაუვიდა. გთხოვთ, დააყენოთ ახალი.',
 
 # Special:PasswordReset
 'passwordreset' => 'პაროლის აღდგენა',
@@ -1222,7 +1227,7 @@ $1",
 'shown-title' => 'აჩვენეთ $1 {{PLURAL:$1|რეზულტატი|რეზულტატი}} გვერდზე',
 'viewprevnext' => 'იხილე  ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-exists' => "'''ამ ვიკიპროექტში არის გვერდი „[[:$1]]“'''",
-'searchmenu-new' => "'''შექმენით გვერდი „[[:$1]]“ ამ ვიკიში!'''",
+'searchmenu-new' => "'''შექმენით გვერდი „[[:$1]]“ ამ ვიკიში!''' {{PLURAL:$2|0=|აგრეთვე იხილე ძიები შედეგი.|აგრეთვე იხილე ძიების შედეგები.}}",
 'searchprofile-articles' => 'ძირითადი გვერდები',
 'searchprofile-project' => 'დახმარების და პროექტის გვერდები',
 'searchprofile-images' => 'მულტიმედია',
@@ -2041,6 +2046,11 @@ $1',
 'protectedpages-indef' => 'მხოლოდ უვადო დაცვები',
 'protectedpages-cascade' => 'მხოლოდ კასკადური დაცვა',
 'protectedpagesempty' => 'ამ დროისთვის არ არსებობს დაცული გვერდები მოთხოვნილი პარამეტრებით.',
+'protectedpages-page' => 'გვერდი',
+'protectedpages-expiry' => 'ვადა გასდის',
+'protectedpages-reason' => 'მიზეზი',
+'protectedpages-unknown-timestamp' => 'უცნობი',
+'protectedpages-unknown-performer' => 'უცნობი მომხმარებელი',
 'protectedtitles' => 'დაცული სათაურები',
 'protectedtitlesempty' => 'ამ დროისთვის არ არსებობს მოთხოვნილი გვერდები მოცემული პარამეტრებით.',
 'listusers' => 'მომხმარებლების სია',
@@ -2784,6 +2794,7 @@ $1',
 'allmessages-prefix' => 'წინსართის ფილტრი:',
 'allmessages-language' => 'ენა:',
 'allmessages-filter-submit' => 'გადასვლა',
+'allmessages-filter-translate' => 'თარგმნა',
 
 # Thumbnails
 'thumbnail-more' => 'გაზარდე',
@@ -3697,6 +3708,9 @@ $5
 'imgmultigo' => 'გადასვლა',
 'imgmultigoto' => 'გადასვლა გვერდზე $1',
 
+# Language selector for translatable SVGs
+'img-lang-go' => 'წინ',
+
 # Table pager
 'ascending_abbrev' => 'დაბრ',
 'descending_abbrev' => 'აღწერა',
@@ -3801,6 +3815,12 @@ $5
 'version-version' => '(ვერსია $1)',
 'version-svn-revision' => '(r$2)',
 'version-license' => 'მედიავიკის ლიცენზია',
+'version-ext-license' => 'ლიცენზია',
+'version-ext-colheader-name' => 'გაფართოებები',
+'version-ext-colheader-version' => 'ვერსია',
+'version-ext-colheader-license' => 'ლიცენზია',
+'version-ext-colheader-description' => 'აღწერა',
+'version-ext-colheader-credits' => 'ავტორები',
 'version-poweredby-credits' => "ეს ვიკი მუშაობს '''[https://www.mediawiki.org/ MediaWiki]'''-ს ძრავზე, copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'სხვები',
 'version-poweredby-translators' => 'translatewiki.net-ის მთარგმნელები',
@@ -3826,6 +3846,7 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 'redirect-lookup' => 'ძიება:',
 'redirect-value' => 'მნიშვნელობა:',
 'redirect-user' => 'მომხმარებლის იდენტიფიკატორი',
+'redirect-page' => 'გვერდის ID',
 'redirect-revision' => 'გვერდის ვერსია',
 'redirect-file' => 'ფაილის სახელი',
 'redirect-not-exists' => 'მნიშვნელობა ვერ მოიძებნა',
index e4ce6a0..50561cc 100644 (file)
@@ -206,7 +206,6 @@ $messages = array(
 'vector-action-protect' => 'Mmesten',
 'vector-action-undelete' => 'Uɣaled',
 'vector-action-unprotect' => 'Beddel amesten',
-'vector-simplesearch-preference' => 'Sermed tafeggast taḥerfit n unadi (i "Vector" kan)',
 'vector-view-create' => 'Snulfu',
 'vector-view-edit' => 'Ẓẓiẓreg',
 'vector-view-history' => 'Ẓeṛ amazray',
index 8679a96..f308bb9 100644 (file)
@@ -56,7 +56,6 @@ $namespaceGenderAliases = array();
 $messages = array(
 # User preference toggles
 'tog-underline' => 'ТехьэпӀэхэр щӀэтхъэн:',
-'tog-justify' => 'БгъуагъкӀэ напэкӀуэцӀыр зэгъэзэхуэн',
 'tog-hideminor' => 'Гъэтэрэзыгъуэ цӀыкӀухэр гъэпшкӀун, щӀэуэ яхъуэжахэм я тхылъым',
 'tog-hidepatrolled' => 'Гъэтэрэзыгъуэ зыщӀэлъыплъахэр гъэпшкӀун, щӀэуэ яхъуэжахэм я тхылъым',
 'tog-newpageshidepatrolled' => 'НапэкӀуэцӀ зыщӀэлъыплъахэр гъэпшкӀун, напэкӀуэцӀ щӀэхэм я тхылъым',
@@ -65,9 +64,7 @@ $messages = array(
 'tog-numberheadings' => 'Псалъащхьэхэм автоматику номер ятын',
 'tog-showtoolbar' => 'Гъэтэрэзыным идежь ищхьэ пэнелыр гъэлъэгъуэн (JavaScript)',
 'tog-editondblclick' => 'ТӀуанэ текъузэгъуэкӀэ напэкӀуэцӀхэр гъэтэрэзын (requires JavaScript)',
-'tog-editsection' => 'Лъэныкъуэ къэс техьэпӀэ [гъэтэрэзын] гъэлъэгъуэн',
 'tog-editsectiononrightclick' => 'Псалъашъхьэм, дзыгъуэм и ижырабгъу текъузэгъуэмкӀэ секциэхэр гъэтэрэзын (JavaScript)',
-'tog-showtoc' => 'Зэхэлъыгъуэр гъэлъэгъуэн (псэлъашъхьищ нэхъыбу зиӀэ напэкӀуэцӀхэм)',
 'tog-rememberpassword' => 'Компутерым си логиныр щыхъумэн (мы нэхъыбу $1 {{PLURAL:$1|махуэ|маху}})',
 'tog-watchcreations' => 'Сэ сщIа напэкIуэцIхэр сызыкIэлъыплъ тхылъым хэлъхьэн',
 'tog-watchdefault' => 'Сэ схъуэжа напэкIуэцIхэр сызыкIэлъыплъ тхылъым хэлъхьэн',
@@ -205,7 +202,6 @@ $messages = array(
 'vector-action-protect' => 'Хъумэн',
 'vector-action-undelete' => 'ЗыфӀэгъэувэжын',
 'vector-action-unprotect' => 'Хъумэныр техыжын',
-'vector-simplesearch-preference' => 'Лъыхъуэгъуэ нэхъ зэхэхауэ дэӀэпыкъуэгъухэр хэгъэнэн (Векторым шъхьэкӀэ къуэдей)',
 'vector-view-create' => 'ЩӀын',
 'vector-view-edit' => 'Гъэтэрэзын',
 'vector-view-history' => 'Тхыдэм еплъын',
@@ -917,7 +913,6 @@ $1",
 'compareselectedversions' => 'Хэха версиэхэр зэгъэпщэн',
 'showhideselectedversions' => 'Гъэлъэгъуэн/гъэпшкӀун версиэ хэхахэр',
 'editundo' => 'щӀегъуэжын',
-'diff-multi' => '({{PLURAL:$1|курыт версиэ $1-м ер гъэлъэгъуакъым|курыт версиэхэр $1-м ер гъэлъэгъуакъым}} {{PLURAL:$2|цӀыхухэт 2$|цӀыхухэтхэм 2$}})',
 'diff-multi-manyusers' => '({{PLURAL:$1|курыт версиэ $1-м ер гъэлъэгъуащ|курыт версиэхэр $1-м ер гъэлъэгъуащ}}, щӀахэщ $2 нэхъыбэу {{PLURAL:$2|цӀыхухэт|цӀыхухэтхэм}})',
 
 # Search results
index f76e23d..2ca7a4e 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Kazakh (Ò\9aазақша)
+/** Kazakh (Ò\9bазақша)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -19,31 +19,36 @@ $messages = array(
 'nstab-main' => 'Мақала',
 
 # Edit pages
-'edittools' => '<!-- Мындағы мәтін өңдеу және қотару пішіндердің астында көрсетіледі. -->',
+'edittools' => '<!-- Мындағы мәтін өңдеу және жүктеу пішіндердің астында көрсетіледі. -->',
+'editwarning-warning' => 'Басқа бетке өтсеңіз сіздің жазған соңғы өңдемелеріңіз жойылуы мүмкін. 
+Егер сiз жүйеде тiркелсеңiз, онда сiз баптауларыңыздағы «{{int:prefs-editing}}» бөлігіне кіріп, бұл ескертуді өшіре аласыз.',
 
 # Search results
 'searchmenu-new' => "'''\"[[:\$1]]\" осындай атпен бетті бастау'''",
 
 # Statistics
-'statistics-header-pages'      => 'Беттер бойынша статистика',
-'statistics-header-edits'      => 'Өңдеулер статистикасы',
-'statistics-articles'          => 'Мақалалар саны',
-'statistics-pages'             => 'Беттер',
-'statistics-pages-desc'        => 'Уикидегі барлық беттер, талқылау беттерді, айдатқыштарды қосқандағы және тағы басқалары.',
-'statistics-files'             => 'Жүктелген файлдар',
-'statistics-edits'             => 'Барлық өңдеулер саны',
-'statistics-edits-average'     => 'Әр бетке шаққанда өңдеулердің орташа саны',
-'statistics-users'             => 'Тіркелген қатысушылар',
-'statistics-users-active'      => 'Белсенді қатысушылар',
+'statistics-header-pages' => 'Беттер бойынша статистика',
+'statistics-header-edits' => 'Өңдеулер статистикасы',
+'statistics-articles' => 'Мақалалар саны',
+'statistics-pages' => 'Беттер',
+'statistics-pages-desc' => 'Уикидегі барлық беттер, талқылау беттерді, айдатқыштарды қосқандағы және тағы басқалары.',
+'statistics-files' => 'Жүктелген файлдар',
+'statistics-edits' => 'Барлық өңдеулер саны',
+'statistics-edits-average' => 'Әр бетке шаққанда өңдеулердің орташа саны',
+'statistics-users' => 'Тіркелген қатысушылар',
+'statistics-users-active' => 'Белсенді қатысушылар',
 'statistics-users-active-desc' => 'Соңғы {{PLURAL:$1|күнде|$1 күнде}} қандай да бір іс-әрекет жасаған қатысушылар',
 
 # Variants for Kazakh language
-'variantname-kk-kz'   => 'disable',
-'variantname-kk-tr'   => 'disable',
-'variantname-kk-cn'   => 'disable',
+'variantname-kk-kz' => 'disable',
+'variantname-kk-tr' => 'disable',
+'variantname-kk-cn' => 'disable',
 'variantname-kk-cyrl' => 'Кирил',
 'variantname-kk-latn' => 'Latın',
 'variantname-kk-arab' => 'توتە',
-'variantname-kk'      => 'disable',
+'variantname-kk' => 'disable',
+
+# New logging system
+'logentry-delete-delete' => '$1 $3 бетін жойды',
 
 );
index e3c08bc..555af82 100644 (file)
@@ -523,7 +523,6 @@ $messages = array(
 'vector-action-protect' => 'Қорғау',
 'vector-action-undelete' => 'Жоймау',
 'vector-action-unprotect' => 'Қорғанысты өзгерту',
-'vector-simplesearch-preference' => 'Кеңейтілген іздеу құралын қосу (Векторлық безендіру үшін ғана)',
 'vector-view-create' => 'Бастау',
 'vector-view-edit' => 'Өңдеу',
 'vector-view-history' => 'Тарихын қарау',
index e6329fc..b9358f0 100644 (file)
@@ -660,6 +660,7 @@ $2',
 'invalidtitle-unknownnamespace' => 'ចំណងជើងមិនត្រឹមត្រូវដែលមានលំហឈ្មោះមិនស្គាល់លេខ $1 និងអត្ថបទ "$2"',
 'exception-nologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
 'exception-nologin-text' => 'សូម[[Special:Userlogin|lកត់ឈ្មោះចូល]]ដើម្បីចូលអានទំព័រឬធ្វើសកម្មភាពនេះ។',
+'exception-nologin-text-manual' => 'សូម $1 ដើម្បីអាចចូលមើលទំព័រនេះឬធ្វើសកម្មភាពអ្វីមួយ។',
 
 # Virus scanner
 'virus-badscanner' => "ការ​កំណត់​រចនា​សម្ព័ន្ធ​មិន​ល្អ​៖ កម្មវិធី​ស្កេន​មេរោគមិន​ស្គាល់​៖ ''$1''",
@@ -710,6 +711,8 @@ $2',
 'userlogin-resetpassword-link' => 'អ្នកភ្លេចពាក្យសម្ងាត់ហើយ?',
 'helplogin-url' => 'Help:ការកត់ឈ្មោះចូល',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ជំនួយក្នុងការកត់ឈ្មោះចូល]]',
+'userlogin-loggedin' => 'អ្នកបានកត់ឈ្មោះចូលជា {{GENDER:$1|$1}} ហើយ។
+ប្រើសំណុំបែបបទខាងក្រោមដើម្បីកត់ឈ្មោះចូលជាអ្នកប្រើប្រាស់ផ្សេងម្នាក់ទៀត។',
 'userlogin-createanother' => 'បង្កើតគណនីមួយទៀត',
 'createacct-join' => 'បំពេញព័ត៌មានរបស់អ្នកខាងក្រោម។',
 'createacct-another-join' => 'បញ្ចូលព័ត៌មានគណនីថ្មីខាងក្រោម។',
@@ -818,6 +821,9 @@ $2',
 'login-abort-generic' => 'អ្នកចុះឈ្មោះចូលមិនបានសម្រេចទេ។ ការចុះឈ្មោះចូលត្រូវបានបោះបង់។',
 'loginlanguagelabel' => 'ភាសា៖ $1',
 'createacct-another-realname-tip' => 'អ្នកអាចផ្ដល់ឈ្មោះពិតរបស់អ្នកក៏បានមិនផ្ដល់ក៏បាន។ បើអ្នកផ្ដល់ឱ្យ វានឹងត្រូវបានប្រើប្រាស់់ដើម្បីបញ្ជាក់ភាពជាម្ចាស់​លើការរួមចំណែក​នានា​របស់អ្នក។',
+'pt-login' => 'កត់ឈ្មោះចូល',
+'pt-createaccount' => 'បង្កើតគណនី',
+'pt-userlogout' => 'កត់ឈ្មោះចេញ',
 
 # Email sending
 'php-mail-error-unknown' => 'កំហុសមិនស្គាល់នៅក្នុងអនុគមន៍ mail() របស់ PHP',
@@ -826,9 +832,7 @@ $2',
 
 # Change password dialog
 'changepassword' => 'ប្តូរពាក្យសម្ងាត់',
-'resetpass_announce' => 'អ្នកបានកត់ឈ្មោះចូលដោយ​អក្សរកូដ​បណ្តោះអាសន្ន​មួយដែលយើងខ្ញុំបានអ៊ីមែលទៅឱ្យ​។
-
-ដើម្បី​បញ្ចប់​ការកត់ឈ្មោះចូល អ្នកត្រូវតែ​កំណត់​ពាក្យសម្ងាត់ថ្មី​មួយនៅទីនេះ៖',
+'resetpass_announce' => 'ដើម្បី​បញ្ចប់​ការកត់ឈ្មោះចូល អ្នកត្រូវតែ​កំណត់​ពាក្យសម្ងាត់ថ្មី​មួយ។',
 'resetpass_text' => '<!-- បន្ថែមឃ្លានៅទីនេះ -->',
 'resetpass_header' => 'ប្ដូរ​ពាក្យសម្ងាត់​គណនី',
 'oldpassword' => 'ពាក្យសម្ងាត់ចាស់៖',
@@ -836,6 +840,8 @@ $2',
 'retypenew' => 'សូមវាយពាក្យសម្ងាត់ថ្មី​ម្តងទៀត៖',
 'resetpass_submit' => 'ដាក់ប្រើពាក្យសម្ងាត់និង​កត់ឈ្មោះចូល',
 'changepassword-success' => 'ពាក្យសម្ងាត់របស់អ្នកត្រូវបានផ្លាស់ប្តូរបានសំរេចហើយ!',
+'changepassword-throttled' => 'អ្នកបានព្យាយាមកត់ឈ្មោះចូលជាប់ៗគ្នាច្រើនដងពេកហើយ។​
+សូមរង់ចាំរយៈពេល$1 មុនពេលសាកល្បងម្ដងទៀត។',
 'resetpass_forbidden' => 'ពាក្យសម្ងាត់មិនអាចផ្លាស់ប្តូរបានទេ',
 'resetpass-no-info' => 'អ្នក​ចាំបាច់​ត្រូវតែ​កត់ឈ្មោះចូល ដើម្បី​ចូលទៅកាន់​ទំព័រ​នេះ​ដោយផ្ទាល់​។',
 'resetpass-submit-loggedin' => 'ប្តូរពាក្យសម្ងាត់',
@@ -843,7 +849,12 @@ $2',
 'resetpass-wrong-oldpass' => 'ពាក្យ​សម្ងាត់​បណ្ដោះ​អាសន្ន​ ឬ​បច្ចុប្បន្នមិន​ត្រឹមត្រូវ​។
 
 អ្នក​​ប្រហែល​ជា​បាន​ផ្លាស់​ប្ដូរ​ពាក្យសម្ងាត់​រួចហើយ ឬ​បានស្នើ​សុំ​ពាក្យ​សម្ងាត់​​បណ្ដោះ​អាសន្ន​​ថ្មី​មួយ​ហើយ។',
+'resetpass-recycled' => 'សូមកំណត់ពាក្យសម្ងាត់ថ្មីរបស់អ្នក ដែលខុសពីពាក្យសម្ងាត់បច្ចុប្បន្នរបស់អ្នក។',
+'resetpass-temp-emailed' => 'អ្នកបានកត់ឈ្មោះចូលដោយប្រើលេខកូដបណ្ដោះអាសន្នផ្ញើតាមអ៊ីមែល។
+ដើម្បីបញ្ចប់ការកត់ឈ្មោះចូល អ្នកចាំបាច់ត្រូវតែកំណត់ពាក្យសម្ងាត់ថ្មីនៅទីនេះ៖',
 'resetpass-temp-password' => 'ពាក្យសម្ងាត់បណ្តោះអាសន្ន:',
+'resetpass-expired' => 'ពាក្យសម្ងាត់របស់អ្នកហួសសុពលភាពហើយ។ សូមកំណត់ពាក្យសម្ងាត់ថ្មីដើម្បីកត់ឈ្មោះចូល។',
+'resetpass-expired-soft' => 'ពាក្យសម្ងាត់របស់អ្នកហួសសុពលភាពហើយ ហើយអ្នកត្រូវតែកំណត់វាឡើងវិញ។ សូមជ្រើសរើសពាក្យសម្ងាត់ថ្មីឥឡូវនេះ ឬចុចបោះបង់ដើម្បីកំណត់វានៅពេលក្រោយ។',
 
 # Special:PasswordReset
 'passwordreset' => 'កំណត់​ពាក្យសម្ងាត់​សាឡើងវិញ',
@@ -893,6 +904,8 @@ $2
 'changeemail-password' => 'ពាក្យសំងាត់{{SITENAME}}របស់អ្នក:',
 'changeemail-submit' => 'ផ្លាស់ប្ដូរអ៊ីមែល',
 'changeemail-cancel' => 'បោះបង់',
+'changeemail-throttled' => 'អ្នកបានព្យាយាមកត់ឈ្មោះចូលច្រើនដងពេកហើយ។​
+សូមរង់ចាំរយៈពេល$1 មុនពេលសាកល្បងម្ដងទៀត។',
 
 # Edit page toolbar
 'bold_sample' => 'អក្សរដិត',
@@ -1111,7 +1124,7 @@ $2
 'invalid-content-data' => 'ខ្លឹមសារទិន្នន័យគ្មានសុពលភាព',
 'content-not-allowed-here' => 'មិនអនុញ្ញាតិអោយសរសេរខ្លឹមសារ"$1" នៅលើទំព័រ [[$2]] ទេ។',
 'editwarning-warning' => 'ចាកចេញពីទំព័រនេះ នឹងធ្វើឲ្យអ្នកបាត់បង់កំណែប្រែដែលអ្នកបានធ្វើ។
-ប្រសិនបើអ្នកបាន​កត់ឈ្មោះចូលរួចហើយ អ្នកអាច​បិទ​បម្រាម​នេះ​នៅ​ក្នុងផ្នែក​ "កែប្រែ" នៃ​ចំណង់ចំណូល​ចិត្ត​របស់​អ្នក​។',
+ប្រសិនបើអ្នកបាន​កត់ឈ្មោះចូលរួចហើយ អ្នកអាច​បិទ​បម្រាម​នេះ​នៅ​ក្នុងផ្នែក​ "{{int:prefs-editing}}" នៃ​ចំណង់ចំណូល​ចិត្ត​របស់​អ្នក​។',
 
 # Content models
 'content-model-wikitext' => 'អត្ថបទវិគី',
@@ -1665,11 +1678,23 @@ $1",
 'rcnotefrom' => "ខាងក្រោមនេះជាបន្លាស់ប្ដូរនានាគិតចាប់តាំងពី '''$2''' (បង្ហាញអតិបរមាចំនួន '''$1''')។",
 'rclistfrom' => 'បង្ហាញបន្លាស់ប្ដូរថ្មីៗចាប់តាំងពី $1',
 'rcshowhideminor' => '$1កំណែប្រែ​តិចតួច',
+'rcshowhideminor-show' => 'បង្ហាញ​',
+'rcshowhideminor-hide' => 'លាក់',
 'rcshowhidebots' => '$1រូបយន្ត',
+'rcshowhidebots-show' => 'បង្ហាញ​',
+'rcshowhidebots-hide' => 'លាក់',
 'rcshowhideliu' => '$1អ្នកប្រើប្រាស់ដែលបានចុះឈ្មោះរួច',
+'rcshowhideliu-show' => 'បង្ហាញ',
+'rcshowhideliu-hide' => 'លាក់',
 'rcshowhideanons' => '$1អ្នកប្រើប្រាស់អនាមិក',
+'rcshowhideanons-show' => 'បង្ហាញ',
+'rcshowhideanons-hide' => 'លាក់',
 'rcshowhidepatr' => '$1កំណែប្រែដែលបានល្បាត',
+'rcshowhidepatr-show' => 'បង្ហាញ',
+'rcshowhidepatr-hide' => 'លាក់',
 'rcshowhidemine' => '$1កំណែប្រែរបស់ខ្ញុំ',
+'rcshowhidemine-show' => 'បង្ហាញ',
+'rcshowhidemine-hide' => 'លាក់',
 'rclinks' => 'បង្ហាញបន្លាស់ប្ដូរ$1ចុងក្រោយធ្វើឡើងក្នុងរយៈពេល$2ថ្ងៃចុងក្រោយ<br />$3',
 'diff' => 'ប្រៀបធៀប',
 'hist' => 'ប្រវត្តិ',
@@ -2119,9 +2144,20 @@ $1',
 'deadendpagestext' => 'ទំព័រដូចតទៅនេះមិនតភ្ជាប់ទៅទំព័រដទៃទៀតក្នុង {{SITENAME}} ទេ។',
 'protectedpages' => 'ទំព័រដែលត្រូវបានការពារ',
 'protectedpages-indef' => 'សំរាប់តែការការពារដែលមិនកំណត់ប៉ុណ្ណោះ',
+'protectedpages-summary' => 'ទំព័រនេះរាយបញ្ជីទំព័រដែលកំពុងត្រូវបានការពារ។ សម្រាប់បញ្ជីចំណងជើងទាំងឡាយដែលស្ថិននៅក្រោមការការពារមិនអោយបង្កើត សូមមើលនៅ [[{{#special:ProtectedTitles}}]]។',
 'protectedpages-cascade' => 'សំរាប់ការការពារជាថ្នាក់ប៉ុណ្ណោះ​',
+'protectedpages-noredirect' => 'លាក់ការបញ្ជូនបន្ត',
 'protectedpagesempty' => '​មិន​មាន​ទំព័រ​ណា​ដែល​ត្រូវបាន​ការពារ ជាមួយប៉ារ៉ាម៉ែត​ទាំងនេះទេ។',
+'protectedpages-timestamp' => 'ត្រាពេលវេលា',
+'protectedpages-page' => 'ទំព័រ',
+'protectedpages-expiry' => 'ផុតកំណត់',
+'protectedpages-performer' => 'អ្នកប្រើប្រាស់កំពុងការពារ',
+'protectedpages-params' => 'ប៉ារ៉ាម៉ែត្រនៃការការពារ',
+'protectedpages-reason' => 'មូល​ហេតុ',
+'protectedpages-unknown-timestamp' => 'មិនស្គាល់',
+'protectedpages-unknown-performer' => 'អ្នកប្រើប្រាស់មិនស្គាល់',
 'protectedtitles' => 'ចំណងជើងត្រូវបានការពារ',
+'protectedtitles-summary' => 'ទំព័រនេះរាយបញ្ជីចំណងជើងទាំងឡាយដែលស្ថិននៅក្រោមការការពារមិនអោយបង្កើត។ សម្រាប់បញ្ជីទំព័រដែលកំពុងត្រូវបានការពារ សូមមើលនៅ [[{{#special:ProtectedPages}}]]។',
 'protectedtitlesempty' => 'មិន​មាន​ចំណងជើង​ណា​ដែល​ត្រូវ​បាន​ការពារ​ជាមួយនឹង​ប៉ារ៉ាម៉ែត​ទាំងនេះ​ទេ​នាពេលថ្មីៗនេះ។',
 'listusers' => 'បញ្ជីអ្នកប្រើប្រាស់',
 'listusers-editsonly' => 'បង្ហាញតែអ្នកប្រើប្រាស់ដែលបានកែប្រែអត្ថបទប៉ុណ្ណោះ',
@@ -2812,6 +2848,7 @@ $1',
 'exportall' => 'នាំចេញទំព័រទាំងអស់',
 'exportnohistory' => "----
 '''សម្គាល់​:''' ការ​នាំ​ចេញ​នូវ​ប្រវត្តិ​នៃ​ទំព័រ​តាម​រយៈ​សំនុំ​បែប​បទ​នេះ​ មិនត្រូវ​បានអនុញ្ញាត​ដោយ​មូល​ហេតុ​ប៉ះ​ពាល់​ដល់​គុណភាព​ដំឡើរ​ការ​។",
+'exportlistauthors' => 'រួមបញ្ចូលបញ្ជីពេញលេញនៃអ្នករួមចំណែកសម្រាប់ទំព័រនីមួយៗ',
 'export-submit' => 'នាំចេញ',
 'export-addcattext' => 'បន្ថែមទំព័រនានាពីចំណាត់ថ្នាក់ក្រុម៖',
 'export-addcat' => 'បន្ថែម',
@@ -2834,13 +2871,17 @@ $1',
 'allmessages-prefix' => 'តម្រង​តាម​បុព្វបទ​៖',
 'allmessages-language' => 'ភាសា៖',
 'allmessages-filter-submit' => 'ទៅ',
+'allmessages-filter-translate' => 'បកប្រែ',
 
 # Thumbnails
 'thumbnail-more' => 'ពង្រីក',
 'filemissing' => 'ឯកសារបាត់បង់',
 'thumbnail_error' => 'កំហុស​បង្កើត​កូនរូបភាព៖ $1',
+'thumbnail_error_remote' => 'សារប្រាប់បញ្ហាបានពី $1: $2',
 'djvu_page_error' => 'ទំព័រ DjVu ក្រៅដែនកំណត់',
 'djvu_no_xml' => 'មិនអាចនាំយក XML សម្រាប់ឯកសារ DjVu',
+'thumbnail-temp-create' => 'មិនអាចបង្កើតឯកសារកូនរូបភាពបណ្ដោះអាសន្ន',
+'thumbnail-dest-create' => 'មិនអាចរក្សាទុកកូនរូបភាពនៅទីតាំងគោលដៅបានទេ',
 'thumbnail_invalid_params' => 'តួលេខ កូនទំព័រ គ្មានសុពលភាព',
 'thumbnail_dest_directory' => 'មិនអាចបង្កើតថតឯកសារតាមគោលដៅបានទេ',
 'thumbnail_image-type' => 'មិនស្គាល់ប្រើជាមួយឯកសារប្រភេទនេះទេ',
@@ -3711,6 +3752,7 @@ $5
 'logentry-newusers-newusers' => 'គណនីអ្នកប្រើប្រាស់ $1 {{GENDER:$2|ត្រូវបានបង្កើត}}',
 'logentry-newusers-create' => 'គណនីអ្នកប្រើប្រាស់ $1 {{GENDER:$2|ត្រូវបានបង្កើត}}',
 'logentry-newusers-create2' => 'គណនីអ្នកប្រើប្រាស់ $3 {{GENDER:$2|ត្រូវបានបង្កើត}} ដោយ $1',
+'logentry-newusers-byemail' => 'គណនីអ្នកប្រើប្រាស់ $3 ត្រូវបាន {{GENDER:$2|បង្កើត}} ដោយ $1 ហើយពាក្យសម្ងាត់ត្រូវបានផ្ញើរតាមអ៊ីមែល',
 'logentry-newusers-autocreate' => 'គណនីអ្នកប្រើប្រាស់ $1 {{GENDER:$2|ត្រូវបានបង្កើត}} ដោយស្វ័យប្រវត្តិ',
 'logentry-rights-rights' => '$1 {{GENDER:$2|បានផ្លាស់ប្ដូរ}}សមាជិកភាពរបស់ $3 ពី $4 ទៅជា $5',
 'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|បានផ្លាស់ប្ដូរ}}សមាជិកភាពរបស់ $3',
@@ -3723,6 +3765,9 @@ $5
 'feedback-cancel' => 'បោះបង់​',
 'feedback-submit' => 'ដាក់ស្នើមតិយោបល់',
 'feedback-adding' => 'កំពុងបន្ថែមមតិយោបល់ទៅលើទំព័រ...',
+'feedback-error1' => 'បញ្ហា៖ លទ្ធផលមិនស្គាល់ពី API',
+'feedback-error2' => 'បញ្ហា៖ កែប្រែមិនបានសម្រេច',
+'feedback-error3' => 'បញ្ហា៖ គ្មានចម្លើយតបពី API',
 'feedback-thanks' => 'សូមអរគុណ! មតិយោបល់របស់អ្នកត្រូវបានដាក់ផ្សាយនៅលើទំព័រ "[$2 $1]"។',
 'feedback-close' => 'រួចរាល់',
 
@@ -3769,6 +3814,12 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|សតវត្សរ៍|សតវត្សរ៍}}',
 'duration-millennia' => '$1 {{PLURAL:$1|សហសវត្សរ៍|សហសវត្សរ៍}}',
 
+# Limit report
+'limitreport-cputime' => 'រយៈពេលប្រើប្រាស់ CPU',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|វិនាទី|វិនាទី}}',
+'limitreport-walltime' => 'រយៈពេលប្រើប្រាស់ពិតប្រាកដ',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|វិនាទី|វិនាទី}}',
+
 # Special:ExpandTemplates
 'expandtemplates' => 'ពង្រីកទំព័រគំរូ',
 'expand_templates_input' => 'សរសេរឃ្លា',
index 57cca30..c322182 100644 (file)
@@ -228,7 +228,6 @@ $messages = array(
 'vector-action-protect' => 'ಸಂರಕ್ಷಿಸು',
 'vector-action-undelete' => 'ಅಳಿಸಬೇಡ',
 'vector-action-unprotect' => 'ರಕ್ಷಣೆಯನ್ನು ಬದಲಾವಣೆ',
-'vector-simplesearch-preference' => 'ವರ್ಧಿಸಿದ ಹುಡುಕು ಸಲಹೆಗಳನ್ನು (ಕೇವಲ ವೆಕ್ಟರ್ ಚರ್ಮ) ಸಕ್ರಿಯಗೊಳಿಸಿ',
 'vector-view-create' => 'ಸೃಷ್ಟಿಸು',
 'vector-view-edit' => 'ಸಂಪಾದಿಸಿ',
 'vector-view-history' => 'ಇತಿಹಾಸವನ್ನು ನೋಡಿ',
index fc44a79..9e28c45 100644 (file)
@@ -913,6 +913,9 @@ $1 기다렸다가 다시 시도하세요.',
 'suspicious-userlogout' => '브라우저에 이상이 있거나 캐싱 프록시에서 로그아웃을 요청했기 때문에 로그아웃이 거부되었습니다.',
 'createacct-another-realname-tip' => '실명은 선택 사항입니다.
 실명을 입력하면 문서 기여에 사용자의 이름이 들어가게 됩니다.',
+'pt-login' => '로그인',
+'pt-createaccount' => '계정 만들기',
+'pt-userlogout' => '로그아웃',
 
 # Email sending
 'php-mail-error-unknown' => 'PHP의 mail() 함수에서 알 수 없는 오류가 발생했습니다.',
@@ -921,8 +924,7 @@ $1 기다렸다가 다시 시도하세요.',
 
 # Change password dialog
 'changepassword' => '비밀번호 바꾸기',
-'resetpass_announce' => '이메일로 받은 임시 비밀번호로 로그인했습니다.
-로그인을 마치려면 새 비밀번호를 여기에서 설정해야 합니다:',
+'resetpass_announce' => '로그인을 마치려면 새 비밀번호를 여기에서 설정해야 합니다:',
 'resetpass_text' => '<!-- 여기에 텍스트를 추가하세요 -->',
 'resetpass_header' => '비밀번호 바꾸기',
 'oldpassword' => '이전 비밀번호:',
@@ -938,8 +940,13 @@ $1 뒤에 다시 시도하세요.',
 'resetpass-submit-cancel' => '취소',
 'resetpass-wrong-oldpass' => '비밀번호가 잘못되었거나 현재의 비밀번호와 같습니다.
 이미 비밀번호를 성공적으로 바꾸었거나 새 임시 비밀번호를 요청했을 수 있습니다.',
+'resetpass-recycled' => '현재 비밀번호와 다른 비밀번호로 재설정해주세요.',
+'resetpass-temp-emailed' => '임시 이메일 코드로 로그인되어 있습니다.
+로그인을 마치려면 여기서 새로운 비밀번호를 설정해야 합니다:',
 'resetpass-temp-password' => '임시 비밀번호:',
 'resetpass-abort-generic' => '비밀번호 바꾸기가 확장 기능에 의해 중단되었습니다.',
+'resetpass-expired' => '비밀번호가 만료되었습니다. 로그인하려면 새로운 비밀번호를 설정해야 합니다.',
+'resetpass-expired-soft' => '비밀번호가 만료되어 재설정해야 합니다. 지금 새로운 비밀번호를 선택하거나, 취소를 클릭하고 나중에 재설정해주세요.',
 
 # Special:PasswordReset
 'passwordreset' => '비밀번호 재설정',
@@ -1947,6 +1954,7 @@ $2 {{PLURAL:$3|형식만 사용할 수 있습니다}}.',
 'uploaddisabledtext' => '파일 올리기 기능이 비활성화되어 있습니다.',
 'php-uploaddisabledtext' => 'PHP 파일 올리기가 비활성화되었습니다. 파일 올리기 설정을 확인하십시오.',
 'uploadscripted' => '이 파일에는 HTML이나 다른 스크립트 코드가 포함되어 있어, 웹 브라우저에서 오류를 일으킬 수 있습니다.',
+'uploadinvalidxml' => '업로드된 파일의 XML의 구문을 분석할 수 없습니다.',
 'uploadvirus' => '파일이 바이러스를 포함하고 있습니다!
 자세한 설명: $1',
 'uploadjava' => '이 ZIP 파일은 자바의 .class 파일을 포함하고 있습니다.
@@ -2324,6 +2332,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'deadendpagestext' => '{{SITENAME}} 내의 다른 문서로 나가는 링크가 없는 문서의 목록입니다.',
 'protectedpages' => '보호된 문서 목록',
 'protectedpages-indef' => '오른쪽 조건에 맞는 보호만 보기',
+'protectedpages-summary' => '이 문서는 현재 보호된 기존 문서를 나열합니다. 만들기 보호된 문서 제목 목록을 보려면 [[{{#special:ProtectedTitles}}]]를 참조하세요.',
 'protectedpages-cascade' => '연쇄적 보호만 보기',
 'protectedpages-noredirect' => '넘겨주기를 숨기기',
 'protectedpagesempty' => '보호되어 있는 문서가 없습니다.',
@@ -2336,6 +2345,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'protectedpages-unknown-timestamp' => '알 수 없음',
 'protectedpages-unknown-performer' => '알 수 없는 사용자',
 'protectedtitles' => '만들기 보호된 표제어 목록',
+'protectedtitles-summary' => '이 문서는 현재 만들기 보호가 설정되어 있는 문서 제목을 나열합니다. 보호된 기존 문서들의 목록을 보려면 [[{{#special:ProtectedPages}}]]을 참조하세요.',
 'protectedtitlesempty' => '해당 조건에 맞는 만들기 금지 표제어가 없습니다.',
 'listusers' => '사용자 목록',
 'listusers-editsonly' => '기여가 있는 사용자만 보기',
@@ -4364,6 +4374,4 @@ $5
 'expand_templates_generate_rawhtml' => '원본 HTML 보이기',
 'expand_templates_preview' => '미리 보기',
 
-# Unknown messages
-'uploadinvalidxml' => '업로드된 파일의 XML의 구문을 분석할 수 없습니다.',
 );
index aeffcb8..777ac81 100644 (file)
@@ -70,12 +70,12 @@ $messages = array(
 'dec' => 'дек',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категория}}',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категория}}',
 'category_header' => '"$1" категорияын листбоккез',
 'subcategories' => 'Поснитжык категорияэз',
 'category-media-header' => '"$1" категорияись файллэз',
 'category-empty' => 'Этiя категорияын öнi нем абу',
-'hidden-categories' => '{{PLURAL:$1|Сайöвтöм категория|Сайöвтöм категорияэз}}',
+'hidden-categories' => '{{PLURAL:$1|1=Сайöвтöм категория|Сайöвтöм категорияэз}}',
 'hidden-category-category' => 'Сайöвтöм категорияэз',
 'category-subcat-count' => '{{PLURAL:$2|Этiя категорияын дзир öтiк субкатегория.|{{PLURAL:$1|Мыччалöма $1 субкатегория}}  $2-ись.}}',
 'category-subcat-count-limited' => 'Этiя категорияын {{PLURAL:$1|$1 субкатегория|$1 субкатегория|$1 субкатегория}}',
@@ -206,7 +206,7 @@ $messages = array(
 'yourname' => 'Уджкерисьлöн пыран ним:',
 'yourpassword' => 'Пароль:',
 'yourpasswordagain' => 'Мöдпöвсьöтны пароль',
-'remembermypassword' => 'Видзны менчим пыран ним этiя компьютер тöдвылын (не дыржык {{PLURAL:$1| лунся|лунся}})',
+'remembermypassword' => 'Видзны менчим пыран ним этiя компьютер тöдвылын (не дыржык {{PLURAL:$1|1= лунся|лунся}})',
 'login' => 'Пырны ним увтын',
 'nav-login-createaccount' => 'Пыран / гижöтчан',
 'userlogin' => 'Висьтасьны нето гижöтчыны',
@@ -274,12 +274,12 @@ $messages = array(
 'yourtext' => 'Текстыт',
 'yourdiff' => 'Неöткодьыс',
 'copyrightwarning' => "Тöд: текстас быдöс содтöттэз нето мöдкодьсьöтöммез  йöзöтсьöны лэдзöг $2 под вылын (видзöт $1). Он ко мöд,  медбы тексттэтö унаöтлiсö нето мöдкодьсьöтлiсö йöзыс,  эн и пукты нiйö татчö.   <br /> Этася тэ кыв сетан миянлö,  ачым пö лоа авторöн пыртан содтöттэзлiсь, нето босьта пö нiйö öшмöсiсь, кöда оз öв пытшкöссö одзлань йöзöтöмись да мöдкодьсьöтöмись.  <br /> '''ЭН ПУКТЫ ЮАСЬТÖГ ТАТЧÖ  АВТОРЛÖ ПОЗЬÖМ СЬÖРТI ДОРЙÖМ МАТЕРИАЛЛЭЗ!'''",
-'templatesused' => 'Этiя листбок вылiсь {{PLURAL:$1|шаблон|шаблоннэз}}:',
-'templatesusedpreview' => 'Одзвыв нёджалан листбок вылiсь {{PLURAL:$1|шаблон|шаблоннэз}}:',
+'templatesused' => 'Этiя листбок вылiсь {{PLURAL:$1|1=шаблон|шаблоннэз}}:',
+'templatesusedpreview' => 'Одзвыв нёджалан листбок вылiсь {{PLURAL:$1|1=шаблон|шаблоннэз}}:',
 'template-protected' => '(дорйöм)',
 'template-semiprotected' => '(мымдакö дорйöм)',
-'hiddencategories' => 'Этiя листбок пырö $1 {{PLURAL:$1|сайöвтöм категория|сайöвтöм категория|сайöвтöм категорияэз}} коласö:',
-'permissionserrorstext-withaction' => 'Тэныт оз позь керны $2 то {{PLURAL:$1|мыля|мыля}}:',
+'hiddencategories' => 'Этiя листбок пырö $1 {{PLURAL:$1|сайöвтöм категория|сайöвтöм категорияэз|сайöвтöм категория}} коласö:',
+'permissionserrorstext-withaction' => 'Тэныт оз позь керны $2 то {{PLURAL:$1|1=мыля|мыля}}:',
 
 # History pages
 'viewpagelogs' => 'Мыччавны журналлэз этiя листбок понда',
@@ -327,7 +327,7 @@ $messages = array(
 'searchprofile-everything' => 'Быдлаись',
 'searchprofile-articles-tooltip' => 'Кошшан $1ын',
 'searchprofile-project-tooltip' => 'Кошшан $1ын',
-'search-result-size' => '$1 ({{PLURAL:$2|1 кыв|$2 кыв}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1=1 кыв|$2 кыв}})',
 'search-redirect' => '(иньдöтöм $1 вылiсь)',
 'search-section' => '(юкöт № $1)',
 'search-suggest' => 'Поди  колö $1',
@@ -361,7 +361,7 @@ $messages = array(
 'yourlanguage' => 'Кыв:',
 'yournick' => 'Виль кырымпас:',
 'badsiglength' => 'Кырымпасыт кузьöв.
-Сылö оз туй лоны $1 {{PLURAL:$1|шыпасся|шыпасся}} кузьжык.',
+Сылö оз туй лоны $1 {{PLURAL:$1|1=шыпасся|шыпасся}} кузьжык.',
 'gender-unknown' => 'Мыччавтöм',
 'gender-male' => 'Айка',
 'gender-female' => 'Инька',
@@ -427,7 +427,7 @@ $messages = array(
 'filehist-dimensions' => 'Ыжда',
 'filehist-comment' => 'Пасйöт',
 'imagelinks' => 'Файл дынö ыстöттэз',
-'linkstoimage' => '{{PLURAL:$1|Сэтшöм листбок|$1 Сэтшöм листбоккез}} ыстiсьö(ны) этiя файл вылö:',
+'linkstoimage' => '{{PLURAL:$1|1=Сэтшöм листбок|$1 Сэтшöм листбоккез}} ыстiсьö(ны) этiя файл вылö:',
 'sharedupload' => 'Этiя файл $1-ись да вермас овны и мöдiк проекттэзын',
 'uploadnewversion-linktext' => 'Кышавны этiя файллiсь виль версия',
 
@@ -443,7 +443,7 @@ $messages = array(
 'brokenredirects-delete' => 'чышкыны',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт|байт}}',
+'nbytes' => '$1 {{PLURAL:$1|1=байт|байт}}',
 'nmembers' => '$1 {{PLURAL:$1|объект|объект|объект}}',
 'prefixindex' => 'Листбок ниммезлiсь пондöтчаннэз мыччалан',
 'shortpages' => 'Дженыт листбоккез',
@@ -453,8 +453,8 @@ $messages = array(
 'ancientpages' => 'Медваж листбоккез',
 'move' => 'Вежны ним',
 'movethispage' => 'Вежны листбокыслiсь ним',
-'pager-newer-n' => '{{PLURAL:$1|вильжык 1|вильжык $1}}',
-'pager-older-n' => '{{PLURAL:$1|важжык 1|важжык $1}}',
+'pager-newer-n' => '{{PLURAL:$1|1=вильжык 1|вильжык $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=важжык 1|важжык $1}}',
 
 # Book sources
 'booksources' => 'Небöггез-öшмöссэз',
@@ -531,7 +531,7 @@ $messages = array(
 'protect-text' => "Татöн тэ верман видзöтны да вежны '''$1''' листбок понда дорьян тшупöт.",
 'protect-locked-access' => "Уджкерисьлöн нимыт оз тырмы, мед вежны листбокыслiсь дорьян тшупöт.
 Öння лöсьöтаннэз '''$1''' листбок понда:",
-'protect-cascadeon' => 'Этiя листбокыс дорйöм, мыля сiя пыртöм улынжык висьталöм {{PLURAL:$1|листбокö|листбокö}}, кытчö лöсьöтöм каскад нёж дорьян.
+'protect-cascadeon' => 'Этiя листбокыс дорйöм, мыля сiя пыртöм улынжык висьталöм {{PLURAL:$1|1=листбокö|листбокö}}, кытчö лöсьöтöм каскад нёж дорьян.
 Тэ верман вежны этiя листбоклiсь дорьян тшупöт, но каскад нёж дорьян сысянь оз вежсьы.',
 'protect-default' => 'Дорйытöм',
 'protect-fallback' => 'Колö мед лэдзис «$1»',
index b6ae1bb..6856c0f 100644 (file)
@@ -273,7 +273,6 @@ $messages = array(
 'vector-action-protect' => 'Джакъла',
 'vector-action-undelete' => 'Къайтар',
 'vector-action-unprotect' => 'Джакълауну тюрлендир',
-'vector-simplesearch-preference' => 'Тынч излеуде болушлукъланы джандыр (къуру «Вектор» мотив ючюн)',
 'vector-view-create' => 'Къура',
 'vector-view-edit' => 'Тюрлендир',
 'vector-view-history' => 'Тарихин кёргюз',
index 7911f3e..6e1eba9 100644 (file)
 
 $messages = array(
 # User preference toggles
-'tog-justify' => 'jostifai di paragraf-dem',
-'tog-hideminor' => 'Haid di lili chenj-dem na di risent chenj list',
-'tog-extendwatchlist' => 'Big di wachlist fo sho ol di chenj-dem,  pas di risent chenj-dem nomo',
+'tog-hideminor' => 'Haid dhi lili chenjdèm na dhi risent chenj list',
+'tog-extendwatchlist' => 'Big dhi wachlist fòrsho òll dhi chenjdèm,  pas dhi risènt chenjdèm nòmòr',
 
 # Dates
-'sunday' => 'Sonde',
-'monday' => 'Monde',
-'tuesday' => 'Tyuzde',
-'wednesday' => 'Wenzde',
-'thursday' => 'Tozde',
-'friday' => 'Fraide',
-'saturday' => 'Satide',
-'sun' => 'Son',
-'mon' => 'Mon',
-'tue' => 'Tyu',
-'wed' => 'Wen',
-'thu' => 'Toz',
-'fri' => 'Frai',
+'sunday' => 'Sandey',
+'monday' => 'Mundey',
+'tuesday' => 'Tyrdey',
+'wednesday' => 'Wodèndey',
+'thursday' => 'Thòrdey',
+'friday' => 'Freyadey',
+'saturday' => 'Satùrndey',
+'sun' => 'San',
+'mon' => 'Mun',
+'tue' => 'Tyr',
+'wed' => 'Wod',
+'thu' => 'T',
+'fri' => 'Fre',
 'sat' => 'Sat',
-'january' => 'Janyuari',
-'february' => 'Febyuari',
-'march' => 'Mach',
-'april' => 'Epril',
+'january' => 'Januari',
+'february' => 'Februari',
+'march' => 'March',
+'april' => 'April',
 'may_long' => 'Mey',
 'june' => 'Jun',
-'july' => 'Julai',
-'august' => 'Ogost',
-'september' => 'Septemba',
-'october' => 'Oktoba',
-'november' => 'Novemba',
-'december' => 'Disemba',
-'january-gen' => 'Janyuari',
-'february-gen' => 'Febyuari',
-'march-gen' => 'Mach',
-'april-gen' => 'Epril',
+'july' => 'Julay',
+'august' => 'Augùst',
+'september' => 'Sèptèmbar',
+'october' => 'Òktobar',
+'november' => 'Novèmbar',
+'december' => 'Dèsèmbar',
+'january-gen' => 'Januari',
+'february-gen' => 'Fèbruari',
+'march-gen' => 'March',
+'april-gen' => 'April',
 'may-gen' => 'Mey',
 'june-gen' => 'Jun',
-'july-gen' => 'Julai',
-'august-gen' => 'Ogost',
-'september-gen' => 'Septemba',
-'october-gen' => 'Oktoba',
-'november-gen' => 'Novemba',
-'december-gen' => 'Disemba',
+'july-gen' => 'Julay',
+'august-gen' => 'Augùst',
+'september-gen' => 'Sèptèmbar',
+'october-gen' => 'Òktobar',
+'november-gen' => 'Novèmbar',
+'december-gen' => 'Dèsèmbar',
 'jan' => 'Jan',
-'feb' => 'Feb',
-'mar' => 'Mach',
-'apr' => 'Epr',
+'feb' => 'Fèb',
+'mar' => 'Mar',
+'apr' => 'Apr',
 'may' => 'Mey',
 'jun' => 'Jun',
 'jul' => 'Jul',
-'aug' => 'Og',
-'sep' => 'Sep',
-'oct' => 'Okt',
+'aug' => 'Aug',
+'sep' => 'Sèp',
+'oct' => 'Òkt',
 'nov' => 'Nov',
-'dec' => 'Dis',
+'dec' => 'Dès',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Katigori|Katigori-dem}}',
-'category_header' => 'Pej-dehm we de na katigori "$1"',
-'subcategories' => 'Sobkatigori-dem',
-'category-media-header' => 'Midya we de na katigori "$1"',
-'category-empty' => "''Dis katigori-ya no get no pej o midya fo naw.''",
-'hidden-categories' => '{{PLURAL:$1|Katigori we dem don haid|Katigori-dem we dehm don haid}}',
+'pagecategories' => '{{PLURAL:$1|Katigori|Katigorim}}',
+'category_header' => 'Pejdèm we de na katègòri "$1"',
+'subcategories' => 'Ùndarkatègòridèm',
+'category-media-header' => 'Media na katègòri "$1"',
+'category-empty' => "''Dhis katègòri hyar nò gèt nò pej òr media fòr naw.''",
+'hidden-categories' => '{{PLURAL:$1|Katègòri dèndònhaid|Katègòridèm dèndònhaid}}',
 
 'cancel' => 'Kansul',
 'mytalk' => 'Mi Tok',
-'navigation' => 'Navigeshon',
+'navigation' => 'Navigatio',
 
 # Cologne Blue skin
-'qbedit' => 'Edit',
-'faq' => 'Kwestyon we dem de aks boku',
-'faqpage' => 'Project:Kwehstyohn-dehm we ohlman de aks',
+'qbedit' => 'Èdit',
+'faq' => 'Kwèstiòn dèndeaks bòku',
+'faqpage' => 'Projèkt:Kuèstiòndèm we òllman de ask',
 
 # Vector skin
 'vector-action-move' => 'Muf',
 'vector-view-edit' => 'Chenj',
-'vector-view-history' => 'Luk histri',
+'vector-view-history' => 'Luk historia',
 'vector-view-view' => 'Rid',
-'vector-view-viewsource' => 'Luk di sos',
-'actions' => 'Akshon-dem',
-'namespaces' => 'Nemspes-dem',
-
-'errorpagetitle' => 'Problem',
-'returnto' => 'Go bak tu $1.',
-'tagline' => 'Dis komot {{SITENAME}}',
-'help' => 'Hep',
-'search' => 'Luk fo',
-'searchbutton' => 'Luk fo',
+'vector-view-viewsource' => 'Luk dhi sòrs',
+'actions' => 'Actiòndèm',
+'namespaces' => 'Nemspasiodèm',
+
+'errorpagetitle' => 'Èrròr',
+'returnto' => 'Go bak $1.',
+'tagline' => 'Dhis kòmòt {{SITENAME}}',
+'help' => 'Hèp',
+'search' => 'Luk fòr',
+'searchbutton' => 'Luk fòr',
 'go' => 'Go',
 'searcharticle' => 'Go',
-'history' => 'Pej-im histri',
-'history_short' => 'Histri',
-'updatedmarker' => 'wetin dem don opdet from we A las vizit',
-'printableversion' => 'Vazhon fo Print',
-'permalink' => 'Pamanent link',
+'history' => 'Pejim historia',
+'history_short' => 'Historia',
+'updatedmarker' => 'wethin dèndònùpdat fròm we a las visit',
+'printableversion' => 'Printebul versiòn',
+'permalink' => 'Pèrmanènt link',
 'print' => 'Print',
-'edit' => 'Edit',
-'create' => 'Mek',
-'editthispage' => 'Edit dis pej-ya',
-'create-this-page' => 'Mek dis pej-ya',
-'delete' => 'Dilit',
-'deletethispage' => 'Dilit dis pej-ya',
-'protect' => 'Protekt',
+'edit' => 'Èdit',
+'create' => 'Kreat',
+'editthispage' => 'Èdit dhis pej',
+'create-this-page' => 'Mek dhis pej',
+'delete' => 'Dèlet',
+'deletethispage' => 'Dèlet dhis pej hyar',
+'protect' => 'Protèkt',
 'protect_change' => 'chenj',
-'protectthispage' => 'Protekt dis pej-ya',
-'talkpagelinktext' => 'Tok',
-'specialpage' => 'Speshal Pej',
-'personaltools' => 'Pasonal tul-dèm',
-'postcomment' => 'Nyu sekshon',
-'articlepage' => 'Luk kontent pej',
-'talk' => 'Diskoshon',
-'views' => 'Vyu-dem',
+'protectthispage' => 'Protèkt dhis pej',
+'talkpagelinktext' => 'Tòk',
+'specialpage' => 'Spèsial Pej',
+'personaltools' => 'Pèrsònal tuldèm',
+'postcomment' => 'Nyu sèktiòn',
+'articlepage' => 'Luk kòntènt pej',
+'talk' => 'Diskùssiòn',
+'views' => 'Vyum',
 'toolbox' => 'Tulboks',
-'userpage' => 'Luk dis yuza-im pej',
-'otherlanguages' => 'Na oda langwej-dem',
-'jumpto' => 'Jomp go:',
-'jumptonavigation' => 'navigeshon',
-'jumptosearch' => 'Luk fo',
+'userpage' => 'Luk dhis yuzmanim pej',
+'otherlanguages' => 'Na òdhar Tòkdèm',
+'jumpto' => 'Jùmp go:',
+'jumptonavigation' => 'Navigatio',
+'jumptosearch' => 'Luk fòr',
 
 # 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' => 'Na bot {{SITENAME}}',
-'aboutpage' => 'Project:Na bot',
+'aboutsite' => 'Na bòt {{SITENAME}}',
+'aboutpage' => 'Project:Na bòt',
 'copyright' => 'Dis kontent de onda $1 .',
-'currentevents' => 'Korent ivent-dem',
-'currentevents-url' => 'Project:Korent ivent-dem',
-'disclaimers' => 'Disklema-dem',
-'disclaimerpage' => 'Project:Jeneral disklema',
-'edithelp' => 'Advais foh we yu wan fo edit',
-'helppage' => 'Help:Kontent-dem',
+'currentevents' => 'Kùrrènt evèntdèm',
+'currentevents-url' => 'Projèkt:Kùrrènt evèntdèm',
+'disclaimers' => 'Disklamardèm',
+'disclaimerpage' => 'Projèkt:Jènèral disklamar',
+'edithelp' => 'Èdithèp',
+'helppage' => 'Help:Kòntèntdèm',
 'mainpage' => 'Men Pej',
 'mainpage-description' => 'Men Pej',
-'policy-url' => 'Project:Polisi',
-'portal' => 'Mitin-ples fo yuza-dem',
-'portal-url' => 'Project:Mitin-ples fo yuza-dem',
-'privacy' => 'Polisi fo Praivesi',
-'privacypage' => 'Project:Polisi fo praivesi',
-
-'badaccess' => 'Pamishon problem',
-'badaccess-group0' => 'Yu no get pamishon foh du wetin yu jos chuz',
-'badaccess-groups' => 'Na di yuza-dem we don join {{PLURAL:$2|di grup|wan pa di grup-dem}}: $1 nomo ebul du wetin yu jos chuz.',
-
-'versionrequired' => 'Yu nid MediaWiki Vazhon $1',
-'versionrequiredtext' => 'Yu nid MediaWiki Vazhon $1 foh yuz dis pej-ya.
+'policy-url' => 'Project:Pòlisia',
+'portal' => 'Kòmmunitaspòrtal',
+'portal-url' => 'Project:Kòmmunitaspòrtal',
+'privacy' => 'Privasiapòlisia',
+'privacypage' => 'Project:Privasiapòlisia',
+
+'badaccess' => 'Permisshòn problèm',
+'badaccess-group0' => 'Yu nò gèt permisshòn fòdu wetin yu jùs chuz',
+'badaccess-groups' => 'Na dhi yuzmandèm we dònjoin {{PLURAL:$2|dhi grup|wan pan dhi grupdèm}}: $1 nòmòr ebul du wetin yu jùs chuz.',
+
+'versionrequired' => 'Yu nid MediaWiki Version $1',
+'versionrequiredtext' => 'Yu nid MediaWiki Versiòn $1 fòyuz dhis pej.
 Luk [[Special:Version|version page]].',
 
 'ok' => 'OK',
 'pagetitle-view-mainpage' => ' 
 {{SAITNEM}}',
-'retrievedfrom' => 'Dem ritriv am na"$1"',
-'youhavenewmessages' => 'Yu get $1 ($2).',
-'editsection' => 'edit',
-'editold' => 'chenj',
-'viewsourceold' => 'Luk di sos',
-'editlink' => 'edit',
-'viewsourcelink' => 'luk di sos',
-'editsectionhint' => 'edit sekshon: $1',
-'toc' => 'Kontent-dem',
+'retrievedfrom' => 'Dèndònritriv am na"$1"',
+'youhavenewmessages' => 'Yu gèt $1 ($2).',
+'editsection' => 'èdit',
+'editold' => 'èdit',
+'viewsourceold' => 'Luk dhi sòrs',
+'editlink' => 'èdit',
+'viewsourcelink' => 'luk dhi sòrs',
+'editsectionhint' => 'Èditsektiòn: $1',
+'toc' => 'Kòntèntdèm',
 'showtoc' => 'sho',
 'hidetoc' => 'haid',
-'thisisdeleted' => 'Luk wetin i bi naw o tohn am bak tu wetin i bin bi bifo $1?',
+'thisisdeleted' => 'Luk wetin i bi naw òr tùrn am bak tu wetin i binbi bifor $1?',
 'viewdeleted' => 'Luk am $1?',
-'restorelink' => '{{PLURAL:$1|wan chenj we dehm dohn ires|$1 chenj-dehm we dehm dohn ires}}',
-'feedlinks' => 'Feed:',
+'restorelink' => '{{PLURAL:$1|wan chenj we dèndònires|$1 chenjdèm we dèndònires}}',
+'feedlinks' => 'Fid:',
 'site-rss-feed' => '$1 RSS Fid',
 'site-atom-feed' => '$1 Atom Fid',
-'red-link-title' => '$1 (pej no de)',
+'red-link-title' => '$1 (pej nò de)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Pej',
-'nstab-user' => 'Yuza-im Pej',
-'nstab-media' => 'Midya Pej',
-'nstab-special' => 'Speshal Pej',
-'nstab-project' => 'Projekt Pej',
+'nstab-user' => 'Yuzmanim Pej',
+'nstab-media' => 'Media Pej',
+'nstab-special' => 'Speshial Pej',
+'nstab-project' => 'Projèkt Pej',
 'nstab-image' => 'Fail',
-'nstab-mediawiki' => 'Mesej',
-'nstab-template' => 'Templet',
-'nstab-help' => 'Advais pej',
-'nstab-category' => 'Katigori',
+'nstab-mediawiki' => 'Mèssej',
+'nstab-template' => 'Tèmplat',
+'nstab-help' => 'Hèppej',
+'nstab-category' => 'Katègòri',
 
 # Main script and global functions
-'nosuchaction' => 'Da kain akshon no de',
-'nosuchactiontext' => 'Di wiki no de ondastan di akshon we di URL tel am fo du',
-'nosuchspecialpage' => 'Da kain spehshal pej noh de',
+'nosuchaction' => 'Dha kain aktiòn nò de',
+'nosuchactiontext' => 'Dhi wiki nò de ùndarstan dhi aktiòn we dhi URL tèll am fòdu',
+'nosuchspecialpage' => 'Dha kain spèshial pej nò de',
 
 # General errors
-'viewsource' => 'Luk di sos',
+'viewsource' => 'Luk dhi sòrs',
 
 # Login and logout pages
-'yourname' => 'Yuzanem:',
-'login' => 'Login',
-'nav-login-createaccount' => 'Login / Mek yu-yon akaunt',
-'loginprompt' => 'Yu get fo de yuz kuki-dem foh ebul fo login {{SITENAME}}.',
-'userlogin' => 'Login / Mek yu-yon akaunt',
-'logout' => 'Komot na di sait',
-'userlogout' => 'Komot na di sait',
-'notloggedin' => 'Yu no login yet',
-'nologin' => "Yu don mek yu akaunt? '''$1'''.",
-'nologinlink' => 'Mek yu-yon akaunt',
-'createaccount' => 'Mek yu-yon akaunt',
-'gotaccount' => "Yu dohn mek yu yuza login? '''$1'''.",
-'gotaccountlink' => 'Login',
+'yourname' => 'Yuzmannem:',
+'login' => 'Lògin',
+'nav-login-createaccount' => 'Lògin / Mek yu yon akkaunt',
+'loginprompt' => 'Yu gèt fòde yuz kukidèm fòr ebul fòrlogin {{SITENAME}}.',
+'userlogin' => 'Lògin / Mek yu yon akkaunt',
+'logout' => 'Lòg-kòmòt',
+'userlogout' => 'Lòg-kòmòt',
+'notloggedin' => 'Yu nò lògin yet',
+'nologin' => "Yu dònmek yu akkaunt? '''$1'''.",
+'nologinlink' => 'Mek yu yon akkaunt',
+'createaccount' => 'Mek yu yon akkaunt',
+'gotaccount' => "Yu dònmek yu akkaunt? '''$1'''.",
+'gotaccountlink' => 'Lògin',
 'createaccountmail' => 'wit imel',
-'badretype' => 'Di paswohd-dehm we yu taip mach.',
-'userexists' => 'Oda pohsin de yuz da yuzanem de.
-Yu go geht fo pik difren wan.',
+'badretype' => 'Dhi passwòrddèm we yu taip nò mach.',
+'userexists' => 'Odhar pòrsin de yuz da yuzmannem.
+Yu gogèt fòrpik differènt wan.',
 
 # Edit pages
-'summary' => 'Somari:',
-'minoredit' => 'Dis na lili edit',
-'watchthis' => 'Wach dis pej-ya',
-'savearticle' => 'Sev dis pej-ya',
-'preview' => 'Privyu',
-'showpreview' => 'Luk di privyu',
-'showlivepreview' => 'Luk di laiv privyu',
-'showdiff' => 'Sho wetin don chenj',
-'anoneditwarning' => "'''Tek tem:''' Yu noh login yet.
-So dem go sev yu IP address na di pej-im editin histri",
-'missingsummary' => "'''Mehmba se:''' yu noh mek editin somari.
-If yu pres Sev bak, dem go sev yu edit nomo.",
-'missingcommenttext' => 'Rait yu koment onda ya',
+'summary' => 'Sùmmari:',
+'minoredit' => 'Dhis na lili èdit',
+'watchthis' => 'Wach dis pej',
+'savearticle' => 'Sev dis pej',
+'preview' => 'Prevyu',
+'showpreview' => 'Luk dhi prevyu',
+'showlivepreview' => 'Luk dhi laiv prevyu',
+'showdiff' => 'Sho wetin dònchenj',
+'anoneditwarning' => "'''Tek tèm o:''' Yu nò lògin yet.
+So dhèm go sev yu IP addrèss na dhi pejim èdithistoria",
+'missingsummary' => "'''Mèmbar se:''' yu nò mek èditsùmmari.
+If yu prèss sev bak, dhèm go sev yu èdit nòmor.",
+'missingcommenttext' => 'Rait yu kòmmènt ùndar hyar',
 'permissionserrorstext-withaction' => 'Yu no get pamishon fo $2, bikoz {{PLURAL:$1|rizin|rizin-dem}}:',
-'recreate-moveddeleted-warn' => "'''Tek tem!!: Yu de mek bak wan pej we dehm bin dohn ires.'''
+'recreate-moveddeleted-warn' => "'''Tek tèm o!!: Yu de mek bak wan pej we dhèm bin dòn ires.'''
 
-Yu sabi if yu foh wok pan dis pej-ya.
-Di log we dem kip foh dis pej-in dilishon de ya:",
+Yu sabi if yu fò work pan dhis pej ya.
+Dhi lòg we kip fòr dhis pejim delet de hyar:",
 'moveddeleted-notice' => 'Dehm dohn ires dis pej-ya.
 Di log we dehm kip foh dis pej-in dilishohn de ya:',
 'edit-hook-aborted' => 'Wan Hook don blok yu Edit.
@@ -247,6 +246,7 @@ I no eksplen wetin-mek.',
 Somtem dem don dilit am.',
 'edit-conflict' => 'Edit konflikt',
 'edit-no-change' => 'Wi no luk wetin yu chenj, bicoh yu no chenj wetin rait de.',
+'editwarning-warning' => 'If yu lèf dhis pej hyar sòmtèm yu go lòss òll dhi chenjdèm we yu dòn mek. If yu dòn lògin yu kin disebul dhis wòrnthin hyar na dhi "{{int:prefss-editing}}" sèkshòn na yu prèfèrèntiadèm',
 
 # History pages
 'last' => 'prev',
@@ -262,7 +262,6 @@ Somtem dem don dilit am.',
 
 # Diffs
 'editundo' => 'rivas wetin yu jos do',
-'diff-multi' => '({{PLURAL:$1|Wan intamidyet vazhon|$1 intamidyet vazhon-dem}} no de sho)',
 
 # Search results
 'searchresults' => 'Sach rizolt-dem',
@@ -423,7 +422,6 @@ Di [[Special:WhatLinksHere/$2|ful list]] de yah.',
 'tooltip-pt-preferences' => 'Yu prefrens-dem',
 'tooltip-pt-mycontris' => 'List ov yu kontribyushon-dem',
 'tooltip-pt-login' => 'I go bete if yu login, bot noto obligeshon',
-'tooltip-pt-anonlogin' => 'I go bete if yu login, bot noto obligeshon',
 'tooltip-pt-logout' => 'Log komot',
 'tooltip-ca-talk' => 'Diskoshon bot kontent pej',
 'tooltip-ca-edit' => 'Yu ebul fo edit dis pej-ya
index 263a6a0..f9219ee 100644 (file)
@@ -17,7 +17,6 @@
 $messages = array(
 # User preference toggles
 'tog-underline' => "Koritan ang dalum kang manga ''link'':",
-'tog-justify' => 'Tururupungun ang kilid kang manga paragraph',
 'tog-hideminor' => "Tagoon ang gagmay nga ''edit'' sa mga bag-o nga ilis",
 'tog-extendwatchlist' => "Palapadun ang ''watchlist'' agud nga mapakita ang tanan nga ginasogtan nga pag-ilis",
 'tog-numberheadings' => "Automatiko nga togroan kang nomero ang manga ''heading''",
@@ -28,7 +27,6 @@ $messages = array(
 'tog-watchmoves' => "Idogang sa akun nga ''watchlist'' ang manga pahina nga ginpanghalin ko",
 'tog-watchdeletion' => "Idogang sa akun nga ''watchlist'' ang manga pahina nga ginpamara ko",
 'tog-previewonfirst' => 'Ipakita ang preview sa ona nga ilis',
-'tog-nocache' => "Ontatun ang ''page caching''",
 'tog-enotifwatchlistpages' => 'Padarhan ako kang e-mail kon may nag-ilis kang pahina nga akun ginabantayan',
 'tog-enotifminoredits' => "Padarhan man ako kang ''e-mail'' tohay sa manga gagmay nga pag-ilis sa manga pahina",
 'tog-shownumberswatching' => "Ipakita ang karakuun kang manga ''user'' nga galantaw",
index bf0e3ae..be47fce 100644 (file)
@@ -674,7 +674,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:$1|dä Metmaacher|de Metmaacherėn|dä Metmaacher|de Metmaacherėn|däMetmaacher}} [[User:$1]] enjelogg. Met heh dämm Fommolaa kanns De jäz onger enem andere Nahme enlogge.',
+'userlogin-loggedin' => 'Do bes ald als {{GENDER:$1|dä Metmaacher|de Metmaacherėn|dä Metmaacher|de Metmaacherėn|däMetmaacher}} [[User:$1]] enjelogg. Met heh dämm Fommolaa kanns De jäz ävver 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.',
@@ -801,6 +801,9 @@ Et süht us, wi wann ene kappodde Brauser udder <i lang=\"en\">proxy</i>ẞööv
 'createacct-another-realname-tip' => 'Dä reschteje Nahme kam_mer fott lohße.
 
 Wann dä aanjejovve es, weet_e jebruch, öm öffentlesch de Schriiver för Beidrääsch ze nänne.',
+'pt-login' => 'Enlogge',
+'pt-createaccount' => 'Ene neue Zohjang aanmälde',
+'pt-userlogout' => 'Ußlogge',
 
 # Email sending
 'php-mail-error-unknown' => 'Nit bekannte Fähler met dä Funxjohn <code lang="en">mail()</code> vum PHP',
@@ -809,7 +812,7 @@ Wann dä aanjejovve es, weet_e jebruch, öm öffentlesch de Schriiver för Beidr
 
 # Change password dialog
 'changepassword' => 'Passwood *',
-'resetpass_announce' => 'De beß jez enjelogg med ennem Zweschepasswoot, wat De övver e-mail krääje häs. Dat kanns De nit einfar_esu behallde. Alsu donn jetz e neu Passwoot för op Duur aanjevve.',
+'resetpass_announce' => 'Do moß jäz e neu Paßwoot för op Duur aanjevve.',
 'resetpass_text' => '<!-- Donn der Täx hee dobei -->',
 'resetpass_header' => 'Neu Passwood faßlääje',
 'oldpassword' => 'Et ahle Passwood:',
@@ -825,8 +828,12 @@ Wann dä aanjejovve es, weet_e jebruch, öm öffentlesch de Schriiver för Beidr
 'resetpass-wrong-oldpass' => 'Dat Zweschepaßwood udder dat aktoälle Paßwood stemmp nit.
 Möjjelesch, Do häs Ding Paßwood ald jetuusch, künnt och sin,
 Do häs Der enzwesche e neu Zweschepaßwood jehollt.',
+'resetpass-recycled' => 'Donn för Ding neu Paßwoot jät anders aanjävve, wi Ding Paßwoot vun jäz.',
+'resetpass-temp-emailed' => 'Do beß jez enjelogg med ennem Zweschepasswoot, wat De övver e-mail krääje häs. Dat kanns De nit einfar_esu behallde. Alsu donn jetz e neu Passwoot för op Duur aanjevve.',
 'resetpass-temp-password' => 'Zweschepasswood:',
 'resetpass-abort-generic' => 'E Zohsazprojramm häd_et nit zohjelohße, et Paßwoot ze ändere.',
+'resetpass-expired' => 'Di Paßwood es afjeloufe. Donn jetz e neu Passwoot för et Enlogg faßlääje.',
+'resetpass-expired-soft' => 'Ding Paßwood es afjeloufe u moß neu jesaz wääde. Bes esu jood_un donn e neu Paßwoot ußsöhke, udder donn op {{int:cancel}} jonn, öm et schpääder ze säze.',
 
 # Special:PasswordReset
 'passwordreset' => 'Et Paßwoot zeröck säze',
@@ -1006,7 +1013,7 @@ zwesche de ungerscheidlichste IP Adresse wähßele, womöchlich ohne dat hä et
 Metmaacher bes, un fings, dat heh Saache an Dich jeschrevve wääde, wo Do jar nix met am Hot häs, dann bes Do
 wahrscheinlich och nit jemeint. Denk villeich ens drüvver noh, datte Dich [[Special:UserLogin/signup|anmelde]] deis,
 domet De dann donoh nit mieh met esu en Ömständ ze dun häs, wie de andere namenlose Metmaacher heh. Wann de aanjemelldt bes un deis [[Special:UserLogin|enlogge]], dann kam_mer Desch och fun alle andere Metmaacher ongerschejde.</i>',
-'noarticletext' => '<span class="plainlinks">Em Momang es keine Tex op dä Sigg. Jangk en de Texte vun ander Sigge [[Special:Search/{{PAGENAME}}|noh däm Titel söke]], odder [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} donn en de Logböcher donoh loore], oder [{{FULLURL:{{FULLPAGENAME}}|action=edit}} fang die Sigg aan] ze schrieve, oder jangk zeröck wo de her koms. Do hät Dinge Brauser ene Knopp för.</span>',
+'noarticletext' => '<span class="plainlinks">Em Momang es keine Täx op heh dä Sigg. Jangk en de Täxte vun ander Sigge [[Special:Search/{{PAGENAME}}|noh däm Titel söhke]], udder [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} donn en de Logböscher donoh loore], udder [{{FULLURL:{{FULLPAGENAME}}|action=edit}} fang di Sigg aan] ze schrieve, udder jangk zeröck woh De heer kohms. Do hät Dinge Brauser ene Knopp för.</span>',
 'noarticletext-nopermission' => 'Op dä Sigg es em Momang nix drop.
 Do kanns noh däm Tittel vun heh dä Sigg [[Special:Search/{{PAGENAME}}|em Tex op ander Sigge söhke]],
 udder en dä zopaß <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Logbööscher nohloore]</span>.',
@@ -1887,6 +1894,7 @@ wann De se noch han wells.',
 'php-uploaddisabledtext' => 'Et Dateie Huhlade es en PHP affjeschalldt.
 Bes esu joot un donn noh de Enshtellung <i lang="en">file_uploads</i> loore.',
 'uploadscripted' => 'En dä Datei es HTML dren oder Code vun enem Skripp, dä künnt Dinge Brauser en do verkihrte Hals krije un usführe.',
+'uploadinvalidxml' => 'Dat <i lang="en" xml:lang="en">XML</i> en dä huh jelaade Dattei kunnt wohr nit en Oodenong beim Ongersöhke.',
 'uploadvirus' => 'Esu ene Dress:
 <br />
 En dä Datei stich e Kompjutervirus!
@@ -2508,7 +2516,7 @@ Wann di Sigg udder ier Klaafsigg verändert weed, kütt dat af jäz heh en di Op
 'watcherrortext' => 'Ene Fähler es opjetrodde beim Ändere vun de Enshtällonge för Ding Oppaßleß för „$1“',
 
 'enotif_mailer' => '{{ucfirst:{{GRAMMAR:Genitive singe male|{{SITENAME}}}}}} Nohreechte-Versand',
-'enotif_reset' => 'Setz all Änderunge op „Aanjeluurt“ un Erledich.',
+'enotif_reset' => 'Saz all Änderonge op „Aanjeluurt“, un fäädesch.',
 'enotif_impersonal_salutation' => 'Metmaacher {{GRAMMAR:Genitiv vun|{{SITENAME}}}}',
 'enotif_subject_deleted' => '{{GENDER:$2|Dä Metmaacher|Et|Dä Metmaacher|De Metmaacherėn|Dä Metmaacher}} $2 hät di Sigg $1 {{GRAMMAR:en 3|{{ucfirst:{{SITENAME}}}}}} fott jeschmeße.',
 'enotif_subject_created' => '{{GENDER:$2|Dä Metmaacher|Et|Dä Metmaacher|De Metmaacherėn|Dä Metmaacher}} $2 hät di Sigg $1 {{GRAMMAR:en 3|{{ucfirst:{{SITENAME}}}}}} aanjelaat.',
@@ -2569,7 +2577,7 @@ Do kanns heh noh Hölp luure:
 'historywarning' => '<strong>Opjepass:</strong> Die Sigg, di De fott schmiiße wells, hät {{PLURAL:$1|ein ällder Version|ald Stöcker $1 ällder Versione|jaa kei ällder Versione}}.',
 'confirmdeletetext' => 'Do bes koot dovör, en Sigg för iwich fottzeschmieße. Dobei verschwind och de janze Verjangenheit vun dä Sigg us de Daatebank, met all ehr Änderunge un Metmaacher Name, un all dä Opwand, dä do dren stich. Do muss heh jetz bestätije, dat de versteihs, wat dat bedügg, un dat De weiß, wat Do do mähs.
 <strong>Dun et nor, wann dat met de [[{{MediaWiki:Policy-url}}|Rejelle]] wirklich zosamme jeiht!</strong>',
-'actioncomplete' => 'Erledich',
+'actioncomplete' => 'Jedonn!',
 'actionfailed' => 'Dat es donevve jejange',
 'deletedtext' => 'De Sigg „$1“ es jetz fottjeschmesse woode. Luur Der „$2“ aan, do häs De en Liss met de Neuste fottjeschmesse Sigge.',
 'dellogpage' => 'Logboch met de fottjeschmesse Sigge',
@@ -4413,6 +4421,4 @@ Derbei jehüüere enschtalleete Paaserfunxjuhne, alsu esu jät wi
 'expand_templates_generate_rawhtml' => 'Donn de Röh HTML Ußjaav aanzeije',
 'expand_templates_preview' => 'Vör-Aansich',
 
-# Unknown messages
-'uploadinvalidxml' => 'Dat <i lang="en" xml:lang="en">XML</i> en dä huh jelaade Dattei kunnt wohr nit en Oodenong beim Ongersöhke.',
 );
index 9680f2a..04be9de 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** ‫كوردي (عەرەبی)‬ (‫كوردي (عەرەبی)‬)
+/** كوردي (عەرەبی)‏ (كوردي (عەرەبی)‏)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -9,8 +9,10 @@
  *
  * @author Arastein
  * @author Asoxor
+ * @author Bonevarluri
  * @author George Animal
  * @author Marmzok
+ * @author Muhammed taha
  */
 
 $fallback = 'ckb';
@@ -37,16 +39,19 @@ $messages = array(
 
 # Dates
 'january' => 'کانوونی دووەم',
+'january-gen' => 'کانوونی دووەم',
 
 # Categories related messages
 'hidden-category-category' => 'هاوپۆلە شاردراوەکان',
 
 'talkpagelinktext' => 'لێدوان',
 
-# 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) and the disambiguation template definition (see disambiguations).
+# 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' => 'دەربارەی {{SITENAME}}',
-'mainpage'  => 'دەستپێک',
+'mainpage' => 'دەستپێک',
+'mainpage-description' => 'دەستپێک',
 
+'youhavenewmessagesmulti' => 'شما یه گل پیغوم تازه د $1 داریتو',
 'red-link-title' => '$1 (پەڕە بوونی نییە)',
 
 );
index f204e22..6c4c8f6 100644 (file)
@@ -81,7 +81,7 @@ $messages = array(
 'december-gen' => 'ӧшым',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категория}}',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категория}}',
 
 'article' => 'Гижӧд',
 'cancel' => 'Дугӧдны',
index 6ce7abd..7e35cdd 100644 (file)
@@ -188,7 +188,6 @@ $messages = array(
 'vector-action-protect' => 'Коргоо',
 'vector-action-undelete' => 'Калыбына келтирүү',
 'vector-action-unprotect' => 'Коргоону өзгөртүү',
-'vector-simplesearch-preference' => 'Жөнөкөйлөтүлгөн издөө сабын жандыруу («Вектор» темасында гана)',
 'vector-view-create' => 'Түзүү',
 'vector-view-edit' => 'Оңдоо',
 'vector-view-history' => 'Тарыхын кароо',
index 3305cc7..82907f0 100644 (file)
@@ -344,7 +344,6 @@ $messages = array(
 'vector-action-protect' => 'Guadrar',
 'vector-action-undelete' => 'Traer atrás',
 'vector-action-unprotect' => 'Trocar proteksyon',
-'vector-simplesearch-preference' => 'Aktivar barra de buskida simplifikada (solamente kon aspekto Vector)',
 'vector-view-create' => 'Criar',
 'vector-view-edit' => 'Trocar',
 'vector-view-history' => 'Ver la istoria',
index d01d31a..11267c9 100644 (file)
@@ -730,6 +730,9 @@ Waart w.e.g. $1 ier Dir et nach eng Kéier probéiert.',
 'createacct-another-realname-tip' => "De richtegen Numm ass fakultativ.
 
 Wann Dir en ugitt, gëtt e benotzt fir d'Benotzerattributiounen fir Är Aarbecht zouzeuerdnen.",
+'pt-login' => 'Aloggen',
+'pt-createaccount' => 'Benotzerkont opmaachen',
+'pt-userlogout' => 'Ausloggen',
 
 # Email sending
 'php-mail-error-unknown' => 'Onbekannte Feeler an der PHP-Mail-Funktioun',
@@ -738,8 +741,7 @@ Wann Dir en ugitt, gëtt e benotzt fir d'Benotzerattributiounen fir Är Aarbecht
 
 # Change password dialog
 'changepassword' => 'Passwuert änneren',
-'resetpass_announce' => 'Dir sidd mat engem temporären , per E-Mail geschéckte Code ageloggt.
-Fir är Umeldung ofzeschléissen, musst Dir elo hei een neit Passwuert uginn:',
+'resetpass_announce' => 'Fir är Umeldung ofzeschléissen, musst Dir elo hei een neit Passwuert uginn.',
 'resetpass_text' => '<!-- Schreiwt ären Text heihin-->',
 'resetpass_header' => 'Passwuert vum Benotzerkont änneren',
 'oldpassword' => 'Aalt Passwuert:',
@@ -755,8 +757,11 @@ Waart w.e.g. $1 ier Dir et nach eng Kéier probéiert.',
 'resetpass-submit-cancel' => 'Annulléieren',
 'resetpass-wrong-oldpass' => 'Net valabelt temporäert oder aktuellt Passwuert.
 Vläicht hutt Dir Äert Passwuert scho geännert oder en neit temporäert Passwuert ugefrot.',
+'resetpass-recycled' => 'Ännert Äert Passwuert w.e.g. op een anert Passwuert wéi Äert aktuellt Passwuert.',
 'resetpass-temp-password' => 'Temporäert Passwuert:',
 'resetpass-abort-generic' => "D'Ännere vum Passwuert gouf duerch eng Erweiderung ofgebrach.",
+'resetpass-expired' => 'Äert Passwuert ass ofgelaf. Gitt w.e.g. en neit Passwuert u fir Iech anzeloggen.',
+'resetpass-expired-soft' => 'Äert Passwuert ass ofgelaf a muss zeréckgesat. Sicht w.e.g. elo en neit Passwuert eraus oder klickt ofbrieche fir et spéider zeréckzesetzen.',
 
 # Special:PasswordReset
 'passwordreset' => 'Passwuert zrécksetzen',
@@ -1375,7 +1380,7 @@ Dëst kann net réckgängeg gemaach ginn.",
 'prefs-help-variant' => 'Är léifste Variant oder Orthographie an där Inhaltssäite vun dëser Wiki gewise solle ginn.',
 'yournick' => 'Ënnerschrëft:',
 'prefs-help-signature' => 'Bemierkungen op Diskussiounssäite solle mat "<nowiki>~~~~</nowiki>" ënnerschriwwe ginn. Dëst gëtt dann an Är Ënnerschrëft an en Zäitstempel ëmgewandelt.',
-'badsig' => "D'Syntax vun Ã¤rer Ã\8bnnerschëft ass net korrekt; iwwerpréift w.e.g. Ã¤ren HTML Code.",
+'badsig' => "D'Syntax vun Ã\84rer Ã\8bnnerschrëft ass net korrekt; iwwerpréift w.e.g. den HTML Code.",
 'badsiglength' => 'Är Ënnerschrëft ass ze laang.
 Si muss manner wéi $1 {{PLURAL:$1|Zeechen|Zeechen}} hunn.',
 'yourgender' => 'Wéi wëllt Dir beschriwwe ginn?',
@@ -1602,11 +1607,23 @@ Dës Informatioun ass ëffentlech.",
 'rcnotefrom' => "Ugewise ginn d'Ännerunge vum '''$2''' un (maximal '''$1''' Ännerunge gi gewisen).",
 'rclistfrom' => 'Nei Ännerunge vu(n) $1 u weisen',
 'rcshowhideminor' => 'Kleng Ännerunge $1',
+'rcshowhideminor-show' => 'Weisen',
+'rcshowhideminor-hide' => 'Verstoppen',
 'rcshowhidebots' => 'Botte $1',
+'rcshowhidebots-show' => 'Weisen',
+'rcshowhidebots-hide' => 'Verstoppen',
 'rcshowhideliu' => 'Ugemellt Benotzer $1',
+'rcshowhideliu-show' => 'Weisen',
+'rcshowhideliu-hide' => 'Verstoppen',
 'rcshowhideanons' => 'Anonym Benotzer $1',
+'rcshowhideanons-show' => 'Weisen',
+'rcshowhideanons-hide' => 'Verstoppen',
 'rcshowhidepatr' => 'iwwerwaacht Ännerunge $1',
+'rcshowhidepatr-show' => 'Weisen',
+'rcshowhidepatr-hide' => 'Verstoppen',
 'rcshowhidemine' => 'Meng Ännerunge $1',
+'rcshowhidemine-show' => 'Weisen',
+'rcshowhidemine-hide' => 'Verstoppen',
 'rclinks' => 'Déi lescht $1 Ännerunge vun de leschten $2 Deeg weisen.<br />$3',
 'diff' => 'Ënnerscheed',
 'hist' => 'Versiounen',
@@ -1733,6 +1750,7 @@ Wann Dir dëse Fichier trotzdeem eropluede wëllt da gitt w.e.g. zréck a luet d
 'uploaddisabledtext' => "D'Eropluede vu Fichieren ass ausgeschalt.",
 'php-uploaddisabledtext' => "D'Eropluede vu Fichieren ass am PHP desaktivéiert. Kuckt w.e.g. d'Astellung ''file_uploads'' no.",
 'uploadscripted' => 'An dësem Fichier ass HTML- oder Scriptcode, dee vun engem Webbrowser falsch interpretéiert kéint ginn.',
+'uploadinvalidxml' => 'Den XML am eropgelueden Fichier konnt net verschafft ginn.',
 'uploadvirus' => 'An dësem Fichier ass ee Virus! Detailer: $1',
 'uploadjava' => "An dësem ZIP-Fichier ass e JAVA CLASS-Fichier dran.
 D'Eropluede vu JAVA-Fichieren ass net erlaabt, well si d'Ëmgoe vu Sécherheetsmoossnamen erméigleche kënnen.",
@@ -1936,7 +1954,7 @@ Dir kënnt seng Beschreiwung op senger [$2 Beschreiwungssäit] änneren.',
 'filerevert-defaultcomment' => "zréckgesat op d'Versioun vum $1, $2 Auer",
 'filerevert-submit' => 'Zrécksetzen',
 'filerevert-success' => "'''[[Media:$1|$1]]''' gouf op d'[$4 Versioun vum $2, $3 Auer] zréckgesat.",
-'filerevert-badversion' => 'Et gëtt keng Versioun vun deem Fichier mat der Zäitinformatioun déi Dir uginn hutt.',
+'filerevert-badversion' => 'Et gëtt keng vireg lokal Versioun vun deem Fichier mat der Zäitinformatioun déi Dir uginn hutt.',
 
 # File deletion
 'filedelete' => 'Läsch "$1"',
@@ -2058,7 +2076,7 @@ An all Rei sti Linken zur éischter an zweeter Viruleedung, souwéi d\'Zil vun d
 'uncategorizedimages' => 'Biller ouni Kategorie',
 'uncategorizedtemplates' => 'Schablounen ouni Kategorie',
 'unusedcategories' => 'Net benotzt Kategorien',
-'unusedimages' => 'Net benotzt Biller',
+'unusedimages' => 'Net benotzt Fichieren',
 'popularpages' => 'Populär Säiten',
 'wantedcategories' => 'Gewënscht Kategorien',
 'wantedpages' => 'Gewënscht Säiten',
@@ -2089,13 +2107,14 @@ An all Rei sti Linken zur éischter an zweeter Viruleedung, souwéi d\'Zil vun d
 'protectedpages-timestamp' => 'Zäitstempel',
 'protectedpages-page' => 'Säit',
 'protectedpages-expiry' => 'Spär bis',
+'protectedpages-performer' => 'Spär duerch de Benotzer',
 'protectedpages-params' => 'Parameter vun der Spär',
 'protectedpages-reason' => 'Grond',
 'protectedpages-unknown-timestamp' => 'Onbekannt',
 'protectedpages-unknown-performer' => 'Onbekannte Benotzer',
 'protectedtitles' => 'Gespaarten Titel',
 'protectedtitles-summary' => 'Dës Titele goufe gespaart an et ka keng Säit mat esou engem Titel gemaach ginn.',
-'protectedtitlesempty' => 'Zur Zäit si mat de Parameteren déi Dir uginn hutt keng Säite fir neit Uleeë gespaart.',
+'protectedtitlesempty' => 'Elo si mat de Parameteren déi Dir uginn hutt keng Säite fir neit Uleeë gespaart.',
 'listusers' => 'Benotzerlëscht',
 'listusers-editsonly' => 'Nëmme Benotzer mat Ännerunge weisen',
 'listusers-creationsort' => 'Nom Datum vum Uleeën zortéieren',
@@ -2163,7 +2182,7 @@ Dir kënnt d'Siche limitéieren wann Dir e Log-Typ, e Benotzernumm (case-senisit
 [[Special:UnusedCategories|Netbenotzt Kategorië]] ginn hei net gewisen.
 Kuckt och [[Special:WantedCategories|Gewënscht Kategorien]].',
 'categoriesfrom' => 'Weis Kategorien ugefaange bei:',
-'special-categories-sort-count' => 'No der Zuel zortéieren',
+'special-categories-sort-count' => 'no der Zuel zortéieren',
 'special-categories-sort-abc' => 'alphabetesch zortéieren',
 
 # Special:DeletedContributions
@@ -2207,7 +2226,7 @@ Et ginn [[{{MediaWiki:Listgrouprights-helppage}}|zousätzlech Informatiounen]] i
 'listgrouprights-rights' => 'Rechter',
 'listgrouprights-helppage' => 'Help:Grupperechter',
 'listgrouprights-members' => '(Lëscht vun de Memberen)',
-'listgrouprights-addgroup' => 'Kann {{PLURAL:$2|dës Grupp|dës Gruppen}} derbäisetzen: $1',
+'listgrouprights-addgroup' => 'Dës {{PLURAL:$2|Grupp|Gruppen}} derbäisetzen: $1',
 'listgrouprights-removegroup' => 'Kann {{PLURAL:$2|dëse Gruppe|dës Gruppen}} ewechhuelen: $1',
 'listgrouprights-addgroup-all' => 'Kann all Gruppen derbäisetzen',
 'listgrouprights-removegroup-all' => 'Ka Benotzer aus alle Gruppen eraushuelen',
@@ -2218,7 +2237,7 @@ Et ginn [[{{MediaWiki:Listgrouprights-helppage}}|zousätzlech Informatiounen]] i
 
 # Email user
 'mailnologin' => 'Keng E-Mailadress',
-'mailnologintext' => 'Dir musst [[Special:UserLogin|ugemellt]] sinn an eng gëlteg E-Mail Adress an Äre [[Special:Preferences|Astellungen]] aginn hunn, fir engem anere Benotzer eng E-Mail ze schécken.',
+'mailnologintext' => 'Dir musst [[Special:UserLogin|ageloggt]] sinn an eng gëlteg E-Mail Adress an Ären [[Special:Preferences|Astellungen]] aginn hunn, fir engem anere Benotzer eng E-Mail ze schécken.',
 'emailuser' => 'Dësem Benotzer eng E-Mail schécken',
 'emailuser-title-target' => '{{GENDER:$1|Dëser Benotzerin|Dësem Benotzer}} eng Mail schécken',
 'emailuser-title-notarget' => 'Dem Benotzer eng E-Mail schécken',
@@ -4036,6 +4055,4 @@ Faktesch alles wat tëscht duebelen Accolade steet gëtt ausgewäert.',
 'expand_templates_generate_rawhtml' => 'HTML-Format weisen',
 'expand_templates_preview' => 'Kucken ouni ofzespäicheren',
 
-# Unknown messages
-'uploadinvalidxml' => 'Den XML am eropgelueden Fichier konnt net verschafft ginn.',
 );
index abf4cfc..964ad78 100644 (file)
@@ -146,12 +146,12 @@ $messages = array(
 'dec' => 'дек',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|1=Категория|Категорияр}}',
+'pagecategories' => '{{PLURAL:$1|1=Категори|Категорияр}}',
 'category_header' => '«$1» категориядин ччинар',
 'subcategories' => 'агъакатегорияр',
 'category-media-header' => '"$1" категориядин медиа',
 'category-empty' => "''Алай чӀава и категория ичӀи я.\"",
-'hidden-categories' => '{{PLURAL:$1|1=Чуьнуьхай категория|Чуьнуьхай категорияр}}',
+'hidden-categories' => '{{PLURAL:$1|1=Чуьнуьхай категори|Чуьнуьхай категорияр}}',
 'hidden-category-category' => 'Чуьнуьхай категорияр',
 'category-subcat-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авай подкатегория ава.|$2-кай {{PLURAL:$1|1=агъакатегория|$1 агъакатегорияр}} къалурнава }}',
 'category-subcat-count-limited' => 'И категорияда {{PLURAL:$1|1=агъакатегория|$1 агъакатегорияр}} ава.',
@@ -191,7 +191,6 @@ $messages = array(
 'vector-action-protect' => 'Хуьн',
 'vector-action-undelete' => 'ТуькӀуьр хъувун',
 'vector-action-unprotect' => 'Хуьн дегишарун',
-'vector-simplesearch-preference' => 'Гегьенш жагъурунин рикӀел гъун кутун (кьилди «Вектор» акунар патал)',
 'vector-view-create' => 'ТуькӀуьрун',
 'vector-view-edit' => 'Дуьзарин',
 'vector-view-history' => 'Тарихдиз килигун',
@@ -238,7 +237,7 @@ $messages = array(
 'articlepage' => 'Къене авайбурун ччиндиз килигун',
 'talk' => 'Веревирд авун',
 'views' => 'Килигунар',
-'toolbox' => 'Алатрин кьвати',
+'toolbox' => 'Алатар',
 'userpage' => 'Уртахдин ччиниз килигун',
 'projectpage' => 'Проектдин ччиниз килигун',
 'imagepage' => 'Файлдин ччиниз килигун',
@@ -509,7 +508,7 @@ $messages = array(
 'history-fieldset-title' => 'Тарихдиз килигун',
 'history-show-deleted' => 'Анжах алуднавайбур',
 'histfirst' => 'Виридалайни цIуру',
-'histlast' => 'Ð\9cÑ\83кÑ\8cваÑ\80а Ñ\85Ñ\8cайи',
+'histlast' => 'Ð\93илан Ñ\86lийига',
 'historyempty' => '(ичIи)',
 
 # Revision feed
@@ -565,7 +564,7 @@ $messages = array(
 'nextn' => 'Гуьгъуьнин {{PLURAL:$1|$1}}',
 'prevn-title' => 'Вилик фейи  $1 {{PLURAL:$1|1=нетижа|нетижаяр}}',
 'nextn-title' => 'КЪведай $1 {{PLURAL:$1|1=нетижа|нетижаяр}}',
-'shown-title' => 'ЧÑ\87ина $1 {{PLURAL:$1|1=неÑ\82ижа|неÑ\82ижа}} ÐºÑ\8aалÑ\83Ñ\80Ñ\83н',
+'shown-title' => 'Ð\9aÑ\8aалÑ\83Ñ\80ин $1 {{PLURAL:$1|1=неÑ\82ижа|неÑ\82ижаÑ\8fÑ\80}} Ñ\87Ñ\8aина',
 'viewprevnext' => 'Килигун ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''И вики-проектда \"[[:\$1]]\" тlвар алай ччин ава.'''",
 'searchmenu-new' => "'''И вики-проектда «[[:$1]]» ччин туькӀуьрун!'''",
@@ -579,7 +578,7 @@ $messages = array(
 'searchprofile-images-tooltip' => 'Файлар жугъура',
 'searchprofile-everything-tooltip' => 'Вири ччинра къекъуьгъ (веревирдрин ччинар кваз)',
 'searchprofile-advanced-tooltip' => 'Ганвай тlварарин генгвилера къекъуьгъ',
-'search-result-size' => '$1 ({{PLURAL:$2|1=1 гаф|$2 гаф}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1=1 гаф|$2 гафap}})',
 'search-result-category-size' => '{{PLURAL:$1|1=1 элемент|$1 элементар}} ({{PLURAL:$2|1=1 агъакатегория|$2 агъакатегорияр}}, {{PLURAL:$3|1=1 файл|$3 файлар}})',
 'search-redirect' => '(рахкъурун $1)',
 'search-section' => '(пай $1)',
@@ -738,7 +737,7 @@ $messages = array(
 'hide' => 'Чуьнуьхун',
 'show' => 'Къалурун',
 'minoreditletter' => 'гъ',
-'newpageletter' => 'ЦI',
+'newpageletter' => '<font color ="blue">Цl</font>',
 'boteditletter' => 'б',
 'rc_categories_any' => 'ГЬар са',
 'rc-enhanced-expand' => 'Куьлуь-шуьлуьяр къалурун (JavaScript герекзава)',
@@ -817,7 +816,7 @@ $messages = array(
 'filehist-user' => 'Уртах',
 'filehist-dimensions' => 'Кьадарар',
 'filehist-filesize' => 'Файлдин кьадар',
-'filehist-comment' => 'Ð\9aÑ\8aейд',
+'filehist-comment' => 'Ð\92еÑ\80евиÑ\80д',
 'filehist-missing' => 'Файл авачиз я',
 'imagelinks' => 'Файл кардик кутун',
 'linkstoimage' => 'Къведай {{PLURAL:$1 | ччин | $1 ччинар}} гьа и файлдиз элячlзава',
@@ -867,7 +866,7 @@ $messages = array(
 'withoutinterwiki-submit' => 'Къалурун',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|1=байт|байтар}}',
+'nbytes' => '$1 {{PLURAL:$1|баjт|баjтар}}',
 'nmembers' => '$1 {{PLURAL:$1|1=уьзви|уьзвияр}}',
 'lonelypages' => 'Eтим xъувун',
 'prefixindex' => 'Префикс галай вири ччинар',
index d527c94..27e4dc2 100644 (file)
@@ -38,16 +38,13 @@ $specialPageAliases = array(
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Sulinia lias:',
-'tog-justify' => 'Ajusta paragrafes',
 'tog-hideminor' => 'Asconda editas minor en cambias resente',
 'tog-extendwatchlist' => 'Grandi la lista oservada per mostra tota cambias aplicable',
 'tog-usenewrc' => 'Aumenta cambias resente (JavaScript)',
 'tog-numberheadings' => 'Dona automatica numeros a titula',
 'tog-showtoolbar' => 'Mostra la bara de utiles per edita (JavaScript)',
 'tog-editondblclick' => 'Edita pajes a du clicas (JavaScript)',
-'tog-editsection' => 'Engrana la edita de sesion via lias de {edita}.',
 'tog-editsectiononrightclick' => 'Engrana la edita de sesion par clica a la destra a titulos de sesion (JavaScript)',
-'tog-showtoc' => 'Mostra la table de contenis (per pajes con plu ce tre titulos)',
 'tog-rememberpassword' => 'Memora me sinia per entra a esta computador (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'Junta la pajes ce me ia creada a me lista de pajes oservada',
 'tog-watchdefault' => 'Junta pajes ce me ia edita a me lista de pajes oservada',
@@ -424,7 +421,6 @@ La arcivo de sutraes per esta paje es asi per conveni:",
 'lineno' => 'Linia $1:',
 'compareselectedversions' => 'Compare varias elejeda',
 'editundo' => 'desfa',
-'diff-multi' => '({{PLURAL:$1|$1 revise|$1 revises}} medial no mostrada.)',
 
 # Search results
 'searchresults' => 'Resultas de xerca',
index 2e17eb7..7f36196 100644 (file)
@@ -158,7 +158,6 @@ $messages = array(
 'vector-action-protect' => 'Ssiba',
 'vector-action-undelete' => 'Zawo',
 'vector-action-unprotect' => 'Kyusa ebikugizo',
-'vector-simplesearch-preference' => "Wiki esobole okukuwa amagezi ku by'onoonya (kino kikolera mu ndabika ya Vector yokka)",
 'vector-view-create' => 'Lukolewo',
 'vector-view-edit' => 'Kyusa',
 'vector-view-history' => 'Ennanda ya fayiro eno',
index 7cfb993..e978c4f 100644 (file)
@@ -304,7 +304,6 @@ $messages = array(
 'vector-action-protect' => 'Besjirm',
 'vector-action-undelete' => 'Plaats trök',
 'vector-action-unprotect' => 'Anger beveiliging',
-'vector-simplesearch-preference' => "Sjakel nuuj zeuksuggesties in (allein veur 't vectoroeterlik)",
 'vector-view-create' => 'Maak aan',
 'vector-view-edit' => 'Bewirk',
 'vector-view-history' => 'Bekiek de gesjiedenis',
index 81afd0f..0c839f6 100644 (file)
@@ -307,7 +307,6 @@ Legend: '''({{int:cur}})''' = vaiţīd līdzinţõmizõks lǟndz redaktsijõks,,
 'lineno' => 'Rīnda $1:',
 'compareselectedversions' => 'Līdzinţ vēļdõt redaktsijḑi',
 'editundo' => 'kištānt jarā',
-'diff-multi' => '({{PLURAL:$1|Īdtõ|$1}} vail-vȯlbizt {{PLURAL:$2|īd|$2}} kȭlbatijiz redaktsijõ äb nägţõbõd.)',
 
 # Search results
 'searchresults' => 'Vȯtšimiz rezultātõd',
index ee15cd9..4e66e64 100644 (file)
@@ -114,7 +114,6 @@ $messages = array(
 'vector-action-protect' => 'Kobátela',
 'vector-action-undelete' => 'Kolímwisa tɛ̂',
 'vector-action-unprotect' => ' Kobátela tɛ̂',
-'vector-simplesearch-preference' => 'Kolamusa bokáni bwa boluki bobakísámí (káka na Vector)',
 'vector-view-create' => 'Kokela',
 'vector-view-edit' => 'Kobɔngisa',
 'vector-view-history' => 'Komɔ́nisa mokóló',
@@ -416,7 +415,6 @@ Ezalí listɛ́ ya nkásá gudi bizalí  na [[Special:SpecialPages|{{int:special
 'recentchanges-legend' => 'Mapɔni ma mbóngwana ya nsúka',
 'recentchanges-feed-description' => 'Kolanda mbóngwana ya nsúka ya wiki o ebale eye.',
 'recentchanges-label-minor' => 'Ezalí mbóngwana ya mokɛ́',
-'rcnote' => "Áwa o nsé {{PLURAL:$1|ezalí mbóngwana '''1''' ya nsúka|izalí mbóngwana '''$1''' ya nsúka}} o {{PLURAL:$2|mokɔlɔ|mikɔlɔ '''$2'''}} ya nsúka, o ntángo $5 o mokɔlɔ $4.",
 'rcshowhideminor' => '$1 mbóngwana ya mokɛ́',
 'rcshowhidebots' => '$1 barobot',
 'rcshowhideliu' => '$1 basáleli bamíkitólí',
@@ -529,7 +527,6 @@ Ezalí listɛ́ ya nkásá gudi bizalí  na [[Special:SpecialPages|{{int:special
 'watchthispage' => 'Kolanda lonkásá óyo',
 'unwatch' => 'Kolanda tɛ́',
 'watchlist-details' => '{{PLURAL:$1|Lonkásá $1 elandámí|Nkásá $1 bilandámí}}, longola nkásá ya ntembe.',
-'wlnote' => "Áwa o nsé {{PLURAL:$1|ezalí mbóngwana ya nsúka|izalí mbóngwana '''$1''' ya nsúka}} o {{PLURAL:$2|ngonga|ngonga '''$2'''}} ya nsúka.",
 'wlshowlast' => 'Komɔ́nisa ngónga $1 ya nsúka, mikɔlɔ $2 mya nsúka tǒ $3',
 
 # Displayed when you click the "watch" button and it is in the process of watching
index 10a15a4..324eb4f 100644 (file)
 $messages = array(
 # User preference toggles
 'tog-underline' => "Tumana ling'ko:",
-'tog-justify' => 'Singanyekile silamina',
 'tog-usenewrc' => 'Inenset petuho nca (JavaScript)',
 'tog-numberheadings' => 'Auto-palo mukunguna',
 'tog-showtoolbar' => "Kamukile hloli ye ng'i toolbar (bulukezi JavaScript)",
 'tog-editondblclick' => "Hloli ye ng'i petulo di 'klik' dubo (JavaScript)",
-'tog-editsection' => "Nyembulisize [hloli ye ng'i] di akes di lyangutukezi ling'ki",
 'tog-rememberpassword' => 'Askevusize zwa menuhile kwa bye kompyuta (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'Pusize petulo a hloli di zwa mukoloko di kentezi',
 'tog-watchdefault' => "Pusize petulo a hloli ye ng'i di zwa mukoloko di kentezi",
@@ -429,7 +427,6 @@ Informasi: (bye) = petuho a nca selt,
 'lineno' => 'Lani $1:',
 'compareselectedversions' => 'Bapisize',
 'editundo' => "afi hloli ye ng'i",
-'diff-multi' => '({{PLURAL:$1|1 selt amebusilize|$1 selt amebusilize}} ni kamukile.)',
 
 # Search results
 'searchresults' => 'Fatukile kamukile',
@@ -458,7 +455,6 @@ Informasi: (bye) = petuho a nca selt,
 'rows' => 'Roo:',
 'columns' => 'Kalom:',
 'searchresultshead' => 'Fatukile',
-'resultsperpage' => 'Hit di petulo:',
 'default' => 'auto',
 'prefs-files' => 'Imegini',
 'youremail' => 'Imeli:',
index e4f4db4..4b75b6e 100644 (file)
@@ -177,7 +177,6 @@ $messages = array(
 'vector-action-protect' => 'حمايت بكيد',
 'vector-action-undelete' => 'حذف نبيئني',
 'vector-action-unprotect' => 'حمايت آلشت بكيد',
-'vector-simplesearch-preference' => 'یه گل اوزار پی جوری ساده نه دروس بکید',
 'vector-view-create' => 'راس كردن',
 'vector-view-edit' => 'ويرايشت',
 'vector-view-history' => 'ديئن ويرگار',
@@ -262,8 +261,8 @@ $messages = array(
 'mainpage' => 'سرآسونه',
 'mainpage-description' => 'سرآسونه',
 'policy-url' => 'پروجه:خط و مش',
-'portal' => 'تÙ\84Ú¯Ù\87 Ø¬Ù\85ی',
-'portal-url' => 'پروجه:تلگه جمی',
+'portal' => 'درآسÙ\88Ù\86Ù\87 Ú©Ù\88Ù\85Ù\84Ù\87 Û\8cÚ©ی',
+'portal-url' => 'پروجه:تلگه کومله یکی',
 'privacy' => 'رهبرد رازداری',
 'privacypage' => 'پروجه: خط مشی راز واداشتن',
 
@@ -1072,6 +1071,7 @@ $2',
 'copyuploaddisabled' => 'سوار کردن وا یو آر ال د کار نئ.',
 'uploadfromurl-queued' => 'سوارکرد تو ها د گئ.',
 'uploaddisabledtext' => 'سوار کرد فایلیا د کار نئ.',
+'uploadinvalidxml' => 'ایکس ام الی که سوار بیه نبوئه نوتیج با.',
 'upload-source' => 'سرچشمه فایل',
 'sourcefilename' => 'سرچشمه نوم جانیا:',
 'sourceurl' => 'سرچشمه يو آر ال:',
@@ -1569,6 +1569,7 @@ $2',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 'days' => '{{جمی:$1|1$ روز|$1 روز}}',
+'months' => '{{جمی:$1|$1 ما|$1 مایا}}',
 'years' => '{{جمی:$1|$1 سال|$1 سال}}',
 
 # Human-readable timestamps
@@ -1714,6 +1715,4 @@ $2',
 # Special:ExpandTemplates
 'expand_templates_remove_comments' => 'جا وه جا بیئن ویر و باوریا',
 
-# Unknown messages
-'uploadinvalidxml' => 'ایکس ام الی که سوار بیه نبوئه نوتیج با.',
 );
index ea39edf..1dc64c6 100644 (file)
@@ -347,7 +347,6 @@ $messages = array(
 'vector-action-protect' => 'Užrakinti',
 'vector-action-undelete' => 'Atkurti',
 'vector-action-unprotect' => 'Keisti apsaugą',
-'vector-simplesearch-preference' => 'Supaprastinta paieška (tik „Vector“ išvaizda)',
 'vector-view-create' => 'Kurti',
 'vector-view-edit' => 'Redaguoti',
 'vector-view-history' => 'Istorija',
index 835d153..1e51344 100644 (file)
@@ -162,7 +162,6 @@ $messages = array(
 'vector-action-protect' => 'Venhimna',
 'vector-action-undelete' => 'Lak kir lehna',
 'vector-action-unprotect' => 'Venhimna dinhmun tidanglam rawh',
-'vector-simplesearch-preference' => 'Zawn awlsam lehzualna rawtna awmtir rawh (Vektawr vun tan chauh)',
 'vector-view-create' => 'Siamna',
 'vector-view-edit' => 'Siamţhatna',
 'vector-view-history' => 'Hunhlui-chanchin',
index 4bdcf8c..4f78d3d 100644 (file)
@@ -216,7 +216,6 @@ $messages = array(
 'vector-action-protect' => 'Aizsargāt',
 'vector-action-undelete' => 'Atjaunot',
 'vector-action-unprotect' => 'Mainīt aizsardzību',
-'vector-simplesearch-preference' => 'Ieslēgt vienkāršoto meklēšanas joslu (tikai Vector apdarē)',
 'vector-view-create' => 'Izveidot',
 'vector-view-edit' => 'Labot',
 'vector-view-history' => 'Hronoloģija',
index dca9f2c..c099059 100644 (file)
@@ -313,7 +313,6 @@ $messages = array(
 'vector-action-protect' => '緘',
 'vector-action-undelete' => '覽刪',
 'vector-action-unprotect' => '啟',
-'vector-simplesearch-preference' => '增尋之案(限Vector皮)',
 'vector-view-create' => '立',
 'vector-view-edit' => '纂',
 'vector-view-history' => '覽史',
index 737ea88..f013289 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Bombola
+ * @author Ceas08
  * @author Dato deutschland
  * @author Dawid Deutschland
  * @author Erdemaslancan
@@ -150,9 +151,11 @@ $messages = array(
 
 # Vector skin
 'vector-action-delete' => 'Jili',
+'vector-action-move' => 'Tori',
 'vector-action-protect' => 'İçvi',
 'vector-view-create' => 'dokʼidi',
 'vector-view-edit' => 'Doktiri',
+'vector-view-view' => 'İǩitxi',
 'variants' => "Variant'epe",
 
 'errorpagetitle' => 'Çilata',
@@ -242,6 +245,7 @@ Muşeni? Çunki am butʼkʼa, jileri na ren a butʼkʼaşi golaxteri versiyoni r
 Eger sebebi aya na va renna, pʼrogramis ar çilata z*irit.
 Mu iqʼven! Aya, a [[Special:ListUsers/sysop|adminis]], URL-ti çʼareli şekʼilite rapʼortʼi doçʼarit.',
 'missingarticle-rev' => '(revizyoni#: $1)',
+'badtitle' => 'Varixmarinen boxoxia',
 'badtitletext' => 'Na içʼaren butʼkʼaşi coxo ya çilatoni ren ya boşi ren varna inter-nena do inter-vikʼişi kʼontʼaktʼis na uğutʼu şeni mtini varen.
 Dudicoxopes oxmaruşi yasaği na ren ar, varna daha dido kʼarakʼtʼeri uğun.',
 'viewsource' => 'Odudes o3ʼkʼedi',
@@ -257,8 +261,10 @@ Dudicoxopes oxmaruşi yasaği na ren ar, varna daha dido kʼarakʼtʼeri uğun.'
 'userlogout' => 'Siteşen Kogamaxti',
 'nologin' => "Hesabi va giğuni? '''$1'''",
 'nologinlink' => 'Hesabi dokʼidi.',
+'createaccount' => 'Hesabi dokʼidi',
 'gotaccountlink' => 'Sitʼeşa amaxti',
 'mailmypassword' => 'Ağne pʼarola-çkimi moncğoni',
+'loginlanguagelabel' => 'Nena: $1',
 
 # Change password dialog
 'oldpassword' => "Mcveşi p'arola:",
@@ -328,6 +334,7 @@ Edo amuş metʼi, ak mxuciş meçamu ginonna, meşvelape ti-skani kʼala oçʼar
 Oxo3ʼonapape: (a3ʼineri) = a3ʼineri versiyoni kʼala na ren farkʼi,
 (iptineri) = iptineri versiyoni kʼala na ren farkʼi, Çʼ = çʼitʼa oktiroba.',
 'history-fieldset-title' => 'Golaxteris o3ʼkʼedi',
+'history-show-deleted' => 'Xvala nijilenepe',
 'histfirst' => 'irişen mcveşi',
 'histlast' => 'irişen ağani',
 
@@ -405,7 +412,6 @@ Oxo3ʼonapape: (a3ʼineri) = a3ʼineri versiyoni kʼala na ren farkʼi,
 'recentchanges' => 'Çodinaşi oktirobape',
 'recentchanges-legend' => 'Çodinaşi oktirobape tercihepe',
 'recentchanges-feed-description' => 'Am feedis vikiʼs na ixvenu irişen sonni oktirobape gatxozi.',
-'rcnote' => "$4 tarixi do saatʼi $5 şakis, çodinaşi {{PLURAL:$2|1 ndğas|'''$2''' ndğas}} na ixvenu, {{PLURAL:$1|'''1''' oktiroba|'''$1''' oktiroba}}, tude ren.",
 'rclistfrom' => '$1 tarixişen doni na ixvenu oktirobape ko3ʼiri',
 'rcshowhideminor' => 'çʼitʼa oktirobape $1',
 'rcshowhidebots' => 'botʼepe $1',
@@ -445,6 +451,7 @@ Oxo3ʼonapape: (a3ʼineri) = a3ʼineri versiyoni kʼala na ren farkʼi,
 'filehist-help' => 'Dosyaşi tarixi oz*iru şeni Ndğa/Ora burme-muşis na renan tarixepes o3ʼkʼedi.',
 'filehist-deleteall' => 'mteli jili',
 'filehist-deleteone' => 'jili',
+'filehist-revert' => 'komoiği',
 'filehist-current' => 'A3ʼineri',
 'filehist-datetime' => 'Dğa/Ora',
 'filehist-thumb' => 'Mçʼitʼa sureti',
@@ -571,10 +578,10 @@ Am butʼkʼaşi oçvuşi sinori gaktirinen; ama am oktiroba, kʼademoni oçvalu
 'blanknamespace' => '(Dudi)',
 
 # Contributions
-'contributions' => 'Maxmareşi meşvelape',
+'contributions' => '{{GENDER:$1|User}} işi meşvelape',
 'contributions-title' => '$1 şeni maxmareş meşvelape',
 'mycontris' => 'Çkimi meşvelape',
-'contribsub2' => '$1 ($2)',
+'contribsub2' => '{{GENDER:$3|$1}} ($2) işen',
 'uctop' => '(dudi)',
 'month' => 'Tuta:',
 'year' => '3ʼana:',
@@ -674,6 +681,7 @@ Mu iqʼven başka coxo doçʼari.',
 'tooltip-search' => '{{SITENAME}}-iş doloxe mgori',
 'tooltip-search-go' => 'Eger korenna, am coxos na uğun ar butʼkʼaşa idi',
 'tooltip-search-fulltext' => 'Am nçʼara şeni butʼkʼape mgori',
+'tooltip-p-logo' => 'Dudi but̆ǩaşa idi',
 'tooltip-n-mainpage' => 'Dudi butʼkʼaşa idi',
 'tooltip-n-mainpage-description' => 'Dudi butʼkʼaşa idi',
 'tooltip-n-portal' => 'Proje şeni, şeyepe so gaz*iren, mu gaxvenen',
index 3905585..ec60a5b 100644 (file)
@@ -176,7 +176,6 @@ $messages = array(
 'vector-action-protect' => 'रक्षण करू',
 'vector-action-undelete' => 'आपस लाउ',
 'vector-action-unprotect' => 'सुरक्षा बदलू',
-'vector-simplesearch-preference' => 'परिष्कृत खोज सुझाव समर्थ करू (सदिश स्वरूप मात्र)',
 'vector-view-create' => 'बनाउ',
 'vector-view-edit' => 'सम्पादन करू',
 'vector-view-history' => 'इतिहास देखू',
index 97cb4ec..e35f03b 100644 (file)
@@ -178,7 +178,6 @@ $messages = array(
 'vector-action-protect' => 'Reksa',
 'vector-action-undelete' => 'Batalna pambusakan',
 'vector-action-unprotect' => 'Owahi pangreksan',
-'vector-simplesearch-preference' => 'Aktifna bilah panggoletan sing wis deringkes (nang kulit Vector thok)',
 'vector-view-create' => 'Gawe',
 'vector-view-edit' => 'Sunting',
 'vector-view-history' => 'Sajarah kaca',
index 7ecbf46..1f4fb43 100644 (file)
@@ -289,7 +289,6 @@ $messages = array(
 'vector-action-protect' => 'Араламс',
 'vector-action-undelete' => 'Мърдафтомс',
 'vector-action-unprotect' => 'Араламать полафтомс',
-'vector-simplesearch-preference' => 'Нодамс тевс тёждялгтотф кядьёнксонь седяфксть (аньцек векторонь лангакс)',
 'vector-view-create' => 'Тиемс',
 'vector-view-edit' => 'Петнемс',
 'vector-view-history' => 'История няфтемс',
index ba0244e..95d1c2a 100644 (file)
@@ -339,7 +339,7 @@ $messages = array(
 'category_header' => 'Ireo lahatsoratra ao amin\'ny sokajy "$1"',
 'subcategories' => 'Zana-tsokajy',
 'category-media-header' => "Fisy multimedia anatin'ny sokajy « $1 »",
-'category-empty' => "''Tsy misy pejy, sokajy ambany na sary ao anatin'io sokajy io''",
+'category-empty' => "''Tsy misy pejy, zana-tsokajy na sary ao anatin'io sokajy io''",
 'hidden-categories' => '{{PLURAL:$1|Sokajy misitrika|Sokajy misitrika}} $1',
 'hidden-category-category' => 'Sokajy misitrika',
 'category-subcat-count' => '{{PLURAL:$2|Ity sokajy ity|Ireo sokajy ireo}} dia manana {{PLURAL:$1|zana-tsokajy|zana-tsokajy}} $1 . Ny taotaliny dia $2',
@@ -381,7 +381,6 @@ $messages = array(
 'vector-action-protect' => 'Arovy',
 'vector-action-undelete' => 'Avereno',
 'vector-action-unprotect' => 'Hanala ny fiarovana',
-'vector-simplesearch-preference' => "Hampiasa ny bara fikarohana notsorina (ho an'ny skin Vector ihany)",
 'vector-view-create' => 'Foronona',
 'vector-view-edit' => 'Hanova',
 'vector-view-history' => 'Hijery ny tantara',
@@ -620,6 +619,7 @@ Ny antony nomen\'ny mpandrindra nanidy azy: "$3".',
 'invalidtitle-unknownnamespace' => 'Lohateny tsy ekena miaraka amin\'ny laharana anaran-tsehatra $1 ary soratra "$2"',
 'exception-nologin' => 'Tsy tafiditra',
 'exception-nologin-text' => '[[Special:Userlogin|Midira]]  mba hahafahanao manao ilay asa na hahafahanao mijery ity pejy ity',
+'exception-nologin-text-manual' => "$1 ianao mba ho tonga eo amin'ilay pejy na hanatanteraka ilay asa.",
 
 # Virus scanner
 'virus-badscanner' => "Diso : Tsy fantatray ny mpitady virus ''$1''",
@@ -765,6 +765,9 @@ Andraso $1 alohan'ny mamerina.",
 'suspicious-userlogout' => "Ny fangataham-pialanao dia tsy nekena satria ohatry ny nalfan'ny mpizahan-tsehatra simba izy na kasy ny proxy.",
 'createacct-another-realname-tip' => "Azo tsy atsofoka ny tena anarana.
 Raha misafidy ny hanome azy ianao, ho ampiasaina amin'ny fanehoana ny anjara asan'ilay mpikambana ilay izy.",
+'pt-login' => 'Hiditra',
+'pt-createaccount' => 'Hamorona kaonty',
+'pt-userlogout' => 'Hivoaka',
 
 # Email sending
 'php-mail-error-unknown' => "Hadisoana tsy fantatra tao amin'ny tao mial() an'i PHP.",
@@ -773,21 +776,28 @@ Raha misafidy ny hanome azy ianao, ho ampiasaina amin'ny fanehoana ny anjara asa
 
 # Change password dialog
 'changepassword' => 'Hanova tenimiafina',
-'resetpass_announce' => "Nihiditra tenimiafina mailaka nalefanay tamin'ny imailaka ianao. Ampidiro ity tenimiafina ity mba hanapitra ny fampidirana.",
+'resetpass_announce' => 'Tsy maintsy mametraka tenimiafina ianao mba hamarananan ny fidirana.',
 'resetpass_header' => "Hanova ny tenimiafin'ny kaonty",
 'oldpassword' => 'Tenimiafina taloha:',
 'newpassword' => 'Tenimiafina vaovao:',
 'retypenew' => 'Avereno ampidirina ny tenimiafina vaovao:',
 'resetpass_submit' => 'Ovay ny tenimiafina ary midira',
 'changepassword-success' => 'Voaova soa aman-tsara ny tenimiafinao!',
+'changepassword-throttled' => 'Betsaka loatra ny andram-pidirana nataonao.
+Andraso $1 aloha ny mamerina.',
 'resetpass_forbidden' => 'Tsy afaka ovaina ny tenimiafina',
 'resetpass-no-info' => "Tsy maintsy tafiditra ao amin'ny kaontinao ianao vao afaka mijery ity pejy ity.",
 'resetpass-submit-loggedin' => 'Ovay ny tenimiafina',
 'resetpass-submit-cancel' => 'Aoka ihany',
 'resetpass-wrong-oldpass' => 'Tsy izy ny tenimiafinao (tsotra na miserana)
 Mety efa nanova tenimiafina na nanontany tenimiafina miserana angamba ianao.',
+'resetpass-recycled' => "Avereno amy zavatra hafa nohon'ny tenimiafinao ankehitriny ny tenimiafinao.",
+'resetpass-temp-emailed' => "Niditra tamin'ny alalan'ny tenimiafina vonjimaika nalefa mailaka ianao.
+Mba hamaranana ny fidirana, dia tsy maintsy mampiditra tenimiafina vaovao eto ianao :",
 'resetpass-temp-password' => 'Tenimiafina miserana :',
 'resetpass-abort-generic' => "Nosakanan'ny itatra (extension) iray ny fanovana tenimiafina.",
+'resetpass-expired' => 'Efa nitsahatra ny tenimiafinao. Mampidira tenimiafina vaovao hahafahanao miditra.',
+'resetpass-expired-soft' => 'Efa nitsahatra ny tenimiafinao, ary tsy maintsy averina ilay izy. Safidio avy hatrany ny tenimiafina, na tsindrio "Aoka aloha" raha tsy hanao izany androany',
 
 # Special:PasswordReset
 'passwordreset' => 'Famafana ary famerenana ny tenimiafina',
@@ -830,6 +840,8 @@ Tenimiafina miserana : $2',
 'changeemail-password' => "Tenimiafinao eo amin'i {{SITENAME}}:",
 'changeemail-submit' => 'Hanova ny adiresy imailaka',
 'changeemail-cancel' => 'Adinoy',
+'changeemail-throttled' => "Betsaka loatra ny andrana nidiranao.
+Miandrasa $1 alohan'ny manandrana indray.",
 
 # Special:ResetTokens
 'resettokens' => 'Hamerina ny token',
@@ -1045,6 +1057,7 @@ Efa misy izy.',
 'content-not-allowed-here' => "Votoatiny ''$1'' voarara eo amin'ny pejy [[$2]]",
 'editwarning-warning' => "Mety hahavery ny fanovana nataonao ny fialanao amin'ity pejy ity.
 Raha tafiditra ianao dia azonao esorina ity fampitandremana ity ao amin'ny fizarana \"{{int:prefs-editing}}\" ao amin'ny safidinao.",
+'editpage-notsupportedcontentformat-title' => 'Tsy zaka io andrefim-botoatiny io',
 
 # Content models
 'content-model-wikitext' => 'wiki-soratra',
@@ -1255,6 +1268,9 @@ Marino raha manohy ny tantaram-pejy ity asa ity.",
 'editundo' => 'esory',
 'diff-empty' => '(Tsy misy mahasamihafa)',
 'diff-multi-manyusers' => "Tsy naseho ny antiôna $1{{PLURAL:}} nataon'ny mpikambana $2.",
+'difference-missing-revision' => "Tsy hita ny versiona $2{{PLURAL:$2||}} ny fahasamihafanna ($1) an'ity pejy ity.
+
+Vokatry ny fanarahana rohy fampitahana lany daty mankany amy pejy efa voafafa izan . Ho hita eo amin'ny [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} laogim-pamafàna] ny antsipirihany.",
 
 # Search results
 'searchresults' => 'Valim-pikarohana',
@@ -1270,7 +1286,7 @@ Marino raha manohy ny tantaram-pejy ity asa ity.",
 'shown-title' => 'Aseho valiny $1 isaky ny pejy iray{{PLURAL:}}',
 'viewprevnext' => 'Hijery ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-exists' => "'''Misy pejy mitondra anarana « [[:$1]] » eto amin'ity wiki ity'''",
-'searchmenu-new' => "'''Hamorona ny pejy \"[[:\$1]]\" eto amin'ity wiki ity!'''",
+'searchmenu-new' => '<strong>Hamorona ny pejy "[[:$1]]" eto amin\'ity wiki ity!</strong> {{PLURAL:$2|0=|Jereo koa ny pejy hita tamin\'ny karokao.|Jereo koa ny valim-pikarohana hita.}}',
 'searchprofile-articles' => 'Pejy misy votoatiny',
 'searchprofile-project' => 'Pejy fanampiana sy pejy tetikasa',
 'searchprofile-images' => 'Multimedia',
@@ -1286,6 +1302,7 @@ Marino raha manohy ny tantaram-pejy ity asa ity.",
 'search-result-score' => 'Fifanarahana : $1%',
 'search-redirect' => "(redirect avy amin'ny/amin'i $1)",
 'search-section' => '(fizaràna $1)',
+'search-file-match' => "(miady amin'ny votoatin-drakitra)",
 'search-suggest' => 'Andramo : $1',
 'search-interwiki-caption' => 'zandri-tetikasa',
 'search-interwiki-default' => "Valiny amin'ny $1 :",
@@ -1312,6 +1329,7 @@ Marino raha manohy ny tantaram-pejy ity asa ity.",
 'preferences' => 'Ny momba anao',
 'mypreferences' => 'Safidy',
 'prefs-edits' => 'isa ny fanovàna :',
+'prefsnologintext2' => '$1 ianao hahafahanao mamaritra ny safidim-pikambana',
 'prefs-skin' => 'Endrika',
 'skin-preview' => 'Tsipalotra',
 'datedefault' => 'Tsy misy safidy',
@@ -1602,15 +1620,29 @@ Tsy haseho ny adiresy imailakao rehefa manoratra any aminao ny mpikambana hafa."
 'recentchanges-label-minor' => 'Kely fotsiny ity fanovana ity',
 'recentchanges-label-bot' => "Nataon'ny rôbô ity fanovana ity.",
 'recentchanges-label-unpatrolled' => 'Ity fanovana ity dia mbola tsy voamarina',
-'recentchanges-legend-newpage' => '$1 - pejy vaovao',
+'recentchanges-label-plusminus' => "IO ny isan'ny oktety niova tamin'ilay pejy",
+'recentchanges-legend-heading' => "'''Maribolana:'''",
+'recentchanges-legend-newpage' => '(jereo koa ny [[Special:NewPage|lisitry ny pejy vaovao]])',
 'rcnotefrom' => "Ity eto ambany ity ny lisitry ny vao niova manomboka ny <b>$2</b> (hatramin'ny <b>$1</b> no miseho).",
 'rclistfrom' => 'Asehoy izay vao niova manomboka ny $1',
 'rcshowhideminor' => '$1 ny fanovàna kely',
+'rcshowhideminor-show' => 'Haneho',
+'rcshowhideminor-hide' => 'Hanafina',
 'rcshowhidebots' => '$1 ny mpikambana rôbô',
+'rcshowhidebots-show' => 'Haneho',
+'rcshowhidebots-hide' => 'Hanafina',
 'rcshowhideliu' => '$1 ny mpikambana nisoratra anarana',
+'rcshowhideliu-show' => 'Haneho',
+'rcshowhideliu-hide' => 'Hanadina',
 'rcshowhideanons' => '$1 ny mpikambana tsy nisoratra anarana',
+'rcshowhideanons-show' => 'Haneho',
+'rcshowhideanons-hide' => 'Hanafina',
 'rcshowhidepatr' => '$1 ny fanovana voaambina',
+'rcshowhidepatr-show' => 'Haneho',
+'rcshowhidepatr-hide' => 'Hanafina',
 'rcshowhidemine' => '$1 ny fanovàko',
+'rcshowhidemine-show' => 'Haneho',
+'rcshowhidemine-hide' => 'Hanafina',
 'rclinks' => "Asehoy ny $1 niova farany tato anatin'ny $2 andro<br />$3",
 'diff' => 'Fampitahana',
 'hist' => 'tant.',
@@ -1737,6 +1769,7 @@ Raha mbola te-hampiditra io rakitra io foana ianao, miverena any aoriana ary mam
 Marino ny option configuration file_uploads.",
 'uploadscripted' => "
 Misy kialo HTML na fango script mety tsy ho hain'ny navigateur sasany haseho ity rakitra ity.",
+'uploadinvalidxml' => "Tsy afaka vakiana ny XML tao anatin'ilay rakitra nafaranao.",
 'uploadvirus' => 'Misy viriosy io rakitra io! Toy izao ny antsipirihany: $1',
 'uploadjava' => 'Ny rakitra dia rakitra ZIP ahitana rakitra .class Java.
 Voarara ny mandefa rakitra Java satria mety hahavaky ny fepetra mikasika ny antoka ireo rakitra ireo.',
@@ -1867,8 +1900,7 @@ ity wiki ity dia no-regler-na ho sarababem-bahoaka.",
 'upload_source_file' => " (rakitra eo amin'ny milinao)",
 
 # Special:ListFiles
-'listfiles-summary' => "Ahitana ny rakitra rehetra nampidirina ity pejy manokana ity.
-Rehefa sivanin'ny mpikambana iray izy ity, ny rakitra izay ahitana santiôna vaovao indrindra izay nalefan'io mpikamana io no aseho.",
+'listfiles-summary' => 'Ahitana ny rakitra rehetra nampidirina ity pejy manokana ity.',
 'listfiles_search_for' => 'Hitady anarana media :',
 'imgfile' => 'rakitra',
 'listfiles' => "Lisitran'ny rakitra",
@@ -2068,7 +2100,16 @@ Aza manadino manamarina raha tsy misy rohy makany amin'ny endrika hafa alohan'ny
 'protectedpages' => 'Pejy voaaro',
 'protectedpages-indef' => 'Ny fiarovana maharitra ihany',
 'protectedpages-cascade' => 'Ny fanovana an-driana ihany',
+'protectedpages-noredirect' => 'Hanafina ny fihodinana',
 'protectedpagesempty' => 'Tsy misy pejy voaaro ankehitriny.',
+'protectedpages-timestamp' => 'Dasy sy ora',
+'protectedpages-page' => 'Pejy',
+'protectedpages-expiry' => 'Mitsahatra ny',
+'protectedpages-performer' => 'Fiarovana ny mpikambana',
+'protectedpages-params' => 'Parametatry ny fiavorana',
+'protectedpages-reason' => 'Antony',
+'protectedpages-unknown-timestamp' => 'Tsy fantatra',
+'protectedpages-unknown-performer' => 'Mpikambana tsy fantatra',
 'protectedtitles' => 'Lohateny voaaro',
 'protectedtitlesempty' => "Tsy misy lohateny voaaro miaraka amin'ireo mpihazaka ireo.",
 'listusers' => 'Lisitry ny mpikambana',
@@ -2319,10 +2360,12 @@ Jereo amin\'ny $2 ny lisitry ny famafana pejy faramparany.',
 'deletecomment' => 'Antony :',
 'deleteotherreason' => 'antony hafa miampyy:',
 'deletereasonotherlist' => 'antony',
-'deletereason-dropdown' => "* Antom-pamafana matetika miasa
+'deletereason-dropdown' => "* Antom-pamafàna miverimberina matetika
+** Rohy fandotoana
+** Fanimbana pejy
+** Tsy fanajana zom-pamorona
 ** Hataka avy amin'ny tompony
-** Tsi-fanajana ny zom-pamorona
-** Fandotoana",
+** Fihodinana tapaka",
 'delete-edit-reasonlist' => 'Hanova ny antony amafana pejy',
 'delete-toobig' => "Ity pejy ity dia manana tantaram-panovana lava be, izany hoe manana versiona {{PLURAL:$1}} $1.
 Noferana mba tsy hikorontana ny fandehanan'i {{SITENAME}} ny famafana ireo pejy ireo.{{PLURAL:$1|}}",
@@ -2598,7 +2641,7 @@ mihatra amin'ny adiresy IP na solonanarana iray.",
 'change-blocklink' => 'ovay ny fanakanana',
 'contribslink' => "fandraisan'anjara",
 'emaillink' => 'Handefa imailaka',
-'autoblocker' => "Voasakana satria ny adiresy IP-nao dia vao avy nampiasain'i \"[[User:\$1|\$1]]\". Ny anton'ny fanakanana dia: \"'''\$2'''\"",
+'autoblocker' => 'Voasakana satria ny adiresy IP-nao dia vao avy nampiasain\'i "[[User:$1|$1]]". Ny antony nomena ho an\'ny fanakananan an\'i $1 dia "$2"',
 'blocklogpage' => "Tantaran'ny sakana",
 'blocklog-showlog' => 'Efa voasakana ity mpikambana ity taloha.
 Eo ambany ny laogim-panakanana.',
@@ -2829,7 +2872,7 @@ Singam-botoatiny fotsiny no nalefa.',
 Tsy hita ny rakitra miserana.',
 'import-parse-failure' => 'Tsy fetezana teo am-pandinihana ny XML ho ampidirina',
 'import-noarticle' => 'Tsy misy pejy ho ampidirina !',
-'import-nonewrevisions' => 'Efa nampidirina taloha daholo ny versiona rehetra.',
+'import-nonewrevisions' => "Tsy misy versiona nafarana (efa teo daholo izy ireo, na nisy tsy noraharahiana nohon'ny hadisoana).",
 'xml-error-string' => "$1 eo amin'ny andininy faha $2, tsanganana faha $3 (oktety $4) : $5",
 'import-upload' => 'Fandrefasana data XML',
 'import-token-mismatch' => 'Very ny fampahalalàna momba ny kaonty.
@@ -2960,6 +3003,7 @@ Mamerina ny version taloha io asa io ary afaka manometraka ny antony anatin'ny a
 'pageinfo-length' => 'Halavam-pejy (oktety)',
 'pageinfo-article-id' => 'Laharam-pejy',
 'pageinfo-language' => "Tenin'ny votoatiny",
+'pageinfo-content-model' => 'Môdelim-botoatim-pejy',
 'pageinfo-robot-policy' => "Fanondroana ataon'ny rôbô",
 'pageinfo-robot-index' => 'Azo atao',
 'pageinfo-robot-noindex' => 'Tsy azo tondroina',
@@ -3166,12 +3210,14 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
 'exif-gpsaltituderef' => 'Haambo tsiahy',
 'exif-gpsaltitude' => 'Haambo',
 'exif-gpstimestamp' => 'Ora GPS (famantaranandro atômika)',
+'exif-gpssatellites' => "Zanabolana mampiasaina ho an'ilay refy",
 'exif-gpsmeasuremode' => 'Fomba fandrefesana',
 'exif-gpsdop' => 'Hatsiko ny fandrefesana',
 'exif-gpsspeedref' => 'Mari-drefi-kafainganana',
 'exif-gpsspeed' => 'Hafaingam-pandray GPS',
 'exif-gpsimgdirection' => "Fitodihan'ny sary",
 'exif-gpsdestlatitude' => 'Laharam-pehintany tanjona',
+'exif-gpsdestlongitude' => 'Laharan-jarahasina tanjona',
 'exif-gpsareainformation' => 'Anaram-paritra GPS',
 'exif-gpsdatestamp' => 'Daty GPS',
 'exif-worldregioncreated' => 'Faritany nangalana ity ilay sary',
@@ -3281,12 +3327,34 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
 'exif-flash-fired-1' => 'Nirehitra ny flash',
 'exif-flash-return-0' => 'Tsy misy stirôbôskôpy mamerina lefa fahitana',
 'exif-flash-mode-3' => 'Toetra aotômatika',
+'exif-flash-function-1' => "Tsy misy lefan'ny flash",
+'exif-flash-redeye-1' => 'Fanoherana ny fisiana maso mena',
 
 'exif-focalplaneresolutionunit-2' => 'Posy',
 
 'exif-sensingmethod-1' => 'Tsy voafaritra',
 
+'exif-gaincontrol-0' => 'Tsy misy',
+'exif-gaincontrol-1' => 'Fahazoana miabo kely',
+'exif-gaincontrol-2' => 'Fitomboana miabo be',
+'exif-gaincontrol-3' => 'Fitomboana miiba kely',
+'exif-gaincontrol-4' => 'Fitomboana miiba be',
+
+'exif-contrast-0' => 'Tsotra',
+'exif-contrast-1' => 'Kely',
+'exif-contrast-2' => 'Ambony',
+
+'exif-saturation-0' => 'Tsotra',
+'exif-saturation-1' => 'Ambany',
+'exif-saturation-2' => 'Ambony',
+
+'exif-sharpness-0' => 'Tsotra',
+'exif-sharpness-1' => 'Malefaka',
+
+'exif-subjectdistancerange-0' => 'Tsy fantatra',
 'exif-subjectdistancerange-1' => 'Makrô',
+'exif-subjectdistancerange-2' => 'Fijerena akaiky',
+'exif-subjectdistancerange-3' => 'Fijerena lavitra',
 
 # Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
 'exif-gpslatitude-n' => 'Avaratra',
@@ -3306,9 +3374,57 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
 'exif-gpsspeed-m' => "Maily isak'ora",
 'exif-gpsspeed-n' => 'Knot',
 
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometatra',
+'exif-gpsdestdistance-m' => 'Mile',
+'exif-gpsdestdistance-n' => 'Mile naotika',
+
+'exif-gpsdop-excellent' => 'Tena tsara ($1)',
+'exif-gpsdop-good' => 'Tsara ($1)',
+'exif-gpsdop-moderate' => 'Eo ho eo ihany ($1)',
+'exif-gpsdop-fair' => 'Tsara ihany ($1)',
+'exif-gpsdop-poor' => 'Kely ($1)',
+
+'exif-objectcycle-a' => 'Maraina ihany',
+'exif-objectcycle-p' => 'Hariva ihany',
+'exif-objectcycle-b' => 'Sady maraina no hariva',
+
 # Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
+'exif-gpsdirection-t' => 'Tena avaratra',
 'exif-gpsdirection-m' => "Avaratra arak'andriamby",
 
+'exif-dc-contributor' => 'Mpandray anjara',
+'exif-dc-date' => 'Daty',
+'exif-dc-publisher' => 'Mpamoaka',
+'exif-dc-rights' => 'Zo',
+'exif-dc-source' => 'Haino aman-jery niaviana',
+'exif-dc-type' => 'Karazana baino aman-jery',
+
+'exif-rating-rejected' => 'Nolavina',
+
+'exif-isospeedratings-overflow' => 'Mahery ny 65535',
+
+'exif-iimcategory-ace' => 'Kanto, kolontsaina ary fialam-boly',
+'exif-iimcategory-clj' => 'Heloka aman-jo',
+'exif-iimcategory-dis' => 'Voina aman-doza',
+'exif-iimcategory-fin' => 'Toe-karena',
+'exif-iimcategory-edu' => 'Fanabeazana',
+'exif-iimcategory-evn' => 'Tontolo iainana',
+'exif-iimcategory-hth' => 'Fahasalamana',
+'exif-iimcategory-lab' => 'Asa',
+'exif-iimcategory-lif' => 'Fomba fiainana sy fialam-boly',
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Finoana',
+'exif-iimcategory-sci' => 'Siansa sy teknôlôjia',
+'exif-iimcategory-soi' => 'Olana ara-tsosialy',
+'exif-iimcategory-spo' => 'Fanatanjahan-tena',
+'exif-iimcategory-war' => 'Ady, tsy fandriampahalemana',
+'exif-iimcategory-wea' => "Toetr'andro",
+
+'exif-urgency-normal' => 'Tsotra ($1)',
+'exif-urgency-low' => 'Ambany ($1)',
+'exif-urgency-high' => 'Ambony ($1)',
+
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'rehetra',
 'namespacesall' => 'rehetra',
@@ -3367,6 +3483,7 @@ Azafady hamafiso fa tena irinao averina hoforonina tokoa ity lahatsoratra ity.",
 'confirm-purge-top' => "Fafana ve ny cache-n'ity pejy ity?",
 
 # action=watch/unwatch
+'confirm-watch-button' => 'OK',
 'confirm-watch-top' => 'Hanaraka ity pejy ity?',
 'confirm-unwatch-button' => 'OK',
 'confirm-unwatch-top' => "Hanala ity pejy ity amin'ny lisitry ny pejy arahinao?",
@@ -3439,8 +3556,8 @@ Azonao atao ihany koa ny [[Special:EditWatchlist/raw|manova ilay lisitra amin'ny
 'version-variables' => 'Miova',
 'version-other' => 'Samihafa',
 'version-hook-subscribedby' => "Nalefan'i",
-'version-version' => '(Santiôna $1)',
-'version-license' => 'Lisansy',
+'version-version' => '($1)',
+'version-license' => 'Lisansa Mediawiki',
 'version-poweredby-others' => 'hafa',
 'version-software' => 'Rindrankahy voapetraka',
 'version-software-product' => 'Vokatra',
@@ -3528,7 +3645,13 @@ Azonao atao ihany koa ny [[Special:EditWatchlist/raw|manova ilay lisitra amin'ny
 
 # New logging system
 'logentry-delete-delete' => "nofafan'i $1 ny pejy $3",
-'logentry-suppress-delete' => "nofafan'i $1 ny pejy $3",
+'logentry-suppress-delete' => "{{GENDER:$2|nofafan'i}} $1 ny pejy $3",
+'revdelete-content-hid' => 'votoatiny nafenina',
+'revdelete-summary-hid' => 'ambangovangom-panovana nafenina',
+'revdelete-uname-hid' => 'anaram-pikambana nafenina',
+'revdelete-content-unhid' => 'votoatiny naseho',
+'revdelete-summary-unhid' => 'ambangovangom-panovana naseho',
+'revdelete-uname-unhid' => 'anaram-pikambana naseho',
 'revdelete-restricted' => "nametraka fanerena ho an'ny mpandrindra",
 'revdelete-unrestricted' => "fanerena nesorina tamin'ny mpandrindra",
 'logentry-move-move' => "nanova ny anaran'i $3 ho $4 i $1",
@@ -3552,8 +3675,16 @@ Azonao atao ihany koa ny [[Special:EditWatchlist/raw|manova ilay lisitra amin'ny
 'feedback-error3' => "Hadisoana: Tsy nisy valiny avy amin'ny API",
 'feedback-thanks' => "Misaotra! lanefa tany amin'ilay pejy ''[$2 $1]'' ilay fanehoan-kevitrao.",
 'feedback-close' => 'Vita',
+'feedback-bugnew' => 'Efa nomariniko. Hitory baogy iray',
+
+# Search suggestions
+'searchsuggest-search' => 'Karohy',
+'searchsuggest-containing' => 'misy...',
 
 # API errors
+'api-error-badaccess-groups' => "Tsy afaka mampiditra rakitra eto amin'ity wiki ity ianao.",
+'api-error-badtoken' => 'Hadisoana anaty : "token" diso.',
+'api-error-copyuploaddisabled' => "Tsy avela atao eto amin'ity lohamilina ity ny fampidiran-drakitra amin'ny alalan'ny URL.",
 'api-error-empty-file' => 'Tsy misy na inona na inna ilay rakitra nalefanao.',
 'api-error-emptypage' => 'Tsy azo atao ny mamorona pejy vaovao tsy misy votoatiny.',
 'api-error-fetchfileerror' => 'Hadisoana naaty : misy hadisoana nitranga teo am-pangalana ilay rakitra.',
index 7335319..7ab865d 100644 (file)
@@ -325,7 +325,6 @@ $messages = array(
 'vector-action-protect' => 'Linduangkan',
 'vector-action-undelete' => 'Pambatalan pangapuihan',
 'vector-action-unprotect' => 'Tuka palinduangan',
-'vector-simplesearch-preference' => 'Aktipan kotak pancarian sadarano (hanyo kulik Vector)',
 'vector-view-create' => 'Buek',
 'vector-view-edit' => 'Suntiang',
 'vector-view-history' => 'Riwayaik',
index efdd7fc..840430a 100644 (file)
@@ -905,6 +905,9 @@ $2',
 'suspicious-userlogout' => 'Вашето барање за одјава е одбиено бидејќи се чини дека е испратено од расипан прелистувач или кеширачки застапник (proxy).',
 'createacct-another-realname-tip' => 'Вистинското име е незадолжително.
 Доколку изберете да го внесете, тоа може да се искористи за оддавање на заслуги за Вашата работа.',
+'pt-login' => 'Најава',
+'pt-createaccount' => 'Направи сметка',
+'pt-userlogout' => 'Одјава',
 
 # Email sending
 'php-mail-error-unknown' => 'Непозната грешка во функцијата mail() на PHP',
@@ -913,8 +916,7 @@ $2',
 
 # Change password dialog
 'changepassword' => 'Смени лозинка',
-'resetpass_announce' => 'Најавени сте со привремена лозинка пратена по е-пошта.
-За да го завршите пријавувањето, мора да поставите нова лозинка овде:',
+'resetpass_announce' => 'За да го завршите пријавувањето, мора да зададете нова лозинка.',
 'resetpass_text' => '<!-- Тука внесете текст -->',
 'resetpass_header' => 'Промена на корисничка лозинка',
 'oldpassword' => 'Стара лозинка:',
@@ -930,8 +932,13 @@ $2',
 'resetpass-submit-cancel' => 'Откажи',
 'resetpass-wrong-oldpass' => 'Погрешна привремена или тековна лозинка.
 Можеби веќе ја имате успешно променето вашата лизинка или сте побарале нова привремена лозинка.',
+'resetpass-recycled' => 'Задајте друга лозинка, поинаква од сегашната.',
+'resetpass-temp-emailed' => 'Се највивте со привремен код што ви го дадовме по е-пошта.
+За да ја довршите најавата, ќе мора тука да зададете нова лозинка:',
 'resetpass-temp-password' => 'Привремена лозинка:',
 'resetpass-abort-generic' => 'Смената на лозинката е откажана од додаток.',
+'resetpass-expired' => 'Лозинката ви е истечена. Задајте нова лозинка за да се најавите.',
+'resetpass-expired-soft' => 'Лозинката ви е истечена и ќе мора да зададете нова. Изберете лозинка сега, или пак откажете го за да ја зададете подоцна.',
 
 # Special:PasswordReset
 'passwordreset' => 'Менување на лозинка',
@@ -1228,7 +1235,7 @@ $2
 Некои шаблони нема да бидат вклучени.",
 'post-expand-template-inclusion-category' => 'Страници каде што големината на вклучените шаблони е пречекорена',
 'post-expand-template-argument-warning' => "'''Предупредување:''' Оваа страница содржи најмалку еден шаблонски аргумент кој е со преголема должина.
-Таквите аргументи ќе бидат изземени при парсирањето.",
+Таквите аргументи ќе бидат изземени при расчленувањето.",
 'post-expand-template-argument-category' => 'Страници кои содржат изземени аргументи на шаблони',
 'parser-template-loop-warning' => 'Пронајдена е јамка во шаблонот: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Пречекорена е границата на длабочината на рекурзијата во шаблонот ($1)',
@@ -1457,7 +1464,7 @@ $1",
 'searchprofile-images-tooltip' => 'Пребарување на податотеки',
 'searchprofile-everything-tooltip' => 'Пребарување по сета содржина (вклучувајќи страници за разговор)',
 'searchprofile-advanced-tooltip' => 'Пребарување во именски простори по избор',
-'search-result-size' => '$1 ({{PLURAL:$2|1 збор|$2 збора}})',
+'search-result-size' => '$1 ({{PLURAL:$2|еден збор|$2 збора}})',
 'search-result-category-size' => '{{PLURAL:$1|1 член|$1 члена}} ({{PLURAL:$2|1 поткатегорија|$2 поткатегории}}, {{PLURAL:$3|1 податотека|$3 податотеки}})',
 'search-result-score' => 'Релевантност: $1%',
 'search-redirect' => '(пренасочување $1)',
@@ -1797,11 +1804,23 @@ $1",
 'rcnotefrom' => 'Подолу се промените од <b>$2</b> (се прикажуваат до <b>$1</b>).',
 'rclistfrom' => 'Прикажи нови промени почнувајќи од $1',
 'rcshowhideminor' => '$1 ситни промени',
+'rcshowhideminor-show' => 'Прикажи',
+'rcshowhideminor-hide' => 'Скриј',
 'rcshowhidebots' => '$1 ботови',
+'rcshowhidebots-show' => 'Прикажи',
+'rcshowhidebots-hide' => 'Скриј',
 'rcshowhideliu' => '$1 најавени корисници',
+'rcshowhideliu-show' => 'Прикажи',
+'rcshowhideliu-hide' => 'Скриј',
 'rcshowhideanons' => '$1 анонимни корисници',
+'rcshowhideanons-show' => 'Прикажи',
+'rcshowhideanons-hide' => 'Скриј',
 'rcshowhidepatr' => '$1 проверени уредувања',
+'rcshowhidepatr-show' => 'Прикажи',
+'rcshowhidepatr-hide' => 'Скриј',
 'rcshowhidemine' => '$1 мои уредувања',
+'rcshowhidemine-show' => 'Прикажи',
+'rcshowhidemine-hide' => 'Скриј',
 'rclinks' => 'Прикажи скорешни $1 промени во последните $2 дена<br />$3',
 'diff' => 'разл',
 'hist' => 'истор',
@@ -1933,6 +1952,7 @@ $1",
 'php-uploaddisabledtext' => 'Подигањето на податотеки е оневозможено во PHP. 
 Проверете го нагодувањето file_uploads.',
 'uploadscripted' => 'Податотеката содржи HTML-код или сценарио што може погрешно да се протолкува во прелистувачот.',
+'uploadinvalidxml' => 'Не можев да го расчленам XML-от што се наоѓа во подигнатата податотека.',
 'uploadvirus' => 'Оваа податотека содржи вирус! Повеќе подробности: $1',
 'uploadjava' => 'Податотеката е од типот ZIP што содржи податотека со наставка .class за Java.
 Подигањето на податотеки за Java не е дозволено, бидејќи со нив можат да се заобиколуваат безбедносните ограничувања.',
@@ -2351,7 +2371,7 @@ $1',
 'booksources' => 'Печатени извори',
 'booksources-search-legend' => 'Пребарување на извори за книга',
 'booksources-isbn' => 'ISBN:',
-'booksources-go' => 'Ð\9eди',
+'booksources-go' => 'Ð\9dаÑ\98ди',
 'booksources-text' => 'Ова е список на врски кон други мрежни места кои продаваат нови и користени книги, и тие може
 да имаат повеќе информации за книгите што ги баравте:',
 'booksources-invalid-isbn' => 'Наведениот ISBN се чини неправилен. Проверете да не настанала некоја грешка при копирањето од изворот.',
@@ -3136,7 +3156,7 @@ $2',
 Податотеката е само делумно подигната.',
 'importuploaderrortemp' => 'Неуспешно подигање на увозна податотека.
 Проблеми со привремена папка за податотеки.',
-'import-parse-failure' => 'Ð\9fогÑ\80еÑ\88но XML Ð¿Ð°Ñ\80Ñ\81иÑ\80аÑ\9aе',
+'import-parse-failure' => 'Ð\93Ñ\80еÑ\88ка Ð²Ð¾ Ñ\80аÑ\81Ñ\87ленÑ\83ваÑ\9aеÑ\82о Ð¿Ñ\80и Ñ\83возоÑ\82 Ð½Ð° XML',
 'import-noarticle' => 'Нема страница за увоз!',
 'import-nonewrevisions' => 'Не увезов ниедна ревизија (сите се веќе присутни или изоставени поради грешки)',
 'xml-error-string' => '$1 во ред $2, колона $3 (бајт $4): $5',
@@ -3391,13 +3411,13 @@ $1',
 'file-info' => 'големина: $1, MIME-тип: $2',
 'file-info-size' => '$1 × $2 пиксели, големина: $3, MIME-тип: $4',
 'file-info-size-pages' => '$1 × $2 пиксели, големина: $3, MIME-тип: $4, $5 {{PLURAL:$5|страница|страници}}',
-'file-nohires' => 'Не е достапна поголема резолуција.',
+'file-nohires' => 'Нема верзија со поголема разложеност.',
 'svg-long-desc' => 'SVG податотека, номинално $1 × $2 пиксели, големина: $3',
 'svg-long-desc-animated' => 'Анимирана SVG-податотека, номинално: $1 × $2 пиксели, големина: $3',
 'svg-long-error' => 'Неважечка SVG-податотека: $1',
 'show-big-image' => 'Изворна податотека',
 'show-big-image-preview' => 'Големина на овој преглед: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Ð\94Ñ\80Ñ\83га Ñ\80езолÑ\83Ñ\86иÑ\98а|Ð\94Ñ\80Ñ\83ги Ñ\80езолÑ\83Ñ\86ии}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|Ð\94Ñ\80Ñ\83га Ñ\80азложеноÑ\81Ñ\82\94Ñ\80Ñ\83ги Ñ\80азложеноÑ\81Ñ\82и}}: $1.',
 'show-big-image-size' => '$1 × $2 пиксели',
 'file-info-gif-looped' => 'кружно',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|кадар|кадри}}',
@@ -3405,7 +3425,7 @@ $1',
 'file-info-png-repeat' => 'пуштено {{PLURAL:$1|еднаш|$1 пати}}',
 'file-info-png-frames' => '$1 {{PLURAL:$1|кадар|кадри}}',
 'file-no-thumb-animation' => "'''Напомена: Поради технички ограничувања, минијатурите на оваа податотека нема да се анимираат.'''",
-'file-no-thumb-animation-gif' => "'''Ð\9dапомена: Ð\9fоÑ\80ади Ñ\82еÑ\85ниÑ\87ки Ð¾Ð³Ñ\80аниÑ\87Ñ\83ваÑ\9aа, Ð¼Ð¸Ð½Ð¸Ñ\98аÑ\82Ñ\83Ñ\80иÑ\82е Ð½Ð° GIF-Ñ\81лики Ñ\81о Ð²Ð¸Ñ\81ока Ñ\80езолÑ\83Ñ\86иÑ\98а како оваа нема да се анимираат.'''",
+'file-no-thumb-animation-gif' => "'''Ð\9dапомена: Ð\9fоÑ\80ади Ñ\82еÑ\85ниÑ\87ки Ð¾Ð³Ñ\80аниÑ\87Ñ\83ваÑ\9aа, Ð¼Ð¸Ð½Ð¸Ñ\98аÑ\82Ñ\83Ñ\80иÑ\82е Ð½Ð° GIF-Ñ\81лики Ñ\81о Ð²Ð¸Ñ\81ока Ñ\80азложеноÑ\81Ñ\82 како оваа нема да се анимираат.'''",
 
 # Special:NewFiles
 'newimages' => 'Галерија на нови податотеки',
@@ -3530,8 +3550,8 @@ Variants for Chinese language
 'exif-planarconfiguration' => 'Распоред на податоците',
 'exif-ycbcrsubsampling' => 'Однос на величината на Y спрема C',
 'exif-ycbcrpositioning' => 'Положби на Y и C',
-'exif-xresolution' => 'ХоÑ\80изонÑ\82ална Ñ\80езолÑ\83Ñ\86иÑ\98а',
-'exif-yresolution' => 'Ð\92еÑ\80Ñ\82икална Ñ\80езолÑ\83Ñ\86иÑ\98а',
+'exif-xresolution' => 'ХоÑ\80изонÑ\82ална Ñ\80азложеноÑ\81Ñ\82',
+'exif-yresolution' => 'Ð\92еÑ\80Ñ\82икална Ñ\80азложеноÑ\81Ñ\82',
 'exif-stripoffsets' => 'Положба на податоците',
 'exif-rowsperstrip' => 'Број на редови по блок',
 'exif-stripbytecounts' => 'Бајти по набиен блок',
@@ -3582,9 +3602,9 @@ Variants for Chinese language
 'exif-focallength-format' => '$1 мм',
 'exif-subjectarea' => 'Положба и површина на објектот',
 'exif-flashenergy' => 'Енергија на блицот',
-'exif-focalplanexresolution' => 'РезолÑ\83Ñ\86иÑ\98а Ð½Ð° Ñ\84окÑ\83Ñ\81наÑ\82а Ñ\80амнина  X',
-'exif-focalplaneyresolution' => 'РезолÑ\83Ñ\86иÑ\98а Ð½Ð° Ñ\84окÑ\83Ñ\81ната рамнина Y',
-'exif-focalplaneresolutionunit' => 'Ð\95диниÑ\86а Ð·Ð° Ñ\80езолÑ\83Ñ\86иÑ\98а Ð½Ð° Ñ\84окÑ\83Ñ\81ната рамнина',
+'exif-focalplanexresolution' => 'РазложеноÑ\81Ñ\82 Ð½Ð° Ð¶Ð°Ñ\80иÑ\88наÑ\82а Ñ\80амнина X',
+'exif-focalplaneyresolution' => 'РазложеноÑ\81Ñ\82 Ð½Ð° Ð¶Ð°Ñ\80иÑ\88ната рамнина Y',
+'exif-focalplaneresolutionunit' => 'Ð\95диниÑ\86а Ð·Ð° Ñ\80азложеноÑ\81Ñ\82 Ð½Ð° Ð¶Ð°Ñ\80иÑ\88ната рамнина',
 'exif-subjectlocation' => 'Положба на субјектот',
 'exif-exposureindex' => 'Индекс на експозицијата',
 'exif-sensingmethod' => 'Метод на сензорот',
@@ -4189,7 +4209,7 @@ $5
 'version' => 'Верзија',
 'version-extensions' => 'Воспоставени додатоци',
 'version-specialpages' => 'Специјални страници',
-'version-parserhooks' => 'Ð\9fаÑ\80Ñ\81еÑ\80Ñ\81ки куки',
+'version-parserhooks' => 'РаÑ\81Ñ\87ленÑ\83ваÑ\87ки куки',
 'version-variables' => 'Променливи',
 'version-antispam' => 'Спречување на спам',
 'version-skins' => 'Рува',
@@ -4197,8 +4217,8 @@ $5
 'version-other' => 'Друго',
 'version-mediahandlers' => 'Ракувачи со мултимедијални содржини',
 'version-hooks' => 'Куки',
-'version-parser-extensiontags' => 'Ознаки за парсерски додатоци',
-'version-parser-function-hooks' => 'Куки на парсерските функции',
+'version-parser-extensiontags' => 'Ознаки за расчленувачки додатоци',
+'version-parser-function-hooks' => 'Куки на расчленувачки функции',
 'version-hook-name' => 'Име на кука',
 'version-hook-subscribedby' => 'Претплатено од',
 'version-version' => '(Верзија $1)',
@@ -4458,7 +4478,7 @@ $5
 'rotate-comment' => 'Сликата е завртена за $1 {{PLURAL:$1|степен|степени}} вдесно',
 
 # Limit report
-'limitreport-title' => 'Профилни парсерски податоци:',
+'limitreport-title' => 'Профилни расчленувачки податоци:',
 'limitreport-cputime' => 'Употреба на обработувачко време',
 'limitreport-cputime-value' => '{{PLURAL:$1|една секунда|$1 секунди}}',
 'limitreport-walltime' => 'Употреба на вистинско време',
@@ -4470,12 +4490,12 @@ $5
 'limitreport-templateargumentsize' => 'Големина на аргументот во шаблонот',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|бајт|бајти}}',
 'limitreport-expansiondepth' => 'Најголема длабочина на проширувањето',
-'limitreport-expensivefunctioncount' => 'Бр. на сложени парсерски функции',
+'limitreport-expensivefunctioncount' => 'Бр. на сложени расчленувачки функции',
 
 # Special:ExpandTemplates
 'expandtemplates' => 'Прошири шаблони',
 'expand_templates_intro' => 'Оваа специјална страница зема еден текст и рекурзивно ги проширува сите шаблони во него.
-Исто така проширува и парсерски функции како
+Исто така проширува и расчленувачки функции како
 <code><nowiki>{{</nowiki>#language:…}}</code> и променливи како
 <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
 Всушност, го проширува сето она што стои во двојни аглести загради.',
@@ -4487,10 +4507,8 @@ $5
 'expand_templates_ok' => 'ОК',
 'expand_templates_remove_comments' => 'Отстрани коментари',
 'expand_templates_remove_nowiki' => 'Притаи <nowiki> ознаки во резултатот',
-'expand_templates_generate_xml' => 'Прикажи XML дрво на парсирање',
+'expand_templates_generate_xml' => 'Прикажи XML-дрво на расчленувањето',
 'expand_templates_generate_rawhtml' => 'Прикажувај сиров HTML',
 'expand_templates_preview' => 'Преглед',
 
-# Unknown messages
-'uploadinvalidxml' => 'Не можев да го парсирам XML-от што се наоѓа во подигнатата податотека.',
 );
index 7ce622f..2903f69 100644 (file)
@@ -383,7 +383,7 @@ $messages = array(
 'tog-uselivepreview' => 'തത്സമയ പ്രിവ്യൂ ഉപയോഗപ്പെടുത്തുക (പരീക്ഷണാടിസ്ഥാനം)',
 'tog-forceeditsummary' => 'തിരുത്തുകളുടെ ചുരുക്കം നൽകിയില്ലെങ്കിൽ എന്നെ ഓർമ്മിപ്പിക്കുക',
 'tog-watchlisthideown' => 'ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽനിന്ന് എന്റെ തിരുത്തുകൾ മറയ്ക്കുക',
-'tog-watchlisthidebots' => 'à´\9eാൻ à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95യിൽനിനàµ\8dà´¨àµ\8d à´¯à´¨àµ\8dà´¤àµ\8dà´°à´\99àµ\8dà´\99ൾ à´µà´°àµ\81à´¤àµ\8dതിയ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95ൾ à´®à´±à´¯àµ\8dà´\95àµ\8dà´\95àµ\81à´\95',
+'tog-watchlisthidebots' => 'ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽനിന്ന് യന്ത്രങ്ങൾ വരുത്തിയ തിരുത്തുകൾ മറയ്ക്കുക',
 'tog-watchlisthideminor' => 'ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽനിന്ന് ചെറുതിരുത്തുകൾ മറയ്ക്കുക',
 'tog-watchlisthideliu' => 'ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളിലെ മാറ്റങ്ങളിൽ നിന്നും ലോഗിൻ ചെയ്തിട്ടുള്ളവരുടെ തിരുത്തുകൾ മറയ്ക്കുക',
 'tog-watchlisthideanons' => 'ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളിലെ മാറ്റങ്ങളിൽ നിന്നും അജ്ഞാത ഉപയോക്താക്കളുടെ തിരുത്തുകൾ മറയ്ക്കുക',
@@ -799,7 +799,7 @@ $2',
 'gotaccount' => "താങ്കൾക്ക് അംഗത്വമുണ്ടോ? '''$1'''.",
 'gotaccountlink' => 'പ്രവേശിക്കുക',
 'userlogin-resetlink' => 'താങ്കളുടെ ലോഗിൻ വിവരങ്ങൾ മറന്നു പോയോ?',
-'userlogin-resetpassword-link' => 'താà´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 രഹസ്യവാക്ക് മറന്നോ?',
+'userlogin-resetpassword-link' => 'താà´\99àµ\8dà´\95ൾ രഹസ്യവാക്ക് മറന്നോ?',
 'helplogin-url' => 'Help:പ്രവേശനം',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|പ്രവേശന സഹായം]]',
 'userlogin-loggedin' => 'താങ്കൾ ഇപ്പോൾ തന്നെ {{GENDER:$1|$1}} ആയി പ്രവേശിച്ചിരിക്കുന്നു.
@@ -886,6 +886,9 @@ $2',
 'createacct-another-realname-tip' => 'താങ്കളുടെ യഥാർത്ഥ പേര്‌ നൽകണമെന്നു നിർബന്ധമില്ല.
 
 എങ്കിലും അങ്ങനെ ചെയ്താൽ, ഉപയോക്താക്കൾക്ക് അവരരവരുടെ പേരിൽ തന്നെ തങ്ങളുടെ സൃഷ്ടിക്ക് കടപ്പാട് ലഭിക്കുന്നതാണ്.',
+'pt-login' => 'പ്രവേശിക്കുക',
+'pt-createaccount' => 'അംഗത്വമെടുക്കുക',
+'pt-userlogout' => 'ലോഗൗട്ട്',
 
 # Email sending
 'php-mail-error-unknown' => 'പി.എച്ച്.പി.യുടെ main() ഫങ്ഷനിൽ അപരിചിതമായ പിഴവ്',
@@ -894,7 +897,7 @@ $2',
 
 # Change password dialog
 'changepassword' => 'രഹസ്യവാക്ക് മാറ്റുക',
-'resetpass_announce' => 'താà´\99àµ\8dà´\95ൾà´\95àµ\8dà´\95àµ\8d à´\87à´®àµ\86യിൽ à´\86യി à´\95à´¿à´\9fàµ\8dà´\9fà´¿à´¯ à´¤à´¾àµ½à´\95àµ\8dà´\95ാലിà´\95 à´\95àµ\8bà´¡àµ\8d à´\89പയàµ\8bà´\97à´¿à´\9aàµ\8dà´\9aാണàµ\8dâ\80\8c à´\87à´ªàµ\8dà´ªàµ\8bൾ à´²àµ\8bà´\97ിൻ à´\9aàµ\86à´¯àµ\8dതിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dനതàµ\81àµ\8dâ\80\8c. à´²àµ\8bà´\97ിൻ à´ªàµ\8dà´°à´\95àµ\8dà´°à´¿à´¯ à´ªàµ\82ർതàµ\8dതിയാà´\95àµ\81വാൻ à´ªàµ\81തിയàµ\8aà´°àµ\81 à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´\87വിà´\9fàµ\86 à´\95àµ\8aà´\9fàµ\81à´\95àµ\8dà´\95àµ\81à´\95:',
+'resetpass_announce' => 'à´ªàµ\8dà´°à´µàµ\87ശിà´\95àµ\8dà´\95ൽ à´ªàµ\82ർതàµ\8dതിയാà´\95àµ\8dà´\95ാൻ, à´ªàµ\81തിയàµ\8aà´°àµ\81 à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´¸à´\9càµ\8dà´\9cമാà´\95àµ\8dà´\95ിയിരിà´\95àµ\8dà´\95à´£à´\82.',
 'resetpass_text' => '<!-- എഴുത്ത് ഇവിടെ ചേർക്കുക -->',
 'resetpass_header' => 'അംഗത്വത്തിന്റെ രഹസ്യവാക്ക് മാറ്റുക',
 'oldpassword' => 'പഴയ രഹസ്യവാക്ക്:',
@@ -910,8 +913,13 @@ $2',
 'resetpass-submit-cancel' => 'റദ്ദാക്കുക',
 'resetpass-wrong-oldpass' => 'താത്കാലികമായി ലഭിച്ച അല്ലെങ്കിൽ നിലവിലുള്ളതായി നൽകിയ രഹസ്യവാക്ക് അസാധുവാണ്.
 താങ്കൾ രഹസ്യവാക്ക് വിജയകരമായി മാറ്റിയിട്ടുണ്ടാകാം അല്ലെങ്കിൽ പുതിയ താത്കാലിക രഹസ്യവാക്ക് അഭ്യർത്ഥിച്ചിട്ടുണ്ടാകാം.',
+'resetpass-recycled' => 'താങ്കളുടെ രഹസ്യവാക്ക് നിലവിലുള്ളതിൽ നിന്നും വ്യത്യസ്തമായതാക്കുക.',
+'resetpass-temp-emailed' => 'ഇമെയിൽ വഴി ലഭിച്ച താൽക്കാലിക കോഡ് ഉപയോഗിച്ചാണ് താങ്കൾ പ്രവേശിച്ചിരിക്കുന്നത്.
+പ്രവേശനം പൂർത്തിയാക്കാൻ, ഇവിടെ പുതിയ രഹസ്യവാക്ക് സജ്ജമാക്കുക:',
 'resetpass-temp-password' => 'താത്കാലിക രഹസ്യവാക്ക്:',
 'resetpass-abort-generic' => 'രഹസ്യവാക്ക് മാറ്റുന്നത് ഒരു അനുബന്ധം തടഞ്ഞിരിക്കുന്നു.',
+'resetpass-expired' => 'താങ്കളുടെ രഹസ്യവാക്ക് കാലഹരണപ്പെട്ടിരിക്കുന്നു. പ്രവേശിക്കാനായി പുതിയ രഹസ്യവാക്ക് സജ്ജമാക്കുക.',
+'resetpass-expired-soft' => 'താങ്കളുടെ രഹസ്യവാക്ക് കാലഹരണപ്പെട്ടിരിക്കുന്നതിനാൽ പുനഃസജ്ജീകരിക്കേണ്ടതുണ്ട്. ഇപ്പോൾ തന്നെ പുതിയ രഹസ്യവാക്ക് തിരഞ്ഞെടുക്കുക അല്ലെങ്കിൽ പിന്നീട് പുനഃസജ്ജീകരിക്കാനായി റദ്ദാക്കുക ഞെക്കുക.',
 
 # Special:PasswordReset
 'passwordreset' => 'രഹസ്യവാക്ക് പുനഃക്രമീകരിക്കുക',
@@ -1750,11 +1758,23 @@ $1",
 'rcnotefrom' => '<b>$2</b> മുതലുള്ള മാറ്റങ്ങൾ (<b>$1</b> എണ്ണം വരെ കാണാം).',
 'rclistfrom' => '$1 മുതലുള്ള മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക',
 'rcshowhideminor' => 'ചെറുതിരുത്തലുകൾ $1',
+'rcshowhideminor-show' => 'പ്രദർശിപ്പിക്കുക',
+'rcshowhideminor-hide' => 'മറയ്ക്കുക',
 'rcshowhidebots' => 'യന്ത്രങ്ങളെ $1',
+'rcshowhidebots-show' => 'പ്രദർശിപ്പിക്കുക',
+'rcshowhidebots-hide' => 'മറയ്ക്കുക',
 'rcshowhideliu' => 'അംഗത്വമെടുത്തിട്ടുള്ളവരെ $1',
+'rcshowhideliu-show' => 'പ്രദർശിപ്പിക്കുക',
+'rcshowhideliu-hide' => 'മറയ്ക്കുക',
 'rcshowhideanons' => 'അജ്ഞാത ഉപയോക്താക്കളെ $1',
+'rcshowhideanons-show' => 'പ്രദർശിപ്പിക്കുക',
+'rcshowhideanons-hide' => 'മറയ്ക്കുക',
 'rcshowhidepatr' => 'റോന്തു ചുറ്റിയ മാറ്റങ്ങൾ $1',
+'rcshowhidepatr-show' => 'പ്രദർശിപ്പിക്കുക',
+'rcshowhidepatr-hide' => 'മറയ്ക്കുക',
 'rcshowhidemine' => 'എന്റെ തിരുത്തലുകൾ $1',
+'rcshowhidemine-show' => 'പ്രദർശിപ്പിക്കുക',
+'rcshowhidemine-hide' => 'മറയ്ക്കുക',
 'rclinks' => 'കഴിഞ്ഞ $2 ദിവസങ്ങൾക്കുള്ളിലുണ്ടായ $1 മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക<br />$3',
 'diff' => 'മാറ്റം',
 'hist' => 'നാൾവഴി',
@@ -1884,6 +1904,7 @@ $2 {{PLURAL:$3|തരത്തിലുള്ള പ്രമാണം|തരങ
 'php-uploaddisabledtext' => 'പി.എച്ച്.പി.യിൽ പ്രമാണ അപ്‌‌ലോഡുകൾ സാദ്ധ്യമല്ലാതാക്കിയിരിക്കുന്നു.
 ദയവായി file_uploads ക്രമീകരണങ്ങൾ പരിശോധിക്കുക.',
 'uploadscripted' => 'ഈ പ്രമാണത്തിൽ വെബ് ബ്രൗസർ തെറ്റായി വ്യാഖ്യാനിച്ചേക്കാവുന്ന എച്ച്.റ്റി.എം.എൽ. അല്ലെങ്കിൽ സ്ക്രിപ്റ്റ് കോഡ് ഉണ്ട്.',
+'uploadinvalidxml' => 'അപ്‌ലോഡ് ചെയ്ത പ്രമാണത്തിലെ എക്സ്.എം.എൽ. പാഴ്സ് ചെയ്യാൻ കഴിയില്ല.',
 'uploadvirus' => 'പ്രമാണത്തിൽ വൈറസുണ്ട്! വിശദാംശങ്ങൾ: $1',
 'uploadjava' => 'ഇത്, ജാവ .class പ്രമാണങ്ങൾ അടക്കം ചെയ്തിട്ടുള്ള ഒരു സിപ് (ZIP) പ്രമാണം ആണ്.
 സുരക്ഷാതടയലുകൾ മറികടക്കാൻ കഴിയുമെന്ന കാരണത്താൽ ജാവ പ്രമാണങ്ങൾ അപ്‌ലോഡ് ചെയ്യുന്നത് അനുവദിച്ചിട്ടില്ല.',
@@ -2237,6 +2258,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'deadendpagestext' => 'താഴെക്കാണുന്ന താളുകളിൽനിന്ന് {{SITENAME}} സം‌രംഭത്തിലെ മറ്റൊരു താളിലേയ്ക്കും കണ്ണി ചേർത്തിട്ടില്ല.',
 'protectedpages' => 'സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്ന താളുകൾ',
 'protectedpages-indef' => 'അനന്തകാലത്തേയ്ക്ക് സംരക്ഷിക്കപ്പെട്ടവ മാത്രം',
+'protectedpages-summary' => 'സംരക്ഷിക്കപ്പെട്ടിട്ടുള്ളതും എന്നാൽ നിലവിലുള്ളതുമായ താളുകളുടെ പട്ടിക ഈ താളിൽ കാണാം. സൃഷ്ടിക്കുന്നതിൽ നിന്നും സംരക്ഷിക്കപ്പെട്ടിട്ടുള്ള തലക്കെട്ടുകൾക്കായി [[{{#special:ProtectedTitles}}]] കാണുക.',
 'protectedpages-cascade' => 'നിർഝരിത സംരക്ഷണങ്ങൾ മാത്രം',
 'protectedpages-noredirect' => 'തിരിച്ചുവിടലുകൾ മറയ്ക്കുക',
 'protectedpagesempty' => 'ഈ ചരങ്ങൾ ഉപയോഗിച്ചു താളുകൾ ഒന്നും തന്നെ സം‌രക്ഷിക്കപ്പെട്ടിട്ടില്ല.',
@@ -2249,6 +2271,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'protectedpages-unknown-timestamp' => 'അജ്ഞാതം',
 'protectedpages-unknown-performer' => 'അജ്ഞാത ഉപയോക്താവ്',
 'protectedtitles' => 'സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്ന തലക്കെട്ടുകൾ',
+'protectedtitles-summary' => 'സൃഷ്ടിക്കുന്നതിൽ നിന്നും സംരക്ഷിക്കപ്പെട്ടിട്ടുള്ള താളുകളുടെ പട്ടിക ഇവിടെ കാണാം. സംരക്ഷിക്കപ്പെട്ടിട്ടുള്ളതും എന്നാൽ നിലവിലുള്ളതുമായ താളുകൾക്കായി [[{{#special:ProtectedPages}}]] കാണുക.',
 'protectedtitlesempty' => 'ഈ ചരങ്ങൾ ഉപയോഗിച്ചു തലക്കെട്ടുകൾ ഒന്നും തന്നെ സം‌രക്ഷിക്കപ്പെട്ടിട്ടില്ല.',
 'listusers' => 'ഉപയോക്താക്കളുടെ പട്ടിക',
 'listusers-editsonly' => 'തിരുത്തലുകൾ ചെയ്തിട്ടുള്ള ഉപയോക്താക്കളെ മാത്രം കാണിക്കുക',
@@ -4232,6 +4255,4 @@ $5
 'expand_templates_generate_rawhtml' => 'അസംസ്കൃത എച്ച്.റ്റി.എം.എൽ. പ്രദർശിപ്പിക്കുക',
 'expand_templates_preview' => 'എങ്ങനെയുണ്ടെന്നു കാണുക',
 
-# Unknown messages
-'uploadinvalidxml' => 'അപ്‌ലോഡ് ചെയ്ത പ്രമാണത്തിലെ എക്സ്.എം.എൽ. പാഴ്സ് ചെയ്യാൻ കഴിയില്ല.',
 );
index 78288b5..bc335b8 100644 (file)
@@ -160,15 +160,17 @@ $messages = array(
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Анги|Ангилал}}',
-'category_header' => '"$1" Ð°Ð½Ð³Ð¸Ð¹Ð½ Ð±Ò¯Ñ\80Ñ\8dлдÑ\8dÑ\85үүн',
+'category_header' => '"$1" Ð°Ð½Ð³Ð¸Ð»Ð°Ð» Ð´Ð°Ñ\85Ñ\8c Ñ\85Ñ\83Ñ\83даÑ\81нÑ\83Ñ\83д',
 'subcategories' => 'Ангийн бүлэг',
 'category-media-header' => '"$1" ангийн файл',
 'category-empty' => "''Одоогийн байдлаар энэ ангилалд хуудас, медиа файл байхгүй байна.''",
 'hidden-categories' => '{{PLURAL:$1|Нуугдсан ангилал|Нуугдсан ангиллууд}}',
 'hidden-category-category' => 'Нуугдсан ангиллууд',
-'category-subcat-count' => '{{PLURAL:$2|ЭнÑ\8d Ð±Ò¯Ð»Ñ\8dг Ð·Ó©Ð²Ñ\85өн Ð´Ð°Ñ\80ааÑ\85 Ð´Ñ\8dд Ð±Ò¯Ð»Ñ\8dгÑ\82Ñ\8dй.|ЭнÑ\8d Ð±Ò¯Ð»Ñ\8dг Ð½Ð¸Ð¹Ñ\82 $2 -ооÑ\81 {{PLURAL:$1| Ð±Ò¯Ð»Ñ\8dгÑ\82Ñ\8dй.|$1 Ð±Ò¯Ð»Ð³Ò¯Ò¯Ð´Ñ\82Ñ\8dй.}}}}',
+'category-subcat-count' => '{{PLURAL:$2|ЭнÑ\8d Ð°Ð½Ð³Ð¸Ð»Ð°Ð»Ð´ Ð´Ð°Ñ\80ааÑ\85 Ð´Ñ\8dд Ð°Ð½Ð³Ð¸Ð»Ð°Ð» Ð» Ð±Ð°Ð¹Ð½Ð°.|ЭнÑ\8d Ð°Ð½Ð³Ð¸Ð»Ð°Ð»Ð´ Ð½Ð¸Ð¹Ñ\82 $2-Ñ\81 Ð´Ð°Ñ\80ааÑ\85 $1 Ð´Ñ\8dд Ð°Ð½Ð³Ð¸Ð»Ð°Ð» Ð±Ð°Ð¹Ð½Ð°.}}',
 'category-subcat-count-limited' => 'Энэ ангилалд {{PLURAL:$1| дэд ангилал|$1-н дэд ангилалууд}} байна.',
-'category-article-count' => '{{PLURAL:$2|Энд нэг хуудас байна.|Энд $2 хуудас байна. Үүнээс $1 доор харагдаж байна.}}',
+'category-article-count' => '{{PLURAL:$2|Энд нэг хуудас байна.|Энэ ангид $2 хуудас байна.}}
+
+{{PLURAL:$2|Энэ ангилалд дараах хуудас л байна.|Энэ ангилалд нийт $2-с дараах $1 хуудас байна.}}',
 'category-article-count-limited' => 'Энэ ангилалд дараах {{PLURAL:$1|хуудас|$1 хуудаснууд}} байна.',
 'category-file-count' => '{{PLURAL:$2|Энэ ангилалд дараах файл л байна.|Энэ ангилалд нийт $2-с дараах $1 файл байна.}}',
 'category-file-count-limited' => 'Энэ ангилалд дараах {{PLURAL:$1|файл|$1 файлнууд}} байна.',
@@ -207,7 +209,7 @@ $messages = array(
 'vector-action-unprotect' => 'Хамгаалалтаа солих',
 'vector-view-create' => 'Үүсгэх',
 'vector-view-edit' => 'Засварлах',
-'vector-view-history' => 'Түүхийг үзэх',
+'vector-view-history' => 'Түүх',
 'vector-view-view' => 'Унших',
 'vector-view-viewsource' => 'Кодыг харах',
 'actions' => 'Үйлдлүүд',
@@ -221,8 +223,8 @@ $messages = array(
 'help' => 'Тусламж',
 'search' => 'Хайлт',
 'searchbutton' => 'Хайх',
-'go' => 'Явах',
-'searcharticle' => 'Явах',
+'go' => 'Үзэх',
+'searcharticle' => 'Үзэх',
 'history' => 'Хуудасны түүх',
 'history_short' => 'Түүх',
 'updatedmarker' => 'сүүлд зочилсноос хойш шинэчлэгдсэн',
@@ -236,6 +238,7 @@ $messages = array(
 'create-this-page' => 'Энэ хуудсыг үүсгэх',
 'delete' => 'Устгах',
 'deletethispage' => 'Энэ хуудсыг устга',
+'undeletethispage' => 'Энэ хуудсыг бүү устга',
 'undelete_short' => 'Устгагдсан {{PLURAL:$1|нэг засварыг|$1 засваруудыг}} сэргээх',
 'viewdeleted_short' => '{{PLURAL:$1|арилгасан засварыг|арилгасан $1 засваруудыг}} харах',
 'protect' => 'Хамгаалах',
@@ -264,7 +267,7 @@ $messages = array(
 'otherlanguages' => 'Өөр хэлээр',
 'redirectedfrom' => '($1-с чиглүүлэгдэв)',
 'redirectpagesub' => 'Хуудсыг чиглүүлэх',
-'lastmodifiedat' => 'Энэ хуудсыг хамгийн сүүлд өөрчилсөн нь $2, $1.',
+'lastmodifiedat' => 'Энэ хуудас хамгийн сүүлд $1-ы $2-д өөрчлөгдсөн.',
 'viewcount' => 'Энэ хуудсанд {{PLURAL:$1|ганцхан удаа|$1 удаа}} хандсан байна.',
 'protectedpage' => 'Хамгаалагдсан хуудас',
 'jumpto' => 'Шууд очих:',
@@ -286,7 +289,7 @@ $1',
 'copyrightpage' => '{{ns:project}}:Зохиогчийн эрх',
 'currentevents' => 'Сүүлийн үеийн мэдээ',
 'currentevents-url' => 'Project:Сүүлийн үеийн мэдээ',
-'disclaimers' => 'ТаÑ\82галзлÑ\83Ñ\83д',
+'disclaimers' => 'ТаÑ\82галзал',
 'disclaimerpage' => 'Project:Ерөнхий татгалзал',
 'edithelp' => 'Засвар хийх тухай тусламж',
 'helppage' => 'Help:Агуулга',
@@ -295,7 +298,7 @@ $1',
 'policy-url' => 'Project:Бодлого баримтлал',
 'portal' => 'Бүлгэмийн портал',
 'portal-url' => 'Project:Бүлгэмийн портал',
-'privacy' => 'Ð¥Ñ\83вийн Ð¼Ñ\8dдÑ\8dÑ\8dллийн Ñ\82алааÑ\80Ñ\85 Ð±Ð°Ñ\80имÑ\82лал',
+'privacy' => 'Ð\9dÑ\83Ñ\83Ñ\86лалÑ\8bн Ð±Ð¾Ð´Ð»Ð¾Ð³Ð¾',
 'privacypage' => 'Project:Хувийн мэдээллийн талаарх баримтлал',
 
 'badaccess' => 'Зөвшөөрлийн алдаа',
@@ -308,12 +311,12 @@ $1',
 'ok' => 'OK',
 'pagetitle' => '$1 - {{SITENAME}}',
 'retrievedfrom' => '"$1" хуудаснаас авсан',
-'youhavenewmessages' => 'Таньд $1 ($2) байна.',
+'youhavenewmessages' => '{{PLURAL:$3|Танд}} $1 ($2) байна.',
 'youhavenewmessagesfromusers' => 'Танд {{PLURAL:$3|өөр нэгэн хэрэглэгчээс |$3 хэрэглэгчээс}} $1 ирсэн байна ($2).',
-'youhavenewmessagesmanyusers' => 'Танд ($2) Ð¾Ð»Ð¾Ð½ Ñ\85Ñ\8dÑ\80Ñ\8dглÑ\8dгÑ\87идÑ\8dÑ\8dÑ\81 $1.',
+'youhavenewmessagesmanyusers' => 'Танд ($2) олон хэрэглэгчдээс $1.',
 'newmessageslinkplural' => '{{PLURAL:$1|шинэ зурвас}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|сүүлд хийгдсэн өөрчлөлт}}',
-'youhavenewmessagesmulti' => 'Таньд $1 дээр шинэ мессеж ирсэн байна',
+'youhavenewmessagesmulti' => 'Танд $1 дээр шинэ зурвас ирсэн байна',
 'editsection' => 'засварлах',
 'editold' => 'засварлах',
 'viewsourceold' => 'кодыг харах',
@@ -321,10 +324,10 @@ $1',
 'viewsourcelink' => 'кодыг харах',
 'editsectionhint' => 'Хэсгийг засварлах: $1',
 'toc' => 'Агуулга',
-'showtoc' => 'үзүүлэх',
-'hidetoc' => 'нуух',
-'collapsible-collapse' => 'Ð\91Ñ\83Ñ\83лгах',
-'collapsible-expand' => 'ТÑ\8dлэх',
+'showtoc' => 'дэлгэх',
+'hidetoc' => 'хумих',
+'collapsible-collapse' => 'Ð¥Ñ\83мих',
+'collapsible-expand' => 'Ð\94Ñ\8dлгэх',
 'thisisdeleted' => '$1-г харах эсвэл сэргээх үү?',
 'viewdeleted' => '$1-г харах уу?',
 'restorelink' => '{{PLURAL:$1|арилгасан засвар|арилгасан $1 засварууд}}',
@@ -336,7 +339,7 @@ $1',
 'page-rss-feed' => '"$1"-н RSS фийд',
 'page-atom-feed' => '"$1"-н Atom фийд',
 'feed-atom' => 'Атом',
-'red-link-title' => '$1 (хуудас бичигдээгүй байна)',
+'red-link-title' => '$1 (ийм хуудас байхгүй)',
 'sort-descending' => 'Буурахаар эрэмбэлэх',
 'sort-ascending' => 'Өсөхөөр эрэмбэлэх',
 
@@ -350,7 +353,7 @@ $1',
 'nstab-mediawiki' => 'Мэдэгдэл',
 'nstab-template' => 'Загвар',
 'nstab-help' => 'Тусламж',
-'nstab-category' => 'Анги',
+'nstab-category' => 'Ангилал',
 
 # Main script and global functions
 'nosuchaction' => 'Тийм үйлдэл байхгүй байна',
@@ -398,7 +401,7 @@ $1',
 'cannotdelete-title' => '"$1" хуудсыг устгаж чадсангүй',
 'delete-hook-aborted' => 'Хүк устгалыг зогсоолоо.
 Шалтгаан өгөгдсөнгүй.',
-'badtitle' => 'Ð\91олоÑ\85гүй Ð³Ð°Ñ\80Ñ\87иг',
+'badtitle' => 'Ð¥Ò¯Ñ\87ингүй Ñ\85Ñ\83Ñ\83даÑ\81нÑ\8b Ð½Ñ\8dÑ\80 Ð±Ð°Ð¹Ð½Ð°',
 'badtitletext' => 'Оруулсан хуудасны нэр тань хүчингүй, хоосон, эсвэл буруу холбосон интер-хэл буюу интер-викигийн нэр байна. Нэрэнд хэрэглэгдэж болохгүй тэмдэгт орсон байж болзошгүй.',
 'perfcached' => 'Дараах тоо баримт нь нөөц хуулбар учраас хуучирсан мэдээлэлтэй байж магадгүй. Дээд тал нь {{PLURAL:$1|нэг илэрц|$1 илэрцүүд}} нөөцөд бэлэн байна.',
 'perfcachedts' => 'Дараах тоо баримт нь нөөц хуулбар учраас хуучирсан мэдээлэлтэй байж магадгүй. Дээд тал нь {{PLURAL:$1|нэг илэрц|$1 илэрцүүд}} нөөцөд бэлэн байна.',
@@ -467,7 +470,7 @@ $2',
 'userlogout' => 'Гарах',
 'notloggedin' => 'Нэвтрээгүй байна',
 'userlogin-joinproject' => '{{SITENAME}}-д бүртгүүлэх',
-'nologin' => "Бүртгэлгүй юу? '''$1'''.",
+'nologin' => "Бүртгүүлж амжаагүй юу? '''$1'''.",
 'nologinlink' => 'Бүртгүүлэх',
 'createaccount' => 'Бүртгүүлэх',
 'gotaccount' => "Та бүртгэлтэй юу? '''$1'''",
@@ -637,7 +640,7 @@ $2
 'link_tip' => 'Дотоод холбоос',
 'extlink_sample' => 'http://www.example.com холбоосны нэр',
 'extlink_tip' => 'Гадны холбоос (эхэнд нь http:// бичихээ мартуузай)',
-'headline_sample' => 'Ð\93аÑ\80Ñ\87игийн Ñ\82екÑ\81Ñ\82',
+'headline_sample' => 'Гарчгийн текст',
 'headline_tip' => '2-р түвшний гарчиг',
 'nowiki_sample' => 'Энд хэлбэршүүлээгүй текстээ оруулна уу',
 'nowiki_tip' => 'Вики форматыг хэрэглэхгүй байх',
@@ -873,15 +876,15 @@ $3-н тодорхойлсон шалтгаан нь ''$2''",
 'previousrevision' => '←Хуучны засвар',
 'nextrevision' => 'Дараагийн засвар→',
 'currentrevisionlink' => 'Одоогийн засвар',
-'cur' => 'одоогийн',
+'cur' => 'одоо',
 'next' => 'дараагийн',
 'last' => 'сүүлийн',
 'page_first' => 'эхний',
 'page_last' => 'сүүлийн',
-'histlegend' => 'Өөрчлөлтүүдийг сонгох: харьцуулж үзэхийн тулд хувилбаруудын өмнөх хайрцагыг сонгож нэг бол "enter" товчлуурыг, эсвэл доорх товчлуурыг дараарай.<br />
-Тэмдэг: (одоогийн) = одоогийн засвартай харьцуулах
-(сүүлчийн) = өмнөх засвартай харьцуулах, Б = бага зэргийн засвар',
-'history-fieldset-title' => 'Түүх сөхөе',
+'histlegend' => 'Радио товчлууруудыг сонгож дарсаны дараа enter товчлуурыг, эсвэл хуудасны доод талд байгаа товчлуур дээр дарж засваруудыг хооронд нь харьцуулна уу.<br />
+
+Тайлбар: strong>({{int:cur}})</strong> = хамгийн шинэ хувилбартай харьцуулалт, <strong>({{int:last}})</strong> = өмнөх хувилбартайх харьцуулалт, <strong>{{int:minoreditletter}}</strong> = бага хэмжээний засвар',
+'history-fieldset-title' => 'Түүх сөхье',
 'history-show-deleted' => 'Зөвхөн устгагдсаныг',
 'histfirst' => 'хамгийн эхэнд',
 'histlast' => 'хамгийн шинэ',
@@ -1028,8 +1031,8 @@ $1",
 'difference-title-multipage' => '"$1", "$2" хоёр хуудасны ялгаа',
 'difference-multipage' => '(Хуудсууд хоорондын ялгаа)',
 'lineno' => '$1-р мөр:',
-'compareselectedversions' => 'Сонгосон хувилбаруудыг харьцуулах',
-'showhideselectedversions' => 'СонгоÑ\81он Ñ\85Ñ\83вилбаÑ\80Ñ\83Ñ\83дÑ\8bг Ò¯Ð·Ò¯Ò¯Ð»Ñ\8dÑ\85/нÑ\83Ñ\83х',
+'compareselectedversions' => 'Сонгосон хоёр хувилбарыг харьцуулах',
+'showhideselectedversions' => 'Ð\9eлон Ñ\85Ñ\83вилбаÑ\80Ñ\8bг Ñ\85аÑ\80Ñ\83Ñ\83лаÑ\85/болих',
 'editundo' => 'цуцлах',
 'diff-multi-manyusers' => '($2 гаруй {{PLURAL:$2|хэрэглэгчийн}} {{PLURAL:$1|дундын нэг засварыг|дундын $1 засварыг}} үзүүлсэнгүй)',
 
@@ -1357,9 +1360,9 @@ $1 тэмдэгтээс богино байх ёстой.',
 'recentchanges-feed-description' => 'Вики дахь хамгийн сүүлийн өөрчлөлтүүдийг хянах.',
 'recentchanges-label-newpage' => 'Энэ засвар шинэ хуудсыг үүсгэсэн байна',
 'recentchanges-label-minor' => 'Энэ нь бага зэргийн засвар байна',
-'recentchanges-label-bot' => 'Энэ засварыг бот гүйцэтгэсэн байна',
+'recentchanges-label-bot' => 'Энэ засварыг робот гүйцэтгэсэн байна',
 'recentchanges-label-unpatrolled' => 'Энэ засварыг одоогийн байдлаар манаагүй байна',
-'recentchanges-legend-newpage' => '([[Special:NewPages|Шинэ хуудсуудын жагсаалтыг]] бас үзнэ үү.',
+'recentchanges-legend-newpage' => '([[Special:NewPages|тэдгээрийг жагсааж үзэх]]',
 'rcnotefrom' => "Доорх нь '''$2'''-с хойших өөрчлөлтүүд ('''$1''' хүртэлхийг харуулав) юм.",
 'rclistfrom' => '$1-с хойших шинэ засваруудыг үзүүлэх',
 'rcshowhideminor' => 'Бага зэргийн засваруудыг $1',
@@ -1829,6 +1832,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'protectedpages-indef' => 'Зөвхөн хугацаагүй хамгаалалтууд',
 'protectedpages-cascade' => 'Зөвхөн давхар хамгаалалтууд',
 'protectedpagesempty' => 'Эдгээр параметрээр хамгаалагдсан хуудас байхгүй байна.',
+'protectedpages-page' => 'Хуудас',
 'protectedtitles' => 'Хамгаалагдсан гарчигууд',
 'protectedtitlesempty' => 'Эдгээр параметрээр хамгаалагдсан гарчиг байхгүй байна.',
 'listusers' => 'Хэрэглэгчдийн жагсаалт',
@@ -1855,7 +1859,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 # Book sources
 'booksources' => 'Номон эх сурвалжууд',
 'booksources-search-legend' => 'Номын эх сурвалж хайх',
-'booksources-go' => 'Явах',
+'booksources-go' => 'Үзэх',
 'booksources-text' => 'Доорх нь шинэ, хуучин ном зардаг өөр сайт руу очих холбоосуудын жагсаалт бөгөөд таны хайж буй номнуудын тухай дэлгэрэнгүй мэдээлэл байх магадлалтай:',
 'booksources-invalid-isbn' => 'Өгөгдсөн ISBN хүчингүй юм шиг байна; эх сурвалжаас зөв хуулсан эсэхээ шалгана уу.',
 
@@ -1888,7 +1892,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'cachedspecial-refresh-now' => 'Саяханы хуудсыг харах',
 
 # Special:Categories
-'categories' => 'Анги',
+'categories' => 'Ангиллууд',
 'categoriespagetext' => 'Дараах {{PLURAL:$1|ангилалд|ангиллуудад}} хуудас эсвэл медиа файл агуулагдаж байна.
 [[Special:UnusedCategories|Хэрэглэгдэхгүй байгаа]] ангиллуудыг энд харуулсангүй.
 [[Special:WantedCategories|Хэрэгтэй ангиллууд]] гэдгийг харна уу.',
@@ -1923,7 +1927,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'activeusers-intro' => 'Энэ нь сүүлийн $1 {{PLURAL:$1|өдөрт|өдөрт}} ямар нэг байдлаар үйлдэл хийсэн хэрэглэгчдийн жагсаалт юм.',
 'activeusers-count' => 'Сүүлийн {{PLURAL:$3|нэг өдөрт|$3 өдөрт}} $1 {{PLURAL:$1|засвар|засвар}}',
 'activeusers-from' => 'Хамгийн эхэлж харуулах хэрэглэгч:',
-'activeusers-hidebots' => 'Ботуудыг нуух',
+'activeusers-hidebots' => 'роботуудыг нуух',
 'activeusers-hidesysops' => 'Администраторуудыг нуух',
 'activeusers-noresult' => 'Хэрэглэгч олдсонгүй.',
 
@@ -2241,8 +2245,8 @@ $1',
 'contribsub2' => 'Хэрэглэгч: {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Энэ шалгуурт тохирох өөрчилсөн зүйлүүд олдсонгүй.',
 'uctop' => '(одоох)',
-'month' => 'Дараах сараас (өмнөх засварууд нь ч орно):',
-'year' => 'Ð\94аÑ\80ааÑ\85 Ð¶Ð¸Ð»Ñ\8dÑ\8dÑ\81 ï¼\88өмнөÑ\85 Ð·Ð°Ñ\81ваÑ\80Ñ\83Ñ\83д Ð½Ñ\8c Ñ\87 Ð¾Ñ\80ноï¼\89:',
+'month' => 'Дараах сараас урагш:',
+'year' => 'Ð\90Ñ\80Ñ\8bн Ð¾Ð½:',
 
 'sp-contributions-newbies' => 'Зөвхөн шинэ бүртгэлүүдийн хувь нэмрийг харуулах',
 'sp-contributions-newbies-sub' => 'Шинээр бүртгүүлсэн хэрэглэгчид',
@@ -2356,7 +2360,7 @@ $1',
 'blocklink' => 'түгжих',
 'unblocklink' => 'түгжээг тайлах',
 'change-blocklink' => 'түгжээг өөрчлөх',
-'contribslink' => 'хувь нэмэр',
+'contribslink' => 'оруулсан хувь нэмэр',
 'emaillink' => 'цахим шуудан явуулах',
 'autoblocker' => 'Автоматаар түгжигдлээ. Учир нь таны IP хаягийг "[[User:$1|$1]]" нь хэрэглэж байжээ. "$1"-г түгжих болсон шалтгаан нь: "\'\'\'$2\'\'\'"',
 'blocklogpage' => 'Түгжээний лог',
@@ -2625,9 +2629,9 @@ $1',
 'tooltip-ca-watch' => 'Энэ хуудсыг хянах жагсаалтандаа нэмэх',
 'tooltip-ca-unwatch' => 'Энэ хуудсыг өөрийн хянаж буй хуудсуудын жагсаалтаас хасах',
 'tooltip-search' => '{{SITENAME}}-с хайх',
-'tooltip-search-go' => 'Яг Ð¸Ð¹Ð¼ Ð½Ñ\8dÑ\80Ñ\82Ñ\8dй Ñ\85Ñ\83Ñ\83даÑ\81 Ð±Ð°Ð¹Ð³Ð°Ð° Ð±Ð¾Ð» Ñ\82үүн Ñ\80Ò¯Ò¯ Ñ\8fваÑ\85',
+'tooltip-search-go' => 'Ð\98йм Ð½Ñ\8dÑ\80Ñ\82Ñ\8dй Ñ\85Ñ\83Ñ\83даÑ\81 Ð±Ð°Ð¹Ð³Ð°Ð° Ñ\8dÑ\81Ñ\8dÑ\85ийг Ò¯Ð·Ñ\8cе',
 'tooltip-search-fulltext' => 'Энэ текстийг хуудсуудаас хайх',
-'tooltip-p-logo' => 'Нүүр хуудас',
+'tooltip-p-logo' => 'Нүүр хуудаст зочлох',
 'tooltip-n-mainpage' => 'Нүүр хуудаст зочлох',
 'tooltip-n-mainpage-description' => 'Нүүр хуудаст зочлох',
 'tooltip-n-portal' => 'Энэ төслийн тухай, түүн дээр юу хийж болох, ба хаана зүйлсийг мэдэж авах тухай',
@@ -2645,7 +2649,7 @@ $1',
 'tooltip-t-specialpages' => 'Тусгай хуудаснуудын жагсаалт',
 'tooltip-t-print' => 'Энэ хуудасны хувилж болох хувилбар',
 'tooltip-t-permalink' => 'Хуудасны одоогийн хувилбар луу очих тогтмол линк',
-'tooltip-ca-nstab-main' => 'Өгүүллийн хуудсыг үзэх',
+'tooltip-ca-nstab-main' => 'Өгүүлж Ð±Ñ\83й Ð³Ð¾Ð» хуудсыг үзэх',
 'tooltip-ca-nstab-user' => 'Хэрэглэгчийн хуудсыг үзэх',
 'tooltip-ca-nstab-media' => 'Медиа хуудсыг үзэх.',
 'tooltip-ca-nstab-special' => 'Энэ бол тусгай хуудас, та үүнийг шууд засварлах боломжгүй.',
@@ -2659,7 +2663,7 @@ $1',
 'tooltip-save' => 'Засваруудаа хадгалах',
 'tooltip-preview' => 'Өөрийн оруулах гэж буй өөрчлөлтүүдийг урьдчилан харах. Үүнийг ашиглана уу!',
 'tooltip-diff' => 'Таны бичлэгт үйлдсэн өөрчлөлтүүдийг харуул.',
-'tooltip-compareselectedversions' => 'Энэ хуудасны сонгосон хоёр хувилбарын ялгааг харна уу.',
+'tooltip-compareselectedversions' => 'Энд дарж сонгосон хоёр хувилбарын ялгааг хараарай.',
 'tooltip-watch' => 'Энэ хуудсыг өөрийн хянах жагсаалтандаа нэмэх',
 'tooltip-watchlistedit-normal-submit' => 'Гарчигийг устгах',
 'tooltip-watchlistedit-raw-submit' => 'Хянаж буй хуудсуудын жагсаалтыг шинэчлэх',
@@ -3146,7 +3150,7 @@ $1',
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'бүгдийг',
 'namespacesall' => 'бүгдийг',
-'monthsall' => 'бүгдийг',
+'monthsall' => 'бүх сар',
 
 # Email address confirmation
 'confirmemail' => 'Мэйл хаягийг баталгаажуулах',
@@ -3326,6 +3330,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'Тусгай хуудсууд',
+'specialpages-note-top' => 'Томъёолбор',
 'specialpages-note' => '* Ердийн тусгай хуудсууд.
 * <strong class="mw-specialpagerestricted">Хориотой тусгай хуудсууд.</strong>',
 'specialpages-group-maintenance' => 'Засвар үйлчилгээний тайлангууд',
@@ -3357,7 +3362,7 @@ $5
 
 # Special:Tags
 'tags' => 'Хүчинтэй өөрчлөлтийн тагууд',
-'tag-filter' => '[[Special:Tags|Тагийн]] шүүлтүүр:',
+'tag-filter' => '[[Special:Tags|Үгээр]] шүүх:',
 'tag-filter-submit' => 'Шүүлтүүр',
 'tags-title' => 'Тагууд',
 'tags-intro' => 'Энэхүү хуудсанд програм хангамжийн засвар гэж тэмдэглэх боломжтой тагууд болон тэдний тайлбарыг жагсаан бичив.',
index 0e9b35d..f44bb0a 100644 (file)
@@ -47,7 +47,6 @@ $namespaceGenderAliases = array();
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Ажедмӓшвлӓм ыдыралаш',
-'tog-justify' => 'Текстӹм ӹлӹштӓш кымдык тӧрлӓш',
 'tog-hideminor' => 'Изи тӧрлӹмӓшвлӓм у вашталтымашвлӓ лошты шӹлташ, анжыкташ агыл',
 'tog-hidepatrolled' => 'Патрулируйымы тӧрлӹмӓшвлӓм у вашталтымашвлӓ лошты шӹлташ, анжыкташ агыл',
 'tog-newpageshidepatrolled' => 'Патрулирыйымы ӹлӹшташвлӓм у вашталтымашвлӓ лошты шӹлташ, анжыкташ агыл',
@@ -56,10 +55,8 @@ $messages = array(
 'tog-numberheadings' => 'Артикль лӹмвлӓм автоматически нумеруяш',
 'tog-showtoolbar' => 'Текстӹм тӧрлӹмӹ годым кӱшӹл панельӹм анжыкташ (JavaScript)',
 'tog-editondblclick' => 'Ӹлӹшташвлӓм кок гӓнӓ темдӓл, тӧрлӓш (JavaScript)',
-'tog-editsection' => '«Тӧрлӓш» ажедмӓшӹм м цилӓ секцилӓнок анжыкташ',
 'tog-editsectiononrightclick' => 'Секцим тӧрлӹмӹ годым артикль лӹмӹм каля доно вургымлашты темдӓлӓш (JavaScript)',
-'tog-showtoc' => 'Кӧргӹштӹш лӹмвлӓм анжыкташ (3 гӹц шукырак артикль лӹмӓн ӹлӹштӓшвлӓштӹ)',
-'tog-rememberpassword' => 'Мӹньӹн шотыш нӓлмӹ сирмӓшем ти компьютерӹштӹ ӓштӓш (максимум $1 {{PLURAL:$1|кечы|кечы}})',
+'tog-rememberpassword' => 'Мӹньӹн шотыш нӓлмӹ сирмӓшем ти компьютерӹштӹ ӓштӓш (максимум $1 {{PLURAL:$1|1=кечы|кечы}})',
 'tog-watchcreations' => 'Мӹньӹн ӹштӹмӹ ӹлӹштӓшвлӓэм вӓнгӹмӹ списокыш пырташ',
 'tog-watchdefault' => 'Мӹньӹн вашталтымы ӹлӹштӓшвлӓэм вӓнгӹмӹ списокыш пырташ',
 'tog-watchmoves' => 'Мӹньӹн лӹмӹм вашталтымы ӹлӹштӓшвлӓэм вӓнгӹмӹ списокыш пырташ',
@@ -67,7 +64,6 @@ $messages = array(
 'tog-minordefault' => 'Пäлдӹртӹмӹ агыл тöрлӹмäшвлäм когонжок керäлеш шотлаш агыл',
 'tog-previewontop' => 'Текстӹм анзыц анжен лӓкмӹм тӧрлӹмӹ окня анзыкы шӹндӓш',
 'tog-previewonfirst' => 'Текстӹм анзыц анжен лӓкмӹм тӧрлӓш тӹнгӓлмӹ анзыц анжыкташ',
-'tog-nocache' => 'Ӹлӹштӓшвлӓн кешированим цӓрӓш',
 'tog-enotifwatchlistpages' => 'Мам вӓнгӹмӹ списокын ӹлӹштӓшӹштӹ вашталтымы, тӹдӹм эл. почта доно увертӓрӓш',
 'tog-enotifusertalkpages' => 'Мам персональный ӹлӹштӓшӹштӹ дискуссилӓн пачмы, тӹ вашталтмашым эл. почта доно увертӓрӓш',
 'tog-enotifminoredits' => 'Изи вашталтымашвлӓ гишӓнӓт эл. почта доно увертӓрӓш',
@@ -151,12 +147,12 @@ $messages = array(
 'dec' => 'дек',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категори|Категоривлӓ}}',
+'pagecategories' => '{{PLURAL:$1|1=Категори|Категоривлӓ}}',
 'category_header' => 'Категори «$1» ӹлӹштӓшвлӓ',
 'subcategories' => 'Лӹвӓл категоривлӓ',
-'hidden-categories' => '{{PLURAL:$1|Шӹлтӹмӹ категори| Шӹлтӹмӹ категоривлӓ}}',
-'category-subcat-count' => '{{PLURAL:$2|Ти ÐºÐ°Ñ\82егоÑ\80иÑ\88Ñ\82Ó¹ Ð»Ð°Ñ\87 Ñ\82и Ð»Ó¹Ð²Ó\93л ÐºÐ°Ñ\82егоÑ\80и Ð²ÐµÐ»Ðµ.|{{PLURAL:$1|Ð\9bӹвÓ\93л ÐºÐ°Ñ\82егоÑ\80им $1 Ð°Ð½Ð¶Ñ\8bкÑ\82Ñ\8bмÑ\8b\9bӹвÓ\93л ÐºÐ°Ñ\82егоÑ\80ивлÓ\93м $1 Ð°Ð½Ð¶Ñ\8bкÑ\82Ñ\8bмÑ\8b\9bӹвÓ\93л ÐºÐ°Ñ\82егоÑ\80им $1}} анжыктымы $2.}}',
-'category-article-count' => '{{PLURAL:$2|Ти категориштӹ ик ӹлыштӓш веле. |{{PLURAL:$1|Анжыктымы$1 ӹлӹшташ|Анжыктымы$1 ӹлӹштӓшӹм|Анжыктымы$1 ӹлыштӓшвлӓм}}ти категори гӹц$2.}}',
+'hidden-categories' => '{{PLURAL:$1|1=Шӹлтӹмӹ категори| Шӹлтӹмӹ категоривлӓ}}',
+'category-subcat-count' => '{{PLURAL:$2|Ти ÐºÐ°Ñ\82егоÑ\80иÑ\88Ñ\82Ó¹ Ð»Ð°Ñ\87 Ñ\82и Ð»Ó¹Ð²Ó\93л ÐºÐ°Ñ\82егоÑ\80и Ð²ÐµÐ»Ðµ.|{{PLURAL:$1|Ð\9bӹвÓ\93л ÐºÐ°Ñ\82егоÑ\80им $1 Ð°Ð½Ð¶Ñ\8bкÑ\82Ñ\8bмÑ\8b\9bӹвÓ\93л ÐºÐ°Ñ\82егоÑ\80им $1|Ð\9bӹвÓ\93л ÐºÐ°Ñ\82егоÑ\80ивлÓ\93м $1 Ð°Ð½Ð¶Ñ\8bкÑ\82Ñ\8bмÑ\8b}} анжыктымы $2.}}',
+'category-article-count' => '{{PLURAL:$2|Ти категориштӹ ик ӹлыштӓш веле.|{{PLURAL:$1|Анжыктымы$1 ӹлӹшташ|Анжыктымы$1 ӹлыштӓшвлӓм|Анжыктымы$1 ӹлӹштӓшӹм}}ти категори гӹц$2.}}',
 'listingcontinuesabbrev' => '(пакыла)',
 
 'newwindow' => '(у окняшты)',
@@ -264,7 +260,7 @@ $messages = array(
 # Login and logout pages
 'yourname' => 'Сирӹшӹн лӹмжӹ:',
 'yourpassword' => 'Пароль:',
-'remembermypassword' => 'Ти компьютерӹштӹ мӹньӹн учетный сирмӓшем ӓштӓш (максимум $1 {{PLURAL:$1|кечы|кечы}})',
+'remembermypassword' => 'Ти компьютерӹштӹ мӹньӹн учетный сирмӓшем ӓштӓш (максимум $1 {{PLURAL:$1|1=кечы|кечы}})',
 'login' => 'Системыш сирӓлтдӓ',
 'nav-login-createaccount' => 'Коргӹшкӹ сирӓлтдӓ/регистрируялтда',
 'userlogin' => 'Кӧргӹшкӹ сирӓлтдӓ ӓль регистрируялтда',
@@ -313,12 +309,12 @@ $messages = array(
 'copyrightwarning' => 'Пуры лидӓ, ӓшӹшкӹдӓ пиштӹда! Цилӓ мам тӧрлӹмӹ, ушештӹмӹ дӓ вашталтымы, $2 (см. $1) негӹцеш ӹштӹмы семӹнь анжымы лиэш. Мам сиредӓ, тӹдӹм кычылтмы  дӓ тӧрлӹмӹ ваштареш ылыда гӹнь пуры лидӓ, тишӓк идӓ сирӹ.<br /> Тенгеок мам сиредӓ  тӹдӹн авторжы ылыда дӓ мам копируедӓ, тидӹ ирӹкӓн кычылтмашты лишӓшлык<br />.
 
 Автор пӓшӓлӓнжӹ публикаяш разрешеним пуде гӹнь, тишӓк идӓ сирӹ!!!',
-'templatesused' => '{{PLURAL:$1|Кычылтмы шаблон|Кычылтмы шаблонвлӓ}} ӹлӹштӓшӹн ти версиштӹжӹ:',
-'templatesusedpreview' => '{{PLURAL:$1|Кычылтмы шаблон|Кычылтмы шаблонвлӓ }} анзыц анжымы ӹлӹштӓшӹштӹ:',
+'templatesused' => '{{PLURAL:$1|1=Кычылтмы шаблон|Кычылтмы шаблонвлӓ}} ӹлӹштӓшӹн ти версиштӹжӹ:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Кычылтмы шаблон|Кычылтмы шаблонвлӓ }} анзыц анжымы ӹлӹштӓшӹштӹ:',
 'template-protected' => '(ӹшӹклӓлтеш, перегӓлтеш)',
 'template-semiprotected' => '(лаштыкын-лыштыкын ӹшӹклӓлтеш)',
-'hiddencategories' => 'Ти ӹлӹштӓш $1 {{PLURAL:$1|шӹлтӹмӹ категориш|шӹлтӹмӹ  категоривлӓш|шӹлтӹмӹ категориш пыра}}:',
-'permissionserrorstext-withaction' => "Тидӹм (действим) ӹштӓш манын  тӓмдӓн разрешенидӓ уке«'''$2'''» семеш {{PLURAL:$1|ти ӓмӓл|ӓмӓлвлӓ доно}}:",
+'hiddencategories' => 'Ти ӹлӹштӓш $1 {{PLURAL:$1|шӹлтӹмӹ категориш|шӹлтӹмӹ категориш пыра|шӹлтӹмӹ  категоривлӓш}}:',
+'permissionserrorstext-withaction' => "Тидӹм (действим) ӹштӓш манын  тӓмдӓн разрешенидӓ уке«'''$2'''» семеш {{PLURAL:$1|1=ти ӓмӓл|ӓмӓлвлӓ доно}}:",
 
 # History pages
 'viewpagelogs' => 'Ти ӹлӹштӓшлӓн журналвлӓм анжыкташ',
@@ -354,7 +350,7 @@ $messages = array(
 'prevn' => '{{PLURAL:$1|анзылнышы $1|анзылнышывлӓ $1|анзылнышывлӓ $1}}',
 'nextn' => '{{PLURAL:$1|паштек кешӹ $1|паштек кешӹвлӓ $1|паштек кешӹвлӓ $1}}',
 'viewprevnext' => 'Анжен лӓктӓш ($1 {{int:pipe-separator}} $2) ($3)',
-'search-result-size' => '$1 ({{PLURAL:$2|$2 шамак|$2 шамаквлӓ|$2 шамак}})',
+'search-result-size' => '$1 ({{PLURAL:$2|$2 шамак|$2 шамак|$2 шамаквлӓ}})',
 'search-redirect' => '(вес вӓрӹш ажед колташ $1)',
 'search-section' => '(кӹдеж $1)',
 'search-suggest' => 'Анят тӓ $1 шанендӓ:',
@@ -384,11 +380,10 @@ $messages = array(
 'action-edit' => 'ти ӹлӹштӓшӹм тӧрлӹмӓш',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|вашталтымаш|вашталтымашвлӓ|вашталтымаш}}',
+'nchanges' => '$1 {{PLURAL:$1|вашталтымаш|вашталтымаш|вашталтымашвлӓ}}',
 'recentchanges' => 'У тӧрлӹмӓшвлӓ',
 'recentchanges-legend' => 'У тӧрлӹмашвлӓн настройкышты',
 'recentchanges-feed-description' => 'Ти лиништӹ Викиштӹш вашталтмашвлӓм анжалаш.',
-'rcnote' => "{{PLURAL:$1|Пӹтӓртӹш вашталтымаш'''$1''' вашталтымаш|Пӹтӓртыш '''$1''' вашталтымашвлӓ|Пӹтӓртӹш '''$1''' вашталтымашвлӓ}}  '''$2''' {{PLURAL:$2|кечӹштӹ|кечӹштӹ|кечӹвлӓштӹ}}, ти моментеш $5 $4.",
 'rclistfrom' => '$1 доно вашталтмашвлӓм анжыкташ',
 'rcshowhideminor' => '$1 изи тӧрлӹмаш',
 'rcshowhidebots' => '$1 бот',
@@ -430,7 +425,7 @@ $messages = array(
 'filehist-dimensions' => 'Объектӹн размержӹ',
 'filehist-comment' => 'Пӓлӹквлӓ',
 'imagelinks' => 'Файлышкы ажедмӓшвлӓ',
-'linkstoimage' => '{{PLURAL:$1|Паштек $1 вес ӹлӹштӓш ажедеш| $1 вес ӹлӹштӓшвлӓ ажедӹт|Вес  $1 ӹлӹштӓшвлӓ ти файлыш}} ажедӹт:',
+'linkstoimage' => '{{PLURAL:$1|Паштек $1 вес ӹлӹштӓш ажедеш|Вес  $1 ӹлӹштӓшвлӓ ти файлыш| $1 вес ӹлӹштӓшвлӓ ажедӹт}} ажедӹт:',
 'sharedupload' => 'Ти $1 файлым вес проектвлӓштӹ кычылташ лиэш',
 'uploadnewversion-linktext' => 'Файлын у версижӹм темӓш',
 
@@ -441,14 +436,14 @@ $messages = array(
 'statistics' => 'Статистика',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байÑ\82|байÑ\82ан|байÑ\82влÓ\93}}',
-'nmembers' => '$1 {{PLURAL:$1|объект|объектӹн|объект}}',
+'nbytes' => '$1 {{PLURAL:$1|байÑ\82|байÑ\82влÓ\93|байÑ\82ан}}',
+'nmembers' => '$1 {{PLURAL:$1|объект|объект|объектӹн}}',
 'prefixindex' => 'Ӹлыштӓшвлӓн лӹмӹштӹн тӹнгӓлтӹш доно анжыктымы',
 'newpages' => 'У ӹлӹштӓшвлӓ',
 'move' => 'Вес лӹмӹм пуаш',
 'movethispage' => 'Ти ӹлыштӓшӹн лӹмжӹм вашталташ',
-'pager-newer-n' => '{{PLURAL:$1|урак|ураквлӓ|ураквлӓ гӹц}} $1',
-'pager-older-n' => '{{PLURAL:$1|тоштырак|тоштыраквлӓ|тоштыраквлӓ гӹц}} $1',
+'pager-newer-n' => '{{PLURAL:$1|урак|ураквлӓ гӹц|ураквлӓ}} $1',
+'pager-older-n' => '{{PLURAL:$1|тоштырак|тоштыраквлӓ гӹц|тоштыраквлӓ}} $1',
 
 # Book sources
 'booksources' => 'Книгӓн кӹлвлӓжӹ (источник)',
@@ -484,7 +479,7 @@ $messages = array(
 'watch' => 'Вӓнгӓш',
 'watchthispage' => 'Ти ӹлӹштӓшӹм вӓнгӓш',
 'unwatch' => 'Вӓнгӓш агыл',
-'watchlist-details' => 'Тӓмдӓн вӓнгӹмӹ списокыштыда $1 {{PLURAL:$1|ӹлӹштӓш|ӹлӹштӓшвлӓ|ӹлӹштӓш}}, Кӓнгӓшӹмӓш ӹлыштӓшвлӓ гӹц пасна.',
+'watchlist-details' => 'Тӓмдӓн вӓнгӹмӹ списокыштыда $1 {{PLURAL:$1|ӹлӹштӓш|ӹлӹштӓш|ӹлӹштӓшвлӓ}}, Кӓнгӓшӹмӓш ӹлыштӓшвлӓ гӹц пасна.',
 'wlshowlast' => 'Анжыкташ эртӹш  $1 час $2 кечӹвлӓн $3',
 'watchlist-options' => 'Вӓнгӹмӹ списокын настройкыжы',
 
@@ -516,7 +511,7 @@ $messages = array(
 'protect_expiry_old' => 'Пӹтӹм жепшӹ эртен',
 'protect-text' => "Тиштӹ тӓ ӹлӹштӓшӹн ӹшӹклӹмӹ кӱкшӹцшӹм анжал дӓ вашталтен кердӹдӓ'''$1'''.",
 'protect-locked-access' => "Тӓмдӓн учетный карточкыдан ӹшӹклӹмӓш кӱкшӹцӹм вашталташ манын ситӓлык праважы уке. Ти ӹлӹштӓшӹм шӹндӹдӓ'''$1''':",
-'protect-cascadeon' => 'Ти ӹлӹштӓшӹм {{PLURAL:$1|-шкы пыртымат, ӹшӹклӓлтеш, кыды ӱлнӹрӓк ылшы ӹлӹштӓшӹш|ӹлӹштӓшвлӓшкӹ ажедеш, кышкы }} каскадан ӹшӹклӹмашӹм шӹндӹмӹ. Тӓ ти ӹлӹштӓшӹн ӹшӹклӹмӹ кӱкшӹцшӹм вашталтен кердӹдӓ, но тидӹ каскадан ӹшӹклӹмашӹм ак тӹкӓл лиэш.',
+'protect-cascadeon' => 'Ти ӹлӹштӓшӹм {{PLURAL:$1|1=-шкы пыртымат, ӹшӹклӓлтеш, кыды ӱлнӹрӓк ылшы ӹлӹштӓшӹш|ӹлӹштӓшвлӓшкӹ ажедеш, кышкы }} каскадан ӹшӹклӹмашӹм шӹндӹмӹ. Тӓ ти ӹлӹштӓшӹн ӹшӹклӹмӹ кӱкшӹцшӹм вашталтен кердӹдӓ, но тидӹ каскадан ӹшӹклӹмашӹм ак тӹкӓл лиэш.',
 'protect-default' => 'Ӹшӹклӹмӹ агыл',
 'protect-fallback' => 'Разрешени келеш «$1»',
 'protect-level-autoconfirmed' => 'У дӓ регистрируялтшы агыл сирӹшӹвла гӹц ӹшӹклӓш',
@@ -559,7 +554,7 @@ $messages = array(
 'isredirect' => 'вес вӓре колтымым анжыктышы ӹлӹштӓш',
 'istemplate' => 'кӧргӹш пыртымы',
 'isimage' => 'изображени докы ажедмӓш',
-'whatlinkshere-prev' => '{{PLURAL:$1|анзылнышы|анзылнышывлӓ|анзылнышывла}} $1',
+'whatlinkshere-prev' => '{{PLURAL:$1|анзылнышы|анзылнышывла|анзылнышывлӓ}} $1',
 'whatlinkshere-next' => '{{PLURAL:$1|пакылашы|пакылашывлӓ|пакылашывлӓ}} $1',
 'whatlinkshere-links' => '← ажедмӓшвлӓ',
 'whatlinkshere-hideredirs' => '$1 вес вӓрӹш колтымаш',
index 93fb0f4..aa5c08a 100644 (file)
@@ -362,7 +362,6 @@ $messages = array(
 'vector-action-protect' => 'Lindungi',
 'vector-action-undelete' => 'Batal hapus',
 'vector-action-unprotect' => 'Ubah perlindungan',
-'vector-simplesearch-preference' => 'Bolehkan bar carian ringkas (kulit Vector sahaja)',
 'vector-view-create' => 'Cipta',
 'vector-view-edit' => 'Sunting',
 'vector-view-history' => 'Lihat sejarah',
index a312ca6..615f174 100644 (file)
@@ -436,7 +436,6 @@ $messages = array(
 'vector-action-protect' => 'Ipproteġi',
 'vector-action-undelete' => 'Irkupra',
 'vector-action-unprotect' => 'Biddel il-protezzjoni',
-'vector-simplesearch-preference' => 'Ippermetti suġġerimenti għat-tfittxija avvanzata (disponibbli biss għall-aspett grafiku Vector)',
 'vector-view-create' => 'Oħloq',
 'vector-view-edit' => 'Editja',
 'vector-view-history' => 'Ara l-kronoloġija',
index f6f056a..4cd2a50 100644 (file)
@@ -80,7 +80,6 @@ $magicWords = array(
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Sublinhar lhigaçones:',
-'tog-justify' => 'Justeficar parágrafos',
 'tog-hideminor' => 'Scunder eidiçones mais pequeinhas nas redadeiras altaraçones',
 'tog-hidepatrolled' => 'Scunder eidiçones patrulhadas nas redadeiras altaraçones',
 'tog-newpageshidepatrolled' => 'Scunder  páiginas patrulhadas na lhista de páiginas nuobas',
@@ -89,9 +88,7 @@ $messages = array(
 'tog-numberheadings' => 'Outo-numerar cabeçalhos',
 'tog-showtoolbar' => "Amostrar barra d'eidiçon (JavaScrit)",
 'tog-editondblclick' => 'Eiditar páiginas quando houbir un clique duplo (JavaScrit)',
-'tog-editsection' => "Possiblitar l'eidiçon de cachos cun lhigaçones [eiditar]",
 'tog-editsectiononrightclick' => "Posseblitar l'eidiçon de cachos por clique cul boton dreito ne l títalo de la seçon (JavaScrit)",
-'tog-showtoc' => 'Amostrar índice (para páiginas cun mais de trés cachos)',
 'tog-rememberpassword' => 'Recordar la mie palabra-chabe antre sessones (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'Ajuntar las páiginas que you criar a las minhas páiginas begiadas',
 'tog-watchdefault' => 'Ajuntar las páiginas que you eiditar a las minhas páiginas begiadas',
@@ -533,7 +530,6 @@ Legenda: (atu) = defrénças de la berson atual,
 'compareselectedversions' => 'Cumparar las bersones marcadas',
 'showhideselectedversions' => 'Amostrar/ocultar bersones selecionadas',
 'editundo' => 'çfazer',
-'diff-multi' => '({{PLURAL:$1|ua eidiçon antermédia nun stá a ser amostrada|$1 eidiçones antermédias nun stan a ser amostradas}}.)',
 
 # Search results
 'searchresults' => 'Resultados de la percura',
index 3e3c459..f2d1008 100644 (file)
@@ -220,7 +220,6 @@ $messages = array(
 'vector-action-protect' => 'ထိမ်း​သိမ်း​ပါ​',
 'vector-action-undelete' => 'မဖျက်တော့ရန်',
 'vector-action-unprotect' => 'ကာကွယ်ခြင်းကို ပြောင်းလဲရန်',
-'vector-simplesearch-preference' => 'ရိုးရှင်းသော ရှာဖွေမှုဘားကို အသုံးပြုရန် (Vector skin သာ)',
 'vector-view-create' => 'စတင်ရေးသားရန်',
 'vector-view-edit' => 'ပြင်ရန်',
 'vector-view-history' => 'ရာဇဝင်ကြည့်ရန်',
index 2327fe7..4d343ad 100644 (file)
@@ -197,7 +197,7 @@ $messages = array(
 'tog-showtoolbar' => 'Невтемс кедьёнкслазнэнть сёрмадома шкасто',
 'tog-editondblclick' => 'Кавксть лепштязь совамс сёрмадовксонь витнеме-петнеме',
 'tog-editsectiononrightclick' => 'Витнемс секциятнень-пелькстнэнь, лепштямс сёрмадовксонть лемензэ лангс чеерень витьёнсе повнесэ',
-'tog-rememberpassword' => 'Ð\9bедÑ\81Ñ\82емÑ\81 Ñ\81овамо Ð²Ð°Ð»Ð¾Ð¼ Ñ\82е Ð±Ñ\80авзеÑ\80Ñ\81Ñ\8dнÑ\82Ñ\8c (Ñ\81еÑ\85 ÐºÑ\83ваÑ\82Ñ\8c $1 {{PLURAL:$1|1=чи|чить}})',
+'tog-rememberpassword' => 'Ð\9aиÑ\80демÑ\81 Ð¼ÐµÐ»Ñ\8cÑ\81Ñ\8d Ñ\81овамо Ð²Ð°Ð»Ð¾Ð¼ Ñ\82е Ð±Ñ\80авзеÑ\80Ñ\81Ñ\8dнÑ\82Ñ\8c (Ñ\81еÑ\85 ÐºÑ\83ваÑ\82Ñ\8c $1 {{PLURAL:$1|чи|чить}})',
 'tog-watchcreations' => 'Совавтомс ванома лемрисьмезэнь монь теевть лопатнень ды сень, мезе йовкстан',
 'tog-watchdefault' => 'Совавтомс монь витевть лопатнень ванома лемрисьмезэнь',
 'tog-watchmoves' => 'Совавтомс монь одов лемдявт лопатнень-керьмазтнэнь ванома лемрисьмезэнь',
@@ -300,19 +300,19 @@ $messages = array(
 'december-date' => 'Ацамков $1',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|1=Категория|Категорият}}',
+'pagecategories' => '{{PLURAL:$1|Категория|Категорият}}',
 'category_header' => '"$1" категориясонть лопатне',
 'subcategories' => 'Алкскатегорият',
 'category-media-header' => '"$1" категориясонть медиясь',
 'category-empty' => "''Те категориясонть арасть лопат-медият.''",
-'hidden-categories' => '{{PLURAL:$1|1=Кекшень категория|Кекшень категорият}}',
+'hidden-categories' => '{{PLURAL:$1|Кекшезь категория|Кекшезь категорият}}',
 'hidden-category-category' => 'Кекшень категорият',
-'category-subcat-count' => '{{PLURAL:$2|Те категориясонть вейкине явкс категория.|Те категориясонть  {{PLURAL:$1|1=явкс категория|$1 явкс категорият}}, $2 -тнень эйстэ.}}',
-'category-subcat-count-limited' => 'Те категориясонть {{PLURAL:$1|1=алкс категория|$1 алкс категорият}}.',
-'category-article-count' => '{{PLURAL:$2|Те категориясонть вейкине лопась вана косо.|{{PLURAL:$1|1=Те лопась кандови|$1 Не лопатне кандовить}} те категориянтень, категориясонть лопатнеде весемезэ $2.}}',
-'category-article-count-limited' => '{{PLURAL:$1|1=Те лопась|$1 Не лопатне}} те категориясонть.',
-'category-file-count' => '{{PLURAL:$2|Те категориясонть вейкине файлась вана косо.|{{PLURAL:$1|1=Те файлась кандови|$1 Не файлатне кандовить}} те категориянтень, категориясонть файлатнеде весемезэ $2.}}',
-'category-file-count-limited' => '{{PLURAL:$1|1=Те файлась|$1 Не файлатне}} вановиця категориянтень кандови.',
+'category-subcat-count' => '{{PLURAL:$2|Те категориясонть вейкине явкс категория.|Те категориясонть  {{PLURAL:$1|явкс категория|$1 явкс категорият}}, $2 -тнень эйстэ.}}',
+'category-subcat-count-limited' => 'Те категориясонть {{PLURAL:$1|явкс категория|$1 явкс категорият}}.',
+'category-article-count' => '{{PLURAL:$2|Те категориясонть вейкине лопась вана косо.|{{PLURAL:$1|Те лопась кандови|$1 Неть лопатне кандовить}} те категориянтень, категориясонть лопатнеде весемезэ $2.}}',
+'category-article-count-limited' => '{{PLURAL:$1|Те лопась|Неть $1 лопатне}} те категориясонть.',
+'category-file-count' => '{{PLURAL:$2|Те категориясонть вейкине файлась вана косо.|{{PLURAL:$1|Те файлась кандови|Неть $1 файлатне кандовить}} те категориянтень, категориясонть файлатнеде весемезэ $2.}}',
+'category-file-count-limited' => '{{PLURAL:$1|Те файлась|Неть $1 файлатне}} вановиця категориянтень кандови.',
 'listingcontinuesabbrev' => 'поладксозо моли',
 'index-category' => 'Индекс марто лопатне',
 'noindex-category' => 'Индекстэме лопатне',
@@ -547,7 +547,7 @@ $1',
 'yourpasswordagain' => 'Омбоцеде сёрмадык кирдицянь леметь:',
 'createacct-yourpasswordagain' => 'Кемекстык салававалонть',
 'createacct-yourpasswordagain-ph' => 'Совавтык салававалонть одов',
-'remembermypassword' => 'Ð\9bедÑ\81Ñ\82емÑ\81 Ñ\81овамом Ñ\82е Ð±Ñ\80авзеÑ\80Ñ\81Ñ\8dнÑ\82Ñ\8c (Ñ\81еÑ\85 ÐºÑ\83ваÑ\82Ñ\8c $1 {{PLURAL:$1|1=чи|чить}})',
+'remembermypassword' => 'Ð\9aиÑ\80демÑ\81 Ð¼ÐµÐ»Ñ\8cÑ\81Ñ\8d Ñ\81овамо Ð²Ð°Ð»Ð¾Ð¼ Ñ\82е Ð±Ñ\80авзеÑ\80Ñ\81Ñ\8dнÑ\82Ñ\8c (Ñ\81еÑ\85 ÐºÑ\83ваÑ\82Ñ\8c $1 {{PLURAL:$1|чи|чить}})',
 'userlogin-remembermypassword' => 'Кирдемизь совавтозекс',
 'userlogin-signwithsecure' => 'Нолдак тевс ванстозь сюлмавкс',
 'yourdomainname' => 'Эсеть доменэть:',
@@ -599,7 +599,7 @@ $1',
 'passwordtooshort' => 'Совамо валонть кувалмозо  {{PLURAL:$1|1=улезэ 1 тешкс| улезт $1 тешкст}}, аволь седе аламо.',
 'password-name-match' => 'Салава валонтень эряви явовомс теицянь леметь эйстэ.',
 'password-login-forbidden' => 'Те теицянь лемесь ды салававалось а мерить нолдамс тевс.',
-'mailmypassword' => 'Ð\9aÑ\83Ñ\87Ñ\82 Ðµ-Ñ\81Ñ\91Ñ\80маÑ\81о Ð¾Ð´ салававал',
+'mailmypassword' => 'Ð\9eдов Ð»Ð°Ð´Ñ\8fмÑ\81 салававал',
 'passwordremindertitle' => '{{SITENAME}} туртов акуватень од совамо вал',
 'passwordremindertext' => 'Кие-бути (кода неяви тон IP-тешксстэнть $1) вешсь,<br />
 кедьстэнек кучомс теицянь од совамо вал {{SITENAME}} ($4) сайтс совамга.<br />
@@ -745,12 +745,12 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 '''ИЛЯ МАКСО ВАНСТОНЬ ВИДЕЧИСЭ ЛОМАНЕНЬ ВАЖОДЕМАНТЬ АПАК КЕВКСТНЕ!'''",
 'titleprotectedwarning' => "'''ВАНОК:  Те лопась сёлгозь, сонзэ шкамга-теемга [[Special:ListGroupRights|башка видечыть]] эрявить.'''
 Журналонь меельсе сёрмадовксось максозь ало, эрявиндеряй сонзэ ваномс.",
-'templatesused' => 'Те лопасонть тевс нолдазь {{PLURAL:$1|1=лопа парцун|лопа парцунт}}:',
+'templatesused' => 'Те лопасонть тевс нолдазь {{PLURAL:$1|лопапарцун|лопапарцунт}}:',
 'templatesusedpreview' => 'Те икелькс вановкссонть тевс нолдазь  {{PLURAL:$1|1=лопа парцун|лопа парцунт}}:',
 'templatesusedsection' => 'Те пелькссэнть тевс нолдазь {{PLURAL:$1|1=лопа парцунось|лопа парцунтнэ}}:',
 'template-protected' => '(ванстозь)',
 'template-semiprotected' => '(пельс ванстозь)',
-'hiddencategories' => 'Те лопась совавтови {{PLURAL:$1|1=кекшень 1 категорияс|кекшень $1 категорияс}}:',
+'hiddencategories' => 'Те лопась совавтови {{PLURAL:$1|кекшень 1 категорияс|кекшень $1 категорияс}}:',
 'nocreatetext' => 'Те {{SITENAME}} лопасонть пирязь од лопань теемась. Тонь ули мелеть велявтомс удалов ды  питнемензе-витнемензе улиця лопанть, али [[Special:UserLogin|совамс али теемс од совама]].',
 'nocreate-loggedin' => 'Тонеть а мерить теемс-шкамс од лопат.',
 'permissionserrorstext' => 'Тонеть а мерить теемс тень, вана {{PLURAL:$1|1=тувталось|тувталтнэ}}:',
@@ -867,12 +867,12 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'notextmatches' => 'Лопанть сёрмадсткэнзэ марто вейтьс прамот арасть',
 'prevn' => 'седе икелень {{PLURAL:$1|$1}}',
 'nextn' => 'сы {{PLURAL:$1|$1}}',
-'prevn-title' => 'Седе икелень $1 {{PLURAL:$1|1=савкс|савкст}}',
-'nextn-title' => 'Седе меелень $1 {{PLURAL:$1|1=савкс|савкст}}',
-'shown-title' => 'Невтть лопазонзо $1 {{PLURAL:$1|1=савкс|савкст}}',
+'prevn-title' => 'Седе икелень $1 {{PLURAL:$1|савкс|савкст}}',
+'nextn-title' => 'Сыця $1 {{PLURAL:$1|савкс|савкст}}',
+'shown-title' => 'Невтть лопазонзо $1 {{PLURAL:$1|савкс|савкст}}',
 'viewprevnext' => 'Ванномс ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Те викисэнть ули \"[[\$1]]\" лем марто лопа'''",
-'searchmenu-new' => "'''Шкик \"[[:\$1]]\" лопанть те викисэнть!'''",
+'searchmenu-new' => '<strong>Шкик "[[:$1]]" лопанть те викисэнть!</strong> {{PLURAL:$2|0=|Ваномс лопантькак, конань муик вешнемасонть.|Ваномс савкстнэньгак, конатне вешнемасонть муевсть.}}',
 'searchprofile-articles' => 'Потмокс лопат',
 'searchprofile-project' => 'Лезкс ды проекттэ лопат',
 'searchprofile-images' => 'Мультимедия',
@@ -883,7 +883,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'searchprofile-images-tooltip' => 'Вешнемс файлат',
 'searchprofile-everything-tooltip' => 'Вешнемс весе лопатнева (кортнема лопатневаяк)',
 'searchprofile-advanced-tooltip' => 'Вешнемс башка теезь лемпотмотнестэ',
-'search-result-size' => '$1 ({{PLURAL:$2|1=1 вал|$2 валт}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1 вал|$2 валт}})',
 'search-result-category-size' => '{{PLURAL:$1|1=1 совицязо|$1 совицянзо}} ({{PLURAL:$2|1=1 явкскатегориязо|$2 явкскатегориянзо}}, {{PLURAL:$3|1=1 файла|$3 файлат}})',
 'search-redirect' => '(йутавтт $1-с)',
 'search-section' => '(пелькс $1)',
@@ -895,7 +895,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'searcheverything-enable' => 'Вешнемс весе лем потмотнестэ',
 'searchrelated' => 'малавикс',
 'searchall' => 'весе',
-'showingresultsheader' => "{{PLURAL:$5|1=муевсь '''$1''' вана '''$3'''-тнень эйстэ|муевсть '''$1 - $2''' '''$3'''-тнень эйстэ}} '''$4''' вешнеманть лангс",
+'showingresultsheader' => '{{PLURAL:$5|муевсь <strong>$1</strong> вана <strong>$3</strong>-тнень эйстэ|муевсть <strong>$1 - $2</strong> <strong>$3</strong>-тнень эйстэ}} <strong>$4</strong> вешнеманть лангс',
 'search-nonefound' => 'Те вешнема лангс мезеяк эзь муеве.',
 'powersearch-legend' => 'Седе келейстэ вешнема',
 'powersearch-ns' => 'Вешнемс не лемпотмотнестэ:',
@@ -1076,7 +1076,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'action-sendemail' => 'кучомс е-сёрмат',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|1=полавтнема|полавтнемат}}',
+'nchanges' => '$1 {{PLURAL:$1|полавтнема|полавтнемат}}',
 'recentchanges' => 'Чыяконь полавтнемат-лиякстомтомат',
 'recentchanges-legend' => 'Улконь полавтнематнень аравтнемаст',
 'recentchanges-summary' => '',
@@ -1090,7 +1090,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'rclistfrom' => 'Невтемс од витьнематнень $1-нть эйстэ саезь.',
 'rcshowhideminor' => '$1 апокшкэ витнемат-петнемат',
 'rcshowhidebots' => '$1 ботт',
-'rcshowhideliu' => '$1 Ñ\81овазÑ\8c Ñ\83Ñ\81Ñ\8cкекиÑ\80дийÑ\82не',
+'rcshowhideliu' => '$1 Ñ\81овавÑ\82озÑ\8c Ñ\82еиÑ\86Ñ\8fÑ\82',
 'rcshowhideanons' => '$1 лемтеме теицят',
 'rcshowhidepatr' => '$1 кона патрульсэ витьни-петни',
 'rcshowhidemine' => '$1 мезе мон витнинь-петнинь',
@@ -1223,7 +1223,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'filehist-comment' => 'Мельполадкс',
 'filehist-missing' => 'Файлась арась',
 'imagelinks' => 'Ков файлась нолдави тевс',
-'linkstoimage' => 'Те файланть марто сюлмавозь вана {{PLURAL:$1|1=истямо сюлмавома пене|$1 истят сюлмавома пенеть}}:',
+'linkstoimage' => 'Те файланть марто сюлмавозь вана {{PLURAL:$1|истямо сюлмавома пене|$1 истят сюлмавома пенеть}}:',
 'nolinkstoimage' => 'Арась вейкеяк лопа, кона сюлмавови те файланть марто.',
 'sharedupload' => 'Те файлась саезь "$1" файлань пусмосто, сон нолдави тевс лия проектсэяк.',
 'sharedupload-desc-here' => 'Те файлась сась истямо $1 таркасто, паряк сон нолдави тевс лия проектсэ.
@@ -1304,10 +1304,10 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'fewestrevisions' => 'Лопат, конатнесэ весемеде аламо лиякстомтомат',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|1=байт|байтт}}',
+'nbytes' => '$1 {{PLURAL:$1|байт|байтт}}',
 'ncategories' => '$1 {{PLURAL:$1|1=категория|категорият}}',
 'nlinks' => '$1 {{PLURAL:$1|невтевкс|невтевкснедэ|невтевкст}}',
-'nmembers' => '$1 {{PLURAL:$1|1=теиця|теицятне}}',
+'nmembers' => 'куронь $1 {{PLURAL:$1|ломань|ломанть}}',
 'nrevisions' => '$1 {{PLURAL:$1|1=лиякстомтома|лиякстомтомат}}',
 'nviews' => '$1 {{PLURAL:$1|1=ванома потмо|ванома потмот}}',
 'lonelypages' => 'Лопаурозкэть',
@@ -1349,7 +1349,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'notargettitle' => 'Совавтома лопа арась',
 'nopagetitle' => 'Истямо вешема лопа арась',
 'nopagetext' => 'Истямо лопа, конань вешить, арась.',
-'pager-newer-n' => '{{PLURAL:$1|1=седе од 1|седе одт $1}}',
+'pager-newer-n' => '$1 седе {{PLURAL:$1|од|одт}}',
 'pager-older-n' => '{{PLURAL:$1|1=седе ташто 1|седе таштт $1}}',
 'suppress' => 'А ванома',
 
@@ -1447,7 +1447,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'unwatch' => 'А ванстнемс тень мельга',
 'unwatchthispage' => 'Лоткамс ванстомадонзо',
 'notvisiblerev' => 'Лиякстомтомась нардазь',
-'watchlist-details' => 'Ванома лемрисьмесэть {{PLURAL:$1|1=$1 лопа|$1 лопат}}, апак лово кортнема лопатнень.',
+'watchlist-details' => 'Ванома лемрисьмесэть $1 {{PLURAL:$1|лопа|лопат}}, кортнема лопатнень лангс апак вано.',
 'wlshowlast' => 'Невтемс мельсе $1 цяст $2 чить $3',
 'watchlist-options' => 'Ванома потмонь аравтнемат',
 
@@ -1568,7 +1568,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'contributions-title' => 'Теицянть путовксонзо $1 таркантень',
 'mycontris' => 'Монь путовкстнэ',
 'contribsub2' => '$1 ($2) туртов',
-'uctop' => '(меельцесь)',
+'uctop' => '(течеме чинь)',
 'month' => 'Ковстонть (ды седе икеле):',
 'year' => 'Иестэнть (ды седе икеле):',
 
index 83fafcb..37046bf 100644 (file)
@@ -274,7 +274,6 @@ $messages = array(
 'vector-action-protect' => 'زلفن بزوئن',
 'vector-action-undelete' => 'دباره بنویشته بیّن',
 'vector-action-unprotect' => 'زلفن عوض هاکردن',
-'vector-simplesearch-preference' => 'فعال هاکردن پیشنهادون بگردستن پیشرفته (فقط پوسته برداری دله)',
 'vector-view-create' => 'بساتن',
 'vector-view-edit' => 'دچی‌ین',
 'vector-view-history' => 'تاریخچه ره بَدی‌ین',
index 80c990f..2d4662a 100644 (file)
@@ -174,7 +174,6 @@ $messages = array(
 'vector-action-protect' => 'Pó-hō·',
 'vector-action-undelete' => 'chhú-siau thâi tiàu',
 'vector-action-unprotect' => 'Chhú-siau pó-hō·',
-'vector-simplesearch-preference' => 'Chhái-iōng ka-kiông-pán ê chhiau-soh kiàn-gī ( chí hān tī Vector bīn-phoê)',
 'vector-view-create' => 'Khai-sí siá',
 'vector-view-edit' => 'Siu-kái',
 'vector-view-history' => 'khoàⁿ le̍k-sú',
index 52c50ac..d1c2621 100644 (file)
@@ -863,7 +863,7 @@ Hvis du velger å oppgi det, vil det blir anvendt for å gi deg som bruker anerk
 
 # Change password dialog
 'changepassword' => 'Endre passord',
-'resetpass_announce' => 'Du logget inn med en midlertidig e-postkode. For å fullføre innloggingen må du oppgi et nytt passord her:',
+'resetpass_announce' => 'For å fullføre innloggingen må du angi et nytt passord.',
 'resetpass_text' => '<!-- Legg til tekst her -->',
 'resetpass_header' => 'Endre passord',
 'oldpassword' => 'Gammelt passord:',
@@ -879,8 +879,13 @@ Vær vennlig å vente $1 før du prøver igjen.',
 'resetpass-submit-cancel' => 'Avbryt',
 'resetpass-wrong-oldpass' => 'Ugyldig midlertidig eller nåværende passord.
 Du kan ha allerede byttet passordet, eller bedt om et nytt midlertidig passord.',
+'resetpass-recycled' => 'Vær vennlig å endre passordet til noe annen enn gjeldende passord.',
+'resetpass-temp-emailed' => 'Du logget inn med en midlertidig kode sendt på e-post.
+For å avslutte innloggingen må du angi et nytt passord her:',
 'resetpass-temp-password' => 'Midlertidig passord:',
 'resetpass-abort-generic' => 'Endring av passord har blitt avbrutt av en utvidelse.',
+'resetpass-expired' => 'Passordet ditt har utløpt. Vær vennlig å angi et nytt passord for å logge inn.',
+'resetpass-expired-soft' => 'Passordet ditt har utløpt og må endres. Vær vennlig å angi et nytt passord, eller klikk avbryt for å endre det senere.',
 
 # Special:PasswordReset
 'passwordreset' => 'Tilbakestilling av passord',
@@ -2230,6 +2235,7 @@ Hver rad inneholder lenker til første og andre omdirigering, samt målet for de
 'deadendpagestext' => 'Følgende sider lenker ikke til andre sider på {{SITENAME}}.',
 'protectedpages' => 'Låste sider',
 'protectedpages-indef' => 'Kun beskyttelser på ubestemt tid',
+'protectedpages-summary' => 'Denne siden viser en liste av eksisterende sider som for tiden er beskyttet. For å se en liste av sider som er beskyttet mot opprettelse, se [[{{#special:ProtectedTitles}}]].',
 'protectedpages-cascade' => 'Kun dypbeskyttelse',
 'protectedpages-noredirect' => 'Skjul omdirigeringer',
 'protectedpagesempty' => 'Ingen sider er for øyeblikket låst med disse paramterne.',
@@ -2242,6 +2248,7 @@ Hver rad inneholder lenker til første og andre omdirigering, samt målet for de
 'protectedpages-unknown-timestamp' => 'Ukjent',
 'protectedpages-unknown-performer' => 'Ukjent bruker',
 'protectedtitles' => 'Beskyttede titler',
+'protectedtitles-summary' => 'Denne siden viser en liste av eksisterende sider som for tiden er beskyttet mot opprettelse. For å se en liste av sider som er beskyttet, se [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'Ingen titler beskyttes med disse parameterne for øyeblikket.',
 'listusers' => 'Brukerliste',
 'listusers-editsonly' => 'Vis bare brukere med redigeringer',
index d35d71a..fb80ce9 100644 (file)
@@ -362,7 +362,6 @@ $messages = array(
 'vector-action-protect' => 'Schulen',
 'vector-action-undelete' => 'Wedderhalen',
 'vector-action-unprotect' => 'Siedenschuul ännern',
-'vector-simplesearch-preference' => 'Verbeterte Söökvörslääg anstellen (blot mit’n Skin Vector)',
 'vector-view-create' => 'Opstellen',
 'vector-view-edit' => 'Ännern',
 'vector-view-history' => 'Historie bekieken',
index d895307..2b6052f 100644 (file)
@@ -487,7 +487,6 @@ $messages = array(
 'vector-action-protect' => 'Beveiligen',
 'vector-action-undelete' => 'Weerummeplaotsen',
 'vector-action-unprotect' => 'Beveiliging wiezigen',
-'vector-simplesearch-preference' => 'Vereenvoudigd zeuken anzetten (allinnig mit Vector-vormgeving)',
 'vector-view-create' => 'Anmaken',
 'vector-view-edit' => 'Bewarken',
 'vector-view-history' => 'Geschiedenisse bekieken',
index 3f7b6cc..80f7426 100644 (file)
@@ -219,7 +219,6 @@ $messages = array(
 'vector-action-protect' => 'सुरक्षित गर्ने',
 'vector-action-undelete' => 'हटाएको रद्द गर्ने',
 'vector-action-unprotect' => 'सुरक्षा परिवर्तन गर्ने',
-'vector-simplesearch-preference' => 'साधारण खोज सुझावहरु सक्रिय पार्ने (भेक्टर त्वचाको लागि मात्र)',
 'vector-view-create' => 'सृजना गर्ने',
 'vector-view-edit' => 'सम्पादन',
 'vector-view-history' => 'इतिहास हेर्ने',
@@ -331,7 +330,7 @@ $1',
 'youhavenewmessagesfromusers' => 'तपाईंको लागि  {{PLURAL:$3|प्रयोगकर्ता|$3 प्रयोगकर्ताहरु}} ($2) बाट $1',
 'youhavenewmessagesmanyusers' => 'तपाईँलाई धेरै प्रयोगकर्ताहरू($2) बाट $1 छ ।',
 'newmessageslinkplural' => '{{PLURAL:$1|एउटा नयाँ सन्देश|999=नयाँ सन्देशहरू}}',
-'newmessagesdifflinkplural' => 'à¤\85नà¥\8dतिम {{PLURAL:$1|समà¥\8dपादन|समà¥\8dपादनहरू}}',
+'newmessagesdifflinkplural' => 'à¤\85नà¥\8dतिम {{PLURAL:$1|परिवरà¥\8dतन|999=परिवरà¥\8dतनहरू}}',
 'youhavenewmessagesmulti' => 'तपाईंको लागि $1 मा  नयाँ सन्देशहरू छन्',
 'editsection' => 'सम्पादन',
 'editold' => 'सम्पादन गर्ने',
@@ -423,6 +422,7 @@ $1',
 'cannotdelete-title' => 'पृष्ठ  "$1" लाई मेट्न सकिएन',
 'delete-hook-aborted' => 'हुकले सम्पादनकार्य बन्द गरिदियो ।
 कुनै कारण दिइएन ।',
+'no-null-revision' => '$1 पृष्ठको लागि खालि पुनरावलोकन सिर्जना गर्न सकिएन',
 'badtitle' => 'गलत शीर्षक',
 'badtitletext' => 'अनुरोध गरेको पृष्ठ शीर्षक अमान्य, खाली वा गलत रुपमा अन्तर भाषा वा अन्तर विकी सम्बन्ध गरिएको थियो।  यसमा शीर्षकमा प्रयोग गर्न नमिल्ने एक वा बढी अक्षरहरू रहेका हुनसक्छन् ।',
 'perfcached' => 'तलको डाटाहरु क्याचमा रहेका कुराहरु हुन्। अपटुडेट नहुनपनि सक्छन्।अधिकतम {{PLURAL:$1|नतिजा|$1 नतिजाहरू}} क्यासमा उपलब्ध छ।',
@@ -449,6 +449,8 @@ $2',
 'customjsprotected' => 'तपाईलाई यस जाभास्कृप्ट पृष्ठ सम्पादन गर्ने अनुमति छैन, किनकी यसमा कुनै अर्को प्रयोगकर्ताको व्यक्तिगत अभिरुचीहरु संग्रहित छन् ।',
 'mycustomcssprotected' => 'यस CSSपृष्ठ सम्पादन गर्नको लागि लागि तपाईँलाई अनुमति छैन ।',
 'mycustomjsprotected' => 'यस JavaScript पृष्ठ सम्पादन गर्नको लागि लागि तपाईँलाई अनुमति छैन ।',
+'myprivateinfoprotected' => 'तपाईँसँग तपाईँको निजी जानकारीहरू सम्पादन गर्ने अनुमती छैन',
+'mypreferencesprotected' => 'तपाईँसँग तपाईँको अभिरुचीहरू सम्पादन गर्ने अनुमती छैन',
 'ns-specialprotected' => 'विशेष पृष्ठ सम्पादन गर्न सकिदैन ।',
 'titleprotected' => ' [[User:$1|$1]]द्वारा यो शीर्षक निर्माणहुनबाट जोगाइएको छ।
 कारण   "\'\'$2\'\'" हो ।',
@@ -550,7 +552,7 @@ $2',
 'passwordtooshort' => 'पासवर्ड कम्तिमा {{PLURAL:$1|१ अक्षर |$1 अक्षरहरु}}को हुनुपर्छ ।',
 'password-name-match' => 'तपाईँको प्रवेशशव्द प्रयोगकर्ता नाम भन्दा फरक हुनुपर्छ ।',
 'password-login-forbidden' => 'यो प्रयोगकर्ता नाम र प्रवेश शव्द वर्जित गरिएकोछ ।',
-'mailmypassword' => 'नयाà¤\81 à¤ªà¥\8dरवà¥\87शशवà¥\8dद à¤\87मà¥\87ल गर्नुहोस्',
+'mailmypassword' => 'पासवरà¥\8dड à¤ªà¥\82रà¥\8dवनिरà¥\8dधारित गर्नुहोस्',
 'passwordremindertitle' => '{{SITENAME}}को लागि नयाँ अस्थायी पासवर्ड',
 'passwordremindertext' => 'कसैले (सायद तपाईँ, IP ठेगाना $1 बाट), {{SITENAME}}($4) को लागि नयाँ प्रवेशशव्द अनुरोध गर्नुभएको छ । प्रयोगकर्ता "$2" को लागि नयाँ अस्थायी प्रवेशशव्द "$3"तयार पारिएको छ। यदि यो तपाईको इच्छामा भएको भए अहिले तपाईँले प्रवेशगरी नयाँ प्रवेशशव्द छान्नु पर्ने हुन्छ।
 तपाईको अस्थायी प्रवेशशव्द  {{PLURAL:$5|एक दिन|$5 दिनहरू पछि}} अमान्य हुनेछ ।
@@ -562,8 +564,8 @@ $2',
 'passwordsent' => '"$1" को लागि दर्ता गरिएको ई-मेल ठेगानामा एक प्रवेशशव्द पठाइएको छ।
 कृपया त्यसलाई प्राप्त गरेपछि प्रवेश गर्नुहोला ।',
 'blocked-mailpassword' => 'तपाईको IP ठेगानालाई सम्पादनगर्नबाट रोक लगाइएको छ, र त्यसैले दुरुपयोग रोक्नको लागि प्रवेशशव्द पुनर्लाभ प्रक्रिया प्रयोग गर्न अनुमति छैन ।',
-'eauthentsent' => 'दिइएको इमेल ठेगानामा  किटानी इमेल पठाइएको छ ।
-तपाà¤\88à¤\95à¥\8b à¤\96ातामा à¤\85रà¥\81 à¤\87मà¥\87ल à¤ªà¤ à¤\89नà¥\81 à¤\85à¤\98ि , à¤\87मà¥\87लमा à¤²à¥\87à¤\96िà¤\8fà¤\95à¥\8b à¤®à¤¾à¤°à¥\8dà¤\97दरà¥\8dशन à¤\85नà¥\81सार , à¤¤à¥\8dयà¥\8b à¤\96ाता à¤¤à¤ªà¤¾à¤\88à¤\81à¤\95à¥\88 à¤¹à¥\8b à¤­à¤¨à¥\87र à¤¨à¤¿à¤¶à¥\8dà¤\9aित à¤\97राà¤\89नु पर्नेछ ।',
+'eauthentsent' => 'दिइएको इमेल ठेगानामा इमेल पठाइएको छ ।
+तपाà¤\88à¤\81à¤\95à¥\8b à¤\96ातामा à¤\85रà¥\81 à¤\87मà¥\87ल à¤ªà¤ à¤\89नà¥\81 à¤\85à¤\98ि , à¤\87मà¥\87लमा à¤²à¥\87à¤\96िà¤\8fà¤\95à¥\8b à¤®à¤¾à¤°à¥\8dà¤\97दरà¥\8dशन à¤\85नà¥\81सार , à¤¤à¥\8dयà¥\8b à¤\96ाता à¤¤à¤ªà¤¾à¤\88à¤\81à¤\95à¥\88 à¤¹à¥\8b à¤­à¤¨à¥\87र à¤¨à¤¿à¤¶à¥\8dà¤\9aित à¤\97रà¥\8dनु पर्नेछ ।',
 'throttled-mailpassword' => 'बितेको {{PLURAL:$1|घण्टा|$1 घण्टाहरु}} भित्र एउटा प्रवेशशब्द अनुस्मारक पठाई सकिएको छ।
 दुरुपयोगबाट बचाउकोलागि प्रत्येक {{PLURAL:$1|घण्टा|$1 घण्टाहरु}}मा केवल एउटा प्रवेशशब्द अनुस्मारक पठाइन्छ।',
 'mailerror' => ' चिठी :$1 पठाउँदा त्रुटी भयो',
@@ -1301,6 +1303,8 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
 'right-editusercssjs' => 'प्रयोगकर्ताको CSS र JS फाइलहरु सम्पादन गर्ने',
 'right-editusercss' => 'प्रयोगकर्ताको CSS फाइलहरु सम्पादन गर्ने',
 'right-edituserjs' => 'प्रयोकर्ताको  JS फाइलहरु सम्पादनगर्ने',
+'right-editmyusercss' => 'तपाईँको आफ्नो CSS फाइलहरू सम्पादन गर्नुहोस्',
+'right-editmyuserjs' => 'तपाईँको आफ्नो जाभा स्क्रिप्ट फाइलहरू सम्पादन गर्ने',
 'right-rollback' => 'पछिल्लो प्रयोगकर्ताको सम्पादनहरुको छरितो रुपमा पछाडि पर्काउने',
 'right-markbotedits' => 'पछाडि फर्काउने सम्पादनहरुलाई बोट सम्पादनकारुपमा चिनो लगाउने',
 'right-noratelimit' => 'दर सीमाले  असर नपार्ने',
@@ -1580,6 +1584,7 @@ $1',
 'listfiles_size' => 'आकार',
 'listfiles_description' => 'वर्णन',
 'listfiles_count' => 'संस्करणहरु',
+'listfiles-latestversion' => 'हालको संस्करण',
 'listfiles-latestversion-yes' => 'हो',
 'listfiles-latestversion-no' => 'हैन',
 
@@ -1604,6 +1609,7 @@ $1',
 'linkstoimage' => 'यस फाइलमा निम्न{{PLURAL:$1|पृष्ठ जोडिन्छ|$1 पृष्ठहरु जोडिन्छन}}:',
 'nolinkstoimage' => 'यो फाईलसंग लिंकभएको कुनै पृष्ठ छैन.',
 'morelinkstoimage' => 'हेर्नुहोस् [[Special:WhatLinksHere/$1|थप लिंकहरु]] यो फाइलको।',
+'linkstoimage-redirect' => '$1 (फाइल अनुप्रेषण) $2',
 'sharedupload' => 'यो फाइल $1 को हो र अन्य परियोजनामा प्रयोग गरिएको हुनसक्छ।',
 'filepage-nofile' => 'यस नामको फाइल छैन।',
 'filepage-nofile-link' => 'यस नामको फाइल छैन तर तपाईं [$1 यो उर्ध्वभरण गर्न सक्नुहुन्छ].',
@@ -1611,6 +1617,7 @@ $1',
 'shared-repo-from' => ' $1 बाट',
 'shared-repo' => 'एल साझा भण्डार',
 'shared-repo-name-wikimediacommons' => 'विकिमीडिया कमन्स',
+'upload-disallowed-here' => 'तपाईँले यो फाइल अधिलेखन गर्न सक्नुहुन्न ।',
 
 # File reversion
 'filerevert' => 'पूर्वस्थिति $1 मा फर्काउने',
@@ -1682,6 +1689,8 @@ $1',
 'statistics-users-active-desc' => 'प्रयोगकर्ताहरु जो{{PLURAL:$1|बितेको एक दिन|बितेका $1 दिनहरु}}देखि  जो सक्रिय छन्',
 'statistics-mostpopular' => 'सबैभन्दा धेरै हेरिएको पृष्ठहरु',
 
+'pageswithprop-submit' => 'जाने',
+
 'doubleredirects' => 'दोहोरो अनुप्रेषण',
 'double-redirect-fixed-move' => '[[$1]] सारिएको छ।
 यसले [[$2]] तिर अनुप्रेषित गर्दछ।',
@@ -1738,6 +1747,13 @@ $1',
 'protectedpages-indef' => 'नखुलेको सुरक्षा मात्र',
 'protectedpages-cascade' => 'लामबद्ध सुरक्षाहरु मात्रा',
 'protectedpagesempty' => 'दिइएको प्यारामिटर प्रयोग गरि सुरक्षा गरिएका पृष्ठहरु छैनन् ।',
+'protectedpages-page' => 'पृष्ठ',
+'protectedpages-expiry' => 'सकिनेछ',
+'protectedpages-performer' => 'प्रयोगकर्ता सुरक्षित गरिँदै',
+'protectedpages-params' => 'सुरक्षा प्यारामेटर',
+'protectedpages-reason' => 'कारण',
+'protectedpages-unknown-timestamp' => 'अज्ञात',
+'protectedpages-unknown-performer' => 'अज्ञात प्रयोगकर्ता',
 'protectedtitles' => 'सुरक्षा गरिएका शिर्षकहरु',
 'protectedtitlesempty' => 'दिइएको प्यारामिटर प्रयोग गरि सुरक्षा गरिएका शीर्षकहरु छैनन् ।',
 'listusers' => 'प्रयोगकर्ता सूची',
@@ -1844,6 +1860,7 @@ $1',
 'mailnologin' => 'ईमेल पठाउने ठेगाना नै भएन ।',
 'mailnologintext' => 'तपाईले अरु प्रयोगकर्ताहरुलाई ईमेल पठाउनको लागि आफु पहिले [[Special:UserLogin|प्रवेश(लगइन)गरेको]] हुनुपर्छ र [[Special:Preferences|आफ्नो रोजाइहरुमा]] एउटा वैध ईमेल ठेगाना भएको हुनुपर्छ।',
 'emailuser' => 'यो प्रयोगकर्तालाई ई-मेल पठाउनुहोस्',
+'emailuser-title-notarget' => 'प्रयोगकर्तालाई इमेल गर्नुहोस्',
 'emailpage' => 'प्रयोगकर्तालाई इमेल गर्नुहोस्',
 'usermailererror' => 'मेल अब्जेक्टले देखाएको त्रुटि:',
 'defemailsubject' => '{{SITENAME}} प्रयपोगकर्ता "$1" बाट इमेल',
@@ -1992,6 +2009,9 @@ proceed with caution.',
 'rollback-success' => '$1द्वारा उल्टाइएका सम्पादनहरु;
 पछिल्लो संशोधनमा $2द्वारा परिवर्तन गरि पुनः फर्काइएको।',
 
+# Edit tokens
+'sessionfailure-title' => 'सत्र त्रुटी',
+
 # Protect
 'protectlogpage' => 'सुरक्षण लग',
 'protectedarticle' => '"[[$1]]" लाई सुरक्षित गरियो',
@@ -2017,6 +2037,7 @@ proceed with caution.',
 'protect-level-sysop' => 'प्रबन्धकहरु मात्र',
 'protect-summary-cascade' => 'लाममा राख्ने',
 'protect-expiring' => '$1 (UTC) मा सकिने छ ।',
+'protect-expiring-local' => 'समाप्ति समय $1',
 'protect-expiry-indefinite' => 'अनिश्चित काल',
 'protect-cascade' => 'यो पृष्ठमा संलग्न सुरक्षित पृष्ठहरु(लामबद्द सुरक्षा)',
 'protect-cantedit' => 'तपाईँ यस पृष्ठको सुरक्षा स्तर परिवर्तन गर्न सक्नुहुन्न , किन कि तपाईँलाई यसको सम्पादनको अनुमति छैन ।',
@@ -2081,8 +2102,8 @@ $3द्वारा $1को ($4को  समय $5 मा) मेटाइए
 'undeletedrevisions' => '{{PLURAL:$1|एउटा संशोधन|$1 संशोधनहरु}} पुनर्स्थापित गरियो',
 'undeletedrevisions-files' => '{{PLURAL:$1|एउटा संशोधन|$1 संशोधनहरु}} र {{PLURAL:$2|एउटा फाइल|$2 फाइलहरु}} पुनर्स्थापित गरियो',
 'undeletedfiles' => '{{PLURAL:$1|१ फाइल|$1 फाइलहरु }} पूर्वस्थितिमा ल्याइयो',
-'cannotundelete' => 'मेटाएको रद्द गर्ने काम असफल भयो;
-कसैले पहिले नैं मेटाएको रद्द गरिसकेकोछ।',
+'cannotundelete' => 'मेटाएको रद्द गर्ने काम असफल भयो:
+$1',
 'undeletedpage' => "'''$1लाई पूर्वावस्थामा ल्याइयो'''
 भर्खरै मेटाइएको रिकर्डहरु र पुनर्स्थापनाहरु हेर्न [[Special:Log/delete|मेटाइएको लग]]मा जानुहोस्।",
 'undelete-header' => 'भर्खर मेटिएका पृष्ठहरु हेर्न [[Special:Log/delete|मेटाइएका लग]]मा जानुहोस्।',
@@ -2392,6 +2413,7 @@ $1को बन्देजको कारण : "$2" हो',
 'allmessages-prefix' => 'प्रिफिक्स अनुसार फिल्टर:',
 'allmessages-language' => 'भाषा:',
 'allmessages-filter-submit' => 'जाउ',
+'allmessages-filter-translate' => 'अनुवाद गर्ने',
 
 # Thumbnails
 'thumbnail-more' => 'ठूलो बनाउने',
@@ -2554,12 +2576,18 @@ $1को बन्देजको कारण : "$2" हो',
 'pageinfo-header-properties' => 'पृष्ठ गुणहरू',
 'pageinfo-display-title' => 'प्रदर्शन शिर्षक',
 'pageinfo-views' => 'अवलोकन संख्या',
-'pageinfo-watchers' => 'निगरानी कर्ताहरुको संख्या',
-'pageinfo-edits' => 'सम्पादन संख्या',
-'pageinfo-authors' => 'फरक सम्पादकरुको संख्या',
+'pageinfo-watchers' => 'पृष्ठ निगरानी कर्ताहरुको संख्या',
+'pageinfo-edits' => 'कुल सम्पादन संख्या',
+'pageinfo-authors' => 'कुल फरक सम्पादकरूको संख्या',
+'pageinfo-toolboxlink' => 'पृष्ठ जानकारी',
+'pageinfo-redirectsto' => 'अनुप्रेषित',
 'pageinfo-redirectsto-info' => 'जानकारी',
+'pageinfo-contentpage' => 'सामग्री पृष्ठको रुपमा गणना गरिएको',
 'pageinfo-contentpage-yes' => 'हो',
 'pageinfo-protect-cascading-yes' => 'हो',
+'pageinfo-category-pages' => 'पृष्ठहरूको संख्या',
+'pageinfo-category-subcats' => 'उपश्रेणीहरूको संख्या',
+'pageinfo-category-files' => 'फाइलहरूको संख्या',
 
 # Skin names
 'skinname-cologneblue' => 'कोलोग्ने निलो',
@@ -2642,9 +2670,16 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 मिनेट|$1 मिनेटहरु}}',
 'hours' => '{{PLURAL:$1|$1 घण्टा|$1 घण्टाहरु}}',
 'days' => '{{PLURAL:$1|$1 दिन|$1 दिनहरु}}',
+'weeks' => '{{PLURAL:$1|$1 हप्ता|$1 हप्ताहरू}}',
+'months' => '{{PLURAL:$1|$1 महिना|$1 महिनाहरू}}',
+'years' => '{{PLURAL:$1|$1 वर्ष|$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' => 'सोमबार $1 मा',
 'tuesday-at' => 'मङ्गलबार $1मा',
 'wednesday-at' => 'बुधबार $1मा',
@@ -2864,7 +2899,7 @@ $8',
 'exif-compression-34712' => 'जेपेग२०००',
 
 'exif-copyrighted-true' => 'प्रकाशन अधिकार सिमित गरिएको',
-'exif-copyrighted-false' => 'पबà¥\8dलिà¤\95 à¤¡à¥\8bमà¥\87न',
+'exif-copyrighted-false' => 'पà¥\8dराà¤\95ाशन à¤\85धिà¤\95ार à¤¨à¤\96à¥\81लाà¤\87à¤\8fà¤\95à¥\8b',
 
 'exif-photometricinterpretation-2' => 'आरजीबी(रातोहरियोनिलो)',
 
@@ -2875,9 +2910,9 @@ $8',
 'exif-orientation-3' => '180° मा घुमाइएको',
 'exif-orientation-4' => 'लंब रुपमा फ्लिप (Flip) गरिएको',
 'exif-orientation-5' => '९०° घडिको उल्टो दिशामाको परिक्रमा र मास्तिर फर्काइएको(फ्लिप)',
-'exif-orientation-6' => '90° CW घुमाइएको',
+'exif-orientation-6' => 'घडीको उल्टो दिशामा ९०° घुमाइएको',
 'exif-orientation-7' => '९०° घडिको दिशामाको परिक्रमा र मास्तिर फर्काइएको(फ्लिप)',
-'exif-orientation-8' => '९०° à¤\98डिà¤\95à¥\8b à¤\89लà¥\8dà¤\9fà¥\8b à¤¦à¤¿à¤¶à¤¾à¤®à¤¾à¤\95à¥\8b à¤ªà¤°à¤¿à¤\95à¥\8dरमा à¤\97रिएको',
+'exif-orientation-8' => 'à¤\98डिà¤\95à¥\8b à¤¦à¤¿à¤¶à¤¾à¤®à¤¾ à¥¯à¥¦Â° à¤\98à¥\81माà¤\87एको',
 
 'exif-planarconfiguration-1' => 'टुक्रे प्रारुप',
 'exif-planarconfiguration-2' => 'प्लानर प्रारुप',
@@ -3317,6 +3352,10 @@ $5
 'version-software-product' => 'उत्पादन',
 'version-software-version' => 'संस्करण',
 
+# Special:Redirect
+'redirect-submit' => 'जाने',
+'redirect-file' => 'फाइल नाम',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'नक्कल फाइल खोज्ने',
 'fileduplicatesearch-summary' => 'ह्यास मानको आधारमा दुरुस्त नक्कल फाइहरु खोज्ने ।',
@@ -3370,6 +3409,8 @@ $5
 'tags-display-header' => 'परिवर्तन सूचीहरुमाथि झलक',
 'tags-description-header' => 'पूर्ण अर्थको वर्णन',
 'tags-hitcount-header' => 'ट्याग गरिएक परिवर्तनहरू',
+'tags-active-yes' => 'हो',
+'tags-active-no' => 'हैन',
 'tags-edit' => 'सम्पादन गर्नुहोस्',
 'tags-hitcount' => '$1 {{PLURAL:$1|परिवर्तन|परिवर्तनहरु}}',
 
@@ -3389,6 +3430,7 @@ $5
 'dberr-problems' => 'क्षमा पाउँ! यो साइटमा तकनीकी गड़बड़ी आइपरेकोछ।',
 'dberr-again' => 'केही समय पर्खिएर पुन: लोड हुन दिनुहोस् ।',
 'dberr-info' => '(डेटाबेस सर्वर $1सित सम्पर्क साध्न सकिंदैन)',
+'dberr-info-hidden' => '(डेटावेस सर्भरमा सम्पर्क स्थापना गर्न सकिएन)',
 'dberr-usegoogle' => 'तपाईले अहिले गुगलबाट खोज गर्न प्रयास गर्न सक्नुहुन्छ।',
 'dberr-outofdate' => 'कृपया स्मरणमा राख्नुहोस् हाम्रा लेखहरूको सूची जुन उनीहरूले राखेका छन् त्यो अद्यावधिक नहुन सक्छ ।',
 'dberr-cachederror' => 'यो अनुरोध गरिएको पृष्ठको क्याशमा रहेका प्रतिलिपी हो , र अद्यावधिक नहुन सक्छ ।',
@@ -3404,6 +3446,9 @@ $5
 'htmlform-submit' => 'बुझाउने',
 'htmlform-reset' => 'परिवर्तनहरू परित्याग गर्नुहोस्',
 'htmlform-selectorother-other' => 'अन्य',
+'htmlform-no' => 'हैन',
+'htmlform-yes' => 'हो',
+'htmlform-chosen-placeholder' => 'एक विकल्प छान्नुहोस्',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 पूरा पाठ खोज समर्थन सहित',
@@ -3411,7 +3456,12 @@ $5
 
 # New logging system
 'logentry-delete-restore' => '$3 पृष्ठ $1ले पुनर्स्थापित गरेको हो',
+'revdelete-content-hid' => 'सामग्री लुकाइएको',
+'revdelete-summary-hid' => 'सम्पादन सारांस लुकाइएको',
 'revdelete-uname-hid' => 'प्रयोगकर्ताको नाम लुकाइयो',
+'revdelete-content-unhid' => 'सामग्री देखाइएको',
+'revdelete-summary-unhid' => 'सम्पादन सारांस देखाइएको',
+'revdelete-uname-unhid' => 'प्रयोगकर्ता देखाइएको',
 'revdelete-restricted' => 'प्रबन्धकहरुमाथि सीमितता लागू गरियो',
 'revdelete-unrestricted' => 'प्रवन्धककोलागि निषेधहरु हटाइयो ।',
 'logentry-move-move' => '$1 द्वारा $3 पृष्ठलाई $4 मा सारियो',
@@ -3421,6 +3471,7 @@ $5
 'feedback-subject' => 'विषय:',
 'feedback-message' => 'सन्देश:',
 'feedback-cancel' => 'रद्द गर्ने',
+'feedback-submit' => 'प्रतिकृया बुझाउनुहोस्',
 'feedback-error2' => 'त्रुटि: सम्पादन असफल',
 'feedback-close' => 'गरियो',
 
@@ -3456,4 +3507,9 @@ $5
 'api-error-unknownerror' => 'अज्ञात त्रुटि: "$1".',
 'api-error-uploaddisabled' => 'यस विकिमा अपलोड निस्क्रिय गरिएकोछ।',
 
+# Special:ExpandTemplates
+'expand_templates_output' => 'परिणाम',
+'expand_templates_generate_rawhtml' => 'सुद्ध HTML देखाउने',
+'expand_templates_preview' => 'पूर्वावलोकन',
+
 );
index 0e7dfad..18d53ff 100644 (file)
@@ -44,16 +44,13 @@ $digitTransformTable = array(
 $messages = array(
 # User preference toggles
 'tog-underline' => 'लिङ्कतेत अन्दरलाइन यानादिसँ:',
-'tog-justify' => 'अनुच्छेद धंकादिसँ',
 'tog-hideminor' => 'न्हुगु हिलेज्याय् चिधंगु सम्पादन सुचुकादिसँ',
 'tog-extendwatchlist' => 'वाचलिस्टयात परिमार्जित याना सकल स्वेज्युगु हिलेज्या क्यनादिसँ, दकले लिपाया जक्क मखु',
 'tog-usenewrc' => 'एन्ह्यान्स्ड् न्हुगु हिलेज्या (जाभास्क्रिप्ट)',
 'tog-numberheadings' => 'अटो-ल्याखँ हेडिङ',
 'tog-showtoolbar' => 'सम्पादन टुलबार क्यनादिसँ (जाभास्क्रिप्ट)',
 'tog-editondblclick' => 'दबल क्लिकय् पौ सम्पादन यानादिसँ (जाभास्क्रिप्ट)',
-'tog-editsection' => '[सम्पादन] लिङ्कं सेक्सन सम्पादन यायेज्युगु यानादिसँ',
 'tog-editsectiononrightclick' => 'सेक्सनया छ्यँआखले राइट क्लिक याना सेक्सन सम्पादन यायेज्युगु यानादिसँ (जाभास्क्रिप्ट)',
-'tog-showtoc' => 'कन्टेण्टया धलः क्यनादिसँ (३गु स्वया अप्व शिर्षक दुगु पौया निंति)',
 'tog-rememberpassword' => 'जिगु लग इन थ्व कम्प्युतरय् लुमंकादिसँ (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'जिं देकागु / न्ह्यथनागु पौयात जिगु दृष्टिधलः(watchlist)य् तयादिसँ',
 'tog-watchdefault' => 'जिं सम्पादन यानागु पौयात जिगु वाचलिस्टय् तयादिसँ',
@@ -62,7 +59,6 @@ $messages = array(
 'tog-minordefault' => 'सकल सम्पादनतेत डिफल्टं चीधंगु यानादिसँ',
 'tog-previewontop' => 'सम्पादन सन्दुक स्वया न्ह्यः प्रिभ्यु क्यनादिसँ',
 'tog-previewonfirst' => 'न्हापाँगु सम्पादन स्वया न्ह्यः प्रिभ्यु क्यनादिसँ',
-'tog-nocache' => 'पौ क्याशिङ (caching) डिजेबल यानादिसँ',
 'tog-enotifwatchlistpages' => 'जिगु वाचलिस्टया पौ सम्पादन जुइबिले जितः इ-मेल यानादिसँ',
 'tog-enotifusertalkpages' => 'जिगु खँल्हाबल्हा पौ सम्पादन जुइबिले जितः इ-मेल यानादिसँ',
 'tog-enotifminoredits' => 'पौया चीधंगु सम्पादनया निंतिं नं जितः इ-मेल यानादिसँ',
index b02d2b9..e5fab65 100644 (file)
@@ -404,9 +404,9 @@ $messages = array(
 'tog-enotifrevealaddr' => 'Mijn e-mailadres weergeven in e-mailberichten',
 'tog-shownumberswatching' => 'Het aantal gebruikers weergeven dat deze pagina volgt',
 'tog-oldsig' => 'Bestaande ondertekening:',
-'tog-fancysig' => 'Als wikitekst behandelen (zonder automatische koppeling)',
+'tog-fancysig' => 'Interpreteer ondertekening als wikitekst (zonder automatische koppeling)',
 'tog-uselivepreview' => '"Live voorvertoning" gebruiken (experimenteel)',
-'tog-forceeditsummary' => 'Een melding geven bij een lege bewerkingssamenvatting',
+'tog-forceeditsummary' => 'Een melding geven bij een ontbrekende bewerkingssamenvatting',
 'tog-watchlisthideown' => 'Eigen bewerkingen op mijn volglijst verbergen',
 'tog-watchlisthidebots' => 'Botbewerkingen op mijn volglijst verbergen',
 'tog-watchlisthideminor' => 'Kleine bewerkingen op mijn volglijst verbergen',
@@ -418,12 +418,12 @@ $messages = array(
 'tog-showhiddencats' => 'Verborgen categorieën weergeven',
 'tog-noconvertlink' => 'Paginanaamconversie uitschakelen',
 'tog-norollbackdiff' => 'Wijzigingen weglaten na terugdraaien',
-'tog-useeditwarning' => 'U waarschuwen als u een bewerkte pagina die nog niet is opgeslagen wil verlaten',
+'tog-useeditwarning' => 'Waarschuwen als u een bewerkte pagina die nog niet is opgeslagen wilt verlaten',
 'tog-prefershttps' => 'Altijd een beveiligde verbinding gebruiken wanneer u bent aangemeld',
 
 'underline-always' => 'Altijd',
 'underline-never' => 'Nooit',
-'underline-default' => 'Standaard in uw vormgeving of webbrowser',
+'underline-default' => 'Zoals gebruikelijk in gebruikte vormgeving of webbrowser',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Lettertypestijl bewerkingsvenster:',
@@ -822,7 +822,7 @@ Vergeet niet uw [[Special:Preferences|voorkeuren voor {{SITENAME}}]] aan te pass
 'logout' => 'Afmelden',
 'userlogout' => 'Afmelden',
 'notloggedin' => 'Niet aangemeld',
-'userlogin-noaccount' => 'Hebt u geen gebruiker?',
+'userlogin-noaccount' => 'Hebt u geen account?',
 'userlogin-joinproject' => 'Word lid van {{SITENAME}}',
 'nologin' => 'Nog geen gebruikersnaam? $1.',
 'nologinlink' => 'Registreren',
@@ -938,6 +938,9 @@ Wacht alstublieft $1 voordat u het opnieuw probeert.',
 'suspicious-userlogout' => 'Uw verzoek om af te melden is genegeerd, omdat het lijkt alsof het verzoek is verzonden door een browser of cacheproxy die stuk is.',
 'createacct-another-realname-tip' => 'Echte naam is optioneel.
 Als u deze opgeeft, wordt deze naam gebruikt worden om u erkenning te geven voor uw werk.',
+'pt-login' => 'Aanmelden',
+'pt-createaccount' => 'Registreren',
+'pt-userlogout' => 'Afmelden',
 
 # Email sending
 'php-mail-error-unknown' => 'Er is een onbekende fout opgetreden in de mail()-functie van PHP',
@@ -946,8 +949,7 @@ Als u deze opgeeft, wordt deze naam gebruikt worden om u erkenning te geven voor
 
 # Change password dialog
 'changepassword' => 'Wachtwoord wijzigen',
-'resetpass_announce' => 'U bent aangemeld met een tijdelijke code die u per e-mail is toegezonden.
-Voer een nieuw wachtwoord in om het aanmelden te voltooien:',
+'resetpass_announce' => 'Voer een nieuw wachtwoord in om het aanmelden te voltooien:',
 'resetpass_text' => '<!-- Voeg hier tekst toe -->',
 'resetpass_header' => 'Wachtwoord wijzigen',
 'oldpassword' => 'Huidige wachtwoord:',
@@ -963,8 +965,13 @@ Wacht alstublieft $1 voordat u het opnieuw probeert.',
 'resetpass-submit-cancel' => 'Annuleren',
 'resetpass-wrong-oldpass' => 'Het huidige of tijdelijke wachtwoord is ongeldig.
 Mogelijk hebt u uw wachtwoord al gewijzigd of een nieuw tijdelijk wachtwoord aangevraagd.',
+'resetpass-recycled' => 'Gelieve uw wachtwoord op iets anders dan uw huidige wachtwoord in te stellen.',
+'resetpass-temp-emailed' => 'U bent aangemeld met een tijdelijk code die u per e-mail hebt ontvangen.
+Om het inloggen te voltooien moet u hier een nieuw wachtwoord instellen:',
 'resetpass-temp-password' => 'Tijdelijk wachtwoord:',
 'resetpass-abort-generic' => 'De wachtwoordwijziging is afgebroken door een uitbreiding.',
+'resetpass-expired' => 'Uw wachtwoord is verlopen. Stel een nieuw wachtwoord om in te loggen.',
+'resetpass-expired-soft' => 'Uw wachtwoord is verlopen, en moet opnieuw worden ingesteld. Kies een nieuw wachtwoord nu, of klik op Annuleren als u het later opnieuw wilt.',
 
 # Special:PasswordReset
 'passwordreset' => 'Wachtwoord opnieuw instellen',
@@ -1276,7 +1283,7 @@ Hieronder staat de tekst waarin de wijziging ongedaan is gemaakt.
 Controleer voor het opslaan of het resultaat gewenst is.',
 'undo-failure' => 'De wijziging kan niet ongedaan gemaakt worden vanwege andere strijdige wijzigingen.',
 'undo-norev' => 'De bewerking kon niet ongedaan gemaakt worden, omdat die niet bestaat of is verwijderd.',
-'undo-nochange' => 'De bewerking lijkt al ongedaan te zijn gemaakt.',
+'undo-nochange' => 'De bewerking lijkt al ongedaan gemaakt te zijn.',
 'undo-summary' => 'Versie $1 van [[Special:Contributions/$2|$2]] ([[User talk:$2|overleg]]) ongedaan gemaakt',
 'undo-summary-username-hidden' => 'Versie $1 door een verborgen gebruiker ongedaan gemaakt',
 
@@ -1507,6 +1514,7 @@ Probeer een andere zoekopdracht.',
 'searchrelated' => 'gerelateerd',
 'searchall' => 'alle',
 'showingresults' => "Hieronder {{PLURAL:$1|staat '''1''' resultaat|staan '''$1''' resultaten}} vanaf #'''$2'''.",
+'showingresultsinrange' => 'Hieronder {{PLURAL:$1|wordt|worden}} maximaal {{PLURAL:$1|<strong>1</strong> resultaat|<strong>$1 </strong>resultaten}} getoond in het bereik #<strong>$2</strong> tot #<strong>$3</strong>.',
 'showingresultsnum' => "Hieronder {{PLURAL:$3|staat '''1''' resultaat|staan '''$3''' resultaten}} vanaf #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultaat '''$1''' van '''$3'''|Resultaten '''$1 - $2''' van '''$3'''}} voor '''$4'''",
 'search-nonefound' => 'Er zijn geen resultaten voor uw zoekopdracht.',
@@ -1974,6 +1982,7 @@ Vraag iemand die onderdrukte bestandsgegevens kan bekijken om de situatie opnieu
 'php-uploaddisabledtext' => 'Het uploaden van bestanden is uitgeschakeld in PHP.
 Controleer de instelling "file_uploads".',
 'uploadscripted' => 'Dit bestand bevat HTML- of scriptcode die foutief door uw browser kan worden weergegeven.',
+'uploadinvalidxml' => 'De XML in het geüploade bestand kon niet worden geparst.',
 'uploadvirus' => 'Het bestand bevat een virus! Details: $1',
 'uploadjava' => 'Het bestand is een ZIP-bestand dat een Java .class-bestand bevat.
 Het uploaden van Java-bestanden is niet toegestaan omdat hiermee beveiligingsinstellingen omzeild kunnen worden.',
@@ -2352,16 +2361,20 @@ De pagina's zijn ook niet als sjabloon opgenomen.",
 'deadendpagestext' => "De onderstaande pagina's verwijzen niet naar andere pagina's in deze wiki.",
 'protectedpages' => "Beveiligde pagina's",
 'protectedpages-indef' => 'Alleen blokkades zonder vervaldatum',
+'protectedpages-summary' => "Deze pagina geeft de pagina's die momenteel worden beschermd. Voor een lijst van titels die zijn beschermd tegen aanmaken zie: [[{{#special:ProtectedTitles}}]].",
 'protectedpages-cascade' => 'Alleen beveiligingen met de cascade-optie',
 'protectedpages-noredirect' => 'Doorverwijzingen verbergen',
 'protectedpagesempty' => "Er zijn momenteel geen pagina's beveiligd die aan deze voorwaarden voldoen.",
+'protectedpages-timestamp' => 'Tijdstip',
 'protectedpages-page' => 'Pagina',
 'protectedpages-expiry' => 'Verloopt',
+'protectedpages-performer' => 'Beschermd door',
 'protectedpages-params' => 'Beveiligingsopties',
 'protectedpages-reason' => 'Reden',
 'protectedpages-unknown-timestamp' => 'Onbekend',
 'protectedpages-unknown-performer' => 'Onbekende gebruiker',
 'protectedtitles' => 'Beveiligde paginanamen',
+'protectedtitles-summary' => "Deze pagina bevat de titels die momenteel niet mogen worden aangemaakt. Voor de lijst met beveiligde pagina's zie: [[{{#special:ProtectedPages}}]].",
 'protectedtitlesempty' => 'Er zijn geen paginanamen beveiligd die aan deze voorwaarden voldoen.',
 'listusers' => 'Gebruikerslijst',
 'listusers-editsonly' => 'Alleen gebruikers met bewerkingen weergeven',
@@ -2855,7 +2868,7 @@ Geef hieronder een reden op (bijvoorbeeld welke pagina's gevandaliseerd zijn).",
 'ipadressorusername' => 'IP-adres of gebruikersnaam:',
 'ipbexpiry' => 'Vervalt (maak een keuze):',
 'ipbreason' => 'Reden:',
-'ipbreason-dropdown' => "*Veel voorkomende redenen voor blokkades
+'ipbreason-dropdown' => "*Veelvoorkomende redenen voor blokkades
 ** Foutieve informatie invoeren
 ** Verwijderen van informatie uit pagina's
 ** Spamkoppeling naar externe websites
@@ -3138,6 +3151,7 @@ $2',
 'thumbnail_image-type' => 'Dit bestandstype wordt niet ondersteund',
 'thumbnail_gd-library' => 'De instellingen voor de GD-bibliotheek zijn incompleet. De functie $1 ontbreekt',
 'thumbnail_image-missing' => 'Het bestand lijkt niet aanwezig te zijn: $1',
+'thumbnail_image-failure-limit' => 'Er zijn te veel recente mislukte pogingen ($1 of meer) om deze miniatuurafbeelding te genereren. Probeer het later nog eens.',
 
 # Special:Import
 'import' => "Pagina's importeren",
@@ -4394,6 +4408,4 @@ Vrijwel alle tekst tussen dubbele accolades wordt gesubstitueerd.',
 'expand_templates_generate_rawhtml' => 'Ruwe HTML weergeven',
 'expand_templates_preview' => 'Voorvertoning',
 
-# Unknown messages
-'uploadinvalidxml' => 'De XML in het geüploade bestand kon niet worden geparst.',
 );
index ef11ac5..ec6fdce 100644 (file)
@@ -525,7 +525,6 @@ Neem contact op met je internetprovider of je helpdesk en stel die op de hoogte
 'sorbsreason' => 'Je IP-adres staat bekend als open proxyserver in de DNS-blacklist die {{SITENAME}} gebruikt.',
 'sorbs_create_account_reason' => 'Je IP-adres staat bekend als open proxyserver in de DNS-blacklist die {{SITENAME}} gebruikt.
 Je kunt geen gebruiker registreren.',
-'cant-block-while-blocked' => 'Je kunt andere gebruikers niet blokkeren terwijl je zelf geblokkeerd bent.',
 'cant-see-hidden-user' => 'De gebruiker die je probeert te blokken is al geblokkeerd en verborgen.
 Omdat je het recht "hideuser" niet hebt, kun je de blokkade van de gebruiker niet bekijken of bewerken.',
 'ipbblocked' => 'Je kunt geen andere gebruikers (de)blokkeren, omdat je zelf geblokkeerd bent',
@@ -604,7 +603,6 @@ Sla de uitvoer op je eigen computer op, en voeg die daarna hier toe.',
 'tooltip-pt-watchlist' => "Overzicht van pagina's die je volgt",
 'tooltip-pt-mycontris' => 'Overzicht van je bijdragen',
 'tooltip-pt-login' => 'Je wordt van harte uitgenodigd om je aan te melden als gebruiker, maar dit is niet verplicht',
-'tooltip-pt-anonlogin' => 'Je wordt van harte uitgenodigd om je aan te melden als gebruiker, maar dit is niet verplicht',
 'tooltip-ca-edit' => 'Je kunt deze pagina bewerken.
 Gebruik de voorbeeldweergaveknop alvorens te bewaren.',
 'tooltip-ca-viewsource' => 'Deze pagina is beveiligd.
@@ -645,7 +643,6 @@ Het e-mailprogramma meldde: $1',
 'confirmemail_success' => 'Je e-mailadres is bevestigd.
 Je kunt jezelf nu [[Special:UserLogin|aanmelden]] en {{SITENAME}} gebruiken.',
 'confirmemail_loggedin' => 'Je e-mailadres is nu bevestigd.',
-'confirmemail_error' => 'Er is iets verkeerd gegaan tijdens het opslaan van je bevestiging.',
 'confirmemail_body' => 'Iemand, waarschijnlijk jijzelf, met het IP-adres $1,
 heeft zich met dit e-mailadres geregistreerd als gebruiker "$2" op {{SITENAME}}.
 
index eb90f96..0371b7b 100644 (file)
@@ -460,7 +460,7 @@ $messages = array(
 'newwindow' => '(vert opna i eit nytt vindauge)',
 'cancel' => 'Avbryt',
 'moredotdotdot' => 'Meir …',
-'morenotlisted' => 'Meir som ikkje er lista opp …',
+'morenotlisted' => 'Lista er ikkje heil.',
 'mypage' => 'Sida mi',
 'mytalk' => 'Diskusjon',
 'anontalk' => 'Diskusjonside for denne IP-adressa',
@@ -483,7 +483,6 @@ $messages = array(
 'vector-action-protect' => 'Vern',
 'vector-action-undelete' => 'Gjenopprett',
 'vector-action-unprotect' => 'Endra vern',
-'vector-simplesearch-preference' => 'Slå på forenkla søkjefelt (berre for Vector-drakta)',
 'vector-view-create' => 'Opprett',
 'vector-view-edit' => 'Endre',
 'vector-view-history' => 'Sjå historikken',
@@ -562,7 +561,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' => 'Innhaldet er utgjeve under $1.',
+'copyright' => 'Innhaldet er utgjeve under $1 minder anna er oppgjeve.',
 'copyrightpage' => '{{ns:project}}:Opphavsrett',
 'currentevents' => 'Aktuelt',
 'currentevents-url' => 'Project:Aktuelt',
@@ -1472,6 +1471,7 @@ Denne informasjonen vil vera offentleg.',
 'prefs-displaysearchoptions' => 'Val for vising',
 'prefs-displaywatchlist' => 'Val for vising',
 'prefs-diffs' => 'Skilnader',
+'prefs-help-prefershttps' => 'Denne innstillinga vil verta verksam neste gongen du loggar inn.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'E-postadressa ser ut til å vera gyldig',
index c5a6f89..1e20a2a 100644 (file)
@@ -245,7 +245,6 @@ Proba [[Special:Search|sercho sur li wiki]] por relatet pagines.',
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|chanjo|chanjos}}',
 'recentchanges' => 'Resenti chanjos',
-'rcnote' => "Subu es {{PLURAL:$1| '''1''' chanje|li lasti '''$1''' chanjes}} in li lasti {{PLURAL:$2|die|'''$2''' dies}}, fro $4, $5.",
 'rcshowhideminor' => '$1 minori modifikos',
 'rcshowhideanons' => '$1 anonimi useres',
 'rcshowhidemine' => '$1 men modifikos',
index 11c0709..fbd899e 100644 (file)
@@ -226,7 +226,6 @@ $messages = array(
 'nchanges' => '$1 {{PLURAL:$1|łahgo ályaaígíí|łahgo ályaaígíí}}',
 'recentchanges' => 'Áníídí łahgo ályaaígíí',
 'recentchanges-feed-description' => 'áníídí łahgo ályaaígíí',
-'rcnote' => "{{PLURAL:$2|jį́į́dą́ą́ʼ |}} {{PLURAL:$1|'''1''' łahgo ályaaígíí tʼéiyá|'''$1''' łahgo ályaaígíí}}, {{PLURAL:$2||'''$2di''' yiskánídą́ą́ʼ kojįʼ, }} ($5, $4)",
 'rcshowhideminor' => 'naaltsoos tʼáá áłtsʼíísígo łahgo ályaaígíí $1',
 'rcshowhidebots' => "''bots''ígíí $1",
 'rcshowhideliu' => 'chodayoołʼįįhí ééhozinígíí $1',
index c7c8a09..9453467 100644 (file)
@@ -454,7 +454,6 @@ $messages = array(
 'vector-action-protect' => 'Protegir',
 'vector-action-undelete' => 'Restablir',
 'vector-action-unprotect' => 'Suprimir la proteccion',
-'vector-simplesearch-preference' => "Activar la barra de recèrca simplificada (solament per l'abilhatge Vector)",
 'vector-view-create' => 'Crear',
 'vector-view-edit' => 'Modificar',
 'vector-view-history' => "Veire l'istoric",
@@ -827,6 +826,9 @@ Esperatz $1 abans d’ensajar tornarmai.',
 'suspicious-userlogout' => 'Vòstra demanda de desconnexion es estada refusada perque sembla qu’es estada mandada per un navigador copat o la mesa en escondedor d’un proxy.',
 'createacct-another-realname-tip' => 'Lo nom vertadièr es opcional.
 Se decidissètz de lo provesir, serà utilizat per atribuir a l’utilizaire sos trabalhs.',
+'pt-login' => 'Se connectar',
+'pt-createaccount' => 'Crear un compte',
+'pt-userlogout' => 'Se desconnectar',
 
 # Email sending
 'php-mail-error-unknown' => 'Error desconeguda dins la foncion mail() de PHP.',
@@ -835,7 +837,7 @@ Se decidissètz de lo provesir, serà utilizat per atribuir a l’utilizaire sos
 
 # Change password dialog
 'changepassword' => 'Modificacion del senhal',
-'resetpass_announce' => 'Vos sètz enregistrat amb un senhal temporari mandat per corrièr electronic. Per acabar l’enregistrament, vos cal picar un senhal novèl aicí :',
+'resetpass_announce' => 'Per acabar l’enregistrament, vos cal picar un senhal novèl.',
 'resetpass_text' => '<!-- Apondètz lo tèxte aicí -->',
 'resetpass_header' => 'Modificar lo senhal del compte',
 'oldpassword' => 'Senhal ancian :',
@@ -843,6 +845,8 @@ Se decidissètz de lo provesir, serà utilizat per atribuir a l’utilizaire sos
 'retypenew' => 'Confirmar lo senhal novèl :',
 'resetpass_submit' => 'Cambiar lo senhal e s’enregistrar',
 'changepassword-success' => 'Vòstre senhal es estat cambiat amb succès !',
+'changepassword-throttled' => 'Avètz ensajat un tròp grand nombre de connexions darrièrament.
+Esperatz $1 abans d’ensajar tornarmai.',
 'resetpass_forbidden' => 'Los senhals pòdon pas èsser cambiats',
 'resetpass-no-info' => 'Vos cal èsser connectat per aver accès a aquesta pagina.',
 'resetpass-submit-loggedin' => 'Modificar lo senhal',
@@ -855,7 +859,7 @@ Benlèu ja avètz modificat vòstre senhal o demandat un senhal temporari novèl
 # Special:PasswordReset
 'passwordreset' => 'Remesa a zèro del senhal',
 'passwordreset-text-one' => 'Emplenatz aqueste formulari per reïnicializar vòstre senhal.',
-'passwordreset-text-many' => "{{PLURAL:$1|Completatz un d'aqueles camps per reïnicializar vòstre senhal.}}",
+'passwordreset-text-many' => "{{PLURAL:$1|Completatz un d'aqueles camps per recebre un senhal temporari per corrièr electronic.}}",
 'passwordreset-legend' => 'Reïnicializar lo senhal',
 'passwordreset-disabled' => 'La reïnicializacion dels senhals es estada desactivada sus aqueste wiki.',
 'passwordreset-emaildisabled' => 'Las foncionalitats e-mail son estadas desactivadas sus aqueste wiki.',
@@ -1099,7 +1103,9 @@ Existís ja.',
 'content-failed-to-parse' => "Fracàs de l'analisi del contengut de $2 pel modèl $1: $3",
 'invalid-content-data' => 'Donadas del contengut invalidas',
 'content-not-allowed-here' => 'Lo contengut "$1" es pas autorizat sus la pagina [[$2]]',
-'editwarning-warning' => "Quitar aquesta pagina vos farà pèrdre totas las modificacions qu'avètz fachas. Se sètz connectat amb vòstre compte, podètz levar aqueste avertiment dins la seccion « Modificacion » de vòstras preferéncias.",
+'editwarning-warning' => "Quitar aquesta pagina vos farà pèrdre totas las modificacions qu'avètz fachas.
+Se sètz connectat, podètz desactivar aqueste avertiment dins la seccion « {{int:prefs-editing}} » de vòstras preferéncias.",
+'editpage-notsupportedcontentformat-title' => 'Format de contengut pas pres en carga',
 
 # Content models
 'content-model-wikitext' => 'wikitèxte',
@@ -1344,6 +1350,7 @@ Podètz trobar de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULL
 'search-result-score' => 'Pertinéncia : $1%',
 'search-redirect' => '(redireccion cap a $1)',
 'search-section' => '(seccion $1)',
+'search-file-match' => '(correspond al contengut del fichièr)',
 'search-suggest' => 'Avètz volgut dire : $1',
 'search-interwiki-caption' => 'Projèctes fraires',
 'search-interwiki-default' => '$1 resultats :',
@@ -1672,11 +1679,23 @@ Tanben podètz causir de permetre a d’autres de vos contactar per vòstra pagi
 'rcnotefrom' => "Vaquí los cambiaments efectuats dempuèi lo '''$2''' ('''$1''' al maximum).",
 'rclistfrom' => 'Afichar las modificacions novèlas dempuèi lo $1.',
 'rcshowhideminor' => '$1 los cambiaments menors',
+'rcshowhideminor-show' => 'Afichar',
+'rcshowhideminor-hide' => 'Amagar',
 'rcshowhidebots' => '$1 los robòts',
+'rcshowhidebots-show' => 'Afichar',
+'rcshowhidebots-hide' => 'Amagar',
 'rcshowhideliu' => '$1 los utilizaires enregistrats',
+'rcshowhideliu-show' => 'Afichar',
+'rcshowhideliu-hide' => 'Amagar',
 'rcshowhideanons' => '$1 los utilizaires anonims',
+'rcshowhideanons-show' => 'Afichar',
+'rcshowhideanons-hide' => 'Amagar',
 'rcshowhidepatr' => '$1 las modificacions susvelhadas',
+'rcshowhidepatr-show' => 'Afichar',
+'rcshowhidepatr-hide' => 'Amagar',
 'rcshowhidemine' => '$1 mas modificacions',
+'rcshowhidemine-show' => 'Afichar',
+'rcshowhidemine-hide' => 'Amagar',
 'rclinks' => 'Afichar los $1 darrièrs cambiaments efectuats al cors dels $2 darrièrs jorns; $3 cambiaments menors.',
 'diff' => 'dif',
 'hist' => 'ist',
@@ -2153,6 +2172,14 @@ Las entradas <del>barradas</del> son estadas resolgudas.',
 'protectedpages-cascade' => 'Unicament las proteccions en cascada',
 'protectedpages-noredirect' => 'Amagar las redireccions',
 'protectedpagesempty' => 'Cap de pagina es pas protegida actualament.',
+'protectedpages-timestamp' => 'Orodatatge',
+'protectedpages-page' => 'Pagina',
+'protectedpages-expiry' => 'Expira lo',
+'protectedpages-performer' => 'Proteccion de l’utilizaire',
+'protectedpages-params' => 'Paramètres de proteccion',
+'protectedpages-reason' => 'Motiu',
+'protectedpages-unknown-timestamp' => 'Desconegut',
+'protectedpages-unknown-performer' => 'Utilizaire desconegut',
 'protectedtitles' => 'Títols protegits',
 'protectedtitlesempty' => 'Cap de títol es pas actualament protegit amb aquestes paramètres.',
 'listusers' => 'Lista dels participants',
@@ -2867,6 +2894,7 @@ Visitatz la [https://www.mediawiki.org/wiki/Localisation Localizacion MediaWiki]
 'allmessages-prefix' => 'Filtrar per prefix :',
 'allmessages-language' => 'Lenga :',
 'allmessages-filter-submit' => 'Aplicar',
+'allmessages-filter-translate' => 'Tradusir',
 
 # Thumbnails
 'thumbnail-more' => 'Agrandir',
@@ -3807,7 +3835,13 @@ Ensajatz la previsualizacion normala.',
 'version-hook-name' => 'Nom del croquet',
 'version-hook-subscribedby' => 'Definit per',
 'version-version' => '(Version $1)',
-'version-license' => 'Licéncia',
+'version-license' => 'Licéncia de MediaWiki',
+'version-ext-license' => 'Licéncia',
+'version-ext-colheader-license' => 'Licéncia',
+'version-ext-colheader-description' => 'Descripcion',
+'version-ext-colheader-credits' => 'Autors',
+'version-license-title' => 'Licéncia per $1',
+'version-credits-title' => 'Mercejaments per $1',
 'version-poweredby-credits' => "Aqueste wiki fonciona gràcias a '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'autres',
 'version-poweredby-translators' => 'traductors de translatewiki.net',
@@ -3819,7 +3853,7 @@ Ensajatz la previsualizacion normala.',
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Redirigit per fichièr, utilizaire, o ID de revision',
+'redirect' => 'Redirigit per fichièr, utilizaire, pagina o ID de revision.',
 'redirect-legend' => 'Redirigir cap a una pagina o un fichièr',
 'redirect-submit' => 'Validar',
 'redirect-lookup' => 'Recèrca :',
index 2810045..205fa22 100644 (file)
@@ -420,7 +420,6 @@ $messages = array(
 'vector-action-protect' => 'କିଳିବେ',
 'vector-action-undelete' => 'ଲିଭାଇବେ ନାହିଁ',
 'vector-action-unprotect' => 'କିଳିବେ ନାହିଁ',
-'vector-simplesearch-preference' => 'ସରଳ ଖୋଜା ବାରଟିକୁ ସଚଳ କରିବେ (କେବଳ ଭେକ୍ଟର ସ୍କିନ)',
 'vector-view-create' => 'ତିଆରି କରନ୍ତୁ',
 'vector-view-edit' => 'ସମ୍ପାଦନା (Edit)',
 'vector-view-history' => 'ଇତିହାସ',
index 5640200..79f1dd6 100644 (file)
@@ -334,7 +334,6 @@ $messages = array(
 'vector-action-protect' => 'Сæхгæнын',
 'vector-action-undelete' => 'Рацаразын',
 'vector-action-unprotect' => 'Ивын хъахъхъæд',
-'vector-simplesearch-preference' => 'Баиу кæнын æнцонгонд агурыны формæ (Вектор цармæн æрмæст)',
 'vector-view-create' => 'Скæнын',
 'vector-view-edit' => 'Ивын',
 'vector-view-history' => 'Истори',
index 61bdb83..c6686ef 100644 (file)
@@ -352,7 +352,6 @@ $messages = array(
 'vector-action-protect' => 'ਸੁਰੱਖਿਆ',
 'vector-action-undelete' => 'ਹਟਾਉਣਾ-ਵਾਪਸ',
 'vector-action-unprotect' => 'ਸੁਰੱਖਿਆ ਬਦਲੋ',
-'vector-simplesearch-preference' => 'ਸਧਾਰਨ ਖੋਜ ਸਲਾਹ ਪੱਟੀ ਯੋਗ ਕਰੋ (ਸਿਰਫ਼ ਵਿਕਟਰ ਸਕਿੰਨ ਵਿਚ)',
 'vector-view-create' => 'ਬਣਾਓ',
 'vector-view-edit' => 'ਸੋਧੋ',
 'vector-view-history' => 'ਅਤੀਤ ਵੇਖੋ',
index 223994d..9a405f2 100644 (file)
@@ -287,7 +287,6 @@ Pinengneng so $2 para ed listaan na saray abural ran balo.',
 # Block/unblock
 'blockip' => 'Isara ed para ayan manag-usar',
 'ipbreason' => 'Katonongan',
-'ipbreasonotherlist' => 'Arom ya katonongan',
 'ipbsubmit' => 'Isebel ed sayan manag-usar',
 'badipaddress' => 'Aga nayarin IP address',
 'ipusubmit' => 'Aga la isebel so ayan address',
index b7303ae..19d8430 100644 (file)
@@ -151,7 +151,6 @@ $messages = array(
 'vector-action-protect' => 'Garantir',
 'vector-action-undelete' => "N'poin défacher",
 'vector-action-unprotect' => "Canger l'garantie",
-'vector-simplesearch-preference' => "Actionner l'barette pour chés traches simpes (seulemint pour l'habillure Vector)",
 'vector-view-create' => 'Créer',
 'vector-view-edit' => 'Éditer',
 'vector-view-history' => "Vir l'histoère",
index fe31813..841b9b8 100644 (file)
@@ -20,16 +20,13 @@ $fallback = 'de';
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Links unjastritje:',
-'tog-justify' => 'Tatjst em Blocksautz',
 'tog-hideminor' => 'Tjliene Endarunge ute latste Tiet nich wiese',
 'tog-extendwatchlist' => 'Moak dee Oppaussied-List jrata en wies aula Endarunge',
 'tog-usenewrc' => 'Betre Doastalinj (JavaScript es needich)',
 'tog-numberheadings' => 'Ewaschrefte automatisch numerere',
 'tog-showtoolbar' => 'Instrumente-Leist wiese (JavaScript)',
 'tog-editondblclick' => 'Siede mett Dobbeltklick beoabeide (JavaScript)',
-'tog-editsection' => 'Links tom Beoabeide von eenzelne Aufschnette wiese',
 'tog-editsectiononrightclick' => 'Eenzelne Aufschnette mett eenem Rajsch-Klick beoabeide (JavaScript)',
-'tog-showtoc' => 'Wies dee List mettem Enhault (fe Siede mett meea aus dree Ewaschrefte)',
 'tog-rememberpassword' => 'Login bewoare, dee Brucka blift aun disem Computer aunjemaldt',
 'tog-previewontop' => 'Wies Preview bowe em Beoabeide-Fensta',
 'tog-showhiddencats' => "Wies fe'stoakne Kategorien",
@@ -479,7 +476,6 @@ Dee Grunt es: "$2"',
 'tooltip-pt-watchlist' => 'List fonn Siede, op de du oppausst, waut sikj endat',
 'tooltip-pt-mycontris' => 'List fonn diene Biedroage',
 'tooltip-pt-login' => 'Aunmalde wudd scheen senne, es oba nich onbedinjt needich.',
-'tooltip-pt-anonlogin' => 'Aunmalde wudd scheen senne, es oba nich onbedinjt needich.',
 'tooltip-pt-logout' => 'Rut hia',
 'tooltip-ca-talk' => 'Diskussioon ewa dem Ennhault vonne Sied',
 'tooltip-ca-edit' => 'Du kaunst dise Sied beoabeide. Bitte verrem Bewoare dee Eschtmolseene-Funktioon brucke.',
index 2ec50a0..5972860 100644 (file)
@@ -15,6 +15,7 @@
  * @author Chrumps
  * @author Clamira
  * @author Cysioland
+ * @author Dalis
  * @author Debeet
  * @author Derbeth
  * @author Equadus
@@ -22,6 +23,7 @@
  * @author Geitost
  * @author Herr Kriss
  * @author Holek
+ * @author Jacenty359
  * @author Jwitos
  * @author Kaganer
  * @author Kaligula
@@ -316,7 +318,7 @@ $magicWords = array(
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'Podkreślenie linków',
+'tog-underline' => 'Podkreślenie linków:',
 'tog-hideminor' => 'Ukryj drobne edycje w ostatnich zmianach',
 'tog-hidepatrolled' => 'Ukryj sprawdzone edycje w ostatnich zmianach',
 'tog-newpageshidepatrolled' => 'Ukryj sprawdzone strony na liście nowych stron',
@@ -862,6 +864,9 @@ Odczekaj $1 zanim ponowisz próbę.',
 'suspicious-userlogout' => 'Żądanie wylogowania zostało odrzucone ponieważ wygląda na to, że zostało wysłane przez uszkodzoną przeglądarkę lub buforujący serwer proxy.',
 'createacct-another-realname-tip' => 'Wpisanie imienia i nazwiska nie jest obowiązkowe.
 Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje autorstwo.',
+'pt-login' => 'Zaloguj się',
+'pt-createaccount' => 'Utwórz konto',
+'pt-userlogout' => 'Wyloguj',
 
 # Email sending
 'php-mail-error-unknown' => 'Wystąpił nieznany błąd w funkcji PHP mail()',
@@ -870,8 +875,7 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 
 # Change password dialog
 'changepassword' => 'Zmiana hasła',
-'resetpass_announce' => '{{GENDER:|Zalogowałeś|Zalogowałaś}} się, wykorzystując tymczasowe hasło otrzymane poprzez e‐mail.
-Aby zakończyć proces logowania, musisz ustawić nowe hasło:',
+'resetpass_announce' => 'Aby zakończyć proces logowania, musisz ustawić nowe hasło.',
 'resetpass_text' => '<!-- Dodaj tekst -->',
 'resetpass_header' => 'Zmień hasło dla swojego konta',
 'oldpassword' => 'Stare hasło',
@@ -887,8 +891,13 @@ Odczekaj $1, zanim ponowisz próbę.',
 'resetpass-submit-cancel' => 'Anuluj',
 'resetpass-wrong-oldpass' => 'Nieprawidłowe tymczasowe lub aktualne hasło.
 Być może właśnie zmienił{{GENDER:|eś|aś|eś(‐aś)}} swoje hasło lub poprosił{{GENDER:|eś|aś|eś(‐aś)}} o nowe tymczasowe hasło.',
+'resetpass-recycled' => 'Zmień swoje hasło na inne niż aktualne.',
+'resetpass-temp-emailed' => 'Zalogowałeś się dzięki tymczasowemu kodowi.
+Aby dokończyć logowanie, musisz ustawić nowe hasło tutaj:',
 'resetpass-temp-password' => 'Tymczasowe hasło:',
 'resetpass-abort-generic' => 'Zmiana hasła została przerwana przez rozszerzenie.',
+'resetpass-expired' => 'Twoje hasło wygasło. Proszę ustawić nowe hasło do logowania.',
+'resetpass-expired-soft' => 'Twoje hasło wygasło i musi zostać zresetowane. Proszę wybrać nowe hasło albo kliknąć przycisk Anuluj, aby zresetować je później.',
 
 # Special:PasswordReset
 'passwordreset' => 'Wyczyść hasło',
@@ -1160,6 +1169,7 @@ Strona już istnieje.',
 'editwarning-warning' => 'Opuszczenie tej strony może spowodować utratę wprowadzonych przez Ciebie zmian.
 Jeśli jesteś zalogowany, możesz wyłączyć wyświetlanie tego ostrzeżenia w zakładce „{{int:prefs-editing}}” w swoich preferencjach.',
 'editpage-notsupportedcontentformat-title' => 'Nieobsługiwany format zawartości',
+'editpage-notsupportedcontentformat-text' => 'Format zawartości $1 nie jest obsługiwany modelem treści $2.',
 
 # Content models
 'content-model-wikitext' => 'wikitekst',
@@ -1411,6 +1421,7 @@ Zazwyczaj jest to spowodowane przestarzałym linkiem do usuniętej strony. Powó
 'search-result-score' => 'Trafność: $1%',
 'search-redirect' => '(przekierowanie $1)',
 'search-section' => '(sekcja $1)',
+'search-file-match' => '(odpowiada zawartości pliku)',
 'search-suggest' => 'Czy chodziło Ci o: $1',
 'search-interwiki-caption' => 'Projekty siostrzane',
 'search-interwiki-default' => 'Wyniki dla $1:',
@@ -1742,11 +1753,23 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'rcnotefrom' => "Poniżej pokazano zmiany wykonane po '''$2''' (nie więcej niż '''$1''' pozycji).",
 'rclistfrom' => 'Pokaż nowe zmiany od $1',
 'rcshowhideminor' => '$1 drobne zmiany',
+'rcshowhideminor-show' => 'Pokaż',
+'rcshowhideminor-hide' => 'Ukryj',
 'rcshowhidebots' => '$1 boty',
+'rcshowhidebots-show' => 'Pokaż',
+'rcshowhidebots-hide' => 'Ukryj',
 'rcshowhideliu' => '$1 zarejestrowanych',
+'rcshowhideliu-show' => 'Pokaż',
+'rcshowhideliu-hide' => 'Ukryj',
 'rcshowhideanons' => '$1 anonimowych',
+'rcshowhideanons-show' => 'Pokaż',
+'rcshowhideanons-hide' => 'Ukryj',
 'rcshowhidepatr' => '$1 sprawdzone',
+'rcshowhidepatr-show' => 'Pokaż',
+'rcshowhidepatr-hide' => 'Ukryj',
 'rcshowhidemine' => '$1 moje edycje',
+'rcshowhidemine-show' => 'Pokaż',
+'rcshowhidemine-hide' => 'Ukryj',
 'rclinks' => 'Pokaż ostatnie $1 zmian w ciągu ostatnich $2 dni.<br />$3',
 'diff' => 'różn.',
 'hist' => 'hist.',
@@ -1875,6 +1898,8 @@ Sprawdź historię usunięć tamtego pliku zanim prześlesz go ponownie.',
 'uploaddisabledtext' => 'Możliwość przesyłania plików została wyłączona.',
 'php-uploaddisabledtext' => 'Przesyłanie plików PHP zostało zablokowane. Sprawdź ustawienie „file_uploads”.',
 'uploadscripted' => 'Plik zawiera kod HTML lub skrypt, który może zostać błędnie zinterpretowany przez przeglądarkę internetową.',
+'uploadscriptednamespace' => "Ten plik SVG zawiera niepoprawną nazwę '$1'",
+'uploadinvalidxml' => 'Nie udało się przeanalizować XML w załadowanym pliku.',
 'uploadvirus' => 'W pliku jest wirus! Szczegóły: $1',
 'uploadjava' => 'Ten plik zawiera deklarację klasy Java skompresowaną ZIP.
 Przesyłanie plików Java nie jest dozwolone, ponieważ mogłoby zostać użyte do obchodzenia zabezpieczeń.',
@@ -2247,6 +2272,7 @@ Każdy wiersz zawiera linki do pierwszego i drugiego przekierowania oraz link, d
 'deadendpagestext' => 'Poniższe strony nie posiadają odnośników do innych stron znajdujących się w {{GRAMMAR:MS.lp|{{SITENAME}}}}.',
 'protectedpages' => 'Strony zabezpieczone',
 'protectedpages-indef' => 'Tylko strony zabezpieczone na zawsze',
+'protectedpages-summary' => 'Ta strona zawiera istniejące strony które są chronione. Aby uzyskać listę tytułów których stworzenie jest zabronione, zobacz [[{{#special:ProtectedTitles}}]].',
 'protectedpages-cascade' => 'Tylko strony zabezpieczone rekursywnie',
 'protectedpages-noredirect' => 'Ukryj przekierowania',
 'protectedpagesempty' => 'Żadna strona nie jest obecnie zabezpieczona z podanymi parametrami.',
@@ -2259,6 +2285,7 @@ Każdy wiersz zawiera linki do pierwszego i drugiego przekierowania oraz link, d
 'protectedpages-unknown-timestamp' => 'Nieznane',
 'protectedpages-unknown-performer' => 'Użytkownik nieznany',
 'protectedtitles' => 'Zabezpieczone nazwy stron',
+'protectedtitles-summary' => 'Ta strona zawiera tytuły, których tworzenie jest zabronione. Aby zobaczyć listę istniejących stron które są chronione, odwiedź tą stronę [[{{#special:ProtectedPages}}]]',
 'protectedtitlesempty' => 'Dla tych ustawień dopuszczalne jest utworzenie stron o dowolnej nazwie.',
 'listusers' => 'Lista użytkowników',
 'listusers-editsonly' => 'Pokaż tylko użytkowników z edycjami',
@@ -2708,6 +2735,7 @@ Poniżej znajduje się ostatni wpis w rejestrze blokowania.',
 'sp-contributions-search' => 'Szukaj wkładu',
 'sp-contributions-username' => 'Adres IP lub nazwa użytkownika',
 'sp-contributions-toponly' => 'Pokaż wyłącznie ostatnie wersje',
+'sp-contributions-newonly' => 'Pokazuj wyłącznie stworzenia stron',
 'sp-contributions-submit' => 'Szukaj',
 
 # What links here
@@ -3068,6 +3096,7 @@ Brak katalogu dla plików tymczasowych.',
 'import-error-special' => 'Strona „$1” nie została zaimportowana, ponieważ należy do specjalnej przestrzeni nazw, która nie zezwala na strony.',
 'import-error-invalid' => 'Strona „$1” nie została zaimportowana, ponieważ jej nazwa jest nieprawidłowa.',
 'import-error-unserialize' => 'Wersja $2 strony "$1" nie może zostać odserializowana. Wersja używa modelu treści $3 zserializowanego jako $4',
+'import-error-bad-location' => 'Zmiana $2 używająca modelu danych $3 nie może zostać zapisana na "$1" na tej wiki, ze względu na to, że ten model danych nie jest wspierany na tej stronie.',
 'import-options-wrong' => '{{PLURAL:$2|Niepoprawna opcja|Niepoprawne opcje}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Wskazana strona główna jest niepoprawna.',
 'import-rootpage-nosubpage' => 'Przestrzeń nazw "$1" strony głównej nie dopuszcza stron podrzędnych.',
@@ -4245,6 +4274,7 @@ W przeciwnym wypadku można użyć prostego formularza poniżej. Komentarz zosta
 'api-error-overwrite' => 'Nadpisanie istniejącego pliku nie jest dopuszczalne.',
 'api-error-stashfailed' => 'Błąd wewnętrzny – serwer nie mógł zapisać pliku tymczasowego.',
 'api-error-publishfailed' => 'Błąd wewnętrzny: serwer nie mógł zapisać pliku tymczasowego.',
+'api-error-stasherror' => 'Wystąpił błąd podczas przesyłania pliku.',
 'api-error-timeout' => 'Serwer nie odpowiedział w oczekiwanym czasie.',
 'api-error-unclassified' => 'Wystąpił nieznany błąd',
 'api-error-unknown-code' => 'Błąd nieznany – „$1”',
index 96996b4..1e12fb3 100644 (file)
@@ -582,6 +582,9 @@ Për piasì, ch'a speta $1 prima ëd prové torna.",
 'suspicious-userlogout' => "Soa arcesta ëd seurte dal sistema a l'é stàita arfudà përchè a smija com s'a fussa stàita mandà da 'n navigador rot o da l'archiviassion an local d'un prëstanòm.",
 'createacct-another-realname-tip' => "Ël nòm ver a l'é opsional.
 S'a decid ëd butelo, a sarà dovrà për dé a l'utent ël mérit ëd sò travaj.",
+'pt-login' => 'Rintré ant ël sistema',
+'pt-createaccount' => 'Creé un cont',
+'pt-userlogout' => 'Seurte dal sistema',
 
 # Email sending
 'php-mail-error-unknown' => 'Eror pa conossù ant la funsion mail() ëd PHP.',
@@ -590,7 +593,7 @@ S'a decid ëd butelo, a sarà dovrà për dé a l'utent ël mérit ëd sò trava
 
 # Change password dialog
 'changepassword' => 'Cangé la ciav',
-'resetpass_announce' => "A l'é rintrà ant ël sistema con na ciav provisòria mandà për pòsta eletrònica. Për podèj livré la procedura a l'ha da butesse na ciav neuva ambelessì:",
+'resetpass_announce' => "Për podèj livré la procedura a l'ha da butesse na ciav neuva.",
 'resetpass_text' => '<!-- Gionté ël test ambelessì -->',
 'resetpass_header' => 'Cangé la ciav dël cont',
 'oldpassword' => 'Veja ciav:',
@@ -606,8 +609,13 @@ Për piasì, ch'a speta $1 prima ëd prové torna.",
 'resetpass-submit-cancel' => 'Anulé',
 'resetpass-wrong-oldpass' => "Ciav provisòria o corenta nen bon-a.
 Peul desse ch'a l'ha già cambià la ciav o a l'ha ciamà na neuva ciav provisòria.",
+'resetpass-recycled' => "Për piasì, ch'a cangia soa ciav an cheicòs ëd diferent da soa ciav atual.",
+'resetpass-temp-emailed' => "A l'é rintrà ant ël sistema con un còdes temporani mandà për pòsta eletrònica.
+Për finì ëd rintré ant ël sistema, a dev definì na neuva ciav ambelessì:",
 'resetpass-temp-password' => 'Ciav provisòria:',
 'resetpass-abort-generic' => "La modìfica ëd la ciav a l'é stàita anulà da n'estension.",
+'resetpass-expired' => "Soa ciav a l'é scadùa. Për piasì, ch'a definissa na ciav neuva për rintré ant ël sistema.",
+'resetpass-expired-soft' => "Soa ciav a l'é scadùa e a l'ha damanca d'esse arnovà. Për piasì, ch'a serna na neuva ciav adess o ch'a sgnaca su anulé për cangela pi tard.",
 
 # Special:PasswordReset
 'passwordreset' => 'Ri-inissialisassion ëd la ciav',
@@ -1459,11 +1467,23 @@ Costa anformassion a sarà pùblica.",
 'rcnotefrom' => ' Ambelessì sota a-i é la lista dle modìfiche da <b>$2</b> (fin-a a <b>$1</b>).',
 'rclistfrom' => 'Mostré le modìfiche a parte da $1',
 'rcshowhideminor' => '$1 le modìfiche cite',
+'rcshowhideminor-show' => 'Smon-e',
+'rcshowhideminor-hide' => 'Stërmé',
 'rcshowhidebots' => '$1 ij trigomiro',
+'rcshowhidebots-show' => 'Smon-e',
+'rcshowhidebots-hide' => 'Stërmé',
 'rcshowhideliu' => "$1 j'utent registrà",
+'rcshowhideliu-show' => 'Smon-e',
+'rcshowhideliu-hide' => 'Stërmé',
 'rcshowhideanons' => "$1 j'utent anònim",
+'rcshowhideanons-show' => 'Smon-e',
+'rcshowhideanons-hide' => 'Stërmé',
 'rcshowhidepatr' => '$1 le modìfiche verificà',
+'rcshowhidepatr-show' => 'Smon-e',
+'rcshowhidepatr-hide' => 'Stërmé',
 'rcshowhidemine' => '$1 mie modìfiche',
+'rcshowhidemine-show' => 'Smon-e',
+'rcshowhidemine-hide' => 'Stërmé',
 'rclinks' => "Mostré j'ùltime $1 modìfiche ëd j'ùltim $2 dì<br />$3",
 'diff' => 'dif.',
 'hist' => 'stòria',
@@ -1593,6 +1613,7 @@ A dovrìa ciamé a cheidun con la possibilità ëd vëdde ij dàit dj'archivi el
 'php-uploaddisabledtext' => "Ij cariament d'archivi a son disabilità an PHP.
 Për piasì, ch'a controla l'ampostassion file_uploads.",
 'uploadscripted' => "St'archivi-sì a l'ha andrinta chèich-còs (dël còdes HTML ò pura un senari) che a podrìa esse travajà mal da chèich programa ëd navigassion.",
+'uploadinvalidxml' => "L'XML ant l'archivi carià a l'ha nen podù esse analisà.",
 'uploadvirus' => "St'archivi-sì a l'han andrinta un '''vìrus!''' Detaj: $1",
 'uploadjava' => "L'archivi a l'é n'archivi ZIP ch'a conten n'archivi Java .class.
 As peulo pa cariesse dj'archivi Java, përché a peulo causé l'agirament ëd le restrission ëd sicurëssa.",
@@ -3978,6 +3999,4 @@ An efet, a espand praticament tut lòn ch'a-i é antrames dle grafe dobie.",
 'expand_templates_generate_rawhtml' => "Smon-e l'HTML sempi",
 'expand_templates_preview' => 'Preuva',
 
-# Unknown messages
-'uploadinvalidxml' => "L'XML ant l'archivi carià a l'ha nen podù esse analisà.",
 );
index 47a6968..1b94c0d 100644 (file)
@@ -170,7 +170,6 @@ $messages = array(
 'vector-action-protect' => 'بچاؤ',
 'vector-action-undelete' => 'واپس لیاؤ',
 'vector-action-unprotect' => 'تبدیلی بچاؤ',
-'vector-simplesearch-preference' => 'کھوج چ چنگے مشورے آن کرو',
 'vector-view-create' => 'بناؤ',
 'vector-view-edit' => 'لکھو',
 'vector-view-history' => 'تریخ وکھاؤ',
index 1a9aa80..253e579 100644 (file)
@@ -60,7 +60,6 @@ $dateFormats = array(
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Υπογράμμιση συνδεσμίων:',
-'tog-justify' => 'Στοίχισην παραγραφίων',
 'tog-editondblclick' => 'Άλλαγμαν σελιδίων με διπλόν κλικ (JavaScript)',
 'tog-previewonfirst' => 'Δείξον πρώτον τέρεμαν σο πρώτον άλλαγμαν',
 'tog-shownumberswatching' => "Δείξον τοι χρήστς π' δεαβάζνε",
@@ -576,7 +575,6 @@ $messages = array(
 'lineno' => 'Γραμμή $1:',
 'compareselectedversions' => 'Γαρσουλαεύτε...',
 'editundo' => 'αναίρεση',
-'diff-multi' => "({{PLURAL:$1|Μίαν αλλαγήν|$1 αλλαγάς}} 'κ δεκνίζκουνταν.)",
 
 # Search results
 'searchresults' => 'Εύρον αποτελέσματα',
index 46ba229..c658a6a 100644 (file)
@@ -321,7 +321,6 @@ $messages = array(
 'vector-action-protect' => 'ژغورل',
 'vector-action-undelete' => 'ناړنگول',
 'vector-action-unprotect' => 'ژغورنه بدلول',
-'vector-simplesearch-preference' => 'د پلټنې ساده پټه چارنول (يوازې په وېکټور پوښۍ کار کوي)',
 'vector-view-create' => 'جوړول',
 'vector-view-edit' => 'سمول',
 'vector-view-history' => 'پېښليک کتل',
@@ -583,7 +582,7 @@ $1',
 'userlogin-resetlink' => 'د ننوتلو مالومات مو هېر شوي؟',
 'userlogin-resetpassword-link' => 'پټنوم مو هېر شوی؟',
 'userlogin-createanother' => 'بل گڼون جوړول',
-'createacct-join' => 'خپÙ\84 Ù\85اÙ\84Ù\88Ù\85ات Ù\84اÙ\86دÛ\90 Ù\88رکÚ\93Û\8d',
+'createacct-join' => 'خپÙ\84 Ù\85اÙ\84Ù\88Ù\85ات Ù\85Ù\88 Ù\84اÙ\86دÛ\90 Ù\88رکÚ\93ئ.',
 'createacct-emailrequired' => 'برېښليک پته',
 'createacct-emailoptional' => 'برېښليک پته (اختياري)',
 'createacct-email-ph' => 'برېښليک پته مو وټاپۍ',
@@ -595,7 +594,7 @@ $1',
 'createacct-reason-ph' => 'ولې تاسې بل گڼون جوړول غوااړۍ',
 'createacct-captcha' => 'امنيتي تدبير',
 'createacct-imgcaptcha-ph' => 'پورته تاسې ته ښکاره شوی متن وټاپۍ',
-'createacct-submit' => 'گڼون مو جوړ کړۍ',
+'createacct-submit' => 'گڼون مو جوړ کړئ',
 'createacct-another-submit' => 'بل گڼون جوړول',
 'createacct-benefit-heading' => '{{SITENAME}} ستاسې په شان خلکو لخوا جوړ شوی.',
 'createacct-benefit-body1' => '{{PLURAL:$1|سمون|سمونونه}}',
@@ -1024,6 +1023,7 @@ $1',
 'preferences' => 'غوره توبونه',
 'mypreferences' => 'غوره توبونه',
 'prefs-edits' => 'د سمونو شمېر:',
+'prefsnologintext2' => 'د غوره توبونو بدلون لپاره مو $1 ترسره کړئ.',
 'prefs-skin' => 'پوښۍ',
 'skin-preview' => 'مخکتنه',
 'datedefault' => 'هېڅ نه ټاکل',
@@ -1263,8 +1263,8 @@ $1',
 'hide' => 'پټول',
 'show' => 'ښکاره کول',
 'minoreditletter' => 'و',
-'newpageletter' => 'نوی',
-'boteditletter' => 'روباټ',
+'newpageletter' => 'ن',
+'boteditletter' => 'ر',
 'number_of_watching_users_pageview' => '[$1  {{PLURAL:$1|کارن|کارنان}} يې ګوري]',
 'rc_categories_any' => 'هر يو',
 'rc-change-size-new' => '$1 {{PLURAL:$1|بايټ|بايټونه}} د بدلون وروسته',
index 1b69c79..526946f 100644 (file)
@@ -342,10 +342,10 @@ $messages = array(
 'tog-minordefault' => 'Por omissão, marcar todas as edições como menores',
 'tog-previewontop' => 'Mostrar a antevisão antes da caixa de edição',
 'tog-previewonfirst' => 'Mostrar a antevisão na primeira edição',
-'tog-enotifwatchlistpages' => 'Notificar-me por correio electrónico quando uma página ou ficheiro vigiado for alterado',
-'tog-enotifusertalkpages' => 'Notificar-me por correio electrónico quando a minha página de discussão é editada',
-'tog-enotifminoredits' => 'Notificar-me por correio electrónico também sobre edições menores de páginas ou ficheiros',
-'tog-enotifrevealaddr' => 'Revelar o meu endereço de correio electrónico nas notificações',
+'tog-enotifwatchlistpages' => 'Notificar-me por correio eletrónico quando uma página ou ficheiro vigiado for alterado',
+'tog-enotifusertalkpages' => 'Notificar-me por correio eletrónico quando a minha página de discussão é editada',
+'tog-enotifminoredits' => 'Notificar-me por correio eletrónico também sobre edições menores de páginas ou ficheiros',
+'tog-enotifrevealaddr' => 'Revelar o meu endereço de correio eletrónico nas notificações',
 'tog-shownumberswatching' => 'Mostrar o número de utilizadores a vigiar',
 'tog-oldsig' => 'Assinatura existente:',
 'tog-fancysig' => 'Tratar assinatura como texto wiki (sem link automático)',
@@ -357,7 +357,7 @@ $messages = array(
 'tog-watchlisthideliu' => 'Esconder edições de utilizadores autenticados ao listar mudanças às páginas vigiadas',
 'tog-watchlisthideanons' => 'Esconder edições de utilizadores anónimos ao listar mudanças às páginas vigiadas',
 'tog-watchlisthidepatrolled' => 'Esconder edições patrulhadas ao listar mudanças às páginas vigiadas',
-'tog-ccmeonemails' => 'Enviar-me cópias das mensagens por correio electrónico que eu enviar a outros utilizadores',
+'tog-ccmeonemails' => 'Enviar-me cópias das mensagens por correio eletrónico que eu enviar a outros utilizadores',
 'tog-diffonly' => 'Não mostrar o conteúdo da página ao comparar duas edições',
 'tog-showhiddencats' => 'Mostrar categorias ocultas',
 'tog-noconvertlink' => 'Impossibilitar a conversão dos títulos de links',
@@ -751,7 +751,7 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências]].'
 'userlogin-remembermypassword' => 'Manter-me autenticado',
 'userlogin-signwithsecure' => 'Use uma ligação segura',
 'yourdomainname' => 'O seu domínio:',
-'password-change-forbidden' => 'Não pode alterar senhas nesta wiki.',
+'password-change-forbidden' => 'Não pode alterar palavras-chave nesta wiki.',
 'externaldberror' => 'Ocorreu um erro externo à base de dados durante a autenticação ou não lhe é permitido atualizar a sua conta externa.',
 'login' => 'Autenticação',
 'nav-login-createaccount' => 'Entrar / criar conta',
@@ -831,82 +831,89 @@ Se o pedido foi feito por si, entre agora na sua conta e escolha uma palavra-cha
 A palavra-chave temporária expira após {{PLURAL:$5|um dia|$5 dias}}.
 
 Caso outra pessoa tenha feito o pedido, ou se entretanto se recordou da sua palavra-chave e já não deseja alterá-la, ignore esta mensagem e continue a utilizar a palavra-chave antiga.',
-'noemail' => 'Não foi registado um endereço de correio electrónico para o utilizador "$1".',
-'noemailcreate' => 'Precisa de fornecer um endereço de correio electrónico válido',
-'passwordsent' => 'Foi enviada uma palavra-chave nova para o endereço de correio electrónico do utilizador "$1".
+'noemail' => 'Não foi registado um endereço de correio eletrónico para o utilizador "$1".',
+'noemailcreate' => 'Tem de fornecer um endereço de correio eletrónico válido',
+'passwordsent' => 'Foi enviada uma palavra-chave nova para o endereço de correio eletrónico do utilizador "$1".
 Volte a autenticar-se após recebê-la, por favor.',
 'blocked-mailpassword' => 'O seu endereço IP foi bloqueado e, portanto, não será possível utilizar a função de recuperação da palavra-chave, para prevenir o uso abusivo.',
-'eauthentsent' => 'Foi enviada uma mensagem de confirmação para o endereço de correio electrónico que elegeu.
+'eauthentsent' => 'Foi enviada uma mensagem de confirmação para o endereço de correio eletrónico que especificou.
 Antes que seja enviada qualquer outra mensagem para a conta, terá de seguir as instruções na mensagem enviada, de modo a confirmar que a conta lhe pertence.',
 'throttled-mailpassword' => 'Já foi enviada um email de recuperação de palavra-chave {{PLURAL:$1|na última hora|nas últimas $1 horas}}.
 Para prevenir abusos, só um email de recuperação de palavra-chave pode ser enviado a cada {{PLURAL:$1|hora|$1 horas}}.',
 'mailerror' => 'Erro ao enviar correio: $1',
 'acct_creation_throttle_hit' => 'Visitantes desta wiki com o seu endereço IP criaram $1 {{PLURAL:$1|conta|contas}} no último dia, o que é o máximo permitido neste período de tempo.
 Em resultado, visitantes com este endereço IP não podem criar mais nenhuma conta neste momento.',
-'emailauthenticated' => 'O seu endereço de correio electrónico foi confirmado a $2, às $3.',
-'emailnotauthenticated' => 'O seu endereço de correio electrónico ainda não foi confirmado.
-Não serão enviados emails de nenhuma das seguintes funcionalidades.',
+'emailauthenticated' => 'O seu endereço de correio eletrónico foi confirmado a $2, às $3.',
+'emailnotauthenticated' => 'O seu endereço de correio eletrónico ainda não foi confirmado.
+Não lhe serão enviadas mensagens por nenhuma das seguintes funcionalidades.',
 'noemailprefs' => 'Especifique um endereço de correio eletrónico nas suas preferências para ativar estas funcionalidades.',
-'emailconfirmlink' => 'Confirme o seu endereço de correio electrónico',
+'emailconfirmlink' => 'Confirme o seu endereço de correio eletrónico',
 'invalidemailaddress' => 'O endereço de correio eletrónico não pode ser aceite porque parece ter um formato inválido.
 Introduza um endereço formatado corretamente ou deixe o campo vazio.',
-'cannotchangeemail' => 'Os endereços de correio electrónico das contas não podem ser alterados nesta wiki.',
-'emaildisabled' => 'Este site não consegue enviar e-mails.',
+'cannotchangeemail' => 'Os endereços de correio eletrónico das contas não podem ser alterados nesta wiki.',
+'emaildisabled' => 'Este site não consegue enviar mensagens de correio eletrónico.',
 'accountcreated' => 'Conta criada',
 'accountcreatedtext' => 'A conta de utilizador para [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) foi criada.',
 'createaccount-title' => 'Criação de conta na {{SITENAME}}',
-'createaccount-text' => 'Alguém criou uma conta com o nome $2 para o seu endereço de correio electrónico, na wiki {{SITENAME}} ($4), com a palavra-chave "$3".
+'createaccount-text' => 'Alguém criou uma conta com o nome $2 para o seu endereço de correio eletrónico, na wiki {{SITENAME}} ($4), com a palavra-chave "$3".
 Deve agora autenticar-se e alterar a sua palavra-chave.
 
 Se a conta foi criada por engano, pode ignorar esta mensagem.',
 'usernamehasherror' => 'O nome de utilizador não pode conter o símbolo de cardinal (#).',
-'login-throttled' => 'Você realizou demasiadas tentativas de autenticação com esta conta.
+'login-throttled' => 'Realizou demasiadas tentativas de autenticação com esta conta.
 Aguarde $1 antes de tentar novamente, por favor.',
 'login-abort-generic' => 'A sua autenticação não teve êxito - Cancelada',
 'loginlanguagelabel' => 'Língua: $1',
 'suspicious-userlogout' => 'O seu pedido para sair foi negado porque parece ter sido enviado por um browser danificado ou por um proxy com cache.',
 'createacct-another-realname-tip' => 'O fornecimento do nome verdadeiro é opcional.
 Se optar por revelá-lo, ele será utilizado para atribuir-lhe crédito pelo seu trabalho.',
+'pt-login' => 'Autenticação',
+'pt-createaccount' => 'Criar uma conta',
+'pt-userlogout' => 'Sair',
 
 # Email sending
 'php-mail-error-unknown' => 'Erro desconhecido na função mail() do PHP',
-'user-mail-no-addy' => 'Tentou enviar uma mensagem sem um endereço de correio electrónico',
-'user-mail-no-body' => 'Tentou mandar email sem conteúdo ou com conteúdo demasiado pequeno.',
+'user-mail-no-addy' => 'Tentou enviar uma mensagem sem um endereço de correio eletrónico.',
+'user-mail-no-body' => 'Tentou enviar uma mensagem sem conteúdo ou com um conteúdo demasiado pequeno.',
 
 # Change password dialog
 'changepassword' => 'Alterar palavra-chave',
-'resetpass_announce' => 'Autenticou-se usando uma palavra-chave temporária enviada por correio electrónico.
-Para prosseguir, será necessário definir uma nova palavra-chave.',
+'resetpass_announce' => 'Para completar a autenticação, tem de definir uma palavra-chave nova.',
 'resetpass_text' => '<!-- Adicionar texto aqui -->',
 'resetpass_header' => 'Alterar palavra-chave da conta',
 'oldpassword' => 'Palavra-chave anterior:',
 'newpassword' => 'Palavra-chave nova:',
 'retypenew' => 'Repita a palavra-chave nova:',
 'resetpass_submit' => 'Definir palavra-chave e entrar',
-'changepassword-success' => 'A sua palavra-chave foi alterada com êxito!',
-'changepassword-throttled' => 'Você realizou demasiadas tentativas de autenticação com esta conta.
-Por favor, aguarde $1 antes de tentar novamente.',
+'changepassword-success' => 'A sua palavra-chave foi alterada!',
+'changepassword-throttled' => 'Realizou demasiadas tentativas de autenticação com esta conta.
+Aguarde $1 antes de tentar novamente, por favor.',
 'resetpass_forbidden' => 'Não é possível alterar palavras-chave',
 'resetpass-no-info' => 'Precisa estar autenticado para aceder diretamente a esta página.',
 'resetpass-submit-loggedin' => 'Alterar palavra-chave',
 'resetpass-submit-cancel' => 'Cancelar',
 'resetpass-wrong-oldpass' => 'Palavra-chave temporária ou atual inválida.
 Pode ter já alterado com sucesso a sua palavra-chave ou solicitado uma nova palavra-chave temporária.',
+'resetpass-recycled' => 'Redefina a sua palavra-chave para uma diferente da atual, por favor.',
+'resetpass-temp-emailed' => 'Autenticou-se usando um código temporário.
+Para completar a autenticação, tem de definir uma palavra-chave nova aqui:',
 'resetpass-temp-password' => 'Palavra-chave temporária:',
-'resetpass-abort-generic' => 'A alteração da senha foi cancelada por uma extensão.',
+'resetpass-abort-generic' => 'A alteração da palavra-chave foi cancelada por uma extensão.',
+'resetpass-expired' => 'A sua palavra-chave expirou. Para autenticar-se, defina uma nova.',
+'resetpass-expired-soft' => 'A sua palavra-chave expirou e tem de ser redefinida. Escolha uma nova agora ou clique cancelar para redefini-la mais tarde.',
 
 # Special:PasswordReset
-'passwordreset' => 'Repor palavra-chave',
-'passwordreset-text-one' => 'Preencha este formulário para repor a sua palavra-passe.',
-'passwordreset-text-many' => '{{PLURAL:$1|Preencha um dos campos para redefinir sua senha via correio eletrónico.}}',
-'passwordreset-legend' => 'Reiniciar a palavra-chave',
-'passwordreset-disabled' => 'O reinício da palavra-chave foi impossibilitado nesta wiki.',
-'passwordreset-emaildisabled' => 'Recursos de e-mail foram desativados neste wiki.',
+'passwordreset' => 'Redefinir palavra-chave',
+'passwordreset-text-one' => 'Preencha este formulário para receber uma palavra-passe temporária por correio eletrónico.',
+'passwordreset-text-many' => '{{PLURAL:$1|Preencha um dos campos para receber uma palavra-chave temporária por correio eletrónico.}}',
+'passwordreset-legend' => 'Redefinir palavra-chave',
+'passwordreset-disabled' => 'A redefinição da palavra-chave foi impossibilitada nesta wiki.',
+'passwordreset-emaildisabled' => 'A funcionalidade de correio eletrónico foi desativada nesta wiki.',
 'passwordreset-username' => 'Nome de utilizador:',
 'passwordreset-domain' => 'Domínio:',
-'passwordreset-capture' => 'Ver o email resultante?',
-'passwordreset-capture-help' => 'Se marcar esta caixa, poderá ver a mensagem (com a senha temporária) que será enviada ao utilizador.',
-'passwordreset-email' => 'Correio electrónico:',
+'passwordreset-capture' => 'Ver a mensagem resultante?',
+'passwordreset-capture-help' => 'Se marcar esta caixa, a mensagem (com a palavra-chave temporária) ser-lhe-á mostrada e enviada ao utilizador.',
+'passwordreset-email' => 'Correio eletrónico:',
 'passwordreset-emailtitle' => 'Detalhes da conta na {{SITENAME}}',
 'passwordreset-emailtext-ip' => 'Alguém (provavelmente você, a partir do endereço IP $1) pediu a recuperação da palavra-passe no projeto {{SITENAME}} ($4). {{PLURAL:$3|A seguinte conta de utilizador está associada|As seguintes contas de utilizador estão associadas}} a este correio eletrónico:
 
@@ -923,22 +930,22 @@ Deve autenticar-se e escolher uma palavra-passe nova agora. Se outra pessoa fez
 'passwordreset-emailelement' => 'Utilizador: $1
 Palavra-chave temporária: $2',
 'passwordreset-emailsent' => 'Foi enviado um correio eletrónico para recuperação da palavra-passe.',
-'passwordreset-emailsent-capture' => 'Foi enviado um e-mail de recuperação da palavra-passe, que é mostrado abaixo.',
-'passwordreset-emailerror-capture' => 'Foi gerado o e-mail de reposição de palavra-passe mostrado abaixo, contudo falhou o seu envio para {{GENDER:$2|o utilizador|a utilizadora}}: $1',
+'passwordreset-emailsent-capture' => 'Foi enviado um correio eletrónico para recuperação da palavra-passe, que é mostrado abaixo.',
+'passwordreset-emailerror-capture' => 'Foi gerado um correio eletrónico para redefinição da palavra-chave, mostrado abaixo, mas o seu envio para {{GENDER:$2|o utilizador|a utilizadora}} falhou: $1',
 
 # Special:ChangeEmail
-'changeemail' => 'Alterar o endereço de correio electrónico',
-'changeemail-header' => 'Alterar o endereço de correio electrónico da conta',
-'changeemail-text' => 'Preencha este formulário para alterar o endereço de correio electrónico. Para confirmar esta alteração terá de introduzir a sua palavra-chave.',
-'changeemail-no-info' => 'Para aceder diretamente a esta página tem de estar autenticado.',
-'changeemail-oldemail' => 'Correio electrónico actual:',
-'changeemail-newemail' => 'Correio electrónico novo:',
+'changeemail' => 'Alterar o endereço de correio eletrónico',
+'changeemail-header' => 'Alterar o endereço de correio eletrónico da conta',
+'changeemail-text' => 'Preencha este formulário para alterar o endereço de correio eletrónico. Para confirmar esta alteração terá de introduzir a sua palavra-chave.',
+'changeemail-no-info' => 'Tem de autenticar-se para aceder diretamente a esta página.',
+'changeemail-oldemail' => 'Correio eletrónico atual:',
+'changeemail-newemail' => 'Correio eletrónico novo:',
 'changeemail-none' => '(nenhum)',
 'changeemail-password' => 'A sua senha na wiki {{SITENAME}}:',
-'changeemail-submit' => 'Alterar correio electrónico',
+'changeemail-submit' => 'Alterar correio eletrónico',
 'changeemail-cancel' => 'Cancelar',
-'changeemail-throttled' => 'Você realizou demasiadas tentativas de autenticação com esta conta.
-Por favor, aguarde $1 antes de tentar novamente.',
+'changeemail-throttled' => 'Realizou demasiadas tentativas de autenticação com esta conta.
+Aguarde $1 antes de tentar novamente, por favor.',
 
 # Special:ResetTokens
 'resettokens' => 'Redefinir chaves',
@@ -994,25 +1001,23 @@ Se clicar novamente \"{{int:savearticle}}\", a sua edição será gravada sem as
 'summary-preview' => 'Antevisão do resumo:',
 'subject-preview' => 'Antevisão do assunto/cabeçalho:',
 'blockedtitle' => 'O utilizador está bloqueado',
-'blockedtext' => 'O seu nome de utilizador ou endereço IP foram bloqueados
+'blockedtext' => '<strong>O seu nome de utilizador ou endereço IP foram bloqueados.</strong>
 
 O bloqueio foi realizado por $1.
-O motivo apresentado foi \'\'$2\'\'.
+O motivo apresentado foi <em>$2</em>.
 
 * Início do bloqueio: $8
 * Expiração do bloqueio: $6
 * Destinatário do bloqueio: $7
 
 Pode contactar $1 ou outro [[{{MediaWiki:Grouppage-sysop}}|administrador]] para discutir o bloqueio.
-
-Note que para utilizar a funcionalidade "Contactar utilizador" precisa de ter um endereço de correio electrónico válido nas suas [[Special:Preferences|preferências de utilizador]] e de não lhe ter sido bloqueado o uso desta funcionalidade.
-
+Note que para utilizar a funcionalidade "Contactar utilizador" precisa de ter um endereço de correio eletrónico válido nas suas [[Special:Preferences|preferências]] e de não lhe ter sido bloqueado o uso desta funcionalidade.
 O seu endereço IP neste momento é $3 e a identificação (ID) do bloqueio é #$5.
 Inclua todos os detalhes acima em quaisquer contactos relacionados com este bloqueio, por favor.',
-'autoblockedtext' => 'O seu endereço IP foi bloqueado de forma automática, uma vez que foi utilizado recentemente por outro utilizador, o qual foi bloqueado por $1.
+'autoblockedtext' => 'O seu endereço IP foi bloqueado de forma automática porque foi utilizado recentemente por outro utilizador, o qual foi bloqueado por $1.
 O motivo apresentado foi:
 
-:\'\'$2\'\'
+:<em>$2</em>
 
 * Início do bloqueio: $8
 * Expiração do bloqueio: $6
@@ -1020,15 +1025,15 @@ O motivo apresentado foi:
 
 Pode contactar $1 ou outro [[{{MediaWiki:Grouppage-sysop}}|administrador]] para discutir o bloqueio.
 
-Note que para utilizar a funcionalidade "Contactar utilizador" precisa de ter um endereço de correio electrónico válido nas suas [[Special:Preferences|preferências de utilizador]] e de não lhe ter sido bloqueado o uso desta funcionalidade.
+Note que para utilizar a funcionalidade "Contactar utilizador" precisa de ter um endereço de correio eletrónico válido nas suas [[Special:Preferences|preferências]] e de não lhe ter sido bloqueado o uso desta funcionalidade.
 
 O seu endereço IP neste momento é $3 e a identificação (ID) do bloqueio é #$5.
 Inclua todos os detalhes acima em quaisquer contactos relacionados com este bloqueio, por favor.',
 'blockednoreason' => 'sem motivo especificado',
 'whitelistedittext' => 'Precisa de $1 para poder editar páginas.',
-'confirmedittext' => 'Precisa de confirmar o seu endereço de correio electrónico antes de começar a editar páginas.
+'confirmedittext' => 'Precisa de confirmar o seu endereço de correio eletrónico antes de começar a editar páginas.
 Introduza e valide o endereço através das [[Special:Preferences|preferências do utilizador]], por favor.',
-'nosuchsectiontitle' => 'Não foi possível encontrar a seção',
+'nosuchsectiontitle' => 'Não foi possível encontrar a secção',
 'nosuchsectiontext' => 'Tentou editar uma secção que não existe.
 Ela pode ter sido movida ou removida enquanto estava a ver a página.',
 'loginreqtitle' => 'Autenticação necessária',
@@ -1058,8 +1063,8 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'userpage-userdoesnotexist' => 'A conta "<nowiki>$1</nowiki>" não se encontra registada.
 Verifique se deseja realmente criar ou editar esta página, por favor.',
 'userpage-userdoesnotexist-view' => 'A conta de utilizador "$1" não está registada.',
-'blocked-notice-logextract' => 'Este utilizador encontra-se atualmente bloqueado.
-Para referência, o último registro de bloqueio é apresentado abaixo:',
+'blocked-notice-logextract' => 'Este utilizador está bloqueado.
+Para referência, o último registo de bloqueio é apresentado abaixo:',
 'clearyourcache' => "'''Nota:''' Após gravar, terá de limpar a ''cache'' do seu browser para ver as alterações.
 *'''Firefox / Safari:''' Pressione ''Shift'' enquanto clica ''Recarregar'', ou pressione ''Ctrl-F5'' ou ''Ctrl-R'' (''⌘-R'' no Mac)
 *'''Google Chrome:''' Pressione ''Ctrl-Shift-R'' (''⌘-Shift-R'' no Mac)
@@ -1207,8 +1212,8 @@ Depois grave as alterações, para finalizar e desfazer a edição.',
 'undo-failure' => 'Não foi possível desfazer a edição por conflito com alterações intermédias.',
 'undo-norev' => 'Não foi possível desfazer a edição porque ela não existe ou foi apagada.',
 'undo-nochange' => 'A edição parece já ter sido desfeita.',
-'undo-summary' => 'Desfeita a edição $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussão]])',
-'undo-summary-username-hidden' => 'Desfazer a revisão  $1  por um usuário oculto',
+'undo-summary' => 'Desfez a edição $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussão]])',
+'undo-summary-username-hidden' => 'Desfez a edição $1 de um utilizador oculto',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Não é possível criar uma conta',
@@ -1429,6 +1434,7 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-result-score' => 'Relevancia: $1%',
 'search-redirect' => '(redirecionamento de $1)',
 'search-section' => '(seção $1)',
+'search-file-match' => '(coincide com o conteúdo do ficheiro)',
 'search-suggest' => 'Será que queria dizer: $1',
 'search-interwiki-caption' => 'Projetos irmãos',
 'search-interwiki-default' => 'Resultados de $1:',
@@ -1438,7 +1444,7 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'searchrelated' => 'relacionados',
 'searchall' => 'todos',
 'showingresults' => "{{PLURAL:$1|É apresentado '''um''' resultado|São apresentados até '''$1''' resultados}} abaixo{{PLURAL:$1||, começando pelo '''$2'''º}}.",
-'showingresultsinrange' => 'Mostrando abaixo até {{PLURAL:$1|strong>1</strong>resultado|strong>$1</strong> resultados}} entre #<strong>$2</strong> e #<strong>$3</strong>.',
+'showingresultsinrange' => 'Apresenta-se abaixo {{PLURAL:$1|<strong>1</strong> resultado|até <strong>$1</strong> resultados}} no intervalo #<strong>$2</strong> a #<strong>$3</strong>.',
 'showingresultsnum' => "{{PLURAL:$3|É apresentado '''um''' resultado|São apresentados '''$3''' resultados}} abaixo{{PLURAL:$3||, começando pelo '''$2'''º}}.",
 'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1–$2''' de '''$3'''}} para '''$4'''",
 'search-nonefound' => 'A pesquisa não produziu resultados.',
@@ -1476,9 +1482,9 @@ Note, no entanto, que a indexação da {{SITENAME}} neste motor de busca pode es
 'prefs-watchlist-token' => 'Chave secreta da lista de páginas vigiadas:',
 'prefs-misc' => 'Diversos',
 'prefs-resetpass' => 'Alterar palavra-chave',
-'prefs-changeemail' => 'Alterar correio electrónico',
-'prefs-setemail' => 'Definir um endereço de correio electrónico',
-'prefs-email' => 'Opções do correio electrónico',
+'prefs-changeemail' => 'Alterar correio eletrónico',
+'prefs-setemail' => 'Definir um endereço de correio eletrónico',
+'prefs-email' => 'Opções do correio eletrónico',
 'prefs-rendering' => 'Aparência',
 'saveprefs' => 'Gravar',
 'restoreprefs' => 'Repor todas as configurações padrão (em todas as secções)',
@@ -1512,7 +1518,7 @@ Qualquer pessoa que conheça a chave será capaz de ler a sua lista de páginas
 'timezoneregion-europe' => 'Europa',
 'timezoneregion-indian' => 'Oceano Índico',
 'timezoneregion-pacific' => 'Oceano Pacífico',
-'allowemail' => 'Aceitar correio electrónico de outros utilizadores',
+'allowemail' => 'Aceitar correio eletrónico de outros utilizadores',
 'prefs-searchoptions' => 'Pesquisa',
 'prefs-namespaces' => 'Espaços nominais',
 'defaultns' => 'Por omissão, pesquisar nestes espaços nominais:',
@@ -1525,7 +1531,7 @@ Qualquer pessoa que conheça a chave será capaz de ler a sua lista de páginas
 As suas preferências serão modificadas para os valores predefinidos do site.
 Esta operação não pode ser desfeita.',
 'prefs-emailconfirm-label' => 'Confirmação do endereço:',
-'youremail' => 'Correio electrónico:',
+'youremail' => 'Correio eletrónico:',
 'username' => 'Nome de {{GENDER:$1|utilizador|utilizadora}}:',
 'uid' => 'Identificação de {{GENDER:$1|utilizador|utilizadora}}:',
 'prefs-memberingroups' => '{{GENDER:$2|Membro}} {{PLURAL:$1|do grupo|dos grupos}}:',
@@ -1546,12 +1552,12 @@ Não deverá conter mais de $1 {{PLURAL:$1|carácter|caracteres}}.',
 'prefs-help-gender' => 'Esta preferência é opcional.
 O software usa o seu valor para o endereçar e para o mencionar a outros usando o género gramatical apropriado.
 Esta informação será pública.',
-'email' => 'Correio electrónico',
+'email' => 'Correio eletrónico',
 'prefs-help-realname' => 'O fornecimento do nome verdadeiro é opcional.
 Se optar por revelá-lo, ele será utilizado para atribuir-lhe crédito pelo seu trabalho.',
-'prefs-help-email' => 'Opcional: o endereço de correio electrónico é opcional, mas será necessário para reiniciar a palavra-chave caso esqueça a antiga.',
-'prefs-help-email-others' => 'Também pode optar por permitir que outros entrem em contacto consigo por correio electrónico, através de um link nas suas páginas de utilizador ou de discussão, sem revelar o seu endereço de correio electrónico.',
-'prefs-help-email-required' => 'É necessário o endereço de correio electrónico.',
+'prefs-help-email' => 'Opcional: o endereço de correio eletrónico é opcional, mas será necessário para redefinir a palavra-chave caso esqueça a antiga.',
+'prefs-help-email-others' => 'Também pode optar por permitir que outros entrem em contacto consigo por correio eletrónico, através de um link nas suas páginas de utilizador ou de discussão, sem revelar o seu endereço de correio eletrónico.',
+'prefs-help-email-required' => 'É necessário o endereço de correio eletrónico.',
 'prefs-info' => 'Informações básicas',
 'prefs-i18n' => 'Internacionalização',
 'prefs-signature' => 'Assinatura',
@@ -1570,7 +1576,7 @@ Se optar por revelá-lo, ele será utilizado para atribuir-lhe crédito pelo seu
 'prefs-tokenwatchlist' => 'Chave',
 'prefs-diffs' => 'Diferenças',
 'prefs-help-prefershttps' => 'Esta preferência terá efeito no seu próximo início de sessão.',
-'prefs-tabs-navigation-hint' => 'Dica: Você pode utilizar as setas direita-esquerda do teclado para navegar entre as guias na lista.',
+'prefs-tabs-navigation-hint' => 'Dica: Pode usar as setas direita e esquerda do teclado para navegar entre os separadores.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Parece válido',
@@ -1658,7 +1664,7 @@ Se optar por revelá-lo, ele será utilizado para atribuir-lhe crédito pelo seu
 'right-suppressrevision' => 'Rever e restaurar revisões ocultadas dos administradores',
 'right-suppressionlog' => 'Ver registos privados',
 'right-block' => 'Impedir outros utilizadores de editarem',
-'right-blockemail' => 'Impedir um utilizador de enviar correio electrónico',
+'right-blockemail' => 'Impedir um utilizador de enviar correio eletrónico',
 'right-hideuser' => 'Bloquear um nome de utilizador, escondendo-o do público',
 'right-ipblock-exempt' => 'Contornar bloqueios de IP, bloqueios automáticos e bloqueios de gamas de IPs',
 'right-proxyunbannable' => 'Contornar bloqueios automáticos de proxies',
@@ -1691,8 +1697,8 @@ Se optar por revelá-lo, ele será utilizado para atribuir-lhe crédito pelo seu
 'right-userrights-interwiki' => 'Editar privilégios de utilizadores noutras wikis',
 'right-siteadmin' => 'Bloquear e desbloquear a base de dados',
 'right-override-export-depth' => 'Exportar páginas incluindo páginas ligadas até uma profundidade de 5',
-'right-sendemail' => 'Enviar correio electrónico a outros utilizadores',
-'right-passwordreset' => 'Ver emails de reposição de palavras-chave',
+'right-sendemail' => 'Enviar correio eletrónico a outros utilizadores',
+'right-passwordreset' => 'Ver mensagens de redefinição da palavra-chave',
 
 # Special:Log/newusers
 'newuserlogpage' => 'Registo de criação de utilizadores',
@@ -1762,11 +1768,23 @@ Se optar por revelá-lo, ele será utilizado para atribuir-lhe crédito pelo seu
 'rcnotefrom' => 'Abaixo estão as mudanças desde <b>$2</b> (mostradas até <b>$1</b>).',
 'rclistfrom' => 'Mostrar as novas mudanças a partir das $1',
 'rcshowhideminor' => '$1 edições menores',
+'rcshowhideminor-show' => 'Mostrar',
+'rcshowhideminor-hide' => 'Esconder',
 'rcshowhidebots' => '$1 robôs',
+'rcshowhidebots-show' => 'Mostrar',
+'rcshowhidebots-hide' => 'Esconder',
 'rcshowhideliu' => '$1 utilizadores registados',
+'rcshowhideliu-show' => 'Mostrar',
+'rcshowhideliu-hide' => 'Esconder',
 'rcshowhideanons' => '$1 utilizadores anónimos',
+'rcshowhideanons-show' => 'Mostrar',
+'rcshowhideanons-hide' => 'Esconder',
 'rcshowhidepatr' => '$1 edições patrulhadas',
+'rcshowhidepatr-show' => 'Mostrar',
+'rcshowhidepatr-hide' => 'Esconder',
 'rcshowhidemine' => '$1 as minhas edições',
+'rcshowhidemine-show' => 'Mostrar',
+'rcshowhidemine-hide' => 'Esconder',
 'rclinks' => 'Mostrar as últimas $1 mudanças nos últimos $2 dias<br />$3',
 'diff' => 'dif',
 'hist' => 'his',
@@ -1809,7 +1827,7 @@ As suas [[Special:Watchlist|páginas vigiadas]] aparecem a '''negrito'''.",
 Para sua conveniência, é apresentado de seguida o registo de eliminação e de movimento da página:",
 'uploadtext' => "Utilize o formulário abaixo para fazer upload de ficheiros novos.
 Para ver ou pesquisar ficheiros anteriormente enviados, consulte a [[Special:FileList|lista de ficheiros]].
-Os reenvios de um ficheiro são também registrados no [[Special:Log/upload|registro de uploads]] e as eliminações no [[Special:Log/delete|registro de eliminações]].
+Os reenvios de um ficheiro são também registados no [[Special:Log/upload|registo de uploads]] e as eliminações no [[Special:Log/delete|registo de eliminações]].
 
 Para utilizar um ficheiro numa página, depois de ter feito o upload, insira um link com um dos seguintes formatos:
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:ficheiro.jpg]]</nowiki></code>''' para mostrar uma imagem nas suas dimensões originais;
@@ -1886,6 +1904,7 @@ Caso deseje, mesmo assim, carregar o seu ficheiro, volte atrás e envie-o com um
 'file-exists-duplicate' => 'Este ficheiro é um duplicado {{PLURAL:$1|do seguinte|dos seguintes}}:',
 'file-deleted-duplicate' => 'Um ficheiro idêntico a este ([[:$1]]) foi eliminado anteriormente.
 Verifique o motivo da eliminação do ficheiro antes de prosseguir com o re-envio.',
+'file-deleted-duplicate-notitle' => 'Um ficheiro idêntico já foi eliminado e o seu título suprimido. Devia pedir a alguém capaz de ver os dados dos ficheiros eliminados para verificar a situação antes de carregá-lo novamente.',
 'uploadwarning' => 'Aviso de envio',
 'uploadwarning-text' => 'Modifique a descrição do ficheiro abaixo e tente novamente, por favor.',
 'savefile' => 'Gravar ficheiro',
@@ -1898,6 +1917,7 @@ Verifique o motivo da eliminação do ficheiro antes de prosseguir com o re-envi
 'php-uploaddisabledtext' => 'O carregamento de ficheiros está impossibilitado no PHP.
 Verifique a configuração file_uploads, por favor.',
 'uploadscripted' => 'Este ficheiro contém HTML ou código que pode ser erradamente interpretado por um browser.',
+'uploadinvalidxml' => 'Erro detectado na análise do XML do ficheiro carregado.',
 'uploadvirus' => 'O ficheiro contém um vírus! Detalhes: $1',
 'uploadjava' => 'Este é um ficheiro ZIP que contém um ficheiro .class de Java.
 Não é permitido o upload de ficheiros Java, porque estes podem contornar as restrições de segurança.',
@@ -2163,6 +2183,7 @@ Talvez queira editar a descrição na [$2 página original de descrição do fic
 'randompage-nopages' => 'Não há páginas {{PLURAL:$2|no seguinte espaço nominal|nos seguintes espaços nominais}}: $1.',
 
 # Random page in category
+'randomincategory' => 'Página aleatória na categoria',
 'randomincategory-invalidcategory' => '"$1" não é um nome de categoria válido',
 'randomincategory-nopages' => 'Não há páginas na categoria [[:Category:$1|$1]].',
 'randomincategory-selectcategory' => 'Obter página aleatória da categoria: $1 $2',
@@ -2228,6 +2249,7 @@ Agora redirecciona para [[$2]].',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|ligação|ligações}}',
 'nmembers' => '$1 {{PLURAL:$1|membro|membros}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|membro|membros}}',
 'nrevisions' => '$1 {{PLURAL:$1|edição|edições}}',
 'nviews' => '$1 {{PLURAL:$1|visita|visitas}}',
 'nimagelinks' => 'Usada {{PLURAL:$1|numa página|em $1 páginas}}',
@@ -2265,10 +2287,20 @@ Agora redirecciona para [[$2]].',
 'deadendpagestext' => 'As seguintes páginas não contêm links para outras páginas na {{SITENAME}}.',
 'protectedpages' => 'Páginas protegidas',
 'protectedpages-indef' => 'Apenas proteções indefinidas',
+'protectedpages-summary' => 'Esta página lista as páginas protegidas. Para ver os títulos protegidos, cuja criação está impossibilitada, consulte [[{{#special:ProtectedTitles}}]].',
 'protectedpages-cascade' => 'Apenas proteções em cascata',
 'protectedpages-noredirect' => 'Esconder redirecionamentos',
 'protectedpagesempty' => 'Neste momento, nenhuma das páginas está protegida com estes parâmetros.',
+'protectedpages-timestamp' => 'Data e hora',
+'protectedpages-page' => 'Página',
+'protectedpages-expiry' => 'Expira em',
+'protectedpages-performer' => 'Protetor',
+'protectedpages-params' => 'Parâmetros de proteção',
+'protectedpages-reason' => 'Motivo',
+'protectedpages-unknown-timestamp' => 'Desconhecido',
+'protectedpages-unknown-performer' => 'Utilizador desconhecido',
 'protectedtitles' => 'Títulos protegidos',
+'protectedtitles-summary' => 'Esta página lista os títulos protegidos, cuja criação está impossibilitada. Para ver as páginas protegidas consulte [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'Neste momento, nenhum dos títulos está protegido com estes parâmetros.',
 'listusers' => 'Utilizadores',
 'listusers-editsonly' => 'Mostrar apenas utilizadores com edições',
@@ -2394,32 +2426,32 @@ Encontram-se disponíveis [[{{MediaWiki:Listgrouprights-helppage}}|informações
 
 # Email user
 'mailnologin' => 'Não existe endereço de envio',
-'mailnologintext' => 'Precisa de estar [[Special:UserLogin|autenticado]] e possuir um endereço de correio válido nas suas [[Special:Preferences|preferências]], para poder enviar correio electrónico a outros utilizadores.',
-'emailuser' => 'Enviar correio electrónico a este utilizador',
+'mailnologintext' => 'Precisa de estar [[Special:UserLogin|autenticado]] e ter um endereço de correio válido nas suas [[Special:Preferences|preferências]], para poder enviar correio eletrónico a outros utilizadores.',
+'emailuser' => 'Enviar correio eletrónico a este utilizador',
 'emailuser-title-target' => 'Enviar correio eletrónico a {{GENDER:$1|este utilizador|esta utilizadora}}',
-'emailuser-title-notarget' => 'Enviar correio electrónico ao utilizador',
-'emailpage' => 'Enviar correio electrónico ao utilizador',
+'emailuser-title-notarget' => 'Enviar correio eletrónico ao utilizador',
+'emailpage' => 'Enviar correio eletrónico ao utilizador',
 'emailpagetext' => 'Pode usar o formulário abaixo para enviar uma mensagem por correio eletrónico para {{GENDER:$1|este utilizador|esta utilizadora}}.
 O endereço de correio que introduziu nas [[Special:Preferences|suas preferências]] irá aparecer no campo do remetente da mensagem "De:", para que o destinatário lhe possa responder diretamente.',
 'usermailererror' => 'O sistema de correio devolveu o erro:',
-'defemailsubject' => 'Correio electrónico da {{SITENAME}}, do utilizador "$1"',
-'usermaildisabled' => 'Correio eletrónico do utilizador foi desativado',
-'usermaildisabledtext' => 'Não pode enviar correio electrónico aos outros utilizadores desta wiki',
-'noemailtitle' => 'Sem endereço de correio electrónico',
-'noemailtext' => 'Este utilizador não especificou um endereço de correio electrónico válido.',
-'nowikiemailtitle' => 'Correio electrónico não é permitido',
-'nowikiemailtext' => 'Este utilizador optou por não receber correio electrónico de outros utilizadores.',
+'defemailsubject' => 'Correio eletrónico da {{SITENAME}}, do utilizador "$1"',
+'usermaildisabled' => 'O correio eletrónico do utilizador foi desativado',
+'usermaildisabledtext' => 'Não pode enviar correio eletrónico a outros utilizadores desta wiki',
+'noemailtitle' => 'Sem endereço de correio eletrónico',
+'noemailtext' => 'Este utilizador não especificou um endereço de correio eletrónico válido.',
+'nowikiemailtitle' => 'Correio eletrónico não é permitido',
+'nowikiemailtext' => 'Este utilizador optou por não receber correio eletrónico de outros utilizadores.',
 'emailnotarget' => 'O nome do destinatário não existe ou é inválido.',
 'emailtarget' => 'Introduza o nome de utilizador do destinatário.',
 'emailusername' => 'Utilizador:',
 'emailusernamesubmit' => 'Enviar',
-'email-legend' => 'Enviar correio electrónico para outro utilizador da {{SITENAME}}',
+'email-legend' => 'Enviar uma mensagem a outro utilizador da {{SITENAME}}',
 'emailfrom' => 'De:',
 'emailto' => 'Para:',
 'emailsubject' => 'Assunto:',
 'emailmessage' => 'Mensagem:',
 'emailsend' => 'Enviar',
-'emailccme' => 'Enviar uma cópia desta mensagem para o meu correio electrónico.',
+'emailccme' => 'Enviar uma cópia desta mensagem para o meu correio eletrónico.',
 'emailccsubject' => 'Cópia da sua mensagem para $1: $2',
 'emailsent' => 'Mensagem enviada',
 'emailsenttext' => 'A sua mensagem foi enviada.',
@@ -2449,12 +2481,13 @@ Modificações futuras desta página e da respetiva página de discussão serão
 'notanarticle' => 'Não é uma página de conteúdo',
 'notvisiblerev' => 'Edição eliminada',
 'watchlist-details' => '{{PLURAL:$1|Existe $1 página|Existem $1 páginas}} na sua lista de páginas vigiadas, excluindo páginas de discussão.',
-'wlheader-enotif' => 'A notificação por correio electrónico está activa.',
+'wlheader-enotif' => 'A notificação por correio eletrónico está ativa.',
 'wlheader-showupdated' => "As páginas modificadas desde a última vez que as visitou aparecem destacadas a '''negrito'''.",
 'watchmethod-recent' => 'a procurar páginas vigiadas nas mudanças recentes',
 'watchmethod-list' => 'a procurar mudanças recentes nas páginas vigiadas',
 'watchlistcontains' => 'A sua lista de páginas vigiadas contém $1 {{PLURAL:$1|página|páginas}}.',
 'iteminvalidname' => "Problema com item '$1', nome inválido...",
+'wlnote2' => 'Estão listadas abaixo as mudanças realizadas {{PLURAL:$1|na última hora|nas últimas <strong>$1</strong> horas}}, a partir de $2, $3.',
 'wlshowlast' => 'Ver últimas $1 horas $2 dias $3',
 'watchlist-options' => 'Opções da lista de páginas vigiadas',
 
@@ -2479,23 +2512,22 @@ Modificações futuras desta página e da respetiva página de discussão serão
 'enotif_lastvisited' => 'Consulte $1 para todas as alterações efetuadas desde a sua última visita.',
 'enotif_lastdiff' => 'Consulte $1 para ver esta alteração.',
 'enotif_anon_editor' => 'utilizador anónimo $1',
-'enotif_body' => '{{GENDER:$WATCHINGUSERNAME|Caro|Cara|Caro(a)}},
+'enotif_body' => '{{GENDER:$WATCHINGUSERNAME|Caro|Cara|Caro(a)}} $WATCHINGUSERNAME,
 
 $PAGEINTRO $NEWPAGE
 
 Resumo da edição: $PAGESUMMARY $PAGEMINOREDIT
 
 Contacte o editor:
-correio electrónico: $PAGEEDITOR_EMAIL
+correio eletrónico: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Até que visite novamente esta página com a sua conta ligada, não receberá mais notificações das alterações futuras.
-Pode também reactivar as notificações para todas páginas na sua lista de páginas vigiadas.
+Até se autenticar e visitar novamente esta página, não receberá mais notificações das alterações futuras. Também pode reativar as notificações para todas páginas na sua lista de páginas vigiadas.
 
 O seu sistema de notificação amigável da {{SITENAME}}
 
 --
-Para alterar as suas preferências das notificações por correio electrónico, visite
+Para alterar as suas preferências de notificação por correio eletrónico, visite
 {{canonicalurl:{{#special:Preferences}}}}
 
 Para alterar as suas preferências das páginas vigiadas, visite
@@ -2764,7 +2796,7 @@ Isto só deve ser feito para prevenir vandalismo e de acordo com a [[{{MediaWiki
 ** Nome de utilizador inaceitável',
 'ipb-hardblock' => 'Impedir que utilizadores autenticados editem a partir deste endereço IP',
 'ipbcreateaccount' => 'Impedir criação de contas de utilizador',
-'ipbemailban' => 'Impedir utilizador de enviar correio electrónico',
+'ipbemailban' => 'Impedir utilizador de enviar correio eletrónico',
 'ipbenableautoblock' => 'Bloquear automaticamente o endereço IP mais recente deste utilizador e todos os endereços IP subsequentes a partir dos quais ele tente editar',
 'ipbsubmit' => 'Bloquear este utilizador',
 'ipbother' => 'Outro período:',
@@ -2775,11 +2807,12 @@ Isto só deve ser feito para prevenir vandalismo e de acordo com a [[{{MediaWiki
 'ipb-change-block' => 'Voltar a bloquear o utilizador com estes parâmetros',
 'ipb-confirm' => 'Confirmar o bloqueio',
 'badipaddress' => 'Endereço IP inválido',
-'blockipsuccesssub' => 'Bloqueio bem sucedido',
+'blockipsuccesssub' => 'Bloqueio efetuado',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] foi {{GENDER:$1|bloqueado|bloqueada}}.<br />
 Consulte a [[Special:BlockList|lista de bloqueios]] para rever os bloqueios.',
 'ipb-blockingself' => 'Está prestes a bloquear-se a si próprio. Tem a certeza de que pretende fazê-lo?',
-'ipb-confirmhideuser' => 'Está prestes a bloquear um utilizador com "Ocultar nome de utilizador/IP" ativado. Isto irá suprimir o nome do utilizador de todas as listas e entradas dos registros. Tem a certeza de que pretende fazê-lo?',
+'ipb-confirmhideuser' => 'Está prestes a bloquear um utilizador com "Ocultar nome de utilizador/IP" ativado. Isto irá suprimir o nome do utilizador de todas as listas e entradas dos registos. Tem a certeza de que pretende fazê-lo?',
+'ipb-confirmaction' => 'Se tem a certeza de que quer fazê-lo, marque o campo "{{int:ipb-confirm}}" ao fundo.',
 'ipb-edit-dropdown' => 'Editar motivos de bloqueio',
 'ipb-unblock-addr' => 'Desbloquear $1',
 'ipb-unblock' => 'Desbloquear um utilizador ou endereço IP',
@@ -2812,7 +2845,7 @@ Consulte a [[Special:BlockList|lista de bloqueios]] para rever os bloqueios.',
 'anononlyblock' => 'apenas anón.',
 'noautoblockblock' => 'bloqueio automático desativado',
 'createaccountblock' => 'criação de conta bloqueada',
-'emailblock' => 'correio electrónico bloqueado',
+'emailblock' => 'correio eletrónico bloqueado',
 'blocklist-nousertalk' => 'impedido de editar a própria página de discussão',
 'ipblocklist-empty' => 'A lista de bloqueios encontra-se vazia.',
 'ipblocklist-no-results' => 'O endereço IP ou nome de utilizador procurado não se encontra bloqueado.',
@@ -2820,8 +2853,8 @@ Consulte a [[Special:BlockList|lista de bloqueios]] para rever os bloqueios.',
 'unblocklink' => 'desbloquear',
 'change-blocklink' => 'alterar bloqueio',
 'contribslink' => 'contribs',
-'emaillink' => 'enviar correio electrónico',
-'autoblocker' => 'Você foi automaticamente bloqueado, pois o seu Endereço IP foi recentemente usado por "[[User:$1|$1]]". 
+'emaillink' => 'enviar correio eletrónico',
+'autoblocker' => 'Foi automaticamente bloqueado, porque o seu endereço IP foi recentemente usado por "[[User:$1|$1]]". 
 O motivo apresentado para o bloqueio de $1 é: "$2".',
 'blocklogpage' => 'Registo de bloqueio',
 'blocklog-showlog' => 'Este utilizador foi já bloqueado anteriormente.
@@ -2837,7 +2870,7 @@ Consulte a [[Special:BlockList|lista de bloqueios]] para obter a lista de bloque
 'block-log-flags-anononly' => 'apenas utilizadores anónimos',
 'block-log-flags-nocreate' => 'criação de contas impossibilitada',
 'block-log-flags-noautoblock' => 'bloqueio automático desativado',
-'block-log-flags-noemail' => 'correio electrónico bloqueado',
+'block-log-flags-noemail' => 'correio eletrónico bloqueado',
 'block-log-flags-nousertalk' => 'impossibilitado de editar a própria página de discussão',
 'block-log-flags-angry-autoblock' => 'ativado o bloqueio automático melhorado',
 'block-log-flags-hiddenname' => 'nome de utilizador ocultado',
@@ -3012,6 +3045,7 @@ Se deseja colaborar na localização genérica do MediaWiki, visite [https://www
 'allmessages-prefix' => 'Filtrar pelos caracteres iniciais:',
 'allmessages-language' => 'Língua:',
 'allmessages-filter-submit' => 'Filtrar',
+'allmessages-filter-translate' => 'Traduzir',
 
 # Thumbnails
 'thumbnail-more' => 'Ampliar',
@@ -3028,6 +3062,7 @@ $2',
 'thumbnail_image-type' => 'Tipo de imagem não suportado',
 'thumbnail_gd-library' => 'Configuração da biblioteca GD incompleta: função $1 em falta',
 'thumbnail_image-missing' => 'Ficheiro em falta: $1',
+'thumbnail_image-failure-limit' => 'Ocorreram demasiadas tentativas recentes ($1 ou mais) de criação desta miniatura. Tente novamente mais tarde, por favor.',
 
 # Special:Import
 'import' => 'Importar páginas',
@@ -3077,6 +3112,7 @@ Não há um diretório temporário.',
 'import-error-special' => 'A página "$1" não pode ser importada porque ela pertence a um espaço nominal especial que não permite páginas.',
 'import-error-invalid' => 'A página "$1" não pode ser importada porque seu nome é inválido.',
 'import-error-unserialize' => 'Revisão $2 da página "$1" não pode ser desserializada. Foi relatado que a revisão usava o modelo de conteúdo $3 serializado como $4.',
+'import-error-bad-location' => 'A revisão $2, que usa o modelo de conteúdo $3, não pode ser gravada em "$1" nesta wiki, porque o modelo não é suportado nessa página.',
 'import-options-wrong' => '{{PLURAL:$2|Opção errada|Opções erradas}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'A raiz da página dada é um título inválido.',
 'import-rootpage-nosubpage' => 'O domínio "$1" da página de raiz não permite subpáginas.',
@@ -3093,7 +3129,7 @@ Não há um diretório temporário.',
 'javascripttest' => 'Teste de JavaScript',
 'javascripttest-title' => 'Executando os testes $1',
 'javascripttest-pagetext-noframework' => 'Esta página é reservada para a execução de testes de JavaScript.',
-'javascripttest-pagetext-unknownframework' => 'Estrutura de testes "$1" desconhecido.',
+'javascripttest-pagetext-unknownframework' => 'Estrutura de testes "$1" desconhecida.',
 'javascripttest-pagetext-frameworks' => 'Escolha, por favor, uma das seguintes estruturas de teste: $1',
 'javascripttest-pagetext-skins' => 'Escolher um tema para executar os testes com:',
 'javascripttest-qunit-intro' => 'Consulte a [ $1 documentação de testes] no mediawiki.org.',
@@ -3128,7 +3164,7 @@ Utilize o botão "Antever resultado" antes de gravar, por favor.',
 'tooltip-p-logo' => 'Visite a página principal',
 'tooltip-n-mainpage' => 'Visitar a página principal',
 'tooltip-n-mainpage-description' => 'Visitar a página principal',
-'tooltip-n-portal' => 'Sobre o projeto, o que se pode fazer e onde achar as coisas',
+'tooltip-n-portal' => 'Sobre o projeto, o que se pode fazer e onde encontrar as coisas',
 'tooltip-n-currentevents' => 'Informação temática sobre acontecimentos atuais',
 'tooltip-n-recentchanges' => 'A lista de mudanças recentes nesta wiki.',
 'tooltip-n-randompage' => 'Carregar página aleatória',
@@ -3215,7 +3251,7 @@ Este bloqueio foi provavelmente causado por um link para um site externo que con
 
 # Info page
 'pageinfo-title' => 'Informações sobre "$1"',
-'pageinfo-not-current' => 'Desculpe, é impossível fornecer esta informação para revisõe antigas.',
+'pageinfo-not-current' => 'Desculpe, é impossível fornecer esta informação para revisões antigas.',
 'pageinfo-header-basic' => 'Informação básica',
 'pageinfo-header-edits' => 'Histórico de edições',
 'pageinfo-header-restrictions' => 'Proteção da página',
@@ -3300,9 +3336,9 @@ $1',
 'nextdiff' => 'Edição posterior →',
 
 # Media information
-'mediawarning' => '<strong>AVISO:</strong> Este tipo de arquivo pode conter código malicioso.
+'mediawarning' => '<strong>Aviso:</strong> Este tipo de ficheiro pode conter código malicioso.
 Se o executar, o seu sistema pode ficar comprometido.',
-'imagemaxsize' => 'Tamanho limite da imagem:<br /><em>(para páginas com descrições de arquivos)</em>',
+'imagemaxsize' => 'Tamanho limite da imagem:<br /><em>(para páginas de descrição de ficheiros)</em>',
 'thumbsize' => 'Tamanho de miniaturas:',
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|página|páginas}}',
 'file-info' => 'tamanho: $1, tipo MIME: $2',
@@ -3312,7 +3348,7 @@ Se o executar, o seu sistema pode ficar comprometido.',
 'svg-long-desc' => 'ficheiro SVG, de $1 × $2 pixels, tamanho: $3',
 'svg-long-desc-animated' => 'ficheiro SVG animado, de $1 × $2 pixels, tamanho: $3',
 'svg-long-error' => 'Ficheiro SVG inválido: $1',
-'show-big-image' => 'Arquivo original',
+'show-big-image' => 'Ficheiro original',
 'show-big-image-preview' => 'Tamanho desta antevisão: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Outra resolução|Outras resoluções}}: $1.',
 'show-big-image-size' => '$1 × $2 pixels',
@@ -3783,12 +3819,12 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
 'monthsall' => 'todos',
 
 # Email address confirmation
-'confirmemail' => 'Confirmar endereço de correio electrónico',
-'confirmemail_noemail' => 'Não tem um endereço de correio electrónico válido nas suas [[Special:Preferences|preferências de utilizador]].',
-'confirmemail_text' => 'A {{SITENAME}} requer que valide o seu endereço de correio electrónico antes de usar as funcionalidades de correio.
+'confirmemail' => 'Confirmar endereço de correio eletrónico',
+'confirmemail_noemail' => 'Não tem um endereço de correio eletrónico válido nas suas [[Special:Preferences|preferências de utilizador]].',
+'confirmemail_text' => 'A {{SITENAME}} requer que valide o seu endereço de correio eletrónico antes de usar as funcionalidades de correio.
 Clique o botão abaixo para enviar uma mensagem de confirmação para o seu endereço.
-A mensagem incluíra uma URL que contém um código;
-insira a URL no seu browser para confirmar que o seu endereço de correio electrónico é válido.',
+A mensagem incluirá uma URL que contém um código;
+insira a URL no seu browser para confirmar que o seu endereço de correio eletrónico é válido.',
 'confirmemail_pending' => 'Um código de confirmação já lhe foi enviado;
 caso tenha criado a conta recentemente, é recomendado que aguarde alguns minutos até o receber antes de tentar pedir um novo código.',
 'confirmemail_send' => 'Enviar código de confirmação',
@@ -3796,17 +3832,17 @@ caso tenha criado a conta recentemente, é recomendado que aguarde alguns minuto
 'confirmemail_oncreate' => 'Foi enviado um código de confirmação para o seu endereço de correio eletrónico.
 Este código não é necessário para se autenticar no sistema, mas será necessário para ativar qualquer funcionalidade baseada no uso de correio na wiki.',
 'confirmemail_sendfailed' => 'A {{SITENAME}} não conseguiu enviar a mensagem de confirmação.
-Verifique se o seu endereço de correio electrónico tem caracteres inválidos.
+Verifique se o seu endereço de correio eletrónico tem caracteres inválidos.
 
 O sistema de correio devolveu o erro: $1',
 'confirmemail_invalid' => 'Código de confirmação inválido. O código poderá ter expirado.',
-'confirmemail_needlogin' => 'Precisa de $1 para confirmar o seu endereço de correio electrónico.',
-'confirmemail_success' => 'O seu endereço de correio electrónico foi confirmado.
+'confirmemail_needlogin' => 'Precisa de $1 para confirmar o seu endereço de correio eletrónico.',
+'confirmemail_success' => 'O seu endereço de correio eletrónico foi confirmado.
 Pode agora [[Special:UserLogin|autenticar-se]] e desfrutar da wiki.',
-'confirmemail_loggedin' => 'O seu endereço de correio electrónico foi confirmado.',
-'confirmemail_subject' => 'Confirmação de endereço de correio electrónico da {{SITENAME}}',
+'confirmemail_loggedin' => 'O seu endereço de correio eletrónico foi confirmado.',
+'confirmemail_subject' => 'Confirmação de endereço de correio eletrónico da {{SITENAME}}',
 'confirmemail_body' => 'Alguém, provavelmente você a partir do endereço IP $1,
-registrou uma conta "$2" com este endereço de correio eletrónico na {{SITENAME}}.
+registou uma conta "$2" com este endereço de correio eletrónico na {{SITENAME}}.
 
 Para confirmar que esta conta é realmente sua e ativar
 as funcionalidades de correio eletrónico na {{SITENAME}},
@@ -3850,8 +3886,8 @@ para cancelar a confirmação do endereço de correio eletrónico:
 $5
 
 Este código de confirmação expira a $4.',
-'confirmemail_invalidated' => 'Confirmação de endereço de correio electrónico cancelada',
-'invalidateemail' => 'Cancelar confirmação de correio electrónico',
+'confirmemail_invalidated' => 'Confirmação de endereço de correio eletrónico cancelada',
+'invalidateemail' => 'Cancelar confirmação do correio eletrónico',
 
 # Scary transclusion
 'scarytranscludedisabled' => '[Transclusão interwikis foi impossibilitada]',
@@ -3886,7 +3922,7 @@ Por favor, confirme que você quer realmente recriar esta página.',
 
 # Language selector for translatable SVGs
 'img-lang-default' => '(língua padrão)',
-'img-lang-info' => 'Renderizar essa imagem em $1. $2',
+'img-lang-info' => 'Compor esta imagem em $1. $2',
 'img-lang-go' => 'Ir',
 
 # Table pager
@@ -3909,7 +3945,7 @@ Por favor, confirme que você quer realmente recriar esta página.',
 
 # Live preview
 'livepreview-loading' => 'A carregar…',
-'livepreview-ready' => 'A carregando… Terminado!',
+'livepreview-ready' => 'A carregar... Terminado!',
 'livepreview-failed' => 'A antevisão instantânea falhou!
 Tente a antevisão normal.',
 'livepreview-error' => 'Falha ao ligar: $1 "$2"
@@ -3971,9 +4007,19 @@ Também pode [[Special:EditWatchlist|editar a lista da maneira convencional]].',
 'version-hook-subscribedby' => 'Subscrito por',
 'version-version' => '(Versão $1)',
 'version-license' => 'Licença do MediaWiki',
-'version-credits-not-found' => 'Nenhuma informação detalhada acerca dos créditos foi encontrada para esta extensão.',
+'version-ext-license' => 'Licença',
+'version-ext-colheader-name' => 'Extensão',
+'version-ext-colheader-version' => 'Versão',
+'version-ext-colheader-license' => 'Licença',
+'version-ext-colheader-description' => 'Descrição',
+'version-ext-colheader-credits' => 'Autores',
+'version-license-title' => 'Licença para $1',
+'version-license-not-found' => 'Não foi encontrada informação detalhada da licença para esta extensão.',
+'version-credits-title' => 'Créditos de autoria da extensão $1',
+'version-credits-not-found' => 'Não foi encontrada informação detalhada dos créditos para esta extensão.',
 'version-poweredby-credits' => 'Esta wiki é potenciada por <strong>[https://www.mediawiki.org/ MediaWiki]</strong>, copyright © 2001-$1 $2.',
 'version-poweredby-others' => 'outros',
+'version-poweredby-translators' => 'os tradutores da translatewiki.net',
 'version-credits-summary' => 'Gostaríamos de reconhecer as seguintes pessoas pela sua contribuição para o [[Special:Version|MediaWiki]].',
 'version-license-info' => 'O MediaWiki é software livre; pode redistribuí-lo e/ou modificá-lo nos termos da licença GNU General Public License, tal como publicada pela Free Software Foundation; tanto a versão 2 da Licença, como (por opção sua) qualquer versão posterior.
 
@@ -3988,13 +4034,14 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Redireccionar pelo ID do ficheiro, utilizador ou revisão',
+'redirect' => 'Redireccionar pelo ID do ficheiro, do utilizador ou da revisão',
 'redirect-legend' => 'Redirecionar para um ficheiro ou página',
-'redirect-summary' => 'Esta página especial redirecciona a um ficheiro (dado o nome do ficheiro), a uma página (dado um ID de revisão) ou a uma página de utilizador (dado o ID do utilizador). Utilização: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] ou [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Esta página especial redirecciona para um ficheiro (dado o nome do ficheiro), para uma página (dado um ID de revisão ou página) ou para uma página de utilizador (dado um ID numérico do utilizador). Utilização: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] ou [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Ir',
 'redirect-lookup' => 'Pesquisa:',
 'redirect-value' => 'Valor:',
 'redirect-user' => 'Identificador do utilizador',
+'redirect-page' => 'Identificador (ID) da página',
 'redirect-revision' => 'Revisão da página',
 'redirect-file' => 'Nome do ficheiro',
 'redirect-not-exists' => 'Valor não encontrado',
@@ -4188,6 +4235,7 @@ Caso contrário, pode facilmente usar o formulário abaixo. O seu comentário se
 'api-error-overwrite' => 'Não é permitido sobrescrever um ficheiro existente.',
 'api-error-stashfailed' => 'Erro interno: O servidor não conseguiu armazenar o ficheiro temporário.',
 'api-error-publishfailed' => 'Erro interno: Servidor não conseguiu publicar ficheiro temporário.',
+'api-error-stasherror' => 'Ocorreu um erro no upload do ficheiro escondido.',
 'api-error-timeout' => 'O servidor não respondeu no prazo esperado.',
 'api-error-unclassified' => 'Ocorreu um erro desconhecido',
 'api-error-unknown-code' => 'Erro desconhecido: "$1"',
@@ -4217,26 +4265,32 @@ Caso contrário, pode facilmente usar o formulário abaixo. O seu comentário se
 'limitreport-cputime-value' => '$1 {{PLURAL:$1|segundo|segundos}}',
 'limitreport-walltime' => 'Tempo real de utilização',
 'limitreport-walltime-value' => '$1 {{PLURAL:$1|segundo|segundos}}',
+'limitreport-ppvisitednodes' => 'Número de nós visitados pelo pré-processador',
+'limitreport-ppgeneratednodes' => 'Número de nós gerados pelo pré-processador',
+'limitreport-postexpandincludesize' => 'Tamanho de inclusão após expansão',
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
 'limitreport-templateargumentsize' => 'Tamanho dos argumentos da predefinição',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
+'limitreport-expansiondepth' => 'Profundidade máxima de expansão',
 'limitreport-expensivefunctioncount' => 'Número de funções do analisador custosas',
 
 # Special:ExpandTemplates
 'expandtemplates' => 'Expandir predefinições',
 'expand_templates_intro' => "Esta página especial recebe um texto e expande recursivamente todas as predefinições nele existentes.
 Também expande funções do analisador sintático ''(parser)'', tais como
-<nowiki>{{</nowiki>#language:...}}, e variáveis, tais como
+<nowiki>{{</nowiki>#language:...}}, e variáveis, como
 <nowiki>{{</nowiki>CURRENTDAY}}.
-De fato, expande tudo o que estiver entre chaves duplas.",
+Na verdade, expande tudo o que estiver entre chavetas duplas.",
 'expand_templates_title' => 'Título de contexto para {{FULLPAGENAME}} etc.:',
 'expand_templates_input' => 'Texto a expandir:',
 'expand_templates_output' => 'Resultado',
 'expand_templates_xml_output' => 'Resultado XML',
+'expand_templates_html_output' => 'Resultado HTML puro',
 'expand_templates_ok' => 'Expandir',
 'expand_templates_remove_comments' => 'Remover comentários',
 'expand_templates_remove_nowiki' => "Suprimir ''tags'' <nowiki> no resultado",
 'expand_templates_generate_xml' => 'Mostrar a árvore de análise sintáctica do XML',
+'expand_templates_generate_rawhtml' => 'Mostrar o HTML puro',
 'expand_templates_preview' => 'Antevisão do resultado',
 
 );
index f47dec1..ecea69b 100644 (file)
@@ -399,6 +399,7 @@ Parameters:
 'category-subcat-count' => 'This message is displayed at the top of a category page showing the number of pages in the category.
 
 Parameters:
+* $1 - number of subcategories shown
 * $2 - total number of subcategories in category',
 'category-subcat-count-limited' => 'This message is displayed at the top of a category page showing the number of pages in the category when not all pages in a category are counted.
 
@@ -1292,13 +1293,8 @@ See example: [[Special:UserLogin]]',
 'yourdomainname' => 'Used as label for listbox.',
 'password-change-forbidden' => 'Error message shown when an external authentication source does not allow the password to be changed.',
 'externaldberror' => 'This message is thrown when a valid attempt to change the wiki password for a user fails because of a database error or an error from an external system.',
-'login' => "Shown as the caption of the button at [[Special:UserLogin]], and also to anonymous users in the upper right corner of the page when they can't create an account (otherwise the message {{msg-mw|nav-login-createaccount}} is shown there). Also the title of the new login special page, which does not combine Log in & Create account.
-
-See also:
-* {{msg-mw|Login}}
-* {{msg-mw|Accesskey-pt-anonlogin}}
-* {{msg-mw|Tooltip-pt-anonlogin}}
-{{Identical|Log in}}",
+'login' => '{{Doc-special|UserLogin|unlisted=1}}
+{{Identical|Log in}}',
 'nav-login-createaccount' => "Shown to anonymous users in the upper right corner of the page. When you can't create an account, the message {{msg-mw|login}} is shown.
 {{Identical|Log in / create account}}",
 'loginprompt' => 'A small notice in the log in form.',
@@ -1315,8 +1311,7 @@ See also:
 * {{msg-mw|Accesskey-pt-logout}}
 * {{msg-mw|Tooltip-pt-logout}}
 {{Identical|Log out}}',
-'userlogout' => '{{Doc-actionlink}}
-{{doc-special|UserLogout|unlisted=1}}
+'userlogout' => '{{doc-special|UserLogout|unlisted=1}}
 {{Identical|Log out}}',
 'notloggedin' => 'This message is displayed in the standard skin when not logged in. The message is placed above the login link in the top right corner of pages.
 
@@ -1330,10 +1325,8 @@ See example: [[Special:UserLogin]]',
 * $1 - a link to the account creation form, and the text of it is {{msg-mw|Nologinlink}}
 {{Identical|Do not have an account}}',
 'nologinlink' => 'Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED.
-{{Identical|Create an account}}',
-'createaccount' => 'Used on the top of the page for logged out users, where it appears next to {{msg-mw|login}}, so consider making them similar.
-
-{{doc-special|CreateAccount}}
+{{Identical|Create account}}',
+'createaccount' => '{{doc-special|CreateAccount|unlisted=1}}
 {{Identical|Create account}}',
 'gotaccount' => 'Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED. Parameter:
 * $1 - a link to the log in form, and the text of it is {{msg-mw|Gotaccountlink}}',
@@ -1585,6 +1578,12 @@ This message is used in html.
 'createacct-another-realname-tip' => "{{doc-singularthey}}
 Used on the account creation form when creating another user's account. Similar to {{msg-mw|prefs-help-realname}}.
 {{Identical|Real name attribution}}",
+'pt-login' => "Shown as the caption of the button at [[Special:UserLogin]], and also to anonymous users in the upper right corner of the page when they can't create an account (otherwise the message {{msg-mw|nav-login-createaccount}} is shown there)
+{{Identical|Log in}}",
+'pt-createaccount' => 'Used on the top of the page for logged out users, where it appears next to {{msg-mw|login}}, so consider making them similar.
+{{Identical|Create account}}',
+'pt-userlogout' => '{{Doc-actionlink}}
+{{Identical|Log out}}',
 
 # Email sending
 'php-mail-error-unknown' => 'Used as error message when <code>mail()</code> returned empty error message.',
@@ -1638,8 +1637,12 @@ Parameters:
 'resetpass-submit-cancel' => 'Used on [[Special:ResetPass]].
 {{Identical|Cancel}}',
 'resetpass-wrong-oldpass' => 'Error message shown on [[Special:ChangePassword]] when the old password is not valid.',
+'resetpass-recycled' => 'Error message shown on [[Special:ChangePassword]] when a user attempts to reset their password to their existing password.',
+'resetpass-temp-emailed' => 'Message shown on [[Special:ChangePassword]] when a user logs in with a temporary password, and must set a new password.',
 'resetpass-temp-password' => 'The label of the input box for the temporary password (received by email) on the form displayed after logging in with a temporary password.',
 'resetpass-abort-generic' => 'Generic error message shown on [[Special:ChangePassword]] when an extension aborts a password change from a hook.',
+'resetpass-expired' => "Generic error message shown on [[Special:ChangePassword]] when a user's password is expired",
+'resetpass-expired-soft' => 'Generic marning message shown on [[Special:ChangePassword]] when a user needs to reset their password, but they are not prevented from logging in at this time',
 
 # Special:PasswordReset
 'passwordreset' => 'Title of [[Special:PasswordReset]].
@@ -3693,21 +3696,93 @@ Parameters:
 
 The corresponding message is {{msg-mw|Rcnotefrom}}.',
 'rcshowhideminor' => 'Option text in [[Special:RecentChanges]]. Parameters:
-* $1 - the "show/hide" command, with the text taken from either {{msg-mw|Show}} or {{msg-mw|Hide}}',
+* $1 - the "show/hide" command, with the text taken from either {{msg-mw|rcshowhideminor-show}} or {{msg-mw|rcshowhideminor-hide}}',
+'rcshowhideminor-show' => '{{doc-actionlink}}
+Option text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhideminor}}.
+
+See also:
+* {{msg-mw|rcshowhideminor-hide}}
+{{Identical|Show}}',
+'rcshowhideminor-hide' => '{{doc-actionlink}}
+Option text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhideminor}}.
+
+See also:
+* {{msg-mw|rcshowhideminor-show}}
+{{Identical|Hide}}',
 'rcshowhidebots' => 'Option text in [[Special:RecentChanges]]. Parameters:
-* $1 - the "show/hide" command, with the text taken from either {{msg-mw|Show}} or {{msg-mw|Hide}}
+* $1 - the "show/hide" command, with the text taken from either {{msg-mw|rcshowhidebots-show}} or {{msg-mw|rcshowhidebots-hide}}
 {{Identical|$1 bots}}',
+'rcshowhidebots-show' => '{{doc-actionlink}}
+Option text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidebots}}.
+
+See also:
+* {{msg-mw|rcshowhidebots-show}}
+{{Identical|Show}}',
+'rcshowhidebots-hide' => '{{doc-actionlink}}
+Option text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidebots}}.
+
+See also:
+* {{msg-mw|rcshowhidebots-hide}}
+{{Identical|Hide}}',
 'rcshowhideliu' => 'Option text in [[Special:RecentChanges]]. Parameters:
 * $1 - any one of the following messages:
-** {{msg-mw|Show}}
-** {{msg-mw|Hide}}',
+** {{msg-mw|rcshowhideliu-show}}
+** {{msg-mw|rcshowhideliu-hide}}',
+'rcshowhideliu-show' => '{{doc-actionlink}}
+Option text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhideliu}}.
+
+See also:
+* {{msg-mw|rcshowhideliu-hide}}
+{{Identical|Show}}',
+'rcshowhideliu-hide' => '{{doc-actionlink}}
+Option text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhideliu}}.
+
+See also:
+* {{msg-mw|rcshowhideliu-show}}
+{{Identical|Hide}}',
 'rcshowhideanons' => 'Option text in [[Special:RecentChanges]]. Parameters:
-* $1 - the "show/hide" command, with the text taken from either {{msg-mw|Show}} or {{msg-mw|Hide}}
+* $1 - the "show/hide" command, with the text taken from either {{msg-mw|rcshowhideanons-show}} or {{msg-mw|showhideanons-hide}}
 {{Identical|Anonymous user}}',
+'rcshowhideanons-show' => '{{doc-actionlink}}
+Option text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhideanons}}.
+
+See also:
+* {{msg-mw|rcshowhideanons-hide}}
+{{Identical|Hide}}',
+'rcshowhideanons-hide' => '{{doc-actionlink}}
+Option text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhideanons}}.
+
+See also:
+* {{msg-mw|rcshowhideanons-show}}
+{{Identical|hide}}',
 'rcshowhidepatr' => 'Option text in [[Special:RecentChanges]]. Parameters:
-* $1 - the "show/hide" command, with the text taken from either {{msg-mw|Show}} or {{msg-mw|Hide}}',
+* $1 - the "show/hide" command, with the text taken from either {{msg-mw|rcshowhidepatr-show}} or {{msg-mw|rcshowhidepatr-hide}}',
+'rcshowhidepatr-show' => '{{doc-actionlink}}
+Option text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidepatr}}.
+
+See also:
+* {{msg-mw|rcshowhidepatr-hide}}
+{{Identical|Show}}',
+'rcshowhidepatr-hide' => '{{doc-actionlink}}
+Option text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidepatr}}.
+
+See also:
+* {{msg-mw|rcshowhidepatr-show}}
+{{Identical|Hide}}',
 'rcshowhidemine' => 'Option text in [[Special:RecentChanges]]. Parameters:
-* $1 - the "show/hide" command, with the text taken from either {{msg-mw|Show}} or {{msg-mw|Hide}}',
+* $1 - the "show/hide" command, with the text taken from either {{msg-mw|rcshowhidemine-show}} or {{msg-mw|rcshowhidemine-hide}}',
+'rcshowhidemine-show' => '{{doc-actionlink}}
+Option text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidemine}}.
+
+See also:
+* {{msg-mw|rcshowhidemine-hide}}
+{{Identical|show}}',
+'rcshowhidemine-hide' => '{{doc-actionlink}}
+Option text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidemine}}.
+
+See also:
+* {{msg-mw|rcshowhidemine-show}}
+{{Identical|hide}}',
 'rclinks' => "Used on [[Special:RecentChanges]].
 * \$1 - a list of different choices with number of pages to be shown.<br />&nbsp;Example: \"''50{{int:pipe-separator}}100{{int:pipe-separator}}250{{int:pipe-separator}}500\".
 * \$2 - a list of clickable links with a number of days for which recent changes are to be displayed.<br />&nbsp;Example: \"''1{{int:pipe-separator}}3{{int:pipe-separator}}7{{int:pipe-separator}}14{{int:pipe-separator}}30''\".
@@ -4139,6 +4214,15 @@ See also:
 * {{msg-mw|zip-wrong-format}}
 * {{msg-mw|uploadjava}}
 * {{msg-mw|uploadvirus}}',
+'uploadscriptednamespace' => 'Used as error message when uploading a file. This error is specific to SVG files, when they include a namespace that has not been whitelisted.
+
+Parameters:
+* $1 - the invalid namespace name
+See also:
+* {{msg-mw|zip-wrong-format}}
+* {{msg-mw|uploadjava}}
+* {{msg-mw|uploadvirus}}',
+'uploadinvalidxml' => 'Error message displayed when the uploaded file contains XML that cannot be properly parsed and checked.',
 'uploadvirus' => 'Error message displayed when uploaded file contains a virus.
 
 Parameters:
@@ -5035,7 +5119,11 @@ See also:
 This refers to expiry timestamp.
 {{Identical|Expire}}',
 'protectedpages-performer' => 'This is a column header in the table on the page [[Special:ProtectedPages]].',
-'protectedpages-params' => 'This is a column header in the table on the page [[Special:ProtectedPages]].',
+'protectedpages-params' => 'This is a column header in the table on the page [[Special:ProtectedPages]].
+
+Protection parameters are:
+* {{msg-mw|Restriction-level-autoconfirmed}}
+* {{msg-mw|Restriction-level-sysop}}',
 'protectedpages-reason' => 'This is a column header in the table on the page [[Special:ProtectedPages]].
 {{Identical|Reason}}',
 'protectedpages-unknown-timestamp' => 'This is shown, when the date and time is unknown for a protection on the page [[Special:ProtectedPages]].
@@ -6263,6 +6351,7 @@ Anon version:
 'sp-contributions-username' => 'This message appears whenever someone requests [[Special:Contributions]].
 {{Identical|IP address or username}}',
 'sp-contributions-toponly' => '"top revision" means the "latest revision"',
+'sp-contributions-newonly' => '"page creation" means the "first revision" of a page',
 'sp-contributions-submit' => '{{Identical|Search}}',
 'sp-contributions-explain' => '{{optional}}',
 
@@ -10744,6 +10833,4 @@ test
 'expand_templates_generate_rawhtml' => 'Used as checkbox label.',
 'expand_templates_preview' => '{{Identical|Preview}}',
 
-# Unknown messages
-'uploadinvalidxml' => 'Error message displayed when the uploaded file contains XML that cannot be properly parsed and checked.',
 );
index 6c04416..8f571ef 100644 (file)
@@ -788,6 +788,9 @@ Kay willay pantasqa kaptinqa, qhawarparillay.',
 'loginlanguagelabel' => 'Rimay: $1',
 'suspicious-userlogout' => "Lluqsiy mañakuyniykiqa mananchasqam karqan, waqllisqa wamp'unamanta icha pakaq proksimanta kachasqa kaspanchá.",
 'createacct-another-realname-tip' => "* Chiqap sutiqa munanallapaqmi. Quwaptiykiqa, llamk'apusqakunam paywan sananchasqa kanqa.",
+'pt-login' => 'Yaykuy',
+'pt-createaccount' => 'Musuq rakiqunata kichariy',
+'pt-userlogout' => 'Lluqsiy',
 
 # Email sending
 'php-mail-error-unknown' => 'Mana riqsisqa pantasqa PHP mail() rurananpi',
@@ -796,7 +799,7 @@ Kay willay pantasqa kaptinqa, qhawarparillay.',
 
 # Change password dialog
 'changepassword' => 'Yaykuna rimata hukchay',
-'resetpass_announce' => "E-chaskiwan kachasqa mit'alla yaykuna rimawanmi yaykurqunki. Ama hina kaspa, musuq yaykuna rimaykita qillqamuy:",
+'resetpass_announce' => "E-chaskiwan kachasqa mit'alla yaykuna rimawanmi yaykurqunki. Yaykunaykita tukunaykipaqqa, musuq yaykuna rimaykita churay:",
 'resetpass_text' => '<!-- Añada texto aquí -->',
 'resetpass_header' => 'Yaykuna rimata hukchay',
 'oldpassword' => "Mawk'a yaykuna rima:",
@@ -1619,6 +1622,7 @@ $1 {{PLURAL:$1|sanampamanta|sanampakunamanta}} aswan pisi kananmi.',
 'recentchanges-label-minor' => "Kayqa aslla llamk'apuymi",
 'recentchanges-label-bot' => "Kayqa rurana antachap llamk'apusqanmi",
 'recentchanges-label-unpatrolled' => "Kay llamk'apusqaqa manaraqmi patrullasqachu",
+'recentchanges-legend-heading' => "'''Sut'ichana:'''",
 'recentchanges-legend-newpage' => "([[Special:NewPages|musuq p'anqakunatapas]] qhaway)",
 'rcnotefrom' => "Kay qatiqpiqa '''$2'''-mantapacha ('''$1'''-kama) hukchasqakunatam rikunki.",
 'rclistfrom' => '$1-manta musuq hukchasqakunata rikuchiy',
@@ -1743,6 +1747,7 @@ Kay churkunayki rikcha hunt'a chhikan kayniyuq kaptinqa, chay hunt'atam churkuy,
 'uploaddisabledtext' => 'Willañiqi churkuyqa manam saqillasqachu.',
 'php-uploaddisabledtext' => "PHP-wan willañiqi churkuyqa hark'asqam. Ama hina kaspa, willañiqi churkuy allinkachinakunata llanchiy.",
 'uploadscripted' => "Kay willañiqiqa wakichi icha HTML qillqayuqmi, llika wamp'unaqa pantalla unanchanmanchá.",
+'uploadinvalidxml' => 'Manam atinichu churkusqa willañiqipi XML-ta kuskiyta.',
 'uploadvirus' => 'Willañiqipiqa añawmi! Yuyay: $1',
 'uploadjava' => 'Kay ZIP willañiqiqa Java .class willañiqiyuqmi.
 Java churkuyqa manam saqillasqachu, qasikanapaq saywachasqa kanman karunchana tiyanman.',
@@ -2088,7 +2093,16 @@ Ama hina kaspa, [$2 willañiqi ch'uyanchana p'anqata] qhaway astawan willachikun
 'protectedpages' => "Amachasqa p'anqakuna",
 'protectedpages-indef' => 'Wiñaypaq amachasqakuna chaylla',
 'protectedpages-cascade' => 'Phaqchallallapi amachay',
+'protectedpages-noredirect' => 'Pusapunakunata pakay',
 'protectedpagesempty' => "Kay kuskanachina tupukunawan amachasqa p'anqakunaqa manam kachkanchu.",
+'protectedpages-timestamp' => "Pacha q'illpay",
+'protectedpages-page' => "P'anqa",
+'protectedpages-expiry' => 'Puchukan',
+'protectedpages-performer' => 'Amachaq ruraq',
+'protectedpages-params' => 'Amachanapaq kuskanachina tupukuna',
+'protectedpages-reason' => 'Kayrayku',
+'protectedpages-unknown-timestamp' => 'Mana riqsisqa',
+'protectedpages-unknown-performer' => 'Mana riqsisqa ruraq',
 'protectedtitles' => "Amachasqa p'anqa sutikuna",
 'protectedtitlesempty' => "Manam kachkanchu kay kuskanachina tupukunawan amachasqa p'anqakuna.",
 'listusers' => 'Tukuy ruraqkuna',
@@ -2802,6 +2816,7 @@ Ama hina kaspa, [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisat
 'allmessages-prefix' => "Ch'illchina, ñawpaq k'askaqkama:",
 'allmessages-language' => 'Rimay:',
 'allmessages-filter-submit' => 'Riy',
+'allmessages-filter-translate' => "T'ikray",
 
 # Thumbnails
 'thumbnail-more' => 'Hatunchay',
@@ -3635,6 +3650,10 @@ Ama hina kaspa, chiqapta kay p'anqatam musuqmanta kamayta munani nispa takyachiy
 'imgmultigo' => 'Riy!',
 'imgmultigoto' => "$1 sutiyuq p'anqaman riy",
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(kikinmanta rimay)',
+'img-lang-go' => 'Riy',
+
 # Table pager
 'ascending_abbrev' => 'wich',
 'descending_abbrev' => 'uray',
@@ -3711,8 +3730,17 @@ Sapsilla ñawpaq qhawariyta tukuykachay.',
 'version-hook-subscribedby' => 'Kay runap mañaykusqan:',
 'version-version' => '(Musuqchasqa $1)',
 'version-license' => 'Saqillay',
+'version-ext-license' => 'Saqillay',
+'version-ext-colheader-name' => "Mast'ariy",
+'version-ext-colheader-version' => 'Musuqchasqa',
+'version-ext-colheader-license' => 'Saqillay',
+'version-ext-colheader-description' => "T'iktuna",
+'version-ext-colheader-credits' => 'Ruraqkuna',
+'version-license-title' => '$1-paq saqillay',
+'version-credits-title' => '$1-paq añayniy',
 'version-poweredby-credits' => "Kay wikitaqa '''[https://www.mediawiki.org/ MediaWiki-m]''' atichin, copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'hukkuna',
+'version-poweredby-translators' => "translatewiki.net t'ikraqkuna",
 'version-credits-summary' => "Kay qatiqpi runakunatam [[Special:Version|MediaWiki]] nisqapaq llamk'apusqankunapaq riqsichiyta munayku.",
 'version-license-info' => "MediaWiki llamp'u kaqqa qispim; mast'ariytam icha wakinchaytam atinki GNU General Public License nisqa saqillaypa kamachisqankama, Free Software Foundation nisqap uyaychasqan; saqillaypa iskay ñiqin musuqchasqan, munaspaykiqa aswan musuq musuqchasqan.
 
@@ -3733,6 +3761,7 @@ MediaWikitaqa mast'ariyku runakunata yanapanapaqmi, ichataq MANAM FIYAKUYTA ATIY
 'redirect-lookup' => 'Maskay:',
 'redirect-value' => 'Chani:',
 'redirect-user' => 'Ruraqpa kikin kaynin',
+'redirect-page' => "P'anqap ID-nin",
 'redirect-revision' => "P'anqamanta musuqchasqa",
 'redirect-file' => 'Willañiqip sutin',
 'redirect-not-exists' => 'Chaniqa manam tarisqachu',
@@ -3750,6 +3779,7 @@ MediaWikitaqa mast'ariyku runakunata yanapanapaqmi, ichataq MANAM FIYAKUYTA ATIY
 
 # Special:SpecialPages
 'specialpages' => "Sapaq p'anqakuna",
+'specialpages-note-top' => "Sut'ichana",
 'specialpages-note' => '* Sapsipaq sapaq p\'anqakuna.
 * <span class="mw-specialpagerestricted">Sapaqkunallapaq sapaq p\'anqakuna.</span>',
 'specialpages-group-maintenance' => 'Hatalliy willaykuna',
@@ -3956,9 +3986,11 @@ Mana chayqa, kay qatiqpi kaq hunt'ana p'anqatam llamk'achiyta atinki. Willapuyni
 'expandtemplates' => "Plantillakunata mast'ariy",
 'expand_templates_input' => 'Yaykuchina qillqa:',
 'expand_templates_output' => 'Lluqsiynin:',
+'expand_templates_xml_output' => 'XML lluqsichiy',
+'expand_templates_html_output' => 'Chawa HTML lluqsichiy',
+'expand_templates_ok' => 'Arí niy',
 'expand_templates_remove_comments' => 'Willapusqakunata qichuy',
+'expand_templates_generate_rawhtml' => 'Chawa HTML-ta rikuchiy',
 'expand_templates_preview' => 'Ñawpaqta qhawallay',
 
-# Unknown messages
-'uploadinvalidxml' => 'Manam atinichu churkusqa willañiqipi XML-ta kuskiyta.',
 );
index cc2ce29..453ff7d 100644 (file)
@@ -170,7 +170,6 @@ $messages = array(
 'vector-action-protect' => 'Harkana',
 'vector-action-undelete' => 'Kutin wacharichina',
 'vector-action-unprotect' => 'Harkayta shukchina',
-'vector-simplesearch-preference' => 'Ashtawan alli maskankapak imakunata arinina (Vectorwanlla)',
 'vector-view-create' => 'Kamarina',
 'vector-view-edit' => 'Killkana',
 'vector-view-history' => 'Wiñay kawsayta rikuna',
index bb496be..bd7e0eb 100644 (file)
@@ -16,7 +16,6 @@ $fallback = 'it';
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Link cun la sotliniadura',
-'tog-justify' => 'Paràgraf: giustifiché',
 'tog-hideminor' => 'Nascond al mudefghi znini int la pàgina "Ultum mudèfghi"',
 'tog-hidepatrolled' => "Nascònd j cambiamént verifichèdi int'aglj ultum mudèfigh",
 'tog-newpageshidepatrolled' => 'Nascònd al pàgin verifichèdi da la lèsta dal pàgin növi',
@@ -25,9 +24,7 @@ $messages = array(
 'tog-numberheadings' => "Titul d'un paràgraf ch'l'à un nòmar daparlò",
 'tog-showtoolbar' => "Fam avdé la bara d'j strumént (u j vó JavaScript)",
 'tog-editondblclick' => 'Mudèfiga al pàgin scjazènd do volt (u j vò JavaScript)',
-'tog-editsection' => "S't'vù l'abilitaziòn ad'cambié al seziòn cum e' link [mudèfica]",
 'tog-editsectiononrightclick' => "S't'vù l'abilitaziòn ad cambié al seziòn <br />scjazénd e tast a dèstra sora e titul (u j vò JavaScript)",
-'tog-showtoc' => "Fam avdé l'indiz (sol par al pàgin cun piò d'3 seziòn)",
 'tog-rememberpassword' => "Arcurdam la parola d'ordin, par piasé (fèn a un masum $1 {{PLURAL:$1|dè|dè}})",
 'tog-watchcreations' => "Mett insèn al pàgin ch't'e' fat adès, intla lèsta da tní sot'occ",
 'tog-watchdefault' => "Mett insèn al pàgin ch'a j ò lavurè sora int la lèsta dal pàgin da tnì sot'òcc",
@@ -36,7 +33,6 @@ $messages = array(
 'tog-minordefault' => 'Ségna tot al mudèfic coma "zníni" s\'l\'utent làsa la casèla vuta',
 'tog-previewontop' => "Fam avdé l'anteprèma sora casèla d'mudèfica invezi che dciotta",
 'tog-previewonfirst' => "Fa' avdé l'anteprèma dop c'u's fa la prèma mudèfica",
-'tog-nocache' => "T'an stêga a tní in tla memoria al pàgin",
 'tog-enotifwatchlistpages' => "Fam' save' par e-mail quènd una pàgina dal mij l'è steda modifichèda",
 'tog-enotifusertalkpages' => "Fam' save' par e-mail quènd la mi pàgina dal discusiòn l'è steda modifichèda",
 'tog-enotifminoredits' => "Fam' save' par e-mail tòt al mudefchi, neca al znini",
@@ -379,7 +375,6 @@ Lezenda: '''({{int:cur}})''' = difarenzi cun la versiòn d'adès; '''({{int:last
 'recentchanges' => 'I ultum cambiamént',
 'recentchanges-legend' => "Upziòn d'j ultum cambiamént",
 'recentchanges-feed-description' => "Ste canël e' fa avdè i cambiamént piò rezent aj artècul d'sta wiki.",
-'rcnote' => "A què sota t'pù truvé {{PLURAL:$1|l'ultum cambiamént|j ultum '''$1''' cambiamént in st'artècul}} int j ultum {{PLURAL:$2|dè|'''$2''' dè}}; agl'infurmaziòn j è agiurnèdi a e' $4 al $5.",
 'rclistfrom' => 'Fam avdè i cambiamént növ a cminzipiè da $1',
 'rcshowhideminor' => '$1 al mudèfghi znini',
 'rcshowhidebots' => '$1 i bot',
index 74e9a20..9d55fdd 100644 (file)
@@ -11,6 +11,7 @@
  * @author Aryaz
  * @author Dalinanir
  * @author Jose77
+ * @author Mmistmurt
  * @author MoubarikBelkasim
  * @author Urhixidur
  */
@@ -55,7 +56,7 @@ $messages = array(
 'october-gen' => 'Ktubar',
 'november-gen' => 'Nuwanbir',
 'december-gen' => 'Dujanbir',
-'jan' => 'Yennayer',
+'jan' => 'Yen',
 'feb' => 'Yebrayer',
 'mar' => 'Mars',
 'apr' => 'Abrir',
@@ -316,7 +317,6 @@ Tasarut: (cur) = imṣebḍiyen ag tunɣilt n ruxa,
 'lineno' => 'Tabrit $1:',
 'compareselectedversions' => 'Smequdda tunɣilin a',
 'editundo' => 'kkes min ggiɣ',
-'diff-multi' => '({{PLURAL:$1|ijj n ufegged|$1 ifeggiden}} war ad twamlen ca.)',
 
 # Search results
 'searchresults' => 'Tifellawin n tarezzut',
@@ -356,7 +356,6 @@ mala tucit-id, ataf Lxdant inec a tetwassan ila inec.',
 'nchanges' => '$1 {{PLURAL:$1|tiẓṛegt|tiẓṛigin}}',
 'recentchanges' => 'Tiẓṛigin tineggura',
 'recentchanges-feed-description' => 'Bbar tiẓṛigin timayutin n wiki deg usudem(feed) a .',
-'rcnote' => "Awadday {{PLURAL:$1|d '''1''' taẓṛigt|d '''$1''' tiẓṛigin tinggura}} deg {{PLURAL:$2|ass anggaru |'''$2''' ussan inggura}}, am di $5, $4.",
 'rcnotefrom' => "ɣar wadday d tiẓṛigin zi '''$2''' (ar '''$1''' ).",
 'rclistfrom' => 'Ẓar tiẓṛigin timaynutin ig ibeddan zi $1',
 'rcshowhideminor' => '$1 tiẓṛigin d-timeẓyanin',
index e9b222b..3250799 100644 (file)
@@ -191,7 +191,6 @@ $messages = array(
 'vector-action-protect' => 'Bloccar',
 'vector-action-undelete' => 'Restituir',
 'vector-action-unprotect' => 'Midar la protecziun',
-'vector-simplesearch-preference' => 'Activar la trav da tschertgar simplifitgada (be per il skin Vector)',
 'vector-view-create' => 'Crear',
 'vector-view-edit' => 'Modifitgar',
 'vector-view-history' => 'Cronologia',
index 4aa2c0d..82d4865 100644 (file)
@@ -297,7 +297,6 @@ Kana avilyan kathe doshatar, ja palpale.',
 # Recent changes
 'recentchanges' => 'Neve paruvimata',
 'recentchanges-summary' => 'Andi kadaya patrin shai te dikhes le neve paruvimata andi romani {{SITENAME}}.',
-'rcnote' => 'Tele si le palutne <strong>$1</strong> paruvimata andar le palutne <strong>$2</strong> divesa.',
 'rcnotefrom' => "Tele si le averutnimata katar '''$2''' (inklen '''$1''' averutnimata, shai te paruves o gin alosarindoi aver tele).",
 'rclistfrom' => 'Dikh le paruvimata ji kai $1',
 'rcshowhideminor' => '$1 tikne editisaripena',
@@ -377,7 +376,6 @@ Kana kamesa te khoses kadaya patrin andar tiri lista le patryange so arakhes len
 'watch' => 'Dikh la',
 'unwatch' => 'Na mai dikh',
 'unwatchthispage' => 'Na mai dikh',
-'wlnote' => 'Tele si le palutne $1 paruvimata ande palutne <b>$2</b> ore.',
 
 'enotif_reset' => 'Thov semno kai patrya so dikhlem',
 
@@ -403,7 +401,6 @@ Dikh ando $2 ek patrinipen le palutne butyange khosle.',
 # Undelete
 'undelete' => 'Dikh le khosle patrya',
 'undeletebtn' => 'Le palpale',
-'undeletereset' => 'Khos le paruvimata',
 
 # Namespace form on various pages
 'namespace' => 'Rig:',
@@ -454,7 +451,6 @@ Dikh ando $2 ek patrinipen le palutne butyange khosle.',
 'tooltip-pt-watchlist' => 'I lista le pajinenge so dikhav lendar (monitorizav).',
 'tooltip-pt-mycontris' => 'Le mire editisarimata',
 'tooltip-pt-login' => 'Mishto si te identifikares tut, pale na si musai.',
-'tooltip-pt-anonlogin' => 'Mishto si te identifikares tut, pale na si musai.',
 'tooltip-pt-logout' => 'Kathe aćhaves i sesiyunya',
 'tooltip-ca-talk' => 'Diskuciya le artikoleske',
 'tooltip-ca-edit' => 'Shai te editisares kadaya pajina. Mangas te paledikhes o teksto anglal te uxtaves les.',
index ce016a1..ea2636a 100644 (file)
@@ -837,6 +837,9 @@ Vă rugăm să așteptați $1 până să reîncercați.',
 'suspicious-userlogout' => 'Cererea dumneavoastră de a închide sesiunea a fost refuzată întrucât pare că a fost trimisă printr-o eroare a navigatorului sau de un proxy memorat în cache.',
 'createacct-another-realname-tip' => 'Numele real este opțional.
 Dacă decideți furnizarea sa, acesta va fi folosit pentru a atribui utilizatorului munca sa.',
+'pt-login' => 'Autentificare',
+'pt-createaccount' => 'Creare cont',
+'pt-userlogout' => 'Închide sesiunea',
 
 # Email sending
 'php-mail-error-unknown' => 'Eroare necunoscută în funcția PHP mail()',
@@ -845,7 +848,7 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a atribui utilizatoru
 
 # Change password dialog
 'changepassword' => 'Schimbare parolă',
-'resetpass_announce' => 'Sunteți autentificat cu un cod temporar trimis pe e-mail. Pentru a termina acțiunea de autentificare, trebuie să setați o parolă nouă aici:',
+'resetpass_announce' => 'Pentru a finaliza acțiunea de autentificare, trebuie să setați o parolă nouă.',
 'resetpass_text' => '<!-- Adăugați text aici -->',
 'resetpass_header' => 'Modificare parolă',
 'oldpassword' => 'Parola veche:',
@@ -861,8 +864,13 @@ Vă rugăm să așteptați $1 până să reîncercați.',
 'resetpass-submit-cancel' => 'Revocare',
 'resetpass-wrong-oldpass' => 'Parolă curentă sau temporară incorectă.
 Este posibil să fi reușit deja schimbarea parolei sau să fi cerut o parolă temporară nouă.',
+'resetpass-recycled' => 'Vă rugăm să vă schimbați parola în altceva decât parola curentă.',
+'resetpass-temp-emailed' => 'Sunteți autentificat cu un cod temporar primit pe e-mail.
+Pentru a finaliza acțiunea de autentificare, trebuie să setați o parolă nouă aici:',
 'resetpass-temp-password' => 'Parolă temporară:',
 'resetpass-abort-generic' => 'Schimbarea parolei a fost anulată de către o extensie.',
+'resetpass-expired' => 'Parola dumneavoastră a expirat. Alegeți o parolă nouă pentru a vă autentifica.',
+'resetpass-expired-soft' => 'Parola dumneavoastră a expirat și trebuie schimbată. Alegeți o parolă nouă acum sau apăsați Revocare pentru a o reseta mai târziu.',
 
 # Special:PasswordReset
 'passwordreset' => 'Resetare parolă',
@@ -1719,11 +1727,23 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
 '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',
+'rcshowhideminor-show' => 'Arată',
+'rcshowhideminor-hide' => 'Ascunde',
 'rcshowhidebots' => '$1 roboții',
+'rcshowhidebots-show' => 'Arată',
+'rcshowhidebots-hide' => 'Ascunde',
 'rcshowhideliu' => '$1 utilizatorii înregistrați',
+'rcshowhideliu-show' => 'Arată',
+'rcshowhideliu-hide' => 'Ascunde',
 'rcshowhideanons' => '$1 utilizatorii anonimi',
+'rcshowhideanons-show' => 'Arată',
+'rcshowhideanons-hide' => 'Ascunde',
 'rcshowhidepatr' => '$1 modificările patrulate',
+'rcshowhidepatr-show' => 'Arată',
+'rcshowhidepatr-hide' => 'Ascunde',
 'rcshowhidemine' => '$1 contribuțiile mele',
+'rcshowhidemine-show' => 'Arată',
+'rcshowhidemine-hide' => 'Ascunde',
 'rclinks' => 'Se arată ultimele $1 modificări din ultimele $2 zile.<br />
 $3',
 'diff' => 'dif',
@@ -1851,6 +1871,7 @@ Ar trebui să contactați pe cineva care poate vizualiza datele suprimate ale fi
 'php-uploaddisabledtext' => 'Încărcarea de fișiere este dezactivată în PHP.
 Vă rugăm să verificați setările din file_uploads.',
 'uploadscripted' => 'Fișierul conține HTML sau cod script care poate fi interpretat în mod eronat de un browser.',
+'uploadinvalidxml' => 'Nu s-a putut analiza conținutul XML din fișierul încărcat.',
 'uploadvirus' => 'Fișierul conține un virus! Detalii: $1',
 'uploadjava' => 'Fișierul de față este o arhivă ZIP care conține un fișier de clasă Java.
 Încărcarea fișierelor Java nu este permisă, întrucât pot evita restricțiile de securitate.',
@@ -4200,6 +4221,4 @@ MediaWiki este distribuit în speranța că va fi folositor, dar FĂRĂ VREO GAR
 'expand_templates_generate_rawhtml' => 'Arată HTML brut',
 'expand_templates_preview' => 'Previzualizare',
 
-# Unknown messages
-'uploadinvalidxml' => 'Nu s-a putut analiza conținutul XML din fișierul încărcat.',
 );
index 418624e..38255d1 100644 (file)
@@ -189,7 +189,6 @@ $messages = array(
 'vector-action-protect' => 'Protegge',
 'vector-action-undelete' => 'Repristine',
 'vector-action-unprotect' => "Cange 'a protezione",
-'vector-simplesearch-preference' => "Abbilite 'a barre de ricerche semblificate (Sulamende pe le scheme a vettore)",
 'vector-view-create' => 'Ccreje',
 'vector-view-edit' => 'Cange',
 'vector-view-history' => "Vide 'u cunde",
index 066436e..b45e742 100644 (file)
@@ -567,7 +567,7 @@ $messages = array(
 'category-empty' => "''Эта категория в данный момент пуста.''",
 'hidden-categories' => '{{PLURAL:$1|1=Скрытая категория|Скрытые категории}}',
 'hidden-category-category' => 'Скрытые категории',
-'category-subcat-count' => '{{PLURAL:$2|Эта категория содержит только следующую подкатегорию.|Эта категория содержит $1 {{PLURAL:$1|1=подкатегорию|подкатегории}} из $2 всего.}}',
+'category-subcat-count' => '{{PLURAL:$2|Эта категория содержит только следующую подкатегорию.|Эта категория содержит $1 {{PLURAL:$1|подкатегорию|подкатегорий|подкатегории}} из $2 всего.}}',
 'category-subcat-count-limited' => 'В этой категории {{PLURAL:$1|$1 подкатегория|$1 подкатегорий|$1 подкатегории}}.',
 'category-article-count' => '{{PLURAL:$2|1=Эта категория содержит единственную страницу.|{{PLURAL:$1|Показана $1 страница|Показано $1 страниц|Показаны $1 страницы}} из $2, {{PLURAL:$2|находящейся|находящихся}} в данной категории.}}',
 'category-article-count-limited' => 'В этой категории {{PLURAL:$1|$1 страница|$1 страниц|$1 страницы|1=только одна страница}}.',
@@ -987,6 +987,9 @@ $2',
 'suspicious-userlogout' => 'Ваш запрос на завершение сеанса отклонён, так как он похож на запрос, отправленный некорректным браузером или кэширующим прокси.',
 'createacct-another-realname-tip' => 'Настоящее имя (необязательное поле).
 Если вы укажете его, то оно будет использовано для того, чтобы показать, кем была внесена правка страницы.',
+'pt-login' => 'Войти',
+'pt-createaccount' => 'Создать учётную запись',
+'pt-userlogout' => 'Выйти',
 
 # Email sending
 'php-mail-error-unknown' => 'Неизвестная ошибка в PHP-функции mail()',
@@ -995,7 +998,7 @@ $2',
 
 # Change password dialog
 'changepassword' => 'Изменение пароля',
-'resetpass_announce' => 'Ð\92Ñ\8b Ð¿Ñ\80едÑ\81Ñ\82авилиÑ\81Ñ\8c Ñ\81 Ð¿Ð¾Ð¼Ð¾Ñ\89Ñ\8cÑ\8e Ð²Ñ\80еменного Ð¿Ð°Ñ\80олÑ\8f, Ð¿Ð¾Ð»Ñ\83Ñ\87енного Ð¿Ð¾ Ñ\8dлекÑ\82Ñ\80онной Ð¿Ð¾Ñ\87Ñ\82е. Ð\94лÑ\8f Ð·Ð°Ð²ÐµÑ\80Ñ\88ениÑ\8f Ð²Ñ\85ода Ð² Ñ\81иÑ\81Ñ\82емÑ\83 Ð²Ñ\8b Ð´Ð¾Ð»Ð¶Ð½Ñ\8b Ñ\83Ñ\81Ñ\82ановиÑ\82Ñ\8c Ð½Ð¾Ð²Ñ\8bй Ð¿Ð°Ñ\80олÑ\8c.',
+'resetpass_announce' => 'Для завершения входа в систему вы должны установить новый пароль.',
 'resetpass_text' => '<!-- Добавьте сюда текст -->',
 'resetpass_header' => 'Изменение пароля учётной записи',
 'oldpassword' => 'Старый пароль:',
@@ -1011,8 +1014,13 @@ $2',
 'resetpass-submit-cancel' => 'Отмена',
 'resetpass-wrong-oldpass' => 'Неправильный временный или текущий пароль.
 Возможно, вы уже успешно изменили пароль, или запросили новый временный пароль.',
+'resetpass-recycled' => 'Пожалуйста, измените пароль на что-то, отличное от вашего текущего пароля.',
+'resetpass-temp-emailed' => 'Вы представились с помощью временного пароля, полученного по электронной почте.
+Для завершения входа в систему, необходимо задать новый пароль:',
 'resetpass-temp-password' => 'Временный пароль:',
 'resetpass-abort-generic' => 'Изменение пароля было прервано расширением.',
+'resetpass-expired' => 'Срок действия вашего пароля истёк. Пожалуйста, установите новый пароль для входа в систему.',
+'resetpass-expired-soft' => 'Срок действия вашего пароля истёк, и теперь он должен быть изменён. Пожалуйста, выберите новый пароль или нажмите «Отменить», чтобы изменить его позже.',
 
 # Special:PasswordReset
 'passwordreset' => 'Сброс пароля',
@@ -1873,11 +1881,23 @@ $1",
 'rcnotefrom' => "Ниже перечислены изменения с '''$2''' (не более '''$1''').",
 'rclistfrom' => 'Показать изменения с $1.',
 'rcshowhideminor' => '$1 малые правки',
+'rcshowhideminor-show' => 'Показать',
+'rcshowhideminor-hide' => 'Скрыть',
 'rcshowhidebots' => '$1 ботов',
+'rcshowhidebots-show' => 'Показать',
+'rcshowhidebots-hide' => 'Скрыть',
 'rcshowhideliu' => '$1 представившихся участников',
+'rcshowhideliu-show' => 'Показать',
+'rcshowhideliu-hide' => 'Скрыть',
 'rcshowhideanons' => '$1 непредставившихся',
+'rcshowhideanons-show' => 'Показать',
+'rcshowhideanons-hide' => 'Скрыть',
 'rcshowhidepatr' => '$1 проверенные правки',
+'rcshowhidepatr-show' => 'Показать',
+'rcshowhidepatr-hide' => 'Скрыть',
 'rcshowhidemine' => '$1 свои правки',
+'rcshowhidemine-show' => 'Показать',
+'rcshowhidemine-hide' => 'Скрыть',
 'rclinks' => 'Показать последние $1 изменений за $2 дней<br />$3',
 'diff' => 'разн.',
 'hist' => 'история',
@@ -2004,6 +2024,7 @@ $1",
 'uploaddisabledtext' => 'Загрузка файлов отключена.',
 'php-uploaddisabledtext' => 'Загрузка файлов отключена в настройках PHP. Пожалуйста, проверьте значение свойства file_uploads.',
 'uploadscripted' => 'Файл содержит HTML-код или скрипт, который может быть ошибочно обработан браузером.',
+'uploadinvalidxml' => 'XML в загруженном файле не может быть проанализирован.',
 'uploadvirus' => 'Файл содержит вирус! См. $1',
 'uploadjava' => 'Файл представляет собой ZIP-архив, содержащий .class файл Java.
 Загрузка Java-файлов не допускается из-за соображений безопасности.',
@@ -2835,6 +2856,7 @@ $1',
 'sp-contributions-search' => 'Поиск вклада',
 'sp-contributions-username' => 'IP-адрес или имя участника:',
 'sp-contributions-toponly' => 'Показывать только правки, являющиеся последними версиями',
+'sp-contributions-newonly' => 'Показывать только правки, являющиеся созданием страниц',
 'sp-contributions-submit' => 'Найти',
 
 # What links here
@@ -4463,6 +4485,4 @@ MediaWiki распространяется в надежде, что она бу
 'expand_templates_generate_rawhtml' => 'Показать HTML',
 'expand_templates_preview' => 'Предпросмотр',
 
-# Unknown messages
-'uploadinvalidxml' => 'XML в загруженном файле не может быть проанализирован.',
 );
index a05af97..5404ea8 100644 (file)
@@ -279,7 +279,6 @@ $messages = array(
 'vector-action-protect' => 'Всокотити',
 'vector-action-undelete' => 'Обновити',
 'vector-action-unprotect' => 'Змінити замок',
-'vector-simplesearch-preference' => 'Поволити спрощене поле гляданя (лем взгляд Vector )',
 'vector-view-create' => 'Створити',
 'vector-view-edit' => 'Едітовати',
 'vector-view-history' => 'Видїти історію',
index 30bbcc3..e39cf04 100644 (file)
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'Subliniadză ligâturâ:',
-'tog-hideminor' => 'Ascundi alâxirile ńici.',
-'tog-numberheadings' => 'Numără automat secțiunili.',
+'tog-underline' => 'Subliniaḑă ligâtura:',
+'tog-hideminor' => 'Ascundeari a alâxiriloru ńiți di-tu nalili alâxiri',
+'tog-numberheadings' => 'Numirari automatâ a secțiuniloru',
 'tog-editondblclick' => "Aravdă alâxirea frundzâl'ei ti dublu click (caftă JavaScript)",
 
-'underline-always' => 'Dipriunâ',
+'underline-always' => 'Totna',
 'underline-never' => 'Vârâoarâ',
 
 # Dates
-'sunday' => 'Dumãnicã',
-'monday' => 'Lune',
-'tuesday' => 'Martsã',
-'wednesday' => 'Njercure',
-'thursday' => 'Gioia',
-'friday' => 'Vinirã',
-'saturday' => 'Sãmbãtã',
-'january' => 'yinar',
-'february' => 'È\99curtu',
-'march' => 'marțu',
-'april' => 'aprir',
-'may_long' => 'maiu',
-'june' => 'cirișar',
-'july' => 'alunar',
-'august' => 'avgustu',
-'september' => 'yizmăciun',
-'october' => 'xumedru',
-'november' => 'brumar',
-'december' => 'andreu',
-'january-gen' => 'Yinar',
-'february-gen' => 'Shcurtu',
-'march-gen' => 'Martsu',
-'april-gen' => 'Aprir',
-'may-gen' => 'Mailu',
-'june-gen' => 'Cirishar',
-'july-gen' => 'Alunar',
+'sunday' => 'dumânicâ',
+'monday' => 'luni',
+'tuesday' => 'marțâ',
+'wednesday' => 'ńiercuri',
+'thursday' => 'gioi',
+'friday' => 'viniri',
+'saturday' => 'sâmbâtâ',
+'january' => 'Yinaru',
+'february' => 'È\98curtu',
+'march' => 'Marțu',
+'april' => 'Apriiru',
+'may_long' => 'Maiu',
+'june' => 'Cirișaru',
+'july' => 'Alunaru',
+'august' => 'Avgustu',
+'september' => 'Yizmâciunu',
+'october' => 'Sumedru',
+'november' => 'Brumaru',
+'december' => 'Andreu',
+'january-gen' => 'Yinaru',
+'february-gen' => 'Șcurtu',
+'march-gen' => 'Marțu',
+'april-gen' => 'Apriiru',
+'may-gen' => 'Maiu',
+'june-gen' => 'Cirișaru',
+'july-gen' => 'Alunaru',
 'august-gen' => 'Avgustu',
-'september-gen' => 'Yizmaciunjle',
-'october-gen' => 'Xumedru',
-'november-gen' => 'Brumar',
-'december-gen' => 'Andreulu',
-'jan' => 'yinar',
-'feb' => 'șcurtu',
-'mar' => 'marțu',
-'apr' => 'aprir',
-'may' => 'maiu',
-'jun' => 'cirișar',
-'jul' => 'alunar',
-'aug' => 'avgustu',
-'sep' => 'yizmăciun',
-'oct' => 'xumedru',
-'nov' => 'brumar',
-'dec' => 'andreu',
+'september-gen' => 'Yizmâciunu',
+'october-gen' => 'Sumedru',
+'november-gen' => 'Brumaru',
+'december-gen' => 'Andreu',
+'jan' => 'yin',
+'feb' => 'șcur',
+'mar' => 'mar',
+'apr' => 'apr',
+'may' => 'mai',
+'jun' => 'cir',
+'jul' => 'alun',
+'aug' => 'avg',
+'sep' => 'yiz',
+'oct' => 'sum',
+'nov' => 'brum',
+'dec' => 'andr',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Categorie|Categorii}}',
-'category_header' => 'Frândzâ ti categoria "$1"',
+'category_header' => 'Frânḑâ tu categoria "$1"',
 'hidden-categories' => '{{PLURAL:$1|Categorie ascumsâ|Categorii ascumsi}}',
 
-'article' => 'Articlu',
-'newwindow' => "(discl'idi tu nauâ fereastă)",
+'article' => 'Articolu',
+'newwindow' => '(si discľidi tu unâ nauâ fireastrâ)',
 'cancel' => 'Alasã',
 'moredotdotdot' => 'Ma multu...',
 'mytalk' => 'Zburare-a mea',
 'navigation' => 'Navigație',
 
 # Cologne Blue skin
-'qbfind' => 'Caftă',
-'qbedit' => 'Alãxiri',
-'qbpageoptions' => 'Aestă frândză',
-'qbmyoptions' => 'Frândzili a meali',
+'qbfind' => 'Caftâ',
+'qbedit' => 'Alâxiri',
+'qbpageoptions' => 'Aestă frână',
+'qbmyoptions' => 'Frânili a meali',
 
 # Vector skin
 'vector-action-addsection' => 'Dimândari nauâ',
-'vector-view-history' => 'Vedz istoric',
+'vector-view-history' => 'Veḑ istoricu',
 'namespaces' => 'Spațiu di numi',
-'variants' => 'Variante',
-
-'tagline' => 'Dit {{SITENAME}}',
-'help' => 'Agiutor',
-'search' => 'Câftare',
-'searchbutton' => 'Caftã',
-'go' => 'Du-vã',
-'searcharticle' => 'Du-vã',
-'history_short' => 'Istoric',
+'variants' => 'Varianti',
+
+'tagline' => 'Di-tu {{SITENAME}}',
+'help' => 'Agiutoru',
+'search' => 'Câftari',
+'searchbutton' => 'Câftari',
+'go' => 'Du-vâ',
+'searcharticle' => 'Du-vâ',
+'history_short' => 'Istoricu',
 'printableversion' => 'Verzia ti tipuseare',
-'permalink' => 'Legătură permanentă',
+'permalink' => 'Ligâturâ permanentâ',
 'edit' => 'Alâxire',
-'delete' => 'Ashcirdzire',
+'delete' => 'Așcirḑire',
 'protect' => 'Apurã',
-'newpage' => 'Frândzâ nauă',
+'newpage' => 'Frânḑâ nauâ',
 'talkpagelinktext' => 'Zburari',
 'talk' => 'Discusiur',
 'views' => 'Videri',
@@ -118,30 +118,30 @@ $messages = array(
 'disclaimers' => 'Nipricunuschire',
 'edithelp' => 'Agiutor ti alãxire',
 'helppage' => 'Help:Conținut',
-'mainpage' => 'Prota frândză',
-'mainpage-description' => 'Prota frãndzã',
-'portal' => 'Portal-a comunitatiľei',
-'portal-url' => 'Project:Portal-a comunitatiľei',
+'mainpage' => 'Prota frânḑâ',
+'mainpage-description' => 'Prota frâná¸\91â',
+'portal' => 'Portala comunitatiľei',
+'portal-url' => 'Proiectu:Portalu a comunitatiľei',
 'privacy' => 'Politică di confidențialitate',
 
-'youhavenewmessagesmulti' => 'Avets nãi dimãndãri pi $1',
+'youhavenewmessagesmulti' => 'Aveț năi dimândări pi $1',
 'editsection' => 'alâxire',
 'editold' => 'Alâxiri',
 'viewsourceold' => 'videari izvor',
 'viewsourcelink' => 'videari izvor',
 'editsectionhint' => 'Alâxire parti: $1',
 'site-atom-feed' => '$1 Atom feed',
-'red-link-title' => '$1 (frândza nu easti)',
+'red-link-title' => '$1 (frâna nu easti)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Articlu',
-'nstab-user' => 'Frãndza-a ufilizitirolui',
-'nstab-special' => 'Frândzâ specială',
-'nstab-template' => 'Format',
+'nstab-main' => 'Frânḑâ',
+'nstab-user' => 'Frâná¸\91â a utilizatorului',
+'nstab-special' => 'Frândzâ specialâ',
+'nstab-template' => 'Formatu',
 'nstab-category' => 'Categorie',
 
 # General errors
-'viewsource' => 'Videts-u fãntãnã',
+'viewsource' => 'Videț-u fântânâ',
 
 # Login and logout pages
 'yourname' => 'Numa di ufilizitor:',
@@ -278,10 +278,10 @@ $messages = array(
 'tooltip-p-logo' => 'Prota frãndzã',
 'tooltip-n-mainpage' => 'Vedz prota frândză',
 'tooltip-t-specialpages' => 'Unâ listâ di tuti frândzele',
-'tooltip-ca-nstab-category' => 'Vedz frândza di categorie',
+'tooltip-ca-nstab-category' => 'Veḑ categoria',
 
 # Special:NewFiles
-'ilsubmit' => 'Caftã',
+'ilsubmit' => 'Caftâ',
 
 # Multipage image navigation
 'imgmultigo' => 'Du-vã!',
index 600196b..a7a3a04 100644 (file)
@@ -195,7 +195,6 @@ $messages = array(
 
 # Recent changes
 'recentchanges' => 'шумбајрае рецентае',
-'rcnote' => "Маи хос се флај {{PLURAL:\$|ултима модификаре|ултимеле '''\$1''' модификајри}} дин {{PLURAL:\$2|ултима зи|ултимеле '''\$2''' зиле}}, енцепонд цу \$5, \$4.",
 'rcshowhideminor' => '$1 модификајриле миноре',
 'rcshowhidebots' => '$1 роботи',
 'rcshowhideliu' => '$1 утилизатори приласнаери',
index d1c1c5c..6cb7107 100644 (file)
@@ -195,7 +195,6 @@ Te rog notari la din kontribuţi al {{SITENAME}} sunt konsideraere relesavat sup
 
 # Recent changes
 'recentchanges' => 'şumbărae recentae',
-'rcnote' => "Mai hos se flă {{PLURAL:\$|ultima modifikare|ultimele '''\$1''' modifikări}} din {{PLURAL:\$2|ultima zi|ultimele '''\$2''' zile}}, encepând cu \$5, \$4.",
 'rcshowhideminor' => '$1 modifikările minore',
 'rcshowhidebots' => '$1 roboti',
 'rcshowhideliu' => '$1 utilizatori prilasnaeri',
index 3012b92..ae3e444 100644 (file)
@@ -428,7 +428,6 @@ The following {{PLURAL:$1|file is|$1 files are}} in the current category.',
 'vector-action-protect' => 'संरक्ष्यताम्',
 'vector-action-undelete' => 'अपाकरणस्य निरसनम्',
 'vector-action-unprotect' => 'सुरक्षितीकरणस्य निरसनम्',
-'vector-simplesearch-preference' => 'संवर्धिताः अन्वेषणोपक्षेपाः समर्थीकरोतु। (केवलं वैक्टर-स्किन् इत्यस्यार्थे)',
 'vector-view-create' => 'सृज्यताम्',
 'vector-view-edit' => 'सम्पाद्यताम्',
 'vector-view-history' => 'इतिहासः दृश्यताम्',
index 68b6e96..159079f 100644 (file)
@@ -207,7 +207,6 @@ $messages = array(
 'vector-action-protect' => 'Уларыйбат гын',
 'vector-action-undelete' => 'Төннөр',
 'vector-action-unprotect' => 'Көмүскэлин уларыт',
-'vector-simplesearch-preference' => 'Көрдөбүл устуруокатын судургу барылын туруор («Векторга» эрэ)',
 'vector-view-create' => 'Ай',
 'vector-view-edit' => 'Уларыт',
 'vector-view-history' => 'Устуоруйатын көрүү',
index 16d8241..89616cf 100644 (file)
@@ -168,7 +168,6 @@ $messages = array(
 'vector-action-protect' => 'Bańcao',
 'vector-action-undelete' => 'Bań getgiḍi',
 'vector-action-unprotect' => 'Bodol rukhiyạ',
-'vector-simplesearch-preference' => 'Arhõ jạsti sendra poramorso keṭećmẽ (khali vecṭor skinre lạgit)',
 'vector-view-create' => 'Tearme',
 'vector-view-edit' => 'So̠mpado̠n',
 'vector-view-history' => 'Jạṛ ńelme',
index a486599..3b869bf 100644 (file)
@@ -58,7 +58,6 @@ $linkTrail = "/^([a-z]+)(.*)$/sD";
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Sutalìnea is cullegamentos',
-'tog-justify' => 'Alliniamentu paràgrafos giustificados',
 'tog-hideminor' => 'Cua is acontzos minores in sa pàgina de is ùrtimas mudàntzias',
 'tog-hidepatrolled' => 'Cua is acontzos verificados in is ùrtimas mudàntzias',
 'tog-newpageshidepatrolled' => 'Cua is pàginas verificadas dae sa lista de is pàginas noas',
@@ -67,9 +66,7 @@ $messages = array(
 'tog-numberheadings' => 'Auto-numeratzione de is tìtulos',
 'tog-showtoolbar' => "Ammustra s'amusta de is ainas pro is acontzos (esigit JavaScript)",
 'tog-editondblclick' => 'Acontza pàginas cun dòpiu click (esigit JavaScript)',
-'tog-editsection' => 'Acontza setziones dae su butone [acontza]',
 'tog-editsectiononrightclick' => "Abilita s'acontzu de is setziones cun dòpiu click in is tìtulos de is setziones (esigit JavaScript)",
-'tog-showtoc' => "Ammustra s'ìndixe de is cuntènnidos (pro pàginas cun prus de 3 setziones)",
 'tog-rememberpassword' => 'Ammenta sa sessione in custu navigadore (pro unu màssimu de $1 {{PLURAL:$1|die|dies}})',
 'tog-watchcreations' => 'Aciungi is pàginas chi apo creadu a sa watchlist mea',
 'tog-watchdefault' => 'Aciungi is pàginas chi apo acontzadu a sa watchlist mea',
index cc365ee..e7e29dd 100644 (file)
@@ -315,7 +315,6 @@ $messages = array(
 'vector-action-protect' => 'Pruteggi',
 'vector-action-undelete' => 'Riprìstina',
 'vector-action-unprotect' => 'Cancia la prutizzioni',
-'vector-simplesearch-preference' => 'Abbilita la barra pâ ricerca simprificata (sulu pi la skin Vector)',
 'vector-view-create' => 'Crea',
 'vector-view-edit' => 'Cancia',
 'vector-view-history' => 'Talìa a storia',
index f9a58f9..62148c4 100644 (file)
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Unnerline airtins:',
-'tog-hideminor' => 'Hide smaa edits in recent chynges',
-'tog-hidepatrolled' => 'Hide patrolled edits in recent chynges',
-'tog-newpageshidepatrolled' => 'Hide patrolled pages frae the new page list',
-'tog-extendwatchlist' => 'Mak watchleet bigger tae shaw aw chynges',
-'tog-usenewrc' => 'Enhanced recent chynges (no for aa brousers)',
+'tog-hideminor' => 'Skauk smaa eidits in recent chynges',
+'tog-hidepatrolled' => 'Skauk patrolled eidits in recent chynges',
+'tog-newpageshidepatrolled' => 'Skauk patrolled pages frae the new page leet',
+'tog-extendwatchlist' => 'Mak watchleet bigger tae shaw aw chynges,no jyst the maist recent',
+'tog-usenewrc' => 'Groop chynges bi page in recent chynges and watchleet',
 'tog-numberheadings' => 'Auto-nummer heidins',
-'tog-showtoolbar' => 'Shaw edit toolbar',
-'tog-editondblclick' => 'Edit pages on dooble-dab (JavaScript)',
-'tog-editsectiononrightclick' => 'Enable section editin bi richt-dabbin on section teitles (JavaScript)',
-'tog-rememberpassword' => 'Mynd password ower sessions (for a maximum of $1 {{PLURAL:$1|day|days}})',
-'tog-watchcreations' => 'Add pages ye mak tar yer watchleet',
-'tog-watchdefault' => 'Add pages ye edit tae yer watchleet',
-'tog-watchmoves' => 'Eik pages A move tae ma watchleet',
-'tog-watchdeletion' => 'Eik pages A get rid o tae ma watchleet',
+'tog-showtoolbar' => 'Shaw edit tuilbar',
+'tog-editondblclick' => 'Edit pages on dooble-clap (JavaScript)',
+'tog-editsectiononrightclick' => 'Enable section editin bi richt-clapin on section teitles',
+'tog-rememberpassword' => 'Mynd ma password oan this browser (fer ae maximum o $1 {{PLURAL:$1|day|days}})',
+'tog-watchcreations' => 'Add pages that Ah mak an files Ah uplaid til ma watchleet',
+'tog-watchdefault' => 'Add pages an files that Ah edit til ma watchleet',
+'tog-watchmoves' => 'Eik pages an files that Ah muiv til ma watchleet',
+'tog-watchdeletion' => 'Eik pages an files that Ah get rid o til ma watchleet',
 'tog-minordefault' => 'Mairk aa edits "smaa" bi defaut',
-'tog-previewontop' => 'Shaw scance afore edit box an no efter it',
+'tog-previewontop' => 'Shaw owerview afore eidit kist an no efter it',
 'tog-previewonfirst' => 'Shaw scance on first edit',
-'tog-enotifwatchlistpages' => 'Send me an email on page chynges',
-'tog-enotifusertalkpages' => 'Send me an email whan ma uiser collogue page is chynged',
-'tog-enotifminoredits' => 'Send me an email for smaa edits o pages an aa',
+'tog-enotifwatchlistpages' => 'Wab-mail me whan ae page or file on ma watchleet is chynged',
+'tog-enotifusertalkpages' => 'Send me ae email whan ma uiser talk page is chynged',
+'tog-enotifminoredits' => 'Send me ae wab-mail fer wee edits o pages an files ava',
 'tog-enotifrevealaddr' => 'Shaw ma email address in notification mails',
 'tog-shownumberswatching' => 'Shaw the nummer o watching uisers',
-'tog-fancysig' => 'Raw seignaturs (athoot automatic airtin)',
-'tog-uselivepreview' => 'Uise leeve preview (JavaScript) (Prattik)',
+'tog-fancysig' => 'Treat signature as wikitext (wioot aen autæmatic airtin)',
+'tog-uselivepreview' => 'Uise live preview (experimental)',
 'tog-forceeditsummary' => 'Gie me a jottin when A dinnae put in a edit summary',
-'tog-watchlisthideown' => 'Hide yer ain edits frae yer watchleet',
-'tog-watchlisthidebots' => 'Hide bot edits frae yer watchleet',
+'tog-watchlisthideown' => 'Skauk ma eidits frae the watchleet',
+'tog-watchlisthidebots' => 'Skauk bot eidits frae the watchleet',
 'tog-watchlisthideminor' => 'Dinna shaw sma edits on ma watchleet',
-'tog-watchlisthideliu' => 'Hide edits by loggit in uisers frae the watchleet',
-'tog-watchlisthideanons' => 'Hide edits by nameless uisers frae the watchleet',
-'tog-watchlisthidepatrolled' => 'Hide patrolled edits frae the watchlist',
+'tog-watchlisthideliu' => 'Skauk eidits bi loggit in uisers frae the watchleet',
+'tog-watchlisthideanons' => 'Skauk eidits bi nameless uisers frae the watchleet',
+'tog-watchlisthidepatrolled' => 'Skauk patrolled eidits frae the watchlist',
 'tog-ccmeonemails' => 'Gie me copies o emails A write tae ither uisers',
 'tog-diffonly' => 'Dinna shaw page contents ablo diffs',
 'tog-showhiddencats' => 'Shaw hidden categories',
 'tog-norollbackdiff' => 'Lave oot diff efter rowin back',
+'tog-useeditwarning' => 'Warnish me whan a lea aen edit page wi onsaved chynges',
+'tog-prefershttps' => 'Aye uise ae secure connection whan loggit in',
 
 'underline-always' => 'Aye',
 'underline-never' => 'Niver',
-'underline-default' => 'Brouser defaut',
+'underline-default' => 'Skin or brouser defaut',
 
 # Font style option in Special:Preferences
+'editfont-style' => 'Eidit area font style:',
+'editfont-default' => 'Brouser defaut',
 'editfont-sansserif' => 'Sans-serif font',
 'editfont-serif' => 'Serif font',
 
@@ -85,8 +89,8 @@ $messages = array(
 'thu' => 'Thu',
 'fri' => 'Fri',
 'sat' => 'Sat',
-'january' => 'Januar',
-'february' => 'Februar',
+'january' => 'Januair',
+'february' => 'Febuair',
 'march' => 'Mairch',
 'april' => 'Apryle',
 'may_long' => 'Mey',
@@ -97,11 +101,11 @@ $messages = array(
 'october' => 'October',
 'november' => 'November',
 'december' => 'December',
-'january-gen' => 'Januar',
+'january-gen' => 'Januair',
 'february-gen' => 'February',
-'march-gen' => 'March',
+'march-gen' => 'Mairch',
 'april-gen' => 'Apryle',
-'may-gen' => 'May',
+'may-gen' => 'Mey',
 'june-gen' => 'Juin',
 'july-gen' => 'Julie',
 'august-gen' => 'August',
@@ -121,6 +125,18 @@ $messages = array(
 'oct' => 'Oct',
 'nov' => 'Nov',
 'dec' => 'Diz',
+'january-date' => '$1 Januair',
+'february-date' => '$1 Febuair',
+'march-date' => '$1 Mairch',
+'april-date' => '$1 Apryl',
+'may-date' => '$1 Mey',
+'june-date' => '$1 Juin',
+'july-date' => '$1 Juli',
+'august-date' => '$1 August',
+'september-date' => '$1 September',
+'october-date' => '$1 October',
+'november-date' => '$1 November',
+'december-date' => '$1 Dezember',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Category|Categories}}',
@@ -129,6 +145,7 @@ $messages = array(
 'category-media-header' => 'Eetems in category "$1"',
 'category-empty' => "''This category haes no pages or eetems at the meenit.''",
 'hidden-categories' => '{{PLURAL:$1|Hidden categorie|Hidden categories}}',
+'hidden-category-category' => 'Hidden cætegories',
 'category-subcat-count' => '{{PLURAL:$2|This category juist haes the follaein subcategory.|This category haes the follaein {{PLURAL:$1|subcategory|$1 subcategories}}, oot o $2 awthegither.}}',
 'category-subcat-count-limited' => 'This category haes the follaein {{PLURAL:$1|subcategory|$1 subcategories}}.',
 'category-article-count' => '{{PLURAL:$2|This category contains the ae follaein page.|The follaein {{PLURAL:$1|page|$1 pages}} is in this category, oot o $2 total.}}',
@@ -136,16 +153,19 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|This category hauds juist the ae follaein file.|The follaein {{PLURAL:$1|file|$1 files}}s is in this category, oot o $2 total.}}',
 'category-file-count-limited' => 'The follaein {{PLURAL:$1|file is|$1 files is}} in this category.',
 'listingcontinuesabbrev' => 'cont.',
+'index-category' => "Index't pages",
 'noindex-category' => 'Noindexed pages',
+'broken-file-category' => 'Pages wi broken file airtins',
 
 'about' => 'Aboot',
 'article' => 'Content page',
 'newwindow' => '(opens in new windae)',
 'cancel' => 'Cancel',
 'moredotdotdot' => 'Mair...',
+'morenotlisted' => 'This leet isna complete.',
 'mypage' => 'Ma page',
-'mytalk' => 'Ma collogue',
-'anontalk' => 'Collogue for this IP',
+'mytalk' => 'Ma tauk',
+'anontalk' => 'Talk fer this IP address',
 'navigation' => 'Navigation',
 'and' => '&#32;an',
 
@@ -160,9 +180,11 @@ $messages = array(
 
 # Vector skin
 'vector-action-addsection' => 'Add topic',
-'vector-action-delete' => 'Delete',
+'vector-action-delete' => 'Delyte',
 'vector-action-move' => 'Flit',
 'vector-action-protect' => 'Fend',
+'vector-action-undelete' => 'Ondelyte',
+'vector-action-unprotect' => 'Chynge protection',
 'vector-view-create' => 'Mak',
 'vector-view-edit' => 'Edit',
 'vector-view-history' => 'See history',
@@ -172,7 +194,8 @@ $messages = array(
 'namespaces' => 'Namespaces',
 'variants' => 'Variants',
 
-'errorpagetitle' => 'Error',
+'navigation-heading' => 'Navigâtion menu',
+'errorpagetitle' => 'Mistak',
 'returnto' => 'Return tae $1.',
 'tagline' => 'Frae {{SITENAME}}',
 'help' => 'Help',
@@ -186,21 +209,24 @@ $messages = array(
 'printableversion' => 'Prent version',
 'permalink' => 'Permanent airtin',
 'print' => 'Prent',
+'view' => 'View.',
 'edit' => 'Edit',
 'create' => 'Mak',
 'editthispage' => 'Edit this page',
 'create-this-page' => 'Mak this page',
-'delete' => 'Delete',
-'deletethispage' => 'Delete this page',
+'delete' => 'Delyte',
+'deletethispage' => 'Delyte this page',
+'undeletethispage' => 'Ondelyte this page',
 'undelete_short' => 'Undelete {{PLURAL:$1|ane edit|$1 edits}}',
+'viewdeleted_short' => 'View {{PLURAL:$1|yin deletit eidit|$1 deletit eidits}}',
 'protect' => 'Fend',
 'protect_change' => 'chynge',
 'protectthispage' => 'Fend this page',
-'unprotect' => 'Loose fend',
-'unprotectthispage' => 'Loose the fend for this page',
+'unprotect' => 'Chynge protection',
+'unprotectthispage' => 'Chynge fend fer this page',
 'newpage' => 'New page',
 'talkpage' => 'Blether ower this page',
-'talkpagelinktext' => 'Collogue',
+'talkpagelinktext' => 'Talk',
 'specialpage' => 'Byordinar Page',
 'personaltools' => 'Personal tuils',
 'postcomment' => 'Eik a message',
@@ -225,11 +251,19 @@ $messages = array(
 'jumpto' => 'Lowp tae:',
 'jumptonavigation' => 'navigation',
 'jumptosearch' => 'rake',
+'view-pool-error' => 'Sorrie, the servers ar owerlaided at the moment.
+Ower mony uisers ar trying tae view this page.
+Please wait ae while afore ye try tae access this page again.
+
+$1',
+'pool-timeout' => 'Timeout waitin fer the lock',
+'pool-queuefull' => 'Pool line is ful',
+'pool-errorunknown' => 'Onknawn mistak.',
 
 # 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' => 'Aboot {{SITENAME}}',
 'aboutpage' => 'Project:Aboot',
-'copyright' => 'Aa text is available unner $1',
+'copyright' => 'Content is available unner $1 onless itherwise noted.',
 'copyrightpage' => '{{ns:project}}:Copyrichts',
 'currentevents' => 'Gaun on the nou',
 'currentevents-url' => 'Project:Gaun on the nou',
@@ -255,6 +289,10 @@ $messages = array(
 'ok' => 'Okay',
 'retrievedfrom' => 'Taen frae "$1"',
 'youhavenewmessages' => 'Ye hae $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Ye hae}} $1 fae {{PLURAL:$3|anither uiser|$3 uisers}} ($2).',
+'youhavenewmessagesmanyusers' => 'Ye hae $1 fae moni uisers ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|ae new message|999=new messages}}',
+'newmessagesdifflinkplural' => 'last {{PLURAL:$1|chynge|999=chynges}}',
 'youhavenewmessagesmulti' => 'Ye hae neow messages on $1',
 'editsection' => 'edit',
 'editold' => 'edit',
@@ -266,9 +304,10 @@ $messages = array(
 'showtoc' => 'shaw',
 'hidetoc' => 'scouk',
 'collapsible-collapse' => 'Collapse.',
+'collapsible-expand' => 'Mak mair muckle',
 'thisisdeleted' => 'View or cower $1?',
 'viewdeleted' => 'View $1?',
-'restorelink' => '{{PLURAL:$1|one delete edit|$1 delete edits}}',
+'restorelink' => '{{PLURAL:$1|yin delyte eidit|$1 delyte eidits}}',
 'feedlinks' => 'Feed:',
 'feed-invalid' => "This feeds subscrieve's teep isnae habile.",
 'feed-unavailable' => 'Syndication feeds isna available',
@@ -277,6 +316,8 @@ $messages = array(
 'page-rss-feed' => '"$1" RSS Feed',
 'page-atom-feed' => '"$1" Atom Feed',
 'red-link-title' => '$1 (page disna exist)',
+'sort-descending' => 'Sort descending.',
+'sort-ascending' => 'Sort ascending.',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Page',
@@ -301,11 +342,17 @@ This micht forby be caused by a bug in the saftware uised by {{SITENAME}}.",
 A leet o valid byordinar pages can be funnd at [[Special:SpecialPages|{{int:specialpages}}]].',
 
 # General errors
-'error' => 'Error',
-'databaseerror' => 'Database error',
+'error' => 'Mistak',
+'databaseerror' => 'Database mistak',
+'databaseerror-text' => 'Ae database speirin mistak has occurred.
+This micht be cause o ae bug in the saffware.',
+'databaseerror-textcl' => 'Ae database speirin mistak has occurred.',
+'databaseerror-query' => 'Speirin: $1',
+'databaseerror-function' => 'Fwnction: $1',
+'databaseerror-error' => 'Mistake: $1',
 'laggedslavemode' => 'Warning: Page micht nae contain recent updates',
 'readonly' => 'Database lockit',
-'enterlockreason' => "Enter a raeson for the lock, includin an estimate o whan the lock'll be lowsed",
+'enterlockreason' => "Enter ae raeson fer the lock, inclædin aen estimate o whan the lock'll be lowsed",
 'readonlytext' => "The databae is lockit tae new entries an ither modifeecations the nou,
 likely for routine database maintenance; efter that it'll be back tae normal.
 The adminstration that lockit it gied this explanation:
@@ -320,68 +367,141 @@ Please lat an [[Special:ListUsers/sysop|administrator]] ken aboot this, makin no
 'missingarticle-diff' => '(Diff: $1, $2)',
 'readonly_lag' => 'The database haes been autaematically lockit while the sclave database servers catch up tae the maister',
 'internalerror' => 'Internal mishanter',
-'internalerror_info' => 'Internal error: $1',
+'internalerror_info' => 'Internal mistak: $1',
+'fileappenderrorread' => 'Coudna read "$1" durin append.',
+'fileappenderror' => 'Coudna append "$1" til "$2".',
 'filecopyerror' => 'Cuidna copy file "$1" tae "$2".',
 'filerenameerror' => 'Cuidna rename file "$1" tae "$2".',
-'filedeleteerror' => 'Cuidna delete file "$1".',
+'filedeleteerror' => 'Cuidna delyte file "$1".',
 'directorycreateerror' => 'Culdnae mak directory "$1".',
 'filenotfound' => 'Cuidna fin file "$1".',
 'fileexistserror' => 'Culdnae write tae file "$1": file is already here',
 'unexpected' => 'Vailyie isnae expectit: "$1"="$2".',
-'formerror' => 'Error: cuidna submit form',
+'formerror' => 'Mistak: cuidna haun in form',
 'badarticleerror' => 'This action canna be duin tae this page.',
-'cannotdelete' => "Cuidna delete the page or eimage specifee'd. (It micht hae aareadies been delete bi some ither bodie.)",
+'cannotdelete' => 'The page or file "$1" coudna be delytit.
+It micht awreadie hae been delytit bi some ither bodie.',
+'cannotdelete-title' => 'Canna delyte page "$1"',
+'delete-hook-aborted' => 'Delytion stappit bi huik.
+It gae nae explanâtion.',
+'no-null-revision' => 'Coudna mak new null reveesion fer page "$1"',
 'badtitle' => 'Bad teitle',
 'badtitletext' => 'The requestit page teitle wis invalid, tuim, or a wranglie airtit inter-leid or inter-wiki teitle. It mibbe haes ane or mair chairacters that canna be uised in teitles.',
-'perfcached' => 'The follaeing data is cached an michtna be richt up tae date. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'The followin data is cached, an wis hindermaist chynged $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'The follaeing data is cached an michtna be richt up til date. A maximum o {{PLURAL:$1|yin result is|$1 results ar}} available in the cache.',
+'perfcachedts' => 'The followin data is cached, an wis hindermaist updated $1. Ae maximum o {{PLURAL:$4|yin result is|$4 results ar}} available in the cache.',
 'querypage-no-updates' => 'Updates for this page ar disablit at the meenit. Data here wilnae be refreshit at the meenit.',
 'viewsource' => 'View soorce',
+'viewsource-title' => 'View source fer $1',
 'actionthrottled' => 'Action devalit',
 'actionthrottledtext' => 'As an anti-spam meisur, ye ar limitit frae daein this action ower mony times in a ower short tid, an ye hae exceedit this limit. Please try again in a wee.',
-'protectedpagetext' => "Sairy, this page haes been '''lockit''' tae hinder vandalism.",
+'protectedpagetext' => 'This page haes been protected fer tae prevent eiditing or ither actions.',
 'viewsourcetext' => 'Ye can leuk at an copy the soorce o this page:',
-'protectedinterface' => 'Sairy, but this page provides interface text for the saftware, an is lockit to hinder abuise.',
-'editinginterface' => "'''Warning:''' You are editing a page which is used to provide interface text for the software.
-Changes to this page will affect the appearance of the user interface for other users.
-For translations, please consider using [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], the MediaWiki localisation project.",
+'viewyourtext' => 'Ye can view an copy the source o <strong>yer eidits</strong> til this page:',
+'protectedinterface' => 'This page provides interface tex fer the saffware on this wiki, an is protected fer tae prevent abuse.
+Tae add or chynge owersets fer aw wikis, please uise [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.',
+'editinginterface' => "<strong>Warnishment:</strong> Ye'r eiditing ae page that is uised tae provide interface tex fer the saffware.
+Chynges til this page will affect the appearance o the uiser interface fer ither uisers oan this wiki.
+Tae add or chynge owersets fer aw wikis, please uise [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.",
 'cascadeprotected' => 'This page haes been protectit fra editin, acause it is includit in the followin {{PLURAL:$1|page|pages}}, that are protectit wi the "cascading" option turnit on:
 $2',
 'namespaceprotected' => "Ye dinna hae permeession tae edit pages in the '''$1''' namespace.",
+'customcssprotected' => "Ye dinna hae permeession tae eidit this CSS page cause it contains anither uiser's personal settings.",
+'customjsprotected' => "Ye dinna hae permeession tae eidit this JavaScript page cause it contains anither uiser's personal settings.",
+'mycustomcssprotected' => 'Ye dinna hae permeession tae edit this CSS page.',
+'mycustomjsprotected' => 'Ye dinna hae permeession tae eidit this JavaScript page.',
+'myprivateinfoprotected' => 'Ye dinna hae permeession tae eidit yer private information.',
+'mypreferencesprotected' => 'Ye dinna hae permeession tae eidit yer preferences.',
 'ns-specialprotected' => 'Byordinar pages canna be editit.',
 'titleprotected' => "This teetle haes been protectit frae bein makkit by [[User:$1|$1]].
 The grunds for this are: ''$2''.",
+'filereadonlyerror' => 'Canna modify the file "$1" cause the file repository "$2" is in read-yinly mode.
+
+The administrater that lock\'t it affered this explanation: "$3".',
+'invalidtitle-knownnamespace' => 'Onvalid title wi namespace "$2" an tex "$3"',
+'invalidtitle-unknownnamespace' => 'Onvalid title wi onken\'t namespace nummer $1 an tex "$2"',
+'exception-nologin' => 'No loggit in',
+'exception-nologin-text' => 'Please [[Special:Userlogin|log in]] tae be able tae access this page or action.',
+'exception-nologin-text-manual' => 'Please $1 tae be able tae access this page or action.',
+
+# Virus scanner
+'virus-badscanner' => "Bad confeeguration: Onken't virus scanner: <em>$1</em>",
+'virus-scanfailed' => 'the scan failed (code $1)',
+'virus-unknownscanner' => "onken't antivirus:",
 
 # Login and logout pages
-'logouttext' => "'''Ye'r nou loggit oot.'''
+'logouttext' => "<strong>Ye'r nou loggit oot.</strong>
 
-Ye can continue to uise {{SITENAME}} namelessly, or ye can log in again as the same or as a different uiser.
-Mynd that some pages micht continue tae be displayed as if ye war aye loggit in, till ye clear yer brouser cache.",
+Note that some pages micht continue tae be displayed as gif ye were still loggit in, til ye clear yer brouser cache.",
+'welcomeuser' => 'Weelcome, $1!',
+'welcomecreation-msg' => 'Yer accoont haes been creatit.
+Ye can chynge yer {{SITENAME}} [[Special:Preferences|preferences]] gif ye like.',
 'yourname' => 'Yer uiser name',
+'userlogin-yourname' => 'Uisername',
+'userlogin-yourname-ph' => 'Enter yer uisername',
+'createacct-another-username-ph' => 'Enter the uisername',
 'yourpassword' => 'Passwaird:',
+'userlogin-yourpassword' => 'Password.',
+'userlogin-yourpassword-ph' => 'Enter yer password',
+'createacct-yourpassword-ph' => 'Enter ae password',
 'yourpasswordagain' => 'Retype passwaird:',
-'remembermypassword' => 'Mynd ma password oan this browser (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'createacct-yourpasswordagain' => 'Confirm password.',
+'createacct-yourpasswordagain-ph' => 'Enter password again.',
+'remembermypassword' => 'Mynd ma login oan this brouser (fer $1 {{PLURAL:$1|day|days}} at the maist)',
+'userlogin-remembermypassword' => 'Keep me loggit in',
+'userlogin-signwithsecure' => 'Uise secure connection',
 'yourdomainname' => 'Yer domain:',
+'password-change-forbidden' => 'Ye canna chynge passwords oan this wiki.',
 'externaldberror' => "Aither the wis an external authenteication database mishanter, or ye'r no alloued tae update yer external accoont.",
 'login' => 'Log in',
 'nav-login-createaccount' => 'Log in / mak an accoont',
 'loginprompt' => 'Ye maun hae cookies enabled tae log in tae {{SITENAME}}.',
 'userlogin' => 'Mak an accoont or log in',
+'userloginnocreate' => 'Log in.',
 'logout' => 'Log oot',
 'userlogout' => 'Log oot',
 'notloggedin' => 'No loggit in',
+'userlogin-noaccount' => 'Dinna hae aen accoont?',
+'userlogin-joinproject' => 'Jyn {{SITENAME}}',
 'nologin' => "Dinna hae an accoont? '''$1'''.",
 'nologinlink' => 'Mak an accoont',
 'createaccount' => 'Mak new accoont',
 'gotaccount' => "Got an accoont afore? '''$1'''.",
 'gotaccountlink' => 'Log in',
 'userlogin-resetlink' => 'Forgotten yer login details?',
-'createaccountmail' => 'bi email',
+'userlogin-resetpassword-link' => 'Fergot yer password?',
+'helplogin-url' => 'Help:Loggin in',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Heelp wi loggin in]]',
+'userlogin-loggedin' => "Ye'r awreadie loggit in as {{GENDER:$1|$1}}.
+Uise the form ablow tae log in as anither uiser.",
+'userlogin-createanother' => 'Mak anither accoont',
+'createacct-join' => 'Enter yer information ablow.',
+'createacct-another-join' => "Enter the new accoont's information ablow.",
+'createacct-emailrequired' => 'Wab-mail address',
+'createacct-emailoptional' => 'Wab-mail address (optional)',
+'createacct-email-ph' => 'Enter yer wab-mail address',
+'createacct-another-email-ph' => 'Enter wab-mail address',
+'createaccountmail' => 'Uise ae temporarie random password an send it til the speceefied wab-mail address',
+'createacct-realname' => 'Real name (optional).',
+'createaccountreason' => 'Raison:',
+'createacct-reason' => 'Raison',
+'createacct-reason-ph' => 'Why ar ye creating anither accoont',
+'createacct-captcha' => 'Security check.',
+'createacct-imgcaptcha-ph' => 'Enter the tex ye see abuin',
+'createacct-submit' => 'Mak yer accoont',
+'createacct-another-submit' => 'Mak anither accoont',
+'createacct-benefit-heading' => '{{SITENAME}} is made bi fowk like ye.',
+'createacct-benefit-body1' => '{{PLURAL:$1|eidit|eidits}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|page|pages}}.',
+'createacct-benefit-body3' => 'recent {{PLURAL:$1|contreebuter|contreebuters}}',
 'badretype' => 'The passwords ye entered disna match.',
-'userexists' => 'The uiser name ye entered is in uiss. Please chuise a different name.',
+'userexists' => 'The uiser name ye entered is awreadie in uiss. Please chuise ae different name.',
 'loginerror' => 'Login mishanter',
+'createacct-error' => 'Accoont creation mistak',
+'createaccounterror' => 'Coudna mak accoont: $1',
 'nocookiesnew' => "The uiser accoont wis creatit, but ye'r no loggit in. {{SITENAME}} uises cookies tae log uisers in. Ye hae cookies disabled. Please enable them, than log in wi yer new uisername and password.",
 'nocookieslogin' => '{{SITENAME}} uises cookies tae log in uisers. Ye hae cookies disabled. Please enable thaim an gie it anither shot.',
+'nocookiesfornew' => 'The uiser accoont wisna created, as we couda confirm its source.
+Ensure that ye have cookies enabled, relaid this page an try again.',
 'noname' => "Ye hivna specifee'd a valid uisername.",
 'loginsuccesstitle' => 'Login fine',
 'loginsuccess' => 'Ye\'re nou loggit in tae {{SITENAME}} as "$1".',
@@ -390,60 +510,150 @@ Uiser names are case-sensitive.
 Check yer spellin, or uise [[Special:UserLogin/signup|mak a new accoont]].',
 'nosuchusershort' => 'The\'r nae sic uiser as "$1". Check yer spellin.',
 'nouserspecified' => 'Ye hae tae merk up a uisername.',
+'login-userblocked' => 'Uiser "$1" is blockit. Log-in no alloued.',
 'wrongpassword' => 'The password ye entered is wrang. Please gie it anither shot.',
 'wrongpasswordempty' => 'The password ye entered is blank. Please gie it anither shot.',
 'passwordtooshort' => 'Yer password is ower short.
-It maun hae at laest $1 characters.',
-'mailmypassword' => 'E-mail new passwaird',
+It maun hae at laest {{PLURAL:$1|1 chairacter|$1 chairacters}}.',
+'password-name-match' => 'Yer password maun be different fae yer uisername.',
+'password-login-forbidden' => 'The uise o this uisername an password haes been ferbidden.',
+'mailmypassword' => 'Reset password',
 'passwordremindertitle' => 'Password reminder frae {{SITENAME}}',
-'passwordremindertext' => 'Somebodie (maist likely you, frae IP address $1)
-requestit that we send ye a new {{SITENAME}} login password ($4).
-The password for uiser "$2" is nou "$3".
-Ye shuid log in an chynge yer password richt awa.
-
-Gin some ither bodie made this request or gin ye\'v myndit o yer password an
-ye dinna want tae chynge it onie mair, ye can ignore this message an cairrie on uisin
-yer auld password.',
-'noemail' => 'The\'r nae e-mail address recordit for uiser "$1".',
+'passwordremindertext' => 'Somebodie (liklie ye, fae IP address $1) requested ae new
+password fer {{SITENAME}} ($4). Ae temporarie password fer uiser "$2" haes been creatit an wis set til "$3". Gif this wis yer intent, ye will need tae log in an chuise ae new password now.
+Yer temporarie password will expire in {{PLURAL:$5|one day|$5 days}}.
+
+Gif somebodie else made this request, or gif ye hae mindit yer password, an ye nae langer wish tae chynge it, ye can ignore this message an continue uising yer auld password.',
+'noemail' => 'Thaur\'s nae wab-mail address recordit fer uiser "$1".',
+'noemailcreate' => 'Ye need tae provide ae valid wab-mail address.',
 'passwordsent' => 'A new password haes been sent tae the e-mail address registert for "$1". Please log in again efter ye receive it.',
 'blocked-mailpassword' => 'Yer IP address is blockit frae editin, sae it
 canna uise the password recovery function, for tae prevent abuiss.',
-'eauthentsent' => "A confirmation email haes been sent tae the specifee'd email address.
-Afore onie ither mail is sent tae the accoont, ye'll hae tae follae the guidance in the email,
-tae confirm that ye ar aucht the accoont.",
-'throttled-mailpassword' => "A password minder haes been sent afore, in the laist {{PLURAL:$1|hoor|$1 hoors}}. To hinder abuise, juist the ''ae'' password minder will be sent in
-{{PLURAL:$1|hoor|$1 hoors}}.",
-'mailerror' => 'Error sendin mail: $1',
+'eauthentsent' => "Ae confirmation wab-mail haes been sent til the speceefied wab-mail address.
+Afore oni ither wab-mail is sent til the accoont, ye'll hae tae follae the instructions in the wab-mail, sae as tae confirm that the accoont is reallie yers.",
+'throttled-mailpassword' => 'Ae password reset wab-mail haes awreadie been sent, wiin the laist {{PLURAL:$1|hoor|$1 hoors}}.
+Tae hinder abuiss, yinly the yin password reset wab-mail will be sent per {{PLURAL:$1|hoor|$1 hoors}}.',
+'mailerror' => 'Mistak sendin mail: $1',
 'acct_creation_throttle_hit' => 'Veesitors tae this wiki uisin yer IP address haev created $1 {{PLURAL:$1|accoont|accoonts}} the day, which is the maist permeettit in that lang.
 Sae veesitors uisin this IP address canna mak ony mair accoonts juist noo.',
-'emailauthenticated' => 'Yer e-mail address wis checkit on $1.',
-'emailnotauthenticated' => 'Yer e-mail address hasnae been checkit! Nae e-mail
-will be sent for ony o the followin featurs.',
+'emailauthenticated' => 'Yer wab-mail address wis confirmed oan $2 at $3.',
+'emailnotauthenticated' => 'Yer wab-mail address isna yet confirmed.
+Nae wab-mail will be sent fer oni o the follaein features.',
 'noemailprefs' => "Nae email address haes been specifee'd, the follaein featurs willna wirk.",
 'emailconfirmlink' => 'Check yer e-mail address',
 'invalidemailaddress' => 'The email address canna be acceptit syne it seems tae be formattit wrang.
 Please enter a weel-formattit address or mak that field tuim.',
+'cannotchangeemail' => 'Accoont wab-mail addresses canna be chynged oan this wiki.',
+'emaildisabled' => 'This site canna send wab-mails.',
 'accountcreated' => 'Accoont creatit',
-'accountcreatedtext' => 'The uiser accoont for $1 haes bin creatit.',
+'accountcreatedtext' => 'The uiser accoont fer [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) haes been creatit.',
 'createaccount-title' => 'Accoont makin for {{SITENAME}}',
-'createaccount-text' => 'A body ($1) makit an accoont for yer email address on {{SITENAME}} ($4) cried "$2", wi a password o "$3".
-Ye shuid log in an chynge yer password nou.
-
-Ye dinna hae tae heed this message, if this accoont wis creatit by mistak.',
+'createaccount-text' => 'Somebodie creatit aen accoont fer yer wab-mail address oan {{SITENAME}} ($4) named "$2", wi password "$3".
+You should log in and change your password now.
+
+Ye can ignore this message, gif this accoont wis creatit bi mistak.',
+'usernamehasherror' => 'Uisername canna contain hash chairacters',
+'login-throttled' => "Ye'v made ower moni recent login attempts.
+Please wait $1 afore trying again.",
+'login-abort-generic' => 'Yer login wisna successful - Aborted',
 'loginlanguagelabel' => 'Leid: $1',
+'suspicious-userlogout' => 'Yer request tae log oot wis denied cause it luiks like it wis sent bi ae broken brouser or caching proxy.',
+'createacct-another-realname-tip' => 'Real name is aen optie.
+Gif ye chuise tae provide it, this will be uised fer giein the uiser attreebution fer their wark.',
+'pt-login' => 'Log in',
+'pt-createaccount' => 'Mak accoont',
+'pt-userlogout' => 'Log oot',
+
+# Email sending
+'php-mail-error-unknown' => "Onken't mistak in PHP's mail() function.",
+'user-mail-no-addy' => 'Tried tae send wab-mail wiout ae wab-mail address.',
+'user-mail-no-body' => 'Tried tae send wab-mail wi ae tuim or onreasonably short body o tex.',
 
 # Change password dialog
 'changepassword' => 'Chynge password',
-'resetpass_announce' => 'Ye loggit in wi a short term e-mailed code. To be duin logging in, ye hae tae mak a new passwaird here:',
+'resetpass_announce' => 'Tae finish loggin in, ye maun set ae new password.',
 'resetpass_header' => 'Chynge accoont password',
 'oldpassword' => 'Auld password',
 'newpassword' => 'New passwaird:',
+'retypenew' => 'Retype new passwaird:',
 'resetpass_submit' => 'Mak passwaird an log in',
-'changepassword-success' => 'Yer passwaird chynge wis braw! Nou loggin ye in...',
+'changepassword-success' => 'Yer passwaird chynge wis braw!',
+'changepassword-throttled' => "Ye'v made ower moni recent login attempts.
+Please wait $1 afore trying again.",
 'resetpass_forbidden' => 'Passwords canna be chynged',
 'resetpass-no-info' => 'Ye maun be loggit in tae access this page directly.',
 'resetpass-submit-loggedin' => 'Chynge passwaird',
 'resetpass-submit-cancel' => 'Cancel',
+'resetpass-wrong-oldpass' => 'Onvalid temporarie or current passwaird.
+Ye micht hae awreadie been successful in chyngin yer passwaird or requested ae new temporarie passwaird.',
+'resetpass-recycled' => 'Please reset yerr passwaird til sommit ither than yer current passwaird.',
+'resetpass-temp-emailed' => 'Ye loggit in wi ae temperie mailed code.
+Tae finish loggin in, ye maun set ae new passwaird here:',
+'resetpass-temp-password' => 'Temperie passwaird:',
+'resetpass-abort-generic' => 'Passwaird chynge haes been aborted bi aen extension.',
+'resetpass-expired' => 'Yer passwaird haes expired. Please set ae new passwaird tae log-in.',
+'resetpass-expired-soft' => 'Yer passwaird haes expired, an needs tae be reset. Please chuise ae new passwaird nou, or clap oan cancel tae reset it later.',
+
+# Special:PasswordReset
+'passwordreset' => 'Reset passwaird',
+'passwordreset-text-one' => 'Compleate this form tae receive ae temperie passwaird via wab-mail.',
+'passwordreset-text-many' => '{{PLURAL:$1|Fill in yin o the fields tae receive ae temperie passwaird via wab-mail.}}',
+'passwordreset-legend' => 'Reset passwaird',
+'passwordreset-disabled' => 'Passwaird resets hae been disabled oan this wiki.',
+'passwordreset-emaildisabled' => 'Wab-mail features hae been disabled oan this wiki.',
+'passwordreset-username' => 'Uisername:',
+'passwordreset-capture' => 'View the resultin wab-mail?',
+'passwordreset-capture-help' => 'Gif ye check this kist, the wab-mail (wi the temperie passwaird) will be shawn til ye an be sent til the uiser ava.',
+'passwordreset-email' => 'Wab-mail address:',
+'passwordreset-emailtitle' => 'Accoont details oan {{SITENAME}}',
+'passwordreset-emailtext-ip' => "Somebodie (likely ye, fae IP address $1) requested ae reset o yer passwaird fer {{SITENAME}} ($4). The follaein uiser {{PLURAL:$3|accoont is|accoonts ar}}
+associated wi this wab-mail address:
+
+$2
+
+{{PLURAL:$3|This temperie passwaird|These temperie passwairds}} will expire in {{PLURAL:$5|yin day|$5 days}}.
+Ye shid log in an chuise ae new passwaird nou. Gif some ither bodie made this request, or gif ye'v mynded yer oreeginal passwaird, an ye nae longer
+wish tae chynge it, ye can ignore this message an continue uising yer auld passwaird.",
+'passwordreset-emailtext-user' => "Uiser $1 oan {{SITENAME}} requested ae reset o yer passwaird fer {{SITENAME}}
+($4). The follaein uiser {{PLURAL:$3|accoont is|accoonts ar}} associated wi this wab-mail address:
+
+$2
+
+{{PLURAL:$3|This temperie passwaird|These temperie passwairds}} will expire in {{PLURAL:$5|yin day|$5 days}}.
+Ye shid log in an chuise ae new password nou. Gif some ither bodie made this request, or gif ye'v mynded yer oreeginal passwaird, an ye nae longer wish tae chynge it, ye can ignore this message an continue uisin yer auld
+passwaird.",
+'passwordreset-emailelement' => 'Uisername: $1
+Temperie passwaird: $2',
+'passwordreset-emailsent' => 'Ae passwaird reset wab-mail haes been sent.',
+'passwordreset-emailsent-capture' => 'Ae passwaird reset wab-mail haas been sent, this is shawn ablow.',
+'passwordreset-emailerror-capture' => 'Ae passwaird reset wab-mail wis generated, (this is shawn ablow), but sendin it til the {{GENDER:$2|uiser}} failed: $1',
+
+# Special:ChangeEmail
+'changeemail' => 'Chynge wab-mail address',
+'changeemail-header' => 'Chynge accoont wab-mail address',
+'changeemail-text' => 'Compleate this form tae chynge yer wab-mail address. Ye will need tae enter yer passwaird tae confirm this chynge.',
+'changeemail-no-info' => 'Ye maun be loggit in tae access this page directly.',
+'changeemail-oldemail' => 'Current wab-mail address:',
+'changeemail-newemail' => 'New wab-mail address:',
+'changeemail-none' => '(nane)',
+'changeemail-password' => 'Yer {{SITENAME}} passwaird:',
+'changeemail-submit' => 'Chynge wab-mail',
+'changeemail-cancel' => 'Cancel.',
+'changeemail-throttled' => "Ye'v made ower moni recent login attempts.
+Please wait $1 afore trying again.",
+
+# Special:ResetTokens
+'resettokens' => 'Reset tokens.',
+'resettokens-text' => 'Ye can reset tokens that permit ye access til certain private data associated wi yer accoont here.
+
+Ye shid dae it gif ye accidentally shaired theim wi somebodie or gif yer accoont haes been compromised.',
+'resettokens-no-tokens' => 'Thaur ar nae tokens tae reset.',
+'resettokens-legend' => 'Reset tokens.',
+'resettokens-tokens' => "Tokens':",
+'resettokens-token-label' => '$1 (value the nou: $2)',
+'resettokens-watchlist-token' => 'Token fer the wab feed (Atom/RSS) o [[Special:Watchlist|chynges til pages oan yer watchleet]]',
+'resettokens-done' => "Tokens' reset.",
+'resettokens-resetbutton' => 'Reset selected tokens.',
 
 # Edit page toolbar
 'bold_sample' => 'Bauld text',
@@ -476,82 +686,111 @@ Ye dinna hae tae heed this message, if this accoont wis creatit by mistak.',
 'showlivepreview' => 'Live leuk ower',
 'showdiff' => 'Shaw chynges',
 'anoneditwarning' => "Ye arna loggit in. Yer IP address will be recordit in this page's edit history.",
+'anonpreviewwarning' => "<em>Ye'r no loggit in. hainin will record yer IP address in this page's eidit history.</em>",
 'missingsummary' => "'''Mynd:''' Ye hivna gien an edit summary. Gin ye dab on Hain again, yer edit will be haint athoot ane.",
 'missingcommenttext' => 'Please enter a comment ablo.',
-'missingcommentheader' => "'''Mynd:''' Ye hivna gien a subject/heidline for this comment. Gin ye dab on Hain again, yer edit will be haint athoot ane.",
+'missingcommentheader' => '<strong>Mynd:</strong> Ye\'v no provided ae subject/headline fer this comment.
+If you clap "{{int:savearticle}}" again, yer edit will be saved wiout yin.',
 'summary-preview' => 'Ootline leuk ower:',
 'subject-preview' => 'Subject/headline leuk ower:',
 'blockedtitle' => 'Uiser is blockit',
-'blockedtext' => '\'\'\'Yer uisername or IP address haes been blockit.\'\'\'
+'blockedtext' => '<strong>Yer uisername or IP address haes been blockit.</strong>
 
-The block was made bi $1. The raeson gien is \'\'$2\'\'.
+The block wis made bi $1.
+The raison gieen is <em>$2</em>.
 
-* Start of block: $8
-* Expiry of block: $6
+* Stert o block: $8
+* Expiry o block: $6
 * Intended blockee: $7
 
-Ye can contact $1 or ane o the ither [[{{MediaWiki:Grouppage-sysop}}|administrators]] tae discuss the block.
-Mynd that ye canna uise the "email this uiser" featur unless ye hae a valid email address registert in yer [[Special:Preferences|uiser preferences]] an ye hae not been blocked from using it.
-Yer IP address is $3, and the block ID is #$5. Please include this address in onie queries ye mak.',
-'autoblockedtext' => 'Sairy, but yer IP address haes been blockit by the seestem acause it wis uised by an ither uiser, that wis blockit by $1.
-The grunds for this were:
+Ye can contact $1 or anither [[{{MediaWiki:Grouppage-sysop}}|admeenistræter]] tae discuss the block.
+Ye canna uise the "wab-mail this uiser" feature onless ae valid wab-mail address is speceefied in yer [[Special:Preferences|accoont preferences]] an ye\'v no been blockit fae uising it.
+Your current IP address is $3, an the block ID is #$5.
+Please inclæde aw the abuin details in oni speirins ye mak.',
+'autoblockedtext' => 'Yer IP address haes been autæmaticly blockit cause it wis uised bi anither uiser, wha wis blockit bi $1.
+The raison gieen is:
 
-:\'\'$2\'\'
+:<em>$2</em>
 
 * Stairt o block: $8
-* End o block: $6
+* Expiry o block: $6
+* Intended blockee: $7
 
-Ye may contact $1 or ane o the ither
-[[{{MediaWiki:Grouppage-sysop}}|sysops]] tae argie the block.
+Ye can contact $1 or yin o the ither [[{{MediaWiki:Grouppage-sysop}}|admeenistræters]] tae discuss the block.
 
-Please jot that ye cannae uise the "e-mail this uiser" featur unless ye hae a habile e-mail address
-registerit in yer [[Special:Preferences|uiser preferences]] an ye hinna been blockit frae uisin it.
+Note that ye canna uise the "wab-mail this uiser" feature onless ye hae ae valid wab-mail address registered in yer [[Special:Preferences|uiser preferences]] an ye haena been blockit fae uising it.
 
-Yer block ID is $5. Please include this ID in ony argies ye mak.',
+Yer current IP address is $3, an the block ID is #$5.
+Please inclæde aw abuin details in oni speirins ye mak.',
 'blockednoreason' => 'nae grunds put',
 'whitelistedittext' => 'Ye hae tae $1 tae edit pages.',
 'confirmedittext' => 'Ye maun confirm yer e-mail address afore editin pages. Please set an validate yer e-mail address throu yer [[Special:Preferences|uiser settins]].',
-'nosuchsectiontitle' => 'There isnae a section wi that teetle',
-'nosuchsectiontext' => 'Yer tryin tae edit a section that isnae there.',
+'nosuchsectiontitle' => 'Canna find section',
+'nosuchsectiontext' => 'Ye tried tae eidit ae section that disna exist.
+It micht hae been muived or delytit while ye were viewing the page.',
 'loginreqtitle' => 'Login Requirit!',
 'loginreqlink' => 'log in',
 'loginreqpagetext' => 'Ye maun $1 tae view ither pages.',
 'accmailtitle' => 'Passwaird sent.',
-'accmailtext' => "The Password for '$1' haes been sent tae $2.",
+'accmailtext' => 'Ae randomly generated passwaird fer [[User talk:$1|$1]] haes been sent til $2. It can be chynged oan the <em>[[Special:ChangePassword|chynge passwaird]]</em> page upo loggin in.',
 'newarticle' => '(New)',
-'newarticletext' => "Ye'v follaed an airtin til a page that disna exist yet. Tae create the page, stert typin in the box ablo (see the [[{{MediaWiki:Helppage}}|help page]] for mair info). Gin ye'r here by mistak, juist dab yer brouser's '''back''' button.",
-'anontalkpagetext' => "----''This is the collogue page for a nameless uiser that haesna made an accoont yet or that disna uise it. We syne hiv tae uise the numerical IP address tae identifee thaim. Sic an IP address can be shared bi a wheen o uisers. Gin you ar a nameless uiser an feel that irrelevant comments haes been directit at ye, please [[Special:UserLogin|mak an accoont or log in]] tae evyte futur confusion wi ither nameless uisers.''",
+'newarticletext' => "Ye'v follaed ae link til ae page that disna exist yet. Tae mak the page, stairt typin in the kist ablo (see the [[{{MediaWiki:Helppage}}|heelp page]] fer mair info). Gif ye'r here bi mistak, juist clap yer brouser's '''back''' button.",
+'anontalkpagetext' => "----
+<em>This is the discussion page fer aen anonymous uiser wha's no makit aen accoont yet, or wha disna uise it.</em>
+We maun therefore uise the numerical IP address tae identifie him/her.
+Sic aen IP address can be shaired bi several uisers.
+Gif ye'r aen anonymous uiser an feel that onrelevant comments hae been directed at ye, please [[Special:UserLogin/signup|mak aen accoont]] or [[Special:UserLogin|log in]] tae avoid future confusion wi ither anonymous uisers.",
 'noarticletext' => 'The\'r nae text on this page the nou. 
 Ye can [[Special:Search/{{PAGENAME}}|rake for this page teitle]] in ither pages,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rake th\' related logs],
  or [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this page].</span>',
-'noarticletext-nopermission' => 'The\'r nae text on this page the nou. 
-Ye ken [[Special:Search/{{PAGENAME}}|rake for this page teitle]] in ither pages,
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rake th\' related logs].',
+'noarticletext-nopermission' => 'There isna oni tex in this page the nou.
+Ye can [[Special:Search/{{PAGENAME}}|rake fer this page title]] in ither pages, or <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rake the relatit logs]</span>, but ye dina hae permeession tae mak this page.',
+'missing-revision' => 'The reveesion #$1 o the page named "{{PAGENAME}}" disna exist.
+
+This is usuallie caused bi follaein aen ootdated histerie link til ae page that haes been delytit.
+Details can be foond in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} delytion log].',
 'userpage-userdoesnotexist' => 'Uiser accoont "<nowiki>$1</nowiki>" hasnae been registerit. Please check gin ye wint tae mak or edit this page.',
-'clearyourcache' => "'''Tak tent:''' Efter hainin, ye micht hae tae bypass yer brouser's cache for tae see the chynges. '''Mozilla / Firefox / Safari:''' haud doun ''Shift'' while dabbin on ''Reload'', or press ''Ctrl-Shift-R'' (''Cmd-Shift-R'' on Apple Mac); '''IE:''' haud doun ''Ctrl'' while dabbin on ''Refresh'', or press ''Ctrl-F5''; '''Konqueror:''' juist dab on the ''Reload'' button, or press ''F5''; '''Opera''' users micht hae tae haillie dicht thair cache in ''Tools&rarr;Preferences''.",
-'usercssyoucanpreview' => "'''Tip:''' Uise the 'Show preview' button tae proof yer new CSS afore savin.",
-'userjsyoucanpreview' => "'''Tip:''' Uise the 'Show preview' button tae proof yer new JS afore savin.",
-'usercsspreview' => "'''Mynd that ye'r juist previewin yer uiser CSS, it haesna yet been hained!'''",
+'userpage-userdoesnotexist-view' => 'Uiser accoont "$1" isna registered.',
+'blocked-notice-logextract' => 'This uiser is currently blockit.
+The latest block log entry is provided ablow fer reference:',
+'clearyourcache' => "<strong>Tak tent:</strong> Efter hainin, ye micht hae tae bypass yer brouser's cache tae see the chynges.
+* <strong>Firefox / Safari:</strong> Hold <em>Shift</em> while clapin <em>Relaid</em>, or press either <em>Ctrl-F5</em> or <em>Ctrl-R</em> (<em>⌘-R</em> on a Mac)
+* <strong>Google Chrome:</strong> Press <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> on a Mac)
+* <strong>Internet Explorer:</strong> Hold <em>Ctrl</em> while clapin <em>Refresh</em>, or press <em>Ctrl-F5</em>
+* <strong>Opera:</strong> Clear the cache in <em>Tuils → Preferences</em>",
+'usercssyoucanpreview' => '<strong>Tip:</strong> Uise the "{{int:showpreview}}" button tae test yer new CSS afore hainin.',
+'userjsyoucanpreview' => '<strong>Tip:</strong> Uise the "{{int:showpreview}}" button tae test yer new JavaScript afore hainin.',
+'usercsspreview' => "<strong>Mynd that ye'r yinly previewing yer uiser CSS.
+It haesna been hained yet!</strong>",
 'userjspreview' => "'''Mynd that ye're juist testin/previewing yer uiser JavaScript; it haesna been hained yet!'''",
+'sitecsspreview' => "<strong>Mynd that ye'r yinly previewing this CSS.
+It's no been hained yet!</strong>",
+'sitejspreview' => "<strong>Mynd that ye'r yinly previewing this JavaScript code.
+It's no been hained yet!</strong>",
 'userinvalidcssjstitle' => "'''Warnin:''' There isnae a skin \"\$1\". Mynd that yer ain .css an .js pages uise a lowercase teetle, e.g. {{ns:user}}:Foo/vector.css instead o {{ns:user}}:Foo/Vector.css.",
 'updated' => '(Updatit)',
 'note' => "'''Mynd:'''",
-'previewnote' => "'''Mynd that this is juist a scance-ower, an haesna been hained yet!'''",
+'previewnote' => '<strong>Mynd that this is yinly ae scænce-ower.</strong>
+Yer chynges hae no been hained yet!',
+'continue-editing' => 'Gae til eiditing area',
 'previewconflict' => 'This scance reflects the text in the upper text editin area like it will kythe gin ye chuise tae save.',
 'session_fail_preview' => "'''Sairy! We culdnae process yer edit acause o a loss o term data.
 Please try again. Gin it disnae wairk still, try loggin oot an loggin in again.'''",
-'session_fail_preview_html' => "'''Sairy! We culdnae process yer edit acause o a loss o term data.'''
+'session_fail_preview_html' => '<strong>Sairrie! We coudna process yer eidit cause o ae loss o session data.</strong>
 
-''Acause this wiki haes raw HTML habile, the leuk ower is hidden tae hinder JavaScript attacks.''
+<em>Cause {{SITENAME}} haes raw HTML enabled, the preview is hidden aes ae precaution again JavaScript attacks.</em>
 
-'''Gin this is a proper edit try, please try again. Gin it disnae wairk still, try loggin oot an loggin back in.'''",
+<strong>Gif this is ae legitimate eidit attempt, please try again.</strong>
+Gif it still disna wairk, try [[Special:UserLogout|loggin oot]] an loggin back in.',
 'token_suffix_mismatch' => "'''Yer edit haes been rejectit acause yer client made a richt mess o the punctuation characters
 in the edit token. The edit haes been rejectit tae hinder corruption o the page text.
 This whiles happens when ye are uisin a bruken web-based anonymous proxy service.'''",
+'edit_form_incomplete' => '<strong>Some pairts o the eidit form didna reach the server; dooble-check that yer eidits ar intact an try again.</strong>',
 'editing' => 'Editin $1',
+'creating' => 'Makin $1',
 'editingsection' => 'Editin $1 (section)',
-'editingcomment' => 'Editin $1 (comment)',
+'editingcomment' => 'Editin $1 (new section)',
 'editconflict' => 'Edit conflict: $1',
 'explainconflict' => "Some ither body haes chynged this page syne ye stertit editin it.
 The upper text area hauds the page text as it currently exists.
@@ -560,65 +799,113 @@ Ye'll hae tae merge yer chynges intae the existin text.
 '''Juist''' the text in the upper text area will be hained whan ye press \"{{int:savearticle}}\".",
 'yourtext' => 'Yer text',
 'storedversion' => 'Storit version',
-'nonunicodebrowser' => "'''WARNIN: Yer brouser isna unicode compliant.  The'r a wirkaroond tae allou ye tae sauflie edit airticles: non-ASCII characters will kythe in the edit box as hexadecimal codes.'''",
+'nonunicodebrowser' => "'''Warnishment: Yer brouser isna unicode compliant. Ae warkaroond is in place tae permit ye tae sauflie eidit airticles: no-ASCII chairacters will kythe in the eidit kist aes hexadecimal codes.'''",
 'editingold' => "'''WARNIN: Ye'r editin an oot-o-date reveision o this page. Gin ye hain it, onie chynges made syne this reveision will be lost.'''",
 'yourdiff' => 'Differs',
-'copyrightwarning' => "Please mynd that aa contreibutions tae {{SITENAME}} is conseidert tae be released unner the $2 (see $1 for details). Gin ye dinna want yer writin tae be editit athoot mercy an redistribute at will, than dinna submit it here.<br /> Forbye thon, ye'r promisin us that ye wrat this yersel, or copied it frae a public domain or siclike free resoorce. '''DINNA SUBMIT COPYRICHTIT WARK ATHOOT PERMEISSION!'''",
-'copyrightwarning2' => "Please mynd that aa contreibutions tae {{SITENAME}} micht be editit, chynged, or remuved bi ither contreibutors.
-Gin ye dinna want yer writin tae be editit athoot mercy and redistribute at will, than dinna submit it here.<br />
-YYe'r promisin us forbye that ye wrat this yersel, or copied it frae a
+'copyrightwarning' => "Please mynd that aa contreebutions til {{SITENAME}} is conseedert tae be released unner the $2 (see $1 for details). Gin ye dinna want yer writin tae be eiditit wioot mercy an redistributed at will, than dinna haun it it here.<br /> Forbye thon, ye'r promisin us that ye wrat this yersel, or copied it frae ae public domain or siclike free resoorce. <strong>DINNA SUBMIT COPIERICHTIT WARK WIOOT PERMEESSION!</strong>",
+'copyrightwarning2' => "Please mynd that aa contreebutions til {{SITENAME}} micht be eiditit, chynged, or remuived bi ither contreebuters.
+Gin ye dinna want yer writin tae be eiditit wioot mercie an redistreebuted at will, than dinna haun it in here.<br />
+Ye'r promisin us forbye that ye wrat this yersel, or copied it frae ae
 public domain or siclike free resoorce (see $1 for details).
-'''DINNA SUBMIT COPYRICHTIT WARK ATHOOT PERMEISSION!'''",
-'longpageerror' => "'''ERROR: The text ye hae submitted is $1 kilobytes
-lang, an that's langer than the maximum of $2 kilobytes. It canna be hained.'''",
-'readonlywarning' => "WARNIN: The database haes been lockit for maintenance, sae ye'll no can hain yer edits richt nou. Ye micht wish tae cut-n-paste the text intil a text file an hain it for later.",
-'protectedpagewarning' => "'''WARNIN: This page haes been lockit sae that juist uisers wi administrator privileges can edit it.'''",
-'semiprotectedpagewarning' => "'''Warnin:''' This page haes been lockit sae that only registerit uisers can edit it.",
+<strong>DINNA HAUN IN COPIERICHTIT WARK WIOOT PERMEESSION!</strong>",
+'longpageerror' => "<strong>Mistak: The tex ye'v submitted is {{PLURAL:$1|yin kilobyte|$1 kilobytes}} lang, an this is langer nor the maximum o {{PLURAL:$2|yin kilobyte|$2 kilobytes}}.</strong>
+It canna be hained.",
+'readonlywarning' => "<strong>Warnishment: The database haes been lockit fer maintenance, sae ye'll no be able tae hain yer eidits richt nou.</strong>
+You micht wish tae copy an paste yer tex intil ae tex file an hain it fer later.
+
+The admeenistræter that lockit it affered this explanation: $1",
+'protectedpagewarning' => '<strong>Warnishment: This page haes been protectit sae that yinly uisers wi admeenistræter privileges can edit it.</strong>
+The latest log entry is provided ablow fer reference:',
+'semiprotectedpagewarning' => '<strong>Note:</strong> This page haes been protected sae that yinly registered uisers can eidit it.
+The latest log entry is provided ablow fer reference:',
 'cascadeprotectedwarning' => "'''Warnin:''' This page haes been lockit sae that only uisers wi sysop richts can edit it, acause it is includit in the followin cascade-protectit {{PLURAL:$1|page|pages}}:",
+'titleprotectedwarning' => '<strong>Warnishment: This page haes been protected sae that [[Special:ListGroupRights|speecific richts]] ar needed tae mak it.</strong>
+The laitest log entry is provided ablo fer reference:',
 'templatesused' => '{{PLURAL:$1|Template|Templates}} used on this page:',
-'templatesusedpreview' => 'Templates uised in this scance ower:',
-'templatesusedsection' => 'Templates uised in this section:',
+'templatesusedpreview' => '{{PLURAL:$1|Template|Templates}} uised in this scænce-ower:',
+'templatesusedsection' => '{{PLURAL:$1|Template|Templates}} uised in this section:',
 'template-protected' => '(protectit)',
 'template-semiprotected' => '(semi-protectit)',
 'hiddencategories' => 'This page is a member of {{PLURAL:$1|1 hidden category|$1 hidden categories}}:',
-'nocreatetext' => 'This site haes restrictit the ability to mak new pages.
-Ye can go back an eik tae an existing page, or [[Special:UserLogin|log in or mak an accoont]].',
-'nocreate-loggedin' => 'Ye dinnae hae the richts tae mak new pages on this wiki.',
-'permissionserrors' => 'Richts Errors',
+'nocreatetext' => '{{SITENAME}} haes restricted the ability tae mak new pages.
+Ye can gae back an edit aen existing page, or [[Special:UserLogin|log in or mak aen accoont]].',
+'nocreate-loggedin' => 'Ye dinnae hae the richts tae mak new pages.',
+'sectioneditnotsupported-title' => 'Section eiditin isna supported',
+'sectioneditnotsupported-text' => 'Section eiditing isna supported in this page.',
+'permissionserrors' => 'Permission mistak',
 'permissionserrorstext' => 'Ye dinnae hae the richts tae dae that, acause o the followin {{PLURAL:$1|grund|grunds}}:',
-'permissionserrorstext-withaction' => 'Ye dinna hae the richts tae $2, for the follaein {{PLURAL:$1|reason|reasons}}:',
-'recreate-moveddeleted-warn' => "'''Warnin: Ye are makkin a page that haes been deletit.'''
-
-Ye shuld check that it is guid tae keep editin this page.
-The deletion and flit log for this page is providit here:",
-'moveddeleted-notice' => 'This page haes bin deletit. 
-The deletion and flit log fur the page are provided below fur reference.',
+'permissionserrorstext-withaction' => 'Ye dinna hae the richts tae $2, fer the follaein {{PLURAL:$1|raison|raisons}}:',
+'recreate-moveddeleted-warn' => "'''Warnishment: Ye'r remakin ae page that haes been delytit.'''
+
+Ye shid check that it is guid tae keep eiditin this page.
+The delytion an muiv log fer this page is providit here:",
+'moveddeleted-notice' => 'This page haes bin delytit. 
+The delytion an muiv log fer the page ar provided ablo fer reference.',
+'log-fulllog' => 'View ful log',
+'edit-hook-aborted' => 'Eidit aborted bi huik.
+It gae naw explanation.',
+'edit-gone-missing' => 'Coudna update the page.
+It appears tae hae been deletit.',
+'edit-conflict' => 'Eidit conflict.',
+'edit-no-change' => 'Yer eidit wis ignored cause nae chynge wis made til the tex.',
+'postedit-confirmation' => 'Yer eidit wis hained.',
+'edit-already-exists' => 'Coudna mak ae new page.
+It awreadie exists.',
+'defaultmessagetext' => 'Defaut message tex',
+'content-failed-to-parse' => 'Failed tae parse $2 content fer $1 model: $3',
+'invalid-content-data' => 'Onvalid content data',
+'content-not-allowed-here' => '"$1" content isna permited oan the page [[$2]]',
 'editwarning-warning' => 'Leain this page micht cause ye tae lose oni chynges ye\'v made.
 Gif ye\'r loggit in, ye can disable this warning in the "{{int:prefs-editing}}" section o yer preferences.',
+'editpage-notsupportedcontentformat-title' => 'Content format isna supported',
+'editpage-notsupportedcontentformat-text' => 'The content format $1 isna supported bi the content model $2.',
+
+# Content models
+'content-model-wikitext' => 'wikitex',
+'content-model-text' => 'plain tex',
 
 # Parser/template warnings
+'expensive-parserfunction-warning' => '<strong>Warnishment:</strong> This page contains ower moni expensive parser function caws.
+
+It shid hae less than $2 {{PLURAL:$2|caw|caws}}, thaur {{PLURAL:$1|is nou $1 caw|ar noo $1 caws}}.',
+'expensive-parserfunction-category' => 'Pages wi ower moni expensive parser function caws',
 'post-expand-template-inclusion-warning' => "'''Wairnin:''' Template include size is tae lairge. 
 Some templates wull nae be included.",
 'post-expand-template-inclusion-category' => 'Pages whaur template include size is exceeded',
 'post-expand-template-argument-warning' => 'Tak tent: This page hauds at least the ae template argument that haes an ower muckle expansion size.
-Thae arguments hae been left oot.',
+Thir arguments hae been left oot.',
 'post-expand-template-argument-category' => 'Pages containing omitted template arguments',
+'parser-template-loop-warning' => 'Template luip detected: [[$1]]',
+'parser-template-recursion-depth-warning' => 'Template recursion depth limit owershote ($1)',
+'language-converter-depth-warning' => 'Leid converter depth limit owershote ($1)',
+'node-count-exceeded-category' => 'Pages whaur node-coont is owershote',
+'node-count-exceeded-warning' => 'Page owershote the node-coont',
+'expansion-depth-exceeded-category' => 'Pages whaur expansion depth is owershote',
+'expansion-depth-exceeded-warning' => 'Page owershote the expansion depth',
+'parser-unstrip-loop-warning' => 'Unstrip luip detected',
+'parser-unstrip-recursion-limit' => 'Unstrip recursion limit owershote ($1)',
+'converter-manual-rule-error' => 'mistak detected in manual leid conversion rule',
 
 # "Undo" feature
 'undo-success' => 'The edit can be undone. Please check the chynges albo tae check that this is whit ye wint tae dae, an then hain the chynges albo tae be duin undooin the edit.',
 'undo-failure' => 'The edit culdnae be undone acause o conflictin edits inatween.',
+'undo-norev' => 'The eidit coudna be ondone cause it disna exist or wis deletit.',
 'undo-nochange' => 'The edit appears tae hae awready been ondone.',
-'undo-summary' => 'Undo reveision $1 by [[Special:Contributions/$2|$2]] ([[User talk:$2|Collogue]])',
+'undo-summary' => 'Undo reveision $1 by [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]])',
+'undo-summary-username-hidden' => 'Ondae revision $1 bi ae hidden uiser',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Canna mak accoont',
 'cantcreateaccount-text' => "Accoont makkin frae this IP address ('''$1''') haes been blockit by [[User:$3|$3]].
 
 The grund for this, given by $3 is ''$2''",
+'cantcreateaccount-range-text' => "Accoont creation fae IP addresses in the range '''$1''', that inclædes yer IP address ('''$4'''), haes been blockit bi [[User:$3|$3]].
+
+The raison gien bi $3 is ''$2''",
 
 # History pages
-'viewpagelogs' => 'Leuk at logs for this page',
-'nohistory' => "The'r nae edit history for this page.",
+'viewpagelogs' => 'Leuk at logs fer this page',
+'nohistory' => "Thaur's nae eidit histerie fer this page.",
 'currentrev' => 'Current reveision',
 'currentrev-asof' => 'Latest revision as of $1',
 'revisionasof' => 'Reveision as o $1',
@@ -634,55 +921,167 @@ The grund for this, given by $3 is ''$2''",
 'histlegend' => 'Diff selection: mairk the radio boxes o the versions tae compare an press enter or the button at the bottom.<br /> Legend: (cur) = difference frae current version, (last) = difference frae foregaun version, s = smaa edit.',
 'history-fieldset-title' => 'Browse history',
 'history-show-deleted' => 'Deletit only',
-'histfirst' => 'Foremaist',
-'histlast' => 'Hindermaist',
+'histfirst' => 'auldest',
+'histlast' => 'newest',
 'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
 'historyempty' => '(empie)',
 
 # Revision feed
 'history-feed-title' => 'Revision history',
-'history-feed-description' => 'Revision history for this page on the wiki',
+'history-feed-description' => 'Reveesion histerie fer this page oan the wiki',
 'history-feed-item-nocomment' => '$1 at $2',
 'history-feed-empty' => 'The requestit page disnae exist.
 It micht hae been deletit frae the wiki, or the name micht hae been chynged.
 Try [[Special:Search|rakin on the wiki]] for new pages ye micht be interestit in.',
 
 # Revision deletion
-'rev-deleted-comment' => '(jottin removit)',
+'rev-deleted-comment' => '(eidit summarie remuived)',
 'rev-deleted-user' => '(uisername removit)',
-'rev-deleted-event' => '(entry removit)',
-'rev-deleted-text-permission' => 'This page revision haes been removit frae the public archives.
-There micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} deletion log].',
-'rev-deleted-text-view' => 'This page revision haes been removit frae the public archives.
-Acause yer an admeenistrator on this site, ye can leuk at it;
-there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} deletion log].',
+'rev-deleted-event' => '(log action remuived)',
+'rev-deleted-user-contribs' => '[uisername or IP address remuived - eidit hidden fae contreebutions]',
+'rev-deleted-text-permission' => 'This page reveesion haes been <strong>delytit</strong>.
+Details can be foond in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} delytion log].',
+'rev-deleted-text-unhide' => 'This page reveesion haes been <strong>delytit</strong>.
+Details can be foond in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} delytion log].
+Ye can still [$1 view this reveesion] gif ye wish tae proceed.',
+'rev-suppressed-text-unhide' => 'This page revision haes been <strong>suppressed</strong>.
+Details can be foond in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].
+Ye can still [$1 view this revision] gif ye wish tae proceed.',
+'rev-deleted-text-view' => 'This page reveesion haes been <strong>delytit</strong>.
+Ye can view it; details can be foond in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} delytion log].',
+'rev-suppressed-text-view' => 'This page revision haes been <strong>suppressed</strong>.
+Ye can view it; details can be foond in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].',
+'rev-deleted-no-diff' => 'Ye canna view this diff cause yin o the reveesions haes been <strong>delytit</strong>.
+Details can be foond in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} delytion log].',
+'rev-suppressed-no-diff' => 'Ye cannae view this diff cause yin o the revisions haes been <strong>deletit</strong>.',
+'rev-deleted-unhide-diff' => 'Yin o the reveesions o this diff haes been <strong>delytit</strong>.
+Details can be foond in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} delytion log].
+Ye can still [$1 view this diff] gif ye wish tae proceed.',
+'rev-suppressed-unhide-diff' => 'Yin o the reveesions o this diff haes been <strong>suppressed</strong>.
+Details can be foond in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].
+Ye can still [$1 view this diff] gif ye wish tee proceed.',
+'rev-suppressed-diff-view' => 'Yin o the revisions o this diff haes been <strong>suppressed</strong>.
+Ye can view this diff; details can be foond in the [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} suppression log].',
 'rev-delundel' => 'shaw/scug',
-'revisiondelete' => 'Delete/undelete revisions',
-'revdelete-nooldid-title' => 'Nae target revision',
-'revdelete-radio-set' => 'Yea',
-'revdelete-radio-unset' => 'Nae',
+'rev-showdeleted' => 'shaw',
+'revisiondelete' => 'Delyte/ondelyte reveesions',
+'revdelete-nooldid-title' => 'Onvalid target revision',
+'revdelete-nooldid-text' => "Ye'v either no speecified ae target reveesion(s) tae perform this function, the speecified revision disna exist, or ye'r attemptin tae skauk the current reveesion.",
+'revdelete-no-file' => 'The file speecified disna exist.',
+'revdelete-show-file-confirm' => 'Ar ye sair ye wish tae view ae deletit reveesion o the file "<nowiki>$1</nowiki>" fae $2 at $3?',
+'revdelete-show-file-submit' => 'Ai',
+'revdelete-selected' => '<strong>{{PLURAL:$2|Selected reveesion|Selected reveesions}} o [[:$1]]:</strong>',
+'revdelete-text' => "<strong>Delytit reveesions an events will still kyth in the page histerie an logs, but pairts o their content will be onaccessible til the public.</strong>
+Ither admeenistraters oan {{SITENAME}} will still be able tae access the skauk't content an can ondelyte it again through this same interface, onless addeetional restreections ar set.",
+'revdelete-confirm' => "Please confirm that ye'r ettlin tae dae this, that ye unnerstaunn the consequences, an that ye'r daein this in accordance wi [[{{MediaWiki:Policy-url}}|the policie]].",
+'revdelete-suppress-text' => 'Suppression shid <strong>yinly</strong> be uised fer the follaein cases:
+* poteentially libeloos information
+* onappropriate personal information
+*: <em>hame addresses an telephane nummers, national ideentification nummers, etc.</em>',
+'revdelete-legend' => 'Set visibeelitie restreections',
+'revdelete-hide-text' => 'Reveesion tex',
+'revdelete-hide-image' => 'Skauk file content.',
+'revdelete-hide-name' => 'Skauk aiction an target',
+'revdelete-hide-comment' => 'Eidit summarie',
+'revdelete-hide-user' => "Eiditor's uisername/IP address",
+'revdelete-hide-restricted' => 'Suppress data fae admeenistraters aes weel aes ithers',
+'revdelete-radio-same' => '(dinna chynge)',
+'revdelete-radio-set' => 'Hidden',
+'revdelete-radio-unset' => 'Visible',
+'revdelete-suppress' => 'Suppress data fae admeenistraters aes weel aes ithers',
+'revdelete-unsuppress' => 'Remuiv restreections oan restored reveesions',
+'revdelete-log' => 'Raison:',
+'revdelete-submit' => 'Applie til selected {{PLURAL:$1|reveesion|reveesions}}',
+'revdelete-success' => '<strong>Reveesion veesibeelitie successfully updated.</strong>',
+'revdelete-failure' => '<strong>Reveesion veesibeelitie coudna be updated:</strong>
+$1',
+'logdelete-success' => '<strong>Log veesibeelitie successfully set.</strong>',
+'logdelete-failure' => '<strong>Log veesibddlitie coudna be set:</strong>
+$1',
 'revdel-restore' => 'change visibility',
 'pagehist' => 'Page history',
+'deletedhist' => 'Deletit histerie',
+'revdelete-hide-current' => 'Mistak hidin the item dated $2, $1: This is the current reveesion.
+It cannna be hidden.',
+'revdelete-show-no-access' => 'Mistak shawin the eitem dated $2, $1: This eitem haes been maurked "restreected".
+Ye dinna hae access til it.',
+'revdelete-modify-no-access' => 'Mistak modifiein the eitem dated $2, $1: This eitem haes been maurked "restreected".
+Ye dinna hae access til it.',
+'revdelete-modify-missing' => 'Mistak modifiein item ID $1: It is missing fae the database!',
+'revdelete-no-change' => '<strong>Warnishment:</strong> The eitem dated $2, $1 awreadie haed the requested veesibeelitie settins.',
+'revdelete-concurrent-change' => "Mistak modifiein the eitem dated $2, $1: Its status appears tae'v been chynged bi some ither bodie while ye attempted tae modifie it.
+Please check the logs.",
+'revdelete-only-restricted' => 'Mistak hidin the item dated $2, $1: Ye canna suppress eitems fae view bi admeenistraters wioot selectin yin o the ither veesibeelitie opties ava.',
+'revdelete-reason-dropdown' => '*Commyn delete raisons
+** Copiericht violation
+** Onappropriate comment or personal information
+** Onappropriate username
+** Potentially libelous information',
+'revdelete-otherreason' => 'Ither/addeetional raison:',
+'revdelete-reasonotherlist' => 'Ither raison',
+'revdelete-edit-reasonlist' => 'Eidit delyte raisons',
+'revdelete-offender' => 'Reveesion author:',
+
+# Suppression log
+'suppressionlog' => 'Suppreession log',
+'suppressionlogtext' => 'Ablow is ae leet o deletions an blocks involvin content hidden fae admeenistraters.
+See the [[Special:BlockList|block leet]] fer the leet o currentlie operational bans an blocks.',
 
 # History merging
+'mergehistory' => 'Merge page histeries',
+'mergehistory-header' => 'This page lets ye merge reveesions o the histerie o yin source page intil ae newer page.
+Mak sair that this chynge will maintain historical page conteenuitie.',
+'mergehistory-box' => 'Merge reveesions o twa pages:',
 'mergehistory-from' => 'Soorce page:',
+'mergehistory-into' => 'Destinâtion page:',
+'mergehistory-list' => 'Mergeable eidit history',
+'mergehistory-merge' => 'The follaein revisions o [[:$1]] can be merged intil [[:$2]].
+Uise the radio button column tae merge in yinly the reveesions maed at an afore the speecified time.
+Note that uising the navigâtion links will reset this column.',
+'mergehistory-go' => 'Shaw mergeable eidits',
+'mergehistory-submit' => 'Merge reveesions',
+'mergehistory-empty' => 'Naw reveesions can be merged.',
+'mergehistory-success' => '$3 {{PLURAL:$3|reveesion|reveesions}} o [[:$1]] successfully merged intil [[:$2]].',
+'mergehistory-fail' => 'Onable tae perform histerie merge, please recheck the page an time parameters.',
+'mergehistory-no-source' => 'Source page $1 disna exist.',
+'mergehistory-no-destination' => 'Destinâtion page $1 disna exist.',
+'mergehistory-invalid-source' => 'Source page maun be ae valid title.',
+'mergehistory-invalid-destination' => 'Destinâtion page maun be ae valid title.',
+'mergehistory-autocomment' => 'Merged [[:$1]] intil [[:$2]]',
+'mergehistory-comment' => 'Merged [[:$1]] intil [[:$2]]: $3',
+'mergehistory-same-destination' => 'Soorce an destinâtion pages canna be the same',
 'mergehistory-reason' => 'Raeson:',
 
 # Merge log
+'mergelog' => 'Merge log.',
+'pagemerge-logentry' => 'merged [[$1]] intil [[$2]] (reveesions up til $3)',
 'revertmerge' => 'Unmerge',
+'mergelogpagetext' => 'Ablow is ae leet o the maist recent merges o yin page histerie intil anither.',
 
 # Diffs
-'history-title' => 'Revision history of "$1"',
+'history-title' => 'Revision histerie o "$1"',
+'difference-title' => 'Difference atween reveesions of "$1"',
+'difference-title-multipage' => 'Difference atween pages "$1" an "$2"',
+'difference-multipage' => '(Difference atween pages)',
 'lineno' => 'Line $1:',
 'compareselectedversions' => 'Compare selectit versions',
+'showhideselectedversions' => 'Chynge veesibeelitie o selected reveesions',
 'editundo' => 'undo',
+'diff-empty' => '(Naw difference)',
 'diff-multi-sameuser' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} bi the same uiser no shown)',
 'diff-multi-otherusers' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} bi {{PLURAL:$2|one other user|$2 users}} not shown)',
+'diff-multi-manyusers' => '({{PLURAL:$1|Yin intermeediate reveesion|$1 intermeediate reveesions}} bi mair than $2 {{PLURAL:$2|uiser|uisers}} no shawn)',
+'difference-missing-revision' => '{{PLURAL:$2|Yin reveesion|$2 reveesions}} o this difference ($1) {{PLURAL:$2|was|were}} no fond.
+
+This is usually caused bi follaein aen ootdated diff link til ae page that haes been delytit.
+Details can be foond in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} delytion log].',
 
 # Search results
 'searchresults' => 'Rake results',
-'searchresults-title' => 'Rake affcome for "$1"',
+'searchresults-title' => 'Rake affcome fer "$1"',
+'toomanymatches' => 'Ower moni matches were returned, please try ae different speirin',
 'titlematches' => 'Airticle teitle matches',
+'textmatches' => 'Page tex matches',
 'notextmatches' => 'Nae page text matches',
 'prevn' => 'foregaun {{PLURAL:$1|$1}}',
 'nextn' => 'neist {{PLURAL:$1|$1}}',
@@ -691,7 +1090,7 @@ there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{F
 'shown-title' => 'Shaw $1 {{PLURAL:$1|ootcome|ootcomes}} per page',
 'viewprevnext' => 'View ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''There is a page named \"[[:\$1]]\" oan this wiki.'''",
-'searchmenu-new' => "'''Mak the page \"[[:\$1]]\" on this wiki!'''",
+'searchmenu-new' => '<strong>Mak the page "[[:$1]]" oan this wiki!</strong> {{PLURAL:$2|0=|See the page foond wi yer rake ava.|See the rake affcome foond ava.}}',
 'searchprofile-articles' => 'Content pages',
 'searchprofile-project' => 'Help and Project pages',
 'searchprofile-images' => 'Multimedia',
@@ -699,67 +1098,90 @@ there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{F
 'searchprofile-advanced' => 'Advanced',
 'searchprofile-articles-tooltip' => 'Rake in $1',
 'searchprofile-project-tooltip' => 'Rake in $1',
-'searchprofile-images-tooltip' => 'Rake fur files',
-'searchprofile-everything-tooltip' => 'Rake aw of content (including collogue pages)',
+'searchprofile-images-tooltip' => 'Rake fer files',
+'searchprofile-everything-tooltip' => 'Rake aw o content (including talk pages)',
 'searchprofile-advanced-tooltip' => 'Rake in custom namespaces',
 'search-result-size' => '$1 ({{PLURAL:$2|1 word|$2 words}})',
 'search-result-category-size' => '{{PLURAL:$1|1 member|$1 members}} ({{PLURAL:$2|1 subcategory|$2 subcategories}}, {{PLURAL:$3|1 file|$3 files}})',
+'search-result-score' => 'Relevanc: $1%',
 'search-redirect' => '(redirect $1)',
 'search-section' => '(section $1)',
+'search-file-match' => '(matches file content.)',
 'search-suggest' => 'Did ye mean: $1',
+'search-interwiki-caption' => "Sister projec's",
+'search-interwiki-default' => "$1 results':",
 'search-interwiki-more' => '(more)',
+'search-relatedarticle' => 'Relatit',
+'searcheverything-enable' => 'Rake in aw namespaces',
 'searchrelated' => 'related',
 'searchall' => 'aw',
 'showingresults' => "Shawin ablo up tae {{PLURAL:$1|'''1''' result|'''$1''' results}} stertin wi #'''$2'''.",
-'showingresultsinrange' => 'Showin ablow up til {{PLURAL:$1|<strong>1</strong> result|<strong>$1</strong> results}} in range #<strong>$2</strong> to #<strong>$3</strong>.',
+'showingresultsinrange' => 'Shawin ablo up til {{PLURAL:$1|<strong>1</strong> affcome|<strong>$1</strong> affcome}} in range #<strong>$2</strong> til #<strong>$3</strong>.',
 'showingresultsnum' => "Shawin ablo {{PLURAL:$3|'''1''' result|'''$3''' results}} stertin wi #'''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Ootcome '''$1''' of '''$3'''|Ootcomes '''$1 - $2''' of '''$3'''}} for '''$4'''",
+'showingresultsheader' => '{{PLURAL:$5|Affcome <strong>$1</strong> o <strong>$3</strong>|Affcomes <strong>$1 - $2</strong> o <strong>$3</strong>}} fer <strong>$4</strong>',
 'search-nonefound' => "Thare wur na ootcomes matching th' query.",
+'powersearch-legend' => 'Advanced rake',
+'powersearch-ns' => 'Rake in namespaces:',
 'powersearch-redir' => 'Leet redirects',
+'powersearch-togglelabel' => "Chec':",
 'powersearch-toggleall' => 'Aw',
+'powersearch-togglenone' => 'Nane',
+'search-external' => 'Eixternal rake',
 'searchdisabled' => 'Rakin throu {{SITENAME}} is disabled for performance raesons. Ye can rake via Google juist nou. Mynd that thair indexes o {{SITENAME}} content micht be oot o date.',
+'search-error' => 'Ae mistak haes occurred while rakin: $1',
 
 # Preferences page
+'preferences' => 'Ma preferences',
 'mypreferences' => 'Ma preferences',
+'prefs-edits' => 'Nummer o eidits:',
+'prefsnologintext2' => 'Please $1 tae chynge yer preferences.',
 'prefs-skin' => 'Huil',
 'skin-preview' => 'First Leuk',
 'datedefault' => 'Nae preference',
+'prefs-beta' => 'Beta features.',
 'prefs-datetime' => 'Date an time',
+'prefs-labs' => 'Labs featurs',
+'prefs-user-pages' => 'Uiser pages',
 'prefs-personal' => 'Uiser data',
 'prefs-rc' => 'Recent chynges an shawin stubs',
 'prefs-watchlist' => 'Watchleet',
+'prefs-watchlist-days' => 'Days tae shaw in watchleet:',
+'prefs-watchlist-days-max' => 'Mucklest $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-edits' => 'Mucklest nummer o chynges tae shaw in expanded watchleet:',
+'prefs-watchlist-edits-max' => 'Mucklest nummer: 1000',
+'prefs-watchlist-token' => 'Watchleet token:',
 'prefs-misc' => 'Antrin settins',
 'prefs-resetpass' => 'Chynge passwaird',
 'saveprefs' => 'Hain preferences',
 'prefs-editing' => 'Editin',
 'searchresultshead' => 'Rake result settins',
 'stub-threshold-disabled' => 'Tuckie',
-'recentchangescount' => 'Nummer o teitles in recent chynges',
-'prefs-help-watchlist-token2' => 'This is the hidlins key til the wab feed o yer watchleet. Onibodie wha kens this can read yer watchleel, sae dinna share it. Gif ye need to, [[Special:ResetTokens|You ca reset it]].',
+'recentchangescount' => 'Nummer o eidits tae shaw bi defaut:',
+'prefs-help-watchlist-token2' => 'This is the hidlins key til the wab feed o yer watchleet. Onibodie wha kens this can read yer watchleet, sae dinna shair it. Gif ye need to, [[Special:ResetTokens|Ye can reset it]].',
 'savedprefs' => 'Yer preferences haes been hained.',
-'servertime' => 'Server time is nou',
+'servertime' => 'Server time the nou',
 'guesstimezone' => 'Fill in frae brouser',
 'allowemail' => 'Allou email frae ither uisers',
-'defaultns' => 'Rake in thir namespaces bi defaut:',
+'defaultns' => 'Itherwise rake in thir namespaces:',
 'default' => 'defaut',
 'prefs-files' => 'Files',
 'prefs-custom-css' => 'Custom CSS',
 'prefs-custom-js' => 'Custom JS',
 'youremail' => 'Yer email:',
-'username' => 'Uisername:',
-'uid' => 'Uiser ID:',
-'prefs-memberingroups' => 'Member o {{PLURAL:$1|group|groups}}:',
+'username' => '{{GENDER:$1|Uisername}}:',
+'uid' => '{{GENDER:$1|Uiser}} ID:',
+'prefs-memberingroups' => '{{GENDER:$2|Member}} o {{PLURAL:$1|group|groups}}:',
 'yourrealname' => 'Yer real name:',
 'yourlanguage' => 'Interface leid:',
-'yourvariant' => 'Leid variant',
+'yourvariant' => 'Content leid variant',
 'yournick' => 'New seegnatur:',
 'badsig' => 'Raw signature nae guid; check HTML tags.',
 'badsiglength' => 'Yer nickname is ower lang; it haes tae be $1 {{PLURAL:$1|character|characters}} or less.',
 'email' => 'E-mail',
 'prefs-help-realname' => 'Rael name is optional an gin ye chuise tae provide it this will be uised tae gie ye attreibution for yer wark.',
-'prefs-help-email' => 'E-mail is optional, bit is needed fur password resets, shuid ye forget yer password.',
-'prefs-help-email-others' => "Ye kin an choose tae let others contact ye by e-mail thro' a link oan yer uiser or collogue  page. 
-Yer e-mail address insae revealed whin ither uisers contact ye.",
+'prefs-help-email' => 'Wab-mail is optional, bit is needed fer passwaird resets, shid ye ferget yer passwaird.',
+'prefs-help-email-others' => 'Ye can chuise tae let ithers contact ye bi wab-mail through ae link on yer uiser or talk page.
+Yer wab-mail address isna revealed whan ither uisers contact ye.',
 'prefs-help-email-required' => 'Yer e-mail address is needit.',
 'prefs-diffs' => 'Diffs',
 
@@ -767,7 +1189,7 @@ Yer e-mail address insae revealed whin ither uisers contact ye.",
 'userrights-lookup-user' => 'Manish uiser boorachs',
 'userrights-user-editname' => 'Enter a uisername:',
 'editusergroup' => 'Edit uiser boorach',
-'editinguser' => "Editin uiser '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])",
+'editinguser' => 'Chynging uiser richts o uiser <strong>[[User:$1|$1]]</strong> $2',
 'userrights-groupsmember' => 'Member o:',
 
 # Groups
@@ -775,11 +1197,11 @@ Yer e-mail address insae revealed whin ither uisers contact ye.",
 'group-bot' => 'Bots',
 'group-all' => '(aw)',
 
-'group-user-member' => 'Uiser',
-'group-bot-member' => 'Bot',
+'group-user-member' => '{{GENDER:$1|uiser}}',
+'group-bot-member' => '{{GENDER:$1|bot}}',
 
 # Rights
-'right-delete' => 'Delete pages',
+'right-delete' => 'Delyte pages',
 
 # Special:Log/newusers
 'newuserlogpage' => 'Uiser creation log',
@@ -804,11 +1226,23 @@ Yer e-mail address insae revealed whin ither uisers contact ye.",
 'rcnotefrom' => 'Ablo is the chynges syne <b>$2</b> (up tae <b>$1</b> shawn).',
 'rclistfrom' => 'Shaw new chynges stertin frae $1',
 'rcshowhideminor' => '$1 smaa edits',
+'rcshowhideminor-show' => 'Shaw',
+'rcshowhideminor-hide' => 'Skauk',
 'rcshowhidebots' => '$1 bots',
-'rcshowhideliu' => '$1 logged-in uisers',
+'rcshowhidebots-show' => 'Shaw',
+'rcshowhidebots-hide' => 'Skauk',
+'rcshowhideliu' => '$1 registered uisers',
+'rcshowhideliu-show' => 'Shaw',
+'rcshowhideliu-hide' => 'Skauk',
 'rcshowhideanons' => '$1 anonymous uisers',
+'rcshowhideanons-show' => 'Shaw',
+'rcshowhideanons-hide' => 'Skauk',
 'rcshowhidepatr' => '$1 patrolled edits',
+'rcshowhidepatr-show' => 'Shaw',
+'rcshowhidepatr-hide' => 'Skauk',
 'rcshowhidemine' => '$1 ma edits',
+'rcshowhidemine-show' => 'Shaw',
+'rcshowhidemine-hide' => 'Skauk',
 'rclinks' => 'Shaw last $1 chynges in last $2 days<br />$3',
 'diff' => 'diff',
 'hist' => 'hist',
@@ -819,14 +1253,14 @@ Yer e-mail address insae revealed whin ither uisers contact ye.",
 'boteditletter' => 'b',
 'number_of_watching_users_pageview' => '[$1 watchin {{PLURAL:$1|uiser|uisers}}]',
 'rc_categories_any' => 'Ony',
-'rc-enhanced-expand' => 'Shaw details (requires JavaScript)',
+'rc-enhanced-expand' => 'Shaw details',
 'rc-enhanced-hide' => 'Hod details',
 
 # Recent changes linked
 'recentchangeslinked' => 'Relatit chynges',
 'recentchangeslinked-feed' => 'Relatit chynges',
 'recentchangeslinked-toolbox' => 'Relatit chynges',
-'recentchangeslinked-title' => 'Changes related to "$1"',
+'recentchangeslinked-title' => 'Chynges relatit til "$1"',
 'recentchangeslinked-summary' => "This is a leet o' changes made recently tae pages linked frae a specified page (or tae members o' a specified category).
 Pages on [[Special:Watchlist|your watchleet]] are '''bold'''.",
 'recentchangeslinked-page' => 'Page name:',
@@ -837,16 +1271,15 @@ Pages on [[Special:Watchlist|your watchleet]] are '''bold'''.",
 'uploadbtn' => 'Uplaid file',
 'reuploaddesc' => 'Gang back tae the uplaid form.',
 'uploadnologin' => 'Nae loggit in',
-'uploadnologintext' => 'Ye maun be [[Special:UserLogin|loggit in]] til uplaid files.',
-'uploaderror' => 'Uplaid error',
-'uploadtext' => "Uise the form ablo tae uplaid new files;
-tae keek at or rake throu aareadies uplaidit eimages gang tae the [[Special:FileList|leet o uplaidit files]];
-uplaids an deletions is recordit in the [[Special:Log|project log]].
-
-Tae pit the eimage intae a page, uise an airtin i the form
-'''<nowiki>[[</nowiki>{{ns:file}}:file.jpg<nowiki>]]</nowiki>''',
-'''<nowiki>[[</nowiki>{{ns:file}}:file.png|alt text<nowiki>]]</nowiki>''' or
-'''<nowiki>[[</nowiki>{{ns:media}}:file.ogg<nowiki>]]</nowiki>''' for pyntin strecht tae the file",
+'uploadnologintext' => 'Please $1 tae uplaid files.',
+'uploaderror' => 'Uplaid mistak',
+'uploadtext' => 'Uise the form ablo tae uplaid files.
+Tae view or rake previooslei uplaided files gang til the [[Special:FileList|leet o uplaided files]], (re)uplaids ar loggit in the [[Special:Log/upload|uplaid log]] ava, delytions in the [[Special:Log/delete|delytion log]].
+
+Tae inclæde ae file in ae page, uise ae link in yin o the follaein forms:
+* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code></strong> tae uise the ful version o the file
+* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code></strong> tae uise ae 200 pixel wide rendition in ae kist in the cair margin wi "alt tex" aes descreeption
+* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> fer linkin directlie til the file wioot displayin the file',
 'uploadlog' => 'uplaid log',
 'uploadlogpage' => 'Uplaid log',
 'uploadlogpagetext' => 'Ablo is a leet o the maist recent file uplaids.',
@@ -861,8 +1294,12 @@ Tae pit the eimage intae a page, uise an airtin i the form
 'largefileserver' => 'This file is bigger nor the server is confeigurt tae allou.',
 'fileexists' => "A file wi this name exists aareadies, please check <strong>[[:$1]]</strong> gin ye'r no siccar that ye want tae chynge it.
 [[$1|thumb]]",
-'fileexists-forbidden' => 'A file wi this name aareadies exists; please gang back an uplaid this file unner a new name. [[File:$1|thumb|center|$1]]',
-'fileexists-shared-forbidden' => 'A file wi this name aareadies exists in the shared file depose; please gang back an uplaid this file unner a new name. [[File:$1|thumb|center|$1]]',
+'fileexists-forbidden' => 'Ae file wi this name awreadie exists, an canna be owerwritten.
+Gif ye still wish tae uplaid yer file, please gae back an uise ae new name.
+[[File:$1|thumb|center|$1]]',
+'fileexists-shared-forbidden' => 'Ae file wi this name awreadie exists in the shaired file repository.
+Gif ye still wish tae uplaid yer file, please gae back an uise ae new name.
+[[File:$1|thumb|center|$1]]',
 'uploadwarning' => 'Uplaid warnin',
 'savefile' => 'Hain file',
 'uploadedimage' => 'uplaidit "$1"',
@@ -886,20 +1323,20 @@ Tae pit the eimage intae a page, uise an airtin i the form
 'file-anchor-link' => 'Eimage',
 'filehist' => 'File history',
 'filehist-help' => "Click oan a date/time tae view th' file as it appeared at that time.",
-'filehist-deleteone' => 'delete',
+'filehist-deleteone' => 'delyte',
 'filehist-revert' => 'revert',
 'filehist-current' => 'current',
 'filehist-datetime' => 'Date/Time',
 'filehist-thumb' => 'Thumbnail',
-'filehist-thumbtext' => 'Thumbnail for version as of $1',
+'filehist-thumbtext' => 'Thumbnail fer version aes o $1',
 'filehist-user' => 'Uiser',
 'filehist-dimensions' => 'Dimensions',
 'filehist-comment' => 'Comment',
-'imagelinks' => 'File airtins',
+'imagelinks' => 'File uisage',
 'linkstoimage' => 'The follaein {{PLURAL:$1|page airts|$1 pages airt}} tae this file:',
 'nolinkstoimage' => "The'r nae pages airts tae this eimage.",
-'sharedupload-desc-here' => "This file is frae $1 and may be used bi other projects.
-Th' description oan tis [$2 file description page] thare is shown below.",
+'sharedupload-desc-here' => 'This file is frae $1 an micht be uised bi ither projects.
+The descreeption oan its [$2 file descreeption page] thaur is shawn ablo.',
 
 # File reversion
 'filerevert' => 'Revert $1',
@@ -907,7 +1344,7 @@ Th' description oan tis [$2 file description page] thare is shown below.",
 'filerevert-submit' => 'Revert',
 
 # File deletion
-'filedelete-submit' => 'Delete',
+'filedelete-submit' => 'Delyte',
 
 # MIME search
 'mimetype' => 'MIME type:',
@@ -915,28 +1352,30 @@ Th' description oan tis [$2 file description page] thare is shown below.",
 
 # Unused templates
 'unusedtemplates' => 'Templates that arena uised',
-'unusedtemplatestext' => 'This page leets aw pages in the template namespace that haena been uised in anither page. Mynd an check for ither links tae the templates afore deletin them.',
+'unusedtemplatestext' => 'This page leets aw pages in the {{ns:template}} namespace that arna incæded in anither page. Mynd an check fer ither airtins til the templates afore deletin theim.',
 'unusedtemplateswlh' => 'ither links',
 
 # Random page
 'randompage' => 'Wale page allevolie',
 
 # Statistics
-'statistics' => 'Statistics',
-'statistics-header-pages' => 'Page statistics',
-'statistics-header-edits' => 'Edit statistics',
-'statistics-header-views' => 'View statistics',
-'statistics-header-users' => 'Uiser statistics',
-'statistics-header-hooks' => 'Ither statistics',
+'statistics' => 'Stateestics',
+'statistics-header-pages' => 'Page stateestics',
+'statistics-header-edits' => 'Eidit stateestics',
+'statistics-header-views' => 'View stateestics',
+'statistics-header-users' => 'Uiser stateestics',
+'statistics-header-hooks' => 'Ither stateestics',
 'statistics-pages' => 'Pages',
 
 'doubleredirects' => 'Dooble reguidals',
-'doubleredirectstext' => 'Ilka raw hauds airtins tae the first an saicont reguidal, as weel as the first line o the saicont reguidal text, for usual giein the "rael" tairget page, that the first reguidal shuid pynt til.',
+'doubleredirectstext' => 'This page leets pages that redirect til ither redirect pages.
+Ilka rou contains airtins til the first and seicont redirect, aes weel aes the terget o the secont redirect, whilk is usually the "real" terget page whaur the first redirect shid point.
+<del>Crossed oot</del> entries hae been solved.',
 
 'brokenredirects' => 'Brucken reguidals',
-'brokenredirectstext' => 'The follaein reguidals airts tae pages that disna exist.',
+'brokenredirectstext' => 'The folling redirects link til non-existent pages:',
 'brokenredirects-edit' => 'edit',
-'brokenredirects-delete' => 'delete',
+'brokenredirects-delete' => 'delyte',
 
 'withoutinterwiki' => 'Pages athoot leid links',
 'withoutinterwiki-legend' => 'Prefix',
@@ -974,13 +1413,14 @@ Th' description oan tis [$2 file description page] thare is shown below.",
 'protectedpages-unknown-performer' => "Onken't user",
 'protectedtitles-summary' => 'This page leets titles that are nou protectit fae creation. Fer a leet of exeesting pages that are protectit, see [[{{#special:ProtectedPages}}]].',
 'listusers' => 'Uiser leet',
-'usercreated' => 'Created on $1 at $2',
+'usercreated' => '{{GENDER:$3|Created}} on $1 at $2',
 'newpages' => 'New pages',
 'newpages-username' => 'Uisername:',
 'ancientpages' => 'Auldest pages',
 'move' => 'Flit',
 'movethispage' => 'Flit this page',
-'unusedimagestext' => '<p>Please mynd that ither wabsteids micht airt til an eimage wi a direct URL, an sae micht still be leetit here but be in aictive uiss.</p>',
+'unusedimagestext' => 'The follaeing files exist but arna embeddit in oni page.
+Please note that ither wab sites micht airt til ae file wi ae direct URL, an sae micht still be leetit here despite being in active uiss.',
 'unusedcategoriestext' => 'The follaein category pages exists, tho nae ither airticle or category maks uiss o thaim.',
 'notargettitle' => 'Nae target',
 'notargettext' => "Ye hivna specifee'd a tairget page or uiser tae perform this function on.",
@@ -989,15 +1429,16 @@ Th' description oan tis [$2 file description page] thare is shown below.",
 
 # Book sources
 'booksources' => 'Beuk sources',
-'booksources-search-legend' => 'Search fur book sources',
+'booksources-search-legend' => 'Rake fer buik soorces',
 'booksources-go' => 'Gang',
 
 # Special:Log
-'specialloguserlabel' => 'Uiser:',
-'speciallogtitlelabel' => 'Teitle:',
+'specialloguserlabel' => 'Performer:',
+'speciallogtitlelabel' => 'Target (title or uiser):',
 'log' => 'Logs',
 'all-logs-page' => 'Aw public logs',
-'alllogstext' => 'Combined display o uplaid, deletion, protection, blockin, an administrator logs. Ye can narra doon the view bi walin a log type, the uiser name, or the affectit page.',
+'alllogstext' => 'Combined display o aw available logs o {{SITENAME}}.
+Ye can narrae down the view bi selectin ae log type, the uisername (case-sensitive), or the affected page (case-sensitive ava).',
 'logempty' => 'Nae matchin items in log.',
 
 # Special:AllPages
@@ -1015,9 +1456,9 @@ Th' description oan tis [$2 file description page] thare is shown below.",
 
 # Special:Categories
 'categories' => 'Categories',
-'categoriespagetext' => 'The follaein categories exist in the wiki.
-[[Special:UnusedCategories|Unused categories]] are not shown here.
-Also see [[Special:WantedCategories|wanted categories]].',
+'categoriespagetext' => 'The follaeing {{PLURAL:$1|categorie contains|categories contain}} pages or media.
+[[Special:UnusedCategories|Onuised categories]] arna shawn here.
+See [[Special:WantedCategories|wanted categories]] ava.',
 'special-categories-sort-count' => 'sairt bi coont',
 'special-categories-sort-abc' => 'sairt by the alphabet',
 
@@ -1041,7 +1482,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'mailnologintext' => 'Ye maun be [[Special:UserLogin|loggit in]] an hae a valid e-mail address in yer [[Special:Preferences|preferences]] tae send e-mail til ither uisers.',
 'emailuser' => 'E-mail this uiser',
 'noemailtitle' => 'Nae e-mail address',
-'noemailtext' => "This uiser haesna specifee'd a valid e-mail address, or haes chuisen no tae receive e-mail frae ither uisers.",
+'noemailtext' => 'This uiser haesna speceefied ae valid wab-mail address.',
 'emailmessage' => 'Message:',
 
 # Watchlist
@@ -1051,13 +1492,14 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'nowatchlist' => 'Ye hivna onie eitems on yer watchleet.',
 'watchnologin' => 'Nae loggit in',
 'watchnologintext' => 'Ye maun be [[Special:UserLogin|loggit in]] tae modify yer watchleet.',
-'addedwatchtext' => "The page \"<nowiki>\$1</nowiki>\" haes been eikit ti yer [[Special:Watchlist|watchleet]]. Futur chynges ti this page an its associate Collogue page will be leetit thare, an the page will kythe '''bauldit''' in the [[Special:RecentChanges|leet o recent chynges]] ti mak it mair eith tae pick oot. <p>Gin ye want ti remuve the page frae yer watchleet later, dab \"Stop watching\" in the sidebar.",
-'removedwatchtext' => 'The page "[[:$1]]" haes been remuved frae yer watchleet.',
+'addedwatchtext' => 'The page "[[:$1]]" haes been added til yer [[Special:Watchlist|watchleet]].
+Future chynges til this page an its associated tauk page will be leeted there.',
+'removedwatchtext' => 'The page "[[:$1]]" haes been remuied fae [[Special:Watchlist|yer watchleet]].',
 'watch' => 'Watch',
 'watchthispage' => 'Leuk ower this page',
 'unwatch' => 'Unwatch',
 'notanarticle' => 'No a content page',
-'watchlist-details' => "{{PLURAL:$1|$1 page|$1 pages}} on yer watchleet, nae countin' collogue pages.",
+'watchlist-details' => '{{PLURAL:$1|$1 page|$1 pages}} on yer watchleet, no countin talk pages.',
 'watchlistcontains' => 'Yer watchleet contains $1 {{PLURAL:$1|page|pages}}.',
 'iteminvalidname' => "Trouble wi eitem '$1', invalid name...",
 'wlnote2' => 'Ablow ar the chynges in the hainmaist {{PLURAL:$1|hour|<strong>$1</strong> hours}}, as of $3, $2.',
@@ -1069,28 +1511,28 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'unwatching' => 'Unwatchin...',
 
 'enotif_reset' => 'Merk aa pages visitit',
-'enotif_lastvisited' => 'Hae a leuk at $1 for aa chynges sin yer last visit.',
+'enotif_lastvisited' => 'Hae ae leuk at $1 fer aa chynges sin yer laist veesit.',
 'created' => 'creatit',
 'changed' => 'chynged',
 
 # Delete
-'deletepage' => 'Delete page',
+'deletepage' => 'Delyte page',
 'excontent' => "content wis: '$1'",
 'excontentauthor' => "content wis: '$1' (an the ae contreibutor wis '[[Special:Contributions/$2|$2]]')",
 'exbeforeblank' => "content afore blankin wis: '$1'",
 'exblank' => 'page wis tuim',
-'delete-confirm' => 'Delete "$1"',
-'delete-legend' => 'Delete',
-'historywarning' => "Warnin: The page ye're aboot tae delete haes a history:",
+'delete-confirm' => 'Delyte "$1"',
+'delete-legend' => 'Delyte',
+'historywarning' => "<strong>Warnishment:</strong> The page ye'r aboot tae delete haes ae histerie wi approximately $1 {{PLURAL:$1|revision|revisions}}:",
 'confirmdeletetext' => "Ye'r aboot tae permanently delete a page or eimage alang wi aa its history frae the database.
 Please confirm that ye intend tae dae this, that ye unnerstaun the consequences,
 an that ye'r daein this in accord wi [[{{MediaWiki:Policy-url}}]].",
 'actioncomplete' => 'Action duin',
 'actionfailed' => 'Action failed',
-'deletedtext' => '"$1" haes been delete. See $2 for a record o recent deletions.',
-'dellogpage' => 'Deletion log',
+'deletedtext' => '"$1" haes been delytit. See $2 fer ae record o recent delytions.',
+'dellogpage' => 'Delytion log',
 'dellogpagetext' => 'Ablo is a leet o the maist recent deletions.',
-'deletionlog' => 'deletion log',
+'deletionlog' => 'delytion log',
 'reverted' => 'Revertit tae aulder reveision',
 'deletecomment' => 'Raeson:',
 'deletereasonotherlist' => 'Ither raeson',
@@ -1101,26 +1543,30 @@ an that ye'r daein this in accord wi [[{{MediaWiki:Policy-url}}]].",
 'rollbacklink' => 'rowback',
 'rollbackfailed' => 'Rowback failed',
 'cantrollback' => 'Canna revert edit; last contreibutor is the ae author o this page.',
-'alreadyrolled' => 'Canna rowback last edit o [[$1]] bi [[User:$2|$2]] ([[User talk:$2|Talk]]); some ither bodie haes editit or rowed back the page aareadies. Last edit wis bi [[User:$3|$3]] ([[User talk:$3|Talk]]).',
-'editcomment' => "The edit comment wis: \"''\$1''\".",
-'revertpage' => 'Revertit edit o [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]), chynged back tae last version bi [[User:$1|$1]]',
+'alreadyrolled' => 'Canna rollback laist eidit o [[:$1]] bi [[User:$2|$2]] ([[User talk:$2|tauk]]{{int:pipe-separater}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+some ither bodie haes eidited or rolled back the page awreadie.
+
+The laist eidit til the page wis bi [[User:$3|$3]] ([[User talk:$3|tauk]]{{int:pipe-separater}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
+'editcomment' => "The eidit summarie wis: \"''\$1''\".",
+'revertpage' => 'Reverted eidits bi [[Special:Contributions/$2|$2]] ([[User talk:$2|tauk]]) til laist revision bi [[User:$1|$1]]',
 
 # Protect
 'protectlogpage' => 'Fend log',
-'protectlogtext' => 'Ablo is a leet o page locks/unlocks. See the [[Special:ProtectedPages|protected pages list]] for the list of currently operational page protections.',
+'protectlogtext' => 'Ablow is ae leet o chynges til page protections.
+See the [[Special:ProtectedPages|protected pages leet]] fer the leet o currently operational page protections.',
 'protectedarticle' => 'protectit "[[$1]]"',
-'unprotectedarticle' => 'unprotectit "[[$1]]"',
+'unprotectedarticle' => 'remuied protection fae "[[$1]]"',
 'protect-title' => 'Protectin "$1"',
 'prot_1movedto2' => '[[$1]] flittit til [[$2]]',
 'protectcomment' => 'Raeson:',
 'protectexpiry' => 'Expires:',
 'protect-text' => "Ye can see an chynge the protection level here for the page '''$1'''.",
 'protect-default' => 'Allow aw uisers',
-'protect-level-autoconfirmed' => 'Baur new and unregistered uisers',
-'protect-level-sysop' => 'Juist administrators',
+'protect-level-autoconfirmed' => 'Allou yinly autæconfirmed uisers',
+'protect-level-sysop' => 'Allou admeenistraters yinly',
 'protect-othertime' => 'Ither time:',
 'protect-othertime-op' => 'ither time',
-'protect-expiry-options' => '2 oor:2 hours,1 day:1 day,3 days:3 days,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,infinite:infinite',
+'protect-expiry-options' => '1 hoor:1 hour,1 day:1 day,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,eenfinite:infinite',
 
 # Restrictions (nouns)
 'restriction-edit' => 'Edit',
@@ -1129,26 +1575,25 @@ an that ye'r daein this in accord wi [[{{MediaWiki:Policy-url}}]].",
 'restriction-upload' => 'Uplaid',
 
 # Undelete
-'undelete' => 'Restore delete page',
-'undeletepage' => 'View an restore delete pages',
-'viewdeletedpage' => 'View delete pages',
-'undeletepagetext' => 'The follaein pages haev bin deleted but are aye in the archive an
-can be restored. The archive micht be redd oot noo an then.',
+'undelete' => 'Restore delyte page',
+'undeletepage' => 'View an restore delytit pages',
+'viewdeletedpage' => 'View delyte pages',
+'undeletepagetext' => 'The follaeing {{PLURAL:$1|page haes been deletit but is|$1 pages hae been deletit but ar}} still in the archive an can be restored.
+The archive micht be cleaned oot nou an then.',
 'undeleteextrahelp' => "In order tae restore the page's entire histerie, lea aw checkboxes onselected an clap on <strong><em>{{int:undeletebtn}}</em></strong>.
 Tae perform ae selective restoration, check the boxes corresponding til the revisions tae be restored, an clap on <strong><em>{{int:undeletebtn}}</em></strong>.",
-'undeletehistory' => 'Gin ye restore the page, aa reveisions will be restored til the history.
-Gin a neow page wi the same name haes bin created syne the deletion, the restored
-reveisions will appear in the aulder history, an the current reveision o the live page winna be autaematically replaced.',
-'undeletehistorynoadmin' => 'This airticle haes been delete. The raeson for deletion is
-shawn in the summary ablo, alang wi parteeculars o the uisers that haed editit this page
-afore it wis delete. The actual text o thir deletit reveisions is available tae admeenistrators juist.',
+'undeletehistory' => 'Gif ye restore the page, aw revisions will be restored til the histerie.
+Gif ae new page wi the same name haes been makit sin the delytion, the restored reveesions will kyth in the prior histerie.',
+'undeletehistorynoadmin' => 'This airticle haes been delytit. The raeson fer delytion is
+shawn in the owerview ablo, alang wi parteeculars o the uisers that haed eiditit this page afore it wis delytit. The actual tex o thir delytit reveesions is available tae admeenistraters juist.',
 'undeletelink' => 'view/restore',
 'undeleteviewlink' => 'view',
 'undeletedrevisions' => '{{PLURAL:$1|1 reveision|$1 reveisions}} restored',
-'cannotundelete' => 'Undelete didna wirk; some ither bodie micht hae aareadies undeletit the page.',
-'undeletedpage' => '<strong>$1 has been restored</strong>
+'cannotundelete' => 'Ondelyte failed:
+$1',
+'undeletedpage' => '<strong>$1 haes been restored</strong>
 
-Consult the [[Special:Log/delete|deletion log]] fer ae record o recent deletions an restorations.',
+Consult the [[Special:Log/delete|delytion log]] fer ae record o recent delytions an restorâtions.',
 
 # Namespace form on various pages
 'namespace' => 'Namespace:',
@@ -1156,12 +1601,12 @@ Consult the [[Special:Log/delete|deletion log]] fer ae record o recent deletions
 'blanknamespace' => '(Main)',
 
 # Contributions
-'contributions' => 'Uiser contreibutions',
+'contributions' => '{{GENDER:$1|Uiser}} contributions',
 'contributions-title' => 'Uiser contreibutions fer $1',
 'mycontris' => 'Ma contreibutions',
-'contribsub2' => 'For $1 ($2)',
-'nocontribs' => 'Nae chynges wis funnd matchin thae criteria.',
-'uctop' => ' (tap)',
+'contribsub2' => 'Fer {{GENDER:$3|$1}} ($2)',
+'nocontribs' => 'Nae chynges wis funnd matchin thir criteria.',
+'uctop' => '(current)',
 'month' => 'Frae month (an afore):',
 'year' => 'Frae year (an afore):',
 
@@ -1169,15 +1614,15 @@ Consult the [[Special:Log/delete|deletion log]] fer ae record o recent deletions
 'sp-contributions-blocklog' => 'block log',
 'sp-contributions-uploads' => 'uploads',
 'sp-contributions-logs' => 'logs',
-'sp-contributions-talk' => 'collogue',
-'sp-contributions-search' => 'Rake fur contreibutions',
+'sp-contributions-talk' => 'talk',
+'sp-contributions-search' => 'Rake fer contreebutions',
 'sp-contributions-username' => 'IP address or uisername:',
 'sp-contributions-toponly' => 'Ainlie shaw edits that are latest revisions',
 'sp-contributions-submit' => 'Rake',
 
 # What links here
 'whatlinkshere' => 'Whit airts tae here',
-'whatlinkshere-title' => 'Pages that link to "$1"',
+'whatlinkshere-title' => 'Pages that link til "$1"',
 'whatlinkshere-page' => 'Page:',
 'linkshere' => "The follaein pages airts tae '''[[:$1]]''':",
 'nolinkshere' => "Nae pages airt tae '''[[:$1]]'''.",
@@ -1191,7 +1636,7 @@ Consult the [[Special:Log/delete|deletion log]] fer ae record o recent deletions
 'whatlinkshere-hideredirs' => '$1 redirects',
 'whatlinkshere-hidetrans' => '$1 transclusions',
 'whatlinkshere-hidelinks' => '$1 links',
-'whatlinkshere-hideimages' => '$1 image links',
+'whatlinkshere-hideimages' => '$1 file airtins',
 'whatlinkshere-filters' => 'Filters',
 
 # Block/unblock
@@ -1205,7 +1650,7 @@ Consult the [[Special:Log/delete|deletion log]] fer ae record o recent deletions
 'badipaddress' => 'That IP address is nae guid',
 'blockipsuccesssub' => 'Block succeedit',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] haes been blockit.
-<br />See [[Special:BlockList|IP block leet]] tae review blocks.',
+<br />See [[Special:BlockList|block leet]] tae review blocks.',
 'ipb-unblock-addr' => 'Unblock $1',
 'unblockip' => 'Unblock uiser',
 'unblockiptext' => 'Uise the form ablo tae restore screivin richts
@@ -1220,13 +1665,14 @@ tae an afore-blockit IP address or uisername.',
 'autoblocker' => 'Autaematically blockit syne yer IP address haes been uised recently bi "[[User:$1|$1]]". The raeson gien fer $1\'s block is "$2"',
 'blocklogpage' => 'Block log',
 'blocklogentry' => 'blockit [[$1]] wi an expiry time o $2 $3',
-'blocklogtext' => 'This is a log o uiser blockin an unblockin actions. Autaematically blockit IP addresses isna leetit. See the [[Special:BlockList|IP block leet]] for the leet o bans and blocks on the gae the nou.',
+'blocklogtext' => 'This is ae log o uiser blockin an onblockin actions. Autaematically blockit IP addresses isna leetit. See the [[Special:BlockList|block leet]] fer the leet o bans and blocks oan nou.',
 'unblocklogentry' => 'unblockit $1',
 'block-log-flags-nocreate' => 'accoont-makkin blockit',
 'range_block_disabled' => 'The administrator abeility tae mak range blocks is disabled.',
 'proxyblockreason' => 'Yer IP address haes been blockit sith it is an open proxy. Please contact yer Internet service provider or tech support an inform them o this serious security problem.',
-'sorbsreason' => 'Yer IP address is leetit as an open proxy in the DNSBL.',
-'sorbs_create_account_reason' => 'Yer IP address is leetit as an open proxy in the DNSBL. Ye canna mak an accoont',
+'sorbsreason' => 'Yer IP address is leeted aes aen apen proxy in the DNSBL uised bi {{SITENAME}}.',
+'sorbs_create_account_reason' => 'Yer IP address is leeted aes aen apen proxy in the DNSBL uised bi {{SITENAME}}.
+Ye canna mak aen accoont.',
 
 # Developer tools
 'unlockdb' => 'Lowse database',
@@ -1234,7 +1680,7 @@ tae an afore-blockit IP address or uisername.',
 'unlockdbtext' => 'Lowsin the database will gie back the abeility for aa uisers tae edit pages, chynge their preferences, edit their watchleets, an ither things needin chynges in the database. Please confirm that this is whit ye ettle tae dae.',
 'lockconfirm' => 'Aye, A raellie want tae lock the database.',
 'unlockconfirm' => 'Aye, A raelly want tae lowse the database.',
-'locknoconfirm' => 'Ye didna tick the confirmation box.',
+'locknoconfirm' => 'Ye didna tick the confirmâtion kist.',
 'lockdbsuccesssub' => 'Database lock fine',
 'unlockdbsuccesssub' => 'Database lowsed',
 'lockdbsuccesstext' => 'The database haes been lockit. <br />Mynd an tak the lock aff efter yer maintenance is feinisht.',
@@ -1266,7 +1712,11 @@ This means that you can rename a page back to whaur it wis renamed fae gif ye ma
 <strong>Warnin!</strong>
 This can be ae drastic an onexpectit chynge fer ae popular page;
 please be sair ye unnerstaun the consequences of this afore proceedin.",
-'movepagetalktext' => "The associate Collogue page, gin onie, will be autaematically flittit alang wi it '''unless:''' *Ye'r flittin the page across namespaces, *A collogue page that isna tuim aareadies exists unner the new name, or *Ye tak the tick oot o the box ablo. In thae cases, ye maun flit or merge the page manually later gin ye hae saicont thochts.",
+'movepagetalktext' => 'The associated talk page will be autaematicly muived alang wi it <strong>onless:</strong>
+*A no-tuim talk page awreadie exists unner the new name, or
+*Ye oncheck the kist ablo.
+
+In thae cases, ye will hae tae muiv or merge the page manually gif ye sae desire.',
 'movearticle' => 'Flit page:',
 'moveuserpage-warning' => "<strong>Warning:</strong> Ye'r aboot tae muiv ae uiser page. Please note that yinly the page will be muivd and the uiser will <em>no</em> be renamed.",
 'movenologintext' => 'Ye maun be a registert uiser an [[Special:UserLogin|loggit in]] tae flit a page.',
@@ -1275,17 +1725,17 @@ please be sair ye unnerstaun the consequences of this afore proceedin.",
 'pagemovedsub' => 'Flittin succeedit',
 'movepage-moved' => '<strong>"$1" has been muived til "$2"</strong>',
 'articleexists' => "A page o that name aareadies exists, or the name ye'v waled isna guid. Please wale anither name.",
-'movetalk' => 'Flit "collogue" page an aa, gin it\'s applicable.',
+'movetalk' => 'Muiv associated talk page',
 'movelogpage' => 'Flit log',
 'movelogpagetext' => "A leet o pages that's flitted is ablo.",
 'movereason' => 'Raeson:',
 'revertmove' => 'revert',
-'delete_and_move' => 'Delete an flit',
-'delete_and_move_text' => '==Deletion caad for==
+'delete_and_move' => 'Delete an muiv',
+'delete_and_move_text' => '==Delytion caad fer==
 
-The destination airticle "[[:$1]]" aareadies exists. Div ye want tae delete it for tae mak wey for the flittin?',
-'delete_and_move_confirm' => 'Aye, delete the page',
-'delete_and_move_reason' => 'Delete for tae mak wey for flittin',
+The destination airticle "[[:$1]]" aareadies exists. Div ye want tae delyte it fer tae mak wey fer the muiv?',
+'delete_and_move_confirm' => 'Ai, delyte the page',
+'delete_and_move_reason' => 'Deletit fer tae mak way fer muiv fae "[[$1]]"',
 'selfmove' => 'Ootgaun an incomin teitles is the same; canna flit a page ower itsel.',
 'protectedpagemovewarning' => '<strong>Warning:</strong> This page has been protected sae that yinly uisers wi administrater preevileges can muiv it.
 The hainmaist log entry is provided ablow fer reference:',
@@ -1294,11 +1744,12 @@ The hainmaist log entry is provided ablow fer reference:',
 
 # Export
 'export' => 'Export pages',
-'exporttext' => 'Ye can export the text an editin history o a parteicular page or set o pages wappit in some XML. In the futur, this micht can be importit intae anither wiki runnin MediaWiki saftware, altho the\'r nae support for this featur in the current version.
+'exporttext' => 'Ye can export the tex an eiditin histerie o ae parteecular page or set o pages wrapped in some XML.
+This can be imported intil anither wiki uisin MediaWiki bi waa o the [[Special:Import|import page]].
 
-Tae export airticle pages, enter the teitles in the text box ablo, ae teitle tae ilka line, an wale whither ye want the current version alang wi aa auld versions, wi the page history lines, or the current version juist, wi wittins anent the last edit.
+Tae export pages, enter the titles in the tex kist ablo, yin title per line, an select whether ye want the current reveesion aes weel aes aw auld reveesions, wi the page histerie lines, or the current reveesion wi the info aneat the laist eidit.
 
-In the saicont case ye can uise an airtin forbye, for exemplar [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] for the airticle "[[{{MediaWiki:Mainpage}}]]".',
+In the latter case ye can ava uise ae link, fer example [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] fer the page "[[{{MediaWiki:Mainpage}}]]".',
 'exportcuronly' => 'Include juist the current revision, no the fou history',
 'exportnohistory' => '----
 <strong>Note:</strong> Exporting the ful histerie o pages through this form has been disabled caus o performance raisons.',
@@ -1308,18 +1759,20 @@ In the saicont case ye can uise an airtin forbye, for exemplar [[{{#Special:Expo
 'allmessagesname' => 'Name',
 'allmessagesdefault' => 'Defaut text',
 'allmessagescurrent' => 'Text the nou',
-'allmessagestext' => 'This is a leet o aa seestem messages available in the MediaWiki: namespace.',
+'allmessagestext' => 'This is ae leet o system messages available in the MediaWiki namespace.
+Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] an [//translatewiki.net translatewiki.net] gif ye wish tae contreebute til the generic MediaWiki localisation.',
 'allmessagesnotsupportedDB' => "'''{{ns:special}}:AllMessages''' nae supportit acause '''\$wgUseDatabaseMessages''' is aff.",
-'allmessages-filter-translate' => "O'erset",
+'allmessages-filter-translate' => 'Owerset',
 
 # Thumbnails
 'thumbnail-more' => 'Eik',
 'filemissing' => 'File missin',
-'thumbnail_error' => 'Error creating thumbnail: $1',
-'thumbnail_image-failure-limit' => "There hae been o'er mony recent failed attempts ($1 or more) tae render this thumbnail. Please try again later.",
+'thumbnail_error' => 'Mistak makin thummnail: $1',
+'thumbnail_image-failure-limit' => 'There hae been ower moni recent failed attempts ($1 or mair) tae render this thumbnail. Please try again later.',
 
 # Special:Import
-'importtext' => 'Please export the file frae the soorce wiki uisin the Special:Export utility, hain it in yer disc an uplaid it here.',
+'importtext' => 'Please export the file fae the soorce wiki uising the [[Special:Export|export utility]].
+Hain it til yer computer an uplaid it here.',
 'importnotext' => 'Tuim or nae text',
 'importsuccess' => 'Importit fine!',
 'importhistoryconflict' => 'Conflictin history revision exists (micht hae importit this page afore)',
@@ -1329,9 +1782,9 @@ In the saicont case ye can uise an airtin forbye, for exemplar [[{{#Special:Expo
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Yer uiser page',
-'tooltip-pt-mytalk' => 'Yer collogue page',
+'tooltip-pt-mytalk' => 'Yer talk page',
 'tooltip-pt-preferences' => 'Ma preferences',
-'tooltip-pt-watchlist' => "Th' leet o' pages yer monitoring fur changes",
+'tooltip-pt-watchlist' => "Ae leet o pages ye'r moniterin fer chynges",
 'tooltip-pt-mycontris' => 'Leet o yer contreibutions',
 'tooltip-pt-login' => "It's a guid idea tae log i, but ye dinna hae tae.",
 'tooltip-pt-logout' => 'Log oot',
@@ -1342,13 +1795,13 @@ In the saicont case ye can uise an airtin forbye, for exemplar [[{{#Special:Expo
 You ken view its source',
 'tooltip-ca-history' => "Bygane revisions o' this page",
 'tooltip-ca-protect' => 'Fend this page',
-'tooltip-ca-delete' => 'Delete this page',
+'tooltip-ca-delete' => 'Delyte this page',
 'tooltip-ca-move' => 'Flit this page',
 'tooltip-ca-watch' => 'Add this page tae yer watchleet',
 'tooltip-ca-unwatch' => 'Remove this page frum yer watchleet',
 'tooltip-search' => 'Rake {{SITENAME}}',
 'tooltip-search-go' => "Gang tae a page wi' this exact name if exists",
-'tooltip-search-fulltext' => "Search th' pages fur this text",
+'tooltip-search-fulltext' => "Rake th' pages fer this tex",
 'tooltip-p-logo' => 'Gang tae the Main Page',
 'tooltip-n-mainpage' => 'Gang tae the Main Page',
 'tooltip-n-mainpage-description' => 'Gang tae the Main Page',
@@ -1359,9 +1812,9 @@ You ken view its source',
 'tooltip-n-help' => "Th' steid tae fin' oot",
 'tooltip-t-whatlinkshere' => "List o' a' wiki pages that link 'ere",
 'tooltip-t-recentchangeslinked' => 'Recent changes in pages linked frae this page',
-'tooltip-feed-atom' => 'Atom feed fur this page',
+'tooltip-feed-atom' => 'Atom feed fer this page',
 'tooltip-t-contributions' => "View this uiser's contreibutions",
-'tooltip-t-emailuser' => 'Send an e-mail to this uiser',
+'tooltip-t-emailuser' => 'Send ae wab-mail til this uiser',
 'tooltip-t-upload' => 'Uplaid files',
 'tooltip-t-specialpages' => 'Leet o byordinar pages',
 'tooltip-t-print' => "Printable version o' this page",
@@ -1387,15 +1840,16 @@ You ken view its source',
 'notacceptable' => 'The wiki server canna provide data in a format yer client can read.',
 
 # Attribution
-'anonymous' => 'Nameless uiser(s) o {{SITENAME}}',
+'anonymous' => 'Nameless {{PLURAL:$1|uiser|uisers}} o {{SITENAME}}',
 'siteuser' => '{{SITENAME}} uiser $1',
 'othercontribs' => 'Based on wark bi $1.',
 'others' => 'ithers',
-'siteusers' => '{{SITENAME}} uiser(s) $1',
-'nocredits' => "The'r nae credit info available for this page.",
+'siteusers' => '{{SITENAME}} {{PLURAL:$2|uiser|uisers}} $1',
+'nocredits' => "Thaur's nae creedit info available fer this page.",
 
 # Spam protection
-'spamprotectiontext' => 'The page ye wanted tae save wis blockit bi the spam filter. This is maist likely caused bi an airtin til an outby site.',
+'spamprotectiontext' => 'The tex ye wished tae save wis blockit bi the spam filter.
+This is maistlikly caused bi aen airtin til ae blaickleeted external site.',
 'spamprotectionmatch' => 'The follaein text is whit triggered wir spam filter: $1',
 'simpleantispam-label' => 'Anti-spam check.
 Dae <strong>NO</strong> ful this in!',
@@ -1404,7 +1858,7 @@ Dae <strong>NO</strong> ful this in!',
 'markaspatrolleddiff' => 'Merk as patrolled',
 'markaspatrolledtext' => 'Merk this airticle as patrolled',
 'markedaspatrolled' => 'Merkit as patrolled',
-'markedaspatrolledtext' => 'The selectit reveision haes been merkit as patrolled.',
+'markedaspatrolledtext' => 'The selected revision o [[:$1]] haes been maurked aes patrolled.',
 'rcpatroldisabledtext' => 'The Recent Changes Patrol feature is disabled the nou.',
 
 # Image deletion
@@ -1421,7 +1875,7 @@ Bi executing it, yer system micht be compromised.',
 'file-info-size' => '$1 × $2 pixels, file size: $3, MIME type: $4',
 'file-nohires' => 'Na higher resolution available.',
 'svg-long-desc' => 'SVG file, nominally $1 × $2 pixels, file size: $3',
-'show-big-image' => 'Full resolution',
+'show-big-image' => 'Oreeginal file',
 'file-no-thumb-animation' => '<strong>Note: Due til technical limitations, thumbnails o this file will no be animated.</strong>',
 'file-no-thumb-animation-gif' => '<strong>Note: Due til technical limitations, thumbnails o hich resolution GIF eimages sic as this will no be animated.</strong>',
 
@@ -1439,8 +1893,8 @@ Ainlie list items (lines starting wi' *) are considered. Th' foremaist link oan
 
 # Metadata
 'metadata' => 'Metadata',
-'metadata-help' => "This file contains additional speirins, likelie added frae th' digital camera or scanner used tae create or digitize it. 
-If th' file haes bin modified frae tis original state, some details kin nae fully reflect th' modified file.",
+'metadata-help' => 'This file contains addeetional speirins, likelie added frae the deegital camera or scanner uised tae mak or deegitize it. 
+Gif the file haes bin modified frae its oreeginal state, some details micht no fullie reflect the modified file.',
 'metadata-fields' => "Image metadata fields listed in this message wull be included oan image page display whin th' metadata buird is collapsed. Others wull be hidden by default. 
 *mak
 * model
@@ -1461,7 +1915,7 @@ If th' file haes bin modified frae tis original state, some details kin nae full
 'exif-colorspace' => 'Colour space',
 'exif-componentsconfiguration' => 'Meanin o ilka component',
 'exif-compressedbitsperpixel' => 'Eimage compression mode',
-'exif-brightnessvalue' => 'Brichtness',
+'exif-brightnessvalue' => 'APEX brichtness',
 
 'exif-componentsconfiguration-0' => 'disna exist',
 
@@ -1480,32 +1934,34 @@ If th' file haes bin modified frae tis original state, some details kin nae full
 afore uisin e-mail featurs. Activate the button ablo tae send a confirmation
 mail tae yer address. The mail will include an airtin containing a code; laid the
 airtin in yer brouser tae confirm that yer e-mail address is guid.',
-'confirmemail_sendfailed' => 'Cuidna send confirmation mail. Hae a leuk at the address for invalid characters.
+'confirmemail_sendfailed' => '{{SITENAME}} coudna send yer confirmation mail.
+Please check yer wab-mail address fer onvalid chairacters.
 
 Mailer returned: $1',
 'confirmemail_invalid' => 'Confirmation code nae guid. The code haes mibbe expired.',
-'confirmemail_needlogin' => 'Ye maun $1 for tae confirm yer email address.',
+'confirmemail_needlogin' => 'Please $1 fer tae confirm yer wab-mail address.',
 'confirmemail_success' => 'Yer e-mail address haes been confirmed. Ye can nou log in an enjoy the wiki.',
 'confirmemail_loggedin' => 'Yer e-mail address haes noo been confirmed.',
-'confirmemail_body' => 'A bodie, maist likely you frae IP address $1, haes registert an
-accoont "$2" wi this e-mail address on {{SITENAME}}.
+'confirmemail_body' => 'Somebodie, maist likely ye, fae IP address $1,
+haes registered aen accoont "$2" wi this wab-mail address oan {{SITENAME}}.
 
-Tae confirm that you ar aucht this accoont an activate e-mail featurs
-on {{SITENAME}}, open this airtin in yer brouser:
+Tae confirm that this accont really is yers an activate
+wab-mail features oan {{SITENAME}}, apen this airtin in yer brouser:
 
 $3
 
-If this *isna* you, dinna follae the airtin.
+Gif ye did *no* register the accoont, follae this airtin
+tae cancel the wab-mail address confirmation:
 
 $5
 
-This confirmation code will end at $4.',
+This confirmation code will expire oan $4.',
 
 # Delete conflict
 'deletedwhileediting' => '<strong>Warning:</strong> This page wis deletit efter ye sterted editing!',
-'confirmrecreate' => "Uiser [[User:$1|$1]] ([[User talk:$1|collogue]]) deletit this airticle efter ye stertit editin, giein the raeson:
-: ''$2''
-Please confirm that ye really want tae recreate this airticle.",
+'confirmrecreate' => 'Uiser [[User:$1|$1]] ([[User talk:$1|talk]]) delytit this page efter ye stairted eiditin wi raison:
+: <em>$2</em>
+Please confirm that ye reallie want tae remak this page.',
 
 # action=purge
 'confirm_purge_button' => 'Aye',
@@ -1521,7 +1977,7 @@ Please confirm that ye really want tae recreate this airticle.",
 'table_pager_empty' => 'Nae results',
 
 # Auto-summaries
-'autosumm-blank' => 'Dichtin aa content frae page',
+'autosumm-blank' => 'Blanked the page',
 'autosumm-replace' => "Replacin page wi '$1'",
 'autoredircomment' => 'Reguidin tae [[$1]]',
 
index f1dc240..f93acd2 100644 (file)
@@ -513,7 +513,6 @@ You cannot use the 'e-mail this user' feature unless a valid e-mail address is s
 'lineno' => 'سِٽَ $1:',
 'compareselectedversions' => 'چونڊيل پرت ڀيٽيو',
 'editundo' => 'اڻڪريو',
-'diff-multi' => '({{PLURAL:$1|هڪ وسطي مسودو|$1 وسطي مسودا}} لڪايل.)',
 
 # Search results
 'prevn' => 'پويان {{PLURAL:$1|$1}}',
index 3bb8079..a289b87 100644 (file)
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Squóráam linkám:',
-'tog-justify' => 'Icáitom paragraphám',
 'tog-hideminor' => 'Camaát editicúnos pac-quimáaxat camjöx cmaa iti',
 'tog-extendwatchlist' => 'Expand listade cáminot zo cohuatlöx jömde quíix applicablix',
 'tog-usenewrc' => 'Camjöx cmaa enhancöx (JavaScript)',
 'tog-numberheadings' => 'Auto-numberom text corridór',
 'tog-showtoolbar' => 'Cohuatlöx ticpatlöx toolbar (JavaScript)',
 'tog-editondblclick' => 'Ticpatlöx páhinám 2 clickám mii (JavaScript)',
-'tog-editsection' => 'Ton ticpatlöx seccion [edit] linkám via',
 'tog-editsectiononrightclick' => 'Ton ticpatlöx seccion pok clickám mii<br /> seccion titelám iti (JavaScript)',
-'tog-showtoc' => 'Cohuatlöx insacualte (páhinám bajlip 3 text corridór mii)',
 'tog-rememberpassword' => 'Qualtiinii he quimx canj jan ordinator iti (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'Plusöx páhinám he hun he listade cáminot',
 'tog-watchdefault' => 'Plusöx páhinám he ticpatlöx he listade cáminot',
@@ -546,7 +543,6 @@ Informacion: (curt) = quiíxde vercion currentua,
 'lineno' => 'Pozxáat $1:',
 'compareselectedversions' => 'Comparenom verción selectón',
 'editundo' => 'iixponintöx',
-'diff-multi' => '({{PLURAL:$1|1 revicion páult|$1 revición páultíi}} necohuatlöx.)',
 
 # Search results
 'searchresults' => 'Resuluámde yahöx',
index 61856d8..401b9b1 100644 (file)
@@ -19,7 +19,6 @@ $namespaceGenderAliases = array();
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Gbënëngö-gbê',
-'tog-justify' => 'Lôngbi yângâ tî âsurä',
 'tog-hideminor' => 'Hônde âkêtê lönzïngö-sû sô asï fadê na yâ tî gbâsû',
 'tog-hidepatrolled' => 'Hônde âlönzïngö-sû sô asï  na hönngö na yâ tî gbâsû',
 'tog-newpageshidepatrolled' => 'Na pöpö tî âlêmbëtï nî, hônde âla sô a yeke bâa ndo daä.',
@@ -28,9 +27,7 @@ $messages = array(
 'tog-numberheadings' => 'Sû nömörö bîakü bîakü na terê tî âlisurä',
 'tog-showtoolbar' => 'Fa motarâka tî sepesû (ahûnda Javascript)',
 'tog-editondblclick' => 'Pîka kpêkê ûse tî sepe lêmbëtï (ahûnda Javascript)',
-'tog-editsection' => 'Zîngo sëpengö surä na gbê "[Sepe]"',
 'tog-editsectiononrightclick' => 'Pîka kötï kpêkê na ndö tî lisurä sï mo sepe nî (ahûnda Javascript)',
-'tog-showtoc' => 'Fa molongö tî münä (tî âlêmbëtï sô ayeke na surä otâ)',
 'tog-rememberpassword' => 'Da bê na sênyîmbâ tî mbï (asï {{PLURAL:$1|längö|längö}}) $1',
 'tog-watchcreations' => 'Âlêmbëtï sô mbï sâra, zîa nî kûê na yâ tî molongö tî mbï tî bängö-pekô.',
 'tog-watchdefault' => 'Âlêmbëtï sô mbï sepe, zîa nî kûê na yâ tî molongö tî mbï tî bängö-pekô.',
@@ -39,7 +36,6 @@ $messages = array(
 'tog-minordefault' => 'Tî sêtîa nî, sûngi âsepesû kûê töngana kêtê sepesû',
 'tog-previewontop' => 'Tanda piabängö-nî na ndöbê tî zuka tî sepesû',
 'tog-previewonfirst' => 'Fa piabängö kôzo sepesû',
-'tog-nocache' => 'Zî höndëngö-lêmbëtï na kpëlidimbä',
 'tog-enotifwatchlistpages' => '¨To na mbï mbëtïsînga töngana mbênî lêmbetï asanzêe na yâ tî molongö tî mbï tî bängö-pekô.',
 'tog-enotifusertalkpages' => 'To na mbï mbëtïsînga töngana mbênî lêmbëtë asanzêe na yâ tî dalisoro tî mbï',
 'tog-enotifminoredits' => 'To na mbï mbëtïsînga lâkûê sô mbênî kêtê sänzëmä asï na yâ tî âlêmbëtï tî mbï.',
index 8a355f2..87f6958 100644 (file)
@@ -161,7 +161,6 @@ $messages = array(
 'vector-action-protect' => 'Ḥbu',
 'vector-action-undelete' => 'Rard may mayḥiydn',
 'vector-action-unprotect' => 'Ḥiyd aḥbu',
-'vector-simplesearch-preference' => 'Mmurzm immalatn n icnubcn lan atig (I Vector waḥdut )',
 'vector-view-create' => 'Skert',
 'vector-view-edit' => 'Ara',
 'vector-view-history' => 'Mel amzruy',
index 57b9345..e216380 100644 (file)
@@ -16,6 +16,7 @@
  * @author Meno25
  * @author Pasanbhathiya2
  * @author Romaine
+ * @author Sahan.ssw
  * @author Singhalawap
  * @author Thushara
  * @author චතුනි අලහප්පෙරුම
@@ -231,6 +232,7 @@ $messages = array(
 'tog-noconvertlink' => 'සබැඳියන්ගේ ශීර්ෂ පෙරැළීම අක්‍රීය කරන්න',
 'tog-norollbackdiff' => 'පුනරාවර්තනයක් කිරීමෙන් පසු වෙනස්වීම් අත්හරින්න',
 'tog-useeditwarning' => 'මා සංස්කරණ පිටුවක් සුරකිනු නොලැබූ වෙනස්කිරීම් සමඟ අතහැර යන විට අවවාද කරන්න',
+'tog-prefershttps' => 'සැම විටම ඇතුළු වීමේදී ආරක්ෂාකාරී ජාලයක් භාවිතා කරන්න',
 
 'underline-always' => 'සැමවිටම කරන්න',
 'underline-never' => 'කිසිවිටෙක නොකරන්න',
@@ -354,7 +356,6 @@ $messages = array(
 'vector-action-protect' => 'ආරක්‍ෂණය',
 'vector-action-undelete' => 'මකාදැමීම අවලංගු කරන්න',
 'vector-action-unprotect' => 'ආරක්ෂණ තත්වය වෙනස් කරන්න',
-'vector-simplesearch-preference' => 'සුළු කළ සෙවුම් බාරය (වෙක්ටර් තීමය සඳහා පමණි)',
 'vector-view-create' => 'තනන්න',
 'vector-view-edit' => 'සංස්කරණය',
 'vector-view-history' => 'ඉතිහාසය නරඹන්න',
@@ -517,6 +518,11 @@ $1",
 # General errors
 'error' => 'දෝෂය',
 'databaseerror' => 'දත්ත-ගබඩා දෝෂය',
+'databaseerror-text' => 'දත්ත ගබඩාවේ විමසුමට දෝෂයක් මතු වී ඇත.මෙය මෘදුකාංගයේ දෝෂයක් ඇති බව පෙන්නුම් කරයි.',
+'databaseerror-textcl' => 'දත්ත ගබඩාවේ විමසුමට දෝෂයක් මතු වී ඇත.',
+'databaseerror-query' => 'විමසුම: $1',
+'databaseerror-function' => 'ශ්‍රිතය:$1',
+'databaseerror-error' => 'දෝෂය: $1',
 'laggedslavemode' => "'''අවවාදයයි:''' මෑත යාවත්කාලීන කිරීම් මෙම පිටුවෙහි අඩංගු නොවීමට ඉඩ ඇත.",
 'readonly' => 'දත්තසංචිතය අගුළුලා ඇත',
 'enterlockreason' => 'අවුරා දැමීමට හේතුවක් සපයන අතරතුර, ඇවිරීම මුදාහැරීමට බලාපොරොත්තු වන කාලසීමාව නිමානය කර දක්වන්න',
@@ -581,6 +587,9 @@ $2',
 'ns-specialprotected' => 'විශේෂ පිටු සංස්කරණය කිරීම සිදු කල නොහැක.',
 'titleprotected' => "මෙම ශීර්ෂ-නාමය තැනීම  [[User:$1|$1]] විසින් වාරණය කොට ඇත.
 මේ සඳහා  ''$2''  හේතුව දක්වා ඇත.",
+'filereadonlyerror' => '"$2"දත්ත ගොනුවේ කියවීමට පමණක් ඇති ආකාරයට ඇති නිසා "$1" ගොනුව සංස්කරණය කල නොහැක.
+
+මෙය අගුලු දැමූ පරිගණක පරිපාලක "$3" හේතුව ඉදිරිපත්කර ඇත.',
 'exception-nologin' => 'ප්‍රවිෂ්ට වී නොමැත',
 
 # Virus scanner
@@ -589,16 +598,16 @@ $2',
 'virus-unknownscanner' => 'නොහඳුනන ප්‍රතිවයිරසයක්:',
 
 # Login and logout pages
-'logouttext' => "'''ඔබ දැන් ගිණුමෙන් නික්මී ඇත.'''
+'logouttext' => '<strong>ඔබ දැන් ගිණුමෙන් නික්මී ඇත.</strong>
 
-ඔබට නිර්නාමිකව {{SITENAME}} කටයුතු කරගෙන යාහැක, නැතහොත් පෙර පරිශීලක ලෙස හෝ වෙනත් පරිශීලකයෙකු ලෙස <span class='plainlinks'>[$1 නැවත ගිණුමක‍ට පිවිසිය හැක]</span>.
-ඔබගේ බ්‍රවුසරයෙහි පූර්වාපේක්‍ෂී සංචිතය (කෑෂය) පිරිසිදුකරන තෙක්, සමහරක් පිටු විසින් ඔබ තවදුරටත් පිවිසී ඇති බවක් දිගටම පෙන්නුම් කිරීමට ඉඩ ඇත.",
+ඔබගේ බ්‍රවුසරයෙහි පූර්වාපේක්‍ෂී සංචිතය (කෑෂය) පිරිසිදුකරන තෙක්, සමහරක් පිටු විසින් ඔබ තවදුරටත් පිවිසී ඇති බවක් දිගටම පෙන්නුම් කිරීමට ඉඩ ඇත.',
 'welcomeuser' => 'ආයුබෝවන්, $1!',
 'welcomecreation-msg' => 'ඔබගේ ගිණුම තනා ඇත.
 ඔබගේ [[Special:Preferences|{{SITENAME}} අභිරුචීන්]] නෙස් කිරීමට අමතක නොකරන්න.',
 'yourname' => 'පරිශීලක නාමය:',
 'userlogin-yourname' => 'පරිශීලක නම',
 'userlogin-yourname-ph' => 'ඔබගේ පරිශීලක නම ඇතුළු කරන්න',
+'createacct-another-username-ph' => 'ඔබගේ පරිශීලක නම ඇතුළු කරන්න',
 'yourpassword' => 'මුරපදය:',
 'userlogin-yourpassword' => 'මුර පදය',
 'userlogin-yourpassword-ph' => 'ඔබගේ මුර පදය ඇතුළු කරන්න',
@@ -628,9 +637,14 @@ $2',
 'gotaccount' => 'දැනටමත් ගිණුමක් තිබේද? $1.',
 'gotaccountlink' => 'පිවිසෙන්න',
 'userlogin-resetlink' => 'ඔබේ පිවිසුම් තොරතුරු අමතකද?',
+'userlogin-resetpassword-link' => 'ඔබේ මුරපදය නැති වුනාද?',
 'helplogin-url' => 'Help:ප්‍රවිෂ්ට වීම',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ප්‍රවිෂ්ට වීමට උදවු වන්න]]',
+'userlogin-loggedin' => 'ඔබ දැනටමත් {{GENDER:$1|}} ලෙස පිවිසී ඇත.
+නව පරිශීලකයෙකු ලෙස ඇතුළු වීමට පහත ආකෘතිය පුරවන්න.',
+'userlogin-createanother' => 'තවත් ගිණුමක් ආරම්භ කරන්න',
 'createacct-join' => 'ඔබගේ තොරතුරු පහත ඇතුළු කරන්න.',
+'createacct-another-join' => 'නව ගිණුමේ දත්ත පහත ඇතුළු කරන්න.',
 'createacct-emailrequired' => 'වි-තැපෑල ලිපිනය',
 'createacct-emailoptional' => 'වි-තැපෑල ලිපිනය (විකල්ප)',
 'createacct-email-ph' => 'ඔබගේ වි-තැපෑල ලිපිනය ඇතුළු කරන්න',
@@ -707,7 +721,7 @@ $2',
 'cannotchangeemail' => 'මෙම විකියේ ගිණුම් විද්‍යුත් ලිපිනය වෙනස් කල නොහැකිය.',
 'emaildisabled' => 'මෙම අඩවියට විද්‍යුත්-තැපැල් යැවිය නොහැක.',
 'accountcreated' => 'ගිණුම තනන ලදි',
-'accountcreatedtext' => '[[{{ns:පරිශීලක}}:$1|$1]] ([[{{ns:පරිශීලක සාකච්ඡාව}}:$1|සාකච්ඡාව]]) සඳහා පරිශීලක ගිණුම තනා ඇත.',
+'accountcreatedtext' => '[[{{ns:User}}:$1|$1]]  ([[{{ns:User talk}}:$1|talk]]) සඳහා පරිශීලක ගිණුම තනා ඇත.',
 'createaccount-title' => '{{SITENAME}} සඳහා ගිණුම තැනීම',
 'createaccount-text' => 'කිසියම් අයෙකු, "$2" නමින් හා, "$3" යන මුර-පදය යොදමින්,  ඔබගේ විද්‍යුත්-තැපැල් ලිපිනය සඳහා {{SITENAME}} ($4) හි ගිණුමක් තනා ඇත.
 ඔබ දැන් ගිණුම‍ට පිවිස, ඔබගේ මුර-පදය වෙනස් කල යුතුව ඇත.
@@ -719,10 +733,16 @@ $2',
 'login-abort-generic' => 'ඔබගේ පිවිසීම අසාර්ථකයි - අතහැර දමනලදී',
 'loginlanguagelabel' => 'භාෂාව: $1',
 'suspicious-userlogout' => 'නිෂ්ක්‍රමණය සඳහා ඔබගේ අයැදුම නිෂ්ප්‍රභා කෙරුනේ එය යොමු කොට ඇත්තේ භින්න(කැඩුනු) බ්‍රවුසරයකින් හෝ නිවේෂණය කෙරෙමින් පවතින ප්‍රොක්සියක් වෙතින් යැයි බැලූ බැල්මට පෙනෙන බැවිනි.',
+'createacct-another-realname-tip' => 'සැබෑ නාමය හෙළි කිරීම වෛකල්පිකයි.
+ඔබ විසින් එය හෙළි කල හොත්, ඔබගේ කෘතීන් සඳහා ඔබහට කතෘ-බුහුමන් පිරිනැමීමට එය භාවිතා කරනු ඇත.',
+'pt-login' => 'පිවිසෙන්න',
+'pt-createaccount' => 'ගිණුමක් තනන්න',
+'pt-userlogout' => 'නික්මීම',
 
 # Email sending
 'php-mail-error-unknown' => 'php mail() ශ්‍රිතයේ හඳුනානොගත් ගැටළුවකි',
 'user-mail-no-addy' => 'විද්‍යුත් තැපැල් ලිපිනයක් නොමැතිව විද්‍යුත් තැපැල් පණිවුඩයක් යැවීමට උත්සහ දරා ඇත.',
+'user-mail-no-body' => 'හිස් හෝ ඉතා කෙටි පෙළක් සහිත ඊ-තැපෑලක් යැවීමට උත්සාහ කර ඇත.',
 
 # Change password dialog
 'changepassword' => 'මුරපදය වෙනස් කරන්න',
@@ -735,17 +755,26 @@ $2',
 'retypenew' => 'නව මුර-පදය නැවත ඇතුළු කරන්න:',
 'resetpass_submit' => 'මුර-පදය පූරණය කොට ඉන් පසු ප්‍රවිෂ්ට වන්න',
 'changepassword-success' => 'ඔබගේ මුර-පදය සාර්ථක ලෙස වෙනස් කරන ලදී!',
+'changepassword-throttled' => 'ඔබ විසින් මෑතදී  පමණට වඩා වාර ගණනක් පිවිසීමෙහි උත්සාහයන් දරා ඇත.
+යළි උත්සාහ කිරීමට පෙර $1 වේලාවක් රැඳී සිටින්න.',
 'resetpass_forbidden' => 'මුර-පදයන් වෙනස් කිරීම  සිදු කල නොහැක',
 'resetpass-no-info' => 'මෙම පිටුව සෘජු ලෙස පරිශීලනය කෙරුමට ඔබ පළමු ප්‍රවිෂ්ට විය යුතුය.',
 'resetpass-submit-loggedin' => 'මුර-පදය වෙනස්කරන්න',
 'resetpass-submit-cancel' => 'අත් හරින්න',
 'resetpass-wrong-oldpass' => 'තාවකාලික හෝ වත්මන් මුර-පදය අනීතිකයි.
 ඔබ දැනටමත් සාර්ථක ලෙස ඔබගේ මුර-පදය වෙනස් කොට හෝ නව තාවකාලික මුර-පදයක් ඉල්ලා සිට හෝ ඇතිවා විය හැක.',
+'resetpass-recycled' => 'කරුණාකර දැනට පවතින මුරපදයට වෙනස් මුරපදයක් යොදන්න.',
+'resetpass-temp-emailed' => 'ඔබ තාවකාලික ඊ-තැපැල් කේතයක් මඟින් ඇතුළු වී ඇත.
+ඇතුළු වීම අවසන් කිරීමට නව මුරපදයක් මෙතන ඇතුළු කරන්න.',
 'resetpass-temp-password' => 'තාවකාලික මුර-පදය:',
+'resetpass-abort-generic' => 'මුරපදය වෙනස් කිරීම විස්තීරණය මඟින් වලකා ඇත.',
+'resetpass-expired' => 'ඔබගේ මුරපදය කල් ඉකුත්වී ඇත.කරුණාකර නව මුරපදයක් සකස් කරන්න.',
+'resetpass-expired-soft' => 'ඔබගේ මුරපදය කල් ඉකුත්වී ඇති අතර එය නැවත සකස් කල යුතුය.කරුණාකර දැන් මුරපදයක් තෝරන්න.නවත්තන්න click කිරීමෙන් එය පසුව සකස් කල හැකිය.',
 
 # Special:PasswordReset
 'passwordreset' => 'මුරපදය වෙනස් කරන්න',
 'passwordreset-text-one' => 'තාවකාලික මුර-පදයක් විද්‍යුත් තැපෑළ මගින් ලබා ගැනීම සඳහා මෙම පෝරමය සම්පූර්ණ කරන්න.',
+'passwordreset-text-many' => '{{PLURAL:$1|තාවකාලික මුරපදයක් ඊ-තැපෑල හරහා ගෙන්වා ගැනීමට එක් ක්ෂේත්‍රයක් පුරවන්න}}',
 'passwordreset-legend' => 'මුරපදය යළි පිහිටුවන්න',
 'passwordreset-disabled' => 'මෙම විකියෙහි මුර පද ප්‍රත්‍යාරම්භ කිරීම් අක්‍රීය කොට ඇත.',
 'passwordreset-emaildisabled' => 'විද්‍යුත්  තැපැල් පහසුකම මෙම විකි ය සඳහා අවලංගු කොට ඇත.',
@@ -762,11 +791,17 @@ $2
 
 {{PLURAL:$3|මෙම තාවකාලික මුරපදය|මෙම තාවකාලික මුරපද}} {{PLURAL:$5|එක් දිනයක්|දින $5 ක්}} ගෙවුනු විට ඉකුත් වනු ඇත.
 ඔබ දැන් ප්‍රවිෂ්ට වී නව මුරපදයක් තෝරාගත යුතුයි. වෙන යම් අයෙක් මෙම ඉල්ලීම කර ඇත්නම් හෝ, ඔබගේ මුල් මුරපදය ඔබගේ මතකයට පැමිණ ඇති නම් හා, එය වෙනස් කිරීමට ඔබ හට තවදුරටත් අවශ්‍ය නොවේ නම්, ඔබ විසින් මෙම පණිවුඩය නොසලකා හැර පැරණි මුරපදය තවදුරටත් පාවිච්චි කළ හැක.',
+'passwordreset-emailtext-user' => '{{SITENAME}} හි පරිශීලක $1,{{SITENAME}}($4)සඳහා මුරපදය යලි පිහිටුවීමට ඉල්ලා ඇත.
+
+$2
+
+{{PLURAL:$3|මෙම මුරපදය|මෙම මුරපද}}{{PLURAL:$5|එක් දිනකින්|දවස්$5කින්}}කල් ඉකුත් වනු ඇත.
+ඔබ දැන් ඇතුළු වී නව මුරපදයක් තේරිය යුතුය.මෙම ඉල්ලීම වෙන කෙනෙකු විසින් හෝ ඔබට ඔබගේ මුල් මුරපදය මතක නම් හෝ ඔබ තව දුරටත් එය වෙනස් කිරීමට අදහස් නොකරයි නම් හෝ ඔබ මෙම පනිවිඩය නොසලකාහැර ඔබගේ පැරණි මුරපදය භාවිතා කරන්න.',
 'passwordreset-emailelement' => 'පරිශීලක නාමය: $1
 තාවකාලික මුරපදය: $2',
 'passwordreset-emailsent' => 'මුර-පදය නැවත සකස් කිරීම පිළිබඳව විද්‍යුත් තැපෑලක් යවන ලදී.',
 'passwordreset-emailsent-capture' => 'මුර-පදය වෙනස් කිරීම පිළිබඳව විද්‍යුත් තැපෑලක් යවන ලදී, එය පහත දැක්වේ.',
-'passwordreset-emailerror-capture' => 'සිහිකැඳවුම් ඊ-තැපෑල ජනිත කරනු ලැබූ අතර, එය පහත දැක්වේ, නමුත් එය පරිශීලකයාට යැවීම අසාර්ථක වුනි: $1',
+'passwordreset-emailerror-capture' => 'සිහිකැඳවුම් ඊ-තැපෑල ජනිත කරනු ලැබූ අතර, එය පහත දැක්වේ, නමුත් එය {{GENDER:$2|}}පරිශීලකයාට යැවීම අසාර්ථක වුනි: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'විද්‍යුත් තැපැල් ලිපිනය වෙනස් කරන්න',
@@ -779,6 +814,8 @@ $2
 'changeemail-password' => 'ඔබේ {{SITENAME}} මුරපදය:',
 'changeemail-submit' => 'විද්‍යුත් තැපෑල  වෙනස් කරන්න',
 'changeemail-cancel' => 'අවලංගු කරන්න',
+'changeemail-throttled' => 'ඔබ විසින් මෑතදී  පමණට වඩා වාර ගණනක් පිවිසීමෙහි උත්සාහයන් දරා ඇත.
+යළි උත්සාහ කිරීමට පෙර $1 වේලාවක් රැඳී සිටින්න.',
 
 # Edit page toolbar
 'bold_sample' => 'තදකුරු පෙළ',
@@ -942,10 +979,10 @@ $2
 ''' හිමිකම් ඇවුරුණු දේ අනවසරයෙන් ප්‍රකාශ කිරිමෙන් වලකින්න!'''",
 'longpageerror' => "'''දෝෂය: ඔබ සපයා ඇති පෙළ  {{PLURAL:$1|එක් කිලෝ බයිටයක්|කිලෝ බයිට් $1 ක්}} දිගු වන අතර, අනුමත උපරිමය වන  {{PLURAL:$2|එක් කිලෝ බයිටය |කිලෝ බයිට $2  }} ඉක්මවයි.'''
 එය සුරැකිය නොහැක.",
-'readonlywarning' => "'''අවවාදයයි: නඩත්තු කටයුතු සඳහා දත්ත-සංචිතය අවහිරකර ඇති බැවින් ඔබගේ සංස්කරණයන් දැන්මම සුරැකීමට ඔබ හට නොහැක.
-à¶\94බ à¶­à·\94ටà·\94 à¶±à¶¸à·\8a, à¶\9aපà·\8f-පà·\83à·\94à·\80-à¶\87ලà·\80à·\93මà¶\9aà·\8a (cut-n-paste) à¶¸à¶\9cà·\92නà·\8a à¶´à·\99à·\85 à·\80à·\99නතà·\8a à¶´à·\99à·\85 à¶\9cà·\9cනà·\94à·\80à¶\9aට à¶±à¶\82à·\80à·\8f à¶´à·\83à·\94à·\80 à·\83à·\94රà·\90à¶\9aà·\93මට à·\84à·\90à¶\9a.'''
+'readonlywarning' => '<strong>අවවාදයයි: නඩත්තු කටයුතු සඳහා දත්ත-සංචිතය අවහිරකර ඇති බැවින් ඔබගේ සංස්කරණයන් දැන්මම සුරැකීමට ඔබ හට නොහැක.
+à¶\94බ à¶­à·\94ටà·\94 à¶±à¶¸à·\8a, à¶´à·\92ටපතà·\8a à¶\9aර -පà·\83à·\94à·\80-à¶\87ලà·\80à·\93මà¶\9aà·\8a (copy-n-paste) à¶¸à¶\9cà·\92නà·\8a à¶´à·\99à·\85 à·\80à·\99නතà·\8a à¶´à·\99à·\85 à¶\9cà·\9cනà·\94à·\80à¶\9aට à¶±à¶\82à·\80à·\8f à¶´à·\83à·\94à·\80 à·\83à·\94රà·\90à¶\9aà·\93මට à·\84à·\90à¶\9a.</strong>
 
-එය ඇවුරූ පරිපාලක විසින් ඒ සඳහා දී ඇති පැහැදිලි කිරීම මෙසේය: $1",
+එය ඇවුරූ පරිපාලක විසින් ඒ සඳහා දී ඇති පැහැදිලි කිරීම මෙසේය: $1',
 'protectedpagewarning' => "\"'අවවාදයයි: පරිපාලක වරප්‍රසාද හිමි අයට පමණක් සංස්කරණය කලහැකි වන පරිදි මෙම පිටුව අවහිරකර ඇත.'''
 පරිශීලනය සඳහා ආසන්නතම සටහන පහත දක්වා ඇත.",
 'semiprotectedpagewarning' => "'''සටහන:''' ලේඛනගත පරිශීලකයන්ට පමණක් සංස්කරණය කල හැකි පරිදි මෙම පිටුව අවහිරකර ඇත.
@@ -988,6 +1025,7 @@ $2
 'invalid-content-data' => 'වලංගු නොවන අන්තර්ගත දත්ත',
 'editwarning-warning' => 'අවධානයට: මෙම පිටුවෙන් නික්ම යාම ඔබ සිදු කළ වෙනස්කම් නැතිවී යෑමට හේතු විය හැක.
 ඔබ ප්‍රවිෂ්ටවී ඇත්නම්, ඔබගේ වරණයන්වල "සංසකරණය කිරීම්" කොටසේ ඇති මෙම අනතුරු ඇඟවීම අක්‍රීය කළ හැක.',
+'editpage-notsupportedcontentformat-title' => 'අන්තර්ගත සකැස්ම ක්‍රියා නොකරයි',
 
 # Content models
 'content-model-wikitext' => 'විකිපෙළ',
@@ -1106,8 +1144,8 @@ $3 විසින් සපයා ඇති හේතුව ''$2'' වේ",
 'revdelete-hide-text' => 'සංශෝධන පෙළ සඟවන්න',
 'revdelete-hide-image' => 'ගොනු අන්තර්ගතය සඟවන්න',
 'revdelete-hide-name' => 'ක්‍රියාව හා ඉලක්කය සඟවන්න',
-'revdelete-hide-comment' => 'සංස්කරණ පරිකථනය සඟවන්න',
-'revdelete-hide-user' => 'සංස්කාරකගේ පරිශීලක නාමය/IP ලිපිනය සඟවන්න',
+'revdelete-hide-comment' => 'සංස්කරණ පරිකථනය',
+'revdelete-hide-user' => 'සංස්කාරකගේ පරිශීලක නාමය/IP ලිපිනය',
 'revdelete-hide-restricted' => 'අනෙකුන් මෙන්ම පරිපාලකවරුන් ගෙන්ද මෙම දත්ත යටපත්කරන්න',
 'revdelete-radio-same' => '(වෙනස් නොකරන්න)',
 'revdelete-radio-set' => 'සඟවනලද',
@@ -1184,11 +1222,13 @@ $1",
 
 # Diffs
 'history-title' => '$1:  සංශෝධන ඉතිහාසය',
+'difference-title-multipage' => '"$1" හා "$2" පිටු අතර වෙනස',
 'difference-multipage' => 'පිටු අතර වෙනස',
 'lineno' => '$1 පේළිය:',
 'compareselectedversions' => 'තෝරාගත් සංශෝධන සසඳන්න',
 'showhideselectedversions' => 'තෝරාගත් සංශෝධන පෙන්වන්න/සඟවන්න',
 'editundo' => 'අහෝසිය',
+'diff-empty' => '(වෙනසක් නොමැත)',
 'diff-multi-manyusers' => '(පරිශීලකයන් $2 කට වඩා වැඩි ගණනකගේ ආසන්න පුනරීක්‍ෂණ $1ක් පෙන්වා නොමැත)',
 
 # Search results
@@ -1205,7 +1245,7 @@ $1",
 'shown-title' => 'එක් පිටුවකට {{PLURAL:$1|ප්‍රතිඵලයක්|ප්‍රතිඵල $1 ක්}} බැගින් පෙන්වන්න',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) නරඹන්න',
 'searchmenu-exists' => "'''මෙම විකියෙහි \"[[:\$1]]\" ලෙස නම් කර ඇති පිටුවක් ඇත.'''",
-'searchmenu-new' => "'''මෙම විකියෙහි \"[[:\$1]]\" පිටුව තනන්න!'''",
+'searchmenu-new' => '<strong>පිටුව තනන්න "[[:$1]]" මෙම විකියෙහි!</strong> {{PLURAL:$2|0=|ඔබගේ සෙවුමට හසුවූ පිටුව බලන්න.|සෙවූ ප්‍රතිපල බලන්න.}}',
 'searchprofile-articles' => 'අන්තර්ගත පිටු',
 'searchprofile-project' => 'උදවු හා ව්‍යාපෘති පිටු',
 'searchprofile-images' => 'බහුමාධ්‍ය',
@@ -1221,6 +1261,7 @@ $1",
 'search-result-score' => 'අදාළතාව: $1%',
 'search-redirect' => '($1 යළි-යොමු කරන්න)',
 'search-section' => '($1 ඡේදය)',
+'search-file-match' => '(ගොනු දත්ත සැසදේ)',
 'search-suggest' => 'ඔබ අදහස් කළේ මෙයද: $1',
 'search-interwiki-caption' => 'සොයුරු ව්‍යාපෘති',
 'search-interwiki-default' => '$1 වෙතින් ප්‍රතිඵල:',
@@ -1328,7 +1369,7 @@ HTML ටැගයන් පිරික්සන්න.',
 'gender-unknown' => 'හෙළි නොකරයි',
 'gender-male' => 'පුරුෂ',
 'gender-female' => 'ස්ත්‍රී',
-'prefs-help-gender' => 'අත්‍යවශ්‍ය නැත: මෘදුකාංග විසින් නිවැරැදි ආමන්ත්‍රනය සඳහා භාවිතා කෙරෙයි.
+'prefs-help-gender' => 'මà·\99ම à·\83à¶\82à·\83à·\8aà¶\9aරණය à¶\85තà·\8aâ\80\8dයà·\80à·\81à·\8aâ\80\8dය à¶±à·\90ත: à¶¸à·\98දà·\94à¶\9aà·\8fà¶\82à¶\9c à·\80à·\92à·\83à·\92නà·\8a à¶±à·\92à·\80à·\90රà·\90දà·\92 à¶\86මනà·\8aතà·\8aâ\80\8dරනය à·\83ඳà·\84à·\8f à¶·à·\8fà·\80à·\92තà·\8f à¶\9aà·\99රà·\99යà·\92.
 මෙම තොරතුර ප්‍රජාවට විවෘතය.',
 'email' => 'විද්‍යුත් තැපෑල',
 'prefs-help-realname' => 'සැබෑ නාමය හෙළි කිරීම වෛකල්පිකයි.
@@ -1343,6 +1384,8 @@ HTML ටැගයන් පිරික්සන්න.',
 'prefs-dateformat' => 'දින ආකෘතිය',
 'prefs-timeoffset' => 'වේලා හිලව්ව',
 'prefs-advancedediting' => 'ප්‍රධාන විකල්පයන්',
+'prefs-editor' => 'සංස්කාරක',
+'prefs-preview' => 'පෙරදසුන',
 'prefs-advancedrc' => 'වැඩිදුර සැකසුම් තෝරාගැනීම',
 'prefs-advancedrendering' => 'වැඩිදුර සැකසුම් තෝරාගැනීම',
 'prefs-advancedsearchoptions' => 'ප්‍රගත විකල්පයන්',
@@ -1350,7 +1393,9 @@ HTML ටැගයන් පිරික්සන්න.',
 'prefs-displayrc' => 'දර්ශන සැකසුම් තෝරාගැනීම',
 'prefs-displaysearchoptions' => 'විකල්ප පෙන්වන්න',
 'prefs-displaywatchlist' => 'විකල්ප පෙන්වන්න',
+'prefs-tokenwatchlist' => 'ටෝකනය',
 'prefs-diffs' => 'වෙනස',
+'prefs-help-prefershttps' => 'ඔබගේ අභිරුචිය මීළඟ ඇතුළු වීමේ සිට ක්‍රියාත්මක වනු ඇත.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'විද්‍යුත්-තැපැල් ලිපිනය අනීතික බවක් පෙනෙයි.',
@@ -1510,6 +1555,7 @@ HTML ටැගයන් පිරික්සන්න.',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|වෙනස්වීම|වෙනස්වීම්}}',
+'enhancedrc-history' => 'ඉතිහාසය',
 'recentchanges' => 'මෑත වෙනස්කිරීම්',
 'recentchanges-legend' => '‍නව වෙනස්වීම් සැකසුම් තෝරාගැනීම',
 'recentchanges-summary' => 'මෙම පිටුවේ විකියට සිදුකල ඉතා මෑත වෙනස්වීම් පසුහඹන්න.',
@@ -1522,11 +1568,23 @@ HTML ටැගයන් පිරික්සන්න.',
 'rcnotefrom' => "'''$2''' න් පසු සිදුවී ඇති වෙනස්කම් මෙහි පහත දැක්වේ ('''$1''' ක ප්‍රමාණයක උපරිමයක් පෙන්වා ඇත).",
 'rclistfrom' => '$1 සිට බලපැවැත්වෙන මෑත වෙනස්වීම් පෙන්වන්න',
 'rcshowhideminor' => 'සුළු සංස්කරණ $1',
+'rcshowhideminor-show' => 'පෙන්වන්න',
+'rcshowhideminor-hide' => 'සඟවන්න',
 'rcshowhidebots' => 'රොබෝ $1',
+'rcshowhidebots-show' => 'පෙන්වන්න',
+'rcshowhidebots-hide' => 'සඟවන්න',
 'rcshowhideliu' => 'ලේඛනගත පරිශීලකයෝ $1',
+'rcshowhideliu-show' => 'පෙන්වන්න',
+'rcshowhideliu-hide' => 'සඟවන්න',
 'rcshowhideanons' => 'නිර්නාමික පරිශීලකයන් $1',
+'rcshowhideanons-show' => 'පෙන්වන්න',
+'rcshowhideanons-hide' => 'සඟවන්න',
 'rcshowhidepatr' => 'පරික්‍ෂා කර බැලූ සංස්කරණයන් $1',
+'rcshowhidepatr-show' => 'පෙන්වන්න',
+'rcshowhidepatr-hide' => 'සඟවන්න',
 'rcshowhidemine' => 'මගේ සංස්කරණයන් $1',
+'rcshowhidemine-show' => 'පෙන්වන්න',
+'rcshowhidemine-hide' => 'සඟවන්න',
 'rclinks' => 'අවසන් දින $2 තුලදී සිදුවී ඇති අවසන් වෙනස්වීම් $1 පෙන්නුම් කරන්න<br />$3',
 'diff' => 'වෙනස',
 'hist' => 'ඉති',
@@ -1542,6 +1600,7 @@ HTML ටැගයන් පිරික්සන්න.',
 'newsectionsummary' => '/* $1 */ නව ඡේදය',
 'rc-enhanced-expand' => 'විස්තර පෙන්වන්න',
 'rc-enhanced-hide' => 'විස්තර සඟවන්න',
+'rc-old-title' => 'මුලින් "$1" ලෙස සකස් කර ඇත.',
 
 # Recent changes linked
 'recentchangeslinked' => 'සහසම්බන්ධිත වෙනස්වීම්',
@@ -1559,7 +1618,7 @@ HTML ටැගයන් පිරික්සන්න.',
 'reuploaddesc' => 'උඩුගත කිරීම අත්හැරදමා උඩුගත කිරීම් ආකෘති පත්‍රය වෙත යන්න',
 'upload-tryagain' => 'වෙනස් කරන ලද ගොනු විස්තරය ඉදිරිපත් කරන්න',
 'uploadnologin' => 'පිවිසී නැත (Not logged in)',
-'uploadnologintext' => 'ගොනු උඩුගත කිරීමට පෙර ඔබ  [[Special:UserLogin|ප්‍රවිෂ්ට වී]] සිටිය යුතුය.',
+'uploadnologintext' => 'ගොනු උඩුගත කිරීමට පෙර ඔබ $1ට ප්‍රවිෂ්ට වී සිටිය යුතුය.',
 'upload_directory_missing' => 'උඩුගත ඩිරෙක්ටරිය ($1) සොයාගත නොහැකි අතර එය වෙබ්-සේවාදායකය විමින් තැනිය නොහැකි විය.',
 'upload_directory_read_only' => 'වෙබ්-සේවාදායකය විසින් උඩුගත ඩිරෙක්ටරිය ($1) වෙත ලිවීමට නොහැකි විය.',
 'uploaderror' => 'උඩුගත කිරීම් දෝෂයක්',
@@ -1800,8 +1859,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization බලන්න.',
 'upload_source_file' => ' (ඔබගේ පරිගණකයේ ගොනුවකි)',
 
 # Special:ListFiles
-'listfiles-summary' => 'මෙම විශේෂ පිටුවෙහි දැක්වෙන්නේ සියළු උඩුගත කල ගොනුය.
-When filtered by user, only files where that user uploaded the most recent version of the file are shown.',
+'listfiles-summary' => 'මෙම විශේෂ පිටුවෙහි දැක්වෙන්නේ සියළු උඩුගත කල ගොනුය.',
 'listfiles_search_for' => 'මාධ්‍ය නාමය සඳහා ගවේෂණය කරන්න:',
 'imgfile' => 'ගොනුව',
 'listfiles' => 'ගොනු ලැයිස්තුව',
@@ -1812,6 +1870,10 @@ When filtered by user, only files where that user uploaded the most recent versi
 'listfiles_size' => 'විශාලත්වය',
 'listfiles_description' => 'විස්තරය',
 'listfiles_count' => 'සංස්කරනය',
+'listfiles-show-all' => 'පරණ වර්ගවල පින්තූර එක් කරන්න.',
+'listfiles-latestversion' => 'වත්මන් අනුවාදය',
+'listfiles-latestversion-yes' => 'ඔව්',
+'listfiles-latestversion-no' => 'නැත',
 
 # File description page
 'file-anchor-link' => 'ගොනුව',
@@ -1849,6 +1911,7 @@ When filtered by user, only files where that user uploaded the most recent versi
 'uploadnewversion-linktext' => 'මෙම ගොනුවෙහි නව අනුවාදයක් උඩුගත කරන්න',
 'shared-repo-from' => '$1 වෙතින්',
 'shared-repo' => 'හවුල් සුරක්ෂිතාගාරයකි',
+'upload-disallowed-here' => 'ඔබට මෙම ගොනුව උඩින් ලිවිය නොහැක.',
 
 # File reversion
 'filerevert' => '$1 ප්‍රතිවර්තනය කරන්න',
@@ -1903,6 +1966,12 @@ When filtered by user, only files where that user uploaded the most recent versi
 'randompage' => 'අහඹු පිටුව',
 'randompage-nopages' => 'පහත {{PLURAL:$2|නාමඅවකාශය|නාමඅවකාශ}}:$1 හි කිසිදු පිටුවක් නොමැත.',
 
+# Random page in category
+'randomincategory' => 'ප්‍රවර්ගයේ අහඹු පිටු',
+'randomincategory-invalidcategory' => '"$1" වලංගු ප්‍රවර්ග නාමයක් නොවේ.',
+'randomincategory-nopages' => ' [[:ප්‍රවර්ගය:$1|$1]] ප්‍රවර්ගයේ පිටු නොමැත.',
+'randomincategory-selectcategory-submit' => 'යන්න',
+
 # Random redirect
 'randomredirect' => 'අහුඹු යළි-යොමුකිරීම',
 'randomredirect-nopages' => '"$1" නාම-අවකාශයෙහි යළි-යොමුවීම් නොමැත.',
@@ -1928,6 +1997,10 @@ When filtered by user, only files where that user uploaded the most recent versi
 'statistics-users-active-desc' => 'පසුගිය {{PLURAL:$1|දිනය|දින $1}} තුලදී කිසියම් ක්‍රියාවක් සිදු කල පරිශීලකයන්',
 'statistics-mostpopular' => 'බෙහෙවින් නරඹනු ලබන පිටු',
 
+'pageswithprop-prop' => 'ගුණ නාමය:',
+'pageswithprop-submit' => 'යන්න',
+'pageswithprop-prophidden-binary' => 'ද්විමය ගුණ අගය සැඟවී ($1)',
+
 'doubleredirects' => 'ද්විත්ව යළි-යොමුකිරීම්',
 'doubleredirectstext' => 'අනෙකුත් යළි-යොමුවීම් පිටුවලට යළි-යොමුවන පිටුවල ලැයිස්තුවක් මෙම පිටුවේ දැක්වේ.
 එක් එක් පේළියක අඩංගු වන්නේ පළමු හා දෙවන යළි-යොමුවීම් වලට සබැඳි හා ඒ සමග පළමු යළි-යොමුව එල්ල වන්නාවූ, සාමාන්‍යයෙන් "සත්‍ය" ඉලක්ක පිටුව වන, දෙවන යළි-යොමුවේ ඉලක්කයයි.<del>කපා හැරි</del> නිවේශිතයන් පිලිබඳ ගැටළු විසඳා ඇත.',
@@ -1988,11 +2061,19 @@ When filtered by user, only files where that user uploaded the most recent versi
 'protectedpages-indef' => 'අනිශ්චිත ආරක්ෂණයන් පමණයි',
 'protectedpages-cascade' => 'තීරු-දර්ශන ආරක්ෂණයන් පමණයි',
 'protectedpagesempty' => 'මෙම පරාමිතීන් හා සමග සැලකූ කල,  කිසිදු පිටුවක් දැනට ආරක්ෂිත වී නොමැත.',
+'protectedpages-page' => 'පිටුව',
+'protectedpages-expiry' => 'ඉකුත් වන්නේ',
+'protectedpages-performer' => 'පරිශීලකයා සුරැකීම',
+'protectedpages-params' => 'ආරක්ෂා පරාමිතිය',
+'protectedpages-reason' => 'හේතුව',
+'protectedpages-unknown-timestamp' => 'අඥාත',
+'protectedpages-unknown-performer' => 'නොදන්නා පරිශීලක',
 'protectedtitles' => 'ආරක්‍ෂිත ශීර්ෂයන්',
 'protectedtitlesempty' => 'මෙම පරාමිතීන් හා සමග සැලකූ කල, කිසිදු ශීර්ෂයක් දැනට ආරක්ෂිත වී නොමැත.',
 'listusers' => 'පරිශීලක ලැයිස්තුව',
 'listusers-editsonly' => 'සංස්කරණයන් සිදුකර ඇති පරිශීලකයන් පමණක් පෙන්වන්න',
 'listusers-creationsort' => 'තැනූ දින අනුව සුබෙදන්න',
+'listusers-desc' => 'අවරෝහණ පිළිවෙලට සකස් කරන්න',
 'usereditcount' => ' {{PLURAL:$1|සංස්කරණ එකකි|සංස්කරණ $1 කි}}',
 'usercreated' => '$1 දින $2 වේලාවේදී {{GENDER:$3|තනන ලදි}}',
 'newpages' => 'නව පිටු',
@@ -2112,6 +2193,7 @@ When filtered by user, only files where that user uploaded the most recent versi
 'mailnologin' => 'යායුතු ලිපිනය නොමැත',
 'mailnologintext' => 'අනෙකුත් පරිශීලකයන්හට  විද්‍යුත්-තැපැල් යැවුමට පෙරාතුව, ඔබ [[Special:UserLogin|ප්‍රවිෂ්ට වී]], ඔබගේ  [[Special:Preferences|අභිරුචියන්හි]]  නීතික විද්‍යුත්-තැපැල් ලිපිනයක් සඳහන් කර තිබිය යුතුය.',
 'emailuser' => 'මෙම පරිශීලක වෙත විද්‍යුත්-ලිපියක් යවන්න',
+'emailuser-title-notarget' => ' පරිශීලකට විද්‍යුත්-ලිපියක් යවන්න',
 'emailpage' => ' පරිශීලකට විද්‍යුත්-ලිපියක් යවන්න',
 'emailpagetext' => 'මෙම පරිශීලකයා හට විද්‍යුත්-තැපෑල් පණිවුඩයක් යැවීම සඳහා මෙම ආකෘති පත්‍රය භාවිතා කිරීමට ඔබ හට හැක.
 ලබන්නා විසින් සෘජු ලෙස ඔබ හට පිළිතුරු එවනු හැකි වන පරිදි, ඔබ විසින් [[Special:Preferences|ඔබගේ පරිශීලක අභිරුචියන්]] හි ඇතුළත් කල විද්‍යුත්-තැපැල් ලිපිනය,  විද්‍යුත්-තැපෑලෙහි "වෙතින්" ලිපිනයෙහි පෙන්නුම් කරනු ඇත.',
index 8180932..63ebd3b 100644 (file)
@@ -447,7 +447,6 @@ $messages = array(
 'vector-action-protect' => 'Zamknúť',
 'vector-action-undelete' => 'Obnoviť',
 'vector-action-unprotect' => 'Zmeniť stav ochrany',
-'vector-simplesearch-preference' => 'Povoliť zjednodušené pole hľadania (iba pre tému Vector)',
 'vector-view-create' => 'Vytvoriť',
 'vector-view-edit' => 'Upraviť',
 'vector-view-history' => 'Zobraziť históriu',
index ba38fa5..33e9074 100644 (file)
@@ -737,6 +737,9 @@ Prosimo, počakajte $1, preden poskusite znova.',
 'suspicious-userlogout' => 'Vaša zahteva za odjavo je bila zavrnjena, saj kaže, da je bila poslana iz pokvarjenega brskalnika ali proxyja s predpomnilnikom.',
 'createacct-another-realname-tip' => 'Pravo ime ni obvezno.
 Če se ga odločite navesti, bo uporabljeno za priznavanje uporabnikovega dela.',
+'pt-login' => 'Prijava',
+'pt-createaccount' => 'Ustvari račun',
+'pt-userlogout' => 'Odjava',
 
 # Email sending
 'php-mail-error-unknown' => 'Neznana napaka v funkciji PHP mail()',
@@ -745,8 +748,7 @@ Prosimo, počakajte $1, preden poskusite znova.',
 
 # Change password dialog
 'changepassword' => 'Zamenjava gesla',
-'resetpass_announce' => 'Trenutno ste prijavljeni z začasno e-poštno kodo.
-Za zaključitev prijave, morate tukaj nastaviti novo geslo:',
+'resetpass_announce' => 'Za zaključitev prijave morate tukaj nastaviti novo geslo:',
 'resetpass_text' => '<!-- Namesto te vrstice vstavite besedilo -->',
 'resetpass_header' => 'Spremeni geslo',
 'oldpassword' => 'Staro geslo:',
@@ -762,8 +764,12 @@ Prosimo, počakajte $1, preden poskusite znova.',
 'resetpass-submit-cancel' => 'Prekliči',
 'resetpass-wrong-oldpass' => 'Neveljavno začano ali trenutno geslo.
 Morda ste že uspešno spremenili geslo ali pa ste zahtevali novo začasno geslo.',
+'resetpass-recycled' => 'Prosimo, ponastavite svoje geslo na nekaj drugega kot svoje trenutno geslo.',
+'resetpass-temp-emailed' => 'Trenutno ste prijavljeni z začasno kodo, poslano z e-pošto. Za zaključitev prijave morate tukaj nastaviti novo geslo:',
 'resetpass-temp-password' => 'Začasno geslo:',
 'resetpass-abort-generic' => 'Razširitev je prekinila spremembo gesla.',
+'resetpass-expired' => 'Vaše geslo je poteklo. Prosimo, nastavite novo geslo za prijavo.',
+'resetpass-expired-soft' => 'Vaše geslo je poteklo in ga morate ponastaviti. Prosimo, izberite novo geslo zdaj ali kliknite Prekliči, da ga ponastavite pozneje.',
 
 # Special:PasswordReset
 'passwordreset' => 'Ponastavitev gesla',
@@ -1622,11 +1628,23 @@ Ko vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo ra
 'rcnotefrom' => "Navedene so spremembe od '''$2''' dalje (prikazujem jih do '''$1''').",
 'rclistfrom' => 'Prikaži spremembe od $1 naprej',
 'rcshowhideminor' => '$1 manjša urejanja',
+'rcshowhideminor-show' => 'Prikaži',
+'rcshowhideminor-hide' => 'Skrij',
 'rcshowhidebots' => '$1 bote',
+'rcshowhidebots-show' => 'Prikaži',
+'rcshowhidebots-hide' => 'Skrij',
 'rcshowhideliu' => '$1 registrirane uporabnike',
+'rcshowhideliu-show' => 'Prikaži',
+'rcshowhideliu-hide' => 'Skrij',
 'rcshowhideanons' => '$1 brezimne uporabnike',
+'rcshowhideanons-show' => 'Prikaži',
+'rcshowhideanons-hide' => 'Skrij',
 'rcshowhidepatr' => '$1 pregledana urejanja',
+'rcshowhidepatr-show' => 'Prikaži',
+'rcshowhidepatr-hide' => 'Skrij',
 'rcshowhidemine' => '$1 moja urejanja',
+'rcshowhidemine-show' => 'Prikaži',
+'rcshowhidemine-hide' => 'Skrij',
 'rclinks' => 'Prikaži zadnjih $1 sprememb v zadnjih $2 dneh<br />$3',
 'diff' => 'prim',
 'hist' => 'zgod',
@@ -1758,6 +1776,7 @@ Poprosite koga, ki ima možnost ogleda podatkov zatrtih datotek, da preveri polo
 'php-uploaddisabledtext' => 'Nalaganje datotek je onemogočeno v PHP.
 Prosimo preverite file_uploads nastavitev.',
 'uploadscripted' => 'Datoteka vsebuje HTML- ali skriptno kodo, ki bi jo lahko brskalnik razlagal napačno.',
+'uploadinvalidxml' => 'XML v naloženi datoteki ne moremo razčleniti.',
 'uploadvirus' => 'Datoteka vsebuje virus!
 Podrobnosti: $1',
 'uploadjava' => 'Datoteka je datoteka ZIP, ki vsebuje javansko datoteko .class.
@@ -4132,6 +4151,4 @@ Pravzaprav razširi skoraj vse v dvojnih zavitih oklepajih.',
 'expand_templates_generate_rawhtml' => 'Prikaži surovi HTML',
 'expand_templates_preview' => 'Predogled',
 
-# Unknown messages
-'uploadinvalidxml' => 'XML v naloženi datoteki ne moremo razčleniti.',
 );
index d017102..d8d2c35 100644 (file)
@@ -319,7 +319,6 @@ Dov dorje värrhtoedimmie gååvnese bielieh, jallh [[Special:UserLogin|logge s
 'lineno' => 'Sïeve $1:',
 'compareselectedversions' => 'Mohtedidh veeljeme låhkoeh',
 'editundo' => 'ov-darjodh',
-'diff-multi' => '({{PLURAL:$1|Akte gaskese gïehtjedamme|$1 gaskese gïehtjedammeh}} vuesehte ijje.)',
 
 # Search results
 'searchresults' => 'Ohtsedh resultaateh',
@@ -364,7 +363,6 @@ Dov dorje värrhtoedimmie gååvnese bielieh, jallh [[Special:UserLogin|logge s
 'nchanges' => '$1 {{PLURAL:$1|värrhtoedimmie|värrhtoedimmieh}}',
 'recentchanges' => 'Männgan värrhtoedimmieh',
 'recentchanges-feed-description' => 'Dåeriedidh männgan värrhtoedimmie sïjse wiki meatan dïhte feed.',
-'rcnote' => "Vuelen vuesehte {{PLURAL:$1|dïhte männgan värrhtoedimmie|dah männgan '''$1''' värrhtoedimmieh}} nuelesne dah {{PLURAL:$2|männgan biejjie|männgan '''$2''' biejjieh}}, ihke $5, $4.",
 'rcnotefrom' => "Vuelelen vuesehte dah männgan '''$1''' värrhtoedimmieh männgan '''$2'''.",
 'rclistfrom' => 'Vuesehte orre värrhtoedimmieh aelkedh raejeste $1',
 'rcshowhideminor' => '$1 ohtje värrhtoedimmie',
@@ -634,7 +632,6 @@ Daaletje tjaeleste-vaarjelidh sïjsestäälninge ihke bielie '''$1''' lea:",
 'ipadressorusername' => 'IP Tjaalesijjie jallh nuhtjiennomme:',
 'ipbother' => 'Jeatjebh tïjje:',
 'ipboptions' => '2 täjmoe:2 hours,1 biejjie:1 day,3 biejjie:3 days,1 våhkoe:1 week,2 våhkoe:2 weeks,1 aske:1 month,3 aske:3 months,6 aske:6 months,1 jaepie:1 year,gietjieloeves:infinite',
-'ipbotheroption' => 'jeatjebh',
 'ipblocklist' => 'Lästoe bijjelen tjöödtjehtidh IP tjaalesijjieh jih nuhtjiennommeh',
 'ipblocklist-submit' => 'Ohtsedh',
 'blocklink' => 'tjöödtjehtidh',
index ecf7706..536882e 100644 (file)
@@ -161,7 +161,6 @@ $messages = array(
 'vector-action-protect' => 'Difaac',
 'vector-action-undelete' => 'Ha tirtirin',
 'vector-action-unprotect' => 'Bedel difaacida',
-'vector-simplesearch-preference' => 'Shid kuwa ugu fiican oo kuu soo jeedinaayo raadinta  (Jirka vector kaliya)',
 'vector-view-create' => 'Sameey',
 'vector-view-edit' => 'Wax ka bedel',
 'vector-view-history' => 'Itusi taariikhda',
@@ -1438,6 +1437,7 @@ Hadii faylka wax laga badalay sida oo markiisa hore ahaa, waxaa laga yaabaa in e
 # Auto-summaries
 'autosumm-blank' => 'Masaxay bogga',
 'autosumm-replace' => 'Wuxuu qoraalka ku badalay "$1"',
+'autoredircomment' => 'Bog loo bedeley [[$1]]',
 'autosumm-new' => 'Bog cusub: $1',
 
 # Watchlist editor
index 39677d6..e4c82b0 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Amire80
  * @author Andejkendej
  * @author Cradel
  * @author Dashohoxha
@@ -377,7 +378,6 @@ $messages = array(
 'vector-action-protect' => 'Mbroje',
 'vector-action-undelete' => 'Anullo fshirjen',
 'vector-action-unprotect' => 'Ndrysho mbrojtjen',
-'vector-simplesearch-preference' => 'Aktivizo kërkimin e thjeshtëzuar (vetëm për veshjen Vector)',
 'vector-view-create' => 'Krijo',
 'vector-view-edit' => 'Redakto',
 'vector-view-history' => 'Shiko historikun',
@@ -1527,7 +1527,7 @@ Kjo informatë është publike.',
 'rc_categories_any' => 'Të gjitha',
 'rc-change-size-new' => '$1 {{PLURAL:$1|bajt|bajtë}} pas ndryshimit',
 'newsectionsummary' => '/* $1 */ seksion i ri',
-'rc-enhanced-expand' => 'Trego detajet (kërkon JavaScript)',
+'rc-enhanced-expand' => 'Trego detajet',
 'rc-enhanced-hide' => 'Fshih detajet',
 'rc-old-title' => 'fillimisht i krijuar si "$1"',
 
@@ -2402,7 +2402,7 @@ $1',
 'mycontris' => 'Kontributet',
 'contribsub2' => 'Për $1 ($2)',
 'nocontribs' => 'Nuk ka asnjë ndryshim që përputhet me këto kritere.',
-'uctop' => ' (sipër)',
+'uctop' => '(aktual)',
 'month' => 'Nga muaji (dhe më herët):',
 'year' => 'Nga viti (dhe më herët):',
 
index fa0af78..3600d9c 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Serbian (Српски / Srpski)
+/** Serbian (српски / srpski)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Milicevic01
  * @author Misos
  * @author Terik
  * @author Жељко Тодоровић
 
 $fallback = 'sr-ec';
 $linkTrail = '/^([abvgdđežzijklljmnnjoprstćufhcčdžšабвгдђежзијклљмнњопрстћуфхцчџш]+)(.*)$/usD';
+
+$messages = array(
+# Vector skin
+'vector-view-viewsource' => '#REDIRECT[[MediaWiki:Vector-view-viewsource/sr-ec]]',
+
+# Edit pages
+'postedit-confirmation' => '',
+
+# Special:Log/newusers
+'newuserlogpage' => 'историја креирања корисника',
+'newuserlogpagetext' => 'Ово је историја скорашњих креирања корисника.',
+
+# Special:LinkSearch
+'linksearch' => '#REDIRECT[[MediaWiki:Linksearch/sr-ec]]',
+'linksearch-text' => '#REDIRECT[[MediaWiki:Linksearch-text/sr-ec]]',
+'linksearch-line' => '$1 повезана са $2',
+'linksearch-error' => 'Џокери могу да се појављују само на почетку домена.',
+
+# Contributions
+'uctop' => '‎',
+
+);
index 1b7fb33..a5b596f 100644 (file)
@@ -723,6 +723,7 @@ $1',
 # General errors
 'error' => 'Грешка',
 'databaseerror' => 'Грешка у бази података',
+'databaseerror-text' => 'Дошло је до грешке у упиту базе података. Можда је у питању програмска грешка.',
 'databaseerror-function' => 'Функција: $1',
 'databaseerror-error' => 'Грешка: $1',
 'laggedslavemode' => "'''Упозорење:''' страница је можда застарела.",
@@ -1479,7 +1480,8 @@ $1",
 'searcheverything-enable' => 'сви именски простори',
 'searchrelated' => 'повезано',
 'searchall' => 'све',
-'showingresults' => "Испод {{PLURAL:$1|је приказан '''1''' резултат|су приказана '''$1''' резултата|је приказано '''$1''' резултата}} почев од броја '''$2'''.",
+'showingresults' => 'Испод {{PLURAL:$1|је приказан <strong>1</strong> резултат|су приказана <strong>$1</strong> резултата|је приказано <strong>$1</strong> резултата}} почев од броја <strong>$2</strong>.',
+'showingresultsinrange' => 'Испод {{PLURAL:$1|је приказан <strong>1</strong> резултат|су приказана <strong>$1</strong> резултата|је приказано <strong>$1</strong> резултата}}, у распону од <strong>$2</strong> до <strong>$3</strong>.',
 'showingresultsnum' => "Испод {{PLURAL:$3|је приказан '''1''' резултат|су приказана '''$3''' резултата|је приказано '''$3''' резултата}} почев од броја '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Резултат '''$1''' од '''$3'''|Резултата '''$1 – $2''' од '''$3'''}} за '''$4'''",
 'search-nonefound' => 'Нема поклапања.',
@@ -1778,6 +1780,7 @@ $1",
 'recentchanges' => 'Скорашње измене',
 'recentchanges-legend' => 'Поставке скорашњих измена',
 'recentchanges-summary' => 'Пратите скорашње измене на овој страници.',
+'recentchanges-noresult' => 'Нема промена у задатом времену за задате критеријуме.',
 'recentchanges-feed-description' => 'Пратите скорашње измене уз помоћ овог довода.',
 'recentchanges-label-newpage' => 'Нова страница',
 'recentchanges-label-minor' => 'Мања измена',
@@ -2173,7 +2176,7 @@ $1',
 ** Кршење ауторских права
 ** Дупликати датотека',
 'filedelete-edit-reasonlist' => 'Уреди разлоге брисања',
-'filedelete-maintenance' => 'Брисање и враћање датотека је привремено онемогућено током одржавања.',
+'filedelete-maintenance' => 'Брисање и враћање датотека је привремено онемогућено због одржавања.',
 'filedelete-maintenance-title' => 'Не могу да обришем датотеку',
 
 # MIME search
@@ -2298,6 +2301,7 @@ $1',
 'protectedpages' => 'Заштићене странице',
 'protectedpages-indef' => 'само неограничене заштите',
 'protectedpages-cascade' => 'само преносиве заштите',
+'protectedpages-noredirect' => 'сакриј преусмерења',
 'protectedpagesempty' => 'Нема заштићених страница с овим параметрима.',
 'protectedtitles' => 'Заштићени наслови',
 'protectedtitlesempty' => 'Нема заштићених наслова с овим параметрима.',
@@ -2489,6 +2493,7 @@ $1',
 'watchmethod-list' => 'проверава се да ли има скорашњих измена у надгледаним страницама',
 'watchlistcontains' => 'Ваш списак надгледања садржи $1 {{PLURAL:$1|страницу|странице|страница}}.',
 'iteminvalidname' => 'Проблем са ставком „$1“. Неисправан назив.',
+'wlnote2' => 'Испод су приказане измене у {{PLURAL:$1|последњих један сат|последњих <strong>$1</strong> сата}} закључно са $2, $3.',
 'wlshowlast' => 'Прикажи последњих $1 сати, $2 дана, $3',
 'watchlist-options' => 'Поставке списка надгледања',
 
@@ -2579,6 +2584,7 @@ $UNWATCHURL
 Брисање таквих страница је ограничено да би се спречило случајно оптерећење сервера.',
 'delete-warning-toobig' => 'Ова страница има велику историју, преко $1 {{PLURAL:$1|измене|изменe|измена}}.
 Њено брисање може пореметити базу података, стога поступајте с опрезом.',
+'deleting-backlinks-warning' => "'''Упозорење:''' Бришете страницу која је укључена у друге странице или друге странице воде на њу.",
 
 # Rollback
 'rollback' => 'Врати измене',
@@ -2633,7 +2639,7 @@ $UNWATCHURL
 Ово су тренутне поставке странице '''$1''':",
 'protect-cascadeon' => 'Ова страница је тренутно заштићена јер се налази на {{PLURAL:$1|страници која има|страницама које имају}} преносиву заштиту.
 Можете да промените степен заштите, али то неће утицати на преносиву заштиту.',
-'protect-default' => 'Ð\94озволи свим корисницима',
+'protect-default' => 'Ð\94опÑ\83Ñ\88Ñ\82ено свим корисницима',
 'protect-fallback' => 'Дозвољено само корисницима са дозволом „$1“',
 'protect-level-autoconfirmed' => 'Допуштено само аутоматски потврђеним корисницима',
 'protect-level-sysop' => 'Допуштено само администраторима',
@@ -2739,7 +2745,7 @@ $1',
 'contributions-title' => 'Доприноси {{GENDER:$1|корисника|кориснице}} $1',
 'mycontris' => 'Доприноси',
 'contribsub2' => 'За {{GENDER:$3|$1}} ($2)',
-'nocontribs' => 'Ð\98змене ÐºÐ¾Ñ\98е Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ\80аÑ\98Ñ\83 Ð¾Ð²Ð¸Ð¼ Ñ\83Ñ\81ловима Ð½Ð¸Ñ\81Ñ\83 Ð¿Ñ\80онаÑ\92ене.',
+'nocontribs' => 'Ð\9dема Ð¸Ð·Ð¼ÐµÐ½Ð° ÐºÐ¾Ñ\98е Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ\80аÑ\98Ñ\83 Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¸Ð¼ ÐºÑ\80иÑ\82еÑ\80иÑ\98Ñ\83мима.',
 'uctop' => '(последња)',
 'month' => 'од месеца (и раније):',
 'year' => 'од године (и раније):',
@@ -3272,11 +3278,12 @@ $1',
 'pageinfo-length' => 'Дужина странице (у бајтовима)',
 'pageinfo-article-id' => 'ИД странице',
 'pageinfo-language' => 'Језик садржаја странице',
+'pageinfo-content-model' => 'Модел садржаја странице',
 'pageinfo-robot-policy' => 'Индексирање од стране робота',
 'pageinfo-robot-index' => 'Дозвољено',
 'pageinfo-robot-noindex' => 'Није дозвољено',
 'pageinfo-views' => 'Број прегледа',
-'pageinfo-watchers' => 'Ð\91Ñ\80оÑ\98 Ð½Ð°Ð´Ð³Ð»ÐµÐ´Ð°Ñ\87а Ñ\81Ñ\82Ñ\80аниÑ\86а',
+'pageinfo-watchers' => 'Ð\91Ñ\80оÑ\98 Ð½Ð°Ð´Ð³Ð»ÐµÐ´Ð°Ñ\87а Ñ\81Ñ\82Ñ\80аниÑ\86е',
 'pageinfo-few-watchers' => 'Мање од $1 {{PLURAL:$1|пратиоца|пратилаца}}',
 'pageinfo-redirects-name' => 'Број преусмерења на ову страницу',
 'pageinfo-subpages-name' => 'Подстранице ове странице',
@@ -4212,7 +4219,7 @@ $5
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Претрага дупликата',
-'fileduplicatesearch-summary' => 'Претрага дуплираних датотека према вредностима дисперзије.',
+'fileduplicatesearch-summary' => 'Претрага дуплираних датотека према хеш вредности.',
 'fileduplicatesearch-legend' => 'Претрага дупликата',
 'fileduplicatesearch-filename' => 'Назив датотеке:',
 'fileduplicatesearch-submit' => 'Претражи',
index 24766d4..d1b9c2b 100644 (file)
@@ -632,6 +632,7 @@ Spisak svih posebnih stranica nalazi se [[Special:SpecialPages|ovde]].',
 # General errors
 'error' => 'Greška',
 'databaseerror' => 'Greška u bazi podataka',
+'databaseerror-text' => 'Došlo je do greške u upitu baze podataka. Možda je u pitanju programska greška.',
 'laggedslavemode' => "'''Upozorenje:''' stranica je možda zastarela.",
 'readonly' => 'Baza podataka je zaključana',
 'enterlockreason' => 'Unesite razlog za zaključavanje, uključujući i vreme otključavanja',
@@ -1363,7 +1364,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'searcheverything-enable' => 'svi imenski prostori',
 'searchrelated' => 'povezano',
 'searchall' => 'sve',
-'showingresults' => "Ispod {{PLURAL:$1|je prikazan '''1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}} počev od broja '''$2'''.",
+'showingresults' => 'Ispod {{PLURAL:$1|je prikazan <strong>1</strong> rezultat|su prikazana <strong>$1</strong> rezultata|je prikazano <strong>$1</strong> rezultata}} počev od broja <strong>$2</strong>.',
+'showingresultsinrange' => 'Ispod {{PLURAL:$1|je prikazan <strong>1</strong> rezultat|su prikazana <strong>$1</strong> rezultata|je prikazano <strong>$1</strong> rezultata}}, u rasponu od <strong>$2</strong> do <strong>$3</strong>.',
 'showingresultsnum' => "Ispod {{PLURAL:$3|je prikazan '''1''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}} počev od broja '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|1=Rezultat '''$1''' od '''$3'''|Rezultata '''$1 – $2''' od '''$3'''}} za '''$4'''",
 'search-nonefound' => 'Nema poklapanja.',
@@ -1652,6 +1654,7 @@ Ako izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rad
 'recentchanges' => 'Skorašnje izmene',
 'recentchanges-legend' => 'Postavke skorašnjih izmena',
 'recentchanges-summary' => 'Pratite skorašnje izmene na ovoj stranici.',
+'recentchanges-noresult' => 'Nema promena u zadatom vremenu za zadate kriterijume.',
 'recentchanges-feed-description' => 'Pratite skorašnje izmene uz pomoć ovog dovoda.',
 'recentchanges-label-newpage' => 'Nova stranica',
 'recentchanges-label-minor' => 'Manja izmena',
@@ -2047,7 +2050,7 @@ Njen opis možete da izmenite na [$2 odgovarajućoj stranici].',
 ** Kršenje autorskih prava
 ** Duplikati datoteka',
 'filedelete-edit-reasonlist' => 'Uredi razloge brisanja',
-'filedelete-maintenance' => 'Brisanje i vraćanje datoteka je privremeno onemogućeno tokom održavanja.',
+'filedelete-maintenance' => 'Brisanje i vraćanje datoteka je privremeno onemogućeno zbog održavanja.',
 'filedelete-maintenance-title' => 'Ne mogu da obrišem datoteku',
 
 # MIME search
@@ -2165,6 +2168,7 @@ Sada je preusmerenje na [[$2]].',
 'protectedpages' => 'Zaštićene stranice',
 'protectedpages-indef' => 'samo neograničene zaštite',
 'protectedpages-cascade' => 'samo prenosive zaštite',
+'protectedpages-noredirect' => 'sakrij preusmerenja',
 'protectedpagesempty' => 'Nema zaštićenih stranica s ovim parametrima.',
 'protectedtitles' => 'Zaštićeni naslovi',
 'protectedtitlesempty' => 'Nema zaštićenih naslova s ovim parametrima.',
@@ -2356,6 +2360,7 @@ Buduće izmene ove stranice i njene stranice za razgovor biće navedene ovde.',
 'watchmethod-list' => 'proverava se da li ima skorašnjih izmena u nadgledanim stranicama',
 'watchlistcontains' => 'Vaš spisak nadgledanja sadrži $1 {{PLURAL:$1|stranicu|stranice|stranica}}.',
 'iteminvalidname' => 'Problem sa stavkom „$1“. Neispravan naziv.',
+'wlnote2' => 'Ispod su prikazane izmene u {{PLURAL:$1|poslednjih jedan sat|poslednjih <strong>$1</strong> sata}} zaključno sa $2, $3.',
 'wlshowlast' => 'Prikaži poslednjih $1 sati, $2 dana, $3',
 'watchlist-options' => 'Postavke spiska nadgledanja',
 
@@ -2436,6 +2441,7 @@ Pogledajte ''$2'' za više detalja.",
 Brisanje takvih stranica je ograničeno da bi se sprečilo slučajno opterećenje servera.',
 'delete-warning-toobig' => 'Ova stranica ima veliku istoriju, preko $1 {{PLURAL:$1|izmene|izmene|izmena}}.
 Njeno brisanje može poremetiti bazu podataka, stoga postupajte s oprezom.',
+'deleting-backlinks-warning' => "'''Upozorenje:''' Brišete stranicu koja je uključena u druge stranice ili druge stranice vode na nju.",
 
 # Rollback
 'rollback' => 'Vrati izmene',
@@ -2490,7 +2496,7 @@ Ovo su postavke stranice '''$1''':",
 Ovo su trenutne postavke stranice '''$1''':",
 'protect-cascadeon' => 'Ova stranica je trenutno zaštićena jer se nalazi na {{PLURAL:$1|stranici koja ima|stranicama koje imaju}} prenosivu zaštitu.
 Možete da promenite stepen zaštite, ali to neće uticati na prenosivu zaštitu.',
-'protect-default' => 'Dozvoli svim korisnicima',
+'protect-default' => 'Dopušteno svim korisnicima',
 'protect-fallback' => 'Dozvoljeno samo korisnicima sa dozvolom „$1“',
 'protect-level-autoconfirmed' => 'Dopušteno samo automatski potvrđenim korisnicima',
 'protect-level-sysop' => 'Dopušteno samo administratorima',
@@ -2596,7 +2602,7 @@ $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.',
+'nocontribs' => 'Nema izmena koje odgovaraju navedenim kriterijumima.',
 'uctop' => '(poslednja)',
 'month' => 'od meseca (i ranije):',
 'year' => 'od godine (i ranije):',
@@ -3128,11 +3134,12 @@ Ovo je verovatno izazvano vezom do spoljašnjeg sajta koji se nalazi na crnoj li
 'pageinfo-length' => 'Dužina stranice (u bajtovima)',
 'pageinfo-article-id' => 'ID stranice',
 'pageinfo-language' => 'Jezik sadržaja stranice',
+'pageinfo-content-model' => 'Model sadržaj stranice',
 'pageinfo-robot-policy' => 'Indeksiranje od strane robota',
 'pageinfo-robot-index' => 'Dozvoljeno',
 'pageinfo-robot-noindex' => 'Nije dozvoljeno',
 'pageinfo-views' => 'Broj pregleda',
-'pageinfo-watchers' => 'Broj nadgledača stranica',
+'pageinfo-watchers' => 'Broj nadgledača stranicе',
 'pageinfo-few-watchers' => 'Manje od $1 {{PLURAL:$1|pratioca|pratilaca}}',
 'pageinfo-redirects-name' => 'Broj preusmerenja na ovu stranicu',
 'pageinfo-subpages-name' => 'Podstranice ove stranice',
@@ -4050,7 +4057,7 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Pretraga duplikata',
-'fileduplicatesearch-summary' => 'Pretraga dupliranih datoteka prema vrednostima disperzije.',
+'fileduplicatesearch-summary' => 'Pretraga dupliranih datoteka prema heš vrednosti.',
 'fileduplicatesearch-legend' => 'Pretraga duplikata',
 'fileduplicatesearch-filename' => 'Naziv datoteke:',
 'fileduplicatesearch-submit' => 'Pretraži',
index 84f0a55..a7cde7e 100644 (file)
@@ -153,16 +153,13 @@ $magicWords = array(
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Poti strepi ondro den miti:',
-'tog-justify' => 'Fiti na ala tu sey',
 'tog-hideminor' => 'Kibri pikin kenki ini laste kenki',
 'tog-extendwatchlist' => 'Moro langa "Tan luku" réy',
 'tog-usenewrc' => 'Moro betre Laste Kenki (JavaScript)',
 'tog-numberheadings' => 'Gi den ede wan nomru sondro fu yepi',
 'tog-showtoolbar' => 'Sori Kenki-Wrokosani-barki (JavaScript)',
 'tog-editondblclick' => 'Naki tu tron fu kenki (JavaScript)',
-'tog-editsection' => 'Gi primisi fu kenki pisi-papira nanga [kenki]-miti',
 'tog-editsectiononrightclick' => "Gi primisi fu kenki pisi-papira nanga wan naki n'a leti-anu sey na tapu wan pisi-ede (JavaScript)",
-'tog-showtoc' => 'Sori san de (gi papira nanga moro leki 3 pisi-ede)',
 'tog-rememberpassword' => 'Memre mi psawortu (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'Tan luku den papira di mi meki',
 'tog-watchdefault' => 'Tan luku den papira di mi kenki',
@@ -618,7 +615,6 @@ A kan ben trowe efu dribi.
 'lineno' => 'Lini $1:',
 'compareselectedversions' => 'Luku den difrenti fu den versi di teki',
 'editundo' => "drai pot' baka",
-'diff-multi' => '(No e sori {{PLURAL:$1|wan versi|$1 versi}} na mindrisey.)',
 
 # Search results
 'searchresults' => 'Sukuleysi',
@@ -645,7 +641,6 @@ A kan ben trowe efu dribi.
 'rows' => 'Rei:',
 'columns' => 'Kolum:',
 'searchresultshead' => 'Suku',
-'resultsperpage' => 'Ris ies papira:',
 'stub-threshold' => 'Dupolo fu seti <a href="#" class="stub">stub</a>:',
 'recentchangesdays' => 'Teki fu dey tu libi si ini bakaseywan kenki:',
 'recentchangescount' => 'Teki fu peprewoysi ini bakaseywan kenki:',
index 821e75d..90f54a7 100644 (file)
@@ -192,7 +192,6 @@ $messages = array(
 'vector-action-protect' => 'Skutsje',
 'vector-action-undelete' => 'Wierhäärstaale',
 'vector-action-unprotect' => 'Siedenskuts annerje',
-'vector-simplesearch-preference' => 'Uutwiedede Säikfoarsleeke aktivierje (bloot Vector)',
 'vector-view-create' => 'Moakje',
 'vector-view-edit' => 'Beoarbaidje',
 'vector-view-history' => 'Versionsgeskichte',
index e801917..687b18c 100644 (file)
@@ -277,7 +277,6 @@ $messages = array(
 'vector-action-protect' => 'Konci',
 'vector-action-undelete' => 'Bolaykeun ngahapus',
 'vector-action-unprotect' => 'Robah protéksi',
-'vector-simplesearch-preference' => 'Aktipkeun saran pamaluruhan lengkep (ukur kulit Véktor)',
 'vector-view-create' => 'Jieun',
 'vector-view-edit' => 'Édit',
 'vector-view-history' => 'Témbongkeun jujutan',
index a51d384..c710c70 100644 (file)
@@ -864,6 +864,9 @@ Vänta $1 innan du försöker igen.',
 'suspicious-userlogout' => 'Din begäran om att logga ut nekades eftersom det ser ut som det skickades av en trasig webbläsare eller cachande proxy.',
 'createacct-another-realname-tip' => 'Riktiga namnet är valfritt.
 Om du väljer att ange det, kommer det användas för att tillskriva användaren för sitt arbete.',
+'pt-login' => 'Logga in',
+'pt-createaccount' => 'Skapa konto',
+'pt-userlogout' => 'Logga ut',
 
 # Email sending
 'php-mail-error-unknown' => 'Okänt fel i PHP:s mail()-funktion',
@@ -872,7 +875,7 @@ Om du väljer att ange det, kommer det användas för att tillskriva användaren
 
 # Change password dialog
 'changepassword' => 'Byt lösenord',
-'resetpass_announce' => 'Du loggade in med ett temporärt lösenord. För att slutföra inloggningen måste du välja ett nytt lösenord.',
+'resetpass_announce' => 'För att slutföra inloggningen måste du välja ett nytt lösenord.',
 'resetpass_text' => '<!-- Lägg till text här -->',
 'resetpass_header' => 'Ändra lösenord för konto',
 'oldpassword' => 'Gammalt lösenord:',
@@ -888,8 +891,13 @@ Vänta $1 innan du försöker igen.',
 'resetpass-submit-cancel' => 'Avbryt',
 'resetpass-wrong-oldpass' => 'Ogiltigt tillfälligt eller nuvarande lösenord.
 Du kanske redan har lyckats ändra ditt lösenord eller begärt ett nytt tillfälligt lösenord.',
+'resetpass-recycled' => 'Var god återställ ditt lösenord till någonting annat än ditt aktuella lösenord.',
+'resetpass-temp-emailed' => 'Du loggade in med en temporär kod som skickats via e-post.
+För att slutföra inloggningen måste du välja ett nytt lösenord här:',
 'resetpass-temp-password' => 'Tillfälligt lösenord:',
 'resetpass-abort-generic' => 'Lösenordsändring av har avbrutits av ett tillägg.',
+'resetpass-expired' => 'Ditt lösenord har gått ut. Var god välj ett nytt lösenord för att logga in.',
+'resetpass-expired-soft' => 'Ditt lösenord har gått ut och behöver återställas. Var god välj ett nytt lösenord nu eller klicka på avbryt för att återställa det senare.',
 
 # Special:PasswordReset
 'passwordreset' => 'Återställ lösenord',
@@ -1745,11 +1753,23 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'rcnotefrom' => "Nedan visas ändringar sedan '''$2''' (upp till '''$1''' ändringar visas).",
 'rclistfrom' => 'Visa ändringar från och med $1',
 'rcshowhideminor' => '$1 mindre ändringar',
+'rcshowhideminor-show' => 'Visa',
+'rcshowhideminor-hide' => 'Dölj',
 'rcshowhidebots' => '$1 robotar',
+'rcshowhidebots-show' => 'Visa',
+'rcshowhidebots-hide' => 'Dölj',
 'rcshowhideliu' => '$1 registrerade användare',
+'rcshowhideliu-show' => 'Visa',
+'rcshowhideliu-hide' => 'Dölj',
 'rcshowhideanons' => '$1 oinloggade användare',
+'rcshowhideanons-show' => 'Visa',
+'rcshowhideanons-hide' => 'Dölj',
 'rcshowhidepatr' => '$1 patrullerade redigeringar',
+'rcshowhidepatr-show' => 'Visa',
+'rcshowhidepatr-hide' => 'Dölj',
 'rcshowhidemine' => '$1 mina ändringar',
+'rcshowhidemine-show' => 'Visa',
+'rcshowhidemine-hide' => 'Dölj',
 'rclinks' => 'Visa senaste $1 ändringar under de senaste $2 dygnen<br />$3',
 'diff' => 'skillnad',
 'hist' => 'historik',
@@ -1877,6 +1897,7 @@ Du borde be någon som kan se undanhållen fildata att granska situationen innan
 'uploaddisabledtext' => 'Uppladdning av filer är avstängd.',
 'php-uploaddisabledtext' => 'PHP filuppladdningar är avaktiverade. Kolla inställningarna för file_uploads.',
 'uploadscripted' => 'Denna fil innehåller HTML eller script som felaktigt kan komma att tolkas av webbläsare.',
+'uploadinvalidxml' => 'XML-koden i den uppladdade filen kunde inte tolkas.',
 'uploadvirus' => 'Filen innehåller virus! Detaljer: $1',
 'uploadjava' => 'Filen är en ZIP-fil som innehåller en Java .class fil.
 Uppladdning av Java filer tillåts inte, eftersom de kan orsaka att säkerhetsbegränsningar kan kringgås.',
@@ -4242,6 +4263,4 @@ Annars kan du använda det enkla formuläret nedan. Din kommentar kommer att lä
 'expand_templates_generate_rawhtml' => 'Visa rå HTML',
 'expand_templates_preview' => 'Förhandsvisning',
 
-# Unknown messages
-'uploadinvalidxml' => 'XML-koden i den uppladdade filen kunde inte tolkas.',
 );
index f8943f6..e36071a 100644 (file)
@@ -285,7 +285,6 @@ $messages = array(
 'vector-action-protect' => 'Linda',
 'vector-action-undelete' => 'Rudisha',
 'vector-action-unprotect' => 'Badilisha ulinzi',
-'vector-simplesearch-preference' => 'Kuwezesha madokezo imara ya tafutaji (umbo la Vector tu)',
 'vector-view-create' => 'Anzisha',
 'vector-view-edit' => 'Hariri',
 'vector-view-history' => 'Fungua historia',
index d012453..d1e150d 100644 (file)
@@ -226,7 +226,6 @@ $messages = array(
 'vector-action-protect' => 'Zawrzij',
 'vector-action-undelete' => 'Wćep',
 'vector-action-unprotect' => 'Uodymkńij',
-'vector-simplesearch-preference' => 'Używej zaawansowane podpowjedźi sznupańo (ino lo skůrki Wektor)',
 'vector-view-create' => 'Stwůrz',
 'vector-view-edit' => 'Sprowjej',
 'vector-view-history' => 'Uobocz gyszichta',
index 7d19b8c..9f41dbf 100644 (file)
@@ -249,7 +249,6 @@ $messages = array(
 'vector-action-protect' => 'காக்கவும்',
 'vector-action-undelete' => 'நீக்கத்தை நிறுத்து',
 'vector-action-unprotect' => 'காப்பை மாற்று',
-'vector-simplesearch-preference' => 'எளிதாக்கப்பட்ட தேடுதல் பட்டையை செயற்படுத்தவும் (வெக்டர் தோல் மட்டும்)',
 'vector-view-create' => 'உருவாக்கவும்',
 'vector-view-edit' => 'தொகு',
 'vector-view-history' => 'வரலாற்றைக் காட்டவும்',
index 8009328..6027b74 100644 (file)
@@ -17,16 +17,13 @@ $fallback = 'kn';
 $messages = array(
 # User preference toggles
 'tog-underline' => 'ಲಿಂಕ್’ಲೆದ ತಿರ್ತ್ ಗೆರೆ(ಅಂಡರ್ ಲೈನ್) ಪಾಡ್’ಲೆ',
-'tog-justify' => 'ಪಾರಗ್ರಾಫ್’ದ ಕಡೆನ್ ಸರಿ ಮಲ್ಪುಲೆ',
 'tog-hideminor' => 'ಎಲ್ಯೆಲ್ಯ ಬದಲಾವಣೆಲೆನ್ ದೆಂಗಾಲೆ',
 'tog-extendwatchlist' => 'ಅನ್ವಯಿಸುನಂಚಿನ ಪೂರಾ ಬದಲಾವಣೆಲೆನ್ ತೊಜ್ಪಾಯೆರೆ ಪಟ್ಟಿನ್(ವಾಚ್ ಲಿಸ್ಟ್) ಬುಡ್ಪಾಲೆ.',
 'tog-usenewrc' => 'ಪರಿಷ್ಕರಿಸ್ ನ ಬದಲಾವಣೆಲು (JavaScript)',
 'tog-numberheadings' => 'ಹೆಡ್ಡಿಂಗ್’ಲೆಗ್ ಸಂಖ್ಯೆಲೆನ್ ತೊಜ್ಪಾಲೆ',
 'tog-showtoolbar' => 'ಸಂಪಾದನೆದ ಉಪಕರಣನ್(ಎಡಿಟ್ ಟೂಲ್ ಬಾರ್) ತೊಜ್ಪಾಲೆ (JavaScript)',
 'tog-editondblclick' => 'ರಡ್ಡ್ ಸರಿ ಕ್ಲಿಕ್ ಮಲ್ತ್’ದ್ ಪುಟೊನು ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ (JavaScript)',
-'tog-editsection' => 'ಪುಟೊತ ಭಾಗಲೊನ್ [ಸಂಪಾದನೆ] ಲಿಂಕ್’ಲೆನ್ ಒತ್ತ್’ದ್ ಬದಲ್ ಮನ್ಪುಲೆಕ ಉಪ್ಪಡ್',
 'tog-editsectiononrightclick' => 'ಪುಟೊತ ವಿಭಾಗೊಲೆನ್ ಐತ ಹೆಡ್ಡಿಂಗ್’ನ್ ರೈಟ್ ಕ್ಲಿಕ್ ಮಲ್ತ್’ದ್ ಸಂಪಾದನೆ ಮಲ್ಪುಲೆಕ ಉಪ್ಪಡ್ (JavaScript)',
-'tog-showtoc' => 'ಪರಿವಿಡಿನ್(ಟೇಬಲ್ ಆಫ್ ಕಂಟೆಂಟ್ಸ್) ತೊಜ್ಪಾಲೆ (ಮೂಜೆರ್ದ್ ಜಾಸ್ತಿ ಹೆಡ್ಡಿಂಗ್ ಉಪ್ಪುನಂಚಿನ ಪುಟೊಲೆಗ್)',
 'tog-rememberpassword' => 'ಈ ಕಂಪ್ಯೂಟರ್’ಡ್ ಎನ್ನ ಲಾಗಿನ್ನ್ ನೆನಪುಡು ದೀಲ (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'ಯಾನ್ ಶುರು ಮಲ್ತಿನ ಪುಟೊಲೆನ್ ಯೆನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೇರ್ಪಾಲೆ',
 'tog-watchdefault' => 'ಯಾನ್ ಸಂಪಾದನೆ ಮನ್ಪುನಂಚಿನ ಪುಟೊಲೆನ್ ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೇರ್ಪಾಲೆ',
@@ -162,7 +159,6 @@ $messages = array(
 'vector-action-protect' => 'ಸ೦ರಕ್ಷಿಸಾಲೆ',
 'vector-action-undelete' => 'ಮಾಜಾವಡೆ',
 'vector-action-unprotect' => 'ಬದಲಾವಣೆನ್ ರಕ್ಷಿಸಾಲೆ',
-'vector-simplesearch-preference' => 'ಬಲಗೊಳಿಸಾನ ಹುಡುಕು ಸಲಹೆಲೆನ್ ಸಕ್ರಿಯಗೊಳಿಸಾಲೆ',
 'vector-view-create' => ' ಸುರು ಮಲ್ಪುಲೆ',
 'vector-view-edit' => 'ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ',
 'vector-view-history' => 'ಇತಿಹಾಸೊನು ತೂಲೆ',
index 81d554b..943848d 100644 (file)
@@ -159,12 +159,12 @@ $messages = array(
 'tog-watchdefault' => 'నేను మార్చే పేజీలను మరియు దస్త్రాలను నా వీక్షణ జాబితాకు చేర్చు',
 'tog-watchmoves' => 'నేను తరలించిన పేజీలను మరియు దస్త్రాలను నా వీక్షణ జాబితాకు చేర్చు',
 'tog-watchdeletion' => 'నేను తొలగించిన పేజీలను మరియు దస్త్రాలను నా వీక్షణ జాబితాకు చేర్చు',
-'tog-minordefault' => 'à°ªà±\8dà°°à°¤à±\8dà°¯à±\87à°\95à°\82à°\97à°¾ à°¤à±\86à°²à±\81పనà°\82తవరà°\95à±\82 నా మార్పులను చిన్న మార్పులుగా గుర్తించు',
-'tog-previewontop' => 'వ్యాసం మార్పుల మునుచూపు సవరించు పెట్టె పైన చూపు',
+'tog-minordefault' => 'డిఫాలà±\8dà°\9fà±\81à°\97à°¾ నా మార్పులను చిన్న మార్పులుగా గుర్తించు',
+'tog-previewontop' => 'వ్యాసం మార్పుల మునుచూపును ఎడిట్ పెట్టె పైన చూపు',
 'tog-previewonfirst' => 'మొదటి  దిద్దుబాటు చేసినపుడు వ్యాసపు మునుచూపు చూపించు',
 'tog-enotifwatchlistpages' => 'నా వీక్షణాజాబితా లోని పేజీ లేదా దస్త్రం మారినపుడు నాకు ఈ-మెయిలు పంపు',
 'tog-enotifusertalkpages' => 'నా చర్చా పేజీలో మార్పులు జరిగినపుడు నాకు ఈ-మెయిలు పంపు',
-'tog-enotifminoredits' => 'à°ªà±\87à°\9cà±\80à°²à±\81 à°®à°°à°¿à°¯à±\81 à°¦à°¸à±\8dà°¤à±\8dరాలà°\95à±\81 జరిగే చిన్న మార్పులకు కూడా నాకు ఈ-మెయిలును పంపు',
+'tog-enotifminoredits' => 'à°ªà±\87à°\9cà±\80à°²à±\81 à°®à°°à°¿à°¯à±\81 à°¦à°¸à±\8dà°¤à±\8dరాలలà±\8b జరిగే చిన్న మార్పులకు కూడా నాకు ఈ-మెయిలును పంపు',
 'tog-enotifrevealaddr' => 'గమనింపు మెయిళ్ళలో నా ఈ-మెయిలు చిరునామాను చూపించు',
 'tog-shownumberswatching' => 'వీక్షకుల సంఖ్యను చూపు',
 'tog-oldsig' => 'ప్రస్తుత సంతకం:',
@@ -174,8 +174,8 @@ $messages = array(
 'tog-watchlisthideown' => 'నా మార్పులను వీక్షణా జాబితాలో చూపించొద్దు',
 'tog-watchlisthidebots' => 'బాట్లు చేసిన మార్పులను నా వీక్షణా జాబితాలో చూపించొద్దు',
 'tog-watchlisthideminor' => 'చిన్న మార్పులను నా వీక్షణా జాబితాలో చూపించొద్దు',
-'tog-watchlisthideliu' => 'à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aà°¿à°¨ à°µà°¾à°¡à±\81à°\95à°°à±\81à°² మార్పులను వీక్షణా జాబితాలో చూపించకు',
-'tog-watchlisthideanons' => 'à°\85à°\9cà±\8dà°\9eాత à°µà°¾à°¡à±\81à°\95à°°à±\81à°² à°®à°¾à°°à±\8dà°ªà±\81లనà±\81 à°µà°¿క్షణా జాబితాలో చూపించకు',
+'tog-watchlisthideliu' => 'లాà°\97à°¿à°¨à±\8d à°\90à°¨ à°µà°¾à°¡à±\81à°\95à°°à±\81à°²à±\81 à°\9aà±\87à°¸à±\87 మార్పులను వీక్షణా జాబితాలో చూపించకు',
+'tog-watchlisthideanons' => 'à°\85à°\9cà±\8dà°\9eాత à°µà°¾à°¡à±\81à°\95à°°à±\81à°² à°®à°¾à°°à±\8dà°ªà±\81లనà±\81 à°µà±\80క్షణా జాబితాలో చూపించకు',
 'tog-watchlisthidepatrolled' => 'నిఘా ఉన్న మార్పులను వీక్షణజాబితా నుంచి దాచిపెట్టు',
 'tog-ccmeonemails' => 'నేను ఇతర వాడుకరులకు పంపించే ఈ-మెయిళ్ల కాపీలను నాకు కూడా పంపు',
 'tog-diffonly' => 'తేడాల కింద, పేజీలోని సమాచారాన్ని చూపించొద్దు',
@@ -186,12 +186,12 @@ $messages = array(
 
 'underline-always' => 'ఎల్లప్పుడూ',
 'underline-never' => 'ఎప్పటికీ వద్దు',
-'underline-default' => 'à°\85à°²à°\82à°\95ారపà±\81 à°²à±\87దా à°µà°¿à°¹à°¾à°°à°¿à°£à°¿ అప్రమేయం',
+'underline-default' => 'à°°à±\82à°ªà±\81 à°¯à±\8aà°\95à±\8dà°\95 à°²à±\87దా à°µà°¿à°¹à°¾à°°à°¿à°£à°¿ à°¯à±\8aà°\95à±\8dà°\95 అప్రమేయం',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'దిద్దుబాటు పెట్టె ఫాంటు శైలి:',
 'editfont-default' => 'విహరిణి అప్రమేయం',
-'editfont-monospace' => 'à°®à±\8bà°¨à±\8bà°¸à±\8dà°ªà±\87à°¸à±\81డ్ ఫాంట్',
+'editfont-monospace' => 'à°®à±\8bà°¨à±\8bà°¸à±\8dà°ªà±\87à°¸à±\8dâ\80\8dడ్ ఫాంట్',
 'editfont-sansserif' => 'సాన్స్-సెరిఫ్ ఫాంటు',
 'editfont-serif' => 'సెరిఫ్ ఫాంటు',
 
@@ -272,7 +272,7 @@ $messages = array(
 'category-article-count' => '{{PLURAL:$2|ఈ వర్గంలో కింది పేజీ ఒకటే ఉంది.|ఈ వర్గంలో కింది {{PLURAL:$1|పేజీ ఉంది|$1 పేజీలున్నాయి}}, మొత్తం $2 పేజీలలో.}}',
 'category-article-count-limited' => 'ప్రస్తుత వర్గంలో కింది {{PLURAL:$1|పేజీ ఉంది|$1 పేజీలున్నాయి}}.',
 'category-file-count' => '{{PLURAL:$2|ఈ వర్గంలో క్రింద చూపిస్తున్న ఒకే ఫైలు ఉంది.|ఈ వర్గంలో ఉన్న మొత్తం $2 పేజీలలో ప్రస్తుతం {{PLURAL:$1|ఒక ఫైలును|$1 ఫైళ్లను}} చూపిస్తున్నాము.}}',
-'category-file-count-limited' => 'ఈ వర్గం క్రింద చూపిస్తున్న {{PLURAL:$1|ఒక ఫైలు ఉంది|$1 ఫైళ్లు ఉన్నాయి}}.',
+'category-file-count-limited' => 'ఈ వర్గంలో కింద చూపిన {{PLURAL:$1|ఒక ఫైలు ఉంది|$1 ఫైళ్లు ఉన్నాయి}}.',
 'listingcontinuesabbrev' => '(కొనసాగింపు)',
 'index-category' => 'సూచీకరించిన పేజీలు',
 'noindex-category' => 'సూచీకరించని పేజీలు',
@@ -310,13 +310,13 @@ $messages = array(
 'vector-view-edit' => 'సవరించు',
 'vector-view-history' => 'చరిత్రను చూడండి',
 'vector-view-view' => 'చదువు',
-'vector-view-viewsource' => 'à°®à±\82లానà±\8dని à°\9aà±\82à°¡à°\82à°¡à°¿',
+'vector-view-viewsource' => 'à°®à±\82లానà±\8dని à°\9aà±\82పిà°\82à°\9aà±\81',
 'actions' => 'పనులు',
 'namespaces' => 'పేరుబరులు',
 'variants' => 'రకరకాలు',
 
 'navigation-heading' => 'మార్గదర్శకపు మెనూ',
-'errorpagetitle' => 'à°ªà±\8aరపాà°\9fà±\81',
+'errorpagetitle' => 'à°²à±\8bà°ªà°\82',
 'returnto' => 'తిరిగి $1కి.',
 'tagline' => '{{SITENAME}} నుండి',
 'help' => 'సహాయం',
@@ -370,7 +370,7 @@ $messages = array(
 'viewcount' => 'ఈ పేజీ {{PLURAL:$1|ఒక్క సారి|$1 సార్లు}} దర్శించబడింది.',
 'protectedpage' => 'సంరక్షణలోని పేజీ',
 'jumpto' => 'ఇక్కడికి గెంతు:',
-'jumptonavigation' => 'à°ªà±\87à°\9cà±\80à°\95à°¿ à°¸à°\82à°¬à°\82ధిà°\82à°\9aà°¿à°¨ à°²à°¿à°\82à°\95à±\81à°²à±\81',
+'jumptonavigation' => 'మారà±\8dà°\97à°¸à±\82à°\9aà±\80',
 'jumptosearch' => 'వెతుకు',
 'view-pool-error' => 'క్షమించండి, ప్రస్తుతం సర్వర్లన్నీ ఓవర్‌లోడ్ అయిఉన్నాయి.
 చాలామంది వాడుకరులు ఈ పేజీని చూస్తున్నారు.
@@ -379,7 +379,7 @@ $messages = array(
 $1',
 'pool-timeout' => 'తాళం కొరకు వేచివుండడానికి కాలపరిమితి అయిపోయింది',
 'pool-queuefull' => 'సమూహపు వరుస నిండుగా ఉంది',
-'pool-errorunknown' => 'à°\97à±\81à°°à±\8dà°¤à±\81à°¤à±\86లియని à°ªà±\8aరపాà°\9fà±\81',
+'pool-errorunknown' => 'à°¤à±\86లియని à°²à±\8bà°ªà°\82',
 
 # 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' => '{{SITENAME}} గురించి',
@@ -393,7 +393,7 @@ $1',
 'edithelp' => 'దిద్దుబాటు సహాయం',
 'helppage' => 'Help:సూచిక',
 'mainpage' => 'మొదటి పేజీ',
-'mainpage-description' => 'తలపà±\81à°\9f',
+'mainpage-description' => 'à°®à±\8aà°¦à°\9fà°¿ à°ªà±\87à°\9cà±\80',
 'policy-url' => 'Project:విధానం',
 'portal' => 'సముదాయ పందిరి',
 'portal-url' => 'Project:సముదాయ పందిరి',
@@ -410,15 +410,15 @@ $1',
 'ok' => 'సరే',
 'retrievedfrom' => '"$1" నుండి వెలికితీశారు',
 'youhavenewmessages' => 'మీకు $1 ఉన్నాయి ($2).',
-'youhavenewmessagesfromusers' => 'మీకు {{PLURAL:$3|మరో వాడుకరి|$3 వాడుకరుల}} నుండి $1 ($2).',
-'youhavenewmessagesmanyusers' => 'మీకు చాలా వాడుకరుల నుండి $1 ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|ఒక కొత్త సందేశం వచ్చింది|999=కొత్త సందేశాలు ఉన్నాయి}}',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|మీకు}} {{PLURAL:$3|మరో వాడుకరి|$3 వాడుకరుల}} నుండి  $1 ($2).',
+'youhavenewmessagesmanyusers' => 'మీకు చాలా వాడుకరుల నుండి $1 ఉన్నాయి ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|ఒక కొత్త సందేశం|999=కొత్త సందేశాలు}}',
 'newmessagesdifflinkplural' => 'చివరి {{PLURAL:$1|మార్పు|999=మార్పులు}}',
-'youhavenewmessagesmulti' => '$1లో మీకో సందేశం ఉంది',
+'youhavenewmessagesmulti' => '$1 లో మీకు కొత్త సందేశాలు ఉన్నాయి',
 'editsection' => 'మార్చు',
 'editold' => 'సవరించు',
 'viewsourceold' => 'మూలాన్ని చూడండి',
-'editlink' => 'సవరిà°\82చు',
+'editlink' => 'మారà±\8dచు',
 'viewsourcelink' => 'మూలాన్ని చూడండి',
 'editsectionhint' => 'విభాగాన్ని మార్చు: $1',
 'toc' => 'విషయ సూచిక',
@@ -431,10 +431,10 @@ $1',
 'restorelink' => '{{PLURAL:$1|ఒక తొలగించిన మార్పు|$1 తొలగించిన మార్పులు}}',
 'feedlinks' => 'ఫీడు:',
 'feed-invalid' => 'మీరు కోరిన ఫీడు సరైన రకం కాదు.',
-'feed-unavailable' => 'సిండికేషన్ ఫీడులేమీ అందుబాటులో లేవు.',
+'feed-unavailable' => 'సిండికేషన్ ఫీడులేమీ అందుబాటులో లేవు',
 'site-rss-feed' => '$1 RSS ఫీడు',
 'site-atom-feed' => '$1 ఆటమ్ ఫీడు',
-'page-rss-feed' => '"$1" ఆరెసెస్సు(RSS) ఫీడు',
+'page-rss-feed' => '"$1" RSS ఫీడు',
 'page-atom-feed' => '"$1" ఆటమ్ ఫీడు',
 'feed-atom' => 'యాటమ్',
 'red-link-title' => '$1 (పుట లేదు)',
@@ -450,7 +450,7 @@ $1',
 'nstab-image' => 'దస్త్రం',
 'nstab-mediawiki' => 'సందేశం',
 'nstab-template' => 'మూస',
-'nstab-help' => 'సహాయము',
+'nstab-help' => 'సహాయ పేజీ',
 'nstab-category' => 'వర్గం',
 
 # Main script and global functions
@@ -472,33 +472,33 @@ $1',
 'databaseerror-query' => 'క్వెరీ: $1',
 'databaseerror-function' => 'ఫంక్షన్: $1',
 'databaseerror-error' => 'లోపం: $1',
-'laggedslavemode' => 'హెచ్చరిక: పేజీలో ఇటీవల జరిగిన మార్పులు ఉండకపోవచ్చు.',
+'laggedslavemode' => '<strong>హెచ్చరిక:</strong> పేజీలో ఇటీవల జరిగిన మార్పులు ఉండకపోవచ్చు.',
 'readonly' => 'డేటాబేసు లాక్‌చెయ్యబడింది',
 'enterlockreason' => 'డేటాబేసుకు వేయబోతున్న లాకుకు కారణం తెలుపండి, దానితోపాటే ఎంతసమయం తరువాత ఆ లాకు తీసేస్తారో కూడా తెలుపండి',
 'readonlytext' => 'డేటాబేసు ప్రస్తుతం లాకు చేయబడింది. మార్పులు, చేర్పులు ప్రస్తుతం చెయ్యలేరు. మామూలుగా జరిగే నిర్వహణ కొరకు ఇది జరిగి ఉండవచ్చు; అది పూర్తి కాగానే తిరిగి మామూలుగా పనిచేస్తుంది.
 
 దీనిని లాకు చేసిన నిర్వాహకుడు ఇలా తెలియజేస్తున్నాడు: $1',
-'missing-article' => '"$1" $2 అనే పేజీ పాఠ్యం డేటాబేసులో దొరకలేదు.
+'missing-article' => '"$1" $2 à°\85à°¨à±\87 à°ªà±\87à°\9cà±\80 à°¯à±\8aà°\95à±\8dà°\95 à°ªà°¾à° à±\8dà°¯à°\82 à°¡à±\87à°\9fాబà±\87à°¸à±\81à°²à±\8b à°¦à±\8aà°°à°\95à°²à±\87à°¦à±\81.
 
-à°\95ాలదà±\8bà°·à°\82 à°ªà°\9fà±\8dà°\9fిన తేడా కోసం చూసినపుడుగానీ, తొలగించిన పేజీ చరితం కోసం చూసినపుడుగానీ ఇది సాధారణంగా జరుగుతుంది.
+à°\95ాలà°\82 à°\9aà±\86à°²à±\8dà°²ిన తేడా కోసం చూసినపుడుగానీ, తొలగించిన పేజీ చరితం కోసం చూసినపుడుగానీ ఇది సాధారణంగా జరుగుతుంది.
 
 ఒకవేళ అలా కాకపోతే, మీరో బగ్‌ను కనుక్కున్నట్టే.
-à°\88 URLà°¨à±\81 à°¸à±\82à°\9aà°¿à°¸à±\8dà°¤à±\82, à°¦à±\80à°¨à±\8dని à°\93 [[Special:ListUsers/sysop|నిరà±\8dవాహà°\95à±\81నిà°\95à°¿]] à°¤à±\86లియà°\9cà±\86à°¯à±\8dయండి.',
+à°\88 URLà°¨à±\81 à°¸à±\82à°\9aà°¿à°¸à±\8dà°¤à±\82, à°¦à±\80à°¨à±\8dని à°\93 [[Special:ListUsers/sysop|నిరà±\8dవాహà°\95à±\81నిà°\95à°¿]] à°¤à±\86లియà°\9cà±\87యండి.',
 'missingarticle-rev' => '(కూర్పు#: $1)',
 'missingarticle-diff' => '(తేడా: $1, $2)',
 'readonly_lag' => 'అనుచర (స్లేవ్) డేటాబేసు సర్వర్లు, ప్రధాన (మాస్టరు) సర్వరును అందుకునేందుకుగాను, డేటాబేసు ఆటోమాటిక్‌గా లాకు అయింది.',
 'internalerror' => 'అంతర్గత లోపం',
 'internalerror_info' => 'అంతర్గత లోపం: $1',
 'fileappenderrorread' => 'చేరుస్తున్నప్పుడు "$1"ని చదవలేకపోయాం.',
-'fileappenderror' => '"$1" à°¨à°¿ "$2" à°¤à±\8b à°\95à±\82à°°à±\8dà°\9aà°²à±\87à°\95à°ªà±\8bà°¤à±\81à°¨à±\8dà°¨ాం',
-'filecopyerror' => 'ఫైలు "$1"ని "$2"కు కాపీ చెయ్యటం కుదరలేదు.',
-'filerenameerror' => 'à°«à±\88à°²à±\81 "$1" à°ªà±\87à°°à±\81à°¨à±\81 "$2"à°\97à°¾ à°®à°¾à°°à±\8dà°\9aà°\9fà°\82 à°\95à±\81దరలà±\87à°¦à±\81.',
-'filedeleteerror' => 'à°«à±\88à°²à±\81 "$1"ని à°¤à±\80సివà±\87à°¯à°\9fà°\82 à°\95à±\81దరలà±\87à°¦à±\81.',
-'directorycreateerror' => '"$1" à°\85à°¨à±\87 à°¡à±\88à°°à±\86à°\95à±\8dà°\9fà°°à±\80ని à°¸à±\83à°·à±\8dà°\9fà°¿à°\82à°\9aà°²à±\87à°\95 à°ªà±\8bà°¤à±\81à°¨à±\8dనానà±\81.',
+'fileappenderror' => '"$1" à°¨à°¿ "$2" à°¤à±\8b à°\95à±\82à°°à±\8dà°\9aà°²à±\87à°\95à°ªà±\8bà°¯ాం',
+'filecopyerror' => 'ఫైలు "$1" ను "$2" కు కాపీ చెయ్యలేకపోయాం.',
+'filerenameerror' => 'à°«à±\88à°²à±\81 "$1" à°ªà±\87à°°à±\81à°¨à±\81 "$2"à°\97à°¾ à°®à°¾à°°à±\8dà°\9aà°²à±\87à°\95à°ªà±\8bయాà°\82.',
+'filedeleteerror' => 'à°«à±\88à°²à±\81 "$1"ని à°¤à±\8aà°²à°\97à°¿à°\82à°\9aà°²à±\87à°\95à°ªà±\8bయాà°\82.',
+'directorycreateerror' => '"$1" à°\85à°¨à±\87 à°¡à±\88à°°à±\86à°\95à±\8dà°\9fà°°à±\80ని à°¸à±\83à°·à±\8dà°\9fà°¿à°\82à°\9aà°²à±\87à°\95 à°ªà±\8bయాà°\82.',
 'filenotfound' => 'ఫైలు "$1" కనబడలేదు.',
-'fileexistserror' => '"$1" అనే ఫైలు ఉంది, కాని అందులోకి రాయలేకపోతున్నాను',
+'fileexistserror' => '"$1" అనే ఫైలులోకి రాయలేకపోతున్నాం. అది ఈసరికే ఉంది.',
 'unexpected' => 'అనుకోని విలువ: "$1"="$2".',
-'formerror' => 'à°²à±\8bà°ªà°\82: à°\88 à°«à°¾à°°à°¾à°¨à±\8dని à°ªà°\82పిà°\82à°\9aà°²à±\87à°\95à°ªà±\8bà°¤à±\81à°¨à±\8dనానà±\81',
+'formerror' => 'à°²à±\8bà°ªà°\82: à°\88 à°«à°¾à°°à°¾à°¨à±\8dని à°ªà°\82పిà°\82à°\9aà°²à±\87à°\95à°ªà±\8bయాà°\82.',
 'badarticleerror' => 'ఈ పేజీపై ఈ పని చేయడం కుదరదు.',
 'cannotdelete' => '"$1" అనే పేజీ లేదా ఫైలుని తొలగించలేకపోయాం.
 దాన్ని ఇప్పటికే ఎవరైనా తొలగించి ఉండవచ్చు.',
@@ -577,14 +577,14 @@ $2',
 'userlogin-signwithsecure' => 'సురక్షిత కనెక్షను వాడు',
 'yourdomainname' => 'మీ డోమైను',
 'password-change-forbidden' => 'ఈ వికీలో మీరు సంకేతపదాలను మార్చలేరు.',
-'externaldberror' => 'à°¡à±\87à°\9fాబà±\87à°¸à±\81 à°\85à°§à±\80à°\95రణలà±\8b à°ªà±\8aరపాà°\9fà±\81 à°\9cà°°à°¿à°\97à°¿à°\82ది à°²à±\87దా à°®à±\80 à°¬à°¯à°\9fà°¿ à°\96ాతాని తాజాకరించడానికి మీకు అనుమతి లేదు.',
+'externaldberror' => 'à°¡à±\87à°\9fాబà±\87à°¸à±\81 à°\85à°§à±\80à°\95రణలà±\8b à°²à±\8bà°ªà°\82 à°\9cà°°à°¿à°\97à°¿à°\82ది à°²à±\87దా à°®à±\80 à°¬à°¯à°\9fà°¿ à°\96ాతానà±\81 తాజాకరించడానికి మీకు అనుమతి లేదు.',
 'login' => 'లోనికి రండి',
-'nav-login-createaccount' => 'à°²à±\8bనిà°\95à°¿ à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aండి / ఖాతాని సృష్టించుకోండి',
+'nav-login-createaccount' => 'లాà°\97ినవండి / ఖాతాని సృష్టించుకోండి',
 'loginprompt' => '{{SITENAME}}లోకి ప్రవేశించాలంటే మీ విహారిణిలో కూకీలు చేతనమై ఉండాలి.',
 'userlogin' => 'ప్రవేశించండి / ఖాతాను సృష్టించుకోండి',
 'userloginnocreate' => 'ప్రవేశించండి',
 'logout' => 'నిష్క్రమించు',
-'userlogout' => 'నిషà±\8dà°\95à±\8dరమిà°\82à°\9aà±\81',
+'userlogout' => 'లాà°\97à±\8cà°\9fà±\8d',
 'notloggedin' => 'లోనికి ప్రవేశించి లేరు',
 'userlogin-noaccount' => 'మీకు ఖాతా లేదా?',
 'userlogin-joinproject' => '{{SITENAME}}లో చేరండి',
@@ -615,16 +615,16 @@ $2',
 'createacct-imgcaptcha-ph' => 'పైన కనబడే మాటలను ఇక్కడ ఇవ్వండి',
 'createacct-submit' => 'మీ ఖాతాను సృష్టించుకోండి',
 'createacct-another-submit' => 'మరొక ఖాతాను సృష్టించు',
-'createacct-benefit-heading' => '{{SITENAME}}à°¨à±\81 à°¤à°¯à°¾à°°à±\81à°\9aà±\87à°¸à±\87ది à°®à±\80లాà°\82à°\9fà°¿ à°ªà±\8dà°°à°\9cà°²ే.',
+'createacct-benefit-heading' => '{{SITENAME}}à°¨à±\81 à°¤à°¯à°¾à°°à±\81à°\9aà±\87à°¸à±\8dà°¤à±\81à°¨à±\8dనది à°®à±\80లాà°\82à°\9fà°¿ à°µà°¾à°°ే.',
 'createacct-benefit-body1' => '{{PLURAL:$1|మార్పు|మార్పులు}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|పేజీ|పేజీలు}}',
 'createacct-benefit-body3' => 'ఇటీవలి {{PLURAL:$1|సమర్పకుడు|సమర్పకులు}}',
 'badretype' => 'మీరు ఇచ్చిన రెండు సంకేతపదాలు ఒకదానితో మరొకటి సరిపోలడం లేదు.',
 'userexists' => 'ఇచ్చిన వాడుకరిపేరు ఇప్పటికే వాడుకలో ఉంది.
 వేరే పేరును ఎంచుకోండి.',
-'loginerror' => 'à°ªà±\8dà°°à°µà±\87à°¶à°\82à°²à±\8b à°ªà±\8aరపాà°\9fà±\81',
-'createacct-error' => 'పదà±\8dà°¦à±\81 à°¤à±\86రవడమà±\81à°²à±\8b à°¤à°ªà±\8dà°ªà±\81',
-'createaccounterror' => 'à°\96ాతాని సృష్టించలేకపోయాం: $1',
+'loginerror' => 'లాà°\97à°¿à°¨à±\8d à°²à±\8bà°ªà°\82',
+'createacct-error' => 'à°\96ాతా à°¸à±\83à°·à±\8dà°\9fà°¿à°\82à°\9aà°¡à°\82à°²à±\8b à°²à±\8bà°ªà°\82',
+'createaccounterror' => 'à°\96ాతానà±\81 సృష్టించలేకపోయాం: $1',
 'nocookiesnew' => 'ఖాతాని సృష్టించాం, కానీ మీరు ఇంకా లోనికి ప్రవేశించలేదు.
 వాడుకరుల ప్రవేశానికి {{SITENAME}} కూకీలను వాడుతుంది.
 మీరు కూకీలని అచేతనం చేసివున్నారు.
@@ -635,17 +635,17 @@ $2',
 'nocookiesfornew' => 'మూలాన్ని కనుక్కోలేకపోయాం కాబట్టి, ఈ వాడుకరి ఖాతాను సృష్టించలేకపోయాం.
 మీ కంప్యూటర్లో కూకీలు చేతనమై ఉన్నాయని నిశ్చయించుకొని, ఈ పేజీని తిరిగి లోడు చేసి, మళ్ళీ ప్రయత్నించండి.',
 'noname' => 'మీరు సరైన వాడుకరిపేరు ఇవ్వలేదు.',
-'loginsuccesstitle' => 'à°ªà±\8dà°°à°µà±\87à°¶à°\82 à°µà°¿à°\9cయవà°\82తమà±\88à°¨ది',
-'loginsuccess' => "'''మీరు ఇప్పుడు {{SITENAME}}లోనికి \"\$1\"గా ప్రవేశించారు.'''",
+'loginsuccesstitle' => 'à°ªà±\8dà°°à°µà±\87à°¶à°\82 à°µà°¿à°\9cయవà°\82తమà±\88à°\82ది',
+'loginsuccess' => '<strong>మీరు ఇప్పుడు {{SITENAME}}లోనికి "$1"గా ప్రవేశించారు.</strong>',
 'nosuchuser' => '"$1" అనే పేరుతో వాడుకరులు లేరు.
 వాడుకరి పేర్లు కేస్ సెన్సిటివ్.
 అక్షరక్రమం సరిచూసుకోండి, లేదా [[Special:UserLogin/signup|కొత్త ఖాతా సృష్టించుకోండి]].',
-'nosuchusershort' => '"$1" à°\85à°¨à±\87 à°ªà±\87à°°à±\81à°¤à±\8b à°¸à°­à±\8dà°¯à±\81à°²à±\81 లేరు. పేరు సరి చూసుకోండి.',
-'nouserspecified' => 'సభà±\8dయనామానà±\8dని à°¤à°ªà±\8dపనిసరిà°\97à°¾ à°\8eà°\82à°\9aà±\81à°\95à±\8bవాలి.',
+'nosuchusershort' => '"$1" à°ªà±\87à°°à±\81à°¤à±\8b à°µà°¾à°¡à±\81à°\95à°°à°¿ à°\8eవరà±\82 లేరు. పేరు సరి చూసుకోండి.',
+'nouserspecified' => 'వాడà±\81à°\95à°°à°¿ à°ªà±\87à°°à±\81à°¨à±\81 à°¤à°ªà±\8dపనిసరిà°\97à°¾ à°\87à°µà±\8dవాలి.',
 'login-userblocked' => 'ఈ వాడుకరిని నిరోధించారు. ప్రవేశానికి అనుమతి లేదు.',
 'wrongpassword' => 'ఈ సంకేతపదం సరైనది కాదు. దయచేసి మళ్లీ ప్రయత్నించండి.',
 'wrongpasswordempty' => 'ఖాళీ సంకేతపదం ఇచ్చారు. మళ్ళీ ప్రయత్నించండి.',
-'passwordtooshort' => 'à°®à±\80 à°¸à°\82à°\95à±\87తపదà°\82 à°\95à°¨à±\80à°¸à°\82 {{PLURAL:$1|1 à°\85à°\95à±\8dà°·à°°à°\82|$1 à°\85à°\95à±\8dషరాల}} à°ªà±\8aà°¡à°µà±\81 ఉండాలి.',
+'passwordtooshort' => 'à°¸à°\82à°\95à±\87తపదà°\82 à°\95à°¨à±\80à°¸à°\82 {{PLURAL:$1|1 à°\85à°\95à±\8dà°·à°°à°\82|$1 à°\85à°\95à±\8dషరాల}} à°¨à°¿à°¡à°¿à°µà°¿ ఉండాలి.',
 'password-name-match' => 'మీ సంకేతపదం మీ వాడుకరిపేరుకి భిన్నంగా ఉండాలి.',
 'password-login-forbidden' => 'ఈ వాడుకరిపేరు మరియు సంకేతపదాలను ఉపయోగించడం నిషిద్ధం.',
 'mailmypassword' => 'సంకేతపదాన్ని మార్చు',
@@ -689,6 +689,9 @@ $2',
 'suspicious-userlogout' => 'సరిగా పనిచేయని విహారిణి లేదా కాషింగ్ ప్రాక్సీ వల్ల పంపబడడం చేత, నిష్క్రమించాలనే మీ అభ్యర్థనని నిరాకరించారు.',
 'createacct-another-realname-tip' => 'అసలు పేరు ఐచ్ఛికం.
 మీరు దాన్ని ఇస్తే, వాడుకరి పనుల శ్రేయస్సు ఆ పేరుకు ఆపాదించబడుతుంది.',
+'pt-login' => 'లాగినవండి',
+'pt-createaccount' => 'ఖాతా సృష్టించు',
+'pt-userlogout' => 'నిష్క్రమించు',
 
 # Email sending
 'php-mail-error-unknown' => 'PHP యొక్క mail() ఫంక్షన్‍లో ఏదో తెలియని లోపం దొర్లింది',
@@ -697,8 +700,7 @@ $2',
 
 # Change password dialog
 'changepassword' => 'సంకేతపదాన్ని మార్చండి',
-'resetpass_announce' => 'మీకు పంపిన తాత్కాలిక సంకేతంతో ప్రవేశించివున్నారు.
-ప్రవేశాన్ని పూర్తిచేసేందుకు, మీరు తప్పనిసరిగా ఇక్కడ కొత్త సంకేతపదాన్ని అమర్చుకోవాలి:',
+'resetpass_announce' => 'లాగిన్ను పూర్తిచేసేందుకు, తప్పనిసరిగా కొత్త సంకేతపదాన్ని ఇవ్వాలి:',
 'resetpass_header' => 'ఖాతా సంకేతపదం మార్పు',
 'oldpassword' => 'పాత సంకేతపదం:',
 'newpassword' => 'కొత్త సంకేతపదం:',
@@ -713,8 +715,12 @@ $2',
 'resetpass-submit-cancel' => 'రద్దుచేయి',
 'resetpass-wrong-oldpass' => 'తప్పుడు తాత్కాలిక లేదా ప్రస్తుత సంకేతపదం.
 మీరు మీ సంకేతపదాన్ని ఇప్పటికే విజయవంతంగా మార్చుకొనివుండవచ్చు లేదా కొత్త తాత్కాలిక సంకేతపదం కోసం అభ్యర్థించారు.',
+'resetpass-recycled' => 'మీ ప్రస్తుత సంకేతపదాన్ని వేరే సంకేతపదంతో మార్చుకోండి',
+'resetpass-temp-emailed' => 'మీరు మీ ఈమెయిలుకు పంపించిన తాత్కాలిక కోడుతో లోపలికి వచ్చారు. ప్రవేశం పూర్తి కావడానికి, ఇక్కడ మీరు తప్పనిసరిగా కొత్త సంకేతపదం ఇవ్వాలి:',
 'resetpass-temp-password' => 'తాత్కాలిక సంకేతపదం:',
 'resetpass-abort-generic' => 'ఓ పొడిగింత (ఎక్స్టెన్‍షన్) సంకేతపదం మార్పిడిని ఆపేసింది.',
+'resetpass-expired' => 'మీ సంకేతపదానికి కాలం చెల్లింది. కొత్త సంకేతపదం ఇచ్చి లాగినవండి.',
+'resetpass-expired-soft' => 'మీ సంకేతపదానికి కాలం చెల్లింది, కాబట్టి కొత్తది ఇవ్వాలి. కొత్తది ఇప్పుడే ఇవ్వండి లేదా రద్దు నొక్కి, తరువాత మార్చుకోండి.',
 
 # Special:PasswordReset
 'passwordreset' => 'సంకేతపదాన్ని మార్చుకోండి',
@@ -787,9 +793,9 @@ $2
 'extlink_tip' => 'బయటి లింకు (దీనికి ముందు http:// ఇవ్వటం మరువకండి)',
 'headline_sample' => 'శీర్షిక పాఠ్యం',
 'headline_tip' => '2వ స్థాయి శీర్షిక',
-'nowiki_sample' => 'ఫారà±\8dమాà°\9fà±\81 à°\9aà±\87à°¯à°\95à±\82డని à°ªà°¾à° à±\8dయానà±\8dని à°\87à°\95à±\8dà°\95à°¡ à°\9aà±\87à°°à±\8dà°\9aà°\82à°¡à°¿',
+'nowiki_sample' => 'ఫార్మాటు చేయని పాఠ్యాన్ని ఇక్కడ చేర్చండి',
 'nowiki_tip' => 'వికీ ఫార్మాటును పట్టించుకోవద్దు',
-'image_tip' => 'à°ªà±\8aదిà°\97ిన ఫైలు',
+'image_tip' => 'à°\87మిడà±\8dà°\9aిన ఫైలు',
 'media_tip' => 'దస్త్రపు లంకె',
 'sig_tip' => 'సమయంతో సహా మీ సంతకం',
 'hr_tip' => 'అడ్డగీత (అరుదుగా వాడండి)',
@@ -801,8 +807,8 @@ $2
 'watchthis' => 'ఈ పుట మీద కన్నేసి ఉంచు',
 'savearticle' => 'పేజీని భద్రపరచు',
 'preview' => 'మునుజూపు',
-'showpreview' => 'మునుజూపు',
-'showlivepreview' => 'తాà°\9cà°¾ మునుజూపు',
+'showpreview' => 'మునుజూపు చూపు',
+'showlivepreview' => 'à°¤à°\95à±\8dà°·à°£ మునుజూపు',
 'showdiff' => 'తేడాలను చూపించు',
 'anoneditwarning' => "'''హెచ్చరిక:''' మీరు లోనికి ప్రవేశించలేదు.
 ఈ పేజీ దిద్దుబాటు చరిత్రలో మీ ఐపీ చిరునామా నమోదవుతుంది.",
@@ -811,9 +817,9 @@ $2
 'missingcommenttext' => 'కింద ఓ వ్యాఖ్య రాయండి.',
 'missingcommentheader' => "'''గుర్తు చేస్తున్నాం''': ఈ వ్యాఖ్యకు మీరు విషయం/శీర్షిక పెట్టలేదు.
 \"{{int:savearticle}}\"ని మళ్ళీ నొక్కితే, మీ మార్పుకి విషయం/శీర్షిక ఏమీ లేకుండానే భద్రపరుస్తాం.",
-'summary-preview' => 'à°®à±\80à°°à±\81 à°°à°¾à°¸à°¿à°¨ à°¸à°¾à°°à°¾à°\82à°¶à°\82:',
+'summary-preview' => 'సారాà°\82à°¶à°\82 à°®à±\81à°¨à±\81à°\9cà±\82à°ªà±\81:',
 'subject-preview' => 'విషయం/శీర్షిక మునుజూపు:',
-'blockedtitle' => 'సభà±\8dà°¯à±\81నిపà±\88 à°¨à°¿à°°à±\8bà°§à°\82 à°\85మలయిà°\82ది',
+'blockedtitle' => 'వాడà±\81à°\95à°°à°¿ à°¨à°¿à°°à±\8bధిà°\82à°\9aబడà±\8dడారà±\81',
 'blockedtext' => "'''మీ వాడుకరి పేరుని లేదా ఐ.పీ. చిరునామాని నిరోధించారు.'''
 
 నిరోధించినది $1.
@@ -843,7 +849,7 @@ $2
 మీ ప్రస్తుత ఐపీ చిరునామా $3, మరియు నిరోధపు ఐడీ: $5.
 మీ సంప్రదింపులన్నిటిలోను అన్ని పై వివరాలను ఉదహరించండి.',
 'blockednoreason' => 'కారణమేమీ ఇవ్వలేదు',
-'whitelistedittext' => 'పుటలలో మార్పులు చెయ్యడానికి మీరు $1 ఉండాలి.',
+'whitelistedittext' => 'పుటలలో మార్పులు చెయ్యడానికి $1.',
 'confirmedittext' => 'పేజీల్లో మార్పులు చేసేముందు మీ ఈ-మెయిలు చిరునామా ధృవీకరించాలి. [[Special:Preferences|మీ అభిరుచుల]]లో మీ ఈ-మెయిలు చిరునామా రాసి, ధృవీకరించండి.',
 'nosuchsectiontitle' => 'విభాగాన్ని కనగొనలేకపోయాం',
 'nosuchsectiontext' => 'మీరు లేని విభాగాన్ని మార్చడానికి ప్రయత్నించారు.
@@ -964,7 +970,7 @@ $2
 అది ఇప్పటికే ఉంది.',
 'defaultmessagetext' => 'అప్రమేయ సందేశపు పాఠ్యం',
 'content-failed-to-parse' => '$1 మోడల్ కొరకు $2 పాఠ్యాన్ని పార్స్ చెయ్యలేకపోయాం: $3',
-'invalid-content-data' => 'తపà±\8dà°ªà±\81à°¡à±\81 à°µà°¿à°·à°¯à°\82',
+'invalid-content-data' => 'à°\9aà±\86à°²à±\8dలని à°\95à°\82à°\9fà±\86à°\82à°\9fà±\81 à°¡à±\87à°\9fà°¾',
 'content-not-allowed-here' => '[[$2]] పేజీలో పాఠ్యం "$1" కి అనుమతి లేదు',
 'editwarning-warning' => 'ఈ పేజీని వదిలివెళ్ళడం వల్ల మీరు చేసిన మార్పులను కోల్పోయే అవకాశం ఉంది.
 మీరు లాగిన్ అయివుంటే, ఈ హెచ్చరికని మీ అభిరుచులలోని "{{int:prefs-editing}}"  విభాగంలో అచేతనం చేసుకోవచ్చు.',
@@ -1012,8 +1018,8 @@ $3 ఇచ్చిన కారణం: ''$2''",
 'viewpagelogs' => 'ఈ పేజీకి సంబంధించిన లాగ్‌లను చూడండి',
 'nohistory' => 'ఈ పేజీకి మార్పుల చరిత్ర లేదు.',
 'currentrev' => 'ప్రస్తుతపు సంచిక',
-'currentrev-asof' => '$1 à°¨à°¾à°\9fà°¿ à°ªà±\8dà°°à°¸à±\8dà°¤à±\81à°¤ కూర్పు',
-'revisionasof' => '$1 à°¨à°¾à°\9fà°¿ à°¸à°\82à°\9aà°¿à°\95',
+'currentrev-asof' => '$1 à°¨à°¾à°\9fà°¿ à°\9aà°¿à°\9fà±\8dà°\9fà°\9aివరి కూర్పు',
+'revisionasof' => '$1 à°¨à°¾à°\9fà°¿ à°\95à±\82à°°à±\8dà°ªà±\81',
 'revision-info' => '$1 నాటి కూర్పు. రచయిత: $2',
 'previousrevision' => '← పాత కూర్పు',
 'nextrevision' => 'దీని తరువాతి సంచిక→',
@@ -1119,7 +1125,7 @@ $1",
 'revdelete-modify-missing' => '$1 అంశాన్ని మార్చడంలో లోపం దొర్లింది: ఇది డేటాబేసులో కనబడలేదు!',
 'revdelete-no-change' => "'''హెచ్చరిక:''' $2, $1 నాటి అంశానికి మీరడిగిన చూపు అమరికలన్నీ ఈసరికే ఉన్నాయి.",
 'revdelete-concurrent-change' => '$2, $1 నాటి అంశాన్ని మార్చడంలో లోపం దొర్లింది: మీరు మార్చడానికి ప్రయత్నించిన సమయంలోనే వేరొకరు దాని స్థితిని మార్చినట్లుగా కనిపిస్తోంది. ఓసారి లాగ్‌లను చూడండి.',
-'revdelete-only-restricted' => '$2, $1 తేదీ గల అంశాన్ని దాచడంలో పొరపాటు: ఇతర దృశ్యత వికల్పాల్లోంచి ఒకదాన్ని ఎంచుకోకుండా అంశాలని నిర్వాహకులకు కనబడకుండా అణచివెయ్యలేరు.',
+'revdelete-only-restricted' => '$1 $2 తేదీ గల అంశాన్ని దాచడంలో లోపం: ఇతర దృశ్యత వికల్పాల్లోంచి ఒకదాన్ని ఎంచుకోకుండా నిర్వాహకులకు కనబడకుండా అంశాలను అణచిపెట్టలేరు.',
 'revdelete-reason-dropdown' => '*సాధారణ తొలగింపు కారణాలు
 ** కాపీహక్కుల ఉల్లంఘన
 ** అసంబద్ధ వ్యాఖ్య లేదా వ్యక్తిగత సమాచారం
@@ -1159,7 +1165,7 @@ $1",
 'mergehistory-reason' => 'కారణం:',
 
 # Merge log
-'mergelog' => 'à°µà±\80లీనాల చిట్టా',
+'mergelog' => 'విలీనాల చిట్టా',
 'pagemerge-logentry' => '[[$1]] ను [[$2]] లోకి విలీనం చేసాం ($3 కూర్పు దాకా)',
 'revertmerge' => 'విలీనాన్ని రద్దుచెయ్యి',
 'mergelogpagetext' => 'ఒక పేజీ చరితాన్ని మరో పేజీ చరితం లోకి ఇటీవల చేసిన విలీనాల జాబితా ఇది.',
@@ -1172,7 +1178,7 @@ $1",
 'lineno' => 'పంక్తి $1:',
 'compareselectedversions' => 'ఎంచుకున్న సంచికలను పోల్చిచూడు',
 'showhideselectedversions' => 'ఎంచుకున్న కూర్పులను చూపించు/దాచు',
-'editundo' => 'మారà±\8dà°ªà±\81ని à°°à°¦à±\8dà°¦à±\81à°\9aà±\86à°¯à±\8dయి',
+'editundo' => 'రద్దుచెయ్యి',
 'diff-empty' => '(తేడా లేదు)',
 'diff-multi-sameuser' => '(ఇదే వాడుకరి యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించలేదు)',
 'diff-multi-otherusers' => '({{PLURAL:$2|మరో వాడుకరి|$2 వాడుకరుల}} యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించలేదు)',
@@ -1183,13 +1189,13 @@ $1",
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు లాగ్] లో వివరాలు ఉంటాయి.',
 
 # Search results
-'searchresults' => 'à°µà±\86à°¦ుకులాట ఫలితాలు',
-'searchresults-title' => '"$1"కి అన్వేషణ ఫలితాలు',
+'searchresults' => 'à°µà±\86à°¤ుకులాట ఫలితాలు',
+'searchresults-title' => '"$1" కి వెతుకులాట ఫలితాలు',
 'toomanymatches' => 'చాలా పోలికలు వచ్చాయి, దయచేసి మరో ప్రశ్నని ప్రయత్నించండి',
 'titlematches' => 'వ్యాస శీర్షిక సరిపోయింది',
 'textmatches' => 'పేజిలోని పాఠం సరిపోలింది',
 'notextmatches' => 'పేజీ పాఠ్యమేదీ సరిపోలడం లేదు',
-'prevn' => 'à°\95à±\8dà°°à°¿à°¤à°\82 {{PLURAL:$1|$1}}',
+'prevn' => 'à°\97à°¤ {{PLURAL:$1|$1}}',
 'nextn' => 'తరువాతి {{PLURAL:$1|$1}}',
 'prevn-title' => 'గత $1 {{PLURAL:$1|ఫలితం|ఫలితాలు}}',
 'nextn-title' => 'తరువాతి $1 {{PLURAL:$1|ఫలితం|ఫలితాలు}}',
@@ -1228,7 +1234,7 @@ $1",
 'powersearch-legend' => 'నిశితమైన అన్వేషణ',
 'powersearch-ns' => 'ఈ పేరుబరుల్లో వెతుకు:',
 'powersearch-redir' => 'దారిమార్పులను చూపించు',
-'powersearch-togglelabel' => 'à°\8eà°\82à°\9aà±\81à°\95à±\8bవాలà±\8dసినవి:',
+'powersearch-togglelabel' => 'à°\8eà°\82à°\9aà±\81à°\95à±\8bà°\82à°¡ి:',
 'powersearch-toggleall' => 'అన్నీ',
 'powersearch-togglenone' => 'ఏదీకాదు',
 'search-external' => 'బయటి అన్వేషణ',
@@ -1240,22 +1246,22 @@ $1",
 'mypreferences' => 'అభిరుచులు',
 'prefs-edits' => 'దిద్దుబాట్ల సంఖ్య:',
 'prefsnologintext2' => 'మీ అభిరుచులను మార్చుకునేందుకు $1.',
-'prefs-skin' => 'à°\85à°²à°\82à°\95ారà°\82',
-'skin-preview' => 'à°®à±\81à°¨à±\81à°\9cà±\82à°ªà±\81/సరిà°\9aà±\82à°¡à±\81',
+'prefs-skin' => 'à°°à±\82à°ªà±\81',
+'skin-preview' => 'మునుజూడు',
 'datedefault' => 'ఏదైనా పరవాలేదు',
 'prefs-beta' => 'బీటా సౌలభ్యాలు',
 'prefs-datetime' => 'తేదీ, సమయం',
 'prefs-labs' => 'ప్రయోగాత్మక సౌలభ్యాలు',
 'prefs-user-pages' => 'వాడుకరి పేజీలు',
-'prefs-personal' => 'వాడà±\81à°\95à°°à°¿ à°µà°¿à°µà°°à°¾à°²à±\81',
+'prefs-personal' => 'వాడà±\81à°\95à°°à°¿ à°ªà±\8dరవర',
 'prefs-rc' => 'ఇటీవలి మార్పులు',
 'prefs-watchlist' => 'వీక్షణ జాబితా',
 'prefs-watchlist-days' => 'వీక్షణ జాబితాలో చూపించవలసిన రోజులు:',
-'prefs-watchlist-days-max' => '$1 {{PLURAL:$1|రోజు|రోజులు}} గరిష్ఠం',
+'prefs-watchlist-days-max' => 'గరిష్ఠంగా $1 {{PLURAL:$1|రోజు|రోజులు}}',
 'prefs-watchlist-edits' => 'విస్తృత వీక్షణ జాబితాలో చూపించవలసిన దిద్దుబాట్లు:',
 'prefs-watchlist-edits-max' => 'గరిష్ఠ సంఖ్య: 1000',
 'prefs-watchlist-token' => 'వీక్షణాజాబితా టోకెను:',
-'prefs-misc' => 'à°\87తరాలà±\81',
+'prefs-misc' => 'à°\87తరతà±\8dà°°à°¾',
 'prefs-resetpass' => 'సంకేతపదాన్ని మార్చుకోండి',
 'prefs-changeemail' => 'ఈ-మెయిలు చిరునామా మార్పు',
 'prefs-setemail' => 'ఒక ఈ-మెయిల్ చిరునామాని అమర్చండి',
@@ -1264,9 +1270,9 @@ $1",
 'saveprefs' => 'భద్రపరచు',
 'restoreprefs' => 'అప్రమేయ అమరికలను పునఃస్థాపించు (అన్ని విభాగాల్లోనూ)',
 'prefs-editing' => 'మార్పులు',
-'rows' => 'వరà±\81సలà±\81',
-'columns' => 'వరుసలు:',
-'searchresultshead' => 'à°\85à°¨à±\8dà°µà±\87à°·à°£',
+'rows' => 'à°\85à°¡à±\8dà°¡à±\81 à°µà°°à±\81సలà±\81:',
+'columns' => 'నిలà±\81à°µà±\81 à°µà°°à±\81సలà±\81:',
+'searchresultshead' => 'à°µà±\86à°¤à±\81à°\95à±\81',
 'stub-threshold' => '<a href="#" class="stub">మొలక లింకు</a> ఫార్మాటింగు కొరకు హద్దు (బైట్లు):',
 'stub-threshold-disabled' => 'అచేతనం',
 'recentchangesdays' => 'ఇటీవలి మార్పులు లో చూపించవలసిన రోజులు:',
@@ -1289,7 +1295,7 @@ $1",
 'timezoneregion-arctic' => 'ఆర్కిటిక్',
 'timezoneregion-asia' => 'ఆసియా',
 'timezoneregion-atlantic' => 'అట్లాంటిక్ మహాసముద్రం',
-'timezoneregion-australia' => 'à°\86à°·్ట్రేలియా',
+'timezoneregion-australia' => 'à°\86à°¸్ట్రేలియా',
 'timezoneregion-europe' => 'ఐరోపా',
 'timezoneregion-indian' => 'హిందూ మహాసముద్రం',
 'timezoneregion-pacific' => 'పసిఫిక్ మహాసముద్రం',
@@ -1304,7 +1310,7 @@ $1",
 'prefs-common-css-js' => 'అన్ని అలంకారాలకై పంచుకోబడిన CSS/JS:',
 'prefs-reset-intro' => 'ఈ పేజీలో, మీ అభిరుచులను సైటు డిఫాల్టు విలువలకు మార్చుకోవచ్చు. మళ్ళీ వెనక్కి తీసుకుపోలేరు.',
 'prefs-emailconfirm-label' => 'ఈ-మెయిల్ నిర్ధారణ:',
-'youremail' => 'à°®à±\80 à°\88-à°®à±\86యిలà±\81*',
+'youremail' => 'à°\88à°®à±\86యిలà±\81:',
 'username' => '{{GENDER:$1|వాడుకరి పేరు}}:',
 'uid' => '{{GENDER:$1|వాడుకరి}} ID:',
 'prefs-memberingroups' => 'ఈ {{PLURAL:$1|గుంపులో|గుంపులలో}} {{GENDER:$2|సభ్యుడు|సభ్యురాలు}}:',
@@ -1318,7 +1324,7 @@ $1",
 'badsig' => 'సంతకాన్ని సరిగ్గా ఇవ్వలేదు; HTML ట్యాగులను ఒకసారి పరిశీలించండి.',
 'badsiglength' => 'మీ సంతకం చాలా పెద్దగా ఉంది.
 ఇది తప్పనిసరిగా $1 {{PLURAL:$1|అక్షరం|అక్షరాల}} లోపులోనే ఉండాలి.',
-'yourgender' => 'మిమà±\8dమలà±\8dని à°\8eలా à°¸à°\82à°¬à±\8bధిà°\82à°\9aడానిà°\95à°¿ à°\87à°·à±\8dà°\9fపడతారు?',
+'yourgender' => 'మిమà±\8dమలà±\8dని à°®à±\80à°°à±\81 à°\8eలా à°µà°°à±\8dణిà°\82à°\9aà±\81à°\95à±\81à°\82à°\9fారు?',
 'gender-unknown' => 'వెల్లడించడానికి నేను ఇష్టపడట్లేదు',
 'gender-male' => 'అతను వికీ పేజీలను సరిదిద్దుతాడు',
 'gender-female' => 'ఆమె వికీ పేజీలను సరిదిద్దుతుంది',
@@ -1332,7 +1338,7 @@ $1",
 ఇతరులు మిమ్మల్ని సంప్రదించినప్పుడు మీ ఈ-మెయిలు చిరునామా బహిర్గతమవదు.',
 'prefs-help-email-required' => 'ఈ-మెయిలు చిరునామా తప్పనిసరి.',
 'prefs-info' => 'ప్రాథమిక సమాచారం',
-'prefs-i18n' => 'అంతర్జాతీకరణ',
+'prefs-i18n' => 'à°\85à°\82తరà±\8dà°\9cాతà±\80à°¯à°\95à°°à°£',
 'prefs-signature' => 'సంతకం',
 'prefs-dateformat' => 'తేదీ ఆకృతి',
 'prefs-timeoffset' => 'సమయ సవరణ',
@@ -1482,7 +1488,7 @@ $1",
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'ఈ పేజీని చదవండి',
-'action-edit' => 'à°\88 à°ªà±\87à°\9cà±\80ని à°¸à°µà°°à°¿à°\82à°\9aà°\82à°¡à°¿',
+'action-edit' => 'à°\88 à°ªà±\87à°\9cà±\80ని à°¸à°µà°°à°¿à°\82à°\9aà±\87',
 'action-createpage' => 'పేజీలను సృష్టించే',
 'action-createtalk' => 'చర్చాపేజీలను సృష్టించే',
 'action-createaccount' => 'ఈ వాడుకరి ఖాతాని సృష్టించే',
@@ -1540,11 +1546,23 @@ $1",
 'rcnotefrom' => '<b>$2</b> నుండి జరిగిన మార్పులు (<b>$1</b> వరకు చూపబడ్డాయి).',
 'rclistfrom' => '$1 నుండి జరిగిన మార్పులను చూపించు',
 'rcshowhideminor' => 'చిన్న మార్పులను $1',
+'rcshowhideminor-show' => 'చూపించు',
+'rcshowhideminor-hide' => 'దాచు',
 'rcshowhidebots' => 'బాట్లను $1',
+'rcshowhidebots-show' => 'చూపించు',
+'rcshowhidebots-hide' => 'దాచు',
 'rcshowhideliu' => 'నమోదైన వాడుకరులను $1',
+'rcshowhideliu-show' => 'చూపించు',
+'rcshowhideliu-hide' => 'దాచు',
 'rcshowhideanons' => 'అజ్ఞాత వాడుకరులను $1',
+'rcshowhideanons-show' => 'చూపించు',
+'rcshowhideanons-hide' => 'దాచు',
 'rcshowhidepatr' => 'నిఘాలో ఉన్న మార్పులను $1',
+'rcshowhidepatr-show' => 'చూపించు',
+'rcshowhidepatr-hide' => 'దాచు',
 'rcshowhidemine' => 'నా మార్పులను $1',
+'rcshowhidemine-show' => 'చూపించు',
+'rcshowhidemine-hide' => 'దాచు',
 'rclinks' => 'గత  $2 రోజుల లోని చివరి $1 మార్పులను చూపించు <br />$3',
 'diff' => 'తేడాలు',
 'hist' => 'చరిత్ర',
@@ -1565,9 +1583,9 @@ $1",
 # Recent changes linked
 'recentchangeslinked' => 'సంబంధిత మార్పులు',
 'recentchangeslinked-feed' => 'సంబంధిత మార్పులు',
-'recentchangeslinked-toolbox' => 'à°ªà±\8aà°\82తనà°\97à°² మార్పులు',
+'recentchangeslinked-toolbox' => 'à°¸à°\82à°¬à°\82ధిత మార్పులు',
 'recentchangeslinked-title' => '$1 కు సంబంధించిన మార్పులు',
-'recentchangeslinked-summary' => "దీనికి లింకై ఉన్న పేజీల్లో జరిగిన చివరి మార్పులు ఇక్కడ చూడవచ్చు. మీ వీక్షణ జాబితాలో ఉన్న పేజీలు '''బొద్దు'''గా ఉంటాయి.",
+'recentchangeslinked-summary' => 'ఏదైనా పేజీకి లింకై ఉన్న పేజీల్లో (లేదా ఏదైనా వర్గంలోని పేజీల్లో) జరిగిన ఇటీవలి మార్పుల జాబితా ఇది.  [[Special:Watchlist|మీ వీక్షణ జాబితా]]లో ఉన్న పేజీలు <strong>బొద్దు</strong>గా ఉంటాయి.',
 'recentchangeslinked-page' => 'పేజీ పేరు:',
 'recentchangeslinked-to' => 'ఇచ్చిన పేజీకి లింకయివున్న పేజీలలో జరిగిన మార్పులను చూపించు',
 
@@ -1580,7 +1598,7 @@ $1",
 'uploadnologintext' => 'దస్త్రాలను ఎక్కించడానికి మీరు $1 ఉండాలి.',
 'upload_directory_missing' => 'ఎగుమతి డైరెక్టరీ ($1) తప్పింది మరియు వెబ్ సర్వర్ దాన్ని సృష్టించలేకున్నది.',
 'upload_directory_read_only' => 'అప్‌లోడు డైరెక్టరీ ($1), వెబ్‌సర్వరు రాసేందుకు అనుకూలంగా లేదు.',
-'uploaderror' => 'à°\8eà°\95à±\8dà°\95à°¿à°\82à°ªà±\81 à°ªà±\8aరపాà°\9fà±\81',
+'uploaderror' => 'à°\8eà°\95à±\8dà°\95à°¿à°\82à°ªà±\81 à°²à±\8bà°ªà°\82',
 'upload-recreate-warning' => "'''హెచ్చరిక: ఆ పేరుతో ఉన్న దస్త్రాన్ని తరలించి లేదా తొలగించి ఉన్నారు.'''
 
 మీ సౌకర్యం కోసం ఈ పుట యొక్క తొలగింపు మరియు తరలింపు చిట్టాని ఇక్కడ ఇస్తున్నాం:",
@@ -1669,6 +1687,7 @@ $1",
 'php-uploaddisabledtext' => 'PHPలో ఫైలు ఎక్కింపులు అచేతనమై ఉన్నాయి.
 దయచేసి file_uploads అమరికని చూడండి.',
 'uploadscripted' => 'ఈ ఫైల్లో HTML కోడు గానీ స్క్రిప్టు కోడు గానీ ఉంది. వెబ్ బ్రౌజరు దాన్ని పొరపాటుగా అనువదించే అవకాశం ఉంది.',
+'uploadinvalidxml' => 'ఎక్కించిన ఫైలులోని XML ను పార్సు చెయ్యలేకపోయాం.',
 'uploadvirus' => 'ఈ ఫైలులో వైరస్‌ ఉంది! వివరాలు: $1',
 'uploadjava' => 'ఇదొక ZIP ఫైలు, ఇందులో ఒక Java .class ఫైలు ఉంది.
 Java ఫైళ్ళ వలన భద్రతకు తూట్లు పడే అవకాశం ఉంది కాబట్టి, వాటిని ఎక్కించడానికి అనుమతి లేదు.',
@@ -1778,7 +1797,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 # HTTP errors
 'http-invalid-url' => 'తప్పుడు URL: $1',
 'http-invalid-scheme' => '"$1" ప్రణాళికలో ఉన్న URLలకు తోడ్పాటులేదు',
-'http-request-error' => 'à°¤à±\86లియని à°ªà±\8aరపాà°\9fà±\81 వల్ల HTTP అభ్యర్థన విఫలమైంది.',
+'http-request-error' => 'à°¤à±\86లియని à°²à±\8bà°ªà°\82 వల్ల HTTP అభ్యర్థన విఫలమైంది.',
 'http-read-error' => 'HTTP చదువుటలో పొరపాటు.',
 'http-timed-out' => 'HTTP అభ్యర్థనకి కాలం చెల్లింది.',
 'http-curl-error' => 'URLని తేవడంలో పొరపాటు: $1',
@@ -1843,8 +1862,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'sharedupload' => 'ఈ ఫైలు $1 నుండి మరియు దీనిని ఇతర ప్రాజెక్టులలో కూడా ఉపయోగిస్తూవుండవచ్చు.',
 'sharedupload-desc-there' => 'ఈ ఫైలు $1 నుండి వచ్చింది అలానే ఇతర ప్రాజెక్టులలో కూడా ఉపయోగిస్తూ ఉండవచ్చు.
 మరింత సమాచారం కోసం, దయచేసి [$2 ఫైలు వివరణ పేజీ]ని చూడండి.',
-'sharedupload-desc-here' => 'à°\88 à°«à±\88à°²à±\81 $1 à°¨à±\81à°\82à°¡à°¿ à°®à°°à°¿à°¯à±\81 à°¦à±\80నిని à°\87తర à°ªà±\8dà°°à°¾à°\9cà±\86à°\95à±\8dà°\9fà±\81లలà±\8b కూడా ఉపయోగిస్తూ ఉండవచ్చు.
-à°¦à±\80ని [$2 à°«à±\88à°²à±\81 à°µà°¿à°µà°°à°£ à°ªà±\87à°\9cà±\80] à°²à±\8b à°\89à°¨à±\8dà°¨ à°µà°¿à°µà°°à°£à°¨à°¿ à°\95à±\8dà°°ింద చూపించాం.',
+'sharedupload-desc-here' => 'à°\88 à°«à±\88à°²à±\81 $1 à°²à±\8bనిది. à°¦à±\80నిని à°\87తర à°ªà±\8dà°°à°¾à°\9cà±\86à°\95à±\8dà°\9fà±\81à°²à±\81 కూడా ఉపయోగిస్తూ ఉండవచ్చు.
+à°\85à°\95à±\8dà°\95à°¡ à°¦à±\80ని [$2 à°«à±\88à°²à±\81 à°µà°¿à°µà°°à°£ à°ªà±\87à°\9cà±\80] à°²à±\8b à°\89à°¨à±\8dà°¨ à°µà°¿à°µà°°à°£à°¨à°¿ à°\95ింద చూపించాం.',
 'sharedupload-desc-edit' => 'ఈ ఫైలు $1 లోనిది. దాన్ని ఇతర ప్రాజెక్టులు కూడా వాడుతూ ఉండి ఉండవచ్చు.
 దాని [$2 ఫైలు వివరణ పేజీ] లోని వివరణను మారుస్తారేమో చూడండి.',
 'sharedupload-desc-create' => 'ఈ ఫైలు $1 లోనిది. దాన్ని ఇతర ప్రాజెక్టులు కూడా వాడుతూ ఉండి ఉండవచ్చు.
@@ -2441,7 +2460,7 @@ $1',
 # Contributions
 'contributions' => '{{GENDER:$1|వాడుకరి}} రచనలు',
 'contributions-title' => '$1 యొక్క మార్పులు-చేర్పులు',
-'mycontris' => 'మారà±\8dà°ªà±\81à°²à±\81 à°\9aà±\87à°°à±\8dà°ªà±\81à°²à±\81',
+'mycontris' => 'మార్పుచేర్పులు',
 'contribsub2' => '{{GENDER:$3|$1}} ($2) కొరకు',
 'nocontribs' => 'ఈ విధమైన మార్పులేమీ దొరకలేదు.',
 'uctop' => '(ప్రస్తుత)',
@@ -2467,7 +2486,7 @@ $1',
 'sp-contributions-submit' => 'వెతుకు',
 
 # What links here
-'whatlinkshere' => 'à°\87à°\95à±\8dà°\95à°¡à°¿à°\95à°¿ à°²à°\82à°\95à±\86à°²à±\81à°¨à±\8dనవి',
+'whatlinkshere' => 'à°\87à°\95à±\8dà°\95à°¡à°¿à°\95à°¿ à°²à°¿à°\82à°\95à±\88నవి',
 'whatlinkshere-title' => '"$1"కి లింకున్న పుటలు',
 'whatlinkshere-page' => 'పేజీ:',
 'linkshere' => "కిందనున్న పేజీల నుండి '''[[:$1]]'''కు లింకులు ఉన్నాయి:",
@@ -2632,15 +2651,14 @@ $1 ను నిరోధించడానికి కారణం: "$2"',
 'movepagetext' => "కింది ఫారం ఉపయోగించి, ఓ పేజీ పేరు మార్చవచ్చు. దాంతో పాటు దాని చరిత్ర అంతా కొత్త పేజీ చరిత్రగా మారుతుంది.
 పాత పేజీ కొత్త దానికి దారిమార్పు పేజీ అవుతుంది.
 పాత పేజీకి ఉన్న దారిమార్పు పేజీలను ఆటోమెటిగ్గా సరిచేయవచ్చు.
-à°\86లా à°\9aà±\87యవదà±\8dదనà±\81à°\95à±\81à°\82à°\9fà±\87, [[Special:DoubleRedirects|à°¦à±\8dà°µà°\82à°¦]] à°²à±\87దా [[Special:BrokenRedirects|పనిà°\9aà±\87యని]] à°¦à°¾à°°à°¿à°®à°¾à°°à±\8dà°ªà±\81à°² à°ªà±\87à°\9cà±\80లలో సరిచూసుకోండి.
+à°\86లా à°\9aà±\87యవదà±\8dదనà±\81à°\95à±\81à°\82à°\9fà±\87, [[Special:DoubleRedirects|à°\9cమిలి]] à°²à±\87దా [[Special:BrokenRedirects|పనిà°\9aà±\87యని à°¦à°¾à°°à°¿à°®à°¾à°°à±\8dà°ªà±\81à°²à±\81]] à°\89à°¨à±\8dనాయà±\87à°®ో సరిచూసుకోండి.
 లింకులన్నీ అనుకున్నట్లుగా చేరవలసిన చోటికే చేరుతున్నాయని నిర్ధారించుకోవలసిన బాధ్యత మీదే.
 
 ఒకవేళ కొత్త పేరుతో ఇప్పటికే ఒక పేజీ ఉండి ఉంటే (అది గత మార్పుల చరిత్ర లేని ఖాళీ పేజీనో లేదా దారిమార్పు పేజీనో కాకపోతే) తరలింపు '''జరగదు'''.
-
 అంటే మీరు పొరపాటు చేస్తే కొత్త పేరును మార్చి తిరిగి పాత పేరుకు తీసుకురాగలరు కానీ ఇప్పటికే వున్న పేజీని తుడిచివేయలేరు.
 
-'''హెచ్చరిక!'''
-à°\88 à°®à°¾à°°à±\8dà°ªà±\81 à°¬à°¾à°\97à°¾ à°\9cనరà°\82à°\9cà°\95à°®à±\88à°¨ à°ªà±\87à°\9cà±\80à°²à°\95à±\81 à°\85à°¨à±\82à°¹à±\8dà°¯à°\82 కావచ్చు;
+<strong>హెచ్చరిక!</strong>
+à°\87ది à°\9cనరà°\82à°\9cà°\95à°®à±\88à°¨ à°ªà±\87à°\9cà±\80à°²à°\95à±\81 à°\85à°¨à±\81à°\95à±\8bని, à°¤à±\80à°µà±\8dà°°à°®à±\88à°¨ à°®à°¾à°°à±\8dà°ªà±\81 కావచ్చు;
 దాని పరిణామాలను అర్ధం చేసుకుని ముందుకుసాగండి.",
 'movepagetext-noredirectfixer' => "కింది ఫారాన్ని వాడి, ఓ పేజీ పేరు మార్చవచ్చు. దాని చరిత్ర పూర్తిగా కొత్త పేరుకు తరలిపోతుంది. 
 పాత శీర్షిక కొత్తదానికి దారిమార్పు పేజీగా మారిపోతుంది.
@@ -2844,14 +2862,14 @@ $2',
 'tooltip-pt-anontalk' => 'ఈ ఐపీ చిరునామా నుండి చేసిన మార్పుల గురించి చర్చ',
 'tooltip-pt-preferences' => 'మీ అభిరుచులు',
 'tooltip-pt-watchlist' => 'మీరు మార్పుల కొరకు గమనిస్తున్న పేజీల జాబితా',
-'tooltip-pt-mycontris' => 'మీ మార్పు-చేర్పుల జాబితా',
-'tooltip-pt-login' => 'à°®à±\80à°°à±\81 à°²à±\8bనిà°\95à°¿ à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aడానà±\8dని à°ªà±\8dà°°à±\8bà°¤à±\8dసహిసà±\8dà°¤à±\81à°¨à±\8dనాà°\82; à°\95ానà±\80 à°\85ది à°¤à°ªà±\8dపనిసరి కాదు.',
-'tooltip-pt-logout' => 'నిషà±\8dà°\95à±\8dరమిà°\82à°\9aండి',
-'tooltip-ca-talk' => 'విషయపà±\81 à°ªà±\81à°\9f గురించి చర్చ',
-'tooltip-ca-edit' => 'à°\88 à°ªà±\87à°\9cà±\80ని à°®à±\80à°°à±\81 à°¸à°°à°¿à°¦à°¿à°¦à±\8dదవà°\9aà±\8dà°\9aà±\81. à°¦à°¾à°\9aà±\87ముందు మునుజూపు బొత్తాన్ని వాడండి.',
+'tooltip-pt-mycontris' => 'మీ మార్పుచేర్పుల జాబితా',
+'tooltip-pt-login' => 'మిమà±\8dమలà±\8dని à°²à°¾à°\97ినవమని à°ªà±\8dà°°à±\8bà°¤à±\8dసహిసà±\8dà°¤à±\81à°¨à±\8dనాà°\82; à°\95ానà±\80 à°\85ది à°¤à°ªà±\8dపనిసరà±\87à°®à±\80 కాదు.',
+'tooltip-pt-logout' => 'లాà°\97à±\8cà°\9fà°µండి',
+'tooltip-ca-talk' => 'విషయపà±\81 à°ªà±\87à°\9cà±\80 గురించి చర్చ',
+'tooltip-ca-edit' => 'à°\88 à°ªà±\87à°\9cà±\80ని à°®à±\80à°°à±\81 à°¸à°°à°¿à°¦à°¿à°¦à±\8dదవà°\9aà±\8dà°\9aà±\81. à°­à°¦à±\8dరపరà°\9aà±\87 ముందు మునుజూపు బొత్తాన్ని వాడండి.',
 'tooltip-ca-addsection' => 'కొత్త విభాగాన్ని మొదలుపెట్టండి',
 'tooltip-ca-viewsource' => 'ఈ పుటని సంరక్షించారు. మీరు దీని మూలాన్ని చూడవచ్చు',
-'tooltip-ca-history' => 'à°\88 à°ªà±\81à°\9f యొక్క వెనుకటి కూర్పులు',
+'tooltip-ca-history' => 'à°\88 à°ªà±\87à°\9cà±\80 యొక్క వెనుకటి కూర్పులు',
 'tooltip-ca-protect' => 'ఈ పేజీని సంరక్షించండి',
 'tooltip-ca-unprotect' => 'ఈ పేజీ సంరక్షణను మార్చండి',
 'tooltip-ca-delete' => 'ఈ పేజీని తొలగించండి',
@@ -2862,25 +2880,25 @@ $2',
 'tooltip-search' => '{{SITENAME}} లో వెతకండి',
 'tooltip-search-go' => 'ఇదే పేరుతో పేజీ ఉంటే అక్కడికి తీసుకెళ్ళు',
 'tooltip-search-fulltext' => 'పేజీలలో ఈ పాఠ్యం కొరకు వెతుకు',
-'tooltip-p-logo' => 'à°®à±\8aà°¦à°\9fà°¿ à°ªà±\81à°\9fà°¨à±\81 à°¦à°°à±\8dశిà°\82à°\9aండి',
-'tooltip-n-mainpage' => 'తలపà±\81à°\9fà°¨à±\81 చూడండి',
-'tooltip-n-mainpage-description' => 'à°®à±\8aà°¦à°\9fà°¿ à°ªà±\81à°\9fà°¨à±\81 చూడండి',
+'tooltip-p-logo' => 'à°®à±\8aà°¦à°\9fà°¿ à°ªà±\87à°\9cà±\80 à°\9aà±\82à°¡ండి',
+'tooltip-n-mainpage' => 'à°®à±\8aà°¦à°\9fà°¿ à°ªà±\87à°\9cà±\80 చూడండి',
+'tooltip-n-mainpage-description' => 'à°®à±\8aà°¦à°\9fà°¿ à°ªà±\87à°\9cà±\80 చూడండి',
 'tooltip-n-portal' => 'ప్రాజెక్టు గురించి, మీరేం చేయవచ్చు, సమాచారం ఎక్కడ దొరుకుతుంది',
 'tooltip-n-currentevents' => 'వర్తమాన ఘటనల యొక్క నేపథ్యాన్ని తెలుసుకోండి',
 'tooltip-n-recentchanges' => 'వికీలో ఇటీవల జరిగిన మార్పుల జాబితా.',
 'tooltip-n-randompage' => 'ఓ యాదృచ్చిక పేజీని చూడండి',
-'tooltip-n-help' => 'à°¤à±\86à°²à±\81à°¸à±\81à°\95à±\8bడానిà°\95à°¿ à°\93 à°®à°\82à°\9aà°¿ à°ªà±\8dà°°à°¦à±\87à°¶à°\82.',
-'tooltip-t-whatlinkshere' => 'à°\87à°\95à±\8dà°\95à°¡à°¿à°¤à±\8b à°®à±\81డిపడియà±\81à°¨à±\8dà°¨ à°\85à°¨à±\8dని à°µà°¿à°\95à±\80 à°ªà±\81à°\9fà°² à°²à°\82à°\95à±\86à°²à±\81',
-'tooltip-t-recentchangeslinked' => 'à°\88 à°ªà±\81à°\9fà°\95à±\81 à°®à±\81డివడియà±\81à°¨à±\8dà°¨ à°ªà±\81à°\9fà°²లో జరిగిన ఇటీవలి మార్పులు',
+'tooltip-n-help' => 'à°¨à±\87à°°à±\8dà°\9aà±\81à°\95à±\81à°¨à±\87 à°\9aà±\8bà°\9fà±\81',
+'tooltip-t-whatlinkshere' => 'à°\87à°\95à±\8dà°\95à°¡à°¿à°\95à°¿ à°²à°¿à°\82à°\95à±\88 à°\89à°¨à±\8dà°¨ à°\85à°¨à±\8dని à°µà°¿à°\95à±\80 à°ªà±\87à°\9cà±\80à°² à°\9cాబితా',
+'tooltip-t-recentchangeslinked' => 'à°\88 à°ªà±\87à°\9cà±\80à°\95à°¿ à°²à°¿à°\82à°\95à±\88 à°\89à°¨à±\8dà°¨ à°ªà±\87à°\9cà±\80à°²à±\8dలో జరిగిన ఇటీవలి మార్పులు',
 'tooltip-feed-rss' => 'ఈ పేజీకి RSS ఫీడు',
 'tooltip-feed-atom' => 'ఈ పేజీకి Atom ఫీడు',
 'tooltip-t-contributions' => 'ఈ వాడుకరి యొక్క రచనల జాబితా చూడండి',
 'tooltip-t-emailuser' => 'ఈ వాడుకరికి ఓ ఈమెయిలు పంపండి',
 'tooltip-t-upload' => 'దస్త్రాలను ఎక్కించండి',
 'tooltip-t-specialpages' => 'అన్ని ప్రత్యేక పుటల యొక్క జాబితా',
-'tooltip-t-print' => 'à°\88 à°ªà±\81à°\9f à°¯à±\8aà°\95à±\8dà°\95 à°\85à°\9aà±\8dà°\9aà±\81à°¤à±\80యదà°\97à±\8dà°\97 à°\95à±\82à°°à±\8dపు',
-'tooltip-t-permalink' => 'à°ªà±\81à°\9f యొక్క ఈ కూర్పుకి శాశ్వత లంకె',
-'tooltip-ca-nstab-main' => 'à°®à±\81à°\9aà±\8dà°\9aà°\9fà±\8dà°² à°ªà±\81à°\9fà°¨à±\81 చూడండి',
+'tooltip-t-print' => 'à°\88 à°ªà±\87à°\9cà±\80 à°¯à±\8aà°\95à±\8dà°\95 à°®à±\81à°¦à±\8dరణా à°°à±\82పు',
+'tooltip-t-permalink' => 'à°ªà±\87à°\9cà±\80 యొక్క ఈ కూర్పుకి శాశ్వత లంకె',
+'tooltip-ca-nstab-main' => 'విషయపà±\81 à°ªà±\87à°\9cà±\80ని చూడండి',
 'tooltip-ca-nstab-user' => 'వాడుకరి పేజీని చూడండి',
 'tooltip-ca-nstab-media' => 'మీడియా పేజీని చూడండి',
 'tooltip-ca-nstab-special' => 'ఇది ఒక ప్రత్యేక పుట, దీన్ని మీరు సరిదిద్దలేరు',
@@ -2900,7 +2918,7 @@ $2',
 'tooltip-watchlistedit-raw-submit' => 'వీక్షణ జాబితాను తాజాకరించు',
 'tooltip-recreate' => 'పేజీ తుడిచివేయబడ్డాకానీ మళ్ళీ సృష్టించు',
 'tooltip-upload' => 'ఎగుమతి మొదలుపెట్టు',
-'tooltip-rollback' => '"à°°à°¦à±\8dà°¦à±\81à°\9aà±\87యి" à°\85à°¨à±\87ది à°\88 à°ªà±\87à°\9cà±\80ని à°\9aివరిà°\97à°¾ à°®à°¾à°°à±\8dà°\9aినవారి à°®à°¾à°°à±\8dà°ªà±\81లని రద్దుచేస్తుంది',
+'tooltip-rollback' => '"à°°à°¦à±\8dà°¦à±\81à°\9aà±\87యి" à°\85à°¨à±\87ది à°\88 à°ªà±\87à°\9cà±\80ని à°\9aివరిà°\97à°¾ à°®à°¾à°°à±\8dà°\9aినవారి à°®à°¾à°°à±\8dà°ªà±\81లనà±\81 à°\92à°\95à±\8dà°\95à°¨à±\8aà°\95à±\8dà°\95à±\81à°¤à±\8b రద్దుచేస్తుంది',
 'tooltip-undo' => '"దిద్దుబాటుని రద్దుచేయి" ఈ మార్పుని రద్దుచేస్తుంది మరియు దిద్దుబాటు ఫారాన్ని మునుజూపులో తెరుస్తుంది.
 సారాంశానికి కారణాన్ని చేర్చే వీలుకల్పిస్తుంది',
 'tooltip-preferences-save' => 'అభిరుచులను భద్రపరచు',
@@ -3078,8 +3096,9 @@ $1',
 # Bad image list
 'bad_image_list' => 'కింద తెలిపిన తీరులో కలపాలి:
 
-జాబితాలో ఉన్నవాటినే (* గుర్తుతో మొదలయ్యే వాక్యాలు) పరిగణలోకి తీసుకుంటారు. వ్యాక్యంలో ఉన్న మొదటి లింకు ఒక చెడిపోయిన బొమ్మకు లింకు అయ్యుండాలి.
-అదే వాక్యంలో ఈ లింకు తరువాత వచ్చే లింకులను పట్టించుకోదు, ఆ పేజీలలో బొమ్మలు సరిగ్గా చేర్చారని భావిస్తుంది.',
+జాబితాలో ఉన్నవే (* గుర్తుతో మొదలయ్యే వాక్యాలు) పరిగణించబడతాయి.
+వాక్యంలో ఉన్న మొదటి లింకు ఒక చెడిపోయిన ఫైలుకు లింకు అయ్యుండాలి.
+ఆ వాక్యంలో తరువాత వచ్చే లింకులను పట్టించుకోదు. అంటే, ఆ పేజీలలో బొమ్మలు సరిగ్గా చేర్చారని భావిస్తుంది.',
 
 # Metadata
 'metadata' => 'మెటాడేటా',
@@ -3421,6 +3440,12 @@ $1',
 'exif-gpsdestdistance-m' => 'మైళ్ళు',
 'exif-gpsdestdistance-n' => 'నాటికల్ మైళ్ళు',
 
+'exif-gpsdop-excellent' => 'శ్రేష్ఠం ($1)',
+'exif-gpsdop-good' => 'ఉత్తమం ($1)',
+'exif-gpsdop-moderate' => 'మధ్యమం ($1)',
+'exif-gpsdop-fair' => 'పర్లేదు ($1)',
+'exif-gpsdop-poor' => 'బాగా లేదు ($1)',
+
 'exif-objectcycle-a' => 'ఉదయం మాత్రమే',
 'exif-objectcycle-p' => 'సాయంత్రం మాత్రమే',
 'exif-objectcycle-b' => 'ఉదయమూ మరియు సాయంత్రమూ',
@@ -3662,6 +3687,7 @@ $5
 'redirect-submit' => 'వెళ్ళు',
 'redirect-value' => 'విలువ:',
 'redirect-user' => 'వాడుకరి ID',
+'redirect-page' => 'పుట ఐడీ',
 'redirect-revision' => 'పేజీ కూర్పు',
 'redirect-file' => 'దస్త్రపు పేరు',
 'redirect-not-exists' => 'విలువ కనబడలేదు',
@@ -3851,7 +3877,7 @@ $5
 'api-error-nomodule' => 'అంతర్గత దోషము: ఎక్కింపు పర్వికము అమర్చబడలేదు.',
 'api-error-ok-but-empty' => 'అంతర్గత దోషము: సేవకము నుండి ఎటువంటి స్పందనా లేదు.',
 'api-error-overwrite' => 'ఈసరికే ఉన్న ఫైలును తిరగరాయడానికి అనుమతి లేదు.',
-'api-error-stashfailed' => 'à°\85à°\82తరà±\8dà°\97à°¤ à°ªà±\8aరపాà°\9fà±\81: తాత్కాలిక దస్త్రాన్ని భద్రపరచడంలో సేవకి విఫలమైంది.',
+'api-error-stashfailed' => 'à°\85à°\82తరà±\8dà°\97à°¤ à°²à±\8bà°ªà°\82: తాత్కాలిక దస్త్రాన్ని భద్రపరచడంలో సేవకి విఫలమైంది.',
 'api-error-publishfailed' => 'అంతర్గత లోపం: తాత్కాలిక ఫైలును ప్రచురించడంలో సర్వరు విఫలమైంది.',
 'api-error-stasherror' => 'ఫైలును ఖాజానాకు ఎక్కించడంలో లోపం దొర్లింది.',
 'api-error-timeout' => 'సర్వరు ఆశించిన సమయం లోపు స్పందించలేదు.',
@@ -3887,7 +3913,8 @@ $5
 
 # Special:ExpandTemplates
 'expandtemplates' => 'మూసలను విస్తరించు',
-'expand_templates_intro' => 'ఈ ప్రత్యేక పేజీ మీరిచ్చిన మూసలను పూర్తిగా విస్తరించి, చూపిస్తుంది. ఇది <nowiki>{{</nowiki>#language:...}} వంటి పార్సరు ఫంక్షన్లను, <nowiki>{{</nowiki>CURRENTDAY}} వంటి చరరాశులను(వేరియబుల్) కూడా విస్తరిస్తుంది &mdash; నిజానికి జమిలి(మీసాల) బ్రాకెట్లలో ఉన్న ప్రతీదాన్నీ ఇది విస్తరిస్తుంది. మీడియావికీ నుండి సంబంధిత పార్సరు స్టేజిని పిలిచి ఇది ఈ పనిని సాధిస్తుంది.',
+'expand_templates_intro' => 'ఈ ప్రత్యేక పేజీ మీరిచ్చిన మూసలను పూర్తిగా విస్తరించి, చూపిస్తుంది. ఇది <code><nowiki>{{</nowiki>#language:...}}</code> వంటి పార్సరు ఫంక్షన్లను, <code><nowiki>{{</nowiki>CURRENTDAY}}</code> వంటి చరరాశులను (వేరియబుల్) కూడా విస్తరిస్తుంది. 
+నిజానికి ఇది మీసాల బ్రాకెట్లలో ఉన్న ప్రతీదాన్నీ విస్తరిస్తుంది.',
 'expand_templates_title' => '{{FULLPAGENAME}} మొదలగు వాటి కొరకు సందర్భ శీర్షిక:',
 'expand_templates_input' => 'విస్తరించవలసిన పాఠ్యం:',
 'expand_templates_output' => 'ఫలితం',
@@ -3900,6 +3927,4 @@ $5
 'expand_templates_generate_rawhtml' => 'ముడి HTML ను చూపించు',
 'expand_templates_preview' => 'మునుజూపు',
 
-# Unknown messages
-'uploadinvalidxml' => 'ఎక్కించిన ఫైలులోని XML ను పార్సు చెయ్యలేకపోయాం.',
 );
index 8b805f8..a910e8e 100644 (file)
@@ -359,7 +359,6 @@ $messages = array(
 'vector-action-protect' => 'ป้องกัน',
 'vector-action-undelete' => 'กู้คืน',
 'vector-action-unprotect' => 'เปลี่ยนค่าการป้องกัน',
-'vector-simplesearch-preference' => 'เปิดใช้งานแถบค้นหาอย่างง่าย (เฉพาะหน้าตาเวกเตอร์)',
 'vector-view-create' => 'สร้าง',
 'vector-view-edit' => 'แก้ไข',
 'vector-view-history' => 'ดูประวัติ',
index e3a4205..c738797 100644 (file)
@@ -186,7 +186,6 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
 'vector-action-protect' => 'Goraga al',
 'vector-action-undelete' => 'Öçürmäni yzyna al',
 'vector-action-unprotect' => 'Goragy üýtget',
-'vector-simplesearch-preference' => 'Giňeldilen gözleg tekliplerini aç (Diňe Vector bezegi üçin)',
 'vector-view-create' => 'Döret',
 'vector-view-edit' => 'Redaktirle',
 'vector-view-history' => 'Geçmişi gör',
index acabe3d..7275cec 100644 (file)
@@ -311,7 +311,6 @@ $messages = array(
 'vector-action-protect' => 'Ipagsanggalang',
 'vector-action-undelete' => 'Alisin ang pagbubura',
 'vector-action-unprotect' => 'Baguhin ang pagsasanggalang',
-'vector-simplesearch-preference' => 'Paganahin ang pinainam na bar ng paghahanap (pabalat na Vector lang)',
 'vector-view-create' => 'Likhain',
 'vector-view-edit' => 'Baguhin',
 'vector-view-history' => 'Tingnan ang kasaysayan',
@@ -588,7 +587,7 @@ Huwag kalimutang baguhin ang iyong [[Special:Preferences|mga kagustuhan sa {{SIT
 'userlogin-joinproject' => 'Sumali sa {{SITENAME}}',
 'nologin' => 'Wala ka pang kuwenta? $1.',
 'nologinlink' => 'Lumikha ng kuwenta',
-'createaccount' => 'Lumikha ng kuwenta',
+'createaccount' => 'Lumikha ng akawnt',
 'gotaccount' => 'May kuwenta ka na ba? $1.',
 'gotaccountlink' => 'Lumagda',
 'userlogin-resetlink' => 'Nakalimutan mo ang iyong mga detalyeng panglagda?',
@@ -682,6 +681,8 @@ Maghintay po muna bago subukan uli.',
 'login-abort-generic' => 'Bigo ang paglagda mo - Pinigil',
 'loginlanguagelabel' => 'Wika: $1',
 'suspicious-userlogout' => "Tinanggihan ang inyong kahilingang umalis sa pagkalagda dahil tila ito ay ipinadala ng sirang pambasa-basa o apoderadong pambaon (''caching proxy'')",
+'pt-createaccount' => 'Lumikha ng akawnt',
+'pt-userlogout' => 'Umalis sa pagkakatala',
 
 # Email sending
 'php-mail-error-unknown' => 'Hindi malamang kamalian sa tungkulin ng liham ng PHP ()',
@@ -689,8 +690,7 @@ Maghintay po muna bago subukan uli.',
 
 # Change password dialog
 'changepassword' => 'Baguhin ang hudyat',
-'resetpass_announce' => 'Lumagda ka sa pamamagitan ng isang pansamantalang ini-e-liham na kodigo.
-Para tapusin ang paglagda, dapat kang magtakda ng isang bagong hudyat dito:',
+'resetpass_announce' => 'Para sa ganap na pagtala, magtalaga ng panibagong password.',
 'resetpass_text' => '<!-- Magdagdag ng teksto rito -->',
 'resetpass_header' => 'Baguhin ang hudyat ng kuwenta',
 'oldpassword' => 'Lumang hudyat:',
@@ -704,7 +704,11 @@ Para tapusin ang paglagda, dapat kang magtakda ng isang bagong hudyat dito:',
 'resetpass-submit-cancel' => 'Kanselahin',
 'resetpass-wrong-oldpass' => 'Hindi tanggap na pansamantala o pangkasalukuyang hudyat.
 Maaaring matagumpay mo nang nabago ang iyong hudyat o nakahiling na ng isang bagong pansamantalang hudyat.',
+'resetpass-recycled' => 'Ireset ang iyong password sa pamamagitan ng paggamit ng iba pa maliban sa iyong ginagamit sa kasalukuyan.',
+'resetpass-temp-emailed' => 'Nakapagtala sa pamamagitan ng pansamantalang email code.
+Para sa ganap na pagtatala, magtakda ng panibagong password dito:',
 'resetpass-temp-password' => 'Pansamantalang hudyat:',
+'resetpass-expired-soft' => 'Napaso na ang iyong password at kailangan ireset. Pumili ng bagong password o iklik ang cancel upang i-reset sa ibang pagkakataon.',
 
 # Special:PasswordReset
 'passwordreset' => 'Muling pagtatakda ng hudyat',
index 7f47b88..2b4d928 100644 (file)
@@ -52,7 +52,6 @@ $specialPageAliases = array(
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Putim lain ananit long ol link:',
-'tog-justify' => "Soim ol paragraf i pulmapim sipes long lephan i go long raithan (''justify'')",
 'tog-hideminor' => 'Noken soim ol liklik senis insait long ol nupela senis',
 'tog-hidepatrolled' => 'Noken soim ol lukluk senis insait long ol nupela senis',
 'tog-newpageshidepatrolled' => 'Noken soim ol lukluk senis insait long ol nupela pes',
@@ -61,9 +60,7 @@ $messages = array(
 'tog-numberheadings' => 'Putim ol namba i go long wanwan hap bilong pes',
 'tog-showtoolbar' => 'Soim ol liklik link long wokim senis kwiktaim (i nidim JavaScript)',
 'tog-editondblclick' => 'Senisim pes taim yu paitim tupela taim kwiktaim (i nidim JavaScript)',
-'tog-editsection' => 'Soim ol [senisim] link long wanwan hap bilong ol pes',
 'tog-editsectiononrightclick' => 'Senisim ol hap bilong pes taim yu paitim nem bilong hap<br />wantaim raithan-klik (i nidim Javascript)',
-'tog-showtoc' => 'Soim ol nem bilong hap insait long liklik bokis, taim igat antap long 3 hap long pes',
 'tog-rememberpassword' => 'Holim yusanem bilong mi long dispela komputa (holim pas longpela taim $1 {{PLURAL:$1|de|de}})',
 'tog-watchcreations' => 'Putim ol nupela pes mi wokim na fail mi salim long lukautbuk',
 'tog-watchdefault' => 'Putim ol pes na fail mi senisim long lukautbuk bilong mi',
index a6f20b3..7333c67 100644 (file)
@@ -37,6 +37,7 @@
  * @author LuCKY
  * @author Mach
  * @author Manco Capac
+ * @author Marmase
  * @author Meelo
  * @author Metal Militia
  * @author Mirzali
@@ -893,6 +894,9 @@ Devam etmeden önce $1 bekleyin.',
 'suspicious-userlogout' => 'Çıkış isteğiniz reddedildi çünkü bozuk bir tarayıcı ya da önbellekli vekil tarafından gönerilmiş gibi görünüyor.',
 'createacct-another-realname-tip' => 'Gerçek adınız isteğe bağlıdır.
 Eğer gerçek adınızı belirtirseniz, çalışmalarınıza atıfta bulunulması için de kullanılacaktır.',
+'pt-login' => 'Giriş yap',
+'pt-createaccount' => 'Hesap oluştur',
+'pt-userlogout' => 'Oturumu kapat',
 
 # Email sending
 'php-mail-error-unknown' => "PHP's mail() fonksiyonunda bilinmeyen hata",
@@ -901,8 +905,7 @@ Eğer gerçek adınızı belirtirseniz, çalışmalarınıza atıfta bulunulmas
 
 # Change password dialog
 'changepassword' => 'Parolayı değiştir',
-'resetpass_announce' => 'Size gönderilen muvakkat bir parola ile oturum açtınız.
-Girişi bitirmek için, burada yeni bir parola yazın:',
+'resetpass_announce' => 'Girişinizi tamamlayabilmeniz için, yeni bir parola oluşturmanız gereklidir.',
 'resetpass_text' => '<!-- Metini buraya ekleyin -->',
 'resetpass_header' => 'Hesap şifresini değiştir',
 'oldpassword' => 'Eski parola',
@@ -918,8 +921,11 @@ Lütfen tekrar denemeden önce $1 bekleyin.',
 'resetpass-submit-cancel' => 'İptal',
 'resetpass-wrong-oldpass' => 'Geçersiz geçici veya güncel şifre.
 Şifrenizi zaten başarıyla değiştirdiniz ya da yeni bir geçici şifre istediniz.',
+'resetpass-recycled' => 'Lütfen parolanızı eski parolanızdan farklı olarak değiştirin.',
 'resetpass-temp-password' => 'Geçici parola:',
 'resetpass-abort-generic' => 'Parola değişikliği bir uzantı tarafından iptal edildi.',
+'resetpass-expired' => 'Parolanızın süresi bitti. Lütfen, giriş için yeni bir parola oluşturun.',
+'resetpass-expired-soft' => 'Parolanızın süresi bitti ve değiştirilmesi gerekiyor. Lütfen, yeni bir parola seçin veya daha sonra oluşturmak için vazgeç e tıklayın.',
 
 # Special:PasswordReset
 'passwordreset' => 'Parola sıfırlama',
@@ -1399,6 +1405,8 @@ Gezinti bağlantılarının bu sütunu sıfırlayacağını unutmayın.',
 'showhideselectedversions' => 'Seçili sürümleri göster/gizle',
 'editundo' => 'geri al',
 'diff-empty' => '(Fark yok)',
+'diff-multi-sameuser' => '(Aynı kullanıcıdan {{PLURAL:$1|bir ara revizyon|$1 ara revizyon}} gösterilmiyor)',
+'diff-multi-otherusers' => '({{PLURAL:$2|Bir diğer kullanıcıdan|$2 kullanıcıdan}} {{PLURAL:$1|bir ara revizyon|$1 ara revizyon}} gösterilmiyor)',
 'diff-multi-manyusers' => '($2 kullancıdan fazla {{PLURAL:$2|kullanıcı|kullanıcı}} tarafından yapılan {{PLURAL:$1|bir ara revizyon|$1 ara revizyon}} gösterilmiyor)',
 'difference-missing-revision' => 'Bu farkın {{PLURAL:$2|bir revizyonu|$2 revizyonu}} ($1) {{PLURAL:$2|bulunamadı|bulunamadı}}.
 
@@ -1763,11 +1771,23 @@ Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz
 'rcnotefrom' => "'''$2''' tarihinden itibaren yapılan değişiklikler aşağıdadır (en fazla <b>$1</b> tanesi gösterilmektedir).",
 'rclistfrom' => '$1 tarihinden itibaren yeni değişiklikleri göster',
 'rcshowhideminor' => 'Küçük değişiklikleri $1',
+'rcshowhideminor-show' => 'Göster',
+'rcshowhideminor-hide' => 'Gizle',
 'rcshowhidebots' => 'botları $1',
+'rcshowhidebots-show' => 'Göster',
+'rcshowhidebots-hide' => 'Gizle',
 'rcshowhideliu' => 'Kayıtlı kullanıcıları $1',
+'rcshowhideliu-show' => 'Göster',
+'rcshowhideliu-hide' => 'Gizle',
 'rcshowhideanons' => 'Anonim kullanıcıları $1',
+'rcshowhideanons-show' => 'Göster',
+'rcshowhideanons-hide' => 'Gizle',
 'rcshowhidepatr' => 'İzlenmiş değişiklikleri $1',
+'rcshowhidepatr-show' => 'Göster',
+'rcshowhidepatr-hide' => 'Gizle',
 'rcshowhidemine' => 'Değişikliklerimi $1',
+'rcshowhidemine-show' => 'Göster',
+'rcshowhidemine-hide' => 'Gizle',
 'rclinks' => 'Son $2 günde yapılan son $1 değişikliği göster;<br /> $3',
 'diff' => 'fark',
 'hist' => 'geçmiş',
@@ -1892,6 +1912,7 @@ Dosyayı tekrar yüklemeye devam etmeden önce, bastırılmış dosya verisini g
 'uploaddisabledtext' => 'Dosya yüklemeleri devredışı bırakılmıştır.',
 'php-uploaddisabledtext' => 'PHP dosyası yüklemeleri devre dışıdır. Lütfen file_uploads ayarını kontrol edin.',
 'uploadscripted' => 'Bu dosya bir internet tarayıcısı tarafından hatalı çevrilebilecek bir HTML veya script kodu içermektedir.',
+'uploadinvalidxml' => 'Yüklenen dosyadaki XML işlenemedi.',
 'uploadvirus' => 'Bu dosya virüslüdür! Detayları: $1',
 'uploadjava' => 'Dosya, bir Java .classdosyası içeren bir ZIP dosyasıdır.
 Java dosyalarının yüklenmesine izin verilmemektedir, zira güvenlik kısıtlamalarının atlanmasına neden olabilmektedirler.',
@@ -2261,10 +2282,20 @@ Her satırın içerdiği bağlantılar; birinci ve ikinci yönlendirme, ayrıca
 'deadendpagestext' => 'Aşağıdaki sayfalar, {{SITENAME}} sitesinde diğer sayfalara bağlantı vermiyor.',
 'protectedpages' => 'Koruma altındaki sayfalar',
 'protectedpages-indef' => 'Sadece süresiz korumalar',
+'protectedpages-summary' => 'Bu sayfa şu anda koruma altında olan mevcut sayfaları listeler. Oluşturulması korunan başlıkların bir listesi için [[{{#special:ProtectedTitles}}]] sayfasına bakın.',
 'protectedpages-cascade' => 'Sadece ardışık korumalar',
 'protectedpages-noredirect' => 'Yönlendirmeleri gizle',
 'protectedpagesempty' => 'Şu anda, bu parametrelerle korunan hiç bir sayfa yok.',
+'protectedpages-timestamp' => 'Zaman damgası',
+'protectedpages-page' => 'Madde',
+'protectedpages-expiry' => 'Bitiş tarihi',
+'protectedpages-performer' => 'Koruyan kullanıcı',
+'protectedpages-params' => 'Koruma parametreleri',
+'protectedpages-reason' => 'Sebep',
+'protectedpages-unknown-timestamp' => 'Bilinmiyor',
+'protectedpages-unknown-performer' => 'Bilinmeyen kullanıcı',
 'protectedtitles' => 'Korunan başlıklar',
+'protectedtitles-summary' => 'Bu sayfa şu anda oluşturulması korunan başlıkları listeler. Koruma altında olan mevcut sayfaların bir listesi için [[{{#special:ProtectedPages}}]] sayfasına bakın.',
 'protectedtitlesempty' => 'Şu anda, bu parametrelerle korunan hiç bir başlık yok.',
 'listusers' => 'Kullanıcı listesi',
 'listusers-editsonly' => 'Sadece değişiklik yapan kullanıcıları göster',
@@ -2450,6 +2481,7 @@ Bundan sonra, bu sayfaya ve ilgili tartışma sayfasına yapılacak değişiklik
 'watchmethod-list' => 'izlediğiniz sayfalarda yapılan son değişiklikler kontrol ediliyor',
 'watchlistcontains' => 'İzleme listenizde $1 tane {{PLURAL:$1|sayfa|sayfa}} var.',
 'iteminvalidname' => "'$1' öğesi ile sorun, geçersiz isim...",
+'wlnote2' => 'Aşağıdakiler, son {{PLURAL:$1|bir saat|<strong>$1</strong> saat}} içindeki değişikliklerdir, $2, $3 tarihi itibariyle.',
 'wlshowlast' => 'Son $1 saati $2 günü göster $3',
 'watchlist-options' => 'İzleme listesi seçenekleri',
 
@@ -3009,6 +3041,7 @@ Genel MediaWiki yerelleştirmesine katkıda bulunmak isterseniz, lütfen [https:
 'allmessages-prefix' => 'Önek ile filtrele:',
 'allmessages-language' => 'Dil:',
 'allmessages-filter-submit' => 'Git',
+'allmessages-filter-translate' => 'Çevir',
 
 # Thumbnails
 'thumbnail-more' => 'Büyüt',
@@ -3025,6 +3058,7 @@ $2',
 'thumbnail_image-type' => 'Görüntü türü desteklenmiyor',
 'thumbnail_gd-library' => 'Eksik GD kütüphanesi yapılandırması: kayıp fonksiyon $1',
 'thumbnail_image-missing' => 'Dosya kayıp gibi görünüyor: $1',
+'thumbnail_image-failure-limit' => 'Yakın zamanda bu küçük resmin oluşturulması için çok fazla başarısız  girişim oldu ($1 ya da daha fazla). Lütfen daha sonra yeniden deneyin.',
 
 # Special:Import
 'import' => 'Sayfaları aktar',
@@ -3074,6 +3108,7 @@ Geçici dosya kayıp.',
 'import-error-special' => '"$1" sayfası içe aktarılamadı çünkü sayfalara izin vermeyen özel bir ad alanına ait.',
 'import-error-invalid' => '"$1" sayfası içe aktarılamadı çünkü sayfa adı geçersiz.',
 'import-error-unserialize' => '"$1" sayfasının $2 revizyonu serileştirilmesi geri alınamıyor. Revizyonun $4 olarak serileştirilmiş $3 içerik modelini kullandığı raporlandı.',
+'import-error-bad-location' => '"$1" sayfası için $3 içerik modelini kullanan $2 revizyonu, model sayfada desteklenmediğinden, bu vikide saklanamıyor.',
 'import-options-wrong' => 'Yanlış {{PLURAL:$2|seçenek|seçenek}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Verilen kök sayfa geçersiz bir başlık.',
 'import-rootpage-nosubpage' => 'Kök sayfanın "$1" ad alanı alt sayfalara izin vermiyor.',
@@ -4263,6 +4298,4 @@ Aslında, çift ayraçlı hemen hemen her şeyi genişletir.',
 'expand_templates_generate_rawhtml' => 'Ham HTML göster',
 'expand_templates_preview' => 'Önizleme',
 
-# Unknown messages
-'uploadinvalidxml' => 'Yüklenen dosyadaki XML işlenemedi.',
 );
index 6851d4b..ea628b1 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Tatar (Татарча/Tatarça)
+/** Tatar (татарча/tatarça)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -7,8 +7,12 @@
  * @ingroup Language
  * @file
  *
- * @comment Placeholder for Tatar. Falls back to Tatar in Cyrillic script.
  */
 
 $fallback = 'tt-cyrl, ru';
 
+$messages = array(
+# Delete
+'excontentauthor' => '',
+
+);
index 801a33a..eb963a4 100644 (file)
@@ -374,7 +374,6 @@ $messages = array(
 'vector-action-protect' => 'Яклау',
 'vector-action-undelete' => 'Кайтару',
 'vector-action-unprotect' => 'Яклауны үзгәртү',
-'vector-simplesearch-preference' => 'Җиңеләйтелгән эзләү юлын кушарга («Векторлы» бизәлеше өчен генә)',
 'vector-view-create' => 'Төзү',
 'vector-view-edit' => 'Үзгәртү',
 'vector-view-history' => 'Тарихын карау',
index ae89e0c..ca11cb9 100644 (file)
@@ -239,7 +239,6 @@ $messages = array(
 'vector-action-protect' => 'Yaqlaw',
 'vector-action-undelete' => 'Qaytaru',
 'vector-action-unprotect' => 'Yaqlawnı beterü',
-'vector-simplesearch-preference' => 'Ezläw öçen kiñäytelgän yärdäm xäbärlären kürsätü («Vektorlı» bizäleşe öçen genä qullanılıa)',
 'vector-view-create' => 'Tözü',
 'vector-view-edit' => 'Üzgärtü',
 'vector-view-history' => 'Tarixın qaraw',
index 46c76dc..dcdd5f3 100644 (file)
@@ -55,25 +55,23 @@ $messages = array(
 'tog-hidepatrolled' => 'Берпуметӥ тупатонъёслэн списоксэс партрулировать каремын воштонъёстэк возьматыны',
 'tog-newpageshidepatrolled' => 'Выль бамъёслэн списоксэс партрулировать каремын бамъёстэк возьматыны',
 'tog-extendwatchlist' => 'Чаклан списокын вань тупатонъёсты возьматыны (озьытэк берпуметӥоссэс гинэ)',
-'tog-usenewrc' => 'Выль тупатонъёслэн списоксэс умояллям сямен возьматыны (JavsScript кулэ)',
+'tog-usenewrc' => 'Выль тупатонъёслэсь списоксэс умояллям сямен возьматыны (JavsScript кулэ)',
 'tog-numberheadings' => 'Заголовокъёсты автоматически нумеровать карыны',
 'tog-showtoolbar' => 'Тупатон тӥрлыкъёслэн панельзэс возьматыны (JavaScript кулэ)',
-'tog-editondblclick' => 'Бамъёсты шырлэн валтӥсь зӥбонэз кык пол ӝог зӥбиськыкуз тупатыны (JavaScript кулэ)',
-'tog-editsection' => 'Котькуд секциез [тапатоно] чӧлсконэн возьматыны',
-'tog-editsectiononrightclick' => 'Cекциосты шырлэн бур кнопкаез заголовок вылын зӥбиськыкуз тупатыны (JavaScript кулэ)',
-'tog-showtoc' => 'Пуштросэз возьматоно (2-лэсь трос заголовокъем бамъёс понна)',
-'tog-rememberpassword' => 'Мынам пыроннимме та браузерлэн тодаз возьыны ($1 яке $1-лэсь ӧжытгес нунал ӵоже гинэ)',
+'tog-editondblclick' => 'Бамъёсты шырлэсь зӥбонзэ кык пол зӥбыса тупатыны (JavaScript кулэ)',
+'tog-editsectiononrightclick' => 'Cекциолэсь заголовок вылазы шырлэн бур кнопкаеныз зӥбыса тупатонзэс лэзьыны (JavaScript кулэ)',
+'tog-rememberpassword' => 'Мынэсьтым пыроннимме та браузерын возьыны ($1 нуналлэсь кемагес ӧвӧл)',
 'tog-watchcreations' => 'Мынэсьтым кылдытэм бамъёсме но ӝуткам файлъёсме чаклан списокам пыртыны',
-'tog-watchdefault' => 'Ð\91амÑ\8aÑ\91Ñ\81Ñ\82Ñ\8b, ÐºÑ\83дÑ\8aÑ\91Ñ\81Ñ\82Ñ\8dÑ\81 Ð¼Ð¾Ð½ Ñ\82Ñ\83паÑ\82Ó¥Ñ\81Ñ\8cко, Ð¼Ñ\8bнам Ñ\87аклкан списокам пыртыны',
-'tog-watchmoves' => 'Ð\91амÑ\8aÑ\91Ñ\81Ñ\82Ñ\8b, ÐºÑ\83дÑ\8aÑ\91Ñ\81Ñ\82Ñ\8dÑ\81 Ð¼Ð¾Ð½ Ð¼Ñ\83кеÑ\82 Ð¸Ð½Ñ\82Ñ\8bе Ð²Ñ\8bжÑ\82Ó¥Ñ\81Ñ\8cко, Ð¼Ñ\8bнам Ñ\87аклкан списокам пыртыны',
-'tog-watchdeletion' => 'Ð\91амÑ\8aÑ\91Ñ\81Ñ\82Ñ\8b, ÐºÑ\83дÑ\8aÑ\91Ñ\81Ñ\82Ñ\8dÑ\81 Ð¼Ð¾Ð½ ÓµÑ\83Ñ\88иÑ\81Ñ\8cко, Ð¼Ñ\8bнам Ñ\87аклкан списоке пыртыны',
+'tog-watchdefault' => 'Ð\9cÑ\8bнÑ\8dÑ\81Ñ\8cÑ\82Ñ\8bм Ñ\82Ñ\83паÑ\82Ñ\8dм Ð±Ð°Ð¼Ñ\8aÑ\91Ñ\81ме Ð½Ð¾ Ñ\84айлÑ\8aÑ\91Ñ\81ме Ñ\87аклан списокам пыртыны',
+'tog-watchmoves' => 'Ð\9cÑ\8bнÑ\8dÑ\81Ñ\8cÑ\82Ñ\8bм Ð¼Ñ\83кеÑ\82 Ð¸Ð½Ñ\82Ñ\8bе Ð²Ñ\8bжÑ\82Ñ\8dм Ð±Ð°Ð¼Ñ\8aÑ\91Ñ\81ме Ð½Ð¾ Ñ\84айлÑ\8aÑ\91Ñ\81ме Ñ\87аклан списокам пыртыны',
+'tog-watchdeletion' => 'Ð\9cÑ\8bнÑ\8dÑ\81Ñ\8cÑ\82Ñ\8bм ÓµÑ\83Ñ\88Ñ\8bÑ\81а Ð±Ñ\8bдÑ\82Ñ\8dм Ð±Ð°Ð¼Ñ\8aÑ\91Ñ\81ме Ð½Ð¾ Ñ\84айлÑ\8aÑ\91Ñ\81ме Ñ\87аклан списоке пыртыны',
 'tog-minordefault' => 'Вань воштонъёсты «ичи воштон» пусэн пусйыны',
 'tog-previewontop' => 'Утён азьвыл учконлэсь укнозэ тупатон укнолэсь азьвылгес возьматыны',
 'tog-previewonfirst' => 'Бам нырысьсэ утиськыкуз уётн азьвыл учконэз возьматыны',
 
 'underline-always' => 'Котьку',
 'underline-never' => 'Ноку',
-'underline-default' => 'Браузерысь настройкаосты уже кутоно',
+'underline-default' => 'Браузерлэсь настройкаоссэ уже кутоно',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Тупатон бусыысь шрифтлэн стилез',
@@ -135,18 +133,18 @@ $messages = array(
 'dec' => 'тст',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категориос}}',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категориос}}',
 'category_header' => '«$1» категориысь бамъёс',
 'subcategories' => 'Подкатегориос',
 'category-media-header' => '«$1» категориысь файлъёс',
 'category-empty' => "''Та категориын али бамъёс но, файлъёс но ӧвӧл.''",
-'hidden-categories' => '{{PLURAL:$1|Ватэм категория|Ватэм категориос}}',
+'hidden-categories' => '{{PLURAL:$1|1=Ватэм категория|Ватэм категориос}}',
 'hidden-category-category' => 'Ватэм категориос',
-'category-subcat-count' => '{{PLURAL:$2|Со категориын одӥг подкатегория гинэ.|Возьматэмын $1 подкатегория $2 пӧлысь.}}',
+'category-subcat-count' => '{{PLURAL:$2|1=Со категориын одӥг подкатегория гинэ.|Возьматэмын $1 подкатегория $2 пӧлысь.}}',
 'category-subcat-count-limited' => 'Со категориын $1 подкатегория.',
-'category-article-count' => '{{PLURAL:$2|Со категориын одӥг бам гинэ.|Возьматэмын $1 бам $2 пӧлысь.}}',
+'category-article-count' => '{{PLURAL:$2|1=Со категориын одӥг бам гинэ.|Возьматэмын $1 бам $2 пӧлысь.}}',
 'category-article-count-limited' => 'Со категориын $1 бам.',
-'category-file-count' => '{{PLURAL:$2|Со категориын одӥг файл гинэ.|Возьматэмын $1 файл $2 пӧлысь.}}',
+'category-file-count' => '{{PLURAL:$2|1=Со категориын одӥг файл гинэ.|Возьматэмын $1 файл $2 пӧлысь.}}',
 'category-file-count-limited' => 'Со категориын $1 файл.',
 'listingcontinuesabbrev' => 'азьлань',
 'index-category' => 'Индексировать кароно бамъёс',
@@ -155,7 +153,7 @@ $messages = array(
 'about' => 'Та сярысь',
 'article' => 'Статья',
 'mypage' => 'Ас бам',
-'mytalk' => 'викиавтор сярысь вераськон',
+'mytalk' => 'Ð\92икиавтор сярысь вераськон',
 'anontalk' => 'Со IP-адрес сярысь вераськон',
 'navigation' => 'Навигация',
 
@@ -191,7 +189,7 @@ $messages = array(
 'protect' => 'Утьыны',
 'talkpagelinktext' => 'Вераськон',
 'talk' => 'Вераськон',
-'toolbox' => 'Ð\98нÑ\81Ñ\82Ñ\80Ñ\83менÑ\82Ñ\8aÑ\91Ñ\81',
+'toolbox' => 'ТӥÑ\80лÑ\8bк',
 'jumptonavigation' => 'навигация',
 'jumptosearch' => 'утчан',
 
@@ -238,12 +236,12 @@ $messages = array(
 или '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} создать страницу с таким названием]'''</span>.",
 
 # Revision deletion
-'revdelete-radio-set' => 'Ð\91ен',
-'revdelete-radio-unset' => 'Ӧвӧл',
+'revdelete-radio-set' => 'Ð\92аÑ\82Ñ\8dм',
+'revdelete-radio-unset' => 'Адӟымон',
 
 # Search results
 'searchresults' => 'Шедьтэмын',
-'search-result-size' => '$1 кыл({{PLURAL:$2|1 word|$2 words}})',
+'search-result-size' => '$1 кыл({{PLURAL:$2|1=1 word|$2 words}})',
 
 # Preferences page
 'preferences' => 'настройкаос',
index 5eb04b6..f854fd2 100644 (file)
@@ -914,6 +914,9 @@ $1',
 'suspicious-userlogout' => 'Ваш запит на завершення сеанса відхилений, оскільки він схожий на запит, відправлений зіпсованим веб-оглядачем або кешуючим проксі-сервером.',
 'createacct-another-realname-tip' => "Справжнє ім'я є необов'язковим.
 Якщо ви вирішите надати його, то воно буде використовуватися для присвоєння користувачу авторства до його роботи.",
+'pt-login' => 'Увійти',
+'pt-createaccount' => 'Створити обліковий запис',
+'pt-userlogout' => 'Вийти',
 
 # Email sending
 'php-mail-error-unknown' => 'Невідома помилка в PHP-функції mail()',
@@ -922,7 +925,7 @@ $1',
 
 # Change password dialog
 'changepassword' => 'Змінити пароль',
-'resetpass_announce' => 'Ð\92и Ð²Ð²Ñ\96йÑ\88ли, Ð²Ð¸ÐºÐ¾Ñ\80иÑ\81Ñ\82овÑ\83Ñ\8eÑ\87и Ñ\82имÑ\87аÑ\81овий Ð¿Ð°Ñ\80олÑ\8c, Ñ\8fкий Ð¾Ñ\82Ñ\80имали ÐµÐ»ÐµÐºÑ\82Ñ\80онноÑ\8e Ð¿Ð¾Ñ\88Ñ\82оÑ\8e. Ð\94лÑ\8f Ð·Ð°Ð²ÐµÑ\80Ñ\88еннÑ\8f Ð²Ñ\85одÑ\83 Ð´Ð¾ Ñ\81иÑ\81Ñ\82еми, Ð²Ð¸ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ\96 Ð²ÐºÐ°Ð·Ð°Ñ\82и Ð½Ð¾Ð²Ð¸Ð¹ Ð¿Ð°Ñ\80олÑ\8c Ñ\82Ñ\83Ñ\82:',
+'resetpass_announce' => 'Ð\94лÑ\8f Ð·Ð°Ð²ÐµÑ\80Ñ\88еннÑ\8f Ð²Ñ\85одÑ\83 Ð²Ð¸ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ\96 Ð²Ñ\81Ñ\82ановиÑ\82и Ð½Ð¾Ð²Ð¸Ð¹ Ð¿Ð°Ñ\80олÑ\8c.',
 'resetpass_text' => '<!-- Додавайте текст сюди -->',
 'resetpass_header' => 'Змінити пароль облікового запису',
 'oldpassword' => 'Старий пароль:',
@@ -938,8 +941,13 @@ $1',
 'resetpass-submit-cancel' => 'Скасувати',
 'resetpass-wrong-oldpass' => 'Неправильний тимчасовий або поточний пароль.
 Можливо, ви вже успішно змінили пароль або зробили запит на новий тимчасовий пароль.',
+'resetpass-recycled' => 'Змініть свій пароль на щось інше, ніж ваш поточний пароль.',
+'resetpass-temp-emailed' => 'Ви ввійшли, використовуючи тимчасовий пароль, який отримали електронною поштою. 
+Для завершення входу в систему необхідно задати новий пароль:',
 'resetpass-temp-password' => 'Тимчасовий пароль:',
 'resetpass-abort-generic' => 'Зміну пароля було перервано розширенням.',
+'resetpass-expired' => 'Термін дії вашого пароля закінчився. Будь ласка, встановіть новий пароль для входу в систему.',
+'resetpass-expired-soft' => 'Термін дії вашого пароля закінчився, і тепер він повинен бути змінений. Будь ласка, виберіть новий пароль або натисніть «Скасувати», щоб змінити його пізніше.',
 
 # Special:PasswordReset
 'passwordreset' => 'Скинути пароль',
@@ -1802,11 +1810,23 @@ $1",
 'rcnotefrom' => 'Нижче відображені редагування з <strong>$2</strong> (до <strong>$1</strong>).',
 'rclistfrom' => 'Показати редагування починаючи з $1.',
 'rcshowhideminor' => '$1 незначні редагування',
+'rcshowhideminor-show' => 'Показати',
+'rcshowhideminor-hide' => 'Приховати',
 'rcshowhidebots' => '$1 ботів',
+'rcshowhidebots-show' => 'Показати',
+'rcshowhidebots-hide' => 'Приховати',
 'rcshowhideliu' => '$1 зареєстрованих користувачів',
+'rcshowhideliu-show' => 'Показати',
+'rcshowhideliu-hide' => 'Приховати',
 'rcshowhideanons' => '$1 анонімів',
+'rcshowhideanons-show' => 'Показати',
+'rcshowhideanons-hide' => 'Приховати',
 'rcshowhidepatr' => '$1 перевірені',
+'rcshowhidepatr-show' => 'Показати',
+'rcshowhidepatr-hide' => 'Приховати',
 'rcshowhidemine' => '$1 мої редагування',
+'rcshowhidemine-show' => 'Показати',
+'rcshowhidemine-hide' => 'Приховати',
 'rclinks' => 'Показати останні $1 редагувань за $2 днів<br />$3',
 'diff' => 'різн.',
 'hist' => 'історія',
@@ -1942,6 +1962,7 @@ $1",
 'uploaddisabledtext' => 'Можливість завантаження файлів відключена.',
 'php-uploaddisabledtext' => 'Завантаження файлів вимкнене у налаштуваннях PHP. Будь ласка, перевірте значення file_uploads.',
 'uploadscripted' => 'Файл містить HTML-код або скрипт, який може неправильно обробитися браузером.',
+'uploadinvalidxml' => 'Не вдалося проаналізувати XML у завантаженому файлі.',
 'uploadvirus' => 'Файл містить вірус! Див. $1',
 'uploadjava' => 'Файл є ZIP-архівом, що містить .class-файл Java.
 Завантаження Java-файлів не дозволене, бо вони можуть використовуватися для обходу системи безпеки.',
@@ -4480,6 +4501,4 @@ MediaWiki поширюється в надії, що вона буде кори
 'expand_templates_generate_rawhtml' => 'Показати сирий HTML',
 'expand_templates_preview' => 'Попередній перегляд',
 
-# Unknown messages
-'uploadinvalidxml' => 'Не вдалося проаналізувати XML у завантаженому файлі.',
 );
index 02728c1..d9240ce 100644 (file)
@@ -262,7 +262,6 @@ $messages = array(
 'vector-action-protect' => 'Himoyalash',
 'vector-action-undelete' => 'Tiklash',
 'vector-action-unprotect' => 'Himoyalashni oʻzgartirish',
-'vector-simplesearch-preference' => 'Soddalashtirilgan qidiruv qatorini koʻrsat (faqat «Vektorli» tashqi koʻrinish uchun)',
 'vector-view-create' => 'Yaratish',
 'vector-view-edit' => 'Tahrirlash',
 'vector-view-history' => 'Tarix',
@@ -751,7 +750,7 @@ Bu yerda: '''({{int:cur}})''' = hozirgi koʻrinish bilan farqi, '''({{int:last}}
 'shown-title' => 'Sahifada $1 ta natija koʻrsatish',
 'viewprevnext' => 'Koʻrish ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-exists' => "'''Ushbu vikida \"[[:\$1]]\" nomli sahifa mavjud.'''",
-'searchmenu-new' => '<strong>\'\'\'Ushbu vikida "[[:$1]]" sahifasini yarat!</strong> {{PLURAL:$2|0=|Shuningdek qidiruvingiz orqali topilgan sahifani qarang.|Shuningdek topilgan qidiruv natijalarini qarang.}}',
+'searchmenu-new' => '<strong>\'\'\'Ushbu vikida "[[:$1]]" sahifasini yarating!</strong> {{PLURAL:$2|0=|Shuningdek qidiruvingiz orqali topilgan sahifani qarang.|Shuningdek topilgan qidiruv natijalarini qarang.}}',
 'searchprofile-articles' => 'Maqolalar',
 'searchprofile-project' => 'Yordam va loyiha sahifalari',
 'searchprofile-images' => 'Multimedia',
index 5323ad4..b6dd205 100644 (file)
@@ -321,7 +321,6 @@ $messages = array(
 'vector-action-protect' => 'Protezi',
 'vector-action-undelete' => 'Recupera',
 'vector-action-unprotect' => 'Canbia ła protesion',
-'vector-simplesearch-preference' => "Abiłita ła sbara par ła riserca senplifegà (soło che par l'interfacia Vector)",
 'vector-view-create' => 'Crea',
 'vector-view-edit' => 'Canbia',
 'vector-view-history' => 'Varda ła storia',
index f1eb0a7..a5a3236 100644 (file)
@@ -249,7 +249,6 @@ $messages = array(
 'vector-action-protect' => 'Kaita',
 'vector-action-undelete' => 'Pördutada',
 'vector-action-unprotect' => 'Toižetada kaičend',
-'vector-simplesearch-preference' => 'Kävutada levitadud ecmižabud (vaiše Vektor-nägun täht)',
 'vector-view-create' => 'Säta',
 'vector-view-edit' => 'Redaktiruida',
 'vector-view-history' => 'Kacta istorii',
index 1d4ef60..3ab410c 100644 (file)
@@ -18,6 +18,7 @@
  * @author Neoneurone
  * @author Nguyễn Thanh Quang
  * @author Prenn
+ * @author Skye Darcy
  * @author Thaisk
  * @author Thanhtai2009
  * @author Tmct
@@ -864,6 +865,9 @@ Xin hãy bỏ qua thông điệp này nếu tài khoản này không phải do b
 'createacct-another-realname-tip' => 'Tên thật là không bắt buộc. 
 
 Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao của bạn.',
+'pt-login' => 'Đăng nhập',
+'pt-createaccount' => 'Tạo tài khoản',
+'pt-userlogout' => 'Đăng xuất',
 
 # Email sending
 'php-mail-error-unknown' => 'Lỗi không rõ trong hàm PHP mail()',
@@ -872,7 +876,7 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 
 # Change password dialog
 'changepassword' => 'Đổi mật khẩu',
-'resetpass_announce' => 'Bạn đã đăng nhập bằng mật khẩu tạm gửi qua thư điện tử. Để hoàn tất việc đăng nhập, bạn phải tạo lại mật khẩu mới tại đây:',
+'resetpass_announce' => 'Để hoàn tất việc đăng nhập, bạn phải tạo lại mật khẩu mới.',
 'resetpass_text' => '<!-- Nhập văn bản vào đây -->',
 'resetpass_header' => 'Đổi mật khẩu cho tài khoản',
 'oldpassword' => 'Mật khẩu cũ:',
@@ -887,8 +891,12 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'resetpass-submit-cancel' => 'Hủy bỏ',
 'resetpass-wrong-oldpass' => 'Mật khẩu tạm hoặc mật khẩu hiện thời không hợp lệ.
 Có thể bạn đã thay đổi thành công mật khẩu của mình hoặc đã yêu cầu cung cấp một mật khẩu tạm mới.',
+'resetpass-recycled' => 'Xin vui lòng chọn một mật khẩu khác với mật khẩu hiện tại.',
+'resetpass-temp-emailed' => 'Bạn đã đăng nhập bằng mật khẩu tạm gửi qua thư điện tử. Để hoàn tất việc đăng nhập, bạn phải tạo lại mật khẩu mới tại đây:',
 'resetpass-temp-password' => 'Mật khẩu tạm:',
 'resetpass-abort-generic' => 'Một phần mở rộng đã hủy bỏ tác vụ thay đổi mật khẩu.',
+'resetpass-expired' => 'Mật khẩu của bạn đã hết hạn. Xin vui lòng tạo lại mật khẩu mới để đăng nhập.',
+'resetpass-expired-soft' => 'Mật khẩu của bạn đã hết hạn và cần được đặt lại. Xin vui lòng chọn một mật khẩu mới lúc bây giờ hoặc bấm Hủy bỏ để đặt lại sau.',
 
 # Special:PasswordReset
 'passwordreset' => 'Tái tạo mật khẩu',
@@ -1741,8 +1749,14 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 '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ỏ',
+'rcshowhideminor-show' => 'Hiện',
+'rcshowhideminor-hide' => 'Ẩn',
 'rcshowhidebots' => '$1 sửa đổi bot',
+'rcshowhidebots-show' => 'Hiện',
+'rcshowhidebots-hide' => 'Ẩn',
 'rcshowhideliu' => '$1 thành viên đăng ký',
+'rcshowhideliu-show' => 'Hiện',
+'rcshowhideliu-hide' => 'Ẩn',
 'rcshowhideanons' => '$1 sửa đổi vô danh',
 'rcshowhidepatr' => '$1 sửa đổi đã tuần tra',
 'rcshowhidemine' => '$1 sửa đổi của tôi',
@@ -1872,6 +1886,7 @@ Bạn nên xin một người có quyền xem dữ liệu tập tin bị đàn 
 'uploaddisabledtext' => 'Chức năng tải tập tin đã bị tắt.',
 'php-uploaddisabledtext' => 'Việc tải tập tin trong PHP đã bị tắt. Xin hãy kiểm tra lại thiết lập file_uploads.',
 'uploadscripted' => 'Tập tin này có chứa mã HTML hoặc kịch bản có thể khiến trình duyệt web thông dịch sai.',
+'uploadinvalidxml' => 'Không thể phân tích mã XML trong tập tin tải lên.',
 'uploadvirus' => 'Tập tin có virút! Chi tiết: $1',
 'uploadjava' => 'Tập tin ZIP này chứa một tập tin Java .class.
 Không được phép tải lên các tập tin Java, bởi vì chúng có thể vượt qua các hạn chế bảo mật.',
@@ -2241,10 +2256,20 @@ Các mục <del>bị gạch bỏ</del> là các trang đã được sửa.',
 'deadendpagestext' => 'Các trang này không có liên kết đến trang khác trong {{SITENAME}}.',
 'protectedpages' => 'Trang bị khóa',
 'protectedpages-indef' => 'Chỉ hiển thị khóa vô hạn',
+'protectedpages-summary' => 'Danh sách này liệt kê các trang hiện đang bị khóa. Xem danh sách các tên trang bị khóa không được tạo ra tại [[{{#special:ProtectedTitles}}]].',
 'protectedpages-cascade' => 'Chỉ hiển thị khóa theo tầng',
 'protectedpages-noredirect' => 'Ẩn trang đổi hướng',
 'protectedpagesempty' => 'Hiện không có trang nào bị khóa với các thông số này.',
+'protectedpages-timestamp' => 'Dấu thời gian',
+'protectedpages-page' => 'Trang',
+'protectedpages-expiry' => 'Hết hạn',
+'protectedpages-performer' => 'Người dùng khóa',
+'protectedpages-params' => 'Chế độ khóa',
+'protectedpages-reason' => 'Lý do',
+'protectedpages-unknown-timestamp' => 'Không rõ',
+'protectedpages-unknown-performer' => 'Người dùng không rõ',
 'protectedtitles' => 'Tên trang bị khóa',
+'protectedtitles-summary' => 'Danh sách này liệt kê các tên trang bị khóa không được tạo ra. Xem danh sách các trang tồn tại bị khóa tại [[{{#special:ProtectedPages}}]].',
 'protectedtitlesempty' => 'Không có tựa trang nào bị khóa với các thông số như vậy.',
 'listusers' => 'Danh sách thành viên',
 'listusers-editsonly' => 'Chỉ hiện thành viên có tham gia sửa đổi',
@@ -2996,6 +3021,7 @@ $2',
 'thumbnail_image-type' => 'Không hỗ trợ kiểu hình này',
 'thumbnail_gd-library' => 'Cấu hình thư viện GD chưa hoàn thành: thiếu hàm $1',
 'thumbnail_image-missing' => 'Hình như tập tin mất tích: $1',
+'thumbnail_image-failure-limit' => 'Việc tạo ra hình thu nhỏ này đã bị thất bại nhiều lần quá gần đây ($1 lần trở lên). Xin vui lòng thử lại sau.',
 
 # Special:Import
 'import' => 'Nhập các trang',
@@ -3143,6 +3169,7 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
 'print.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến bản để in */',
 'noscript.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những người dùng tắt JavaScript */',
 'group-autoconfirmed.css' => '/* Mã CSS tại đây sẽ chỉ ảnh hưởng đến các thành viên tự động xác nhận */',
+'group-user.css' => '/* Mã CSS tại đây sẽ chỉ ảnh hưởng đến các thành viên có tài khoản */',
 'group-bot.css' => '/* Mã CSS tại đây sẽ chỉ ảnh hưởng đến các bot */',
 'group-sysop.css' => '/* Mã CSS tại đây sẽ chỉ ảnh hưởng đến các bảo quản viên */',
 'group-bureaucrat.css' => '/* Mã CSS tại đây sẽ chỉ ảnh hưởng đến các hành chính viên */',
@@ -3154,6 +3181,7 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
 'modern.js' => '/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng bề ngoài Hiện đại */',
 'vector.js' => '/* Mã JavaScript tại đây sẽ được tải khi người dùng sử dụng bề ngoài Vectơ */',
 'group-autoconfirmed.js' => '/* Mã JavaScript tại đây sẽ chỉ được tải cho các thành viên tự động xác nhận */',
+'group-user.js' => '/* Mã JavaScript tại đây sẽ chỉ được tải cho các thành viên có tài khoản */',
 'group-bot.js' => '/* Mã JavaScript tại đây sẽ chỉ được tải cho các bot */',
 'group-sysop.js' => '/* Mã JavaScript tại đây sẽ chỉ được tải cho các bảo quản viên */',
 'group-bureaucrat.js' => '/* Mã JavaScript tại đây sẽ chỉ được tải cho các hành chính viên */',
@@ -3311,10 +3339,10 @@ Nếu thực thi nó máy tính của bạn có thể bị tiếm quyền.",
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 'video-dims' => '$1, $2×$3',
-'seconds-abbrev' => '$1s',
-'minutes-abbrev' => '$1m',
-'hours-abbrev' => '$1h',
-'days-abbrev' => '$1d',
+'seconds-abbrev' => '$1 s',
+'minutes-abbrev' => '$1 min',
+'hours-abbrev' => '$1 h',
+'days-abbrev' => '$1 d',
 'seconds' => '$1 giây',
 'minutes' => '$1 phút',
 'hours' => '$1 giờ',
@@ -4335,6 +4363,4 @@ Nếu không thì bạn có thể điền biểu mẫu đơn giản ở dưới.
 'expand_templates_generate_rawhtml' => 'Hiển thị HTML thô',
 'expand_templates_preview' => 'Xem trước',
 
-# Unknown messages
-'uploadinvalidxml' => 'Không thể phân tích mã XML trong tập tin tải lên.',
 );
index 92c7e57..e69d6a2 100644 (file)
@@ -205,7 +205,6 @@ $messages = array(
 'vector-action-protect' => 'Kaidsaq',
 'vector-action-undelete' => 'Tiiq tagasi',
 'vector-action-unprotect' => 'Muudaq kaidsõt',
-'vector-simplesearch-preference' => 'Lupaq lihtsüstedüt otsmisripa (õnnõ Vektor-kujondusõn)',
 'vector-view-create' => 'Luuq',
 'vector-view-edit' => 'Toimõndaq',
 'vector-view-history' => 'Näütäq aoluku',
index 124b0d4..143db5e 100644 (file)
@@ -226,7 +226,6 @@ $messages = array(
 'vector-action-protect' => 'Protedjî',
 'vector-action-undelete' => 'Rapexhî',
 'vector-action-unprotect' => "Candjî l' protedjaedje",
-'vector-simplesearch-preference' => 'Permete les amidreyès sudjestions di cweraedje (pea «Vector» seulmint)',
 'vector-view-create' => 'Ahiver',
 'vector-view-edit' => 'Candjî',
 'vector-view-history' => "Vey l' istwere",
index 9c58c28..37f6029 100644 (file)
@@ -184,7 +184,6 @@ $messages = array(
 'vector-action-protect' => '保',
 'vector-action-undelete' => '弗刪',
 'vector-action-unprotect' => '换保护状态',
-'vector-simplesearch-preference' => '用简单搜寻条(只Vector皮肤好用)',
 'vector-view-create' => '建',
 'vector-view-edit' => '编',
 'vector-view-history' => '望页史',
index efac44d..f9972ee 100644 (file)
@@ -58,7 +58,6 @@ $namespaceGenderAliases = array();
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Заалһиг татас татх:',
-'tog-justify' => 'Зүүл тегшлтн',
 'tog-hideminor' => 'Шидрә сольлһна сеткүлд баһ хүврлһиг бултулх',
 'tog-hidepatrolled' => 'Шидрә сольлһна сеткүлд шүүсн хүврлһиг бултулх',
 'tog-newpageshidepatrolled' => 'Шин халхна сеткүләс шүүсн хүврлһиг бултулх',
@@ -67,9 +66,7 @@ $messages = array(
 'tog-numberheadings' => 'То-диг чикән даах',
 'tog-showtoolbar' => 'Ора зер-зев үзлх (JavaScript кергтә)',
 'tog-editondblclick' => 'Давхр индстлһар чиклх (JavaScript кергтә)',
-'tog-editsection' => '«Чиклх» заавр болвчн хүвд үзүлх',
 'tog-editsectiononrightclick' => 'Һарчига барун индстлһар хүвиг чиклх (JavaScript кергтә)',
-'tog-showtoc' => 'Һарг үзүлх (3 икәр толһата халхсд)',
 'tog-rememberpassword' => 'Намаг эн тоолдврт тодлх ($1 {{PLURAL:$1|1=өдрт|өдрмүдт}} икәр биш)',
 'tog-watchcreations' => 'Би эврәннь немгдсн халхс шинҗллһнә сеткүлд немх',
 'tog-watchdefault' => 'Би эврәннь чиклсн халхс шинҗллһнә сеткүлд немх',
index b10ee77..66e7f42 100644 (file)
@@ -360,7 +360,6 @@ $messages = array(
 'vector-action-protect' => 'שיצן',
 'vector-action-undelete' => 'מבטל זיין אויסמעקן',
 'vector-action-unprotect' => 'ענדערונג באַשיצונג',
-'vector-simplesearch-preference' => 'דערמעגלעכן פֿאַרפשוטערטן זוך פאַס (נאר וועקטאר)',
 'vector-view-create' => 'שאַפֿן',
 'vector-view-edit' => 'רעדאַקטירן',
 'vector-view-history' => 'ווײַזן היסטאָריע',
@@ -748,6 +747,9 @@ $2',
 'suspicious-userlogout' => ' אײַער בקשה אַרויסלאָגירן זיך איז אפגעלייגט געווארן ווייַל אייגנטלעך איז זי געשיקט דורך אַ צעבראכענעם בלעטערער אָדער א פראקסי מיט א זאפאס.',
 'createacct-another-realname-tip' => 'עכטער נאמען איז אפציאנאל.
 אויב איר וויילט אויס צוצושטעלן אים, וועט דאס גענוצט ווערן צו געבן אטריבוציע פאר זייער ארבעט.',
+'pt-login' => 'אַרײַנלאגירן',
+'pt-createaccount' => 'שאַפֿן אַ קאנטע',
+'pt-userlogout' => 'אַרויסלאגירן',
 
 # Email sending
 'php-mail-error-unknown' => 'אומבאַקאַנט טעות אין()mail פֿונקציע פֿון PHP.',
@@ -1627,10 +1629,20 @@ $1",
 'rclistfrom' => 'װײַזן נײַע ענדערונגען פֿון $1',
 'rcshowhideminor' => '$1 מינערדיגע ענדערונגען',
 'rcshowhidebots' => '$1 ראבאטן',
+'rcshowhidebots-show' => 'ווײַזן',
+'rcshowhidebots-hide' => 'באַהאַלטן',
 'rcshowhideliu' => '$1 אײַנגעשריבענע באַניצער',
+'rcshowhideliu-show' => 'ווײַזן',
+'rcshowhideliu-hide' => 'באַהאַלטן',
 'rcshowhideanons' => '$1 אַנאָנימע באַניצער',
+'rcshowhideanons-show' => 'ווײַזן',
+'rcshowhideanons-hide' => 'באַהאַלטן',
 'rcshowhidepatr' => '$1 פאַטראלירטע ענדערונגען',
+'rcshowhidepatr-show' => 'ווײַזן',
+'rcshowhidepatr-hide' => 'באַהאַלטן',
 'rcshowhidemine' => '$1 מײַנע רעדאַקטירוננגען',
+'rcshowhidemine-show' => 'ווײַזן',
+'rcshowhidemine-hide' => 'באַהאַלטן',
 'rclinks' => 'װײַזן די לעצטע $1 ענדערונגען אין די לעצטע $2 טעג.<br />$3',
 'diff' => 'אונטערשייד',
 'hist' => 'היסטאריע',
index 0b48808..64fd383 100644 (file)
@@ -215,7 +215,6 @@ $messages = array(
 'vector-action-protect' => 'Àbò',
 'vector-action-undelete' => 'Ìmúkúrò ìparẹ́',
 'vector-action-unprotect' => 'Ìyípadà àbò',
-'vector-simplesearch-preference' => 'Ìgbàláyè pẹpẹ ìṣàwárí ọnídídẹ̀rọ̀ (awọ Vector nìkan)',
 'vector-view-create' => "Ṣ'èdá",
 'vector-view-edit' => 'Àtúnṣe',
 'vector-view-history' => 'Wo ìtàn',
index 145427a..81f32f8 100644 (file)
@@ -191,7 +191,6 @@ $messages = array(
 'vector-action-protect' => 'Bescherm',
 'vector-action-undelete' => 'Plaets truhhe',
 'vector-action-unprotect' => "Beveiligienge anpass'n",
-'vector-simplesearch-preference' => "Verbetterde zoeksuggesties anzett'n (alleêne vò 't Vector uterlik)",
 'vector-view-create' => 'Anmaeken',
 'vector-view-edit' => 'Bewerk',
 'vector-view-history' => "Geschiedenisse bekiek'n",
index 6e6ad18..ed1ee3a 100644 (file)
@@ -7,10 +7,16 @@
  * @ingroup Language
  * @file
  *
+ * @author Cwek
+ * @author Gakmo
  * @author Kuailong
+ * @author Li3939108
  * @author PhiLiP
+ * @author Qiyue2001
  * @author Shizhao
+ * @author StephDC
  * @author Wong128hk
+ * @author Xiaomingyan
  */
 
 # Stub message file for converter code "zh"
@@ -173,18 +179,84 @@ $specialPageAliases = array(
 );
 
 $messages = array(
+# User preference toggles
+'tog-underline' => '鏈接下劃線:',
+'tog-hideminor' => '于最近更改列表中隱藏小編輯',
+'tog-showtoolbar' => '顯示編輯工具欄(需要 JavaScript)',
+'tog-editondblclick' => '双击以编辑页面',
+'tog-editsectiononrightclick' => '允许通过右击章节标题来编辑章节',
+'tog-rememberpassword' => '让浏览器记住我的登录(最大记录为$1天)',
+'tog-watchcreations' => '将我创建的页面和上传的文件添加到监视列表',
+'tog-watchdefault' => '将我编辑过的页面和上传的文件添加到监视列表',
+'tog-watchmoves' => '将我移动过的页面和上传的文件添加到监视列表',
+'tog-watchdeletion' => '将我删除的页面和文件添加到监视列表',
+'tog-minordefault' => '默认所有编辑为小编辑',
+'tog-previewontop' => '在编辑框前显示预览',
+'tog-previewonfirst' => '在第一次编辑时显示预览',
+'tog-enotifwatchlistpages' => '当在我监视列表的页面或文件发生更改时以电子邮件通知我',
+'tog-enotifusertalkpages' => '当我的用户讨论页发生更改时以电子邮件通知我',
+'tog-watchlisthideown' => '从监视列表隐藏我的编辑',
+'tog-watchlisthidebots' => '在监视列表中隐藏機器人用戶的修改',
+'tog-watchlisthideminor' => '在监视列表中隐藏小修改',
+'tog-norollbackdiff' => '進行回退後略過差異比較',
+
+# Font style option in Special:Preferences
+'editfont-monospace' => '等寬字體',
+
+# Categories related messages
+'category_header' => '分类“$1”中的页面',
+'subcategories' => '子分类',
+'hidden-category-category' => '隐藏的分类',
+
+'about' => '关于',
+'cancel' => '取消',
+'moredotdotdot' => '更多……',
+'mypage' => '页面',
+'mytalk' => '讨论',
+'anontalk' => '这个IP地址的讨论页',
+'navigation' => '导航',
+
+# Cologne Blue skin
+'qbbrowse' => '浏览',
+'qbedit' => '编辑',
+'qbpageoptions' => '该页',
+'faq' => '常见问题',
+'faqpage' => 'Project:常见问题',
+
+# Vector skin
+'vector-action-delete' => '删除',
+'vector-action-move' => '移动',
+'vector-view-create' => '创建',
+'vector-view-edit' => '编辑',
+'vector-view-history' => '查看历史',
+
+'newpage' => '最新页面',
+
+# Login and logout pages
+'userlogin-noaccount' => '没有账户?',
+'createacct-join' => '请在下面输入您的资料',
+
+# Edit pages
+'editing' => '编辑“$1”',
+
+# Miscellaneous special pages
+'newpages' => '最新页面',
+
+# Tooltip help for the actions
+'interlanguage-link-title' => '$1 – $2',
+
 /*
 Short names for language variants used for language conversion links.
 Variants for Chinese language
 */
 'variantname-zh-hans' => '简体',
 'variantname-zh-hant' => '繁體',
-'variantname-zh-cn'   => '大陆简体',
-'variantname-zh-tw'   => '台灣正體',
-'variantname-zh-hk'   => '香港繁體',
-'variantname-zh-mo'   => '澳門繁體',
-'variantname-zh-sg'   => '新加坡简体',
-'variantname-zh-my'   => '大马简体',
-'variantname-zh'      => '不转换',
+'variantname-zh-cn' => '大陆简体',
+'variantname-zh-tw' => '台灣正體',
+'variantname-zh-hk' => '香港繁體',
+'variantname-zh-mo' => '澳門繁體',
+'variantname-zh-sg' => '新加坡简体',
+'variantname-zh-my' => '大马简体',
+'variantname-zh' => '不转换',
 
 );
index 6e72e36..cd395bb 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Chinese (China) (‪中文(中国大陆)‬)
+/** Chinese (China) (中文(中国大陆)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -12,6 +12,7 @@
  * @author Shizhao
  * @author Wong128hk
  * @author Xiaomingyan
+ * @author 范
  */
 
 # Inherit everything for now
@@ -21,12 +22,21 @@ $messages = array(
 # User preference toggles
 'tog-norollbackdiff' => '进行回退后略过差异比较',
 
-'mytalk' => '我的讨论页',
+'mytalk' => '讨论',
 
-# 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) and the disambiguation template definition (see disambiguations).
+# 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).
 'portal' => '社区专页',
 
+# Login and logout pages
+'createacct-benefit-body1' => '{{PLURAL:$1|次编辑}}',
+'createacct-benefit-body2' => '
+{{PLURAL:$1|个页面}}',
+'createacct-benefit-body3' => '位最近{{PLURAL:$1|贡献者}}',
+
 # Edit pages
-'editing' => '正在编辑 $1',
+'editing' => '编辑“$1”',
+
+# Tooltip help for the actions
+'interlanguage-link-title' => '$1 – $2',
 
 );
index 63ba19d..a59c2f7 100644 (file)
@@ -907,6 +907,9 @@ $2',
 'suspicious-userlogout' => '注销请求被拒绝,因为它似乎是由有设计缺陷的浏览器或缓存代理发出的。',
 'createacct-another-realname-tip' => '真实姓名是选填项目。
 如果你选择提供它,它将会用于贡献署名。',
+'pt-login' => '登录',
+'pt-createaccount' => '创建账户',
+'pt-userlogout' => '退出',
 
 # Email sending
 'php-mail-error-unknown' => '在 PHP 的 mail() 函数中的未知错误',
@@ -915,7 +918,7 @@ $2',
 
 # Change password dialog
 'changepassword' => '更改密码',
-'resetpass_announce' => '您是通过发送到电子邮箱的临时密码登录的。要完成登录,请设定一个新的密码:',
+'resetpass_announce' => '要完成登录,您必须设置一个新密码。',
 'resetpass_text' => '<!-- 在这里添加文字 -->',
 'resetpass_header' => '更改账户密码',
 'oldpassword' => '旧密码:',
@@ -929,8 +932,12 @@ $2',
 'resetpass-submit-loggedin' => '更改密码',
 'resetpass-submit-cancel' => '取消',
 'resetpass-wrong-oldpass' => '临时密码或当前密码无效。您可能已经更改了您的密码,或者请求了新的临时密码。',
+'resetpass-recycled' => '请重置您的密码为与当前密码不同的密码。',
+'resetpass-temp-emailed' => '您通过一个暂时电子邮件发送的代码登录。要完成登录,您必须在此设置一个新密码:',
 'resetpass-temp-password' => '临时密码:',
 'resetpass-abort-generic' => '密码更改已被一个扩展插件中止。',
+'resetpass-expired' => '您的密码已经过期。请设置一个新的密码登录。',
+'resetpass-expired-soft' => '您的密码已经过期,并且需要重置。请现在选择一个新密码,或单击取消以便稍后重置。',
 
 # Special:PasswordReset
 'passwordreset' => '重置密码',
@@ -1013,11 +1020,11 @@ $2
 'subject' => '标题:',
 'minoredit' => '标记为小编辑',
 'watchthis' => '监视本页',
-'savearticle' => '保存本页',
+'savearticle' => '保存页面',
 'preview' => '预览',
 'showpreview' => '显示预览',
 'showlivepreview' => '实时预览',
-'showdiff' => '显示差异',
+'showdiff' => '显示更改',
 'anoneditwarning' => "'''警告:'''你没有登录。你的IP地址将被记录在该页面的编辑历史中。",
 'anonpreviewwarning' => "''你没有登录。保存会记录你的IP地址于该页面的编辑历史中。''",
 'missingsummary' => "'''提示:'''你没有提供编辑摘要。如果你再次点击“{{int:savearticle}}”,你的编辑将不带编辑摘要保存。",
@@ -1717,11 +1724,23 @@ $1",
 'rcnotefrom' => "下面是'''$2'''之后的更改(最多显示'''$1'''个)。",
 'rclistfrom' => '显示$1之后的新更改',
 'rcshowhideminor' => '$1小编辑',
+'rcshowhideminor-show' => '显示',
+'rcshowhideminor-hide' => '隐藏',
 'rcshowhidebots' => '$1机器人',
+'rcshowhidebots-show' => '显示',
+'rcshowhidebots-hide' => '隐藏',
 'rcshowhideliu' => '$1注册用户',
+'rcshowhideliu-show' => '显示',
+'rcshowhideliu-hide' => '隐藏',
 'rcshowhideanons' => '$1匿名用户',
+'rcshowhideanons-show' => '显示',
+'rcshowhideanons-hide' => '隐藏',
 'rcshowhidepatr' => '$1已巡查的编辑',
+'rcshowhidepatr-show' => '显示',
+'rcshowhidepatr-hide' => '隐藏',
 'rcshowhidemine' => '$1我的编辑',
+'rcshowhidemine-show' => '显示',
+'rcshowhidemine-hide' => '隐藏',
 'rclinks' => '显示最后$2天的最后$1个更改<br />$3',
 'diff' => '差异',
 'hist' => '历史',
@@ -1838,6 +1857,7 @@ $1",
 'uploaddisabledtext' => '文件上传已停用。',
 'php-uploaddisabledtext' => 'PHP文件上传停用。请检查file_uploads设置。',
 'uploadscripted' => '该文件包含可能被网络浏览器错误解释的 HTML 或脚本代码。',
+'uploadinvalidxml' => '上传文件中的XML无法解析。',
 'uploadvirus' => '该文件包含病毒!
 详情:$1',
 'uploadjava' => '该文件是 ZIP 文件,其中包含 Java 的.class 文件。
@@ -3078,7 +3098,7 @@ $2',
 'group-bureaucrat.css' => '/* 放置于这里的CSS将只影响机行政员 */',
 
 # Scripts
-'common.js' => '/* 这里的任何JavaScript将为所有用户在每一页面载入加载。 */',
+'common.js' => '/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */',
 'cologneblue.js' => '/* 这里的任何JavaScript将为使用科隆香水蓝皮肤的用户加载 */',
 'monobook.js' => '/* 这里的任何JavaScript将为使用MonoBook皮肤的用户加载 */',
 'modern.js' => '/* 这里的任何JavaScript将为使用现代皮肤的用户加载 */',
@@ -3127,7 +3147,7 @@ $2',
 'pageinfo-length' => '页面长度(字节)',
 'pageinfo-article-id' => '页面ID',
 'pageinfo-language' => '页面内容语言',
-'pageinfo-content-model' => '页面内容模式',
+'pageinfo-content-model' => '页面内容类型',
 'pageinfo-robot-policy' => '爬虫索引',
 'pageinfo-robot-index' => '允许',
 'pageinfo-robot-noindex' => '不允许',
@@ -4171,6 +4191,4 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 'expand_templates_generate_rawhtml' => '显示原始HTML',
 'expand_templates_preview' => '预览',
 
-# Unknown messages
-'uploadinvalidxml' => '上传文件中的XML无法解析。',
 );
index 8ee9c6b..0c3e74a 100644 (file)
@@ -806,6 +806,9 @@ $2',
 'suspicious-userlogout' => '您登出的要求已經被拒絕,因為它可能是由已損壞的瀏覽器或者快取代理傳送。',
 'createacct-another-realname-tip' => '真實姓名為選填。
 如果您選擇提供,它將用於貢獻署名。',
+'pt-login' => '登入',
+'pt-createaccount' => '建立帳戶',
+'pt-userlogout' => '登出',
 
 # Email sending
 'php-mail-error-unknown' => '在 PHP 的 mail() 參數中的未知錯誤',
@@ -814,7 +817,7 @@ $2',
 
 # Change password dialog
 'changepassword' => '變更密碼',
-'resetpass_announce' => '您是透過一個臨時的發送到郵件中的代碼登入的。要完成登入,您必須在這裡設定一個新密碼:',
+'resetpass_announce' => '要完成登入,您必須設定一個新密碼。',
 'resetpass_text' => '<!-- 在此處加入文字 -->',
 'resetpass_header' => '變更帳號密碼',
 'oldpassword' => '舊密碼:',
@@ -829,8 +832,12 @@ $2',
 'resetpass-submit-cancel' => '取消',
 'resetpass-wrong-oldpass' => '無效的臨時或現有的密碼。
 您可能已成功地更改了您的密碼,或者已經請求一個新的臨時密碼。',
+'resetpass-recycled' => '請將您的密碼重置為不同一個。',
+'resetpass-temp-emailed' => '您是透過一個臨時的發送到郵件中的代碼登入的。要完成登入,您必須在這裡設定一個新密碼:',
 'resetpass-temp-password' => '臨時密碼:',
 'resetpass-abort-generic' => '擴充元件已中止了更改密碼操作。',
+'resetpass-expired' => '您的密碼已過期。請設置新密碼以登錄。',
+'resetpass-expired-soft' => '您的密碼已過期,現需重置。請設置新密碼以登錄,或點擊取消以稍後重置。',
 
 # Special:PasswordReset
 'passwordreset' => '重新設定密碼',
@@ -1653,11 +1660,23 @@ $1",
 'rcnotefrom' => "下面是自'''$2'''(最多顯示'''$1'''):",
 'rclistfrom' => '顯示自 $1 以來的新變更',
 'rcshowhideminor' => '$1小編輯',
+'rcshowhideminor-show' => '顯示',
+'rcshowhideminor-hide' => '隱藏',
 'rcshowhidebots' => '$1機器人的編輯',
+'rcshowhidebots-show' => '顯示',
+'rcshowhidebots-hide' => '隱藏',
 'rcshowhideliu' => '$1已註冊用戶',
+'rcshowhideliu-show' => '顯示',
+'rcshowhideliu-hide' => '隱藏',
 'rcshowhideanons' => '$1匿名用戶的編輯',
+'rcshowhideanons-show' => '顯示',
+'rcshowhideanons-hide' => '隱藏',
 'rcshowhidepatr' => '$1巡查過的編輯',
+'rcshowhidepatr-show' => '顯示',
+'rcshowhidepatr-hide' => '隱藏',
 'rcshowhidemine' => '$1我的編輯',
+'rcshowhidemine-show' => '顯示',
+'rcshowhidemine-hide' => '隱藏',
 'rclinks' => '顯示最近$2天內最新的$1次改動。<br />$3',
 'diff' => '差異',
 'hist' => '歷史',
@@ -1777,6 +1796,7 @@ $1",
 'uploaddisabledtext' => '檔案上傳不可用。',
 'php-uploaddisabledtext' => 'PHP 檔案上載已經停用。請檢查 file_uploads 設定。',
 'uploadscripted' => '該檔案包含可能被網路瀏覽器錯誤解釋的 HTML 或腳本代碼。',
+'uploadinvalidxml' => '上載檔案中的XML無法解析。',
 'uploadvirus' => '該檔案包含有病毒!
 詳情:$1',
 'uploadjava' => '該檔案是 ZIP 檔案,其中包含 Java 的.class 檔案。
@@ -4131,6 +4151,4 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'expand_templates_generate_rawhtml' => '顯示原始HTML',
 'expand_templates_preview' => '預覽',
 
-# Unknown messages
-'uploadinvalidxml' => '上載檔案中的XML無法解析。',
 );
index dc28646..de09791 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Chinese (Hong Kong) (‪中文(香港)‬)
+/** Chinese (Hong Kong) (中文(香港)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -7,11 +7,16 @@
  * @ingroup Language
  * @file
  *
+ * @author Gakmo
  * @author Horacewai2
+ * @author Justincheng12345
  * @author Kayau
+ * @author Liflon
  * @author Mark85296341
+ * @author Openerror
  * @author PhiLiP
  * @author Shizhao
+ * @author Simon Shek
  * @author Waihorace
  * @author Wong128hk
  * @author Yukiseaside
@@ -29,38 +34,235 @@ $specialPageAliases = array(
 
 $messages = array(
 # User preference toggles
+'tog-underline' => '連結加底線:',
+'tog-hideminor' => '近期變動中隱藏細微修改',
+'tog-hidepatrolled' => '於近期變動中隱藏巡查過的編輯',
+'tog-newpageshidepatrolled' => '於新頁面清單中隱藏巡查過的頁面',
+'tog-extendwatchlist' => '展開監視清單以顯示所有更改',
+'tog-usenewrc' => '在最近更改和監視列表中整合同一頁的修改',
+'tog-numberheadings' => '標題自動編號',
+'tog-showtoolbar' => '顯示編輯工具欄',
+'tog-editondblclick' => '雙擊編輯頁面',
+'tog-editsectiononrightclick' => '允許右擊標題編輯段落',
+'tog-rememberpassword' => '在這個瀏覽器上記住我的登入資訊(可維持 $1 {{PLURAL:$1|天|天}})',
+'tog-watchcreations' => '將我建立的頁面及檔案添加到我的監視列表中',
+'tog-watchdefault' => '將我更改的頁面及檔案添加到我的監視列表中',
+'tog-watchmoves' => '將我移動的頁面及檔案添加到我的監視列表',
+'tog-watchdeletion' => '將我刪除的頁面及檔案添加到我的監視列表',
+'tog-minordefault' => '預設將編輯設定為小編輯',
+'tog-previewontop' => '在編輯框上方顯示預覽',
+'tog-previewonfirst' => '首次編輯時顯示原文內容預覽',
+'tog-enotifwatchlistpages' => '當監視列表中的頁面或檔案改變時發電子郵件給我',
+'tog-enotifusertalkpages' => '當我的對話頁有更改時發電子郵件通知我',
+'tog-enotifminoredits' => '即使是頁面或檔案的小修改也向我發電子郵件',
+'tog-enotifrevealaddr' => '在通知電子郵件中顯示我的電子郵件位址',
+'tog-shownumberswatching' => '顯示監視用戶的數目',
+'tog-oldsig' => '原有簽名:',
+'tog-fancysig' => '將簽名以維基文字對待 (不產生自動連結)',
+'tog-uselivepreview' => '使用實時預覽(試驗中)',
+'tog-forceeditsummary' => '當沒有輸入摘要時提醒我',
+'tog-watchlisthideown' => '監視列表中隱藏我的編輯',
 'tog-watchlisthidebots' => '監視列表中隱藏機械人的編輯',
+'tog-watchlisthideminor' => '監視列表中隱藏小修改',
+'tog-watchlisthideliu' => '監視列表中隱藏登入用戶',
+'tog-watchlisthideanons' => '監視列表中隱藏匿名用戶',
+'tog-watchlisthidepatrolled' => '監視清單中隱藏已巡查的編輯',
+'tog-ccmeonemails' => '當我寄電子郵件給其他用戶時,寄一份複本到我的信箱。',
+'tog-diffonly' => '在比較兩個修訂版本差異時不顯示頁面內容',
+'tog-showhiddencats' => '顯示隱藏分類',
+'tog-norollbackdiff' => '回退後略過差異比較',
+'tog-useeditwarning' => '當離開頁面時編輯仍未儲存,請提醒我',
+'tog-prefershttps' => '登入時永遠使用安全連線',
+
+'underline-always' => '總是使用',
+'underline-never' => '從不使用',
+'underline-default' => '面板或瀏覽器預設',
+
+# Font style option in Special:Preferences
+'editfont-style' => '編輯區字型樣式:',
+'editfont-default' => '瀏覽器預設',
+'editfont-monospace' => '固定間距字型',
+'editfont-sansserif' => '無襯線字型',
+'editfont-serif' => '襯線字型',
 
 # Dates
-'january'   => '一月',
-'february'  => '二月',
-'march'     => '三月',
-'april'     => '四月',
-'may_long'  => '五月',
-'june'      => '六月',
-'july'      => '七月',
-'august'    => '八月',
+'sunday' => '星期日',
+'monday' => '星期一',
+'tuesday' => '星期二',
+'wednesday' => '星期三',
+'thursday' => '星期四',
+'friday' => '星期五',
+'saturday' => '星期六',
+'sun' => '日',
+'mon' => '一',
+'tue' => '二',
+'wed' => '三',
+'thu' => '四',
+'fri' => '五',
+'sat' => '六',
+'january' => '一月',
+'february' => '二月',
+'march' => '三月',
+'april' => '四月',
+'may_long' => '五月',
+'june' => '六月',
+'july' => '七月',
+'august' => '八月',
 'september' => '九月',
-'october'   => '十月',
-'november'  => '十一月',
-'december'  => '十二月',
+'october' => '十月',
+'november' => '十一月',
+'december' => '十二月',
+'january-gen' => '一月',
+'february-gen' => '二月',
+'march-gen' => '三月',
+'april-gen' => '四月',
+'may-gen' => '五月',
+'june-gen' => '六月',
+'july-gen' => '七月',
+'august-gen' => '八月',
+'september-gen' => '九月',
+'october-gen' => '十月',
+'november-gen' => '十一月',
+'december-gen' => '十二月',
+'jan' => '1月',
+'feb' => '2月',
+'mar' => '3月',
+'apr' => '4月',
+'may' => '5月',
+'jun' => '6月',
+'jul' => '7月',
+'aug' => '8月',
+'sep' => '9月',
+'oct' => '10月',
+'nov' => '11月',
+'dec' => '12月',
+'january-date' => '1月$1日',
+'february-date' => '2月$1日',
+'march-date' => '三月$1日',
+'april-date' => '四月$1日',
+'may-date' => '五月$1日',
+'june-date' => '六月$1日',
+'july-date' => '七月$1日',
+'august-date' => '八月$1日',
+'september-date' => '九月$1日',
+'october-date' => '十月$1日',
+'november-date' => '十一月$1日',
+'december-date' => '十二月$1日',
+
+# Categories related messages
+'pagecategories' => '$1個分類',
+'category_header' => '分類中的頁面「$1」',
+'subcategories' => '子分類',
+'category-media-header' => '「$1」分類中的媒體',
+'category-empty' => "''這個分類中尚未包含任何頁面或媒體。''",
+'hidden-categories' => '$1個隱藏分類',
+'hidden-category-category' => '隱藏分類',
+'category-subcat-count' => '{{PLURAL:$2|這個分類中只有以下的子分類。|這個分類中有以下的$1個子分類,共有$2個子分類。}}',
+'category-subcat-count-limited' => '這個分類下有$1個子分類。',
+'category-article-count' => '{{PLURAL:$2|這個分類中只有以下的頁面。|這個分類中有以下的$1個頁面,共有$2個頁面。}}',
+'category-article-count-limited' => '這個分類下有$1個頁面。',
+'category-file-count' => '{{PLURAL:$2|這個分類中只有以下的檔案。|這個分類中有以下的$1個檔案,共有$2個檔案。}}',
+'category-file-count-limited' => '這個分類下有$1個檔案。',
+'listingcontinuesabbrev' => '續',
+'index-category' => '已索引的頁面',
+'noindex-category' => '未索引的頁面',
+'broken-file-category' => '包含損壞檔案連結的頁面',
 
-'mytalk' => '我的討論頁',
+'about' => '關於',
+'article' => '內容頁面',
+'newwindow' => '(於新視窗開啟)',
+'cancel' => '取消',
+'moredotdotdot' => '更多...',
+'morenotlisted' => '這不是完整的列表。',
+'mytalk' => '討論頁',
+'anontalk' => '此IP位址的討論頁',
+'navigation' => '導航',
+'and' => '和',
 
-'tagline'          => '從 {{SITENAME}}',
-'search'           => '搜尋',
+# Cologne Blue skin
+'qbfind' => '搜尋',
+'qbbrowse' => '瀏覽',
+'qbedit' => '編輯',
+'qbpageoptions' => '本頁',
+'qbmyoptions' => '我的用戶頁面',
+'faq' => '常見問題',
+'faqpage' => 'Project:常見問題',
+
+# Vector skin
+'vector-action-addsection' => '新增主題',
+'vector-action-delete' => '刪除',
+'vector-action-undelete' => '恢復',
+'vector-action-unprotect' => '修改保護狀態',
+'vector-view-history' => '歷史',
+'vector-view-view' => '閱覽',
+'vector-view-viewsource' => '查看原始碼',
+'variants' => '變體',
+
+'navigation-heading' => '導航菜單',
+'returnto' => '回到$1。',
+'tagline' => '從 {{SITENAME}}',
+'help' => '幫助',
+'search' => '搜尋',
+'searcharticle' => '提交',
+'updatedmarker' => '自從我上次查看後已更新',
 'printableversion' => '可打印版',
-'permalink'        => '永久連接',
-'print'            => '打印',
-'specialpage'      => '特殊頁面',
-'jumpto'           => '跳到:',
-'jumptosearch'     => '搜尋',
-
-# 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) and the disambiguation template definition (see disambiguations).
-'aboutpage'   => 'Project:關於我們',
-'privacy'     => '私隱政策',
+'permalink' => '永久連接',
+'print' => '打印',
+'undeletethispage' => '恢復本頁',
+'undelete_short' => '恢復{{PLURAL:$1|1次編輯|$1次編輯}}',
+'viewdeleted_short' => '查看{{PLURAL:$1|1次已刪的編輯|$1次已刪的編輯}}',
+'protect_change' => '修改',
+'unprotect' => '修改保護狀態',
+'unprotectthispage' => '修改本頁的保護狀態',
+'talkpage' => '對本頁進行討論',
+'talkpagelinktext' => '討論頁',
+'specialpage' => '特殊頁面',
+'postcomment' => '新章節',
+'articlepage' => '查看內容頁面',
+'views' => '外觀',
+'userpage' => '查看用戶頁',
+'projectpage' => '查看計劃頁面',
+'imagepage' => '查看檔案頁面',
+'mediawikipage' => '查看訊息頁面',
+'templatepage' => '查看模板頁',
+'viewhelppage' => '查看幫助頁面',
+'categorypage' => '查看分類頁面',
+'viewtalkpage' => '查看討論頁',
+'redirectpagesub' => '重定向頁',
+'lastmodifiedat' => '本頁最後更改於$1$2。',
+'viewcount' => '本頁的瀏覽次數為{{PLURAL:$1|1次|$1次}}。',
+'protectedpage' => '受保護的頁面',
+'jumpto' => '跳到:',
+'jumptonavigation' => '導航',
+'jumptosearch' => '搜尋',
+'view-pool-error' => '抱歉,伺服器現時超出負荷。
+有太多用戶想要查看本頁。
+請先稍候片刻才再嘗試查看本頁。
+
+$1',
+'pool-timeout' => '等待鎖時超出了時限',
+
+# 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' => '關於{{SITENAME}}',
+'aboutpage' => 'Project:關於我們',
+'copyright' => '除非另外註明,否則內容以$1提供。',
+'copyrightpage' => '{{ns:project}}:版權',
+'edithelp' => '編輯方面的幫助',
+'mainpage' => '主頁',
+'mainpage-description' => '主頁',
+'portal' => '社群區入口',
+'portal-url' => 'Project:社群入口',
+'privacy' => '私隱政策',
 'privacypage' => 'Project:私隱政策',
 
+'badaccess-group0' => '您無權執行您所提出的行動。',
+'badaccess-groups' => '您所提出的行動只有{{PLURAL:$2|此群組|以下群組之一}}才可執行:$1。',
+
+'versionrequired' => '需要$1版本的MediaWiki',
+'versionrequiredtext' => '要使用本頁的話需要$1版本的MediaWiki。
+請見[[Special:版本|版本頁面]]。',
+
+'retrievedfrom' => '擷取自$1',
 'red-link-title' => '$1 (頁面不存在)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
@@ -68,14 +270,14 @@ $messages = array(
 
 # Login and logout pages
 'nav-login-createaccount' => '登入/創造帳戶',
-'userlogin'               => '登入/創造帳戶',
+'userlogin' => '登入/創造帳戶',
 
 # Edit pages
-'editing' => '正在編輯 $1',
+'editing' => '正在編輯「$1」',
 
 # Revision deletion
-'rev-deleted-comment'     => '(註釋已除)',
-'rev-deleted-event'       => '(日誌已除)',
+'rev-deleted-comment' => '(註釋已除)',
+'rev-deleted-event' => '(日誌已除)',
 'revdelete-suppress-text' => "壓制'''只'''應用於以下的情況:
 * 不合適的個人資料
 *: ''地址、電話號碼、身份證號碼等。''",
@@ -83,9 +285,6 @@ $messages = array(
 # Diffs
 'editundo' => '撤銷',
 
-# Search results
-'search-mwsuggest-disabled' => '沒有意見',
-
 # Preferences page
 'prefs-help-gender' => '可選:用於軟件中的性別指定。此項資料將會被公開。',
 
@@ -98,7 +297,7 @@ $messages = array(
 
 # Recent changes
 'recentchanges-label-bot' => '這次編輯是由機械人進行',
-'rcshowhidebots'          => '$1機械人的編輯',
+'rcshowhidebots' => '$1機械人的編輯',
 
 # Special:ActiveUsers
 'activeusers-hidebots' => '隱藏機械人',
@@ -107,17 +306,24 @@ $messages = array(
 'contribslink' => '貢獻',
 
 # Tooltip help for the actions
-'tooltip-search'                 => '搜尋 {{SITENAME}}',
-'tooltip-search-go'              => '若是真有其頁,則進入相同名字的頁面',
-'tooltip-search-fulltext'        => '在此頁面內搜尋此文字',
-'tooltip-n-mainpage'             => '回到首頁',
+'tooltip-search' => '搜尋 {{SITENAME}}',
+'tooltip-search-go' => '若是真有其頁,則進入相同名字的頁面',
+'tooltip-search-fulltext' => '在此頁面內搜尋此文字',
+'tooltip-n-mainpage' => '回到首頁',
 'tooltip-n-mainpage-description' => '回到首頁',
-'tooltip-n-randompage'           => '跳到一個隨機抽取的頁面',
-'tooltip-t-print'                => '這個頁面的可打印版本',
+'tooltip-n-randompage' => '跳到一個隨機抽取的頁面',
+'tooltip-t-print' => '這個頁面的可打印版本',
+'interlanguage-link-title' => '$1 – $2',
 
 # Special:NewFiles
 'showhidebots' => '($1機械人)',
 
+/*
+Short names for language variants used for language conversion links.
+Variants for Chinese language
+*/
+'variantname-zh-hant' => '‪繁體中文',
+
 # Special:SpecialPages
 'specialpages' => '特殊頁面',
 
index 37be152..fc87626 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** ‪Chinese (Macau) (‪中文(澳門)‬)
+/** 中文(澳門)‎ (中文(澳門)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -11,3 +11,9 @@
 
 # Inherit everything for now
 $fallback = 'zh-hk, zh-hant, zh-hans';
+
+$messages = array(
+# Tooltip help for the actions
+'interlanguage-link-title' => '$1 – $2',
+
+);
index ccf8371..f4aa157 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Chinese (Singapore) (‪中文(新加坡)‬)
+/** Chinese (Singapore) (中文(新加坡)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -7,9 +7,11 @@
  * @ingroup Language
  * @file
  *
+ * @author Liuxinyu970226
  * @author PhiLiP
  * @author Shizhao
  * @author Wong128hk
+ * @author Xiaomingyan
  */
 
 # Inherit everything for now
@@ -19,10 +21,15 @@ $messages = array(
 # User preference toggles
 'tog-norollbackdiff' => '进行回退后略过差异比较',
 
-# 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) and the disambiguation template definition (see disambiguations).
+'talkpagelinktext' => '讨论页',
+
+# 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).
 'portal' => '社区入口',
 
 # Edit pages
-'editing' => '正在编辑 $1',
+'editing' => '编辑“$1”',
+
+# Tooltip help for the actions
+'interlanguage-link-title' => '$1 – $2',
 
 );
index d28642e..3c21302 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Chinese (Taiwan) (‪中文(台灣)‬)
+/** Chinese (Taiwan) (中文(台灣)‎)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -10,6 +10,7 @@
  * @author Alexsh
  * @author Andrew971218
  * @author BobChao
+ * @author Danny0838
  * @author Ianbu
  * @author Jidanni
  * @author Mark85296341
  * @author PhiLiP
  * @author Roc michael
  * @author Shizhao
+ * @author Simon Shek
  * @author Urhixidur
+ * @author Waihorace
  * @author Wong128hk
+ * @author Xiaomingyan
  * @author Zerng07
  * @author לערי ריינהארט
  */
@@ -103,66 +107,65 @@ $dateFormats = array(
 
 $messages = array(
 # User preference toggles
-'tog-underline'            => '連結標注底線',
-'tog-justify'              => '段落對齊',
-'tog-hideminor'            => '近期變動中隱藏細微修改',
-'tog-usenewrc'             => '使用強化的近期變動 (需要JavaScript)',
-'tog-numberheadings'       => '自動編號標題',
-'tog-showtoolbar'          => '顯示編輯工具欄 (需要JavaScript)',
-'tog-watchcreations'       => '將我建立的頁面加進我的監視列表',
-'tog-watchdefault'         => '將我更改的頁面添加到我的監視列表中',
-'tog-minordefault'         => '預設將編輯設定為細微修改',
+'tog-underline' => '連結標注底線',
+'tog-hideminor' => '近期變動中隱藏小修改',
+'tog-usenewrc' => '使用強化的近期變動 (需要JavaScript)',
+'tog-numberheadings' => '自動編號標題',
+'tog-showtoolbar' => '顯示編輯工具欄 (需要JavaScript)',
+'tog-watchcreations' => '將我建立的頁面加進我的監視列表',
+'tog-watchdefault' => '將我更改的頁面添加到我的監視列表中',
+'tog-minordefault' => '預設將編輯設定為細微修改',
 'tog-enotifwatchlistpages' => '當我監視的頁面改變時發電子郵件給我',
-'tog-enotifusertalkpages'  => '當我的對話頁有更動時發電子郵件通知我',
-'tog-shownumberswatching'  => '顯示監視數目',
-'tog-uselivepreview'       => '使用即時預覽 (JavaScript) (試驗中)',
-'tog-watchlisthideminor'   => '監視列表中隱藏細微修改',
-'tog-ccmeonemails'         => '當我寄電子郵件給其他使用者時,也寄一份複本到我的信箱。',
+'tog-enotifusertalkpages' => '當我的對話頁有更動時發電子郵件通知我',
+'tog-shownumberswatching' => '顯示監視數目',
+'tog-uselivepreview' => '使用即時預覽 (JavaScript) (試驗中)',
+'tog-watchlisthideminor' => '監視列表中隱藏細微修改',
+'tog-ccmeonemails' => '當我寄電子郵件給其他使用者時,也寄一份複本到我的信箱。',
 
 # Dates
-'saturday'      => '星期六',
-'sun'           => '日',
-'mon'           => '一',
-'tue'           => '二',
-'wed'           => '三',
-'thu'           => '四',
-'fri'           => '五',
-'january'       => '一月',
-'february'      => '二月',
-'march'         => '三月',
-'april'         => '四月',
-'may_long'      => '五月',
-'june'          => '六月',
-'july'          => '七月',
-'august'        => '八月',
-'september'     => '九月',
-'october'       => '十月',
-'november'      => '十一月',
-'december'      => '十二月',
-'january-gen'   => '一月',
-'february-gen'  => '二月',
-'march-gen'     => '三月',
-'april-gen'     => '四月',
-'may-gen'       => '五月',
-'june-gen'      => '六月',
-'july-gen'      => '七月',
-'august-gen'    => '八月',
+'saturday' => '星期六',
+'sun' => '日',
+'mon' => '一',
+'tue' => '二',
+'wed' => '三',
+'thu' => '四',
+'fri' => '五',
+'january' => '一月',
+'february' => '二月',
+'march' => '三月',
+'april' => '四月',
+'may_long' => '五月',
+'june' => '六月',
+'july' => '七月',
+'august' => '八月',
+'september' => '九月',
+'october' => '十月',
+'november' => '十一月',
+'december' => '十二月',
+'january-gen' => '一月',
+'february-gen' => '二月',
+'march-gen' => '三月',
+'april-gen' => '四月',
+'may-gen' => '五月',
+'june-gen' => '六月',
+'july-gen' => '七月',
+'august-gen' => '八月',
 'september-gen' => '九月',
-'october-gen'   => '十月',
-'november-gen'  => '十一月',
-'december-gen'  => '十二月',
-'jan'           => '1月',
-'feb'           => '2月',
-'mar'           => '3月',
-'apr'           => '4月',
-'may'           => '5月',
-'jun'           => '6月',
-'jul'           => '7月',
-'aug'           => '8月',
-'sep'           => '9月',
-'oct'           => '10月',
-'nov'           => '11月',
-'dec'           => '12月',
+'october-gen' => '十月',
+'november-gen' => '十一月',
+'december-gen' => '十二月',
+'jan' => '1月',
+'feb' => '2月',
+'mar' => '3月',
+'apr' => '4月',
+'may' => '5月',
+'jun' => '6月',
+'jul' => '7月',
+'aug' => '8月',
+'sep' => '9月',
+'oct' => '10月',
+'nov' => '11月',
+'dec' => '12月',
 
 # Categories related messages
 'subcategories' => '子分類',
@@ -172,54 +175,54 @@ $messages = array(
 
 # Vector skin
 'vector-action-protect' => '保護',
-'vector-view-create'    => '建立',
-'vector-view-view'      => '閱讀',
-
-'help'           => '使用說明',
-'search'         => '搜尋',
-'searchbutton'   => '搜尋',
-'history'        => '修訂記錄',
-'history_short'  => '歷史',
-'edit'           => '編輯',
-'create'         => '建立',
-'delete'         => '刪除',
+'vector-view-create' => '建立',
+'vector-view-view' => '閱讀',
+
+'help' => '使用說明',
+'search' => '搜尋',
+'searchbutton' => '搜尋',
+'history' => '修訂記錄',
+'history_short' => '歷史',
+'edit' => '編輯',
+'create' => '建立',
+'delete' => '刪除',
 'protect_change' => '更改',
-'postcomment'    => '新段落',
-'toolbox'        => '工具箱',
-'userpage'       => '檢視使用者頁面',
-'projectpage'    => '檢視計畫頁面',
+'postcomment' => '新段落',
+'toolbox' => '工具箱',
+'userpage' => '檢視使用者頁面',
+'projectpage' => '檢視計畫頁面',
 'lastmodifiedat' => '本頁最後更動時間在 $1 $2。',
-'jumptosearch'   => '搜尋',
+'jumptosearch' => '搜尋',
 
-# 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) and the disambiguation template definition (see disambiguations).
-'aboutsite'   => '關於 {{SITENAME}}',
-'copyright'   => '本站的文字內容除另有聲明外,全部以 $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' => '關於 {{SITENAME}}',
+'copyright' => '本站的文字內容除另有聲明外,全部以 $1 條款授權使用。',
 'disclaimers' => '免責聲明',
-'edithelp'    => '編輯說明',
-'mainpage'    => '首頁',
-'portal'      => '社群入口',
-'portal-url'  => 'Project:社群入口',
+'edithelp' => '編輯說明',
+'mainpage' => '首頁',
+'portal' => '社群入口',
+'portal-url' => 'Project:社群入口',
 
 'badaccess-groups' => '您剛才的請求只有{{PLURAL:$2|這個|這些}}使用者組的使用者才能使用: $1',
 
-'editold'         => '編輯',
-'editsectionhint' => 'ç¼\96è¾\91段è\90½:$1',
-'showtoc'         => '顯示',
-'hidetoc'         => '隱藏',
-'thisisdeleted'   => '檢視或復原$1?',
-'site-rss-feed'   => '訂閱 $1 的 RSS 資料來源',
-'site-atom-feed'  => '訂閱 $1 的 Atom 資料來源',
-'page-rss-feed'   => '訂閱「$1」的 RSS 資料來源',
-'page-atom-feed'  => '訂閱「$1」的 Atom 資料來源',
-'red-link-title'  => '$1 (頁面不存在)',
+'editold' => '編輯',
+'editsectionhint' => '編輯章ç¯\80:$1',
+'showtoc' => '顯示',
+'hidetoc' => '隱藏',
+'thisisdeleted' => '檢視或復原$1?',
+'site-rss-feed' => '訂閱 $1 的 RSS 資料來源',
+'site-atom-feed' => '訂閱 $1 的 Atom 資料來源',
+'page-rss-feed' => '訂閱「$1」的 RSS 資料來源',
+'page-atom-feed' => '訂閱「$1」的 Atom 資料來源',
+'red-link-title' => '$1 (頁面不存在)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main'      => '頁面',
-'nstab-user'      => '使用者頁面',
-'nstab-special'   => '特殊頁面',
-'nstab-project'   => '計畫頁面',
+'nstab-main' => '頁面',
+'nstab-user' => '使用者頁面',
+'nstab-special' => '特殊頁面',
+'nstab-project' => '計畫頁面',
 'nstab-mediawiki' => '介面',
-'nstab-help'      => '說明頁面',
+'nstab-help' => '說明頁面',
 
 # Main script and global functions
 'nosuchactiontext' => '該URL所指定的動作無效。
@@ -227,79 +230,75 @@ $messages = array(
 這也可能是{{SITENAME}}所使用的軟件出現了錯誤。',
 
 # General errors
-'readonlytext'        => '資料庫目前禁止輸入新內容及更改,
+'readonlytext' => '資料庫目前禁止輸入新內容及更改,
 這很可能是由於資料庫正在維修,之後即可復原。
 管理員有如下解釋:
 <p>$1</p>',
-'cannotdelete'        => '無法刪除選定的頁面或圖片(它可能已經被其他人刪除了)。',
+'cannotdelete' => '無法刪除選定的頁面或圖片(它可能已經被其他人刪除了)。',
 'actionthrottledtext' => '系統因為反垃圾編輯的考量,禁止如此頻繁地修改資料,請數分鐘後再嘗試。',
-'viewsourcetext'      => '你可以檢視並複製本頁面的原始碼。',
-'editinginterface'    => "'''警告:''' 您正在編輯的頁面是正用在軟體上的介面文字。改變此頁將影響其他用戶的介面外觀。如要翻譯,請考慮使用 [//translatewiki.net/wiki/Main_Page?setlang=zh-hant translatewiki.net],一個用來為MediaWiki軟體本地化的計畫。",
+'viewsourcetext' => '你可以檢視並複製本頁面的原始碼。',
+'editinginterface' => "'''警告:''' 您正在編輯的頁面是正用在軟體上的介面文字。改變此頁將影響其他用戶的介面外觀。如要翻譯,請考慮使用 [//translatewiki.net/wiki/Main_Page?setlang=zh-hant translatewiki.net],一個用來為MediaWiki軟體本地化的計畫。",
 'ns-specialprotected' => '在{{ns:special}}名字空間中的頁面是不可以編輯的。',
 
 # Login and logout pages
-'logouttext'                 => '您現在已經登出。
-
-您可以以匿名方式繼續使用{{SITENAME}},或者以相同或不同用戶身份[[Special:UserLogin|登入]]。
-請注意,如果你再次登入,此頁或會繼續顯示,直到您清除瀏覽器快取。',
-'welcomecreation'            => '== 歡迎,$1! ==
-您的帳號已經建立。
-請不要忘記設定[[Special:Preferences|{{SITENAME}}的個人參數]]。',
-'yourname'                   => '您的使用者名:',
-'yourpassword'               => '密碼:',
-'login'                      => '登入',
-'nav-login-createaccount'    => '登入/建立新帳號',
-'userlogin'                  => '登入/建立新帳號',
-'logout'                     => '登出',
-'userlogout'                 => '登出',
-'nologin'                    => '您還沒有帳號嗎?$1。',
-'nologinlink'                => '建立新帳號',
-'createaccount'              => '建立新帳號',
-'gotaccount'                 => '已經擁有帳號?$1。',
-'badretype'                  => '你所輸入的密碼並不相同。',
-'userexists'                 => '您所輸入的使用者名稱已經存在,請另選一個名稱。',
-'nocookiesnew'               => '已成功建立新帳號!偵測到您已關閉 Cookies,請開啟它並登入。',
-'nocookieslogin'             => '本站利用 Cookies 進行使用者登入,偵測到您已關閉 Cookies,請開啟它並重新登入。',
-'noname'                     => '你沒有輸入一個有效的使用者帳號。',
-'loginsuccess'               => '你現在以 "$1"的身份登入{{SITENAME}}。',
-'nosuchuser'                 => '找不到使用者 "$1"。
+'logouttext' => "您現在已經登出。
+
+您可以以匿名方式繼續使用{{SITENAME}},或者以相同或不同用戶身份<span class='plainlinks'>[$1 登入]</span>。
+請注意,如果你再次登入,此頁或會繼續顯示,直到您清除瀏覽器快取。",
+'yourname' => '您的使用者名稱:',
+'yourpassword' => '密碼:',
+'login' => '登入',
+'nav-login-createaccount' => '登入/建立新帳號',
+'userlogin' => '登入/建立新帳號',
+'logout' => '登出',
+'userlogout' => '登出',
+'nologin' => '您還沒有帳號嗎?$1。',
+'nologinlink' => '建立新帳號',
+'createaccount' => '建立新帳號',
+'gotaccount' => '已經擁有帳號?$1。',
+'badretype' => '你所輸入的密碼並不相同。',
+'userexists' => '您所輸入的使用者名稱已經存在,請另選一個名稱。',
+'nocookiesnew' => '已成功建立新帳號!偵測到您已關閉 Cookies,請開啟它並登入。',
+'nocookieslogin' => '本站利用 Cookies 進行使用者登入,偵測到您已關閉 Cookies,請開啟它並重新登入。',
+'noname' => '你沒有輸入一個有效的使用者帳號。',
+'loginsuccess' => '你現在以 "$1"的身份登入{{SITENAME}}。',
+'nosuchuser' => '找不到使用者 "$1"。
 檢查您的拼寫,或者用下面的表格[[Special:UserLogin/signup|建立一個新帳號]]。',
-'nosuchusershort'            => '沒有一個名為「$1」的使用者。請檢查您輸入的文字是否有錯誤。',
-'nouserspecified'            => '你需要指定一個使用者帳號。',
-'passwordtooshort'           => '您的密碼不正確或太短,不能少於$1個字元,而且必須跟使用者名不同。',
-'passwordremindertitle'      => '{{SITENAME}}密碼提醒',
-'passwordremindertext'       => '有人(來自IP位址$1,可能是您)已請求{{SITENAME}}的新密碼 ($4)。
+'nosuchusershort' => '沒有一個名為「$1」的使用者。請檢查您輸入的文字是否有錯誤。',
+'nouserspecified' => '你需要指定一個使用者帳號。',
+'passwordtooshort' => '您的密碼不正確或太短,不能少於$1個字元,而且必須跟使用者名不同。',
+'passwordremindertitle' => '{{SITENAME}}密碼提醒',
+'passwordremindertext' => '有人(來自IP位址$1,可能是您)已請求{{SITENAME}}的新密碼 ($4)。
 用戶"$2"現在已設定新臨時密碼"$3"。
 如果這個動作是您所指示的,您需要立即登入並選擇一個新的密碼。
 您的臨時密碼會在{{PLURAL:$5|一|$5}}天內過期。
 
 如果是其他人發出了該請求,或者您已經想起了您的密碼而且並不打算換掉,
 您可以忽略此消息並繼續使用您的舊密碼。',
-'noemail'                    => '使用者"$1"沒有登記電子郵件地址。',
-'passwordsent'               => '使用者"$1"的新密碼已經寄往所登記的電子郵件地址。
+'noemail' => '使用者"$1"沒有登記電子郵件地址。',
+'passwordsent' => '使用者"$1"的新密碼已經寄往所登記的電子郵件地址。
 請在收到後再登入。',
-'blocked-mailpassword'       => '由於這個使用者被封鎖,我們暫時禁止您請求申請新密碼。造成不便敬請見諒',
-'eauthentsent'               => '一封確認信已經發送到所示的地址。在發送其它郵件到此帳號前,您必須首先依照這封信中的指導確認這個電子郵件信箱真實有效。',
+'blocked-mailpassword' => '由於這個使用者被封鎖,我們暫時禁止您請求申請新密碼。造成不便敬請見諒',
+'eauthentsent' => '一封確認信已經發送到所示的地址。在發送其它郵件到此帳號前,您必須首先依照這封信中的指導確認這個電子郵件信箱真實有效。',
 'acct_creation_throttle_hit' => '抱歉,使用您的IP位址拜訪此wiki網站的訪客已經在昨天創建了$1個帳號,達到了該時段的上限,所以目前使用這個IP位址的訪客不能再繼續創建帳號。',
-'emailauthenticated'         => '您的電子郵件地址已經於$2 $3確認有效。',
-'emailnotauthenticated'      => '您的電子郵件地址<strong>還沒被認證</strong>。以下功能將不會發送任何郵件。',
-'noemailprefs'               => '指定一個電子郵件地址以使用此功能',
-'emailconfirmlink'           => '確認您的電子郵件地址',
-'invalidemailaddress'        => '電子郵件地址格式不正確,請輸入正確的電子郵件位址或清空該輸入框。',
-'accountcreated'             => '已建立帳號',
-'accountcreatedtext'         => '$1的帳號已經被建立。',
-'createaccount-title'        => '在{{SITENAME}}中建立新帳號',
-'createaccount-text'         => '有人在{{SITENAME}}中為 $2 建立了一個新帳號($4)。 "$2" 的密碼是 "$3" 。您應該立即登入並更改密碼。
+'emailauthenticated' => '您的電子郵件地址已經於$2 $3確認有效。',
+'emailnotauthenticated' => '您的電子郵件地址<strong>還沒被認證</strong>。以下功能將不會發送任何郵件。',
+'noemailprefs' => '指定一個電子郵件地址以使用此功能',
+'emailconfirmlink' => '確認您的電子郵件地址',
+'invalidemailaddress' => '電子郵件地址格式不正確,請輸入正確的電子郵件位址或清空該輸入框。',
+'accountcreated' => '已建立帳號',
+'accountcreatedtext' => '$1的帳號已經被建立。',
+'createaccount-title' => '在{{SITENAME}}中建立新帳號',
+'createaccount-text' => '有人在{{SITENAME}}中為 $2 建立了一個新帳號($4)。 "$2" 的密碼是 "$3" 。您應該立即登入並更改密碼。
 
 如果該帳號建立錯誤的話,您可以忽略此訊息。',
 
 # Change password dialog
-'resetpass'           => '更換密碼',
-'resetpass_announce'  => '您是透過臨時發送到郵件中的代碼登入的。要完成登入,您必須在這裡設定一個新密碼:',
-'resetpass_header'    => '更換帳號密碼',
-'oldpassword'         => '舊密碼',
-'newpassword'         => '新密碼',
-'resetpass_success'   => '您的密碼已經被成功更改﹗現下正為您登入...',
+'resetpass_announce' => '您是透過臨時發送到郵件中的代碼登入的。要完成登入,您必須在這裡設定一個新密碼:',
+'resetpass_header' => '更換帳號密碼',
+'oldpassword' => '舊密碼',
+'newpassword' => '新密碼',
+'changepassword-success' => '您的密碼已經被成功更改﹗現下正為您登入...',
 'resetpass_forbidden' => '無法更改密碼',
 
 # Edit page toolbar
@@ -307,49 +306,49 @@ $messages = array(
 'media_tip' => '媒體檔案連結',
 
 # Edit pages
-'summary'                    => '摘要',
-'minoredit'                  => '這是一個細微修改',
-'savearticle'                => '儲存頁面',
-'blockedtitle'               => '使用者被封鎖',
-'confirmedittext'            => '在編輯此頁之前您必須確認您的電子郵件地址。請透過[[Special:Preferences|偏好設定]]設定並驗證您的電子郵件地址。',
-'accmailtext'                => "'[[User talk:$1|$1]]'的隨機產生密碼已經寄到$2。
+'summary' => '摘要',
+'minoredit' => '這是一個細微修改',
+'savearticle' => '儲存頁面',
+'blockedtitle' => '使用者被封鎖',
+'confirmedittext' => '在編輯此頁之前您必須確認您的電子郵件地址。請透過[[Special:Preferences|偏好設定]]設定並驗證您的電子郵件地址。',
+'accmailtext' => "'[[User talk:$1|$1]]'的隨機產生密碼已經寄到$2。
 
 這個新帳號的密碼可以在登入後的''[[Special:ChangePassword|更改密碼]]''頁面中更改。",
-'newarticletext'             => '您進入了一個尚未建立的頁面。
+'newarticletext' => '您進入了一個尚未建立的頁面。
 要建立該頁面,請在下面的編輯框中輸入內容(詳情參見[[{{MediaWiki:Helppage}}|說明]])。
 如果您是不小心來到此頁面,直接點擊您瀏覽器中的「返回」按鈕返回。',
-'anontalkpagetext'           => "---- ''這是一個還未建立帳號的匿名使用者的對話頁。我們因此只能用IP地址來與他/她聯絡。該IP地址可能由幾名使用者共享。如果您是一名匿名使用者並認為本頁上的評語與您無關,請[[Special:UserLogin|建立新帳號或登入]]以避免在未來於其他匿名使用者混淆。''",
-'noarticletext'              => '此頁目前沒有內容,您可以在其它頁[[Special:Search/{{PAGENAME}}|搜索此頁標題]],
+'anontalkpagetext' => "---- ''這是一個還未建立帳號的匿名使用者的對話頁。我們因此只能用IP地址來與他/她聯絡。該IP地址可能由幾名使用者共享。如果您是一名匿名使用者並認為本頁上的評語與您無關,請[[Special:UserLogin|建立新帳號或登入]]以避免在未來於其他匿名使用者混淆。''",
+'noarticletext' => '此頁目前沒有內容,您可以在其它頁[[Special:Search/{{PAGENAME}}|搜索此頁標題]],
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索有關日誌],
 或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 編輯此頁]</span>。',
-'userpage-userdoesnotexist'  => '使用者帳號「<nowiki>$1</nowiki>」未曾建立。請在建立/編輯這個頁面前先檢查一下。',
-'usercsspreview'             => "'''注意您只是在預覽您的個人 CSS, 還沒有儲存﹗'''",
-'userjspreview'              => "'''注意您只是在測試/預覽您的個人 JavaScript,還沒有儲存﹗'''",
-'previewnote'                => "'''請記住這只是預覽,內容尚未儲存!'''",
-'session_fail_preview'       => "'''很抱歉!由於部份資料遺失,我們無法處理您的編輯。'''
+'userpage-userdoesnotexist' => '使用者帳號「<nowiki>$1</nowiki>」未曾建立。請在建立/編輯這個頁面前先檢查一下。',
+'clearyourcache' => "'''注意:''' 在儲存以後, 您必須清除瀏覽器的快取才能看到所作出的改變。 '''Mozilla / Firefox / Safari:''' 按著 ''Shift'' 再點擊''重新整理''(或按下''Ctrl-Shift-R'',在蘋果Mac上按下''Cmd-Shift-R'');'''IE:''' 按著 ''Ctrl'' 再點擊 ''重新整理'',或按下 ''Ctrl-F5'';'''Konqueror:''' 只需點擊 ''重新整理'';'''Opera:''' 使用者需要在 ''工具-設定'' 中完整地清除它們的快取。",
+'usercsspreview' => "'''注意您只是在預覽您的個人 CSS, 還沒有儲存﹗'''",
+'userjspreview' => "'''注意您只是在測試/預覽您的個人 JavaScript,還沒有儲存﹗'''",
+'previewnote' => "'''請記住這只是預覽,內容尚未儲存!'''",
+'session_fail_preview' => "'''很抱歉!由於部份資料遺失,我們無法處理您的編輯。'''
 請再試一次。
 如果仍然失敗,請[[Special:UserLogout|登出]]後重新登入。",
-'session_fail_preview_html'  => "'''很抱歉!部份資料已遺失,我們無法處理您的編輯。''''''如果這個編輯過程沒有問題,請再試一次。如果仍然有問題,請登出後再重新登入一次。'''",
-'token_suffix_mismatch'      => "'''由於您使用者端中的編輯信符毀損了一些標點符號字元,為防止編輯的文字損壞,您的編輯已經被拒絕。
+'session_fail_preview_html' => "'''很抱歉!部份資料已遺失,我們無法處理您的編輯。''''''如果這個編輯過程沒有問題,請再試一次。如果仍然有問題,請登出後再重新登入一次。'''",
+'token_suffix_mismatch' => "'''由於您使用者端中的編輯信符毀損了一些標點符號字元,為防止編輯的文字損壞,您的編輯已經被拒絕。
 這種情況通常出現於使用含有很多臭蟲、以網路為主的匿名代理服務的時候。'''",
-'editing'                    => '正在编辑 $1',
-'editingcomment'             => '正在編輯$1(新段落)',
-'storedversion'              => '已保存版本',
-'nonunicodebrowser'          => "'''警告: 您的瀏覽器不相容Unicode編碼。這裡有一個工作區將使您能安全地編輯頁面: 非ASCII字元將以十六進製編碼模式出現在編輯框中。'''",
-'editingold'                 => "'''警告:你正在編輯的是本頁的舊版本。
+'editing' => '編輯「$1」',
+'editingcomment' => '正在編輯$1(新段落)',
+'storedversion' => '已保存版本',
+'nonunicodebrowser' => "'''警告: 您的瀏覽器不相容Unicode編碼。這裡有一個工作區將使您能安全地編輯頁面: 非ASCII字元將以十六進製編碼模式出現在編輯框中。'''",
+'editingold' => "'''警告:你正在編輯的是本頁的舊版本。
 如果你保存它的話,在本版本之後的任何修改都會遺失。'''",
-'longpageerror'              => "'''錯誤: 您所提交的文字長度有$1KB,這大於$2KB的最大值。該文字不能被儲存。'''",
-'protectedpagewarning'       => "'''警告: 本頁已經被保護,只有擁有管理員許可權的使用者才可修改。'''",
-'semiprotectedpagewarning'   => "'''注意:''' 本頁面被鎖定,僅限註冊使用者編輯。",
-'cascadeprotectedwarning'    => '警告: 本頁已經被保護,只有擁有管理員權限的使用者才可修改,因為本頁已被以下連鎖保護的{{PLURAL:$1|一個|多個}}頁面所包含:',
-'nocreatetitle'              => '建立頁面受限',
-'nocreatetext'               => '此網站限制了建立新頁面的功能。你可以返回並編輯已有的頁面,或者[[Special:UserLogin|登錄或建立新帳號]]。',
-'nocreate-loggedin'          => '您在這個wiki中並無許可權去建立新頁面。',
+'longpageerror' => "'''錯誤: 您所提交的文字長度有$1KB,這大於$2KB的最大值。該文字不能被儲存。'''",
+'protectedpagewarning' => "'''警告: 本頁已經被保護,只有擁有管理員許可權的使用者才可修改。'''",
+'semiprotectedpagewarning' => "'''注意:''' 本頁面被鎖定,僅限註冊使用者編輯。",
+'cascadeprotectedwarning' => '警告: 本頁已經被保護,只有擁有管理員權限的使用者才可修改,因為本頁已被以下連鎖保護的{{PLURAL:$1|一個|多個}}頁面所包含:',
+'nocreatetext' => '此網站限制了建立新頁面的功能。你可以返回並編輯已有的頁面,或者[[Special:UserLogin|登錄或建立新帳號]]。',
+'nocreate-loggedin' => '您在這個wiki中並無許可權去建立新頁面。',
 'recreate-moveddeleted-warn' => "'''警告: 你現在重新建立一個先前曾經刪除過的頁面。'''
 
 你應該要考慮一下繼續編輯這一個頁面是否合適。
 為方便起見,這一個頁面的刪除記錄已經在下面提供:",
-'edit-hook-aborted'          => '編輯被鉤取消。
+'edit-hook-aborted' => '編輯被鉤取消。
 它並無給出解釋。',
 
 # Parser/template warnings
@@ -366,93 +365,86 @@ $messages = array(
 說明:(目前) 指與目前版本比較,(先前) 指與前一個修訂版本比較,小 = 細微修改。',
 
 # Revision feed
-'history-feed-title'       => '修訂沿革',
+'history-feed-title' => '修訂沿革',
 'history-feed-description' => '本站上此頁的修訂沿革',
-'history-feed-empty'       => '所請求的頁面不存在。它可能已被刪除或重新命名。
+'history-feed-empty' => '所請求的頁面不存在。它可能已被刪除或重新命名。
 嘗試[[Special:Search|搜尋本站]]獲得相關的新建頁面。',
 
 # Revision deletion
-'rev-deleted-comment'         => '(註釋已除)',
-'rev-deleted-user'            => '(使用者名已移除)',
-'rev-deleted-event'           => '(日誌已除)',
+'rev-deleted-comment' => '(註釋已除)',
+'rev-deleted-user' => '(使用者名已移除)',
+'rev-deleted-event' => '(日誌已除)',
 'rev-deleted-text-permission' => '該頁面修訂已經被從公共文件中移除。
-在[{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} 刪除日誌]中您可能會檢視到詳細的訊息。',
-'rev-deleted-text-view'       => '該頁面修訂已經被從公共文件中移除。作為此網站的管理員,您可以檢視它;
 在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 刪除日誌]中您可能會檢視到詳細的訊息。',
-'revisiondelete'              => '刪除/復原刪除修訂',
-'revdelete-nooldid-title'     => '沒有目標修訂',
-'revdelete-nooldid-text'      => '您沒有指定此操作的目標修訂。',
-'logdelete-selected'          => "'''選取的$1個日誌項目:'''",
-'revdelete-text'              => "'''刪除的修訂仍將顯示在修訂記錄中, 但它們的文字內容已不能被公眾訪問。'''
+'rev-deleted-text-view' => '該頁面修訂已經被從公共文件中移除。作為此網站的管理員,您可以檢視它;
+在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 刪除日誌]中您可能會檢視到詳細的訊息。',
+'revisiondelete' => '刪除/復原刪除修訂',
+'revdelete-nooldid-title' => '沒有目標修訂',
+'revdelete-nooldid-text' => '您沒有指定此操作的目標修訂。',
+'logdelete-selected' => "'''選取的$1個日誌項目:'''",
+'revdelete-text' => "'''刪除的修訂仍將顯示在修訂記錄中, 但它們的文字內容已不能被公眾訪問。'''
 
 在此網站的其他管理員將仍能訪問隱藏的內容並透過與此相同的介面復原刪除,除非網站工作者進行了一些附加的限制。",
-'revdelete-legend'            => '設定修訂限制:',
-'revdelete-hide-user'         => '隱藏編輯者的使用者名/IP',
-'revdelete-hide-restricted'   => '將此限制同樣應用於管理員',
-'revdelete-suppress'          => '同時壓制由操作員以及其他使用者的資料',
-'revdelete-unsuppress'        => '在已復原的修訂中移除限制',
-'revdelete-success'           => '修訂的可見性已經成功設定。',
-'logdelete-success'           => '事件的可見性已經成功設定。',
+'revdelete-legend' => '設定修訂限制:',
+'revdelete-hide-user' => '隱藏編輯者的使用者名/IP',
+'revdelete-hide-restricted' => '將此限制同樣應用於管理員',
+'revdelete-suppress' => '同時壓制由操作員以及其他使用者的資料',
+'revdelete-unsuppress' => '在已復原的修訂中移除限制',
+'revdelete-success' => '修訂的可見性已經成功設定。',
+'logdelete-success' => '事件的可見性已經成功設定。',
 
 # History merging
-'mergehistory'        => '合併修訂記錄',
+'mergehistory' => '合併修訂記錄',
 'mergehistory-header' => "這一頁可以講您合併一個來源頁面的歷史到另一個新頁面中。
 請確認這次更改會繼續保留該頁面先前的歷史版本。
 
 '''最少該來源頁面的現時修訂必定會保持。'''",
-'mergehistory-merge'  => '以下[[:$1]]的修訂可以合併到[[:$2]]。用該選項按鈕欄去合併只有在指定時間以前所建立的修訂。要留意的是使用導航連結便會重設這一欄。',
+'mergehistory-merge' => '以下[[:$1]]的修訂可以合併到[[:$2]]。用該選項按鈕欄去合併只有在指定時間以前所建立的修訂。要留意的是使用導航連結便會重設這一欄。',
 
 # Merge log
 'mergelogpagetext' => '以下是一個最近由一個頁面的修訂沿革合併到另一個頁面的列表。',
 
 # Diffs
-'history-title'           => '「$1」的修訂沿革',
+'history-title' => '「$1」的修訂沿革',
 'compareselectedversions' => '比較選定的版本',
 
 # Search results
-'searchresults'    => '搜尋結果',
-'searchresulttext' => '有關搜尋{{SITENAME}}的更多詳情,參見[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
-'searchsubtitle'   => '查詢\'\'\'[[:$1]]\'\'\'([[Special:Prefixindex/$1|所有以 "$1" 開頭的頁面]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|所有鏈接到 "$1" 的頁面]])',
-'nonefound'        => "'''注意''': 只有一些名稱空間是會作為預設搜尋。嘗試''all:''去搜尋全部的頁面(包埋討論頁面、模板等),或可用需要的名稱空間作為前綴。",
-'powersearch'      => '搜尋',
-'searchdisabled'   => '{{SITENAME}}由於性能方面的原因,全文搜尋已被暫時停用。您可以暫時透過Google搜尋。請留意他們的索引可能會過時。',
+'searchresults' => '搜尋結果',
+'searchdisabled' => '{{SITENAME}}由於性能方面的原因,全文搜尋已被暫時停用。您可以暫時透過Google搜尋。請留意他們的索引可能會過時。',
 
 # Preferences page
-'preferences'          => '偏好設定',
-'mypreferences'        => '我的偏好設定',
-'prefsnologintext'     => '您必須先[[Special:UserLogin|登入]]才能設定個人參數。',
-'prefs-personal'       => '使用者資料',
-'prefs-rc'             => '近期變動',
+'preferences' => '偏好設定',
+'mypreferences' => '偏好設定',
+'prefs-personal' => '使用者資料',
+'prefs-rc' => '近期變動',
 'prefs-watchlist-days' => '監視列表中顯示記錄的最長天數:',
-'saveprefs'            => '保存偏好設定',
-'resetprefs'           => '重設參數',
-'searchresultshead'    => '搜尋結果設定',
-'recentchangesdays'    => '近期變動中的顯示日數:',
-'recentchangescount'   => '近期變動中的編輯數:',
-'savedprefs'           => '您的個人偏好設定已經儲存。',
-'timezonelegend'       => '時區',
-'localtime'            => '當地時間',
-'timezoneoffset'       => '時差¹',
-'servertime'           => '伺服器時間',
-'allowemail'           => '接受來自其他使用者的郵件',
-'defaultns'            => '否則在這些名字空間搜尋:',
-'username'             => '使用者名:',
-'uid'                  => '使用者ID:',
-'yournick'             => '暱稱:',
-'badsig'               => '錯誤的原始簽名;請檢查HTML標籤。',
-'badsiglength'         => '你的簽名過長;簽名長度必須在$1個字元以下。',
-'prefs-help-gender'    => '可選:用於軟體中的性別指定。此項資料將會被公開。',
-'prefs-help-realname'  => '真實姓名是選填的,如果您選擇提供它,那它便用以對您的貢獻署名。',
-'prefs-help-email'     => '電子郵件是選填的,但當啟用它後可以在您忘記您的個密碼時需要將新密碼重設寄回給您。而在您未公開自己的使用者身分時也能透過您的用戶頁或用戶討論頁與您聯繫。',
+'saveprefs' => '保存偏好設定',
+'searchresultshead' => '搜尋結果設定',
+'recentchangesdays' => '近期變動中的顯示日數:',
+'recentchangescount' => '近期變動中的編輯數:',
+'savedprefs' => '您的個人偏好設定已經儲存。',
+'timezonelegend' => '時區',
+'localtime' => '當地時間',
+'servertime' => '伺服器時間:',
+'allowemail' => '接受來自其他使用者的郵件',
+'defaultns' => '否則在這些名字空間搜尋:',
+'username' => '使用者名:',
+'uid' => '使用者ID:',
+'yournick' => '暱稱:',
+'badsig' => '錯誤的原始簽名;請檢查HTML標籤。',
+'badsiglength' => '你的簽名過長;簽名長度必須在$1個字元以下。',
+'prefs-help-gender' => '可選:用於軟體中的性別指定。此項資料將會被公開。',
+'prefs-help-realname' => '真實姓名是選填的,如果您選擇提供它,那它便用以對您的貢獻署名。',
+'prefs-help-email' => '電子郵件是選填的,但當啟用它後可以在您忘記您的個密碼時需要將新密碼重設寄回給您。而在您未公開自己的使用者身分時也能透過您的用戶頁或用戶討論頁與您聯繫。',
 
 # User rights
-'userrights'               => '使用者權限管理',
-'userrights-lookup-user'   => '管理使用者群組',
+'userrights' => '使用者權限管理',
+'userrights-lookup-user' => '管理使用者群組',
 'userrights-user-editname' => '輸入使用者帳號:',
-'editusergroup'            => '編輯使用者群組',
-'editinguser'              => "正在編輯使用者'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])",
+'editusergroup' => '編輯使用者群組',
+'editinguser' => "正在編輯使用者'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] | [[Special:Contributions/$1|{{int:contribslink}}]])",
 'userrights-editusergroup' => '編輯使用者群組',
-'saveusergroups'           => '保存使用者群組',
+'saveusergroups' => '保存使用者群組',
 
 # Groups
 'group-autoconfirmed' => '自動確認使用者',
@@ -462,31 +454,31 @@ $messages = array(
 'grouppage-autoconfirmed' => '{{ns:project}}:自動確認使用者',
 
 # User rights log
-'rightslog'     => '使用者權限日誌',
+'rightslog' => '使用者權限日誌',
 'rightslogtext' => '以下記錄了使用者權限的更改記錄。',
 
 # Recent changes
-'recentchanges'                     => '近期變動',
-'recentchanges-feed-description'    => '追蹤此訂閱在 wiki 上的近期變動。',
-'rcnotefrom'                        => '下面是自<b>$2</b>(最多顯示<b>$1</b>):',
-'rcshowhideminor'                   => '$1細微修改',
-'rcshowhidebots'                    => '$1機器人的編輯',
-'rcshowhideliu'                     => '$1具名使用者的編輯',
-'rcshowhideanons'                   => '$1匿名使用者的編輯',
-'rcshowhidepatr'                    => ' $1檢查過的編輯',
+'recentchanges' => '近期變動',
+'recentchanges-feed-description' => '追蹤此訂閱在 wiki 上的近期變動。',
+'rcnotefrom' => '下面是自<b>$2</b>(最多顯示<b>$1</b>):',
+'rcshowhideminor' => '$1細微修改',
+'rcshowhidebots' => '$1機器人的編輯',
+'rcshowhideliu' => '$1具名使用者的編輯',
+'rcshowhideanons' => '$1匿名使用者的編輯',
+'rcshowhidepatr' => ' $1檢查過的編輯',
 'number_of_watching_users_pageview' => '[$1個關注使用者]',
 
 # Recent changes linked
-'recentchangeslinked'         => '相關頁面修訂記錄',
-'recentchangeslinked-feed'    => '相關頁面修訂記錄',
+'recentchangeslinked' => '相關頁面修訂記錄',
+'recentchangeslinked-feed' => '相關頁面修訂記錄',
 'recentchangeslinked-toolbox' => '相關頁面修訂記錄',
-'recentchangeslinked-title'   => '$1 內連結頁面的修訂記錄',
+'recentchangeslinked-title' => '$1 內連結頁面的修訂記錄',
 'recentchangeslinked-summary' => "這一個特殊頁面列示這一頁連出頁面的近期變動。在您監視列表中的頁面會以'''粗體'''表示。",
 
 # Upload
-'upload'                      => '上傳檔案',
-'reuploaddesc'                => '返回上載表單。',
-'uploadtext'                  => "使用下面的表單來上傳用在頁面內新的圖片檔案。
+'upload' => '上傳檔案',
+'reuploaddesc' => '返回上載表單。',
+'uploadtext' => "使用下面的表單來上傳用在頁面內新的圖片檔案。
 要檢視或搜尋以前上傳的圖片
 可以進入[[Special:FileList|圖片清單]],
 上傳和刪除將在[[Special:Log/upload|上傳日誌]]中記錄。
@@ -495,50 +487,50 @@ $messages = array(
 '''<nowiki>[[</nowiki>{{ns:file}}:file.jpg<nowiki>]]</nowiki>''',
 '''<nowiki>[[</nowiki>{{ns:file}}:file.png|替換文字<nowiki>]]</nowiki>''' 或
 '''<nowiki>[[</nowiki>{{ns:media}}:file.ogg<nowiki>]]</nowiki>'''。",
-'uploadlogpagetext'           => '以下是最近上傳的檔案的一覽表。',
-'ignorewarning'               => '忽略警告並儲存檔案。',
-'illegalfilename'             => '檔案名"$1"包含有頁面標題所禁止的字符。請改名後重新上傳。',
-'badfilename'                 => '檔案名已被改為"$1"。',
-'hookaborted'                 => '您所嘗試的修改被擴展鉤捨棄。',
-'fileexists-thumbnail-yes'    => "這個檔案好像是一幅圖片的縮圖版本''(縮圖)''。 [[$1|thumb]]
-請檢查清楚該檔案'''<tt>[[:$1]]</tt>'''
+'uploadlogpagetext' => '以下是最近上傳的檔案的一覽表。',
+'ignorewarning' => '忽略警告並儲存檔案。',
+'illegalfilename' => '檔案名"$1"包含有頁面標題所禁止的字符。請改名後重新上傳。',
+'badfilename' => '檔案名已被改為"$1"。',
+'hookaborted' => '您所嘗試的修改被擴展鉤捨棄。',
+'fileexists-thumbnail-yes' => "這個檔案好像是一幅圖片的縮圖版本''(縮圖)''。 [[$1|thumb]]
+請檢查清楚該檔案<strong>[[:$1]]</strong>
 如果檢查後的檔案是同原本圖片的大小是一樣的話,就不用再上載多一幅縮圖。",
-'file-thumbnail-no'           => "該檔名是以'''<tt>$1</tt>'''開始。它好像一幅圖片的縮圖版本''(縮圖)''。
+'file-thumbnail-no' => "該檔名是以<strong>$1</strong>開始。它好像一幅圖片的縮圖版本''(縮圖)''。
 如果你有該圖片的完整大小,如不是請再修改檔名。",
-'fileexists-forbidden'        => '已存在相同名稱的檔案;請返回並用一個新的名稱來上傳此檔案。[[File:$1|thumb|center|$1]]',
+'fileexists-forbidden' => '已存在相同名稱的檔案;請返回並用一個新的名稱來上傳此檔案。[[File:$1|thumb|center|$1]]',
 'fileexists-shared-forbidden' => '在共享檔案庫中已存在此名稱的檔案;請返回並用一個新的名稱來上傳此檔案。[[File:$1|thumb|center|$1]]',
-'uploaddisabledtext'          => '檔案上傳在此網站不可用。',
-'watchthisupload'             => '監視此頁',
+'uploaddisabledtext' => '檔案上傳在此網站不可用。',
+'watchthisupload' => '監視此頁',
 
-'upload-proto-error'     => '協訂錯誤',
+'upload-proto-error' => '協訂錯誤',
 'upload-file-error-text' => '當試圖在伺服器上建立臨時檔案時發生內部錯誤。請與系統管理員聯繫。',
 'upload-misc-error-text' => '在上傳時發生未知的錯誤. 請驗証使用了正確並可訪問的 URL,然後進行重試。如果問題仍然存在,請與系統管理員聯繫。',
 
 # Special:ListFiles
 'listfiles_search_for' => '按圖片名稱搜尋:',
-'listfiles_user'       => '使用者',
+'listfiles_user' => '使用者',
 
 # File description page
-'filehist'           => '檔案歷史',
+'filehist' => '檔案歷史',
 'filehist-deleteone' => '刪除這個',
-'filehist-revert'    => '復原',
-'filehist-datetime'  => '日期/時間',
-'filehist-user'      => '使用者',
-'imagelinks'         => '連結',
+'filehist-revert' => '復原',
+'filehist-datetime' => '日期/時間',
+'filehist-user' => '使用者',
+'imagelinks' => '連結',
 
 # File reversion
-'filerevert'                => '復原$1',
-'filerevert-legend'         => '復原檔案',
-'filerevert-intro'          => '<span class="plainlinks">您現正在復原\'\'\'[[Media:$1|$1]]\'\'\'到[$4 於$2 $3的版本]。</span>',
+'filerevert' => '復原$1',
+'filerevert-legend' => '復原檔案',
+'filerevert-intro' => '<span class="plainlinks">您現正在復原\'\'\'[[Media:$1|$1]]\'\'\'到[$4 於$2 $3的版本]。</span>',
 'filerevert-defaultcomment' => '已經復原到於$1 $2的版本',
-'filerevert-submit'         => '復原',
-'filerevert-success'        => '<span class="plainlinks">\'\'\'[[Media:$1|$1]]\'\'\'已經復原到[$4 於$2 $3的版本]。</span>',
+'filerevert-submit' => '復原',
+'filerevert-success' => '<span class="plainlinks">\'\'\'[[Media:$1|$1]]\'\'\'已經復原到[$4 於$2 $3的版本]。</span>',
 
 # File deletion
-'filedelete-intro'      => "您現正刪除'''[[Media:$1|$1]]'''。",
-'filedelete-intro-old'  => '<span class="plainlinks">你現正刪除\'\'\'[[Media:$1|$1]]\'\'\'於[$4 $2 $3]的版本。</span>',
-'filedelete-comment'    => '註解:',
-'filedelete-nofile'     => "'''$1'''在這個網站中不存在。",
+'filedelete-intro' => "您現正刪除'''[[Media:$1|$1]]'''。",
+'filedelete-intro-old' => '<span class="plainlinks">你現正刪除\'\'\'[[Media:$1|$1]]\'\'\'於[$4 $2 $3]的版本。</span>',
+'filedelete-comment' => '註解:',
+'filedelete-nofile' => "'''$1'''在這個網站中不存在。",
 'filedelete-nofile-old' => "在已指定屬性的情況下,這裡沒有'''$1'''於 $2 $3 的版本。",
 
 # MIME search
@@ -556,62 +548,57 @@ $messages = array(
 # Statistics
 'statistics-header-users' => '使用者統計',
 
-'disambiguations'      => '消歧義',
-'disambiguations-text' => '以下的頁面都有到<b>消歧義頁</b>的鏈接,
-但它們應該是連到適當的標題。<br />
-個頁面會被視為消含糊頁如果它是連自[[MediaWiki:Disambiguationspage]]。',
-
 'withoutinterwiki-summary' => '以下的頁面是未有語言鏈接到其它語言版本:',
 
 # Miscellaneous special pages
-'lonelypagestext'     => '以下頁面尚未被這個wiki中的其它頁面連結。',
+'lonelypagestext' => '以下頁面尚未被這個wiki中的其它頁面連結。',
 'uncategorizedimages' => '待分類圖片',
-'unusedimages'        => '未使用圖片',
-'popularpages'        => '熱門頁面',
-'mostimages'          => '最多連結圖片',
-'prefixindex'         => '所有頁面之前綴',
-'deadendpagestext'    => '以下頁面沒有連結到這個wiki中的其它頁面。',
-'listusers'           => '使用者列表',
-'newpages-username'   => '使用者帳號:',
-'move'                => '移動',
-'unusedimagestext'    => '請注意其它網站可能直接透過 URL 連結此圖片,所以這裡列出的圖片有可能依然被使用。',
-'notargettext'        => '您還沒有指定一個目標頁面或使用者以進行此項操作。',
+'unusedimages' => '未使用圖片',
+'popularpages' => '熱門頁面',
+'mostimages' => '最多連結圖片',
+'prefixindex' => '所有頁面之前綴',
+'deadendpagestext' => '以下頁面沒有連結到這個wiki中的其它頁面。',
+'listusers' => '使用者列表',
+'newpages-username' => '使用者帳號:',
+'move' => '移動',
+'unusedimagestext' => '請注意其它網站可能直接透過 URL 連結此圖片,所以這裡列出的圖片有可能依然被使用。',
+'notargettext' => '您還沒有指定一個目標頁面或使用者以進行此項操作。',
 
 # Special:Log
 'specialloguserlabel' => '使用者:',
-'alllogstext'         => '綜合顯示 {{SITENAME}} 的上傳、刪除、保護、查封以及站務日誌。',
+'alllogstext' => '綜合顯示 {{SITENAME}} 的上傳、刪除、保護、查封以及站務日誌。',
 
 # Special:ListUsers
-'listusersfrom'      => '給定顯示使用者條件:',
+'listusersfrom' => '給定顯示使用者條件:',
 'listusers-noresult' => '找不到使用者。',
 
 # Special:ActiveUsers
 'activeusers-hidebots' => '隱藏機器人',
 
-# E-mail user
-'mailnologin'     => '無E-mail地址',
+# Email user
+'mailnologin' => '無E-mail地址',
 'mailnologintext' => '您必須先[[Special:UserLogin|登入]]
 並在[[Special:Preferences|偏好設定]]
 中有一個有效的e-mail地址才可以E-mail其他使用者。',
-'emailuser'       => 'E-mail該使用者',
-'emailpage'       => 'E-mail使用者',
-'emailpagetext'   => '如果該使用者已經在他或她的偏好設定頁中輸入了有效的e-mail地址,以下的表格將寄一個訊息給該使用者。您在您偏好設定中所輸入的e-mail地址將出現在郵件「發件人」一欄中,這樣該使用者就可以回覆您。',
-'noemailtext'     => '該使用者還沒有指定一個有效的e-mail地址,
+'emailuser' => 'E-mail該使用者',
+'emailpage' => 'E-mail使用者',
+'emailpagetext' => '如果該使用者已經在他或她的偏好設定頁中輸入了有效的e-mail地址,以下的表格將寄一個訊息給該使用者。您在您偏好設定中所輸入的e-mail地址將出現在郵件「發件人」一欄中,這樣該使用者就可以回覆您。',
+'noemailtext' => '該使用者還沒有指定一個有效的e-mail地址,
 或者選擇不接受來自其他使用者的e-mail。',
-'emailfrom'       => '發件人',
-'emailto'         => '收件人',
-'emailsubject'    => '主題',
-'emailmessage'    => '訊息',
-'emailccme'       => '將我的消息的副本發送一份到我的E-mail信箱。',
+'emailfrom' => '發件人',
+'emailto' => '收件人',
+'emailsubject' => '主題',
+'emailmessage' => '訊息',
+'emailccme' => '將我的消息的副本發送一份到我的E-mail信箱。',
 
 # Watchlist
-'addedwatchtext'    => "頁面「[[:$1]]」已經被加入到您的[[Special:Watchlist|監視清單]]中。將來有關此頁面及其討論頁的任何修改將會在那裡列出,而且還會在[[Special:RecentChanges|近期變動]]中以'''粗體'''形式列出以使起更容易識別。",
-'removedwatchtext'  => '頁面「[[:$1]]」已經從您的監視頁面中移除。',
+'addedwatchtext' => '已將頁面「[[:$1]]」加入您的[[Special:Watchlist|監視列表]],未來此頁面或其討論頁如有更動,都會在監視列表中列出。',
+'removedwatchtext' => '頁面「[[:$1]]」已經從您的監視頁面中移除。',
 'watchlist-details' => '不包含討論頁,您的監視列表共有 $1 頁。',
 
 'enotif_impersonal_salutation' => '{{SITENAME}}使用者',
-'enotif_anon_editor'           => '匿名使用者$1',
-'enotif_body'                  => '親愛的 $WATCHINGUSERNAME,
+'enotif_anon_editor' => '匿名使用者$1',
+'enotif_body' => '親愛的 $WATCHINGUSERNAME,
 
 $PAGEEDITOR 已經在 $PAGEEDITDATE $CHANGEDORCREATED{{SITENAME}}的 $PAGETITLE 頁面,請到 $PAGETITLE_URL 檢視目前版本。
 
@@ -639,77 +626,77 @@ $NEWPAGE
 # Delete
 'confirmdeletetext' => '您即將從資料庫中永遠刪除一個頁面或圖片以及其歷史。
 請確定您要進行此項操作,並且了解其後果,同時您的行為符合[[{{MediaWiki:Policy-url}}]]。',
-'deletedtext'       => '「$1」已經被刪除。
+'deletedtext' => '「$1」已經被刪除。
 最近刪除的紀錄請參見$2。',
-'dellogpagetext'    => '以下是最近刪除的紀錄列表。
+'dellogpagetext' => '以下是最近刪除的紀錄列表。
 所有的時間都是使用伺服器時間。',
-'reverted'          => '復原到早期版本',
-'deletecomment'     => '原因:',
+'reverted' => '復原到早期版本',
+'deletecomment' => '原因:',
 
 # Rollback
-'rollback'         => '復原',
-'rollback_short'   => '復原',
-'rollbacklink'     => '復原',
-'rollbackfailed'   => '無法復原',
-'cantrollback'     => '無法復原編輯;最後的貢獻者是本文的唯一作者。',
-'alreadyrolled'    => '無法復原由[[User:$2|$2]] ([[User talk:$2|討論]])進行的[[$1]]的最後編輯;
+'rollback' => '復原',
+'rollback_short' => '復原',
+'rollbacklink' => '復原',
+'rollbackfailed' => '無法復原',
+'cantrollback' => '無法復原編輯;最後的貢獻者是本文的唯一作者。',
+'alreadyrolled' => '無法復原由[[User:$2|$2]] ([[User talk:$2|討論]])進行的[[$1]]的最後編輯;
 其他人已經編輯或是復原了該頁。
 
 最後編輯者: [[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]]的最後一個版本',
+'editcomment' => "編輯說明: \"''\$1''\"。",
+'revertpage' => '復原由[[Special:Contributions/$2|$2]] ([[User talk:$2|對話]])的編輯;更改回[[User:$1|$1]]的最後一個版本',
 'rollback-success' => '復原由$1的編輯;更改回$2的最後一個版本。',
 
 # Protect
-'protect-title'               => '更改「$1」的保護等級',
-'protect-locked-blocked'      => "您不能在被封鎖時更改保護級別。
+'protect-title' => '更改「$1」的保護等級',
+'protect-locked-blocked' => "您不能在被封鎖時更改保護級別。
 以下是'''$1'''現時的保護級別:",
-'protect-locked-access'       => "您的帳號權限不能修改保護級別。
+'protect-locked-access' => "您的帳號權限不能修改保護級別。
 以下是'''$1'''現時的保護級別:",
-'protect-cascadeon'           => '以下的{{PLURAL:$1|一個|多個}}頁面包含著本頁面的同時,啟動了連鎖保護,因此本頁面目前也被保護,未能編輯。您可以設定本頁面的保護級別,但這並不會對連鎖保護有所影響。',
-'protect-default'             => '(預設)',
+'protect-cascadeon' => '以下的{{PLURAL:$1|一個|多個}}頁面包含著本頁面的同時,啟動了連鎖保護,因此本頁面目前也被保護,未能編輯。您可以設定本頁面的保護級別,但這並不會對連鎖保護有所影響。',
+'protect-default' => '(預設)',
 'protect-level-autoconfirmed' => '禁止未註冊使用者',
-'protect-expiry-options'      => '2小時:2 hours,1天:1 day,1周:1 week,2周:2 weeks,1個月:1 month,3個月:3 months,6個月:6 months,1年:1 year,永久:infinite',
-'maximum-size'                => '最大大小',
+'protect-expiry-options' => '2小時:2 hours,1天:1 day,1周:1 week,2周:2 weeks,1個月:1 month,3個月:3 months,6個月:6 months,1年:1 year,永久:infinite',
+'maximum-size' => '最大大小',
 
 # Undelete
-'undelete'                     => '復原被刪頁面',
-'undeletepage'                 => '瀏覽及復原被刪頁面',
-'undeletepagetext'             => '以下頁面已經被刪除,但依然在檔案中並可以被復原。
+'undelete' => '復原被刪頁面',
+'undeletepage' => '瀏覽及復原被刪頁面',
+'undeletepagetext' => '以下頁面已經被刪除,但依然在檔案中並可以被復原。
 檔案庫可能被定時清理。',
-'undeleteextrahelp'            => "復原整個頁面時,請清除所有複選框後按 '''''復原''''' 。 復原特定版本時,請選擇相應版本前的複選框後按'''''復原''''' 。按 '''''重設''''' 將清除評論內容及所有複選框。",
-'undeletehistory'              => '如果您復原了該頁面,所有版本都會被復原到修訂沿革中。
+'undeleteextrahelp' => "復原整個頁面時,請清除所有複選框後按 '''''復原''''' 。 復原特定版本時,請選擇相應版本前的複選框後按'''''復原''''' 。按 '''''重設''''' 將清除評論內容及所有複選框。",
+'undeletehistory' => '如果您復原了該頁面,所有版本都會被復原到修訂沿革中。
 如果本頁刪除後有一個同名的新頁面建立,被復原的版本將會稱為較新的歷史。',
-'undeleterevdel'               => '如果把最新修訂部份刪除,反刪除便無法進行。如果遇到這種情況,您必須反選或反隱藏最新已刪除的修訂。對於您沒有權限去檢視的修訂是無法復原的。',
-'undeletehistorynoadmin'       => '這個頁面已經被刪除,刪除原因顯示在下方編輯摘要中。被刪除前的所有修訂版本,連同刪除前貢獻使用者等等細節只有管理員可以看見。',
-'undelete-revision'            => '刪除$1時由$3(在$2)所編寫的修訂版本:',
-'undeleterevision-missing'     => '此版本的內容不正確或已經遺失。可能連結錯誤、被移除或已經被復原。',
-'undeletebtn'                  => '復原',
-'undeletedrevisions'           => '$1個修訂版本已經復原',
-'undeletedrevisions-files'     => '$1 個版本和 $2 個檔案被復原',
-'undeletedfiles'               => '$1 個檔案被復原',
-'cannotundelete'               => '復原失敗;可能之前已經被其他人復原。',
-'undeletedpage'                => "'''$1已經被復原''' 請參考[[Special:Log/delete|刪除日誌]]來查詢刪除及復原記錄。",
+'undeleterevdel' => '如果把最新修訂部份刪除,反刪除便無法進行。如果遇到這種情況,您必須反選或反隱藏最新已刪除的修訂。對於您沒有權限去檢視的修訂是無法復原的。',
+'undeletehistorynoadmin' => '這個頁面已經被刪除,刪除原因顯示在下方編輯摘要中。被刪除前的所有修訂版本,連同刪除前貢獻使用者等等細節只有管理員可以看見。',
+'undelete-revision' => '刪除$1時由$3(在$2)所編寫的修訂版本:',
+'undeleterevision-missing' => '此版本的內容不正確或已經遺失。可能連結錯誤、被移除或已經被復原。',
+'undeletebtn' => '復原',
+'undeletedrevisions' => '$1個修訂版本已經復原',
+'undeletedrevisions-files' => '$1 個版本和 $2 個檔案被復原',
+'undeletedfiles' => '$1 個檔案被復原',
+'cannotundelete' => '復原失敗;可能之前已經被其他人復原。',
+'undeletedpage' => "'''$1已經被復原''' 請參考[[Special:Log/delete|刪除日誌]]來查詢刪除及復原記錄。",
 'undelete-missing-filearchive' => '由於檔案存檔 ID $1 不在資料庫中,不能在檔案存檔中復原。它可能已經反刪除了。',
 
 # Contributions
 'contributions' => '使用者編修記錄',
-'mycontris'     => '我的編修記錄',
-'contribsub2'   => '$1的編修記錄 ($2)',
-'uctop'         => '(最新修改)',
+'mycontris' => '編修記錄',
+'contribsub2' => '$1的編修記錄 ($2)',
+'uctop' => '(最新修改)',
 
-'sp-contributions-newbies'    => '只顯示新建立之使用者的編修記錄',
-'sp-contributions-blocklog'   => '封鎖記錄',
+'sp-contributions-newbies' => '只顯示新建立之使用者的編修記錄',
+'sp-contributions-blocklog' => '封鎖記錄',
 'sp-contributions-userrights' => '使用者權限管理',
-'sp-contributions-username'   => 'IP位址或使用者名稱:',
+'sp-contributions-username' => 'IP位址或使用者名稱:',
 
 # What links here
 'whatlinkshere-title' => '鏈接到$1的頁面',
 
 # Block/unblock
-'blockip'                     => '封鎖使用者',
-'ipadressorusername'          => 'IP地址或使用者名:',
-'ipbreason-dropdown'          => '*一般的封鎖理由
+'blockip' => '封鎖使用者',
+'ipadressorusername' => 'IP地址或使用者名稱:',
+'ipbreason-dropdown' => '*一般的封鎖理由
 ** 屢次增加不實資料
 ** 刪除頁面內容
 ** 外部連結廣告
@@ -717,50 +704,49 @@ $NEWPAGE
 ** 無禮的行為、攻擊/騷擾別人
 ** 濫用多個帳號
 ** 不能接受的使用者名',
-'ipbcreateaccount'            => '阻止建立新帳號',
-'ipbemailban'                 => '阻止使用者傳送E-mail',
-'ipbenableautoblock'          => '自動封鎖此使用者最後所用的IP位址,以及後來試圖編輯所用的所有位址',
-'ipbsubmit'                   => '封鎖該地址',
-'ipbhidename'                 => '在封鎖日誌、活躍封鎖列表以及使用者列表中隱藏使用者名/IP',
-'blockipsuccesssub'           => '封鎖成功',
-'blockipsuccesstext'          => '[[Special:Contributions/$1|$1]]已經被封鎖。
+'ipbcreateaccount' => '阻止建立新帳號',
+'ipbemailban' => '阻止使用者傳送E-mail',
+'ipbenableautoblock' => '自動封鎖此使用者最後所用的IP位址,以及後來試圖編輯所用的所有位址',
+'ipbsubmit' => '封鎖該地址',
+'ipbhidename' => '在封鎖日誌、活躍封鎖列表以及使用者列表中隱藏使用者名/IP',
+'blockipsuccesssub' => '封鎖成功',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]已經被封鎖。
 <br />參看[[Special:BlockList|被封IP地址列表]]以覆審封鎖。',
-'ipb-edit-dropdown'           => '編輯封鎖原因',
-'ipb-unblock-addr'            => '解除封鎖$1',
-'ipb-unblock'                 => '解除禁封使用者名或IP地址',
-'ipb-blocklist'               => '檢視現有的封鎖',
-'unblockip'                   => '解除禁封IP地址',
-'unblockiptext'               => '用下面的表單來復原先前被禁封的IP地址的書寫權。',
-'ipusubmit'                   => '解除禁封',
-'unblocked'                   => '[[User:$1|$1]] 的封鎖已經解除。',
-'unblocked-id'                => '封鎖 $1 已經被移除',
-'ipblocklist-legend'          => '搜尋一位已經被封鎖的使用者',
-'anononlyblock'               => '僅限匿名使用者',
-'noautoblockblock'            => '禁用自動封鎖',
-'createaccountblock'          => '禁止建立帳號',
-'ipblocklist-empty'           => '封鎖列表為空。',
-'ipblocklist-no-results'      => '所要求的IP地址/使用者名沒有被封鎖。',
-'blocklink'                   => '禁封',
-'blocklogentry'               => '[[$1]]已被封鎖 $3 ,終止時間為$2',
-'blocklogtext'                => '這是關於使用者封鎖和解除封鎖操作的記錄。被自動封鎖的IP地址沒有被列出。請參閱[[Special:BlockList|被封鎖的IP地址和使用者列表]]。',
-'block-log-flags-anononly'    => '僅限匿名使用者',
-'block-log-flags-nocreate'    => '禁止此IP/使用者建立新帳號',
+'ipb-edit-dropdown' => '編輯封鎖原因',
+'ipb-unblock-addr' => '解除封鎖$1',
+'ipb-unblock' => '解除禁封使用者名或IP地址',
+'ipb-blocklist' => '檢視現有的封鎖',
+'unblockip' => '解除禁封IP地址',
+'unblockiptext' => '用下面的表單來復原先前被禁封的IP地址的書寫權。',
+'ipusubmit' => '解除禁封',
+'unblocked' => '[[User:$1|$1]] 的封鎖已經解除。',
+'unblocked-id' => '封鎖 $1 已經被移除',
+'ipblocklist-legend' => '搜尋一位已經被封鎖的使用者',
+'anononlyblock' => '僅限匿名使用者',
+'noautoblockblock' => '禁用自動封鎖',
+'createaccountblock' => '禁止建立帳號',
+'ipblocklist-empty' => '封鎖列表為空。',
+'ipblocklist-no-results' => '所要求的IP地址/使用者名沒有被封鎖。',
+'blocklink' => '禁封',
+'blocklogentry' => '[[$1]]已被封鎖 $3 ,終止時間為$2',
+'blocklogtext' => '這是關於使用者封鎖和解除封鎖操作的記錄。被自動封鎖的IP地址沒有被列出。請參閱[[Special:BlockList|被封鎖的IP地址和使用者列表]]。',
+'block-log-flags-anononly' => '僅限匿名使用者',
+'block-log-flags-nocreate' => '禁止建立新帳號',
 'block-log-flags-noautoblock' => '停用自動封鎖',
-'range_block_disabled'        => '只有管理員才能建立禁止封鎖的範圍。',
-'ipb_cant_unblock'            => '錯誤: 找不到封鎖ID$1。可能已經解除封鎖。',
-'ipb_blocked_as_range'        => '錯誤: 該IP $1 無直接封鎖,不可以解除封鎖。但是它是在 $2 的封鎖範圍之內,該段範圍是可以解除封鎖的。',
-'blockme'                     => '封鎖我',
-'sorbsreason'                 => '您的IP位址被 DNSBL列為屬於開放代理服務器.',
+'range_block_disabled' => '只有管理員才能建立禁止封鎖的範圍。',
+'ipb_cant_unblock' => '錯誤: 找不到封鎖ID$1。可能已經解除封鎖。',
+'ipb_blocked_as_range' => '錯誤: 該IP $1 無直接封鎖,不可以解除封鎖。但是它是在 $2 的封鎖範圍之內,該段範圍是可以解除封鎖的。',
+'sorbsreason' => '您的IP位址被 DNSBL列為屬於開放代理服務器.',
 'sorbs_create_account_reason' => '由於您的IP位址被 DNSBL列為屬於開放代理服務器,所以您無法建立帳號。',
 
 # Developer tools
-'lockdbtext'   => '鎖住資料庫將禁止所有使用者進行編輯頁面、更改參數、編輯監視列表以及其他需要更改資料庫的操作。
+'lockdbtext' => '鎖住資料庫將禁止所有使用者進行編輯頁面、更改參數、編輯監視列表以及其他需要更改資料庫的操作。
 請確認您的決定,並且保證您在維護工作結束後會重新開放資料庫。',
 'unlockdbtext' => '開放資料庫將會復原所有使用者進行編輯頁面、修改參數、編輯監視列表以及其他需要更改資料庫的操作。
 請確認您的決定。',
 
 # Move page
-'movepagetext'    => "用下面的表單來重新命名一個頁面,並將其修訂沿革同時移動到新頁面。
+'movepagetext' => "用下面的表單來重新命名一個頁面,並將其修訂沿革同時移動到新頁面。
 老的頁面將成為新頁面的重定向頁。
 連結到老頁面的連結並不會自動更改;
 請檢查雙重或損壞重定向連結。
@@ -776,13 +762,13 @@ $NEWPAGE
 請在行動前先了結其所可能帶來的後果。",
 'movenologintext' => '您必須是一名登記使用者並且[[Special:UserLogin|登入]]
 後才可移動一個頁面。',
-'movenotallowed'  => '您在這個wiki中度並沒有許可權去移動頁面。',
-'movetalk'        => '如果可能的話,請同時移動對話頁。',
+'movenotallowed' => '您在這個wiki中度並沒有許可權去移動頁面。',
+'movetalk' => '如果可能的話,請同時移動對話頁。',
 'movelogpagetext' => '以下是已經移動的頁面清單:',
-'revertmove'      => '復原該移動',
+'revertmove' => '復原該移動',
 
 # Export
-'exporttext'      => '您可以將特定頁面或一組頁面的文字以及編輯歷史以 XML 格式匯出;這樣可以將有關頁面透過「[[Special:Import|匯入頁面]]」頁面匯入到另一個執行 MediaWiki 的網站。
+'exporttext' => '您可以將特定頁面或一組頁面的文字以及編輯歷史以 XML 格式匯出;這樣可以將有關頁面透過「[[Special:Import|匯入頁面]]」頁面匯入到另一個執行 MediaWiki 的網站。
 
 要匯出頁面,請在下面的文字框中輸入頁面標題,每行一個標題,
 並選擇你是否需要匯出帶有修訂紀錄的以前的版本,
@@ -792,59 +778,60 @@ $NEWPAGE
 'export-download' => '提供一個檔案以供另存',
 
 # Namespace 8 related
-'allmessages'               => '系統介面',
-'allmessagestext'           => '這裡列出所有可定製的系統介面。',
+'allmessages' => '系統介面',
+'allmessagestext' => '這裡列出所有可定製的系統介面。',
 'allmessagesnotsupportedDB' => '系統介面功能處於關閉狀態 (wgUseDatabaseMessages)。',
 
 # Thumbnails
 'thumbnail_error' => '建立縮圖錯誤: $1',
 
 # Special:Import
-'import-interwiki-history'   => '複製此頁的所有歷史版本',
+'import-interwiki-history' => '複製此頁的所有歷史版本',
 'import-interwiki-namespace' => '將頁面轉移到名字空間:',
-'importtext'                 => '請使用 Special:Export 功能從源 wiki 匯出檔案,儲存到您的磁片並上傳到這裡。',
-'importfailed'               => '匯入失敗: $1',
-'importsuccess'              => '匯入成功﹗',
-'importhistoryconflict'      => '存在衝突的修訂沿革(可能在之前已經匯入過此頁面)',
+'importtext' => '請使用 Special:Export 功能從源 wiki 匯出檔案,儲存到您的磁片並上傳到這裡。',
+'importfailed' => '匯入失敗: $1',
+'importsuccess' => '匯入成功﹗',
+'importhistoryconflict' => '存在衝突的修訂沿革(可能在之前已經匯入過此頁面)',
 
 # Tooltip help for the actions
-'tooltip-pt-userpage'             => '用戶頁',
-'tooltip-pt-anonuserpage'         => '您編輯本站所用IP的對應使用者頁',
-'tooltip-pt-mytalk'               => '討論頁',
-'tooltip-pt-preferences'          => '我的偏好設定',
-'tooltip-pt-watchlist'            => '我的監視列表',
-'tooltip-pt-mycontris'            => '編修記錄',
-'tooltip-ca-addsection'           => '於本討論頁增加新的討論主題',
-'tooltip-ca-history'              => '本頁面的早前版本。',
-'tooltip-ca-undelete'             => '將這個頁面復原到被刪除以前的狀態',
-'tooltip-p-logo'                  => '首頁',
-'tooltip-n-help'                  => '尋求說明',
-'tooltip-feed-rss'                => '訂閱本修訂記錄的RSS資訊',
-'tooltip-feed-atom'               => '訂閱本修訂記錄的Atom訊息',
-'tooltip-t-contributions'         => '檢視該使用者的編修記錄',
-'tooltip-t-emailuser'             => '向該使用者發送電子郵件',
-'tooltip-t-upload'                => '上傳圖片或多媒體檔',
-'tooltip-t-permalink'             => '這個頁面版本的永久連結',
-'tooltip-ca-nstab-user'           => '檢視使用者頁',
-'tooltip-ca-nstab-image'          => '查詢圖片頁面',
-'tooltip-ca-nstab-template'       => '檢視模板',
-'tooltip-ca-nstab-help'           => '檢視說明頁面',
-'tooltip-ca-nstab-category'       => '檢視分類頁面',
-'tooltip-minoredit'               => '標記為細微修改',
+'tooltip-pt-userpage' => '用戶頁',
+'tooltip-pt-anonuserpage' => '您編輯本站所用IP的對應使用者頁',
+'tooltip-pt-mytalk' => '討論頁',
+'tooltip-pt-preferences' => '我的偏好設定',
+'tooltip-pt-watchlist' => '我的監視列表',
+'tooltip-pt-mycontris' => '編修記錄',
+'tooltip-ca-addsection' => '於本討論頁增加新的討論主題',
+'tooltip-ca-history' => '本頁面的早前版本。',
+'tooltip-ca-undelete' => '將這個頁面復原到被刪除以前的狀態',
+'tooltip-p-logo' => '首頁',
+'tooltip-n-help' => '尋求說明',
+'tooltip-feed-rss' => '訂閱本修訂記錄的RSS資訊',
+'tooltip-feed-atom' => '訂閱本修訂記錄的Atom訊息',
+'tooltip-t-contributions' => '檢視該使用者的編修記錄',
+'tooltip-t-emailuser' => '向該使用者發送電子郵件',
+'tooltip-t-upload' => '上傳圖片或多媒體檔',
+'tooltip-t-permalink' => '這個頁面版本的永久連結',
+'tooltip-ca-nstab-user' => '檢視使用者頁',
+'tooltip-ca-nstab-image' => '查詢圖片頁面',
+'tooltip-ca-nstab-template' => '檢視模板',
+'tooltip-ca-nstab-help' => '檢視說明頁面',
+'tooltip-ca-nstab-category' => '檢視分類頁面',
+'tooltip-minoredit' => '標記為細微修改',
 'tooltip-compareselectedversions' => '檢視本頁被點選的兩個版本間的差異',
-'tooltip-rollback'                => '『{{int:rollbacklink}}』可以一按恢復上一位貢獻者對這個頁面的編輯',
-'tooltip-undo'                    => '『{{int:editundo}}』可以在編輯模式上開啟編輯表格以便復原。它容許在摘要中加入原因。',
+'tooltip-rollback' => '『{{int:rollbacklink}}』可以一按恢復上一位貢獻者對這個頁面的編輯',
+'tooltip-undo' => '『{{int:editundo}}』可以在編輯模式上開啟編輯表格以便復原。它容許在摘要中加入原因。',
+'interlanguage-link-title' => '$1–$2',
 
 # Attribution
 'anonymous' => '{{SITENAME}}的匿名{{PLURAL:$1|使用者|使用者}}',
-'siteuser'  => '{{SITENAME}}使用者$1',
-'anonuser'  => '{{SITENAME}}匿名使用者$1',
+'siteuser' => '{{SITENAME}}使用者$1',
+'anonuser' => '{{SITENAME}}匿名使用者$1',
 'siteusers' => '{{SITENAME}}{{PLURAL:$2|使用者|使用者}}$1',
 'anonusers' => '{{SITENAME}}匿名{{PLURAL:$2|使用者|使用者}}$1',
 
 # Spam protection
 'spamprotectiontext' => '垃圾過濾器禁止保存您剛才提交的頁面,這可能是由於您所加入的外部網站連結所產生的問題。',
-'spam_reverting'     => '復原到不包含連結至$1的最近版本',
+'spam_reverting' => '復原到不包含連結至$1的最近版本',
 
 # Patrolling
 'markedaspatrolledtext' => '選定的版本已被標記為已檢查.',
@@ -854,18 +841,18 @@ $NEWPAGE
 
 # Browsing diffs
 'previousdiff' => '←上一個',
-'nextdiff'     => '下一個→',
+'nextdiff' => '下一個→',
 
 # Media information
-'imagemaxsize'   => '在圖片描述頁對圖片大小限制為:',
-'file-nohires'   => '無更高解析度可提供。',
+'imagemaxsize' => '在圖片描述頁對圖片大小限制為:',
+'file-nohires' => '無更高解析度可提供。',
 'show-big-image' => '完整解析度',
 
 # Special:NewFiles
-'newimages'     => '新建圖片畫廊',
+'newimages' => '新建圖片畫廊',
 'imagelisttext' => '以下是按$2排列的$1個檔案列表。',
-'showhidebots'  => '(機器人$1)',
-'noimages'      => '無可檢視圖片。',
+'showhidebots' => '(機器人$1)',
+'noimages' => '無可檢視圖片。',
 
 # Bad image list
 'bad_image_list' => '請根據以下的格式去編寫:
@@ -873,7 +860,10 @@ $NEWPAGE
 只有列示項目(以 * 開頭的項目)會被考慮。第一個連結一定要連接去壞圖片中。
 然後在同一行的連結會考慮作例外,即是幅圖片可以在哪一個頁面中同時顯示。',
 
-# Variants for Chinese language
+/*
+Short names for language variants used for language conversion links.
+Variants for Chinese language
+*/
 'variantname-zh-tw' => '台灣繁體',
 
 # Metadata
@@ -881,72 +871,82 @@ $NEWPAGE
 
 如果此檔案的源檔案已經被修改,一些訊息在修改後的檔案中將不能完全反映出來。',
 
-# EXIF tags
-'exif-bitspersample'             => '每像素位元數',
+# Exif tags
+'exif-bitspersample' => '每像素位元數',
 'exif-photometricinterpretation' => '像素合成',
-'exif-samplesperpixel'           => '像素數',
-'exif-xresolution'               => '水準解析度',
-'exif-yresolution'               => '垂直解析度',
-'exif-stripoffsets'              => '圖片數據區',
-'exif-imagedescription'          => '圖片標題',
-'exif-compressedbitsperpixel'    => '圖片壓縮模式',
-'exif-pixelydimension'           => '有效圖片寬度',
-'exif-pixelxdimension'           => '有效圖片高度',
-'exif-usercomment'               => '使用者註釋',
-'exif-focalplanexresolution'     => 'X軸焦平面解析度',
-'exif-focalplaneyresolution'     => 'Y軸焦平面解析度',
-'exif-focalplaneresolutionunit'  => '焦平面解析度單位',
-'exif-customrendered'            => '自定義圖片處理',
-'exif-imageuniqueid'             => '唯一圖片ID',
-'exif-gpsimgdirectionref'        => '圖片方位參照',
-'exif-gpsimgdirection'           => '圖片方位',
-
-'exif-lightsource-2'  => '螢光燈',
+'exif-samplesperpixel' => '像素數',
+'exif-xresolution' => '水準解析度',
+'exif-yresolution' => '垂直解析度',
+'exif-stripoffsets' => '圖片數據區',
+'exif-imagedescription' => '圖片標題',
+'exif-compressedbitsperpixel' => '圖片壓縮模式',
+'exif-pixelydimension' => '有效圖片寬度',
+'exif-pixelxdimension' => '有效圖片高度',
+'exif-usercomment' => '使用者註釋',
+'exif-focalplanexresolution' => 'X軸焦平面解析度',
+'exif-focalplaneyresolution' => 'Y軸焦平面解析度',
+'exif-focalplaneresolutionunit' => '焦平面解析度單位',
+'exif-customrendered' => '自定義圖片處理',
+'exif-imageuniqueid' => '唯一圖片ID',
+'exif-gpsimgdirectionref' => '圖片方位參照',
+'exif-gpsimgdirection' => '圖片方位',
+
+'exif-lightsource-2' => '螢光燈',
 'exif-lightsource-12' => '日光螢光燈(色溫 D 5700    7100K)',
 'exif-lightsource-13' => '日溫白色螢光燈(N 4600    5400K)',
 'exif-lightsource-14' => '冷白色螢光燈(W 3900    4500K)',
 'exif-lightsource-15' => '白色螢光 (WW 3200    3700K)',
 
-# External editor support
-'edit-externally-help' => '請參見[//www.mediawiki.org/wiki/Manual:External_editors 設定步驟]了解詳細資訊。',
-
-# E-mail address confirmation
-'confirmemail'            => '確認電子郵件地址',
-'confirmemail_noemail'    => '您沒有在您的[[Special:Preferences|使用者設定]]裡面輸入一個有效的 email 位址。',
-'confirmemail_text'       => '此網站要求您在使用郵件功能之前驗證您的電子郵件地址。
+# Email address confirmation
+'confirmemail' => '確認電子郵件地址',
+'confirmemail_noemail' => '您沒有在您的[[Special:Preferences|使用者設定]]裡面輸入一個有效的 email 位址。',
+'confirmemail_text' => '此網站要求您在使用郵件功能之前驗證您的電子郵件地址。
 點擊以下按鈕可向您的郵箱發送一封確認郵件。該郵件包含有一行代碼連結;
 請在您的瀏覽器中加載此連結以確認您的電子郵件地址是有效的。',
 'confirmemail_sendfailed' => '不能發送確認郵件,請檢查電子郵件地址是否包含非法字元。
 
 郵件傳送員回應: $1',
-'confirmemail_needlogin'  => '您需要$1以確認您的電子郵件地址。',
-'confirmemail_success'    => '您的郵箱已經被確認。您現下可以登錄並使用此網站了。',
-'confirmemail_loggedin'   => '您的電子郵件地址現下已被確認。',
-'confirmemail_subject'    => '{{SITENAME}}電子郵件地址確認',
+'confirmemail_needlogin' => '您需要$1以確認您的電子郵件地址。',
+'confirmemail_success' => '您的郵箱已經被確認。您現下可以登錄並使用此網站了。',
+'confirmemail_loggedin' => '您的電子郵件地址現下已被確認。',
+'confirmemail_subject' => '{{SITENAME}}電子郵件地址確認',
 
 # Scary transclusion
-'scarytranscludefailed'  => '[抱歉,模板$1讀取失敗]',
+'scarytranscludefailed' => '[抱歉,模板$1讀取失敗]',
 'scarytranscludetoolong' => '[抱歉,URL 地址太長]',
 
 # Delete conflict
 'confirmrecreate' => '在您編輯這個頁面後,使用者[[User:$1|$1]]([[User talk:$1|對話]])以下列原因刪除了這個頁面: $2。請在重新建立頁面前三思。',
 
 # Auto-summaries
-'autosumm-blank'   => '移除所有頁面內容',
+'autosumm-blank' => '移除所有頁面內容',
 'autosumm-replace' => "正在將頁面替換為 '$1'",
 'autoredircomment' => '正在重定向到 [[$1]]',
-'autosumm-new'     => '新頁面: $1',
+'autosumm-new' => '新頁面: $1',
 
 # Live preview
 'livepreview-failed' => '即時預覽失敗! 嘗試標準預覽。',
 
 # Special:Version
-'version-parserhooks'           => '語法鉤',
-'version-hooks'                 => '鉤',
+'version-parserhooks' => '語法鉤',
+'version-hooks' => '鉤',
 'version-parser-function-hooks' => '語法函數鉤',
-'version-hook-name'             => '鉤名',
+'version-hook-name' => '鉤名',
 
 # Special:SpecialPages
 'specialpages' => '特殊頁面',
 
+# Special:ExpandTemplates
+'expandtemplates' => '展開模板',
+'expand_templates_intro' => '本特殊頁面用於將一些文字中的模版展開,包括模版中引用的模版。同時也展開解譯器函數如<nowiki> {{</nowiki>#language:...}},以及變數如<nowiki>{{< /nowiki>CURRENTDAY}}&mdash;實際上,幾乎所有在雙括弧中的內容都被展開。本特殊頁面是通過使用 MediaWiki的相關解釋階段的功能完成的。',
+'expand_templates_title' => '上下文標題,用於 {{FULLPAGENAME}} 等:',
+'expand_templates_input' => '輸入文字:',
+'expand_templates_output' => '結果:',
+'expand_templates_xml_output' => 'XML輸出',
+'expand_templates_ok' => '確定',
+'expand_templates_remove_comments' => '移除註釋',
+'expand_templates_remove_nowiki' => '在結果中隱藏<nowiki>標記',
+'expand_templates_generate_xml' => '顯示XML解析樹',
+'expand_templates_preview' => '預覽',
+
 );
diff --git a/maintenance/archives/patch-user_password_expire.sql b/maintenance/archives/patch-user_password_expire.sql
new file mode 100644 (file)
index 0000000..3e716d3
--- /dev/null
@@ -0,0 +1,3 @@
+-- For setting a password expiration date for users
+ALTER TABLE /*$wgDBprefix*/user
+  ADD COLUMN user_password_expires varbinary(14) DEFAULT NULL;
index 46b0362..142727c 100644 (file)
@@ -498,7 +498,6 @@ $wgOptionalMessages = array(
        'limitreport-expensivefunctioncount-value',
        'interlanguage-link-title',
        'img-lang-opt',
-       'quotation-marks',
        'recentchanges-legend-plusminus',
 );
 
index 73f5ca2..d97a4cd 100644 (file)
@@ -558,6 +558,9 @@ $wgMessageStructure = array(
                'loginlanguagelinks',
                'suspicious-userlogout',
                'createacct-another-realname-tip',
+               'pt-login',
+               'pt-createaccount',
+               'pt-userlogout',
        ),
        'mail' => array(
                'pear-mail-error',
@@ -583,8 +586,12 @@ $wgMessageStructure = array(
                'resetpass-submit-loggedin',
                'resetpass-submit-cancel',
                'resetpass-wrong-oldpass',
+               'resetpass-recycled',
+               'resetpass-temp-emailed',
                'resetpass-temp-password',
                'resetpass-abort-generic',
+               'resetpass-expired',
+               'resetpass-expired-soft',
        ),
        'passwordreset' => array(
                'passwordreset',
@@ -803,6 +810,7 @@ $wgMessageStructure = array(
                'cantcreateaccounttitle',
                'cantcreateaccount-text',
                'cantcreateaccount-range-text',
+               'createaccount-hook-aborted',
        ),
        'history' => array(
                'viewpagelogs',
@@ -1319,11 +1327,23 @@ $wgMessageStructure = array(
                'rcnotefrom',
                'rclistfrom',
                'rcshowhideminor',
+               'rcshowhideminor-show',
+               'rcshowhideminor-hide',
                'rcshowhidebots',
+               'rcshowhidebots-show',
+               'rcshowhidebots-hide',
                'rcshowhideliu',
+               'rcshowhideliu-show',
+               'rcshowhideliu-hide',
                'rcshowhideanons',
+               'rcshowhideanons-show',
+               'rcshowhideanons-hide',
                'rcshowhidepatr',
+               'rcshowhidepatr-show',
+               'rcshowhidepatr-hide',
                'rcshowhidemine',
+               'rcshowhidemine-show',
+               'rcshowhidemine-hide',
                'rclinks',
                'diff',
                'hist',
@@ -1429,6 +1449,8 @@ $wgMessageStructure = array(
                'uploaddisabledtext',
                'php-uploaddisabledtext',
                'uploadscripted',
+               'uploadscriptednamespace',
+               'uploadinvalidxml',
                'uploadvirus',
                'uploadjava',
                'upload-source',
@@ -2234,6 +2256,7 @@ $wgMessageStructure = array(
                'sp-contributions-search',
                'sp-contributions-username',
                'sp-contributions-toponly',
+               'sp-contributions-newonly',
                'sp-contributions-submit',
                'sp-contributions-explain',
                'sp-contributions-footer',
index dc560e3..4a3cdea 100644 (file)
@@ -46,6 +46,7 @@ CREATE TABLE /*_*/mwuser (
    user_email_token_expires varchar(14) DEFAULT NULL,
    user_registration varchar(14) DEFAULT NULL,
    user_editcount    INT NULL DEFAULT NULL
+   user_password_expires DATETIME DEFAULT NULL
 );
 CREATE UNIQUE INDEX /*i*/user_name ON /*_*/mwuser (user_name);
 CREATE INDEX /*i*/user_email_token ON /*_*/mwuser (user_email_token);
index a6b5350..f05c0cc 100644 (file)
@@ -18,7 +18,8 @@ CREATE TABLE &mw_prefix.mwuser ( -- replace reserved word 'user'
   user_options              CLOB,
   user_touched              TIMESTAMP(6) WITH TIME ZONE,
   user_registration         TIMESTAMP(6) WITH TIME ZONE,
-  user_editcount            NUMBER
+  user_editcount            NUMBER,
+  user_password_expires     TIMESTAMP(6) WITH TIME ZONE NULL DEFAULT NULL
 );
 ALTER TABLE &mw_prefix.mwuser ADD CONSTRAINT &mw_prefix.mwuser_pk PRIMARY KEY (user_id);
 CREATE UNIQUE INDEX &mw_prefix.mwuser_u01 ON &mw_prefix.mwuser (user_name);
index 3aa8109..e482141 100644 (file)
@@ -40,7 +40,8 @@ CREATE TABLE mwuser ( -- replace reserved word 'user'
   user_email_authenticated  TIMESTAMPTZ,
   user_touched              TIMESTAMPTZ,
   user_registration         TIMESTAMPTZ,
-  user_editcount            INTEGER
+  user_editcount            INTEGER,
+  user_password_expires     TIMESTAMPTZ NULL
 );
 CREATE INDEX user_email_token_idx ON mwuser (user_email_token);
 
index fb2f0e1..ca610fc 100644 (file)
@@ -126,7 +126,12 @@ CREATE TABLE /*_*/user (
   -- Meant primarily for heuristic checks to give an impression of whether
   -- the account has been used much.
   --
-  user_editcount int
+  user_editcount int,
+
+  -- Expiration date for user password. Use $user->expirePassword()
+  -- to force a password reset.
+  user_password_expires varbinary(14) DEFAULT NULL
+
 ) /*$wgDBTableOptions*/;
 
 CREATE UNIQUE INDEX /*i*/user_name ON /*_*/user (user_name);
index 7f5b75a..7c13ea6 100644 (file)
@@ -150,7 +150,7 @@ return array(
                        'vector/vector.js',
                ),
                'position' => 'top',
-               'dependencies' => 'jquery.delayedBind',
+               'dependencies' => 'jquery.throttle-debounce',
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
@@ -238,7 +238,6 @@ return array(
        ),
        'jquery.expandableField' => array(
                'scripts' => 'resources/jquery/jquery.expandableField.js',
-               'dependencies' => 'jquery.delayedBind',
        ),
        'jquery.farbtastic' => array(
                'scripts' => 'resources/jquery/jquery.farbtastic.js',
@@ -1333,6 +1332,9 @@ return array(
                ),
                'position' => 'top',
        ),
+
+       /* MediaWiki UI */
+
        'mediawiki.ui' => array(
                'skinStyles' => array(
                        'default' => 'resources/mediawiki.ui/default.less',
@@ -1360,7 +1362,6 @@ return array(
                ),
                'targets' => array( 'desktop', 'mobile' ),
        ),
-
        'oojs-ui' => array(
                'scripts' => array(
                        'resources/oojs-ui/oojs-ui.js',
@@ -1372,6 +1373,7 @@ return array(
                        'ooui-dialog-action-close',
                        'ooui-outline-control-move-down',
                        'ooui-outline-control-move-up',
+                       'ooui-outline-control-remove',
                        'ooui-toolbar-more',
                ),
                'dependencies' => array(
index 40f3d44..874c111 100644 (file)
@@ -1,4 +1,4 @@
-( function ( $ ) {
+( function ( mw, $ ) {
 /**
  * Function that escapes spaces in event names. This is needed because
  * "_delayedBind-foo bar-1000" refers to two events
@@ -73,4 +73,11 @@ $.fn.extend( {
        }
 } );
 
-}( jQuery ) );
+mw.log.deprecate( $.fn, 'delayedBind', $.fn.delayedBind,
+       'Use the jquery.throttle-debounce module instead' );
+mw.log.deprecate( $.fn, 'delayedBindCancel', $.fn.delayedBindCancel,
+       'Use the jquery.throttle-debounce module instead' );
+mw.log.deprecate( $.fn, 'delayedBindUnbind', $.fn.delayedBindUnbind,
+       'Use the jquery.throttle-debounce module instead' );
+
+}( mediaWiki, jQuery ) );
index 9e532e5..732cc6e 100644 (file)
@@ -56,7 +56,7 @@
                        args = arguments;
 
                $( this ).each( function () {
-                       var key, context;
+                       var key, context, timeout;
 
                        /* Construction / Loading */
 
                                $( this )
                                        .addClass( 'expandableField' )
                                        .focus( function ( e ) {
+                                               clearTimeout( timeout );
                                                $.expandableField.expandField( e, context );
                                        } )
-                                       .delayedBind( 250, 'blur', function ( e ) {
-                                               $.expandableField.condenseField( e, context );
+                                       .blur( function ( e ) {
+                                               timeout = setTimeout( function () {
+                                                       $.expandableField.condenseField( e, context );
+                                               }, 250 );
                                        } );
                        }
                        // Store the context for next time
index 3774d0c..f967a1d 100644 (file)
@@ -421,20 +421,26 @@ $.suggestions = {
                                selected = context.data.$container.find( '.suggestions-result-current' );
                                $.suggestions.hide( context );
                                if ( selected.length === 0 || context.data.selectedWithMouse ) {
-                                       // if nothing is selected OR if something was selected with the mouse,
-                                       // cancel any current requests and submit the form
+                                       // If nothing is selected or if something was selected with the mouse
+                                       // cancel any current requests and allow the form to be submitted
+                                       // (simply don't prevent default behavior).
                                        $.suggestions.cancel( context );
-                                       context.config.$region.closest( 'form' ).submit();
+                                       preventDefault = false;
                                } else if ( selected.is( '.suggestions-special' ) ) {
                                        if ( typeof context.config.special.select === 'function' ) {
-                                               context.config.special.select.call( selected, context.data.$textbox );
+                                               // Allow the callback to decide whether to prevent default or not
+                                               if ( context.config.special.select.call( selected, context.data.$textbox ) === true ) {
+                                                       preventDefault = false;
+                                               }
                                        }
                                } else {
+                                       $.suggestions.highlight( context, selected, true );
+
                                        if ( typeof context.config.result.select === 'function' ) {
-                                               $.suggestions.highlight( context, selected, true );
-                                               context.config.result.select.call( selected, context.data.$textbox );
-                                       } else {
-                                               $.suggestions.highlight( context, selected, true );
+                                               // Allow the callback to decide whether to prevent default or not
+                                               if ( context.config.result.select.call( selected, context.data.$textbox ) === true ) {
+                                                       preventDefault = false;
+                                               }
                                        }
                                }
                                break;
@@ -444,7 +450,7 @@ $.suggestions = {
                }
                if ( preventDefault ) {
                        e.preventDefault();
-                       e.stopImmediatePropagation();
+                       e.stopPropagation();
                }
        }
 };
@@ -591,24 +597,6 @@ $.fn.suggestions = function () {
                                        // Store key pressed to handle later
                                        context.data.keypressed = e.which;
                                        context.data.keypressedCount = 0;
-
-                                       switch ( context.data.keypressed ) {
-                                               // This preventDefault logic is duplicated from
-                                               // $.suggestions.keypress(), which sucks
-                                               // Arrow down
-                                               case 40:
-                                                       e.preventDefault();
-                                                       e.stopImmediatePropagation();
-                                                       break;
-                                               // Arrow up, Escape and Enter
-                                               case 38:
-                                               case 27:
-                                               case 13:
-                                                       if ( context.data.$container.is( ':visible' ) ) {
-                                                               e.preventDefault();
-                                                               e.stopImmediatePropagation();
-                                                       }
-                                       }
                                } )
                                .keypress( function ( e ) {
                                        context.data.keypressedCount++;
index b3d7bb3..f9ee268 100644 (file)
        function buildHeaders( table, msg ) {
                var maxSeen = 0,
                        colspanOffset = 0,
-                       longest,
                        columns,
                        i,
                        $tableHeaders = $( [] ),
                if ( $tableRows.length <= 1 ) {
                        $tableHeaders = $tableRows.children( 'th' );
                } else {
-                       // We need to find the cells of the row containing the most columns
                        var rowspan,
-                               headersIndex = [];
-                       $tableRows.each( function ( rowIndex ) {
-                               $.each( this.cells, function( index2, cell ) {
+                               colspan,
+                               headerCount,
+                               longestTR,
+                               matrixRowIndex,
+                               matrixColumnIndex,
+                               exploded = [];
+
+                       // Loop through all the dom cells of the thead
+                       $tableRows.each( function ( rowIndex, row ) {
+                               $.each( row.cells, function( columnIndex, cell ) {
                                        rowspan = Number( cell.rowSpan );
-                                       for ( i = 0; i < rowspan; i++ ) {
-                                               if ( headersIndex[rowIndex+i] === undefined ) {
-                                                       headersIndex[rowIndex+i] = $( [] );
+                                       colspan = Number( cell.colSpan );
+
+                                       // Skip the spots in the exploded matrix that are already filled
+                                       while ( exploded[rowIndex] && exploded[rowIndex][columnIndex] !== undefined ) {
+                                               ++columnIndex;
+                                       }
+
+                                       // Find the actual dimensions of the thead, by placing each cell
+                                       // in the exploded matrix rowspan times colspan times, with the proper offsets
+                                       for ( matrixColumnIndex = columnIndex; matrixColumnIndex < columnIndex + colspan; ++matrixColumnIndex ) {
+                                               for ( matrixRowIndex = rowIndex; matrixRowIndex < rowIndex + rowspan; ++matrixRowIndex ) {
+                                                       if ( !exploded[matrixRowIndex] ) {
+                                                               exploded[matrixRowIndex] = [];
+                                                       }
+                                                       exploded[matrixRowIndex][matrixColumnIndex] = cell;
                                                }
-                                               headersIndex[rowIndex+i].push( cell );
                                        }
                                } );
                        } );
-                       $.each( headersIndex, function ( index, cellArray ) {
-                               if ( cellArray.length >= maxSeen ) {
-                                       maxSeen = cellArray.length;
-                                       longest = index;
+                       // We want to find the row that has the most columns (ignoring colspan)
+                       $.each( exploded, function ( index, cellArray ) {
+                               headerCount = $.unique( $(cellArray) ).length;
+                               if ( headerCount >= maxSeen ) {
+                                       maxSeen = headerCount;
+                                       longestTR = index;
                                }
                        } );
-                       $tableHeaders = headersIndex[longest];
+                       // We cannot use $.unique() here because it sorts into dom order, which is undesirable
+                       $tableHeaders = $( uniqueElements( exploded[longestTR] ) );
                }
 
                // as each header can span over multiple columns (using colspan=N),
                return false;
        }
 
+
+       function uniqueElements( array ) {
+               var uniques = [];
+               $.each( array, function( index, elem ) {
+                       if ( elem !== undefined && $.inArray( elem, uniques ) === -1 ) {
+                               uniques.push( elem );
+                       }
+               } );
+               return uniques;
+       }
+
        function setHeadersCss( table, $headers, list, css, msg, columnToHeader ) {
                // Remove all header information and reset titles to default message
                $headers.removeClass( css[0] ).removeClass( css[1] ).attr( 'title', msg[1] );
index 6012d93..0024f4b 100644 (file)
                 *
                 * @param {Object} parameters
                 * @param {Object} [ajaxOptions]
-                * @return {jQuery.Promise} Done: API response data. Fail: Error code
+                * @return {jQuery.Promise} Done: API response data and the jqXHR object.
+                *  Fail: Error code
                 */
                ajax: function ( parameters, ajaxOptions ) {
                        var token,
                        apiPromise = this.get( {
                                        action: 'tokens',
                                        type: type
-                               }, {
-                                       // Due to the API assuming we're logged out if we pass the callback-parameter,
-                                       // we have to disable jQuery's callback system, and instead parse JSON string,
-                                       // by setting 'jsonp' to false.
-                                       // TODO: This concern seems genuine but no other module has it. Is it still
-                                       // needed and/or should we pass this by default?
                                } )
                                .done( function ( data ) {
                                        // If token type is not available for this user,
index 49a4c62..ab8a512 100644 (file)
@@ -8,7 +8,7 @@
         * @private
         * @context mw.Api
         *
-        * @param {String|mw.Title} page Full page name or instance of mw.Title
+        * @param {string|mw.Title|string[]|mw.Title[]} page Full page name or instance of mw.Title or array of pages
         * @param {Function} [ok] Success callback (deprecated)
         * @param {Function} [err] Error callback (deprecated)
         * @return {jQuery.Promise}
@@ -28,7 +28,7 @@
 
                params = {
                        action: 'watch',
-                       title: String( page ),
+                       titles: $.isArray( page ) ? page.join( '|' ) : String( page ),
                        token: mw.user.tokens.get( 'watchToken' ),
                        uselang: mw.config.get( 'wgUserLanguage' )
                };
diff --git a/resources/mediawiki.less/mediawiki.mixins.animation.less b/resources/mediawiki.less/mediawiki.mixins.animation.less
new file mode 100644 (file)
index 0000000..ec3cddc
--- /dev/null
@@ -0,0 +1,12 @@
+.animation (...) {
+       -webkit-animation: @arguments;
+       -moz-animation: @arguments;
+       -o-animation: @arguments;
+       animation: @arguments;
+}
+
+.transform-rotate (@deg) {
+       -webkit-transform: rotate(@deg);
+       -moz-transform: rotate(@deg);
+       transform: rotate(@deg);
+}
\ No newline at end of file
index 82de5de..e28b333 100644 (file)
@@ -1,31 +1,33 @@
 // This is a separate file because importing the mixin causes
 // the keyframes blocks to be included in the output, regardless
 // of whether .rotation is used.
-@-webkit-keyframes rotate {
+@import "mediawiki.mixins.animation";
+
+.rotate-frames () {
        from {
-               -webkit-transform:rotate(0deg);
+               .transform-rotate(0deg);
        }
        to {
-               -webkit-transform:rotate(360deg);
+               .transform-rotate(360deg);
        }
 }
 
+@-webkit-keyframes rotate {
+       .rotate-frames;
+}
+
+@-moz-keyframes rotate {
+       .rotate-frames;
+}
+
+@-o-keyframes rotate {
+       .rotate-frames;
+}
+
 @keyframes rotate {
-       from {
-               transform: rotate(0deg);
-       }
-       to {
-               transform: rotate(360deg);
-       }
+       .rotate-frames;
 }
 
-.rotation(@time) {
-       -webkit-animation-name: rotate;
-       -webkit-animation-duration: @time;
-       -webkit-animation-iteration-count: infinite;
-       -webkit-animation-timing-function: linear;
-       animation-name: rotate;
-       animation-duration: @time;
-       animation-iteration-count: infinite;
-       animation-timing-function: linear;
+.rotation( @time ) {
+       .animation(rotate, @time, infinite, linear);
 }
index 3def37c..83c2524 100644 (file)
@@ -45,7 +45,7 @@ function pluralRuleParser(rule, number) {
        */
 
        // we don't evaluate the samples section of the rule. Ignore it.
-       rule = rule.split('@')[0].trim();
+       rule = rule.split('@')[0].replace(/^\s*/, '').replace(/\s*$/, '');
 
        if (!rule.length) {
                // empty rule or 'other' rule.
index 0078724..23d7837 100644 (file)
@@ -4,7 +4,8 @@
 jQuery( function ( $ ) {
        var $preftoc, $preferences, $fieldsets, $legends,
                hash, labelFunc,
-               $tzSelect, $tzTextbox, $localtimeHolder, servertime;
+               $tzSelect, $tzTextbox, $localtimeHolder, servertime,
+               $checkBoxes;
 
        labelFunc = function () {
                return this.id.replace( /^mw-prefsection/g, 'preftab' );
@@ -253,4 +254,14 @@ jQuery( function ( $ ) {
                        sessionStorage.setItem( 'mediawikiPreferencesTab', storageData );
                } );
        }
+
+       // To disable all 'namespace' checkboxes in Search preferences
+       // when 'Search in all namespaces' checkbox is ticked.
+       $checkBoxes = $( '#mw-htmlform-advancedsearchoptions input[id^=mw-input-wpsearchnamespaces]' );
+       if ( $( '#mw-input-wpsearcheverything' ).prop( 'checked' ) ) {
+               $checkBoxes.prop( 'disabled', true );
+       }
+       $( '#mw-input-wpsearcheverything' ).change( function () {
+               $checkBoxes.prop( 'disabled', $( this ).prop( 'checked' ) );
+       } );
 } );
index 66f4487..5c6aa6a 100644 (file)
@@ -66,7 +66,7 @@
                        .box-sizing(border-box);
                        .agora-label-styling();
                        width: auto;
-                       margin: 0 0 0.2em 0;
+                       margin: 0 0 0.2em;
                        padding: 0;
                }
 
        .error {
                .box-sizing(border-box);
                font-size: 0.9em;
-               margin: 0 0 1em 0;
+               margin: 0 0 1em;
                padding: 0.5em;
                color: #cc0000;
                border: 1px solid #fac5c5;
 // XXX DRY: This repeats earlier styling, use an @include agora-div-styling ?
 .mw-ui-vform-div {
        display: block;
-       margin: 0 0 15px 0;
+       margin: 0 0 15px;
        padding: 0;
        width: 100%;
 }
index b32e4e7..20f42a0 100644 (file)
@@ -12,7 +12,7 @@
                        outline: 0; // Removes OS field focus
                }
 
-               box-shadow: @colorProgressiveShadow 0px 0px 5px;
+               box-shadow: @colorProgressiveShadow 0 0 5px;
 
                border-color: @colorProgressiveShadow;
        }
@@ -46,7 +46,7 @@
        & > input[type="radio"] {
                width: auto;
                height: auto;
-               margin: 0 0.1em 0em 0;
+               margin: 0 0.1em 0 0;
                padding: 0;
                border: 1px solid @colorGrayLight;
                cursor: pointer;
index 8b78370..8a50363 100644 (file)
@@ -558,20 +558,19 @@ var mw = ( function ( $, undefined ) {
                        log.deprecate = !Object.defineProperty ? function ( obj, key, val ) {
                                obj[key] = val;
                        } : function ( obj, key, val, msg ) {
-                               msg = 'MWDeprecationWarning: Use of "' + key + '" property is deprecated.' +
-                                       ( msg ? ( ' ' + msg ) : '' );
+                               msg = 'Use of "' + key + '" is deprecated.' + ( msg ? ( ' ' + msg ) : '' );
                                try {
                                        Object.defineProperty( obj, key, {
                                                configurable: true,
                                                enumerable: true,
                                                get: function () {
                                                        mw.track( 'mw.deprecate', key );
-                                                       log.warn( msg );
+                                                       mw.log.warn( msg );
                                                        return val;
                                                },
                                                set: function ( newVal ) {
                                                        mw.track( 'mw.deprecate', key );
-                                                       log.warn( msg );
+                                                       mw.log.warn( msg );
                                                        val = newVal;
                                                }
                                        } );
index f142fa4..b5fd69c 100644 (file)
@@ -4,6 +4,8 @@
        var notification,
                // The #mw-notification-area div that all notifications are contained inside.
                $area,
+               // Number of open notification boxes at any time
+               openNotificationCount = 0,
                isPageReady = false,
                preReadyNotifQueue = [];
 
                        autohideCount,
                        notif;
 
+               $area.show();
+
                if ( this.isOpen ) {
                        return;
                }
 
                this.isOpen = true;
+               openNotificationCount++;
 
                options = this.options;
                $notification = this.$notification;
                        return;
                }
                this.isOpen = false;
+               openNotificationCount--;
                // Clear any remaining timeout on close
                this.pause();
 
                                complete: function () {
                                        // Remove the notification
                                        $( this ).remove();
+                                       // Hide the area manually after closing the last notification, since it has padding,
+                                       // causing it to obscure whatever is behind it in spite of being invisible (bug 52659).
+                                       // It's okay to do this before getting rid of the placeholder, as it's invisible as well.
+                                       if ( openNotificationCount === 0 ) {
+                                               $area.hide();
+                                       }
                                        if ( options.placeholder ) {
                                                // Use a fast slide up animation after closing to make it look like the notifications
                                                // below slide up into place when the notification disappears
index 8d950a0..e22a3d3 100644 (file)
                                },
                                result: {
                                        render: renderFunction,
-                                       select: function ( $input ) {
-                                               $input.closest( 'form' ).submit();
+                                       select: function () {
+                                               return true; // allow the form to be submitted
                                        }
                                },
                                delay: 120,
                $searchInput.suggestions( {
                        result: {
                                render: renderFunction,
-                               select: function ( $input ) {
-                                       $input.closest( 'form' ).submit();
+                               select: function () {
+                                       return true; // allow the form to be submitted
                                }
                        },
                        special: {
                                render: specialRenderFunction,
                                select: function ( $input ) {
                                        $input.closest( 'form' )
-                                               .append( $( '<input type="hidden" name="fulltext" value="1"/>' ) )
-                                               .submit();
+                                               .append( $( '<input type="hidden" name="fulltext" value="1"/>' ) );
+                                       return true; // allow the form to be submitted
                                }
                        },
                        $region: $searchRegion
index 78febd2..8344111 100644 (file)
                 *         expires: 7
                 *     } );
                 *
+                * @deprecated since 1.23
                 * @param {string} key Name of bucket
                 * @param {Object} options Bucket configuration options
                 * @param {Object} options.buckets List of bucket-name/relative-probability pairs (required,
index d402de8..5ff9915 100644 (file)
@@ -19,5 +19,6 @@
     "ooui-dialog-action-close": "Close",
     "ooui-outline-control-move-down": "Move item down",
     "ooui-outline-control-move-up": "Move item up",
+    "ooui-outline-control-remove": "Remove item",
     "ooui-toolbar-more": "More"
 }
index 861c6e5..b20c5f3 100644 (file)
@@ -5,5 +5,8 @@
             "Michawiki"
         ]
     },
-    "ooui-dialog-action-close": "Začinić"
+    "ooui-dialog-action-close": "Začinić",
+    "ooui-outline-control-move-down": "Zapisk dele přesunyć",
+    "ooui-outline-control-move-up": "Zapisk horje přesunyć",
+    "ooui-toolbar-more": "Wjace"
 }
\ No newline at end of file
index 78180af..c9d2774 100644 (file)
@@ -7,10 +7,12 @@
             "ITshnik",
             "MIKHEIL",
             "NoiX180",
-            "Pras"
+            "Pras",
+            "Tokoko"
         ]
     },
     "ooui-dialog-action-close": "დახურვა",
     "ooui-outline-control-move-down": "ელემენტის ქვემოთ გადატანა",
-    "ooui-outline-control-move-up": "ელემენტის ზემოთ გადატანა"
+    "ooui-outline-control-move-up": "ელემენტის ზემოთ გადატანა",
+    "ooui-toolbar-more": "მეტი"
 }
\ No newline at end of file
index 78a70d9..c5b8ffa 100644 (file)
@@ -22,5 +22,6 @@
     "ooui-dialog-action-close": "Label text for button to exit from dialog.\n\n{{Identical|Close}}",
     "ooui-outline-control-move-down": "Tool tip for a button that moves items in a list down one place",
     "ooui-outline-control-move-up": "Tool tip for a button that moves items in a list up one place",
+    "ooui-outline-control-remove": "Tool tip for a button that removes items from a list",
     "ooui-toolbar-more": "Label for the toolbar group that contains a list of all other available tools.\n{{Identical|More}}"
 }
\ No newline at end of file
index 63ecf98..08fe6ae 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.1.0-pre (424b40373e)
+ * OOjs UI v0.1.0-pre (51f922ba17)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: Fri Feb 14 2014 17:57:32 GMT-0800 (PST)
+ * Date: Fri Feb 28 2014 16:33:26 GMT-0800 (PST)
  */
 ( function () {
 
@@ -87,6 +87,8 @@ var messages = {
        'ooui-outline-control-move-down': 'Move item down',
        // Tool tip for a button that moves items in a list up one place
        'ooui-outline-control-move-up': 'Move item up',
+       // Tool tip for a button that removes items from a list
+       'ooui-outline-control-remove': 'Remove item',
        // Label for the toolbar group that contains a list of all other available tools
        'ooui-toolbar-more': 'More'
 };
@@ -691,7 +693,8 @@ OO.ui.Frame = function OoUiFrame( config ) {
        OO.EventEmitter.call( this );
 
        // Properties
-       this.initialized = false;
+       this.loading = false;
+       this.loaded = false;
        this.config = config;
 
        // Initialize
@@ -714,7 +717,7 @@ OO.ui.Frame.static.tagName = 'iframe';
 /* Events */
 
 /**
- * @event initialize
+ * @event load
  */
 
 /* Static Methods */
@@ -733,7 +736,6 @@ OO.ui.Frame.static.tagName = 'iframe';
  * For details of how we arrived at the strategy used in this function, see #load.
  *
  * @static
- * @method
  * @inheritable
  * @param {HTMLDocument} parentDoc Document to transplant styles from
  * @param {HTMLDocument} frameDoc Document to transplant styles to
@@ -839,13 +841,16 @@ OO.ui.Frame.static.transplantStyles = function ( parentDoc, frameDoc, callback,
  *
  * All this stylesheet injection and polling magic is in #transplantStyles.
  *
- * @fires initialize
+ * @private
+ * @fires load
  */
 OO.ui.Frame.prototype.load = function () {
        var win = this.$element.prop( 'contentWindow' ),
                doc = win.document,
                frame = this;
 
+       this.loading = true;
+
        // Figure out directionality:
        this.dir = this.$element.closest( '[dir]' ).prop( 'dir' ) || 'ltr';
 
@@ -866,31 +871,42 @@ OO.ui.Frame.prototype.load = function () {
        this.$content = this.$( '.oo-ui-frame-content' );
        this.$document = this.$( doc );
 
-       this.constructor.static.transplantStyles( this.getElementDocument(), this.$document[0],
+       this.constructor.static.transplantStyles(
+               this.getElementDocument(),
+               this.$document[0],
                function () {
-                       frame.initialized = true;
-                       frame.emit( 'initialize' );
+                       frame.loading = false;
+                       frame.loaded = true;
+                       frame.emit( 'load' );
                }
        );
 };
 
 /**
- * Run a callback as soon as the frame has been initialized.
+ * Run a callback as soon as the frame has been loaded.
+ *
+ *
+ * This will start loading if it hasn't already, and runs
+ * immediately if the frame is already loaded.
+ *
+ * Don't call this until the element is attached.
  *
  * @param {Function} callback
  */
 OO.ui.Frame.prototype.run = function ( callback ) {
-       if ( this.initialized ) {
+       if ( this.loaded ) {
                callback();
        } else {
-               this.once( 'initialize', callback );
+               if ( !this.loading ) {
+                       this.load();
+               }
+               this.once( 'load', callback );
        }
 };
 
 /**
  * Sets the size of the frame.
  *
- * @method
  * @param {number} width Frame width in pixels
  * @param {number} height Frame height in pixels
  * @chainable
@@ -911,13 +927,12 @@ OO.ui.Frame.prototype.setSize = function ( width, height ) {
  * @mixins OO.EventEmitter
  *
  * @constructor
- * @param {OO.ui.WindowSet} windowSet Window set this dialog is part of
  * @param {Object} [config] Configuration options
  * @cfg {string|Function} [title] Title string or function that returns a string
  * @cfg {string} [icon] Symbolic name of icon
  * @fires initialize
  */
-OO.ui.Window = function OoUiWindow( windowSet, config ) {
+OO.ui.Window = function OoUiWindow( config ) {
        // Parent constructor
        OO.ui.Element.call( this, config );
 
@@ -925,7 +940,6 @@ OO.ui.Window = function OoUiWindow( windowSet, config ) {
        OO.EventEmitter.call( this );
 
        // Properties
-       this.windowSet = windowSet;
        this.visible = false;
        this.opening = false;
        this.closing = false;
@@ -949,7 +963,7 @@ OO.ui.Window = function OoUiWindow( windowSet, config ) {
                .append( this.frame.$element );
 
        // Events
-       this.frame.connect( this, { 'initialize': 'initialize' } );
+       this.frame.connect( this, { 'load': 'initialize' } );
 };
 
 /* Inheritance */
@@ -1000,7 +1014,11 @@ OO.ui.Window.static.icon = 'window';
 /**
  * Window title.
  *
+ * Subclasses must implement this property before instantiating the window.
+ * Alternatively, override #getTitle with an alternative implementation.
+ *
  * @static
+ * @abstract
  * @inheritable
  * @property {string|Function} Title string or function that returns a string
  */
@@ -1049,17 +1067,7 @@ OO.ui.Window.prototype.getFrame = function () {
 };
 
 /**
- * Get the window set.
- *
- * @method
- * @returns {OO.ui.WindowSet} Window set
- */
-OO.ui.Window.prototype.getWindowSet = function () {
-       return this.windowSet;
-};
-
-/**
- * Get the window title.
+ * Get the title of the window.
  *
  * @returns {string} Title text
  */
@@ -1318,6 +1326,17 @@ OO.ui.WindowSet = function OoUiWindowSet( factory, config ) {
 
        // Properties
        this.factory = factory;
+
+       /**
+        * List of all windows associated with this window set
+        * @property {OO.ui.Window[]}
+        */
+       this.windowList = [];
+
+       /**
+        * Mapping of OO.ui.Window objects created by name from the #factory.
+        * @property {Object}
+        */
        this.windows = {};
        this.currentWindow = null;
 
@@ -1436,17 +1455,34 @@ OO.ui.WindowSet.prototype.getWindow = function ( name ) {
        }
        if ( !( name in this.windows ) ) {
                win = this.windows[name] = this.factory.create( name, this, { '$': this.$ } );
-               win.connect( this, {
-                       'opening': [ 'onWindowOpening', win ],
-                       'open': [ 'onWindowOpen', win ],
-                       'closing': [ 'onWindowClosing', win ],
-                       'close': [ 'onWindowClose', win ]
-               } );
-               this.$element.append( win.$element );
-               win.getFrame().load();
+               this.addWindow( win );
        }
        return this.windows[name];
 };
+
+/**
+ * Add a given window to this window set.
+ *
+ * Connects event handlers and attaches it to the DOM. Calling
+ * OO.ui.Window#open will not work until the window is added to the set.
+ *
+ * @param {OO.ui.Window} win
+ */
+OO.ui.WindowSet.prototype.addWindow = function ( win ) {
+       if ( this.windowList.indexOf( win ) !== -1 ) {
+               // Already set up
+               return;
+       }
+       this.windowList.push( win );
+
+       win.connect( this, {
+               'opening': [ 'onWindowOpening', win ],
+               'open': [ 'onWindowOpen', win ],
+               'closing': [ 'onWindowClosing', win ],
+               'close': [ 'onWindowClose', win ]
+       } );
+       this.$element.append( win.$element );
+};
 /**
  * Modal dialog box.
  *
@@ -1455,17 +1491,16 @@ OO.ui.WindowSet.prototype.getWindow = function ( name ) {
  * @extends OO.ui.Window
  *
  * @constructor
- * @param {OO.ui.WindowSet} windowSet Window set this dialog is part of
  * @param {Object} [config] Configuration options
  * @cfg {boolean} [footless] Hide foot
  * @cfg {boolean} [small] Make the dialog small
  */
-OO.ui.Dialog = function OoUiDialog( windowSet, config ) {
+OO.ui.Dialog = function OoUiDialog( config ) {
        // Configuration initialization
        config = config || {};
 
        // Parent constructor
-       OO.ui.Window.call( this, windowSet, config );
+       OO.ui.Window.call( this, config );
 
        // Properties
        this.visible = false;
@@ -1476,6 +1511,7 @@ OO.ui.Dialog = function OoUiDialog( windowSet, config ) {
 
        // Events
        this.$element.on( 'mousedown', false );
+       this.connect( this, { 'opening': 'onOpening' } );
 
        // Initialization
        this.$element.addClass( 'oo-ui-dialog' );
@@ -1552,6 +1588,11 @@ OO.ui.Dialog.prototype.onFrameDocumentKeyDown = function ( e ) {
        }
 };
 
+/** */
+OO.ui.Dialog.prototype.onOpening = function () {
+       this.$element.addClass( 'oo-ui-dialog-open' );
+};
+
 /**
  * @inheritdoc
  */
@@ -1611,15 +1652,15 @@ OO.ui.Dialog.prototype.teardown = function ( data ) {
  * @inheritdoc
  */
 OO.ui.Dialog.prototype.close = function ( data ) {
-       if ( !this.opening && !this.closing && this.visible ) {
+       var dialog = this;
+       if ( !dialog.opening && !dialog.closing && dialog.visible ) {
                // Trigger transition
-               this.$element.addClass( 'oo-ui-dialog-closing' );
+               dialog.$element.removeClass( 'oo-ui-dialog-open' );
                // Allow transition to complete before actually closing
-               setTimeout( OO.ui.bind( function () {
-                       this.$element.removeClass( 'oo-ui-dialog-closing' );
+               setTimeout( function () {
                        // Parent method
-                       OO.ui.Window.prototype.close.call( this, data );
-               }, this ), 250 );
+                       OO.ui.Window.prototype.close.call( dialog, data );
+               }, 250 );
        }
 };
 /**
@@ -1735,6 +1776,7 @@ OO.ui.Widget.prototype.setDisabled = function ( disabled ) {
        isDisabled = this.isDisabled();
        if ( isDisabled !== this.wasDisabled ) {
                this.$element.toggleClass( 'oo-ui-widget-disabled', isDisabled );
+               this.$element.toggleClass( 'oo-ui-widget-enabled', !isDisabled );
                this.emit( 'disable', isDisabled );
        }
        this.wasDisabled = isDisabled;
@@ -1750,7 +1792,7 @@ OO.ui.Widget.prototype.setDisabled = function ( disabled ) {
  * @param {jQuery} $button Button node, assigned to #$button
  * @param {Object} [config] Configuration options
  * @cfg {boolean} [frameless] Render button without a frame
- * @cfg {number} [tabIndex] Button's tab index
+ * @cfg {number} [tabIndex=0] Button's tab index, use -1 to prevent tab focusing
  */
 OO.ui.ButtonedElement = function OoUiButtonedElement( $button, config ) {
        // Configuration initialization
@@ -1789,7 +1831,9 @@ OO.ui.ButtonedElement = function OoUiButtonedElement( $button, config ) {
 OO.ui.ButtonedElement.prototype.onMouseDown = function () {
        this.tabIndex = this.$button.attr( 'tabIndex' );
        // Remove the tab-index while the button is down to prevent the button from stealing focus
-       this.$button.removeAttr( 'tabIndex' );
+       this.$button
+               .removeAttr( 'tabIndex' )
+               .addClass( 'oo-ui-buttonedElement-pressed' );
        this.getElementDocument().addEventListener( 'mouseup', this.onMouseUpHandler, true );
 };
 
@@ -1801,7 +1845,9 @@ OO.ui.ButtonedElement.prototype.onMouseDown = function () {
  */
 OO.ui.ButtonedElement.prototype.onMouseUp = function () {
        // Restore the tab-index after the button is up to restore the button's accesssibility
-       this.$button.attr( 'tabIndex', this.tabIndex );
+       this.$button
+               .attr( 'tabIndex', this.tabIndex )
+               .removeClass( 'oo-ui-buttonedElement-pressed' );
        this.getElementDocument().removeEventListener( 'mouseup', this.onMouseUpHandler, true );
 };
 
@@ -1813,7 +1859,7 @@ OO.ui.ButtonedElement.prototype.onMouseUp = function () {
  * @chainable
  */
 OO.ui.ButtonedElement.prototype.setActive = function ( value ) {
-       this.$element.toggleClass( 'oo-ui-buttonedElement-active', !!value );
+       this.$button.toggleClass( 'oo-ui-buttonedElement-active', !!value );
        return this;
 };
 /**
@@ -3818,9 +3864,9 @@ OO.ui.BookletLayout = function OoUiBookletLayout( config ) {
        this.stackLayout.connect( this, { 'set': 'onStackLayoutSet' } );
        if ( this.outlined ) {
                this.outlineWidget.connect( this, { 'select': 'onOutlineWidgetSelect' } );
-               // Event 'focus' does not bubble, but 'focusin' does
-               this.stackLayout.onDOMEvent( 'focusin', OO.ui.bind( this.onStackLayoutFocus, this ) );
        }
+       // Event 'focus' does not bubble, but 'focusin' does
+       this.stackLayout.onDOMEvent( 'focusin', OO.ui.bind( this.onStackLayoutFocus, this ) );
 
        // Initialization
        this.$element.addClass( 'oo-ui-bookletLayout' );
@@ -3895,6 +3941,7 @@ OO.ui.BookletLayout.prototype.onStackLayoutFocus = function ( e ) {
  */
 OO.ui.BookletLayout.prototype.onStackLayoutSet = function ( page ) {
        if ( page ) {
+               this.stackLayout.$element.find( ':focus' ).blur();
                page.scrollElementIntoView( { 'complete': OO.ui.bind( function () {
                        this.ignoreFocus = true;
                        if ( this.autoFocus ) {
@@ -3937,6 +3984,41 @@ OO.ui.BookletLayout.prototype.isEditable = function () {
        return this.editable;
 };
 
+/**
+ * Get the outline widget.
+ *
+ * @method
+ * @param {OO.ui.PageLayout} page Page to be selected
+ * @returns {OO.ui.PageLayout|null} Closest page to another
+ */
+OO.ui.BookletLayout.prototype.getClosestPage = function ( page ) {
+       var next, prev, level,
+               pages = this.stackLayout.getItems(),
+               index = $.inArray( page, pages );
+
+       if ( index !== -1 ) {
+               next = pages[index + 1];
+               prev = pages[index - 1];
+               // Prefer adjacent pages at the same level
+               if ( this.outlined ) {
+                       level = this.outlineWidget.getItemFromData( page.getName() ).getLevel();
+                       if (
+                               prev &&
+                               level === this.outlineWidget.getItemFromData( prev.getName() ).getLevel()
+                       ) {
+                               return prev;
+                       }
+                       if (
+                               next &&
+                               level === this.outlineWidget.getItemFromData( next.getName() ).getLevel()
+                       ) {
+                               return next;
+                       }
+               }
+       }
+       return prev || next || null;
+};
+
 /**
  * Get the outline widget.
  *
@@ -3991,17 +4073,33 @@ OO.ui.BookletLayout.prototype.getPageName = function () {
  * @chainable
  */
 OO.ui.BookletLayout.prototype.addPages = function ( pages, index ) {
-       var i, len, name, page, item,
-               items = [],
-               remove = [];
+       var i, len, name, page, item, currentIndex,
+               stackLayoutPages = this.stackLayout.getItems(),
+               remove = [],
+               items = [];
 
+       // Remove pages with same names
        for ( i = 0, len = pages.length; i < len; i++ ) {
                page = pages[i];
                name = page.getName();
-               if ( name in this.pages ) {
-                       // Remove page with same name
+
+               if ( Object.prototype.hasOwnProperty.call( this.pages, name ) ) {
+                       // Correct the insertion index
+                       currentIndex = $.inArray( this.pages[name], stackLayoutPages );
+                       if ( currentIndex !== -1 && currentIndex + 1 < index ) {
+                               index--;
+                       }
                        remove.push( this.pages[name] );
                }
+       }
+       if ( remove.length ) {
+               this.removePages( remove );
+       }
+
+       // Add new pages
+       for ( i = 0, len = pages.length; i < len; i++ ) {
+               page = pages[i];
+               name = page.getName();
                this.pages[page.getName()] = page;
                if ( this.outlined ) {
                        item = new OO.ui.OutlineItemWidget( name, page, { '$': this.$ } );
@@ -4009,9 +4107,6 @@ OO.ui.BookletLayout.prototype.addPages = function ( pages, index ) {
                        items.push( item );
                }
        }
-       if ( remove.length ) {
-               this.removePages( remove );
-       }
 
        if ( this.outlined && items.length ) {
                this.outlineWidget.addItems( items, index );
@@ -4098,8 +4193,12 @@ OO.ui.BookletLayout.prototype.setPage = function ( name ) {
        }
 
        if ( page ) {
+               if ( this.currentPageName && this.pages[this.currentPageName] ) {
+                       this.pages[this.currentPageName].setActive( false );
+               }
                this.currentPageName = name;
                this.stackLayout.setItem( page );
+               page.setActive( true );
                this.emit( 'set', page );
        }
 };
@@ -4174,6 +4273,7 @@ OO.ui.PageLayout = function OoUiPageLayout( name, config ) {
        // Properties
        this.name = name;
        this.outlineItem = config.outlineItem || null;
+       this.active = false;
 
        // Initialization
        this.$element.addClass( 'oo-ui-pageLayout' );
@@ -4183,6 +4283,13 @@ OO.ui.PageLayout = function OoUiPageLayout( name, config ) {
 
 OO.inheritClass( OO.ui.PageLayout, OO.ui.PanelLayout );
 
+/* Events */
+
+/**
+ * @event active
+ * @param {boolean} active Page is active
+ */
+
 /* Methods */
 
 /**
@@ -4194,6 +4301,15 @@ OO.ui.PageLayout.prototype.getName = function () {
        return this.name;
 };
 
+/**
+ * Check if page is active.
+ *
+ * @returns {boolean} Page is active
+ */
+OO.ui.PageLayout.prototype.isActive = function () {
+       return this.active;
+};
+
 /**
  * Get outline item.
  *
@@ -4213,6 +4329,22 @@ OO.ui.PageLayout.prototype.setOutlineItem = function ( outlineItem ) {
        this.outlineItem = outlineItem;
        return this;
 };
+
+/**
+ * Set page active state.
+ *
+ * @param {boolean} Page is active
+ * @fires active
+ */
+OO.ui.PageLayout.prototype.setActive = function ( active ) {
+       active = !!active;
+
+       if ( active !== this.active ) {
+               this.active = active;
+               this.$element.toggleClass( 'oo-ui-pageLayout-active', active );
+               this.emit( 'active', this.active );
+       }
+};
 /**
  * Layout containing a series of mutually exclusive pages.
  *
@@ -4458,17 +4590,12 @@ OO.ui.PopupToolGroup.prototype.onBlur = function ( e ) {
  * @inheritdoc
  */
 OO.ui.PopupToolGroup.prototype.onMouseUp = function ( e ) {
-       this.setActive( false );
+       if ( !this.disabled && e.which === 1 ) {
+               this.setActive( false );
+       }
        return OO.ui.ToolGroup.prototype.onMouseUp.call( this, e );
 };
 
-/**
- * @inheritdoc
- */
-OO.ui.PopupToolGroup.prototype.onMouseDown = function ( e ) {
-       return OO.ui.ToolGroup.prototype.onMouseDown.call( this, e );
-};
-
 /**
  * Handle mouse up events.
  *
@@ -5442,8 +5569,6 @@ OO.ui.LookupInputWidget.prototype.getLookupMenuItemsFromData = function () {
  * @constructor
  * @param {Mixed} data Option data
  * @param {Object} [config] Configuration options
- * @cfg {boolean} [selected=false] Select option
- * @cfg {boolean} [highlighted=false] Highlight option
  * @cfg {string} [rel] Value for `rel` attribute in DOM, allowing per-option styling
  */
 OO.ui.OptionWidget = function OoUiOptionWidget( data, config ) {
@@ -5471,10 +5596,6 @@ OO.ui.OptionWidget = function OoUiOptionWidget( data, config ) {
                .attr( 'rel', config.rel )
                .addClass( 'oo-ui-optionWidget' )
                .append( this.$label );
-       this.setSelected( config.selected );
-       this.setHighlighted( config.highlighted );
-
-       // Options
        this.$element
                .prepend( this.$icon )
                .append( this.$indicator );
@@ -6107,7 +6228,7 @@ OO.ui.MenuWidget = function OoUiMenuWidget( config ) {
        OO.ui.ClippableElement.call( this, this.$group, config );
 
        // Properties
-       this.newItems = [];
+       this.newItems = null;
        this.$input = config.input ? config.input.$input : null;
        this.$previousFocus = null;
        this.isolated = !config.input;
@@ -6257,6 +6378,11 @@ OO.ui.MenuWidget.prototype.addItems = function ( items, index ) {
        // Parent method
        OO.ui.SelectWidget.prototype.addItems.call( this, items, index );
 
+       // Auto-initialize
+       if ( !this.newItems ) {
+               this.newItems = [];
+       }
+
        for ( i = 0, len = items.length; i < len; i++ ) {
                item = items[i];
                if ( this.visible ) {
@@ -6289,11 +6415,11 @@ OO.ui.MenuWidget.prototype.show = function () {
                        this.$previousFocus = this.$( ':focus' );
                        this.$input.focus();
                }
-               if ( this.newItems.length ) {
+               if ( this.newItems && this.newItems.length ) {
                        for ( i = 0, len = this.newItems.length; i < len; i++ ) {
                                this.newItems[i].fitLabel();
                        }
-                       this.newItems = [];
+                       this.newItems = null;
                }
 
                this.setClipping( true );
@@ -6322,6 +6448,101 @@ OO.ui.MenuWidget.prototype.hide = function () {
 
        return this;
 };
+/**
+ * Inline menu of options.
+ *
+ * @class
+ * @extends OO.ui.Widget
+ * @mixins OO.ui.IconedElement
+ * @mixins OO.ui.IndicatedElement
+ * @mixins OO.ui.LabeledElement
+ * @mixins OO.ui.TitledElement
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ * @cfg {Object} [menu] Configuration options to pass to menu widget
+ */
+OO.ui.InlineMenuWidget = function OoUiInlineMenuWidget( config ) {
+       // Configuration initialization
+       config = $.extend( { 'indicator': 'down' }, config );
+
+       // Parent constructor
+       OO.ui.Widget.call( this, config );
+
+       // Mixin constructors
+       OO.ui.IconedElement.call( this, this.$( '<span>' ), config );
+       OO.ui.IndicatedElement.call( this, this.$( '<span>' ), config );
+       OO.ui.LabeledElement.call( this, this.$( '<span>' ), config );
+       OO.ui.TitledElement.call( this, this.$label, config );
+
+       // Properties
+       this.menu = new OO.ui.MenuWidget( $.extend( { '$': this.$ }, config.menu ) );
+       this.$handle = this.$( '<span>' );
+
+       // Events
+       this.$element.on( { 'click': OO.ui.bind( this.onClick, this ) } );
+       this.menu.connect( this, { 'select': 'onMenuSelect' } );
+
+       // Initialization
+       this.$handle
+               .addClass( 'oo-ui-inlineMenuWidget-handle' )
+               .append( this.$icon, this.$label, this.$indicator );
+       this.$element
+               .addClass( 'oo-ui-inlineMenuWidget' )
+               .append( this.$handle, this.menu.$element );
+};
+
+/* Inheritance */
+
+OO.inheritClass( OO.ui.InlineMenuWidget, OO.ui.Widget );
+
+OO.mixinClass( OO.ui.InlineMenuWidget, OO.ui.IconedElement );
+OO.mixinClass( OO.ui.InlineMenuWidget, OO.ui.IndicatedElement );
+OO.mixinClass( OO.ui.InlineMenuWidget, OO.ui.LabeledElement );
+OO.mixinClass( OO.ui.InlineMenuWidget, OO.ui.TitledElement );
+
+/* Methods */
+
+/**
+ * Get the menu.
+ *
+ * @return {OO.ui.MenuWidget} Menu of widget
+ */
+OO.ui.InlineMenuWidget.prototype.getMenu = function () {
+       return this.menu;
+};
+
+/**
+ * Handles menu select events.
+ *
+ * @method
+ * @param {OO.ui.MenuItemWidget} item Selected menu item
+ */
+OO.ui.InlineMenuWidget.prototype.onMenuSelect = function ( item ) {
+       this.setLabel( item.getLabel() );
+};
+
+/**
+ * Handles mouse click events.
+ *
+ * @method
+ * @param {jQuery.Event} e Mouse click event
+ */
+OO.ui.InlineMenuWidget.prototype.onClick = function ( e ) {
+       // Skip clicks within the menu
+       if ( $.contains( this.menu.$element[0], e.target ) ) {
+               return;
+       }
+
+       if ( !this.disabled ) {
+               if ( this.menu.isVisible() ) {
+                       this.menu.hide();
+               } else {
+                       this.menu.show();
+               }
+       }
+       return false;
+};
 /**
  * Creates an OO.ui.MenuSectionItemWidget object.
  *
@@ -6378,26 +6599,21 @@ OO.inheritClass( OO.ui.OutlineWidget, OO.ui.SelectWidget );
  * @constructor
  * @param {OO.ui.OutlineWidget} outline Outline to control
  * @param {Object} [config] Configuration options
- * @cfg {Object[]} [adders] List of icons to show as addable item types, each an object with
- *  name, title and icon properties
  */
 OO.ui.OutlineControlsWidget = function OoUiOutlineControlsWidget( outline, config ) {
        // Configuration initialization
-       config = config || {};
+       config = $.extend( { 'icon': 'add-item' }, config );
 
        // Parent constructor
        OO.ui.Widget.call( this, config );
 
+       // Mixin constructors
+       OO.ui.GroupElement.call( this, this.$( '<div>' ), config );
+       OO.ui.IconedElement.call( this, this.$( '<div>' ), config );
+
        // Properties
        this.outline = outline;
-       this.adders = {};
-       this.$adders = this.$( '<div>' );
        this.$movers = this.$( '<div>' );
-       this.addButton = new OO.ui.ButtonWidget( {
-               '$': this.$,
-               'frameless': true,
-               'icon': 'add-item'
-       } );
        this.upButton = new OO.ui.ButtonWidget( {
                '$': this.$,
                'frameless': true,
@@ -6410,6 +6626,12 @@ OO.ui.OutlineControlsWidget = function OoUiOutlineControlsWidget( outline, confi
                'icon': 'expand',
                'title': OO.ui.msg( 'ooui-outline-control-move-down' )
        } );
+       this.removeButton = new OO.ui.ButtonWidget( {
+               '$': this.$,
+               'frameless': true,
+               'icon': 'remove',
+               'title': OO.ui.msg( 'ooui-outline-control-remove' )
+       } );
 
        // Events
        outline.connect( this, {
@@ -6419,23 +6641,24 @@ OO.ui.OutlineControlsWidget = function OoUiOutlineControlsWidget( outline, confi
        } );
        this.upButton.connect( this, { 'click': ['emit', 'move', -1] } );
        this.downButton.connect( this, { 'click': ['emit', 'move', 1] } );
+       this.removeButton.connect( this, { 'click': ['emit', 'remove'] } );
 
        // Initialization
        this.$element.addClass( 'oo-ui-outlineControlsWidget' );
-       this.$adders.addClass( 'oo-ui-outlineControlsWidget-adders' );
+       this.$group.addClass( 'oo-ui-outlineControlsWidget-adders' );
        this.$movers
                .addClass( 'oo-ui-outlineControlsWidget-movers' )
-               .append( this.upButton.$element, this.downButton.$element );
-       this.$element.append( this.$adders, this.$movers );
-       if ( config.adders && config.adders.length ) {
-               this.setupAdders( config.adders );
-       }
+               .append( this.removeButton.$element, this.upButton.$element, this.downButton.$element );
+       this.$element.append( this.$icon, this.$group, this.$movers );
 };
 
 /* Inheritance */
 
 OO.inheritClass( OO.ui.OutlineControlsWidget, OO.ui.Widget );
 
+OO.mixinClass( OO.ui.OutlineControlsWidget, OO.ui.GroupElement );
+OO.mixinClass( OO.ui.OutlineControlsWidget, OO.ui.IconedElement );
+
 /* Events */
 
 /**
@@ -6443,6 +6666,10 @@ OO.inheritClass( OO.ui.OutlineControlsWidget, OO.ui.Widget );
  * @param {number} places Number of places to move
  */
 
+/**
+ * @event remove
+ */
+
 /* Methods */
 
 /**
@@ -6452,12 +6679,12 @@ OO.inheritClass( OO.ui.OutlineControlsWidget, OO.ui.Widget );
  */
 OO.ui.OutlineControlsWidget.prototype.onOutlineChange = function () {
        var i, len, firstMovable, lastMovable,
-               movable = false,
                items = this.outline.getItems(),
-               selectedItem = this.outline.getSelectedItem();
+               selectedItem = this.outline.getSelectedItem(),
+               movable = selectedItem && selectedItem.isMovable(),
+               removable = selectedItem && selectedItem.isRemovable();
 
-       if ( selectedItem && selectedItem.isMovable() ) {
-               movable = true;
+       if ( movable ) {
                i = -1;
                len = items.length;
                while ( ++i < len ) {
@@ -6476,30 +6703,7 @@ OO.ui.OutlineControlsWidget.prototype.onOutlineChange = function () {
        }
        this.upButton.setDisabled( !movable || selectedItem === firstMovable );
        this.downButton.setDisabled( !movable || selectedItem === lastMovable );
-};
-
-/**
- * Setup adders icons.
- *
- * @method
- * @param {Object[]} adders List of configuations for adder buttons, each containing a name, title
- *  and icon property
- */
-OO.ui.OutlineControlsWidget.prototype.setupAdders = function ( adders ) {
-       var i, len, addition, button,
-               $buttons = this.$( [] );
-
-       this.$adders.append( this.addButton.$element );
-       for ( i = 0, len = adders.length; i < len; i++ ) {
-               addition = adders[i];
-               button = new OO.ui.ButtonWidget( {
-                       '$': this.$, 'frameless': true, 'icon': addition.icon, 'title': addition.title
-               } );
-               button.connect( this, { 'click': ['emit', 'add', addition.name] } );
-               this.adders[addition.name] = button;
-               this.$adders.append( button.$element );
-               $buttons = $buttons.add( button.$element );
-       }
+       this.removeButton.setDisabled( !removable );
 };
 /**
  * Creates an OO.ui.OutlineItemWidget object.
@@ -6523,6 +6727,7 @@ OO.ui.OutlineItemWidget = function OoUiOutlineItemWidget( data, config ) {
        // Properties
        this.level = 0;
        this.movable = !!config.movable;
+       this.removable = !!config.removable;
 
        // Initialization
        this.$element.addClass( 'oo-ui-outlineItemWidget' );
@@ -6556,6 +6761,17 @@ OO.ui.OutlineItemWidget.prototype.isMovable = function () {
        return this.movable;
 };
 
+/**
+ * Check if item is removable.
+ *
+ * Removablilty is used by outline controls.
+ *
+ * @returns {boolean} Item is removable
+ */
+OO.ui.OutlineItemWidget.prototype.isRemovable = function () {
+       return this.removable;
+};
+
 /**
  * Get indentation level.
  *
@@ -6578,6 +6794,19 @@ OO.ui.OutlineItemWidget.prototype.setMovable = function ( movable ) {
        return this;
 };
 
+/**
+ * Set removability.
+ *
+ * Removablilty is used by outline controls.
+ *
+ * @param {boolean} movable Item is removable
+ * @chainable
+ */
+OO.ui.OutlineItemWidget.prototype.setRemovable = function ( removable ) {
+       this.removable = !!removable;
+       return this;
+};
+
 /**
  * Set indentation level.
  *
@@ -7143,6 +7372,7 @@ OO.ui.SearchWidget.prototype.getResults = function () {
  * @cfg {string} [placeholder] Placeholder text
  * @cfg {string} [icon] Symbolic name of icon
  * @cfg {boolean} [multiline=false] Allow multiple lines of text
+ * @cfg {boolean} [autosize=false] Automatically resize to fit content
  */
 OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
        config = config || {};
@@ -7153,6 +7383,7 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
        // Properties
        this.pending = 0;
        this.multiline = !!config.multiline;
+       this.autosize = !!config.autosize;
 
        // Events
        this.$input.on( 'keypress', OO.ui.bind( this.onKeyPress, this ) );
@@ -7203,6 +7434,37 @@ OO.ui.TextInputWidget.prototype.onKeyPress = function ( e ) {
        }
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.TextInputWidget.prototype.onEdit = function () {
+       var $clone, scrollHeight, innerHeight, outerHeight;
+
+       // Automatic size adjustment
+       if ( this.multiline && this.autosize ) {
+               $clone = this.$input.clone()
+                       .val( this.$input.val() )
+                       .css( { 'height': 0 } )
+                       .insertAfter( this.$input );
+               // Set inline height property to 0 to measure scroll height
+               scrollHeight = $clone[0].scrollHeight;
+               // Remove inline height property to measure natural heights
+               $clone.css( 'height', '' );
+               innerHeight = $clone.innerHeight();
+               outerHeight = $clone.outerHeight();
+               $clone.remove();
+               // Only apply inline height when expansion beyond natural height is needed
+               this.$input.css(
+                       'height',
+                       // Use the difference between the inner and outer height as a buffer
+                       scrollHeight > outerHeight ? scrollHeight + ( outerHeight - innerHeight ) : ''
+               );
+       }
+
+       // Parent method
+       return OO.ui.InputWidget.prototype.onEdit.call( this );
+};
+
 /**
  * Get input element.
  *
@@ -7216,6 +7478,26 @@ OO.ui.TextInputWidget.prototype.getInputElement = function ( config ) {
 
 /* Methods */
 
+/**
+ * Checks if input supports multiple lines.
+ *
+ * @method
+ * @returns {boolean} Input supports multiple lines
+ */
+OO.ui.TextInputWidget.prototype.isMultiline = function () {
+       return !!this.multiline;
+};
+
+/**
+ * Checks if input automatically adjusts its size.
+ *
+ * @method
+ * @returns {boolean} Input automatically adjusts its size
+ */
+OO.ui.TextInputWidget.prototype.isAutosizing = function () {
+       return !!this.autosize;
+};
+
 /**
  * Checks if input is pending.
  *
@@ -7496,18 +7778,18 @@ OO.ui.ToggleSwitchWidget = function OoUiToggleSwitchWidget( config ) {
        this.dragging = false;
        this.dragStart = null;
        this.sliding = false;
-       this.$on = this.$( '<span>' );
+       this.$glow = this.$( '<span>' );
        this.$grip = this.$( '<span>' );
 
        // Events
        this.$element.on( 'click', OO.ui.bind( this.onClick, this ) );
 
        // Initialization
-       this.$on.addClass( 'oo-ui-toggleSwitchWidget-on' );
+       this.$glow.addClass( 'oo-ui-toggleSwitchWidget-glow' );
        this.$grip.addClass( 'oo-ui-toggleSwitchWidget-grip' );
        this.$element
                .addClass( 'oo-ui-toggleSwitchWidget' )
-               .append( this.$on, this.$grip );
+               .append( this.$glow, this.$grip );
 };
 
 /* Inheritance */
index 917707e..718d960 100644 (file)
 /*!
- * OOjs UI v0.1.0-pre-svg (424b40373e)
+ * OOjs UI v0.1.0-pre (51f922ba17)
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2014 OOjs Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: Fri Feb 14 2014 17:57:32 GMT-0800 (PST)
+ * Date: Fri Feb 28 2014 16:33:26 GMT-0800 (PST)
  */
-/*csslint vendor-prefix:false */
 
 /* Textures */
 
 .oo-ui-texture-pending {
-       /* @embed */
-       background-image: url(images/textures/pending.gif);
+  background-image: /* @embed */ url(images/textures/pending.gif);
 }
 
 .oo-ui-texture-transparency {
-       /* @embed */
-       background-image: url(images/textures/transparency.png);
-}
-
-/* Animation */
-
-@-webkit-keyframes oo-ui-zoom-in {
-       from { -webkit-transform: scale(0.5); }
-       to { -webkit-transform: scale(1); }
-}
-
-@-moz-keyframes oo-ui-zoom-in {
-       from { -moz-transform: scale(0.5); }
-       to { -moz-transform: scale(1); }
-}
-
-@-o-keyframes oo-ui-zoom-in {
-       from { -o-transform: scale(0.5); }
-       to { -o-transform: scale(1); }
-}
-
-@keyframes oo-ui-zoom-in {
-       from { transform: scale(0.5); }
-       to { transform: scale(1); }
-}
-
-@-webkit-keyframes oo-ui-fade-in {
-       from { opacity: 0; }
-       to { opacity: 1; }
-}
-
-@-moz-keyframes oo-ui-fade-in {
-       from { opacity: 0; }
-       to { opacity: 1; }
-}
-
-@-o-keyframes oo-ui-fade-in {
-       from { opacity: 0; }
-       to { opacity: 1; }
-}
-
-@keyframes oo-ui-fade-in {
-       from { opacity: 0; }
-       to { opacity: 1; }
+  background-image: /* @embed */ url(images/textures/transparency.png);
 }
 
 /* RTL Definitions */
 
 /* @noflip */
+
 .oo-ui-rtl {
-       direction: rtl;
+  direction: rtl;
 }
+
 /* @noflip */
+
 .oo-ui-ltr {
-       direction: ltr;
+  direction: ltr;
 }
+
 .oo-ui-dialog {
-       position: fixed;
-       top: 0;
-       right: 0;
-       bottom: 0;
-       left: 0;
-       padding: 1em;
-       line-height: 1em;
-       background-color: #fff;
-       background-color: rgba(255,255,255,0.5);
-       -webkit-animation: oo-ui-fade-in 250ms ease-in-out 0 1 normal;
-       -moz-animation: oo-ui-fade-in 250ms ease-in-out 0 1 normal;
-       -o-animation: oo-ui-fade-in 250ms ease-in-out 0 1 normal;
-       animation: oo-ui-fade-in 250ms ease-in-out 0 1 normal;
-}
-
-.oo-ui-dialog-closing {
-       -webkit-animation: oo-ui-fade-in 250ms ease-in-out 0 1 reverse;
-       -moz-animation: oo-ui-fade-in 250ms ease-in-out 0 1 reverse;
-       -o-animation: oo-ui-fade-in 250ms ease-in-out 0 1 reverse;
-       animation: oo-ui-fade-in 250ms ease-in-out 0 1 reverse;
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  padding: 1em;
+  line-height: 1em;
+  background-color: #fff;
+  background-color: rgba(255, 255, 255, 0.5);
+  opacity: 0;
+  -webkit-transition: all 250ms ease-in-out;
+     -moz-transition: all 250ms ease-in-out;
+      -ms-transition: all 250ms ease-in-out;
+       -o-transition: all 250ms ease-in-out;
+          transition: all 250ms ease-in-out;
 }
 
 .oo-ui-dialog .oo-ui-window-frame {
-       position: fixed;
-       top: 1em;
-       right: 0;
-       bottom: 1em;
-       left: 0;
-       margin: auto;
-       width: 800px;
-       min-height: 12em;
-       max-height: 600px;
-       background-color: #fff;
-       border: solid 1px #ccc;
-       border-radius: 0.5em;
-       box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
-       overflow: hidden;
-       -webkit-animation: oo-ui-zoom-in 250ms ease-in-out 0 1 normal;
-       -moz-animation: oo-ui-zoom-in 250ms ease-in-out 0 1 normal;
-       -o-animation: oo-ui-zoom-in 250ms ease-in-out 0 1 normal;
-       animation: oo-ui-zoom-in 250ms ease-in-out 0 1 normal;
-}
-
-.oo-ui-dialog .oo-ui-window-frame.oo-ui-window-frame-small {
-       max-width: 600px;
-       max-height: 400px;
-}
-
-.oo-ui-dialog-closing .oo-ui-window-frame {
-       -webkit-animation: oo-ui-zoom-in 250ms ease-in-out 0 1 reverse;
-       -moz-animation: oo-ui-zoom-in 250ms ease-in-out 0 1 reverse;
-       -o-animation: oo-ui-zoom-in 250ms ease-in-out 0 1 reverse;
-       animation: oo-ui-zoom-in 250ms ease-in-out 0 1 reverse;
+  position: fixed;
+  top: 1em;
+  right: 0;
+  bottom: 1em;
+  left: 0;
+  width: 800px;
+  max-height: 600px;
+  min-height: 12em;
+  margin: auto;
+  overflow: hidden;
+  background-color: #fff;
+  border: solid 1px #ccc;
+  border-radius: 0.5em;
+  -webkit-transform: scale(0.5);
+     -moz-transform: scale(0.5);
+      -ms-transform: scale(0.5);
+       -o-transform: scale(0.5);
+          transform: scale(0.5);
+  box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
+  -webkit-transition: all 250ms ease-in-out;
+     -moz-transition: all 250ms ease-in-out;
+      -ms-transition: all 250ms ease-in-out;
+       -o-transition: all 250ms ease-in-out;
+          transition: all 250ms ease-in-out;
+}
+
+.oo-ui-dialog .oo-ui-window-frame-small {
+  max-width: 600px;
+  max-height: 400px;
 }
 
 .oo-ui-dialog .oo-ui-frame {
-       width: 100%;
-       height: 100%;
+  width: 100%;
+  height: 100%;
+}
+
+.oo-ui-dialog-open {
+  opacity: 1;
+}
+
+.oo-ui-dialog-open .oo-ui-window-frame {
+  -webkit-transform: scale(1);
+     -moz-transform: scale(1);
+      -ms-transform: scale(1);
+       -o-transform: scale(1);
+          transform: scale(1);
 }
 
 .oo-ui-dialog-content .oo-ui-window-head,
 .oo-ui-dialog-content .oo-ui-window-body,
 .oo-ui-dialog-content .oo-ui-window-foot {
-       position: absolute;
-       left: 0;
-       right: 0;
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
-       overflow: hidden;
+  position: absolute;
+  right: 0;
+  left: 0;
+  overflow: hidden;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
 
 .oo-ui-dialog-content .oo-ui-window-head {
-       top: 0;
-       height: 3.8em;
-       padding: 0.5em;
+  top: 0;
+  height: 3.8em;
+  padding: 0.5em;
 }
 
-.oo-ui-dialog-content .oo-ui-window-foot {
-       bottom: 0;
-       height: 4.8em;
-       padding: 1em;
+.oo-ui-dialog-content .oo-ui-window-title {
+  line-height: 2.8em;
 }
 
-.oo-ui-dialog-content .oo-ui-window-body {
-       box-shadow: 0 0 0.66em rgba(0,0,0,0.25);
-       top: 3.8em;
-       bottom: 4.8em;
+.oo-ui-dialog-content .oo-ui-window-icon {
+  width: 2.4em;
+  height: 2.8em;
+  line-height: 2.8em;
 }
 
-.oo-ui-dialog-content-footless .oo-ui-window-body {
-       bottom: 0;
+.oo-ui-dialog-content .oo-ui-window-closeButton {
+  float: right;
+  margin: 0.25em 0.25em;
 }
 
-.oo-ui-dialog-content-footless .oo-ui-window-foot {
-       display: none;
+.oo-ui-dialog-content .oo-ui-window-body {
+  top: 3.8em;
+  bottom: 4.8em;
+  box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
 }
 
-.oo-ui-dialog-content .oo-ui-window-icon {
-       width: 2.4em;
-       height: 2.8em;
-       line-height: 2.8em;
+.oo-ui-dialog-content .oo-ui-window-foot {
+  bottom: 0;
+  height: 4.8em;
+  padding: 1em;
 }
 
-.oo-ui-dialog-content .oo-ui-window-title {
-       line-height: 2.8em;
+.oo-ui-dialog-content .oo-ui-window-foot .oo-ui-buttonedElement-framed {
+  float: left;
+  margin: 0.125em 0.25em;
 }
 
-.oo-ui-dialog-content .oo-ui-window-foot .oo-ui-buttonedElement-framed {
-       float: left;
-       margin: 0.125em 0.25em;
+.oo-ui-dialog-content .oo-ui-window-foot .oo-ui-flaggableElement-primary,
+.oo-ui-dialog-content .oo-ui-window-foot .oo-ui-flaggableElement-constructive,
+.oo-ui-dialog-content .oo-ui-window-foot .oo-ui-flaggableElement-destructive {
+  float: right;
 }
 
-.oo-ui-dialog-content .oo-ui-window-foot .oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary,
-.oo-ui-dialog-content .oo-ui-window-foot .oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive,
-.oo-ui-dialog-content .oo-ui-window-foot .oo-ui-buttonedElement-framed.oo-ui-flaggableElement-destructive {
-       float: right;
+.oo-ui-dialog-content-footless .oo-ui-window-body {
+  bottom: 0;
 }
 
-.oo-ui-dialog-content .oo-ui-window-closeButton {
-       float: right;
-       margin: 0.25em 0.25em;
+.oo-ui-dialog-content-footless .oo-ui-window-foot {
+  display: none;
 }
 
 /* OO.ui.ButtonedElement */
 
-a.oo-ui-buttonedElement-button {
-       color: #333;
-       cursor: pointer;
-       display: inline-block;
-       vertical-align: middle;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       -ms-user-select: none;
-       user-select: none;
-}
-
-.oo-ui-buttonedElement .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator,
-.oo-ui-buttonedElement .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-       display: none;
+.oo-ui-buttonedElement .oo-ui-buttonedElement-button {
+  display: inline-block;
+  color: #333;
+  vertical-align: middle;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
 }
 
-.oo-ui-buttonedElement.oo-ui-indicatedElement .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator,
-.oo-ui-buttonedElement.oo-ui-iconedElement .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-       opacity: 0.8;
-       display: inline-block;
-       vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
-       width: 1.9em;
-       height: 1.9em;
+.oo-ui-buttonedElement .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon,
+.oo-ui-buttonedElement .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator {
+  display: none;
 }
 
 .oo-ui-buttonedElement .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-       margin-left: 0;
+  margin-left: 0;
 }
 
 .oo-ui-buttonedElement .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator {
-       margin-right: -0.75em;
+  margin-right: -0.75em;
 }
+
 .oo-ui-buttonedElement.oo-ui-widget-disabled .oo-ui-buttonedElement-button {
-       cursor: default;
+  cursor: default;
+}
+
+.oo-ui-buttonedElement.oo-ui-indicatedElement .oo-ui-buttonedElement-button > .oo-ui-indicatedElement-indicator,
+.oo-ui-buttonedElement.oo-ui-iconedElement .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
+  display: inline-block;
+  width: 1.9em;
+  height: 1.9em;
+  vertical-align: middle;
+  background-position: center center;
+  background-repeat: no-repeat;
+  opacity: 0.8;
 }
 
 .oo-ui-buttonedElement-frameless {
-       display: inline-block;
-       position: relative;
-       -webkit-transition: opacity 200ms;
-       -moz-transition: opacity 200ms;
-       -o-transition: opacity 200ms;
-       transition: opacity 200ms;
+  position: relative;
+  display: inline-block;
+  -webkit-transition: opacity 200ms;
+     -moz-transition: opacity 200ms;
+       -o-transition: opacity 200ms;
+          transition: opacity 200ms;
 }
 
 .oo-ui-buttonedElement-frameless .oo-ui-buttonedElement-button:hover > .oo-ui-iconedElement-icon,
 .oo-ui-buttonedElement-frameless .oo-ui-buttonedElement-button:focus > .oo-ui-iconedElement-icon {
-       opacity: 1;
+  opacity: 1;
 }
 
-.oo-ui-buttonedElement-frameless.oo-ui-widget-disabled .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-       opacity: 0.2;
+.oo-ui-buttonedElement-frameless .oo-ui-buttonedElement-button:hover > .oo-ui-labeledElement-label,
+.oo-ui-buttonedElement-frameless .oo-ui-buttonedElement-button:focus > .oo-ui-labeledElement-label {
+  color: #000;
 }
 
 .oo-ui-buttonedElement-frameless .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-       display: inline-block;
-       vertical-align: middle;
-       margin-left: 0.25em;
-       color: #333;
+  display: inline-block;
+  margin-left: 0.25em;
+  color: #333;
+  vertical-align: middle;
 }
 
-.oo-ui-buttonedElement-frameless .oo-ui-buttonedElement-button:hover > .oo-ui-labeledElement-label,
-.oo-ui-buttonedElement-frameless .oo-ui-buttonedElement-button:focus > .oo-ui-labeledElement-label {
-       color: #000;
+.oo-ui-buttonedElement-frameless.oo-ui-widget-disabled .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
+  opacity: 0.2;
 }
 
 .oo-ui-buttonedElement-frameless.oo-ui-widget-disabled .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-       color: #ccc;
+  color: #ccc;
 }
 
-/* OO.ui.ButtonWidget */
-
 .oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-       display: inline-block;
-       font-size: 1em;
-       margin: 0.1em 0;
-       padding: 0.2em 0.8em;
-       border-radius: 0.3em;
-       vertical-align: top;
-       text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
-       text-align: center;
-
-       /* Animation */
-       -webkit-transition: border-color 100ms;
-       -moz-transition: border-color 100ms;
-       -o-transition: border-color 100ms;
-       transition: border-color 100ms;
-
-       /* Gray */
-       border: 1px #c9c9c9 solid;
-       background-color: #dddddd;
-       filter: progid:DXImageTransform.Microsoft.gradient(
-               GradientType=0,startColorstr=#ffffff, endColorstr=#dddddd
-       );
-       background-image: -webkit-gradient(
-               linear, right top, right bottom, color-stop(0%,#ffffff), color-stop(100%,#dddddd)
-       );
-       background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-       background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-       background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-       background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-       background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  display: inline-block;
+  padding: 0.2em 0.8em;
+  margin: 0.1em 0;
+  font-size: 1em;
+  text-align: center;
+  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
+  vertical-align: top;
+  background: #eeeeee;
+  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
+  background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  border: 1px #c9c9c9 solid;
+  border-radius: 0.3em;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
+  -webkit-transition: border-color 100ms ease-in-out;
+     -moz-transition: border-color 100ms ease-in-out;
+      -ms-transition: border-color 100ms ease-in-out;
+       -o-transition: border-color 100ms ease-in-out;
+          transition: border-color 100ms ease-in-out;
 }
 
 .oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button:hover,
 .oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button:focus {
-       border-color: #aaa;
-}
-
-.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button:active,
-.oo-ui-buttonedElement-framed.oo-ui-buttonedElement-active .oo-ui-buttonedElement-button {
-       box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
-       color: black;
-
-       /* Gray */
-       border-color: #c9c9c9;
-       background-color: #dddddd;
-       filter: progid:DXImageTransform.Microsoft.gradient(
-               GradientType=0,startColorstr=#dddddd, endColorstr=#ffffff
-       );
-       background-image: -webkit-gradient(
-               linear, right top, right bottom, color-stop(0%,#dddddd), color-stop(100%,#ffffff)
-       );
-       background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-       background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-       background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-       background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-       background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  border-color: #aaa;
+}
+
+.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
+  display: inline-block;
+  line-height: 1.9em;
+  vertical-align: middle;
+}
+
+.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
+.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
+  color: black;
+  background: #eeeeee;
+  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
+  background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  border-color: #c9c9c9;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
+  box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
 }
 
 .oo-ui-buttonedElement-framed.oo-ui-iconedElement .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-       margin-left: -0.5em;
-       margin-right: -0.5em;
+  margin-right: -0.5em;
+  margin-left: -0.5em;
 }
 
 .oo-ui-buttonedElement-framed.oo-ui-iconedElement.oo-ui-labeledElement .oo-ui-buttonedElement-button > .oo-ui-iconedElement-icon {
-       margin-left: -0.5em;
-       margin-right: 0;
+  margin-right: 0;
+  margin-left: -0.5em;
 }
 
-.oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button > .oo-ui-labeledElement-label {
-       display: inline-block;
-       vertical-align: middle;
-       line-height: 1.9em;
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary .oo-ui-buttonedElement-button {
+  background: #cde7f4;
+  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #eaf4fa), color-stop(100%, #b0d9ee));
+  background-image: -webkit-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+  background-image: -moz-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+  background-image: -ms-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+  background-image: -o-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+  background-image: linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+  border: solid 1px #a6cee1;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#eaf4fa', endColorstr='#b0d9ee');
 }
 
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-destructive .oo-ui-buttonedElement-button {
-       /* Red text */
-       color: #d45353;
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary .oo-ui-buttonedElement-button:hover,
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary .oo-ui-buttonedElement-button:focus {
+  border-color: #9dc2d4;
+}
+
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
+  background: #cde7f4;
+  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
+  background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  border: solid 1px #a6cee1;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
 }
 
 .oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive .oo-ui-buttonedElement-button {
-       /* Green */
-       border: solid 1px #b8d892;
-       background-color: #f0fbe1;
-       filter: progid:DXImageTransform.Microsoft.gradient(
-               GradientType=0,startColorstr=#f0fbe1, endColorstr=#c3e59a
-       );
-       background-image: -webkit-gradient(
-               linear, right top, right bottom, color-stop(0%,#f0fbe1), color-stop(100%,#c3e59a)
-       );
-       background-image: -webkit-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-       background-image: -moz-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-       background-image: -ms-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-       background-image: -o-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
-       background-image: linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+  background: #daf0be;
+  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #f0fbe1), color-stop(100%, #c3e59a));
+  background-image: -webkit-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+  background-image: -moz-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+  background-image: -ms-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+  background-image: -o-linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+  background-image: linear-gradient(top, #f0fbe1 0%, #c3e59a 100%);
+  border: solid 1px #b8d892;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f0fbe1', endColorstr='#c3e59a');
 }
 
 .oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive .oo-ui-buttonedElement-button:hover,
 .oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive .oo-ui-buttonedElement-button:focus {
-       border-color: #adcb89;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive .oo-ui-buttonedElement-button:active,
-.oo-ui-buttonedElement-framed.oo-ui-buttonedElement-active.oo-ui-flaggableElement-constructive .oo-ui-buttonedElement-button {
-       /* Green */
-       border: solid 1px #b8d892;
-       background-color: #c3e59a;
-       filter: progid:DXImageTransform.Microsoft.gradient(
-               GradientType=0,startColorstr=#c3e59a, endColorstr=#f0fbe1
-       );
-       background-image: -webkit-gradient(
-               linear, right top, right bottom, color-stop(0%,#c3e59a), color-stop(100%,#f0fbe1)
-       );
-       background-image: -webkit-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-       background-image: -moz-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-       background-image: -ms-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-       background-image: -o-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
-       background-image: linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+  border-color: #adcb89;
 }
 
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary .oo-ui-buttonedElement-button {
-       /* Blue */
-       border: solid 1px #a6cee1;
-       background-color: #eaf4fa;
-       filter: progid:DXImageTransform.Microsoft.gradient(
-               GradientType=0,startColorstr=#eaf4fa, endColorstr=#b0d9ee
-       );
-       background-image: -webkit-gradient(
-               linear, right top, right bottom, color-stop(0%,#eaf4fa), color-stop(100%,#b0d9ee)
-       );
-       background-image: -webkit-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-       background-image: -moz-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-       background-image: -ms-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-       background-image: -o-linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
-       background-image: linear-gradient(top, #eaf4fa 0%, #b0d9ee 100%);
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-constructive .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
+  background: #daf0be;
+  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #c3e59a), color-stop(100%, #f0fbe1));
+  background-image: -webkit-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+  background-image: -moz-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+  background-image: -ms-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+  background-image: -o-linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+  background-image: linear-gradient(top, #c3e59a 0%, #f0fbe1 100%);
+  border: solid 1px #b8d892;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#c3e59a', endColorstr='#f0fbe1');
 }
 
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary .oo-ui-buttonedElement-button:hover,
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary .oo-ui-buttonedElement-button:focus {
-       border-color: #9dc2d4;
-}
-
-.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-primary .oo-ui-buttonedElement-button:active,
-.oo-ui-buttonedElement-framed.oo-ui-buttonedElement-active.oo-ui-flaggableElement-primary .oo-ui-buttonedElement-button {
-       /* Blue */
-       border: solid 1px #a6cee1;
-       background-color: #b0d9ee;
-       filter: progid:DXImageTransform.Microsoft.gradient(
-               GradientType=0,startColorstr=#b0d9ee, endColorstr=#eaf4fa
-       );
-       background-image: -webkit-gradient(
-               linear, right top, right bottom, color-stop(0%,#b0d9ee), color-stop(100%,#eaf4fa)
-       );
-       background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-       background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-       background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-       background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-       background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+.oo-ui-buttonedElement-framed.oo-ui-flaggableElement-destructive .oo-ui-buttonedElement-button {
+  /* Red text */
+
+  color: #d45353;
 }
 
 .oo-ui-buttonedElement-framed.oo-ui-widget-disabled .oo-ui-buttonedElement-button,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled .oo-ui-buttonedElement-button:active,
-.oo-ui-buttonedElement-framed.oo-ui-buttonedElement-active.oo-ui-widget-disabled .oo-ui-buttonedElement-button:active {
-       opacity: 0.5;
-       cursor: default;
-       box-shadow: none;
-       color: #333;
-       background: #eee;
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed {
+  color: #333;
+  cursor: default;
+  background: #eee;
+  opacity: 0.5;
+  box-shadow: none;
 }
 
 .oo-ui-buttonedElement-framed.oo-ui-widget-disabled .oo-ui-buttonedElement-button:hover,
-.oo-ui-buttonedElement-framed.oo-ui-widget-disabled .oo-ui-buttonedElement-button:focus {
-       border-color: #ccc;
-       box-shadow: none;
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active:hover,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed:hover,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled .oo-ui-buttonedElement-button:focus,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled .oo-ui-buttonedElement-button.oo-ui-buttonedElement-active:focus,
+.oo-ui-buttonedElement-framed.oo-ui-widget-disabled .oo-ui-buttonedElement-button.oo-ui-buttonedElement-pressed:focus {
+  border-color: #ccc;
+  box-shadow: none;
 }
 
 /* OO.ui.LabeledElement */
 
 .oo-ui-labeledElement-label {
-       display: block;
+  display: block;
 }
 
+/* OO.ui.ClippableElement */
+
 .oo-ui-clippableElement-clippable {
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
+
+/* OO.ui.Frame */
+
 .oo-ui-frame {
-       margin: 0;
-       padding: 0;
+  padding: 0;
+  margin: 0;
 }
 
 .oo-ui-frame-body {
-       margin: 0;
-       padding: 0;
-       background: none;
+  padding: 0;
+  margin: 0;
+  background: none;
 }
 
 .oo-ui-frame-content {
-       font-family: sans-serif;
-       font-size: 0.8em;
+  font-family: sans-serif;
+  font-size: 0.8em;
 }
+
 /* OO.ui.GridLayout */
+
+.oo-ui-gridLayout {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+}
+
 /* OO.ui.PanelLayout */
 
-.oo-ui-gridLayout,
 .oo-ui-panelLayout {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 0;
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
 }
 
 .oo-ui-panelLayout-scrollable {
-       overflow-y: auto;
+  overflow-y: auto;
 }
 
 .oo-ui-panelLayout-padded {
-       padding: 2em;
+  padding: 2em;
 }
 
 /* OO.ui.FieldsetLayout */
 
 .oo-ui-fieldsetLayout {
-       position: relative;
-       border: none;
-       margin: 0;
-       padding: 0;
+  position: relative;
+  padding: 0;
+  margin: 0;
+  border: none;
 }
 
 .oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout {
-       margin-top: 2em;
+  margin-top: 2em;
 }
 
 .oo-ui-fieldsetLayout-labeled {
-       margin-top: -0.75em;
+  margin-top: -0.75em;
 }
 
 .oo-ui-fieldsetLayout > legend.oo-ui-labeledElement-label {
-       font-size: 1.5em;
-       margin-bottom: 0.5em;
-       padding-left: 0;
+  padding: 0.25em 0;
+  margin-bottom: 0.5em;
+  font-size: 1.5em;
 }
 
 .oo-ui-fieldsetLayout.oo-ui-iconedElement > legend.oo-ui-labeledElement-label {
-       padding-left: 1.75em;
+  padding-left: 1.75em;
 }
 
 .oo-ui-fieldsetLayout.oo-ui-iconedElement > .oo-ui-iconedElement-icon {
-       display: block;
-       position: absolute;
-       left: 0;
-       top: 0.5em;
-       width: 2em;
-       height: 2em;
-       background-position: center center;
-       background-repeat: no-repeat;
+  position: absolute;
+  top: 0;
+  left: 0;
+  display: block;
+  width: 2em;
+  height: 2em;
+  background-position: center center;
+  background-repeat: no-repeat;
 }
 
 /* OO.ui.FieldLayout */
 
 .oo-ui-fieldLayout {
-       margin-bottom: 1em;
+  margin-bottom: 1em;
 }
 
 .oo-ui-fieldLayout:last-child {
-       margin-bottom: 0;
+  margin-bottom: 0;
 }
 
 .oo-ui-fieldLayout:before,
 .oo-ui-fieldLayout:after {
-    content: " ";
-    display: table;
+  display: table;
+  content: " ";
 }
 
 .oo-ui-fieldLayout:after {
-    clear: both;
+  clear: both;
 }
 
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-labeledElement-label,
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labeledElement-label {
-       display: block;
-       float: left;
-       width: 35%;
-       padding-top: 0.5em;
-       margin-right: 5%;
+  display: block;
+  float: left;
+  width: 35%;
+  padding-top: 0.5em;
+  margin-right: 5%;
 }
 
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-field,
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-field {
-       display: block;
-       float: left;
-       width: 60%;
+  display: block;
+  float: left;
+  width: 60%;
 }
 
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-labeledElement-label {
-       text-align: right;
+  text-align: right;
 }
 
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-labeledElement-label {
-       display: inline-block;
-       vertical-align: middle;
-       padding: 0.75em 0.5em 0.5em 0.5em;
+  display: inline-block;
+  padding: 0.75em 0.5em 0.5em 0.5em;
+  vertical-align: middle;
 }
 
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-field {
-       display: inline-block;
-       vertical-align: middle;
-       padding: 0.5em 0;
+  display: inline-block;
+  padding: 0.5em 0;
+  vertical-align: middle;
 }
 
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-top > .oo-ui-labeledElement-label {
-       padding: 0.5em 0;
+  padding: 0.5em 0;
 }
 
 /* OO.ui.BookletLayout */
 
+.oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous .oo-ui-panelLayout-scrollable {
+  overflow-y: hidden;
+}
+
 .oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout {
-       padding: 1.5em;
-       width: 100%;
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
+  width: 100%;
+  padding: 1.5em;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
 
 .oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-scrollable {
-       overflow-y: auto;
+  overflow-y: auto;
 }
 
 .oo-ui-bookletLayout-stackLayout .oo-ui-panelLayout-padded {
-       padding: 2em;
+  padding: 2em;
 }
 
 .oo-ui-bookletLayout-outlinePanel {
-       border-right: solid 1px #ddd;
+  border-right: solid 1px #ddd;
 }
 
 .oo-ui-bookletLayout-outlinePanel-editable .oo-ui-outlineWidget {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 3em;
-       overflow-y: auto;
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 3em;
+  left: 0;
+  overflow-y: auto;
 }
 
 .oo-ui-bookletLayout-outlinePanel .oo-ui-outlineControlsWidget {
-       position: absolute;
-       bottom: 0;
-       left: 0;
-       right: 0;
-       box-shadow: 0 0 0.25em rgba(0,0,0,0.25);
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.25);
 }
 
 .oo-ui-stackLayout > .oo-ui-panelLayout {
-       display: none;
+  display: none;
 }
 
 .oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-       display: block;
-       position: relative;
-       margin-bottom: 1em;
-       box-shadow: 0 0 0.5em rgba(0,0,0,0.25);
+  position: relative;
+  display: block;
 }
 
-.oo-ui-stackLayout-continuous > .oo-ui-panelLayout:last-child {
-       margin-bottom: 0;
-}
 /* OO.ui.PopupTool */
 
 .oo-ui-popupTool .oo-ui-popupWidget {
-       margin-left: 1.25em;
-       font-size: 0.8em;
+  margin-left: 1.25em;
+  font-size: 0.8em;
 }
 
 .oo-ui-popupTool .oo-ui-popupWidget-popup,
 .oo-ui-popupTool .oo-ui-popupWidget-tail {
-       z-index: 4;
+  z-index: 4;
 }
+
+/* OO.ui.Toolbar */
+
 .oo-ui-toolbar {
-       clear: both;
+  clear: both;
 }
 
 .oo-ui-toolbar-bar {
-       border-bottom: solid 1px #ccc;
-       background-color: white;
-       /* @embed */
-       background-image: url(images/fade-up.png);
-       background-position: left bottom;
-       background-repeat: repeat-x;
-       padding-bottom: 1px;
-       line-height: 1em;
+  line-height: 1em;
+  background: #f8fbfd;
+  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #ffffff), color-stop(100%, #f1f7fb));
+  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
+  background-image: -moz-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
+  background-image: -ms-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
+  background-image: -o-linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
+  background-image: linear-gradient(top, #ffffff 0%, #f1f7fb 100%);
+  border-bottom: solid 1px #ccc;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#f1f7fb');
 }
 
 .oo-ui-toolbar-bar .oo-ui-toolbar-bar {
-       border: none;
-       background: none;
+  background: none;
+  border: none;
 }
 
 .oo-ui-toolbar-bottom .oo-ui-toolbar-bar {
-       position: absolute;
+  position: absolute;
 }
 
 .oo-ui-toolbar-actions {
-       float: right;
+  float: right;
 }
 
 .oo-ui-toolbar-tools {
-       float: left;
+  float: left;
 }
 
 .oo-ui-toolbar-tools,
 .oo-ui-toolbar-actions,
 .oo-ui-toolbar-shadow {
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       -ms-user-select: none;
-       -o-user-select: none;
-       user-select: none;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+       -o-user-select: none;
+          user-select: none;
 }
 
 .oo-ui-toolbar-actions .oo-ui-popupWidget {
-       -webkit-touch-callout: default;
-       -webkit-user-select: all;
-       -moz-user-select: all;
-       -ms-user-select: all;
-       user-select: all;
+  -webkit-user-select: all;
+     -moz-user-select: all;
+      -ms-user-select: all;
+          user-select: all;
+  -webkit-touch-callout: default;
 }
 
 .oo-ui-toolbar-shadow {
-       /* @embed */
-       background-image: url(images/toolbar-shadow.png);
-       background-position: left top;
-       background-repeat: repeat-x;
-       position: absolute;
-       bottom: -9px;
-       height: 9px;
-       width: 100%;
-       pointer-events: none;
-       -webkit-transition: opacity 500ms ease-in-out;
-       -moz-transition: opacity 500ms ease-in-out;
-       -o-transition: opacity 500ms ease-in-out;
-       transition: opacity 500ms ease-in-out;
-       opacity: 0.125;
+  position: absolute;
+  bottom: -9px;
+  width: 100%;
+  height: 9px;
+  pointer-events: none;
+  background-image: /* @embed */ url(images/toolbar-shadow.png);
+  background-position: left top;
+  background-repeat: repeat-x;
+  opacity: 0.125;
+  -webkit-transition: opacity 500ms ease-in-out;
+     -moz-transition: opacity 500ms ease-in-out;
+       -o-transition: opacity 500ms ease-in-out;
+          transition: opacity 500ms ease-in-out;
 }
+
 /* OO.ui.ToolGroup */
 
 .oo-ui-toolGroup {
-       display: inline-block;
-       margin: 0.3em;
-       vertical-align: middle;
-       border-radius: 0.25em;
-       border: solid 1px transparent;
-       -webkit-transition: border-color 300ms;
-       -moz-transition: border-color 300ms;
-       -o-transition: border-color 300ms;
-       transition: border-color 300ms;
+  display: inline-block;
+  margin: 0.3em;
+  vertical-align: middle;
+  border: solid 1px transparent;
+  border-radius: 0.25em;
+  -webkit-transition: border-color 300ms ease-in-out;
+     -moz-transition: border-color 300ms ease-in-out;
+      -ms-transition: border-color 300ms ease-in-out;
+       -o-transition: border-color 300ms ease-in-out;
+          transition: border-color 300ms ease-in-out;
 }
 
 .oo-ui-toolGroup:hover {
-       border-color: rgba(0,0,0,0.1);
+  border-color: rgba(0, 0, 0, 0.1);
 }
 
 .oo-ui-toolGroup-empty {
-       display: none;
+  display: none;
 }
 
 .oo-ui-toolGroup .oo-ui-tool-link .oo-ui-tool-title {
-       color: #000;
+  color: #000;
 }
 
 .oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-       background-position: center center;
-       background-repeat: no-repeat;
+  background-position: center center;
+  background-repeat: no-repeat;
 }
 
 /* OO.ui.BarToolGroup */
 
 .oo-ui-barToolGroup > .oo-ui-iconedElement-icon,
-.oo-ui-barToolGroup > .oo-ui-iconedElement-label {
-       display: none;
+.oo-ui-barToolGroup > .oo-ui-labeledElement-label {
+  display: none;
 }
 
 .oo-ui-barToolGroup .oo-ui-tool {
-       display: inline-block;
-       position: relative;
-       vertical-align: top;
-       margin: -1px 0 -1px -1px;
-       border: solid 1px transparent;
+  position: relative;
+  display: inline-block;
+  margin: -1px 0 -1px -1px;
+  vertical-align: top;
+  border: solid 1px transparent;
 }
 
-.oo-ui-barToolGroup .oo-ui-tool-link {
-       display: block;
-       height: 1.5em;
-       padding: 0.25em;
-       cursor: pointer;
+.oo-ui-barToolGroup .oo-ui-tool:first-child {
+  border-bottom-left-radius: 0.25em;
+  border-top-left-radius: 0.25em;
 }
 
-.oo-ui-barToolGroup
-       .oo-ui-tool-active:not(.oo-ui-widget-disabled) +
-       .oo-ui-tool-active:not(.oo-ui-widget-disabled)
-{
-       border-left-color: rgba(0,0,0,0.1);
+.oo-ui-barToolGroup .oo-ui-tool:last-child {
+  margin-right: -1px;
+  border-top-right-radius: 0.25em;
+  border-bottom-right-radius: 0.25em;
 }
 
-.oo-ui-barToolGroup .oo-ui-tool:first-child {
-       border-top-left-radius: 0.25em;
-       border-bottom-left-radius: 0.25em;
+.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
+  border-color: rgba(0, 0, 0, 0.2);
 }
 
-.oo-ui-barToolGroup .oo-ui-tool:last-child {
-       margin-right: -1px;
-       border-top-right-radius: 0.25em;
-       border-bottom-right-radius: 0.25em;
+.oo-ui-barToolGroup .oo-ui-tool-active.oo-ui-widget-enabled {
+  border-color: rgba(0, 0, 0, 0.2);
 }
 
-.oo-ui-barToolGroup .oo-ui-tool:hover:not(.oo-ui-widget-disabled) {
-       border-color: rgba(0,0,0,0.2);
+.oo-ui-barToolGroup .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
+  border-left-color: rgba(0, 0, 0, 0.1);
 }
 
-.oo-ui-barToolGroup .oo-ui-tool-active:not(.oo-ui-widget-disabled) {
-       border-color: rgba(0,0,0,0.2);
+.oo-ui-barToolGroup .oo-ui-tool-link {
+  display: block;
+  height: 1.5em;
+  padding: 0.25em;
+  cursor: pointer;
 }
 
 .oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-       display: block;
-       height: 1.5em;
-       width: 1.5em;
-       opacity: 0.8;
+  display: block;
+  width: 1.5em;
+  height: 1.5em;
+  opacity: 0.8;
 }
 
 .oo-ui-barToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-       display: none;
+  display: none;
 }
 
 .oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-       cursor: default;
+  cursor: default;
 }
 
 .oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 
-.oo-ui-barToolGroup .oo-ui-tool:not(.oo-ui-widget-disabled) .oo-ui-tool-link .oo-ui-iconedElement-icon {
-       opacity: 0.8;
+.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 0.8;
 }
 
-.oo-ui-barToolGroup .oo-ui-tool:hover:not(.oo-ui-widget-disabled) .oo-ui-tool-link .oo-ui-iconedElement-icon {
-       opacity: 1;
+.oo-ui-barToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 1;
 }
 
-.oo-ui-barToolGroup .oo-ui-tool-title {
-       display: none;
+.oo-ui-barToolGroup .oo-ui-tool-title,
+.oo-ui-barToolGroup .oo-ui-tool-accel {
+  display: none;
 }
 
 /* OO.ui.PopupToolGroup */
 
 .oo-ui-popupToolGroup {
-       position: relative;
-       height: 2em;
-       min-width: 2.5em;
+  position: relative;
+  height: 2em;
+  min-width: 2.5em;
 }
 
 .oo-ui-popupToolGroup.oo-ui-indicatedElement.oo-ui-iconedElement {
-       min-width: 3.5em;
+  min-width: 3.5em;
 }
 
 .oo-ui-popupToolGroup-handle {
-       display: block;
-       cursor: pointer;
+  display: block;
+  cursor: pointer;
 }
 
 .oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator,
 .oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
-       position: absolute;
-       top: 0;
-       width: 2em;
-       height: 2em;
-       background-position: center center;
-       background-repeat: no-repeat;
-       opacity: 0.8;
+  position: absolute;
+  top: 0;
+  width: 2em;
+  height: 2em;
+  background-position: center center;
+  background-repeat: no-repeat;
+  opacity: 0.8;
 }
 
 .oo-ui-popupToolGroup-handle .oo-ui-indicatedElement-indicator {
-       right: 0;
+  right: 0;
 }
 
 .oo-ui-popupToolGroup-handle .oo-ui-iconedElement-icon {
-       left: 0.25em;
+  left: 0.25em;
 }
 
 .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
-       line-height: 2.6em;
-       font-size: 0.8em;
-       margin: 0 1em;
+  margin: 0 1em;
+  font-size: 0.8em;
+  line-height: 2.6em;
 }
 
 .oo-ui-popupToolGroup.oo-ui-iconedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
-       margin-left: 3.25em;
+  margin-left: 3.25em;
 }
 
 .oo-ui-popupToolGroup.oo-ui-indicatedElement .oo-ui-popupToolGroup-handle .oo-ui-labeledElement-label {
-       margin-right: 2.25em;
+  margin-right: 2.25em;
 }
 
 .oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-       display: none;
-       position: absolute;
-       top: 2em;
-       left: -1px;
-       z-index: 4;
-       border: solid 1px #ccc;
-       background-color: white;
-       box-shadow: 0 0.25em 1em rgba(0,0,0,0.25);
+  position: absolute;
+  top: 2em;
+  left: -1px;
+  z-index: 4;
+  display: none;
+  background-color: white;
+  border: solid 1px #ccc;
+  box-shadow: 0 0.25em 1em rgba(0, 0, 0, 0.25);
 }
 
 .oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconedElement-icon {
-       background-repeat: no-repeat;
-       background-position: center center;
+  background-position: center center;
+  background-repeat: no-repeat;
 }
 
-.oo-ui-popupToolGroup-active:not(.oo-ui-widget-disabled) > .oo-ui-toolGroup-tools {
-       display: block;
+.oo-ui-popupToolGroup-active.oo-ui-widget-enabled {
+  border-bottom-right-radius: 0;
+  border-bottom-left-radius: 0;
 }
 
-.oo-ui-popupToolGroup-active:not(.oo-ui-widget-disabled) {
-       border-bottom-left-radius: 0;
-       border-bottom-right-radius: 0;
+.oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
+  display: block;
 }
 
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-       display: inline-block;
-       vertical-align: middle;
-       height: 2em;
-       width: 2em;
-       margin-right: 0.5em;
+  display: inline-block;
+  width: 2em;
+  height: 2em;
+  margin-right: 0.5em;
+  vertical-align: middle;
 }
 
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-       display: inline-block;
-       vertical-align: middle;
-       line-height: 2em;
-       font-size: 0.8em;
+  display: inline-block;
+  font-size: 0.8em;
+  line-height: 2em;
+  vertical-align: middle;
 }
 
 .oo-ui-popupToolGroup .oo-ui-tool-accel {
-       display: none;
+  display: none;
 }
 
 /* OO.ui.ListToolGroup */
 
+.oo-ui-listToolGroup.oo-ui-popupToolGroup-active {
+  border-color: rgba(0, 0, 0, 0.2);
+}
+
 .oo-ui-listToolGroup .oo-ui-toolGroup-tools {
-       padding: 0.25em;
+  padding: 0.25em;
 }
 
 .oo-ui-listToolGroup .oo-ui-tool {
-       display: inline-block;
-       width: 100%;
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
-       border: solid 1px transparent;
-       margin: -1px 0;
+  display: inline-block;
+  width: 100%;
+  margin: -1px 0;
+  border: solid 1px transparent;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
 
 .oo-ui-listToolGroup .oo-ui-tool-link {
-       display: block;
-       cursor: pointer;
-       white-space: nowrap;
-       padding-right: 0.5em;
+  display: block;
+  padding-right: 0.5em;
+  white-space: nowrap;
+  cursor: pointer;
 }
 
-.oo-ui-listToolGroup.oo-ui-popupToolGroup-active {
-       border-color: rgba(0,0,0,0.2);
+.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled {
+  border-color: rgba(0, 0, 0, 0.1);
 }
 
-.oo-ui-listToolGroup
-       .oo-ui-tool-active:not(.oo-ui-widget-disabled) +
-       .oo-ui-tool-active:not(.oo-ui-widget-disabled)
-{
-       border-top-color: rgba(0,0,0,0.1);
+.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
+  border-top-color: rgba(0, 0, 0, 0.1);
 }
 
-.oo-ui-listToolGroup .oo-ui-tool:hover:not(.oo-ui-widget-disabled) {
-       border-color: rgba(0,0,0,0.2);
+.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled:hover {
+  border-color: rgba(0, 0, 0, 0.2);
 }
 
-.oo-ui-listToolGroup .oo-ui-tool-active:not(.oo-ui-widget-disabled) {
-       border-color: rgba(0,0,0,0.2);
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
+  border-color: rgba(0, 0, 0, 0.2);
 }
 
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
-       cursor: default;
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 0.8;
 }
 
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
-       color: #ccc;
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 1;
 }
 
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
-       opacity: 0.2;
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link {
+  cursor: default;
 }
 
-.oo-ui-listToolGroup .oo-ui-tool:not(.oo-ui-widget-disabled) .oo-ui-tool-link .oo-ui-iconedElement-icon {
-       opacity: 0.8;
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
+  color: #ccc;
 }
 
-.oo-ui-listToolGroup .oo-ui-tool:hover:not(.oo-ui-widget-disabled) .oo-ui-tool-link .oo-ui-iconedElement-icon {
-       opacity: 1;
+.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconedElement-icon {
+  opacity: 0.2;
 }
 
 /* OO.ui.MenuToolGroup */
 
 .oo-ui-menuToolGroup {
-       border-color: rgba(0,0,0,0.1);
+  border-color: rgba(0, 0, 0, 0.1);
 }
 
 .oo-ui-menuToolGroup:hover {
-       border-color: rgba(0,0,0,0.2);
+  border-color: rgba(0, 0, 0, 0.2);
 }
 
 .oo-ui-menuToolGroup.oo-ui-popupToolGroup-active {
-       border-color: rgba(0,0,0,0.25);
+  border-color: rgba(0, 0, 0, 0.25);
 }
 
 .oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-       min-width: 8em;
+  min-width: 8em;
 }
 
 .oo-ui-menuToolGroup .oo-ui-tool {
-       display: block;
+  display: block;
 }
 
 .oo-ui-menuToolGroup .oo-ui-tool-link {
-       display: block;
-       cursor: pointer;
-       white-space: nowrap;
-       padding: 0.25em 1em 0.25em 0.25em;
+  display: block;
+  padding: 0.25em 1em 0.25em 0.25em;
+  white-space: nowrap;
+  cursor: pointer;
 }
 
 .oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconedElement-icon {
-       background-image: none;
+  background-image: none;
 }
 
 .oo-ui-menuToolGroup .oo-ui-tool-active .oo-ui-tool-link .oo-ui-iconedElement-icon {
-       /* @embed */
-       background-image: url(images/icons/check.png);
+  background-image: /* @embed */ url(images/icons/check.png);
 }
 
 .oo-ui-menuToolGroup .oo-ui-tool:hover {
-       background-color: #e1f3ff;
+  background-color: #e1f3ff;
 }
 
 /* Common */
 
-.oo-ui-barToolGroup .oo-ui-tool-active:not(.oo-ui-widget-disabled),
-.oo-ui-listToolGroup .oo-ui-tool-active:not(.oo-ui-widget-disabled),
-.oo-ui-popupToolGroup-active:not(.oo-ui-widget-disabled) {
-       /* @embed */
-       background-image: url(images/fade-down.png);
-       background-position: left top;
-       background-repeat: repeat-x;
-       box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
+.oo-ui-barToolGroup .oo-ui-tool-active.oo-ui-widget-enabled,
+.oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled,
+.oo-ui-popupToolGroup-active.oo-ui-widget-enabled {
+  background: #f8fbfd;
+  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #f1f7fb), color-stop(100%, #ffffff));
+  background-image: -webkit-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: -moz-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: -ms-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: -o-linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  background-image: linear-gradient(top, #f1f7fb 0%, #ffffff 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#f1f7fb', endColorstr='#ffffff');
+  box-shadow: inset 0 0.07em 0.07em 0 rgba(0, 0, 0, 0.07);
 }
+
 /* OO.ui.ButtonWidget */
 
 .oo-ui-buttonWidget {
-       display: inline-block;
-       vertical-align: middle;
+  display: inline-block;
+  vertical-align: middle;
 }
 
 /* OO.ui.PopupButtonWidget */
 
 .oo-ui-popupButtonWidget {
-       position: relative;
+  position: relative;
 }
 
 .oo-ui-popupButtonWidget .oo-ui-popupWidget {
-       position: absolute;
-       left: 1em;
-       cursor: auto;
+  position: absolute;
+  left: 1em;
+  cursor: auto;
 }
 
 /* OO.ui.ButtonGroupWidget */
 
 .oo-ui-buttonGroupWidget {
-       display: inline-block;
-       white-space: nowrap;
-       border-radius: 0.3em;
+  display: inline-block;
+  white-space: nowrap;
+  border-radius: 0.3em;
 }
 
 .oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed .oo-ui-buttonedElement-button {
-       border-radius: 0;
-       margin-bottom: -1px;
-       margin-left: -1px;
+  margin-bottom: -1px;
+  margin-left: -1px;
+  border-radius: 0;
 }
 
 .oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:first-child .oo-ui-buttonedElement-button {
-       border-bottom-left-radius: 0.3em;
-       border-top-left-radius: 0.3em;
-       margin-left: 0;
+  margin-left: 0;
+  border-bottom-left-radius: 0.3em;
+  border-top-left-radius: 0.3em;
 }
 
 .oo-ui-buttonGroupWidget .oo-ui-buttonedElement-framed:last-child .oo-ui-buttonedElement-button {
-       border-bottom-right-radius: 0.3em;
-       border-top-right-radius: 0.3em;
+  border-top-right-radius: 0.3em;
+  border-bottom-right-radius: 0.3em;
 }
 
 /* OO.ui.SelectWidget */
 
 .oo-ui-selectWidget {
-       list-style: none;
-       margin: 0;
-       padding: 0;
+  padding: 0;
+  margin: 0;
+  list-style: none;
 }
 
 /* OO.ui.OptionWidget */
 
 .oo-ui-optionWidget {
-       position: relative;
-       display: block;
-       border: none;
-       list-style: none;
-       margin: 0;
-       padding: 0.5em 2em 0.5em 3em;
-       cursor: pointer;
-}
-
-.oo-ui-optionWidget .oo-ui-labeledElement-label {
-       line-height: 1.5em;
-       white-space: nowrap;
-       text-overflow: ellipsis;
-       overflow: hidden;
+  position: relative;
+  display: block;
+  padding: 0.5em 2em 0.5em 3em;
+  margin: 0;
+  list-style: none;
+  cursor: pointer;
+  border: none;
 }
 
 .oo-ui-optionWidget-highlighted {
-       background-color: #e1f3ff;
+  background-color: #e1f3ff;
 }
 
 .oo-ui-optionWidget-selected {
-       background-color: #a7dcff;
+  background-color: #a7dcff;
 }
 
 .oo-ui-optionWidget.oo-ui-widget-disabled {
-       cursor: default;
+  cursor: default;
+}
+
+.oo-ui-optionWidget .oo-ui-labeledElement-label {
+  overflow: hidden;
+  line-height: 1.5em;
+  text-overflow: ellipsis;
+  white-space: nowrap;
 }
 
 .oo-ui-optionWidget .oo-ui-iconedElement-icon,
 .oo-ui-optionWidget .oo-ui-indicatedElement-indicator {
-       position: absolute;
-       top: 50%;
-       width: 2em;
-       height: 2em;
-       margin-top: -1em;
-       background-repeat: no-repeat;
-       background-position: center center;
+  position: absolute;
+  top: 50%;
+  width: 2em;
+  height: 2em;
+  margin-top: -1em;
+  background-position: center center;
+  background-repeat: no-repeat;
 }
 
 .oo-ui-optionWidget .oo-ui-iconedElement-icon {
-       left: 0.5em;
+  left: 0.5em;
 }
 
 .oo-ui-optionWidget .oo-ui-indicatedElement-indicator {
-       right: 0.5em;
+  right: 0.5em;
 }
 
 /* OO.ui.OutlineItemWidget */
 
 .oo-ui-outlineItemWidget {
-       position: relative;
-       padding: 0.75em 0.75em 0.75em 3.5em;
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       -ms-user-select: none;
-       user-select: none;
-       cursor: pointer;
-       font-size: 1.1em;
+  position: relative;
+  padding: 0.75em;
+  font-size: 1.1em;
+  cursor: pointer;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
 }
 
-.oo-ui-outlineItemWidget-level-1 {
-       padding-left: 5em;
+.oo-ui-outlineItemWidget.oo-ui-optionWidget-selected {
+  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
+  background-color: #a7dcff;
 }
 
-.oo-ui-outlineItemWidget-level-2 {
-       padding-left: 6.5em;
+.oo-ui-outlineItemWidget.oo-ui-flaggableElement-important {
+  font-weight: bold;
 }
 
-.oo-ui-outlineItemWidget.oo-ui-optionWidget-selected {
-       background-color: #a7dcff;
-       text-shadow: 0 1px 1px rgba(255,255,255,0.5);
+.oo-ui-outlineItemWidget.oo-ui-flaggableElement-placeholder {
+  font-style: italic;
 }
 
-.oo-ui-outlineItemWidget-level-0 .oo-ui-iconedElement-icon {
-       left: 1em;
+.oo-ui-outlineItemWidget.oo-ui-flaggableElement-empty .oo-ui-iconedElement-icon,
+.oo-ui-outlineItemWidget.oo-ui-flaggableElement-empty .oo-ui-indicatedElement-indicator {
+  opacity: 0.5;
 }
 
-.oo-ui-outlineItemWidget-level-1 .oo-ui-iconedElement-icon {
-       left: 2.5em;
+.oo-ui-outlineItemWidget.oo-ui-flaggableElement-empty .oo-ui-labeledElement-label {
+  color: #777;
 }
 
-.oo-ui-outlineItemWidget-level-2 .oo-ui-iconedElement-icon {
-       left: 4em;
+.oo-ui-outlineItemWidget.oo-ui-indicatedElement .oo-ui-labeledElement-label {
+  padding-right: 1.5em;
 }
 
-.oo-ui-outlineItemWidget.oo-ui-flaggableElement-important {
-       font-weight: bold;
+.oo-ui-outlineItemWidget-level-0 {
+  padding-left: 3.5em;
 }
 
-.oo-ui-outlineItemWidget.oo-ui-flaggableElement-placeholder {
-       font-style: italic;
+.oo-ui-outlineItemWidget-level-0 .oo-ui-iconedElement-icon {
+  left: 1em;
 }
 
-.oo-ui-outlineItemWidget.oo-ui-flaggableElement-empty .oo-ui-iconedElement-icon,
-.oo-ui-outlineItemWidget.oo-ui-flaggableElement-empty .oo-ui-indicatedElement-indicator {
-       opacity: 0.5;
+.oo-ui-outlineItemWidget-level-1 {
+  padding-left: 5em;
 }
-.oo-ui-outlineItemWidget.oo-ui-flaggableElement-empty .oo-ui-labeledElement-label {
-       color: #698AA0;
+
+.oo-ui-outlineItemWidget-level-1 .oo-ui-iconedElement-icon {
+  left: 2.5em;
+}
+
+.oo-ui-outlineItemWidget-level-2 {
+  padding-left: 6.5em;
+}
+
+.oo-ui-outlineItemWidget-level-2 .oo-ui-iconedElement-icon {
+  left: 4em;
 }
 
 /* OO.ui.OutlineControlsWidget */
 
 .oo-ui-outlineControlsWidget {
-       height: 3em;
-       background-color: #fff;
+  height: 3em;
+  background-color: #fff;
 }
 
 .oo-ui-outlineControlsWidget-adders,
 .oo-ui-outlineControlsWidget-movers {
-       float: left;
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
-       height: 3em;
-       padding: 0.5em;
+  float: left;
+  height: 2em;
+  padding: 0;
+  margin: 0.5em;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
 
-.oo-ui-outlineControlsWidget-adders {
-       float: left;
+.oo-ui-outlineControlsWidget > .oo-ui-iconedElement-icon {
+  float: left;
+  width: 1.5em;
+  height: 2em;
+  margin: 0.5em 0 0.5em 0.5em;
+  background-position: right center;
+  background-repeat: no-repeat;
+  opacity: 0.2;
 }
-.oo-ui-outlineControlsWidget-movers {
-       float: right;
+
+.oo-ui-outlineControlsWidget-adders {
+  float: left;
+  margin-left: 0;
 }
 
 .oo-ui-outlineControlsWidget-adders .oo-ui-buttonWidget {
-       float: left;
+  float: left;
 }
 
-.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-       float: right;
+.oo-ui-outlineControlsWidget-movers {
+  float: right;
 }
 
-.oo-ui-outlineControlsWidget-adders .oo-ui-buttonWidget:first-child,
-.oo-ui-outlineControlsWidget-adders .oo-ui-buttonWidget:first-child:hover {
-       opacity: 0.25;
-       cursor: default;
+.oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
+  float: right;
 }
 
 /* OO.ui.LabelWidget */
 
 .oo-ui-labelWidget {
-       padding: 0.5em 0;
+  padding: 0.5em 0;
 }
 
 /* OO.ui.TextInputWidget */
 
 .oo-ui-textInputWidget {
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
-       width: 20em;
-       position: relative;
+  position: relative;
+  width: 20em;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
 
 .oo-ui-textInputWidget input,
-.oo-ui-textInputWidget input:focus[readonly],
-.oo-ui-widget-disabled.oo-ui-textInputWidget input:focus,
-.oo-ui-textInputWidget textarea,
-.oo-ui-textInputWidget textarea:focus[readonly],
-.oo-ui-widget-disabled.oo-ui-textInputWidget textarea:focus {
-       display: inline-block;
-       font-size: 1em;
-       font-family: sans-serif;
-       background-color: #fff;
-       border: solid 1px #ccc;
-       box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
-       padding: 0.5em;
-       border-radius: 0.25em;
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
-       width: 100%;
-       resize: none;
-
-       /* Animation */
-       -webkit-transition: border-color 200ms, box-shadow 200ms;
-       -moz-transition: border-color 200ms, box-shadow 200ms;
-       -o-transition: border-color 200ms, box-shadow 200ms;
-       transition: border-color 200ms, box-shadow 200ms;
-}
-
-.oo-ui-textInputWidget-pending input,
-.oo-ui-textInputWidget-pending textarea {
-       background-color: transparent;
-}
-
-.oo-ui-textInputWidget input:focus,
-.oo-ui-textInputWidget textarea:focus {
-       outline: none;
-       border-color: #a7dcff;
-       box-shadow: 0 0 0.3em #a7dcff, 0 0 0 white;
+.oo-ui-textInputWidget textarea {
+  display: inline-block;
+  width: 100%;
+  padding: 0.5em;
+  font-family: sans-serif;
+  font-size: 1em;
+  background-color: #fff;
+  border: solid 1px #ccc;
+  border-radius: 0.25em;
+  box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  -webkit-transition: border-color 200ms, box-shadow 200ms;
+     -moz-transition: border-color 200ms, box-shadow 200ms;
+      -ms-transition: border-color 200ms, box-shadow 200ms;
+       -o-transition: border-color 200ms, box-shadow 200ms;
+          transition: border-color 200ms, box-shadow 200ms;
+  resize: none;
+}
+
+.oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,
+.oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus {
+  border-color: #a7dcff;
+  outline: none;
+  box-shadow: 0 0 0.3em #a7dcff, 0 0 0 white;
 }
 
 .oo-ui-textInputWidget input[readonly],
 .oo-ui-textInputWidget textarea[readonly] {
-       color: #777;
-       text-shadow: 0 1px 1px #fff;
+  color: #777;
+  text-shadow: 0 1px 1px #fff;
 }
 
-.oo-ui-widget-disabled.oo-ui-textInputWidget input,
-.oo-ui-widget-disabled.oo-ui-textInputWidget input:focus,
-.oo-ui-widget-disabled.oo-ui-textInputWidget textarea,
-.oo-ui-widget-disabled.oo-ui-textInputWidget textarea:focus {
-       color: #ccc;
-       border-color: #ddd;
-       text-shadow: 0 1px 1px #fff;
+.oo-ui-textInputWidget-pending input,
+.oo-ui-textInputWidget-pending textarea {
+  background-color: transparent;
 }
 
 .oo-ui-textInputWidget-decorated input,
 .oo-ui-textInputWidget-decorated textarea {
-       padding-left: 2em;
+  padding-left: 2em;
 }
 
 .oo-ui-textInputWidget-icon {
-       position: absolute;
-       top: 0;
-       left: 0;
-       width: 2em;
-       height: 100%;
-       background-position: right center;
-       background-repeat: no-repeat;
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 2em;
+  height: 100%;
+  background-position: right center;
+  background-repeat: no-repeat;
+}
+
+.oo-ui-textInputWidget.oo-ui-widget-disabled input,
+.oo-ui-textInputWidget.oo-ui-widget-disabled input:focus,
+.oo-ui-textInputWidget.oo-ui-widget-disabled textarea,
+.oo-ui-textInputWidget.oo-ui-widget-disabled textarea:focus {
+  color: #ccc;
+  text-shadow: 0 1px 1px #fff;
+  background-color: #f3f3f3;
+  border-color: #ddd;
 }
 
 /* OO.ui.MenuWidget */
 
 .oo-ui-menuWidget {
-       position: absolute;
-       background: #fff;
-       margin-top: -1px;
-       border: solid 1px #ccc;
-       border-radius: 0 0 0.25em 0.25em;
-       box-shadow: 0 0.15em 1em 0 rgba(0, 0, 0, 0.2);
+  position: absolute;
+  margin-top: -1px;
+  background: #fff;
+  border: solid 1px #ccc;
+  border-radius: 0 0 0.25em 0.25em;
+  box-shadow: 0 0.15em 1em 0 rgba(0, 0, 0, 0.2);
 }
 
 .oo-ui-menuWidget input {
-       position: absolute;
-       width: 0;
-       height: 0;
-       overflow: hidden;
-       opacity: 0;
+  position: absolute;
+  width: 0;
+  height: 0;
+  overflow: hidden;
+  opacity: 0;
+}
+
+/* OO.ui.InlineMenuWidget */
+
+.oo-ui-inlineMenuWidget {
+  position: relative;
+  display: inline-block;
+  min-width: 20em;
+  margin: 0.25em 0;
+}
+
+.oo-ui-inlineMenuWidget-handle {
+  display: inline-block;
+  width: 100%;
+  height: 2.5em;
+  cursor: pointer;
+  border: solid 1px rgba(0, 0, 0, 0.1);
+  border-radius: 0.25em;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
+}
+
+.oo-ui-inlineMenuWidget-handle:hover {
+  border-color: rgba(0, 0, 0, 0.2);
+}
+
+.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator,
+.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
+  position: absolute;
+  top: 0;
+  width: 2.5em;
+  height: 2.5em;
+  background-position: center center;
+  background-repeat: no-repeat;
+  opacity: 0.8;
+}
+
+.oo-ui-inlineMenuWidget-handle .oo-ui-indicatedElement-indicator {
+  right: 0;
+}
+
+.oo-ui-inlineMenuWidget-handle .oo-ui-iconedElement-icon {
+  left: 0.25em;
+}
+
+.oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
+  margin: 0 0.5em;
+  line-height: 2.5em;
+}
+
+.oo-ui-inlineMenuWidget.oo-ui-iconedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
+  margin-left: 3em;
+}
+
+.oo-ui-inlineMenuWidget.oo-ui-indicatedElement .oo-ui-inlineMenuWidget-handle .oo-ui-labeledElement-label {
+  margin-right: 2em;
+}
+
+.oo-ui-inlineMenuWidget .oo-ui-menuWidget {
+  width: 100%;
 }
 
 /* OO.ui.MenuItemWidget */
 
 .oo-ui-menuItemWidget {
-       position: relative;
+  position: relative;
 }
 
 .oo-ui-menuItemWidget .oo-ui-iconedElement-icon {
-       display: none;
+  display: none;
 }
 
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconedElement-icon {
-       display: block;
+.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
+  background-color: transparent;
 }
 
-.oo-ui-menuItemWidget.oo-ui-optionWidget-selected {
-       background-color: transparent;
+.oo-ui-menuItemWidget.oo-ui-optionWidget-selected .oo-ui-iconedElement-icon {
+  display: block;
 }
 
 .oo-ui-menuItemWidget.oo-ui-optionWidget-highlighted {
-       background-color: #e1f3ff;
+  background-color: #e1f3ff;
 }
 
 /* OO.ui.MenuSectionItemWidget */
 
 .oo-ui-menuSectionItemWidget {
-       padding: 0.33em 0.75em;
-       color: #888;
-       cursor: default;
+  padding: 0.33em 0.75em;
+  color: #888;
+  cursor: default;
 }
 
 /* OO.ui.ButtonSelectWidget */
 
 .oo-ui-buttonSelectWidget {
-       display: inline-block;
-       white-space: nowrap;
-       border-radius: 0.3em;
+  display: inline-block;
+  white-space: nowrap;
+  border-radius: 0.3em;
 }
 
 .oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button {
-       border-radius: 0;
-       margin-left: -1px;
+  margin-left: -1px;
+  border-radius: 0;
 }
 
 .oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonedElement-button {
-       border-bottom-left-radius: 0.3em;
-       border-top-left-radius: 0.3em;
-       margin-left: 0;
+  margin-left: 0;
+  border-bottom-left-radius: 0.3em;
+  border-top-left-radius: 0.3em;
 }
 
 .oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonedElement-button {
-       border-bottom-right-radius: 0.3em;
-       border-top-right-radius: 0.3em;
+  border-top-right-radius: 0.3em;
+  border-bottom-right-radius: 0.3em;
 }
 
 /* OO.ui.ButtonOptionWidget */
 
 .oo-ui-buttonOptionWidget {
-       display: inline-block;
-       padding: 0;
-       background-color: transparent;
+  display: inline-block;
+  padding: 0;
+  background-color: transparent;
 }
 
 .oo-ui-buttonOptionWidget .oo-ui-buttonedElement-button {
-       position: relative;
-       height: 1.9em;
+  position: relative;
+  height: 1.9em;
 }
 
 .oo-ui-buttonOptionWidget.oo-ui-iconedElement .oo-ui-iconedElement-icon,
 .oo-ui-buttonOptionWidget.oo-ui-indicatedElement .oo-ui-indicatedElement-indicator {
-       position: static;
-       display: inline-block;
-       vertical-align: middle;
-       height: 1.9em;
-       margin-top: 0;
+  position: static;
+  display: inline-block;
+  height: 1.9em;
+  margin-top: 0;
+  vertical-align: middle;
 }
 
 /* OO.ui.PopupWidget */
 
 .oo-ui-popupWidget-popup {
-       position: absolute;
-       overflow: hidden;
-       border: solid 1px #ccc;
-       border-radius: 0.25em;
-       background-color: #fff;
-       box-shadow: 0 0.15em 0.5em 0 rgba(0, 0, 0, 0.2);
+  position: absolute;
+  overflow: hidden;
+  background-color: #fff;
+  border: solid 1px #ccc;
+  border-radius: 0.25em;
+  box-shadow: 0 0.15em 0.5em 0 rgba(0, 0, 0, 0.2);
 }
 
 .oo-ui-popupWidget-tail {
-       display: none;
+  display: none;
 }
 
 .oo-ui-popupWidget-tailed .oo-ui-popupWidget-popup {
-       margin-top: 7px;
+  margin-top: 7px;
 }
 
 .oo-ui-popupWidget-tailed .oo-ui-popupWidget-tail {
-       display: block;
-       position: absolute;
-       /* @embed */
-       background-image: url(images/tail.svg);
-       background-repeat: no-repeat;
-       width: 15px;
-       height: 8px;
-       margin-left: -7px;
+  position: absolute;
+  display: block;
+  width: 15px;
+  height: 8px;
+  margin-left: -7px;
+  background-image: /* @embed */ url(images/tail.svg);
+  background-repeat: no-repeat;
 }
 
 .oo-ui-popupWidget-transitioning .oo-ui-popupWidget-popup {
-       -webkit-transition: width 100ms, height 100ms, left 100ms;
-       -moz-transition: width 100ms, height 100ms, left 100ms;
-       -o-transition: width 100ms, height 100ms, left 100ms;
-       transition: width 100ms, height 100ms, left 100ms;
-       -webkit-transition-timing-function: ease-in-out;
-       -moz-transition-timing-function: ease-in-out;
-       -o-transition-timing-function: ease-in-out;
-       transition-timing-function: ease-in-out;
+  -webkit-transition: width 100ms, height 100ms, left 100ms;
+     -moz-transition: width 100ms, height 100ms, left 100ms;
+       -o-transition: width 100ms, height 100ms, left 100ms;
+          transition: width 100ms, height 100ms, left 100ms;
+  -webkit-transition-timing-function: ease-in-out;
+     -moz-transition-timing-function: ease-in-out;
+       -o-transition-timing-function: ease-in-out;
+          transition-timing-function: ease-in-out;
 }
 
 .oo-ui-popupWidget-head {
-       height: 2.5em;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       -ms-user-select: none;
-       user-select: none;
+  height: 2.5em;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
 }
 
 .oo-ui-popupWidget-head .oo-ui-buttonWidget {
-       float: right;
-       margin: 0.25em;
+  float: right;
+  margin: 0.25em;
 }
 
 .oo-ui-popupWidget-head .oo-ui-labeledElement-label {
-       float: left;
-       margin: 0.75em 1em;
-       cursor: default;
+  float: left;
+  margin: 0.75em 1em;
+  cursor: default;
 }
 
 .oo-ui-popupWidget-body {
-       box-shadow: 0 0 0.66em rgba(0,0,0,0.25);
+  box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
 }
 
 /* OO.ui.SearchWidget */
 
 .oo-ui-searchWidget-query {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       height: 4em;
-       padding: 0 1em;
-       box-shadow: 0 0 0.5em rgba(0,0,0,0.2);
+  position: absolute;
+  top: 0;
+  right: 0;
+  left: 0;
+  height: 4em;
+  padding: 0 1em;
+  box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.2);
 }
 
 .oo-ui-searchWidget-query .oo-ui-textInputWidget {
-       width: 100%;
-       margin: 0.75em 0;
+  width: 100%;
+  margin: 0.75em 0;
 }
 
 .oo-ui-searchWidget-results {
-       position: absolute;
-       top: 4em;
-       bottom: 0;
-       left: 0;
-       right: 0;
-       padding: 1em;
-       overflow-x: hidden;
-       overflow-y: auto;
-       line-height: 0;
+  position: absolute;
+  top: 4em;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  padding: 1em;
+  overflow-x: hidden;
+  overflow-y: auto;
+  line-height: 0;
 }
 
 /* OO.ui.ToggleSwitchWidget */
 
 .oo-ui-toggleSwitchWidget {
-       position: relative;
-       display: inline-block;
-       vertical-align: middle;
-       height: 2em;
-       width: 3em;
-       border-radius: 1em;
-       overflow: hidden;
-       box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
-       border: solid 1px #ccc;
-       cursor: pointer;
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
-       -webkit-transform: translateZ(0px);
-       -moz-transform: translateZ(0px);
-       -ms-transform: translateZ(0px);
-       -o-transform: translateZ(0px);
-       transform: translateZ(0px);
-
-       /* Gray */
-       background-color: #dddddd;
-       filter: progid:DXImageTransform.Microsoft.gradient(
-               GradientType=0,startColorstr=#dddddd, endColorstr=#ffffff
-       );
-       background-image: -webkit-gradient(
-               linear, right top, right bottom, color-stop(0%,#dddddd), color-stop(100%,#ffffff)
-       );
-       background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-       background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-       background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-       background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
-       background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  position: relative;
+  display: inline-block;
+  width: 3em;
+  height: 2em;
+  overflow: hidden;
+  vertical-align: middle;
+  cursor: pointer;
+  background: #eeeeee;
+  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #dddddd), color-stop(100%, #ffffff));
+  background-image: -webkit-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: -moz-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: -ms-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: -o-linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  background-image: linear-gradient(top, #dddddd 0%, #ffffff 100%);
+  border: solid 1px #ccc;
+  border-radius: 1em;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#dddddd', endColorstr='#ffffff');
+  -webkit-transform: translateZ(0);
+     -moz-transform: translateZ(0);
+      -ms-transform: translateZ(0);
+       -o-transform: translateZ(0);
+          transform: translateZ(0);
+  box-shadow: 0 0 0 white, inset 0 0.1em 0.2em #ddd;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
 
 .oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-       opacity: 0.5;
-       cursor: default;
+  cursor: default;
+  opacity: 0.5;
 }
 
 .oo-ui-toggleSwitchWidget-grip {
-       -webkit-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-       -moz-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-       -o-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
-       transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+  position: absolute;
+  top: 0.25em;
+  left: 0.25em;
+  display: block;
+  width: 1.5em;
+  height: 1.5em;
+  background: #eeeeee;
+  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
+  background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
+  border: 1px #c9c9c9 solid;
+  border-radius: 1em;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
+  box-shadow: 0 0.1em 0.25em rgba(0, 0, 0, 0.1);
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  -webkit-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+     -moz-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+      -ms-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+       -o-transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+          transition: left 200ms ease-in-out, margin-left 200ms ease-in-out;
+}
+
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover,
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover .oo-ui-toggleSwitchWidget-grip {
+  border-color: #aaa;
+}
+
+.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-glow {
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background: #cde7f4;
+  background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #b0d9ee), color-stop(100%, #eaf4fa));
+  background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
+  border-radius: 1em;
+  filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#b0d9ee', endColorstr='#eaf4fa');
+  box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
+  -webkit-transition: opacity 200ms ease-in-out;
+     -moz-transition: opacity 200ms ease-in-out;
+      -ms-transition: opacity 200ms ease-in-out;
+       -o-transition: opacity 200ms ease-in-out;
+          transition: opacity 200ms ease-in-out;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
 }
 
-.oo-ui-toggleSwitchWidget-grip {
-       position: absolute;
-       display: block;
-       top: 0.25em;
-       left: 0.25em;
-       width: 1.5em;
-       height: 1.5em;
-       border-radius: 1em;
-       box-shadow: 0 0.1em 0.25em rgba(0, 0, 0, 0.1);
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
-
-       /* Gray */
-       border: 1px #c9c9c9 solid;
-       background-color: #ffffff;
-       filter: progid:DXImageTransform.Microsoft.gradient(
-               GradientType=0,startColorstr=#ffffff, endColorstr=#dddddd
-       );
-       background-image: -webkit-gradient(
-               linear, right top, right bottom, color-stop(0%,#ffffff), color-stop(100%,#dddddd)
-       );
-       background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-       background-image: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-       background-image: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-       background-image: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
-       background-image: linear-gradient(top, #ffffff 0%, #dddddd 100%);
-}
-
-.oo-ui-toggleSwitchWidget:not(.oo-ui-widget-disabled):hover,
-.oo-ui-toggleSwitchWidget:not(.oo-ui-widget-disabled):hover .oo-ui-toggleSwitchWidget-grip {
-       border-color: #aaa;
+.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
+  left: 1.25em;
+  margin-left: -2px;
 }
 
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-       left: 1.25em;
-       margin-left: -2px;
+.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-glow {
+  opacity: 1;
 }
 
 .oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-       left: 0.25em;
-       margin-left: 0;
-}
-
-.oo-ui-toggleSwitchWidget .oo-ui-toggleSwitchWidget-on {
-       position: absolute;
-       top: 0;
-       bottom: 0;
-       right: 0;
-       left: 0;
-       border-radius: 1em;
-       box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       -ms-user-select: none;
-       user-select: none;
-
-       -webkit-transition: opacity 200ms ease-in-out;
-       -moz-transition: opacity 200ms ease-in-out;
-       -o-transition: opacity 200ms ease-in-out;
-       transition: opacity 200ms ease-in-out;
-
-       /* Blue */
-       background-color: #eaf4fa;
-       filter: progid:DXImageTransform.Microsoft.gradient(
-               GradientType=0,startColorstr=#b0d9ee, endColorstr=#eaf4fa
-       );
-       background-image: -webkit-gradient(
-               linear, right top, right bottom, color-stop(0%,#b0d9ee), color-stop(100%,#eaf4fa)
-       );
-       background-image: -webkit-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-       background-image: -moz-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-       background-image: -ms-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-       background-image: -o-linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-       background-image: linear-gradient(top, #b0d9ee 0%, #eaf4fa 100%);
-}
-
-.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-on {
-       opacity: 1;
-}
-
-.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-on {
-       opacity: 0;
+  left: 0.25em;
+  margin-left: 0;
 }
+
+.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
+  opacity: 0;
+}
+
+/* OO.ui.Window */
+
 .oo-ui-window-head {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       -ms-user-select: none;
-       user-select: none;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-touch-callout: none;
 }
 
 .oo-ui-window-body {
-       padding: 0 0.75em;
+  padding: 0 0.75em;
 }
 
 .oo-ui-window-icon {
-       float: left;
-       width: 2em;
-       height: 2em;
-       line-height: 2em;
-       margin-right: 0.5em;
-       background-position: right center;
-       background-repeat: no-repeat;
+  float: left;
+  width: 2em;
+  height: 2em;
+  margin-right: 0.5em;
+  line-height: 2em;
+  background-position: right center;
+  background-repeat: no-repeat;
 }
 
 .oo-ui-window-title {
-       float: left;
-       line-height: 2em;
-       color: #333;
-       white-space: nowrap;
-       cursor: default;
+  float: left;
+  line-height: 2em;
+  color: #333;
+  white-space: nowrap;
+  cursor: default;
 }
 
 .oo-ui-window-overlay {
-       font-family: sans-serif;
-       line-height: 1.5em;
-       font-size: 1em;
-       position: absolute;
-       top: 0;
-       left: 0;
+  position: absolute;
+  top: 0;
+  left: 0;
+  font-family: sans-serif;
+  font-size: 1em;
+  line-height: 1.5em;
 }
+
 /* Icons */
 
 .oo-ui-icon-add-item {
-       /* @embed */
-       background-image: url(images/icons/add-item.svg);
+  background-image: /* @embed */ url(images/icons/add-item.svg);
 }
 
 .oo-ui-icon-advanced {
-       /* @embed */
-       background-image: url(images/icons/advanced.svg);
+  background-image: /* @embed */ url(images/icons/advanced.svg);
 }
 
 .oo-ui-icon-alert {
-       /* @embed */
-       background-image: url(images/icons/alert.svg);
+  background-image: /* @embed */ url(images/icons/alert.svg);
 }
 
 .oo-ui-icon-check {
-       /* @embed */
-       background-image: url(images/icons/check.svg);
+  background-image: /* @embed */ url(images/icons/check.svg);
 }
 
 .oo-ui-icon-clear {
-       /* @embed */
-       background-image: url(images/icons/clear.svg);
+  background-image: /* @embed */ url(images/icons/clear.svg);
 }
 
 .oo-ui-icon-close {
-       /* @embed */
-       background-image: url(images/icons/close.svg);
+  background-image: /* @embed */ url(images/icons/close.svg);
 }
 
 .oo-ui-icon-code {
-       /* @embed */
-       background-image: url(images/icons/code.svg);
+  background-image: /* @embed */ url(images/icons/code.svg);
 }
 
 .oo-ui-icon-collapse {
-       /* @embed */
-       background-image: url(images/icons/collapse.svg);
+  background-image: /* @embed */ url(images/icons/collapse.svg);
 }
 
 .oo-ui-icon-comment {
-       /* @embed */
-       background-image: url(images/icons/comment.svg);
+  background-image: /* @embed */ url(images/icons/comment.svg);
 }
 
 .oo-ui-icon-expand {
-       /* @embed */
-       background-image: url(images/icons/expand.svg);
+  background-image: /* @embed */ url(images/icons/expand.svg);
 }
 
 .oo-ui-icon-help {
-       /* @embed */
-       background-image: url(images/icons/help.svg);
+  background-image: /* @embed */ url(images/icons/help.svg);
 }
 
 .oo-ui-icon-link {
-       /* @embed */
-       background-image: url(images/icons/link.svg);
+  background-image: /* @embed */ url(images/icons/link.svg);
 }
 
 .oo-ui-icon-menu {
-       /* @embed */
-       background-image: url(images/icons/menu.svg);
+  background-image: /* @embed */ url(images/icons/menu.svg);
 }
 
 .oo-ui-icon-next {
-       /* @embed */
-       background-image: url(images/icons/move-ltr.svg);
+  background-image: /* @embed */ url(images/icons/move-ltr.svg);
 }
 
 .oo-ui-icon-picture {
-       /* @embed */
-       background-image: url(images/icons/picture.svg);
+  background-image: /* @embed */ url(images/icons/picture.svg);
 }
 
 .oo-ui-icon-previous {
-       /* @embed */
-       background-image: url(images/icons/move-rtl.svg);
+  background-image: /* @embed */ url(images/icons/move-rtl.svg);
 }
 
 .oo-ui-icon-redo {
-       /* @embed */
-       background-image: url(images/icons/arched-arrow-ltr.svg);
+  background-image: /* @embed */ url(images/icons/arched-arrow-ltr.svg);
 }
 
 .oo-ui-icon-remove {
-       /* @embed */
-       background-image: url(images/icons/remove.svg);
+  background-image: /* @embed */ url(images/icons/remove.svg);
 }
 
 .oo-ui-icon-search {
-       /* @embed */
-       background-image: url(images/icons/search.svg);
+  background-image: /* @embed */ url(images/icons/search.svg);
 }
 
 .oo-ui-icon-settings {
-       /* @embed */
-       background-image: url(images/icons/settings.svg);
+  background-image: /* @embed */ url(images/icons/settings.svg);
 }
 
 .oo-ui-icon-tag {
-       /* @embed */
-       background-image: url(images/icons/tag.svg);
+  background-image: /* @embed */ url(images/icons/tag.svg);
 }
 
 .oo-ui-icon-undo {
-       /* @embed */
-       background-image: url(images/icons/arched-arrow-rtl.svg);
+  background-image: /* @embed */ url(images/icons/arched-arrow-rtl.svg);
 }
 
 .oo-ui-icon-window {
-       /* @embed */
-       background-image: url(images/icons/window.svg);
+  background-image: /* @embed */ url(images/icons/window.svg);
 }
 
 /* Indicators */
 
 .oo-ui-indicator-down {
-       /* @embed */
-       background-image: url(images/indicators/down.svg);
+  background-image: /* @embed */ url(images/indicators/down.svg);
 }
 
 .oo-ui-indicator-required {
-       /* @embed */
-       background-image: url(images/indicators/required.svg);
+  background-image: /* @embed */ url(images/indicators/required.svg);
 }
 
 .oo-ui-indicator-up {
-       /* @embed */
-       background-image: url(images/indicators/up.svg);
-}
+  background-image: /* @embed */ url(images/indicators/up.svg);
+}
\ No newline at end of file
diff --git a/resources/oojs-ui/update-oojs-ui.sh b/resources/oojs-ui/update-oojs-ui.sh
new file mode 100755 (executable)
index 0000000..66536bb
--- /dev/null
@@ -0,0 +1,93 @@
+#!/usr/bin/env bash
+
+# FIXME this script is duplicated from update-oojs.sh - factor this out
+
+# This script generates a commit that updates the oojs-ui distribution
+# ./bin/update-oojs-ui.sh path/to/repo/for/oojs-ui
+
+function oojsuihash() {
+       grep "OOjs UI v" resources/oojs-ui/oojs-ui.js \
+               | head -n 1 \
+               | grep -Eo '\([a-z0-9]+\)' \
+               | sed 's/^(//' \
+               | sed 's/)$//'
+}
+
+function oojsuitag() {
+       grep "OOjs UI v" resources/oojs-ui/oojs-ui.js \
+               | head -n 1 \
+               | grep -Eo '\bv[0-9a-z.-]+\b'
+}
+
+function oojsuiversion() {
+       grep "OOjs UI v" resources/oojs-ui/oojs-ui.js \
+               | head -n 1 \
+               | grep -Eo '\bv[0-9a-z.-]+\b.*$'
+}
+
+# cd to the VisualEditor directory
+cd $(cd $(dirname $0)/../..; pwd)
+
+if [ "x$1" == "x" ]
+then
+       echo >&2 "Usage: update-oojs-ui.sh path/to/repo/for/oojs-ui"
+       exit 1
+fi
+
+# Undo any changes in the oojs-ui directory
+git reset resources/oojs-ui/
+git checkout resources/oojs-ui/
+# Get the old oojs-ui version
+OLDVERSION=$(oojsuihash)
+if [ "x$OLDVERSION" == "x" ]
+then
+       TAG=$(oojsuitag)
+fi
+
+# cd to the oojs-ui directory
+cd $1 || exit 1
+if [ "x$OLDVERSION" == "x" ]
+then
+       # Try the tag
+       OLDVERSION=$(git rev-parse $TAG)
+       if [ $? != 0 ]
+       then
+               echo Could not find OOjs UI version
+               cd -
+               exit 1
+       fi
+fi
+if [ "$(git rev-parse $OLDVERSION)" == "$(git rev-parse HEAD)" ]
+then
+       echo "No changes (already at $OLDVERSION)"
+       cd -
+       exit 0
+fi
+# Build the distribution
+grunt
+# Get the list of changes
+NEWCHANGES=$(git log $OLDVERSION.. --oneline --no-merges --reverse --color=never)
+NEWCHANGESDISPLAY=$(git log $OLDVERSION.. --oneline --no-merges --reverse --color=always)
+# cd back to the VisualEditor directory
+cd -
+
+# Copy files from dist/ to resources/oojs-ui
+cp -a $1/dist/{oojs-ui.js,oojs-ui.svg.css,images,i18n} resources/oojs-ui/
+# Figure out what the new version is
+NEWVERSION=$(oojsuiversion)
+# Generate commit summary
+COMMITMSG=$(cat <<END
+Update OOjs UI to $NEWVERSION
+
+New changes:
+$NEWCHANGES
+END
+)
+# Commit
+git commit resources/oojs-ui/ -m "$COMMITMSG"
+cat >&2 <<END
+
+
+Created commit with changes:
+$NEWCHANGESDISPLAY
+END
diff --git a/resources/oojs/update-oojs.sh b/resources/oojs/update-oojs.sh
new file mode 100755 (executable)
index 0000000..0bdea23
--- /dev/null
@@ -0,0 +1,93 @@
+#!/usr/bin/env bash
+
+# FIXME this script is duplicated from update-oojs-ui.sh - factor this out
+
+# This script generates a commit that updates the oojs distribution
+# ./bin/update-oojs.sh path/to/repo/for/oojs
+
+function oojshash() {
+       grep "OOjs v" resources/oojs/oojs.js \
+               | head -n 1 \
+               | grep -Eo '\([a-z0-9]+\)' \
+               | sed 's/^(//' \
+               | sed 's/)$//'
+}
+
+function oojstag() {
+       grep "OOjs v" resources/oojs/oojs.js \
+               | head -n 1 \
+               | grep -Eo '\bv[0-9a-z.-]+\b'
+}
+
+function oojsversion() {
+       grep "OOjs v" resources/oojs/oojs.js \
+               | head -n 1 \
+               | grep -Eo '\bv[0-9a-z.-]+\b.*$'
+}
+
+# cd to the MW directory
+cd $(cd $(dirname $0)/../..; pwd)
+
+if [ "x$1" == "x" ]
+then
+       echo >&2 "Usage: update-oojs.sh path/to/repo/for/oojs"
+       exit 1
+fi
+
+# Undo any changes in the oojs directory
+git reset resources/oojs/
+git checkout resources/oojs/
+# Get the old oojs version
+OLDVERSION=$(oojshash)
+if [ "x$OLDVERSION" == "x" ]
+then
+       TAG=$(oojstag)
+fi
+
+# cd to the oojs directory
+cd $1 || exit 1
+if [ "x$OLDVERSION" == "x" ]
+then
+       # Try the tag
+       OLDVERSION=$(git rev-parse $TAG)
+       if [ $? != 0 ]
+       then
+               echo Could not find OOjs version
+               cd -
+               exit 1
+       fi
+fi
+if [ "$(git rev-parse $OLDVERSION)" == "$(git rev-parse HEAD)" ]
+then
+       echo "No changes (already at $OLDVERSION)"
+       cd -
+       exit 0
+fi
+# Build the distribution
+grunt
+# Get the list of changes
+NEWCHANGES=$(git log $OLDVERSION.. --oneline --no-merges --reverse --color=never)
+NEWCHANGESDISPLAY=$(git log $OLDVERSION.. --oneline --no-merges --reverse --color=always)
+# cd back to the VisualEditor directory
+cd -
+
+# Copy files from dist/ to resources/oojs/
+cp -a $1/dist/* resources/oojs/
+# Figure out what the new version is
+NEWVERSION=$(oojsversion)
+# Generate commit summary
+COMMITMSG=$(cat <<END
+Update OOjs to $NEWVERSION
+
+New changes:
+$NEWCHANGES
+END
+)
+# Commit
+git commit resources/oojs/ -m "$COMMITMSG"
+cat >&2 <<END
+
+
+Created commit with changes:
+$NEWCHANGESDISPLAY
+END
index e33cfc9..0e49744 100644 (file)
                        } );
                } );
 
-               // if we haven't already bound our resize hanlder, bind it now
+               // if we haven't already bound our resize handler, bind it now
                if ( !$.collapsibleTabs.boundEvent ) {
-                       $( window )
-                               .delayedBind( 500, 'resize', function () {
-                                       $.collapsibleTabs.handleResize();
-                               } );
+                       $( window ).on( 'resize', $.debounce( 500, function () {
+                               $.collapsibleTabs.handleResize();
+                       } ) );
+                       $.collapsibleTabs.boundEvent = true;
                }
+
                // call our resize handler to setup the page
                $.collapsibleTabs.handleResize();
                return this;
                        }
                        return $settings;
                },
-               /**
-                * @param {jQuery.Event} e
-                */
                handleResize: function () {
                        $.collapsibleTabs.instances.each( function () {
                                var $el = $( this ),
index ec0b2fa..365995d 100644 (file)
@@ -55,18 +55,21 @@ div#simpleSearch {
 
                // These rules MAY NOT be merged because of how CSS requires browsers
                // to parse unrecognized selectors!
+               // Note these rules ensure that placeholder text can be distinguished from
+               // standard text. In browsers which make this distinction clear these rules
+               // are not necessary.
+               // For inputs that use jquery.placeholder.js e.g. IE9-
                &.placeholder {
                        color: #999;
                }
+               // Distinguish placeholder text in IE10+
                &:-ms-input-placeholder {
                        color: #999;
                }
+               // Distinguish placeholder text in Firefox 18-
                &:-moz-placeholder {
                        color: #999;
                }
-               &::-webkit-input-placeholder {
-                       color: #999;
-               }
 
                // Undo the styles Webkit browsers apply to type=search fields,
                // we provide our own
diff --git a/skins/vector/images/edit-icon.png b/skins/vector/images/edit-icon.png
deleted file mode 100644 (file)
index 43e4691..0000000
Binary files a/skins/vector/images/edit-icon.png and /dev/null differ
diff --git a/tests/phpunit/includes/ExceptionTest.php b/tests/phpunit/includes/ExceptionTest.php
deleted file mode 100644 (file)
index eaef1f7..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-/**
- * Tests for includes/Exception.php.
- *
- * @author Antoine Musso
- * @copyright Copyright © 2013, Antoine Musso
- * @copyright Copyright © 2013, Wikimedia Foundation Inc.
- * @file
- */
-
-class ExceptionTest extends MediaWikiTestCase {
-
-       /**
-        * @expectedException MWException
-        */
-       function testMwexceptionThrowing() {
-               throw new MWException();
-       }
-
-       /**
-        * Verify the exception classes are JSON serializabe.
-        *
-        * @covers MWExceptionHandler::jsonSerializeException
-        * @dataProvider provideExceptionClasses
-        */
-       function testJsonSerializeExceptions( $exception_class ) {
-               $json = MWExceptionHandler::jsonSerializeException(
-                       new $exception_class()
-               );
-               $this->assertNotEquals( false, $json,
-                       "The $exception_class exception should be JSON serializable, got false." );
-       }
-
-       function provideExceptionClasses() {
-               return array(
-                       array( 'Exception' ),
-                       array( 'MWException' ),
-               );
-       }
-
-       /**
-        * Lame JSON schema validation.
-        *
-        * @covers MWExceptionHandler::jsonSerializeException
-        *
-        * @param $expectedKeyType String Type expected as returned by gettype()
-        * @param $exClass String An exception class (ie: Exception, MWException)
-        * @param $key String Name of the key to validate in the serialized JSON
-        * @dataProvider provideJsonSerializedKeys
-        */
-       function testJsonserializeexceptionKeys( $expectedKeyType, $exClass, $key ) {
-
-               # Make sure we log a backtrace:
-               $this->setMwGlobals( array( 'wgLogExceptionBacktrace' => true ) );
-
-               $json = json_decode(
-                       MWExceptionHandler::jsonSerializeException( new $exClass())
-               );
-               $this->assertObjectHasAttribute( $key, $json,
-                       "JSON serialized exception is missing key '$key'"
-               );
-               $this->assertInternalType( $expectedKeyType, $json->$key,
-                       "JSON serialized key '$key' has type " . gettype( $json->$key )
-                       . " (expected: $expectedKeyType)."
-               );
-       }
-
-       /**
-        * Returns test cases: exception class, key name, gettype()
-        */
-       function provideJsonSerializedKeys() {
-               $testCases = array();
-               foreach ( array( 'Exception', 'MWException' ) as $exClass ) {
-                       $exTests = array(
-                               array( 'string', $exClass, 'id' ),
-                               array( 'string', $exClass, 'file' ),
-                               array( 'integer', $exClass, 'line' ),
-                               array( 'string', $exClass, 'message' ),
-                               array( 'null', $exClass, 'url' ),
-                               # Backtrace only enabled with wgLogExceptionBacktrace = true
-                               array( 'array', $exClass, 'backtrace' ),
-                       );
-                       $testCases = array_merge( $testCases, $exTests );
-               }
-               return $testCases;
-       }
-
-       /**
-        * Given wgLogExceptionBacktrace is true
-        * then serialized exception SHOULD have a backtrace
-        *
-        * @covers MWExceptionHandler::jsonSerializeException
-        */
-       function testJsonserializeexceptionBacktracingEnabled() {
-               $this->setMwGlobals( array( 'wgLogExceptionBacktrace' => true ) );
-               $json = json_decode(
-                       MWExceptionHandler::jsonSerializeException( new Exception() )
-               );
-               $this->assertObjectHasAttribute( 'backtrace', $json );
-       }
-
-       /**
-        * Given wgLogExceptionBacktrace is false
-        * then serialized exception SHOULD NOT have a backtrace
-        *
-        * @covers MWExceptionHandler::jsonSerializeException
-        */
-       function testJsonserializeexceptionBacktracingDisabled() {
-               $this->setMwGlobals( array( 'wgLogExceptionBacktrace' => false ) );
-               $json = json_decode(
-                       MWExceptionHandler::jsonSerializeException( new Exception() )
-               );
-               $this->assertObjectNotHasAttribute( 'backtrace', $json );
-
-       }
-
-}
index b37ff2e..33643ac 100644 (file)
@@ -1,7 +1,6 @@
 <?php
 
 /**
- *
  * @group Database
  * ^--- make sure temporary tables are used.
  */
@@ -53,9 +52,10 @@ class LinksUpdateTest extends MediaWikiTestCase {
        }
 
        /**
-        * @covers LinksUpdate::addLink
+        * @covers ParserOutput::addLink
         */
        public function testUpdate_pagelinks() {
+               /** @var ParserOutput $po */
                list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
 
                $po->addLink( Title::newFromText( "Foo" ) );
@@ -90,9 +90,10 @@ class LinksUpdateTest extends MediaWikiTestCase {
        }
 
        /**
-        * @covers LinksUpdate::addExternalLink
+        * @covers ParserOutput::addExternalLink
         */
        public function testUpdate_externallinks() {
+               /** @var ParserOutput $po */
                list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
 
                $po->addExternalLink( "http://testing.com/wiki/Foo" );
@@ -103,9 +104,10 @@ class LinksUpdateTest extends MediaWikiTestCase {
        }
 
        /**
-        * @covers LinksUpdate::addCategory
+        * @covers ParserOutput::addCategory
         */
        public function testUpdate_categorylinks() {
+               /** @var ParserOutput $po */
                $this->setMwGlobals( 'wgCategoryCollation', 'uppercase' );
 
                list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
@@ -118,9 +120,10 @@ class LinksUpdateTest extends MediaWikiTestCase {
        }
 
        /**
-        * @covers LinksUpdate::addInterwikiLink
+        * @covers ParserOutput::addInterwikiLink
         */
        public function testUpdate_iwlinks() {
+               /** @var ParserOutput $po */
                list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
 
                $target = Title::makeTitleSafe( NS_MAIN, "Foo", '', 'linksupdatetest' );
@@ -132,9 +135,10 @@ class LinksUpdateTest extends MediaWikiTestCase {
        }
 
        /**
-        * @covers LinksUpdate::addTemplate
+        * @covers ParserOutput::addTemplate
         */
        public function testUpdate_templatelinks() {
+               /** @var ParserOutput $po */
                list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
 
                $po->addTemplate( Title::newFromText( "Template:Foo" ), 23, 42 );
@@ -145,9 +149,10 @@ class LinksUpdateTest extends MediaWikiTestCase {
        }
 
        /**
-        * @covers LinksUpdate::addImage
+        * @covers ParserOutput::addImage
         */
        public function testUpdate_imagelinks() {
+               /** @var ParserOutput $po */
                list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
 
                $po->addImage( "Foo.png" );
@@ -158,9 +163,10 @@ class LinksUpdateTest extends MediaWikiTestCase {
        }
 
        /**
-        * @covers LinksUpdate::addLanguageLink
+        * @covers ParserOutput::addLanguageLink
         */
        public function testUpdate_langlinks() {
+               /** @var ParserOutput $po */
                list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
 
                $po->addLanguageLink( Title::newFromText( "en:Foo" )->getFullText() );
@@ -171,9 +177,10 @@ class LinksUpdateTest extends MediaWikiTestCase {
        }
 
        /**
-        * @covers LinksUpdate::setProperty
+        * @covers ParserOutput::setProperty
         */
        public function testUpdate_page_props() {
+               /** @var ParserOutput $po */
                list( $t, $po ) = $this->makeTitleAndParserOutput( "Testing", 111 );
 
                $po->setProperty( "foo", "bar" );
diff --git a/tests/phpunit/includes/MWExceptionHandlerTest.php b/tests/phpunit/includes/MWExceptionHandlerTest.php
deleted file mode 100644 (file)
index dd76e3b..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-/**
- * Tests for includes/Exception.php.
- *
- * @author Antoine Musso
- * @copyright Copyright © 2013, Antoine Musso
- * @copyright Copyright © 2013, Wikimedia Foundation Inc.
- * @file
- */
-
-class MWExceptionHandlerTest extends MediaWikiTestCase {
-
-       /**
-        * @covers MWExceptionHandler::getRedactedTrace
-        */
-       function testGetRedactedTrace() {
-               $refvar = 'value';
-               try {
-                       $array = array( 'a', 'b' );
-                       $object = new StdClass();
-                       self::helperThrowAnException( $array, $object, $refvar );
-               } catch ( Exception $e ) {
-               }
-
-               # Make sure our strack trace contains an array and an object passed to
-               # some function in the stacktrace. Else, we can not assert the trace
-               # redaction achieved its job.
-               $trace = $e->getTrace();
-               $hasObject = false;
-               $hasArray = false;
-               foreach ( $trace as $frame ) {
-                       if ( ! isset( $frame['args'] ) ) {
-                               continue;
-                       }
-                       foreach ( $frame['args'] as $arg ) {
-                               $hasObject = $hasObject || is_object( $arg );
-                               $hasArray = $hasArray || is_array( $arg );
-                       }
-
-                       if ( $hasObject && $hasArray ) {
-                               break;
-                       }
-               }
-               $this->assertTrue( $hasObject,
-                       "The stacktrace must have a function having an object has parameter" );
-               $this->assertTrue( $hasArray,
-                       "The stacktrace must have a function having an array has parameter" );
-
-               # Now we redact the trace.. and make sure no function arguments are
-               # arrays or objects.
-               $redacted = MWExceptionHandler::getRedactedTrace( $e );
-
-               foreach ( $redacted as $frame ) {
-                       if ( ! isset( $frame['args'] ) ) {
-                               continue;
-                       }
-                       foreach ( $frame['args'] as $arg ) {
-                               $this->assertNotInternalType( 'array', $arg );
-                               $this->assertNotInternalType( 'object', $arg );
-                       }
-               }
-
-               $this->assertEquals( 'value', $refvar, 'Ensuring reference variable wasn\'t changed' );
-       }
-
-       /**
-        * Helper function for testExpandArgumentsInCall
-        *
-        * Pass it an object and an array, and something by reference :-)
-        *
-        * @throws Exception
-        */
-       protected static function helperThrowAnException( $a, $b, &$c ) {
-               throw new Exception();
-       }
-}
index 053d8a7..572740f 100644 (file)
@@ -1,28 +1,5 @@
 <?php
 
-function getSiteParams( $conf, $wiki ) {
-       $site = null;
-       $lang = null;
-       foreach ( $conf->suffixes as $suffix ) {
-               if ( substr( $wiki, -strlen( $suffix ) ) == $suffix ) {
-                       $site = $suffix;
-                       $lang = substr( $wiki, 0, -strlen( $suffix ) );
-                       break;
-               }
-       }
-
-       return array(
-               'suffix' => $site,
-               'lang' => $lang,
-               'params' => array(
-                       'lang' => $lang,
-                       'site' => $site,
-                       'wiki' => $wiki,
-               ),
-               'tags' => array( 'tag' ),
-       );
-}
-
 class SiteConfigurationTest extends MediaWikiTestCase {
 
        /**
@@ -99,6 +76,32 @@ class SiteConfigurationTest extends MediaWikiTestCase {
                $GLOBALS['global'] = array( 'global' => 'global' );
        }
 
+       /**
+        * This function is used as a callback within the tests below
+        */
+       public static function getSiteParamsCallback( $conf, $wiki ) {
+               $site = null;
+               $lang = null;
+               foreach ( $conf->suffixes as $suffix ) {
+                       if ( substr( $wiki, -strlen( $suffix ) ) == $suffix ) {
+                               $site = $suffix;
+                               $lang = substr( $wiki, 0, -strlen( $suffix ) );
+                               break;
+                       }
+               }
+
+               return array(
+                       'suffix' => $site,
+                       'lang' => $lang,
+                       'params' => array(
+                               'lang' => $lang,
+                               'site' => $site,
+                               'wiki' => $wiki,
+                       ),
+                       'tags' => array( 'tag' ),
+               );
+       }
+
        /**
         * @covers SiteConfiguration::siteFromDB
         */
@@ -257,7 +260,7 @@ class SiteConfigurationTest extends MediaWikiTestCase {
         * @covers SiteConfiguration::siteFromDB
         */
        public function testSiteFromDbWithCallback() {
-               $this->mConf->siteParamsCallback = 'getSiteParams';
+               $this->mConf->siteParamsCallback = 'SiteConfigurationTest::getSiteParamsCallback';
 
                $this->assertEquals(
                        array( 'wiki', 'en' ),
@@ -280,7 +283,7 @@ class SiteConfigurationTest extends MediaWikiTestCase {
         * @covers SiteConfiguration::get
         */
        public function testParameterReplacement() {
-               $this->mConf->siteParamsCallback = 'getSiteParams';
+               $this->mConf->siteParamsCallback = 'SiteConfigurationTest::getSiteParamsCallback';
 
                $this->assertEquals(
                        'en wiki enwiki',
@@ -313,7 +316,7 @@ class SiteConfigurationTest extends MediaWikiTestCase {
         * @covers SiteConfiguration::getAll
         */
        public function testGetAllGlobals() {
-               $this->mConf->siteParamsCallback = 'getSiteParams';
+               $this->mConf->siteParamsCallback = 'SiteConfigurationTest::getSiteParamsCallback';
 
                $getall = array(
                        'simple' => 'enwiki',
index ff33e82..2ddf05a 100644 (file)
@@ -234,4 +234,28 @@ class UserTest extends MediaWikiTestCase {
                $this->assertEquals( $wgDefaultUserOptions['cols'], $this->user->getOption( 'cols' ) );
                $this->assertEquals( 'test', $this->user->getOption( 'someoption' ) );
        }
+
+       /**
+        * Test password expiration.
+        * @covers User::getPasswordExpired()
+        */
+       public function testPasswordExpire() {
+               global $wgPasswordExpireGrace;
+               $wgTemp = $wgPasswordExpireGrace;
+               $wgPasswordExpireGrace = 3600 * 24 * 7; // 7 days
+
+               $user = User::newFromName( 'UnitTestUser' );
+               $user->loadDefaults();
+               $this->assertEquals( false, $user->getPasswordExpired() );
+
+               $ts = time() - ( 3600 * 24 * 1 ); // 1 day ago
+               $user->expirePassword( $ts );
+               $this->assertEquals( 'soft', $user->getPasswordExpired() );
+
+               $ts = time() - ( 3600 * 24 * 10 ); // 10 days ago
+               $user->expirePassword( $ts );
+               $this->assertEquals( 'hard', $user->getPasswordExpired() );
+
+               $wgPasswordExpireGrace = $wgTemp;
+       }
 }
diff --git a/tests/phpunit/includes/diff/ArrayDiffFormatterTest.php b/tests/phpunit/includes/diff/ArrayDiffFormatterTest.php
new file mode 100644 (file)
index 0000000..50c5c57
--- /dev/null
@@ -0,0 +1,116 @@
+<?php
+
+/**
+ * @licence GNU GPL v2+
+ * @author Adam Shorland
+ *
+ * @group Diff
+ */
+class ArrayDiffFormatterTest extends MediaWikiTestCase {
+
+       /**
+        * @param Diff $input
+        * @param array $expectedOutput
+        * @dataProvider provideTestFormat
+        * @covers ArrayDiffFormatter::format
+        */
+       public function testFormat( $input, $expectedOutput ) {
+               $instance = new ArrayDiffFormatter();
+               $output = $instance->format( $input );
+               $this->assertEquals( $expectedOutput, $output );
+       }
+
+       private function getMockDiff( $edits ) {
+               $diff = $this->getMockBuilder( 'Diff' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $diff->expects( $this->any() )
+                       ->method( 'getEdits' )
+                       ->will( $this->returnValue( $edits ) );
+               return $diff;
+       }
+
+       private function getMockDiffOp( $type = null, $orig = array(), $closing = array() ) {
+               $diffOp = $this->getMockBuilder( 'DiffOp' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $diffOp->expects( $this->any() )
+                       ->method( 'getType' )
+                       ->will( $this->returnValue( $type ) );
+               $diffOp->expects( $this->any() )
+                       ->method( 'getOrig' )
+                       ->will( $this->returnValue( $orig ) );
+               if( $type === 'change' ) {
+                       $diffOp->expects( $this->any() )
+                               ->method( 'getClosing' )
+                               ->with( $this->isType( 'integer' ) )
+                               ->will( $this->returnCallback( function() {
+                                       return 'mockLine';
+                               } ) );
+               } else {
+                       $diffOp->expects( $this->any() )
+                               ->method( 'getClosing' )
+                               ->will( $this->returnValue( $closing ) );
+               }
+               return $diffOp;
+       }
+
+       public function provideTestFormat() {
+               $emptyArrayTestCases = array(
+                       $this->getMockDiff( array() ),
+                       $this->getMockDiff( array( $this->getMockDiffOp( 'add' ) ) ),
+                       $this->getMockDiff( array( $this->getMockDiffOp( 'delete' ) ) ),
+                       $this->getMockDiff( array( $this->getMockDiffOp( 'change' ) ) ),
+                       $this->getMockDiff( array( $this->getMockDiffOp( 'copy' ) ) ),
+                       $this->getMockDiff( array( $this->getMockDiffOp( 'FOOBARBAZ' ) ) ),
+                       $this->getMockDiff( array( $this->getMockDiffOp( 'add', 'line' ) ) ),
+                       $this->getMockDiff( array( $this->getMockDiffOp( 'delete', array(), array( 'line' ) ) ) ),
+                       $this->getMockDiff( array( $this->getMockDiffOp( 'copy', array(), array( 'line' ) ) ) ),
+               );
+
+               $otherTestCases = array();
+               $otherTestCases[] = array(
+                       $this->getMockDiff( array( $this->getMockDiffOp( 'add', array( ), array( 'a1' ) ) ) ),
+                       array( array( 'action' => 'add', 'new' => 'a1', 'newline' => 1 ) ),
+               );
+               $otherTestCases[] = array(
+                       $this->getMockDiff( array( $this->getMockDiffOp( 'add', array( ), array( 'a1', 'a2' ) ) ) ),
+                       array(
+                               array( 'action' => 'add', 'new' => 'a1', 'newline' => 1 ),
+                               array( 'action' => 'add', 'new' => 'a2', 'newline' => 2 ),
+                       ),
+               );
+               $otherTestCases[] = array(
+                       $this->getMockDiff( array( $this->getMockDiffOp( 'delete', array( 'd1' ) ) ) ),
+                       array( array( 'action' => 'delete', 'old' => 'd1', 'oldline' => 1 ) ),
+               );
+               $otherTestCases[] = array(
+                       $this->getMockDiff( array( $this->getMockDiffOp( 'delete', array( 'd1', 'd2' ) ) ) ),
+                       array(
+                               array( 'action' => 'delete', 'old' => 'd1', 'oldline' => 1 ),
+                               array( 'action' => 'delete', 'old' => 'd2', 'oldline' => 2 ),
+                       ),
+               );
+               $otherTestCases[] = array(
+                       $this->getMockDiff( array( $this->getMockDiffOp( 'change', array( 'd1' ), array( 'a1' ) ) ) ),
+                       array( array( 'action' => 'change', 'old' => 'd1', 'new' => 'mockLine', 'newline' => 1, 'oldline' => 1 ) ),
+               );
+               $otherTestCases[] = array(
+                       $this->getMockDiff( array( $this->getMockDiffOp( 'change', array( 'd1', 'd2' ), array( 'a1', 'a2' ) ) ) ),
+                       array(
+                               array( 'action' => 'change', 'old' => 'd1', 'new' => 'mockLine', 'newline' => 1, 'oldline' => 1 ),
+                               array( 'action' => 'change', 'old' => 'd2', 'new' => 'mockLine', 'newline' => 2, 'oldline' => 2 ),
+                       ),
+               );
+
+               $testCases = array();
+               foreach( $emptyArrayTestCases as $testCase ) {
+                       $testCases[] = array( $testCase, array() );
+               }
+               foreach( $otherTestCases as $testCase ) {
+                       $testCases[] = array( $testCase[0], $testCase[1] );
+               }
+               return $testCases;
+       }
+
+}
diff --git a/tests/phpunit/includes/diff/DiffOpTest.php b/tests/phpunit/includes/diff/DiffOpTest.php
new file mode 100644 (file)
index 0000000..fe2c566
--- /dev/null
@@ -0,0 +1,73 @@
+<?php
+
+//Load our FakeDiffOp
+require_once( __DIR__ . DIRECTORY_SEPARATOR . 'FakeDiffOp.php' );
+
+/**
+ * @licence GNU GPL v2+
+ * @author Adam Shorland
+ *
+ * @group Diff
+ */
+class DiffOpTest extends MediaWikiTestCase {
+
+       /**
+        * @covers DiffOp::getType
+        */
+       public function testGetType() {
+               $obj = new FakeDiffOp();
+               $obj->type = 'foo';
+               $this->assertEquals( 'foo', $obj->getType() );
+       }
+
+       /**
+        * @covers DiffOp::getOrig
+        */
+       public function testGetOrig() {
+               $obj = new FakeDiffOp();
+               $obj->orig = array( 'foo' );
+               $this->assertEquals( array( 'foo' ), $obj->getOrig() );
+       }
+
+       /**
+        * @covers DiffOp::getClosing
+        */
+       public function testGetClosing() {
+               $obj = new FakeDiffOp();
+               $obj->closing = array( 'foo' );
+               $this->assertEquals( array( 'foo' ), $obj->getClosing() );
+       }
+
+       /**
+        * @covers DiffOp::getClosing
+        */
+       public function testGetClosingWithParameter() {
+               $obj = new FakeDiffOp();
+               $obj->closing = array( 'foo', 'bar', 'baz' );
+               $this->assertEquals( 'foo' , $obj->getClosing( 0 ) );
+               $this->assertEquals( 'bar' , $obj->getClosing( 1 ) );
+               $this->assertEquals( 'baz' , $obj->getClosing( 2 ) );
+               $this->assertEquals( null , $obj->getClosing( 3 ) );
+       }
+
+       /**
+        * @covers DiffOp::norig
+        */
+       public function testNorig() {
+               $obj = new FakeDiffOp();
+               $this->assertEquals( 0, $obj->norig() );
+               $obj->orig = array( 'foo' );
+               $this->assertEquals( 1, $obj->norig() );
+       }
+
+       /**
+        * @covers DiffOp::nclosing
+        */
+       public function testNclosing() {
+               $obj = new FakeDiffOp();
+               $this->assertEquals( 0, $obj->nclosing() );
+               $obj->closing = array( 'foo' );
+               $this->assertEquals( 1, $obj->nclosing() );
+       }
+
+}
diff --git a/tests/phpunit/includes/diff/DiffTest.php b/tests/phpunit/includes/diff/DiffTest.php
new file mode 100644 (file)
index 0000000..1911c82
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @licence GNU GPL v2+
+ * @author Adam Shorland
+ *
+ * @group Diff
+ */
+class DiffTest extends MediaWikiTestCase {
+
+       /**
+        * @covers Diff::getEdits
+        */
+       public function testGetEdits() {
+               $obj = new Diff( array(), array() );
+               $obj->edits = 'FooBarBaz';
+               $this->assertEquals( 'FooBarBaz', $obj->getEdits() );
+       }
+
+}
index f95eb5e..e1a69e3 100644 (file)
@@ -6,6 +6,7 @@
  * @todo tests for the rest of DifferenceEngine!
  *
  * @group Database
+ * @group Diff
  *
  * @licence GNU GPL v2+
  * @author Katie Filbert < aude.wiki@gmail.com >
diff --git a/tests/phpunit/includes/diff/FakeDiffOp.php b/tests/phpunit/includes/diff/FakeDiffOp.php
new file mode 100644 (file)
index 0000000..70c8f64
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * Class FakeDiffOp used to test abstract class DiffOp
+ */
+class FakeDiffOp extends DiffOp {
+
+       public function reverse() {
+               return null;
+       }
+}
diff --git a/tests/phpunit/includes/exception/BadTitleErrorTest.php b/tests/phpunit/includes/exception/BadTitleErrorTest.php
new file mode 100644 (file)
index 0000000..6f9804d
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+/**
+ * @covers BadTitleError
+ * @author Adam Shorland
+ */
+class BadTitleErrorTest extends MediaWikiTestCase {
+
+       protected $wgOut;
+
+       protected function setUp() {
+               parent::setUp();
+               global $wgOut;
+               $this->wgOut = clone $wgOut;
+       }
+
+       protected function tearDown() {
+               parent::tearDown();
+               global $wgOut;
+               $wgOut = $this->wgOut;
+       }
+
+       public function testExceptionSetsStatusCode() {
+               global $wgOut;
+               $wgOut = $this->getMockWgOut();
+               try{
+                       throw new BadTitleError();
+               }
+               catch( BadTitleError $e ) {
+                       $e->report();
+                       $this->assertTrue( true );
+               }
+       }
+
+       private function getMockWgOut() {
+               $mock = $this->getMockBuilder( 'OutputPage' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $mock->expects( $this->once() )
+                       ->method( 'setStatusCode' )
+                       ->with( 400 );
+               return $mock;
+       }
+
+}
diff --git a/tests/phpunit/includes/exception/MWExceptionHandlerTest.php b/tests/phpunit/includes/exception/MWExceptionHandlerTest.php
new file mode 100644 (file)
index 0000000..2eb1c46
--- /dev/null
@@ -0,0 +1,74 @@
+<?php
+/**
+ * @author Antoine Musso
+ * @copyright Copyright © 2013, Antoine Musso
+ * @copyright Copyright © 2013, Wikimedia Foundation Inc.
+ * @file
+ */
+
+class MWExceptionHandlerTest extends MediaWikiTestCase {
+
+       /**
+        * @covers MWExceptionHandler::getRedactedTrace
+        */
+       public function testGetRedactedTrace() {
+               $refvar = 'value';
+               try {
+                       $array = array( 'a', 'b' );
+                       $object = new StdClass();
+                       self::helperThrowAnException( $array, $object, $refvar );
+               } catch ( Exception $e ) {
+               }
+
+               # Make sure our stack trace contains an array and an object passed to
+               # some function in the stacktrace. Else, we can not assert the trace
+               # redaction achieved its job.
+               $trace = $e->getTrace();
+               $hasObject = false;
+               $hasArray = false;
+               foreach ( $trace as $frame ) {
+                       if ( ! isset( $frame['args'] ) ) {
+                               continue;
+                       }
+                       foreach ( $frame['args'] as $arg ) {
+                               $hasObject = $hasObject || is_object( $arg );
+                               $hasArray = $hasArray || is_array( $arg );
+                       }
+
+                       if ( $hasObject && $hasArray ) {
+                               break;
+                       }
+               }
+               $this->assertTrue( $hasObject,
+                       "The stacktrace must have a function having an object has parameter" );
+               $this->assertTrue( $hasArray,
+                       "The stacktrace must have a function having an array has parameter" );
+
+               # Now we redact the trace.. and make sure no function arguments are
+               # arrays or objects.
+               $redacted = MWExceptionHandler::getRedactedTrace( $e );
+
+               foreach ( $redacted as $frame ) {
+                       if ( ! isset( $frame['args'] ) ) {
+                               continue;
+                       }
+                       foreach ( $frame['args'] as $arg ) {
+                               $this->assertNotInternalType( 'array', $arg );
+                               $this->assertNotInternalType( 'object', $arg );
+                       }
+               }
+
+               $this->assertEquals( 'value', $refvar, 'Ensuring reference variable wasn\'t changed' );
+       }
+
+       /**
+        * Helper function for testExpandArgumentsInCall
+        *
+        * Pass it an object and an array, and something by reference :-)
+        *
+        * @throws Exception
+        */
+       protected static function helperThrowAnException( $a, $b, &$c ) {
+               throw new Exception();
+       }
+}
diff --git a/tests/phpunit/includes/exception/MWExceptionTest.php b/tests/phpunit/includes/exception/MWExceptionTest.php
new file mode 100644 (file)
index 0000000..2dc4850
--- /dev/null
@@ -0,0 +1,241 @@
+<?php
+/**
+ * @author Antoine Musso
+ * @copyright Copyright © 2013, Antoine Musso
+ * @copyright Copyright © 2013, Wikimedia Foundation Inc.
+ * @file
+ */
+
+class MWExceptionTest extends MediaWikiTestCase {
+
+       /**
+        * @expectedException MWException
+        */
+       public function testMwexceptionThrowing() {
+               throw new MWException();
+       }
+
+       /**
+        * @dataProvider provideTextUseOutputPage
+        * @covers MWException::useOutputPage
+        */
+       public function testUseOutputPage( $expected, $wgLang, $wgFullyInitialised, $wgOut ) {
+               $this->setMwGlobals( array(
+                       'wgLang' => $wgLang,
+                       'wgFullyInitialised' => $wgFullyInitialised,
+                       'wgOut' => $wgOut,
+               ) );
+
+               $e = new MWException();
+               $this->assertEquals( $expected, $e->useOutputPage() );
+       }
+
+       public function provideTextUseOutputPage() {
+               return array(
+                       // expected, wgLang, wgFullyInitialised, wgOut
+                       array( false, null, null, null ),
+                       array( false, $this->getMockLanguage(), null, null ),
+                       array( false, $this->getMockLanguage(), true, null ),
+                       array( false, null, true, null ),
+                       array( false, null, null, true ),
+                       array( true, $this->getMockLanguage(), true, true ),
+               );
+       }
+
+       private function getMockLanguage() {
+               return $this->getMockBuilder( 'Language' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+       }
+
+       /**
+        * @dataProvider provideUseMessageCache
+        * @covers MWException::useMessageCache
+        */
+       public function testUseMessageCache( $expected, $wgLang ) {
+               $this->setMwGlobals( array(
+                       'wgLang' => $wgLang,
+               ) );
+               $e = new MWException();
+               $this->assertEquals( $expected, $e->useMessageCache() );
+       }
+
+       public function provideUseMessageCache() {
+               return array(
+                       array( false, null ),
+                       array( true, $this->getMockLanguage() ),
+               );
+       }
+
+       /**
+        * @covers MWException::isLoggable
+        */
+       public function testIsLogable() {
+               $e = new MWException();
+               $this->assertTrue( $e->isLoggable() );
+       }
+
+       /**
+        * @dataProvider provideRunHooks
+        * @covers MWException::runHooks
+        */
+       public function testRunHooks( $wgExceptionHooks, $name, $args, $expectedReturn ) {
+               $this->setMwGlobals( array(
+                       'wgExceptionHooks' => $wgExceptionHooks,
+               ) );
+               $e = new MWException();
+               $this->assertEquals( $expectedReturn, $e->runHooks( $name, $args ) );
+       }
+
+       public function provideRunHooks() {
+               return array(
+                       array( null, null, null, null ),
+                       array( array(), 'name', array(), null ),
+                       array( array( 'name' => false ), 'name', array(), null ),
+                       array(
+                               array( 'mockHook' => array( 'MWExceptionTest::mockHook' ) ),
+                               'mockHook', array(), 'YAY.[]'
+                       ),
+                       array(
+                               array( 'mockHook' => array( 'MWExceptionTest::mockHook' ) ),
+                               'mockHook', array( 'a' ), 'YAY.{"1":"a"}'
+                       ),
+                       array(
+                               array( 'mockHook' => array( 'MWExceptionTest::mockHook' ) ),
+                               'mockHook', array( null ), null
+                       ),
+               );
+       }
+
+       /**
+        * Used in conjunction with provideRunHooks and testRunHooks as a mock callback for a hook
+        */
+       public static function mockHook() {
+               $args = func_get_args();
+               if( !$args[0] instanceof MWException ) {
+                       return '$caller not instance of MWException';
+               }
+               unset( $args[0] );
+               if( array_key_exists( 1, $args ) && $args[1] === null ) {
+                       return null;
+               }
+               return 'YAY.' . json_encode( $args );
+       }
+
+       /**
+        * @dataProvider provideIsCommandLine
+        * @covers MWException::isCommandLine
+        */
+       public function testisCommandLine( $expected, $wgCommandLineMode ) {
+               $this->setMwGlobals( array(
+                       'wgCommandLineMode' => $wgCommandLineMode,
+               ) );
+               $e = new MWException();
+               $this->assertEquals( $expected, $e->isCommandLine() );
+       }
+
+       public function provideIsCommandLine() {
+               return array(
+                       array( false, null ),
+                       array( true, true ),
+               );
+       }
+
+       /**
+        * Verify the exception classes are JSON serializabe.
+        *
+        * @covers MWExceptionHandler::jsonSerializeException
+        * @dataProvider provideExceptionClasses
+        */
+       public function testJsonSerializeExceptions( $exception_class ) {
+               $json = MWExceptionHandler::jsonSerializeException(
+                       new $exception_class()
+               );
+               $this->assertNotEquals( false, $json,
+                       "The $exception_class exception should be JSON serializable, got false." );
+       }
+
+       public function provideExceptionClasses() {
+               return array(
+                       array( 'Exception' ),
+                       array( 'MWException' ),
+               );
+       }
+
+       /**
+        * Lame JSON schema validation.
+        *
+        * @covers MWExceptionHandler::jsonSerializeException
+        *
+        * @param $expectedKeyType String Type expected as returned by gettype()
+        * @param $exClass String An exception class (ie: Exception, MWException)
+        * @param $key String Name of the key to validate in the serialized JSON
+        * @dataProvider provideJsonSerializedKeys
+        */
+       public function testJsonserializeexceptionKeys( $expectedKeyType, $exClass, $key ) {
+
+               # Make sure we log a backtrace:
+               $this->setMwGlobals( array( 'wgLogExceptionBacktrace' => true ) );
+
+               $json = json_decode(
+                       MWExceptionHandler::jsonSerializeException( new $exClass())
+               );
+               $this->assertObjectHasAttribute( $key, $json,
+                       "JSON serialized exception is missing key '$key'"
+               );
+               $this->assertInternalType( $expectedKeyType, $json->$key,
+                       "JSON serialized key '$key' has type " . gettype( $json->$key )
+                       . " (expected: $expectedKeyType)."
+               );
+       }
+
+       /**
+        * Returns test cases: exception class, key name, gettype()
+        */
+       public function provideJsonSerializedKeys() {
+               $testCases = array();
+               foreach ( array( 'Exception', 'MWException' ) as $exClass ) {
+                       $exTests = array(
+                               array( 'string', $exClass, 'id' ),
+                               array( 'string', $exClass, 'file' ),
+                               array( 'integer', $exClass, 'line' ),
+                               array( 'string', $exClass, 'message' ),
+                               array( 'null', $exClass, 'url' ),
+                               # Backtrace only enabled with wgLogExceptionBacktrace = true
+                               array( 'array', $exClass, 'backtrace' ),
+                       );
+                       $testCases = array_merge( $testCases, $exTests );
+               }
+               return $testCases;
+       }
+
+       /**
+        * Given wgLogExceptionBacktrace is true
+        * then serialized exception SHOULD have a backtrace
+        *
+        * @covers MWExceptionHandler::jsonSerializeException
+        */
+       public function testJsonserializeexceptionBacktracingEnabled() {
+               $this->setMwGlobals( array( 'wgLogExceptionBacktrace' => true ) );
+               $json = json_decode(
+                       MWExceptionHandler::jsonSerializeException( new Exception() )
+               );
+               $this->assertObjectHasAttribute( 'backtrace', $json );
+       }
+
+       /**
+        * Given wgLogExceptionBacktrace is false
+        * then serialized exception SHOULD NOT have a backtrace
+        *
+        * @covers MWExceptionHandler::jsonSerializeException
+        */
+       public function testJsonserializeexceptionBacktracingDisabled() {
+               $this->setMwGlobals( array( 'wgLogExceptionBacktrace' => false ) );
+               $json = json_decode(
+                       MWExceptionHandler::jsonSerializeException( new Exception() )
+               );
+               $this->assertObjectNotHasAttribute( 'backtrace', $json );
+
+       }
+
+}
diff --git a/tests/phpunit/includes/exception/ThrottledErrorTest.php b/tests/phpunit/includes/exception/ThrottledErrorTest.php
new file mode 100644 (file)
index 0000000..ca67241
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * @covers ThrottledError
+ * @author Adam Shorland
+ */
+class ThrottledErrorTest extends MediaWikiTestCase {
+
+       protected $wgOut;
+
+       protected function setUp() {
+               parent::setUp();
+               global $wgOut;
+               $this->wgOut = clone $wgOut;
+       }
+
+       protected function tearDown() {
+               parent::tearDown();
+               global $wgOut;
+               $wgOut = $this->wgOut;
+       }
+
+       public function testExceptionSetsStatusCode() {
+               global $wgOut;
+               $wgOut = $this->getMockWgOut();
+               try{
+                       throw new ThrottledError();
+               }
+               catch( ThrottledError $e ) {
+                       $e->report();
+                       $this->assertTrue( true );
+               }
+       }
+
+       private function getMockWgOut() {
+               $mock = $this->getMockBuilder( 'OutputPage' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $mock->expects( $this->once() )
+                       ->method( 'setStatusCode' )
+                       ->with( 503 );
+               return $mock;
+       }
+
+}
index 5a3c161..c8b20d2 100644 (file)
@@ -31,8 +31,10 @@ class CSSJanusTest extends MediaWikiTestCase {
         * @dataProvider provideTransformAdvancedCases
         */
        public function testTransformAdvanced( $code, $expectedOutput, $options = array() ) {
-               $swapLtrRtlInURL = isset( $options['swapLtrRtlInURL'] ) ? $options['swapLtrRtlInURL'] : false;
-               $swapLeftRightInURL = isset( $options['swapLeftRightInURL'] ) ? $options['swapLeftRightInURL'] : false;
+               $swapLtrRtlInURL = isset( $options['swapLtrRtlInURL'] ) ?
+                       $options['swapLtrRtlInURL'] : false;
+               $swapLeftRightInURL = isset( $options['swapLeftRightInURL'] ) ?
+                       $options['swapLeftRightInURL'] : false;
 
                $flipped = CSSJanus::transform( $code, $swapLtrRtlInURL, $swapLeftRightInURL );
 
@@ -437,6 +439,26 @@ class CSSJanusTest extends MediaWikiTestCase {
                                'div { float: left; /* @noflip */ text-align: left; }',
                                'div { float: right; /* @noflip */ text-align: left; }'
                        ),
+                       array(
+                               // before a *= attribute selector with multiple properties
+                               '/* @noflip */ div.foo[bar*=baz] { float:left; clear: left; }'
+                       ),
+                       array(
+                               // before a ^= attribute selector with multiple properties
+                               '/* @noflip */ div.foo[bar^=baz] { float:left; clear: left; }'
+                       ),
+                       array(
+                               // before a ~= attribute selector with multiple properties
+                               '/* @noflip */ div.foo[bar~=baz] { float:left; clear: left; }'
+                       ),
+                       array(
+                               // before a = attribute selector with multiple properties
+                               '/* @noflip */ div.foo[bar=baz] { float:left; clear: left; }'
+                       ),
+                       array(
+                               // before a quoted attribute selector with multiple properties
+                               '/* @noflip */ div.foo[bar=\'baz{quux\'] { float:left; clear: left; }'
+                       ),
 
                        // Guard against css3 stuff
                        array(
index f73fd7b..d9801d9 100644 (file)
@@ -1,7 +1,161 @@
 ( function ( $, mw ) {
-       /*jshint onevar: false */
+       var config, header,
 
-       var config = {
+               // Data set "simple"
+               a1 = [ 'A', '1' ],
+               a2 = [ 'A', '2' ],
+               a3 = [ 'A', '3' ],
+               b1 = [ 'B', '1' ],
+               b2 = [ 'B', '2' ],
+               b3 = [ 'B', '3' ],
+               simple = [a2, b3, a1, a3, b2, b1],
+               simpleAsc = [a1, a2, a3, b1, b2, b3],
+               simpleDescasc = [b1, b2, b3, a1, a2, a3],
+
+               // Data set "colspan"
+               aaa1 = [ 'A', 'A', 'A', '1' ],
+               aab5 = [ 'A', 'A', 'B', '5' ],
+               abc3 = [ 'A', 'B', 'C', '3' ],
+               bbc2 = [ 'B', 'B', 'C', '2' ],
+               caa4 = [ 'C', 'A', 'A', '4' ],
+               colspanInitial = [ aab5, aaa1, abc3, bbc2, caa4 ],
+
+               // Data set "planets"
+               mercury = [ 'Mercury', '2439.7' ],
+               venus = [ 'Venus', '6051.8' ],
+               earth = [ 'Earth', '6371.0' ],
+               mars = [ 'Mars', '3390.0' ],
+               jupiter = [ 'Jupiter', '69911' ],
+               saturn = [ 'Saturn', '58232' ],
+               planets = [mercury, venus, earth, mars, jupiter, saturn],
+               planetsAscName = [earth, jupiter, mars, mercury, saturn, venus],
+               planetsAscRadius = [mercury, mars, venus, earth, saturn, jupiter],
+               planetsRowspan,
+               planetsRowspanII,
+               planetsAscNameLegacy,
+
+               // Data set "ipv4"
+               ipv4 = [
+                       // Some randomly generated fake IPs
+                       ['45.238.27.109'],
+                       ['44.172.9.22'],
+                       ['247.240.82.209'],
+                       ['204.204.132.158'],
+                       ['170.38.91.162'],
+                       ['197.219.164.9'],
+                       ['45.68.154.72'],
+                       ['182.195.149.80']
+               ],
+               ipv4Sorted = [
+                       // Sort order should go octet by octet
+                       ['44.172.9.22'],
+                       ['45.68.154.72'],
+                       ['45.238.27.109'],
+                       ['170.38.91.162'],
+                       ['182.195.149.80'],
+                       ['197.219.164.9'],
+                       ['204.204.132.158'],
+                       ['247.240.82.209']
+               ],
+
+               // Data set "umlaut"
+               umlautWords = [
+                       ['Günther'],
+                       ['Peter'],
+                       ['Björn'],
+                       ['Bjorn'],
+                       ['Apfel'],
+                       ['Äpfel'],
+                       ['Strasse'],
+                       ['Sträßschen']
+               ],
+               umlautWordsSorted = [
+                       ['Äpfel'],
+                       ['Apfel'],
+                       ['Björn'],
+                       ['Bjorn'],
+                       ['Günther'],
+                       ['Peter'],
+                       ['Sträßschen'],
+                       ['Strasse']
+               ],
+
+               complexMDYDates = [
+                       ['January, 19 2010'],
+                       ['April 21 1991'],
+                       ['04 22 1991'],
+                       ['5.12.1990'],
+                       ['December 12 \'10']
+               ],
+               complexMDYSorted = [
+                       ['5.12.1990'],
+                       ['April 21 1991'],
+                       ['04 22 1991'],
+                       ['January, 19 2010'],
+                       ['December 12 \'10']
+               ],
+
+               currencyUnsorted = [
+                       ['1.02 $'],
+                       ['$ 3.00'],
+                       ['€ 2,99'],
+                       ['$ 1.00'],
+                       ['$3.50'],
+                       ['$ 1.50'],
+                       ['€ 0.99']
+               ],
+               currencySorted = [
+                       ['€ 0.99'],
+                       ['$ 1.00'],
+                       ['1.02 $'],
+                       ['$ 1.50'],
+                       ['$ 3.00'],
+                       ['$3.50'],
+                       // Comma's sort after dots
+                       // Not intentional but test to detect changes
+                       ['€ 2,99']
+               ],
+
+               numbers = [
+                       [ '12'    ],
+                       [  '7'    ],
+                       [ '13,000'],
+                       [  '9'    ],
+                       [ '14'    ],
+                       [  '8.0'  ]
+               ],
+               numbersAsc = [
+                       [  '7'    ],
+                       [  '8.0'  ],
+                       [  '9'    ],
+                       [ '12'    ],
+                       [ '14'    ],
+                       [ '13,000']
+               ],
+
+               correctDateSorting1 = [
+                       ['01 January 2010'],
+                       ['05 February 2010'],
+                       ['16 January 2010']
+               ],
+               correctDateSortingSorted1 = [
+                       ['01 January 2010'],
+                       ['16 January 2010'],
+                       ['05 February 2010']
+               ],
+
+               correctDateSorting2 = [
+                       ['January 01 2010'],
+                       ['February 05 2010'],
+                       ['January 16 2010']
+               ],
+               correctDateSortingSorted2 = [
+                       ['January 01 2010'],
+                       ['January 16 2010'],
+                       ['February 05 2010']
+               ];
+
+       config = {
                wgMonthNames: ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
                wgMonthNamesShort: ['', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
                wgDefaultDateFormat: 'dmy',
         */
        function tableTest( msg, header, data, expected, callback ) {
                QUnit.test( msg, 1, function ( assert ) {
-                       var $table = tableCreate( header, data );
+                       var extracted,
+                               $table = tableCreate( header, data );
 
                        // Give caller a chance to set up sorting and manipulate the table.
                        callback( $table );
 
                        // Table sorting is done synchronously; if it ever needs to change back
                        // to asynchronous, we'll need a timeout or a callback here.
-                       var extracted = tableExtract( $table );
+                       extracted = tableExtract( $table );
                        assert.deepEqual( extracted, expected, msg );
                } );
        }
         */
        function tableTestHTML( msg, html, expected, callback ) {
                QUnit.test( msg, 1, function ( assert ) {
-                       var $table = $( html );
+                       var extracted,
+                               $table = $( html );
 
                        // Give caller a chance to set up sorting and manipulate the table.
                        if ( callback ) {
 
                        // Table sorting is done synchronously; if it ever needs to change back
                        // to asynchronous, we'll need a timeout or a callback here.
-                       var extracted = tableExtract( $table );
+                       extracted = tableExtract( $table );
                        assert.deepEqual( extracted, expected, msg );
                } );
        }
        }
 
        // Sample data set using planets named and their radius
-       var header = [ 'Planet' , 'Radius (km)'],
-               mercury = [ 'Mercury', '2439.7' ],
-               venus = [ 'Venus'  , '6051.8' ],
-               earth = [ 'Earth'  , '6371.0' ],
-               mars = [ 'Mars'   , '3390.0' ],
-               jupiter = [ 'Jupiter', '69911' ],
-               saturn = [ 'Saturn' , '58232' ];
-
-       // Initial data set
-       var planets = [mercury, venus, earth, mars, jupiter, saturn];
-       var ascendingName = [earth, jupiter, mars, mercury, saturn, venus];
-       var ascendingRadius = [mercury, mars, venus, earth, saturn, jupiter];
+       header = [ 'Planet', 'Radius (km)'];
 
        tableTest(
                'Basic planet table: sorting initially - ascending by name',
                header,
                planets,
-               ascendingName,
+               planetsAscName,
                function ( $table ) {
                        $table.tablesorter( { sortList: [
                                { 0: 'asc' }
                'Basic planet table: sorting initially - descending by radius',
                header,
                planets,
-               reversed( ascendingRadius ),
+               reversed( planetsAscRadius ),
                function ( $table ) {
                        $table.tablesorter( { sortList: [
                                { 1: 'desc' }
                'Basic planet table: ascending by name',
                header,
                planets,
-               ascendingName,
+               planetsAscName,
                function ( $table ) {
                        $table.tablesorter();
                        $table.find( '.headerSort:eq(0)' ).click();
                'Basic planet table: ascending by name a second time',
                header,
                planets,
-               ascendingName,
+               planetsAscName,
                function ( $table ) {
                        $table.tablesorter();
                        $table.find( '.headerSort:eq(0)' ).click();
                'Basic planet table: ascending by name (multiple clicks)',
                header,
                planets,
-               ascendingName,
+               planetsAscName,
                function ( $table ) {
                        $table.tablesorter();
                        $table.find( '.headerSort:eq(0)' ).click();
                'Basic planet table: descending by name',
                header,
                planets,
-               reversed( ascendingName ),
+               reversed( planetsAscName ),
                function ( $table ) {
                        $table.tablesorter();
                        $table.find( '.headerSort:eq(0)' ).click().click();
                'Basic planet table: ascending radius',
                header,
                planets,
-               ascendingRadius,
+               planetsAscRadius,
                function ( $table ) {
                        $table.tablesorter();
                        $table.find( '.headerSort:eq(1)' ).click();
                'Basic planet table: descending radius',
                header,
                planets,
-               reversed( ascendingRadius ),
+               reversed( planetsAscRadius ),
                function ( $table ) {
                        $table.tablesorter();
                        $table.find( '.headerSort:eq(1)' ).click().click();
                }
        );
 
-       // Sample data set to test multiple column sorting
-       header = [ 'column1' , 'column2'];
-       var
-               a1 = [ 'A', '1' ],
-               a2 = [ 'A', '2' ],
-               a3 = [ 'A', '3' ],
-               b1 = [ 'B', '1' ],
-               b2 = [ 'B', '2' ],
-               b3 = [ 'B', '3' ];
-       var initial = [a2, b3, a1, a3, b2, b1];
-       var asc = [a1, a2, a3, b1, b2, b3];
-       var descasc = [b1, b2, b3, a1, a2, a3];
+       header = [ 'column1', 'column2' ];
 
        tableTest(
                'Sorting multiple columns by passing sort list',
                header,
-               initial,
-               asc,
+               simple,
+               simpleAsc,
                function ( $table ) {
                        $table.tablesorter(
                                { sortList: [
        tableTest(
                'Sorting multiple columns by programmatically triggering sort()',
                header,
-               initial,
-               descasc,
+               simple,
+               simpleDescasc,
                function ( $table ) {
                        $table.tablesorter();
                        $table.data( 'tablesorter' ).sort(
        tableTest(
                'Reset to initial sorting by triggering sort() without any parameters',
                header,
-               initial,
-               asc,
+               simple,
+               simpleAsc,
                function ( $table ) {
                        $table.tablesorter(
                                { sortList: [
        tableTest(
                'Sort via click event after having initialized the tablesorter with initial sorting',
                header,
-               initial,
-               descasc,
+               simple,
+               simpleDescasc,
                function ( $table ) {
                        $table.tablesorter(
                                { sortList: [ { 0: 'asc' }, { 1: 'asc' } ] }
        tableTest(
                'Multi-sort via click event after having initialized the tablesorter with initial sorting',
                header,
-               initial,
-               asc,
+               simple,
+               simpleAsc,
                function ( $table ) {
                        $table.tablesorter(
                                { sortList: [ { 0: 'desc' }, { 1: 'desc' } ] }
                }
        );
        QUnit.test( 'Reset sorting making table appear unsorted', 3, function ( assert ) {
-               var $table = tableCreate( header, initial );
+               var $table = tableCreate( header, simple );
                $table.tablesorter(
                        { sortList: [
                                { 0: 'desc' },
        } );
 
        // Sorting with colspans
-       header = [ 'column1a' , 'column1b', 'column1c', 'column2' ];
-       var
-               aaa1 = [ 'A', 'A', 'A', '1' ],
-               aab5 = [ 'A', 'A', 'B', '5' ],
-               abc3 = [ 'A', 'B', 'C', '3' ],
-               bbc2 = [ 'B', 'B', 'C', '2' ],
-               caa4 = [ 'C', 'A', 'A', '4' ];
-       // initial is already declared above
-       initial = [ aab5, aaa1, abc3, bbc2, caa4 ];
+       header = [ 'column1a', 'column1b', 'column1c', 'column2' ];
+
        tableTest( 'Sorting with colspanned headers: spanned column',
                header,
-               initial,
+               colspanInitial,
                [ aaa1, aab5, abc3, bbc2, caa4 ],
                function ( $table ) {
                        // Make colspanned header for test
        );
        tableTest( 'Sorting with colspanned headers: sort spanned column twice',
                header,
-               initial,
+               colspanInitial,
                [ caa4, bbc2, abc3, aab5, aaa1 ],
                function ( $table ) {
                        // Make colspanned header for test
        );
        tableTest( 'Sorting with colspanned headers: subsequent column',
                header,
-               initial,
+               colspanInitial,
                [ aaa1, bbc2, abc3, caa4, aab5 ],
                function ( $table ) {
                        // Make colspanned header for test
        );
        tableTest( 'Sorting with colspanned headers: sort subsequent column twice',
                header,
-               initial,
+               colspanInitial,
                [ aab5, caa4, abc3, bbc2, aaa1 ],
                function ( $table ) {
                        // Make colspanned header for test
                }
        );
 
-
        tableTest(
                'Basic planet table: one unsortable column',
                header,
                }
        );
 
-       var ipv4 = [
-               // Some randomly generated fake IPs
-               ['45.238.27.109'],
-               ['44.172.9.22'],
-               ['247.240.82.209'],
-               ['204.204.132.158'],
-               ['170.38.91.162'],
-               ['197.219.164.9'],
-               ['45.68.154.72'],
-               ['182.195.149.80']
-       ];
-       var ipv4Sorted = [
-               // Sort order should go octet by octet
-               ['44.172.9.22'],
-               ['45.68.154.72'],
-               ['45.238.27.109'],
-               ['170.38.91.162'],
-               ['182.195.149.80'],
-               ['197.219.164.9'],
-               ['204.204.132.158'],
-               ['247.240.82.209']
-       ];
-
        tableTest(
                'Bug 17141: IPv4 address sorting',
                ['IP'],
                }
        );
 
-       var umlautWords = [
-               // Some words with Umlauts
-               ['Günther'],
-               ['Peter'],
-               ['Björn'],
-               ['Bjorn'],
-               ['Apfel'],
-               ['Äpfel'],
-               ['Strasse'],
-               ['Sträßschen']
-       ];
-
-       var umlautWordsSorted = [
-               // Some words with Umlauts
-               ['Äpfel'],
-               ['Apfel'],
-               ['Björn'],
-               ['Bjorn'],
-               ['Günther'],
-               ['Peter'],
-               ['Sträßschen'],
-               ['Strasse']
-       ];
-
        tableTest(
                'Accented Characters with custom collation',
                ['Name'],
                );
        } );
 
-       var planetsRowspan = [
+       planetsRowspan = [
                [ 'Earth', '6051.8' ],
                jupiter,
                [ 'Mars', '6051.8' ],
                saturn,
                venus
        ];
-       var planetsRowspanII = [ jupiter, mercury, saturn, venus, [ 'Venus', '6371.0' ], [ 'Venus', '3390.0' ] ];
+       planetsRowspanII = [ jupiter, mercury, saturn, venus, [ 'Venus', '6371.0' ], [ 'Venus', '3390.0' ] ];
 
        tableTest(
                'Basic planet table: same value for multiple rows via rowspan',
                }
        );
 
-       var complexMDYDates = [
-               // Some words with Umlauts
-               ['January, 19 2010'],
-               ['April 21 1991'],
-               ['04 22 1991'],
-               ['5.12.1990'],
-               ['December 12 \'10']
-       ];
-
-       var complexMDYSorted = [
-               ['5.12.1990'],
-               ['April 21 1991'],
-               ['04 22 1991'],
-               ['January, 19 2010'],
-               ['December 12 \'10']
-       ];
-
        tableTest(
                'Complex date parsing I',
                ['date'],
                }
        );
 
-       var currencyUnsorted = [
-               ['1.02 $'],
-               ['$ 3.00'],
-               ['€ 2,99'],
-               ['$ 1.00'],
-               ['$3.50'],
-               ['$ 1.50'],
-               ['€ 0.99']
-       ];
-
-       var currencySorted = [
-               ['€ 0.99'],
-               ['$ 1.00'],
-               ['1.02 $'],
-               ['$ 1.50'],
-               ['$ 3.00'],
-               ['$3.50'],
-               // Comma's sort after dots
-               // Not intentional but test to detect changes
-               ['€ 2,99']
-       ];
-
        tableTest(
                'Currency parsing I',
                ['currency'],
                }
        );
 
-       var ascendingNameLegacy = ascendingName.slice( 0 );
-       ascendingNameLegacy[4] = ascendingNameLegacy[5];
-       ascendingNameLegacy.pop();
+       planetsAscNameLegacy = planetsAscName.slice( 0 );
+       planetsAscNameLegacy[4] = planetsAscNameLegacy[5];
+       planetsAscNameLegacy.pop();
 
        tableTest(
                'Legacy compat with .sortbottom',
                header,
                planets,
-               ascendingNameLegacy,
+               planetsAscNameLegacy,
                function ( $table ) {
                        $table.find( 'tr:last' ).addClass( 'sortbottom' );
                        $table.tablesorter();
 
        } );
 
-       var numbers = [
-               [ '12'    ],
-               [  '7'    ],
-               [ '13,000'],
-               [  '9'    ],
-               [ '14'    ],
-               [  '8.0'  ]
-       ];
-       var numbersAsc = [
-               [  '7'    ],
-               [  '8.0'  ],
-               [  '9'    ],
-               [ '12'    ],
-               [ '14'    ],
-               [ '13,000']
-       ];
-
        tableTest( 'bug 8115: sort numbers with commas (ascending)',
                ['Numbers'], numbers, numbersAsc,
                function ( $table ) {
                );
        } );
 
-
-       var correctDateSorting1 = [
-               ['01 January 2010'],
-               ['05 February 2010'],
-               ['16 January 2010']
-       ];
-
-       var correctDateSortingSorted1 = [
-               ['01 January 2010'],
-               ['16 January 2010'],
-               ['05 February 2010']
-       ];
-
        tableTest(
                'Correct date sorting I',
                ['date'],
                }
        );
 
-       var correctDateSorting2 = [
-               ['January 01 2010'],
-               ['February 05 2010'],
-               ['January 16 2010']
-       ];
-
-       var correctDateSortingSorted2 = [
-               ['January 01 2010'],
-               ['January 16 2010'],
-               ['February 05 2010']
-       ];
-
        tableTest(
                'Correct date sorting II',
                ['date'],
                );
        } );
 
+       QUnit.test( 'holes in the table headers should not throw JS errors', 2, function ( assert ) {
+               var $table = $(
+                       '<table class="sortable">' +
+                               '<thead>' +
+                               '<tr><th id="A1">A1</th><th>B1</th><th id="C1" rowspan="2">C1</th></tr>' +
+                               '<tr><th id="A2">A2</th></tr>' +
+                               '</thead>' +
+                               '<tr><td>A</td><td>Aa</td><td>Aaa</td></tr>' +
+                               '<tr><td>B</td><td>Ba</td><td>Bbb</td></tr>' +
+                               '</table>'
+               );
+               $table.tablesorter();
+               assert.equal( 0,
+                       $table.find( '#A2' ).prop( 'headerIndex' ),
+                       'A2 should be a sort header'
+               );
+               assert.equal( 1, // should be 2
+                       $table.find( '#C1' ).prop( 'headerIndex' ),
+                       'C1 should be a sort header, but will sort the wrong column'
+               );
+       } );
+
        // bug 41889 - exploding rowspans in more complex cases
        tableTestHTML(
                'Rowspan exploding with row headers',
                ]
        );
 
+       // bug 53211 - exploding rowspans in more complex cases
+       QUnit.test(
+               'Rowspan exploding with row headers and colspans', 1, function ( assert ) {
+               var $table = $( '<table class="sortable">' +
+                       '<thead><tr><th rowspan="2">n</th><th colspan="2">foo</th><th rowspan="2">baz</th></tr>' +
+                       '<tr><th>foo</th><th>bar</th></tr></thead>' +
+                       '<tbody>' +
+                       '<tr><td>1</td><td>foo</td><td>bar</td><td>baz</td></tr>' +
+                       '<tr><td>2</td><td>foo</td><td>bar</td><td>baz</td></tr>' +
+                       '</tbody></table>' );
+
+                       $table.tablesorter();
+                       assert.equal( 2, $table.find( 'tr:eq(1) th:eq(1)').prop('headerIndex'), 'Incorrect index of sort header' );
+               }
+       );
+
        tableTestHTML(
                'Rowspan exploding with colspanned cells',
                '<table class="sortable">' +