Merge "Config: Add Config and GlobalConfig classes"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 28 Jan 2014 05:15:26 +0000 (05:15 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 28 Jan 2014 05:15:26 +0000 (05:15 +0000)
212 files changed:
RELEASE-NOTES-1.23
includes/Article.php
includes/AutoLoader.php
includes/DefaultSettings.php
includes/EditPage.php
includes/FakeTitle.php
includes/Linker.php
includes/MWTimestamp.php [new file with mode: 0644]
includes/MessageBlobStore.php
includes/Preferences.php
includes/QueryPage.php
includes/Setup.php
includes/Timestamp.php [deleted file]
includes/TimestampException.php [new file with mode: 0644]
includes/Title.php
includes/User.php
includes/WatchedItem.php
includes/WebRequest.php
includes/actions/InfoAction.php
includes/api/ApiPageSet.php
includes/api/ApiQuerySiteinfo.php
includes/db/DatabasePostgres.php
includes/filebackend/SwiftFileBackend.php
includes/htmlform/HTMLButtonField.php
includes/htmlform/HTMLCheckField.php
includes/htmlform/HTMLCheckMatrix.php
includes/htmlform/HTMLFormField.php
includes/htmlform/HTMLMultiSelectField.php
includes/htmlform/HTMLRadioField.php
includes/htmlform/HTMLSelectAndOtherField.php
includes/htmlform/HTMLSelectField.php
includes/htmlform/HTMLSelectOrOtherField.php
includes/htmlform/HTMLTextAreaField.php
includes/htmlform/HTMLTextField.php
includes/installer/Installer.i18n.php
includes/job/JobQueue.php
includes/job/utils/BacklinkJobUtils.php
includes/parser/CoreParserFunctions.php
includes/parser/LinkHolderArray.php
includes/parser/Parser.php
includes/resourceloader/ResourceLoaderUserCSSPrefsModule.php
includes/search/SearchEngine.php
includes/specialpage/ChangesListSpecialPage.php
includes/specialpage/SpecialPageFactory.php
includes/specials/SpecialAllmessages.php
includes/specials/SpecialDiff.php [new file with mode: 0644]
includes/specials/SpecialMostlinkedcategories.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialWantedcategories.php
includes/specials/SpecialWatchlist.php
languages/messages/MessagesAeb.php
languages/messages/MessagesAf.php
languages/messages/MessagesAn.php
languages/messages/MessagesAr.php
languages/messages/MessagesArz.php
languages/messages/MessagesAs.php
languages/messages/MessagesAst.php
languages/messages/MessagesAz.php
languages/messages/MessagesAzb.php
languages/messages/MessagesBa.php
languages/messages/MessagesBcc.php
languages/messages/MessagesBcl.php
languages/messages/MessagesBe.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBjn.php
languages/messages/MessagesBn.php
languages/messages/MessagesBr.php
languages/messages/MessagesBs.php
languages/messages/MessagesCa.php
languages/messages/MessagesCe.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCo.php
languages/messages/MessagesCs.php
languages/messages/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesEgl.php
languages/messages/MessagesEl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEo.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesEu.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrp.php
languages/messages/MessagesFrr.php
languages/messages/MessagesGl.php
languages/messages/MessagesGsw.php
languages/messages/MessagesGu.php
languages/messages/MessagesHak.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/MessagesHu.php
languages/messages/MessagesHy.php
languages/messages/MessagesIa.php
languages/messages/MessagesId.php
languages/messages/MessagesIlo.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesJv.php
languages/messages/MessagesKa.php
languages/messages/MessagesKab.php
languages/messages/MessagesKiu.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKm.php
languages/messages/MessagesKo.php
languages/messages/MessagesKrc.php
languages/messages/MessagesKsh.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLi.php
languages/messages/MessagesLrc.php
languages/messages/MessagesLt.php
languages/messages/MessagesLv.php
languages/messages/MessagesLzh.php
languages/messages/MessagesMai.php
languages/messages/MessagesMg.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMn.php
languages/messages/MessagesMr.php
languages/messages/MessagesMs.php
languages/messages/MessagesMt.php
languages/messages/MessagesNb.php
languages/messages/MessagesNds.php
languages/messages/MessagesNds_nl.php
languages/messages/MessagesNe.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesOc.php
languages/messages/MessagesOr.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPnb.php
languages/messages/MessagesPrg.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesQu.php
languages/messages/MessagesRm.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesRue.php
languages/messages/MessagesSa.php
languages/messages/MessagesSah.php
languages/messages/MessagesScn.php
languages/messages/MessagesSh.php
languages/messages/MessagesSi.php
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSq.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesStq.php
languages/messages/MessagesSv.php
languages/messages/MessagesSzl.php
languages/messages/MessagesTa.php
languages/messages/MessagesTe.php
languages/messages/MessagesTh.php
languages/messages/MessagesTk.php
languages/messages/MessagesTl.php
languages/messages/MessagesTr.php
languages/messages/MessagesUg_arab.php
languages/messages/MessagesUk.php
languages/messages/MessagesUz.php
languages/messages/MessagesVec.php
languages/messages/MessagesVep.php
languages/messages/MessagesVi.php
languages/messages/MessagesWar.php
languages/messages/MessagesWo.php
languages/messages/MessagesYi.php
languages/messages/MessagesYo.php
languages/messages/MessagesYue.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
maintenance/findHooks.php
maintenance/getConfiguration.php
maintenance/language/messages.inc
resources/Resources.php
resources/jquery/jquery.fullscreen.js [new file with mode: 0644]
resources/jquery/jquery.jStorage.js
resources/mediawiki.special/mediawiki.special.preferences.js
resources/mediawiki/mediawiki.feedback.js
skins/.gitignore [new file with mode: 0644]
skins/cologneblue/screen.css
skins/common/IE80Fixes.css [deleted file]
skins/common/commonContent.css
skins/common/commonElements.css
skins/common/config.css
skins/modern/main.css
tests/TestsAutoLoader.php
tests/phpunit/includes/MWTimestampTest.php [new file with mode: 0644]
tests/phpunit/includes/StatusTest.php
tests/phpunit/includes/TimestampTest.php [deleted file]
tests/phpunit/includes/TitleArrayFromResultTest.php [new file with mode: 0644]
tests/phpunit/includes/UserArrayFromResultTest.php [new file with mode: 0644]
tests/phpunit/includes/UserTest.php
tests/phpunit/includes/api/format/ApiFormatPhpTest.php
tests/phpunit/includes/jobqueue/RefreshLinksPartitionTest.php
tests/phpunit/structure/AutoLoaderTest.php

index 21d8548..3db4a91 100644 (file)
@@ -21,9 +21,11 @@ production.
 * $wgSquidServersNoPurge now supports the use of Classless Inter-Domain
   Routing (CIDR) notation to specify contiguous blocks of IPv4 and/or IPv6
   addresses that should be trusted to provide X-Forwarded-For headers.
-* Preferences 'watchcreations' and 'watchdefault' ("Add pages I create and files
-  I upload to my watchlist", "Add pages and files I edit to my watchlist") are
-  now enabled by default.
+* Preferences 'watchcreations', 'watchdefault', 'enotifwatchlistpages' ("Add
+  pages I create and files I upload to my watchlist", "Add pages and files I
+  edit to my watchlist", "Email me when a page or file on my watchlist is
+  changed") are now enabled by default. In addition new user accounts' personal
+  and talk pages are now watched by them by default.
 * $wgLBFactoryConf: Class names have had underscores removed. The configuration
   should be updated if LBFactory_Simple or LBFactory_Multi is configured.
 * $wgPasswordSenderName has been deprecated. To set a custom mailer name,
@@ -75,6 +77,10 @@ production.
 * WikitextContent will now render redirects with the expected "redirect"
   header, rather than as an ordered list. Code calling Article::viewRedirect
   can probably be changed to no longer special-case redirects.
+* [[Special:Diff]] was added, allowing users to create internal links to
+  revision comparison pages using syntax such as [[Special:Diff/12345]],
+  [[Special:Diff/12345/prev]] or [[Special:Diff/12345/98765]].
+* New user accounts' personal and talk pages are now watched by them by default.
 
 === Bug fixes in 1.23 ===
 * (bug 41759) The "updated since last visit" markers (on history pages, recent
@@ -190,9 +196,13 @@ changes to languages because of Bugzilla reports.
    access operators should continue to work, as it implements the ArrayAccess
    interface).
 * Option to mark hooks as deprecated has been added.
+* (bug 52811) Preference "Enable section editing via [edit] links" was removed.
+* (bug 52813) Preference "Show table of contents (for pages with more than
+  3 headings)" was removed.
 
 ==== Removed classes ====
 * FakeMemCachedClient (deprecated in 1.18)
+* RdfMetaData (unused)
 * TitleDependency (unused)
 * TitleListDependency (unused)
 * WikiError (deprecated in 1.17)
index e0396a1..a5d4d5b 100644 (file)
@@ -972,7 +972,7 @@ class Article implements Page {
                                $outputPage->addSubtitle( wfMessage( 'redirectedfrom' )->rawParams( $redir ) );
 
                                // Set the fragment if one was specified in the redirect
-                               if ( strval( $this->getTitle()->getFragment() ) != '' ) {
+                               if ( $this->getTitle()->hasFragment() ) {
                                        $outputPage->addJsConfigVars( 'wgRedirectToFragment', $this->getTitle()->getFragmentForURL() );
                                        $outputPage->addModules( 'mediawiki.action.view.redirectToFragment' );
                                }
index d4b2aa5..00191c3 100644 (file)
@@ -211,8 +211,8 @@ $wgAutoloadLocalClasses = array(
        'StubObject' => 'includes/StubObject.php',
        'StubUserLang' => 'includes/StubObject.php',
        'TablePager' => 'includes/Pager.php',
-       'MWTimestamp' => 'includes/Timestamp.php',
-       'TimestampException' => 'includes/Timestamp.php',
+       'MWTimestamp' => 'includes/MWTimestamp.php',
+       'TimestampException' => 'includes/TimestampException.php',
        'Title' => 'includes/Title.php',
        'TitleArray' => 'includes/TitleArray.php',
        'TitleArrayFromResult' => 'includes/TitleArray.php',
@@ -969,6 +969,7 @@ $wgAutoloadLocalClasses = array(
        'SpecialChangePassword' => 'includes/specials/SpecialChangePassword.php',
        'SpecialComparePages' => 'includes/specials/SpecialComparePages.php',
        'SpecialContributions' => 'includes/specials/SpecialContributions.php',
+       'SpecialDiff' => 'includes/specials/SpecialDiff.php',
        'SpecialEditWatchlist' => 'includes/specials/SpecialEditWatchlist.php',
        'SpecialEmailUser' => 'includes/specials/SpecialEmailuser.php',
        'SpecialExpandTemplates' => 'includes/specials/SpecialExpandTemplates.php',
index 96cfdfe..4f93401 100644 (file)
@@ -3973,8 +3973,8 @@ $wgReservedUsernames = array(
 /**
  * Settings added to this array will override the default globals for the user
  * preferences used by anonymous visitors and newly created accounts.
- * For instance, to disable section editing links:
- * $wgDefaultUserOptions ['editsection'] = 0;
+ * For instance, to disable editing on double clicks:
+ * $wgDefaultUserOptions ['editondblclick'] = 0;
  */
 $wgDefaultUserOptions = array(
        'ccmeonemails' => 0,
@@ -3984,12 +3984,11 @@ $wgDefaultUserOptions = array(
        'disablemail' => 0,
        'editfont' => 'default',
        'editondblclick' => 0,
-       'editsection' => 1,
        'editsectiononrightclick' => 0,
        'enotifminoredits' => 0,
        'enotifrevealaddr' => 0,
        'enotifusertalkpages' => 1,
-       'enotifwatchlistpages' => 0,
+       'enotifwatchlistpages' => 1,
        'extendwatchlist' => 0,
        'fancysig' => 0,
        'forceeditsummary' => 0,
@@ -4013,7 +4012,6 @@ $wgDefaultUserOptions = array(
        'rows' => 25,
        'showhiddencats' => 0,
        'shownumberswatching' => 1,
-       'showtoc' => 1,
        'showtoolbar' => 1,
        'skin' => false,
        'stubthreshold' => 0,
index 7115eab..aefadbe 100644 (file)
@@ -1993,9 +1993,6 @@ class EditPage {
                        $wgOut->addModules( 'mediawiki.action.edit.editWarning' );
                }
 
-               // Bug #19334: textarea jumps when editing articles in IE8
-               $wgOut->addStyle( 'common/IE80Fixes.css', 'screen', 'IE 8' );
-
                $wgOut->setRobotPolicy( 'noindex,nofollow' );
 
                # Enabled article-related sidebar, toplinks, etc.
index efa213f..4aa15bf 100644 (file)
@@ -39,6 +39,7 @@ class FakeTitle extends Title {
        function canTalk() { $this->error(); }
        function getInterwiki() { $this->error(); }
        function getFragment() { $this->error(); }
+       function hasFragment() { $this->error(); }
        function getFragmentForURL() { $this->error(); }
        function getDefaultNamespace() { $this->error(); }
        function getIndexTitle() { $this->error(); }
index 5eda642..23bfd61 100644 (file)
@@ -278,9 +278,9 @@ class Linker {
                wfProfileIn( __METHOD__ );
                # We don't want to include fragments for broken links, because they
                # generally make no sense.
-               if ( in_array( 'broken', $options ) && $target->mFragment !== '' ) {
+               if ( in_array( 'broken', $options ) && $target->hasFragment() ) {
                        $target = clone $target;
-                       $target->mFragment = '';
+                       $target->setFragment( '' );
                }
 
                # If it's a broken link, add the appropriate query pieces, unless
@@ -384,7 +384,7 @@ class Linker {
 
                // If the target is just a fragment, with no title, we return the fragment
                // text.  Otherwise, we return the title text itself.
-               if ( $target->getPrefixedText() === '' && $target->getFragment() !== '' ) {
+               if ( $target->getPrefixedText() === '' && $target->hasFragment() ) {
                        return htmlspecialchars( $target->getFragment() );
                }
                return htmlspecialchars( $target->getPrefixedText() );
@@ -448,8 +448,7 @@ class Linker {
                        if ( !$name ) {
                                return $title;
                        }
-                       $ret = SpecialPage::getTitleFor( $name, $subpage );
-                       $ret->mFragment = $title->getFragment();
+                       $ret = SpecialPage::getTitleFor( $name, $subpage, $title->getFragment() );
                        return $ret;
                } else {
                        return $title;
diff --git a/includes/MWTimestamp.php b/includes/MWTimestamp.php
new file mode 100644 (file)
index 0000000..9de2c0a
--- /dev/null
@@ -0,0 +1,391 @@
+<?php
+/**
+ * Creation and parsing of MW-style timestamps.
+ *
+ * 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.20
+ * @author Tyler Romeo, 2012
+ */
+
+/**
+ * Library for creating and parsing MW-style timestamps. Based on the JS
+ * library that does the same thing.
+ *
+ * @since 1.20
+ */
+class MWTimestamp {
+       /**
+        * Standard gmdate() formats for the different timestamp types.
+        */
+       private static $formats = array(
+               TS_UNIX => 'U',
+               TS_MW => 'YmdHis',
+               TS_DB => 'Y-m-d H:i:s',
+               TS_ISO_8601 => 'Y-m-d\TH:i:s\Z',
+               TS_ISO_8601_BASIC => 'Ymd\THis\Z',
+               TS_EXIF => 'Y:m:d H:i:s', // This shouldn't ever be used, but is included for completeness
+               TS_RFC2822 => 'D, d M Y H:i:s',
+               TS_ORACLE => 'd-m-Y H:i:s.000000', // Was 'd-M-y h.i.s A' . ' +00:00' before r51500
+               TS_POSTGRES => 'Y-m-d H:i:s',
+       );
+
+       /**
+        * The actual timestamp being wrapped (DateTime object).
+        * @var DateTime
+        */
+       public $timestamp;
+
+       /**
+        * Make a new timestamp and set it to the specified time,
+        * or the current time if unspecified.
+        *
+        * @since 1.20
+        *
+        * @param bool|string $timestamp Timestamp to set, or false for current time
+        */
+       public function __construct( $timestamp = false ) {
+               $this->setTimestamp( $timestamp );
+       }
+
+       /**
+        * Set the timestamp to the specified time, or the current time if unspecified.
+        *
+        * Parse the given timestamp into either a DateTime object or a Unix timestamp,
+        * and then store it.
+        *
+        * @since 1.20
+        *
+        * @param string|bool $ts Timestamp to store, or false for now
+        * @throws TimestampException
+        */
+       public function setTimestamp( $ts = false ) {
+               $da = array();
+               $strtime = '';
+
+               if ( !$ts || $ts === "\0\0\0\0\0\0\0\0\0\0\0\0\0\0" ) { // We want to catch 0, '', null... but not date strings starting with a letter.
+                       $uts = time();
+                       $strtime = "@$uts";
+               } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)$/D', $ts, $da ) ) {
+                       # TS_DB
+               } elseif ( preg_match( '/^(\d{4}):(\d\d):(\d\d) (\d\d):(\d\d):(\d\d)$/D', $ts, $da ) ) {
+                       # TS_EXIF
+               } elseif ( preg_match( '/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/D', $ts, $da ) ) {
+                       # TS_MW
+               } elseif ( preg_match( '/^-?\d{1,13}$/D', $ts ) ) {
+                       # TS_UNIX
+                       $strtime = "@$ts"; // http://php.net/manual/en/datetime.formats.compound.php
+               } elseif ( preg_match( '/^\d{2}-\d{2}-\d{4} \d{2}:\d{2}:\d{2}.\d{6}$/', $ts ) ) {
+                       # TS_ORACLE // session altered to DD-MM-YYYY HH24:MI:SS.FF6
+                       $strtime = preg_replace( '/(\d\d)\.(\d\d)\.(\d\d)(\.(\d+))?/', "$1:$2:$3",
+                                       str_replace( '+00:00', 'UTC', $ts ) );
+               } elseif ( preg_match( '/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.*\d*)?Z?$/', $ts, $da ) ) {
+                       # TS_ISO_8601
+               } elseif ( preg_match( '/^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})(?:\.*\d*)?Z?$/', $ts, $da ) ) {
+                       #TS_ISO_8601_BASIC
+               } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.*\d*[\+\- ](\d\d)$/', $ts, $da ) ) {
+                       # TS_POSTGRES
+               } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.*\d* GMT$/', $ts, $da ) ) {
+                       # TS_POSTGRES
+               } elseif ( preg_match( '/^[ \t\r\n]*([A-Z][a-z]{2},[ \t\r\n]*)?' . # Day of week
+                                                               '\d\d?[ \t\r\n]*[A-Z][a-z]{2}[ \t\r\n]*\d{2}(?:\d{2})?' .  # dd Mon yyyy
+                                                               '[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d/S', $ts ) ) { # hh:mm:ss
+                       # TS_RFC2822, accepting a trailing comment. See http://www.squid-cache.org/mail-archive/squid-users/200307/0122.html / r77171
+                       # The regex is a superset of rfc2822 for readability
+                       $strtime = strtok( $ts, ';' );
+               } elseif ( preg_match( '/^[A-Z][a-z]{5,8}, \d\d-[A-Z][a-z]{2}-\d{2} \d\d:\d\d:\d\d/', $ts ) ) {
+                       # TS_RFC850
+                       $strtime = $ts;
+               } elseif ( preg_match( '/^[A-Z][a-z]{2} [A-Z][a-z]{2} +\d{1,2} \d\d:\d\d:\d\d \d{4}/', $ts ) ) {
+                       # asctime
+                       $strtime = $ts;
+               } else {
+                       throw new TimestampException( __METHOD__ . ": Invalid timestamp - $ts" );
+               }
+
+               if ( !$strtime ) {
+                       $da = array_map( 'intval', $da );
+                       $da[0] = "%04d-%02d-%02dT%02d:%02d:%02d.00+00:00";
+                       $strtime = call_user_func_array( "sprintf", $da );
+               }
+
+               try {
+                       $final = new DateTime( $strtime, new DateTimeZone( 'GMT' ) );
+               } catch ( Exception $e ) {
+                       throw new TimestampException( __METHOD__ . ': Invalid timestamp format.', $e->getCode(), $e );
+               }
+
+               if ( $final === false ) {
+                       throw new TimestampException( __METHOD__ . ': Invalid timestamp format.' );
+               }
+               $this->timestamp = $final;
+       }
+
+       /**
+        * Get the timestamp represented by this object in a certain form.
+        *
+        * Convert the internal timestamp to the specified format and then
+        * return it.
+        *
+        * @since 1.20
+        *
+        * @param int $style Constant Output format for timestamp
+        * @throws TimestampException
+        * @return string The formatted timestamp
+        */
+       public function getTimestamp( $style = TS_UNIX ) {
+               if ( !isset( self::$formats[$style] ) ) {
+                       throw new TimestampException( __METHOD__ . ': Illegal timestamp output type.' );
+               }
+
+               $output = $this->timestamp->format( self::$formats[$style] );
+
+               if ( ( $style == TS_RFC2822 ) || ( $style == TS_POSTGRES ) ) {
+                       $output .= ' GMT';
+               }
+
+               return $output;
+       }
+
+       /**
+        * Get the timestamp in a human-friendly relative format, e.g., "3 days ago".
+        *
+        * Determine the difference between the timestamp and the current time, and
+        * generate a readable timestamp by returning "<N> <units> ago", where the
+        * largest possible unit is used.
+        *
+        * @since 1.20
+        * @since 1.22 Uses Language::getHumanTimestamp to produce the timestamp
+        *
+        * @param MWTimestamp|null $relativeTo The base timestamp to compare to (defaults to now)
+        * @param User|null $user User the timestamp is being generated for (or null to use main context's user)
+        * @param Language|null $lang Language to use to make the human timestamp (or null to use main context's language)
+        * @return string Formatted timestamp
+        */
+       public function getHumanTimestamp( MWTimestamp $relativeTo = null, User $user = null, Language $lang = null ) {
+               if ( $relativeTo === null ) {
+                       $relativeTo = new self();
+               }
+               if ( $user === null ) {
+                       $user = RequestContext::getMain()->getUser();
+               }
+               if ( $lang === null ) {
+                       $lang = RequestContext::getMain()->getLanguage();
+               }
+
+               // Adjust for the user's timezone.
+               $offsetThis = $this->offsetForUser( $user );
+               $offsetRel = $relativeTo->offsetForUser( $user );
+
+               $ts = '';
+               if ( wfRunHooks( 'GetHumanTimestamp', array( &$ts, $this, $relativeTo, $user, $lang ) ) ) {
+                       $ts = $lang->getHumanTimestamp( $this, $relativeTo, $user );
+               }
+
+               // Reset the timezone on the objects.
+               $this->timestamp->sub( $offsetThis );
+               $relativeTo->timestamp->sub( $offsetRel );
+
+               return $ts;
+       }
+
+       /**
+        * Adjust the timestamp depending on the given user's preferences.
+        *
+        * @since 1.22
+        *
+        * @param User $user User to take preferences from
+        * @param[out] MWTimestamp $ts Timestamp to adjust
+        * @return DateInterval Offset that was applied to the timestamp
+        */
+       public function offsetForUser( User $user ) {
+               global $wgLocalTZoffset;
+
+               $option = $user->getOption( 'timecorrection' );
+               $data = explode( '|', $option, 3 );
+
+               // First handle the case of an actual timezone being specified.
+               if ( $data[0] == 'ZoneInfo' ) {
+                       try {
+                               $tz = new DateTimeZone( $data[2] );
+                       } catch ( Exception $e ) {
+                               $tz = false;
+                       }
+
+                       if ( $tz ) {
+                               $this->timestamp->setTimezone( $tz );
+                               return new DateInterval( 'P0Y' );
+                       } else {
+                               $data[0] = 'Offset';
+                       }
+               }
+
+               $diff = 0;
+               // If $option is in fact a pipe-separated value, check the
+               // first value.
+               if ( $data[0] == 'System' ) {
+                       // First value is System, so use the system offset.
+                       if ( isset( $wgLocalTZoffset ) ) {
+                               $diff = $wgLocalTZoffset;
+                       }
+               } elseif ( $data[0] == 'Offset' ) {
+                       // First value is Offset, so use the specified offset
+                       $diff = (int)$data[1];
+               } else {
+                       // $option actually isn't a pipe separated value, but instead
+                       // a comma separated value. Isn't MediaWiki fun?
+                       $data = explode( ':', $option );
+                       if ( count( $data ) >= 2 ) {
+                               // Combination hours and minutes.
+                               $diff = abs( (int)$data[0] ) * 60 + (int)$data[1];
+                               if ( (int)$data[0] < 0 ) {
+                                       $diff *= -1;
+                               }
+                       } else {
+                               // Just hours.
+                               $diff = (int)$data[0] * 60;
+                       }
+               }
+
+               $interval = new DateInterval( 'PT' . abs( $diff ) . 'M' );
+               if ( $diff < 1 ) {
+                       $interval->invert = 1;
+               }
+
+               $this->timestamp->add( $interval );
+               return $interval;
+       }
+
+       /**
+        * Generate a purely relative timestamp, i.e., represent the time elapsed between
+        * the given base timestamp and this object.
+        *
+        * @param MWTimestamp $relativeTo Relative base timestamp (defaults to now)
+        * @param User $user Use to use offset for
+        * @param Language $lang Language to use
+        * @param array $chosenIntervals Intervals to use to represent it
+        * @return string Relative timestamp
+        */
+       public function getRelativeTimestamp(
+               MWTimestamp $relativeTo = null,
+               User $user = null,
+               Language $lang = null,
+               array $chosenIntervals = array()
+       ) {
+               if ( $relativeTo === null ) {
+                       $relativeTo = new self;
+               }
+               if ( $user === null ) {
+                       $user = RequestContext::getMain()->getUser();
+               }
+               if ( $lang === null ) {
+                       $lang = RequestContext::getMain()->getLanguage();
+               }
+
+               $ts = '';
+               $diff = $this->diff( $relativeTo );
+               if ( wfRunHooks( 'GetRelativeTimestamp', array( &$ts, &$diff, $this, $relativeTo, $user, $lang ) ) ) {
+                       $seconds = ( ( ( $diff->days * 24 + $diff->h ) * 60 + $diff->i ) * 60 + $diff->s );
+                       $ts = wfMessage( 'ago', $lang->formatDuration( $seconds, $chosenIntervals ) )
+                               ->inLanguage( $lang )
+                               ->text();
+               }
+
+               return $ts;
+       }
+
+       /**
+        * @since 1.20
+        *
+        * @return string
+        */
+       public function __toString() {
+               return $this->getTimestamp();
+       }
+
+       /**
+        * Calculate the difference between two MWTimestamp objects.
+        *
+        * @since 1.22
+        * @param MWTimestamp $relativeTo Base time to calculate difference from
+        * @return DateInterval|bool The DateInterval object representing the difference between the two dates or false on failure
+        */
+       public function diff( MWTimestamp $relativeTo ) {
+               return $this->timestamp->diff( $relativeTo->timestamp );
+       }
+
+       /**
+        * Set the timezone of this timestamp to the specified timezone.
+        *
+        * @since 1.22
+        * @param String $timezone Timezone to set
+        * @throws TimestampException
+        */
+       public function setTimezone( $timezone ) {
+               try {
+                       $this->timestamp->setTimezone( new DateTimeZone( $timezone ) );
+               } catch ( Exception $e ) {
+                       throw new TimestampException( __METHOD__ . ': Invalid timezone.', $e->getCode(), $e );
+               }
+       }
+
+       /**
+        * Get the timezone of this timestamp.
+        *
+        * @since 1.22
+        * @return DateTimeZone The timezone
+        */
+       public function getTimezone() {
+               return $this->timestamp->getTimezone();
+       }
+
+       /**
+        * Format the timestamp in a given format.
+        *
+        * @since 1.22
+        * @param string $format Pattern to format in
+        * @return string The formatted timestamp
+        */
+       public function format( $format ) {
+               return $this->timestamp->format( $format );
+       }
+
+       /**
+        * Get a timestamp instance in the server local timezone ($wgLocaltimezone)
+        *
+        * @since 1.22
+        * @param bool|string $ts Timestamp to set, or false for current time
+        * @return MWTimestamp the local instance
+        */
+       public static function getLocalInstance( $ts = false ) {
+               global $wgLocaltimezone;
+               $timestamp = new self( $ts );
+               $timestamp->setTimezone( $wgLocaltimezone );
+               return $timestamp;
+       }
+
+       /**
+        * Get a timestamp instance in GMT
+        *
+        * @since 1.22
+        * @param bool|string $ts Timestamp to set, or false for current time
+        * @return MWTimestamp the instance
+        */
+       public static function getInstance( $ts = false ) {
+               return new self( $ts );
+       }
+}
index 8a8142b..7e1c745 100644 (file)
@@ -242,8 +242,9 @@ class MessageBlobStore {
 
        public static function clear() {
                // TODO: Give this some more thought
-               // TODO: Is TRUNCATE better?
                try {
+                       // Not using TRUNCATE, because that needs extra permissions,
+                       // which maybe not granted to the database user.
                        $dbw = wfGetDB( DB_MASTER );
                        $dbw->delete( 'msg_resource', '*', __METHOD__ );
                        $dbw->delete( 'msg_resource_links', '*', __METHOD__ );
index e7eab17..04e9114 100644 (file)
@@ -755,13 +755,6 @@ class Preferences {
                        'label-raw' => $context->msg( 'stub-threshold' )->text(), // Raw HTML message. Yay?
                );
 
-               if ( $wgAllowUserCssPrefs ) {
-                       $defaultPreferences['showtoc'] = array(
-                               'type' => 'toggle',
-                               'section' => 'rendering/advancedrendering',
-                               'label-message' => 'tog-showtoc',
-                       );
-               }
                $defaultPreferences['showhiddencats'] = array(
                        'type' => 'toggle',
                        'section' => 'rendering/advancedrendering',
@@ -792,13 +785,6 @@ class Preferences {
                global $wgAllowUserCssPrefs;
 
                ## Editing #####################################
-               if ( $wgAllowUserCssPrefs ) {
-                       $defaultPreferences['editsection'] = array(
-                               'type' => 'toggle',
-                               'section' => 'editing/advancedediting',
-                               'label-message' => 'tog-editsection',
-                       );
-               }
                $defaultPreferences['editsectiononrightclick'] = array(
                        'type' => 'toggle',
                        'section' => 'editing/advancedediting',
index 654b616..7c2f8f7 100644 (file)
@@ -411,7 +411,7 @@ abstract class QueryPage extends SpecialPage {
        /**
         * Somewhat deprecated, you probably want to be using execute()
         * @param int|bool $offset
-        * @oaram int|bool $limit
+        * @param int|bool $limit
         * @return ResultWrapper
         */
        function doQuery( $offset = false, $limit = false ) {
index 531d1a4..d1269ad 100644 (file)
@@ -417,8 +417,8 @@ MWExceptionHandler::installHandler();
 wfProfileOut( $fname . '-exception' );
 
 wfProfileIn( $fname . '-includes' );
-require_once "$IP/includes/normal/UtfNormalUtil.php";
 require_once "$IP/includes/GlobalFunctions.php";
+require_once "$IP/includes/normal/UtfNormalUtil.php";
 require_once "$IP/includes/normal/UtfNormalDefines.php";
 wfProfileOut( $fname . '-includes' );
 
@@ -457,6 +457,8 @@ if ( !$wgHTCPRouting && $wgHTCPMulticastAddress ) {
        );
 }
 
+$wgDeferredUpdateList = array(); // b/c
+
 wfProfileOut( $fname . '-defaults2' );
 wfProfileIn( $fname . '-misc1' );
 
@@ -501,21 +503,22 @@ if ( $wgCommandLineMode ) {
 }
 
 wfProfileOut( $fname . '-misc1' );
-wfProfileIn( $fname . '-memcached' );
-
-$wgMemc = wfGetMainCache();
-$messageMemc = wfGetMessageCacheStorage();
-$parserMemc = wfGetParserCacheStorage();
-$wgLangConvMemc = wfGetLangConverterCacheStorage();
+if ( !defined( 'MW_SETUP_NO_CACHE' ) ) {
+       wfProfileIn( $fname . '-memcached' );
 
-wfDebug( 'CACHES: ' . get_class( $wgMemc ) . '[main] ' .
-       get_class( $messageMemc ) . '[message] ' .
-       get_class( $parserMemc ) . "[parser]\n" );
+       $wgMemc = wfGetMainCache();
+       $messageMemc = wfGetMessageCacheStorage();
+       $parserMemc = wfGetParserCacheStorage();
+       $wgLangConvMemc = wfGetLangConverterCacheStorage();
 
-wfProfileOut( $fname . '-memcached' );
+       wfDebug( 'CACHES: ' . get_class( $wgMemc ) . '[main] ' .
+               get_class( $messageMemc ) . '[message] ' .
+               get_class( $parserMemc ) . "[parser]\n" );
 
-# # Most of the config is out, some might want to run hooks here.
-wfRunHooks( 'SetupAfterCache' );
+       wfProfileOut( $fname . '-memcached' );
+       # # Most of the config is out, some might want to run hooks here.
+       wfRunHooks( 'SetupAfterCache' );
+}
 
 wfProfileIn( $fname . '-session' );
 
@@ -534,42 +537,44 @@ if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
 }
 
 wfProfileOut( $fname . '-session' );
-wfProfileIn( $fname . '-globals' );
 
-$wgContLang = Language::factory( $wgLanguageCode );
-$wgContLang->initEncoding();
-$wgContLang->initContLang();
+if ( !defined( 'MW_SETUP_NO_CONTEXT' ) ) {
+       wfProfileIn( $fname . '-globals' );
 
-// Now that variant lists may be available...
-$wgRequest->interpolateTitle();
-$wgUser = RequestContext::getMain()->getUser(); # BackCompat
+       $wgContLang = Language::factory( $wgLanguageCode );
+       $wgContLang->initEncoding();
+       $wgContLang->initContLang();
 
-/**
- * @var $wgLang Language
- */
-$wgLang = new StubUserLang;
+       // Now that variant lists may be available...
+       $wgRequest->interpolateTitle();
+       $wgUser = RequestContext::getMain()->getUser(); # BackCompat
 
-/**
* @var OutputPage
- */
-$wgOut = RequestContext::getMain()->getOutput(); # BackCompat
+       /**
       * @var $wgLang Language
       */
+       $wgLang = new StubUserLang;
 
-/**
- * @var $wgParser Parser
- */
-$wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) );
+       /**
+        * @var OutputPage
       */
+       $wgOut = RequestContext::getMain()->getOutput(); # BackCompat
 
-if ( !is_object( $wgAuth ) ) {
-       $wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' );
-       wfRunHooks( 'AuthPluginSetup', array( &$wgAuth ) );
-}
+       /**
+        * @var $wgParser Parser
+        */
+       $wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) );
 
-# Placeholders in case of DB error
-$wgTitle = null;
+       if ( !is_object( $wgAuth ) ) {
+               $wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' );
+               wfRunHooks( 'AuthPluginSetup', array( &$wgAuth ) );
+       }
+
+       # Placeholders in case of DB error
+       $wgTitle = null;
 
-$wgDeferredUpdateList = array();
+       wfProfileOut( $fname . '-globals' );
+}
 
-wfProfileOut( $fname . '-globals' );
 wfProfileIn( $fname . '-extensions' );
 
 # Extension setup functions for extensions other than skins
diff --git a/includes/Timestamp.php b/includes/Timestamp.php
deleted file mode 100644 (file)
index c1c6455..0000000
+++ /dev/null
@@ -1,396 +0,0 @@
-<?php
-/**
- * Creation and parsing of MW-style timestamps.
- *
- * 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.20
- * @author Tyler Romeo, 2012
- */
-
-/**
- * Library for creating and parsing MW-style timestamps. Based on the JS
- * library that does the same thing.
- *
- * @since 1.20
- */
-class MWTimestamp {
-       /**
-        * Standard gmdate() formats for the different timestamp types.
-        */
-       private static $formats = array(
-               TS_UNIX => 'U',
-               TS_MW => 'YmdHis',
-               TS_DB => 'Y-m-d H:i:s',
-               TS_ISO_8601 => 'Y-m-d\TH:i:s\Z',
-               TS_ISO_8601_BASIC => 'Ymd\THis\Z',
-               TS_EXIF => 'Y:m:d H:i:s', // This shouldn't ever be used, but is included for completeness
-               TS_RFC2822 => 'D, d M Y H:i:s',
-               TS_ORACLE => 'd-m-Y H:i:s.000000', // Was 'd-M-y h.i.s A' . ' +00:00' before r51500
-               TS_POSTGRES => 'Y-m-d H:i:s',
-       );
-
-       /**
-        * The actual timestamp being wrapped (DateTime object).
-        * @var DateTime
-        */
-       public $timestamp;
-
-       /**
-        * Make a new timestamp and set it to the specified time,
-        * or the current time if unspecified.
-        *
-        * @since 1.20
-        *
-        * @param bool|string $timestamp Timestamp to set, or false for current time
-        */
-       public function __construct( $timestamp = false ) {
-               $this->setTimestamp( $timestamp );
-       }
-
-       /**
-        * Set the timestamp to the specified time, or the current time if unspecified.
-        *
-        * Parse the given timestamp into either a DateTime object or a Unix timestamp,
-        * and then store it.
-        *
-        * @since 1.20
-        *
-        * @param string|bool $ts Timestamp to store, or false for now
-        * @throws TimestampException
-        */
-       public function setTimestamp( $ts = false ) {
-               $da = array();
-               $strtime = '';
-
-               if ( !$ts || $ts === "\0\0\0\0\0\0\0\0\0\0\0\0\0\0" ) { // We want to catch 0, '', null... but not date strings starting with a letter.
-                       $uts = time();
-                       $strtime = "@$uts";
-               } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)$/D', $ts, $da ) ) {
-                       # TS_DB
-               } elseif ( preg_match( '/^(\d{4}):(\d\d):(\d\d) (\d\d):(\d\d):(\d\d)$/D', $ts, $da ) ) {
-                       # TS_EXIF
-               } elseif ( preg_match( '/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/D', $ts, $da ) ) {
-                       # TS_MW
-               } elseif ( preg_match( '/^-?\d{1,13}$/D', $ts ) ) {
-                       # TS_UNIX
-                       $strtime = "@$ts"; // http://php.net/manual/en/datetime.formats.compound.php
-               } elseif ( preg_match( '/^\d{2}-\d{2}-\d{4} \d{2}:\d{2}:\d{2}.\d{6}$/', $ts ) ) {
-                       # TS_ORACLE // session altered to DD-MM-YYYY HH24:MI:SS.FF6
-                       $strtime = preg_replace( '/(\d\d)\.(\d\d)\.(\d\d)(\.(\d+))?/', "$1:$2:$3",
-                                       str_replace( '+00:00', 'UTC', $ts ) );
-               } elseif ( preg_match( '/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.*\d*)?Z?$/', $ts, $da ) ) {
-                       # TS_ISO_8601
-               } elseif ( preg_match( '/^(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})(?:\.*\d*)?Z?$/', $ts, $da ) ) {
-                       #TS_ISO_8601_BASIC
-               } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.*\d*[\+\- ](\d\d)$/', $ts, $da ) ) {
-                       # TS_POSTGRES
-               } elseif ( preg_match( '/^(\d{4})\-(\d\d)\-(\d\d) (\d\d):(\d\d):(\d\d)\.*\d* GMT$/', $ts, $da ) ) {
-                       # TS_POSTGRES
-               } elseif ( preg_match( '/^[ \t\r\n]*([A-Z][a-z]{2},[ \t\r\n]*)?' . # Day of week
-                                                               '\d\d?[ \t\r\n]*[A-Z][a-z]{2}[ \t\r\n]*\d{2}(?:\d{2})?' .  # dd Mon yyyy
-                                                               '[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d/S', $ts ) ) { # hh:mm:ss
-                       # TS_RFC2822, accepting a trailing comment. See http://www.squid-cache.org/mail-archive/squid-users/200307/0122.html / r77171
-                       # The regex is a superset of rfc2822 for readability
-                       $strtime = strtok( $ts, ';' );
-               } elseif ( preg_match( '/^[A-Z][a-z]{5,8}, \d\d-[A-Z][a-z]{2}-\d{2} \d\d:\d\d:\d\d/', $ts ) ) {
-                       # TS_RFC850
-                       $strtime = $ts;
-               } elseif ( preg_match( '/^[A-Z][a-z]{2} [A-Z][a-z]{2} +\d{1,2} \d\d:\d\d:\d\d \d{4}/', $ts ) ) {
-                       # asctime
-                       $strtime = $ts;
-               } else {
-                       throw new TimestampException( __METHOD__ . ": Invalid timestamp - $ts" );
-               }
-
-               if ( !$strtime ) {
-                       $da = array_map( 'intval', $da );
-                       $da[0] = "%04d-%02d-%02dT%02d:%02d:%02d.00+00:00";
-                       $strtime = call_user_func_array( "sprintf", $da );
-               }
-
-               try {
-                       $final = new DateTime( $strtime, new DateTimeZone( 'GMT' ) );
-               } catch ( Exception $e ) {
-                       throw new TimestampException( __METHOD__ . ': Invalid timestamp format.', $e->getCode(), $e );
-               }
-
-               if ( $final === false ) {
-                       throw new TimestampException( __METHOD__ . ': Invalid timestamp format.' );
-               }
-               $this->timestamp = $final;
-       }
-
-       /**
-        * Get the timestamp represented by this object in a certain form.
-        *
-        * Convert the internal timestamp to the specified format and then
-        * return it.
-        *
-        * @since 1.20
-        *
-        * @param int $style Constant Output format for timestamp
-        * @throws TimestampException
-        * @return string The formatted timestamp
-        */
-       public function getTimestamp( $style = TS_UNIX ) {
-               if ( !isset( self::$formats[$style] ) ) {
-                       throw new TimestampException( __METHOD__ . ': Illegal timestamp output type.' );
-               }
-
-               $output = $this->timestamp->format( self::$formats[$style] );
-
-               if ( ( $style == TS_RFC2822 ) || ( $style == TS_POSTGRES ) ) {
-                       $output .= ' GMT';
-               }
-
-               return $output;
-       }
-
-       /**
-        * Get the timestamp in a human-friendly relative format, e.g., "3 days ago".
-        *
-        * Determine the difference between the timestamp and the current time, and
-        * generate a readable timestamp by returning "<N> <units> ago", where the
-        * largest possible unit is used.
-        *
-        * @since 1.20
-        * @since 1.22 Uses Language::getHumanTimestamp to produce the timestamp
-        *
-        * @param MWTimestamp|null $relativeTo The base timestamp to compare to (defaults to now)
-        * @param User|null $user User the timestamp is being generated for (or null to use main context's user)
-        * @param Language|null $lang Language to use to make the human timestamp (or null to use main context's language)
-        * @return string Formatted timestamp
-        */
-       public function getHumanTimestamp( MWTimestamp $relativeTo = null, User $user = null, Language $lang = null ) {
-               if ( $relativeTo === null ) {
-                       $relativeTo = new self();
-               }
-               if ( $user === null ) {
-                       $user = RequestContext::getMain()->getUser();
-               }
-               if ( $lang === null ) {
-                       $lang = RequestContext::getMain()->getLanguage();
-               }
-
-               // Adjust for the user's timezone.
-               $offsetThis = $this->offsetForUser( $user );
-               $offsetRel = $relativeTo->offsetForUser( $user );
-
-               $ts = '';
-               if ( wfRunHooks( 'GetHumanTimestamp', array( &$ts, $this, $relativeTo, $user, $lang ) ) ) {
-                       $ts = $lang->getHumanTimestamp( $this, $relativeTo, $user );
-               }
-
-               // Reset the timezone on the objects.
-               $this->timestamp->sub( $offsetThis );
-               $relativeTo->timestamp->sub( $offsetRel );
-
-               return $ts;
-       }
-
-       /**
-        * Adjust the timestamp depending on the given user's preferences.
-        *
-        * @since 1.22
-        *
-        * @param User $user User to take preferences from
-        * @param[out] MWTimestamp $ts Timestamp to adjust
-        * @return DateInterval Offset that was applied to the timestamp
-        */
-       public function offsetForUser( User $user ) {
-               global $wgLocalTZoffset;
-
-               $option = $user->getOption( 'timecorrection' );
-               $data = explode( '|', $option, 3 );
-
-               // First handle the case of an actual timezone being specified.
-               if ( $data[0] == 'ZoneInfo' ) {
-                       try {
-                               $tz = new DateTimeZone( $data[2] );
-                       } catch ( Exception $e ) {
-                               $tz = false;
-                       }
-
-                       if ( $tz ) {
-                               $this->timestamp->setTimezone( $tz );
-                               return new DateInterval( 'P0Y' );
-                       } else {
-                               $data[0] = 'Offset';
-                       }
-               }
-
-               $diff = 0;
-               // If $option is in fact a pipe-separated value, check the
-               // first value.
-               if ( $data[0] == 'System' ) {
-                       // First value is System, so use the system offset.
-                       if ( isset( $wgLocalTZoffset ) ) {
-                               $diff = $wgLocalTZoffset;
-                       }
-               } elseif ( $data[0] == 'Offset' ) {
-                       // First value is Offset, so use the specified offset
-                       $diff = (int)$data[1];
-               } else {
-                       // $option actually isn't a pipe separated value, but instead
-                       // a comma separated value. Isn't MediaWiki fun?
-                       $data = explode( ':', $option );
-                       if ( count( $data ) >= 2 ) {
-                               // Combination hours and minutes.
-                               $diff = abs( (int)$data[0] ) * 60 + (int)$data[1];
-                               if ( (int)$data[0] < 0 ) {
-                                       $diff *= -1;
-                               }
-                       } else {
-                               // Just hours.
-                               $diff = (int)$data[0] * 60;
-                       }
-               }
-
-               $interval = new DateInterval( 'PT' . abs( $diff ) . 'M' );
-               if ( $diff < 1 ) {
-                       $interval->invert = 1;
-               }
-
-               $this->timestamp->add( $interval );
-               return $interval;
-       }
-
-       /**
-        * Generate a purely relative timestamp, i.e., represent the time elapsed between
-        * the given base timestamp and this object.
-        *
-        * @param MWTimestamp $relativeTo Relative base timestamp (defaults to now)
-        * @param User $user Use to use offset for
-        * @param Language $lang Language to use
-        * @param array $chosenIntervals Intervals to use to represent it
-        * @return string Relative timestamp
-        */
-       public function getRelativeTimestamp(
-               MWTimestamp $relativeTo = null,
-               User $user = null,
-               Language $lang = null,
-               array $chosenIntervals = array()
-       ) {
-               if ( $relativeTo === null ) {
-                       $relativeTo = new self;
-               }
-               if ( $user === null ) {
-                       $user = RequestContext::getMain()->getUser();
-               }
-               if ( $lang === null ) {
-                       $lang = RequestContext::getMain()->getLanguage();
-               }
-
-               $ts = '';
-               $diff = $this->diff( $relativeTo );
-               if ( wfRunHooks( 'GetRelativeTimestamp', array( &$ts, &$diff, $this, $relativeTo, $user, $lang ) ) ) {
-                       $seconds = ( ( ( $diff->days * 24 + $diff->h ) * 60 + $diff->i ) * 60 + $diff->s );
-                       $ts = wfMessage( 'ago', $lang->formatDuration( $seconds, $chosenIntervals ) )
-                               ->inLanguage( $lang )
-                               ->text();
-               }
-
-               return $ts;
-       }
-
-       /**
-        * @since 1.20
-        *
-        * @return string
-        */
-       public function __toString() {
-               return $this->getTimestamp();
-       }
-
-       /**
-        * Calculate the difference between two MWTimestamp objects.
-        *
-        * @since 1.22
-        * @param MWTimestamp $relativeTo Base time to calculate difference from
-        * @return DateInterval|bool The DateInterval object representing the difference between the two dates or false on failure
-        */
-       public function diff( MWTimestamp $relativeTo ) {
-               return $this->timestamp->diff( $relativeTo->timestamp );
-       }
-
-       /**
-        * Set the timezone of this timestamp to the specified timezone.
-        *
-        * @since 1.22
-        * @param String $timezone Timezone to set
-        * @throws TimestampException
-        */
-       public function setTimezone( $timezone ) {
-               try {
-                       $this->timestamp->setTimezone( new DateTimeZone( $timezone ) );
-               } catch ( Exception $e ) {
-                       throw new TimestampException( __METHOD__ . ': Invalid timezone.', $e->getCode(), $e );
-               }
-       }
-
-       /**
-        * Get the timezone of this timestamp.
-        *
-        * @since 1.22
-        * @return DateTimeZone The timezone
-        */
-       public function getTimezone() {
-               return $this->timestamp->getTimezone();
-       }
-
-       /**
-        * Format the timestamp in a given format.
-        *
-        * @since 1.22
-        * @param string $format Pattern to format in
-        * @return string The formatted timestamp
-        */
-       public function format( $format ) {
-               return $this->timestamp->format( $format );
-       }
-
-       /**
-        * Get a timestamp instance in the server local timezone ($wgLocaltimezone)
-        *
-        * @since 1.22
-        * @param bool|string $ts Timestamp to set, or false for current time
-        * @return MWTimestamp the local instance
-        */
-       public static function getLocalInstance( $ts = false ) {
-               global $wgLocaltimezone;
-               $timestamp = new self( $ts );
-               $timestamp->setTimezone( $wgLocaltimezone );
-               return $timestamp;
-       }
-
-       /**
-        * Get a timestamp instance in GMT
-        *
-        * @since 1.22
-        * @param bool|string $ts Timestamp to set, or false for current time
-        * @return MWTimestamp the instance
-        */
-       public static function getInstance( $ts = false ) {
-               return new self( $ts );
-       }
-}
-
-/**
- * @since 1.20
- */
-class TimestampException extends MWException {}
diff --git a/includes/TimestampException.php b/includes/TimestampException.php
new file mode 100644 (file)
index 0000000..18f58fd
--- /dev/null
@@ -0,0 +1,6 @@
+<?php
+
+/**
+ * @since 1.20
+ */
+class TimestampException extends MWException {}
\ No newline at end of file
index f2de4b8..bdba578 100644 (file)
@@ -60,7 +60,7 @@ class Title {
        var $mUserCaseDBKey;              // /< DB key with the initial letter in the case specified by the user
        var $mNamespace = NS_MAIN;        // /< Namespace index, i.e. one of the NS_xxxx constants
        var $mInterwiki = '';             // /< Interwiki prefix
-       var $mFragment;                   // /< Title fragment (i.e. the bit after the #)
+       var $mFragment = '';              // /< Title fragment (i.e. the bit after the #)
        var $mArticleID = -1;             // /< Article ID, fetched from the link cache on demand
        var $mLatestID = false;           // /< ID of most recent revision
        var $mContentModel = false;       // /< ID of the page's content model, i.e. one of the CONTENT_MODEL_XXX constants
@@ -706,6 +706,8 @@ class Title {
        /**
         * Get the interwiki prefix
         *
+        * Use Title::isExternal to check if a interwiki is set
+        *
         * @return String Interwiki prefix
         */
        public function getInterwiki() {
@@ -1194,21 +1196,33 @@ class Title {
        /**
         * Get the Title fragment (i.e.\ the bit after the #) in text form
         *
+        * Use Title::hasFragment to check for a fragment
+        *
         * @return String Title fragment
         */
        public function getFragment() {
                return $this->mFragment;
        }
 
+       /**
+        * Check if a Title fragment is set
+        *
+        * @return bool
+        * @since 1.23
+        */
+       public function hasFragment() {
+               return $this->mFragment !== '';
+       }
+
        /**
         * Get the fragment in URL form, including the "#" character if there is one
         * @return String Fragment in URL form
         */
        public function getFragmentForURL() {
-               if ( $this->mFragment == '' ) {
+               if ( !$this->hasFragment() ) {
                        return '';
                } else {
-                       return '#' . Title::escapeFragmentForURL( $this->mFragment );
+                       return '#' . Title::escapeFragmentForURL( $this->getFragment() );
                }
        }
 
@@ -1290,8 +1304,8 @@ class Title {
         */
        public function getFullText() {
                $text = $this->getPrefixedText();
-               if ( $this->mFragment != '' ) {
-                       $text .= '#' . $this->mFragment;
+               if ( $this->hasFragment() ) {
+                       $text .= '#' . $this->getFragment();
                }
                return $text;
        }
@@ -1628,7 +1642,7 @@ class Title {
                wfProfileIn( __METHOD__ );
                if ( $this->isExternal() || $proto !== PROTO_RELATIVE ) {
                        $ret = $this->getFullURL( $query, $query2, $proto );
-               } elseif ( $this->getPrefixedText() === '' && $this->getFragment() !== '' ) {
+               } elseif ( $this->getPrefixedText() === '' && $this->hasFragment() ) {
                        $ret = $this->getFragmentForURL();
                } else {
                        $ret = $this->getLocalURL( $query, $query2 ) . $this->getFragmentForURL();
@@ -3200,7 +3214,8 @@ class Title {
                global $wgContLang, $wgLocalInterwiki;
 
                # Initialisation
-               $this->mInterwiki = $this->mFragment = '';
+               $this->mInterwiki = '';
+               $this->mFragment = '';
                $this->mNamespace = $this->mDefaultNamespace; # Usually NS_MAIN
 
                $dbkey = $this->mDbkeyform;
@@ -3295,10 +3310,6 @@ class Title {
                        break;
                } while ( true );
 
-               # We already know that some pages won't be in the database!
-               if ( $this->isExternal() || NS_SPECIAL == $this->mNamespace ) {
-                       $this->mArticleID = 0;
-               }
                $fragment = strstr( $dbkey, '#' );
                if ( false !== $fragment ) {
                        $this->setFragment( $fragment );
@@ -3368,9 +3379,9 @@ class Title {
                // there are numerous ways to present the same IP. Having sp:contribs scan
                // them all is silly and having some show the edits and others not is
                // inconsistent. Same for talk/userpages. Keep them normalized instead.
-               $dbkey = ( $this->mNamespace == NS_USER || $this->mNamespace == NS_USER_TALK )
-                       ? IP::sanitizeIP( $dbkey )
-                       : $dbkey;
+               if ( $this->mNamespace == NS_USER || $this->mNamespace == NS_USER_TALK ) {
+                       $dbkey = IP::sanitizeIP( $dbkey );
+               }
 
                // Any remaining initial :s are illegal.
                if ( $dbkey !== '' && ':' == $dbkey[0] ) {
@@ -3383,6 +3394,11 @@ class Title {
 
                $this->mTextform = str_replace( '_', ' ', $dbkey );
 
+               # We already know that some pages won't be in the database!
+               if ( $this->isExternal() || $this->mNamespace == NS_SPECIAL ) {
+                       $this->mArticleID = 0;
+               }
+
                return true;
        }
 
index ca3f79b..7f7a22d 100644 (file)
@@ -4629,20 +4629,20 @@ class User {
                        return;
                }
 
+               $defaultOptions = self::getDefaultOptions();
+
                $userId = $this->getId();
                $insert_rows = array();
-               foreach ( $saveOptions as $key => $value ) {
-                       // Don't bother storing default values
-                       $defaultOption = self::getDefaultOption( $key );
-                       if ( ( is_null( $defaultOption ) &&
-                                       !( $value === false || is_null( $value ) ) ) ||
-                                       $value != $defaultOption ) {
-                               $insert_rows[] = array(
-                                               'up_user' => $userId,
-                                               'up_property' => $key,
-                                               'up_value' => $value,
-                                       );
+               $changedOptions = array_diff_assoc( $saveOptions, $defaultOptions );
+               foreach ( $changedOptions as $key => $value ) {
+                       if ( $value === false || is_null( $value ) ) {
+                               continue;
                        }
+                       $insert_rows[] = array(
+                               'up_user' => $userId,
+                               'up_property' => $key,
+                               'up_value' => $value,
+                       );
                }
 
                $dbw = wfGetDB( DB_MASTER );
index d2fb468..fe97843 100644 (file)
@@ -113,6 +113,12 @@ class WatchedItem {
                        return;
                }
 
+               // some pages cannot be watched
+               if ( !$this->getTitle()->isWatchable() ) {
+                       $this->watched = false;
+                       return;
+               }
+
                # Pages and their talk pages are considered equivalent for watching;
                # remember that talk namespaces are numbered as page namespace+1.
 
index b42564c..a52894d 100644 (file)
@@ -1128,6 +1128,10 @@ HTML;
                        # unless the address is not sensible (e.g. private). However, prefer private
                        # IP addresses over proxy servers controlled by this site (more sensible).
                        foreach ( $ipchain as $i => $curIP ) {
+                               // ignore 'unknown' value from Squid when 'forwarded_for off' and try next
+                               if ( $curIP === 'unknown' ) {
+                                       continue;
+                               }
                                $curIP = IP::sanitizeIP( IP::canonicalize( $curIP ) );
                                if ( wfIsTrustedProxy( $curIP ) && isset( $ipchain[$i + 1] ) ) {
                                        if ( wfIsConfiguredProxy( $curIP ) || // bug 48919; treat IP as sane
index a424b9d..918fc9e 100644 (file)
@@ -619,7 +619,7 @@ class InfoAction extends FormlessAction {
         * @return array
         */
        protected static function pageCounts( Title $title ) {
-               global $wgRCMaxAge, $wgDisableCounters;
+               global $wgRCMaxAge, $wgDisableCounters, $wgMiserMode;
 
                wfProfileIn( __METHOD__ );
                $id = $title->getArticleID();
@@ -723,15 +723,19 @@ class InfoAction extends FormlessAction {
                }
 
                // Counts for the number of transclusion links (to/from)
-               $result['transclusion']['to'] = (int)$dbr->selectField(
-                       'templatelinks',
-                       'COUNT(tl_from)',
-                       array(
-                               'tl_namespace' => $title->getNamespace(),
-                               'tl_title' => $title->getDBkey()
-                       ),
-                       __METHOD__
-               );
+               if ( $wgMiserMode ) {
+                       $result['transclusion']['to'] = 0;
+               } else {
+                       $result['transclusion']['to'] = (int)$dbr->selectField(
+                               'templatelinks',
+                               'COUNT(tl_from)',
+                               array(
+                                       'tl_namespace' => $title->getNamespace(),
+                                       'tl_title' => $title->getDBkey()
+                               ),
+                               __METHOD__
+                       );
+               }
 
                $result['transclusion']['from'] = (int)$dbr->selectField(
                        'templatelinks',
index 0d733a2..4095fe6 100644 (file)
@@ -387,7 +387,7 @@ class ApiPageSet extends ApiBase {
                                'from' => strval( $titleStrFrom ),
                                'to' => $titleTo->getPrefixedText(),
                        );
-                       if ( $titleTo->getFragment() !== '' ) {
+                       if ( $titleTo->hasFragment() ) {
                                $r['tofragment'] = $titleTo->getFragment();
                        }
                        $values[] = $r;
index dc76a2d..a81a520 100644 (file)
@@ -183,10 +183,6 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                // 'case-insensitive' option is reserved for future
                $data['case'] = $GLOBALS['wgCapitalLinks'] ? 'first-letter' : 'case-sensitive';
 
-               if ( isset( $GLOBALS['wgRightsCode'] ) ) {
-                       $data['rightscode'] = $GLOBALS['wgRightsCode'];
-               }
-               $data['rights'] = $GLOBALS['wgRightsText'];
                $data['lang'] = $GLOBALS['wgLanguageCode'];
 
                $fallbacks = array();
index 83d8cae..8f93d50 100644 (file)
@@ -828,13 +828,15 @@ __INDEXATTR__;
         * so causes a DB error. This wrapper checks which tables can be locked and adjusts it accordingly.
         */
        function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__, $options = array(), $join_conds = array() ) {
-               $forUpdateKey = array_search( 'FOR UPDATE', $options );
-               if ( $forUpdateKey !== false && $join_conds ) {
-                       unset( $options[$forUpdateKey] );
-
-                       foreach ( $join_conds as $table => $join_cond ) {
-                               if ( 0 === preg_match( '/^(?:LEFT|RIGHT|FULL)(?: OUTER)? JOIN$/i', $join_cond[0] ) ) {
-                                       $options['FOR UPDATE'][] = $table;
+               if ( is_array( $options ) ) {
+                       $forUpdateKey = array_search( 'FOR UPDATE', $options );
+                       if ( $forUpdateKey !== false && $join_conds ) {
+                               unset( $options[$forUpdateKey] );
+
+                               foreach ( $join_conds as $table => $join_cond ) {
+                                       if ( 0 === preg_match( '/^(?:LEFT|RIGHT|FULL)(?: OUTER)? JOIN$/i', $join_cond[0] ) ) {
+                                               $options['FOR UPDATE'][] = $table;
+                                       }
                                }
                        }
                }
index b459b77..d6bbfbe 100644 (file)
@@ -708,7 +708,7 @@ class SwiftFileBackend extends FileBackendStore {
                $auth = $this->getAuthentication();
                if ( !$auth ) {
                        $objHdrs['x-object-meta-sha1base36'] = false;
-                       return false; // failed
+                       return $objHdrs; // failed
                }
 
                $status = Status::newGood();
@@ -726,7 +726,7 @@ class SwiftFileBackend extends FileBackendStore {
                                                'headers' => $this->authTokenHeaders( $auth ) + $objHdrs
                                        ) );
                                        if ( $rcode >= 200 && $rcode <= 299 ) {
-                                               return true; // success
+                                               return $objHdrs; // success
                                        }
                                }
                        }
@@ -734,7 +734,7 @@ class SwiftFileBackend extends FileBackendStore {
                trigger_error( "Unable to set SHA-1 metadata for $path", E_USER_WARNING );
                $objHdrs['x-object-meta-sha1base36'] = false;
 
-               return false; // failed
+               return $objHdrs; // failed
        }
 
        protected function doGetFileContentsMulti( array $params ) {
@@ -1570,11 +1570,11 @@ class SwiftFileBackend extends FileBackendStore {
         * Log an unexpected exception for this backend.
         * This also sets the Status object to have a fatal error.
         *
-        * @param Status $code null
+        * @param Status|null $status
         * @param string $func
         * @param array $params
         * @param string $err Error string
-        * @param integer $status HTTP status
+        * @param integer $code HTTP status
         * @param string $desc HTTP status description
         */
        public function onError( $status, $func, array $params, $err = '', $code = 0, $desc = '' ) {
index c95d73b..f8d017c 100644 (file)
@@ -19,11 +19,7 @@ class HTMLButtonField extends HTMLFormField {
                $attr = array(
                        'class' => 'mw-htmlform-submit ' . $this->mClass,
                        'id' => $this->mID,
-               );
-
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $attr['disabled'] = 'disabled';
-               }
+               ) + $this->getAttributes( array( 'disabled', 'tabindex' ) );
 
                return Html::input( $this->mName, $value, $this->buttonType, $attr );
        }
index 105a884..237fa32 100644 (file)
@@ -12,9 +12,7 @@ class HTMLCheckField extends HTMLFormField {
                $attr = $this->getTooltipAndAccessKey();
                $attr['id'] = $this->mID;
 
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $attr['disabled'] = 'disabled';
-               }
+               $attr += $this->getAttributes( array( 'disabled', 'tabindex' ) );
 
                if ( $this->mClass !== '' ) {
                        $attr['class'] = $this->mClass;
index 323d2d9..2fc170c 100644 (file)
@@ -82,14 +82,10 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
        function getInputHTML( $value ) {
                $html = '';
                $tableContents = '';
-               $attribs = array();
                $rows = $this->mParams['rows'];
                $columns = $this->mParams['columns'];
 
-               // If the disabled param is set, disable all the options
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $attribs['disabled'] = 'disabled';
-               }
+               $attribs = $this->getAttributes( array( 'disabled', 'tabindex' ) );
 
                // Build the column headers
                $headerContents = Html::rawElement( 'td', array(), '&#160;' );
index eeed907..622dd94 100644 (file)
@@ -484,6 +484,30 @@ abstract class HTMLFormField {
                return Linker::tooltipAndAccesskeyAttribs( $this->mParams['tooltip'] );
        }
 
+       /**
+        * Returns the given attributes from the parameters
+        *
+        * @param array $list List of attributes to get
+        * @return array Attributes
+        */
+       public function getAttributes( array $list ) {
+               static $boolAttribs = array( 'disabled', 'required', 'autofocus', 'multiple', 'readonly' );
+
+               $ret = array();
+
+               foreach( $list as $key ) {
+                       if ( in_array( $key, $boolAttribs ) ) {
+                               if ( !empty( $this->mParams[$key] ) ) {
+                                       $ret[$key] = '';
+                               }
+                       } elseif ( isset( $this->mParams[$key] ) ) {
+                               $ret[$key] = $this->mParams[$key];
+                       }
+               }
+
+               return $ret;
+       }
+
        /**
         * flatten an array of options to a single array, for instance,
         * a set of "<options>" inside "<optgroups>".
index 6b0396d..09576d4 100644 (file)
@@ -36,11 +36,7 @@ class HTMLMultiSelectField extends HTMLFormField implements HTMLNestedFilterable
        function formatOptions( $options, $value ) {
                $html = '';
 
-               $attribs = array();
-
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $attribs['disabled'] = 'disabled';
-               }
+               $attribs = $this->getAttributes( array( 'disabled', 'tabindex' ) );
 
                foreach ( $options as $label => $info ) {
                        if ( is_array( $info ) ) {
index 51e7cdd..f206ed6 100644 (file)
@@ -41,10 +41,7 @@ class HTMLRadioField extends HTMLFormField {
        function formatOptions( $options, $value ) {
                $html = '';
 
-               $attribs = array();
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $attribs['disabled'] = 'disabled';
-               }
+               $attribs = $this->getAttributes( array( 'disabled', 'tabindex' ) );
 
                # @todo Should this produce an unordered list perhaps?
                foreach ( $options as $label => $info ) {
index 7b2e865..044670d 100644 (file)
@@ -90,11 +90,15 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                        $textAttribs['class'] = $this->mClass;
                }
 
-               foreach ( array( 'required', 'autofocus', 'multiple', 'disabled' ) as $param ) {
-                       if ( isset( $this->mParams[$param] ) ) {
-                               $textAttribs[$param] = '';
-                       }
-               }
+               $allowedParams = array(
+                       'required',
+                       'autofocus',
+                       'multiple',
+                       'disabled',
+                       'tabindex'
+               );
+
+               $textAttribs += $this->getAttributes( $allowedParams );
 
                $textbox = Html::input( $this->mName . '-other', $value[2], 'text', $textAttribs );
 
index d2dd432..9d719f6 100644 (file)
@@ -37,6 +37,10 @@ class HTMLSelectField extends HTMLFormField {
                        $select->setAttribute( 'disabled', 'disabled' );
                }
 
+               if ( isset( $this->mParams['tabindex'] ) ) {
+                       $select->setAttribute( 'tabindex', $this->mParams['tabindex'] );
+               }
+
                if ( $this->mClass !== '' ) {
                        $select->setAttribute( 'class', $this->mClass );
                }
index 4e322d4..08be435 100644 (file)
@@ -47,6 +47,11 @@ class HTMLSelectOrOtherField extends HTMLTextField {
                        $tbAttribs['disabled'] = 'disabled';
                }
 
+               if ( isset( $this->mParams['tabindex'] ) ) {
+                       $select->setAttribute( 'tabindex', $this->mParams['tabindex'] );
+                       $tbAttribs['tabindex'] = $this->mParams['tabindex'];
+               }
+
                $select = $select->getHTML();
 
                if ( isset( $this->mParams['maxlength'] ) ) {
index 89e7be2..4fd1989 100644 (file)
@@ -24,23 +24,16 @@ class HTMLTextAreaField extends HTMLFormField {
                        $attribs['class'] = $this->mClass;
                }
 
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $attribs['disabled'] = 'disabled';
-               }
-
-               if ( !empty( $this->mParams['readonly'] ) ) {
-                       $attribs['readonly'] = 'readonly';
-               }
-
-               if ( isset( $this->mParams['placeholder'] ) ) {
-                       $attribs['placeholder'] = $this->mParams['placeholder'];
-               }
-
-               foreach ( array( 'required', 'autofocus' ) as $param ) {
-                       if ( isset( $this->mParams[$param] ) ) {
-                               $attribs[$param] = '';
-                       }
-               }
+               $allowedParams = array(
+                       'placeholder',
+                       'tabindex',
+                       'disabled',
+                       'readonly',
+                       'required',
+                       'autofocus'
+               );
+
+               $attribs += $this->getAttributes( $allowedParams );
 
                return Html::element( 'textarea', $attribs, $value );
        }
index fe962f4..57f0a72 100644 (file)
@@ -17,10 +17,6 @@ class HTMLTextField extends HTMLFormField {
                        $attribs['class'] = $this->mClass;
                }
 
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $attribs['disabled'] = 'disabled';
-               }
-
                # @todo Enforce pattern, step, required, readonly on the server side as
                # well
                $allowedParams = array(
@@ -31,19 +27,16 @@ class HTMLTextField extends HTMLFormField {
                        'step',
                        'placeholder',
                        'list',
-                       'maxlength'
+                       'maxlength',
+                       'tabindex',
+                       'disabled',
+                       'required',
+                       'autofocus',
+                       'multiple',
+                       'readonly'
                );
-               foreach ( $allowedParams as $param ) {
-                       if ( isset( $this->mParams[$param] ) ) {
-                               $attribs[$param] = $this->mParams[$param];
-                       }
-               }
 
-               foreach ( array( 'required', 'autofocus', 'multiple', 'readonly' ) as $param ) {
-                       if ( isset( $this->mParams[$param] ) ) {
-                               $attribs[$param] = '';
-                       }
-               }
+               $attribs += $this->getAttributes( $allowedParams );
 
                # Implement tiny differences between some field variants
                # here, rather than creating a new class for each one which
index 69fd6a3..892fb2a 100644 (file)
@@ -71,7 +71,7 @@ $1
 
 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'''.
+This program is distributed in the hope that it will be useful, but <strong>without any warranty</strong>; without even the implied warranty of <strong>merchantability</strong> or <strong>fitness for a particular purpose</strong>.
 See the GNU General Public License for more details.
 
 You should have received <doclink href=Copying>a copy of the GNU General Public License</doclink> along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, or [http://www.gnu.org/copyleft/gpl.html read it online].",
@@ -93,54 +93,54 @@ You cannot install MediaWiki.',
 However, MediaWiki requires PHP $2 or higher.',
        'config-unicode-using-utf8'       => 'Using Brion Vibber\'s utf8_normalize.so for Unicode normalization.',
        'config-unicode-using-intl'       => 'Using the [http://pecl.php.net/intl intl PECL extension] for Unicode normalization.',
-       'config-unicode-pure-php-warning' => "'''Warning:''' The [http://pecl.php.net/intl intl PECL extension] is not available to handle Unicode normalization, falling back to slow pure-PHP implementation.
+       'config-unicode-pure-php-warning' => "<strong>Warning:</strong> The [http://pecl.php.net/intl intl PECL extension] is not available to handle Unicode normalization, falling back to slow pure-PHP implementation.
 If you run a high-traffic site, you should read a little on [//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode normalization].",
-       'config-unicode-update-warning'   => "'''Warning:''' The installed version of the Unicode normalization wrapper uses an older version of [http://site.icu-project.org/ the ICU project's] library.
+       'config-unicode-update-warning'   => "<strong>Warning:</strong> The installed version of the Unicode normalization wrapper uses an older version of [http://site.icu-project.org/ the ICU project's] library.
 You should [//www.mediawiki.org/wiki/Unicode_normalization_considerations upgrade] if you are at all concerned about using Unicode.",
        'config-no-db'                    => 'Could not find a suitable database driver! You need to install a database driver for PHP.
 The following database types are supported: $1.
 
 If you compiled PHP yourself, reconfigure it with a database client enabled, for example, using <code>./configure --with-mysqli</code>.
 If you installed PHP from a Debian or Ubuntu package, then you also need to install, for example, the <code>php5-mysql</code> package.',
-       'config-outdated-sqlite'          => "'''Warning:''' you have SQLite $1, which is lower than minimum required version $2. SQLite will be unavailable.",
-       'config-no-fts3'                  => "'''Warning:''' SQLite is compiled without the [//sqlite.org/fts3.html FTS3 module], search features will be unavailable on this backend.",
-       'config-register-globals'         => "'''Warning: PHP's <code>[http://php.net/register_globals register_globals]</code> option is enabled.'''
-'''Disable it if you can.'''
+       'config-outdated-sqlite'          => "<strong>Warning:</strong> you have SQLite $1, which is lower than minimum required version $2. SQLite will be unavailable.",
+       'config-no-fts3'                  => "<strong>Warning:</strong> SQLite is compiled without the [//sqlite.org/fts3.html FTS3 module], search features will be unavailable on this backend.",
+       'config-register-globals'         => "<strong>Warning: PHP's <code>[http://php.net/register_globals register_globals]</code> option is enabled.
+Disable it if you can.</strong>
 MediaWiki will work, but your server is exposed to potential security vulnerabilities.",
-       'config-magic-quotes-runtime'     => "'''Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] is active!'''
+       'config-magic-quotes-runtime'     => "<strong>Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] is active!'</strong>
 This option corrupts data input unpredictably.
 You cannot install or use MediaWiki unless this option is disabled.",
-       'config-magic-quotes-sybase'      => "'''Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] is active!'''
+       'config-magic-quotes-sybase'      => "<strong>Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] is active!</strong>
 This option corrupts data input unpredictably.
 You cannot install or use MediaWiki unless this option is disabled.",
-       'config-mbstring'                 => "'''Fatal: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] is active!'''
+       'config-mbstring'                 => "<strong>Fatal: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] is active!</strong>
 This option causes errors and may corrupt data unpredictably.
 You cannot install or use MediaWiki unless this option is disabled.",
-       'config-safe-mode'                => "'''Warning:''' PHP's [http://www.php.net/features.safe-mode safe mode] is active.
+       'config-safe-mode'                => "<strong>Warning:</strong> PHP's [http://www.php.net/features.safe-mode safe mode] is active.
 It may cause problems, particularly if using file uploads and <code>math</code> support.",
        'config-xml-bad'                  => "PHP's XML module is missing.
 MediaWiki requires functions in this module and will not work in this configuration.
 If you're running Mandrake, install the php-xml package.",
-       'config-pcre-old'                 => "'''Fatal:''' PCRE $1 or later is required.
+       'config-pcre-old'                 => "<strong>Fatal:</strong> PCRE $1 or later is required.
 Your PHP binary is linked with PCRE $2.
 [https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE More information].",
-       'config-pcre-no-utf8'             => "'''Fatal:''' PHP's PCRE module seems to be compiled without PCRE_UTF8 support.
+       'config-pcre-no-utf8'             => "<strong>Fatal:</strong> PHP's PCRE module seems to be compiled without PCRE_UTF8 support.
 MediaWiki requires UTF-8 support to function correctly.",
        'config-memory-raised'            => "PHP's <code>memory_limit</code> is $1, raised to $2.",
-       'config-memory-bad'               => "'''Warning:''' PHP's <code>memory_limit</code> is $1.
+       'config-memory-bad'               => "<strong>Warning:</strong> PHP's <code>memory_limit</code> is $1.
 This is probably too low.
 The installation may fail!",
-       'config-ctype'                    => "'''Fatal:''' PHP must be compiled with support for the [http://www.php.net/manual/en/ctype.installation.php Ctype extension].",
-       'config-json'                     => "'''Fatal:''' PHP was compiled without JSON support.
+       'config-ctype'                    => "<strong>Fatal:</strong> PHP must be compiled with support for the [http://www.php.net/manual/en/ctype.installation.php Ctype extension].",
+       'config-json'                     => "<strong>Fatal:</strong> PHP was compiled without JSON support.
 You must install either the PHP JSON extension or the [http://pecl.php.net/package/jsonc PECL jsonc] extension before installing MediaWiki.
 * The PHP extension is included in Red Hat Enterprise Linux (CentOS) 5 and 6, though must be enabled in <code>/etc/php.ini</code> or <code>/etc/php.d/json.ini</code>.
 * Some Linux distributions released after May 2013 omit the PHP extension, instead packaging the PECL extension as <code>php5-json</code> or <code>php-pecl-jsonc</code>.",
        'config-xcache'                   => '[http://xcache.lighttpd.net/ XCache] is installed',
        'config-apc'                      => '[http://www.php.net/apc APC] is installed',
        'config-wincache'                 => '[http://www.iis.net/download/WinCacheForPhp WinCache] is installed',
-       'config-no-cache'                 => "'''Warning:''' Could not find [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] or [http://www.iis.net/download/WinCacheForPhp WinCache].
+       'config-no-cache'                 => "<strong>Warning:</strong> Could not find [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] or [http://www.iis.net/download/WinCacheForPhp WinCache].
 Object caching is not enabled.",
-       'config-mod-security'             => "'''Warning:''' Your web server has [http://modsecurity.org/ mod_security] enabled. If misconfigured, it can cause problems for MediaWiki or other software that allows users to post arbitrary content.
+       'config-mod-security'             => "<strong>Warning:</strong> Your web server has [http://modsecurity.org/ mod_security] enabled. If misconfigured, it can cause problems for MediaWiki or other software that allows users to post arbitrary content.
 Refer to [http://modsecurity.org/documentation/ mod_security documentation] or contact your host's support if you encounter random errors.",
        'config-diff3-bad'                => 'GNU diff3 not found.',
        'config-git'                      => 'Found the Git version control software: <code>$1</code>.',
@@ -151,14 +151,14 @@ Image thumbnailing will be enabled if you enable uploads.',
 Image thumbnailing will be enabled if you enable uploads.',
        'config-no-scaling'               => 'Could not find GD library or ImageMagick.
 Image thumbnailing will be disabled.',
-       'config-no-uri'                   => "'''Error:''' Could not determine the current URI.
+       'config-no-uri'                   => "<strong>Error:</strong> Could not determine the current URI.
 Installation aborted.",
-       'config-no-cli-uri'               => "'''Warning:''' No --scriptpath specified, using default: <code>$1</code>.",
+       'config-no-cli-uri'               => "<strong>Warning:</strong> No --scriptpath specified, using default: <code>$1</code>.",
        'config-using-server'             => 'Using server name "<nowiki>$1</nowiki>".',
        'config-using-uri'                => 'Using server URL "<nowiki>$1$2</nowiki>".',
-       'config-uploads-not-safe'         => "'''Warning:''' Your default directory for uploads <code>$1</code> is vulnerable to arbitrary scripts execution.
+       'config-uploads-not-safe'         => "<strong>Warning:</strong> Your default directory for uploads <code>$1</code> is vulnerable to arbitrary scripts execution.
 Although MediaWiki checks all uploaded files for security threats, it is highly recommended to [//www.mediawiki.org/wiki/Manual:Security#Upload_security close this security vulnerability] before enabling uploads.",
-       'config-no-cli-uploads-check'     => "'''Warning:''' Your default directory for uploads (<code>$1</code>) is not checked for vulnerability
+       'config-no-cli-uploads-check'     => "<strong>Warning:</strong> Your default directory for uploads (<code>$1</code>) is not checked for vulnerability
 to arbitrary script execution during the CLI install.",
        'config-brokenlibxml'             => 'Your system has a combination of PHP and libxml2 versions that is buggy and can cause hidden data corruption in MediaWiki and other web applications.
 Upgrade to libxml2 2.7.3 or later ([https://bugs.php.net/bug.php?id=45996 bug filed with PHP]).
@@ -212,24 +212,24 @@ This field is usually left empty.',
        'config-charset-mysql5-binary'    => 'MySQL 4.1/5.0 binary',
        'config-charset-mysql5'           => 'MySQL 4.1/5.0 UTF-8',
        'config-charset-mysql4'           => 'MySQL 4.0 backwards-compatible UTF-8',
-       'config-charset-help'             => "'''Warning:''' If you use '''backwards-compatible UTF-8''' on MySQL 4.1+, and subsequently back up the database with <code>mysqldump</code>, it may destroy all non-ASCII characters, irreversibly corrupting your backups!
+       'config-charset-help'             => "<strong>Warning:</strong> If you use <strong>backwards-compatible UTF-8</strong> on MySQL 4.1+, and subsequently back up the database with <code>mysqldump</code>, it may destroy all non-ASCII characters, irreversibly corrupting your backups!
 
-In '''binary mode''', MediaWiki stores UTF-8 text to the database in binary fields.
+In <strong>binary mode</strong>, MediaWiki stores UTF-8 text to the database in binary fields.
 This is more efficient than MySQL's UTF-8 mode, and allows you to use the full range of Unicode characters.
-In '''UTF-8 mode''', MySQL will know what character set your data is in, and can present and convert it appropriately,
+In <strong>UTF-8 mode</strong>, MySQL will know what character set your data is in, and can present and convert it appropriately,
 but it will not let you store characters above the [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
        'config-mysql-old'                => 'MySQL $1 or later is required. You have $2.',
        'config-db-port'                  => 'Database port:',
        'config-db-schema'                => 'Schema for MediaWiki:',
        'config-db-schema-help'           => 'This schema will usually be fine.
 Only change it if you know you need to.',
-       'config-pg-test-error'            => "Cannot connect to database '''$1''': $2",
+       'config-pg-test-error'            => "Cannot connect to database <strong>$1</strong>: $2",
        'config-sqlite-dir'               => 'SQLite data directory:',
        'config-sqlite-dir-help'          => "SQLite stores all data in a single file.
 
 The directory you provide must be writable by the webserver during installation.
 
-It should '''not''' be accessible via the web, this is why we're not putting it where your PHP files are.
+It should <strong>not</strong> be accessible via the web, this is why we're not putting it where your PHP files are.
 
 The installer will write a <code>.htaccess</code> file along with it, but if that fails someone can gain access to your raw database.
 That includes raw user data (email addresses, hashed passwords) as well as deleted revisions and other restricted data on the wiki.
@@ -305,19 +305,19 @@ Check the data directory and database name below and try again.',
        'config-sqlite-cant-create-db'    => 'Could not create database file <code>$1</code>.',
        'config-sqlite-fts3-downgrade'    => 'PHP is missing FTS3 support, downgrading tables',
        'config-can-upgrade'              => "There are MediaWiki tables in this database.
-To upgrade them to MediaWiki $1, click '''Continue'''.",
+To upgrade them to MediaWiki $1, click <strong>Continue</strong>.",
        'config-upgrade-done'             => "Upgrade complete.
 
 You can now [$1 start using your wiki].
 
 If you want to regenerate your <code>LocalSettings.php</code> file, click the button below.
-This is '''not recommended''' unless you are having problems with your wiki.",
+This is <strong>not recommended</strong> unless you are having problems with your wiki.",
        'config-upgrade-done-no-regenerate' => "Upgrade complete.
 
 You can now [$1 start using your wiki].",
        'config-regenerate'               => 'Regenerate LocalSettings.php →',
        'config-show-table-status'        => '<code>SHOW TABLE STATUS</code> query failed!',
-       'config-unknown-collation'        => "'''Warning:''' Database is using unrecognized collation.",
+       'config-unknown-collation'        => "<strong>Warning:</strong> Database is using unrecognized collation.",
        'config-db-web-account'           => 'Database account for web access',
        'config-db-web-help'              => 'Select the username and password that the web server will use to connect to the database server, during ordinary operation of the wiki.',
        'config-db-web-account-same'      => 'Use the same account as for installation',
@@ -327,30 +327,30 @@ The account you specify here must already exist.',
        'config-mysql-engine'             => 'Storage engine:',
        'config-mysql-innodb'             => 'InnoDB',
        'config-mysql-myisam'             => 'MyISAM',
-       'config-mysql-myisam-dep'         => "'''Warning:''' You have selected MyISAM as storage engine for MySQL, which is not recommended for use with MediaWiki, because:
+       'config-mysql-myisam-dep'         => "<strong>Warning:</strong> You have selected MyISAM as storage engine for MySQL, which is not recommended for use with MediaWiki, because:
 * it barely supports concurrency due to table locking
 * it is more prone to corruption than other engines
 * the MediaWiki codebase does not always handle MyISAM as it should
 
 If your MySQL installation supports InnoDB, it is highly recommended that you choose that instead.
 If your MySQL installation does not support InnoDB, maybe it's time for an upgrade.",
-       'config-mysql-only-myisam-dep'    => "'''Warning:''' MyISAM is the only available storage engine for MySQL on this machine, and this is not recommended for use with MediaWiki, because:
+       'config-mysql-only-myisam-dep'    => "<strong>Warning:</strong> MyISAM is the only available storage engine for MySQL on this machine, and this is not recommended for use with MediaWiki, because:
 * it barely supports concurrency due to table locking
 * it is more prone to corruption than other engines
 * the MediaWiki codebase does not always handle MyISAM as it should
 
 Your MySQL installation does not support InnoDB, maybe it's time for an upgrade.",
-       'config-mysql-engine-help'        => "'''InnoDB''' is almost always the best option, since it has good concurrency support.
+       'config-mysql-engine-help'        => "<strong>InnoDB</strong> is almost always the best option, since it has good concurrency support.
 
-'''MyISAM''' may be faster in single-user or read-only installations.
+<strong>MyISAM</strong> may be faster in single-user or read-only installations.
 MyISAM databases tend to get corrupted more often than InnoDB databases.",
        'config-mysql-charset'            => 'Database character set:',
        'config-mysql-binary'             => 'Binary',
        'config-mysql-utf8'               => 'UTF-8',
-       'config-mysql-charset-help'       => "In '''binary mode''', MediaWiki stores UTF-8 text to the database in binary fields.
+       'config-mysql-charset-help'       => "In <strong>binary mode</strong>, MediaWiki stores UTF-8 text to the database in binary fields.
 This is more efficient than MySQL's UTF-8 mode, and allows you to use the full range of Unicode characters.
 
-In '''UTF-8 mode''', MySQL will know what character set your data is in, and can present and convert it appropriately, but it will not let you store characters above the [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
+In <strong>UTF-8 mode</strong>, MySQL will know what character set your data is in, and can present and convert it appropriately, but it will not let you store characters above the [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
 
        'config-site-name'                => 'Name of wiki:',
        'config-site-name-help'           => "This will appear in the title bar of the browser and in various other places.",
@@ -404,11 +404,11 @@ In MediaWiki, it is easy to review the recent changes, and to revert any damage
 However, many have found MediaWiki to be useful in a wide variety of roles, and sometimes it is not easy to convince everyone of the benefits of the wiki way.
 So you have the choice.
 
-The '''{{int:config-profile-wiki}}''' model allows anyone to edit, without even logging in.
-A wiki with '''{{int:config-profile-no-anon}}''' provides extra accountability, but may deter casual contributors.
+The <strong>{{int:config-profile-wiki}}</strong> model allows anyone to edit, without even logging in.
+A wiki with <strong>{{int:config-profile-no-anon}}</strong> provides extra accountability, but may deter casual contributors.
 
-The '''{{int:config-profile-fishbowl}}''' scenario allows approved users to edit, but the public can view the pages, including history.
-A '''{{int:config-profile-private}}''' only allows approved users to view pages, with the same group allowed to edit.
+The <strong>{{int:config-profile-fishbowl}}</strong> scenario allows approved users to edit, but the public can view the pages, including history.
+A <strong>{{int:config-profile-private}}</strong> only allows approved users to view pages, with the same group allowed to edit.
 
 More complex user rights configurations are available after installation, see the [//www.mediawiki.org/wiki/Manual:User_rights relevant manual entry].",
        'config-license'                  => 'Copyright and license:',
@@ -424,7 +424,7 @@ More complex user rights configurations are available after installation, see th
 This helps to create a sense of community ownership and encourages long-term contribution.
 It is not generally necessary for a private or corporate wiki.
 
-If you want to be able to use text from Wikipedia, and you want Wikipedia to be able to accept text copied from your wiki, you should choose '''Creative Commons Attribution Share Alike'''.
+If you want to be able to use text from Wikipedia, and you want Wikipedia to be able to accept text copied from your wiki, you should choose <strong>Creative Commons Attribution Share Alike</strong>.
 
 Wikipedia previously used the GNU Free Documentation License.
 The GFDL is a valid license, but it is difficult to understand.
@@ -442,7 +442,7 @@ If you do not want any email features, you can disable them here.",
        'config-email-auth'               => 'Enable email authentication',
        'config-email-auth-help'          => "If this option is enabled, users have to confirm their email address using a link sent to them whenever they set or change it.
 Only authenticated email addresses can receive emails from other users or change notification emails.
-Setting this option is '''recommended''' for public wikis because of potential abuse of the email features.",
+Setting this option is <strong>recommended</strong> for public wikis because of potential abuse of the email features.",
        'config-email-sender'             => 'Return email address:',
        'config-email-sender-help'        => 'Enter the email address to use as the return address on outbound email.
 This is where bounces will be sent.
@@ -494,7 +494,7 @@ If you do not know the port, the default is 11211.',
        'config-extensions-help'          => 'The extensions listed above were detected in your <code>./extensions</code> directory.
 
 They may require additional configuration, but you can enable them now.',
-       'config-install-alreadydone'      => "'''Warning:''' You seem to have already installed MediaWiki and are trying to install it again.
+       'config-install-alreadydone'      => "<strong>Warning:</strong> You seem to have already installed MediaWiki and are trying to install it again.
 Please proceed to the next page.",
        'config-install-begin'            => 'By pressing "{{int:config-continue}}", you will begin the installation of MediaWiki.
 If you still want to make changes, press "{{int:config-back}}".',
@@ -522,23 +522,23 @@ MediaWiki currently requires that the tables be owned by the web user. Please sp
        'config-install-user-missing-create' => 'The specified user "$1" does not exist.
 Please click the "create account" checkbox below if you want to create it.',
        'config-install-tables'           => 'Creating tables',
-       'config-install-tables-exist'     => "'''Warning:''' MediaWiki tables seem to already exist.
+       'config-install-tables-exist'     => "<strong>Warning:</strong> MediaWiki tables seem to already exist.
 Skipping creation.",
-       'config-install-tables-failed'    => "'''Error:''' Table creation failed with the following error: $1",
+       'config-install-tables-failed'    => "<strong>Error:</strong> Table creation failed with the following error: $1",
        'config-install-interwiki'        => 'Populating default interwiki table',
        'config-install-interwiki-list'   => 'Could not read file <code>interwiki.list</code>.',
-       'config-install-interwiki-exists' => "'''Warning:''' The interwiki table seems to already have entries.
+       'config-install-interwiki-exists' => "<strong>Warning:</strong> The interwiki table seems to already have entries.
 Skipping default list.",
        'config-install-stats'            => 'Initializing statistics',
        'config-install-keys'             => 'Generating secret keys',
-       'config-insecure-keys'            => "'''Warning:''' {{PLURAL:$2|A secure key|Secure keys}} ($1) generated during installation {{PLURAL:$2|is|are}} not completely safe. Consider changing {{PLURAL:$2|it|them}} manually.",
+       'config-insecure-keys'            => "<strong>Warning:</strong> {{PLURAL:$2|A secure key|Secure keys}} ($1) generated during installation {{PLURAL:$2|is|are}} not completely safe. Consider changing {{PLURAL:$2|it|them}} manually.",
        'config-install-sysop'            => 'Creating administrator user account',
        'config-install-subscribe-fail'   => 'Unable to subscribe to mediawiki-announce: $1',
        'config-install-subscribe-notpossible' => 'cURL is not installed and allow_url_fopen is not available.',
        'config-install-mainpage'         => 'Creating main page with default content',
        'config-install-extension-tables' => 'Creating tables for enabled extensions',
        'config-install-mainpage-failed'  => 'Could not insert main page: $1',
-       'config-install-done'             => "'''Congratulations!'''
+       'config-install-done'             => "<strong>Congratulations!</strong>
 You have successfully installed MediaWiki.
 
 The installer has generated a <code>LocalSettings.php</code> file.
@@ -550,16 +550,16 @@ If the download was not offered, or if you cancelled it, you can restart the dow
 
 $3
 
-'''Note:''' If you do not do this now, this generated configuration file will not be available to you later if you exit the installation without downloading it.
+<strong>Note:</strong> If you do not do this now, this generated configuration file will not be available to you later if you exit the installation without downloading it.
 
-When that has been done, you can '''[$2 enter your wiki]'''.",
+When that has been done, you can <strong>[$2 enter your wiki]</strong>.",
        'config-download-localsettings' => 'Download <code>LocalSettings.php</code>',
        'config-help' => 'help',
        'config-nofile'     => 'File "$1" could not be found. Has it been deleted?',
        'config-extension-link' => 'Did you know that your wiki supports [//www.mediawiki.org/wiki/Manual:Extensions extensions]?
 
 You can browse [//www.mediawiki.org/wiki/Category:Extensions_by_category extensions by category] or the [//www.mediawiki.org/wiki/Extension_Matrix Extension Matrix] to see the full list of extensions.',
-       'mainpagetext'      => "'''MediaWiki has been successfully installed.'''",
+       'mainpagetext'      => "<strong>MediaWiki has been successfully installed.</strong>",
        'mainpagedocfooter' => "Consult the [//meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.
 
 == Getting started ==
index 8d93dc0..52978b8 100644 (file)
@@ -298,7 +298,7 @@ abstract class JobQueue {
        }
 
        /**
-        * Push a single jobs into the queue.
+        * Push one or more jobs into the queue.
         * This does not require $wgJobClasses to be set for the given job type.
         * Outside callers should use JobQueueGroup::push() instead of this function.
         *
index b0b6ccd..c8e5df6 100644 (file)
@@ -62,7 +62,7 @@ class BacklinkJobUtils {
         * @param int $bSize BacklinkCache partition size; usually $wgUpdateRowsPerJob
         * @param int $cSize Max titles per leaf job; Usually 1 or a modest value
         * @param array $opts Optional parameter map
-        * @return array List of Job objects
+        * @return Job[] List of Job objects
         */
        public static function partitionBacklinkJob( Job $job, $bSize, $cSize, $opts = array() ) {
                $class = get_class( $job );
index 1cc7a18..3966b9e 100644 (file)
@@ -387,7 +387,7 @@ class CoreParserFunctions {
 
                if ( !$wgRestrictDisplayTitle ) {
                        $parser->mOutput->setDisplayTitle( $text );
-               } elseif ( $title instanceof Title && $title->getFragment() == '' && $title->equals( $parser->mTitle ) ) {
+               } elseif ( $title instanceof Title && !$title->hasFragment() && $title->equals( $parser->mTitle ) ) {
                        $parser->mOutput->setDisplayTitle( $text );
                }
 
index 40c0a89..0e7c76f 100644 (file)
@@ -501,7 +501,7 @@ class LinkHolderArray {
                                // Self-link checking for mixed/different variant titles. At this point, we
                                // already know the exact title does not exist, so the link cannot be to a
                                // variant of the current title that exists as a separate page.
-                               if ( $variantTitle->equals( $parentTitle ) && $title->getFragment() === '' ) {
+                               if ( $variantTitle->equals( $parentTitle ) && !$title->hasFragment() ) {
                                        $this->internals[$ns][$index]['selflink'] = true;
                                        continue 2;
                                }
index c27c51f..9157619 100644 (file)
@@ -710,7 +710,7 @@ class Parser {
                        $t = Title::newFromText( 'NO TITLE' );
                }
 
-               if ( strval( $t->getFragment() ) !== '' ) {
+               if ( $t->hasFragment() ) {
                        # Strip the fragment to avoid various odd effects
                        $this->mTitle = clone $t;
                        $this->mTitle->setFragment( '' );
@@ -2120,7 +2120,7 @@ class Parser {
                        # Self-link checking. For some languages, variants of the title are checked in
                        # LinkHolderArray::doVariants() to allow batching the existence checks necessary
                        # for linking to a different variant.
-                       if ( $ns != NS_SPECIAL && $nt->equals( $this->mTitle ) && $nt->getFragment() === '' ) {
+                       if ( $ns != NS_SPECIAL && $nt->equals( $this->mTitle ) && !$nt->hasFragment() ) {
                                $s .= $prefix . Linker::makeSelfLinkObj( $nt, $text, '', $trail );
                                continue;
                        }
index a9d1076..424afce 100644 (file)
@@ -77,12 +77,6 @@ class ResourceLoaderUserCSSPrefsModule extends ResourceLoaderModule {
                if ( $options['justify'] ) {
                        $rules[] = "#article, #bodyContent, #mw_content { text-align: justify; }\n";
                }
-               if ( !$options['showtoc'] ) {
-                       $rules[] = "#toc { display: none; }\n";
-               }
-               if ( !$options['editsection'] ) {
-                       $rules[] = ".mw-editsection { display: none; }\n";
-               }
                if ( $options['editfont'] !== 'default' ) {
                        // Double-check that $options['editfont'] consists of safe characters only
                        if ( preg_match( '/^[a-zA-Z0-9_, -]+$/', $options['editfont'] ) ) {
index 33fcd8c..2b149cd 100644 (file)
@@ -472,7 +472,6 @@ class SearchEngine {
                }
 
                $search = new $class( $dbr );
-               $search->setLimitOffset( 0, 0 );
                return $search;
        }
 
index d5ec18c..1d17394 100644 (file)
@@ -31,20 +31,64 @@ abstract class ChangesListSpecialPage extends SpecialPage {
        var $rcSubpage, $rcOptions; // @todo Rename these, make protected
        protected $customFilters;
 
+       /**
+        * The feed format to output as (either 'rss' or 'atom'), or null if no
+        * feed output was requested
+        *
+        * @var string $feedFormat
+        */
+       protected $feedFormat;
+
        /**
         * Main execution point
-        * @todo This should totally do things
         *
         * @param string $subpage
         */
        public function execute( $subpage ) {
                $this->rcSubpage = $subpage;
-               throw new MWException( "Not implemented" );
+               $this->feedFormat = $this->including() ? null : $this->getRequest()->getVal( 'feed' );
+               if ( $this->feedFormat !== 'atom' && $this->feedFormat !== 'rss' ) {
+                       $this->feedFormat = null;
+               }
+
+               $this->setHeaders();
+               $this->outputHeader();
+               $this->addModules();
+
+               $opts = $this->getOptions();
+               // Fetch results, prepare a batch link existence check query
+               $conds = $this->buildMainQueryConds( $opts );
+               $rows = $this->doMainQuery( $conds, $opts );
+               if ( $rows === false ) {
+                       if ( !$this->including() ) {
+                               $this->doHeader( $opts );
+                       }
+
+                       return;
+               }
+
+               if ( !$this->feedFormat ) {
+                       $batch = new LinkBatch;
+                       foreach ( $rows as $row ) {
+                               $batch->add( NS_USER, $row->rc_user_text );
+                               $batch->add( NS_USER_TALK, $row->rc_user_text );
+                               $batch->add( $row->rc_namespace, $row->rc_title );
+                       }
+                       $batch->execute();
+               }
+               if ( $this->feedFormat ) {
+                       list( $changesFeed, $formatter ) = $this->getFeedObject( $this->feedFormat );
+                       /** @var ChangesFeed $changesFeed */
+                       $changesFeed->execute( $formatter, $rows, $this->checkLastModified( $this->feedFormat ), $opts );
+               } else {
+                       $this->webOutput( $rows, $opts );
+               }
+
+               $rows->free();
        }
 
        /**
         * Get the current FormOptions for this request
-        * @todo Not called by anything, should be called by execute()
         *
         * @return FormOptions
         */
@@ -142,7 +186,6 @@ abstract class ChangesListSpecialPage extends SpecialPage {
        /**
         * Return an array of conditions depending of options set in $opts
         * @todo This should build some basic conditions here…
-        * @todo Not called by anything, should be called by execute()
         *
         * @param FormOptions $opts
         * @return array
@@ -152,7 +195,6 @@ abstract class ChangesListSpecialPage extends SpecialPage {
        /**
         * Process the query
         * @todo This should build some basic processing here…
-        * @todo Not called by anything, should be called by execute()
         *
         * @param array $conds
         * @param FormOptions $opts
@@ -163,9 +205,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
        /**
         * Send output to the OutputPage object, only called if not used feeds
         * @todo This should do most, if not all, of the outputting now done by subclasses
-        * @todo Not called by anything, should be called by execute()
         *
-        * @param array $rows Database rows
+        * @param ResultWrapper $rows Database rows
         * @param FormOptions $opts
         */
        abstract public function webOutput( $rows, $opts );
@@ -278,7 +319,6 @@ abstract class ChangesListSpecialPage extends SpecialPage {
 
        /**
         * Add page-specific modules.
-        * @todo Not called by anything, should be called by execute()
         */
        protected function addModules() {
                $out = $this->getOutput();
@@ -287,6 +327,30 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                $out->addModules( 'mediawiki.special.changeslist.legend.js' );
        }
 
+       /**
+        * Return an array with a ChangesFeed object and ChannelFeed object.
+        *
+        * This is intentionally not abstract not to require subclasses which don't
+        * use feeds functionality to implement it.
+        *
+        * @param string $feedFormat Feed's format (either 'rss' or 'atom')
+        * @return array
+        */
+       public function getFeedObject( $feedFormat ) {
+               throw new MWException( "Not implemented" );
+       }
+
+       /**
+        * Get last-modified date, for client caching. Not implemented by default
+        * (returns current time).
+        *
+        * @param string $feedFormat
+        * @return string|bool
+        */
+       public function checkLastModified( $feedFormat ) {
+               return wfTimestampNow();
+       }
+
        protected function getGroupName() {
                return 'changes';
        }
index dcf5f67..792d0a6 100644 (file)
@@ -154,6 +154,7 @@ class SpecialPageFactory {
 
                // Unlisted / redirects
                'Blankpage'                 => 'SpecialBlankpage',
+               'Diff'                      => 'SpecialDiff',
                'Emailuser'                 => 'SpecialEmailUser',
                'Movepage'                  => 'MovePageForm',
                'Mycontributions'           => 'SpecialMycontributions',
index 35d6a0c..71bb27a 100644 (file)
@@ -345,6 +345,17 @@ class AllmessagesTablePager extends TablePager {
                        case 'am_title' :
                                $title = Title::makeTitle( NS_MEDIAWIKI, $value . $this->suffix );
                                $talk = Title::makeTitle( NS_MEDIAWIKI_TALK, $value . $this->suffix );
+                               $translation = Linker::makeExternalLink(
+                                       'https://translatewiki.net/w/i.php?' . wfArrayToCgi( array(
+                                               'title' => 'Special:SearchTranslations',
+                                               'group' => 'mediawiki',
+                                               'grouppath' => 'mediawiki',
+                                               'query' => 'language:' . $this->getLanguage()->getCode() . '^25 ' .
+                                                       'messageid:"MediaWiki:' . $value . '"^10 "' .
+                                                       $this->msg ( $value )->inLanguage ( 'en' )->plain() . '"'
+                                       ) ),
+                                       $this->msg( 'allmessages-filter-translate' )->text()
+                               );
 
                                if ( $this->mCurrentRow->am_customised ) {
                                        $title = Linker::linkKnown( $title, $this->getLanguage()->lcfirst( $value ) );
@@ -369,7 +380,10 @@ class AllmessagesTablePager extends TablePager {
                                        );
                                }
 
-                               return $title . ' ' . $this->msg( 'parentheses' )->rawParams( $talk )->escaped();
+                               return $title . ' '
+                               . $this->msg( 'parentheses' )->rawParams( $talk )->escaped()
+                               . ' '
+                               . $this->msg( 'parentheses' )->rawParams( $translation )->escaped();
 
                        case 'am_default' :
                        case 'am_actual' :
diff --git a/includes/specials/SpecialDiff.php b/includes/specials/SpecialDiff.php
new file mode 100644 (file)
index 0000000..bc0d7e3
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Redirect from Special:Diff/### to index.php?diff=### and
+ * from Special:Diff/###/### to index.php?oldid=###&diff=###.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ */
+
+/**
+ * Redirect from Special:Diff/### to index.php?diff=### and
+ * from Special:Diff/###/### to index.php?oldid=###&diff=###.
+ *
+ * All of the following are valid usages:
+ * - [[Special:Diff/12345]] (diff of a revision with the previous one)
+ * - [[Special:Diff/12345/prev]] (diff of a revision with the previous one as well)
+ * - [[Special:Diff/12345/next]] (diff of a revision with the next one)
+ * - [[Special:Diff/12345/cur]] (diff of a revision with the latest one of that page)
+ * - [[Special:Diff/12345/98765]] (diff between arbitrary two revisions)
+ *
+ * @ingroup SpecialPage
+ * @since 1.23
+ */
+class SpecialDiff extends RedirectSpecialPage {
+       function __construct() {
+               parent::__construct( 'Diff' );
+               $this->mAllowedRedirectParams = array();
+       }
+
+       function getRedirect( $subpage ) {
+               $parts = explode( '/', $subpage );
+
+               // Try to parse the values given, generating somewhat pretty URLs if possible
+               if ( count( $parts ) === 1 ) {
+                       $this->mAddedRedirectParams['diff'] = $parts[0];
+               } elseif ( count( $parts ) === 2 ) {
+                       $this->mAddedRedirectParams['oldid'] = $parts[0];
+                       $this->mAddedRedirectParams['diff'] = $parts[1];
+               } else {
+                       // Wrong number of parameters, bail out
+                       throw new ErrorPageError( 'nopagetitle', 'nopagetext' );
+               }
+
+               return true;
+       }
+}
index 0d4641b..f61a115 100644 (file)
@@ -44,6 +44,7 @@ class MostlinkedCategoriesPage extends QueryPage {
                        'fields' => array( 'title' => 'cat_title',
                                'namespace' => NS_CATEGORY,
                                'value' => 'cat_pages' ),
+                       'conds' => array( 'cat_pages > 0' ),
                );
        }
 
index b29b3f9..c054ef7 100644 (file)
@@ -467,7 +467,7 @@ class MovePageForm extends UnlistedSpecialPage {
                $nt = $this->newTitle;
 
                # don't allow moving to pages with # in
-               if ( !$nt || $nt->getFragment() != '' ) {
+               if ( !$nt || $nt->hasFragment() ) {
                        $this->showForm( array( array( 'badtitletext' ) ) );
 
                        return;
index 4f89c00..d0e6171 100644 (file)
  * @ingroup SpecialPage
  */
 class SpecialRecentChanges extends ChangesListSpecialPage {
-       /**
-        * The feed format to output as (either 'rss' or 'atom'), or null if no
-        * feed output was requested
-        *
-        * @var string $feedFormat
-        */
-       protected $feedFormat;
 
        public function __construct( $name = 'Recentchanges', $restriction = '' ) {
                parent::__construct( $name, $restriction );
@@ -45,51 +38,15 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
         * @param string $subpage
         */
        public function execute( $subpage ) {
-               $this->rcSubpage = $subpage;
-               $this->feedFormat = $this->including() ? null : $this->getRequest()->getVal( 'feed' );
-
-               # 10 seconds server-side caching max
+               // 10 seconds server-side caching max
                $this->getOutput()->setSquidMaxage( 10 );
-               # Check if the client has a cached version
+               // Check if the client has a cached version
                $lastmod = $this->checkLastModified( $this->feedFormat );
                if ( $lastmod === false ) {
                        return;
                }
 
-               $opts = $this->getOptions();
-               $this->setHeaders();
-               $this->outputHeader();
-               $this->addModules();
-
-               // Fetch results, prepare a batch link existence check query
-               $conds = $this->buildMainQueryConds( $opts );
-               $rows = $this->doMainQuery( $conds, $opts );
-               if ( $rows === false ) {
-                       if ( !$this->including() ) {
-                               $this->doHeader( $opts );
-                       }
-
-                       return;
-               }
-
-               if ( !$this->feedFormat ) {
-                       $batch = new LinkBatch;
-                       foreach ( $rows as $row ) {
-                               $batch->add( NS_USER, $row->rc_user_text );
-                               $batch->add( NS_USER_TALK, $row->rc_user_text );
-                               $batch->add( $row->rc_namespace, $row->rc_title );
-                       }
-                       $batch->execute();
-               }
-               if ( $this->feedFormat ) {
-                       list( $changesFeed, $formatter ) = $this->getFeedObject( $this->feedFormat );
-                       /** @var ChangesFeed $changesFeed */
-                       $changesFeed->execute( $formatter, $rows, $lastmod, $opts );
-               } else {
-                       $this->webOutput( $rows, $opts );
-               }
-
-               $rows->free();
+               parent::execute( $subpage );
        }
 
        /**
@@ -593,7 +550,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
        }
 
        /**
-        * Return an array with a ChangesFeed object and ChannelFeed object
+        * Return an array with a ChangesFeed object and ChannelFeed object.
         *
         * @param string $feedFormat Feed's format (either 'rss' or 'atom')
         * @return array
@@ -676,7 +633,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
        /**
         * Filter $rows by categories set in $opts
         *
-        * @param array $rows Database rows
+        * @param ResultWrapper $rows Database rows
         * @param FormOptions $opts
         */
        function filterByCategories( &$rows, FormOptions $opts ) {
index c8ba4ac..51d9af3 100644 (file)
@@ -73,7 +73,7 @@ class WantedCategoriesPage extends WantedQueryPage {
                        __METHOD__
                );
                foreach ( $categoryRes as $row ) {
-                       $this->currentCategoryCounts[ $row->cat_title ] = $row->cat_pages;
+                       $this->currentCategoryCounts[ $row->cat_title ] = intval( $row->cat_pages );
                }
 
                // Back to start for display
index fc48421..519b6c2 100644 (file)
  * http://www.gnu.org/copyleft/gpl.html
  *
  * @file
- * @ingroup SpecialPage Watchlist
+ * @ingroup SpecialPage
+ */
+
+/**
+ * A special page that lists last changes made to the wiki,
+ * limited to user-defined list of titles.
+ *
+ * @ingroup SpecialPage
  */
 class SpecialWatchlist extends ChangesListSpecialPage {
        /**
@@ -29,25 +36,20 @@ class SpecialWatchlist extends ChangesListSpecialPage {
        }
 
        /**
-        * Execute
-        * @param $par Parameter passed to the page
+        * Main execution point
+        *
+        * @param string $subpage
         */
-       function execute( $par ) {
-               global $wgRCShowWatchingUsers, $wgEnotifWatchlist, $wgShowUpdatedMarker;
-
-               $user = $this->getUser();
-               $output = $this->getOutput();
+       function execute( $subpage ) {
+               global $wgEnotifWatchlist, $wgShowUpdatedMarker;
 
-               # Anons don't get a watchlist
+               // Anons don't get a watchlist
                $this->requireLogin( 'watchlistanontext' );
 
-               // Check permissions
-               $this->checkPermissions();
-
+               $output = $this->getOutput();
                $request = $this->getRequest();
-               $opts = $this->getOptions();
 
-               $mode = SpecialEditWatchlist::getMode( $request, $par );
+               $mode = SpecialEditWatchlist::getMode( $request, $subpage );
                if ( $mode !== false ) {
                        if ( $mode === SpecialEditWatchlist::EDIT_RAW ) {
                                $title = SpecialPage::getTitleFor( 'EditWatchlist', 'raw' );
@@ -59,6 +61,11 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                        return;
                }
 
+               $this->checkPermissions();
+
+               $user = $this->getUser();
+               $opts = $this->getOptions();
+
                if ( ( $wgEnotifWatchlist || $wgShowUpdatedMarker ) && $request->getVal( 'reset' ) &&
                        $request->wasPosted() )
                {
@@ -67,47 +74,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                        return;
                }
 
-               $this->setHeaders();
-               $this->outputHeader();
-               $this->addModules();
-
-               $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
-
-               $this->numItems = $this->countItems( $dbr ); // TODO kill me
-               if ( $this->numItems == 0 ) {
-                       $output->addWikiMsg( 'nowatchlist' );
-                       return;
-               }
-
-               // Fetch results, prepare a batch link existence check query
-               $conds = $this->buildMainQueryConds( $opts );
-               $rows = $this->doMainQuery( $conds, $opts );
-               $this->numRows = $rows->numRows(); // TODO kill me
-               if ( $rows === false ) {
-                       $this->doHeader( $opts );
-
-                       return;
-               }
-
-               $feedFormat = $this->getRequest()->getVal( 'feed' );
-               if ( !$feedFormat ) {
-                       $batch = new LinkBatch;
-                       foreach ( $rows as $row ) {
-                               $batch->add( NS_USER, $row->rc_user_text );
-                               $batch->add( NS_USER_TALK, $row->rc_user_text );
-                               $batch->add( $row->rc_namespace, $row->rc_title );
-                       }
-                       $batch->execute();
-               }
-               if ( $feedFormat ) {
-                       list( $changesFeed, $formatter ) = $this->getFeedObject( $feedFormat );
-                       /** @var ChangesFeed $changesFeed */
-                       $changesFeed->execute( $formatter, $rows, $lastmod, $opts );
-               } else {
-                       $this->webOutput( $rows, $opts );
-               }
-
-               $rows->free();
+               parent::execute( $subpage );
        }
 
        /**
@@ -330,7 +297,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
        /**
         * Send output to the OutputPage object, only called if not used feeds
         *
-        * @param array $rows Database rows
+        * @param ResultWrapper $rows Database rows
         * @param FormOptions $opts
         */
        public function webOutput( $rows, $opts ) {
@@ -421,8 +388,6 @@ class SpecialWatchlist extends ChangesListSpecialPage {
         * @return string XHTML
         */
        public function doHeader( $opts ) {
-               global $wgScript;
-
                $user = $this->getUser();
 
                $this->setTopText( $opts );
@@ -431,7 +396,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                $wlInfo = '';
                if ( $opts['days'] > 0 ) {
                        $timestamp = wfTimestampNow();
-                       $wlInfo = $this->msg( 'wlnote' )->numParams( $this->numRows, round( $opts['days'] * 24 ) )->params(
+                       $wlInfo = $this->msg( 'wlnote2' )->numParams( round( $opts['days'] * 24 ) )->params(
                                $lang->userDate( $timestamp, $user ), $lang->userTime( $timestamp, $user ) )->parse() . "<br />\n";
                }
 
@@ -516,18 +481,25 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                $form = "";
                $user = $this->getUser();
 
-               # Show watchlist header
+               $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
+               $numItems = $this->countItems( $dbr );
+
+               // Show watchlist header
                $form .= "<p>";
-               $form .= $this->msg( 'watchlist-details' )->numParams( $this->numItems )->parse() . "\n";
-               if ( $wgEnotifWatchlist && $user->getOption( 'enotifwatchlistpages' ) ) {
-                       $form .= $this->msg( 'wlheader-enotif' )->parse() . "\n";
-               }
-               if ( $wgShowUpdatedMarker ) {
-                       $form .= $this->msg( 'wlheader-showupdated' )->parse() . "\n";
+               if ( $numItems == 0 ) {
+                       $form .= $this->msg( 'nowatchlist' )->parse() . "\n";
+               } else {
+                       $form .= $this->msg( 'watchlist-details' )->numParams( $numItems )->parse() . "\n";
+                       if ( $wgEnotifWatchlist && $user->getOption( 'enotifwatchlistpages' ) ) {
+                               $form .= $this->msg( 'wlheader-enotif' )->parse() . "\n";
+                       }
+                       if ( $wgShowUpdatedMarker ) {
+                               $form .= $this->msg( 'wlheader-showupdated' )->parse() . "\n";
+                       }
                }
                $form .= "</p>";
 
-               if ( $wgShowUpdatedMarker ) {
+               if ( $numItems > 0 && $wgShowUpdatedMarker ) {
                        $form .= Xml::openElement( 'form', array( 'method' => 'post',
                                'action' => $this->getPageTitle()->getLocalURL(),
                                'id' => 'mw-watchlist-resetbutton' ) ) . "\n" .
index 0ea1fe4..d80a2bd 100644 (file)
@@ -28,7 +28,6 @@ $messages = array(
 'tog-numberheadings' => 'رقم العناوين تلقائيا',
 'tog-showtoolbar' => 'أظهر شريط التحرير (يتطلب جافاسكربت)',
 'tog-editondblclick' => 'عدل الصفحات عند الضغط المزدوج (جافاسكربت)',
-'tog-editsection' => 'مكن تعديل الأقسام عن طريق وصلات [عدل]',
 'tog-editsectiononrightclick' => 'فعل تعديل الأقسام بواسطة كبسة الفأرة اليمين على عناوين الأقسام (جافاسكريبت)',
 'tog-showtoc' => 'اعرض فهرس المحتويات (للصفحات التي تحتوي على أكثر من 3 عناوين)',
 'tog-rememberpassword' => 'تذكر دخولي على هذا المتصفح (إلى {{PLURAL:$1||يوم واحد|يومين|$1 أيام|$1 يومًا|$1 يوم}} كحد أقصى)',
index 5c37bb8..2fc7320 100644 (file)
@@ -219,9 +219,7 @@ $messages = array(
 'tog-numberheadings' => 'Nommer opskrifte outomaties',
 'tog-showtoolbar' => 'Wys redigeergereedskap',
 'tog-editondblclick' => 'Dubbelkliek om te wysig',
-'tog-editsection' => 'Wys [wysig]-skakels vir elke afdeling',
 'tog-editsectiononrightclick' => 'Wysig afdeling met regskliek op afdeling se titel (JavaScript)',
-'tog-showtoc' => 'Wys inhoudsopgawe (by bladsye met meer as drie opskrifte)',
 'tog-rememberpassword' => "Onthou dat ek op hierdie rekenaar ingeteken het (vir 'n maksimum van $1 {{PLURAL:$1|dag|dae}})",
 'tog-watchcreations' => 'Voeg bladsye wat ek skep en lêers wat ek oplaai by my dophoulys',
 'tog-watchdefault' => 'Voeg bladsye en lêers wat ek wysig by my dophoulys',
index 7f38fec..e2fd0d6 100644 (file)
@@ -140,9 +140,7 @@ $messages = array(
 'tog-numberheadings' => 'Numerar automaticament os encabezaus',
 'tog-showtoolbar' => "Amostrar a barra de ferramientas d'edición (cal JavaScript)",
 'tog-editondblclick' => 'Activar edición de pachinas fendo-ie doble click (cal JavaScript)',
-'tog-editsection' => 'Activar a edición por seccions usando os vinclos [editar]',
 'tog-editsectiononrightclick' => "Activar a edición de seccions punchando con o botón dreito d'o ratet <br /> en os títols de seccions (cal JavaScript)",
-'tog-showtoc' => "Amostrar l'endice (ta pachinas con más de 3 seccions)",
 'tog-rememberpassword' => "Remerar o mío nombre d'usuario en iste navegador (como muito por $1 {{PLURAL:$1|día|días}})",
 'tog-watchcreations' => 'Cosirar as pachinas que creye',
 'tog-watchdefault' => 'Cosirar as pachinas que edite',
index 1d36195..6a5c707 100644 (file)
@@ -498,9 +498,7 @@ $messages = array(
 'tog-numberheadings' => 'ترقيم العناوين تلقائيا',
 'tog-showtoolbar' => 'إظهار شريط التحرير',
 'tog-editondblclick' => 'تعديل الصفحات بالنقر المزدوج',
-'tog-editsection' => 'تفعيل تعديل الأقسام بالضغط على [عدل]',
 'tog-editsectiononrightclick' => 'تفعيل تعديل الأقسام بالنقر باليمين على عناوين الأقسام',
-'tog-showtoc' => 'عرض فهرس المحتويات (للصفحات التي تحتوي على أكثر من 3 عناوين)',
 'tog-rememberpassword' => 'تذكر دخولي بهذا المتصفح (لمدة أقصاها {{PLURAL:$1||يوم واحد|يومان|$1 أيام|$1 يوما|$1 يوم}})',
 'tog-watchcreations' => 'أضف الصفحات التي أنشئها والملفات التي أرفعها إلى قائمة مراقبتي.',
 'tog-watchdefault' => 'أضف الصفحات والملفات التي أعدلها إلى قائمة مراقبتي',
@@ -4544,7 +4542,7 @@ $5
 'limitreport-postexpandincludesize' => 'بعد توسيع المساحة الشاملة',
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|بايت|بايت}}',
 'limitreport-templateargumentsize' => 'حجم نقاش القالب',
-'limitreport-templateargumentsize-value' => '$1/$2',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|بايت}}',
 'limitreport-expansiondepth' => 'أكثر عمق توسعي',
 'limitreport-expensivefunctioncount' => 'تحليل إحصاء وظيفة مكلف',
 
index d281486..883bd5d 100644 (file)
@@ -312,9 +312,7 @@ $messages = array(
 'tog-numberheadings' => 'رقم العناوين اوتوماتيك',
 'tog-showtoolbar' => 'بين شريط التعديل',
 'tog-editondblclick' => 'عدل الصفح لما تدوس مرتين',
-'tog-editsection' => 'اسمح بـ تعديل الاجزاء عن طريق لينكات [تعديل]',
 'tog-editsectiononrightclick' => 'اسمح بـ تعديل الاجزاء لما تعمل كليك يمين بـالماوس على عناوين الاجزاء',
-'tog-showtoc' => 'بين جدول المحتويات (بتاع الصفح اللى فيها اكتر من 3 عناوين)',
 'tog-rememberpassword' => ' (لمدة   $1 {{PLURAL:$1|يوم|يوم}})خليك فاكر دخولى على الكمبيوتر دا',
 'tog-watchcreations' => 'زوّد الصفح اللى ابتديتها على ليستة الصفح اللى باراقبها.',
 'tog-watchdefault' => 'زوّد الصفح اللى باعدلها على ليستة الصفح اللى باراقبها',
@@ -2296,7 +2294,7 @@ $1',
 'blanknamespace' => '(رئيسى)',
 
 # Contributions
-'contributions' => 'تعديلات اليوزر {{GENDER:$1|اليوزر|اليوزره}}',
+'contributions' => 'تعديلات {{GENDER:$1|اليوزر|اليوزره}}',
 'contributions-title' => 'مساهمات اليوزر ل$1',
 'mycontris' => 'تعديلاتى',
 'contribsub2' => 'ل{{GENDER:$3|$1}} ($2)',
@@ -2422,7 +2420,7 @@ $1',
 'range_block_disabled' => 'إمكانيةالسيسوب لمنع نطاق متعطلة.',
 'ipb_expiry_invalid' => 'تاريخ الانتهاء مش صحيح.',
 'ipb_expiry_temp' => 'عمليات منع أسماء اليوزرز المستخبية لازم تكون على طول.',
-'ipb_hide_invalid' => 'ماقدرناش نخفى الحساب دا; يمكن يكون عنده تعديلات كتيره قوى.',
+'ipb_hide_invalid' => 'ماقدرناش نخفى الحساب دا؛ هو عنده اكتر من {{PLURAL:$1|تعديل واحد|$1 تعديل}}.',
 'ipb_already_blocked' => '"$1" ممنوع فعلا',
 'ipb-needreblock' => '$1 ممنوع فعلا. عايز تغير الإعدادات؟',
 'ipb-otherblocks-header' => '{{PLURAL:$1||المنع التانى|المنعين التانيين|المنوعات التانيين}}',
index 371cb98..b2a00f6 100644 (file)
@@ -192,9 +192,7 @@ $messages = array(
 'tog-numberheadings' => 'শীৰ্ষকত স্বয়ংক্ৰিয়ভাৱে ক্ৰমিক নং দিয়ক',
 'tog-showtoolbar' => 'সম্পাদনা দণ্ডিকা দেখুৱাওক',
 'tog-editondblclick' => 'দুবাৰ ক্লিক কৰি পৃষ্ঠা সম্পাদনা কৰিব পাৰি',
-'tog-editsection' => '[সম্পাদনা] সংযোগৰ জৰিয়তে অনুচ্ছেদ সম্পাদনা কৰা সক্ৰিয় কৰক',
 'tog-editsectiononrightclick' => 'অনুচ্ছেদৰ শিৰোনামাত ৰাইট্‌ ক্লিক টিপি সম্পাদনা কৰাটো সক্ৰিয় কৰক',
-'tog-showtoc' => 'শিৰোনামাৰ সূচী দেখুৱাওক (যিবোৰ পৃষ্ঠাত তিনিটাতকৈ বেছি শিৰোনামা আছে)',
 'tog-rememberpassword' => 'মোৰ প্ৰৱেশ এই কম্পিউটাৰত মনত ৰাখক (সৰ্বাধিক $1 {{PLURAL:$1|দিনলৈ|দিনলৈ}})',
 'tog-watchcreations' => 'মই সৃষ্টি সকলো পৃষ্ঠা মোৰ লক্ষ্য-তালিকাত যোগ কৰক',
 'tog-watchdefault' => 'মই সম্পাদনা কৰা সকলো পৃষ্ঠা মোৰ লক্ষ্য-তালিকাত যোগ কৰক',
index ab2518c..1c46125 100644 (file)
@@ -74,9 +74,7 @@ $messages = array(
 'tog-numberheadings' => 'Autonumberar los encabezaos',
 'tog-showtoolbar' => "Amosar la barra de ferramientes d'edición",
 'tog-editondblclick' => 'Editar páxines con doble clic',
-'tog-editsection' => "Activar la edición de seiciones per aciu d'enllaces [editar]",
 'tog-editsectiononrightclick' => 'Activar la edición de seiciones calcando col botón drechu nos títulos de seición',
-'tog-showtoc' => 'Amosar índiz (pa páxines con más de 3 encabezaos)',
 'tog-rememberpassword' => 'Recordar la mio identificación nesti ordenador (hasta un máximu de $1 {{PLURAL:$1|día|díes}})',
 'tog-watchcreations' => 'Amestar les páxines que creo y los ficheros que cargo a la mio llista de vixilancia',
 'tog-watchdefault' => "Amestar les páxines y ficheros qu'edito a la mio llista de vixilancia",
@@ -637,6 +635,8 @@ P'acabar d'aniciar sesión, tienes de configurar equí una contraseña nueva:",
 'retypenew' => 'Vuelvi a escribir la contraseña nueva:',
 'resetpass_submit' => 'Configurar la contraseña y aniciar sesión',
 'changepassword-success' => '¡Camudóse la contraseña correutamente!',
+'changepassword-throttled' => "Ficisti demasiaos intentos d'aniciu de sesión recientes.
+Por favor espera $1 enantes d'intentalo otra vuelta.",
 'resetpass_forbidden' => 'Nun puen camudase les contraseñes',
 'resetpass-no-info' => "Tienes d'aniciar sesión pa entrar direutamente a esta páxina.",
 'resetpass-submit-loggedin' => 'Camudar la contraseña',
@@ -692,6 +692,8 @@ Contraseña temporal: $2",
 'changeemail-password' => 'La to contraseña en {{SITENAME}}:',
 'changeemail-submit' => 'Camudar el corréu electrónicu',
 'changeemail-cancel' => 'Encaboxar',
+'changeemail-throttled' => "Ficisti demasiaos intentos d'aniciu de sesión.
+Por favor espera $1 enantes d'intentalo otra vuelta.",
 
 # Special:ResetTokens
 'resettokens' => 'Reaniciar los pases',
@@ -4004,5 +4006,6 @@ En realidá cuasi tolo qu'apaeza ente llaves dobles.",
 'expand_templates_preview' => 'Vista previa',
 
 # Unknown messages
+'createaccount-hook-aborted' => '$1',
 'uploadinvalidxml' => "Nun pudo interpretase'l XML del ficheru cargáu.",
 );
index 9476383..fd69777 100644 (file)
@@ -93,9 +93,7 @@ $messages = array(
 'tog-numberheadings' => 'Başlıqların avto-nömrələnməsi',
 'tog-showtoolbar' => 'Redaktə zamanı alətlər qutusunu göstər (JavaScript)',
 'tog-editondblclick' => 'Səhifələri iki kliklə redaktə etməyə başla (JavaScript)',
-'tog-editsection' => 'Hər bir bölmə üçün [redaktə]ni mümkün et',
 'tog-editsectiononrightclick' => 'Bölmələrin redaktəsini başlıqların üzərində sağ klik etməklə mümkün et (JavaScript)',
-'tog-showtoc' => 'Mündəricat siyahısını göstər (3 başlıqdan artıq olan səhifələrdə)',
 'tog-rememberpassword' => 'Məni bu kompyuterdə xatırla (maksimum $1 {{PLURAL:$1|gün|gün}})',
 'tog-watchcreations' => 'Yaratdığım səhifələri izlədiyim səhifələrə əlavə et',
 'tog-watchdefault' => 'Redaktə etdiyim səhifələri izlədiyim səhifələrə əlavə et',
index 194e1ab..14417b1 100644 (file)
@@ -97,9 +97,7 @@ $messages = array(
 'tog-numberheadings' => 'باشلیق‌لاری اوتوماتیک نومره‌له',
 'tog-showtoolbar' => 'دَییشدیرمه آراج چوبوغونو گؤستر (جاوااسکریپت لازیم‌دیر)',
 'tog-editondblclick' => 'صحیفه‌‌لری ایکی کلیکله دَییشدیر (جاوااسکریپت لازیم‌دیر)',
-'tog-editsection' => '[دَییشدیر] باغلانتی‌سیلا بؤلوم دَییشدیرمه‌سینه ایجازه وئر',
 'tog-editsectiononrightclick' => 'بؤلوم‌لرین دیشدیرمه‌سینی، باشلیقلارین اوزرینده ساغ‌کلیک ائتمک‌له ایجازه وئر (جاوااسکریپت لازیم‌دیر)',
-'tog-showtoc' => 'ایچینده‌کیلر جدولینی گؤستر (۳-دن آرتیق باشلیقلاری اولان صحیفه‌‌لرده)',
 'tog-rememberpassword' => 'منیم گیریشیمی بو بیلگی‌سایاردا یاددا ساخلا (چوخو {{PLURAL:$1|بیر گونه|$1 گونه}} کیمی)',
 'tog-watchcreations' => 'ياراتدیغیم صحیفه‌‌لری و يوکله‌دیگیم فايل‌لاری ایزله‌مه‌لریمه آرتیر',
 'tog-watchdefault' => 'دَییشدیردیگیم صحیفه‌‌لری و فايل‌لاری ایزله‌دیکلریمه آرتیر',
index 36ca388..539f857 100644 (file)
@@ -158,9 +158,7 @@ $messages = array(
 'tog-numberheadings' => 'Башисемдәрҙе автоматик рәүештә номерлаe',
 'tog-showtoolbar' => 'Мөхәррирләгән ваҡытта өҫкө ҡоралдар панелен күрһәтергә (JavaScript кәрәк)',
 'tog-editondblclick' => 'Биттәрҙе ике сиртеү менән мөхәррирләргә',
-'tog-editsection' => 'Һәр бүлек өсөн «үҙгәртеү» һылтанмаһын күрһәтергә',
 'tog-editsectiononrightclick' => 'Бүлектәрҙе исемдәренә төрткөнөң уң яғына сиртеп үҙгәртергә',
-'tog-showtoc' => 'Эстәлек күрһәтелһен (3-тән күп башлығы булған биттәрҙә)',
 'tog-rememberpassword' => 'Был браузерҙа (иң күбендә $1 {{PLURAL:$1|көнгә}}) иҫәп яҙыуым хәтерләнһен',
 'tog-watchcreations' => 'Мин төҙөгән биттәрҙе һәм күсергән файлдарҙы күҙәтеү исемлегенә өҫтәргә',
 'tog-watchdefault' => 'Мин үҙгәрткән биттәр һәм файлдар аңлатмаһын күҙәтеү исемлегенә өҫтәргә',
index cae3c65..f96bcd2 100644 (file)
@@ -152,9 +152,7 @@ $messages = array(
 'tog-numberheadings' => 'اتوماتیک شماره کتن عناوین',
 'tog-showtoolbar' => 'میله ابزار اصلاح پیش درا(جاوا)',
 'tog-editondblclick' => 'صفحات گون دو کلیک اصلاح کن(جاوا)',
-'tog-editsection' => 'فعال کتن کسمت اصلاح از طریق لینکان  [edit]',
 'tog-editsectiononrightclick' => 'فعال کتن اصلاح کسمت گون کلیک راست اور کسمت عناوین(جاوا)',
-'tog-showtoc' => 'جدول محتوای‌ء پیش دار( په صفحیانی که گیش چه 3 عنوانش هست)',
 'tog-rememberpassword' => 'من ورود ته ای کامپیوتر هیال بکن (په $1 {{PLURAL:$1|روچ|روچ}})',
 'tog-watchcreations' => 'هور کن منی صفحاتی که من ته لیست چارگ شرکتت',
 'tog-watchdefault' => 'هورکن صفحاتی که من اصلاح کتن ته منی لیست چارگ',
index 1282609..1a4a143 100644 (file)
@@ -108,9 +108,7 @@ $messages = array(
 'tog-numberheadings' => 'Tolos-bilang na mga pamayohán',
 'tog-showtoolbar' => 'Ipahiling an barang-gamit nin pagliwat',
 'tog-editondblclick' => 'Liwaton an mga pahina sa pagdoble nin klik',
-'tog-editsection' => 'Paganaha an paghihirá kan seksyon sa paági kan [liwaton] na kilyawan',
 'tog-editsectiononrightclick' => 'Paganaha an seksyon nin pagliliwat sa pag-klik kan mga titulo nin seksyon',
-'tog-showtoc' => 'Ihayag an taytayan nin mga laog (para sa mga pahinang igwang sobra sa 3 pamayohan)',
 'tog-rememberpassword' => 'Giromdoma an sakong paglaóg sa kilyaw (browser) na ini (para sa maximum na $1 {{PLURAL:$1|aldaw|mga aldaw}})',
 'tog-watchcreations' => 'Idagdag an mga pahina na ako an nagmukna asin an mga sagunson na ako an nagkarga sa sakong bantay-listahan',
 'tog-watchdefault' => 'Idagdag an mga pahina asin mga sagunson na ako an nagliwat sa sakong bantay-listahan',
index fc79d1c..88947c8 100644 (file)
@@ -102,9 +102,7 @@ $messages = array(
 'tog-numberheadings' => 'Аўта-нумараваць падзагалоўкі',
 'tog-showtoolbar' => 'Паказваць рэдактарскую стужку (Яваскрыпт)',
 'tog-editondblclick' => 'Праўка старонак па падвойным пстрыку (Яваскрыпт)',
-'tog-editsection' => 'Праўка падраздзелаў праз спасылкі "[правіць]"',
 'tog-editsectiononrightclick' => 'Праўка падраздзелаў па правым пстрыку на загалоўку (Яваскрыпт)',
-'tog-showtoc' => 'Паказваць змест (для старонак, дзе больш за 3 падзагалоўкі)',
 'tog-rememberpassword' => 'Памятаць уваходныя даныя ў гэтым браўзеры (не даўжэй за $1 {{PLURAL:$1|дзень|дні|дзён}})',
 'tog-watchcreations' => 'Дабаўляць створаныя мною старонкі і файлы ў мой спіс назірання',
 'tog-watchdefault' => 'Дабаўляць старонкі і файлы пасля маіх правак у мой спіс назірання',
index f459b2d..bac30f3 100644 (file)
@@ -271,10 +271,8 @@ $messages = array(
 'tog-usenewrc' => 'Групаваць зьмены па старонках у апошніх зьменах і сьпісе назіраньня',
 'tog-numberheadings' => 'Аўтаматычная нумарацыя загалоўкаў',
 'tog-showtoolbar' => 'Паказваць панэль інструмэнтаў рэдагаваньня',
-'tog-editondblclick' => 'Рэдагаваць старонкі па падвойным пстрыку',
-'tog-editsection' => 'Дазволіць рэдагаваньне асобных сэкцыяў па спасылках [рэдагаваць]',
-'tog-editsectiononrightclick' => 'Рэдагаваць сэкцыі па правым пстрыку на загалоўку',
-'tog-showtoc' => 'Паказваць зьмест (для старонак з больш як 3 разьдзеламі)',
+'tog-editondblclick' => 'Рэдагаваць старонкі па падвойным націсканьні',
+'tog-editsectiononrightclick' => 'Рэдагаваць сэкцыі па націсканьні правай кнопкі мышы на загалоўку',
 'tog-rememberpassword' => 'Запомніць мяне ў гэтым браўзэры (ня больш за $1 {{PLURAL:$1|дзень|дні|дзён}})',
 'tog-watchcreations' => 'Дадаваць у мой сьпіс назіраньня створаныя мной старонкі і загружаныя файлы',
 'tog-watchdefault' => 'Дадаваць у мой сьпіс назіраньня старонкі і файлы, якія я рэдагаваў',
@@ -821,6 +819,8 @@ $2',
 'retypenew' => 'Паўтарыце новы пароль:',
 'resetpass_submit' => 'Наставіць пароль і увайсьці',
 'changepassword-success' => 'Ваш пароль быў пасьпяхова зьменены!',
+'changepassword-throttled' => 'Вы зрабілі зашмат спробаў увайсьці ў сыстэму.
+Калі ласка, пачакайце $1 перад наступнай спробай.',
 'resetpass_forbidden' => 'Пароль ня можа быць зьменены',
 'resetpass-no-info' => 'Для непасрэднага доступу да гэтай старонкі Вам неабходна ўвайсьці ў сыстэму.',
 'resetpass-submit-loggedin' => 'Зьмяніць пароль',
@@ -872,6 +872,8 @@ $2
 'changeemail-password' => 'Ваш пароль у {{GRAMMAR:месны|{{SITENAME}}}}:',
 'changeemail-submit' => 'Зьмяніць адрас электроннай пошты',
 'changeemail-cancel' => 'Скасаваць',
+'changeemail-throttled' => 'Вы зрабілі зашмат спробаў увайсьці ў сыстэму.
+Калі ласка, пачакайце $1 перад наступнай спробай.',
 
 # Special:ResetTokens
 'resettokens' => 'Скідваньне токенаў',
@@ -1130,6 +1132,9 @@ $2
 'cantcreateaccount-text' => "Стварэньне рахункаў з гэтага IP-адрасу ('''$1''') было заблякаванае [[User:$3|$3]].
 
 Прычына блякаваньня пададзеная $3: ''$2''",
+'cantcreateaccount-range-text' => "Стварэньне рахункаў з IP-адрасоў у дыяпазоне '''$1''', у які ўваходзіць ваш IP-адрас ('''$4'''), было забароненае {{GENDER:$3|ўдзельнікам|ўдзельніцай}} [[User:$3|$3]].
+
+{{GENDER:$3|Удзельнікам|Удзельніцай}} $3 была пададзеная наступная прычына: ''$2''.",
 
 # History pages
 'viewpagelogs' => 'Паказаць журналы падзеяў для гэтай старонкі',
@@ -1206,14 +1211,15 @@ $2
 'revdelete-text' => "'''Выдаленыя вэрсіі і падзеі будуць паказвацца ў гісторыі старонкі і журналах, але частка іх зьместу ня будзе даступная для звычайных удзельнікаў.'''
 Іншыя адміністратары {{GRAMMAR:родны|{{SITENAME}}}} будуць мець магчымасьць прагляду зьместу і аднаўленьня старонкі праз гэты інтэрфэйс, калі ня будуць уведзеныя дадатковыя абмежаваньні.",
 'revdelete-confirm' => 'Калі ласка, пацьвердзіце, што Вы сапраўды жадаеце зрабіць гэта, разумееце наступствы і робіце гэта ў адпаведнасьці з [[{{MediaWiki:Policy-url}}|правіламі]].',
-'revdelete-suppress-text' => "Схаваньні могуць выкарыстоўвацца '''толькі''' ў наступных выпадках:
-* Раскрыцьцё асабістых зьвестак
-*: ''хатнія адрасы, тэлефонныя нумары, нумары пашпартоў і г.д.''",
+'revdelete-suppress-text' => "Скрываньне можа выкарыстоўвацца '''толькі''' ў наступных выпадках:
+* патэнцыйна паклёпніцкая інфармацыя
+* раскрыцьцё асабістых зьвестак
+*: ''хатнія адрасы, тэлефонныя нумары, нумары пашпартоў і г. д.''",
 'revdelete-legend' => 'Усталяваць абмежаваньні бачнасьці',
-'revdelete-hide-text' => 'СÑ\85аваÑ\86Ñ\8c Ñ\82экст вэрсіі',
+'revdelete-hide-text' => 'Тэкст вэрсіі',
 'revdelete-hide-image' => 'Схаваць зьмест файла',
 'revdelete-hide-name' => 'Схаваць дзеяньне і мэту',
-'revdelete-hide-comment' => 'СÑ\85аваÑ\86Ñ\8c ÐºÐ°Ñ\80оÑ\82кае Ð°пісаньне зьменаў',
+'revdelete-hide-comment' => 'Ð\90пісаньне зьменаў',
 'revdelete-hide-user' => 'Схаваць імя/IP-адрас удзельніка',
 'revdelete-hide-restricted' => 'Ужываць гэтыя абмежаваньні таксама і для адміністратараў',
 'revdelete-radio-same' => '(не зьмяняць)',
@@ -3182,7 +3188,7 @@ $1',
 'svg-long-desc' => 'SVG-файл, намінальна $1 × $2 {{PLURAL:$2|піксэл|піксэлы|піксэлаў}}, памер файла: $3.',
 'svg-long-desc-animated' => 'Анімаваны SVG-файл, намінальна $1 × $2 {{PLURAL:$2|піксэл|піксэлы|піксэлаў}}, памер файла: $3',
 'svg-long-error' => 'Няслушны SVG-файл: $1',
-'show-big-image' => 'Ð\9dайлепÑ\88ае Ñ\80азÑ\80озÑ\8cненÑ\8cне',
+'show-big-image' => 'Ð\90Ñ\80Ñ\8bгÑ\96налÑ\8cнÑ\8b Ñ\84айл',
 'show-big-image-preview' => 'Памер прагляду: $1.',
 'show-big-image-other' => '{{PLURAL:$2|1=Іншае разрозьненьне|Іншыя разрозьненьні}}: $1.',
 'show-big-image-size' => '$1 × $2 піксэлаў',
@@ -3844,7 +3850,7 @@ $5
 'version-hook-subscribedby' => 'Падпісаны на',
 'version-version' => '(Вэрсія $1)',
 'version-svn-revision' => '(r$2)',
-'version-license' => 'Ліцэнзія',
+'version-license' => 'Ліцэнзія MediaWiki',
 'version-poweredby-credits' => "{{SITENAME}} працуе на праграмным забесьпячэньні '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'іншыя',
 'version-poweredby-translators' => 'перакладчыкі з translatewiki.net',
index 0799f63..851729d 100644 (file)
@@ -252,9 +252,7 @@ $messages = array(
 'tog-numberheadings' => 'Номериране на заглавията',
 'tog-showtoolbar' => 'Показване на инструментите за редактиране',
 'tog-editondblclick' => 'Редактиране на страниците чрез двойно щракване',
-'tog-editsection' => 'Възможност за редактиране на раздел чрез препратка [редактиране]',
 'tog-editsectiononrightclick' => 'Възможност за редактиране на раздел при щракване с десния бутон върху заглавието му',
-'tog-showtoc' => 'Показване на съдържание (за страници с повече от три раздела)',
 'tog-rememberpassword' => 'Запомяне на паролата ми в този браузър (за не повече от $1 {{PLURAL:$1|ден|дни}})',
 'tog-watchcreations' => 'Добавяне на създадените от мен страници и качените от мен файлове към списъка ми за наблюдение',
 'tog-watchdefault' => 'Добавяне на страниците, които редактирам, в списъка ми за наблюдение',
index 4d49bd7..81c4298 100644 (file)
@@ -154,9 +154,7 @@ $messages = array(
 'tog-numberheadings' => 'Bari numur judul utumatis',
 'tog-showtoolbar' => 'Tampaiakan bilah-pakakas babak (parlu ada JavaScript)',
 'tog-editondblclick' => 'Babak tutungkaran wan klik ganda (parlu ada JavaScript)',
-'tog-editsection' => "Kawa'akan pambabakan sub-hagian malalui tautan [babak]",
 'tog-editsectiononrightclick' => "Kawa'akan mambabak sub-hagian lawan mang-klik kanan pada judul hagian (parlu ada JavaScript)",
-'tog-showtoc' => 'Tampaiakan daptar isi (gasan tungkaran-tungkaran nang baisi labih dari 3 subbagian)',
 'tog-rememberpassword' => 'Ingatakan babuat log ulun pada panjalajah web ini (gasan salawas $1{{PLURAL:$1|hari|hahari}})',
 'tog-watchcreations' => 'Tambahi tungkaran nang ulun ulah ka daptar itihan',
 'tog-watchdefault' => 'Tambahi tungkaran nang ulun babak ka daptar itihan ulun',
index 06c6375..ec0657e 100644 (file)
@@ -83,9 +83,7 @@ $messages = array(
 'tog-numberheadings' => 'শিরোনামগুলোকে স্বয়ংক্রিয়ভাবে ক্রমিক নম্বর দাও',
 'tog-showtoolbar' => 'সম্পাদনা টুলবার দেখাও',
 'tog-editondblclick' => 'দুইবার ক্লিক করে পাতা সম্পাদনা',
-'tog-editsection' => '[সম্পাদনা] সংযোগের সাহায্যে পরিচ্ছেদ সম্পাদনা করার ক্ষমতা দেয়া হোক',
 'tog-editsectiononrightclick' => 'পরিচ্ছেদের শিরোনামে ডান ক্লিকের মাধ্যমে সম্পাদনা করার ক্ষমতা দেয়া হোক',
-'tog-showtoc' => 'সূচিপত্র দেখানো হোক (৩টির বেশি পরিচ্ছেদের শিরোনামবিশিষ্ট পাতার জন্য)',
 'tog-rememberpassword' => 'এই ব্রাউজারে আমার লগ ইন তথ্য (শব্দচাবি) মনে রাখো (সর্বোচ্চ $1 {{PLURAL:$1|দিনের|দিনের}} জন্য)',
 'tog-watchcreations' => 'আমার তৈরি পাতা এবং আপলোড করা ফাইলগুললো আমার নজরতালিকায় যোগ করা হোক',
 'tog-watchdefault' => 'আমার সম্পাদিত পাতা এবং ফাইলগুলো আমার নজরতালিকায় যোগ করা হোক',
@@ -625,6 +623,7 @@ $2',
 'retypenew' => 'নতুন শব্দচাবি আবার লিখুন:',
 'resetpass_submit' => 'শব্দচাবি দাও এবং লগ-ইন করো',
 'changepassword-success' => 'আপনার শব্দচাবি সাফলভাবে পরিবর্তীত হয়েছে।',
+'changepassword-throttled' => 'আপনি সম্প্রতি পরপর বেশ কয়েকবার প্রবেশের চেষ্টা করেছেন। পুনরায় চেষ্টা করার পূর্বে অনুগ্রহ করে $1 অপেক্ষা করুন।',
 'resetpass_forbidden' => 'শব্দচাবি পরিবর্তন করা সম্ভব নয়',
 'resetpass-no-info' => 'এই পাতাটিতে সরাসরি প্রবেশাধিকার পেতে আপনাকে অবশ্যই লগইন করতে হবে।',
 'resetpass-submit-loggedin' => 'শব্দচাবি পরিবর্তন',
@@ -683,6 +682,7 @@ $2
 'changeemail-password' => 'আপনার {{SITENAME}} শব্দচাবি:',
 'changeemail-submit' => 'ই-মেইল পরিবর্তন',
 'changeemail-cancel' => 'বাতিল',
+'changeemail-throttled' => 'আপনি পরপর বেশ কয়েকবার প্রবেশের চেষ্টা করেছেন। পুনরায় চেষ্টা করার পূর্বে অনুগ্রহ করে $1 অপেক্ষা করুন।',
 
 # Special:ResetTokens
 'resettokens' => 'রিসেট টোকেন',
@@ -2207,7 +2207,7 @@ $UNWATCHURL
 'exblank' => 'পাতাটি খালি ছিল',
 'delete-confirm' => '"$1" অপসারণ',
 'delete-legend' => 'অপসারণ',
-'historywarning' => "'''সতর্কীকরণ:''' যে পাতাটি আপনি মুছে ফেলতে যাচ্ছেন তার ইতিহাসের সংখ্যা প্রায় $1টি {{PLURAL:$1|সংশোধন|সংশোধন}}:",
+'historywarning' => "'''সতর্কীকরণ:''' যে পাতাটি আপনি মুছে ফেলতে যাচ্ছেন তার ইতিহাসে প্রায় $1টি {{PLURAL:$1|সংশোধন}} রয়েছে:",
 'confirmdeletetext' => 'আপনি একটি পাতা সেটির সমস্ত ইতিহাসসহ মুছে ফেলতে যাচ্ছেন।
 অনুগ্রহ করে নিশ্চিত করুন আপনি আসলেই এটি করতে চান, আপনি এর ফলাফল সম্পর্কে অবহিত, এবং আপনি [[{{MediaWiki:Policy-url}}|নীতিমালা]] মেনে এটি করছেন।',
 'actioncomplete' => 'কাজটি নিষ্পন্ন হয়েছে',
index 6f096ca..a6c665f 100644 (file)
@@ -190,9 +190,7 @@ $messages = array(
 'tog-numberheadings' => 'Niverenniñ emgefre an titloù',
 'tog-showtoolbar' => 'Diskouez ar varrenn ostilhoù aozañ',
 'tog-editondblclick' => 'Daouglikañ evit kemmañ pajennoù',
-'tog-editsection' => 'Kemmañ ur rann dre al liammoù [kemmañ]',
 'tog-editsectiononrightclick' => 'Kemmañ ur rann dre glikañ a-zehou war titl ar rann',
-'tog-showtoc' => 'Diskouez an daolenn<br /> (evit ar pennadoù zo ouzhpenn 3 rann enno)',
 'tog-rememberpassword' => "Derc'hel soñj eus ma ger-tremen war an urzhiataer-mañ (evit $1 devezh{{PLURAL:$1||}} d'ar muiañ)",
 'tog-watchcreations' => "Ouzhpennañ ar pajennoù krouet ganin da'm roll evezhiañ",
 'tog-watchdefault' => "Ouzhpennañ ar pajennoù kemmet ganin da'm roll evezhiañ",
index b7af611..4f9a24a 100644 (file)
@@ -291,9 +291,7 @@ $messages = array(
 'tog-numberheadings' => 'Automatski numeriši podnaslove',
 'tog-showtoolbar' => 'Prikaži traku s alatkama za uređivanje',
 'tog-editondblclick' => 'Izmijeni stranice dvostrukim klikom',
-'tog-editsection' => 'Omogući da mijenjam pojedinačne odjeljke putem [uredi] linka',
 'tog-editsectiononrightclick' => 'Uključite uređivanje odjeljka sa pritiskom na desno dugme miša u naslovu odjeljka',
-'tog-showtoc' => 'Prikaži sadržaj (u svim stranicama sa više od tri podnaslova)',
 'tog-rememberpassword' => 'Zapamti moju šifru u ovom pregledniku (najviše $1 {{PLURAL:$1|dan|dana}})',
 'tog-watchcreations' => 'Dodaj stranice i datoteke koje napravim na moj spisak praćenih članaka',
 'tog-watchdefault' => 'Dodaj stranice i datoteke koje uređujem na moj spisak praćenih članaka',
index 1fbf159..1508e78 100644 (file)
@@ -214,9 +214,7 @@ $messages = array(
 'tog-numberheadings' => 'Enumera automàticament els encapçalaments',
 'tog-showtoolbar' => "Mostra la barra d'eines d'edició (cal JavaScript)",
 'tog-editondblclick' => 'Edita les pàgines amb un doble clic (cal JavaScript)',
-'tog-editsection' => 'Activa la modificació de seccions mitjançant els enllaços [modifica]',
 'tog-editsectiononrightclick' => "Habilita l'edició per seccions en clicar amb el botó dret sobre els títols de les seccions (cal JavaScript)",
-'tog-showtoc' => 'Mostra la taula de continguts (per pàgines amb més de 3 seccions)',
 'tog-rememberpassword' => 'Recorda la sessió al navegador (per un màxim de {{PLURAL:$1|dia|dies}})',
 'tog-watchcreations' => 'Afegeix les pàgines que vagi creant i fitxers que carregui a la llista de seguiment',
 'tog-watchdefault' => 'Afegeix les pàgines que vagi editant a la llista de seguiment',
@@ -757,6 +755,8 @@ Si decidiu proporcionar-lo, s'utilitzarà per a reconèixer a l'usuari el seu tr
 'retypenew' => 'Torneu a escriure la nova contrasenya:',
 'resetpass_submit' => 'Definiu una contrasenya i inicieu una sessió',
 'changepassword-success' => "S'ha canviat la vostra contrasenya amb èxit!",
+'changepassword-throttled' => "Heu realitzat massa intents d'inici de sessió.
+Espereu $1 abans de tornar-ho a provar.",
 'resetpass_forbidden' => 'No poden canviar-se les contrasenyes',
 'resetpass-no-info' => "Heu d'estar registrats en un compte per a poder accedir directament a aquesta pàgina.",
 'resetpass-submit-loggedin' => 'Canvia la contrasenya',
@@ -808,6 +808,8 @@ Contrasenya temporal: $2",
 'changeemail-password' => 'La vostra contrasenya a {{SITENAME}}:',
 'changeemail-submit' => 'Canvia de correu electrònic',
 'changeemail-cancel' => 'Cancel·la',
+'changeemail-throttled' => "Heu realitzat massa intents d'inici de sessió.
+Espereu $1 abans de tornar-ho a provar.",
 
 # Special:ResetTokens
 'resettokens' => 'Reinicia els testimonis',
index b907ff6..3c62daa 100644 (file)
@@ -329,9 +329,7 @@ $messages = array(
 'tog-numberheadings' => 'Ша шех хlитто терахь корташна',
 'tog-showtoolbar' => 'Гайта лакхара гӀирсан дакъа нисйеш аттон оц тадар чохь (JavaScript)',
 'tog-editondblclick' => 'Нисйе агӀонаш шозза тӀетаӀийча (JavaScript)',
-'tog-editsection' => 'Гайта хьажораг «нисйе» аьлла хӀора агӀона',
 'tog-editsectiononrightclick' => 'Нисде дакъа шозза бакъехьар дахка тӀетаӀийча оцу кортан (JavaScript)',
-'tog-showtoc' => 'Гойти коьртнаш (оцу агlонашна лаххара 3 коьртнашца)',
 'tog-rememberpassword' => 'Даглаца сан дӀаяздар хӀокху браузеран тӀяхь (цхьан $1 {{PLURAL:$1|де|динахь|ден}})',
 'tog-watchcreations' => 'ТӀетоха ас кхоьллина агӀонаш тергаме могӀам чу',
 'tog-watchdefault' => 'ТӀетоха ас нисйина агӀонаш тергаме могӀам чу',
@@ -2484,6 +2482,8 @@ PICT # тайп тайпан
 'exif-sensingmethod' => 'Сенсоран тайп',
 'exif-filesource' => 'Файлан хьост',
 'exif-imageuniqueid' => 'Суьртан номер (ID)',
+'exif-gpslatitude' => 'Шоралла',
+'exif-gpslongitude' => 'Дохалла',
 'exif-gpsaltitude' => 'Локхалла',
 'exif-gpsdestlatitude' => 'Объектан дохалла',
 'exif-gpsdatestamp' => 'Терахь',
index 3271db1..d752e19 100644 (file)
@@ -196,9 +196,7 @@ $messages = array(
 'tog-numberheadings' => 'ژمارەکردنی خۆگەڕی سەردێڕەکان',
 'tog-showtoolbar' => 'شریتی ئامرازەکانی دەستکاری نیشان بدە (JavaScript پێویستە)',
 'tog-editondblclick' => 'دەستکاریی پەڕە بە دووکلیک لەسەر دەق (JavaScript پێویستە)',
-'tog-editsection' => 'ڕێگە بدە بۆ دەستکاری کردنی بەشەکان لە ڕێگەی بەستەرەکانی [دەستکاری]',
 'tog-editsectiononrightclick' => 'ڕێگە بدە بۆ دەستکاری کردنی بەشەکان لە ڕێگەی کلیکی ڕاست کردن لەسەر سەردێڕی بەشەکان (JavaScript پێویستە)',
-'tog-showtoc' => 'پێرستی ناوەرۆک نیشان بدە (بۆ ئەو پەڕانە کە زیاتر لە ٣ سەردێڕیان تێدایە)',
 'tog-rememberpassword' => 'چوونە ژوورەوەم لەسەر ئەم وێبگەڕە پاشەکەوت بکە (ئەو پەڕی $1 {{PLURAL:$1|ڕۆژ|ڕۆژ}}ە)',
 'tog-watchcreations' => 'ئەو پەڕانەی من دروستم کردوون و ئەو پەڕگانە من بارم کردوون زیاد بکە بە لیستی چاودێڕییەکەم',
 'tog-watchdefault' => 'ئەو پەڕانە  و ئەو پەڕگانە من دەستکاریان دەکەم زیاد بکە بە لیستی چاودێڕییەکەم',
index 8f933e6..f742c57 100644 (file)
@@ -226,6 +226,7 @@ $messages = array(
 'yourpasswordagain' => 'Ripete a parolla secreta:',
 'yourdomainname' => 'U to duminiu:',
 'login' => 'Cunnessione',
+'nav-login-createaccount' => 'Cunnessione / registramentu',
 'userlogin' => 'Cunnessione / registramentu',
 'logout' => 'Scunnessione',
 'userlogout' => 'Scunnessione',
@@ -337,7 +338,9 @@ Parechji mudelli ùn seranu micca inclusi.",
 'nextn' => '{{PLURAL:$1|siguente|siguenti $1}}',
 'prevn-title' => '{{PLURAL:$1|Risultatu precidente|$1 risultati precidenti}}',
 'nextn-title' => '{{PLURAL:$1|Risultatu|$1 risultati}}',
+'shown-title' => 'Mustrà {{PLURAL:$1|un risultatu|$1 risultati}} per pagina',
 'searchmenu-exists' => "'''Esiste nantu à u situ una pagina intitulata \"[[:\$1]]\"'''",
+'searchmenu-new' => 'Creà a pagina "[[:$1]]" annantu à \'ssu situ',
 'searchprofile-articles' => 'Pagine di cuntenuti',
 'searchprofile-project' => 'Pagine di aiutu è relative à u prugettu',
 'searchprofile-everything' => 'Tuttu',
@@ -350,6 +353,7 @@ Parechji mudelli ùn seranu micca inclusi.",
 'search-suggest' => 'Forse vulii dì',
 '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.',
 
 # Preferences page
 'preferences' => 'Preferenze',
@@ -397,11 +401,12 @@ Parechji mudelli ùn seranu micca inclusi.",
 'nchanges' => '$1 {{PLURAL:$1|mudifica|mudifiche}}',
 'recentchanges' => 'Ultimi cambiamenti',
 'recentchanges-legend' => "Ozzione per l'ultime mudifiche",
-'recentchanges-summary' => 'Sta pagina prisenta e mudifiche più recenti à u cuntenutu di u situ.',
+'recentchanges-summary' => 'Sta pagina prisenta e mudifiche più recente à u cuntenutu di u situ.',
 'recentchanges-label-newpage' => "'Ssa mudifica hà creatu una pagina nova",
 'recentchanges-label-minor' => 'Hè una mudifica minore',
 'recentchanges-label-bot' => 'Sta mudifica hè stata effettuata da un botu',
 'recentchanges-label-unpatrolled' => 'Sta mudifica ùn hè ancu stata verificata',
+'recentchanges-label-plusminus' => "A dimensione di a pagina hè stata cambiata di 'ssu numaru d'ottetti",
 'rcnotefrom' => "Quì seguitanu e mudifiche dapoi u '''$2''' ('''$1''' à u massimu).",
 'rclistfrom' => 'Mustrà e mudifiche dapoi u $1',
 'rcshowhideminor' => '$1 i cambiamenti minori',
@@ -577,8 +582,8 @@ Parechji mudelli ùn seranu micca inclusi.",
 'blanknamespace' => '(Principale)',
 
 # Contributions
-'contributions' => "Cuntribuzione di l'{{GENDER:$1|utilizatcuntributore|cuntributrice}}",
-'contributions-title' => 'Cuntribuzioni di $1',
+'contributions' => 'Mudifiche fatte da i {{GENDER:$1|cuntributori|cuntributrici}}',
+'contributions-title' => 'Cuntribuzione di $1',
 'mycontris' => 'Cuntribuzioni',
 'contribsub2' => 'Per {{GENDER:$3|$1}} ($2)',
 'month' => 'Da u mese (è nanzu):',
@@ -603,6 +608,7 @@ Parechji mudelli ùn seranu micca inclusi.",
 # Block/unblock
 'ipadressorusername' => 'Adrizzu IP o nome di cuntributore',
 'ipbreason' => 'Mutivu:',
+'ipboptions' => '2 ore:2 hours,1 ghjornu:1 day,3 ghjorni:3 days,1 sittimana:1 week,2 sittimane:2 weeks,1 mese:1 month,3 mesi:3 months,6 mesi:6 months,1 annu:1 year,infinitu:infinite',
 'ipblocklist' => 'Cuntributori bluccati',
 'blocklist-reason' => 'Mutivu',
 'ipblocklist-submit' => 'Ricerca',
@@ -666,6 +672,7 @@ Parechji mudelli ùn seranu micca inclusi.",
 'tooltip-pt-login' => 'U registramentu hè suggeritu, micca ubligatoriu',
 'tooltip-pt-logout' => 'Esce da a sessione',
 'tooltip-ca-talk' => 'Vede e discussione relative à sta pagina',
+'tooltip-ca-edit' => "Pò mudificà 'ssa pagina. Per piacè improda l'ozzione di previsualisazzione prima di salvà",
 'tooltip-ca-addsection' => 'Cumincià una nova sezzione',
 'tooltip-ca-viewsource' => 'Sta pagina hè prutetta, ma si pò vede u so codice surghjente',
 'tooltip-ca-history' => 'Versione precedente di sta pagina',
@@ -763,6 +770,7 @@ Parechji mudelli ùn seranu micca inclusi.",
 
 # Special:Version
 'version' => 'Versione',
+'version-specialpages' => 'Pagine spiciale',
 
 # Special:SpecialPages
 'specialpages' => 'Pagine spiciale',
@@ -770,6 +778,9 @@ Parechji mudelli ùn seranu micca inclusi.",
 # Special:Tags
 'tags-edit' => 'mudificà',
 
+# New logging system
+'rightsnone' => '(nessunu)',
+
 # Special:ExpandTemplates
 'expand_templates_output' => 'Risultatu',
 
index 7b6f571..c373a61 100644 (file)
@@ -375,9 +375,7 @@ $messages = array(
 'tog-numberheadings' => 'Automaticky číslovat nadpisy',
 'tog-showtoolbar' => 'Zobrazit panel nástrojů',
 'tog-editondblclick' => 'Editovat stránky dvojklikem',
-'tog-editsection' => 'Zapnout možnost editace části stránky pomocí odkazu [editovat]',
 'tog-editsectiononrightclick' => 'Umožnit editaci části stránky kliknutím pravým tlačítkem na nadpisy sekcí',
-'tog-showtoc' => 'Zobrazovat obsah (na stránkách s více než třemi nadpisy)',
 'tog-rememberpassword' => 'Zapamatovat si mé přihlášení v tomto prohlížeči (maximálně $1 {{PLURAL:$1|den|dny|dní}})',
 'tog-watchcreations' => 'Přidávat mnou založené stránky a načtené soubory ke sledovaným',
 'tog-watchdefault' => 'Přidávat mnou editované stránky a soubory ke sledovaným',
index 574057a..0a00faa 100644 (file)
@@ -129,9 +129,7 @@ $messages = array(
 'tog-numberheadings' => "Rhifo penawdau'n awtomatig",
 'tog-showtoolbar' => 'Dangos y bar offer golygu',
 'tog-editondblclick' => 'Golygu tudalennau wrth glicio ddwywaith',
-'tog-editsection' => 'Galluogi golygu adran trwy ddolennau [golygu] uwchben yr adran',
 'tog-editsectiononrightclick' => 'Galluogi golygu adran drwy dde-glicio ar bennawd yr adran',
-'tog-showtoc' => 'Dangos y daflen gynnwys (ar gyfer tudalennau sydd â mwy na 3 pennawd)',
 'tog-rememberpassword' => "Y porwr hwn i gofio'r manylion mewngofnodi (hyd at $1 {{PLURAL:$1||diwrnod|ddiwrnod|diwrnod|diwrnod|diwrnod}})",
 'tog-watchcreations' => 'Ychwanegu tudalennau at fy rhestr wylio wrth i mi eu creu a ffeiliau wrth i mi eu huwchlwytho.',
 'tog-watchdefault' => 'Ychwanegu tudalennau a ffeiliau at fy rhestr wylio wrth i mi eu golygu',
index afef71c..ac1dd4e 100644 (file)
@@ -204,9 +204,7 @@ $messages = array(
 'tog-numberheadings' => 'Automatisk nummerering af overskrifter',
 'tog-showtoolbar' => 'Vis værktøjslinje til redigering',
 'tog-editondblclick' => 'Redigér sider med dobbeltklik',
-'tog-editsection' => 'Redigér afsnit ved hjælp af [redigér]-henvisninger',
 'tog-editsectiononrightclick' => 'Redigér afsnit ved at højreklikke på deres titler',
-'tog-showtoc' => 'Vis indholdsfortegnelse (på sider med mere end tre afsnit)',
 'tog-rememberpassword' => 'Husk mig i denne browser (i højst $1 {{PLURAL:$1|dag|dage}})',
 'tog-watchcreations' => 'Tilføj sider, jeg opretter, og filer, jeg lægger op, til min overvågningsliste',
 'tog-watchdefault' => 'Tilføj sider og filer, jeg redigerer, til min overvågningsliste',
index b7ae54a..49beba2 100644 (file)
@@ -434,9 +434,7 @@ $messages = array(
 'tog-numberheadings' => 'Überschriften automatisch nummerieren',
 'tog-showtoolbar' => 'Bearbeiten-Werkzeugleiste anzeigen',
 'tog-editondblclick' => 'Seiten mit Doppelklick bearbeiten',
-'tog-editsection' => 'Links zum Bearbeiten einzelner Abschnitte anzeigen',
 'tog-editsectiononrightclick' => 'Einzelne Abschnitte per Rechtsklick bearbeiten',
-'tog-showtoc' => 'Anzeige eines Inhaltsverzeichnisses auf Seiten mit mehr als drei Überschriften',
 'tog-rememberpassword' => 'Mit diesem Browser dauerhaft angemeldet bleiben (maximal $1 {{PLURAL:$1|Tag|Tage}})',
 'tog-watchcreations' => 'Selbst erstellte Seiten und hochgeladene Dateien automatisch beobachten',
 'tog-watchdefault' => 'Selbst geänderte Seiten und Dateien automatisch beobachten',
@@ -3065,6 +3063,7 @@ Bitte besuche die Seiten [https://www.mediawiki.org/wiki/Localisation MediaWiki-
 'allmessages-prefix' => 'Präfixfilter:',
 'allmessages-language' => 'Sprache:',
 'allmessages-filter-submit' => 'Los',
+'allmessages-filter-translate' => 'Übersetzen',
 
 # Thumbnails
 'thumbnail-more' => 'vergrößern',
@@ -4335,5 +4334,6 @@ faktisch alles was in doppelten geschweiften Klammern enthalten ist.',
 'expand_templates_preview' => 'Vorschau',
 
 # Unknown messages
+'createaccount-hook-aborted' => '$1',
 'uploadinvalidxml' => 'Das XML in der hochgeladenen Datei konnte nicht geparst werden.',
 );
index 9cb654b..e12dec1 100644 (file)
@@ -341,9 +341,7 @@ $messages = array(
 'tog-numberheadings' => 'Sernuşteyan be xo numre cı şane',
 'tog-showtoolbar' => 'Toolbar virnayisi bivin (JavaScript lazımo)',
 'tog-editondblclick' => 'Per virnayisi di dilet klik bike (JavaScript lazımo)',
-'tog-editsection' => 'Vurnayışê qısımi be gıreyanê [bıvurne] ra feal ke',
 'tog-editsectiononrightclick' => 'Qısıman be tıknayışê serrêze ra ebe gocega raşte bıvurne (JavaScript lazımo)',
-'tog-showtoc' => 'Tabloyê tedeesteyan bımocne (de pelanê be hirê sernuşteyan ra vêşêri de)',
 'tog-rememberpassword' => 'Parola mı nê cıgeyrayoği de bia xo viri (seba tewr zêde $1 {{PLURAL:$1|roce|rocan}}).',
 'tog-watchcreations' => 'Pelê ke mı afernayê u dosyeyê ke mı bar kerdê lista mına seyrkerdışi ke',
 'tog-watchdefault' => 'Pel u dosyeyê ke mı vurnayê lista mına seyrkerdışi ke',
index cc27075..7f7689b 100644 (file)
@@ -170,9 +170,7 @@ $messages = array(
 'tog-numberheadings' => 'Nadpisma awtomatiski numerěrowaś',
 'tog-showtoolbar' => 'Wobźěłowańsku rědku pokazaś',
 'tog-editondblclick' => 'Boki z dwójnym kliknjenim wobźěłaś',
-'tog-editsection' => 'Wobźěłanje wótstawkow pśez wótkaze [wobźěłaś] zmóžniś',
 'tog-editsectiononrightclick' => 'Wobźěłowanje wótrězkow pśez kliknjenje z pšaweju tastu myški zmóžniś',
-'tog-showtoc' => 'Wopśimjeśe pokazaś, jolic ma bok wěcej nježli 3 nadpisma',
 'tog-rememberpassword' => 'Z toś tym wobglědowakom pśizjawjony wóstaś (za maksimalnje $1 {{PLURAL:$1|źeń|dnja|dny|dnjow}})',
 'tog-watchcreations' => 'Boki, kótarež napórajom a dataje, kótarež nagrawam, wobglědowaś',
 'tog-watchdefault' => 'Boki a dataje , kótarež změnijom, wobglědowaś',
@@ -702,6 +700,8 @@ Jolic jo pódajoš, buźo se to wužywaś, aby pśinoski pśirědowało.',
 'retypenew' => 'Nowe šćitne gronidło (hyšći raz):',
 'resetpass_submit' => 'Šćitne gronidło nastajiś a se pśizjawiś',
 'changepassword-success' => 'Twóje gronidło jo se wuspěšnje změniło!',
+'changepassword-throttled' => 'Sy pśecesto wopytał se pśizjawiś.
+Pócakaj pšosym $1, nježli až wopytajoš znowego.',
 'resetpass_forbidden' => 'Gronidła njedaju se změniś',
 'resetpass-no-info' => 'Dejš pśizjawjony byś, aby direktny pśistup na toś ten bok měł.',
 'resetpass-submit-loggedin' => 'Gronidło změniś',
@@ -753,6 +753,8 @@ Nachylne gronidło: $2',
 'changeemail-password' => 'Twójo gronidło za {{GRAMMAR:akuzatiw|{{SITENAME}}}}',
 'changeemail-submit' => 'E-mailowu adresu změniś',
 'changeemail-cancel' => 'Pśetergnuś',
+'changeemail-throttled' => 'Sy pśecesto wopytał se pśizjawiś.
+Pócakaj pšosym $1, nježli až wopytajoš znowego.',
 
 # Special:ResetTokens
 'resettokens' => 'Tokeny slědk stajiś',
@@ -3971,5 +3973,6 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 'expand_templates_preview' => 'Pśeglěd',
 
 # Unknown messages
+'createaccount-hook-aborted' => '$1',
 'uploadinvalidxml' => 'XML w nagratej dataji njedajo se parsowaś.',
 );
index dc467af..7c86a85 100644 (file)
@@ -25,9 +25,7 @@ $messages = array(
 'tog-numberheadings' => 'Cûnta automâtica di tétol ed sesiòun.',
 'tog-showtoolbar' => 'Fà vèder la bâra di strumèint ed mudéfica.',
 'tog-editondblclick' => "Mudéfica 'l pàgini cun un cléch dòpi.",
-'tog-editsection' => 'Mudéfica dal sesiòun per mèz dal colegamèint [mudéfica].',
 'tog-editsectiononrightclick' => 'Mudéfica dal sesiòun per mèz dal cléch a dréta insém al tétol.',
-'tog-showtoc' => "Fà vèder al sûnt (p'r al pàgini cun pió 'd 3 sesiòun)",
 'tog-rememberpassword' => "Tîn a mèint la cêva 'd ingrès insém a cól navigadōr ché (per un mâsim ed $1{{PLURAL:$1|dé}}).",
 'tog-watchcreations' => "Zûnta al pàgini fâti e i file carghê int i tgnû 'd ôc specêl.",
 'tog-watchdefault' => "Zûnta al pàgini e i file mudifichê int i tgnû 'd ôc specêl.",
@@ -433,7 +431,7 @@ Guêrda che soquânti pàgini a prén vèdres incòra cme s'ét fós incòra col
 'createacct-yourpasswordagain' => "Cunfērma la cêva 'd ingrès",
 'createacct-yourpasswordagain-ph' => "Tōrna mèter dèinter la cêva 'd ingrès",
 'remembermypassword' => "Tîn a mèint la cêva 'd ingrès insém a cól navigadōr ché (per un mâsim ed $1{{PLURAL:$1|dé}}).",
-'userlogin-remembermypassword' => 'Tînom coleghê',
+'userlogin-remembermypassword' => 'Sèimper coleghê',
 'userlogin-signwithsecure' => 'Drōva un colegamèint sicûr',
 'password-change-forbidden' => "An n'é mìa pusébil mudifichêr la cêva 'd ingrès insém a sté wiki.",
 'externaldberror' => "È sucès un erōr cun al terminêl ed certificasiòun ed validitê d'ed fōra, opór an 's gh'à mìa al j autorişasiòun necesâri per arnuvêr l' ingrès d'ed fōra.",
@@ -484,8 +482,8 @@ Siēlier 'n' êter nòm utèint.",
 'loginerror' => "Erōr 'd ingrès",
 'createacct-error' => "A gh'é stê un erōr ind al fêr l'utèinsa.",
 'createaccounterror' => "Imposébil fêr l'iscrisiòun: $1",
-'nocookiesnew' => "La registrasiòun  an n' é mìa finîda, e an n'é mìa stê pusébil andêr dèinter a {{SITENAME}} perchè i cookie în blûchê. Tōrna fêr l'ingrès cun al nòm e la cêva 'd ingrès apèina fât dôp avèir şbluchê i cùchi int al tó navigadōr.",
-'nocookieslogin' => "Per fêr l'ingrès a {{SITENAME}} a 's dēv druvêr i cookie che rişûlten bluchê. Tōrna fêr l'ingrès dôp avèir şbluchê i cùchi int al tó navigadōr.",
+'nocookiesnew' => "La registrasiòun  an n' é mìa finîda, e an n'é mìa stê pusébil andêr dèinter a {{SITENAME}} perchè i cookie în blûchê. Tōrna fêr l'ingrès cun al nòm e la cêva 'd ingrès apèina fât dôp avèir şbluchê i cookie int al tó navigadōr.",
+'nocookieslogin' => "Per fêr l'ingrès a {{SITENAME}} a 's dēv druvêr i cookie che rişûlten bluchê. Tōrna fêr l'ingrès dôp avèir şbluchê i cookie int al tó navigadōr.",
 'nocookiesfornew' => "L'iscrisiòun utèint an n'é mìa stêda fâta, perchè òm mìa prû cunfermêr la só urégin. Veréfica 'd avèir şbluchê i cookie, tōrna carghêr cla pàgina ché e prōva incòra.",
 'noname' => "Al nòm utèint scrét an n'é mìa vâlid.",
 'loginsuccesstitle' => 'Ingrès fât.',
@@ -494,7 +492,18 @@ Siēlier 'n' êter nòm utèint.",
 'nosuchusershort' => "An gh'é mìa registrê un utèint ciamê ''$1''. Veréfica al nòm scrét.",
 'nouserspecified' => "L'é necesâri precişêr un nòm utèint.",
 'login-userblocked' => "Cl'utèinsa ché l'é bluchêda. An n'é pusébil fêr l'ingrès.",
+'wrongpassword' => "La cêv 'd ingrès e-scréta an n'é mìa giósta. Tōrna a pruvêr.",
+'wrongpasswordempty' => "An n'é mìa stê scrét nisóna cêva 'd ingrès. Tōrna pruvêr.",
+'passwordtooshort' => "La cêva 'd ingrès la dēv avèir almēno {{PLURAL:$1|1 carâter|$1 carâter}}",
+'password-name-match' => "La cêva 'd ingrès l'an dēv mìa èser cumpâgn al nòm utèint.",
+'password-login-forbidden' => "L'ûş de sté nòm e cêva 'd ingrès l'é stê pruibî.",
 'mailmypassword' => "Tōrna mèter la cêva 'd ingrès",
+'passwordremindertitle' => "Nōva cêva 'd ingrès pruvişôria per {{SITENAME}}",
+'passwordremindertext' => "Quelchiûn (prubabilmèit té, cun l'indirés IP \$1) l'à dmandê de spidîregh 'na nōva cêva 'd ingrès a {{SITENAME}} (\$4). 'Na nōva cêva 'd ingrès pruvişôria per l'utèint \"\$2\" l'é stêda impustêda a \"\$3\". L'é necesâri fêr un ingrès al pió prèst e cambiêr la cêva 'd ingrès subét. La cêva 'd ingrès pruvişôria la scadrà dôp {{PLURAL:\$5un dé|\$5 dé}}. S' an t'é mia stê té a fêr la dmânda, opór t'é turnê a catêr la vècia cêva 'd ingrès e an 't vō pió cambiêrla, ét pō trascurêr cól mesâg ché e cuntinvêr a druvêr la vècia cêva 'd ingrès.",
+'noemail' => "Nisûn indirés ed pôsta eletrônica registrê per l'utèint $1.",
+'noemailcreate' => "L'é necesâri dêr un 'indirés ed pôsta eletrônica vâlid.",
+'passwordsent' => "'Na nōva cêva 'd ingrès l'é stêda spidîda a l'indiré ed pôsta eletrônica per l'utèint \"\$1\". Per piaşèir, fà un ingrès apèina 't la ricēv.",
+'blocked-mailpassword' => "Per pervèder abûş, an n'é mìa permès druvêr la funsiòun \"spidés 'na nōva cêva 'd ingrès\" da un indirés IP bluchê.",
 'accountcreated' => 'Ingrès fât',
 'loginlanguagelabel' => 'Léngva: $1',
 
@@ -581,9 +590,9 @@ Per cumditê còst l'é l'èlèinch dal scanşladûri e di spustamèint relatîv
 'previousrevision' => '← Versiòun pió vècia',
 'nextrevision' => 'Versiòun pió nōva →',
 'currentrevisionlink' => 'Ûltma versiòun',
-'cur' => 'cur',
+'cur' => 'adès',
 'next' => 'Còl dôp',
-'last' => 'Còl préma',
+'last' => 'préma',
 'page_first' => 'préma',
 'page_last' => 'ûltem',
 'histlegend' => "Cunfrûnt tra 'l versiòun:  sernés al caşèli cumpâgni al versiòun vrûdi e schésa Invio o al ptòun in bâs. Spiegasiòun: : '''({{int:cur}})''' = diferèinsi cun la versiòun d' adèsa, '''({{int:last}})''' = diferèinsi cun la versiòun ed préma, '''{{int:minoreditletter}}''' = mudéfica céca.",
index b7b39b7..5f0422a 100644 (file)
@@ -381,9 +381,7 @@ $messages = array(
 'tog-numberheadings' => 'Αυτόματη αρίθμηση επικεφαλίδων',
 'tog-showtoolbar' => 'Εμφάνιση μπάρας εργαλείων επεξεργασίας',
 'tog-editondblclick' => 'Επεξεργασία σελίδων με διπλό κλικ',
-'tog-editsection' => 'Ενεργοποίηση επεξεργασίας ενοτήτων μέσω των συνδέσμων [επεξεργασία]',
 'tog-editsectiononrightclick' => 'Ενεργοποίηση επεξεργασίας ενοτήτων με δεξί κλικ στους τίτλους των ενοτήτων',
-'tog-showtoc' => 'Εμφάνιση πίνακα περιεχομένων (για σελίδες με περισσότερες από τρεις κεφαλίδες)',
 'tog-rememberpassword' => 'Διατήρηση της σύνδεσής μου σε αυτόν τον περιηγητή (για μέγιστο $1 {{PLURAL:$1|ημέρας|ημερών}})',
 'tog-watchcreations' => 'Προσθήκη σελίδων που δημιουργώ και αρχείων που ανεβάζω στη λίστα παρακολούθησής μου',
 'tog-watchdefault' => 'Προσθήκη σελίδων που επεξεργάζομαι στη λίστα παρακολούθησης.',
index f9ea261..9e68ef2 100644 (file)
@@ -404,6 +404,7 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'CreateAccount' ),
        'Deadendpages'              => array( 'DeadendPages' ),
        'DeletedContributions'      => array( 'DeletedContributions' ),
+       'Diff'                      => array( 'Diff' ),
        'DoubleRedirects'           => array( 'DoubleRedirects' ),
        'EditWatchlist'             => array( 'EditWatchlist' ),
        'Emailuser'                 => array( 'EmailUser' ),
@@ -667,9 +668,7 @@ future releases. Also note that since each list value is wrapped in a unique
 'tog-numberheadings'          => 'Auto-number headings',
 'tog-showtoolbar'             => 'Show edit toolbar',
 'tog-editondblclick'          => 'Edit pages on double click',
-'tog-editsection'             => 'Enable section editing via [edit] links',
 'tog-editsectiononrightclick' => 'Enable section editing by right clicking on section titles',
-'tog-showtoc'                 => 'Show table of contents (for pages with more than 3 headings)',
 'tog-rememberpassword'        => 'Remember my login on this browser (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations'          => 'Add pages I create and files I upload to my watchlist',
 'tog-watchdefault'            => 'Add pages and files I edit to my watchlist',
@@ -782,7 +781,7 @@ future releases. Also note that since each list value is wrapped in a unique
 'category_header'                => 'Pages in category "$1"',
 'subcategories'                  => 'Subcategories',
 'category-media-header'          => 'Media in category "$1"',
-'category-empty'                 => "''This category currently contains no pages or media.''",
+'category-empty'                 => '<em>This category currently contains no pages or media.</em>',
 'hidden-categories'              => '{{PLURAL:$1|Hidden category|Hidden categories}}',
 'hidden-category-category'       => 'Hidden categories',
 'category-subcat-count'          => '{{PLURAL:$2|This category has only the following subcategory.|This category has the following {{PLURAL:$1|subcategory|$1 subcategories}}, out of $2 total.}}',
@@ -1009,7 +1008,7 @@ This may indicate a bug in the software.',
 'databaseerror-query'           => 'Query: $1',
 'databaseerror-function'        => 'Function: $1',
 'databaseerror-error'           => 'Error: $1',
-'laggedslavemode'               => "'''Warning:''' Page may not contain recent updates.",
+'laggedslavemode'               => '<strong>Warning:</strong> Page may not contain recent updates.',
 'readonly'                      => 'Database locked',
 'enterlockreason'               => 'Enter a reason for the lock, including an estimate of when the lock will be released',
 'readonlytext'                  => 'The database is currently locked to new entries and other modifications, probably for routine database maintenance, after which it will be back to normal.
@@ -1057,15 +1056,15 @@ Data here will not presently be refreshed.',
 Please try again in a few minutes.',
 'protectedpagetext'             => 'This page has been protected to prevent editing or other actions.',
 'viewsourcetext'                => 'You can view and copy the source of this page:',
-'viewyourtext'                  => "You can view and copy the source of '''your edits''' to this page:",
+'viewyourtext'                  => 'You can view and copy the source of <strong>your edits</strong> to this page:',
 'protectedinterface'            => 'This page provides interface text for the software on this wiki, and is protected to prevent abuse.
 To add or change translations for all wikis, please use [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.',
-'editinginterface'              => "'''Warning:''' You are editing a page that is used to provide interface text for the software.
+'editinginterface'              => '<strong>Warning:</strong> You are editing a page that is used to provide interface text for the software.
 Changes to this page will affect the appearance of the user interface for other users on this wiki.
-To add or change translations for all wikis, please use [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.",
+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 '''$1''' 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.',
@@ -1074,7 +1073,7 @@ $2',
 'mypreferencesprotected'        => 'You do not have permission to edit your preferences.',
 'ns-specialprotected'           => 'Special pages cannot be edited.',
 'titleprotected'                => 'This title has been protected from creation by [[User:$1|$1]].
-The reason given is "\'\'$2\'\'".',
+The reason given is "<em>$2</em>".',
 'filereadonlyerror'             => 'Unable to modify the file "$1" because the file repository "$2" is in read-only mode.
 
 The administrator who locked it offered this explanation: "$3".',
@@ -1085,12 +1084,12 @@ 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: ''$1''",
+'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'                      => "'''You are now logged out.'''
+'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.",
 'welcomeuser'                     => 'Welcome, $1!',
@@ -1181,7 +1180,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'                    => "'''You are now logged in to {{SITENAME}} as \"\$1\".'''",
+'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]].',
@@ -1387,21 +1386,21 @@ You should do it if you accidentally shared them with someone or if your account
 'showpreview'                      => 'Show preview',
 'showlivepreview'                  => 'Live preview',
 'showdiff'                         => 'Show changes',
-'anoneditwarning'                  => "'''Warning:''' You are not logged in.
+'anoneditwarning'                  => "<strong>Warning:</strong> You are not logged in.
 Your IP address will be recorded in this page's edit history.",
-'anonpreviewwarning'               => "''You are not logged in. Saving will record your IP address in this page's edit history.''",
-'missingsummary'                   => "'''Reminder:''' You have not provided an edit summary.
+'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'             => "'''Reminder:''' You have not provided a subject/headline for this comment.
+'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'                      => "'''Your username or IP address has been blocked.'''
+'blockedtext'                      => "<strong>Your username or IP address has been blocked.</strong>
 
 The block was made by $1.
-The reason given is ''$2''.
+The reason given is <em>$2</em>.
 
 * Start of block: $8
 * Expiry of block: $6
@@ -1414,7 +1413,7 @@ 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:
 
-:''$2''
+:<em>$2</em>
 
 * Start of block: $8
 * Expiry of block: $6
@@ -1437,15 +1436,15 @@ It may have been moved or deleted while you were viewing the page.',
 '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 ''[[Special:ChangePassword|change password]]'' page upon logging in.",
+'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 '''back''' button.",
+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'                 => "----
-''This is the discussion page for an anonymous user who has not created an account yet, or who does not use it.''
+<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.",
@@ -1465,42 +1464,42 @@ 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.
 The latest block log entry is provided below for reference:',
-'clearyourcache'                   => "'''Note:''' After saving, you may have to bypass your browser's cache to see the changes.
-* '''Firefox / Safari:''' Hold ''Shift'' while clicking ''Reload'', or press either ''Ctrl-F5'' or ''Ctrl-R'' (''⌘-R'' on a Mac)
-* '''Google Chrome:''' Press ''Ctrl-Shift-R'' (''⌘-Shift-R'' on a Mac)
-* '''Internet Explorer:''' Hold ''Ctrl'' while clicking ''Refresh'', or press ''Ctrl-F5''
-* '''Opera:''' Clear the cache in ''Tools → Preferences''",
-'usercssyoucanpreview'             => "'''Tip:''' Use the \"{{int:showpreview}}\" button to test your new CSS before saving.",
-'userjsyoucanpreview'              => "'''Tip:''' Use the \"{{int:showpreview}}\" button to test your new JavaScript before saving.",
-'usercsspreview'                   => "'''Remember that you are only previewing your user CSS.'''
-'''It has not yet been saved!'''",
-'userjspreview'                    => "'''Remember that you are only testing/previewing your user JavaScript.'''
-'''It has not yet been saved!'''",
-'sitecsspreview'                   => "'''Remember that you are only previewing this CSS.'''
-'''It has not yet been saved!'''",
-'sitejspreview'                    => "'''Remember that you are only previewing this JavaScript code.'''
-'''It has not yet been saved!'''",
-'userinvalidcssjstitle'            => "'''Warning:''' There is no skin \"\$1\".
+'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'                             => "'''Note:'''",
-'previewnote'                      => "'''Remember that this is only a preview.'''
+'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'             => "'''Sorry! We could not process your edit due to a loss of session data.'''
+'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'        => "'''Sorry! We could not process your edit due to a loss of session data.'''
+'session_fail_preview_html'        => "<strong>Sorry! We could not process your edit due to a loss of session data.</strong>
 
-''Because {{SITENAME}} has raw HTML enabled, the preview is hidden as a precaution against JavaScript attacks.''
+<em>Because {{SITENAME}} has raw HTML enabled, the preview is hidden as a precaution against JavaScript attacks.</em>
 
-'''If this is a legitimate edit attempt, please try again.'''
+<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'            => "'''Your edit has been rejected because your client mangled the punctuation characters in the edit token.'''
+'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'             => "'''Some parts of the edit form did not reach the server; double-check that your edits are intact and try again.'''",
+'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)',
@@ -1510,37 +1509,37 @@ This sometimes happens when you are using a buggy web-based anonymous proxy serv
 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.
-'''Only''' the text in the upper text area will be saved when you press \"{{int:savearticle}}\".",
+<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'                => "'''Warning: Your browser is not Unicode compliant.'''
+'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'                       => "'''Warning: You are editing an out-of-date revision of this page.'''
+'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.
-'''Do not submit copyrighted work without permission!'''",
+<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).
-'''Do not submit copyrighted work without permission!'''",
+<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'                    => "'''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}}.'''
+'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'                  => "'''Warning: The database has been locked for maintenance, so you will not be able to save your edits right now.'''
+'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'             => "'''Warning: This page has been protected so that only users with administrator privileges can edit it.'''
+'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'         => "'''Note:''' This page has been protected so that only registered users can edit it.
+'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'          => "'''Warning:''' 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'            => "'''Warning: This page has been protected so that [[Special:ListGroupRights|specific rights]] are needed to create it.'''
+'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:',
@@ -1558,7 +1557,7 @@ You can go back and edit an existing page, or [[Special:UserLogin|log in or crea
 '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'       => "'''Warning: You are recreating a page that was previously deleted.'''
+'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:",
@@ -1592,14 +1591,14 @@ If you are logged in, you can disable this warning in the "Editing" section of y
 'content-model-css'        => 'CSS',
 
 # Parser/template warnings
-'expensive-parserfunction-warning'        => "'''Warning:''' 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}}.",
 'expensive-parserfunction-category'       => 'Pages with too many expensive parser function calls',
-'post-expand-template-inclusion-warning'  => "'''Warning:''' Template include size is too large.
+'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'   => "'''Warning:''' This page contains at least one template argument that has a too large expansion size.
+'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]]',
@@ -1626,9 +1625,9 @@ Please check the comparison below to verify that this is what you want to do, an
 'cantcreateaccount-range-text' => "Account creation from IP addresses in the range '''$1''', which includes your IP address ('''$4'''), has been blocked by [[User:$3|$3]].
 
 The reason given by $3 is ''$2''",
-'cantcreateaccount-text' => "Account creation from this IP address ('''$1''') has been blocked by [[User:$3|$3]].
+'cantcreateaccount-text' => "Account creation from this IP address (<strong>$1</strong>) has been blocked by [[User:$3|$3]].
 
-The reason given by $3 is ''$2''",
+The reason given by $3 is <em>$2</em>",
 'createaccount-hook-aborted' => '$1', # do not translate or duplicate this message to other languages
 
 # History pages
@@ -1649,7 +1648,7 @@ The reason given by $3 is ''$2''",
 '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: '''({{int:cur}})''' = difference with latest revision, '''({{int:last}})''' = difference with preceding revision, '''{{int:minoreditletter}}''' = minor edit.",
+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
@@ -1671,30 +1670,30 @@ 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 '''deleted'''.
+'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 '''deleted'''.
+'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 '''suppressed'''.
+'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 '''deleted'''.
+'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 '''suppressed'''.
+'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 '''deleted'''.
+'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 '''deleted'''.",
-'rev-deleted-unhide-diff'     => "One of the revisions of this diff has been '''deleted'''.
+'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 '''suppressed'''.
+'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 '''deleted'''.
+'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 '''suppressed'''.
+'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',
@@ -1705,15 +1704,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'          => "'''{{PLURAL:$2|Selected revision|Selected revisions}} of [[:$1]]:'''",
-'logdelete-selected'          => "'''{{PLURAL:$1|Selected log event|Selected log events}}:'''",
-'revdelete-text'              => "'''Deleted revisions and events will still appear in the page history and logs, but parts of their content will be inaccessible to the public.'''
+'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 '''only''' 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
-*: ''home addresses and telephone numbers, national identification numbers, etc.''",
+*: <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',
@@ -1728,11 +1727,11 @@ 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'           => "'''Revision visibility successfully updated.'''",
-'revdelete-failure'           => "'''Revision visibility could not be updated:'''
+'revdelete-success'           => "<strong>Revision visibility successfully updated.</strong>",
+'revdelete-failure'           => "<strong>Revision visibility could not be updated:</strong>
 $1",
-'logdelete-success'           => "'''Log visibility successfully set.'''",
-'logdelete-failure'           => "'''Log visibility could not be set:'''
+'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',
@@ -1744,7 +1743,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'         => "'''Warning:''' 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.',
@@ -1826,8 +1825,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'                => "'''There is a page named \"[[:\$1]]\" on this wiki.''' {{PLURAL:$2|0=|See also the other search results found.}}",
-'searchmenu-new'                   => "'''Create the page \"[[:\$1]]\" on this wiki!''' {{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',
@@ -1854,9 +1853,9 @@ 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|'''1''' result|'''$1''' results}} starting with #'''$2'''.",
-'showingresultsnum'                => "Showing below {{PLURAL:$3|'''1''' result|'''$3''' results}} starting with #'''$2'''.",
-'showingresultsheader'             => "{{PLURAL:$5|Result '''$1''' of '''$3'''|Results '''$1 - $2''' of '''$3'''}} for '''$4'''",
+'showingresults'                   => "Showing below up to {{PLURAL:$1|<strong>1</strong> result|<strong>$1</strong> results}} starting with #<strong>$2</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 +2017,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 '''[[User:$1|$1]]''' $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,8 +2199,8 @@ 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'    => "(''±123'')",
-'rcnotefrom'                        => "Below are the changes since '''$2''' (up to '''$1''' shown).",
+'recentchanges-legend-plusminus'    => "(<em>±123</em>)",
+'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',
 'rcshowhidebots'                    => '$1 bots',
@@ -2235,7 +2234,7 @@ Your email address is not revealed when other users contact you.',
 '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 '''bold'''.",
+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',
 
@@ -2250,16 +2249,16 @@ Pages on [[Special:Watchlist|your watchlist]] are '''bold'''.",
 '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'     => "'''Warning: A file by that name has been deleted or moved.'''
+'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:
-* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' to use the full version of the file
-* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' to use a 200 pixel wide rendition in a box in the left margin with \"alt text\" as description
-* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' for directly linking to the file without displaying the file",
+* <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.',
@@ -2286,9 +2285,9 @@ Please rename the file and try uploading it again.',
 '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'      => "'''\".\$1\"''' is an unwanted 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'        => '\'\'\'".$1"\'\'\' {{PLURAL:$4|is not a permitted file type|are not permitted file types}}.
+'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.',
@@ -2319,12 +2318,12 @@ To make your summary appear there, you will need to manually edit it.
 * 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 ''(thumbnail)''.
+'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>.
-It seems to be an image of reduced size ''(thumbnail)''.
+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 still want to upload your file, please go back and use a new name.
@@ -2364,7 +2363,7 @@ Uploading Java files is not allowed because they can cause security restrictions
 '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 '''\"\$1\"''', which is a non-descriptive name typically assigned automatically by digital cameras.
+'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:
@@ -2422,7 +2421,7 @@ If the problem persists, contact an [[Special:ListUsers/sysop|administrator]].',
 'backend-fail-read'          => 'Could not read file "$1".',
 'backend-fail-create'        => 'Could not write file "$1".',
 'backend-fail-maxsize'       => 'Could not write file "$1" because it is larger than {{PLURAL:$2|one byte|$2 bytes}}.',
-'backend-fail-readonly'      => 'The storage backend "$1" is currently read-only. The reason given is: "\'\'$2\'\'"',
+'backend-fail-readonly'      => 'The storage backend "$1" is currently read-only. The reason given is: "<em>$2</em>"',
 'backend-fail-synced'        => 'The file "$1" is in an inconsistent state within the internal storage backends',
 'backend-fail-connect'       => 'Could not connect to storage backend "$1".',
 'backend-fail-internal'      => 'An unknown error occurred in storage backend "$1".',
@@ -2574,24 +2573,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 '''[[Media:$1|$1]]''' 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'        => "'''[[Media:$1|$1]]''' 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 '''[[Media:$1|$1]]''' along with all of its history.",
-'filedelete-intro-old'         => "You are deleting the version of '''[[Media:$1|$1]]''' 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'           => "'''$1''' has been deleted.",
-'filedelete-success-old'       => "The version of '''[[Media:$1|$1]]''' as of $3, $2 has been deleted.",
-'filedelete-nofile'            => "'''$1''' does not exist.",
-'filedelete-nofile-old'        => "There is no archived version of '''$1''' 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
@@ -2968,12 +2967,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 '''bold'''.",
+'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...',
-'wlnote'               => "Below {{PLURAL:$1|is the last change|are the last '''$1''' changes}} in the last {{PLURAL:$2|hour|'''$2''' hours}}, as of $3, $4.",
+'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',
 
@@ -3036,7 +3035,7 @@ Feedback and further assistance:
 'exblank'                => 'page was empty',
 'delete-confirm'         => 'Delete "$1"',
 'delete-legend'          => 'Delete',
-'historywarning'         => "'''Warning:''' The page you are about to delete has a history with approximately $1 {{PLURAL:$1|revision|revisions}}:",
+'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.",
@@ -3110,13 +3109,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 '''$1'''.",
+'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 '''$1''':",
+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 '''$1''':",
+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 '''$1''':",
+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',
@@ -3163,13 +3162,13 @@ 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'            => "'''The following consists of deleted revisions of [[:$1|$1]]'''.",
+'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.',
 'undelete-fieldset-title'      => 'Restore revisions',
-'undeleteextrahelp'            => "To restore the page's entire history, leave all checkboxes deselected and click '''''{{int:undeletebtn}}'''''.
-To perform a selective restoration, check the boxes corresponding to the revisions to be restored, and click '''''{{int:undeletebtn}}'''''.",
+'undeleteextrahelp'            => "To restore the page's entire history, leave all checkboxes deselected and click <strong><em>{{int:undeletebtn}}</em></strong>.
+To perform a selective restoration, check the boxes corresponding to the revisions to be restored, and click <strong><em>{{int:undeletebtn}}</em></strong>.",
 'undeleterevisions'            => '$1 {{PLURAL:$1|revision|revisions}} archived',
 'undeletehistory'              => 'If you restore the page, all revisions will be restored to the history.
 If a new page with the same name has been created since the deletion, the restored revisions will appear in the prior history.',
@@ -3192,7 +3191,7 @@ 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'                => "'''$1 has been restored'''
+'undeletedpage'                => "<strong>$1 has been restored</strong>
 
 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.',
@@ -3261,9 +3260,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 '''[[:$1]]''':",
-'nolinkshere'              => "No pages link to '''[[:$1]]'''.",
-'nolinkshere-ns'           => "No pages link to '''[[:$1]]''' 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',
@@ -3359,7 +3358,7 @@ See the [[Special:BlockList|block list]] to review blocks.',
 'contribslink'                    => 'contribs',
 'emaillink'                       => 'send email',
 'autoblocker'                     => 'Autoblocked because your IP address has been recently used by "[[User:$1|$1]]".
-The reason given for $1\'s block is "\'\'$2\'\'"',
+The reason given for $1\'s block is "<em>$2</em>"',
 'blocklogpage'                    => 'Block log',
 'blocklog-showlog'                => 'This user has been blocked previously.
 The block log is provided below for reference:',
@@ -3437,10 +3436,10 @@ 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]].
 You are responsible for making sure that links continue to point where they are supposed to go.
 
-Note that the page will '''not''' be moved if there is already a page at the new title, unless the latter is a redirect and has no past edit history.
+Note that the page will <strong>not</strong> be moved if there is already a page at the new title, unless the latter is a redirect and has no past edit history.
 This means that you can rename a page back to where it was renamed from if you make a mistake, and you cannot overwrite an existing page.
 
-'''Warning!'''
+<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.
@@ -3448,19 +3447,19 @@ 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.
 
-Note that the page will '''not''' be moved if there is already a page at the new title, unless it is a redirect and has no past edit history.
+Note that the page will <strong>not</strong> be moved if there is already a page at the new title, unless it is a redirect and has no past edit history.
 This means that you can rename a page back to where it was renamed from if you make a mistake, and you cannot overwrite an existing page.
 
-'''Warning!'''
+<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 '''unless:'''
+'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.",
 'movearticle'                  => 'Move page:',
-'moveuserpage-warning'         => "'''Warning:''' You are about to move a user page. Please note that only the page will be moved and the user will ''not'' 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.',
@@ -3470,7 +3469,7 @@ In those cases, you will have to move or merge the page manually if desired.",
 'move-watch'                   => 'Watch source page and target page',
 'movepagebtn'                  => 'Move page',
 'pagemovedsub'                 => 'Move succeeded',
-'movepage-moved'               => '\'\'\'"$1" has been moved to "$2"\'\'\'',
+'movepage-moved'               => '<strong>"$1" has been moved to "$2"</strong>',
 'movepage-moved-redirect'      => 'A redirect has been created.',
 'movepage-moved-noredirect'    => 'The creation of a redirect has been suppressed.',
 'articleexists'                => 'A page of that name already exists, or the name you have chosen is not valid.
@@ -3511,9 +3510,9 @@ 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'     => "'''Warning:''' This page has been protected so that only users with administrator privileges can move it.
+'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' => "'''Note:''' This page has been protected so that only registered users can move it.
+'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.',
@@ -3532,7 +3531,7 @@ In the latter case you can also use a link, for example [[{{#Special:Export}}/{{
 'exportall'         => 'Export all pages',
 'exportcuronly'     => 'Include only the current revision, not the full history',
 'exportnohistory'   => "----
-'''Note:''' Exporting the full history of pages through this form has been disabled due to performance reasons.",
+<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:',
@@ -3550,7 +3549,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 '''\$wgUseDatabaseMessages''' 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',
@@ -3559,6 +3558,7 @@ Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation
 'allmessages-prefix'            => 'Filter by prefix:',
 'allmessages-language'          => 'Language:',
 'allmessages-filter-submit'     => 'Go',
+'allmessages-filter-translate'  => 'Translate',
 
 # Thumbnails
 'thumbnail-more'           => 'Enlarge',
@@ -3841,7 +3841,7 @@ This is probably caused by a link to a blacklisted external site.',
 'spam_blanking'       => 'All revisions contained links to $1, blanking',
 'spam_deleting'       => 'All revisions contained links to $1, deleting',
 'simpleantispam-label' => "Anti-spam check.
-Do '''NOT''' fill this in!",
+Do <strong>NOT</strong> fill this in!",
 
 # Info page
 'pageinfo-header'                 => '-', # do not translate or duplicate this message to other languages
@@ -3934,9 +3934,9 @@ $1',
 'nextdiff'     => 'Newer edit →',
 
 # Media information
-'mediawarning'                => "'''Warning:''' This file type may contain malicious code.
+'mediawarning'                => "<strong>Warning:</strong> This file type may contain malicious code.
 By executing it, your system may be compromised.",
-'imagemaxsize'                => "Image size limit:<br />''(for file description pages)''",
+'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}}',
@@ -3956,12 +3956,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'     => "'''Note: Due to technical limitations, thumbnails of this file will not be animated.'''",
-'file-no-thumb-animation-gif' => "'''Note: Due to technical limitations, thumbnails of high resolution GIF images such as this one will not be animated.'''",
+'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 '''$1''' {{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):',
@@ -4082,7 +4082,7 @@ Others will be hidden by default.
 * gpslatitude
 * gpslongitude
 * gpsaltitude',
-'metadata-langitem'         => "'''$2:''' $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
@@ -4600,9 +4600,9 @@ This confirmation code will expire at $4.',
 'scarytranscludetoolong'           => '[URL is too long]',
 
 # Delete conflict
-'deletedwhileediting'      => "'''Warning:''' This page was deleted after you started editing!",
+'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:
-: ''$2''
+: <em>$2</em>
 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',
@@ -4813,7 +4813,7 @@ You can also [[Special:EditWatchlist|use the standard editor]].',
 
 # Core parser functions
 'unknown_extension_tag' => 'Unknown extension tag "$1"',
-'duplicate-defaultsort' => '\'\'\'Warning:\'\'\' Default sort key "$2" overrides earlier default sort key "$1".',
+'duplicate-defaultsort' => '<strong>Warning:</strong> Default sort key "$2" overrides earlier default sort key "$1".',
 
 # Special:Version
 'version'                               => 'Version',
@@ -4845,7 +4845,7 @@ You can also [[Special:EditWatchlist|use the standard editor]].',
 'version-ext-colheader-license'         => 'License',
 'version-ext-colheader-description'     => 'Description',
 'version-ext-colheader-credits'         => 'Authors',
-'version-poweredby-credits'             => "This wiki is powered by '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'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]].',
index 60f8ce0..708229c 100644 (file)
@@ -335,9 +335,7 @@ $messages = array(
 'tog-numberheadings' => 'Aŭtomate numerigi sekciojn',
 'tog-showtoolbar' => 'Montri redakto-breton (per JavaScript)',
 'tog-editondblclick' => 'Redakti per duobla alklako (per JavaScript)',
-'tog-editsection' => 'Montri [redakti]-ligilojn por sekcioj',
 'tog-editsectiononrightclick' => 'Ŝalti sekcian redaktadon per dekstra musklako de sekciaj titoloj (kun JavaScript)',
-'tog-showtoc' => 'Montri enhavliston (por paĝoj kun pli ol 3 sekcioj)',
 'tog-rememberpassword' => 'Memori mian ensalutadon ĉe ĉi tiu retumilo (daŭrante maksimume $1 {{PLURAL:$1|tagon|tagojn}})',
 'tog-watchcreations' => 'Aldoni miajn kreatajn paĝojn al mia atentaro',
 'tog-watchdefault' => 'Aldoni al mia atentaro paĝojn redaktitajn de mi',
index c0d2945..838c9f4 100644 (file)
@@ -25,6 +25,7 @@
  * @author Boivie
  * @author Candalua
  * @author Capmo
+ * @author Carlitosag
  * @author Cerealito
  * @author Ciencia Al Poder
  * @author Clerc
@@ -394,9 +395,7 @@ $messages = array(
 'tog-numberheadings' => 'Numerar automáticamente los encabezados',
 'tog-showtoolbar' => 'Mostrar la barra de edición',
 'tog-editondblclick' => 'Editar las páginas al pulsar dos veces en ellos con el ratón',
-'tog-editsection' => 'Activar la edición de secciones mediante el enlace [editar]',
 'tog-editsectiononrightclick' => 'Activar la edición de secciones pulsando el botón derecho en los títulos de secciones',
-'tog-showtoc' => 'Mostrar el índice (para páginas con más de 3 encabezados)',
 'tog-rememberpassword' => 'Recordar mi nombre de usuario y contraseña entre sesiones en este navegador (por un máximo de $1 {{PLURAL:$1|día|días}})',
 'tog-watchcreations' => 'Añadir las páginas que cree y los archivos que suba a mi lista de seguimento',
 'tog-watchdefault' => 'Añadir las páginas y archivos que edite a mi lista de seguimiento',
@@ -944,6 +943,8 @@ Establece una contraseña nueva aquí:',
 'retypenew' => 'Confirmar la contraseña nueva:',
 'resetpass_submit' => 'Establecer contraseña e iniciar sesión',
 'changepassword-success' => 'La contraseña ha sido cambiada con éxito.',
+'changepassword-throttled' => 'Has intentado acceder demasiadas veces.
+Espera $1 antes de intentarlo de nuevo.',
 'resetpass_forbidden' => 'No se pueden cambiar las contraseñas',
 'resetpass-no-info' => 'Debes iniciar sesión para acceder directamente a esta página.',
 'resetpass-submit-loggedin' => 'Cambiar contraseña',
@@ -1001,6 +1002,8 @@ Contraseña temporal: $2',
 'changeemail-password' => 'Tu contraseña en {{SITENAME}}:',
 'changeemail-submit' => 'Cambiar correo electrónico',
 'changeemail-cancel' => 'Cancelar',
+'changeemail-throttled' => 'Has intentado acceder demasiadas veces.
+Espera $1 antes de intentarlo de nuevo.',
 
 # Special:ResetTokens
 'resettokens' => 'Restablecer claves',
@@ -2574,7 +2577,7 @@ Véase $2 para un registro de los borrados recientes.',
 'delete-edit-reasonlist' => 'Editar razones de borrado',
 'delete-toobig' => 'Esta página tiene un historial muy grande, con más de $1 {{PLURAL:$1|revisión|revisiones}}. Borrar este tipo de páginas ha sido restringido para prevenir posibles problemas en {{SITENAME}}.',
 'delete-warning-toobig' => 'Esta página tiene un historial de más de $1 {{PLURAL:$1|revisión|revisiones}}. Eliminarla puede perturbar las operaciones de la base de datos de {{SITENAME}}. Ten cuidado al borrar.',
-'deleting-backlinks-warning' => "'''Advertencia:''' Hay enlaces desde otras páginas a la página que estás a punto de borrar.",
+'deleting-backlinks-warning' => "'''Advertencia:''' Otras páginas están enlazadas o son inclusión desde la página que estás por eliminar.",
 
 # Rollback
 'rollback' => 'Revertir ediciones',
@@ -2871,7 +2874,7 @@ Consulta la [[Special:BlockList|lista de bloqueos]] para ver la lista de bloqueo
 'range_block_disabled' => 'La facultad de administrador de crear bloqueos por rangos está deshabilitada.',
 'ipb_expiry_invalid' => 'El tiempo de caducidad no es válido.',
 'ipb_expiry_temp' => 'Los bloqueos a nombres de usuario ocultos deben ser permanentes.',
-'ipb_hide_invalid' => 'Incapaz de suprimir esta cuenta; puede tener muchas ediciones.',
+'ipb_hide_invalid' => 'No se puede suprimir esta cuenta; tiene más de {{PLURAL:$1|una edición|$1 ediciones}}.',
 'ipb_already_blocked' => '"$1" ya se encuentra bloqueado.',
 'ipb-needreblock' => '$1 ya está bloqueado. ¿Quieres cambiar el bloqueo?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Otro bloqueo|Otros bloqueos}}',
@@ -3306,7 +3309,7 @@ Esto podría estar causado por un enlace a un sitio externo incluido en la lista
 'markaspatrolledtext' => 'Marcar este artículo como revisado',
 'markedaspatrolled' => 'Marcado como revisado',
 'markedaspatrolledtext' => 'La revisión seleccionada de [[:$1|$1]] ha sido marcada como revisada.',
-'rcpatroldisabled' => 'Revisión de los Cambios Recientes deshabilitada',
+'rcpatroldisabled' => 'Se ha desactivado la supervisión de cambios recientes',
 'rcpatroldisabledtext' => 'La capacidad de revisar los Cambios Recientes está deshabilitada en este momento.',
 'markedaspatrollederror' => 'No se puede marcar como patrullada',
 'markedaspatrollederrortext' => 'Debes especificar una revisión para marcarla como patrullada.',
index c82452f..1db14e7 100644 (file)
@@ -316,9 +316,7 @@ $messages = array(
 'tog-numberheadings' => 'Pealkirjade automaatnummerdus',
 'tog-showtoolbar' => 'Näita redigeerimise tööriistariba',
 'tog-editondblclick' => 'Redigeeri lehekülgi topeltklõpsu peale',
-'tog-editsection' => 'Näita alaosade redigeerimise linke',
 'tog-editsectiononrightclick' => 'Alusta alaosa redigeerimist paremklõpsuga alaosa pealkirjal',
-'tog-showtoc' => 'Näita sisukorda (lehtedel, millel on rohkem kui 3 pealkirja)',
 'tog-rememberpassword' => 'Parooli meeldejätmine tulevasteks seanssideks (kuni $1 {{PLURAL:$1|päevaks|päevaks}})',
 'tog-watchcreations' => 'Lisa jälgimisloendisse minu alustatud leheküljed ja minu üles laaditud failid',
 'tog-watchdefault' => 'Lisa jälgimisloendisse minu muudetud leheküljed ja failid',
@@ -860,6 +858,8 @@ Sisselogimise lõpetamiseks pead siia uue parooli sisestama:',
 'resetpass_submit' => 'Sisesta parool ja logi sisse',
 'changepassword-success' => 'Sinu parool on edukalt muudetud!
 Sind logitakse nüüd sisse...',
+'changepassword-throttled' => 'Oled hiljuti proovinud liiga palju kordi sisse logida.
+Palun oota $1, enne kui uuesti proovid.',
 'resetpass_forbidden' => 'Paroole ei saa muuta',
 'resetpass-no-info' => 'Pead olema sisselogitud, et sellele lehele pääseda.',
 'resetpass-submit-loggedin' => 'Muuda parool',
@@ -911,6 +911,8 @@ Ajutine parool: $2',
 'changeemail-password' => 'Sinu parool {{GRAMMAR:inessive|{{SITENAME}}}}:',
 'changeemail-submit' => 'Muuda e-posti aadress',
 'changeemail-cancel' => 'Loobu',
+'changeemail-throttled' => 'Oled proovinud liiga palju kordi sisse logida.
+Palun oota $1, enne kui uuesti proovid.',
 
 # Special:ResetTokens
 'resettokens' => 'Lubade lähtestamine',
@@ -3866,7 +3868,7 @@ Sa võid [[Special:EditWatchlist|kasutada ka harilikku tekstiredaktorit]].',
 'version-parser-function-hooks' => 'Parserifunktsioonid',
 'version-hook-name' => 'Haagi nimi',
 'version-hook-subscribedby' => 'Tellijad',
-'version-version' => '(Versioon $1)',
+'version-version' => '($1)',
 'version-license' => 'MediaWiki litsents',
 'version-ext-license' => 'Litsents',
 'version-ext-colheader-name' => 'Lisa',
index 4ebebb7..1abc8e8 100644 (file)
@@ -136,9 +136,7 @@ $messages = array(
 'tog-numberheadings' => 'Goiburukoak automatikoki zenbakitu',
 'tog-showtoolbar' => 'Aldaketen tresna-barra erakutsi',
 'tog-editondblclick' => 'Klik bikoitzaren bitartez orrialdeak aldatu',
-'tog-editsection' => 'Atalak [aldatu] loturen bitartez aldatzeko aukera gaitu',
 'tog-editsectiononrightclick' => 'Atalen izenburuetan eskuin klik eginez aldatzea gaitu',
-'tog-showtoc' => 'Edukien taula erakutsi (3 goiburukotik gorako orrialdeentzako)',
 'tog-rememberpassword' => 'Nire saioa ordenagailu honetan gorde ({{PLURAL:$1|egun baterako| $1 egunerako}} gehienez)',
 'tog-watchcreations' => 'Sortzen ditudan orrialdeak eta fitxategiak nire jarraipen-zerrendara gehitu',
 'tog-watchdefault' => 'Aldatzen ditudan orrialdeak eta fitxategiak nire jarraipen-zerrendara gehitu',
index 0becf98..18b28f4 100644 (file)
@@ -463,9 +463,7 @@ $messages = array(
 'tog-numberheadings' => 'شماره‌گذاری خودکار عنوان‌ها',
 'tog-showtoolbar' => 'نوار ابزار جعبهٔ ویرایش نمایش یابد',
 'tog-editondblclick' => 'ویرایش صفحه‌ها با دوکلیک (نیازمند جاوااسکریپت)',
-'tog-editsection' => 'ویرایش بخش‌ها از طریق پیوندهای [ویرایش] فعال باشد',
 'tog-editsectiononrightclick' => 'امکان ویرایش بخش‌ها با کلیک راست روی عنوان‌های بخش (نیازمند جاوااسکریپت)',
-'tog-showtoc' => 'فهرست مندرجات نمایش یابد (برای صفحه‌های دارای بیش از ۳ عنوان)',
 'tog-rememberpassword' => 'گذرواژهٔ من (حداکثر $1 {{PLURAL:$1|روز|روز}}) در این مرورگر به خاطر سپرده شود',
 'tog-watchcreations' => 'صفحه‌هایی که می‌سازم و پرونده‌هایی که بارگذاری می‌کنم به فهرست پی‌گیری‌هایم افزوده شود',
 'tog-watchdefault' => 'صفحه‌ها و پرونده‌هایی که ویرایش می‌کنم به فهرست پی‌گیری‌هایم افزوده شود',
@@ -1026,6 +1024,8 @@ $2',
 'retypenew' => 'گذرواژهٔ جدید را دوباره وارد کنید',
 'resetpass_submit' => 'تنظیم گذرواژه و ورود به سامانه',
 'changepassword-success' => 'گذرواژهٔ شما با موفقیت تغییر داده شد!',
+'changepassword-throttled' => 'شما به تازگی چندین‌بار برای ثبت ورود تلاش کرده‌اید.
+لطفاً پیش از آنکه دوباره تلاش کنید $1 صبر کنید.',
 'resetpass_forbidden' => 'نمی‌توان گذرواژه‌ها را تغییر داد',
 'resetpass-no-info' => 'برای دسترسی مستقیم به این صفحه شما باید به سامانه وارد شده باشید.',
 'resetpass-submit-loggedin' => 'تغییر گذرواژه',
@@ -1077,6 +1077,8 @@ $2
 'changeemail-password' => ' {{SITENAME}} رمز عبور شما:',
 'changeemail-submit' => 'تغییر رایانامه',
 'changeemail-cancel' => 'انصراف',
+'changeemail-throttled' => 'شما به مراتب برای ورود تلاش کرده‌اید.
+لطفاً پیش از آنکه دوباره تلاش کنید $1 صبر کنید.',
 
 # Special:ResetTokens
 'resettokens' => 'بازنشانی شناساننده‌ها',
@@ -4440,5 +4442,6 @@ $5
 'expand_templates_preview' => 'پیش‌نمایش',
 
 # Unknown messages
+'createaccount-hook-aborted' => '$1',
 'uploadinvalidxml' => 'XML در پروندهٔ بارگذاری‌شده نمی‌تواند تجزیه شود.',
 );
index 8b43b2c..a6cb207 100644 (file)
@@ -330,9 +330,7 @@ $messages = array(
 'tog-numberheadings' => 'Numeroi otsikot automaattisesti',
 'tog-showtoolbar' => 'Näytä työkalupalkki',
 'tog-editondblclick' => 'Muokkaa sivuja kaksoisnapsautuksella',
-'tog-editsection' => 'Näytä muokkauslinkit jokaisen osion yläpuolella',
 'tog-editsectiononrightclick' => 'Muokkaa osioita napsauttamalla osion otsikkoa hiiren oikealla painikkeella',
-'tog-showtoc' => 'Näytä sisällysluettelo (sivuilla, joilla on yli kolme otsikkoa)',
 'tog-rememberpassword' => 'Muista kirjautuminen tässä selaimessa (enintään $1 {{PLURAL:$1|päivä|päivää}})',
 'tog-watchcreations' => 'Lisää luomani sivut ja tallentamani tiedostot tarkkailulistalleni',
 'tog-watchdefault' => 'Lisää muokkaamani sivut ja tiedostot tarkkailulistalleni',
index eaf20b9..e3fa0a1 100644 (file)
@@ -427,9 +427,7 @@ $messages = array(
 'tog-numberheadings' => 'Numéroter automatiquement les titres de section',
 'tog-showtoolbar' => "Montrer la barre d'outils de modification (nécessite JavaScript)",
 'tog-editondblclick' => 'Modifier des pages sur double-clic (nécessite JavaScript)',
-'tog-editsection' => 'Activer les modifications de sections grâce aux liens « [modifier] »',
 'tog-editsectiononrightclick' => 'Activer la modification de sections par clic droit sur les titres (nécessite JavaScript)',
-'tog-showtoc' => 'Afficher la table des matières (pour les pages ayant plus de 3 sections)',
 'tog-rememberpassword' => 'Se souvenir de mon identification avec ce navigateur (au maximum $1 {{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',
@@ -974,6 +972,8 @@ Si vous décidez de le fournir, il sera utilisé pour attribuer à l’utilisate
 'retypenew' => 'Confirmer le nouveau mot de passe :',
 'resetpass_submit' => 'Changer le mot de passe et se connecter',
 'changepassword-success' => 'Votre mot de passe a été changé avec succès !',
+'changepassword-throttled' => 'Vous avez fait trop de tentatives de connexion récemment.
+Veuillez attendre $1 avant de réessayer.',
 'resetpass_forbidden' => 'Les mots de passe ne peuvent pas être changés',
 'resetpass-no-info' => 'Vous devez être connecté(e) pour avoir accès à cette page.',
 'resetpass-submit-loggedin' => 'Changer de mot de passe',
@@ -1023,6 +1023,8 @@ Mot de passe temporaire : $2",
 'changeemail-password' => 'Votre mot de passe sur {{SITENAME}} :',
 'changeemail-submit' => 'Changer l’adresse de courriel',
 'changeemail-cancel' => 'Annuler',
+'changeemail-throttled' => 'Vous avez fait trop de tentatives de connexion.
+Veuillez attendre $1 avant de réessayer.',
 
 # Special:ResetTokens
 'resettokens' => 'Réinitialiser les jetons',
@@ -1270,9 +1272,9 @@ Il devrait y avoir moins de $2 appel{{PLURAL:$2||s}}, alors qu'il y en a mainten
 'converter-manual-rule-error' => 'Erreur détectée dans la règle manuelle de conversion de langue',
 
 # "Undo" feature
-'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-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-norev' => 'La modification n’a pas pu être défaite parce qu’elle est inexistante ou qu’elle a été supprimé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é',
 
@@ -1581,7 +1583,7 @@ Toute personne la connaissant pourra lire votre liste de suivi, ne la communique
 'prefs-emailconfirm-label' => 'Confirmation du courriel :',
 'youremail' => 'Courriel :',
 'username' => "{{GENDER:$1|Nom d'utilisateur|Nom d'utilisatrice}} :",
-'uid' => "Numéro d'{{GENDER:$1|utilisateur|utilisatrice}}:",
+'uid' => 'Numéro d’{{GENDER:$1|utilisateur|utilisatrice}} :',
 'prefs-memberingroups' => '{{GENDER:$2|Membre}} {{PLURAL:$1|du groupe|des groupes}}:',
 'prefs-registration' => "Date d'inscription :",
 'yourrealname' => 'Nom réel :',
@@ -1855,24 +1857,24 @@ Cette information sera publique.',
 'upload-tryagain' => 'Envoyer la description du fichier modifiée',
 'uploadnologin' => 'Non connecté{{GENDER:||e|(e)}}',
 'uploadnologintext' => 'Vous devez $1 pour importer des fichiers.',
-'upload_directory_missing' => "Le répertoire d'import de fichier ($1) est introuvable et n'a pas pu être créé par le serveur web.",
-'upload_directory_read_only' => "Le répertoire d'import de fichier ($1) n'est pas accessible en écriture depuis le serveur web.",
-'uploaderror' => "Erreur lors de l'import",
+'upload_directory_missing' => 'Le répertoire d’import de fichier ($1) est introuvable et n’a pas pu être créé par le serveur web.',
+'upload_directory_read_only' => 'Le répertoire d’import de fichier ($1) n’est pas accessible en écriture depuis le serveur web.',
+'uploaderror' => 'Erreur lors de l’import',
 'upload-recreate-warning' => "'''Attention : Un fichier portant ce nom a été supprimé ou déplacé.'''
 
 Le journal des suppressions et celui des déplacements de cette page sont affichés ici pour informations :",
 'uploadtext' => "Utilisez ce formulaire pour importer des fichiers sur le serveur.
-Pour voir ou rechercher des images précédemment envoyées, consultez la [[Special:FileList|liste des images]]. L'import est aussi enregistrés dans le [[Special:Log/upload|journal d'import des fichiers]], et les suppressions dans le [[Special:Log/delete|journal des suppressions]].
+Pour voir ou rechercher des images précédemment envoyées, consultez la [[Special:FileList|liste des images]]. L’import est aussi enregistré dans le [[Special:Log/upload|journal d’import des fichiers]], et les suppressions dans le [[Special:Log/delete|journal des suppressions]].
 
 Pour inclure un fichier dans une page, utilisez un lien de la forme :
-* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fichier.jpg]]</nowiki></code>''', pour afficher le fichier en pleine résolution (dans le cas d'une image) ;
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fichier.jpg]]</nowiki></code>''', pour afficher le fichier en pleine résolution (dans le cas dune image) ;
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fichier.png|200px|thumb|left|texte descriptif]]</nowiki></code>''' pour utiliser une miniature de 200 pixels de large dans une boîte à gauche avec « texte descriptif » comme description ;
-* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:fichier.ogg]]</nowiki></code>''' pour lier directement vers le fichier sans l'afficher.",
+* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:fichier.ogg]]</nowiki></code>''' pour lier directement vers le fichier sans lafficher.",
 'upload-permitted' => 'Formats de fichiers autorisés : $1.',
 'upload-preferred' => 'Formats de fichiers préférés : $1.',
 'upload-prohibited' => 'Formats de fichiers interdits : $1.',
-'uploadlog' => "Journal d'import de fichiers",
-'uploadlogpage' => "Journal d'import de fichiers",
+'uploadlog' => 'Journal d’import de fichiers',
+'uploadlogpage' => 'Journal d’import de fichiers',
 'uploadlogpagetext' => 'Voici la liste des derniers fichiers importés sur le serveur.
 Voyez la [[Special:NewFiles|galerie des nouvelles images]] pour une présentation plus visuelle.',
 'filename' => 'Nom du fichier',
@@ -1904,7 +1906,7 @@ Voyez la [[Special:NewFiles|galerie des nouvelles images]] pour une présentatio
 'hookaborted' => 'La modification que vous avez essayé de faire a été annulée par une extension.',
 'illegal-filename' => "Le nom du fichier n'est pas autorisé.",
 'overwrite' => "Écraser un fichier existant n'est pas autorisé.",
-'unknown-error' => "Une erreur inconnue s'est produite.",
+'unknown-error' => 'Une erreur inconnue s’est produite.',
 'tmp-create-error' => 'Impossible de créer le fichier temporaire.',
 'tmp-write-error' => "Erreur d'écriture du fichier temporaire.",
 'large-file' => 'Les fichiers importés ne devraient pas dépasser $1 ; ce fichier fait $2.',
@@ -1942,22 +1944,22 @@ Vous devriez demander à quelqu'un la possibilité de vérifier le journal de ce
 'savefile' => 'Sauvegarder le fichier',
 'uploadedimage' => 'a importé « [[$1]] »',
 'overwroteimage' => 'a importé une nouvelle version de « [[$1]] »',
-'uploaddisabled' => "Désolé, l'import de fichiers est désactivé.",
+'uploaddisabled' => 'Désolé, l’import de fichiers est désactivé.',
 'copyuploaddisabled' => 'Import de fichier par URL désactivé.',
-'uploadfromurl-queued' => "Votre fichier a été mis dans la file d'attente.",
-'uploaddisabledtext' => "L'import de fichiers est désactivé sur ce wiki.",
+'uploadfromurl-queued' => 'Votre fichier a été mis dans la file d’attente.',
+'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.',
 '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 des restrictions de sécurité.",
+'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é.',
 'upload-source' => 'Fichier source',
 'sourcefilename' => 'Nom du fichier source :',
 'sourceurl' => 'URL source :',
 'destfilename' => 'Nom sous lequel le fichier sera enregistré :',
 'upload-maxfilesize' => 'Taille maximale du fichier : $1',
 'upload-description' => 'Description du fichier',
-'upload-options' => "Options d'import de fichiers",
+'upload-options' => 'Options d’import de fichiers',
 'watchthisupload' => 'Suivre ce fichier',
 'filewasdeleted' => "Un fichier avec ce nom a déjà été importé, puis supprimé.
 Vous devriez vérifier le $1 avant de l'importer à nouveau.",
@@ -1983,21 +1985,21 @@ PICT # divers
 'upload-failure-msg' => 'Il y a eu un problème avec votre import depuis [$2] :
 
 $1',
-'upload-warning-subj' => "Avertissement lors de l'import",
-'upload-warning-msg' => "Un problème est survenu lors de l'import depuis [$2]. Vous pouvez revenir au [[Special:Upload/stash/$1|formulaire d'import]] pour le résoudre.",
+'upload-warning-subj' => 'Avertissement lors de l’import',
+'upload-warning-msg' => 'Un problème est survenu lors de l’import depuis [$2]. Vous pouvez revenir au [[Special:Upload/stash/$1|formulaire d’import]] pour le résoudre.',
 
 'upload-proto-error' => 'Protocole incorrect',
-'upload-proto-error-text' => "L'import requiert des URL commençant par <code>http://</code> ou <code>ftp://</code>.",
+'upload-proto-error-text' => 'L’import requiert des URL commençant par <code>http://</code> ou <code>ftp://</code>.',
 'upload-file-error' => 'Erreur interne',
 'upload-file-error-text' => 'Une erreur interne est survenue en voulant créer un fichier temporaire sur le serveur. Veuillez contacter un [[Special:ListUsers/sysop|administrateur]].',
-'upload-misc-error' => "Erreur d'import inconnue",
-'upload-misc-error-text' => "Une erreur inconnue est survenue pendant l'import.
-Veuillez vérifier que l'URL est valide et accessible, puis essayer à nouveau.
-Si le problème persiste, contactez un [[Special:ListUsers/sysop|administrateur]].",
-'upload-too-many-redirects' => "L'URL contient trop de redirections.",
+'upload-misc-error' => 'Erreur d’import inconnue',
+'upload-misc-error-text' => 'Une erreur inconnue est survenue pendant l’import.
+Veuillez vérifier que lURL est valide et accessible, puis essayer à nouveau.
+Si le problème persiste, contactez un [[Special:ListUsers/sysop|administrateur]].',
+'upload-too-many-redirects' => 'L’URL contient trop de redirections.',
 'upload-unknown-size' => 'Taille inconnue',
 'upload-http-error' => 'Une erreur HTTP est survenue : $1',
-'upload-copy-upload-invalid-domain' => "La copie des téléchargements n'est pas disponible depuis ce domaine.",
+'upload-copy-upload-invalid-domain' => 'La copie des téléversements n’est pas disponible depuis ce domaine.',
 
 # File backend
 'backend-fail-stream' => 'Impossible de lire le fichier $1.',
@@ -2051,12 +2053,12 @@ Il ne peut pas être correctement vérifié pour la sécurité.',
 Sa sécurité ne peut pas être correctement vérifiée.',
 
 # Special:UploadStash
-'uploadstash' => "Cache d'import",
-'uploadstash-summary' => "Cette page donne accès aux fichiers qui sont importés (ou en cours d'importation), mais ne sont pas encore publiés dans le wiki. Ces fichiers ne sont pas encore visibles, sauf pour l'utilisateur qui les a importés.",
+'uploadstash' => 'Cache d’import',
+'uploadstash-summary' => 'Cette page donne accès aux fichiers qui sont importés (ou en cours d’importation), mais ne sont pas encore publiés dans le wiki. Ces fichiers ne sont pas encore visibles, sauf pour l’utilisateur qui les a importés.',
 'uploadstash-clear' => 'Effacer les fichiers en cache',
-'uploadstash-nofiles' => "Vous n'avez pas de fichiers en cache d'import.",
-'uploadstash-badtoken' => "L'exécution de cette action a échoué, peut-être parce que vos informations d'identification ont expiré. Réessayez.",
-'uploadstash-errclear' => "L'effacement des fichiers a échoué.",
+'uploadstash-nofiles' => 'Vous n’avez pas de fichiers en cache d’import.',
+'uploadstash-badtoken' => 'L’exécution de cette action a échoué, peut-être parce que vos informations d’identification ont expiré. Réessayez.',
+'uploadstash-errclear' => 'La suppression des fichiers a échoué.',
 'uploadstash-refresh' => 'Actualiser la liste des fichiers',
 'invalid-chunk-offset' => 'Offset de segment non valide',
 
@@ -2090,7 +2092,7 @@ Pour une sécurité optimale, img_auth.php est désactivé.",
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
 'upload-curl-error6' => 'URL injoignable',
-'upload-curl-error6-text' => "L'URL fournie ne peut pas être atteinte. Veuillez vérifier que l'URL est correcte et que le site est en ligne.",
+'upload-curl-error6-text' => 'L’URL fournie ne peut pas être atteinte. Veuillez vérifier que l’URL est correcte et que le site est en ligne.',
 'upload-curl-error28' => "Dépassement du délai lors de l'import",
 'upload-curl-error28-text' => 'Le site a mis trop longtemps à répondre. Vérifiez que le site est en ligne, attendez un peu et réessayez. Vous pouvez aussi réessayer à une heure de moindre affluence.',
 
@@ -2200,15 +2202,15 @@ Entrée : ''typedecontenu''/''sous-type'', par exemple <code>image/jpeg</code>."
 'download' => 'télécharger',
 
 # Unwatched pages
-'unwatchedpages' => "Pages ne faisant partie d'aucune liste de suivi",
+'unwatchedpages' => 'Pages ne faisant partie d’aucune liste de suivi',
 
 # List redirects
 'listredirects' => 'Liste des redirections',
 
 # Unused templates
 'unusedtemplates' => 'Modèles inutilisés',
-'unusedtemplatestext' => "Cette page liste toutes les pages de l'espace de noms « {{ns:template}} » qui ne sont incluses dans aucune autre page.
-N'oubliez pas de vérifier s'il n'y a pas d'autres liens vers les modèles avant de les supprimer.",
+'unusedtemplatestext' => 'Cette page liste toutes les pages de l’espace de noms « {{ns:template}} » qui ne sont incluses dans aucune autre page.
+N’oubliez pas de vérifier s’il n’y a pas d’autres liens vers les modèles avant de les supprimer.',
 'unusedtemplateswlh' => 'autres liens',
 
 # Random page
@@ -2335,8 +2337,8 @@ Les entrées <del>barrées</del> ont été résolues.',
 'ancientpages' => 'Pages les plus anciennement modifiées',
 'move' => 'Renommer',
 'movethispage' => 'Renommer cette page',
-'unusedimagestext' => "Les fichiers suivants existent, mais ne sont inclus dans aucune page.
-Veuillez noter que d'autres sites peuvent avoir un lien direct vers un fichier, et donc qu'un fichier peut être listé ici alors qu'il est en réalité utilisé sur ces sites.",
+'unusedimagestext' => 'Les fichiers suivants existent, mais ne sont inclus dans aucune page.
+Veuillez noter que d’autres sites peuvent avoir un lien direct vers un fichier, et donc qu’un fichier peut être listé ici alors qu’il est en réalité utilisé sur ces sites.',
 'unusedcategoriestext' => 'Les catégories suivantes existent mais aucune page ou catégorie ne les utilise.',
 'notargettitle' => 'Pas de cible',
 'notargettext' => "Vous n'avez pas indiqué une page ou un utilisateur sur lequel vous souhaitez effectuer cette action.",
@@ -2697,22 +2699,22 @@ Voici les réglages actuels de la page '''$1''' :",
 'undeletepage' => 'Voir et restaurer des pages supprimées',
 'undeletepagetitle' => "'''La liste suivante contient des versions supprimées de [[:$1|$1]]'''.",
 'viewdeletedpage' => 'Voir les pages supprimées',
-'undeletepagetext' => "{{PLURAL:$1|La page suivante a été supprimée et se trouve|Les pages suivantes ont été supprimées et se trouvent}} dans la base de données archive, d'où {{PLURAL:$1|elle peut|elles peuvent}} encore être restaurée{{PLURAL:$1||s}}.
-L'archive peut être nettoyée périodiquement.",
+'undeletepagetext' => '{{PLURAL:$1|La page suivante a été supprimée et se trouve|Les pages suivantes ont été supprimées et se trouvent}} dans la base de données archive, d’où {{PLURAL:$1|elle peut|elles peuvent}} encore être restaurée{{PLURAL:$1||s}}.
+L’archive peut être nettoyée périodiquement.',
 'undelete-fieldset-title' => 'Restaurer les versions',
-'undeleteextrahelp' => "Pour restaurer l'historique complet de cette page, laissez toutes les cases décochées et cliquez sur '''''Restaurer'''''.
+'undeleteextrahelp' => "Pour restaurer lhistorique complet de cette page, laissez toutes les cases décochées et cliquez sur '''''Restaurer'''''.
 Pour effectuer une restauration partielle, cochez les cases correspondant aux versions à rétablir, puis cliquez sur '''''Restaurer'''''.",
 'undeleterevisions' => '$1 {{PLURAL:$1|version archivée|versions archivées}}',
-'undeletehistory' => "Si vous restaurez la page, toutes les versions seront replacées dans l'historique.
-Si une nouvelle page avec le même nom a été créée depuis la suppression, les versions restaurées apparaîtront dans l'historique antérieur et la version courante ne sera pas automatiquement remplacée.",
+'undeletehistory' => 'Si vous restaurez la page, toutes les versions seront replacées dans l’historique.
+Si une nouvelle page avec le même nom a été créée depuis la suppression, les versions restaurées apparaîtront dans l’historique antérieur et la version courante ne sera pas automatiquement remplacée.',
 'undeleterevdel' => 'La restauration ne sera pas effectuée si, au final, la version la plus récente de la page ou du fichier reste partiellement supprimée.
 Dans de tels cas, vous devez décocher ou démasquer les versions effacées les plus récentes (en tête de liste).',
-'undeletehistorynoadmin' => "Cette page a été supprimée.
-Le motif de la suppression est indiqué dans le résumé ci-dessous, avec les détails des utilisateurs qui l'ont modifié avant sa suppression.
-Le contenu effectif de ces versions supprimées n'est accessible qu'aux administrateurs.",
+'undeletehistorynoadmin' => 'Cette page a été supprimée.
+Le motif de la suppression est indiqué dans le résumé ci-dessous, avec les détails des utilisateurs qui ont modifié la page avant sa suppression.
+Le contenu effectif de ces versions supprimées n’est accessible qu’aux administrateurs.',
 'undelete-revision' => 'Version supprimée de $1 (version du $4 à $5) par $3 :',
-'undeleterevision-missing' => "Version incorrecte ou manquante.
-Vous avez peut-être un mauvais lien, ou la version a pu être restaurée ou supprimée de l'archive.",
+'undeleterevision-missing' => 'Version incorrecte ou manquante.
+Vous avez peut-être un mauvais lien, ou la version a pu être restaurée ou supprimée de l’archive.',
 'undelete-nodiff' => 'Aucune version précédente trouvée.',
 'undeletebtn' => 'Restaurer',
 'undeletelink' => 'visualiser/rétablir',
@@ -2732,13 +2734,13 @@ Consultez le [[Special:Log/delete|journal des suppressions]] pour obtenir la lis
 'undelete-search-box' => 'Rechercher des pages supprimées',
 'undelete-search-prefix' => 'Montrer les pages commençant par :',
 'undelete-search-submit' => 'Rechercher',
-'undelete-no-results' => "Aucune page correspondante n'a été trouvée dans les archives de suppression.",
+'undelete-no-results' => 'Aucune page correspondante n’a été trouvée dans les archives de suppression.',
 'undelete-filename-mismatch' => 'Impossible de restaurer la version du fichier datée du $1 : le nom de fichier ne correspond pas.',
 'undelete-bad-store-key' => 'Impossible de restaurer la version du fichier datée du $1 : le fichier était absent avant la suppression.',
-'undelete-cleanup-error' => "Erreur lors de la suppression du fichier d'archive inutilisé « $1 ».",
-'undelete-missing-filearchive' => "Impossible de restaurer le fichier d'archive avec l'identifiant $1 parce qu'il n'est pas dans la base de données.
-Il a peut-être déjà été restauré.",
-'undelete-error' => "Page d'erreur d'annulation",
+'undelete-cleanup-error' => 'Erreur lors de la suppression du fichier d’archive inutilisé « $1 ».',
+'undelete-missing-filearchive' => 'Impossible de restaurer le fichier d’archive avec l’identifiant $1 parce qu’il n’est pas dans la base de données.
+Il a peut-être déjà été restauré.',
+'undelete-error' => 'Page d’erreur d’annulation',
 'undelete-error-short' => 'Erreur lors de la restauration du fichier : $1',
 'undelete-error-long' => 'Des erreurs ont été rencontrées lors de la restauration du fichier :
 
@@ -2803,7 +2805,7 @@ La dernière entrée du journal des blocages est indiquée ci-dessous à titre d
 # Block/unblock
 'autoblockid' => 'Blocage automatique #$1',
 'block' => 'Bloquer l’utilisateur',
-'unblock' => "Débloquer l'utilisateur",
+'unblock' => 'Débloquer l’utilisateur',
 'blockip' => 'Bloquer l’utilisateur',
 'blockip-legend' => 'Bloquer l’utilisateur',
 'blockiptext' => 'Utilisez le formulaire ci-dessous pour bloquer les tentatives de modification faites à partir d’une adresse IP spécifique ou d’un nom d’utilisateur.
@@ -2845,7 +2847,7 @@ Consultez la [[Special:BlockList|liste des blocages]] pour revoir les blocages.'
 'ipb-blocklist' => 'Voir les blocages existants',
 'ipb-blocklist-contribs' => 'Contributions pour $1',
 'unblockip' => 'Débloquer un utilisateur ou une adresse IP',
-'unblockiptext' => "Utilisez le formulaire ci-dessous pour rétablir l'accès aux modifications depuis une adresse IP ou un nom d'utilisateur.",
+'unblockiptext' => 'Utilisez le formulaire ci-dessous pour redonner les droits d’écriture à une adresse IP ou un nom d’utilisateur.',
 'ipusubmit' => 'Supprimer ce blocage',
 'unblocked' => '[[User:$1|$1]] a été débloqué{{GENDER:$1||e|(e)}}',
 'unblocked-range' => '$1 a été débloqué{{GENDER:$1||e|(e)}}',
@@ -2905,7 +2907,7 @@ Consultez la [[Special:BlockList|liste des blocages]] pour voir les bannissement
 'ipb_already_blocked' => '« $1 » est déjà bloqué',
 'ipb-needreblock' => '$1 est déjà bloqué. Voulez-vous modifier les paramètres ?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Autre blocage|Autres blocages}}',
-'unblock-hideuser' => "Vous ne pouvez pas débloquer cet utilisateur, car son nom d'utilisateur a été masqué.",
+'unblock-hideuser' => 'Vous ne pouvez pas débloquer cet utilisateur, car son nom d’utilisateur a été masqué.',
 'ipb_cant_unblock' => "Erreur : identifiant de blocage $1 non trouvé.
 Il est possible qu'un déblocage ait déjà été effectué.",
 'ipb_blocked_as_range' => "Erreur : l'adresse IP $1 n'est pas bloquée directement et ne peut donc pas être débloquée.
@@ -2928,8 +2930,8 @@ Vous ne pouvez pas créer un compte.',
 'unlockdb' => 'Déverrouiller la base de données',
 'lockdbtext' => "Le verrouillage de la base de données empêchera tous les utilisateurs de modifier des pages, d'enregistrer leurs préférences, de modifier leur liste de suivi et d'effectuer toutes les autres opérations nécessitant des changements dans la base de données.
 Veuillez confirmer que c'est bien là ce que vous voulez faire et que vous déverrouillerez la base dès que votre opération de maintenance sera terminée.",
-'unlockdbtext' => "Le déverrouillage de la base de données permettra à nouveau à tous les utilisateurs de modifier des pages, de changer leurs préférences, de modifier leur liste de suivi et d'effectuer les autres opérations nécessitant des changements dans la base de données.
-Veuillez confirmer que c'est bien là ce que vous voulez faire.",
+'unlockdbtext' => 'Le déverrouillage de la base de données permettra à nouveau à tous les utilisateurs de modifier des pages, de changer leurs préférences, de modifier leur liste de suivi et d’effectuer les autres opérations nécessitant des changements dans la base de données.
+Veuillez confirmer que c’est bien là ce que vous voulez faire.',
 'lockconfirm' => 'Oui, je confirme que je souhaite verrouiller la base de données.',
 'unlockconfirm' => 'Oui, je confirme que je souhaite déverrouiller la base de données.',
 'lockbtn' => 'Verrouiller la base de données',
@@ -3054,8 +3056,8 @@ Dans ce dernier cas vous pouvez aussi utiliser un lien, tel que [[{{#Special:Exp
 'allmessagesname' => 'Nom du message',
 'allmessagesdefault' => 'Message par défaut',
 'allmessagescurrent' => 'Message actuel',
-'allmessagestext' => "Ceci est la liste des messages disponibles dans l'espace MediaWiki.
-Veuillez visiter la [https://www.mediawiki.org/wiki/Localisation Localisation de MediaWiki] et [//translatewiki.net/ translatewiki.net] si vous désirez contribuer à la localisation générique de MediaWiki.",
+'allmessagestext' => 'Ceci est la liste des messages disponibles dans l’espace MediaWiki.
+Veuillez visiter la [https://www.mediawiki.org/wiki/Localisation Localisation de MediaWiki] et [//translatewiki.net/ translatewiki.net] si vous désirez contribuer à la localisation générique de MediaWiki.',
 'allmessagesnotsupportedDB' => "Cette page '''{{ns:special}}:Allmessages''' n'est pas utilisable car '''\$wgUseDatabaseMessages''' a été désactivé.",
 'allmessages-filter-legend' => 'Filtrer',
 'allmessages-filter' => 'Filtrer par état de modification :',
@@ -4087,7 +4089,7 @@ Vous pouvez aussi [[Special:EditWatchlist|utiliser l'éditeur normal]].",
 'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discussion]])',
 
 # Core parser functions
-'unknown_extension_tag' => "Balise d'extension « $1 » inconnue",
+'unknown_extension_tag' => 'Balise d’extension « $1 » inconnue',
 'duplicate-defaultsort' => 'Attention : la clé de tri par défaut « $2 » écrase la précédente « $1 ».',
 
 # Special:Version
index 90f3556..716134b 100644 (file)
@@ -322,9 +322,7 @@ $messages = array(
 'tog-numberheadings' => 'Numerotar ôtomaticament los titros de sèccion',
 'tog-showtoolbar' => 'Montrar la bârra d’outils de changement (at fôta de JavaScript)',
 'tog-editondblclick' => 'Changiér des pâges sur doblo-clic (at fôta de JavaScript)',
-'tog-editsection' => 'Activar lo changement de sèccions avouéc los lims « [changiér] »',
 'tog-editsectiononrightclick' => 'Activar lo changement de sèccions per clic drêt sur lors titros (at fôta de JavaScript)',
-'tog-showtoc' => 'Montrar la trâbla de les matiéres (por les pâges qu’ant més de 3 sèccions)',
 'tog-rememberpassword' => 'Sè rapelar de mon contresegno sur ceti navigator (por lo més $1 jorn{{PLURAL:$1||s}})',
 'tog-watchcreations' => 'Apondre les pâges que fé et pués los fichiérs que tèlèchârjo a ma lista de siuvu',
 'tog-watchdefault' => 'Apondre les pâges et los fichiérs que chanjo a ma lista de siuvu',
index 425f046..3f69bdf 100644 (file)
@@ -31,9 +31,7 @@ $messages = array(
 'tog-numberheadings' => 'Auerskraften automaatisk numeriare',
 'tog-showtoolbar' => 'Werktjüch tu bewerkin wise',
 'tog-editondblclick' => 'Sidjen mä dobelklik bewerke',
-'tog-editsection' => "Ferwisangen tu't bewerkin faan enkelt kirwer",
 'tog-editsectiononrightclick' => 'Enkelt kirwer mä rochtsklik bewerke',
-'tog-showtoc' => 'Üüb sidjen mä muar üs trii auerskraften en indeks uunwise',
 'tog-rememberpassword' => 'Üüb diheer reegner üüb düür uunmelde (maksimaal för $1 {{PLURAL:$1|dai|daar}})',
 'tog-watchcreations' => "Salew maaget sidjen an huuchlooset datein leewen uun't uug behual",
 'tog-watchdefault' => "Salew feranert sidjen an datein leewen uun't uug behual",
index c7f7597..f5b12e8 100644 (file)
@@ -295,9 +295,7 @@ $messages = array(
 'tog-numberheadings' => 'Numerar automaticamente as cabeceiras',
 'tog-showtoolbar' => 'Mostrar a barra de ferramentas de edición',
 'tog-editondblclick' => 'Editar as páxinas logo de facer dobre clic',
-'tog-editsection' => 'Permitir a edición de seccións mediante as ligazóns "[editar]"',
 'tog-editsectiononrightclick' => 'Permitir a edición de seccións premendo co botón dereito nos títulos das seccións',
-'tog-showtoc' => 'Mostrar o índice (para as páxinas con máis de tres cabeceiras)',
 'tog-rememberpassword' => 'Lembrar o meu contrasinal neste navegador (ata $1 {{PLURAL:$1|día|días}})',
 'tog-watchcreations' => 'Engadir as páxinas que cree e os ficheiros que cargue á miña lista de vixilancia',
 'tog-watchdefault' => 'Engadir as páxinas e os ficheiros que edite á miña lista de vixilancia',
@@ -856,6 +854,8 @@ Se escolle dalo utilizarase para atribuír ao usuario o seu traballo.',
 'retypenew' => 'Insira outra vez o novo contrasinal:',
 'resetpass_submit' => 'Establecer o contrasinal e acceder ao sistema',
 'changepassword-success' => 'O seu contrasinal modificouse correctamente!',
+'changepassword-throttled' => 'Fixo demasiados intentos de acceder ao sistema.
+Por favor, agarde $1 antes de probar outra vez.',
 'resetpass_forbidden' => 'Non se poden mudar os contrasinais',
 'resetpass-no-info' => 'Debe rexistrarse para acceder directamente a esta páxina.',
 'resetpass-submit-loggedin' => 'Cambiar o contrasinal',
@@ -915,6 +915,7 @@ Contrasinal temporal: $2',
 'changeemail-password' => 'O seu contrasinal en {{SITENAME}}:',
 'changeemail-submit' => 'Cambiar o correo electrónico',
 'changeemail-cancel' => 'Cancelar',
+'changeemail-throttled' => 'Fixo demasiados intentos de acceder ao sistema. Por favor, agarde $1 antes de probar outra vez.',
 
 # Special:ResetTokens
 'resettokens' => 'Restablecer os pases',
@@ -1389,6 +1390,7 @@ O [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrad
 'search-result-score' => 'Relevancia: $1%',
 'search-redirect' => '(redirixido desde "$1")',
 'search-section' => '(sección "$1")',
+'search-file-match' => '(coincide co contido do ficheiro)',
 'search-suggest' => 'Quizais quixo dicir: $1',
 'search-interwiki-caption' => 'Proxectos irmáns',
 'search-interwiki-default' => 'Resultados en $1:',
@@ -2810,7 +2812,7 @@ Olle a [[Special:BlockList|lista de bloqueos]] para comprobar os bloqueos vixent
 'range_block_disabled' => 'A funcionalidade de administrador de crear rangos de bloqueos está deshabilitada.',
 'ipb_expiry_invalid' => 'O tempo de duración non é válido.',
 'ipb_expiry_temp' => 'Os bloqueos a nomes de usuario agochados deberían ser permanentes.',
-'ipb_hide_invalid' => 'Non se pode suprimir esta conta; se cadra, ten moitas edicións.',
+'ipb_hide_invalid' => 'Non se pode suprimir esta conta; ten máis d{{PLURAL:$1|unha edición|e $1 edicións}}.',
 'ipb_already_blocked' => '"$1" xa está bloqueado',
 'ipb-needreblock' => '$1 xa está bloqueado. Quere cambiar as configuracións?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Outro bloqueo|Outros bloqueos}}',
index 4ea2c4a..3a00ffd 100644 (file)
@@ -144,9 +144,7 @@ $messages = array(
 'tog-numberheadings' => 'Überschrifte outomatisch numeriere',
 'tog-showtoolbar' => 'Wärchzyyglyscht zum Bearbeite aazeige',
 'tog-editondblclick' => 'Syte ändere mit Doppelklick',
-'tog-editsection' => 'Links aazeige für ds Bearbeite vo einzelnen Absätz',
 'tog-editsectiononrightclick' => 'Einzelni Absätz ändere mit Rächtsclick uf d Iberschrifte',
-'tog-showtoc' => 'Inhaltsverzeichnis aazeige bi Artikle mit meh als drei Überschrifte',
 'tog-rememberpassword' => 'Mit däm Browser duurhaft aamälde (Maximal fir $1 {{PLURAL:$1|Tag|Täg}})',
 'tog-watchcreations' => 'Sälber gmachti Sytene un uffegladeni Dateie automatisch  beobachte',
 'tog-watchdefault' => 'Sälber gändereti Syte un Dateie automatisch beobachte',
index e1bf53a..eb96bb7 100644 (file)
@@ -162,9 +162,7 @@ $messages = array(
 'tog-numberheadings' => 'મથાળાંઓને આપો-આપ ક્રમ (ઑટો નંબર) આપો',
 'tog-showtoolbar' => 'ફેરફાર માટેની ટૂલબાર બતાવો',
 'tog-editondblclick' => 'બે વખત ક્લિક કરી પાનાંઓમાં ફેરફાર કરો',
-'tog-editsection' => 'વિભાગોમાં [ફેરફાર કરો] કડી દ્વારા વિભાગીય ફેરફાર લાગુ કરો.',
 'tog-editsectiononrightclick' => 'વિભાગના મથાળાં ને રાઇટ ક્લિક દ્વારા ફેરફાર કરવાની રીત અપનાવો.',
-'tog-showtoc' => 'અનુક્રમણિકા દર્શાવો (૩થી વધુ પેટા-મથાળા વાળા લેખો માટે)',
 'tog-rememberpassword' => 'આ કમ્પ્યૂટર પર મારી લોગ-ઇન વિગતો યાદ રાખો (મહત્તમ $1 {{PLURAL:$1|દિવસ|દિવસો}} માટે)',
 'tog-watchcreations' => 'મેં બનાવેલાં પાનાં અને અપલોડ કરેલી ફાઇલો મારી ધ્યાનસૂચિમાં ઉમેરો',
 'tog-watchdefault' => 'હું ફેરફાર કરૂં તે પાનાં અને ફાઇલ્સ મારી ધ્યાનસૂચિમાં ઉમેરો',
index a1338dc..2e53168 100644 (file)
@@ -31,20 +31,18 @@ $messages = array(
 'tog-numberheadings' => '標題自動編號',
 'tog-showtoolbar' => '展示編寫工具欄',
 'tog-editondblclick' => '雙撳編寫頁面',
-'tog-editsection' => '允許通過點撳[編寫]鏈接編寫段落',
 'tog-editsectiononrightclick' => '允許右撳標題編寫段落',
-'tog-showtoc' => '顯示目錄(針對一頁超過3隻標題嘅頁面)',
 'tog-rememberpassword' => '在邇隻瀏覽器記下亻厓嘅登入狀態(最多$1日)',
 'tog-watchcreations' => '加亻厓建立嘅頁面撈上傳嘅文件加入亻厓嘅監視列表',
 'tog-watchdefault' => '將亻厓編寫嘅頁面撈檔案加入亻厓嘅監視列表',
 'tog-watchmoves' => '將亻厓移動嘅頁面撈檔案加入亻厓嘅監視列表',
 'tog-watchdeletion' => '加亻厓刪除嘅頁面撈文件入亻厓嘅監視列表',
-'tog-minordefault' => '默認標記全部編寫細微修改',
+'tog-minordefault' => '默認標記全部編寫細微修改',
 'tog-previewontop' => '在編寫框上頭顯示預覽',
 'tog-previewonfirst' => '第一擺編寫時顯示預覽',
 'tog-enotifwatchlistpages' => '亻厓監視列表肚嘅頁面或文件有更動時,發電子郵件分亻厓',
 'tog-enotifusertalkpages' => '亻厓嘅交流頁有更改時,發電子郵件分亻厓',
-'tog-enotifminoredits' => '頁面撈文件細修改也發電子郵件分我',
+'tog-enotifminoredits' => '頁面撈文件細修改也發電子郵件分我',
 'tog-enotifrevealaddr' => '在通知電子郵件肚顯示亻厓嘅電子郵件地址',
 'tog-shownumberswatching' => '展示監視中嘅使用人數目',
 'tog-oldsig' => '現有簽名:',
index dba9aab..63e0a2e 100644 (file)
@@ -375,9 +375,7 @@ $messages = array(
 'tog-numberheadings' => 'מספור כותרות אוטומטי',
 'tog-showtoolbar' => 'הצגת סרגל העריכה',
 'tog-editondblclick' => 'עריכת דפים בלחיצה כפולה',
-'tog-editsection' => 'עריכת פסקאות באמצעות קישורי [עריכה]',
 'tog-editsectiononrightclick' => 'עריכת פסקאות באמצעות לחיצה ימנית על כותרות הפסקאות',
-'tog-showtoc' => 'הצגת תוכן עניינים (עבור דפים עם יותר מ־3 כותרות)',
 'tog-rememberpassword' => 'שמירת הכניסה שלי בדפדפן זה ({{PLURAL:$1|ליום אחד|ליומיים|ל־$1 ימים}} לכל היותר)',
 'tog-watchcreations' => 'מעקב אחרי דפים שיצרתי וקבצים שהעליתי',
 'tog-watchdefault' => 'מעקב אחרי דפים וקבצים שערכתי',
index b658478..ab57309 100644 (file)
@@ -201,9 +201,7 @@ $messages = array(
 'tog-numberheadings' => 'शीर्षक स्व-क्रमांकित करें',
 'tog-showtoolbar' => 'सम्पादन औज़ारपट्टी दिखाएँ',
 'tog-editondblclick' => 'दुगुने क्लिक पर पृष्ठ संपादित करें',
-'tog-editsection' => '[संपादित करें] कड़ियों द्वारा अनुभाग संपादन सक्षम करें',
 'tog-editsectiononrightclick' => 'अनुभाग शीर्षक पर दायाँ क्लिक करने पर अनुभाग सम्पादित करें',
-'tog-showtoc' => 'अनुक्रम दर्शायें (जिन पृष्ठों पर तीन से अधिक अनुभाग हों)',
 'tog-rememberpassword' => 'इस ब्राउज़र पर मेरा कूटशब्द  (अधिकतम $1 {{PLURAL:$1|दिन|दिनों}} तक) याद रखें',
 'tog-watchcreations' => 'मेरे द्वारा निर्मित पृष्ठों और मेरी अपलोड की फ़ाइलों को मेरी ध्यानसूची में जोड़ें',
 'tog-watchdefault' => 'मेरे द्वारा सम्पादित पृष्ठों और फ़ाइलों को मेरी ध्यानसूची में जोड़ें',
@@ -758,6 +756,8 @@ $2',
 'retypenew' => 'नया कूटशब्द पुन: लिखें:',
 'resetpass_submit' => 'कूटशब्द बनाएँ और लॉग इन करें',
 'changepassword-success' => 'आपका कूटशब्द बदल दिया गया है!',
+'changepassword-throttled' => 'आपने हाल ही में कई बार लॉग इन करने के प्रयास किये हैं।
+पुनः प्रयास करने से पहले कृपया $1 प्रतीक्षा करें।',
 'resetpass_forbidden' => 'कूटशब्द बदले नहीं जा सकते',
 'resetpass-no-info' => 'इस पृष्ठ का सीधे प्रयोग करने के लिए आपको लॉग इन करना होगा।',
 'resetpass-submit-loggedin' => 'कूटशब्द बदलें',
@@ -770,7 +770,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'कूटशब्द रीसेट',
 'passwordreset-text-one' => 'अपना कूटशब्द रीसेट करने के लिए यह फ़ॉर्म भरें।',
-'passwordreset-text-many' => '{{PLURAL:$1|à¤\85पना à¤\95à¥\82à¤\9fशबà¥\8dद à¤°à¥\80सà¥\87à¤\9f à¤\95रनà¥\87 à¤\95à¥\87 à¤²à¤¿à¤\8f à¤¨à¤¿à¤®à¥\8dन à¤®à¥\87à¤\82 à¤¸à¥\87 à¤\95à¥\8bà¤\88 à¤\8fà¤\95 भरें।}}',
+'passwordreset-text-many' => '{{PLURAL:$1|à¤\88मà¥\87ल à¤\95à¥\87 à¤®à¤¾à¤§à¥\8dयम à¤¸à¥\87 à¤\8fà¤\95 à¤\85सà¥\8dथायà¥\80 à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड à¤ªà¥\8dरापà¥\8dत à¤\95रनà¥\87 à¤\95à¥\87 à¤²à¤¿à¤\8f à¤\95à¥\8bà¤\88 à¤\8fà¤\95 à¤¡à¤¿à¤¬à¥\8dबा भरें।}}',
 'passwordreset-legend' => 'कूटशब्द रीसेट करें',
 'passwordreset-disabled' => 'कूटशब्द रीसेट करना इस विकी पर अक्षम है।',
 'passwordreset-emaildisabled' => 'इस विकि पर ई-मेल सुविधा अक्षम कर दी गयी है।',
@@ -809,6 +809,8 @@ $2
 'changeemail-password' => 'आपका {{SITENAME}} पासवर्ड:',
 'changeemail-submit' => 'ई-मेल बदलें',
 'changeemail-cancel' => 'रद्द करें',
+'changeemail-throttled' => 'आपने हाल ही में कई बार लॉग इन करने के प्रयास किये हैं।
+पुनः प्रयास करने से पहले कृपया $1 प्रतीक्षा करें।',
 
 # Special:ResetTokens
 'resettokens' => 'टोकन रीसेट करें',
@@ -1038,6 +1040,8 @@ $2
 'content-not-allowed-here' => '[[$2]] पृष्ठ पर "$1" सामग्री मना है।',
 'editwarning-warning' => 'इस पृष्ठ को छोड़ने पर आपके द्वारा किये गए कोई भी बदलाव गायब हो जाएँगे।
 यदि आपने लॉग इन किया हुआ है तो आप इस सूचना का दिखना अपनी वरीयताओं के "संपादन" भाग में बंद कर सकते हैं।',
+'editpage-notsupportedcontentformat-title' => 'सामग्री स्वरूप समर्थित नहीं है',
+'editpage-notsupportedcontentformat-text' => '$1 सामग्री स्वरूप $2 सामग्री मॉडल द्वारा समर्थित नहीं है।',
 
 # Content models
 'content-model-wikitext' => 'विकिटेक्स्ट',
@@ -1080,6 +1084,9 @@ $2
 'cantcreateaccount-text' => "इस आइ॰पी पते ('''$1''') को खाता निर्मित करने से [[User:$3|$3]] ने प्रतिबंधित किया है।
 
 इसके लिये $3 ने ''$2'' कारण दिया है।",
+'cantcreateaccount-range-text' => "'''$1''' की श्रेणी में आने वाले IP पतों से, जिसमें आपका IP पता ('''$4''') शामिल हैं, नए खातों की रचना [[सदस्य:$3|$3]] द्वारा अवरोधित की गयी है। 
+
+$3 द्वारा दिया गया कारण है:' $2 '",
 
 # History pages
 'viewpagelogs' => 'इस पृष्ठ का लॉग देखें',
@@ -1157,19 +1164,19 @@ $2
 {{SITENAME}} के अन्य प्रबंधक छिपी हुई सामग्री को देख पाएँगे, और इसी अंतरापृष्ठ के जरिए वे इसकी पुनर्स्थापना भी कर सकते हैं, बशर्ते कि अतिरिक्त प्रतिबंध न लगाए गए हों।",
 'revdelete-confirm' => 'पुष्टि करें कि आप यह कार्य करना चाहते हैं, आप इसका परिणाम समझते हैं, और आप ये [[{{MediaWiki:Policy-url}}|नीति]] के अनुसार कर रहे हैं।',
 'revdelete-suppress-text' => "छिपाने का प्रयोग '''केवल''' इन परिस्थितियों में होना चाहिए:
-* à¤¬à¤¦à¤¨à¤¾à¤® à¤\95रनà¥\87 à¤µà¤¾à¤²à¥\80 जानकारी
+* à¤¸à¤\82भावित à¤\85पमानà¤\9cनà¤\95 जानकारी
 * अनुपयुक्त निजी जानकारी
-*: ''à¤\98र à¤\95à¥\87 à¤ªà¤¤à¥\87 à¤µ à¤¦à¥\82रभाष, à¤¸à¤¾à¤®à¤¾à¤\9cिà¤\95 à¤¸à¥\81रà¤\95à¥\8dषा à¤\95à¥\8dरमाà¤\82à¤\95 à¤\86दि''",
+*: ''à¤\98र à¤\95à¥\87 à¤ªà¤¤à¥\87 à¤µ à¤¦à¥\82रभाष, à¤°à¤¾à¤·à¥\8dà¤\9fà¥\8dरà¥\80य à¤ªà¤¹à¤\9aान à¤\95à¥\8dरमाà¤\82à¤\95 à¤\86दि।''",
 'revdelete-legend' => 'दृश्य प्रतिबंध निश्चित करें',
-'revdelete-hide-text' => 'à¤\85वरतण à¤\95ा à¤ªà¤¾à¤  à¤\9bà¥\81पाà¤\8fà¤\81',
+'revdelete-hide-text' => 'à¤\85वरतण à¤ªà¤¾à¤ ',
 'revdelete-hide-image' => 'फ़ाइल का पाठ छुपाएँ',
 'revdelete-hide-name' => 'क्रिया और लक्ष्य को छुपाएँ',
-'revdelete-hide-comment' => 'सà¤\82पादन à¤\9fिपà¥\8dपणà¥\80 à¤\9bà¥\81पाà¤\8fà¤\81',
-'revdelete-hide-user' => 'संपादक का सदस्यनाम/आइ॰पी छुपाएँ',
+'revdelete-hide-comment' => 'सà¤\82पादन à¤¸à¤¾à¤°à¤¾à¤\82श',
+'revdelete-hide-user' => 'संपादक का सदस्यनाम/आइ॰पी॰ पता',
 'revdelete-hide-restricted' => 'प्रबंधक सहित सभी सदस्यों से डाटा छुपाएँ',
 'revdelete-radio-same' => '‍‌(बदलें नहीं)',
-'revdelete-radio-set' => 'हाà¤\81',
-'revdelete-radio-unset' => 'नहà¥\80à¤\82',
+'revdelete-radio-set' => 'à¤\9bिपा à¤¹à¥\81à¤\86',
+'revdelete-radio-unset' => 'दà¥\83शà¥\8dय',
 'revdelete-suppress' => 'प्रबंधक सहित सभी सदस्यों से डाटा छुपाएँ',
 'revdelete-unsuppress' => 'पुनर्स्थापित अवतरणों पर से प्रतिबन्ध हटाएँ',
 'revdelete-log' => 'कारण:',
@@ -1286,6 +1293,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 के परिणाम:',
@@ -1314,6 +1322,7 @@ $1",
 'preferences' => 'मेरी वरीयताएँ',
 'mypreferences' => 'पसंद',
 'prefs-edits' => 'संपादन संख्या:',
+'prefsnologintext2' => 'अपनी वरीयताओं को बदलने के लिए कृपया $1 करें।',
 'prefs-skin' => 'त्वचा',
 'skin-preview' => 'झलक',
 'datedefault' => 'खा़स पसंद नहीं',
@@ -1425,6 +1434,7 @@ HTML टैग की जाँच करें।',
 'prefs-tokenwatchlist' => 'टोकन',
 'prefs-diffs' => 'अंतर',
 'prefs-help-prefershttps' => 'यह वरीयता आपके अगले लॉगिन पर प्रभावी होगी।',
+'prefs-tabs-navigation-hint' => 'सुझाव: आप टैब्स सूची में टैब्स के बीच आवागमन करने के लिए बाएँ और दाएँ तीर कुंजियों का उपयोग कर सकते हैं।',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'ई-मेल पता वैध प्रतीत होता है',
@@ -1610,12 +1620,14 @@ HTML टैग की जाँच करें।',
 'recentchanges-label-minor' => 'यह एक छोटा सम्पादन है',
 'recentchanges-label-bot' => 'यह संपादन एक बॉट द्वारा किया गया था',
 'recentchanges-label-unpatrolled' => 'यह संपादन अभी जाँचा नहीं गया है',
-'recentchanges-legend-newpage' => '$1 - नया पन्ना',
+'recentchanges-label-plusminus' => 'पृष्ठ आकार इस बाइट्स संख्या से बदला',
+'recentchanges-legend-heading' => "'''कुंजी:'''",
+'recentchanges-legend-newpage' => '([[विशेष:NewPages|नए पन्नों की सूची]] को भी देखें)',
 'rcnotefrom' => "नीचे '''$2''' के बाद से ('''$1''' तक) हुए बदलाव दर्शाए गये हैं।",
 'rclistfrom' => '$1 से नये बदलाव दिखाएँ',
 'rcshowhideminor' => 'छोटे बदलाव $1',
 'rcshowhidebots' => 'बॉट $1',
-'rcshowhideliu' => 'लॉग्ड इन सदस्यों के बदलाव $1',
+'rcshowhideliu' => '$1 पंजीकृत सदस्य',
 'rcshowhideanons' => 'आइ॰पी सदस्यों के बदलाव $1',
 'rcshowhidepatr' => 'परीक्षित सम्पादन $1',
 'rcshowhidemine' => 'मेरे बदलाव $1',
@@ -1735,6 +1747,8 @@ HTML टैग की जाँच करें।',
 'file-exists-duplicate' => 'यह फ़ाइल निम्नलिखित {{PLURAL:$1|फ़ाइल|फ़ाइलों}} की प्रति है:',
 'file-deleted-duplicate' => 'इसी फ़ाइल ([[:$1]]) से हूबहू मेल खाती एक फ़ाइल पहले हटाई जा चुकी है।
 इसे फिर से अपलोड करने से पहले आपको पुरानी फ़ाइल का हटाने के इतिहास देख लेना चाहिए।',
+'file-deleted-duplicate-notitle' => 'इससे पहले इस फ़ाइल के समान एक फ़ाइल को हटाया गया है, और शीर्षक छिपा दिया गया है।
+इसे फिर से अपलोड करने से पहले आप किसी ऐसे व्यक्ति, जिसके पास छिपे फ़ाइल डेटा को देखने की क्षमता है, से स्थिति की समीक्षा करने के लिए कहें।',
 'uploadwarning' => 'अपलोड चेतावनी',
 'uploadwarning-text' => 'फ़ाइल विवरण को संशोधित कर फिर कोशिश करें।',
 'savefile' => 'फ़ाइल संजोयें',
@@ -1824,6 +1838,7 @@ $1',
 'backend-fail-internal' => 'भंडारण बैकेंड "$1" में कोई अज्ञात त्रुटि उत्पन्न हुई।',
 'backend-fail-contenttype' => '"$1" पर संजोने के लिये फ़ाइल का प्रकार नहीं निश्चित किया जा सका।',
 'backend-fail-batchsize' => 'भंडारण बैकेंड को $1 फ़ाइल {{PLURAL:$1|कार्य}} दिये गए थे; सीमा {{PLURAL:$2|$2 कार्य|$2 कार्यों}} की है।',
+'backend-fail-usable' => 'फ़ाइल "$1" को पर्याप्त अनुमति या अनुपस्थित डायरेक्ट्रीज़/कंटेनरों के कारण पढ़ा या लिखा नहीं जा सका।',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'भंडारण बैकेंड "$1" के जर्नल डाटाबेस से सम्पर्क नहीं हो पाया।',
@@ -1838,6 +1853,7 @@ $1',
 'lockmanager-fail-releaselock' => '"$1" के लिए लॉक हटाया नहीं जा सका।',
 'lockmanager-fail-db-bucket' => 'बकेट $1 में आवश्यक संख्या में लॉक डाटाबेसों से सम्पर्क नहीं हो पाया।',
 'lockmanager-fail-db-release' => 'डाटाबेस $1 से ताला हटाया नहीं जा सका।',
+'lockmanager-fail-svr-acquire' => 'सर्वर $1 पर तालों को प्राप्त नहीं किया जा सका।',
 'lockmanager-fail-svr-release' => 'सर्वर $1 से टाला हटाया नहीं जा सका।',
 
 # ZipDirectoryReader
@@ -2047,6 +2063,12 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 'statistics-users-active-desc' => 'पिछले {{PLURAL:$1|एक दिन|$1 दिनों}} में कुछ गतिविधि रखने वाले सदस्य',
 'statistics-mostpopular' => 'सबसे अधिक देखे गए पृष्ठ',
 
+'pageswithprop' => 'पृष्ठ जिनमें पृष्ठ गुण हैं',
+'pageswithprop-legend' => 'पृष्ठ जिनमें पृष्ठ गुण हैं',
+'pageswithprop-text' => 'यह पृष्ठ पृष्ठ गुण का उपयोग कर रहे पन्नों को सूचीबद्ध करता है।',
+'pageswithprop-prop' => 'गुण का नाम:',
+'pageswithprop-submit' => 'खोजें',
+
 'doubleredirects' => 'दुगुने पुनर्निर्देश',
 'doubleredirectstext' => 'यह पृष्ठ उन पृष्ठों की सूची देता है जो अन्य पुनर्निर्देशित पृष्ठों की ओर पुनर्निर्देशित हैं।
 हर कतार में पहले और दूसरे पुनर्निर्देशन की कड़ियाँ, तथा दूसरे पुनर्निर्देशन का लक्ष्य भी है, आमतौर पर यही "वास्तविक" लक्ष्यित पृष्ठ होगा, और पहला पुनर्देशन वास्तव में इसी को लक्ष्यित होना चाहिए।
@@ -4066,4 +4088,6 @@ $5
 'expand_templates_generate_xml' => 'XML का पार्स (parse) वृक्ष दर्शायें',
 'expand_templates_preview' => 'झलक',
 
+# Unknown messages
+'uploadinvalidxml' => 'अपलोड की गई XML फ़ाइल पार्स नहीं किया जा सका।',
 );
index 0993a16..ead48ef 100644 (file)
@@ -46,9 +46,7 @@ $messages = array(
 'tog-numberheadings' => 'Sab heading ke apne se number karo',
 'tog-showtoolbar' => 'Badle waala toolbar ke dekhao',
 'tog-editondblclick' => 'Dugnaa click pe panna ke badlo',
-'tog-editsection' => '[Badlao] ke jorr se section ke badlao se enable karo',
 'tog-editsectiononrightclick' => 'Bhaag ke title pe right click kare pe bhaag ke badle ke laabu karo',
-'tog-showtoc' => 'Dhyan suchi dekhao (uu panna khatir jon me tiin se jaada heading hai)',
 'tog-rememberpassword' => 'Ii browser me (jaada se jaada $1 {{PLURAL:$1|din|din}}) talak hamaar login ke yaad rakho.',
 'tog-watchcreations' => 'Hamaar banawa waala panna aur upload karaa gais file ke hamaar dhyaan suchi me jorro',
 'tog-watchdefault' => 'Ham se badla gais panna aur file ke hamaar dhyaan suchi me jorro',
index 28fc9f6..2043bd5 100644 (file)
@@ -30,9 +30,7 @@ $messages = array(
 'tog-numberheadings' => 'Auto-numero heading',
 'tog-showtoolbar' => 'Ipakita ang edit toolbar (nagakilanlan JavaScript)',
 'tog-editondblclick' => 'Islan ang pahina kung i-doble klik mo (nagakilanlan JavaScript)',
-'tog-editsection' => 'Sugtan ang pag-ilis sang seksyon paagi sa [ilisan] nga mga tabid',
 'tog-editsectiononrightclick' => 'Sugtan ang pag-ilis sang seksyon paagi sa pagtum-ok sang natoo sa mouse sa titulo sang seksyon (nagakinahanglan sang JavaScript)',
-'tog-showtoc' => 'Ipakita ang sinulatan sang nagabug-os (para sang mga panid nga may yara sang masobra sa 3 nga pangolohan)',
 'tog-rememberpassword' => 'Dumdumon ang akon password sa sini nga brawser (para sa indi magsobra $1 {{PLURAL:$1|nga adlaw|nga mga adlaw}})',
 'tog-watchcreations' => 'Magdugang sang mga panid nga akon buhaton kag mga hilera nga akon igapasaka sa akon mga ginabantayan',
 'tog-watchdefault' => 'Idugang ang mga panid kag hilera nga akon ginbag-o sa akon mga ginabantayan',
index 57344e1..cafe1f3 100644 (file)
@@ -327,9 +327,7 @@ $messages = array(
 'tog-numberheadings' => 'Automatski označi naslove brojevima',
 'tog-showtoolbar' => 'Prikaži traku s alatima za uređivanje (zahtijeva JavaScript)',
 'tog-editondblclick' => 'Dvoklik otvara uređivanje stranice (JavaScript)',
-'tog-editsection' => 'Prikaži poveznice za uređivanje pojedinih odlomaka',
 'tog-editsectiononrightclick' => 'Pritiskom na desnu tipku miša otvori uređivanje pojedinih odlomaka (JavaScript)',
-'tog-showtoc' => 'U člancima s više od tri odlomka prikaži tablicu sadržaja.',
 'tog-rememberpassword' => 'Zapamti moju lozinku u ovom pregledniku (najduže $1 {{PLURAL:$1|dan|dana|dana}})',
 'tog-watchcreations' => 'Dodaj članke koje kreiram na moj popis praćenja',
 'tog-watchdefault' => 'Dodaj svaku stranicu koju uredim na moj popis praćenja',
index 65fa44d..b45066f 100644 (file)
@@ -165,9 +165,7 @@ $messages = array(
 'tog-numberheadings' => 'Nadpisma awtomatisce čisłować',
 'tog-showtoolbar' => 'Wobdźěłowansku lajstu pokazać',
 'tog-editondblclick' => 'Strony z dwójnym kliknjenjom wobdźěłować',
-'tog-editsection' => 'Wobdźěłowanje jednotliwych wotrězkow přez wotkazy [wobdźěłać] zmóžnić',
 'tog-editsectiononrightclick' => 'Wobdźěłowanje wotrězkow přez kliknjenje z prawej tastu na nadpisma wotrězkow zmóžnić',
-'tog-showtoc' => 'Zapis wobsaha pokazać (za strony z wjace hač 3 nadpismami)',
 'tog-rememberpassword' => 'Přizjewjenje na tutym wobhladowaku sej spomjatkować (za maksimalnje $1 {{PLURAL:$1|dźeń|dnjej|dny|dnjow}})',
 'tog-watchcreations' => 'Strony, kotrež wutworjam a dataje, kotrež nahrawam, swojim wobkedźbowankam přidać',
 'tog-watchdefault' => 'Strony a dataje, kotrež wobdźěłuju, swojim wobkedźbowankam přidać',
@@ -703,6 +701,7 @@ Jeli jo podaš, budźe so to wužiwać, zo by přinoški přirjadowało.',
 'retypenew' => 'Nowe hesło wospjetować:',
 'resetpass_submit' => 'Hesło posrědkować a so přizjewić',
 'changepassword-success' => 'Twoje hesło je so wuspěšnje změniło!',
+'changepassword-throttled' => 'Sy přehusto spytał so přizjewić. Počakaj prošu $1, prjedy hač hišće raz spytaš.',
 'resetpass_forbidden' => 'Hesła njedadźa so změnić.',
 'resetpass-no-info' => 'Dyrbiš so přizjewić, zo by direktny přistup na tutu stronu měł.',
 'resetpass-submit-loggedin' => 'Hesło změnić',
@@ -754,6 +753,8 @@ Nachwilne hesło: $2',
 'changeemail-password' => 'Twoje hesło za {{GRAMMAR:akuzatiw|{{SITENAME}}}}',
 'changeemail-submit' => 'E-mejlowu adresu změnić',
 'changeemail-cancel' => 'Přetorhnyć',
+'changeemail-throttled' => 'Sy přehusto spytał so přizjewić.
+Počakaj prošu $1, prjedy hač hišće raz spytaš.',
 
 # Special:ResetTokens
 'resettokens' => 'Tokeny wróćo stajić',
@@ -3961,5 +3962,6 @@ Hewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so s
 'expand_templates_preview' => 'Přehlad',
 
 # Unknown messages
+'createaccount-hook-aborted' => '$1',
 'uploadinvalidxml' => 'XML w nahratej dataji njeda so parsować.',
 );
index 98c1527..c5acdd8 100644 (file)
@@ -325,9 +325,7 @@ $messages = array(
 'tog-numberheadings' => 'Fejezetcímek automatikus számozása',
 'tog-showtoolbar' => 'Szerkesztőeszközsor megjelenítése',
 'tog-editondblclick' => 'A lapok szerkesztése dupla kattintásra',
-'tog-editsection' => '[szerkesztés] linkek az egyes szakaszok szerkesztéséhez',
 'tog-editsectiononrightclick' => 'Szakaszok szerkesztése a szakaszcímre való jobb kattintással',
-'tog-showtoc' => 'Tartalomjegyzék megjelenítése a három fejezetnél többel rendelkező cikkeknél',
 'tog-rememberpassword' => 'Emlékezzen rám ezzel a böngészővel (legfeljebb {{PLURAL:$1|egy|$1}} napig)',
 'tog-watchcreations' => 'Az általam létrehozott lapok és feltöltött fájlok felvétele a figyelőlistámra',
 'tog-watchdefault' => 'Az általam szerkesztett lapok és fájlok felvétele a figyelőlistámra',
index f2380bf..fd5c692 100644 (file)
@@ -286,9 +286,7 @@ $messages = array(
 'tog-numberheadings' => 'Ինքնաթվագրել վերնագրերը',
 'tog-showtoolbar' => 'Ցույց տալ խմբագրումների գործիքների վահանակը',
 'tog-editondblclick' => 'Խմբագրել էջերը կրկնակի մատնահարմամբ',
-'tog-editsection' => 'Ցույց տալ [խմբագրել] հղումը ամեն բաժնի համար',
 'tog-editsectiononrightclick' => 'Խմբագրել բաժինները վերնագրի աջ մատնահարմամբ',
-'tog-showtoc' => 'Ցույց տալ բովանդակությունը (3  կամ ավել վերնագրեր ունեցող էջերի համար)',
 'tog-rememberpassword' => 'Հիշել իմ մուտքագրված տվյալներն այս համակարգչում ($1 {{PLURAL:$1|օրից}} ոչ ավել ժամկետով)',
 'tog-watchcreations' => 'Ավելացնել իմ ստեղծած էջերը և բեռնած նիշքերը հսկացանկին',
 'tog-watchdefault' => 'Ավելացնել իմ խմբագրած էջերը և նիշքերը հսկացանկին',
index df0ba42..f8af929 100644 (file)
@@ -156,9 +156,7 @@ $messages = array(
 'tog-numberheadings' => 'Numerar titulos automaticamente',
 'tog-showtoolbar' => 'Monstrar instrumentario de modification',
 'tog-editondblclick' => 'Modificar paginas con duple clic',
-'tog-editsection' => 'Activar le modification de sectiones con ligamines "[modificar]"',
 'tog-editsectiononrightclick' => 'Permitter modification de sectiones con clic-a-dextra sur titulos de section',
-'tog-showtoc' => 'Monstrar tabula de contento (in paginas con plus de 3 sectiones)',
 'tog-rememberpassword' => 'Memorar mi contrasigno in iste navigator (pro un maximo de $1 {{PLURAL:$1|die|dies}})',
 'tog-watchcreations' => 'Adder le paginas que io crea e le files que io incarga a mi observatorio',
 'tog-watchdefault' => 'Adder le paginas e files que io modifica a mi observatorio',
index bbc3d70..99ce286 100644 (file)
@@ -357,9 +357,7 @@ $messages = array(
 'tog-numberheadings' => 'Beri nomor judul secara otomatis',
 'tog-showtoolbar' => 'Tampilkan bilah alat penyuntingan',
 'tog-editondblclick' => 'Sunting halaman dengan klik ganda',
-'tog-editsection' => 'Fungsikan penyuntingan subbagian melalui pranala [sunting]',
 'tog-editsectiononrightclick' => 'Fungsikan penyuntingan bagian dengan mengeklik kanan pada judul bagian',
-'tog-showtoc' => 'Perlihatkan daftar isi (untuk halaman yang mempunyai lebih dari 3 subbagian)',
 'tog-rememberpassword' => 'Ingat kata sandi saya di peramban ini (selama $1 {{PLURAL:$1|hari}})',
 'tog-watchcreations' => 'Tambahkan halaman yang saya buat ke daftar pantauan',
 'tog-watchdefault' => 'Tambahkan halaman yang saya sunting ke daftar pantauan',
index 6b880d5..75fd544 100644 (file)
@@ -46,9 +46,7 @@ $messages = array(
 'tog-numberheadings' => 'Automatiko a pabilangan dagiti paulo',
 'tog-showtoolbar' => 'Ipakita ti baras ti ramit ti panag-urnos',
 'tog-editondblclick' => 'Urnosen dagiti panid iti mamindua a panagpindut',
-'tog-editsection' => 'Pakabaelan ti panag-urnos ti paset babaen kadagiti silpo nga [urnosen]',
 'tog-editsectiononrightclick' => 'Pakabaelan ti panag-urnos ti paset babaen ti kanawan a panagpindut kadagiti titulo ti paset',
-'tog-showtoc' => 'Ipakita ti tabla dagiti linaon (para kadagiti panid nga adda ti ad-adu ngem dagiti 3 a paulo)',
 'tog-rememberpassword' => 'Laglagipem ti iseserrekko iti daytoy a pagbasabasa (iti kapaut nga $1 {{PLURAL:$1|aldaw|al-aldaw}})',
 'tog-watchcreations' => 'Agnayon kadagiti panid a pinartuatko ken papeles nga inkargak idiay listaan ti bambantayak',
 'tog-watchdefault' => 'Agnayon kadagiti panid ken papeles nga inurnosko idiay listaan ti bambantayak',
index dde5212..45e44c9 100644 (file)
@@ -243,9 +243,7 @@ $messages = array(
 'tog-numberheadings' => 'Númera fyrirsagnir sjálfkrafa',
 'tog-showtoolbar' => 'Sýna breytingarverkfærastiku',
 'tog-editondblclick' => 'Breyta síðum þegar tvísmellt er',
-'tog-editsection' => 'Virkja hlutabreytingu með [breyta] tenglum',
 'tog-editsectiononrightclick' => 'Virkja hlutabreytingu með því að hægrismella á hlutafyrirsagnir',
-'tog-showtoc' => 'Sýna efnisyfirlit (fyrir síður með meira en 3 fyrirsagnir)',
 'tog-rememberpassword' => 'Muna innskráninguna mína í þessum vafra (í allt að $1 {{PLURAL:$1|dag|daga}})',
 'tog-watchcreations' => 'Bæta síðum sem ég bý til og skrám sem ég hleð inn á vaktlistann minn',
 'tog-watchdefault' => 'Bæta síðum og skrám sem ég breyti á vaktlistann minn',
index 7dbd1a7..2e27532 100644 (file)
@@ -303,9 +303,7 @@ $messages = array(
 'tog-numberheadings' => 'Numerazione automatica dei titoli di sezione',
 'tog-showtoolbar' => 'Mostra la barra degli strumenti di modifica',
 'tog-editondblclick' => 'Modifica delle pagine tramite doppio clic',
-'tog-editsection' => 'Modifica delle sezioni tramite il collegamento [modifica]',
 'tog-editsectiononrightclick' => 'Modifica delle sezioni tramite clic destro sul titolo',
-'tog-showtoc' => "Mostra l'indice (per le pagine con più di 3 sezioni)",
 'tog-rememberpassword' => 'Ricorda la password su questo browser (per un massimo di $1 {{PLURAL:$1|giorno|giorni}})',
 'tog-watchcreations' => 'Aggiungi le pagine create e i file caricati agli osservati speciali',
 'tog-watchdefault' => 'Aggiungi le pagine e i file modificati agli osservati speciali',
@@ -846,6 +844,8 @@ Attendi $1 e riprova in seguito.',
 'retypenew' => 'Riscrivi la nuova password:',
 'resetpass_submit' => 'Imposta la password e accedi al sito',
 'changepassword-success' => 'La password è stata modificata correttamente!',
+'changepassword-throttled' => 'Sono stati effettuati troppi tentativi di accesso in breve tempo.
+Attendi $1 e riprova in seguito.',
 'resetpass_forbidden' => 'Non è possibile modificare le password',
 'resetpass-no-info' => "Devi aver effettuato l'accesso per accedere a questa pagina direttamente.",
 'resetpass-submit-loggedin' => 'Cambia password',
@@ -901,6 +901,8 @@ Password temporanea: $2',
 'changeemail-password' => 'La password su {{SITENAME}}:',
 'changeemail-submit' => 'Modifica e-mail',
 'changeemail-cancel' => 'Annulla',
+'changeemail-throttled' => 'Sono stati effettuati troppi tentativi di accesso.
+Attendi $1 e riprova in seguito.',
 
 # Special:ResetTokens
 'resettokens' => 'Reimposta token',
@@ -3054,6 +3056,7 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
 'print.css' => "/* Gli stili CSS inseriti qui si applicano all'output in stampa */",
 'noscript.css' => '/ * Gli stili CSS inseriti qui si applicano agli utenti che hanno JavaScript disabilitato * /',
 'group-autoconfirmed.css' => '/ * Gli stili CSS inseriti qui si applicheranno solo ad utenti autoconvalidati * /',
+'group-user.css' => '/ * Gli stili CSS inseriti qui si applicheranno solo ad utenti registrati * /',
 'group-bot.css' => '/ * Gli stili CSS inseriti qui si applicheranno solo ai bot * /',
 'group-sysop.css' => '/ * Gli stili CSS inseriti qui si applicheranno solo agli amministratori/sysop * /',
 'group-bureaucrat.css' => '/ * Gli stili CSS inseriti qui si applicheranno solo ai burocrati * /',
@@ -3065,6 +3068,7 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
 'modern.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Modern */',
 'vector.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Vector */',
 'group-autoconfirmed.js' => '/ * Il codice JavaScript inserito qui viene caricato solo per gli utenti autoconvalidati * /',
+'group-user.js' => '/ * Il codice JavaScript inserito qui viene caricato solo per gli utenti registrati * /',
 'group-bot.js' => '/ * Il codice JavaScript inserito qui viene caricato solo per i bot * /',
 'group-sysop.js' => '/ * Il codice JavaScript inserito qui viene caricato solo per gli amministratori/sysop * /',
 'group-bureaucrat.js' => '/ * Il codice JavaScript inserito qui viene caricato solo per i burocrati * /',
index e20da5b..aa4acff 100644 (file)
@@ -379,9 +379,7 @@ $messages = array(
 'tog-numberheadings' => '見出しに番号を自動的に振る',
 'tog-showtoolbar' => '編集用のツールバーを表示',
 'tog-editondblclick' => 'ダブルクリックでページを編集',
-'tog-editsection' => '[編集]リンクから節を編集できるようにする',
 'tog-editsectiononrightclick' => '節見出しの右クリックで節を編集できるようにする',
-'tog-showtoc' => '目次を表示 (ページに見出しが4つ以上ある場合)',
 'tog-rememberpassword' => 'このブラウザーにログイン情報を保存 (最長 $1 {{PLURAL:$1|日|日間}})',
 'tog-watchcreations' => '自分が作成したページやアップロードしたファイルをウォッチリストに追加',
 'tog-watchdefault' => '自分が編集したページやファイルをウォッチリストに追加',
@@ -945,6 +943,8 @@ $1待ってから再度試してください。',
 'retypenew' => '新しいパスワードを再入力:',
 'resetpass_submit' => '再設定してログイン',
 'changepassword-success' => 'パスワードを変更しました!',
+'changepassword-throttled' => '最近のログインの試行回数が多すぎます。
+$1待ってから再度試してください。',
 'resetpass_forbidden' => 'パスワードは変更できません',
 'resetpass-no-info' => 'このページに直接アクセスするためにはログインしている必要があります。',
 'resetpass-submit-loggedin' => 'パスワードを変更',
@@ -1006,6 +1006,8 @@ $2
 'changeemail-password' => '{{SITENAME}}のパスワード:',
 'changeemail-submit' => 'メールアドレスを変更',
 'changeemail-cancel' => '中止',
+'changeemail-throttled' => 'ログインの試行回数が多すぎます。
+$1待ってから再度試してください。',
 
 # Special:ResetTokens
 'resettokens' => 'トークンの再設定',
index 9379f8e..700910a 100644 (file)
@@ -63,9 +63,7 @@ $messages = array(
 'tog-numberheadings' => 'Wènèhana nomer judul secara otomatis',
 'tog-showtoolbar' => 'Tuduhna <em>toolbar</em> (batang piranti) panyuntingan (mbutuhaké JavaScript)',
 'tog-editondblclick' => 'Sunting kaca nganggo klik ping loro (mbutuhaké JavaScript)',
-'tog-editsection' => 'Fungsèkna panyuntingan sub-bagian ngliwati pranala [sunting]',
 'tog-editsectiononrightclick' => 'Fungsèkna panyuntingan sub-bagian mawa klik-tengen ing judul bagian (mbutuhaké JavaScript)',
-'tog-showtoc' => 'Tuduhna daftar isi (kanggo kaca sing nduwé luwih saka 3 sub-bagian)',
 'tog-rememberpassword' => 'Émut tembung sandi kula ing peramban punika (salebeting $1 {{PLURAL:$1|dinten|dinten}})',
 'tog-watchcreations' => 'Tambahaké kaca sing tak gawé lan berkas sing tak unggah nèng daptar pangawasan',
 'tog-watchdefault' => 'Tambahaké kaca lan berkas sing tak sunting nèng daptar pangawasan',
index 41d40a0..4d86ae9 100644 (file)
@@ -178,9 +178,7 @@ $messages = array(
 'tog-numberheadings' => 'ავტომატურად დანომრე ქვესათაურები',
 'tog-showtoolbar' => 'რედაქტირების პანელის ჩვენება',
 'tog-editondblclick' => 'გვერდების რედაქტირება ორმაგი დაწკაპუნებით',
-'tog-editsection' => 'სექციის რედაქტირების ნებართვა [რედაქტირებული] ბმულების გავლით',
 'tog-editsectiononrightclick' => 'სექციის რედაქტირების ნებართვა სათაურებზე მარჯვენა ღილაკზე დაჭერით',
-'tog-showtoc' => 'აჩვენე სარჩევი (სამ ქვესათაურზე მეტის მქონე გვერდებისთვის)',
 'tog-rememberpassword' => 'დამიმახსოვრე ამ კომპიუტერზე (მაქსიმუმ $1 {{PLURAL:$1|დღე|დღე}})',
 'tog-watchcreations' => 'დაამატე ჩემი კონტროლის სიას ჩემს მიერ შექმნილი გვერდები და ატვირთული ფაილები',
 'tog-watchdefault' => 'დაამატე ჩემი კონტროლის სიას ჩემს მიერ რედაქტირებული გვერდები და ფაილები',
index 598854d..b04ad55 100644 (file)
@@ -54,9 +54,7 @@ $messages = array(
 'tog-numberheadings' => 'Izwal ɣur-sen imḍanen mebla ma serseɣ-iten',
 'tog-showtoolbar' => 'Ssken tafeggagt n ifecka n ubeddel',
 'tog-editondblclick' => 'Beddel isebtar mi wekkiɣ snat n tikwal',
-'tog-editsection' => 'Eǧǧ abeddel n umur s yizdayen [beddel]',
 'tog-editsectiononrightclick' => 'Ssermed abeddel n tigezmi s ukliki ayeffus ɣef izwal',
-'tog-showtoc' => 'Ssken agbur (i isebtar i yesɛan kter n 3 izwalen)',
 'tog-rememberpassword' => 'Cfu ɣef yisem n umseqdac inu di uselkim-agi (i afellay n $1 {{PLURAL:$1|ass|ussan}})',
 'tog-watchcreations' => 'Rnu isebtar i xelqeɣ deg wumuɣ n uɛessi inu',
 'tog-watchdefault' => 'Rnu isebtar i ttbeddileɣ deg wumuɣ n uɛessi inu',
@@ -586,6 +584,8 @@ Ma teɛzemeḍ a t-tefkeḍ, ad yettuseqdac iwakken ad snen medden anwa yuran ti
 'retypenew' => 'Ɛiwed ssekcem n tbaḍnit amaynut:',
 'resetpass_submit' => 'Eg awal n tbaḍnit u kcem',
 'changepassword-success' => 'Awal n uɛaddi yettubeddel s lerbaḥ !',
+'changepassword-throttled' => 'Tɛerdeḍ ad qqeneḍ aṭas tiqwal deg dqiqat agi iɛddan.
+Ilaq ad rǧuḍ $1 uqbel ad ɛerdeḍ tikkelt nniḍen.',
 'resetpass_forbidden' => 'Ur zemreḍ ara ad beddeleḍ awalen n uɛaddi',
 'resetpass-no-info' => 'Ilaq ad qqeneḍ iwakken ad ẓṛeḍ asebter agi.',
 'resetpass-submit-loggedin' => 'Beddel awal n uɛaddi',
@@ -635,6 +635,8 @@ Awal n uɛddi akudan : $2',
 'changeemail-password' => 'Awal-ik/im n uɛaddi ɣef {{SITENAME}} :',
 'changeemail-submit' => 'Beddel tansa e-mail',
 'changeemail-cancel' => 'Semmewet',
+'changeemail-throttled' => 'Tɛerdeḍ ad qqeneḍ aṭas tiqwal.
+Ilaq ad rǧuḍ $1 uqbel ad ɛerdeḍ tikkelt nniḍen.',
 
 # Special:ResetTokens
 'resettokens' => 'Wennez tiddas',
@@ -1092,6 +1094,7 @@ Tzemreḍ ad affeḍ tilɣa deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPA
 'search-result-score' => 'Taflest : $1%',
 'search-redirect' => '(asemmimeḍ $1)',
 'search-section' => '(tigezmi $1)',
+'search-file-match' => '(yzega i ugbur n ufaylu)',
 'search-suggest' => 'D awal $1 i tnadiḍ ?',
 'search-interwiki-caption' => 'Isenfaren atmaten',
 'search-interwiki-default' => 'Igemmaḍ ɣef $1 :',
@@ -2179,7 +2182,7 @@ Amḥu n isebtar am wagi yesɛa akref iwakken {{SITENAME}} ur yesɛu ara arway.'
 'delete-warning-toobig' => 'Asebtar agi yesɛa amezruy axatar n ibeddilen, ugaren $1 {{PLURAL:$1|lqem|ileqman}}.
 Tukksa-s tezmer ad terwi tiddit n taffa n isefka n {{SITENAME}} ;
 ilaq ad seqdeceḍ s-leɛqel.',
-'deleting-backlinks-warning' => "'''Ɣur-wet :''' Isebtar nniḍen sɛant azday ɣer asebtar i tebɣiḍ ad kkeseḍ.",
+'deleting-backlinks-warning' => "'''Ɣur-wet :''' Isebtar nniḍen sɛan azday ɣer asebtar i tebɣiḍ ad ekkeseḍ.",
 
 # Rollback
 'rollback' => 'Semmet ibeddilen',
@@ -2469,6 +2472,9 @@ Zeṛ [[Special:BlockList|umuɣ n isewḥal]] iwakken ad zṛeḍ isewḥal.',
 'blocklog-showsuppresslog' => 'Amseqdac agi, yetseweḥel dɣa yeweffer uqbel. Ad affeḍ aɣmis n tukksiwin ddaw-agi :',
 'blocklogentry' => 'yesewḥel [[$1]] ; alama : $2 $3',
 'reblock-logentry' => 'yebeddel iɣewwaren n usewḥel n [[$1]] s tasewtit ar $2 $3',
+'blocklogtext' => 'Wagi d-aɣmis n tigawin n usewḥel d aksusewḥel n imseqdacen.
+Tansiwin IP yestsuwḥelen s-uwurman ulac-itent deg umuɣ agi.
+Ẓer [[Special:BlockList|umuɣ n isewḥal]] iwakken ad ẓṛeḍ iḍeggiren d isewḥal yellan tura.',
 'unblocklogentry' => 'yekkes asewḥel n $1',
 'block-log-flags-anononly' => 'Imseqdacen udrigen kan',
 'block-log-flags-nocreate' => 'asnulfu n umiḍan yessegdel',
@@ -2480,7 +2486,7 @@ Zeṛ [[Special:BlockList|umuɣ n isewḥal]] iwakken ad zṛeḍ isewḥal.',
 'range_block_disabled' => 'Azref n unedbal i usnulfu n isewḥal n tagrummiwin IP yensa.',
 'ipb_expiry_invalid' => 'Tanzagt n tasewti ur teɣbel ara.',
 'ipb_expiry_temp' => 'Isewḥal n isemawen n imseqdacen yeffren ilaq ad illin d-imeɣlalen.',
-'ipb_hide_invalid' => 'Ulamek an ekkes amiḍan agi ; yesɛa aṭas ibeddilen.',
+'ipb_hide_invalid' => 'Ulamek an ekkes amiḍan agi ; yesɛa ugar n {{PLURAL:$1|yiwen abeddel|$1 ibeddilen}}.',
 'ipb_already_blocked' => '« $1 » yesewḥel yakan',
 'ipb-needreblock' => '« $1 » yesewḥel yakan. Tebɣiḍ ad beddeleḍ iɣewwaren ?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|Asewḥel nniḍen|Isewḥelen nniḍen}}',
@@ -3262,6 +3268,7 @@ G leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-ag
 'imgmultipageprev' => '← asebter ssabeq',
 'imgmultipagenext' => 'asebter ameḍfir →',
 'imgmultigo' => 'Ruḥ!',
+'imgmultigoto' => 'Ruḥ ar usebtar $1',
 
 # Table pager
 'ascending_abbrev' => 'asawen',
@@ -3325,6 +3332,9 @@ G leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-ag
 # Special:Version
 'version' => 'Lqem',
 'version-specialpages' => 'isebtar usligen',
+'version-other' => 'Nniḍen',
+'version-version' => '(lqem $1)',
+'version-poweredby-others' => 'nniḍen',
 'version-software' => 'Iseɣẓanen i serkeben',
 'version-software-product' => 'Afaris',
 'version-software-version' => 'Lqem',
@@ -3453,6 +3463,10 @@ G leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-ag
 'feedback-adding' => 'Rnud iwenniten inek/inem ar usebter...',
 'feedback-error1' => 'Tuccḍa : Agmuḍ n API ur yetwaɛqel ara',
 'feedback-error3' => 'Tuccḍa : Ulac tamrarut n API',
+'feedback-close' => 'D ayen',
+
+# Search suggestions
+'searchsuggest-search' => 'Nadi',
 
 # API errors
 'api-error-badtoken' => 'Tuccḍa tagensit : yir « tiddest ».',
@@ -3476,6 +3490,10 @@ G leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-ag
 'duration-centuries' => '$1 {{PLURAL:$1|timiḍi|timiḍa}}',
 'duration-millennia' => '$1 {{PLURAL:$1|agimseggwas|agimseggwasen}}',
 
+# Limit report
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|tasint|tisinin}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|tasint|tisinin}}',
+
 # Unknown messages
 'uploadinvalidxml' => 'XML deg ufaylu yekteren ur d-yetwesleḍ ara.',
 );
index 1469df9..16a0071 100644 (file)
@@ -65,9 +65,7 @@ $messages = array(
 'tog-numberheadings' => 'Sernustu be ho numra cı sane',
 'tog-showtoolbar' => 'Gozagunê hacetunê vurnayişi bıasne (JavaScript lazımo)',
 'tog-editondblclick' => 'Pê dı rey teqnayene pele sero bıguriye (JavaScript lazımo)',
-'tog-editsection' => 'Vurnayena qısımi ebe gireyunê [bıvurne] ra feal ke',
 'tog-editsectiononrightclick' => 'Qısımu be teqnayena serrêze ra ebe gozaga raste bıvurne (JavaScript lazımo)',
-'tog-showtoc' => 'Tablowê tedeestewu bıasne (de pelunê be hirê sernustu ra jêdêri de)',
 'tog-rememberpassword' => 'Parola mı nê cıcêrawoği de bia ho viri (serba tewr jêde $1 {{PLURAL:$1|roze|rozu}}).',
 'tog-watchcreations' => 'Pelê ke mı afernê u dosyê ke mı bar kerdê lista mına şêrkerdişi ke',
 'tog-watchdefault' => 'Pel u dosyê ke mı vurnê lista mına şêrkerdişi ke',
index 1a5f4d5..9c15dbc 100644 (file)
@@ -371,9 +371,7 @@ $messages = array(
 'tog-numberheadings' => 'Мазмұн тақырыптарын автоматты нөмірлеу',
 'tog-showtoolbar' => 'Өңдеу құралдарын көрсету',
 'tog-editondblclick' => 'Қос шерту арқылы бетті өңдеу',
-'tog-editsection' => 'Бөлімдерді [өңдеу] сілтемесімен өңдеуін қос',
 'tog-editsectiononrightclick' => 'Бөлім тақырыбын оң нұқумен бөлім өңдеуін қосу',
-'tog-showtoc' => 'Мазмұнын көрсету (3-тен астам бөлімі болған жағдайда ғана)',
 'tog-rememberpassword' => 'Тіркелгімді осы браузерде ұмытпа (ең көбі $1 {{PLURAL:$1|күн|күн}})',
 'tog-watchcreations' => 'Мен бастаған беттерді бақылау тізіміне қос',
 'tog-watchdefault' => 'Мен өңдеген беттерді бақылау тізіміне қос',
index 1120938..2acda4e 100644 (file)
@@ -271,9 +271,7 @@ $messages = array(
 'tog-numberheadings' => 'ដាក់លេខ​ចំណងជើងរង​ដោយស្វ័យប្រវត្តិ',
 'tog-showtoolbar' => 'បង្ហាញ​របារឧបករណ៍កែប្រែ',
 'tog-editondblclick' => 'កែប្រែទំព័រដោយចុចពីរដង​ជាប់គ្នា',
-'tog-editsection' => 'អនុញ្ញាតអោយកែប្រែ​ផ្នែកណាមួយ​តាម​រយៈតំណភ្ជាប់ [កែប្រែ]',
 'tog-editsectiononrightclick' => 'អនុញ្ញាត​អោយកែប្រែ​​ផ្នែកណាមួយ ដោយ​ចុចកណ្តុរស្ដាំ​លើ​ចំណងជើង​របស់វា',
-'tog-showtoc' => 'បង្ហាញ​តារាងមាតិកា (សម្រាប់ទំព័រ​ដែលមាន​ចំណងជើងរង​លើសពី៣)',
 'tog-rememberpassword' => 'ចងចាំ​ការកត់ឈ្មោះចូលរបស់ខ្ញុំ​លើកុំព្យូទ័រនេះ (សំរាប់រយៈពេលយ៉ាងយូរ$1 {{PLURAL:$1|ថ្ងៃ|ថ្ងៃ}})',
 'tog-watchcreations' => 'បន្ថែម​ទំព័រ​ទាំងឡាយដែលខ្ញុំបង្កើត​ទៅ​បញ្ជីតាមដាន​របស់ខ្ញុំ',
 'tog-watchdefault' => 'បន្ថែម​ទំព័រទាំងឡាយ​ដែលខ្ញុំកែប្រែ​ទៅ​បញ្ជីតាមដាន​របស់ខ្ញុំ',
index 6326b47..d899d33 100644 (file)
@@ -373,9 +373,7 @@ $messages = array(
 'tog-numberheadings' => '자동으로 머릿글 번호 매기기',
 'tog-showtoolbar' => '편집에 툴바 보이기',
 'tog-editondblclick' => '더블 클릭으로 문서 편집하기',
-'tog-editsection' => '[편집] 링크로 부분 편집하기',
 'tog-editsectiononrightclick' => '제목을 오른쪽 클릭해서 문단 편집하기 활성화',
-'tog-showtoc' => '문서의 목차 보여주기 (머릿글이 4개 이상인 경우)',
 'tog-rememberpassword' => '이 브라우저에 로그인 상태를 저장하기(최대 $1{{PLURAL:$1|일}})',
 'tog-watchcreations' => '내가 만드는 문서와 내가 올린 파일을 주시문서 목록에 추가',
 'tog-watchdefault' => '내가 편집하는 문서와 파일을 주시문서 목록에 추가',
@@ -934,6 +932,8 @@ $1 기다렸다가 다시 시도하세요.',
 'retypenew' => '새 비밀번호 재입력:',
 'resetpass_submit' => '비밀번호를 설정하고 로그인하기',
 'changepassword-success' => '비밀번호가 성공적으로 바뀌었습니다!',
+'changepassword-throttled' => '로그인에 연속으로 실패하였습니다.
+$1 기다렸다가 다시 시도하세요.',
 'resetpass_forbidden' => '비밀번호를 바꿀 수 없습니다',
 'resetpass-no-info' => '이 특수 문서에 직접 접근하려면 반드시 로그인해야 합니다.',
 'resetpass-submit-loggedin' => '비밀번호 바꾸기',
@@ -991,6 +991,8 @@ $2
 'changeemail-password' => '{{SITENAME}} 비밀번호:',
 'changeemail-submit' => '이메일 주소 바꾸기',
 'changeemail-cancel' => '취소',
+'changeemail-throttled' => '로그인에 연속으로 너무 많이 실패하였습니다.
+$1 기다렸다가 다시 시도하세요.',
 
 # Special:ResetTokens
 'resettokens' => '토큰 재설정',
@@ -1348,7 +1350,7 @@ $2개 보다 적게 {{PLURAL:$2|써야}} 하지만 {{PLURAL:$1|지금은 $1개
 'revdelete-legend' => '보이기 제한을 설정',
 'revdelete-hide-text' => '판 내용',
 'revdelete-hide-image' => '파일을 숨기기',
-'revdelete-hide-name' => '기록 내용과 대상을 숨기기',
+'revdelete-hide-name' => '명령 내용과 대상을 숨기기',
 'revdelete-hide-comment' => '편집 요약',
 'revdelete-hide-user' => '편집자의 사용자 이름/IP 주소',
 'revdelete-hide-restricted' => '관리자도 보지 못하게 숨기기',
@@ -1946,7 +1948,7 @@ $2 {{PLURAL:$3|형식만 사용할 수 있습니다}}.',
 'uploadvirus' => '파일이 바이러스를 포함하고 있습니다!
 자세한 설명: $1',
 'uploadjava' => '이 ZIP 파일은 자바의 .class 파일을 포함하고 있습니다.
-보안을 위한 제한을 우회할 수 있기 때문에 자바 파일을 올리는 것이 허용되지 않습니다.',
+보안 규제를 우회할 수 있기 때문에 자바 파일을 올리는 것이 허용되지 않습니다.',
 'upload-source' => '원본 파일',
 'sourcefilename' => '원본 파일 이름:',
 'sourceurl' => '출처 URL:',
@@ -2420,7 +2422,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'listusers-blocked' => '(차단됨)',
 
 # Special:ActiveUsers
-'activeusers' => 'í\99\9cë°\9cí\95\9c 사용자 목록',
+'activeusers' => 'í\99\9cë\8f\99í\95\98ë\8a\94 사용자 목록',
 'activeusers-intro' => '다음은 최근 $1{{PLURAL:$1|일}} 동안 활동한 사용자의 목록입니다.',
 'activeusers-count' => '마지막 {{PLURAL:$3|$3일}} 사이의 {{PLURAL:$1|활동}} $1회',
 'activeusers-from' => '다음으로 시작하는 사용자를 보기:',
@@ -2665,7 +2667,7 @@ $UNWATCHURL
 'protect-expiring' => '$1 (UTC)에 만료',
 'protect-expiring-local' => '$1에 해제',
 'protect-expiry-indefinite' => '무기한',
-'protect-cascade' => '연쇄적 보호 - 이 문서에서 사용되는 다른 문서를 함께 보호합니다.',
+'protect-cascade' => '연쇄적 보호 - 이 문서가 포함하고 있는 다른 문서를 함께 보호합니다.',
 'protect-cantedit' => '이 문서의 보호 설정을 바꿀 권한이 없습니다.',
 'protect-othertime' => '다른 기간:',
 'protect-othertime-op' => '다른 기간',
@@ -2699,7 +2701,7 @@ $UNWATCHURL
 # Undelete
 'undelete' => '삭제된 문서 보기',
 'undeletepage' => '삭제된 문서를 보거나 되살리기',
-'undeletepagetitle' => "'''아래는 [[:$1|$1]]의 삭제된 판입니다'''.",
+'undeletepagetitle' => "'''아래는 [[:$1|$1]] 판의 삭제된 판입니다'''.",
 'viewdeletedpage' => '삭제된 문서 보기',
 'undeletepagetext' => '다음 {{PLURAL:$1|문서는 삭제되었지만|문서 $1개는 삭제되었지만}} 아직 보관되어 있고 되살릴 수 있습니다.
 보관된 문서는 주기적으로 삭제될 것입니다.',
@@ -3405,7 +3407,7 @@ $1',
 
 # Special:NewFiles
 'newimages' => '새 파일 목록',
-'imagelisttext' => "{{PLURAL:$1|파일}} '''$1'''개를 $2 순으로 정렬한 목록입니다.",
+'imagelisttext' => "{{PLURAL:$1|파일}} '''$1'''개를 $2순으로 정렬한 목록입니다.",
 'newimages-summary' => '이 특수 문서는 최근에 올라온 파일을 나열하고 있습니다.',
 'newimages-legend' => '필터',
 'newimages-label' => '파일 이름 (또는 그 일부분):',
@@ -4001,7 +4003,7 @@ $5
 
 # Live preview
 'livepreview-loading' => '불러오는 중...',
-'livepreview-ready' => '불러 오는 중... 준비!',
+'livepreview-ready' => '불러오는 중... 준비!',
 'livepreview-failed' => '실시간 미리 보기 실패!
 일반 미리 보기를 이용하세요.',
 'livepreview-error' => '연결에 실패하였습니다: $1 "$2"
@@ -4068,7 +4070,7 @@ $5
 'version-ext-colheader-license' => '라이선스',
 'version-ext-colheader-description' => '설명',
 'version-ext-colheader-credits' => '저자',
-'version-license-title' => '$1 사용을 위한 라이센스',
+'version-license-title' => '$1 라이센스',
 'version-license-not-found' => '이 확장기능에 대한 라이선스 세부 정보가 없습니다.',
 'version-credits-title' => '$1의 작성자',
 'version-credits-not-found' => '이 확장기능에 대한 크레딧 세부 정보가 없습니다.',
@@ -4147,7 +4149,7 @@ $5
 #모든 정규 표현식은 이 줄 위에 넣어 주십시오. 그리고 이 줄은 그대로 두십시오.</pre>',
 
 # Special:Tags
-'tags' => 'ì\9c í\9a¨í\95\9c 편집 태그',
+'tags' => 'ì\98¬ë°\94른 편집 태그',
 'tag-filter' => '[[Special:Tags|태그]] 필터:',
 'tag-filter-submit' => '필터',
 'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|태그}}]]: $2)',
index d8b6b47..a0c7407 100644 (file)
@@ -121,9 +121,7 @@ $messages = array(
 'tog-numberheadings' => 'Башлыкъланы (бёлюмлени атлары) автомат номерленсинле',
 'tog-showtoolbar' => 'Тюрлендириу адыр панелни кёргюз',
 'tog-editondblclick' => 'Эки басыу бла бетлени тюрлендир',
-'tog-editsection' => 'Хар бёлюмге «тюрлендир» джибериуню кёргюз',
 'tog-editsectiononrightclick' => 'Бёлюмлени бёлюм башлыкъгъа басханлай тюрлендир',
-'tog-showtoc' => 'Башларын кёргюз (3-ден кёб бёлюм башлыгъы болгъан бетлеге)',
 'tog-rememberpassword' => 'Бу браузерде мени тергеў джазыўуму сакъла (эм кёб: $1 {{PLURAL:$1|бир кюн|кюн}})',
 'tog-watchcreations' => 'Мен къурагъан (башлагъан) бетлени эм мен джюклеген файлланы кёзюмде тургъан тизмеме къош',
 'tog-watchdefault' => 'Мен тюрлендирген бетлени эм файлланы кёзюмде тургъан тизмеме къош',
index 99b17cc..50d7ee8 100644 (file)
@@ -222,9 +222,7 @@ $messages = array(
 'tog-numberheadings' => 'Dun de Üvverschrefte automatisch nummereere',
 'tog-showtoolbar' => 'De Wärkzüchleß zom Ändere aanzeije',
 'tog-editondblclick' => 'Sigge met Dubbel-Klicke ändere',
-'tog-editsection' => 'Maach [{{int:Editsection}}]-Links aan de Avschnedde dran',
 'tog-editsectiononrightclick' => 'Afschnedde met Räächs-Klecke op de Üvverschrefte ändere',
-'tog-showtoc' => 'Zeich en Enhaldsüvversich bei Sigge met mieh wie drei Üvverschrefte dren',
 'tog-rememberpassword' => 'Op Duur enlogge op dämm Kompjuter un för dää Brauser (hält {{PLURAL:$1|för eine Daach|bes op $1 Dääsch|bloß för hück}})',
 'tog-watchcreations' => 'Donn Sigge beim neu Aanlääje automattesch för ming Oppaßlėß vörschlonn',
 'tog-watchdefault' => 'Donn Sigge beim Ändere automattesch för ming Oppaßlėß vörschlonn',
index 249fe27..690399d 100644 (file)
@@ -192,9 +192,7 @@ $messages = array(
 'tog-numberheadings' => 'Numerotar otomatika mente los títolos de los kapítolos',
 'tog-showtoolbar' => 'Amostrar el chibuk de aparatos',
 'tog-editondblclick' => 'Trocar las hojas con doble klik',
-'tog-editsection' => 'Ofrir la possibilidad de trocar los kapítůlos con el atamiento [trocar]',
 'tog-editsectiononrightclick' => 'Pueder trocar los kapítůlos, en pizando el botón derecho del ratón encima el títůlo',
-'tog-showtoc' => 'Àmostrar el cuadro de contènidos (para las hojas que tienen más de 3 títůlos de capítůlo)',
 'tog-rememberpassword' => 'Acordarse de mi entrada en este navigador (a lo más muńcho $1 {{PLURAL:$1|día|días}})',
 'tog-watchcreations' => 'Anyadir lad pajinas ke kree i archivos ke karge a mi lista',
 'tog-watchdefault' => 'Anyadir pajinas i archivos ke edite a mi lista',
@@ -252,17 +250,17 @@ $messages = array(
 'fri' => 'Vie',
 'sat' => 'Shab',
 'january' => 'Jenero',
-'february' => 'Hevrero',
+'february' => 'Febrero',
 'march' => 'Março',
-'april' => 'Avril',
+'april' => 'Abril',
 'may_long' => 'Mayo',
 'june' => 'Juño',
-'july' => 'Jullo',
+'july' => 'Julio',
 'august' => 'Agosto',
 'september' => 'Setiembre',
-'october' => 'Ochòvre',
+'october' => 'Ochobre',
 'november' => 'Noviembre',
-'december' => 'Deziembre',
+'december' => 'Diziembre',
 'january-gen' => 'Jenero',
 'february-gen' => 'Hevrero',
 'march-gen' => 'Março',
index 46b5ee0..f23d0e7 100644 (file)
@@ -196,9 +196,7 @@ $messages = array(
 'tog-numberheadings' => 'Iwwerschrëften automatesch numeréieren',
 'tog-showtoolbar' => 'Ännerungstoolbar weisen',
 'tog-editondblclick' => 'Säite mat Duebelklick änneren',
-'tog-editsection' => "Linke fir d'Ännere vun eenzelnen Abschnitter weisen",
 'tog-editsectiononrightclick' => 'Eenzel Abschnitter mat Rietsklick änneren',
-'tog-showtoc' => 'Inhaltsverzeechnes weise bei Säite mat méi wéi dräi Iwwerschrëften',
 'tog-rememberpassword' => 'Meng Umeldung mat dësem Browser (fir maximal $1 {{PLURAL:$1|Dag|Deeg}}) verhalen',
 'tog-watchcreations' => 'Säiten déi ech uleeën a Fichieren déi ech eroplueden op meng Iwwerwaachungslëscht derbäisetzen',
 'tog-watchdefault' => 'Säiten a Fichieren déi ech änneren op meng Iwwerwaachungslëscht derbäisetzen',
@@ -751,6 +749,8 @@ Fir är Umeldung ofzeschléissen, musst Dir elo hei een neit Passwuert uginn:',
 'retypenew' => 'Neit Passwuert nach eemol antippen:',
 'resetpass_submit' => 'Passwuert aginn an aloggen',
 'changepassword-success' => 'Äert Passwuert gouf geännert!',
+'changepassword-throttled' => 'Dir hutt rezent zevill dacks versicht Iech anzeloggen.
+Waart w.e.g. $1 ier Dir et nach eng Kéier probéiert.',
 'resetpass_forbidden' => 'Passwierder kënnen net geännert ginn.',
 'resetpass-no-info' => 'Dir musst ageloggt sinn, fir direkt op dës Säit ze kommen.',
 'resetpass-submit-loggedin' => 'Passwuert änneren',
@@ -804,6 +804,8 @@ Temporärt Passwuert: $2',
 'changeemail-password' => 'Äert {{SITENAME}}-Passwuert:',
 'changeemail-submit' => 'Mailadress änneren',
 'changeemail-cancel' => 'Ofbriechen',
+'changeemail-throttled' => 'Dir hutt zevill dacks versicht Iech anzeloggen.
+Waart w.e.g. $1 ier Dir et nach eng Kéier probéiert.',
 
 # Special:ResetTokens
 'resettokens' => 'Token zrécksetzen',
index 0e0a733..a7c995a 100644 (file)
@@ -166,9 +166,7 @@ $messages = array(
 'tog-numberheadings' => 'Köpkes automatisch nummere',
 'tog-showtoolbar' => 'Laot edit toolbar zeen',
 'tog-editondblclick' => "Bewirk pagina's bie 'ne dobbelklik (JavaScript)",
-'tog-editsection' => 'Bewirke van secties via [bewirke] links',
 'tog-editsectiononrightclick' => "Secties bewirke mit 'ne rechtermoesklik op sectietitels (JavaScript nudig)",
-'tog-showtoc' => "Inhaudsopgaaf veur pagina's mit mie es 3 köpkes",
 'tog-rememberpassword' => 'Mien wachwaord onthouwe veur later sessies (hoegstens $1 {{PLURAL:$1|daag|daag}})',
 'tog-watchcreations' => "Volg autematis pagina's die ich aanmaak en bestenj die ich upload",
 'tog-watchdefault' => "Voog pagina's em bestenj die se bewirks toe aan dien volglies",
index be72ea4..300e188 100644 (file)
@@ -25,9 +25,7 @@ $messages = array(
 'tog-numberheadings' => 'سربلگه خود شماره گر',
 'tog-showtoolbar' => 'نوار اوزار ويرايشت نشون بيه',
 'tog-editondblclick' => 'بلگيا نه وا دوبار پورنين ويرايشت بكيد',
-'tog-editsection' => 'ممكن بيئن ويرايشت بشخيا وا [ويرايشت]',
 'tog-editsectiononrightclick' => 'بهر ویرایشت نه وا راس کلیک کردن د بهر عنوانیا فعال کو',
-'tog-showtoc' => 'چیا مئن جدول نشو بیه',
 'tog-rememberpassword' => 'اومائن وا مئن منه د ای مرورگر د ویر داشتو(سی بیشترین$1{{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'بلگیایی که مه راس کمه و فایلیایی که مه سوار کمه اضاف کو د سیل برگه مه',
 'tog-watchdefault' => 'بلگیا و فایلایی که مه ویرایشت کمه اضاف کو د سیل برگم',
@@ -213,7 +211,7 @@ $messages = array(
 'delete' => 'حذف كردن',
 'deletethispage' => 'ای بلگه نه حذف بكيد',
 'undeletethispage' => 'ای بلگه نه حذف نكيد',
-'undelete_short' => 'پاک نکو {{جمی:$1|یه گل ویرایشت|$1 ویرایشتیا}}',
+'undelete_short' => 'زنه کردن {{جمی:$1|یه گل ویرایشت|$1 ویرایشتیا}}',
 'viewdeleted_short' => 'بوینیت {{[جمی:$1|یه گل ویرایشت پاک بیه|$1ویرایشتیا پاک بیه}}',
 'protect' => 'حمايت بكيد',
 'protect_change' => 'آلشت بكيد',
@@ -705,6 +703,7 @@ $2',
 'rev-deleted-user-contribs' => '[نوم کاروری یا نشونی آی پی جا وه جا بیه - چیا قام بیه د ور هوم یاریانه ویرایشت بکید]',
 'rev-delundel' => 'آلشت وضئيت ديئن',
 'rev-showdeleted' => 'نشو دائن',
+'revisiondelete' => 'پاک کردن/زنه کردن وانئریا',
 'revdelete-no-file' => 'فایل مشقص بیه وجود ناره.',
 'revdelete-show-file-submit' => 'هری',
 'revdelete-selected' => "'''{{جمی:$2|وانیری انتخاو بیه|وانیریا انتخاو بیه}} د[[:$1]]:'''",
@@ -907,7 +906,9 @@ $2',
 'saveusergroups' => 'ذخیره کرد گرویا کاروری',
 'userrights-groupsmember' => 'اندوم:',
 'userrights-reason' => 'دليل:',
+'userrights-no-interwiki' => 'شما سی ویرایشت حقوق کارور د ویکی یا هنی دسرسی ناریت.',
 'userrights-nodatabase' => 'پاگا دونسمنی $1 یا نیئش یا د ولاتنشین نئ.',
+'userrights-notallowed' => 'شما سی اضاف کردن  حقوق کارور یا ورداشتنش دسرسی ناریت.',
 'userrights-changeable-col' => 'گرویایی که شما تونیت ویرایشت بکید',
 'userrights-unchangeable-col' => 'گرویایی که شما نتونیت ویرایشت بکید',
 
@@ -925,6 +926,10 @@ $2',
 'group-sysop-member' => '{{جنس:$1|مدیر}}',
 'group-bureaucrat-member' => '{{جنس:$1|بروکرات}}',
 
+'grouppage-user' => '{{ns:project}}:کاروریا',
+'grouppage-bot' => '{{ns:project}}:بوت یا',
+'grouppage-bureaucrat' => '{{ns:project}}:دیوونداریا',
+
 # Rights
 'right-read' => 'حنن بلگیا',
 'right-edit' => 'ویرایشت بلگیا',
@@ -1042,8 +1047,9 @@ $2',
 # Upload
 'upload' => 'بلم گير كردن فايلا',
 'uploadbtn' => 'سوار کردن فایل',
+'reuploaddesc' => 'سوار کردن نه رد بکید و د ورئردیت جابلگ سوارکرد',
 'uploadnologin' => 'وارد نبیه',
-'uploadnologintext' => 'لطفن $1 سی سوارکرد فایلیا.',
+'uploadnologintext' => 'لطفن $1 سی سوارکرد جانیایا.',
 'uploaderror' => 'خطا د سوار کردن',
 'uploadlog' => 'پهرستنومه سوارکرد',
 'uploadlogpage' => 'سوارکرد',
@@ -1052,31 +1058,35 @@ $2',
 'fileuploadsummary' => 'چکسه',
 'filereuploadsummary' => 'آلشتیا فایل:',
 'filesource' => 'سرچشمه:',
-'uploadedfiles' => 'فایلیا سواربیه',
+'uploadedfiles' => 'جانیایا سواربیه',
 'badfilename' => 'نوم جانیا د "$1" آلشت بیه.',
 'empty-file' => 'فایلی که دئی ته حالی بیه.',
 'file-too-large' => 'فایلی که دئی ته فره گپ بی.',
 'filename-tooshort' => 'نوم فایل فره کؤچکه.',
 'illegal-filename' => 'نوم فایل اجاره ندئه بیه.',
-'unknown-error' => 'Û\8cÙ\87 Ú¯Ù\84 Ø®Ø·Ø§ Ù\86اشÙ\86اس ری ون کرده.',
-'savefile' => 'فایل نه ذخیره کو',
+'unknown-error' => 'Û\8cÙ\87 Ú¯Ù\84 Ø®Ø·Ø§ Ù\86ادÛ\8cار ری ون کرده.',
+'savefile' => 'جانیا نه ذخیره کو',
 'uploadedimage' => 'سوارکرد"[[$1]]"',
+'overwroteimage' => 'یه گل نسقه تازه د "[[$1]]" سوار بیه',
 'uploaddisabled' => 'سوار کردن د کار نئ.',
 'copyuploaddisabled' => 'سوار کردن وا یو آر ال د کار نئ.',
 'uploadfromurl-queued' => 'سوارکرد تو ها د گئ.',
 'uploaddisabledtext' => 'سوار کرد فایلیا د کار نئ.',
 'upload-source' => 'سرچشمه فایل',
-'sourcefilename' => 'سرچشمه نوم فایل:',
+'sourcefilename' => 'سرچشمه نوم جانیا:',
 'sourceurl' => 'سرچشمه يو آر ال:',
 'destfilename' => 'نوم فایل مقصد:',
-'watchthisupload' => 'ای فایل بوینیت',
+'watchthisupload' => 'ای جانیا نه بوینیت',
 'upload-success-subj' => 'سوار کرد خوش سرانجوم',
+'upload-success-msg' => 'سوارکرد شما سی [$2] خوو بی.وه د ایچه هئش:[[:{{ns:file}}:$1]]',
 'upload-failure-subj' => 'مشگل د سوارکردن',
+'upload-failure-msg' => 'یه گل مشلگل د سوارکردتو سی [$2] بی:$1',
 
 'upload-proto-error' => 'پروتکل نادروس',
-'upload-file-error' => 'خطا داخلی',
+'upload-file-error' => 'خطا مینونه',
 'upload-misc-error' => 'خطا سوار کرد ناشناخته',
 'upload-unknown-size' => 'انازه نادیار',
+'upload-copy-upload-invalid-domain' => 'ورداشتن سوارکردیا د ای پوشگئر د دسرس نئ.',
 
 # File backend
 'backend-fail-notexists' => 'فایل $1 وجود ناره.',
@@ -1103,6 +1113,9 @@ $2',
 'http-invalid-url' => 'یو آر ال نامعتور:$1',
 'http-read-error' => 'خطا د حنن اچ تی تی پی.',
 
+# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
+'upload-curl-error28' => 'تموم بیئن مئلت سی سوار کرد',
+
 'license' => 'ليانس دار بيئن',
 'license-header' => 'د شكل ليسانس دار بيئن',
 'nolicense' => 'هیچی انتخاو نبیه',
@@ -1110,6 +1123,7 @@ $2',
 'upload_source_file' => '(یه گل فایل د انجومیار تو)',
 
 # Special:ListFiles
+'listfiles-summary' => 'ای بلگه یا ویجه همه جانیایا سوار بیه نه نشو می ئین.',
 'listfiles_search_for' => 'پی جوری سی نوم رسانه:',
 'imgfile' => 'فايل',
 'listfiles' => 'نوم گه فایل',
@@ -1144,6 +1158,7 @@ $2',
 'linkstoimage' => 'دمال بيه {{PLURAL:$1|ديس ونيا بلگه|$1 ديس ون بلگيا}} دای فایل:',
 'nolinkstoimage' => 'ایچه هیژ بلگه ای سی هوم پیوند بیئن وا ای فایل نی',
 'morelinkstoimage' => ' [[ویجه:چه هوم پیوندی ها ایچه/$1|هوم پیوندیا هنی]]سی ای فایل بونیت.',
+'sharedupload' => 'ای جانیا که د $1 هئ شایت د پروجه یا هنی استفاده بیه.',
 'sharedupload-desc-here' => 'فایلی که د $1 شایت د مئن پروجیا هنی استفاده بیه.
 توضی دباره[$2 file description page] د هار نشو دئئه بیه',
 'filepage-nofile' => 'چنو فایلی وا ای نوم نئ.',
@@ -1306,6 +1321,10 @@ $2',
 'protectedarticle' => 'حفاظت بيه [[$1]]',
 'modifiedarticleprotection' => 'ریتراز حفاظت د "[[$1]]" آلشت بیه',
 'protect-title' => 'ریتراز حفاظت د "$1" آلشت بیه',
+'restriction-type' => 'دسرسی:',
+
+# Restrictions (nouns)
+'restriction-upload' => 'سوار کرد',
 
 # Restriction levels
 'restriction-level-all' => 'هر ریترازی',
@@ -1313,6 +1332,7 @@ $2',
 # Undelete
 'undeletelink' => 'بوين/دوواره آماده با',
 'undeleteviewlink' => 'ديئن',
+'cannotundelete' => 'زنه کردن انجوم نبی:$1',
 'undelete-error-short' => 'خطا پاک نبیئن جانیا:$1',
 
 # Namespace form on various pages
@@ -1369,6 +1389,8 @@ $2',
 'block-log-flags-nocreate' => 'حساو راس کردن عاجز بیه.',
 
 # Move page
+'movenotallowed' => 'شما وه جا وه جا کردن بلگه دسرسی ناریت',
+'movenotallowedfile' => 'شما وه جا وه جا کردن جانیایا دسرسی ناریت',
 'movelogpage' => 'جاوه جا کردن',
 'revertmove' => 'لرستن',
 
@@ -1391,6 +1413,7 @@ $2',
 'import-comment' => 'ویر و باور:',
 'importcantopen' => 'نبوئه جانیا دئه بیه نه وا بکید',
 'importnofile' => 'هیچ جانیا دئه بیه ای سوار نبیه.',
+'import-upload' => 'سوار کرد دونسمنیا ایکس ام ال',
 'import-token-mismatch' => 'کمبود د دونسمنیا نشینگه.
 لطفن هنی کوششت بکید.',
 
@@ -1450,6 +1473,7 @@ $2',
 'tooltip-diff' => 'آلشتیا نه که شما د ای متن راس کردیته نشو بیئه',
 'tooltip-compareselectedversions' => 'فرخیا مینجا دو تا د دو بار دیئن ای بلگه نه بوینیت',
 'tooltip-watch' => 'ای بلگه نه د سیل برگتو اضاف بکید',
+'tooltip-upload' => 'شرو د سوار کرد',
 'tooltip-rollback' => '"ورگشتن" لرستن د حالت اول  سی ای بلگه  که سی  يه كه هومياری  نيايی اصلاح بيه وا يه پورنسن',
 'tooltip-undo' => 'انجوم نگرتن ای ویرایشت ورگن و همه فرمیا ویرایشت تانه که حالت پیش سیل واکو.یه اجازه میئه سی اضاف کردن یه دلیل د چکسته.',
 'tooltip-summary' => 'يه چكسته كؤچك وارد بكيد',
@@ -1477,6 +1501,7 @@ $2',
 
 # Special:NewFiles
 'newimages' => 'عسگدونی جانیایا تازه',
+'newimages-summary' => 'ای بلگه یا ویجه همه جانیایا سوار بیه نه نشو می ئین.',
 'newimages-label' => 'نوم جانیا(یا بشقی د وه):',
 'sp-newimages-showfrom' => 'جانیایا تازه نه که $2 ، $2 شرو بینه نشو بیه',
 
@@ -1546,6 +1571,7 @@ $2',
 # Special:SpecialPages
 'specialpages' => 'بلگيا ويجه',
 'specialpages-group-changes' => 'آلشتیا تازه و پهرستنومه یا',
+'specialpages-group-media' => 'گزارشتیا رسانه و سوارکردیا',
 
 # External image whitelist
 'external_image_whitelist' => 'یه خط نه ول بکید چی وه<pre>',
@@ -1554,6 +1580,8 @@ $2',
 'tag-filter' => 'فيلتر [[Special:Tags|Tag]]:',
 
 # API errors
+'api-error-badaccess-groups' => 'شما سی سوار کرد جانیایا د ای ویکی اجازه ناریت.',
+'api-error-copyuploaddisabled' => 'سوار کردن وا یو آر ال دی ای سرور غیرفعال بیه.',
 'api-error-filename-tooshort' => 'نوم جانیا فره کؤچکه.',
 'api-error-illegal-filename' => 'نوم جانیا اجازه دئه نئ.',
 'api-error-mustbeloggedin' => 'شما سی سوارکردن فایلیا با بیایت وامین',
@@ -1561,4 +1589,6 @@ $2',
 # Special:ExpandTemplates
 'expand_templates_remove_comments' => 'جا وه جا بیئن ویر و باوریا',
 
+# Unknown messages
+'uploadinvalidxml' => 'ایکس ام الی که سوار بیه نبوئه نوتیج با.',
 );
index d2460db..203c9d2 100644 (file)
@@ -196,9 +196,7 @@ $messages = array(
 'tog-numberheadings' => 'Automatiškai numeruoti skyrelius',
 'tog-showtoolbar' => 'Rodyti redagavimo įrankinę (JavaScript)',
 'tog-editondblclick' => 'Puslapių redagavimas dvigubu spustelėjimu (JavaScript)',
-'tog-editsection' => 'Įjungti skyrelių redagavimą naudojant nuorodas [taisyti]',
 'tog-editsectiononrightclick' => 'Įjungti skyrelių redagavimą paspaudus skyrelio pavadinimą dešiniuoju pelės klavišu (JavaScript)',
-'tog-showtoc' => 'Rodyti turinį, jei puslapyje daugiau nei 3 skyreliai',
 'tog-rememberpassword' => 'Prisiminti prisijungimo informaciją šioje naršyklėje (daugiausiai $1 {{PLURAL:$1|dieną|dienas|dienų}})',
 'tog-watchcreations' => 'Pridėti puslapius, kuriuos aš sukuriu, į stebimų sąrašą',
 'tog-watchdefault' => 'Pridėti puslapius, kuriuos aš redaguoju, į stebimų sąrašą',
index 0aa5a71..94de2f1 100644 (file)
@@ -64,9 +64,7 @@ $messages = array(
 'tog-numberheadings' => 'Automātiski numurēt virsrakstus',
 'tog-showtoolbar' => 'Rādīt rediģēšanas rīkjoslu',
 'tog-editondblclick' => 'Atvērt lapu rediģēšanai ar dubultklikšķi',
-'tog-editsection' => 'Rādīt sadaļām izmainīšanas saiti "[labot]"',
 'tog-editsectiononrightclick' => "Atvērt sadaļas rediģēšanas lapu, uzklikšķinot ar labo peles pogu uz sadaļas virsraksta (izmanto ''JavaScript'')",
-'tog-showtoc' => 'Parādīt satura rādītāju (lapām, kurās ir vairāk par 3 virsrakstiem)',
 'tog-rememberpassword' => 'Atcerēties manu lietotājvārdu pēc pārlūka aizvēršanas (ne vairāk kā $1 {{PLURAL:$1|diena|dienas}}).',
 'tog-watchcreations' => 'Pievienot manis radītās lapas un manis augšuplādētos failus uzraugāmo lapu sarakstam',
 'tog-watchdefault' => 'Pievienot manis izmainītās lapas un failus uzraugāmo lapu sarakstam',
index 2dce02c..0ec2012 100644 (file)
@@ -161,9 +161,7 @@ $messages = array(
 'tog-numberheadings' => '生章數',
 'tog-showtoolbar' => '多寶列見(JavaScript)',
 'tog-editondblclick' => '纂頁雙擊(JavaScript)',
-'tog-editsection' => '纂段擊鏈',
 'tog-editsectiononrightclick' => '纂段右擊標(JavaScript)',
-'tog-showtoc' => '四章見目',
 'tog-rememberpassword' => '符節通越(達至$1日)',
 'tog-watchcreations' => '哨己撰',
 'tog-watchdefault' => '哨己纂',
index 84664d9..0b6785c 100644 (file)
@@ -39,9 +39,7 @@ $messages = array(
 'tog-numberheadings' => 'शीर्षक स्वयं-क्रमांकित करू',
 'tog-showtoolbar' => 'संपादन ओजारपेटी देखाऊ (जावास्क्रीप्ट)',
 'tog-editondblclick' => 'दू बेर क्लीक कए पन्ना संपादित करू (जावास्क्रीप्ट)',
-'tog-editsection' => '[संपादित करू] श्रृंखला द्वारा विभाग संपादनक आज्ञा दिअ',
 'tog-editsectiononrightclick' => 'ऐ खण्डक सम्पादन खण्डक शीर्षकेँ दहिन क्लिक कऽ सम्भव (जावास्क्रिप्ट चाही)',
-'tog-showtoc' => 'अनुक्रम देखाऊ (जाहि पृष्ठ पर तीनसँ बेशी विभाग होए)',
 'tog-rememberpassword' => 'ऐ गवेषकपर हमर कूटशब्द (बेशीसं बेशी $1 {{PLURAL:$1|दिन धरि| कएक दिन धरि}}) मोन राखू',
 'tog-watchcreations' => 'हमर बनाओल पृष्ठ हमर साकांक्ष सूचीमे राखू',
 'tog-watchdefault' => 'हमर संपादित पृष्ठ हमर साकांक्ष सूचीमे देखाऊ',
index 05c0377..5c75f7d 100644 (file)
@@ -229,9 +229,7 @@ $messages = array(
 'tog-numberheadings' => 'Asio laharany ny lohateny',
 'tog-showtoolbar' => 'Haneho ny toolbar fanovana',
 'tog-editondblclick' => "Hanova pejy amin'ny alalan'ny tsindrim-boalavo roa misesy",
-'tog-editsection' => "Ataovy mety ny fanovana fizaràna amin'ny alalan'ny rohy [hanova]",
 'tog-editsectiononrightclick' => "Hampiasa ny fanovana fizarana amin'ny tsindry havanana eo amin'ny lohatenim-pizarana.",
-'tog-showtoc' => "Asehoy ny fanoroan-takila (ho an'ny pejy misy lohateny mihoatra ny 3)",
 'tog-rememberpassword' => "Tadidio ny tenimiafiko eto amin'ity solosaina ity (mandritry ny andro $1 fara-fahabetsany){{PLURAL:}}",
 'tog-watchcreations' => 'Hanaraka ny pejy foronoko ary ny rakitra ampidiriko',
 'tog-watchdefault' => 'Hanaraka ny pejy ary ny rakitra ovaiko',
@@ -588,8 +586,7 @@ Tsy nanome fanazavana.",
 'badtitletext' => "Tsy mety io anaram-pejy nangatahinao io na tsy misy n'inon'inona na rohy dikan-teny vahiny misy diso tsipelina.",
 'perfcached' => "Ao amin'ny voatakona ireo data manaraka ireo ary mety tsy voavao. $1{{PLURAL:}} ihany no isan'ireo zavatra voatahiry ao amin'ny voatakona",
 'perfcachedts' => "Ao amin'ny voatakona (cache) ny data aseho, ary tamin'ny $1 izy no navaozina farany. $4{{PLURAL:}} no isan'ny valim-pikarohana ao amin'ilay voatakona.",
-'querypage-no-updates' => "Tsy nalefa ny ''mise à jour'' (update) hoan'ity pejy ity.
-Mety tsy misy fifandraisana amin'ny zavamisy ankehitriny ny zavamisy ao anatin'ity pejy ity..",
+'querypage-no-updates' => "Amin'izao fotoana izao dia tsy havaozina ny votoatin'ity pejy ity. Noho izany dia tsy mitaratra ny tena zava-misy ny votoatiny ato.",
 'viewsource' => 'Hijery fango',
 'viewsource-title' => "Hijery ny fangon'i $1",
 'actionthrottled' => 'Tao voafetra',
@@ -1096,10 +1093,10 @@ Ao aorian'ny fivelarana, mety namoaka valy lava loatra angamba izy, ary tsy namp
 'currentrev' => 'Votoatiny ankehitriny',
 'currentrev-asof' => "Endrika tamin'ity $1 ity",
 'revisionasof' => "Endrik'io pejy io tamin'ny $1",
-'revision-info' => "Santiônan'i $1 nataon'i $2",
-'previousrevision' => '←Votoatiny antitra kokoa',
-'nextrevision' => 'Fanovana vao haingana→',
-'currentrevisionlink' => 'Endrika-ny ankehitriny',
+'revision-info' => "Endrika tamin'ny $1 nataon'i $2",
+'previousrevision' => '← Endrika tranainy kokoa',
+'nextrevision' => 'Endrika vaovao kokoa →',
+'currentrevisionlink' => 'Endrika farany indrindra',
 'cur' => 'ank',
 'next' => 'manaraka',
 'last' => 'farany',
@@ -1130,23 +1127,23 @@ Mitadiava amin'ny '''[[Special:Search|fiasàna fitadiavina]]''' mba hitady ny pe
 'rev-deleted-user-contribs' => "[anaram-pikambana na adiresy IP voafafa - fanovana nasitria teo amin'ny fandraisan'anjara modification]",
 'rev-deleted-text-permission' => "'''Voafafa''' ny santiônan'ity pejy ity.
 Mety misy ny antsipirihany angamba ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME}}}} laogy momban'ny famafàna pejy].",
-'rev-deleted-text-unhide' => "Ity santiônan'ity pejy ity dia '''voafafa'''.
+'rev-deleted-text-unhide' => "Ity versionan'ity pejy ity dia '''voafafa'''.
 Hita ao amin'ny [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} laogim-pamafana] ny antsipirihany.
-Afaka [$1 mijery ilay santiôna] ianao raha tianao.",
-'rev-suppressed-text-unhide' => "'''Nofafana''' ity santiônam-pejy ity.
+Afaka [$1 mijery ilay versiona] ianao raha tianao.",
+'rev-suppressed-text-unhide' => "'''Nofafana''' ity versiom-pejy ity.
 Azo jerena ao amin'ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} laogim-pamafana] ny antsipirihany.
 Azonao [$1 jerena foana ilay santiôna] raha tianao.",
-'rev-deleted-text-view' => "'''Nofafana''' ity santiônam-pejy ity.
+'rev-deleted-text-view' => "'''Nofafana''' ity versiom-pejy ity.
 Azonao jerena ity santiôna voafafa ity ; misy antsipirihany ao amin'ny [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} laogim-pamafana].",
-'rev-suppressed-text-view' => "'''Nofafana''' ity santiônam-pejy ity.
-Azonao jerena ilay santiôna voafafa ; ny antsipirihany dia ao amin'ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} laogim-pamafana].",
+'rev-suppressed-text-view' => "'''Nofafana''' ity versiom-pejy ity.
+Azonao jerena ilay versiona voafafa ; ny antsipirihany dia ao amin'ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} laogim-pamafana].",
 'rev-deleted-no-diff' => "Tsy afaka mijery anio diff io ianao satria misy santôna '''voafafa''' ao aminy.
 Mety any amin'ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME}}}} laogy momban'ny famafàna pejy] ny antsipirihany.",
 'rev-suppressed-no-diff' => "Tsy azo jerenao io diff io satria '''voafafa''' ny iraika amin'ny reviziônany.",
 'rev-deleted-unhide-diff' => "Nisy '''voafafa''' ny iraika amin'ny reviziôna an'ity diff ity.
 Ny antsipirihany dia mety hita ao amin'ny [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} laogin'ny famafana].
 [$1 Azonao jerena foana ilay diff] raha tianao.",
-'rev-suppressed-unhide-diff' => "Nisy '''voafafa''' ny iraika amin'ny santiôna an'ity diff ity.
+'rev-suppressed-unhide-diff' => "Nisy '''voafafa''' ny iraika amin'ny versiona an'ity diff ity.
 Ny antsipirihany dia mety hita ao amin'ny [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} laogin'ny famafana].
 [$1 Azonao jerena foana ilay diff] raha tianao.",
 'rev-deleted-diff-view' => "Nisy '''voafafa''' ny iraika amin'ny reviziôna an'ity diff ity.
@@ -1156,17 +1153,17 @@ Azonao jerena foana ny mijery ny [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 Azonao jerena ilay diff ; ao amin'ny [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} tatitry ny famafana] ny antsipirihany.",
 'rev-delundel' => 'aseho/asitrika',
 'rev-showdeleted' => 'aseho',
-'revisiondelete' => 'Hamafa na hamerina santiôna',
-'revdelete-nooldid-title' => 'Santiôna tanjona tsy mameno fetra.',
-'revdelete-nooldid-text' => 'Tsy voalazanao ny santiôna tanjona hanaovana ity tao ity, 
+'revisiondelete' => 'Hamafa na hamerina versiona',
+'revdelete-nooldid-title' => 'versiona tanjona tsy azo ekena.',
+'revdelete-nooldid-text' => 'Tsy voalazanao ny versiona tanjona hanaovana ity tao ity, 
 tsy misy ilay izy, na ny santiôna ankehitriny no andramana asitrika.',
 'revdelete-no-file' => 'Tsy misy ilay rakitra hofafàna.',
 'revdelete-show-file-confirm' => "Tapa-kevitra hamafa ny ''revision''-n'i rakitra <nowiki>$1</nowiki> tamin'ny $2 tamin'ny $3 ve ianao ?",
 'revdelete-show-file-submit' => 'Eny',
 'revdelete-selected' => "'''{{PLURAL:$2|Votoatiny nosafidiana|Votoatiny nosafidiana}}n'i '''[[:$1]]''' :'''",
 'logdelete-selected' => "'''{{PLURAL:$1||}}Laogy voafidy :'''",
-'revdelete-text' => "'''Mbola ao amin'ny laogy ny santiôna voafafa, fa tsy afaka jeren'ny vahoaka ny lahatsoratra ao aminy.'''
-Afaka mijery ny lahatsoratra nasitrika sy mamerina azy ny mpandrindra hafa ny {{SITENAME}} amin'ity interface ity, raha tsy misy \"restriction\" hafa koa.",
+'revdelete-text' => "'''Mbola ho ao amin'ny laogim-pejy ary ao amin'ny logy ny versiona ary zava-nitranga voaesotra, fa tsy ho hitan'ny mason'ny vahoaka ny votoatin'izy ireo.'''
+Mbola afaka jeren'ireo mpandrindran'i {{SITENAME}} foana ny votoatiny voafina  ary azony atao ho hitan'ny vahoaka indray ilay izy amin'ny alalan'ity pejy fanaovan-tsafidy ity, raha tsy misy fepetra apetraka.",
 'revdelete-confirm' => 'Amafiso eto ny hevitrao raha hanao io ianao, raha azonao sary an-tsaina ny mety ho vokany, ary raha araka ny [[{{MediaWiki:Policy-url}}|fepetra mihatra]] ny zavatra ataonao.',
 'revdelete-suppress-text' => "Ny famafàna pejy dia ampiasaina rehefa :
 * Misy information tsy sarababem-bahoaka tsy metimety
@@ -1182,11 +1179,11 @@ Afaka mijery ny lahatsoratra nasitrika sy mamerina azy ny mpandrindra hafa ny {{
 'revdelete-radio-set' => 'Eny',
 'revdelete-radio-unset' => 'Tsia',
 'revdelete-suppress' => "Manitrika ny votoatiny ho an'ny mpandrindra",
-'revdelete-unsuppress' => "Hanala ny fepetra eo amin'ny santiôna naverina",
+'revdelete-unsuppress' => "Hanala ny fepetra eo amin'ny versiona naverina",
 'revdelete-log' => 'Antony :',
-'revdelete-submit' => "Ahàtra amin'ny santiôna nofidiana {{PLURAL:$1}}",
-'revdelete-success' => "'''Voaova soa aman-tsara ny fahitana ny santiôna.'''",
-'revdelete-failure' => "'''Ny fisehon'ity santiôna ity dia tsy afaka natao update'''
+'revdelete-submit' => "Hampiharina amin'ny versiona nofidiana {{PLURAL:$1}}",
+'revdelete-success' => "'''Voaova soa aman-tsara ny fahitana ny versiona.'''",
+'revdelete-failure' => "'''Ny fisehon'ity versiona ity dia tsy afaka natao update'''
 $1",
 'logdelete-success' => "'''Voaova soa aman-tsara ny fisehon'ny tatitr’asa.'''",
 'logdelete-failure' => "'''Tsy afaka novaina ny fisehon'ny tatitr’asa'''
@@ -1229,9 +1226,7 @@ Marino raha manohy ny tantaram-pejy ity asa ity.",
 'mergehistory-go' => 'Hijery ny fanovàna mety hatsonika',
 'mergehistory-submit' => 'atsonika ny version',
 'mergehistory-empty' => 'tsy misy version azo hatambarana',
-'mergehistory-success' => "$3 version{{PLURAL:$3||s}} de [[:$1]] fusionnée{{PLURAL:$3||s}} dans [[:$2]].
-
-$3 santiôna{{PLURAL:}} natsonika tamin'ny [[:$2]]",
+'mergehistory-success' => "{{PLURAL:$3|}}Versiona $3 an'i [[:$1]] no natsonika tamin'ny [[:$2]]",
 'mergehistory-fail' => "Tsy afaka manatambatra ny tantara(n'asa). Avereno checheo ny pejy sy ny daty.",
 'mergehistory-no-source' => "Tsy misy ny pejy avy amin'ny $1.",
 'mergehistory-no-destination' => 'Tsy misy ilay pejy tanjona $1.',
@@ -1250,12 +1245,12 @@ $3 santiôna{{PLURAL:}} natsonika tamin'ny [[:$2]]",
 
 # Diffs
 'history-title' => "Tantaran'ny endrik'i « $1 »",
-'difference-title' => "$1 : Fahasamihafan'ny santiôna roa",
+'difference-title' => "$1 : Fahasamihafan'ny versiona roa",
 'difference-title-multipage' => 'Fahasamihafan\'ny pejy "$1" ary "$2"',
 'difference-multipage' => "(Fahasamihafan'ny pejy)",
-'lineno' => 'Andalana $1:',
+'lineno' => 'Andalana faha-$1:',
 'compareselectedversions' => 'Ampitahao ireo version voafidy',
-'showhideselectedversions' => 'Aseho/asitrika ireo ny santiôna nofidiana',
+'showhideselectedversions' => 'Aseho/asitrika ireo ny versiona voasafidy',
 'editundo' => 'esory',
 'diff-empty' => '(Tsy misy mahasamihafa)',
 'diff-multi' => "({{PLURAL:$1|Famerenana tokana|Famerenana $1}} nataon'ny {{PLURAL:$2|mpikambana iray|mpikambana $2}} tsy miseho)",
@@ -1503,7 +1498,7 @@ Tsy haseho ny adiresy imailakao rehefa manoratra any aminao ny mpikambana hafa."
 'right-deletelogentry' => "Hamafa ary hamerina iditra manokana ao amin'ny laogy.",
 'right-deleterevision' => 'Mamafa ny version manokana-na pejy iray',
 'right-deletedhistory' => 'Mijery ny tantaram-pejy voafafa fa tsy lahatsorany',
-'right-deletedtext' => "Mijery ny lahatsoratra voafafa sy ny fampitahana anelanelan'ny santiôna voafafa",
+'right-deletedtext' => "Mijery ny lahatsoratra voafafa sy ny fampitahana anelanelan'ny versiona voafafa",
 'right-browsearchive' => 'Mitady pejy voafafa',
 'right-undelete' => 'Mamerina pejy voafafa',
 'right-suppressrevision' => "Mandinika sy mamerina ny version asitrika amin'ny mpandrindra",
@@ -1733,7 +1728,7 @@ Raha mbola te-hampiditra io rakitra io foana ianao, miverena any aoriana ary mam
 'uploadwarning-text' => "Ovay ny fanoritan' ilay rakitra ary andrao fanindroany.",
 'savefile' => 'Tehirizo ny rakitra',
 'uploadedimage' => 'tonga ny rakitra"[[$1]]"',
-'overwroteimage' => "nampiditra santiôna vaovao an'ny « [[$1]] »",
+'overwroteimage' => 'nampiditra versiona vaovao ny «[[$1]]»',
 'uploaddisabled' => 'Miala tsiny! Tsy azo atao ny mandefa rakitra.',
 'copyuploaddisabled' => "Tsy alefa ny fandefasan-drakitra amin'ny alalan'ny URL.",
 'uploadfromurl-queued' => 'Ao am-piandrasana ny fandefasan-drakitrao.',
@@ -1932,19 +1927,19 @@ Mety tia hanova ny famisavisany ianao any amin'ny [$2 pejy famisavisana rakitra]
 'filerevert-defaultcomment' => "Voaverina ny santiônan'ny $1 tamin'ny $2",
 'filerevert-submit' => 'Hamerina',
 'filerevert-success' => "Naverina tamin' [$4 ny santiôn'ny $2 tamin'ny $3] i '''[[Media:$1|$1]]'''",
-'filerevert-badversion' => "An-toerana, tsy misy santiôna nialoha io rakitra io miankina amin'ny daty voatoro.",
+'filerevert-badversion' => "An-toerana, tsy misy versiona nialoha io rakitra io miankina amin'ny daty voatoro.",
 
 # File deletion
 'filedelete' => 'Hamafa $1',
 'filedelete-legend' => 'Fafao ilay rakitra',
 'filedelete-intro' => "Ampamafana ny rakitra '''[[Media:$1|$1]]''' ianao miaraka amin'ny tantarany rehetra.",
-'filedelete-intro-old' => "Am-pamafana ny santiôna '''[[Media:$1|$1]]''' tamin'ny [$4 $2 tamin'ny $3] ianao.",
+'filedelete-intro-old' => "Am-pamafana ny versiona '''[[Media:$1|$1]]''' tamin'ny [$4 $2 tamin'ny $3] ianao.",
 'filedelete-comment' => 'Antony :',
 'filedelete-submit' => 'Hamafa',
 'filedelete-success' => "voafafa '''$1'''.",
 'filedelete-success-old' => "Voafafa ny santiônan'ny '''[[Media:$1|$1]]''' tamin'ny $2 tamin'ny $3.",
 'filedelete-nofile' => "Tsy misy '''$1'''.",
-'filedelete-nofile-old' => "Tsy nisy santiôna voatahirin'i '''$1''' miaraka amin'ny mahasamihafa naseho.",
+'filedelete-nofile-old' => "Tsy nisy versiona voatahirin'i '''$1''' miaraka amin'ny mahasamihafa naseho.",
 'filedelete-otherreason' => 'Antony fanampiny :',
 'filedelete-reason-otherlist' => 'Antony hafa',
 'filedelete-reason-dropdown' => '* Antom-pamafàna rakitra miasa matetika
@@ -2247,7 +2242,7 @@ na tsy maniry handray imailaka avy amin'ny mpikambana hafa izy.",
 'unwatch' => 'Aza arahana intsony',
 'unwatchthispage' => 'Aza arahana intsony',
 'notanarticle' => 'Tsy votoatim-pejy ity pejy ity',
-'notvisiblerev' => 'Voafafa ilay santiôna',
+'notvisiblerev' => 'Voafafa ilay versiona farany nataom-pikambana hafa',
 'watchlist-details' => "Pejy $1{{PLURAL:}} ao amin'ny lisitry ny pejy arahanao, tsy isaina ny pejin-dresaka.",
 'wlheader-enotif' => "Alefa ny fampilazana amin'ny mailaka.",
 'wlheader-showupdated' => "Aseho '''sorabaventy''' ny pejy niova taorian'ny famangianao azy farany.",
@@ -2330,8 +2325,8 @@ Jereo amin\'ny $2 ny lisitry ny famafana pejy faramparany.',
 ** Tsi-fanajana ny zom-pamorona
 ** Fandotoana",
 'delete-edit-reasonlist' => 'Hanova ny antony amafana pejy',
-'delete-toobig' => 'Ity pejy  ity dia manana tantaram-panovana be, mihoatra ny santiôna {{PLURAL:$1}} $1.
-Ny famafana ireo pejy ireto dia voafetra mba tsy hikorontana {{SITENAME}}.',
+'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|}}",
 'delete-warning-toobig' => "Lava be mihitsy ny tantaram-piovan'ity pejy ity, mihoatra santiôna $1{{PLURAL:}}.
 Mety hitondra fikorontanana ao amin'ny banky angon'i {{SITENAME}} ny famafana azy ;
 ataovy am-pitandremana ity tao ity.",
@@ -2428,12 +2423,12 @@ Ity ny réglage ny pejy '''$1''' :",
 # Undelete
 'undelete' => 'Jereo ny pejy voafafa',
 'undeletepage' => 'Hijery sy hamerina ny pejy efa voafafa',
-'undeletepagetitle' => "'''Ahitana ny santiôna voafafan'i [[:$1|$1]] ity lisitra manaraka.'''",
+'undeletepagetitle' => "'''Ahitana ny versiona voafafan'i [[:$1|$1]] ity lisitra manaraka.'''",
 'viewdeletedpage' => 'Hijery ny pejy efa nofafana',
 'undeletepagetext' => "Ireto pejy ireto dia efa voafafa nefa mbola voatahiry ao amin'ny tahiry ihany,
 ary mbola afaka averina, mandra-pifafan'ny tahiry. Mety ho voafafa matetitetika
 ihany ny tahiry {{PLURAL:$1}}.",
-'undelete-fieldset-title' => 'Hamerina ny santiôna',
+'undelete-fieldset-title' => 'Hamerina versiona',
 'undeleterevisions' => "{{PLURAL:$1|fanovana|fanovana}} $1 voatahiry any amin'ny arsiva",
 'undeletehistory' => "
 Raha averinao ity pejy ity dia hiverina hiaraka aminy koa ny tantaran'ny
@@ -2441,10 +2436,10 @@ fanovana rehetra natao taminy. Raha efa misy pejy mitondra io anarana io
 noforonina taorian'ny namafana azy, dia hitambatra amin'ny tantaran'io
 pejy vaovao io ny tantaran'ity pejy voafafa ity, fa tsy ho voafafa akory.",
 'undeletehistorynoadmin' => "Efa voafafa io lahatsoratra io. Ny antony namafana azy dia io miseho ambangovangony eo ambany eo io, miaraka amin'ny fampahalalana antsipirihany momba ny mpikambana nikitika io pejy io talohan'ny namafana azy. Ny votoatin'ny pejy izay efa nofafana ireo dia ny mpitantana ihany no afaka mahita azy ankehitriny.",
-'undelete-revision' => "Santiôna voafafa an'i $1 (santiôna tamin'ny $4 tamin'ny $5) nataon'i $3 :",
-'undeleterevision-missing' => "Santiôna diso na tsy misy.
+'undelete-revision' => "Versiona voafafa an'i $1 (versiona tamin'ny $4 tamin'ny $5) nataon'i $3:",
+'undeleterevision-missing' => "Versiona diso na tsy misy.
 Mety rohy tsy izy no anananao, na mety voafafa na naverina tamin'ny tahiry ilay santiôna.",
-'undelete-nodiff' => 'Tsy nahitana santiôna nialoha.',
+'undelete-nodiff' => 'Tsy nahitana versiona nialoha.',
 'undeletebtn' => 'Avereno!',
 'undeletelink' => 'Topi-maso/averina',
 'undeleteviewlink' => 'hijery',
@@ -2473,7 +2468,7 @@ Mety efa naverina angamba izy io.",
 'undelete-error-long' => 'Nisy tsi-fetezana nitranga teo am-pamerenana ilay rakitra :
 
 $1',
-'undelete-show-file-confirm' => "Tapa-kevitra ny hamafa ny santiôna voafafan'ny rakitra <nowiki>$1</nowiki> tamin'ny $2 tamin'ny $3 ve ianao ?",
+'undelete-show-file-confirm' => "Tapa-kevitra ny hamafa ny versiona voafafan'ny rakitra <nowiki>$1</nowiki> tamin'ny $2 tamin'ny $3 ve ianao ?",
 'undelete-show-file-submit' => 'Eny',
 
 # Namespace form on various pages
@@ -2816,7 +2811,7 @@ Ho voasoratra ao amin'ny [[Special:Log/import|laogim-pampidirana]] ny tao rehetr
 'import-upload-filename' => 'Anaran-drakitra :',
 'import-comment' => 'Resaka :',
 'importstart' => 'Am-pampidirana ny pejy…',
-'import-revision-count' => '$1 santiôna{{PLURAL:$1||}}',
+'import-revision-count' => 'Versiona $1{{PLURAL:$1||}}',
 'importnopages' => 'Tsy misy pejy ho ampidirana.',
 'importfailed' => "Tsy fetezan' ilay fampidirana : <nowiki>$1</nowiki>",
 'importunknownsource' => "Karazana tsy fantatra an'ilay fango ho ampidirina",
@@ -2835,7 +2830,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 santiôna rehetra.',
+'import-nonewrevisions' => 'Efa nampidirina taloha daholo ny versiona rehetra.',
 '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.
@@ -2954,8 +2949,8 @@ Mamerina ny version taloha io asa io ary afaka manometraka ny antony anatin'ny a
 'spamprotectiontext' => "Voasakan'ny sivana mpiaro amin'ny spam ny pejy saika hotahirizinao. Mety ho anton'izany ny fisian'ny rohy mankany amin'ny sehatra ivelan'ity wiki ity.",
 'spamprotectionmatch' => "Izao teny izao: $1 ; no nanaitra ny sivana mpiaro amin'ny spam",
 'spambot_username' => "Fanadiovana ny spam amin'i MediaWiki.",
-'spam_reverting' => "Famerenana an'ilay santiôna farany tsy misy ny rohy mankany amin'ny $1",
-'spam_blanking' => "Voafotsy ny santiôna misy ny rohy mankany amin'ny $1",
+'spam_reverting' => "Famerenana an'ilay versiona farany tsy misy ny rohy mankany amin'ny $1",
+'spam_blanking' => "Voafotsy ny versiona misy ny rohy mankany amin'ny $1",
 
 # Info page
 'pageinfo-title' => 'Fampahalalana ho an\'i "$1"',
@@ -3003,7 +2998,7 @@ Mamerina ny version taloha io asa io ary afaka manometraka ny antony anatin'ny a
 'markaspatrolleddiff' => 'Marihana ho voamarina',
 'markaspatrolledtext' => 'Marihana ho hita sy voatsara',
 'markedaspatrolled' => 'Voamarina',
-'markedaspatrolledtext' => "Ny santiôna voafidy an'ny [[:$1]] dia voamarika ho voamarina.",
+'markedaspatrolledtext' => "Nomarihana ho voamarina ny versiona voafidy an'ny [[:$1]].",
 'rcpatroldisabled' => "Tsy nalefa ny fanamarinana ao amin'ny fiovana farany.",
 'rcpatroldisabledtext' => 'Tsy atao ankehitriny ny fanamarinana ny pejy novaina farany.',
 'markedaspatrollederror' => 'Tsy afaka marihana ho voamarina',
@@ -3015,7 +3010,7 @@ Mamerina ny version taloha io asa io ary afaka manometraka ny antony anatin'ny a
 # Patrol log
 'patrol-log-page' => "Laogin'ny fanovana voamarina",
 'patrol-log-header' => "Ity dia laogy mikasikan'ny fanovana voamarina.",
-'log-show-hide-patrol' => "$1 ny laogy mikasikan'ny santiôna voamarina",
+'log-show-hide-patrol' => "$1 ny laogy mikasikan'ny versiona voamarina",
 
 # Image deletion
 'deletedrevision' => "Fanovana an'i $1 taloha voafafa.",
@@ -3029,8 +3024,8 @@ $1',
 'filedelete-archive-read-only' => "Ny petra-drakitra fitehirizana « $1 » dia tsy afaka ovain'ny lohamilina.",
 
 # Browsing diffs
-'previousdiff' => '← Ilay fampitahana teo arina',
-'nextdiff' => 'fampitahana manaraka →',
+'previousdiff' => '← Fiovana taloha',
+'nextdiff' => 'Fiovana manaraka →',
 
 # Media information
 'mediawarning' => "'''Fampitandremana''': Mety misy renifango manao ratsy io karazan-drakitra io.
@@ -3138,8 +3133,8 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
 'exif-software' => 'Rindrankajy nampiasaina',
 'exif-artist' => 'Mpaka azy',
 'exif-copyright' => 'Mpanana ilay copyright',
-'exif-exifversion' => 'Santiôna EXIF',
-'exif-flashpixversion' => 'Santiôna FlashPix',
+'exif-exifversion' => 'Versiona EXIF',
+'exif-flashpixversion' => 'Versiona FlashPix',
 'exif-colorspace' => 'Valan-doko',
 'exif-pixelydimension' => 'Haavon-tsary',
 'exif-pixelxdimension' => 'Halala-tsary',
@@ -3440,7 +3435,7 @@ Azonao atao ihany koa ny [[Special:EditWatchlist/raw|manova ilay lisitra amin'ny
 'duplicate-defaultsort' => '\'\'\'Tandremo\'\'\' : manitsaka ny sort key taloha "$1" ilay sort key ankehitriny "$2".',
 
 # Special:Version
-'version' => 'Santiôna',
+'version' => 'Versiona',
 'version-extensions' => 'Fanitarana nampidirina',
 'version-specialpages' => 'Pejy manokana',
 'version-variables' => 'Miova',
@@ -3451,7 +3446,7 @@ Azonao atao ihany koa ny [[Special:EditWatchlist/raw|manova ilay lisitra amin'ny
 'version-poweredby-others' => 'hafa',
 'version-software' => 'Rindrankahy voapetraka',
 'version-software-product' => 'Vokatra',
-'version-software-version' => 'Santiôna',
+'version-software-version' => 'Versiona',
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Hitady rakitra mitovy endrika',
@@ -3510,8 +3505,8 @@ Azonao atao ihany koa ny [[Special:EditWatchlist/raw|manova ilay lisitra amin'ny
 'comparepages' => 'Hampitaha pejy',
 'compare-page1' => 'Pejy 1',
 'compare-page2' => 'Pejy 2',
-'compare-rev1' => 'Santiôna 1',
-'compare-rev2' => 'Santiôna 2',
+'compare-rev1' => 'Versiona 1',
+'compare-rev2' => 'Versiona 2',
 'compare-submit' => 'Ampitahao',
 
 # Database error messages
index cab348a..703aafa 100644 (file)
@@ -364,9 +364,7 @@ $messages = array(
 'tog-numberheadings' => 'Нумерирај ги заглавијата',
 'tog-showtoolbar' => 'Прикажи алатник за уредување',
 'tog-editondblclick' => 'Уредување на страници при двоен стисок',
-'tog-editsection' => 'Овозможи уредување на заглавија преку врските [уреди]',
 'tog-editsectiononrightclick' => 'Уредување на заглавија со десно копче од глушецот на нивниот наслов',
-'tog-showtoc' => 'Покажи содржина (за страници со повеќе од 3 заглавија)',
 'tog-rememberpassword' => 'Запомни ме на овој прелистувач (највеќе до $1 {{PLURAL:$1|ден|дена}})',
 'tog-watchcreations' => 'Додавај ги страниците што ги создавам и податотеките што ги подигам во списокот на набљудувања',
 'tog-watchdefault' => 'Додавај ги страниците и податотеките што ги уредувам во списокот на набљудувања',
@@ -926,6 +924,8 @@ $2',
 'retypenew' => 'Повторете ја новата лозинка:',
 'resetpass_submit' => 'Поставете лозинка и најавете се',
 'changepassword-success' => 'Вашата лозинка е успешно сменета!',
+'changepassword-throttled' => 'Имате премногу обиди за најава за кратко време.
+Почекајте $1 пред да се обидете повторно.',
 'resetpass_forbidden' => 'Лозинките не може да се менуваат',
 'resetpass-no-info' => 'Мора да сте најавени ако сакате да имате директен пристап до оваа страница.',
 'resetpass-submit-loggedin' => 'Смени лозинка',
@@ -984,6 +984,8 @@ $2
 'changeemail-password' => 'Вашата лозинка на {{SITENAME}}:',
 'changeemail-submit' => 'Смени е-пошта',
 'changeemail-cancel' => 'Откажи',
+'changeemail-throttled' => 'Имате премногу обиди за најава за кратко време.
+Почекајте $1 пред да се обидете повторно.',
 
 # Special:ResetTokens
 'resettokens' => 'Врати одново шифри',
index 8673a5c..6c32801 100644 (file)
@@ -365,9 +365,7 @@ $messages = array(
 'tog-numberheadings' => 'ഉപവിഭാഗങ്ങൾക്ക് ക്രമസംഖ്യ കൊടുക്കുക',
 'tog-showtoolbar' => 'തിരുത്തൽ റ്റൂൾബാർ  പ്രദർശിപ്പിക്കുക',
 'tog-editondblclick' => 'താളുകളിൽ ഇരട്ട ക്ലിക്ക് ചെയ്യുമ്പോൾ തിരുത്താനനുവദിക്കുക',
-'tog-editsection' => '[തിരുത്തുക] എന്ന കണ്ണിയുപയോഗിച്ച് ഉപവിഭാഗങ്ങൾ തിരുത്താനനുവദിക്കുക',
 'tog-editsectiononrightclick' => 'ഉപവിഭാഗങ്ങളുടെ തലക്കെട്ടിൽ റൈറ്റ് ക്ലിക്ക് ചെയ്യുന്നതു വഴി തിരുത്താനനുവദിക്കുക',
-'tog-showtoc' => 'ഉള്ളടക്കപ്പട്ടിക പ്രദർശിപ്പിക്കുക (മൂന്നിൽ കൂടുതൽ ഉപശീർഷകങ്ങളുള്ള താളുകൾക്കു മാത്രം)',
 'tog-rememberpassword' => 'എന്റെ പ്രവേശനം ഈ ബ്രൗസറിൽ ({{PLURAL:$1|ഒരു ദിവസം|$1 ദിവസം}}) ഓർത്തുവെക്കുക',
 'tog-watchcreations' => 'ഞാൻ സൃഷ്ടിക്കുന്ന താളുകളും ഞാൻ അപ്‌ലോഡ് ചെയ്യുന്ന പ്രമാണങ്ങളും ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
 'tog-watchdefault' => 'ഞാൻ തിരുത്തുന്ന താളുകളും പ്രമാണങ്ങളും ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
index 53384e8..5a6e44c 100644 (file)
@@ -55,9 +55,7 @@ $messages = array(
 'tog-numberheadings' => 'Гарчигуудыг автоматаар дэс дугаарлах',
 'tog-showtoolbar' => 'Засварлах түүлбарыг үзүүлэх (ЖаваСкрипт)',
 'tog-editondblclick' => 'Хоёр удаа дараад хуудсыг засварлах (ЖаваСкрипт)',
-'tog-editsection' => '[Засварлах] линкээр хэсгийг засварладаг болгох',
 'tog-editsectiononrightclick' => 'Хэсгийн гарчиг дээр баруун товчлуураар дарж засварладаг болгох (ЖаваСкрипт)',
-'tog-showtoc' => 'Агуулгын хүснэгтийг үзүүлэх (3-с илүү хэсэгтэй хуудсуудад)',
 'tog-rememberpassword' => 'Энэхүү хөтөч дээрх нэвтрэлтийг санах (хамгийн ихдээ $1 {{PLURAL:$1|өдрийн|өдрийн}} турш)',
 'tog-watchcreations' => 'Миний үүсгэсэн хуудсуудыг хянах жагсаалтанд оруулах',
 'tog-watchdefault' => 'Миний засварласан хуудсуудыг хянах жагсаалтанд оруулах',
index a27a2b0..b4e2b06 100644 (file)
@@ -340,9 +340,7 @@ $messages = array(
 'tog-numberheadings' => 'शीर्षके स्वयंक्रमांकित करा',
 'tog-showtoolbar' => 'संपादन साधनपट्टी दाखवा',
 'tog-editondblclick' => 'दुबार-टिचकुन पान संपादित करा',
-'tog-editsection' => '[संपादन] दुव्यामार्फत विभाग संपादन करणे शक्य करा',
 'tog-editsectiononrightclick' => 'विभाग शीर्षकावर उजव्या क्लिकने टिचकुन संपादन करणे शक्य करा',
-'tog-showtoc' => 'अनुक्रमणिका दाखवा(पानात ३ पेक्षा जास्त शीर्षके असल्यास)',
 'tog-rememberpassword' => 'माझा सनोंदप्रवेश (लॉग-ईन) या न्याहाळकावर लक्षात ठेवा (जास्तीत जास्त $1 {{PLURAL:$1|दिवसासाठी|दिवसांसाठी}})',
 'tog-watchcreations' => 'मी तयार केलेली पाने आणि चढविलेल्या संचिका माझ्या निरीक्षणसूचीत टाका',
 'tog-watchdefault' => 'मी संपादित केलेली पाने आणि संचिका माझ्या निरीक्षणसूचीत टाका',
@@ -2433,7 +2431,7 @@ $UNWATCHURL
 'delete-edit-reasonlist' => 'वगळण्याची कारणे संपादित करा',
 'delete-toobig' => 'या पानाला, $1 {{PLURAL:$1|आवृत्ती|आवृत्त्यां}}मुळे तयार झालेला खूप मोठा संपादन इतिहास आहे. {{SITENAME}} वर आकस्मिक होणारी उलथापालथ वाचविण्यासाठी, अश्या पानांचे वगळणे प्रतिबंधित केल्या गेले आहे.',
 'delete-warning-toobig' => 'या पानाला, $1 {{PLURAL:$1|आवृत्ती|आवृत्त्यां}}मुळे तयार झालेला खूप मोठा संपादन इतिहास आहे.त्याचे वगळण्याने {{SITENAME}} वर डाटाबेसच्या क्रियांची उलथापालथ होऊ शकते; सावधगिरीने पुढे जा.',
-'deleting-backlinks-warning' => "'''ईशारा:'''आपण वगळत असणाऱ्या पानास इतर पानांचे दुवे आहेत.",
+'deleting-backlinks-warning' => "'''ईशारा:''' आपण वगळत असणाऱ्या पानास दुसरी पाने जोडलेली किंवा आंतरविन्यासित आहेत.",
 
 # Rollback
 'rollback' => 'बदल वेगात माघारी न्या',
@@ -2725,7 +2723,7 @@ $1',
 'range_block_disabled' => 'प्रचालकांची पल्ला बंधने घालण्याची क्षमता अनुपलब्ध केली आहे.',
 'ipb_expiry_invalid' => 'अयोग्य समाप्ती काळ.',
 'ipb_expiry_temp' => 'लपविलेले सदस्यनाम प्रतिबंधन कायमस्वरूपी असले पाहिजे.',
-'ipb_hide_invalid' => 'हà¥\87 à¤\96ात à¤¦à¤¾à¤¬à¤£à¥\8dयासाठà¥\80 à¤\85समरà¥\8dथ; à¤¤à¥\8dयानà¥\87 à¤\85नà¥\87à¤\95 à¤¸à¤\82पादनà¥\87 à¤\95à¥\87लà¥\87लà¥\80 à¤\85सà¥\82 à¤¶à¤\95तात.',
+'ipb_hide_invalid' => 'हà¥\87 à¤\96ात à¤¦à¤¾à¤¬à¤£à¥\8dयासाठà¥\80 à¤\85समरà¥\8dथ; à¤¤à¥\8dयात {{PLURAL:$1|à¤\8fà¤\95 à¤¸à¤\82पादन à¤\86हà¥\87|$1 à¤¸à¤\82पादनà¥\87 à¤\86हà¥\87त}}.',
 'ipb_already_blocked' => '"$1" आधीच अवरूद्ध केलेले आहे.',
 'ipb-needreblock' => '$1 आधीच प्रतिबंधित आहे . तुम्हाला त्याची सेटींग्स बदलण्याची इच्छा आहे का ?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|दुसरे प्रतिबंधन|इतर प्रतिबंधने}}',
@@ -2892,6 +2890,7 @@ $1',
 'allmessages-prefix' => 'उपसर्गाने गाळा:',
 'allmessages-language' => 'भाषा:',
 'allmessages-filter-submit' => 'चला',
+'allmessages-filter-translate' => 'भाषांतर करा',
 
 # Thumbnails
 'thumbnail-more' => 'मोठे करा',
index 9b4ae9b..281fd80 100644 (file)
@@ -209,9 +209,7 @@ $messages = array(
 'tog-numberheadings' => 'Nomborkan tajuk secara automatik',
 'tog-showtoolbar' => 'Tunjukkan palang sunting (perlukan JavaScript)',
 'tog-editondblclick' => 'Dwiklik untuk sunting laman (JavaScript)',
-'tog-editsection' => 'Bolehkan penyuntingan bahagian melalui pautan [sunting]',
 'tog-editsectiononrightclick' => 'Bolehkan penyuntingan bahagian dengan mengklik kanan pada tajuk bahagian',
-'tog-showtoc' => 'Tunjukkan isi kandungan (bagi rencana yang melebihi 3 tajuk)',
 'tog-rememberpassword' => 'Ingat log masuk saya di pelayar ini (tidak melebihi $1 {{PLURAL:$1|hari|hari}})',
 'tog-watchcreations' => 'Tambahkan laman yang saya buat dan fail yang saya muat naik ke dalam senarai pantau',
 'tog-watchdefault' => 'Tambahkan laman dan fail yang saya sunting ke dalam senarai pantau',
index ad5013c..d0d0ca9 100644 (file)
@@ -284,9 +284,7 @@ $messages = array(
 'tog-numberheadings' => 'Numerazzjoni awtomatika tat-titli tas-sezzjonijiet',
 'tog-showtoolbar' => 'Uri l-kolonna tal-għodda għall-immodifikar (bżonn tal-JavaScript)',
 'tog-editondblclick' => "Immodifika l-paġni permezz ta' klikk doppju (bżonn tal-JavaScript)",
-'tog-editsection' => 'L-immodifikar tas-sezzjonijiet permezz tal-ħolqa [editja]',
 'tog-editsectiononrightclick' => "L-immodifikar ta' sezzjonijiet bi klikk lemini fuq it-titli tas-sezzjonijiet (bżonn tal-JavaScript)",
-'tog-showtoc' => "Uri l-werrej (għal paġni b'iktar minn 3 sezzjonijiet)",
 'tog-rememberpassword' => "Ftakar il-login tiegħi fuq dan il-browżer (għal massimu ta' {{PLURAL:$1|ġurnata|$1 ġurnata}})",
 'tog-watchcreations' => "Żid il-paġni li noħloq u l-fajls li ntella' fil-lista ta' osservazzjoni tiegħi",
 'tog-watchdefault' => "Żid il-paġni u l-fajls li nimmodifika fil-lista ta' osservazzjoni personali",
index fc01408..26c9165 100644 (file)
@@ -329,9 +329,7 @@ $messages = array(
 'tog-numberheadings' => 'Autonummerer overskrifter',
 'tog-showtoolbar' => 'Vis verktøylinje',
 'tog-editondblclick' => 'Rediger sider ved å dobbeltklikke',
-'tog-editsection' => 'Rediger avsnitt ved hjelp av [rediger]-lenke',
 'tog-editsectiononrightclick' => 'Rediger avsnitt ved å høyreklikke på avsnittsoverskrift',
-'tog-showtoc' => 'Vis innholdsfortegnelse (for sider med flere enn tre avsnitt)',
 'tog-rememberpassword' => 'Husk meg i denne nettleseren (i høyst $1 {{PLURAL:$1|dag|dager}})',
 'tog-watchcreations' => 'Legg til sider jeg oppretter og filer jeg laster opp i min overvåkingsliste',
 'tog-watchdefault' => 'Legg til sider og filer jeg endrer på i min overvåkingsliste',
index cc1db15..b380a0f 100644 (file)
@@ -225,9 +225,7 @@ $messages = array(
 'tog-numberheadings' => 'Överschrieven automatsch nummereern',
 'tog-showtoolbar' => 'Editeer-Warktüüchlist wiesen',
 'tog-editondblclick' => 'Sieden mit Dubbelklick ännern (JavaScript)',
-'tog-editsection' => 'Links för dat Ännern vun en Afsatz wiesen',
 'tog-editsectiononrightclick' => 'En Afsatz mit en Rechtsklick ännern (Javascript)',
-'tog-showtoc' => "Wiesen vun'n Inholtsverteken bi Sieten mit mehr as dree Överschriften",
 'tog-rememberpassword' => 'Duersam inloggen (för maximaal $1 {{PLURAL:$1|Dag|Daag}})',
 'tog-watchcreations' => 'Nee schrevene Sieden op miene Oppasslist setten',
 'tog-watchdefault' => 'Op ne’e un ännerte Sieden oppassen',
index 1d1162c..40e8780 100644 (file)
@@ -334,9 +334,7 @@ $messages = array(
 'tog-numberheadings' => 'Koppen vanzelf nummeren',
 'tog-showtoolbar' => 'Laot de warkbalke zien',
 'tog-editondblclick' => 'Mit dubbelklik bewarken',
-'tog-editsection' => 'Mit bewarkgedeelten',
 'tog-editsectiononrightclick' => 'Bewarken van deelziejen meugelik maken mit n rechtermuusklik op n tussenkop',
-'tog-showtoc' => 'Samenvatting laoten zien van de zaken die an bod koemen (mit meer as dree onderwarpen)',
 'tog-rememberpassword' => 'Vanzelf anmelden (hooguut $1 {{PLURAL:$1|dag|dagen}})',
 'tog-watchcreations' => "Spul wa'k anmake op mien volglieste zetten",
 'tog-watchdefault' => "Spul wa'k bewarke op mien volglieste zetten",
index ef2d672..5558e00 100644 (file)
@@ -15,6 +15,7 @@
  * @author Kaganer
  * @author Krish Dulal
  * @author Lkhatiwada
+ * @author Nirmal Dulal
  * @author RajeshPandey
  * @author Reedy
  * @author ne.wikipedia.org sysops
@@ -65,9 +66,7 @@ $messages = array(
 'tog-numberheadings' => 'शीर्षकहरुलाई स्वत:अङ्कित गर्नुहोस्',
 'tog-showtoolbar' => 'सम्पादन औजारबट्टा देखाउने',
 'tog-editondblclick' => 'दोहोरो क्लिकमा पृष्ठ सम्पादन गर्ने',
-'tog-editsection' => '[सम्पादन] सम्बन्ध मार्फत हुने खण्ड सम्पादनलाई सक्षम पार्ने',
 'tog-editsectiononrightclick' => 'शीर्षकमा दाहिने क्लिकद्वारा खण्ड सम्पादन सक्षम पार्ने',
-'tog-showtoc' => 'सामग्री तालिका हेर्ने (तीन भन्दा बढी शीर्षक भएमा)',
 'tog-rememberpassword' => 'यस ब्राउजरमा मेरो प्रवेशलाई सम्झनुहोस् (अधिकतम $1 {{PLURAL:$1|दिन|दिनहरु}} सम्म)',
 'tog-watchcreations' => 'मेरो निगरानी सूचीमा मैले सृजना गरेको पृष्ठ र अपलोड जोड्ने',
 'tog-watchdefault' => 'मैले सम्पादन गरेको पृष्ठ र फाइल निगरानी सूचीमा थप्ने',
@@ -1099,7 +1098,7 @@ $1",
 याद गर्नुहोस् उनीहरुको {{SITENAME}}को सूची सामग्री पुरानो भएको हुनसक्छ ।',
 
 # Preferences page
-'preferences' => 'रà¥\8bà¤\9cाà¤\88हरू',
+'preferences' => 'रà¥\8bà¤\9cाà¤\87हरू',
 'mypreferences' => 'प्राथमिकताहरु',
 'prefs-edits' => 'सम्पादन संख्या:',
 'prefs-skin' => 'काँचुली',
@@ -1118,7 +1117,7 @@ $1",
 'prefs-watchlist-edits-max' => 'उच्चतम संख्या : १०००',
 'prefs-watchlist-token' => 'अवलोकन सूची टोकन:',
 'prefs-misc' => 'साधारण',
-'prefs-resetpass' => 'प्रवेशशव्द परिवर्रतन',
+'prefs-resetpass' => 'प्रवेश शब्द परिवर्तन',
 'prefs-changeemail' => 'इमेल परिवर्तन गर्ने',
 'prefs-setemail' => 'इमेल ठेगाना प्रविष्ट गर्ने',
 'prefs-email' => 'इमेल  विकल्पहरु',
@@ -3349,7 +3348,7 @@ $5
 'specialpages-group-pagetools' => 'पृष्ठ उपकरणहरू',
 'specialpages-group-wiki' => 'विकि डाटा र औजारहरु',
 'specialpages-group-redirects' => 'विशेष पृष्ठमा पठाउने',
-'specialpages-group-spam' => 'सà¥\8dपाम à¤\89पà¤\95रणहरà¥\81',
+'specialpages-group-spam' => 'सà¥\8dपाम à¤\89पà¤\95रणहरà¥\82',
 
 # Special:BlankPage
 'blankpage' => 'खाली पृष्ठहरू',
index 63e7512..208b72e 100644 (file)
@@ -389,9 +389,7 @@ $messages = array(
 'tog-numberheadings' => 'Koppen automatisch nummeren',
 'tog-showtoolbar' => 'Bewerkingswerkbalk weergeven',
 'tog-editondblclick' => 'Dubbelklikken voor bewerken',
-'tog-editsection' => 'Bewerken van deelpagina’s mogelijk maken via [bewerken]-koppelingen',
 'tog-editsectiononrightclick' => 'Bewerken van deelpagina’s mogelijk maken met een rechtermuisklik op een tussenkop',
-'tog-showtoc' => 'Inhoudsopgave weergeven (voor pagina’s met minstens 3 tussenkoppen)',
 'tog-rememberpassword' => 'Aanmeldgegevens onthouden (maximaal $1 {{PLURAL:$1|dag|dagen}})',
 'tog-watchcreations' => "Pagina's die ik aanmaak en bestanden die ik upload automatisch volgen",
 'tog-watchdefault' => 'Pagina’s en bestanden die ik bewerk automatisch volgen',
@@ -958,6 +956,8 @@ Voer een nieuw wachtwoord in om het aanmelden te voltooien:',
 'retypenew' => 'Herhaling nieuwe wachtwoord:',
 'resetpass_submit' => 'Wachtwoord instellen en aanmelden',
 'changepassword-success' => 'Uw wachtwoord is gewijzigd.',
+'changepassword-throttled' => 'U heeft recentelijk te veel mislukte aanmeldpogingen gedaan.
+Wacht alstublieft $1 voordat u het opnieuw probeert.',
 'resetpass_forbidden' => 'Wachtwoorden kunnen niet gewijzigd worden',
 'resetpass-no-info' => 'U dient aangemeld zijn voordat u deze pagina kunt gebruiken.',
 'resetpass-submit-loggedin' => 'Wachtwoord wijzigen',
@@ -1008,6 +1008,8 @@ Tijdelijk wachtwoord: $2',
 'changeemail-password' => 'Uw wachtwoord voor {{SITENAME}}:',
 'changeemail-submit' => 'E-mailadres wijzigen',
 'changeemail-cancel' => 'Annuleren',
+'changeemail-throttled' => 'U heeft recentelijk te veel mislukte aanmeldpogingen gedaan.
+Wacht alstublieft $1 voordat u het opnieuw probeert.',
 
 # Special:ResetTokens
 'resettokens' => 'Tokens opnieuw instellen',
index fc692ab..7ace8ef 100644 (file)
@@ -330,9 +330,7 @@ $messages = array(
 'tog-numberheadings' => 'Vis nummererte overskrifter',
 'tog-showtoolbar' => 'Vis endringsverktøyline',
 'tog-editondblclick' => 'Endre sider med dobbeltklikk',
-'tog-editsection' => 'Endre avsnitt ved hjelp av [endre]-lenkje',
 'tog-editsectiononrightclick' => 'Endre avsnitt ved å høgreklikke på avsnittsoverskrifter',
-'tog-showtoc' => 'Vis innhaldsliste (for sider med meir enn tre bolkar)',
 'tog-rememberpassword' => 'Hugs innlogginga mi med denne nettlesaren (for høgst {{PLURAL:$1|éin dag|$1 dagar}})',
 'tog-watchcreations' => 'Legg til sidene eg opprettar og filene eg lastar opp på overvakingslista mi',
 'tog-watchdefault' => 'Legg til sidene og filene eg endrar på overvakingslista mi',
index fa0940b..4fb1a23 100644 (file)
@@ -301,9 +301,7 @@ $messages = array(
 'tog-numberheadings' => 'Numerotar automaticament los títols',
 'tog-showtoolbar' => 'Far veire la barra de menú',
 'tog-editondblclick' => 'Modificar las paginas amb un clic doble',
-'tog-editsection' => 'Modificar una seccion via los ligams [modificar]',
 'tog-editsectiononrightclick' => 'Modificar una seccion en fasent un clic drech suls títols de seccion',
-'tog-showtoc' => "Afichar l'ensenhador (per las paginas de mai de 3 seccions)",
 'tog-rememberpassword' => 'Se remembrar de mon senhal sus aqueste ordinator (al mai $1 {{PLURAL:$1|jorn|jorns}})',
 'tog-watchcreations' => "Apondre las paginas que creï e los fichièrs qu'impòrti a ma lista de seguiment",
 'tog-watchdefault' => "Apondre las paginas que modifiqui e los fichièrs qu'impòrti a ma lista de seguiment",
index c83eb40..a24076e 100644 (file)
@@ -268,9 +268,7 @@ $messages = array(
 'tog-numberheadings' => 'ଆପେଆପେ-ସଂଖ୍ୟାର ନାମଗୁଡ଼ିକ',
 'tog-showtoolbar' => 'ସମ୍ପାଦନା ଟୁଲବାର ଦେଖାଇବେ',
 'tog-editondblclick' => 'ଦୁଇଥର କ୍ଲିକରେ ପୃଷ୍ଠା ବଦଳାଇବେ',
-'tog-editsection' => '[ବଦଳାଇବେ] ଲିଙ୍କରେ ବିଭାଗର ସମ୍ପାଦନାକୁ ସଚଳ କରିବେ',
 'tog-editsectiononrightclick' => 'ବିଭାଗ ନାମରେ ଡାହାଣ କ୍ଲିକ କରି ବିଭାଗ ସମ୍ପାଦନାକୁ ସଚଳ କରିବେ',
-'tog-showtoc' => 'ସୂଚୀପତ୍ର ଦେଖାଇବେ (୩ରୁ ଅଧିକ ମୁଖ୍ୟ ନାମ ଥିଲେ)',
 'tog-rememberpassword' => 'ଏହି ବ୍ରାଉଜରରେ (ସର୍ବାଧିକ $1 {{PLURAL:$1|day|ଦିନ}}) ପାଇଁ ମୋ ଲଗ-ଇନ ମନେରଖିଥିବେ',
 'tog-watchcreations' => 'ମୋ ତିଆରି ପୃଷ୍ଠାସବୁକୁ ଏବଂ ମୋ ଅପଲୋଡ଼ଗୁଡ଼ିକୁ ମୋର ଦେଖଣାତାଲିକାରେ ଯୋଡ଼ନ୍ତୁ',
 'tog-watchdefault' => 'ମୁଁ ବଦଳେଇଥିବା ପୃଷ୍ଠା ଏବଂ ଫାଇଲଗୁଡ଼ିକୁ ମୋର ଦେଖଣାତାଲିକାରେ ଯୋଡ଼ନ୍ତୁ',
index d0cc8dd..9a22f5c 100644 (file)
@@ -326,9 +326,7 @@ $messages = array(
 'tog-numberheadings' => 'Automatyczna numeracja nagłówków',
 'tog-showtoolbar' => 'Pokaż pasek narzędzi',
 'tog-editondblclick' => 'Podwójne kliknięcie rozpoczyna edycję',
-'tog-editsection' => 'Możliwość edycji poszczególnych sekcji strony (link [edytuj])',
 'tog-editsectiononrightclick' => 'Kliknięcie prawym klawiszem myszy na tytule sekcji rozpoczyna jej edycję',
-'tog-showtoc' => 'Pokazuj spis treści (na stronach z więcej niż 3 nagłówkami)',
 'tog-rememberpassword' => 'Zapamiętaj moje hasło w przeglądarce (maksymalnie przez $1 {{PLURAL:$1|dzień|dni}})',
 'tog-watchcreations' => 'Dodawaj do obserwowanych tworzone przeze mnie strony oraz wgrywane przeze mnie pliki',
 'tog-watchdefault' => 'Dodawaj do obserwowanych strony i pliki, które edytuję',
@@ -1286,11 +1284,11 @@ Inni administratorzy {{GRAMMAR:D.lp|{{SITENAME}}}} nadal będą mieć dostęp do
 * Ujawnienie danych osobowych
 *: ''adres domowy, numer telefonu, numer PESEL itp''",
 'revdelete-legend' => 'Ustaw ograniczenia widoczności',
-'revdelete-hide-text' => 'Ukryj tekst wersji',
+'revdelete-hide-text' => 'Tekst wersji',
 'revdelete-hide-image' => 'Ukryj zawartość pliku',
 'revdelete-hide-name' => 'Ukryj akcję i cel',
-'revdelete-hide-comment' => 'Ukryj komentarz edycji',
-'revdelete-hide-user' => 'Ukryj nazwę użytkownika/adres IP',
+'revdelete-hide-comment' => 'Opis zmian',
+'revdelete-hide-user' => 'Nazwa użytkownika/adres IP',
 'revdelete-hide-restricted' => 'Ukryj informacje przed administratorami tak samo jak przed innymi',
 'revdelete-radio-same' => '(bez zmian)',
 'revdelete-radio-set' => 'Ukryty',
index 0cc1760..b6fa9ad 100644 (file)
@@ -53,9 +53,7 @@ $messages = array(
 'tog-numberheadings' => 'Tìtoj ëd paràgraf<br />che as nùmero daspërlor',
 'tog-showtoolbar' => "Smon-e la bara dj'utiss ëd modìfica",
 'tog-editondblclick' => 'Dobia sgnacà për modifiché la pàgina',
-'tog-editsection' => "Abilité le modìfiche ëd session con j'anliure [modifiché]",
 'tog-editsectiononrightclick' => 'Abilité la modìfica dle session ën sgnacand-je ansima ai tìtoj col tast drit dël rat',
-'tog-showtoc' => "Smon-e la tàula dij contnù (për le pàgine che l'han pì che 3 session)",
 'tog-rememberpassword' => "Visesse ëd mia ciav ansima a 's navigador (për al pi $1 {{PLURAL:$1|di}})",
 'tog-watchcreations' => "Gionté le pàgine che i creo mi e j'archivi che i cario mi a la lista ëd lòn che im ten-o sot-euj",
 'tog-watchdefault' => "Gionté le pàgine e j'archivi che i modìfico mi a la lista dle ròbe ch'i ten-o sot-euj",
@@ -602,6 +600,8 @@ S'a decid ëd butelo, a sarà dovrà për dé a l'utent ël mérit ëd sò trava
 'retypenew' => 'Che a scriva torna soa neuva ciav:',
 'resetpass_submit' => 'Argistré la ciav e rintré ant ël sistema',
 'changepassword-success' => "Soa ciav a l'é stàita modificà sensa problema!",
+'changepassword-throttled' => "A l'ha fàit tròpi tentativ recent d'intré ant ël sistema.
+Për piasì, ch'a speta $1 prima ëd prové torna.",
 'resetpass_forbidden' => 'Le ciav as peulo pa cambiesse',
 'resetpass-no-info' => 'A dev esse rintrà ant ël sustema për acede diretament a sta pàgina.',
 'resetpass-submit-loggedin' => "Cangé 'd ciav",
@@ -654,6 +654,8 @@ Ciav provisòria: $2',
 'changeemail-password' => 'Soa ciav su {{SITENAME}}:',
 'changeemail-submit' => "Cangé l'adrëssa ëd pòsta eletrònica",
 'changeemail-cancel' => 'Anulé',
+'changeemail-throttled' => "A l'ha fàit tròpi tentativ ëd rintré ant ël sistema.
+Për piasì, ch'a speta $1 prima ëd prové torna.",
 
 # Special:ResetTokens
 'resettokens' => 'Riamposté ij geton',
@@ -3964,5 +3966,6 @@ An efet, a espand praticament tut lòn ch'a-i é antrames dle grafe dobie.",
 'expand_templates_preview' => 'Preuva',
 
 # Unknown messages
+'createaccount-hook-aborted' => '$1',
 'uploadinvalidxml' => "L'XML ant l'archivi carià a l'ha nen podù esse analisà.",
 );
index a8b2ffb..eac64a9 100644 (file)
@@ -32,9 +32,7 @@ $messages = array(
 'tog-numberheadings' => 'آپ نمبر دین والیاں سرخیاں',
 'tog-showtoolbar' => 'ایڈٹ ٹولبار وکھاؤ',
 'tog-editondblclick' => 'صفیاں تے ڈبل کلک کرن تے تبدیلیاں لیاؤ',
-'tog-editsection' => 'سیکشن ایڈیٹنگ جوڑاں نال بناؤ',
 'tog-editsectiononrightclick' => 'سیکشن سرخی تے تبدیلی لیاؤ سجی کلک نال',
-'tog-showtoc' => 'آرٹیکل دی لسٹ دسو (3 توں چوکھیاں سرخیاں والے صفیاں دی)',
 'tog-rememberpassword' => 'اس براؤزر تے میرا ورتن ناں یاد رکھو ($1 {{PLURAL:$1|دن|دناں}} واسطے)',
 'tog-watchcreations' => 'جیہڑے صفے میں بناندا واں اوہ میری اکھ تھلے لسٹ چ کر دیو',
 'tog-watchdefault' => 'جیہڑے صفے میں لکھداں اوہ میری اکھ تھلے لسٹ چ کر دیو',
index 65a4bde..a170a38 100644 (file)
@@ -24,9 +24,7 @@ $messages = array(
 'tog-numberheadings' => 'Autōmatiska galwasrīndan nummerinsna',
 'tog-showtoolbar' => 'Waidinnais sawinzlin stēisan pagaptin (JavaScript)',
 'tog-editondblclick' => 'Redigīs pāusans pra dwigubban pellis gnesnan (JavaScript)',
-'tog-editsection' => 'Ermazīnginais redigīsnan stēisan pāusas sekciōnin pra "[redigīs]" autengīnsenin',
 'tog-editsectiononrightclick' => 'Ermazīnginais redigīsnan stēisan pāusas sekciōnin pra tikrōman pellis knuppas gnesnan na tenesses tītelin',
-'tog-showtoc' => 'Waidinnais ēnturas listin (en pāusamans sen tūls nikāi 3 galwasrīndans)',
 'tog-rememberpassword' => 'Pamēnais enēisenes infōrmaciōnins en šismu kōmputerin (per maksimum of $1 {{PLURAL:$1|deinā|dēinans}})',
 'tog-watchcreations' => 'Preidāis pāusans kawīdans as teīke prei majjan listin stēisan nadirītan',
 'tog-watchdefault' => 'Preidāis pāusans kawīdans as redigijja prei majjan listin stēisan nadirītan',
index d5a3ea2..d36babb 100644 (file)
@@ -331,9 +331,7 @@ $messages = array(
 'tog-numberheadings' => 'Auto-numerar cabeçalhos',
 'tog-showtoolbar' => 'Mostrar barra de edição',
 'tog-editondblclick' => 'Editar páginas quando houver um clique duplo',
-'tog-editsection' => 'Possibilitar a edição de secções com links [editar]',
 'tog-editsectiononrightclick' => 'Possibilitar a edição de seções por clique com o botão direito no título da seção',
-'tog-showtoc' => 'Mostrar índice (para páginas com mais de três seções)',
 'tog-rememberpassword' => 'Recordar os meus dados neste browser (no máximo, durante $1 {{PLURAL:$1|dia|dias}})',
 'tog-watchcreations' => 'Adicionar as páginas e ficheiros que eu criar às minhas páginas vigiadas',
 'tog-watchdefault' => 'Adicionar as páginas e ficheiros que eu editar às minhas páginas vigiadas',
@@ -4211,6 +4209,7 @@ Caso contrário, pode facilmente usar o formulário abaixo. O seu comentário se
 '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-expensivefunctioncount' => 'Número de funções do analisador custosas',
 
 # Special:ExpandTemplates
 'expandtemplates' => 'Expandir predefinições',
index 865ee9b..e3d4d3b 100644 (file)
@@ -338,9 +338,7 @@ $messages = array(
 'tog-numberheadings' => 'Auto-numerar cabeçalhos',
 'tog-showtoolbar' => 'Mostrar barra de ferramentas de edição',
 'tog-editondblclick' => 'Editar páginas quando houver clique duplo',
-'tog-editsection' => 'Ativar a edição de seções com links [editar]',
 'tog-editsectiononrightclick' => 'Habilitar edição de seção por clique com o botão direito no título da seção (requer JavaScript)',
-'tog-showtoc' => 'Mostrar Tabela de Conteúdos (para páginas com mais de três cabeçalhos)',
 'tog-rememberpassword' => 'Recordar meus dados de acesso neste navegador (por no máximo $1 {{PLURAL:$1|dia|dias}})',
 'tog-watchcreations' => 'Adicionar as páginas e arquivos que eu criar à minha lista de páginas vigiadas',
 'tog-watchdefault' => 'Adicionar as páginas e arquivos que eu editar à minha lista de páginas vigiadas',
@@ -4211,7 +4209,7 @@ Caso contrário, você poderá usar o formulário simplificado a seguir. Seu com
 'limitreport-templateargumentsize' => 'Argumento do tamanho da predefinição',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
 'limitreport-expansiondepth' => 'Máxima profundidade de expansão',
-'limitreport-expensivefunctioncount' => 'Conta da função expansiva do analizador',
+'limitreport-expensivefunctioncount' => 'Número de funções do analisador custosas',
 
 # Special:ExpandTemplates
 'expandtemplates' => 'Expandir predefinições',
index 98dbb8a..361bd8d 100644 (file)
@@ -181,11 +181,8 @@ Offers user to use alternative representation of [[Special:RecentChanges]] and w
 This is the toolbar: [[Image:Toolbar.png]]",
 'tog-editondblclick' => "{{Gender}}
 [[Special:Preferences]], tab 'Edit'. Offers user to open edit page on double click.",
-'tog-editsection' => "[[Special:Preferences]], tab 'Edit'. Offers user to add links in sub headings for editing sections. {{Gender}}",
 'tog-editsectiononrightclick' => "{{Gender}}
 [[Special:Preferences]], tab 'Edit'. Offers user to edit a section by clicking on a section title.",
-'tog-showtoc' => "[[Special:Preferences]], tab 'Misc'.
-Offers user to show a table of contents automatically if a page has more than 3 headings (= 4 or more headings).",
 'tog-rememberpassword' => "{{Gender}}
 [[Special:Preferences]], tab 'User profile', section 'Change password'. Offers user remember login details.
 Parameters:
@@ -1600,7 +1597,8 @@ Used on the account creation form when creating another user's account. Similar
 'resetpass_header' => 'Header on box on special page [[Special:ChangePassword]].
 
 {{Identical|Reset password}}',
-'oldpassword' => "Used on the 'User profile' tab of 'my preferences'. This is the text next to an entry box for the old password in the 'change password' section.",
+'oldpassword' => "Used on the 'User profile' tab of 'my preferences'. This is the text next to an entry box for the old password in the 'change password' section.
+{{Identical|Old password}}",
 'newpassword' => '{{Identical|New password}}',
 'retypenew' => "Appears on the 'User profile' tab of the 'Preferences' special page in the 'Change password' section. It appears next to the text box for entering the new password a second time.",
 'resetpass_submit' => 'Submit button on [[Special:ChangePassword]]',
@@ -1624,7 +1622,9 @@ Parameters:
 This is a protection against robots trying to find the password by trying lots of them.
 The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].
 This message is used in html.
-{{identical|Login throttled}}',
+
+See also:
+* {{msg-mw|Changeemail-throttled}}',
 'resetpass_forbidden' => "Used as error message in changing password. Maybe the external auth plugin won't allow local password changes.",
 'resetpass-no-info' => 'Error message for [[Special:ChangePassword]].
 
@@ -1733,7 +1733,9 @@ Parameters:
 This is a protection against robots trying to find the password by trying lots of them.
 The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].
 This message is used in html.
-{{identical|Login throttled}}',
+
+See also:
+* {{msg-mw|Changepassword-throttled}}',
 
 # Special:ResetTokens
 'resettokens' => '{{doc-special|ResetTokens}}
@@ -2324,7 +2326,6 @@ See also:
 * $2 - reason or {{msg-mw|Blockednoreason}}
 * $3 - username
 * $4 - current user's IP address",
-'createaccount-hook-aborted' => 'Placeholder message to return with API errors on account create; passes through the message from a hook {{notranslate}}',
 
 # History pages
 'viewpagelogs' => 'Link displayed in history of pages',
@@ -5463,13 +5464,12 @@ See also:
 * {{msg-mw|Watchlist-details}}',
 'iteminvalidname' => 'Parameters:
 * $1 - item name',
-'wlnote' => 'Used on [[Special:Watchlist]] when a maximum number of hours or days is specified.
+'wlnote2' => 'Used on [[Special:Watchlist]] when a maximum number of hours or days is specified.
 
 Parameters:
-* $1 - the number of changes shown
-* $2 - the number of hours for which the changes are shown
-* $3 - a date alone
-* $4 - a time alone',
+* $1 - the number of hours for which the changes are shown
+* $2 - a date alone
+* $3 - a time alone',
 'wlshowlast' => 'Appears on [[Special:Watchlist]]. Parameters:
 * $1 - a choice of different numbers of hours ("1 | 2 | 6 | 12")
 * $2 - a choice of different numbers of days ("1 | 3 | 7")
@@ -7191,6 +7191,7 @@ See also:
 'allmessages-filter-submit' => 'Used on [[Special:Allmessages]].
 
 {{Identical|Go}}',
+'allmessages-filter-translate' => 'Used on [[Special:Allmessages]]. Label for a link to translatewiki.net for a message to translate.',
 
 # Thumbnails
 'thumbnail-more' => '[[Image:Yes.png|thumb|This:]]
@@ -8156,7 +8157,8 @@ See also:
 # Skin names
 'skinname-cologneblue' => '{{optional}}',
 'skinname-monobook' => '{{optional}}',
-'skinname-modern' => '{{optional}}',
+'skinname-modern' => '{{optional}}
+{{Identical|Modern}}',
 'skinname-vector' => '{{optional}}',
 
 # Patrolling
@@ -10673,5 +10675,6 @@ test
 'expand_templates_preview' => '{{Identical|Preview}}',
 
 # Unknown messages
+'createaccount-hook-aborted' => 'Placeholder message to return with API errors on account create; passes through the message from a hook {{notranslate}}',
 'uploadinvalidxml' => 'Error message displayed when the uploaded file contains XML that cannot be properly parsed and checked.',
 );
index e884afe..3c6dee6 100644 (file)
@@ -274,9 +274,7 @@ $messages = array(
 'tog-numberheadings' => "Uma siq'ikunata kikinmanta yupay",
 'tog-showtoolbar' => "Llamk'apuna sillwita rikuchiy",
 'tog-editondblclick' => "P'anqakunata llamk'apuy iskaylla ñit'iywan",
-'tog-editsection' => "Rakirilla llamk'apuyta saqillay [qillqay] t'inkiwan",
 'tog-editsectiononrightclick' => "Rakirilla llamk'apuyta saqillay paña butunta rakirip sutinpi ñit'ispa",
-'tog-showtoc' => "Yuyarina wachuchasqata rikuchiy (kimsamanta aswan uma siq'iyuq p'anqakunapaq)",
 'tog-rememberpassword' => "Ruraqpa sutiyta yaykuna rimaytapas yuyaykuy kay llika wamp'unapi ({{PLURAL:$1|huk p'unchawkama|$1 p'unchawkama}})",
 'tog-watchcreations' => "Qallarisqay p'anqakunata churkusqay willañiqikunatapas watiqay",
 'tog-watchdefault' => "Hukchasqay p'anqakunata willañiqikunatapas watiqay",
index 4ba0fb1..6e580a8 100644 (file)
@@ -54,9 +54,7 @@ $messages = array(
 'tog-numberheadings' => 'Numerar automaticamain ils titels',
 'tog-showtoolbar' => "Mussar la trav d'utensils per modifitgar",
 'tog-editondblclick' => 'Modifitgar paginas cun in clic dubel',
-'tog-editsection' => 'Mussar colliaziuns [modifitgar] per modifitgar singulas secziuns',
 'tog-editsectiononrightclick' => 'Activar la pussaivladad da modifitgar secziuns cun in clic dretg sin il titel',
-'tog-showtoc' => 'Mussar ina tabla da cuntegn sin paginas cun dapli che trais tetels',
 'tog-rememberpassword' => "S'annunziar permanantamain cun quest navigatur (per maximalmain $1 {{PLURAL:$1|di|dis}})",
 'tog-watchcreations' => "Agiuntar paginas ch'jeu creesch e datotecas ch'jau transferesch a la glista d'observaziun",
 'tog-watchdefault' => "Agiuntar paginas e datotecas ch'jau modifitgesch a la glista d'observaziun",
index 41b4d33..7f2b2e8 100644 (file)
@@ -308,9 +308,7 @@ $messages = array(
 'tog-numberheadings' => 'Numerotează automat secțiunile',
 'tog-showtoolbar' => 'Afișează bara de unelte pentru modificare',
 'tog-editondblclick' => 'Modifică paginile prin dublu clic',
-'tog-editsection' => 'Activează modificarea secțiunilor prin legăturile [modifică]',
 'tog-editsectiononrightclick' => 'Activează modificarea secţiunilor prin clic dreapta pe titlul secțiunii',
-'tog-showtoc' => 'Arată cuprinsul (pentru paginile cu mai mult de 3 paragrafe cu titlu)',
 'tog-rememberpassword' => 'Autentificare automată de la acest navigator (expiră după $1 {{PLURAL:$1|zi|zile|de zile}})',
 'tog-watchcreations' => 'Adaugă paginile pe care le creez și fișierele pe care le încarc la lista mea de pagini urmărite',
 'tog-watchdefault' => 'Adaugă paginile și fișierele pe care le modific la lista mea de urmărire',
@@ -857,6 +855,8 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a atribui utilizatoru
 'retypenew' => 'Reintroduceți noua parolă:',
 'resetpass_submit' => 'Setează parola și autentifică',
 'changepassword-success' => 'Parola dumneavoastră a fost schimbată cu succes!',
+'changepassword-throttled' => 'Ați avut prea multe încercări recente de a vă autentifica.
+Vă rugăm să așteptați $1 până să reîncercați.',
 'resetpass_forbidden' => 'Parolele nu pot fi schimbate.',
 'resetpass-no-info' => 'Trebuie să fiți autentificat pentru a accesa această pagină direct.',
 'resetpass-submit-loggedin' => 'Modifică parola',
@@ -912,6 +912,8 @@ Parolă temporară: $2',
 'changeemail-password' => 'Parola dumneavoastră la {{SITENAME}}:',
 'changeemail-submit' => 'Modifică adresa de e-mail',
 'changeemail-cancel' => 'Revocare',
+'changeemail-throttled' => 'Ați avut prea multe încercări de a vă autentifica.
+Vă rugăm să așteptați $1 până să reîncercați.',
 
 # Special:ResetTokens
 'resettokens' => 'Resetare jetoane',
index 63acf1e..64095e4 100644 (file)
@@ -35,9 +35,7 @@ $messages = array(
 'tog-numberheadings' => 'Testate auto-numerate',
 'tog-showtoolbar' => "Fà vedè 'a barra de le cangiaminde",
 'tog-editondblclick' => "Cange le pàggene cu 'nu doppie clic",
-'tog-editsection' => "Abbilite le cangiaminde d'a sezione ausanne le collagaminde [cange]",
 'tog-editsectiononrightclick' => "Abbilite le cangiaminde d'a sezione ausanne 'u pulsande destre d'u sciorge cazzanne sus a 'u titole",
-'tog-showtoc' => "Fa vedè 'a tabbelle de le condenute (pe le pàggene cu cchiù de 3 testate)",
 'tog-rememberpassword' => "Arrecuèrdete 'u nome mije sus a stu browser (pe 'nu massime de $1 {{PLURAL:$1|sciurne}})",
 'tog-watchcreations' => "Mitte le pàggene ca je agghie ccrejate jndr'à le pàggene condrollate",
 'tog-watchdefault' => "Mitte le pàggene ca je agghie cangiate jndr'à le pàggene condrollate",
index 4a8a4f5..e0e1007 100644 (file)
@@ -453,9 +453,7 @@ $messages = array(
 'tog-numberheadings' => 'Автоматически нумеровать заголовки',
 'tog-showtoolbar' => 'Показывать верхнюю панель инструментов при редактировании',
 'tog-editondblclick' => 'Править страницы по двойному щелчку',
-'tog-editsection' => 'Показывать ссылку «править» для каждой секции',
 'tog-editsectiononrightclick' => 'Править секции при правом щелчке мышью на заголовке',
-'tog-showtoc' => 'Показывать оглавление (для страниц более чем с 3 заголовками)',
 'tog-rememberpassword' => 'Помнить мою учётную запись в этом браузере (не более $1 {{PLURAL:$1|дня|дней}})',
 'tog-watchcreations' => 'Добавлять в список наблюдения созданные мной страницы и загруженные мной файлы',
 'tog-watchdefault' => 'Добавлять в список наблюдения изменённые мной страницы и описания файлов',
@@ -1007,6 +1005,8 @@ $2',
 'retypenew' => 'Повторите ввод нового пароля:',
 'resetpass_submit' => 'Установить пароль и представиться',
 'changepassword-success' => 'Ваш пароль был успешно изменён!',
+'changepassword-throttled' => 'Вы сделали слишком много попыток представиться системе.
+Пожалуйста, подождите $1 перед тем, как попробовать снова.',
 'resetpass_forbidden' => 'Пароль не может быть изменён',
 'resetpass-no-info' => 'Чтобы обращаться непосредственно к этой странице, вам следует представиться системе.',
 'resetpass-submit-loggedin' => 'Изменить пароль',
@@ -1064,6 +1064,8 @@ $2
 'changeemail-password' => 'Ваш пароль для проекта «{{SITENAME}}»:',
 'changeemail-submit' => 'Изменить адрес',
 'changeemail-cancel' => 'Отмена',
+'changeemail-throttled' => 'Вы сделали слишком много попыток представиться системе.
+Пожалуйста, подождите $1 перед тем, как попробовать снова.',
 
 # Special:ResetTokens
 'resettokens' => 'Сбросить токены',
index 3a6041d..441b4e0 100644 (file)
@@ -127,9 +127,7 @@ $messages = array(
 'tog-numberheadings' => 'Автоматічно чісловати надписы',
 'tog-showtoolbar' => 'Вказати панел інштрументів',
 'tog-editondblclick' => 'Едітовати двоїтым кликом',
-'tog-editsection' => 'Дозволити едітованя секції сторінкы через одказ [едіт.]',
 'tog-editsectiononrightclick' => 'Дозволити едітованя секції сторінкы через кликаня правов клапков мышкы на надписы сторінок',
-'tog-showtoc' => 'Вказовати обсяг (на сторінках з веце як трёма надписами)',
 'tog-rememberpassword' => 'Запамнятати моє приголошіня на тім переглядачу (максімално $1 {{PLURAL:$1|день|днів}})',
 'tog-watchcreations' => 'Придавати сторінкы створены мнов тай файлы мнов наладованы до мого списку слїдованых',
 'tog-watchdefault' => 'Придавати мнов едітованы сторінкы і файлы до списку слїдованых',
index 1d0f27e..fc78409 100644 (file)
@@ -288,9 +288,7 @@ $messages = array(
 'tog-numberheadings' => 'शीर्षकान् स्वयमेव सक्रमांकीकरोतु।',
 'tog-showtoolbar' => 'सम्पादन-उपकरण-पट्टिका दर्श्यताम् (जावालिपिः अपेक्ष्यते)',
 'tog-editondblclick' => 'द्विक्लिक्कारेण पृष्ठानि सम्पाद्यन्ताम् (जावालिपिः अपेक्ष्यते)',
-'tog-editsection' => '[संपादयतु़] इति संबंधनद्वारा विभाग-संपादनं समर्थयतु।',
 'tog-editsectiononrightclick' => 'विभागशीर्षकाणामुपरि दक्षिणक्लिक्करणेन विभागसम्पादनं समर्थ्यताम् (जावालिपिः अपेक्ष्यते)।',
-'tog-showtoc' => 'विषयानुक्रमणिका दर्श्यताम् (त्र्यधिकशीर्षकयुतेषु पृष्ठेषु)।',
 'tog-rememberpassword' => 'अस्मिन् सङ्गणके मम प्रवेशः स्मर्यताम् (अधिकतमम् $1 {{PLURAL:$1|दिनम्|दिनानि}})',
 'tog-watchcreations' => 'मया रचितानि पृष्ठानि मम अवेक्षणसूच्यां योज्यन्ताम्।',
 'tog-watchdefault' => 'मया सम्पादितानि पृष्ठानि मम अवेक्षणसूच्यां योज्यन्ताम्।',
index 5298a22..012581e 100644 (file)
@@ -55,9 +55,7 @@ $messages = array(
 'tog-numberheadings' => 'Бас тыллары нүөмэрдээ',
 'tog-showtoolbar' => 'Көннөрүү үстүрүмүөннэрин көрдөр',
 'tog-editondblclick' => 'Хоһулатан иккитэ баттаан сирэйи уларытыы',
-'tog-editsection' => '[Көннөрүү] диэн ыйынньыгынан сиэксийэны көннөрүү',
 'tog-editsectiononrightclick' => 'Сиэксийэ баһыгар уҥа тимэҕинэн баттаан сиэксийэни көннөрүү',
-'tog-showtoc' => 'Иһинээҕитин көрдөр (ыстатыйа үстэн ордук бас тыллаах буоллаҕына)',
 'tog-rememberpassword' => 'Миигин бу браузерга сигээ ($1 {{PLURAL:$1|күн|күнтэн ордуга суох}})',
 'tog-watchcreations' => 'Суруйбут ыстатыйаларбын уонна укпут билэлэрбин кэтээн көрүүгэ киллэрэн ис',
 'tog-watchdefault' => 'Уларыппыт сирэйдэрбин уонна билэлэрбин кэтээн көрүү тиһигэр киллэрэн ис',
index 32c6c06..369dba5 100644 (file)
@@ -163,9 +163,7 @@ $messages = array(
 'tog-numberheadings' => 'Nummirazzioni automàtica dî tìtuli di paràgrafu',
 'tog-showtoolbar' => 'Ammustra la barra dî strumenta pi lu canciamentu',
 'tog-editondblclick' => "Duppiu click pi canciari l'artìculu (richiedi Javascript)",
-'tog-editsection' => 'Abbìlita lu canciamentu dî sezzioni tràmiti lu culligamentu [cancia]',
 'tog-editsectiononrightclick' => 'Abbìlita lu canciamentu dî sezzioni tràmiti duppiu click supra lu tìtulu dâ sezzioni (richiedi Javascript)',
-'tog-showtoc' => "Ammustra l'ìndici (pi artìculi cu cchiù di 3 sezzioni)",
 'tog-rememberpassword' => 'Arricorda la password supra stu navigaturi (pi ô massimu $1 {{PLURAL:$1|jornu|jorna}})',
 'tog-watchcreations' => "Agghiunci li pàggini criati a l'ossirvati spiciali",
 'tog-watchdefault' => "Agghiunci li pàggini canciati a l'ossirvati spiciali",
index 37bd098..e2aca19 100644 (file)
@@ -218,9 +218,7 @@ $messages = array(
 'tog-numberheadings' => 'Automatski numeriši podnaslove',
 'tog-showtoolbar' => 'Pokaži alatnu traku (potreban JavaScript)',
 'tog-editondblclick' => 'Izmijeni stranice dvostrukim klikom (potreban JavaScript)',
-'tog-editsection' => 'Omogući uređivanje sekcija preko [uredi] linkova',
 'tog-editsectiononrightclick' => 'Uključite uređivanje odjeljka sa pritiskom na desno dugme miša u naslovu odjeljka (JavaScript)',
-'tog-showtoc' => 'Prikaži sadržaj (u svim stranicama sa više od tri podnaslova)',
 'tog-rememberpassword' => 'Upamti moju prijavu za ovaj preglednik (za maksimum od $1 {{PLURAL:$1|dan|dana}})',
 'tog-watchcreations' => 'Dodaj stranice koje sam stvorio i dadtoteke koje sam poslao u moj spisak praćenih stranica',
 'tog-watchdefault' => 'Dodaj stranice i datoteke koje izmijenim u spisak praćenja',
@@ -262,56 +260,56 @@ $messages = array(
 'editfont-serif' => 'Slova serif',
 
 # Dates
-'sunday' => 'nedjelja',
+'sunday' => 'Nedjelja/Недеља',
 'monday' => 'Ponedjeljak / Понедељак',
-'tuesday' => 'utorak',
-'wednesday' => 'srijeda',
-'thursday' => 'Ä\8detvrtak',
-'friday' => 'petak',
-'saturday' => 'subota',
-'sun' => 'Ned',
-'mon' => 'Pon',
-'tue' => 'Uto',
-'wed' => 'Sri',
-'thu' => 'Čet',
-'fri' => 'Pet',
-'sat' => 'Sub',
+'tuesday' => 'Utorak/Уторак',
+'wednesday' => 'Srijeda/Среда',
+'thursday' => 'Ä\8cetvrtak/ЧеÑ\82вÑ\80Ñ\82ак',
+'friday' => 'Petak/Петак',
+'saturday' => 'Subota/Субота',
+'sun' => 'ned-нед',
+'mon' => 'pon-пон',
+'tue' => 'uto-уто',
+'wed' => 'sri-сре',
+'thu' => 'чет-čet',
+'fri' => 'pet-пет',
+'sat' => 'sub-суб',
 'january' => 'januar',
-'february' => 'februar',
-'march' => 'mart',
-'april' => 'april',
-'may_long' => 'maj',
+'february' => 'februar-вељача',
+'march' => 'mart-ожујак',
+'april' => 'april-травањ',
+'may_long' => 'maj-свибањ',
 'june' => 'jun',
 'july' => 'jul',
-'august' => 'august',
-'september' => 'septembar',
-'october' => 'oktobar',
+'august' => 'avgust-коловоз',
+'september' => 'septembar-рујан',
+'october' => 'oktobar-листопад',
 'november' => 'novembar',
-'december' => 'decembar',
+'december' => 'decembar-просинац',
 'january-gen' => 'januar',
-'february-gen' => 'februar',
-'march-gen' => 'mart',
-'april-gen' => 'april',
-'may-gen' => 'maj',
+'february-gen' => 'februara-вељаче',
+'march-gen' => 'marta-ожујка',
+'april-gen' => 'aprila-травња',
+'may-gen' => 'маја-свибња',
 'june-gen' => 'jun',
 'july-gen' => 'jul',
-'august-gen' => 'august',
-'september-gen' => 'septembar',
-'october-gen' => 'oktobar',
+'august-gen' => 'augusta-коловоза',
+'september-gen' => 'septembra-рујна',
+'october-gen' => 'oktobra-листопада',
 'november-gen' => 'novembar',
-'december-gen' => 'decembar',
+'december-gen' => 'decembra-просинца',
 'jan' => 'jan',
-'feb' => 'feb',
-'mar' => 'mar',
-'apr' => 'apr',
-'may' => 'maj',
+'feb' => 'feb-вељ',
+'mar' => 'mar-ожу',
+'apr' => 'apr-тра',
+'may' => 'maj-сви',
 'jun' => 'jun',
 'jul' => 'jul',
-'aug' => 'aug',
-'sep' => 'sep',
-'oct' => 'okt',
+'aug' => 'aug-кол',
+'sep' => 'sep-руј',
+'oct' => 'okt-лис',
 'nov' => 'nov',
-'dec' => 'dec',
+'dec' => 'dec-про',
 'january-date' => '$1. januar',
 'february-date' => '$1. februar',
 'march-date' => '$1. mart',
@@ -350,11 +348,11 @@ $messages = array(
 'cancel' => 'Odustani - Одустани',
 'moredotdotdot' => 'Još...',
 'morenotlisted' => 'Više nije prikazano...',
-'mypage' => 'Stranica',
+'mypage' => 'Moja stranica',
 'mytalk' => 'Moj razgovor / Мој разговор',
 'anontalk' => 'Razgovor za ovu IP adresu',
 'navigation' => 'Navigacija',
-'and' => '&#32;i',
+'and' => 'i/и',
 
 # Cologne Blue skin
 'qbfind' => 'Pronađite',
@@ -386,10 +384,10 @@ $messages = array(
 'errorpagetitle' => 'Greška - Грешка',
 'returnto' => 'Povratak na $1.',
 'tagline' => 'Izvor: {{SITENAME}}',
-'help' => 'Pomoć',
+'help' => 'Pomoć / Помоћ',
 'search' => 'Traži / Тражи',
 'searchbutton' => 'Traži',
-'go' => 'Idi - Иди',
+'go' => 'Idi / Иди',
 'searcharticle' => 'Idi',
 'history' => 'Historija stranice',
 'history_short' => 'Historija',
@@ -398,7 +396,7 @@ $messages = array(
 'permalink' => 'Trajni link',
 'print' => 'Štampa',
 'view' => 'Vidi',
-'edit' => 'Uredi',
+'edit' => 'Uredi / Уреди',
 'create' => 'Napravi',
 'editthispage' => 'Uredite ovu stranicu',
 'create-this-page' => 'Stvori ovu stranicu',
@@ -413,15 +411,15 @@ $messages = array(
 'unprotect' => 'Promijeni zaštitu',
 'unprotectthispage' => 'Promijeni zaštitu za ovu stranicu',
 'newpage' => 'Nova stranica / Нова страница',
-'talkpage' => 'Razgovaraj o ovoj stranici',
+'talkpage' => 'Razgovaraj o ovoj stranici - Разговарај о овој страници',
 'talkpagelinktext' => 'Razgovor',
 'specialpage' => 'Posebna stranica',
 'personaltools' => 'Lični alati',
 'postcomment' => 'Pošaljite komentar - Пошаљите коментар',
 'articlepage' => 'Pogledaj stranicu sa sadržajem (članak)',
-'talk' => 'Razgovor',
+'talk' => 'Razgovor / Разговор',
 'views' => 'Pregledi',
-'toolbox' => 'Traka sa alatima',
+'toolbox' => 'Alatke / Алатке',
 'userpage' => 'Pogledajte korisničku stranicu',
 'projectpage' => 'Pogledajte stranicu projekta',
 'imagepage' => 'Vidi stranicu datoteke/fajla',
@@ -451,7 +449,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' => 'O projektu {{SITENAME}}',
 'aboutpage' => 'Project:O_projektu_{{SITENAME}}',
-'copyright' => 'Sadržaj je dostupan pod $1.',
+'copyright' => 'Pod licencom / Под лиценцом: $1.',
 'copyrightpage' => '{{ns:project}}:Autorska_prava',
 'currentevents' => 'Trenutni događaji',
 'currentevents-url' => 'Project:Novosti',
@@ -476,7 +474,7 @@ $1',
 
 'ok' => 'da',
 'retrievedfrom' => 'Dobavljeno iz "$1"',
-'youhavenewmessages' => 'Imate $1 ($2).',
+'youhavenewmessages' => 'Imate / Имате $1 ($2).',
 'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika|$3 korisnika}} ($2).',
 'youhavenewmessagesmanyusers' => 'Imate $1 od mnogo korisnika ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|$1 nove poruke|$1 novih poruka}}',
@@ -545,7 +543,7 @@ Do ovoga dolazi kada se prati premještaj ili historija linka za stranicu koja j
 U slučaju da se ne radi o gore navedenom, moguće je da ste pronašli grešku u programu.
 Molimo Vas da ovo prijavite [[Special:ListUsers/sysop|administratoru]] sa navođenjem tačne adrese stranice',
 'missingarticle-rev' => '(izmjena#: $1)',
-'missingarticle-diff' => '(Razl: $1, $2)',
+'missingarticle-diff' => '(razlika: $1, $2)',
 'readonly_lag' => 'Baza podataka je zaključana dok se sekundarne baze podataka na serveru ne sastave sa glavnom.',
 'internalerror' => 'Interna pogreška',
 'internalerror_info' => 'Interna greška: $1',
@@ -616,15 +614,15 @@ Obratite pažnju da neke stranice mogu nastaviti da se prikazuju kao da ste još
 'welcomeuser' => 'Dobro došli, $1!',
 'welcomecreation-msg' => 'Vaš korisnički račun je napravljen.
 Ne zaboravite izmijeniti vlastite [[Special:Preferences|{{SITENAME}} postavke]].',
-'yourname' => 'Korisničko ime:',
+'yourname' => 'Vaše korisničko ime / Ваше корисничко име',
 'userlogin-yourname' => 'Korisničko ime',
 'userlogin-yourname-ph' => 'Unesite svoje korisničko ime',
 'createacct-another-username-ph' => 'Unesi korisničko ime',
-'yourpassword' => 'Lozinka/zaporka:',
+'yourpassword' => 'Vaša šifra / Ваша шифра:',
 'userlogin-yourpassword' => 'Lozinka/zaporka',
 'userlogin-yourpassword-ph' => 'Unesite svoju lozinku/zaporku',
 'createacct-yourpassword-ph' => 'Unesite lozinku/zaporku',
-'yourpasswordagain' => 'Ponovno utipkajte lozinku/zaporku:',
+'yourpasswordagain' => 'Ponovo upišite šifru / Поново упишите шифру',
 'createacct-yourpasswordagain' => 'Potvrdite lozinku/zaporku',
 'createacct-yourpasswordagain-ph' => 'Unesite lozinku/zaporku ponovno',
 'remembermypassword' => 'Upamti moju lozinku na ovom kompjuteru (za maksimum od $1 {{PLURAL:$1|dan|dana}})',
@@ -639,7 +637,7 @@ Ne zaboravite izmijeniti vlastite [[Special:Preferences|{{SITENAME}} postavke]].
 'userlogin' => 'Prijavi se / stvori korisnički račun',
 'userloginnocreate' => 'Prijavi se',
 'logout' => 'Odjavi se - Одјави се',
-'userlogout' => 'Odjava',
+'userlogout' => 'Odjavi se / Одјави се',
 'notloggedin' => 'Niste prijavljeni',
 'userlogin-noaccount' => 'Nemate račun?',
 'userlogin-joinproject' => 'Pridružite se {{SITENAME}}',
@@ -647,7 +645,7 @@ Ne zaboravite izmijeniti vlastite [[Special:Preferences|{{SITENAME}} postavke]].
 'nologinlink' => 'Otvorite račun',
 'createaccount' => 'Napraviti novi nalog / Направити нови налог',
 'gotaccount' => "Imate račun? '''$1'''.",
-'gotaccountlink' => 'Prijavite se - Пријавите се',
+'gotaccountlink' => 'Prijavite se / Пријавите се',
 'userlogin-resetlink' => 'Zaboravili ste detalje vaše prijave?',
 'userlogin-resetpassword-link' => 'Resetirajte svoju lozinku/zaporku',
 'helplogin-url' => 'Help:Logiranje',
@@ -696,8 +694,9 @@ Provjerite vaše kucanje ili [[Special:UserLogin/signup|napravite novi korisnič
 Provjerite da li ste dobro ukucali.',
 'nouserspecified' => 'Morate izabrati korisničko ime.',
 'login-userblocked' => 'Ovaj korisnik je blokiran. Prijava nije dozvoljena.',
-'wrongpassword' => 'Unijeli ste neispravnu šifru.
-Molimo Vas da pokušate ponovno.',
+'wrongpassword' => 'Šifra koju ste uneli je neodgovarajuće. Molimo, upišite je ponovo.
+
+Шифра коју сте унели је неодговарајућа. Молимо, упишите је поново.',
 'wrongpasswordempty' => 'Unesena šifra je bila prazna.
 Molimo Vas da pokušate ponovno.',
 'passwordtooshort' => 'Lozinka mora imati najmanje {{PLURAL:$1|1 znak|$1 znakova}}.',
@@ -839,7 +838,7 @@ Privremena šifra: $2',
 'summary' => 'Sažetak:',
 'subject' => 'Tema/naslov:',
 'minoredit' => 'Mala izmjena - Мала измена',
-'watchthis' => 'Prati ovu stranicu',
+'watchthis' => 'Prati / Прати',
 'savearticle' => 'Sačuvaj - Сачувај',
 'preview' => 'Pretpregled / Претпреглед',
 'showpreview' => 'Pretpregled - Претпреглед',
@@ -941,8 +940,8 @@ Posljednje stavke evidencije blokiranja možete pogledati ispod:',
 '''Još uvijek nije snimljen!'''",
 'sitejspreview' => "'''Zapamtite ovo je samo izgled ovog koda JavaScripte.'''
 '''Još uvijek nije snimljen!'''",
-'userinvalidcssjstitle' => "'''Upozorenje:''' Ne postoji interfejs (skin) pod imenom \"\$1\".
-Ne zaboravite da imena stranica s .css i .js kodom počinju malim slovom, npr. {{ns:user}}:Foo/vector.css, a ne {{ns:user}}:Foo/Vector.css.",
+'userinvalidcssjstitle' => "'''Upozorenje:''' Nema skina pod imenom \"\$1\".
+Upamtite da korisničke .css i .js stranice koriste naslov s malim slovom, npr. {{ns:user}}:Foo/monobook.css umjesto {{ns:user}}:Foo/Monobook.css.",
 'updated' => '(Osvježeno)',
 'note' => "'''Napomena:'''",
 'previewnote' => "'''Ne zaboravite da je ovo samo pregled'''
@@ -970,7 +969,7 @@ Gornje tekstualno polje sadrži tekst stranice koji trenutno postoji.
 Vaše izmjene su prikazane u donjem tekstu.
 Moraćete da unesete svoje promjene u postojeći tekst.
 '''Samo''' tekst u gornjem tekstualnom polju će biti snimljen kad pritisnete \"{{int:savearticle}}\".",
-'yourtext' => 'Vaš tekst',
+'yourtext' => 'Vaš tekst / Ваш текст',
 'storedversion' => 'Uskladištena verzija',
 'nonunicodebrowser' => "'''UPOZORENJE: Vaš preglednik ne podržava Unicode zapis znakova.
 Molimo Vas promijenite ga prije sljedećeg uređivanja članaka. Znakovi koji nisu po ASCII standardu će se u prozoru za izmjene pojaviti kao heksadecimalni kodovi.'''",
@@ -1328,7 +1327,7 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
 'prefs-watchlist-edits' => 'Najveći broj izmjena za prikaz u proširenom spisku praćenja:',
 'prefs-watchlist-edits-max' => 'Maksimalni broj: 1000',
 'prefs-watchlist-token' => 'Token spiska za praćenje:',
-'prefs-misc' => 'Ostala podešavanja',
+'prefs-misc' => 'Razno / Разно',
 'prefs-resetpass' => 'Promijeni lozinku',
 'prefs-changeemail' => 'Promijeni E-mail',
 'prefs-setemail' => 'Postavite E-mail adresu',
@@ -1380,8 +1379,8 @@ Ovo se ne može vratiti unazad.',
 'uid' => '{{GENDER:$1|Korisnički}} ID:',
 'prefs-memberingroups' => '{{GENDER:$2|Korisnik|Korisnica}} je član {{PLURAL:$1|grupe|grupâ}}:',
 'prefs-registration' => 'Vrijeme registracije:',
-'yourrealname' => 'Vaše pravo ime:',
-'yourlanguage' => 'Jezik:',
+'yourrealname' => 'Vaše ime / Ваше име*',
+'yourlanguage' => 'Jezik interfejsa / Језик интерфејса',
 'yourvariant' => 'Varijanta jezika:',
 'prefs-help-variant' => 'Željena varijanta ili pravopis za prikaz stranica sa sadržajem ovog vikija.',
 'yournick' => 'Nadimak (za potpise):',
@@ -1399,7 +1398,9 @@ Ova informacija će biti javna.',
 'email' => 'E-mail',
 'prefs-help-realname' => 'Pravo ime nije obavezno.
 Ako izaberete da date ime, biće korišteno za pripisivanje Vašeg rada.',
-'prefs-help-email' => 'E-mail adresa je opcionalna, ali Vam omogućava da Vam se pošalje nova šifra u slučaju da je izgubite ili zaboravite.',
+'prefs-help-email' => '* E-mail (nije obavezno): omogućuje drugima da Vas kontaktiraju na korisničkoj strani ili strani za razgovor bez javnog pokazivanja Vaše elektronske adrese. Ako zaboravite šifru možemo Vam na ovu adresu poslati novu, privremenu. <br/>
+
+* Е-пошта (није обавезно): Омогућује другима да Вас контактирају на корисничкој страни или страни за разговор без јавног показивања Ваше електронске адресе. Ако заборавите шифру, можемо Вам на ову адресу послати нову, привремену.',
 'prefs-help-email-others' => 'Također možete da odaberete da vas drugi kontaktiraju putem vaše korisničke stranice ili stranice za razgovor bez otkrivanja vašeg identiteta.',
 'prefs-help-email-required' => 'Neophodno je navesti e-mail adresu.',
 'prefs-info' => 'Osnovne informacije',
@@ -1620,7 +1621,7 @@ $3
 'hist' => 'hist',
 'hide' => 'Sakrij',
 'show' => 'prikaži / прикажи',
-'minoreditletter' => 'm',
+'minoreditletter' => 'm',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
 'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|korisnik|korisnika}} koji pregledaju]',
@@ -1669,12 +1670,12 @@ Da bi ste prikazali datoteku na stranici, koristite link na jedan od slijedećih
 'uploadlogpage' => 'Registar postavljanja',
 'uploadlogpagetext' => 'Ispod je popis najnovijih postavljanja datoteka.
 Vidi [[Special:NewFiles|galeriju novih datoteka]] za slikovitiji pregled.',
-'filename' => 'Ime datoteke',
+'filename' => 'Ime fajla / Име датотеке',
 'filedesc' => 'Sažetak - Сажетак',
-'fileuploadsummary' => 'Sažetak:',
+'fileuploadsummary' => 'Sažetak / Сажетак:',
 'filereuploadsummary' => 'Izmjene datoteke:',
 'filestatus' => 'Status autorskih prava:',
-'filesource' => 'Izvor - Извор',
+'filesource' => 'Izvor / Извор',
 'uploadedfiles' => 'Postavljene datoteke',
 'ignorewarning' => 'Zanemari upozorenja i sačuvaj datoteku',
 'ignorewarnings' => 'Zanemari sva upozorenja',
@@ -2000,7 +2001,7 @@ Prije brisanja provjerite da li druge stranice vode na te šablone.',
 'randomredirect-nopages' => 'Nema preusmjerenja u imenskom prostoru "$1".',
 
 # Statistics
-'statistics' => 'Statistike',
+'statistics' => 'Statistike / Статистике',
 'statistics-header-pages' => 'Statistike stranice',
 'statistics-header-edits' => 'Statistike izmjena',
 'statistics-header-views' => 'Statistike pregleda',
@@ -2067,7 +2068,7 @@ Svaki red sadrži veze na prvo i drugo preusmjerenje, kao i na prvu liniju tekst
 'unusedimages' => 'Neupotrebljene datoteke',
 'popularpages' => 'Popularne stranice',
 'wantedcategories' => 'Tražene kategorije',
-'wantedpages' => 'Tražene stranice',
+'wantedpages' => 'Tražene stranice / Тражене странице',
 'wantedpages-badtitle' => 'Nevaljan naslov u setu rezultata: $1',
 'wantedfiles' => 'Tražene datoteke',
 'wantedfiletext-cat' => 'Sledeće datoteke se koriste, ali ne postoje. Datoteke iz drugih spremnika mogu biti navedene iako ne postoje. Takve datoteke će biti <del>izbačene</del> sa spiska. Pored toga, stranice koje sadrže nepostojeće datoteke se nalaze [[:$1|ovde]].',
@@ -2134,7 +2135,7 @@ Možete specificirati prikaz izabiranjem specifičnog spiska, korisničkog imena
 'showhideselectedlogentries' => 'Prikaži/sakrij izabrane zapise u evidenciji',
 
 # Special:AllPages
-'allpages' => 'Sve stranice',
+'allpages' => 'Sve stranice / Све странице',
 'alphaindexline' => '$1 do $2',
 'nextpage' => 'Sljedeća strana ($1)',
 'prevpage' => 'Prethodna stranica ($1)',
@@ -2256,14 +2257,14 @@ E-mail koju ste uneli u vašim [[Special:Preferences|postavkama]] će se prikaza
 'watchlistfor2' => 'Za $1 $2',
 'nowatchlist' => 'Nemate ništa na svom spisku praćenih članaka.',
 'watchlistanontext' => 'Molimo da $1 da možete vidjeti ili urediti stavke na Vašem spisku praćenja.',
-'watchnologin' => 'Niste prijavljeni',
+'watchnologin' => 'Niste logovani / Нисте логовани',
 'watchnologintext' => 'Morate biti [[Special:UserLogin|prijavljeni]] da bi ste mijenjali spisak praćenih članaka.',
 'addwatch' => 'Dodaj u popis praćenja',
 'addedwatchtext' => 'Stranica "[[:$1]]" je dodata vašem [[Special:Watchlist|spisku praćenih članaka]]. 
 Buduće promjene ove stranice i njoj pridružene stranice za razgovor će biti navedene ovde.',
 'removewatch' => 'Ukloni sa spiska praćenja',
 'removedwatchtext' => 'Stranica "[[:$1]]" je uklonjena s [[Special:Watchlist|vaše liste praćenja]].',
-'watch' => 'Prati',
+'watch' => 'Prati / Прати',
 'watchthispage' => 'Prati ovu stranicu',
 'unwatch' => 'Prekini praćenje',
 'unwatchthispage' => 'Ukinite praćenje',
@@ -2281,7 +2282,7 @@ Buduće promjene ove stranice i njoj pridružene stranice za razgovor će biti n
 'watchlist-options' => 'Opcije liste praćenja',
 
 # Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Pratim',
+'watching' => 'Pratim... / Додавање на списак надгледања...',
 'unwatching' => 'Ne pratim…',
 'watcherrortext' => 'Desila se greška pri promjeni postavki vašeg spiska praćenja za "$1".',
 
@@ -2333,7 +2334,7 @@ Povratne informacije i daljnja pomoć:
 
 # Delete
 'deletepage' => 'Izbrišite stranicu',
-'confirm' => 'Potvrdite',
+'confirm' => 'Potvrdi / Потврди',
 'excontent' => "sadržaj je bio: '$1'",
 'excontentauthor' => "sadržaj je bio: '$1' (i jedini korisnik koji je mijenjao bio je '[[Special:Contributions/$2|$2]]')",
 'exbeforeblank' => "sadržaj prije brisanja je bio: '$1'",
@@ -2645,9 +2646,8 @@ Blokiranja možete da pogledate [[Special:BlockList|ovde]].',
 'change-blocklink' => 'promijeni blokadu',
 'contribslink' => 'doprinosi',
 'emaillink' => 'pošalji e-mail',
-'autoblocker' => 'Automatski ste blokirani jer dijelite IP adresu sa "[[User:$1|$1]]".
-Razlog za blokiranje je korisnika $1 je: \'\'$2\'\'',
-'blocklogpage' => 'Registar blokiranja',
+'autoblocker' => 'Automatski ste blokirani jer je vašu IP adresu nedavno koristio "[[User:$1|$1]]". Razlog za blokiranje $1 je: "\'\'\'$2\'\'\'"',
+'blocklogpage' => 'Evidencija blokiranja',
 'blocklog-showlog' => 'Ovaj korisnik je ranije blokiran. 
 Evidencija blokiranja je prikazana ispod kao referenca:',
 'blocklog-showsuppresslog' => 'Ovaj korisnik je ranije blokiran i sakriven. 
@@ -2754,7 +2754,7 @@ U tim slučajevima, moraćete ručno da premjestite stranicu ukoliko to želite.
 'cant-move-to-user-page' => 'Nemate dopuštenje da premjestite stranicu na korisničku stranicu (osim na korisničku podstranicu).',
 'newtitle' => 'Novi naziv - Нови назив',
 'move-watch' => 'Prati ovu stranicu - Прати ову страницу',
-'movepagebtn' => 'premjestite stranicu',
+'movepagebtn' => 'Premjesti stranicu – Премјести страницу',
 'pagemovedsub' => 'Premještanje uspjelo',
 'movepage-moved' => '\'\'\'"$1" je premještena na "$2"\'\'\'',
 'movepage-moved-redirect' => 'Preusmjerenje je napravljeno.',
@@ -2762,7 +2762,7 @@ U tim slučajevima, moraćete ručno da premjestite stranicu ukoliko to želite.
 'articleexists' => 'Stranica pod tim imenom već postoji, ili je ime koje ste izabrali neispravno.
 Molimo Vas da izaberete drugo ime.',
 'cantmove-titleprotected' => 'Ne možete premjestiti stranicu na ovu lokaciju, jer je novi naslov zaštićen od pravljenja',
-'movetalk' => 'Premjestite pridruženu stranicu za razgovor',
+'movetalk' => 'Premjesti i stranicu za diskusiju zajedno sa člankom (ukoliko nije prazna).',
 'move-subpages' => 'Premjesti sve podstranice (do $1)',
 'move-talk-subpages' => 'Premjesti podstranice stranica za razgovor (do $1)',
 'movepage-page-exists' => 'Stranica $1 već postoji i ne može biti automatski zamijenjena.',
@@ -2817,7 +2817,7 @@ U drugom slučaju možete koristiti i vezu, npr. [[{{#Special:Export}}/{{MediaWi
 'exportnohistory' => "----
 '''Pažnja:''' Izvoz cjelokupne historije stranica preko ovog obrasca je onemogućeno iz tehničkih razloga.",
 'exportlistauthors' => 'Uključi cjelokupni popis doprinosilaca za svaku stranicu',
-'export-submit' => 'Izvezi',
+'export-submit' => 'Izvezi / Извези',
 'export-addcattext' => 'Dodaj stranice iz kategorije:',
 'export-addcat' => 'Dodaj',
 'export-addnstext' => 'Dodaj stranice iz imenskog prostora:',
@@ -2827,7 +2827,7 @@ U drugom slučaju možete koristiti i vezu, npr. [[{{#Special:Export}}/{{MediaWi
 'export-pagelinks' => 'Uključi povezane stranice do dubine od:',
 
 # Namespace 8 related
-'allmessages' => 'Sistemske poruke',
+'allmessages' => 'Sistemske poruke / Системске поруке',
 'allmessagesname' => 'Naziv',
 'allmessagesdefault' => 'Uobičajeni tekst',
 'allmessagescurrent' => 'Trenutni tekst',
@@ -2955,7 +2955,7 @@ Možete vidjeti njen izvor',
 'tooltip-ca-move' => 'Premjesti ovu stranicu',
 'tooltip-ca-watch' => 'Dodajte ovu stranicu na Vaš spisak praćenja',
 'tooltip-ca-unwatch' => 'Izbrišite ovu stranicu sa spiska praćenja',
-'tooltip-search' => 'Pretraži ovaj wiki',
+'tooltip-search' => 'Traži ovaj Wiki / Тражи овај Вики [alt-f]',
 'tooltip-search-go' => 'Idi na stranicu s upravo ovakvim imenom ako postoji',
 'tooltip-search-fulltext' => 'Pretraga stranica sa ovim tekstom',
 'tooltip-p-logo' => 'Posjetite glavnu stranicu',
@@ -2987,11 +2987,11 @@ Možete vidjeti njen izvor',
 'tooltip-ca-nstab-help' => 'Pogledajte stranicu za pomoć',
 'tooltip-ca-nstab-category' => 'Pogledajte stranicu kategorije',
 'tooltip-minoredit' => 'Označite ovo kao manju izmjenu',
-'tooltip-save' => 'Snimite vaše izmjene',
+'tooltip-save' => 'Snimi izmjene - Сними измјене [alt-s]',
 'tooltip-preview' => 'Prethodni pregled stranice, molimo koristiti prije snimanja!',
 'tooltip-diff' => 'Prikaz izmjena koje ste napravili u tekstu',
 'tooltip-compareselectedversions' => 'Pogledajte pazlike između dvije selektovane verzije ove stranice.',
-'tooltip-watch' => 'Dodajte ovu stranicu na Vaš spisak praćenja',
+'tooltip-watch' => 'Postavite ovu stranicu na Vaš spisak praćenja / Поставите ову страницу на Ваш списак праћења [alt-w]',
 'tooltip-watchlistedit-normal-submit' => 'Ukloni naslove',
 'tooltip-watchlistedit-raw-submit' => 'Ažuriraj spisak praćenja',
 'tooltip-recreate' => 'Ponovno pravljenje stranice iako je već brisana',
@@ -3815,7 +3815,7 @@ Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] z
 'specialpages-group-maintenance' => 'Izvještaji o održavanju / Извјештаји о одржавању',
 'specialpages-group-other' => 'Ostale posebne stranice - Остале посебне странице',
 'specialpages-group-login' => 'Prijava / Пријава',
-'specialpages-group-changes' => 'Nedavne izmjene i registri',
+'specialpages-group-changes' => 'Nedavne izmjene i evidencije / registri - Недавне измене и евиденције / регистри',
 'specialpages-group-media' => 'Multimedijalne datoteke \\ fajlovi i njihovo postavljanje / Мултимедијалне датотеке \\ фајлови и њихово постављање',
 'specialpages-group-users' => 'Korisnici i njihova prava / Корисници и њихова права',
 'specialpages-group-highuse' => 'Najčešće korištene stranice / Најчешће кориштене странице',
index aacad49..d1f65c0 100644 (file)
@@ -202,9 +202,7 @@ $messages = array(
 'tog-numberheadings' => 'ශීර්ෂ-නාම ස්වයංක්‍රීයව අංකනය කරන්න',
 'tog-showtoolbar' => 'සංස්කරණ මෙවලම්තීරුව පෙන්වන්න',
 'tog-editondblclick' => 'ද්විත්ව-ක්ලික් කිරීම මගින් පිටු සංස්කරණය අරඹන්න',
-'tog-editsection' => '[සංස්කරණ] සබැඳියාවන් මගින් ඡේද සංස්කරණය සක්‍රීය කරන්න',
 'tog-editsectiononrightclick' => 'ඡේද ශීර්ෂ මත දකුණු-ක්ලික් කිරීමෙන් ඡේද සංස්කරණය සක්‍රීය කරන්න (ජාවාස්ක්‍රිප්ට්)',
-'tog-showtoc' => 'පටුන පෙන්වන්න ( තුනකට වඩා වැඩියෙන් ශීර්ෂ-නාම අඩංගු පිටු සඳහා)',
 'tog-rememberpassword' => 'මගේ ප්‍රවිෂ්ටය මෙම ගවේශකයෙහි උපරිම ලෙස {{PLURAL:$1|දිනයක්|දින $1ක්}} මතක තබා ගන්න',
 'tog-watchcreations' => 'මම තනන පිටු හා මම උඩුගත කරන ගොනු මාගේ මුරලැයිස්තුවට එක් කරන්න',
 'tog-watchdefault' => 'මම සංස්කරණය කරන පිටු හා ගොනු මාගේ මුර ලැයිස්තුවට එක් කරන්න',
index b7ae1e3..a9f0aa4 100644 (file)
@@ -294,9 +294,7 @@ $messages = array(
 'tog-numberheadings' => 'Automaticky číslovať nadpisy',
 'tog-showtoolbar' => 'Zobraziť panel nástrojov úprav',
 'tog-editondblclick' => 'Upravovať stránky po dvojitom kliknutí',
-'tog-editsection' => 'Umožniť upravovanie sekcie prostredníctvom odkazov [upraviť]',
 'tog-editsectiononrightclick' => 'Umožniť upravovanie sekcie pravým kliknutím na nadpisy sekcií',
-'tog-showtoc' => 'Zobrazovať tabuľku s obsahom (pre stránky s viac ako 3 nadpismi)',
 'tog-rememberpassword' => 'Zapamätať si prihlásenie na tomto počítači (najviac $1 {{PLURAL:$1|deň|dni|dní}})',
 'tog-watchcreations' => 'Pridávať stránky, ktoré vytvorím a súbory, ktoré nahrám medzi sledované',
 'tog-watchdefault' => 'Pridávať stránky a súbory, ktoré upravím medzi sledované',
index 2c658c7..9682e61 100644 (file)
@@ -197,9 +197,7 @@ $messages = array(
 'tog-numberheadings' => 'Samodejno številči poglavja',
 'tog-showtoolbar' => 'Prikaži urejevalno orodno vrstico',
 'tog-editondblclick' => 'Omogoči urejanje strani z dvojnim klikom',
-'tog-editsection' => 'Omogoči urejanje delov prek povezav [{{int:editsection}}]',
 'tog-editsectiononrightclick' => 'Omogoči urejanje razdelkov z desnim klikanjem njihovih naslovov',
-'tog-showtoc' => 'Prikaži vsebino (strani z več kot tremi naslovi)',
 'tog-rememberpassword' => 'Zapomni si me v tem brskalniku (za največ $1 {{PLURAL:$1|dan|dneva|dni}})',
 'tog-watchcreations' => 'Vse ustvarjene strani in moje naložene datoteke dodaj na spisek nadzorov',
 'tog-watchdefault' => 'Dodaj na spisek nadzorov vse članke in datoteke, ki sem jih spremenil/-a',
index 13123a2..30ad38d 100644 (file)
@@ -226,9 +226,7 @@ $messages = array(
 'tog-numberheadings' => 'Numëro automatikish titujt',
 'tog-showtoolbar' => 'Trego mjetet e redaktimit (kërkon JavaScript)',
 'tog-editondblclick' => 'Redakto faqet me dopio-klik (kërkon JavaScript)',
-'tog-editsection' => 'Lejo redaktimin e seksioneve me anë të lidhjeve [redakto]',
 'tog-editsectiononrightclick' => 'Lejo redaktimin e seksioneve duke klikuar me të djathtën mbi titullin e seksionit (kërkon JavaScript)',
-'tog-showtoc' => 'Trego tabelën e përmbajtjes (për faqet me më shume se 3 tituj)',
 'tog-rememberpassword' => 'Mbaj mend fjalëkalimin tim në këtë shfletues (më së shumti për $1 {{PLURAL:$1|ditë|ditë}})',
 'tog-watchcreations' => 'Shtoi faqet e krijuara dhe skedat e ngarkuara prej meje tek lista e faqeve nën mbikqyrje',
 'tog-watchdefault' => 'Shto faqet dhe skedat e redaktuara prej meje tek lista e faqeve nën mbikqyrje',
index 2fd2ca9..ef157a4 100644 (file)
@@ -405,9 +405,7 @@ $messages = array(
 'tog-numberheadings' => 'Самостално нумериши поднаслове',
 'tog-showtoolbar' => 'Прикажи траку с алаткама за уређивање',
 'tog-editondblclick' => 'Уређивање страница двоструким кликом',
-'tog-editsection' => 'Везе за уређивање појединачних одељака',
 'tog-editsectiononrightclick' => 'Уређивање одељака десним кликом на њихове наслове',
-'tog-showtoc' => 'Прикажи садржај страница које имају више од три поднаслова',
 'tog-rememberpassword' => 'Запамти ме на овом прегледачу (најдуже $1 {{PLURAL:$1|дан|дана|дана}})',
 'tog-watchcreations' => 'Додај странице које направим и датотеке које пошаљем у списак надгледања',
 'tog-watchdefault' => 'Додај странице и датотеке које изменим у списак надгледања',
@@ -799,6 +797,7 @@ $2',
 'invalidtitle-unknownnamespace' => 'Неисправан наслов с именским простором бр. $1 и текстом „$2“',
 'exception-nologin' => 'Нисте пријављени',
 'exception-nologin-text' => '[[Special:Userlogin|Пријавите се]] да бисте приступили овој страници или радњи.',
+'exception-nologin-text-manual' => 'Морате бити $1 да бисте приступили овој страници или радњи.',
 
 # Virus scanner
 'virus-badscanner' => "Неисправна поставка: непознати скенер за вирусе: ''$1''",
@@ -1502,6 +1501,7 @@ $1",
 'preferences' => 'Подешавања',
 'mypreferences' => 'Подешавања',
 'prefs-edits' => 'Број измена:',
+'prefsnologintext2' => 'Морате бити $1 да бисте мењали своја подешавања.',
 'prefs-skin' => 'Тема',
 'skin-preview' => 'Прегледај',
 'datedefault' => 'Свеједно',
@@ -1912,7 +1912,7 @@ $1",
 'fileexists-forbidden' => 'Датотека с овим називом већ постоји и не може се заменити.
 Ако и даље желите да пошаљете датотеку, вратите се и изаберите други назив.
 [[File:$1|thumb|center|$1]]',
-'fileexists-shared-forbidden' => 'Датотека с овим називом већ постоји у заједничком складишту.
+'fileexists-shared-forbidden' => 'Датотека с овим називом већ постоји у заједничкој остави.
 Вратите се и пошаљите датотеку с другим називом.
 [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Ово је дупликат {{PLURAL:$1|следеће датотеке|следећих датотека}}:',
index ff4380b..bf4ed03 100644 (file)
@@ -316,9 +316,7 @@ $messages = array(
 'tog-numberheadings' => 'Samostalno numeriši podnaslove',
 'tog-showtoolbar' => 'Prikaži traku s alatkama za uređivanje',
 'tog-editondblclick' => 'Uređivanje stranica dvostrukim klikom',
-'tog-editsection' => 'Veze za uređivanje pojedinačnih odeljaka',
 'tog-editsectiononrightclick' => 'Uređivanje odeljaka desnim klikom na njihove naslove',
-'tog-showtoc' => 'Prikaži sadržaj stranica koje imaju više od tri podnaslova',
 'tog-rememberpassword' => 'Zapamti me na ovom pregledaču (najduže $1 {{PLURAL:$1|1=dan|dana}})',
 'tog-watchcreations' => 'Dodaj stranice koje napravim i datoteke koje pošaljem u spisak nadgledanja',
 'tog-watchdefault' => 'Dodaj stranice i datoteke koje izmenim u spisak nadgledanja',
@@ -1788,7 +1786,7 @@ Ukoliko imate ovu sliku u punoj veličini, pošaljite je, a ako nemate, promenit
 'fileexists-forbidden' => 'Datoteka s ovim nazivom već postoji i ne može se zameniti.
 Ako i dalje želite da pošaljete datoteku, vratite se i izaberite drugi naziv.
 [[File:$1|thumb|center|$1]]',
-'fileexists-shared-forbidden' => 'Datoteka s ovim nazivom već postoji u zajedničkom skladištu.
+'fileexists-shared-forbidden' => 'Datoteka s ovim nazivom već postoji u zajedničkoj ostavi.
 Vratite se i pošaljite datoteku s drugim nazivom.
 [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Ovo je duplikat {{PLURAL:$1|sledeće datoteke|sledećih datoteka}}:',
index 9d664c9..360fea2 100644 (file)
@@ -55,9 +55,7 @@ $messages = array(
 'tog-numberheadings' => 'Uurskrifte automatisk nuumerierje',
 'tog-showtoolbar' => 'Beoarbaidengs-Reewen anwiese',
 'tog-editondblclick' => 'Sieden mäd Dubbeldklik beoarbaidje (JavaScript)',
-'tog-editsection' => 'Links toun Beoarbaidjen fon eenpelde Ousatse anwiese',
 'tog-editsectiononrightclick' => 'Eenpelde Ousatse mäd Gjuchtsklik beoarbaidje (JavaScript)',
-'tog-showtoc' => 'Anwiesen fon n Inhooldsferteeknis bie Artikkele mäd moor as 3 Uurskrifte',
 'tog-rememberpassword' => 'Mäd dissen Browser duurhaft ounmälded blieuwe (Maximoal foar $1 {{PLURAL:$1|Dai|Deege}})',
 'tog-watchcreations' => 'Aal do sälwen näi anlaide Sieden beooboachtje',
 'tog-watchdefault' => 'Aal do sälwen annerde Sieden beooboachtje',
index a798107..37e7c6b 100644 (file)
@@ -336,9 +336,7 @@ $messages = array(
 'tog-numberheadings' => 'Automatisk numrerade rubriker',
 'tog-showtoolbar' => 'Visa redigeringsverktygsraden',
 'tog-editondblclick' => 'Redigera sidor med dubbelklick',
-'tog-editsection' => 'Aktivera redigering av avsnitt genom [redigera]-länkar',
 'tog-editsectiononrightclick' => 'Aktivera redigering av avsnitt genom högerklick på underrubriker',
-'tog-showtoc' => 'Visa innehållsförteckning (för sidor med minst fyra rubriker)',
 'tog-rememberpassword' => 'Kom ihåg min inloggning på den här webbläsaren (i maximalt $1 {{PLURAL:$1|dygn|dygn}})',
 'tog-watchcreations' => 'Lägg till sidor jag skapar och filer jag laddar upp till min bevakningslista',
 'tog-watchdefault' => 'Lägg till sidor och filer jag redigerar i min bevakningslista',
@@ -884,6 +882,8 @@ Om du väljer att ange det, kommer det användas för att tillskriva användaren
 'retypenew' => 'Upprepa det nya lösenordet:',
 'resetpass_submit' => 'Ange lösenord och logga in',
 'changepassword-success' => 'Ditt lösenord har ändrats!',
+'changepassword-throttled' => 'Du har gjort för många misslyckade inloggningsförsök.
+Vänta $1 innan du försöker igen.',
 'resetpass_forbidden' => 'Lösenord kan inte ändras',
 'resetpass-no-info' => 'Du måste vara inloggad för att komma åt den här sidan direkt.',
 'resetpass-submit-loggedin' => 'Ändra lösenord',
@@ -935,6 +935,8 @@ Tillfälligt lösenord: $2',
 'changeemail-password' => 'Ditt lösenord till {{SITENAME}}:',
 'changeemail-submit' => 'Ändra e-post',
 'changeemail-cancel' => 'Avbryt',
+'changeemail-throttled' => 'Du har gjort för många inloggningsförsök.
+Vänta $1 innan du försöker igen.',
 
 # Special:ResetTokens
 'resettokens' => 'Återställ nycklar',
@@ -2519,7 +2521,7 @@ Se $2 för noteringar om de senaste raderingarna.',
 # Rollback
 'rollback' => 'Rulla tillbaka ändringar',
 'rollback_short' => 'Tillbakarullning',
-'rollbacklink' => 'tillbakarullning',
+'rollbacklink' => 'rulla tillbaka',
 'rollbacklinkcount' => 'rulla tillbaka $1 {{PLURAL:$1|redigering|redigeringar}}',
 'rollbacklinkcount-morethan' => 'rulla tillbaka mer än $1 {{PLURAL:$1|redigering|redigeringar}}',
 'rollbackfailed' => 'Tillbakarullning misslyckades',
@@ -4224,4 +4226,7 @@ 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
+'createaccount-hook-aborted' => '$1',
+'uploadinvalidxml' => 'XML-koden i den uppladdade filen kunde inte tolkas.',
 );
index 008b0d8..6b7b50c 100644 (file)
@@ -76,9 +76,7 @@ $messages = array(
 'tog-numberheadings' => 'Automatyczno numeracyjo titlůw',
 'tog-showtoolbar' => 'Pokoż gurt werkcojgůw (JavaScript)',
 'tog-editondblclick' => 'Edycyjo napoczynajům dwa klikńyńća (JavaScript)',
-'tog-editsection' => 'Kożdo tajla zajty sprowjano uosobno',
 'tog-editsectiononrightclick' => 'Klikńyńće prawym kneflym myszy na titlu tajli<br />napoczyno jigo sprowjańy(JavaScript)',
-'tog-showtoc' => 'Pokoż spis treśći (na zajtach, kere majům wjyncyj kej trzi tajle)',
 'tog-rememberpassword' => 'Pamjyntej můj ausdruk na tym kůmputrze (nojdalij bez $1 {{PLURAL:$1|dźyń|dńůw}})',
 'tog-watchcreations' => 'Dowům pozůr na zajty, kere żech naszkryfloł',
 'tog-watchdefault' => 'Dowům pozůr na zajty, kere żech sprowjoł',
index 05c0b60..0cf0f06 100644 (file)
@@ -97,9 +97,7 @@ $messages = array(
 'tog-numberheadings' => 'தலைப்புகளுக்கு தானியங்கி இலக்கமிடு',
 'tog-showtoolbar' => 'கருவிப்பட்டையைக் காட்டு',
 'tog-editondblclick' => 'இரட்டைச் சொடுக்கில் பக்கங்களைத் தொகு',
-'tog-editsection' => '(தொகு) இணைப்புகளின் வழியாக பிரிவுத் தொகுத்தலை செயலாக்கவும்',
 'tog-editsectiononrightclick' => 'பிரிவுத் தலைப்பின் மீது வலச் சொடுக்குவதன் மூலம் பகுதித்  தொகுப்பை செயலாக்கவும்',
-'tog-showtoc' => 'பொருளடக்க பட்டியலைக் காண்பி (மூன்றுக்கு மேற்பட்ட தலைப்புகளையுடைய கட்டுரைகளுக்கு)',
 'tog-rememberpassword' => 'எனது புகுபதிகை பற்றிய விவரங்களை இவ்வுலாவியில் (மிக அதிகமாக $1 {{PLURAL:$1|நாள்|நாட்கள்}}) வரை நினைவில் வைத்திருக்கவும்.',
 'tog-watchcreations' => 'நான் உருவாக்கும் பக்கங்கள் மற்றும் பதிவேற்றும் கோப்புகளை எனது கவனிப்புப் பட்டியலில் சேர்க்கவும்.',
 'tog-watchdefault' => 'நான் தொகுக்கும் பக்கங்கள் மற்றும் கோப்புகளை என் கவனிப்புப் பட்டியலில் சேர்',
index 844d677..f114ce8 100644 (file)
@@ -153,9 +153,7 @@ $messages = array(
 'tog-numberheadings' => 'శీర్షికలకు అప్రమేయంగా వరుస సంఖ్యలు చేర్చు',
 'tog-showtoolbar' => 'దిద్దుబాటు పనిముట్ల పట్టీని చూపించు',
 'tog-editondblclick' => 'డబుల్‌ క్లిక్కు చేసినప్పుడు పేజీని మార్చు',
-'tog-editsection' => '[మార్చు] లింకు ద్వారా విభాగం మార్పు చేతనం',
 'tog-editsectiononrightclick' => 'విభాగాల శీర్షికల మీద కుడినొక్కుతో విభాగపు దిద్దుబాటును చేతనంచేయి',
-'tog-showtoc' => 'విషయసూచిక చూపించు (3 కంటే ఎక్కువ శీర్షికలున్న పేజీలకు)',
 'tog-rememberpassword' => 'ఈ విహారిణిలో నా ప్రవేశాన్ని గుర్తుంచుకో (గరిష్ఠంగా $1 {{PLURAL:$1|రోజు|రోజుల}}కి)',
 'tog-watchcreations' => 'నేను సృష్టించే పేజీలను మరియు దస్త్రాలను నా వీక్షణ జాబితాకు చేర్చు',
 'tog-watchdefault' => 'నేను మార్చే పేజీలను మరియు దస్త్రాలను నా వీక్షణ జాబితాకు చేర్చు',
index 3558c90..a8cca54 100644 (file)
@@ -206,9 +206,7 @@ $messages = array(
 'tog-numberheadings' => 'ใส่เลขหัวข้อในสารบัญอัตโนมัติ',
 'tog-showtoolbar' => 'แสดงแถบเครื่องมือแก้ไข',
 'tog-editondblclick' => 'แก้ไขหน้าเมื่อดับเบิลคลิก',
-'tog-editsection' => 'เปิดการแก้ไขเฉพาะส่วนผ่านลิงก์ [แก้ไข]',
 'tog-editsectiononrightclick' => 'เปิดใช้งานการแก้ไขเฉพาะส่วนโดยคลิกขวาที่หัวข้อ',
-'tog-showtoc' => 'แสดงสารบัญ (สำหรับหน้าที่มีมากกว่า 3 หัวข้อ)',
 'tog-rememberpassword' => 'จำการล็อกอินของฉันในเบราว์เซอร์นี้ (สูงสุด $1 วัน)',
 'tog-watchcreations' => 'เพิ่มหน้าที่ฉันสร้างและไฟล์ที่ฉันอัปโหลดเข้ารายการเฝ้าดู',
 'tog-watchdefault' => 'เพิ่มหน้าและไฟล์ที่ฉันแก้ไขเข้ารายการเฝ้าดู',
@@ -565,7 +563,7 @@ $1',
 'actionthrottled' => 'การกระทำนี้ถูกระงับไว้ชั่วคราว',
 'actionthrottledtext' => 'เพื่อเป็นมาตรการป้องกันสแปม คุณจึงถูกจำกัดมิให้กระทำสิ่งนี้ไม่ให้ติดต่อกันหลายครั้งเกินไปในช่วงระยะเวลาสั้น ๆ ซึ่งขณะนี้คุณได้กระทำเกินขีดจำกัดแล้ว กรุณารอสักครู่แล้วลองอีกครั้ง',
 'protectedpagetext' => 'หน้านี้ถูกป้องกันมิให้แก้ไขหรือปฏิบัติการอื่น',
-'viewsourcetext' => 'à¸\84ุà¸\93สามารà¸\96à¸\94ูà¹\81ละà¸\84ัà¸\94ลอà¸\81à¹\82à¸\84à¹\89à¸\94หà¸\99à¹\89าà¸\99ีà¹\89à¹\84à¸\94้:',
+'viewsourcetext' => 'à¸\84ุà¸\93สามารà¸\96à¸\94ูà¹\81ละà¸\84ัà¸\94ลอà¸\81à¹\82à¸\84à¹\89à¸\94à¸\82อà¸\87หà¸\99à¹\89าà¸\99ี้:',
 'viewyourtext' => "คุณสามารถดูและคัดลอกต้นฉบับ'''การแก้ไขของคุณ'''ในหน้านี้ได้",
 'protectedinterface' => 'หน้านี้เป็นข้อความอินเตอร์เฟซสำหรับซอฟต์แวร์บนวิกินี้ และถูกป้องกันเพื่อมิให้มีการกระทำผิด
 ในการเพิ่มหรือเปลี่ยนแปลงการแปลสำหรับทุกวิกิ โปรดใช้ [//translatewiki.net/ translatewiki.net] โครงการแปลมีเดียวิกิเป็นภาษาถิ่น',
@@ -1203,7 +1201,7 @@ $1",
 'difference-title-multipage' => 'ผลต่างระหว่างหน้า "$1" และ "$2"',
 'difference-multipage' => '(ผลต่างระหว่างหน้า)',
 'lineno' => 'แถว $1:',
-'compareselectedversions' => 'à¹\80à¸\9bรียà¸\9aà¹\80à¸\97ียà¸\9aสอà¸\87รุà¹\88à¸\99à¸\97ีà¹\88à¹\80ลือà¸\81',
+'compareselectedversions' => 'à¹\80à¸\9bรียà¸\9aà¹\80à¸\97ียà¸\9aรุà¹\88à¸\99à¸\97ีà¹\88à¹\80ลือà¸\81à¹\84วà¹\89',
 'showhideselectedversions' => 'แสดง/ซ่อนรุ่นที่เลือก',
 'editundo' => 'ย้อน',
 'diff-empty' => '(ไม่แตกต่าง)',
@@ -2155,7 +2153,7 @@ $1',
 'emailpagetext' => 'คุณสามารถใช้แบบด้านล่างส่งอีเมลหา{{GENDER:$1|ผู้ใช้}}นี้
 ที่อยู่อีเมลที่คุณกรอกใน[[Special:Preferences|การตั้งค่าส่วนตัวของคุณ]]จะปรากฏเป็นที่อยู่ "จาก" ของอีเมล ซึ่งผู้รับสามารถตอบกลับคุณได้โดยตรง',
 'usermailererror' => 'การส่งอีเมลผิดพลาด:',
-'defemailsubject' => 'อีเมล {{SITENAME}} จากผู้ใช้ "$1"',
+'defemailsubject' => 'อีเมล{{SITENAME}}จากผู้ใช้ "$1"',
 'usermaildisabled' => 'ปิดใช้งานการส่งอีเมลหาผู้ใช้',
 'usermaildisabledtext' => 'คุณไม่สามารถส่งอีเมลหาผู้ใช้อื่นบนวิกินี้',
 'noemailtitle' => 'ไม่มีที่อยู่อีเมล',
@@ -2188,7 +2186,7 @@ $1',
 'watchlistfor2' => 'สำหรับ $1 $2',
 'nowatchlist' => 'ไม่มีรายการในรายการเฝ้าดูของคุณ',
 'watchlistanontext' => 'กรุณา$1เพื่อดูหรือแก้ไขรายการในรายการเฝ้าดูของคุณ',
-'watchnologin' => 'ไม่ได้ล็อกอิน',
+'watchnologin' => 'ยัà¸\87à¹\84มà¹\88à¹\84à¸\94à¹\89ลà¹\87อà¸\81อิà¸\99',
 'watchnologintext' => 'ต้อง[[Special:UserLogin|ล็อกอิน]]เพื่อแก้ไขรายการเฝ้าดูของคุณ',
 'addwatch' => 'เพิ่มเข้ารายการเฝ้าดู',
 'addedwatchtext' => 'หน้า "[[:$1]]" ได้เพิ่มลงใน[[Special:Watchlist|รายการเฝ้าดู]]ของคุณแล้ว การเปลี่ยนแปลงในหน้านี้หรือหน้าพูดคุยที่เกี่ยวข้องจะแสดงในรายการดังกล่าว',
@@ -2265,7 +2263,7 @@ $UNWATCHURL
 'deletepage' => 'ลบหน้า',
 'confirm' => 'ยืนยัน',
 'excontent' => "เนื้อหาเดิม: '$1'",
-'excontentauthor' => "เนื้อหาเดิม: '$1' (และมีผู้เขียนคนเดียว คือ '[[Special:Contributions/$2|$2]]')",
+'excontentauthor' => "เนื้อหาเดิม: '$1' (และมีผู้เขียนคนเดียวคือ '[[Special:Contributions/$2|$2]]')",
 'exbeforeblank' => "เนื้อหาก่อนถูกทำว่างคือ: '$1'",
 'exblank' => 'หน้าว่าง',
 'delete-confirm' => 'ลบ "$1"',
@@ -3407,7 +3405,7 @@ $1',
 'monthsall' => 'ทั้งหมด',
 
 # Email address confirmation
-'confirmemail' => 'ยืนยันอีเมล',
+'confirmemail' => 'ยืà¸\99ยัà¸\99à¸\97ีà¹\88อยูà¹\88อีà¹\80มล',
 'confirmemail_noemail' => 'ไม่ได้ใส่อีเมลในส่วน [[Special:Preferences|การตั้งค่าส่วนตัว]]',
 'confirmemail_text' => '{{SITENAME}} กำหนดให้คุณตรวจสอบความสมเหตุสมผลของที่อยู่อีเมลของคุณก่อนใช้คุณลักษณะอีเมล
 เปิดใช้งานปุ่มด้านล่างเพื่อส่งเมลยืนยันไปยังที่อยู่ของคุณ
@@ -3569,7 +3567,7 @@ $5
 เมื่อเสร็จแล้ว ให้กด "{{int:Watchlistedit-raw-submit}}" 
 ซึ่งอาจแก้ไขผ่าน [[Special:EditWatchlist|โปรแกรมแก้ไขข้อความทั่วไป]]',
 'watchlistedit-raw-titles' => 'ชื่อเรื่อง:',
-'watchlistedit-raw-submit' => 'ปรับรายการเฝ้าดู',
+'watchlistedit-raw-submit' => 'à¸\9bรัà¸\9aà¸\9bรุà¸\87รายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ู',
 'watchlistedit-raw-done' => 'รายการเฝ้าดูของคุณได้ปรับแล้ว',
 'watchlistedit-raw-added' => '$1 ชื่อเรื่องได้ถูกเพิ่มเข้าไป:',
 'watchlistedit-raw-removed' => '$1 ชื่อเรื่องได้ถูกนำออกไป:',
index 24a11aa..1125b99 100644 (file)
@@ -49,9 +49,7 @@ $messages = array(
 'tog-numberheadings' => 'Atlary awtomatik usulda belgile',
 'tog-showtoolbar' => 'Redaktirleme mahalynda gural panelini görkez (JavaScript)',
 'tog-editondblclick' => 'Sahypany jübüt tyklap, redaktirläp başla (JavaScript)',
-'tog-editsection' => 'Her bir bölümde [redaktirle] çykgydyny görkez',
 'tog-editsectiononrightclick' => 'Bölümleri bölümiň adyna sag tyklap redaktirlemäge mümkinçilik döret (JavaScript)',
-'tog-showtoc' => 'Mazmun tablisasyny görkez (3 sanydan köp ady bar bolan sahypalar üçin)',
 'tog-rememberpassword' => 'Sessiýamy şu brauzerde ýatda sakla  (iň köp $1 {{PLURAL:$1|günläp|günläp}})',
 'tog-watchcreations' => 'Döreden sahypalarymy gözegçilik sanawyma goş',
 'tog-watchdefault' => 'Redaktirlän sahypalarymy gözegçilik sanawyma goş',
index 83e19da..9ff45b2 100644 (file)
@@ -158,9 +158,7 @@ $messages = array(
 'tog-numberheadings' => 'Automatikong bilangin ang mga pamagat',
 'tog-showtoolbar' => "Ipakita ang ''toolbar'' ng pagbabago (JavaScript)",
 'tog-editondblclick' => 'Magbago ng mga pahina sa dalawahang pagpindot (JavaScript)',
-'tog-editsection' => 'Payagan ang mga pagbabagong panseksyon sa mga [baguhin] na kawing',
 'tog-editsectiononrightclick' => 'Payagan ang mga pagbabagong panseksyon sa pakanang pagpindot ng mga panseksyong pamagat (JavaScript)',
-'tog-showtoc' => 'Ipakita ang talaan ng mga nilalaman (sa mga pahinang may higit sa 3 punong pamagat)',
 'tog-rememberpassword' => 'Tandaan ang paglagda ko sa panghanaphanap na ito (pinakamarami na ang $1 {{PLURAL:$1|araw|mga araw}})',
 'tog-watchcreations' => 'Idagdag sa aking tala ng mga binabantayan ang mga pahinang nilikha ko at mga talaksang ikinarga kong paitaas',
 'tog-watchdefault' => 'Idagdag sa aking tala ng mga binabantayan ang mga pahina at mga talaksang binago ko',
index 96ab664..8a9d50d 100644 (file)
@@ -366,9 +366,7 @@ $messages = array(
 'tog-numberheadings' => 'Başlıkları otomatik numaralandır',
 'tog-showtoolbar' => 'Düzenleme araç çubuğunu göster',
 'tog-editondblclick' => 'Çift tıklayarak sayfaları düzenle',
-'tog-editsection' => 'Bölümleri [{{int:Editsection}}] bağlantıları ile düzenlemeyi etkinleştir',
 'tog-editsectiononrightclick' => 'Bölüm başlığına sağ tıklayarak bölümleri düzenleyebilme olanağı ver',
-'tog-showtoc' => 'İçindekiler tablosunu göster (3 taneden fazla başlığı olan sayfalar için)',
 'tog-rememberpassword' => 'Girişimi bu tarayıcıda hatırla (en fazla $1 {{PLURAL:$1|gün|gün}} için)',
 'tog-watchcreations' => 'Açtığım sayfaları ve yüklediğim dosyaları izleme listeme ekle',
 'tog-watchdefault' => 'Düzenleme yaptığım sayfaları izleme listeme ekle',
@@ -913,6 +911,8 @@ Girişi bitirmek için, burada yeni bir parola yazın:',
 'retypenew' => 'Yeni parolayı tekrar girin',
 'resetpass_submit' => 'Şifreyi ayarlayın ve oturum açın',
 'changepassword-success' => 'Parolanız başarıyla değiştirildi!',
+'changepassword-throttled' => 'Çok fazla yeni oturum açma girişiminde bulundunuz.
+Lütfen tekrar denemeden önce $1 bekleyin.',
 'resetpass_forbidden' => 'Parolalar değiştirilememektedir',
 'resetpass-no-info' => 'Bu sayfaya doğrudan erişmek için oturum açmanız gereklidir.',
 'resetpass-submit-loggedin' => 'Parolayı değiştir',
@@ -958,13 +958,15 @@ Geçici şifre: $2',
 'changeemail' => 'E-posta adresini değiştir',
 'changeemail-header' => 'Hesabın e-posta adresini değiştirin',
 'changeemail-text' => 'E-posta adresinizi değiştirmek için bu formu doldurun. Değişikliği onaylamak için parolanızı girmeniz gerekecektir.',
-'changeemail-no-info' => 'Bu sayfaya doğrudan ulaşabilmek için oturum açmış olmalısınız.',
+'changeemail-no-info' => 'Bu sayfaya doğrudan erişmek için oturum açmanız gereklidir.',
 'changeemail-oldemail' => 'Mevcut E-posta adresi:',
 'changeemail-newemail' => 'Yeni E-posta adresi:',
 'changeemail-none' => '(yok)',
 'changeemail-password' => '{{SITENAME}} parolanız:',
 'changeemail-submit' => "E-posta'yı değiştir",
 'changeemail-cancel' => 'İptal',
+'changeemail-throttled' => 'Çok fazla oturum açma girişiminde bulundunuz.
+Lütfen tekrar denemeden önce $1 bekleyin.',
 
 # Special:ResetTokens
 'resettokens' => 'Anahtarları sıfırla',
@@ -1055,7 +1057,7 @@ Lütfen yapacağınız herhangi bir sorguda yukarıdaki bütün detayları bulun
 Siz sayfayı görüntülerken taşınmış veya silinmiş olabilir.',
 'loginreqtitle' => 'Oturum açmanız gerekiyor',
 'loginreqlink' => 'oturum aç',
-'loginreqpagetext' => 'Diğer sayfaları görmek için $1 olmalısınız.',
+'loginreqpagetext' => 'Diğer sayfaları görmek için $1 .',
 'accmailtitle' => 'Parola gönderildi.',
 'accmailtext' => "[[User talk:$1|$1]] için rastgele oluşturulan parola $2 adresine gönderildi.
 
index 1a2e627..97dd6b4 100644 (file)
@@ -58,9 +58,7 @@ $messages = array(
 'tog-numberheadings' => 'ماۋزۇغا ئۆزلۈكىدىن تەرتىپ نومۇرى قوش',
 'tog-showtoolbar' => 'تەھرىر قورال بالداقنى كۆرسەت',
 'tog-editondblclick' => 'قوش چەككەندە بەت تەھرىرلە',
-'tog-editsection' => '[تەھرىر] ئۇلانمىسىنى چېكىپ ئابزاس تەھرىرلەشكە يول قوي',
 'tog-editsectiononrightclick' => 'تېمىنى ئوڭ چېكىپ ئابزاس تەھرىرلەشكە يول قوي',
-'tog-showtoc' => 'مەزمۇن جەدۋىلى كۆرسەت (بىر بەتتە 3 تىن ئارتۇق ماۋزۇ بار بەتكە قارىتىلغان)',
 'tog-rememberpassword' => 'بۇ كومپيۇتېردا كىرگىنىمنى ئەستە ساقلا(ئەڭ ئۇزۇن بولغاندا $1 {{PLURAL:$1|كۈن|كۈن}})',
 'tog-watchcreations' => 'مەن قۇرغان بەت ۋە يۈكلىگەن ھۆججەتلەرنى كۆزەت تىزىملىكىمگە قوش',
 'tog-watchdefault' => 'مەن تەھرىرلىگەن بەت ۋە ھۆججەتنى كۆزەت تىزىملىكىمگە قوش',
index c3cb510..6e592a0 100644 (file)
@@ -377,9 +377,7 @@ $messages = array(
 'tog-numberheadings' => 'Автоматично нумерувати заголовки',
 'tog-showtoolbar' => 'Показувати панель інструментів',
 'tog-editondblclick' => 'Редагувати сторінки при подвійному клацанні мишкою',
-'tog-editsection' => 'Показувати посилання [ред.] для кожного розділу',
 'tog-editsectiononrightclick' => 'Редагувати розділи при клацанні правою кнопкою мишки на заголовку',
-'tog-showtoc' => 'Показувати зміст (для сторінок з більш ніж трьома заголовками)',
 'tog-rememberpassword' => "Запам'ятати мій обліковий запис для цього браузера (на строк не більше $1 {{PLURAL:$1|1=дня|днів}})",
 'tog-watchcreations' => 'Додавати створені мною сторінки і завантажені мною файли до мого списку спостереження',
 'tog-watchdefault' => 'Додавати змінені мною сторінки та файли до мого списку спостереження',
@@ -934,6 +932,8 @@ $1',
 'retypenew' => 'Ще раз введіть новий пароль:',
 'resetpass_submit' => 'Установити пароль і ввійти',
 'changepassword-success' => 'Ваш пароль успішно змінено!',
+'changepassword-throttled' => 'Ви нещодавно зробили надто багато спроб ввійти до системи.
+Будь ласка, зачекайте $1 перед повторною спробою.',
 'resetpass_forbidden' => 'Пароль не можна змінювати',
 'resetpass-no-info' => 'Щоб звертатися безпосередньо до цієї сторінки, вам слід увійти до системи.',
 'resetpass-submit-loggedin' => 'Змінити пароль',
@@ -985,6 +985,8 @@ $2
 'changeemail-password' => 'Ваш пароль проекту {{SITENAME}}:',
 'changeemail-submit' => 'Змінити адресу електронної пошти',
 'changeemail-cancel' => 'Скасувати',
+'changeemail-throttled' => 'Ви зробили надто багато спроб ввійти до системи.
+Будь ласка, зачекайте $1 перед повторною спробою.',
 
 # Special:ResetTokens
 'resettokens' => 'Скидання жетонів',
@@ -2589,7 +2591,7 @@ $UNWATCHURL
 'delete-warning-toobig' => 'У цієї сторінки дуже довга історія редагувань, більше $1 {{PLURAL:$1|версії|версій|версій}}.
 Її вилучення може призвести до порушень у роботі бази даних сайту {{SITENAME}};
 дійте обережно.',
-'deleting-backlinks-warning' => "'''Ð\9fопеÑ\80едженнÑ\8f:''' Ñ\96нÑ\88Ñ\96 Ñ\81Ñ\82оÑ\80Ñ\96нки Ð¿Ð¾Ñ\81илаÑ\8eÑ\82Ñ\8cÑ\81Ñ\8f Ð½Ð° сторінку, яку ви маєте намір видалити.",
+'deleting-backlinks-warning' => "'''Ð\9fопеÑ\80едженнÑ\8f:''' Ñ\96нÑ\88Ñ\96 Ñ\81Ñ\82оÑ\80Ñ\96нки Ð¿Ð¾Ñ\81илаÑ\8eÑ\82Ñ\8cÑ\81Ñ\8f Ð°Ð±Ð¾ Ð¼Ñ\96Ñ\81Ñ\82Ñ\8fÑ\82Ñ\8c сторінку, яку ви маєте намір видалити.",
 
 # Rollback
 'rollback' => 'Відкинути редагування',
@@ -4467,5 +4469,6 @@ MediaWiki поширюється в надії, що вона буде кори
 'expand_templates_preview' => 'Попередній перегляд',
 
 # Unknown messages
+'createaccount-hook-aborted' => ' $1',
 'uploadinvalidxml' => 'Не вдалося проаналізувати XML у завантаженому файлі.',
 );
index d24d5d9..0890cbc 100644 (file)
@@ -121,9 +121,7 @@ $messages = array(
 'tog-numberheadings' => 'Sarlavhalarni avtomatik raqamlash',
 'tog-showtoolbar' => 'Tahrirlash asboblari joylashgan yoʻlakchani koʻrsatish (JavaScript orqali)',
 'tog-editondblclick' => 'Sichqoncha tugmasini ikki marta bosish orqali tahrirlashni boshlash',
-'tog-editsection' => '[tahrir] havolasini har bir boʻlim boshida koʻrsatish',
 'tog-editsectiononrightclick' => 'Boʻlim sarlavhasiga sichqonchaning oʻng tugmasi bilan bosib tahrirlashni boshlash',
-'tog-showtoc' => 'Mundarijani koʻrsatish (3 tadan koʻproq sarlavha bor sahifalarda)',
 'tog-rememberpassword' => 'Hisob ma’lumotlarim ushbu brauzerda eslab qolinsin (ko‘pi bilan $1 kunga)',
 'tog-watchcreations' => 'Men yaratgan sahifalarni va yuklagan fayllarni kuzatuv roʻyxatimga qoʻsh',
 'tog-watchdefault' => 'Men tahrirlagan sahifa va fayllarni kuzatuv roʻyxatimga qoʻsh',
@@ -452,6 +450,7 @@ Shuni e'tiborga olingki, ayrim sahifalar siz brauzeringiz keshini tozalamaguning
 'yourname' => 'Foydalanuvchi nomi:',
 'userlogin-yourname' => 'Foydalanuvchi nomi',
 'userlogin-yourname-ph' => 'Foydalanuvchi nomingizni kiriting',
+'createacct-another-username-ph' => 'Foydalanuvchi nomingizni kiriting',
 'yourpassword' => 'Maxfiy soʻz:',
 'userlogin-yourpassword' => 'Maxfiy soʻz',
 'userlogin-yourpassword-ph' => 'Maxfiy soʻzni kiriting',
@@ -482,14 +481,20 @@ Shuni e'tiborga olingki, ayrim sahifalar siz brauzeringiz keshini tozalamaguning
 'userlogin-resetlink' => 'Kirish maʻlumotlaringiz esdan chiqdimi?',
 'userlogin-resetpassword-link' => 'Unutib qoʻydingizmi?',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Kirish uchun yordam]]',
+'userlogin-loggedin' => 'Siz {{GENDER:$1|$1}} nomi bilan kirgansiz.
+Boshqa hisob raqami orqali kirish uchun quyidagi formadan foydalaning.',
+'userlogin-createanother' => 'Boshqa hisob yaratish',
 'createacct-join' => 'Maʼlumotlaringizni quyiga yozing',
+'createacct-another-join' => 'Yangi hisob yozuvi maʼlumotlarini quyida koʻrsating.',
 'createacct-emailoptional' => 'Elektron pochta manzili (majburiy emas)',
 'createacct-email-ph' => 'Elektron pochtangiz manzilini kiriting',
-'createaccountmail' => 'Vaqtinchalik maxfiy soʻzni koʻrsatilgan elektron pochta manzilimga joʻnatish',
+'createacct-another-email-ph' => 'Elektron pochta manzilini kiriting',
+'createaccountmail' => 'Tasodifan tanlab beriladigan vaqtinchalik maxfiy soʻzdan foydalanish (elektron pochta manzilingizga joʻnatiladi)',
 'createaccountreason' => 'Sabab:',
 'createacct-captcha' => 'Xavfsizlik tekshiruvi',
 'createacct-imgcaptcha-ph' => 'Yuqoridagi yozuvni bu yerga kiriting',
 'createacct-submit' => 'Hisob yaratish',
+'createacct-another-submit' => 'Boshqa hisob yaratish',
 'createacct-benefit-heading' => '{{SITENAME}} Sizga oʻxshagan odamlar tomonidan yaratiladi',
 'createacct-benefit-body1' => 'tahrirlar soni',
 'createacct-benefit-body2' => 'maqolalar soni',
@@ -505,7 +510,7 @@ Ism yozilishini tekshirib koʻring.',
 'login-userblocked' => 'Bu foydalanuvchi chetlatilgan. Tizimga kirishga ruxsat yoʻq.',
 'wrongpassword' => 'Kiritgan mahfiy soʻzingiz notoʻgʻri. Iltimos, qaytadan kiritib koʻring.',
 'wrongpasswordempty' => 'Maxfiy soʻz koʻrsatilmagan. Qaytadan urinib koʻring.',
-'mailmypassword' => 'Yangi maxfiy soʻzni elektron pochta orqali joʻnatish',
+'mailmypassword' => 'Maxfiy soʻzni yangilash',
 'passwordremindertitle' => "{{SITENAME}} uchun vaqtinchalik yangi maxfiy so'z",
 'emailauthenticated' => 'Sizning elektron pochta manzilingiz $2, $3 da tasdiqlangan.',
 'emailconfirmlink' => 'Sizning elektron pochta manzilingizni tasdiqlash',
@@ -529,7 +534,7 @@ Ism yozilishini tekshirib koʻring.',
 # Special:PasswordReset
 'passwordreset' => 'Maxfiy soʻzni yangilash',
 'passwordreset-text-one' => 'Mahfiy soʻzni tashlash uchun ushbu oynalarni toʻltiring.',
-'passwordreset-text-many' => '{{PLURAL:$1|Maxfiy soʻzni yangilash uchun quyidagi oynalardan birini toʻldiring.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Quyidagi oynalardan birini toʻldirsangiz, elektron pochtangizga vaqtinchalik maxfiy soʻz joʻnatiladi.}}',
 'passwordreset-legend' => 'Maxfiy soʻzni yangilash',
 'passwordreset-username' => 'Foydalanuvchi nomi:',
 'passwordreset-domain' => 'Domen:',
@@ -538,7 +543,7 @@ Ism yozilishini tekshirib koʻring.',
 Vaqtinchalik maxfiy so'z: $2",
 
 # Special:ChangeEmail
-'changeemail' => "Elektron pochta manzilini o'zgartirish",
+'changeemail' => 'Elektron pochta manzilini oʻzgartirish',
 'changeemail-header' => "Elektron pochta manzilini o'zgaritish",
 'changeemail-oldemail' => 'Joriy elektron pochta manzili',
 'changeemail-newemail' => 'Elektron pochtaning yangi manzili',
@@ -1289,7 +1294,7 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'rollbacklinkcount' => '$1 ta tahrirni ortga qaytarish',
 'rollbacklinkcount-morethan' => '$1 {{PLURAL:$1| tadan koʻp tahrir}}ni eski holiga keltirish',
 'rollbackfailed' => 'Eski holiga keltirishda xatolik',
-'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|munozara]]) tahrirlari [[User:$1|$1]] versiyasiga qaytarildi',
+'revertpage' => '[[Special:Contributions/$2|$2]] tahrirlari [[User:$1|$1]] versiyasiga qaytarildi',
 
 # Edit tokens
 'sessionfailure-title' => 'Seansda xatolik',
@@ -1700,8 +1705,8 @@ Umumiy omborda [[:$1]] mavjud. Faylning bu nomga qayta nomlanishi faylning umumi
 'logentry-move-move' => '$1 $3 sahifasini $4ga koʻchirdi',
 'logentry-move-move-noredirect' => '$1 $3 sahifasini $4ga {{GENDER:$2|koʻchirdi}}',
 'logentry-patrol-patrol-auto' => '$1 $3 sahifasining $4 versiyasini avtomatik patrulladi',
-'logentry-newusers-newusers' => '$1 hisob yozuvi yaratildi',
-'logentry-newusers-create' => '$1 hisob yozuvi yaratildi',
+'logentry-newusers-newusers' => '$1 hisob yozuvi {{GENDER:$2|yaratildi}}',
+'logentry-newusers-create' => '$1 hisob yozuvi {{GENDER:$2|yaratildi}}',
 'logentry-newusers-autocreate' => '$1 hisob yozuvi avtomatik ravishda {{GENDER:$2|yaratilgan}}',
 'logentry-rights-rights' => '$1 $3ning guruhlardagi aʼzoligini $4dan $5ga {{GENDER:$2|oʻzgartirdi}}',
 'logentry-rights-rights-legacy' => '$1 $3ning guruhlardagi aʼzoligini oʻzgartirdi',
index 7e42482..06a12e7 100644 (file)
@@ -170,9 +170,7 @@ $messages = array(
 'tog-numberheadings' => 'Numerasion automatega de i titołi de sesion',
 'tog-showtoolbar' => 'Mostra ła bara de i strumenti de modifega (el richiede JavaScript)',
 'tog-editondblclick' => 'Modifega de łe pajine tramite dopio clic (el richiede JavaScript)',
-'tog-editsection' => 'Modifega de łe sesion tramite el cołegamento [modifega]',
 'tog-editsectiononrightclick' => 'Modifega de łe sesion tramite clic destro sol titoło (el richiede JavaScript)',
-'tog-showtoc' => "Mostra l'indexe par łe pajine con pì de 3 sesion",
 'tog-rememberpassword' => 'Tiente in mente la me password so sto computer (par un massimo de $1 {{PLURAL:$1|zorno|zorni}})',
 'tog-watchcreations' => "Xonta łe pàjine creae e i file cargai a łe tegnùe d'ocio",
 'tog-watchdefault' => "Xonta łe pàjine e i file modifegai a łe tegnùe d'ocio",
index 21c3e90..75374d3 100644 (file)
@@ -99,9 +99,7 @@ $messages = array(
 'tog-numberheadings' => 'Nomeruida avtomatižikš pälkirjutesed',
 'tog-showtoolbar' => "Ozutada redaktiruindan panel'",
 'tog-editondblclick' => 'Redaktiruida lehtpoled kaksitadud plokul',
-'tog-editsection' => 'Ozutada "Redaktiruida"-kosketuz kaikuččen sekcijan täht',
 'tog-editsectiononrightclick' => 'Redaktiruida sekcijad hiren oiktal plokul pälkirjutesele',
-'tog-showtoc' => 'Ozutada südäiolend (lehtpoled, kudambil om enamba, mi 3 pälkirjutest)',
 'tog-rememberpassword' => 'Muštta minun kävutajan nimi neciš kompjuteras (enintään $1 {{PLURAL:$1|päivä|päivää}})',
 'tog-watchcreations' => 'Ližata kaik minai sätud lehtpoled da failad minun kaclendkirjuteshe',
 'tog-watchdefault' => 'Ližata kaik minai toižetadud lehtpoled da failad minun kaclendkirjuteshe',
index d24722c..e2aa15f 100644 (file)
@@ -27,6 +27,7 @@
  * @author Vietbio
  * @author Vinhtantran
  * @author Vương Ngân Hà
+ * @author Withoutaname
  * @author לערי ריינהארט
  */
 
@@ -347,9 +348,7 @@ $messages = array(
 'tog-numberheadings' => 'Tự động đánh số các đề mục',
 'tog-showtoolbar' => 'Hiển thị thanh định dạng',
 'tog-editondblclick' => 'Nhấn đúp để sửa đổi trang',
-'tog-editsection' => 'Cho phép sửa đổi đề mục qua liên kết [sửa]',
 'tog-editsectiononrightclick' => 'Bấm chuột phải vào đề mục để sửa đổi phần trang',
-'tog-showtoc' => 'Hiển thị mục lục (cho trang có trên 3 đề mục)',
 'tog-rememberpassword' => 'Nhớ thông tin đăng nhập của tôi trong trình duyệt này (cho đến $1 ngày)',
 'tog-watchcreations' => 'Tự động theo dõi các trang tôi viết mới và các tập tin tôi tải lên',
 'tog-watchdefault' => 'Tự động theo dõi các trang và tập tin tôi sửa',
@@ -505,7 +504,7 @@ $messages = array(
 'vector-action-unprotect' => 'Đổi mức khóa',
 'vector-simplesearch-preference' => 'Hộp tìm kiếm đơn giản (cần bề ngoài Vectơ)',
 'vector-view-create' => 'Tạo',
-'vector-view-edit' => 'Sửa',
+'vector-view-edit' => 'Sửa đổi',
 'vector-view-history' => 'Xem lịch sử',
 'vector-view-view' => 'Đọc',
 'vector-view-viewsource' => 'Xem mã nguồn',
@@ -551,16 +550,16 @@ $messages = array(
 'postcomment' => 'Đề mục mới',
 'articlepage' => 'Xem trang nội dung',
 'talk' => 'Thảo luận',
-'views' => 'Xem',
+'views' => 'Hình dạng',
 'toolbox' => 'Công cụ',
 'userpage' => 'Xem trang thành viên',
 'projectpage' => 'Xem trang dự án',
 'imagepage' => 'Xem trang tập tin',
 'mediawikipage' => 'Thông điệp giao diện',
-'templatepage' => 'Trang bản mẫu',
-'viewhelppage' => 'Trang trợ giúp',
-'categorypage' => 'Trang thể loại',
-'viewtalkpage' => 'Trang thảo luận',
+'templatepage' => 'Xem trang bản mẫu',
+'viewhelppage' => 'Xem trang trợ giúp',
+'categorypage' => 'Xem trang thể loại',
+'viewtalkpage' => 'Xem trang thảo luận',
 'otherlanguages' => 'Ngôn ngữ khác',
 'redirectedfrom' => '(đổi hướng từ $1)',
 'redirectpagesub' => 'Trang đổi hướng',
@@ -883,6 +882,7 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'retypenew' => 'Gõ lại:',
 'resetpass_submit' => 'Chọn mật khẩu và đăng nhập',
 'changepassword-success' => 'Đã đổi mật khẩu thành công!',
+'changepassword-throttled' => 'Bạn thử đăng nhập gần đây nhiều lần quá. Xin chờ $1 trước khi bạn thử lần nữa.',
 'resetpass_forbidden' => 'Không được đổi mật khẩu',
 'resetpass-no-info' => 'Bạn phải đăng nhập mới có thể truy cập trực tiếp trang này.',
 'resetpass-submit-loggedin' => 'Thay đổi mật khẩu',
@@ -942,6 +942,7 @@ Mật khẩu tạm: $2',
 'changeemail-password' => 'Mật khẩu của bạn tại {{SITENAME}}:',
 'changeemail-submit' => 'Đổi địa chỉ',
 'changeemail-cancel' => 'Hủy bỏ',
+'changeemail-throttled' => 'Bạn thử đăng nhập nhiều lần quá. Xin chờ $1 trước khi bạn thử lần nữa.',
 
 # Special:ResetTokens
 'resettokens' => 'Đặt lại dấu hiệu',
@@ -4333,5 +4334,6 @@ Nếu không thì bạn có thể điền biểu mẫu đơn giản ở dưới.
 'expand_templates_preview' => 'Xem trước',
 
 # Unknown messages
+'createaccount-hook-aborted' => '$1',
 'uploadinvalidxml' => 'Không thể phân tích mã XML trong tập tin tải lên.',
 );
index 974749f..0eace4e 100644 (file)
@@ -74,7 +74,6 @@ $messages = array(
 'tog-numberheadings' => 'Auto-nga-ihap nga mga pagngaran',
 'tog-showtoolbar' => 'Igpakita an edit toolbar',
 'tog-editondblclick' => 'Igliwat in mga pakli ha doble nga klik',
-'tog-editsection' => 'Tugoti in seksyon nga pagliwat pinaagi hin [igliwat] nga mga sumpay',
 'tog-editsectiononrightclick' => 'Tugoti in pagliwat hin seksyon ha pag klik-ha-tuo dida hin mga ngaran o titulo hin seksyon',
 'tog-showtoc' => 'Igpakita in tabla hin sulod (para hin mga pakli nga sobra hin 3 ka titulo o pagngaran)',
 'tog-rememberpassword' => 'Hinumdomi an akon pan-sakob dinhi nga browser (para hin maximum nga $1 {{PLURAL:$1|nga adlaw|nga mga adlaw}})',
index ea2ca49..3168503 100644 (file)
@@ -94,9 +94,7 @@ $messages = array(
 'tog-numberheadings' => 'Koj yi jox lim seen bopp',
 'tog-showtoolbar' => 'Wone bànqaasu njëlu coppite bi (JavaScript)',
 'tog-editondblclick' => 'Cuq cuqaatal ngir soppi aw xët (JavaScript)',
-'tog-editsection' => 'Soppi ab xaaj jaare ko cib lëkkalekaay [Soppi]',
 'tog-editsectiononrightclick' => 'Soppi ab xaaj cib cuqub ndeyjoor ci kojam  (JavaScript)',
-'tog-showtoc' => 'Wone tëralinu ne-ne yi (ngir xët yi ëpp 3 xaaj)',
 'tog-rememberpassword' => 'Fattalikul sama baatujàll  (for a maximum of $1 {{PLURAL:$1|day|days}})',
 'tog-watchcreations' => 'Yokk ci sama limu toppte xët yi may sos',
 'tog-watchdefault' => 'Yokk ci sama limu toppte xët yi may soppi',
index 5336bb3..13273ce 100644 (file)
@@ -207,9 +207,7 @@ $messages = array(
 'tog-numberheadings' => 'נומערירן קעפלעך אויטאמאטיש',
 'tog-showtoolbar' => 'ווײַזן רעדאקטירן געצייג-שטאנג',
 'tog-editondblclick' => 'רעדאקטירן בלעטער דורך טאפל קליק',
-'tog-editsection' => 'ערמעגליכט אפטייל ענדערן דורך [ענדערן] לינקס',
 'tog-editsectiononrightclick' => 'באמעגלעכן אפטייל רעדאקטירן דורכן רעכטס־קליקן אויף אפטייל קעפלעך',
-'tog-showtoc' => 'ווייז דאס אינהאלט קעסטל<br />(פאר בלעטער מיט מער ווי 3 קעפלעך)',
 'tog-rememberpassword' => 'געדענק מיין אריינלאגירן אין דעם בלעטערער (ביז $1 {{PLURAL:$1|טאָג|טעג}})',
 'tog-watchcreations' => 'צולייגן בלעטער וואס איך באשאף און טעקעס וואס איך לאד ארויף צו מיין אכטונג ליסטע',
 'tog-watchdefault' => 'צולייגן בלעטער וואס איך רעדאקטיר צו מיין אכטונג ליסטע',
index 3f0e17d..4e256e0 100644 (file)
@@ -64,9 +64,7 @@ $messages = array(
 'tog-numberheadings' => 'Àwọn àkọlé nọmba-araẹni',
 'tog-showtoolbar' => 'Ìfihàn pẹpẹ irinṣẹ́ àtúnṣe',
 'tog-editondblclick' => "Ṣ'àtúnṣe àwọn ojúewé ní kíkàn lẹ́mẹjì",
-'tog-editsection' => 'Ìgbàláyè àtúnṣe abala láti inú [àtúnṣe] àwọn àjápọ̀',
 'tog-editsectiononrightclick' => 'Ìgbàláyè àtúnṣe abala nípa klííkì ọ̀tún lórí àkọlé abala',
-'tog-showtoc' => 'Ìfihàn tábìlì àkóónú (fún àwọn ojúewé tó ní ju orí ọ̀rọ̀ 3 lọ)',
 'tog-rememberpassword' => "Ṣè'rántí àkọọ́lẹ̀ ìwọlé mi lórí agbétàkùn yìí (fún {{PLURAL:$1|ọjọ́|ọjọ́}} $1 pípẹ́jùlọ)",
 'tog-watchcreations' => "Ṣ'àfikún ojúewé tí mo dá àti àwọn fáìlì tí mo rùsókè mọ́ ìmójútó mi",
 'tog-watchdefault' => "Ṣ'àfikún àwọn ojúewé àti fáìlì tí mo ṣ'àtúnse mọ́ ìmójútó mi",
index 2e3b9c1..3c7d5cb 100644 (file)
@@ -244,9 +244,7 @@ $messages = array(
 'tog-numberheadings' => '標題自動編號',
 'tog-showtoolbar' => '顯示修改工具列(需要JavaScript)',
 'tog-editondblclick' => '撳兩下改嘢(需要JavaScript)',
-'tog-editsection' => '可以用 [修改] 掣更改個別段落',
 'tog-editsectiononrightclick' => '可以撳右掣更改個別段落(需要JavaScript)',
-'tog-showtoc' => '多過三段時顯示目錄',
 'tog-rememberpassword' => '響呢個瀏覽器度記住我嘅登入資料 (最高維持$1{{PLURAL:$1|日|日}})',
 'tog-watchcreations' => '將我開嘅頁加入監視清單',
 'tog-watchdefault' => '將我修改嘅頁加入監視清單',
index a699403..2cbfda7 100644 (file)
@@ -393,9 +393,7 @@ $messages = array(
 'tog-numberheadings' => '自动编号标题',
 'tog-showtoolbar' => '显示编辑工具栏',
 'tog-editondblclick' => '双击编辑页面',
-'tog-editsection' => '启用[编辑]链接编辑段落',
 'tog-editsectiononrightclick' => '启用右击段落标题编辑段落',
-'tog-showtoc' => '显示目录(对于有多于3个标题的页面)',
 'tog-rememberpassword' => '在该浏览器记住我的登录状态(最长$1天)',
 'tog-watchcreations' => '添加我创建的页面和我上传的文件至我的监视列表',
 'tog-watchdefault' => '添加我编辑的页面和文件至我的监视列表',
@@ -925,6 +923,7 @@ $2',
 'retypenew' => '确认密码:',
 'resetpass_submit' => '设定密码并登录',
 'changepassword-success' => '您已经修改了您的密码!',
+'changepassword-throttled' => '您最近尝试了多次登录。请等待$1后再试。',
 'resetpass_forbidden' => '无法更改密码',
 'resetpass-no-info' => '您必须登录后直接进入这个页面。',
 'resetpass-submit-loggedin' => '更改密码',
@@ -974,6 +973,7 @@ $2
 'changeemail-password' => '你的{{SITENAME}}密码:',
 'changeemail-submit' => '更改电子邮件地址',
 'changeemail-cancel' => '取消',
+'changeemail-throttled' => '您最近尝试了太多次登录。请等待$1后再试。',
 
 # Special:ResetTokens
 'resettokens' => '重置密钥',
@@ -4157,5 +4157,6 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 'expand_templates_preview' => '预览',
 
 # Unknown messages
+'createaccount-hook-aborted' => '$1',
 'uploadinvalidxml' => '上传文件中的XML无法解析。',
 );
index 15bd1eb..01a3841 100644 (file)
@@ -279,9 +279,7 @@ $messages = array(
 'tog-numberheadings' => '標題自動編號',
 'tog-showtoolbar' => '顯示編輯工具欄',
 'tog-editondblclick' => '雙擊編輯頁面',
-'tog-editsection' => '允許通過點擊[編輯]連結編輯段落',
 'tog-editsectiononrightclick' => '允許右擊標題編輯段落',
-'tog-showtoc' => '顯示目錄 (針對一頁超過3個標題的頁面)',
 'tog-rememberpassword' => '在這個瀏覽器上記住我的登入狀態(最多 $1 天)',
 'tog-watchcreations' => '將我建立的頁面和上傳的檔案加入監視列表',
 'tog-watchdefault' => '將我更改的頁面和檔案加入監視列表',
@@ -825,6 +823,7 @@ $2',
 'retypenew' => '確認密碼:',
 'resetpass_submit' => '設定密碼並登入',
 'changepassword-success' => '您的密碼已成功變更!',
+'changepassword-throttled' => '您近期嘗試了多次登錄。請等待$1后再試。',
 'resetpass_forbidden' => '無法變更密碼',
 'resetpass-no-info' => '您必須登入後直接進入這個頁面。',
 'resetpass-submit-loggedin' => '變更密碼',
@@ -879,6 +878,7 @@ $2
 'changeemail-password' => '您的{{SITENAME}}密碼:',
 'changeemail-submit' => '變更電子郵件',
 'changeemail-cancel' => '取消',
+'changeemail-throttled' => '您近期嘗試了太多次登錄。請等待$1后再試。',
 
 # Special:ResetTokens
 'resettokens' => '重設密鑰',
@@ -4118,5 +4118,6 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'expand_templates_preview' => '預覽',
 
 # Unknown messages
+'createaccount-hook-aborted' => '$1',
 'uploadinvalidxml' => '上載檔案中的XML無法解析。',
 );
index ee8c48f..32ecb1d 100644 (file)
@@ -42,6 +42,11 @@ require_once __DIR__ . '/Maintenance.php';
  * @ingroup Maintenance
  */
 class FindHooks extends Maintenance {
+       /*
+        * Hooks that are ignored
+        */
+       protected static $ignore = array( 'testRunLegacyHooks' );
+
        public function __construct() {
                parent::__construct();
                $this->mDescription = 'Find hooks that are undocumented, missing, or just plain wrong';
@@ -255,8 +260,11 @@ class FindHooks extends Maintenance {
                if ( $sort ) {
                        asort( $arr );
                }
+
                foreach ( $arr as $v ) {
-                       $this->output( "$msg: $v\n" );
+                       if ( !in_array( $v, self::$ignore ) ) {
+                               $this->output( "$msg: $v\n" );
+                       }
                }
        }
 }
index 52cb209..60bb8d8 100644 (file)
@@ -23,6 +23,8 @@
  * @author Antoine Musso <hashar@free.fr>
  */
 
+define( 'MW_SETUP_NO_CACHE', 1 );
+define( 'MW_SETUP_NO_CONTEXT', 1 );
 require_once __DIR__ . '/Maintenance.php';
 
 /**
index d51cdd0..2162d24 100644 (file)
@@ -37,9 +37,7 @@ $wgMessageStructure = array(
                'tog-numberheadings',
                'tog-showtoolbar',
                'tog-editondblclick',
-               'tog-editsection',
                'tog-editsectiononrightclick',
-               'tog-showtoc',
                'tog-rememberpassword',
                'tog-watchcreations',
                'tog-watchdefault',
@@ -2013,7 +2011,7 @@ $wgMessageStructure = array(
                'watchmethod-list',
                'watchlistcontains',
                'iteminvalidname',
-               'wlnote',
+               'wlnote2',
                'wlshowlast',
                'watchlist-options',
        ),
@@ -2474,6 +2472,7 @@ $wgMessageStructure = array(
                'allmessages-prefix',
                'allmessages-language',
                'allmessages-filter-submit',
+               'allmessages-filter-translate',
        ),
        'thumbnails' => array(
                'thumbnail-more',
index 2f8f662..8a13440 100644 (file)
@@ -274,6 +274,9 @@ return array(
        'jquery.form' => array(
                'scripts' => 'resources/jquery/jquery.form.js',
        ),
+       'jquery.fullscreen' => array(
+               'scripts' => 'resources/jquery/jquery.fullscreen.js',
+       ),
        'jquery.getAttrs' => array(
                'scripts' => 'resources/jquery/jquery.getAttrs.js',
                'targets' => array( 'desktop', 'mobile' ),
@@ -1110,6 +1113,9 @@ return array(
                'messages' => array(
                        'prefs-tabs-navigation-hint',
                ),
+               'dependencies' => array(
+                       'mediawiki.language',
+               ),
        ),
        'mediawiki.special.recentchanges' => array(
                'scripts' => 'resources/mediawiki.special/mediawiki.special.recentchanges.js',
diff --git a/resources/jquery/jquery.fullscreen.js b/resources/jquery/jquery.fullscreen.js
new file mode 100644 (file)
index 0000000..0159079
--- /dev/null
@@ -0,0 +1,176 @@
+/**
+ * jQuery fullscreen plugin v2.0.0
+ * https://github.com/theopolisme/jquery-fullscreen/tree/v2.0.0
+ *
+ * Documentation at <https://github.com/theopolisme/jquery-fullscreen/blob/v2.0.0/README.md>
+ *
+ * Copyright (c) 2013 Theopolisme <theopolismewiki@gmail.com>
+ *
+ * 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.
+ */
+( function ( $ ) {
+       var setupFullscreen,
+               fsClass = 'jq-fullscreened';
+
+       /**
+        * On fullscreenchange, trigger a jq-fullscreen-change event
+        * The event is given an object, which contains the fullscreened DOM element (element), if any
+        * and a boolean value (fullscreen) indicating if we've entered or exited fullscreen mode
+        * Also remove the 'fullscreened' class from elements that are no longer fullscreen
+        */
+       function handleFullscreenChange () {
+               var fullscreenElement = document.fullscreenElement ||
+                       document.mozFullScreenElement ||
+                       document.webkitFullscreenElement ||
+                       document.msFullscreenElement;
+
+               if ( !fullscreenElement ) {
+                       $( '.' + fsClass ).data( 'isFullscreened', false ).removeClass( fsClass );
+               }
+
+               $( document ).trigger( $.Event( 'jq-fullscreen-change', { element: fullscreenElement, fullscreen: !!fullscreenElement } ) );
+       }
+
+       /**
+        * Enters full screen with the "this" element in focus.
+        * Check the .data( 'isFullscreened' ) of the return value to check
+        * success or failure, if you're into that sort of thing.
+        * @chainable
+        * @return {jQuery}
+        */
+       function enterFullscreen () {
+               var element = this.get(0),
+                       $element = this.first();
+               if ( element ) {
+                       if ( element.requestFullscreen ) {
+                               element.requestFullscreen();
+                       } else if ( element.mozRequestFullScreen ) {
+                               element.mozRequestFullScreen();
+                       } else if ( element.webkitRequestFullscreen ) {
+                               element.webkitRequestFullscreen();
+                       } else if ( element.msRequestFullscreen ) {
+                               element.msRequestFullscreen();
+                       } else {
+                               // Unable to make fullscreen
+                               $element.data( 'isFullscreened', false );
+                               return this;
+                       }
+                       // Add the fullscreen class and data attribute to `element`
+                       $element.addClass( fsClass ).data( 'isFullscreened', true );
+                       return this;
+               } else {
+                       $element.data( 'isFullscreened', false );
+                       return this;
+               }
+       }
+
+       /**
+        * Brings the "this" element out of fullscreen.
+        * Check the .data( 'isFullscreened' ) of the return value to check
+        * success or failure, if you're into that sort of thing.
+        * @chainable
+        * @return {jQuery}
+        */
+       function exitFullscreen () {
+               var fullscreenElement = ( document.fullscreenElement ||
+                               document.mozFullScreenElement ||
+                               document.webkitFullscreenElement ||
+                               document.msFullscreenElement );
+
+               // Ensure that we only exit fullscreen if exitFullscreen() is being called on the same element that is currently fullscreen
+               if ( fullscreenElement && this.get(0) === fullscreenElement ) {
+                       if ( document.exitFullscreen ) {
+                               document.exitFullscreen();
+                       } else if ( document.mozCancelFullScreen ) {
+                               document.mozCancelFullScreen();
+                       } else if ( document.webkitCancelFullScreen ) {
+                               document.webkitCancelFullScreen();
+                       } else if ( document.msCancelFullScreen ) {
+                               document.msCancelFullScreen();
+                       } else {
+                               // Unable to cancel fullscreen mode
+                               return this;
+                       }
+                       // We don't need to remove the fullscreen class here,
+                       // because it will be removed in handleFullscreenChange.
+                       // But we should change the data on the element so the
+                       // caller can check for success.
+                       this.first().data( 'isFullscreened', false );
+               }
+
+               return this;
+       }
+
+       /**
+        * Set up fullscreen handling and install necessary event handlers.
+        * Return false if fullscreen is not supported.
+        */
+       setupFullscreen = function () {
+               if ( document.fullscreenEnabled ||
+                               document.mozFullScreenEnabled ||
+                               document.webkitFullscreenEnabled ||
+                               document.msFullscreenEnabled
+               ) {
+                       // When the fullscreen mode is changed, trigger the
+                       // fullscreen events (and when exiting,
+                       // also remove the fullscreen class)
+                       $( document ).on( 'fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange', handleFullscreenChange);
+                       // Convenience wrapper so that one only needs to listen for
+                       // 'fullscreenerror', not all of the prefixed versions
+                       $( document ).on( 'webkitfullscreenerror mozfullscreenerror msfullscreenerror', function () {
+                               $( document ).trigger( $.Event( 'fullscreenerror' ) );
+                       } );
+                       // Fullscreen has been set up, so always return true
+                       setupFullscreen = function () { return true; };
+                       return true;
+               } else {
+                       // Always return false from now on, since fullscreen is not supported
+                       setupFullscreen = function() { return false; };
+                       return false;
+               }
+       };
+
+       /**
+        * Set up fullscreen handling if necessary, then make the first element
+        * matching the given selector fullscreen
+        * @chainable
+        * @return {jQuery}
+        */
+       $.fn.enterFullscreen = function () {
+               if ( setupFullscreen() ) {
+                       $.fn.enterFullscreen = enterFullscreen;
+                       return this.enterFullscreen();
+               } else {
+                       $.fn.enterFullscreen = function () { return this; };
+                       return this;
+               }
+       };
+
+       /**
+        * Set up fullscreen handling if necessary, then cancel fullscreen mode
+        * for the first element matching the given selector.
+        * @chainable
+        * @return {jQuery}
+        */
+       $.fn.exitFullscreen = function () {
+               if ( setupFullscreen() ) {
+                       $.fn.exitFullscreen = exitFullscreen;
+                       return this.exitFullscreen();
+               } else {
+                       $.fn.exitFullscreen = function () { return this; };
+                       return this;
+               }
+       };
+}( jQuery ) );
index 6ca21b5..324833c 100644 (file)
@@ -3,31 +3,41 @@
  * Simple local storage wrapper to save data on the browser side, supporting
  * all major browsers - IE6+, Firefox2+, Safari4+, Chrome4+ and Opera 10.5+
  *
- * Copyright (c) 2010 - 2012 Andris Reinman, andris.reinman@gmail.com
+ * Author: Andris Reinman, andris.reinman@gmail.com
  * Project homepage: www.jstorage.info
  *
- * Licensed under MIT-style license:
+ * Licensed under Unlicense:
  *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
+ * This is free and unencumbered software released into the public domain.
+ * 
+ * Anyone is free to copy, modify, publish, use, compile, sell, or
+ * distribute this software, either in source code form or as a compiled
+ * binary, for any purpose, commercial or non-commercial, and by any
+ * means.
+ * 
+ * In jurisdictions that recognize copyright laws, the author or authors
+ * of this software dedicate any and all copyright interest in the
+ * software to the public domain. We make this dedication for the benefit
+ * of the public at large and to the detriment of our heirs and
+ * successors. We intend this dedication to be an overt act of
+ * relinquishment in perpetuity of all present and future rights to this
+ * software under copyright law.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ * 
+ * For more information, please refer to <http://unlicense.org/>
  */
 
  (function(){
     var
         /* jStorage version */
-        JSTORAGE_VERSION = "0.3.0",
+        JSTORAGE_VERSION = "0.4.8",
 
         /* detect a dollar object or create one if not found */
         $ = window.jQuery || window.$ || (window.$ = {}),
         };
 
     // Break if no JSON support was found
-    if(!JSON.parse || !JSON.stringify){
+    if(!("parse" in JSON) || !("stringify" in JSON)){
         throw new Error("No JSON support found, include //cdnjs.cloudflare.com/ajax/libs/json2/20110223/json2.js to page");
     }
 
     var
         /* This is the object, that holds the cached values */
-        _storage = {},
+        _storage = {__jstorage_meta:{CRC32:{}}},
 
-        /* Actual browser storage (localStorage or globalStorage['domain']) */
+        /* Actual browser storage (localStorage or globalStorage["domain"]) */
         _storage_service = {jStorage:"{}"},
 
         /* DOM element for older IE versions, holds userData behavior */
         _pubsub_observers = {},
 
         /* skip published items older than current timestamp */
-        _pubsub_last = +new Date(), 
+        _pubsub_last = +new Date(),
 
         /* Next check for TTL */
         _ttl_timeout,
 
-        /* crc32 table */
-        _crc32Table = "00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 "+
-             "0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 "+
-             "6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 "+
-             "FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 "+
-             "A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 "+
-             "32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 "+
-             "56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 "+
-             "C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 "+
-             "E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 "+
-             "6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 "+
-             "12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE "+
-             "A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 "+
-             "DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 "+
-             "5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 "+
-             "2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF "+
-             "04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 "+
-             "7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 "+
-             "FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 "+
-             "A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C "+
-             "36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 "+
-             "5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 "+
-             "C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 "+
-             "EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D "+
-             "7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 "+
-             "18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 "+
-             "A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A "+
-             "D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A "+
-             "53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 "+
-             "2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D",
-
         /**
          * XML encoding and decoding as XML nodes can't be JSON'ized
          * XML nodes are encoded and decoded if the node is the value to be saved
             decode: function(xmlString){
                 var dom_parser = ("DOMParser" in window && (new DOMParser()).parseFromString) ||
                         (window.ActiveXObject && function(_xmlString) {
-                    var xml_doc = new ActiveXObject('Microsoft.XMLDOM');
-                    xml_doc.async = 'false';
+                    var xml_doc = new ActiveXObject("Microsoft.XMLDOM");
+                    xml_doc.async = "false";
                     xml_doc.loadXML(_xmlString);
                     return xml_doc;
                 }),
                 if(!dom_parser){
                     return false;
                 }
-                resultXML = dom_parser.call("DOMParser" in window && (new DOMParser()) || window, xmlString, 'text/xml');
+                resultXML = dom_parser.call("DOMParser" in window && (new DOMParser()) || window, xmlString, "text/xml");
                 return this.isXML(resultXML)?resultXML:false;
             }
-        },
-
-        _localStoragePolyfillSetKey = function(){};
+        };
 
 
     ////////////////////////// PRIVATE METHODS ////////////////////////
         var localStorageReallyWorks = false;
         if("localStorage" in window){
             try {
-                window.localStorage.setItem('_tmptest', 'tmpval');
+                window.localStorage.setItem("_tmptest", "tmpval");
                 localStorageReallyWorks = true;
-                window.localStorage.removeItem('_tmptest');
+                window.localStorage.removeItem("_tmptest");
             } catch(BogusQuotaExceededErrorOnIos5) {
                 // Thanks be to iOS5 Private Browsing mode which throws
                 // QUOTA_EXCEEDED_ERRROR DOM Exception 22.
         else if("globalStorage" in window){
             try {
                 if(window.globalStorage) {
-                    _storage_service = window.globalStorage[window.location.hostname];
+                    if(window.location.hostname == "localhost"){
+                        _storage_service = window.globalStorage["localhost.localdomain"];
+                    }
+                    else{
+                        _storage_service = window.globalStorage[window.location.hostname];
+                    }
                     _backend = "globalStorage";
                     _observer_update = _storage_service.jStorage_update;
                 }
         }
         /* Check if browser supports userData behavior */
         else {
-            _storage_elm = document.createElement('link');
+            _storage_elm = document.createElement("link");
             if(_storage_elm.addBehavior){
 
                 /* Use a DOM element to act as userData storage */
-                _storage_elm.style.behavior = 'url(#default#userData)';
+                _storage_elm.style.behavior = "url(#default#userData)";
 
                 /* userData element needs to be inserted into the DOM! */
-                document.getElementsByTagName('head')[0].appendChild(_storage_elm);
+                document.getElementsByTagName("head")[0].appendChild(_storage_elm);
 
                 try{
                     _storage_elm.load("jStorage");
         // remove dead keys
         _handleTTL();
 
-        // create localStorage and sessionStorage polyfills if needed
-        _createPolyfillStorage("local");
-        _createPolyfillStorage("session");
-
         // start listening for changes
         _setupObserver();
 
         }
     }
 
-    /**
-     * Create a polyfill for localStorage (type="local") or sessionStorage (type="session")
-     *
-     * @param {String} type Either "local" or "session"
-     * @param {Boolean} forceCreate If set to true, recreate the polyfill (needed with flush)
-     */
-    function _createPolyfillStorage(type, forceCreate){
-        var _skipSave = false,
-            _length = 0,
-            i, 
-            storage,
-            storage_source = {};
-
-            var rand = Math.random();
-
-        if(!forceCreate && typeof window[type+"Storage"] != "undefined"){
-            return;
-        }
-
-        // Use globalStorage for localStorage if available
-        if(type == "local" && window.globalStorage){
-            localStorage = window.globalStorage[window.location.hostname];
-            return;
-        }
-
-        // only IE6/7 from this point on 
-        if(_backend != "userDataBehavior"){
-            return;
-        }
-
-        // Remove existing storage element if available
-        if(forceCreate && window[type+"Storage"] && window[type+"Storage"].parentNode){
-            window[type+"Storage"].parentNode.removeChild(window[type+"Storage"]);
-        }
-
-        storage = document.createElement("button");
-        document.getElementsByTagName('head')[0].appendChild(storage);
-
-        if(type == "local"){
-            storage_source = _storage;
-        }else if(type == "session"){
-            _sessionStoragePolyfillUpdate();
-        }
-
-        for(i in storage_source){
-
-            if(storage_source.hasOwnProperty(i) && i != "__jstorage_meta" && i != "length" && typeof storage_source[i] != "undefined"){
-                if(!(i in storage)){
-                    _length++;
-                }
-                storage[i] = storage_source[i];
-            }
-        }
-        
-        // Polyfill API
-
-        /**
-         * Indicates how many keys are stored in the storage
-         */
-        storage.length = _length;
-
-        /**
-         * Returns the key of the nth stored value
-         * 
-         * @param {Number} n Index position
-         * @return {String} Key name of the nth stored value
-         */
-        storage.key = function(n){
-            var count = 0, i;
-            _sessionStoragePolyfillUpdate();
-            for(i in storage_source){
-                if(storage_source.hasOwnProperty(i) && i != "__jstorage_meta" && i!="length" && typeof storage_source[i] != "undefined"){
-                    if(count == n){
-                        return i;
-                    }
-                    count++;
-                }
-            }
-        }
-
-        /**
-         * Returns the current value associated with the given key
-         *
-         * @param {String} key key name
-         * @return {Mixed} Stored value
-         */
-        storage.getItem = function(key){
-            _sessionStoragePolyfillUpdate();
-            if(type == "session"){
-                return storage_source[key];
-            }
-            return $.jStorage.get(key);
-        }
-
-        /**
-         * Sets or updates value for a give key
-         *
-         * @param {String} key Key name to be updated
-         * @param {String} value String value to be stored 
-         */
-        storage.setItem = function(key, value){
-            if(typeof value == "undefined"){
-                return;
-            }
-            storage[key] = (value || "").toString();
-        }
-
-        /**
-         * Removes key from the storage
-         *
-         * @param {String} key Key name to be removed
-         */
-        storage.removeItem = function(key){
-            if(type == "local"){
-                return $.jStorage.deleteKey(key);
-            }
-
-            storage[key] = undefined;
-            
-            _skipSave = true;
-            if(key in storage){
-                storage.removeAttribute(key);
-            }
-            _skipSave = false;
-        }
-
-        /**
-         * Clear storage
-         */
-        storage.clear = function(){
-            if(type == "session"){
-                window.name = "";
-                _createPolyfillStorage("session", true);
-                return;
-            }
-            $.jStorage.flush();
-        }
-
-        if(type == "local"){
-
-            _localStoragePolyfillSetKey = function(key, value){
-                if(key == "length"){
-                    return;
-                }
-                _skipSave = true;
-                if(typeof value == "undefined"){
-                    if(key in storage){
-                        _length--;
-                        storage.removeAttribute(key);
-                    }
-                }else{
-                    if(!(key in storage)){
-                        _length++;
-                    }
-                    storage[key] = (value || "").toString();
-                }
-                storage.length = _length;
-                _skipSave = false;
-            }
-        }
-
-        function _sessionStoragePolyfillUpdate(){
-                if(type != "session"){
-                    return;
-                }
-                try{
-                    storage_source = JSON.parse(window.name || "{}");
-                }catch(E){
-                    storage_source = {};
-                }
-            }
-
-        function _sessionStoragePolyfillSave(){
-            if(type != "session"){
-                return;
-            }
-            window.name = JSON.stringify(storage_source);
-        };
-
-        storage.attachEvent("onpropertychange", function(e){
-            if(e.propertyName == "length"){
-                return;
-            }
-
-            if(_skipSave || e.propertyName == "length"){
-                return;
-            }
-
-            if(type == "local"){
-                if(!(e.propertyName in storage_source) && typeof storage[e.propertyName] != "undefined"){
-                    _length ++;
-                }
-            }else if(type == "session"){
-                _sessionStoragePolyfillUpdate();
-                if(typeof storage[e.propertyName] != "undefined" && !(e.propertyName in storage_source)){
-                    storage_source[e.propertyName] = storage[e.propertyName];
-                    _length++;
-                }else if(typeof storage[e.propertyName] == "undefined" && e.propertyName in storage_source){
-                    delete storage_source[e.propertyName];
-                    _length--;
-                }else{
-                    storage_source[e.propertyName] = storage[e.propertyName];
-                }
-
-                _sessionStoragePolyfillSave();
-                storage.length = _length;
-                return;
-            }
-
-            $.jStorage.set(e.propertyName, storage[e.propertyName]);
-            storage.length = _length;
-        });
-
-        window[type+"Storage"] = storage;
-    }
-
     /**
      * Reload data from storage when needed
      */
                     removed.push(key);
                     continue;
                 }
-                if(oldCrc32List[key] != newCrc32List[key]){
+                if(oldCrc32List[key] != newCrc32List[key] && String(oldCrc32List[key]).substr(0,2) == "2."){
                     updated.push(key);
                 }
             }
                     _observers[keys[i]][j](keys[i], action);
                 }
             }
+            if(_observers["*"]){
+                for(var j=0, jlen = _observers["*"].length; j<jlen; j++){
+                    _observers["*"][j](keys[i], action);
+                }
+            }
         }
     }
 
         var updateTime = (+new Date()).toString();
 
         if(_backend == "localStorage" || _backend == "globalStorage"){
-            _storage_service.jStorage_update = updateTime;
+            try {
+                _storage_service.jStorage_update = updateTime;
+            } catch (E8) {
+                // safari private mode has been enabled after the jStorage initialization
+                _backend = false;
+            }
         }else if(_backend == "userDataBehavior"){
             _storage_elm.setAttribute("jStorage_update", updateTime);
             _storage_elm.save("jStorage");
      * @param {String} key Key name
      */
     function _checkKey(key){
-        if(!key || (typeof key != "string" && typeof key != "number")){
-            throw new TypeError('Key name must be string or numeric');
+        if(typeof key != "string" && typeof key != "number"){
+            throw new TypeError("Key name must be string or numeric");
         }
         if(key == "__jstorage_meta"){
-            throw new TypeError('Reserved key name');
+            throw new TypeError("Reserved key name");
         }
         return true;
     }
      * Checks if there's any events on hold to be fired to listeners
      */
     function _handlePubSub(){
+        var i, len;
         if(!_storage.__jstorage_meta.PubSub){
             return;
         }
         var pubelm,
             _pubsubCurrent = _pubsub_last;
 
-        for(var i=len=_storage.__jstorage_meta.PubSub.length-1; i>=0; i--){
+        for(i=len=_storage.__jstorage_meta.PubSub.length-1; i>=0; i--){
             pubelm = _storage.__jstorage_meta.PubSub[i];
             if(pubelm[0] > _pubsub_last){
                 _pubsubCurrent = pubelm[0];
         if(_pubsub_observers[channel]){
             for(var i=0, len = _pubsub_observers[channel].length; i<len; i++){
                 // send immutable data that can't be modified by listeners
-                _pubsub_observers[channel][i](channel, JSON.parse(JSON.stringify(payload)));
+                try{
+                    _pubsub_observers[channel][i](channel, JSON.parse(JSON.stringify(payload)));
+                }catch(E){};
             }
         }
     }
         if(!_storage.__jstorage_meta.PubSub){
             _storage.__jstorage_meta.PubSub = [];
         }
-        
+
         _storage.__jstorage_meta.PubSub.unshift([+new Date, channel, payload]);
 
         _save();
         _publishChange();
     }
 
+
     /**
-     * CRC32 calculation based on http://noteslog.com/post/crc32-for-javascript/
+     * JS Implementation of MurmurHash2
+     *
+     *  SOURCE: https://github.com/garycourt/murmurhash-js (MIT licensed)
      *
-     * @param {String} str String to be hashed
-     * @param {Number} [crc] Last crc value in case of streams
+     * @author <a href="mailto:gary.court@gmail.com">Gary Court</a>
+     * @see http://github.com/garycourt/murmurhash-js
+     * @author <a href="mailto:aappleby@gmail.com">Austin Appleby</a>
+     * @see http://sites.google.com/site/murmurhash/
+     *
+     * @param {string} str ASCII only
+     * @param {number} seed Positive integer only
+     * @return {number} 32-bit positive integer hash
      */
-    function _crc32(str, crc){
-        crc = crc || 0;
-
-        var n = 0, //a number between 0 and 255
-            x = 0; //an hex number
-        crc = crc ^ (-1);
-        for(var i = 0, len = str.length; i < len; i++){
-            n = (crc ^ str.charCodeAt(i)) & 0xFF;
-            x = "0x" + _crc32Table.substr(n * 9, 8);
-            crc = (crc >>> 8)^x;
+
+    function murmurhash2_32_gc(str, seed) {
+        var
+            l = str.length,
+            h = seed ^ l,
+            i = 0,
+            k;
+
+        while (l >= 4) {
+            k =
+                ((str.charCodeAt(i) & 0xff)) |
+                ((str.charCodeAt(++i) & 0xff) << 8) |
+                ((str.charCodeAt(++i) & 0xff) << 16) |
+                ((str.charCodeAt(++i) & 0xff) << 24);
+
+            k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));
+            k ^= k >>> 24;
+            k = (((k & 0xffff) * 0x5bd1e995) + ((((k >>> 16) * 0x5bd1e995) & 0xffff) << 16));
+
+            h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16)) ^ k;
+
+            l -= 4;
+            ++i;
+        }
+
+        switch (l) {
+            case 3: h ^= (str.charCodeAt(i + 2) & 0xff) << 16;
+            case 2: h ^= (str.charCodeAt(i + 1) & 0xff) << 8;
+            case 1: h ^= (str.charCodeAt(i) & 0xff);
+                h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));
         }
-        return crc^(-1);
+
+        h ^= h >>> 13;
+        h = (((h & 0xffff) * 0x5bd1e995) + ((((h >>> 16) * 0x5bd1e995) & 0xffff) << 16));
+        h ^= h >>> 15;
+
+        return h >>> 0;
     }
 
     ////////////////////////// PUBLIC INTERFACE /////////////////////////
 
             _storage[key] = value;
 
-            _storage.__jstorage_meta.CRC32[key] = _crc32(JSON.stringify(value));
+            _storage.__jstorage_meta.CRC32[key] = "2." + murmurhash2_32_gc(JSON.stringify(value), 0x9747b28c);
 
             this.setTTL(key, options.TTL || 0); // also handles saving and _publishChange
 
-            _localStoragePolyfillSetKey(key, value);
-
             _fireObservers(key, "updated");
             return value;
         },
         get: function(key, def){
             _checkKey(key);
             if(key in _storage){
-                if(_storage[key] && typeof _storage[key] == "object" &&
-                        _storage[key]._is_xml &&
-                            _storage[key]._is_xml){
+                if(_storage[key] && typeof _storage[key] == "object" && _storage[key]._is_xml) {
                     return _XMLService.decode(_storage[key].xml);
                 }else{
                     return _storage[key];
                 }
             }
-            return typeof(def) == 'undefined' ? null : def;
+            return typeof(def) == "undefined" ? null : def;
         },
 
         /**
                 }
 
                 delete _storage.__jstorage_meta.CRC32[key];
-                _localStoragePolyfillSetKey(key, undefined);
 
                 _save();
                 _publishChange();
          */
         flush: function(){
             _storage = {__jstorage_meta:{CRC32:{}}};
-            _createPolyfillStorage("local", true);
             _save();
             _publishChange();
             _fireObservers(null, "flushed");
 
         /**
          * Returns an index of all used keys as an array
-         * ['key1', 'key2',..'keyN']
+         * ["key1", "key2",.."keyN"]
          *
          * @return {Array} Used keys
         */
         subscribe: function(channel, callback){
             channel = (channel || "").toString();
             if(!channel){
-                throw new TypeError('Channel not defined');
+                throw new TypeError("Channel not defined");
             }
             if(!_pubsub_observers[channel]){
                 _pubsub_observers[channel] = [];
         publish: function(channel, payload){
             channel = (channel || "").toString();
             if(!channel){
-                throw new TypeError('Channel not defined');
+                throw new TypeError("Channel not defined");
             }
 
             _publish(channel, payload);
          */
         reInit: function(){
             _reloadData();
-        }
+        },
+
+        /**
+         * Removes reference from global objects and saves it as jStorage
+         *
+         * @param {Boolean} option if needed to save object as simple "jStorage" in windows context
+         */
+         noConflict: function( saveInGlobal ) {
+            delete window.$.jStorage
+
+            if ( saveInGlobal ) {
+                window.jStorage = this;
+            }
+
+            return this;
+         }
     };
 
     // Initialize jStorage
index 19a8844..3842064 100644 (file)
@@ -229,7 +229,7 @@ jQuery( function ( $ ) {
                while ( localTime >= 1440 ) {
                        localTime -= 1440;
                }
-               $localtimeHolder.text( minutesToHours( localTime ) );
+               $localtimeHolder.text( mediaWiki.language.convertNumber( minutesToHours( localTime ) ) );
        }
 
        if ( $tzSelect.length && $tzTextbox.length ) {
index 1afe51e..9de69b2 100644 (file)
                                                $( '<div style="margin-top: 1em;"></div>' ).append(
                                                        mw.msg( 'feedback-subject' ),
                                                        $( '<br>' ),
-                                                       $( '<input type="text" class="feedback-subject" name="subject" maxlength="60" style="width: 99%;"/>' )
+                                                       $( '<input type="text" class="feedback-subject" name="subject" maxlength="60" style="width: 100%; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;"/>' )
                                                ),
                                                $( '<div style="margin-top: 0.4em;"></div>' ).append(
                                                        mw.msg( 'feedback-message' ),
                                                        $( '<br>' ),
-                                                       $( '<textarea name="message" class="feedback-message" style="width: 99%;" rows="5" cols="60"></textarea>' )
+                                                       $( '<textarea name="message" class="feedback-message" rows="5" cols="60"></textarea>' )
                                                )
                                        ),
                                        $( '<div class="feedback-mode feedback-bugs"></div>' ).append(
diff --git a/skins/.gitignore b/skins/.gitignore
new file mode 100644 (file)
index 0000000..967fd9f
--- /dev/null
@@ -0,0 +1,17 @@
+*/
+!cologneblue/
+!cologneblue/*
+!common/
+!common/*
+!modern/
+!modern/*
+!monobook/
+!monobook/*
+!vector/
+!vector/*
+
+*.php
+!CologneBlue.php
+!Modern.php
+!MonoBook.php
+!Vector.php
index bc5dd31..40a9432 100644 (file)
@@ -56,9 +56,6 @@ p, pre, .mw-code, td, th, li, dd, dt {
 textarea {
        overflow: auto;
        width: 100%;
-}
-
-#editform textarea {
        display: block;
        -moz-box-sizing: border-box;
        -webkit-box-sizing: border-box;
diff --git a/skins/common/IE80Fixes.css b/skins/common/IE80Fixes.css
deleted file mode 100644 (file)
index 6e5cb8a..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/**
- * Fixes textarea scrolling bug (bug #19334). The bug only occurs when a
- * percentage width is given, so instead of width: 100%, use min-width: 100%;
- * max-width: 100%.  We also need to give a fixed width for the actual width
- * property for the hack to work, although the actual value (500px here) ends
- * up being ignored; min/max-width take precedence.
- *
- * More info: http://grantovich.net/posts/2009/06/that-weird-ie8-textarea-bug/
- */
-#wpTextbox1 {
-       height: 390px;
-       width: 500px;
-       min-width: 100%;
-       max-width: 100%;
-}
index 35071a4..a869923 100644 (file)
@@ -150,16 +150,6 @@ img.thumbborder {
        border: 1px solid #dddddd;
 }
 
-/**
- * Edit forms
- */
-#editform textarea {
-       display: block;
-       -moz-box-sizing: border-box;
-       -webkit-box-sizing: border-box;
-       box-sizing: border-box;
-}
-
 /**
  * Basic styles for the user login and create account forms
  */
index 742f839..ad7942a 100644 (file)
@@ -207,6 +207,10 @@ form {
 textarea {
        width: 100%;
        padding: .1em;
+       display: block;
+       -moz-box-sizing: border-box;
+       -webkit-box-sizing: border-box;
+       box-sizing: border-box;
 }
 select {
        vertical-align: top;
index 39206c3..d646273 100644 (file)
 }
 
 #config-live-log {
-       margin-right: 18em;
+       overflow: hidden;
+       min-width: 20em;
 }
index 5da7d5b..6f73f0e 100644 (file)
@@ -155,8 +155,7 @@ div.mw_clear {
 textarea {
        width: 100%;
        padding: .1em;
-}
-#editform textarea {
+       display: block;
        -moz-box-sizing: border-box;
        -webkit-box-sizing: border-box;
        box-sizing: border-box;
index 58df552..ea4b0f6 100644 (file)
@@ -47,11 +47,6 @@ $wgAutoloadClasses += array(
        'RevisionStorageTest' => "$testDir/phpunit/includes/RevisionStorageTest.php",
        'WikiPageTest' => "$testDir/phpunit/includes/WikiPageTest.php",
 
-       //db
-       'ORMTableTest' => "$testDir/phpunit/includes/db/ORMTableTest.php",
-       'PageORMTableForTesting' => "$testDir/phpunit/includes/db/ORMTableTest.php",
-       'DatabaseTestHelper' => "$testDir/phpunit/includes/db/DatabaseTestHelper.php",
-
        # tests/phpunit/includes/api
        'ApiFormatTestBase' => "$testDir/phpunit/includes/api/format/ApiFormatTestBase.php",
        'ApiTestCase' => "$testDir/phpunit/includes/api/ApiTestCase.php",
@@ -71,21 +66,22 @@ $wgAutoloadClasses += array(
 
        # tests/phpunit/includes/db
        'ORMRowTest' => "$testDir/phpunit/includes/db/ORMRowTest.php",
+       'ORMTableTest' => "$testDir/phpunit/includes/db/ORMTableTest.php",
+       'PageORMTableForTesting' => "$testDir/phpunit/includes/db/ORMTableTest.php",
+       'DatabaseTestHelper' => "$testDir/phpunit/includes/db/DatabaseTestHelper.php",
 
-       # tests/phpunit/includes/parser
-       'NewParserTest' => "$testDir/phpunit/includes/parser/NewParserTest.php",
-       'MediaWikiParserTest' => "$testDir/phpunit/includes/parser/MediaWikiParserTest.php",
+       # tests/phpunit/languages
+       'LanguageClassesTestCase' => "$testDir/phpunit/languages/LanguageClassesTestCase.php",
 
        # tests/phpunit/includes/libs
        'GenericArrayObjectTest' => "$testDir/phpunit/includes/libs/GenericArrayObjectTest.php",
 
+       # tests/phpunit/maintenance
+       'DumpTestCase' => "$testDir/phpunit/maintenance/DumpTestCase.php",
+
        # tests/phpunit/media
        'FakeDimensionFile' => "$testDir/phpunit/includes/media/FakeDimensionFile.php",
 
-       # tests/phpunit/includes/site
-       'SiteTest' => "$testDir/phpunit/includes/site/SiteTest.php",
-       'TestSites' => "$testDir/phpunit/includes/site/TestSites.php",
-
        # tests/phpunit/mocks
        'MockFSFile' => "$testDir/phpunit/mocks/filebackend/MockFSFile.php",
        'MockFileBackend' => "$testDir/phpunit/mocks/filebackend/MockFileBackend.php",
@@ -93,13 +89,13 @@ $wgAutoloadClasses += array(
        'MockImageHandler' => "$testDir/phpunit/mocks/media/MockImageHandler.php",
        'MockSvgHandler' => "$testDir/phpunit/mocks/media/MockSvgHandler.php",
 
-       # tests/phpunit/languages
-       'LanguageClassesTestCase' => "$testDir/phpunit/languages/LanguageClassesTestCase.php",
-
-       # tests/phpunit/maintenance
-       'DumpTestCase' => "$testDir/phpunit/maintenance/DumpTestCase.php",
-
        # tests/parser
+       'NewParserTest' => "$testDir/phpunit/includes/parser/NewParserTest.php",
+       'MediaWikiParserTest' => "$testDir/phpunit/includes/parser/MediaWikiParserTest.php",
        'ParserTest' => "$testDir/parser/parserTest.inc",
        'ParserTestParserHook' => "$testDir/parser/parserTestsParserHook.php",
+
+       # tests/phpunit/includes/site
+       'SiteTest' => "$testDir/phpunit/includes/site/SiteTest.php",
+       'TestSites' => "$testDir/phpunit/includes/site/TestSites.php",
 );
diff --git a/tests/phpunit/includes/MWTimestampTest.php b/tests/phpunit/includes/MWTimestampTest.php
new file mode 100644 (file)
index 0000000..5b038a6
--- /dev/null
@@ -0,0 +1,342 @@
+<?php
+
+/**
+ * Tests timestamp parsing and output.
+ */
+class MWTimestampTest extends MediaWikiLangTestCase {
+
+       protected function setUp() {
+               parent::setUp();
+
+               RequestContext::getMain()->setLanguage( Language::factory( 'en' ) );
+       }
+
+       /**
+        * @covers MWTimestamp::__construct
+        */
+       public function testConstructWithNoTimestamp() {
+               $timestamp = new MWTimestamp();
+               $this->assertInternalType( 'string', $timestamp->getTimestamp() );
+               $this->assertNotEmpty( $timestamp->getTimestamp() );
+               $this->assertNotEquals( false, strtotime( $timestamp->getTimestamp( TS_MW ) ) );
+       }
+
+       /**
+        * @covers MWTimestamp::__toString
+        */
+       public function testToString() {
+               $timestamp = new MWTimestamp( '1406833268' ); // Equivalent to 20140731190108
+               $this->assertEquals( '1406833268', $timestamp->__toString() );
+       }
+
+       public function provideValidTimestampDifferences() {
+               return array(
+                       array( '1406833268','1406833269', '00 00 00 01' ),
+                       array( '1406833268','1406833329', '00 00 01 01' ),
+                       array( '1406833268','1406836929', '00 01 01 01' ),
+                       array( '1406833268','1406923329', '01 01 01 01' ),
+               );
+       }
+
+       /**
+        * @dataProvider provideValidTimestampDifferences
+        * @covers MWTimestamp::diff
+        */
+       public function testDiff( $timestamp1, $timestamp2, $expected ) {
+               $timestamp1 = new MWTimestamp( $timestamp1 );
+               $timestamp2 = new MWTimestamp( $timestamp2 );
+               $diff = $timestamp1->diff( $timestamp2 );
+               $this->assertEquals( $expected, $diff->format( '%D %H %I %S' ) );
+       }
+
+       /**
+        * Test parsing of valid timestamps and outputing to MW format.
+        * @dataProvider provideValidTimestamps
+        * @covers MWTimestamp::getTimestamp
+        */
+       public function testValidParse( $format, $original, $expected ) {
+               $timestamp = new MWTimestamp( $original );
+               $this->assertEquals( $expected, $timestamp->getTimestamp( TS_MW ) );
+       }
+
+       /**
+        * Test outputting valid timestamps to different formats.
+        * @dataProvider provideValidTimestamps
+        * @covers MWTimestamp::getTimestamp
+        */
+       public function testValidOutput( $format, $expected, $original ) {
+               $timestamp = new MWTimestamp( $original );
+               $this->assertEquals( $expected, (string)$timestamp->getTimestamp( $format ) );
+       }
+
+       /**
+        * Test an invalid timestamp.
+        * @expectedException TimestampException
+        * @covers MWTimestamp
+        */
+       public function testInvalidParse() {
+               new MWTimestamp( "This is not a timestamp." );
+       }
+
+       /**
+        * Test requesting an invalid output format.
+        * @expectedException TimestampException
+        * @covers MWTimestamp::getTimestamp
+        */
+       public function testInvalidOutput() {
+               $timestamp = new MWTimestamp( '1343761268' );
+               $timestamp->getTimestamp( 98 );
+       }
+
+       /**
+        * Returns a list of valid timestamps in the format:
+        * array( type, timestamp_of_type, timestamp_in_MW )
+        */
+       public static function provideValidTimestamps() {
+               return array(
+                       // Various formats
+                       array( TS_UNIX, '1343761268', '20120731190108' ),
+                       array( TS_MW, '20120731190108', '20120731190108' ),
+                       array( TS_DB, '2012-07-31 19:01:08', '20120731190108' ),
+                       array( TS_ISO_8601, '2012-07-31T19:01:08Z', '20120731190108' ),
+                       array( TS_ISO_8601_BASIC, '20120731T190108Z', '20120731190108' ),
+                       array( TS_EXIF, '2012:07:31 19:01:08', '20120731190108' ),
+                       array( TS_RFC2822, 'Tue, 31 Jul 2012 19:01:08 GMT', '20120731190108' ),
+                       array( TS_ORACLE, '31-07-2012 19:01:08.000000', '20120731190108' ),
+                       array( TS_POSTGRES, '2012-07-31 19:01:08 GMT', '20120731190108' ),
+                       // Some extremes and weird values
+                       array( TS_ISO_8601, '9999-12-31T23:59:59Z', '99991231235959' ),
+                       array( TS_UNIX, '-62135596801', '00001231235959' )
+               );
+       }
+
+       /**
+        * @dataProvider provideHumanTimestampTests
+        * @covers MWTimestamp::getHumanTimestamp
+        */
+       public function testHumanTimestamp(
+               $tsTime, // The timestamp to format
+               $currentTime, // The time to consider "now"
+               $timeCorrection, // The time offset to use
+               $dateFormat, // The date preference to use
+               $expectedOutput, // The expected output
+               $desc // Description
+       ) {
+               $user = $this->getMock( 'User' );
+               $user->expects( $this->any() )
+                       ->method( 'getOption' )
+                       ->with( 'timecorrection' )
+                       ->will( $this->returnValue( $timeCorrection ) );
+
+               $user->expects( $this->any() )
+                       ->method( 'getDatePreference' )
+                       ->will( $this->returnValue( $dateFormat ) );
+
+               $tsTime = new MWTimestamp( $tsTime );
+               $currentTime = new MWTimestamp( $currentTime );
+
+               $this->assertEquals(
+                       $expectedOutput,
+                       $tsTime->getHumanTimestamp( $currentTime, $user ),
+                       $desc
+               );
+       }
+
+       public static function provideHumanTimestampTests() {
+               return array(
+                       array(
+                               '20111231170000',
+                               '20120101000000',
+                               'Offset|0',
+                               'mdy',
+                               'Yesterday at 17:00',
+                               '"Yesterday" across years',
+                       ),
+                       array(
+                               '20120717190900',
+                               '20120717190929',
+                               'Offset|0',
+                               'mdy',
+                               'just now',
+                               '"Just now"',
+                       ),
+                       array(
+                               '20120717190900',
+                               '20120717191530',
+                               'Offset|0',
+                               'mdy',
+                               '6 minutes ago',
+                               'X minutes ago',
+                       ),
+                       array(
+                               '20121006173100',
+                               '20121006173200',
+                               'Offset|0',
+                               'mdy',
+                               '1 minute ago',
+                               '"1 minute ago"',
+                       ),
+                       array(
+                               '20120617190900',
+                               '20120717190900',
+                               'Offset|0',
+                               'mdy',
+                               'June 17',
+                               'Another month'
+                       ),
+                       array(
+                               '19910130151500',
+                               '20120716193700',
+                               'Offset|0',
+                               'mdy',
+                               '15:15, January 30, 1991',
+                               'Different year',
+                       ),
+                       array(
+                               '20120101050000',
+                               '20120101080000',
+                               'Offset|-360',
+                               'mdy',
+                               'Yesterday at 23:00',
+                               '"Yesterday" across years with time correction',
+                       ),
+                       array(
+                               '20120714184300',
+                               '20120716184300',
+                               'Offset|-420',
+                               'mdy',
+                               'Saturday at 11:43',
+                               'Recent weekday with time correction',
+                       ),
+                       array(
+                               '20120714184300',
+                               '20120715040000',
+                               'Offset|-420',
+                               'mdy',
+                               '11:43',
+                               'Today at another time with time correction',
+                       ),
+                       array(
+                               '20120617190900',
+                               '20120717190900',
+                               'Offset|0',
+                               'dmy',
+                               '17 June',
+                               'Another month with dmy'
+                       ),
+                       array(
+                               '20120617190900',
+                               '20120717190900',
+                               'Offset|0',
+                               'ISO 8601',
+                               '06-17',
+                               'Another month with ISO-8601'
+                       ),
+                       array(
+                               '19910130151500',
+                               '20120716193700',
+                               'Offset|0',
+                               'ISO 8601',
+                               '1991-01-30T15:15:00',
+                               'Different year with ISO-8601',
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider provideRelativeTimestampTests
+        * @covers MWTimestamp::getRelativeTimestamp
+        */
+       public function testRelativeTimestamp(
+               $tsTime, // The timestamp to format
+               $currentTime, // The time to consider "now"
+               $timeCorrection, // The time offset to use
+               $dateFormat, // The date preference to use
+               $expectedOutput, // The expected output
+               $desc // Description
+       ) {
+               $user = $this->getMock( 'User' );
+               $user->expects( $this->any() )
+                       ->method( 'getOption' )
+                       ->with( 'timecorrection' )
+                       ->will( $this->returnValue( $timeCorrection ) );
+
+               $tsTime = new MWTimestamp( $tsTime );
+               $currentTime = new MWTimestamp( $currentTime );
+
+               $this->assertEquals(
+                       $expectedOutput,
+                       $tsTime->getRelativeTimestamp( $currentTime, $user ),
+                       $desc
+               );
+       }
+
+       public static function provideRelativeTimestampTests() {
+               return array(
+                       array(
+                               '20111231170000',
+                               '20120101000000',
+                               'Offset|0',
+                               'mdy',
+                               '7 hours ago',
+                               '"Yesterday" across years',
+                       ),
+                       array(
+                               '20120717190900',
+                               '20120717190929',
+                               'Offset|0',
+                               'mdy',
+                               '29 seconds ago',
+                               '"Just now"',
+                       ),
+                       array(
+                               '20120717190900',
+                               '20120717191530',
+                               'Offset|0',
+                               'mdy',
+                               '6 minutes and 30 seconds ago',
+                               'Combination of multiple units',
+                       ),
+                       array(
+                               '20121006173100',
+                               '20121006173200',
+                               'Offset|0',
+                               'mdy',
+                               '1 minute ago',
+                               '"1 minute ago"',
+                       ),
+                       array(
+                               '19910130151500',
+                               '20120716193700',
+                               'Offset|0',
+                               'mdy',
+                               '2 decades, 1 year, 168 days, 2 hours, 8 minutes and 48 seconds ago',
+                               'A long time ago',
+                       ),
+                       array(
+                               '20120101050000',
+                               '20120101080000',
+                               'Offset|-360',
+                               'mdy',
+                               '3 hours ago',
+                               '"Yesterday" across years with time correction',
+                       ),
+                       array(
+                               '20120714184300',
+                               '20120716184300',
+                               'Offset|-420',
+                               'mdy',
+                               '2 days ago',
+                               'Recent weekday with time correction',
+                       ),
+                       array(
+                               '20120714184300',
+                               '20120715040000',
+                               'Offset|-420',
+                               'mdy',
+                               '9 hours and 17 minutes ago',
+                               'Today at another time with time correction',
+                       ),
+               );
+       }
+}
index a3d68b6..2ba804f 100644 (file)
@@ -166,6 +166,29 @@ class StatusTest extends MediaWikiLangTestCase {
                }
        }
 
+       /**
+        * @dataProvider provideMockMessageDetails
+        * @covers Status::fatal
+        * @covers Status::getErrorsArray
+        * @covers Status::getStatusArray
+        */
+       public function testFatalWithMessage( $mockDetails ) {
+               $status = new Status();
+               $messages = $this->getMockMessages( $mockDetails );
+
+               foreach ( $messages as $message ) {
+                       $status->fatal( $message );
+               }
+               $errors = $status->getErrorsArray();
+
+               $this->assertEquals( count( $messages ), count( $errors ) );
+               foreach ( $messages as $key => $message ) {
+                       $expectedArray = array_merge( array( $message->getKey() ), $message->getParams() );
+                       $this->assertEquals( $errors[$key], $expectedArray );
+               }
+               $this->assertFalse( $status->isOK() );
+       }
+
        protected function getMockMessage( $key = 'key', $params = array() ) {
                $message = $this->getMockBuilder( 'Message' )
                        ->disableOriginalConstructor()
@@ -200,7 +223,6 @@ class StatusTest extends MediaWikiLangTestCase {
 
        /**
         * @covers Status::merge
-        * @todo test merge with $overwriteValue true
         */
        public function testMerge() {
                $status1 = new Status();
@@ -214,6 +236,23 @@ class StatusTest extends MediaWikiLangTestCase {
                $this->assertEquals( 2, count( $status1->getWarningsArray() ) + count( $status1->getErrorsArray() ) );
        }
 
+       /**
+        * @covers Status::merge
+        */
+       public function testMergeWithOverwriteValue() {
+               $status1 = new Status();
+               $status2 = new Status();
+               $message1 = $this->getMockMessage( 'warn1' );
+               $message2 = $this->getMockMessage( 'error2' );
+               $status1->warning( $message1 );
+               $status2->error( $message2 );
+               $status2->value = 'FooValue';
+
+               $status1->merge( $status2, true );
+               $this->assertEquals( 2, count( $status1->getWarningsArray() ) + count( $status1->getErrorsArray() ) );
+               $this->assertEquals( 'FooValue', $status1->getValue() );
+       }
+
        /**
         * @covers Status::hasMessage
         */
@@ -237,12 +276,14 @@ class StatusTest extends MediaWikiLangTestCase {
                $this->assertEquals( $expected, $method->invoke( $status, $params ) );
        }
 
-       /**
-        * @todo test cleanParams with a callback
-        */
        public static function provideCleanParams() {
+               $cleanCallback = function( $value ) {
+                       return '-' . $value . '-';
+               };
+
                return array(
                        array( false, array( 'foo' => 'bar' ), array( 'foo' => 'bar' ) ),
+                       array( $cleanCallback, array( 'foo' => 'bar' ), array( 'foo' => '-bar-' ) ),
                );
        }
 
diff --git a/tests/phpunit/includes/TimestampTest.php b/tests/phpunit/includes/TimestampTest.php
deleted file mode 100644 (file)
index 5338839..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-<?php
-
-/**
- * Tests timestamp parsing and output.
- */
-class TimestampTest extends MediaWikiLangTestCase {
-
-       protected function setUp() {
-               parent::setUp();
-
-               RequestContext::getMain()->setLanguage( Language::factory( 'en' ) );
-       }
-
-       /**
-        * Test parsing of valid timestamps and outputing to MW format.
-        * @dataProvider provideValidTimestamps
-        * @covers MWTimestamp::getTimestamp
-        */
-       public function testValidParse( $format, $original, $expected ) {
-               $timestamp = new MWTimestamp( $original );
-               $this->assertEquals( $expected, $timestamp->getTimestamp( TS_MW ) );
-       }
-
-       /**
-        * Test outputting valid timestamps to different formats.
-        * @dataProvider provideValidTimestamps
-        * @covers MWTimestamp::getTimestamp
-        */
-       public function testValidOutput( $format, $expected, $original ) {
-               $timestamp = new MWTimestamp( $original );
-               $this->assertEquals( $expected, (string)$timestamp->getTimestamp( $format ) );
-       }
-
-       /**
-        * Test an invalid timestamp.
-        * @expectedException TimestampException
-        * @covers MWTimestamp
-        */
-       public function testInvalidParse() {
-               new MWTimestamp( "This is not a timestamp." );
-       }
-
-       /**
-        * Test requesting an invalid output format.
-        * @expectedException TimestampException
-        * @covers MWTimestamp::getTimestamp
-        */
-       public function testInvalidOutput() {
-               $timestamp = new MWTimestamp( '1343761268' );
-               $timestamp->getTimestamp( 98 );
-       }
-
-       /**
-        * Returns a list of valid timestamps in the format:
-        * array( type, timestamp_of_type, timestamp_in_MW )
-        */
-       public static function provideValidTimestamps() {
-               return array(
-                       // Various formats
-                       array( TS_UNIX, '1343761268', '20120731190108' ),
-                       array( TS_MW, '20120731190108', '20120731190108' ),
-                       array( TS_DB, '2012-07-31 19:01:08', '20120731190108' ),
-                       array( TS_ISO_8601, '2012-07-31T19:01:08Z', '20120731190108' ),
-                       array( TS_ISO_8601_BASIC, '20120731T190108Z', '20120731190108' ),
-                       array( TS_EXIF, '2012:07:31 19:01:08', '20120731190108' ),
-                       array( TS_RFC2822, 'Tue, 31 Jul 2012 19:01:08 GMT', '20120731190108' ),
-                       array( TS_ORACLE, '31-07-2012 19:01:08.000000', '20120731190108' ),
-                       array( TS_POSTGRES, '2012-07-31 19:01:08 GMT', '20120731190108' ),
-                       // Some extremes and weird values
-                       array( TS_ISO_8601, '9999-12-31T23:59:59Z', '99991231235959' ),
-                       array( TS_UNIX, '-62135596801', '00001231235959' )
-               );
-       }
-
-       /**
-        * @dataProvider provideHumanTimestampTests
-        * @covers MWTimestamp::getHumanTimestamp
-        */
-       public function testHumanTimestamp(
-               $tsTime, // The timestamp to format
-               $currentTime, // The time to consider "now"
-               $timeCorrection, // The time offset to use
-               $dateFormat, // The date preference to use
-               $expectedOutput, // The expected output
-               $desc // Description
-       ) {
-               $user = $this->getMock( 'User' );
-               $user->expects( $this->any() )
-                       ->method( 'getOption' )
-                       ->with( 'timecorrection' )
-                       ->will( $this->returnValue( $timeCorrection ) );
-
-               $user->expects( $this->any() )
-                       ->method( 'getDatePreference' )
-                       ->will( $this->returnValue( $dateFormat ) );
-
-               $tsTime = new MWTimestamp( $tsTime );
-               $currentTime = new MWTimestamp( $currentTime );
-
-               $this->assertEquals(
-                       $expectedOutput,
-                       $tsTime->getHumanTimestamp( $currentTime, $user ),
-                       $desc
-               );
-       }
-
-       public static function provideHumanTimestampTests() {
-               return array(
-                       array(
-                               '20111231170000',
-                               '20120101000000',
-                               'Offset|0',
-                               'mdy',
-                               'Yesterday at 17:00',
-                               '"Yesterday" across years',
-                       ),
-                       array(
-                               '20120717190900',
-                               '20120717190929',
-                               'Offset|0',
-                               'mdy',
-                               'just now',
-                               '"Just now"',
-                       ),
-                       array(
-                               '20120717190900',
-                               '20120717191530',
-                               'Offset|0',
-                               'mdy',
-                               '6 minutes ago',
-                               'X minutes ago',
-                       ),
-                       array(
-                               '20121006173100',
-                               '20121006173200',
-                               'Offset|0',
-                               'mdy',
-                               '1 minute ago',
-                               '"1 minute ago"',
-                       ),
-                       array(
-                               '20120617190900',
-                               '20120717190900',
-                               'Offset|0',
-                               'mdy',
-                               'June 17',
-                               'Another month'
-                       ),
-                       array(
-                               '19910130151500',
-                               '20120716193700',
-                               'Offset|0',
-                               'mdy',
-                               '15:15, January 30, 1991',
-                               'Different year',
-                       ),
-                       array(
-                               '20120101050000',
-                               '20120101080000',
-                               'Offset|-360',
-                               'mdy',
-                               'Yesterday at 23:00',
-                               '"Yesterday" across years with time correction',
-                       ),
-                       array(
-                               '20120714184300',
-                               '20120716184300',
-                               'Offset|-420',
-                               'mdy',
-                               'Saturday at 11:43',
-                               'Recent weekday with time correction',
-                       ),
-                       array(
-                               '20120714184300',
-                               '20120715040000',
-                               'Offset|-420',
-                               'mdy',
-                               '11:43',
-                               'Today at another time with time correction',
-                       ),
-                       array(
-                               '20120617190900',
-                               '20120717190900',
-                               'Offset|0',
-                               'dmy',
-                               '17 June',
-                               'Another month with dmy'
-                       ),
-                       array(
-                               '20120617190900',
-                               '20120717190900',
-                               'Offset|0',
-                               'ISO 8601',
-                               '06-17',
-                               'Another month with ISO-8601'
-                       ),
-                       array(
-                               '19910130151500',
-                               '20120716193700',
-                               'Offset|0',
-                               'ISO 8601',
-                               '1991-01-30T15:15:00',
-                               'Different year with ISO-8601',
-                       ),
-               );
-       }
-
-       /**
-        * @dataProvider provideRelativeTimestampTests
-        * @covers MWTimestamp::getRelativeTimestamp
-        */
-       public function testRelativeTimestamp(
-               $tsTime, // The timestamp to format
-               $currentTime, // The time to consider "now"
-               $timeCorrection, // The time offset to use
-               $dateFormat, // The date preference to use
-               $expectedOutput, // The expected output
-               $desc // Description
-       ) {
-               $user = $this->getMock( 'User' );
-               $user->expects( $this->any() )
-                       ->method( 'getOption' )
-                       ->with( 'timecorrection' )
-                       ->will( $this->returnValue( $timeCorrection ) );
-
-               $tsTime = new MWTimestamp( $tsTime );
-               $currentTime = new MWTimestamp( $currentTime );
-
-               $this->assertEquals(
-                       $expectedOutput,
-                       $tsTime->getRelativeTimestamp( $currentTime, $user ),
-                       $desc
-               );
-       }
-
-       public static function provideRelativeTimestampTests() {
-               return array(
-                       array(
-                               '20111231170000',
-                               '20120101000000',
-                               'Offset|0',
-                               'mdy',
-                               '7 hours ago',
-                               '"Yesterday" across years',
-                       ),
-                       array(
-                               '20120717190900',
-                               '20120717190929',
-                               'Offset|0',
-                               'mdy',
-                               '29 seconds ago',
-                               '"Just now"',
-                       ),
-                       array(
-                               '20120717190900',
-                               '20120717191530',
-                               'Offset|0',
-                               'mdy',
-                               '6 minutes and 30 seconds ago',
-                               'Combination of multiple units',
-                       ),
-                       array(
-                               '20121006173100',
-                               '20121006173200',
-                               'Offset|0',
-                               'mdy',
-                               '1 minute ago',
-                               '"1 minute ago"',
-                       ),
-                       array(
-                               '19910130151500',
-                               '20120716193700',
-                               'Offset|0',
-                               'mdy',
-                               '2 decades, 1 year, 168 days, 2 hours, 8 minutes and 48 seconds ago',
-                               'A long time ago',
-                       ),
-                       array(
-                               '20120101050000',
-                               '20120101080000',
-                               'Offset|-360',
-                               'mdy',
-                               '3 hours ago',
-                               '"Yesterday" across years with time correction',
-                       ),
-                       array(
-                               '20120714184300',
-                               '20120716184300',
-                               'Offset|-420',
-                               'mdy',
-                               '2 days ago',
-                               'Recent weekday with time correction',
-                       ),
-                       array(
-                               '20120714184300',
-                               '20120715040000',
-                               'Offset|-420',
-                               'mdy',
-                               '9 hours and 17 minutes ago',
-                               'Today at another time with time correction',
-                       ),
-               );
-       }
-}
diff --git a/tests/phpunit/includes/TitleArrayFromResultTest.php b/tests/phpunit/includes/TitleArrayFromResultTest.php
new file mode 100644 (file)
index 0000000..534bd2c
--- /dev/null
@@ -0,0 +1,117 @@
+<?php
+
+/**
+ * @author Adam Shorland
+ * @covers TitleArrayFromResult
+ */
+class TitleArrayFromResultTest extends MediaWikiTestCase {
+
+       private function getMockResultWrapper( $row = null, $numRows = 1 ) {
+               $resultWrapper = $this->getMockBuilder( 'ResultWrapper' )
+                       ->disableOriginalConstructor();
+
+               $resultWrapper = $resultWrapper->getMock();
+               $resultWrapper->expects( $this->atLeastOnce() )
+                       ->method( 'current' )
+                       ->will( $this->returnValue( $row ) );
+               $resultWrapper->expects( $this->any() )
+                       ->method( 'numRows' )
+                       ->will( $this->returnValue( $numRows ) );
+
+               return $resultWrapper;
+       }
+
+       private function getRowWithTitle( $namespace = 3, $title = 'foo' ) {
+               $row = new stdClass();
+               $row->page_namespace = $namespace;
+               $row->page_title = $title;
+               return $row;
+       }
+
+       private function getTitleArrayFromResult( $resultWrapper ) {
+               return new TitleArrayFromResult( $resultWrapper );
+       }
+
+       /**
+        * @covers TitleArrayFromResult::__construct
+        */
+       public function testConstructionWithFalseRow() {
+               $row = false;
+               $resultWrapper = $this->getMockResultWrapper( $row );
+
+               $object = $this->getTitleArrayFromResult( $resultWrapper );
+
+               $this->assertEquals( $resultWrapper, $object->res );
+               $this->assertSame( 0, $object->key );
+               $this->assertEquals( $row, $object->current );
+       }
+
+       /**
+        * @covers TitleArrayFromResult::__construct
+        */
+       public function testConstructionWithRow() {
+               $namespace = 0;
+               $title = 'foo';
+               $row = $this->getRowWithTitle( $namespace, $title );
+               $resultWrapper = $this->getMockResultWrapper( $row );
+
+               $object = $this->getTitleArrayFromResult( $resultWrapper );
+
+               $this->assertEquals( $resultWrapper, $object->res );
+               $this->assertSame( 0, $object->key );
+               $this->assertInstanceOf( 'Title', $object->current );
+               $this->assertEquals( $namespace, $object->current->mNamespace );
+               $this->assertEquals( $title, $object->current->mTextform );
+       }
+
+       public function provideNumberOfRows() {
+               return array(
+                       array( 0 ),
+                       array( 1 ),
+                       array( 122 ),
+               );
+       }
+
+       /**
+        * @dataProvider provideNumberOfRows
+        * @covers TitleArrayFromResult::count
+        */
+       public function testCountWithVaryingValues( $numRows ) {
+               $object = $this->getTitleArrayFromResult( $this->getMockResultWrapper( $this->getRowWithTitle(), $numRows ) );
+               $this->assertEquals( $numRows, $object->count() );
+       }
+
+       /**
+        * @covers TitleArrayFromResult::current
+        */
+       public function testCurrentAfterConstruction() {
+               $namespace = 0;
+               $title = 'foo';
+               $row = $this->getRowWithTitle( $namespace, $title );
+               $object = $this->getTitleArrayFromResult( $this->getMockResultWrapper( $row ) );
+               $this->assertInstanceOf( 'Title', $object->current() );
+               $this->assertEquals( $namespace, $object->current->mNamespace );
+               $this->assertEquals( $title, $object->current->mTextform );
+       }
+
+       public function provideTestValid() {
+               return array(
+                       array( $this->getRowWithTitle(), true ),
+                       array( false, false ),
+               );
+       }
+
+       /**
+        * @dataProvider provideTestValid
+        * @covers TitleArrayFromResult::valid
+        */
+       public function testValid( $input, $expected ) {
+               $object = $this->getTitleArrayFromResult( $this->getMockResultWrapper( $input ) );
+               $this->assertEquals( $expected, $object->valid() );
+       }
+
+       //@todo unit test for key()
+       //@todo unit test for next()
+       //@todo unit test for rewind()
+
+}
\ No newline at end of file
diff --git a/tests/phpunit/includes/UserArrayFromResultTest.php b/tests/phpunit/includes/UserArrayFromResultTest.php
new file mode 100644 (file)
index 0000000..adc330d
--- /dev/null
@@ -0,0 +1,112 @@
+<?php
+
+/**
+ * @author Adam Shorland
+ * @covers UserArrayFromResult
+ */
+class UserArrayFromResultTest extends MediaWikiTestCase {
+
+       private function getMockResultWrapper( $row = null, $numRows = 1 ) {
+               $resultWrapper = $this->getMockBuilder( 'ResultWrapper' )
+                       ->disableOriginalConstructor();
+
+               $resultWrapper = $resultWrapper->getMock();
+               $resultWrapper->expects( $this->atLeastOnce() )
+                       ->method( 'current' )
+                       ->will( $this->returnValue( $row ) );
+               $resultWrapper->expects( $this->any() )
+                       ->method( 'numRows' )
+                       ->will( $this->returnValue( $numRows ) );
+
+               return $resultWrapper;
+       }
+
+       private function getRowWithUsername( $username = 'fooUser' ) {
+               $row = new stdClass();
+               $row->user_name = $username;
+               return $row;
+       }
+
+       private function getUserArrayFromResult( $resultWrapper ) {
+               return new UserArrayFromResult( $resultWrapper );
+       }
+
+       /**
+        * @covers UserArrayFromResult::__construct
+        */
+       public function testConstructionWithFalseRow() {
+               $row = false;
+               $resultWrapper = $this->getMockResultWrapper( $row );
+
+               $object = $this->getUserArrayFromResult( $resultWrapper );
+
+               $this->assertEquals( $resultWrapper, $object->res );
+               $this->assertSame( 0, $object->key );
+               $this->assertEquals( $row, $object->current );
+       }
+
+       /**
+        * @covers UserArrayFromResult::__construct
+        */
+       public function testConstructionWithRow() {
+               $username = 'addshore';
+               $row = $this->getRowWithUsername( $username );
+               $resultWrapper = $this->getMockResultWrapper( $row );
+
+               $object = $this->getUserArrayFromResult( $resultWrapper );
+
+               $this->assertEquals( $resultWrapper, $object->res );
+               $this->assertSame( 0, $object->key );
+               $this->assertInstanceOf( 'User', $object->current );
+               $this->assertEquals( $username, $object->current->mName );
+       }
+
+       public function provideNumberOfRows() {
+               return array(
+                       array( 0 ),
+                       array( 1 ),
+                       array( 122 ),
+               );
+       }
+
+       /**
+        * @dataProvider provideNumberOfRows
+        * @covers UserArrayFromResult::count
+        */
+       public function testCountWithVaryingValues( $numRows ) {
+               $object = $this->getUserArrayFromResult( $this->getMockResultWrapper( $this->getRowWithUsername(), $numRows ) );
+               $this->assertEquals( $numRows, $object->count() );
+       }
+
+       /**
+        * @covers UserArrayFromResult::current
+        */
+       public function testCurrentAfterConstruction() {
+               $username = 'addshore';
+               $userRow = $this->getRowWithUsername( $username );
+               $object = $this->getUserArrayFromResult( $this->getMockResultWrapper( $userRow ) );
+               $this->assertInstanceOf( 'User', $object->current() );
+               $this->assertEquals( $username, $object->current()->mName );
+       }
+
+       public function provideTestValid() {
+               return array(
+                       array( $this->getRowWithUsername(), true ),
+                       array( false, false ),
+               );
+       }
+
+       /**
+        * @dataProvider provideTestValid
+        * @covers UserArrayFromResult::valid
+        */
+       public function testValid( $input, $expected ) {
+               $object = $this->getUserArrayFromResult( $this->getMockResultWrapper( $input ) );
+               $this->assertEquals( $expected, $object->valid() );
+       }
+
+       //@todo unit test for key()
+       //@todo unit test for next()
+       //@todo unit test for rewind()
+
+}
\ No newline at end of file
index ff33e82..b7df3f6 100644 (file)
@@ -234,4 +234,49 @@ class UserTest extends MediaWikiTestCase {
                $this->assertEquals( $wgDefaultUserOptions['cols'], $this->user->getOption( 'cols' ) );
                $this->assertEquals( 'test', $this->user->getOption( 'someoption' ) );
        }
+
+       /**
+        * Helper, fetch user properties from the database.
+        * @param int $userId
+        */
+       function dbUserProperties( $userId ) {
+               $res = wfGetDB( DB_SLAVE )->select(
+                       'user_properties',
+                       array( 'up_property', 'up_value' ),
+                       array( 'up_user' => $userId ),
+                       __METHOD__
+               );
+               $ret = array();
+               foreach( $res as $row ) {
+                       $ret[$row->up_property] = $row->up_value;
+               }
+               return $ret;
+       }
+
+       public function testOnlySaveChangedOptions() {
+               $user = User::newFromName( 'UnitTestUser2' );
+               $user->addToDatabase();
+
+               // Fresh user only has default, so nothing should be in the DB
+               $dbProps = $this->dbUserProperties( $user->getId() );
+               $this->assertEmpty( $dbProps,
+                       "A new user should not have any user property saved in the DB" );
+
+               // Make sure we only save the altered option
+               $user->setOption( 'changed_opt', 'alix_20281' );
+               $user->setOption( 'switch', 1 );
+               $user->setOption( 'anotherswitch', 1 );
+               $user->saveSettings();
+
+               $expected = array (
+                       'changed_opt' => 'alix_20281',
+                       'switch' => '1',
+                       'anotherswitch' => '1',
+               );
+               $dbProps = $this->dbUserProperties( $user->getId() );
+
+               $this->assertEquals( $expected, $dbProps,
+                       "non default options should be saved, and default ones should not" );
+
+       }
 }
index 759dfc7..54f447a 100644 (file)
@@ -8,7 +8,7 @@
  */
 class ApiFormatPhpTest extends ApiFormatTestBase {
 
-       public function testValidyntax( ) {
+       public function testValidSyntax( ) {
                $data = $this->apiRequest( 'php', array( 'action' => 'query', 'meta' => 'siteinfo' ) );
 
                $this->assertInternalType( 'array', unserialize( $data ) );
index 531a954..3d2b5d8 100644 (file)
@@ -6,7 +6,7 @@
  * @group Database
  */
 class RefreshLinksPartitionTest extends MediaWikiTestCase {
-       function __construct( $name = null, array $data = array(), $dataName = '' ) {
+       public function __construct( $name = null, array $data = array(), $dataName = '' ) {
                parent::__construct( $name, $data, $dataName );
 
                $this->tablesUsed[] = 'page';
@@ -20,9 +20,6 @@ class RefreshLinksPartitionTest extends MediaWikiTestCase {
        public function testRefreshLinks( $ns, $dbKey, $pages ) {
                $title = Title::makeTitle( $ns, $dbKey );
 
-               $dbw = wfGetDB( DB_MASTER );
-
-               $rows = array();
                foreach ( $pages as $page ) {
                        list( $bns, $bdbkey ) = $page;
                        $bpage = WikiPage::factory( Title::makeTitle( $bns, $bdbkey ) );
index d8b90d5..be18a49 100644 (file)
@@ -38,7 +38,6 @@ class AutoLoaderTest extends MediaWikiTestCase {
 
        protected static function checkAutoLoadConf() {
                global $wgAutoloadLocalClasses, $wgAutoloadClasses, $IP;
-               $supportsParsekit = function_exists( 'parsekit_compile_file' );
 
                // wgAutoloadLocalClasses has precedence, just like in includes/AutoLoader.php
                $expected = $wgAutoloadLocalClasses + $wgAutoloadClasses;
@@ -54,17 +53,44 @@ class AutoLoaderTest extends MediaWikiTestCase {
                        } else {
                                $filePath = $file;
                        }
-                       if ( $supportsParsekit ) {
-                               $parseInfo = parsekit_compile_file( "$filePath" );
-                               $classes = array_keys( $parseInfo['class_table'] );
-                       } else {
-                               $contents = file_get_contents( "$filePath" );
-                               $m = array();
-                               preg_match_all( '/\n\s*(?:final)?\s*(?:abstract)?\s*(?:class|interface)\s+([a-zA-Z0-9_]+)/', $contents, $m, PREG_PATTERN_ORDER );
-                               $classes = $m[1];
+
+                       $contents = file_get_contents( $filePath );
+
+                       // We could use token_get_all() here, but this is faster
+                       $matches = array();
+                       preg_match_all( '/
+                               ^ [\t ]* (?:
+                                       (?:final\s+)? (?:abstract\s+)? (?:class|interface) \s+
+                                       (?P<class> [a-zA-Z0-9_]+)
+                               |
+                                       class_alias \s* \( \s*
+                                               ([\'"]) (?P<original> [^\'"]+) \g{-2} \s* , \s*
+                                               ([\'"]) (?P<alias> [^\'"]+ ) \g{-2} \s*
+                                       \) \s* ;
+                               )
+                       /imx', $contents, $matches, PREG_SET_ORDER );
+
+                       $classesInFile = array();
+                       $aliasesInFile = array();
+
+                       foreach ( $matches as $match ) {
+                               if ( !empty( $match['class'] ) ) {
+                                       $actual[$match['class']] = $file;
+                                       $classesInFile[$match['class']] = true;
+                               } else {
+                                       $aliasesInFile[$match['alias']] = $match['original'];
+                               }
                        }
-                       foreach ( $classes as $class ) {
-                               $actual[$class] = $file;
+
+                       // Only accept aliases for classes in the same file, because for correct
+                       // behavior, all aliases for a class must be set up when the class is loaded
+                       // (see <https://bugs.php.net/bug.php?id=61422>).
+                       foreach ( $aliasesInFile as $alias => $class ) {
+                               if ( isset( $classesInFile[$class] ) ) {
+                                       $actual[$alias] = $file;
+                               } else {
+                                       $actual[$alias] = "[original class not in $file]";
+                               }
                        }
                }