Merge "mediawiki.ui: Bring checkbox and radio on par with WikimediaUI design"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 16 Aug 2017 15:44:30 +0000 (15:44 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 16 Aug 2017 15:44:30 +0000 (15:44 +0000)
284 files changed:
RELEASE-NOTES-1.30
autoload.php
composer.json
includes/AuthPlugin.php
includes/Block.php
includes/DefaultSettings.php
includes/EditPage.php
includes/FauxRequest.php
includes/FileDeleteForm.php
includes/GlobalFunctions.php
includes/Licenses.php
includes/Linker.php
includes/MagicWord.php
includes/MagicWordArray.php
includes/Message.php
includes/MovePage.php
includes/OutputPage.php
includes/PHPVersionCheck.php
includes/Preferences.php
includes/ProtectionForm.php
includes/RawMessage.php [new file with mode: 0644]
includes/Revision.php
includes/RevisionList.php
includes/Sanitizer.php
includes/SiteConfiguration.php
includes/StubObject.php
includes/Title.php
includes/api/ApiAuthManagerHelper.php
includes/api/ApiBase.php
includes/api/ApiCSPReport.php
includes/api/ApiDelete.php
includes/api/ApiMain.php
includes/api/ApiParamInfo.php
includes/api/ApiQueryBase.php
includes/api/ApiQueryImageInfo.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQueryWatchlist.php
includes/api/SearchApi.php
includes/api/i18n/ar.json
includes/api/i18n/he.json
includes/cache/LinkBatch.php
includes/cache/MessageCache.php
includes/cache/localisation/LocalisationCache.php
includes/changes/ChangesFeed.php
includes/changes/ChangesList.php
includes/changes/ChangesListFilterGroup.php
includes/changes/EnhancedChangesList.php
includes/changes/OldChangesList.php
includes/changes/RecentChange.php
includes/changetags/ChangeTags.php
includes/collation/CustomUppercaseCollation.php
includes/collation/NumericUppercaseCollation.php
includes/compat/normal/UtfNormal.php
includes/content/ContentHandler.php
includes/content/JsonContent.php
includes/content/TextContent.php
includes/content/TextContentHandler.php
includes/context/ContextSource.php
includes/context/RequestContext.php
includes/db/ORAResult.php
includes/debug/logger/LegacyLogger.php
includes/deferred/SiteStatsUpdate.php
includes/diff/DiffFormatter.php
includes/exception/MWExceptionHandler.php
includes/export/DumpFilter.php
includes/export/DumpNamespaceFilter.php
includes/export/WikiExporter.php
includes/filebackend/filejournal/DBFileJournal.php
includes/filerepo/file/File.php
includes/filerepo/file/UnregisteredLocalFile.php
includes/gallery/TraditionalImageGallery.php
includes/htmlform/HTMLForm.php
includes/import/UploadSourceAdapter.php
includes/import/WikiImporter.php
includes/installer/DatabaseUpdater.php
includes/installer/Installer.php
includes/installer/SqliteInstaller.php
includes/installer/i18n/ar.json
includes/installer/i18n/be-tarask.json
includes/installer/i18n/bn.json
includes/installer/i18n/de.json
includes/installer/i18n/en.json
includes/installer/i18n/he.json
includes/installer/i18n/hi.json
includes/installer/i18n/ko.json
includes/installer/i18n/mk.json
includes/installer/i18n/nb.json
includes/installer/i18n/nl.json
includes/installer/i18n/pt.json
includes/installer/i18n/qqq.json
includes/installer/i18n/ru.json
includes/installer/i18n/sv.json
includes/installer/i18n/zh-hans.json
includes/jobqueue/JobQueueFederated.php
includes/jobqueue/JobQueueGroup.php
includes/libs/ArrayUtils.php
includes/libs/IEUrlExtension.php
includes/libs/MemoizedCallable.php
includes/libs/MultiHttpClient.php
includes/libs/composer/ComposerInstalled.php
includes/libs/composer/ComposerLock.php
includes/libs/filebackend/FileBackend.php
includes/libs/filebackend/SwiftFileBackend.php
includes/libs/filebackend/fileop/FileOp.php
includes/libs/lockmanager/ScopedLock.php
includes/libs/mime/IEContentAnalyzer.php
includes/libs/mime/XmlTypeCheck.php
includes/libs/objectcache/BagOStuff.php
includes/libs/objectcache/MultiWriteBagOStuff.php
includes/libs/objectcache/RESTBagOStuff.php
includes/libs/objectcache/WANObjectCache.php
includes/libs/rdbms/TransactionProfiler.php
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/database/DatabaseMysqlBase.php
includes/libs/rdbms/encasing/Blob.php
includes/libs/rdbms/lbfactory/ILBFactory.php
includes/libs/redis/RedisConnectionPool.php
includes/libs/stats/NullStatsdDataFactory.php
includes/logging/LogEventsList.php
includes/logging/LogPage.php
includes/mail/UserMailer.php
includes/media/Bitmap.php
includes/media/Bitmap_ClientOnly.php
includes/media/FormatMetadata.php
includes/media/ImageHandler.php
includes/media/MediaHandler.php
includes/media/SVG.php
includes/media/TransformationalImageHandler.php
includes/media/WebP.php
includes/objectcache/SqlBagOStuff.php
includes/page/Article.php
includes/page/ImagePage.php
includes/page/WikiPage.php
includes/parser/LinkHolderArray.php
includes/parser/Parser.php
includes/parser/ParserOptions.php
includes/parser/Preprocessor_DOM.php
includes/parser/Preprocessor_Hash.php
includes/profiler/Profiler.php
includes/profiler/SectionProfiler.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderContext.php
includes/resourceloader/ResourceLoaderJqueryMsgModule.php
includes/revisiondelete/RevDelList.php
includes/revisiondelete/RevisionDeleter.php
includes/search/NullIndexField.php
includes/search/SearchEngine.php
includes/search/SearchExactMatchRescorer.php
includes/search/SearchHighlighter.php
includes/search/SearchIndexField.php
includes/search/SearchIndexFieldDefinition.php
includes/search/SearchMySQL.php
includes/search/SearchResult.php
includes/search/SearchSqlite.php
includes/search/SearchSuggestion.php
includes/session/PHPSessionHandler.php
includes/session/SessionProvider.php
includes/session/Token.php
includes/site/Site.php
includes/site/SiteImporter.php
includes/skins/BaseTemplate.php
includes/skins/QuickTemplate.php
includes/skins/Skin.php
includes/specialpage/AuthManagerSpecialPage.php
includes/specialpage/LoginSignupSpecialPage.php
includes/specialpage/SpecialPageFactory.php
includes/specials/SpecialBlock.php
includes/specials/SpecialExport.php
includes/specials/SpecialFilepath.php
includes/specials/SpecialMediaStatistics.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialPageLanguage.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialRevisiondelete.php
includes/specials/SpecialSearch.php
includes/specials/SpecialWatchlist.php
includes/specials/helpers/LoginHelper.php
includes/specials/pagers/ProtectedPagesPager.php
includes/specials/pagers/UsersPager.php
includes/templates/EnhancedChangesListGroup.mustache
includes/tidy/Balancer.php
includes/upload/UploadBase.php
includes/upload/UploadFromFile.php
includes/upload/UploadFromStash.php
includes/upload/UploadFromUrl.php
includes/user/User.php
includes/utils/AutoloadGenerator.php
includes/utils/BatchRowUpdate.php
includes/utils/BatchRowWriter.php
includes/widget/search/InterwikiSearchResultSetWidget.php
includes/widget/search/InterwikiSearchResultWidget.php
languages/Language.php
languages/classes/LanguageEn.php
languages/classes/LanguageKk.php
languages/classes/LanguageSr.php
languages/i18n/ar.json
languages/i18n/ast.json
languages/i18n/ba.json
languages/i18n/be-tarask.json
languages/i18n/bn.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/gd.json
languages/i18n/gl.json
languages/i18n/gu.json
languages/i18n/ha.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hu.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/kab.json
languages/i18n/ko.json
languages/i18n/lb.json
languages/i18n/li.json
languages/i18n/mk.json
languages/i18n/mr.json
languages/i18n/my.json
languages/i18n/nb.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/rif.json
languages/i18n/ro.json
languages/i18n/ru.json
languages/i18n/sd.json
languages/i18n/shi.json
languages/i18n/shn.json
languages/i18n/skr-arab.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/tay.json [new file with mode: 0644]
languages/i18n/tl.json
languages/i18n/ug-arab.json
languages/i18n/uk.json
languages/i18n/vi.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesKm.php
maintenance/hhvm/makeRepo.php
maintenance/refreshLinks.php
phpcs.xml
resources/Resources.php
resources/src/jquery/jquery.mwExtension.js
resources/src/jquery/jquery.tablesorter.js
resources/src/mediawiki.legacy/wikibits.js
resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
resources/src/mediawiki.special/mediawiki.special.search.interwikiwidget.styles.less
resources/src/mediawiki.special/mediawiki.special.watchlist.css [new file with mode: 0644]
resources/src/mediawiki.special/mediawiki.special.watchlist.js
resources/src/mediawiki.toolbar/toolbar.js
resources/src/mediawiki/mediawiki.util.js
tests/common/TestsAutoLoader.php
tests/parser/ParserTestRunner.php
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/GlobalFunctions/wfThumbIsStandardTest.php
tests/phpunit/includes/WatchedItemQueryServiceUnitTest.php
tests/phpunit/includes/WatchedItemStoreUnitTest.php
tests/phpunit/includes/auth/LegacyHookPreAuthenticationProviderTest.php
tests/phpunit/includes/changes/ChangesListFilterTest.php
tests/phpunit/includes/changes/EnhancedChangesListTest.php
tests/phpunit/includes/changes/OldChangesListTest.php
tests/phpunit/includes/config/EtcdConfigTest.php
tests/phpunit/includes/content/WikitextStructureTest.php
tests/phpunit/includes/interwiki/ClassicInterwikiLookupTest.php
tests/phpunit/includes/libs/objectcache/WANObjectCacheTest.php
tests/phpunit/includes/media/FakeDimensionFile.php
tests/phpunit/includes/search/SearchIndexFieldTest.php
tests/phpunit/includes/specials/SpecialWatchlistTest.php
tests/phpunit/mocks/media/MockMediaHandlerFactory.php [deleted file]
tests/phpunit/mocks/media/MockOggHandler.php [deleted file]
tests/qunit/data/load.mock.php
tests/qunit/suites/resources/jquery/jquery.tablesorter.parsers.test.js
tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js

index 452cb35..9474f21 100644 (file)
@@ -49,6 +49,12 @@ section).
 * Added RecentChangesPurgeRows hook to allow extensions to purge data that
   depends on the recentchanges table.
 * Added JS config values wgDiffOldId/wgDiffNewId to the output of diff pages.
+* (T2424) Added direct unwatch links to entries in Special:Watchlist (if the
+  'watchlistunwatchlinks' preference option is enabled). With JavaScript
+  enabled, these links toggle so the user can also re-watch pages that have
+  just been unwatched.
+* Added $wgParserTestMediaHandlers, where mock media handlers can be passed to
+  MediaHandlerFactory for parser tests.
 
 === Languages updated in 1.30 ===
 
@@ -158,6 +164,10 @@ changes to languages because of Phabricator reports.
   nothing and is deprecated.
 * mw.util.escapeId() was deprecated, use escapeIdForAttribute() or
   escapeIdForLink().
+* MagicWord::replaceMultiple() (deprecated in 1.25) was removed.
+* WikiImporter now requires the second parameter to be an instance of the Config,
+  class. Prior to that, the Config parameter was optional (a behavior deprecated in
+  1.25).
 
 == Compatibility ==
 MediaWiki 1.30 requires PHP 5.5.9 or later. There is experimental support for
index 508e75b..d9e85bd 100644 (file)
@@ -1180,7 +1180,7 @@ $wgAutoloadLocalClasses = [
        'RangeChronologicalPager' => __DIR__ . '/includes/pager/RangeChronologicalPager.php',
        'RangeDifference' => __DIR__ . '/includes/diff/DiffEngine.php',
        'RawAction' => __DIR__ . '/includes/actions/RawAction.php',
-       'RawMessage' => __DIR__ . '/includes/Message.php',
+       'RawMessage' => __DIR__ . '/includes/RawMessage.php',
        'ReadOnlyError' => __DIR__ . '/includes/exception/ReadOnlyError.php',
        'ReadOnlyMode' => __DIR__ . '/includes/ReadOnlyMode.php',
        'ReassignEdits' => __DIR__ . '/maintenance/reassignEdits.php',
index bc48360..32933e6 100644 (file)
@@ -53,7 +53,7 @@
                "jakub-onderka/php-parallel-lint": "0.9.2",
                "jetbrains/phpstorm-stubs": "dev-master#1b9906084d6635456fcf3f3a01f0d7d5b99a578a",
                "justinrainbow/json-schema": "~5.2",
-               "mediawiki/mediawiki-codesniffer": "0.10.1",
+               "mediawiki/mediawiki-codesniffer": "0.11.0",
                "monolog/monolog": "~1.22.1",
                "nikic/php-parser": "2.1.0",
                "nmred/kafka-php": "0.1.5",
index b85e1d6..b73ecbd 100644 (file)
@@ -73,8 +73,8 @@ class AuthPlugin {
        /**
         * Modify options in the login template.
         *
-        * @param BaseTemplate $template
-        * @param string $type 'signup' or 'login'. Added in 1.16.
+        * @param BaseTemplate &$template
+        * @param string &$type 'signup' or 'login'. Added in 1.16.
         */
        public function modifyUITemplate( &$template, &$type ) {
                # Override this!
@@ -124,7 +124,7 @@ class AuthPlugin {
         *
         * @deprecated since 1.26, use the UserLoggedIn hook instead. And assigning
         *  a different User object to $user is no longer supported.
-        * @param User $user
+        * @param User &$user
         * @return bool
         */
        public function updateUser( &$user ) {
@@ -286,7 +286,7 @@ class AuthPlugin {
         *
         * @deprecated since 1.26, use the UserLoggedIn hook instead. And assigning
         *  a different User object to $user is no longer supported.
-        * @param User $user
+        * @param User &$user
         * @param bool $autocreate True if user is being autocreated on login
         */
        public function initUser( &$user, $autocreate = false ) {
@@ -306,7 +306,7 @@ class AuthPlugin {
        /**
         * Get an instance of a User object
         *
-        * @param User $user
+        * @param User &$user
         *
         * @return AuthPluginUser
         */
@@ -359,6 +359,7 @@ class AuthPluginUser {
 
        /**
         * @deprecated since 1.28, use SessionManager::invalidateSessionForUser() instead.
+        * @return bool
         */
        public function resetAuthToken() {
                # Override this!
index 8fc2686..843ea54 100644 (file)
@@ -1501,7 +1501,7 @@ class Block {
                        return $id;
                }
                $hmac = MWCryptHash::hmac( $id, $secretKey, false );
-               $cookieValue =  $id . '!' . $hmac;
+               $cookieValue = $id . '!' . $hmac;
                return $cookieValue;
        }
 
index a28aa5b..4e162f6 100644 (file)
@@ -959,6 +959,23 @@ $wgTrustedMediaFormats = [
  */
 $wgMediaHandlers = [];
 
+/**
+ * Media handler overrides for parser tests (they don't need to generate actual
+ * thumbnails, so a mock will do)
+ */
+$wgParserTestMediaHandlers = [
+       'image/jpeg' => 'MockBitmapHandler',
+       'image/png' => 'MockBitmapHandler',
+       'image/gif' => 'MockBitmapHandler',
+       'image/tiff' => 'MockBitmapHandler',
+       'image/webp' => 'MockBitmapHandler',
+       'image/x-ms-bmp' => 'MockBitmapHandler',
+       'image/x-bmp' => 'MockBitmapHandler',
+       'image/x-xcf' => 'MockBitmapHandler',
+       'image/svg+xml' => 'MockSvgHandler',
+       'image/vnd.djvu' => 'MockDjVuHandler',
+];
+
 /**
  * Plugins for page content model handling.
  * Each entry in the array maps a model id to a class name or callback
@@ -4933,6 +4950,7 @@ $wgDefaultUserOptions = [
        'watchlisthidepatrolled' => 0,
        'watchlisthidecategorization' => 1,
        'watchlistreloadautomatically' => 0,
+       'watchlistunwatchlinks' => 0,
        'watchmoves' => 0,
        'watchrollback' => 0,
        'wllimit' => 250,
@@ -5797,7 +5815,7 @@ $wgPasswordAttemptThrottle = [
        // Long term limit. We need to balance the risk
        // of somebody using this as a DoS attack to lock someone
        // out of their account, and someone doing a brute force attack.
-       [ 'count' => 150, 'seconds' => 60*60*48 ],
+       [ 'count' => 150, 'seconds' => 60 * 60 * 48 ],
 ];
 
 /**
index cfb78cd..49341c5 100644 (file)
@@ -852,7 +852,7 @@ class EditPage {
 
        /**
         * This function collects the form data and uses it to populate various member variables.
-        * @param WebRequest $request
+        * @param WebRequest &$request
         * @throws ErrorPageError
         */
        public function importFormData( &$request ) {
@@ -1080,7 +1080,7 @@ class EditPage {
         * this method should be overridden and return the page text that will be used
         * for saving, preview parsing and so on...
         *
-        * @param WebRequest $request
+        * @param WebRequest &$request
         * @return string|null
         */
        protected function importContentFormData( &$request ) {
@@ -1432,7 +1432,7 @@ class EditPage {
        /**
         * Make sure the form isn't faking a user's credentials.
         *
-        * @param WebRequest $request
+        * @param WebRequest &$request
         * @return bool
         * @private
         */
@@ -1475,7 +1475,7 @@ class EditPage {
 
        /**
         * Attempt submission
-        * @param array|bool $resultDetails See docs for $result in internalAttemptSave
+        * @param array|bool &$resultDetails See docs for $result in internalAttemptSave
         * @throws UserBlockedError|ReadOnlyError|ThrottledError|PermissionsError
         * @return Status The resulting status object.
         */
@@ -1721,7 +1721,7 @@ class EditPage {
        /**
         * Attempt submission (no UI)
         *
-        * @param array $result Array to add statuses to, currently with the
+        * @param array &$result Array to add statuses to, currently with the
         *   possible keys:
         *   - spam (string): Spam string from content if any spam is detected by
         *     matchSpamRegex.
@@ -4202,7 +4202,7 @@ class EditPage {
         * Returns an array of html code of the following checkboxes old style:
         * minor and watch
         *
-        * @param int $tabindex Current tabindex
+        * @param int &$tabindex Current tabindex
         * @param array $checked See getCheckboxesDefinition()
         * @return array
         */
@@ -4260,7 +4260,7 @@ class EditPage {
         * Returns an array of html code of the following checkboxes:
         * minor and watch
         *
-        * @param int $tabindex Current tabindex
+        * @param int &$tabindex Current tabindex
         * @param array $checked Array of checkbox => bool, where bool indicates the checked
         *                 status of the checkbox
         *
@@ -4333,7 +4333,7 @@ class EditPage {
                $newPage = !$this->mTitle->exists();
 
                if ( $labelAsPublish ) {
-                       $buttonLabelKey =  $newPage ? 'publishpage' : 'publishchanges';
+                       $buttonLabelKey = $newPage ? 'publishpage' : 'publishchanges';
                } else {
                        $buttonLabelKey = $newPage ? 'savearticle' : 'savechanges';
                }
@@ -4345,7 +4345,7 @@ class EditPage {
         * Returns an array of html code of the following buttons:
         * save, diff and preview
         *
-        * @param int $tabindex Current tabindex
+        * @param int &$tabindex Current tabindex
         *
         * @return array
         */
index 3b2283b..2f7f75b 100644 (file)
@@ -126,7 +126,7 @@ class FauxRequest extends WebRequest {
 
        /**
         * @since 1.26
-        * @param string $name Unprefixed name of the cookie to set
+        * @param string $key Unprefixed name of the cookie to set
         * @param string|null $value Value of the cookie to set
         * @param string|null $prefix Cookie prefix. Defaults to $wgCookiePrefix
         */
@@ -152,6 +152,7 @@ class FauxRequest extends WebRequest {
 
        /**
         * @since 1.25
+        * @param string $url
         */
        public function setRequestURL( $url ) {
                $this->requestUrl = $url;
@@ -160,6 +161,7 @@ class FauxRequest extends WebRequest {
        /**
         * @since 1.25 MWException( "getRequestURL not implemented" )
         * no longer thrown.
+        * @return string
         */
        public function getRequestURL() {
                if ( $this->requestUrl === null ) {
index 8a1cd35..8c843c4 100644 (file)
@@ -143,9 +143,9 @@ class FileDeleteForm {
        /**
         * Really delete the file
         *
-        * @param Title $title
-        * @param File $file
-        * @param string $oldimage Archive name
+        * @param Title &$title
+        * @param File &$file
+        * @param string &$oldimage Archive name
         * @param string $reason Reason of the deletion
         * @param bool $suppress Whether to mark all deleted versions as restricted
         * @param User $user User object performing the request
@@ -398,8 +398,8 @@ class FileDeleteForm {
         * value was provided, does it correspond to an
         * existing, local, old version of this file?
         *
-        * @param File $file
-        * @param File $oldfile
+        * @param File &$file
+        * @param File &$oldfile
         * @param File $oldimage
         * @return bool
         */
index 70784ba..49159ed 100644 (file)
@@ -241,7 +241,7 @@ function wfArrayFilterByKey( array $arr, callable $callback ) {
  * @param string|int $key
  * @param mixed $value
  * @param mixed $default
- * @param array $changed Array to alter
+ * @param array &$changed Array to alter
  * @throws MWException
  */
 function wfAppendToArrayIfNotDefault( $key, $value, $default, &$changed ) {
@@ -1750,7 +1750,7 @@ function wfEscapeWikiText( $text ) {
  * If source is NULL, it just returns the value, it doesn't set the variable
  * If force is true, it will set the value even if source is NULL
  *
- * @param mixed $dest
+ * @param mixed &$dest
  * @param mixed $source
  * @param bool $force
  * @return mixed
@@ -1766,7 +1766,7 @@ function wfSetVar( &$dest, $source, $force = false ) {
 /**
  * As for wfSetVar except setting a bit
  *
- * @param int $dest
+ * @param int &$dest
  * @param int $bit
  * @param bool $state
  *
@@ -2234,7 +2234,8 @@ function wfIniGetBool( $setting ) {
  * (https://bugs.php.net/bug.php?id=26285) and the locale problems on Linux in
  * PHP 5.2.6+ (bug backported to earlier distro releases of PHP).
  *
- * @param string ... strings to escape and glue together, or a single array of strings parameter
+ * @param string $args,... strings to escape and glue together,
+ *  or a single array of strings parameter
  * @return string
  */
 function wfEscapeShellArg( /*...*/ ) {
@@ -2618,7 +2619,7 @@ function wfShellWikiCmd( $script, array $parameters = [], array $options = [] )
  * @param string $old
  * @param string $mine
  * @param string $yours
- * @param string $result
+ * @param string &$result
  * @return bool
  */
 function wfMerge( $old, $mine, $yours, &$result ) {
index da1a8da..6467777 100644 (file)
@@ -92,7 +92,7 @@ class Licenses extends HTMLFormField {
        }
 
        /**
-        * @param array $list
+        * @param array &$list
         * @param array $path
         * @param mixed $item
         */
index 2ca851c..d55f0e0 100644 (file)
@@ -154,6 +154,11 @@ class Linker {
         * @since 1.16.3
         * @deprecated since 1.28, use MediaWiki\Linker\LinkRenderer instead
         * @see Linker::link
+        * @param Title $target
+        * @param string $html
+        * @param array $customAttribs
+        * @param array $query
+        * @param string|array $options
         * @return string
         */
        public static function linkKnown(
@@ -1350,7 +1355,7 @@ class Linker {
        /**
         * @param Title $contextTitle
         * @param string $target
-        * @param string $text
+        * @param string &$text
         * @return string
         */
        public static function normalizeSubpageLink( $contextTitle, $target, &$text ) {
index 1703179..6e7799a 100644 (file)
@@ -518,7 +518,7 @@ class MagicWord {
         * Returns true if the text matches the word, and alters the
         * input string, removing all instances of the word
         *
-        * @param string $text
+        * @param string &$text
         *
         * @return bool
         */
@@ -534,7 +534,7 @@ class MagicWord {
        }
 
        /**
-        * @param string $text
+        * @param string &$text
         * @return bool
         */
        public function matchStartAndRemove( &$text ) {
@@ -646,38 +646,11 @@ class MagicWord {
                return $this->mModified;
        }
 
-       /**
-        * $magicarr is an associative array of (magic word ID => replacement)
-        * This method uses the php feature to do several replacements at the same time,
-        * thereby gaining some efficiency. The result is placed in the out variable
-        * $result. The return value is true if something was replaced.
-        * @deprecated since 1.25, unused
-        *
-        * @param array $magicarr
-        * @param string $subject
-        * @param string $result
-        *
-        * @return bool
-        */
-       public function replaceMultiple( $magicarr, $subject, &$result ) {
-               wfDeprecated( __METHOD__, '1.25' );
-               $search = [];
-               $replace = [];
-               foreach ( $magicarr as $id => $replacement ) {
-                       $mw = self::get( $id );
-                       $search[] = $mw->getRegex();
-                       $replace[] = $replacement;
-               }
-
-               $result = preg_replace( $search, $replace, $subject );
-               return $result !== $subject;
-       }
-
        /**
         * Adds all the synonyms of this MagicWord to an array, to allow quick
         * lookup in a list of magic words
         *
-        * @param array $array
+        * @param array &$array
         * @param string $value
         */
        public function addToArray( &$array, $value ) {
index 6a9ead5..7461191 100644 (file)
@@ -260,7 +260,7 @@ class MagicWordArray {
         * Returns an associative array, ID => param value, for all items that match
         * Removes the matched items from the input string (passed by reference)
         *
-        * @param string $text
+        * @param string &$text
         *
         * @return array
         */
@@ -304,7 +304,7 @@ class MagicWordArray {
         * Return false if no match found and $text is not modified.
         * Does not match parameters.
         *
-        * @param string $text
+        * @param string &$text
         *
         * @return int|bool False on failure
         */
index be6b0af..0240fa7 100644 (file)
@@ -488,7 +488,7 @@ class Message implements MessageSpecifier, Serializable {
         *
         * @since 1.17
         *
-        * @param mixed ... Parameters as strings or arrays from
+        * @param mixed $args,... Parameters as strings or arrays from
         *  Message::numParam() and the like, or a single array of parameters.
         *
         * @return Message $this
@@ -1344,56 +1344,3 @@ class Message implements MessageSpecifier, Serializable {
                return $this->extractParam( new RawMessage( $vars, $params ), $format );
        }
 }
-
-/**
- * Variant of the Message class.
- *
- * Rather than treating the message key as a lookup
- * value (which is passed to the MessageCache and
- * translated as necessary), a RawMessage key is
- * treated as the actual message.
- *
- * All other functionality (parsing, escaping, etc.)
- * is preserved.
- *
- * @since 1.21
- */
-class RawMessage extends Message {
-
-       /**
-        * Call the parent constructor, then store the key as
-        * the message.
-        *
-        * @see Message::__construct
-        *
-        * @param string $text Message to use.
-        * @param array $params Parameters for the message.
-        *
-        * @throws InvalidArgumentException
-        */
-       public function __construct( $text, $params = [] ) {
-               if ( !is_string( $text ) ) {
-                       throw new InvalidArgumentException( '$text must be a string' );
-               }
-
-               parent::__construct( $text, $params );
-
-               // The key is the message.
-               $this->message = $text;
-       }
-
-       /**
-        * Fetch the message (in this case, the key).
-        *
-        * @return string
-        */
-       public function fetchMessage() {
-               // Just in case the message is unset somewhere.
-               if ( $this->message === null ) {
-                       $this->message = $this->key;
-               }
-
-               return $this->message;
-       }
-
-}
index 8d0c33d..39dc642 100644 (file)
@@ -511,7 +511,7 @@ class MovePage {
                $logEntry->setComment( $reason );
                $logEntry->setParameters( [
                        '4::target' => $nt->getPrefixedText(),
-                       '5::noredir' => $redirectContent ? '0': '1',
+                       '5::noredir' => $redirectContent ? '0' : '1',
                ] );
 
                $formatter = LogFormatter::newFromEntry( $logEntry );
index 6aa11f6..2a3a7cd 100644 (file)
@@ -571,6 +571,7 @@ class OutputPage extends ContextSource {
         * @param bool $filter Whether to filter out insufficiently trustworthy modules
         * @param string|null $position If not null, only return modules with this position
         * @param string $param
+        * @param string $type
         * @return array Array of module names
         */
        public function getModules( $filter = false, $position = null, $param = 'mModules',
@@ -688,7 +689,7 @@ class OutputPage extends ContextSource {
         * Add one or more head items to the output
         *
         * @since 1.28
-        * @param string|string[] $value Raw HTML
+        * @param string|string[] $values Raw HTML
         */
        public function addHeadItems( $values ) {
                $this->mHeadItems = array_merge( $this->mHeadItems, (array)$values );
@@ -1715,7 +1716,7 @@ class OutputPage extends ContextSource {
         * Add wikitext with a custom Title object
         *
         * @param string $text Wikitext
-        * @param Title $title
+        * @param Title &$title
         * @param bool $linestart Is this the start of a line?
         */
        public function addWikiTextWithTitle( $text, &$title, $linestart = true ) {
@@ -1726,7 +1727,7 @@ class OutputPage extends ContextSource {
         * Add wikitext with a custom Title object and tidy enabled.
         *
         * @param string $text Wikitext
-        * @param Title $title
+        * @param Title &$title
         * @param bool $linestart Is this the start of a line?
         */
        function addWikiTextTitleTidy( $text, &$title, $linestart = true ) {
@@ -1899,7 +1900,7 @@ class OutputPage extends ContextSource {
        /**
         * Add the output of a QuickTemplate to the output buffer
         *
-        * @param QuickTemplate $template
+        * @param QuickTemplate &$template
         */
        public function addTemplate( &$template ) {
                $this->addHTML( $template->getHTML() );
@@ -1963,7 +1964,7 @@ class OutputPage extends ContextSource {
        }
 
        /**
-        * @param $maxage
+        * @param int $maxage
         * @deprecated since 1.27 Use setCdnMaxage() instead
         */
        public function setSquidMaxage( $maxage ) {
@@ -3797,7 +3798,7 @@ class OutputPage extends ContextSource {
         * Caller is responsible for ensuring the file exists. Emits a PHP warning otherwise.
         *
         * @since 1.27
-        * @param string $remotePath URL path prefix that points to $localPath
+        * @param string $remotePathPrefix URL path prefix that points to $localPath
         * @param string $localPath File directory exposed at $remotePath
         * @param string $file Path to target file relative to $localPath
         * @return string URL
index c8872d2..cd5bf54 100644 (file)
@@ -231,9 +231,9 @@ HTML;
        /**
         * Returns an error page, which is suitable for output to the end user via a web browser.
         *
-        * @param $title
-        * @param $longHtml
-        * @param $shortText
+        * @param string $title
+        * @param string $longHtml
+        * @param string $shortText
         * @return string
         */
        function getIndexErrorOutput( $title, $longHtml, $shortText ) {
index 15ed2d4..c74d6e1 100644 (file)
@@ -109,7 +109,7 @@ class Preferences {
         * @throws MWException
         * @param User $user
         * @param IContextSource $context
-        * @param array $defaultPreferences Array to load values for
+        * @param array &$defaultPreferences Array to load values for
         * @return array|null
         */
        static function loadPreferenceValues( $user, $context, &$defaultPreferences ) {
@@ -202,7 +202,7 @@ class Preferences {
        /**
         * @param User $user
         * @param IContextSource $context
-        * @param array $defaultPreferences
+        * @param array &$defaultPreferences
         * @return void
         */
        static function profilePreferences( $user, IContextSource $context, &$defaultPreferences ) {
@@ -599,7 +599,7 @@ class Preferences {
        /**
         * @param User $user
         * @param IContextSource $context
-        * @param array $defaultPreferences
+        * @param array &$defaultPreferences
         * @return void
         */
        static function skinPreferences( $user, IContextSource $context, &$defaultPreferences ) {
@@ -650,7 +650,7 @@ class Preferences {
        /**
         * @param User $user
         * @param IContextSource $context
-        * @param array $defaultPreferences
+        * @param array &$defaultPreferences
         */
        static function filesPreferences( $user, IContextSource $context, &$defaultPreferences ) {
                # # Files #####################################
@@ -671,7 +671,7 @@ class Preferences {
        /**
         * @param User $user
         * @param IContextSource $context
-        * @param array $defaultPreferences
+        * @param array &$defaultPreferences
         * @return void
         */
        static function datetimePreferences( $user, IContextSource $context, &$defaultPreferences ) {
@@ -749,7 +749,7 @@ class Preferences {
        /**
         * @param User $user
         * @param IContextSource $context
-        * @param array $defaultPreferences
+        * @param array &$defaultPreferences
         */
        static function renderingPreferences( $user, IContextSource $context, &$defaultPreferences ) {
                # # Diffs ####################################
@@ -811,7 +811,7 @@ class Preferences {
        /**
         * @param User $user
         * @param IContextSource $context
-        * @param array $defaultPreferences
+        * @param array &$defaultPreferences
         */
        static function editingPreferences( $user, IContextSource $context, &$defaultPreferences ) {
                # # Editing #####################################
@@ -884,7 +884,7 @@ class Preferences {
        /**
         * @param User $user
         * @param IContextSource $context
-        * @param array $defaultPreferences
+        * @param array &$defaultPreferences
         */
        static function rcPreferences( $user, IContextSource $context, &$defaultPreferences ) {
                $config = $context->getConfig();
@@ -960,7 +960,7 @@ class Preferences {
        /**
         * @param User $user
         * @param IContextSource $context
-        * @param array $defaultPreferences
+        * @param array &$defaultPreferences
         */
        static function watchlistPreferences( $user, IContextSource $context, &$defaultPreferences ) {
                $config = $context->getConfig();
@@ -1044,6 +1044,11 @@ class Preferences {
                        'section' => 'watchlist/advancedwatchlist',
                        'label-message' => 'tog-watchlistreloadautomatically',
                ];
+               $defaultPreferences['watchlistunwatchlinks'] = [
+                       'type' => 'toggle',
+                       'section' => 'watchlist/advancedwatchlist',
+                       'label-message' => 'tog-watchlistunwatchlinks',
+               ];
 
                if ( $config->get( 'RCWatchCategoryMembership' ) ) {
                        $defaultPreferences['watchlisthidecategorization'] = [
@@ -1110,7 +1115,7 @@ class Preferences {
        /**
         * @param User $user
         * @param IContextSource $context
-        * @param array $defaultPreferences
+        * @param array &$defaultPreferences
         */
        static function searchPreferences( $user, IContextSource $context, &$defaultPreferences ) {
                foreach ( MWNamespace::getValidNamespaces() as $n ) {
@@ -1122,6 +1127,9 @@ class Preferences {
 
        /**
         * Dummy, kept for backwards-compatibility.
+        * @param User $user
+        * @param IContextSource $context
+        * @param array &$defaultPreferences
         */
        static function miscPreferences( $user, IContextSource $context, &$defaultPreferences ) {
        }
index a68c36f..53608e8 100644 (file)
@@ -616,7 +616,7 @@ class ProtectionForm {
        /**
         * Show protection long extracts for this page
         *
-        * @param OutputPage $out
+        * @param OutputPage &$out
         * @access private
         */
        function showLogExtract( &$out ) {
diff --git a/includes/RawMessage.php b/includes/RawMessage.php
new file mode 100644 (file)
index 0000000..9a0d947
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Variant of the Message class.
+ *
+ * Rather than treating the message key as a lookup
+ * value (which is passed to the MessageCache and
+ * translated as necessary), a RawMessage key is
+ * treated as the actual message.
+ *
+ * All other functionality (parsing, escaping, etc.)
+ * is preserved.
+ *
+ * @since 1.21
+ */
+class RawMessage extends Message {
+
+       /**
+        * Call the parent constructor, then store the key as
+        * the message.
+        *
+        * @see Message::__construct
+        *
+        * @param string $text Message to use.
+        * @param array $params Parameters for the message.
+        *
+        * @throws InvalidArgumentException
+        */
+       public function __construct( $text, $params = [] ) {
+               if ( !is_string( $text ) ) {
+                       throw new InvalidArgumentException( '$text must be a string' );
+               }
+
+               parent::__construct( $text, $params );
+
+               // The key is the message.
+               $this->message = $text;
+       }
+
+       /**
+        * Fetch the message (in this case, the key).
+        *
+        * @return string
+        */
+       public function fetchMessage() {
+               // Just in case the message is unset somewhere.
+               if ( $this->message === null ) {
+                       $this->message = $this->key;
+               }
+
+               return $this->message;
+       }
+
+}
index 88b138d..3d4d161 100644 (file)
@@ -1307,7 +1307,7 @@ class Revision implements IDBAccessObject {
         * data is compressed, and 'utf-8' if we're saving in UTF-8
         * mode.
         *
-        * @param mixed $text Reference to a text
+        * @param mixed &$text Reference to a text
         * @return string
         */
        public static function compressRevisionText( &$text ) {
index ccdedb8..b0bc60a 100644 (file)
@@ -116,7 +116,7 @@ abstract class RevisionListBase extends ContextSource implements Iterator {
        }
 
        public function key() {
-               return $this->res ? $this->res->key(): 0;
+               return $this->res ? $this->res->key() : 0;
        }
 
        public function valid() {
index b6b7922..ed09701 100644 (file)
@@ -1677,7 +1677,10 @@ class Sanitizer {
                $text = preg_replace_callback(
                        self::CHAR_REFS_REGEX,
                        [ 'Sanitizer', 'decodeCharReferencesCallback' ],
-                       $text, /* limit */ -1, $count );
+                       $text,
+                       -1, //limit
+                       $count
+               );
 
                if ( $count ) {
                        return $wgContLang->normalize( $text );
index 8d9256b..7a01a65 100644 (file)
@@ -345,7 +345,7 @@ class SiteConfiguration {
         * @param string $setting ID of the setting name to retrieve
         * @param string $wiki Wiki ID of the wiki in question.
         * @param string $suffix The suffix of the wiki in question.
-        * @param array $var Reference The variable to insert the value into.
+        * @param array &$var Reference The variable to insert the value into.
         * @param array $params List of parameters. $.'key' is replaced by $value in all returned data.
         * @param array $wikiTags The tags assigned to the wiki.
         */
index 5208b8f..baf5109 100644 (file)
@@ -86,7 +86,7 @@ class StubObject {
         * infinite loop when unstubbing an object or to avoid reference parameter
         * breakage.
         *
-        * @param object $obj Object to check.
+        * @param object &$obj Object to check.
         * @return void
         */
        public static function unstub( &$obj ) {
index 5decece..05f85fa 100644 (file)
@@ -1896,6 +1896,8 @@ class Title implements LinkTarget {
         * protocol-relative, the URL will be expanded to http://
         *
         * @see self::getLocalURL for the arguments.
+        * @param string $query
+        * @param string|bool $query2
         * @return string The URL
         */
        public function getInternalURL( $query = '', $query2 = false ) {
@@ -3693,7 +3695,7 @@ class Title implements LinkTarget {
         * Returns true if ok, or a getUserPermissionsErrors()-like array otherwise
         *
         * @deprecated since 1.25, use MovePage's methods instead
-        * @param Title $nt The new title
+        * @param Title &$nt The new title
         * @param bool $auth Whether to check user permissions (uses $wgUser)
         * @param string $reason Is the log summary of the move, used for spam checking
         * @return array|bool True on success, getUserPermissionsErrors()-like array on failure
@@ -3745,7 +3747,7 @@ class Title implements LinkTarget {
         * Move a title to a new location
         *
         * @deprecated since 1.25, use the MovePage class instead
-        * @param Title $nt The new title
+        * @param Title &$nt The new title
         * @param bool $auth Indicates whether $wgUser's permissions
         *  should be checked
         * @param string $reason The reason for the move
index 3a9fb73..d6b9f76 100644 (file)
@@ -229,8 +229,8 @@ class ApiAuthManagerHelper {
 
        /**
         * Logs successful or failed authentication.
-        * @param string|AuthenticationResponse $result Response or error message
         * @param string $event Event type (e.g. 'accountcreation')
+        * @param string|AuthenticationResponse $result Response or error message
         */
        public function logAuthenticationResult( $event, $result ) {
                if ( is_string( $result ) ) {
@@ -345,7 +345,7 @@ class ApiAuthManagerHelper {
        /**
         * Fetch the standard parameters this helper recognizes
         * @param string $action AuthManager action
-        * @param string $param... Parameters to use
+        * @param string $param,... Parameters to use
         * @return array
         */
        public static function getStandardParams( $action, $param /* ... */ ) {
index 500f432..2012e7d 100644 (file)
@@ -668,7 +668,7 @@ abstract class ApiBase extends ContextSource {
 
        /**
         * Set the continuation manager
-        * @param ApiContinuationManager|null
+        * @param ApiContinuationManager|null $manager
         */
        public function setContinuationManager( $manager ) {
                // Main module has setContinuationManager() method overridden
@@ -1432,7 +1432,7 @@ abstract class ApiBase extends ContextSource {
         * Validate the value against the minimum and user/bot maximum limits.
         * Prints usage info on failure.
         * @param string $paramName Parameter name
-        * @param int $value Parameter value
+        * @param int &$value Parameter value
         * @param int|null $min Minimum value
         * @param int|null $max Maximum value for users
         * @param int $botMax Maximum value for sysops/bots
@@ -1599,7 +1599,7 @@ abstract class ApiBase extends ContextSource {
 
        /**
         * Truncate an array to a certain length.
-        * @param array $arr Array to truncate
+        * @param array &$arr Array to truncate
         * @param int $limit Maximum length
         * @return bool True if the array was truncated, false otherwise
         */
index 3a78c13..a4631d6 100644 (file)
@@ -63,9 +63,9 @@ class ApiCSPReport extends ApiBase {
 
        /**
         * Log CSP report, with a different severity depending on $flags
-        * @param $flags Array Flags for this report
-        * @param $logLine String text of log entry
-        * @param $context Array logging context
+        * @param array $flags Flags for this report
+        * @param string $logLine text of log entry
+        * @param array $context logging context
         */
        private function logReport( $flags, $logLine, $context ) {
                if ( in_array( 'false-positive', $flags ) ) {
@@ -80,8 +80,8 @@ class ApiCSPReport extends ApiBase {
        /**
         * Get extra notes about the report.
         *
-        * @param $report Array The CSP report
-        * @return Array
+        * @param array $report The CSP report
+        * @return array
         */
        private function getFlags( $report ) {
                $reportOnly = $this->getParameter( 'reportonly' );
@@ -115,7 +115,7 @@ class ApiCSPReport extends ApiBase {
                $req = $this->getRequest();
                $contentType = $req->getHeader( 'content-type' );
                if ( $contentType !== 'application/json'
-                       && $contentType !=='application/csp-report'
+                       && $contentType !== 'application/csp-report'
                ) {
                        $this->error( 'wrongformat', __METHOD__ );
                }
@@ -155,9 +155,9 @@ class ApiCSPReport extends ApiBase {
        /**
         * Get text of log line.
         *
-        * @param $flags Array of additional markers for this report
-        * @param $report Array the csp report
-        * @return String Text to put in log
+        * @param array $flags of additional markers for this report
+        * @param array $report the csp report
+        * @return string Text to put in log
         */
        private function generateLogLine( $flags, $report ) {
                $flagText = '';
@@ -177,8 +177,8 @@ class ApiCSPReport extends ApiBase {
        /**
         * Stop processing the request, and output/log an error
         *
-        * @param $code String error code
-        * @param $method String method that made error
+        * @param string $code error code
+        * @param string $method method that made error
         * @throws ApiUsageException Always
         */
        private function error( $code, $method ) {
index 72bbe00..7766acd 100644 (file)
@@ -106,7 +106,7 @@ class ApiDelete extends ApiBase {
         *
         * @param Page|WikiPage $page Page or WikiPage object to work on
         * @param User $user User doing the action
-        * @param string|null $reason Reason for the deletion. Autogenerated if null
+        * @param string|null &$reason Reason for the deletion. Autogenerated if null
         * @param array $tags Tags to tag the deletion with
         * @return Status
         */
@@ -142,7 +142,7 @@ class ApiDelete extends ApiBase {
         * @param Page $page Object to work on
         * @param User $user User doing the action
         * @param string $oldimage Archive name
-        * @param string $reason Reason for the deletion. Autogenerated if null.
+        * @param string &$reason Reason for the deletion. Autogenerated if null.
         * @param bool $suppress Whether to mark all deleted versions as restricted
         * @param array $tags Tags to tag the deletion with
         * @return Status
index 6468235..f6dd524 100644 (file)
@@ -370,7 +370,7 @@ class ApiMain extends ApiBase {
 
        /**
         * Set the continuation manager
-        * @param ApiContinuationManager|null
+        * @param ApiContinuationManager|null $manager
         */
        public function setContinuationManager( $manager ) {
                if ( $manager !== null ) {
index 4ce0e9f..17b0093 100644 (file)
@@ -184,7 +184,7 @@ class ApiParamInfo extends ApiBase {
        }
 
        /**
-        * @param array $res Result array
+        * @param array &$res Result array
         * @param string $key Result key
         * @param Message[] $msgs
         * @param bool $joinLists
index f8eaa84..44526e8 100644 (file)
@@ -478,7 +478,7 @@ abstract class ApiQueryBase extends ApiBase {
        /**
         * Add information (title and namespace) about a Title object to a
         * result array
-        * @param array $arr Result array à la ApiResult
+        * @param array &$arr Result array à la ApiResult
         * @param Title $title
         * @param string $prefix Module prefix
         */
index bfd5b17..7b0080e 100644 (file)
@@ -767,30 +767,30 @@ class ApiQueryImageInfo extends ApiQueryBase {
         */
        private static function getProperties( $modulePrefix = '' ) {
                return [
-                       'timestamp' =>      ' timestamp     - Adds timestamp for the uploaded version',
-                       'user' =>           ' user          - Adds the user who uploaded the image version',
-                       'userid' =>         ' userid        - Add the user ID that uploaded the image version',
-                       'comment' =>        ' comment       - Comment on the version',
-                       'parsedcomment' =>  ' parsedcomment - Parse the comment on the version',
+                       'timestamp' => ' timestamp     - Adds timestamp for the uploaded version',
+                       'user' => ' user          - Adds the user who uploaded the image version',
+                       'userid' => ' userid        - Add the user ID that uploaded the image version',
+                       'comment' => ' comment       - Comment on the version',
+                       'parsedcomment' => ' parsedcomment - Parse the comment on the version',
                        'canonicaltitle' => ' canonicaltitle - Adds the canonical title of the image file',
-                       'url' =>            ' url           - Gives URL to the image and the description page',
-                       'size' =>           ' size          - Adds the size of the image in bytes, ' .
+                       'url' => ' url           - Gives URL to the image and the description page',
+                       'size' => ' size          - Adds the size of the image in bytes, ' .
                                'its height and its width. Page count and duration are added if applicable',
-                       'dimensions' =>     ' dimensions    - Alias for size', // B/C with Allimages
-                       'sha1' =>           ' sha1          - Adds SHA-1 hash for the image',
-                       'mime' =>           ' mime          - Adds MIME type of the image',
-                       'thumbmime' =>      ' thumbmime     - Adds MIME type of the image thumbnail' .
+                       'dimensions' => ' dimensions    - Alias for size', // B/C with Allimages
+                       'sha1' => ' sha1          - Adds SHA-1 hash for the image',
+                       'mime' => ' mime          - Adds MIME type of the image',
+                       'thumbmime' => ' thumbmime     - Adds MIME type of the image thumbnail' .
                                ' (requires url and param ' . $modulePrefix . 'urlwidth)',
-                       'mediatype' =>      ' mediatype     - Adds the media type of the image',
-                       'metadata' =>       ' metadata      - Lists Exif metadata for the version of the image',
+                       'mediatype' => ' mediatype     - Adds the media type of the image',
+                       'metadata' => ' metadata      - Lists Exif metadata for the version of the image',
                        'commonmetadata' => ' commonmetadata - Lists file format generic metadata ' .
                                'for the version of the image',
-                       'extmetadata' =>    ' extmetadata   - Lists formatted metadata combined ' .
+                       'extmetadata' => ' extmetadata   - Lists formatted metadata combined ' .
                                'from multiple sources. Results are HTML formatted.',
-                       'archivename' =>    ' archivename   - Adds the file name of the archive ' .
+                       'archivename' => ' archivename   - Adds the file name of the archive ' .
                                'version for non-latest versions',
-                       'bitdepth' =>       ' bitdepth      - Adds the bit depth of the version',
-                       'uploadwarning' =>  ' uploadwarning - Used by the Special:Upload page to ' .
+                       'bitdepth' => ' bitdepth      - Adds the bit depth of the version',
+                       'uploadwarning' => ' uploadwarning - Used by the Special:Upload page to ' .
                                'get information about an existing file. Not intended for use outside MediaWiki core',
                ];
        }
index df8a11e..3e8bccc 100644 (file)
@@ -242,7 +242,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
        /**
         * @deprecated since 1.25 Use LogFormatter::formatParametersForApi instead
         * @param ApiResult $result
-        * @param array $vals
+        * @param array &$vals
         * @param string $params
         * @param string $type
         * @param string $action
index f8f6e7d..9883480 100644 (file)
@@ -179,7 +179,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                $watchedItemQuery = MediaWikiServices::getInstance()->getWatchedItemQueryService();
                $items = $watchedItemQuery->getWatchedItemsWithRecentChangeInfo( $wlowner, $options, $startFrom );
 
-               foreach ( $items as list ( $watchedItem, $recentChangeInfo ) ) {
+               foreach ( $items as list( $watchedItem, $recentChangeInfo ) ) {
                        /** @var WatchedItem $watchedItem */
                        if ( is_null( $resultPageSet ) ) {
                                $vals = $this->extractOutputData( $watchedItem, $recentChangeInfo );
index fb9c4e6..f7c6471 100644 (file)
@@ -115,7 +115,7 @@ trait SearchApi {
                        $defaultProfile = null;
                        foreach ( $profiles as $profile ) {
                                $types[] = $profile['name'];
-                               if ( isset ( $profile['desc-message'] ) ) {
+                               if ( isset( $profile['desc-message'] ) ) {
                                        $helpMessages[$profile['name']] = $profile['desc-message'];
                                }
                                if ( !empty( $profile['default'] ) ) {
@@ -144,7 +144,7 @@ trait SearchApi {
         *    one ( to support the continue parameter )
         *  - namespace: mandatory
         *  - search engine profiles defined by SearchApi::getSearchProfileParams()
-        * @param string[]|null API request params (must be sanitized by
+        * @param string[]|null $params API request params (must be sanitized by
         * ApiBase::extractRequestParams() before)
         * @return SearchEngine the search engine
         */
index 67dfb47..6b2a2b7 100644 (file)
@@ -29,7 +29,7 @@
        "apihelp-block-param-autoblock": "منع آخر عنوان IP مستخدم تلقائيا، وأية عناوين IP لاحقة حاولت الدخول من خلاله.",
        "apihelp-block-param-noemail": "منع المستخدم من إرسال البريد الإلكتروني من خلال الويكي. (يتطلب صلاحية <code>blockemail</code>).",
        "apihelp-block-param-hidename": "إخفاء اسم المستخدم من سجل المنع. (يتطلب صلاحية <code>hideuser</code>).",
-       "apihelp-block-param-allowusertalk": "تسمح للمستخدم لتحرير صفحة النقاش الخاصة (يعتمد على <var>[[mw:Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
+       "apihelp-block-param-allowusertalk": "تسمح للمستخدم بتحرير صفحة النقاش الخاصة (يعتمد على <var>[[mw:Special:MyLanguage/Manual:$wgBlockAllowsUTEdit|$wgBlockAllowsUTEdit]]</var>).",
        "apihelp-block-param-watchuser": "مشاهدة صفحة المستخدم ونقاش IP.",
        "apihelp-block-example-ip-simple": "منع عنوان IP <kbd>192.0.2.5</kbd> لمدة ثلاثة أيام بسبب >المخالفة الأولى</kbd>.",
        "apihelp-block-example-user-complex": "منع المستخدم <kbd>المخرب</kbd> لأجل غير مسمى بسبب <kbd>التخريب</kbd>، ومنع إنشاء حساب جديد وإرسال بريد إلكتروني.",
        "apihelp-opensearch-param-search": "سطر البحث",
        "apihelp-opensearch-param-limit": "الحد الأقصى للنتائج المُرجعة",
        "apihelp-opensearch-param-namespace": "النطاقات للبحث.",
-       "apihelp-opensearch-param-suggest": "لا تفعل شيئا إذا كان <var>[[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> خاطئا.",
+       "apihelp-opensearch-param-suggest": "لا تفعل شيئا إذا كان <var>[[mw:Special:MyLanguage/Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> خاطئا.",
        "apihelp-opensearch-param-format": "شكل الإخراج.",
        "apihelp-opensearch-param-warningsaserror": "إذا تم رفع التحذيرات ب<kbd>format=json</kbd>, أعد أخطاء API بدلا من تجاهلها.",
        "apihelp-opensearch-example-te": "العثور على صفحات تبدأ ب<kbd>Te</kbd>.",
        "apihelp-parse-paramvalue-prop-externallinks": "يعطي الوصلات الخارجية في تحليل نصوص الويكي.",
        "apihelp-parse-paramvalue-prop-sections": "يعطي الأقسام في تحليل نصوص الويكي.",
        "apihelp-parse-paramvalue-prop-displaytitle": "يضيف العنوان في تحليل نصوص الويكي.",
-       "apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">Deprecated.</span> يعطي عناصر لوضعها في <code>&lt;head&gt;</code> الصفحة.",
+       "apihelp-parse-paramvalue-prop-headitems": "يعطي عناصر لوضعها في <code>&lt;head&gt;</code> الصفحة.",
        "apihelp-parse-paramvalue-prop-headhtml": "يعطي تحليل <code>&lt;head&gt;</code> الصفحة.",
        "apihelp-parse-paramvalue-prop-jsconfigvars": "يعطي متغيرات تكوين جافا سكريبت الخاصة بهذه الصفحة. للتطبيق; استخدم <code>mw.config.set()</code>.",
        "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "يعطي متغيرات تكوين جافا سكريبت الخاصة بهذه الصفحة كسلسلة JSON.",
        "apihelp-query+blocks-example-simple": "قائمة المنع.",
        "apihelp-query+imageinfo-paramvalue-prop-userid": "إضافة هوية المستخدم الذي قام بتحميل كل إصدار ملف.",
        "apihelp-query+prefixsearch-param-offset": "عدد النتائج المراد تخطيها.",
-       "apierror-offline": "لم يمكن المتابعة بسبب مشاكل توصيل بالشبكة. تأكد من أنه لديك توصيل بالإنترنت وحاول مرة أخرى.",
-       "apierror-timeout": "لم يستجب الخادم في الوقت المتوقع.",
+       "apierror-offline": "لم يمكن المتابعة بسبب مشاكل في الاتصال بالشبكة; تأكد من أنه لديك اتصال بالإنترنت وحاول مرة أخرى.",
+       "apierror-timeout": "لم يستجب الخادم ضمن الوقت المتوقع.",
        "api-feed-error-title": "خطأ ($1)"
 }
index 8918620..aa06dcf 100644 (file)
        "apihelp-compare-summary": "קבלת ההבדל בין 2 דפים.",
        "apihelp-compare-extended-description": "יש להעביר מספר גרסה, כותרת דף או מזהה דף גם ל־\"from\" וגם ל־\"to\".",
        "apihelp-compare-param-fromtitle": "כותרת ראשונה להשוואה.",
-       "apihelp-compare-param-fromid": "×\9eס׳ ×\96×\99×\94×\95×\99 ×©×\9c ×\94×¢×\9e×\95×\93 הראשון להשוואה.",
+       "apihelp-compare-param-fromid": "×\9eס׳ ×\96×\99×\94×\95×\99 ×©×\9c ×\94×\93×£ הראשון להשוואה.",
        "apihelp-compare-param-fromrev": "גרסה ראשונה להשוואה.",
        "apihelp-compare-param-fromtext": "להשתמש בטקסט הזה במקום תוכן הגרסה שהוגדרה על־ידי <var dir=\"ltr\">fromtitle</var>, <var dir=\"ltr\">fromid</var> או <var dir=\"ltr\">fromrev</var>.",
        "apihelp-compare-param-frompst": "לעשות התמרה לפני שמירה ב־<var>fromtext</var>.",
        "apihelp-compare-param-fromcontentmodel": "מודל התוכן של <var>fromtext</var>. אם זה לא סופק, ייעשה ניחוש על סמך פרמטרים אחרים.",
        "apihelp-compare-param-fromcontentformat": "תסדיר הסדרת תוכן של <var>fromtext</var>.",
        "apihelp-compare-param-totitle": "כותרת שנייה להשוואה.",
-       "apihelp-compare-param-toid": "×\9eס׳ ×\9e×\96×\94×\94 ×©×\9c ×\94×¢×\9e×\95×\93 השני להשוואה.",
+       "apihelp-compare-param-toid": "×\9eס׳ ×\9e×\96×\94×\94 ×©×\9c ×\94×\93×£ השני להשוואה.",
        "apihelp-compare-param-torev": "גרסה שנייה להשוואה.",
        "apihelp-compare-param-torelative": "להשתמש בגרסה יחסית לגרסה שהוסקה מ<var dir=\"ltr\">fromtitle</var>, <var dir=\"ltr\">fromid</var> או <var dir=\"ltr\">fromrev</var>. לכל אפשריות ה־\"to\" האחרות לא תהיה השפעה.",
        "apihelp-compare-param-totext": "להשתמש בטקסט הזה במקום התוכן של הגרסה שהוגדר ב־<var dir=\"ltr\">totitle</var>, <var dir=\"ltr\">toid</var> or <var dir=\"ltr\">torev</var>.",
        "apihelp-cspreport-param-reportonly": "לסמן בתור דיווח ממדיניות מנטרת, לא מדיניות כפויה",
        "apihelp-cspreport-param-source": "מה ייצר את כותרת ה־CSP שייצרה את הדו״ח הזה",
        "apihelp-delete-summary": "מחיקת דף.",
-       "apihelp-delete-param-title": "×\9b×\95תרת ×\94×¢×\9e×\95×\93 למחיקה. לא ניתן להשתמש בשילוב עם <var>$1pageid</var>.",
-       "apihelp-delete-param-pageid": "×\9eס׳ ×\94×\96×\99×\94×\95×\99 ×©×\9c ×\94×¢×\9e×\95×\93 למחיקה. לא ניתן להשתמש בשילוב עם <var>$1title</var>.",
+       "apihelp-delete-param-title": "×\9b×\95תרת ×\94×\93×£ למחיקה. לא ניתן להשתמש בשילוב עם <var>$1pageid</var>.",
+       "apihelp-delete-param-pageid": "×\9eס׳ ×\94×\96×\99×\94×\95×\99 ×©×\9c ×\94×\93×£ למחיקה. לא ניתן להשתמש בשילוב עם <var>$1title</var>.",
        "apihelp-delete-param-reason": "סיבת המחיקה. אם לא הוגדרה, תתווסף סיבה שנוצרה אוטומטית.",
        "apihelp-delete-param-tags": "תגי שינוי שיחולו על העיול ביומן המחיקה.",
-       "apihelp-delete-param-watch": "×\94×\95ספת ×\94×¢×\9e×\95×\93 לרשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-delete-param-watch": "×\94×\95ספת ×\94×\93×£ לרשימת המעקב של המשתמש הנוכחי.",
        "apihelp-delete-param-watchlist": "הוספה או הסרה של הדף ללא תנאי מרשימת המעקב של המשתמש הנוכחי, להשתמש בהעדפות או לא לשנות את המעקב.",
        "apihelp-delete-param-unwatch": "הסרת הדף מרשימת המעקב של של המשתמש הנוכחי.",
        "apihelp-delete-param-oldimage": "שם התמונה הישנה למחיקה כפי שסופק ל־[[Special:ApiHelp/query+imageinfo|action=query&prop=imageinfo&iiprop=archivename]].",
        "apihelp-edit-param-recreate": "לעקוב את כל הטעויות על כך שהדף נמחק בינתיים.",
        "apihelp-edit-param-createonly": "לא לערוך את הדף אם הוא כבר קיים.",
        "apihelp-edit-param-nocreate": "לזרוק שגיאה אם הדף אינו קיים.",
-       "apihelp-edit-param-watch": "×\94×\95ספת ×\94×¢×\9e×\95×\93 לרשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-edit-param-watch": "×\94×\95ספת ×\94×\93×£ לרשימת המעקב של המשתמש הנוכחי.",
        "apihelp-edit-param-unwatch": "הסרת הדף מרשימת המעקב של של המשתמש הנוכחי.",
        "apihelp-edit-param-watchlist": "להוסיף את הדף לרשימת המעקב של המשתמש הנוכחי או להסיר אותו משם, להשתמש בהעדפות, או לא לשנות את מצב המעקב.",
        "apihelp-edit-param-md5": "גיבוב MD5 של הפרמטר $1text או צירוף של הפטמטרים $1prependtext ו־$1appendtext. אם זה מוגדר, העריכה לא תיעשה אלא אם כן הגיבוב נכון.",
        "apihelp-edit-param-contentmodel": "מודל התוכן של התוכן החדש.",
        "apihelp-edit-param-token": "האסימון תמיד צריך להישלח בתור הפרמטר האחרון, או לפחות אחרי הפרמטר $1text parameter.",
        "apihelp-edit-example-edit": "עריכת דף",
-       "apihelp-edit-example-prepend": "×\94×\95ספת <kbd>_&#95;NOTOC_&#95;</kbd> ×\9cת×\97×\99×\9cת ×\94×¢×\9e×\95×\93.",
+       "apihelp-edit-example-prepend": "×\94×\95ספת <kbd>_&#95;NOTOC_&#95;</kbd> ×\9cת×\97×\99×\9cת ×\94×\93×£.",
        "apihelp-edit-example-undo": "ביטול גרסאות מ־13579 עד 13585 עם תקציר אוטומטי.",
        "apihelp-emailuser-summary": "שליחת דוא\"ל למשתמש.",
        "apihelp-emailuser-param-target": "לאיזה משתמש לשלוח דוא\"ל.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "קוד הוויקי המורחב.",
        "apihelp-expandtemplates-paramvalue-prop-categories": "קטגוריות כלשהן שקיימות בקלט ואינן מיוצגות בפלט הוויקיטקסט.",
        "apihelp-expandtemplates-paramvalue-prop-properties": "מאפייני דף המוגדרים במילות קסם מורחבות בקוד ויקי.",
-       "apihelp-expandtemplates-paramvalue-prop-volatile": "×\94×\90×\9d ×\94פ×\9c×\98 ×\94×\95×\90 × ×\93×\99×£ ×\95×\90×\99×\9f ×\9c×\94שת×\9eש ×\91×\95 ×\91×\9eק×\95×\9d ×\90×\97ר ×\91×¢×\9e×\95×\93.",
+       "apihelp-expandtemplates-paramvalue-prop-volatile": "×\94×\90×\9d ×\94פ×\9c×\98 ×\94×\95×\90 × ×\93×\99×£ ×\95×\9c×\90 ×\9e×\99×\95×¢×\93 ×\9cש×\99×\9e×\95ש ×\91×\9eק×\95×\9d ×\90×\97ר ×\91×\93×£.",
        "apihelp-expandtemplates-paramvalue-prop-ttl": "הזמן המרבי שאחריו המטמונים של התוצאה צריכים לפוג.",
        "apihelp-expandtemplates-paramvalue-prop-modules": "כל יחידות ה־ResourceLoader שפונקציות מפענח ביקשו לוסיף לפלט. יש לבקש את <kbd>jsconfigvars</kbd> או את <kbd>encodedjsconfigvars</kbd> יחד עם <kbd>modules</kbd>.",
        "apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה.",
index d8e3c38..38cb6be 100644 (file)
@@ -131,7 +131,7 @@ class LinkBatch {
         * Do the query and add the results to a given LinkCache object
         * Return an array mapping PDBK to ID
         *
-        * @param LinkCache $cache
+        * @param LinkCache &$cache
         * @return array Remaining IDs
         */
        protected function executeInto( &$cache ) {
index f9f9a08..16c1ac5 100644 (file)
@@ -395,7 +395,7 @@ class MessageCache {
 
        /**
         * @param string $code
-        * @param array $where List of wfDebug() comments
+        * @param array &$where List of wfDebug() comments
         * @param integer $mode Use MessageCache::FOR_UPDATE to use DB_MASTER
         * @return bool|string True on success or one of ("cantacquire", "disabled")
         */
index 58a67ad..e0da22e 100644 (file)
@@ -687,7 +687,7 @@ class LocalisationCache {
         * exists, the data array is returned, otherwise false is returned.
         *
         * @param string $code
-        * @param array $deps
+        * @param array &$deps
         * @return array
         */
        protected function readSourceFilesAndRegisterDeps( $code, &$deps ) {
@@ -719,7 +719,7 @@ class LocalisationCache {
         * Merge two localisation values, a primary and a fallback, overwriting the
         * primary value in place.
         * @param string $key
-        * @param mixed $value
+        * @param mixed &$value
         * @param mixed $fallbackValue
         */
        protected function mergeItem( $key, &$value, $fallbackValue ) {
@@ -749,7 +749,7 @@ class LocalisationCache {
        }
 
        /**
-        * @param mixed $value
+        * @param mixed &$value
         * @param mixed $fallbackValue
         */
        protected function mergeMagicWords( &$value, $fallbackValue ) {
@@ -775,7 +775,7 @@ class LocalisationCache {
         * otherwise.
         * @param array $codeSequence
         * @param string $key
-        * @param mixed $value
+        * @param mixed &$value
         * @param mixed $fallbackValue
         * @return bool
         */
index 99dc899..df964e0 100644 (file)
@@ -165,7 +165,7 @@ class ChangesFeed {
        /**
         * Generate the feed items given a row from the database, printing the feed.
         * @param object $rows IDatabase resource with recentchanges rows
-        * @param ChannelFeed $feed
+        * @param ChannelFeed &$feed
         */
        public static function generateFeed( $rows, &$feed ) {
                $items = self::buildItems( $rows );
index 04f815a..cac4769 100644 (file)
@@ -41,6 +41,9 @@ class ChangesList extends ContextSource {
        protected $rclistOpen;
        protected $rcMoveIndex;
 
+       /** @var callable */
+       protected $changeLinePrefixer;
+
        /** @var BagOStuff */
        protected $watchMsgCache;
 
@@ -102,7 +105,7 @@ class ChangesList extends ContextSource {
         *
         * @since 1.27
         *
-        * @param RecentChange $rc Passed by reference
+        * @param RecentChange &$rc Passed by reference
         * @param bool $watched (default false)
         * @param int $linenumber (default null)
         *
@@ -169,12 +172,14 @@ class ChangesList extends ContextSource {
         * @return array of classes
         */
        protected function getHTMLClasses( $rc, $watched ) {
-               $classes = [];
+               $classes = [ self::CSS_CLASS_PREFIX . 'line' ];
                $logType = $rc->mAttribs['rc_log_type'];
 
                if ( $logType ) {
+                       $classes[] = self::CSS_CLASS_PREFIX . 'log';
                        $classes[] = Sanitizer::escapeClass( self::CSS_CLASS_PREFIX . 'log-' . $logType );
                } else {
+                       $classes[] = self::CSS_CLASS_PREFIX . 'edit';
                        $classes[] = Sanitizer::escapeClass( self::CSS_CLASS_PREFIX . 'ns' .
                                $rc->mAttribs['rc_namespace'] . '-' . $rc->mAttribs['rc_title'] );
                        $classes[] = Sanitizer::escapeClass( self::CSS_CLASS_PREFIX . 'ns-' .
@@ -362,7 +367,7 @@ class ChangesList extends ContextSource {
        }
 
        /**
-        * @param string $s HTML to update
+        * @param string &$s HTML to update
         * @param mixed $rc_timestamp
         */
        public function insertDateHeader( &$s, $rc_timestamp ) {
@@ -379,7 +384,7 @@ class ChangesList extends ContextSource {
        }
 
        /**
-        * @param string $s HTML to update
+        * @param string &$s HTML to update
         * @param Title $title
         * @param string $logtype
         */
@@ -392,8 +397,8 @@ class ChangesList extends ContextSource {
        }
 
        /**
-        * @param string $s HTML to update
-        * @param RecentChange $rc
+        * @param string &$s HTML to update
+        * @param RecentChange &$rc
         * @param bool|null $unpatrolled Unused variable, since 1.27.
         */
        public function insertDiffHist( &$s, &$rc, $unpatrolled = null ) {
@@ -442,7 +447,7 @@ class ChangesList extends ContextSource {
        }
 
        /**
-        * @param string $s Article link will be appended to this string, in place.
+        * @param string &$s Article link will be appended to this string, in place.
         * @param RecentChange $rc
         * @param bool $unpatrolled
         * @param bool $watched
@@ -453,7 +458,7 @@ class ChangesList extends ContextSource {
        }
 
        /**
-        * @param RecentChange $rc
+        * @param RecentChange &$rc
         * @param bool $unpatrolled
         * @param bool $watched
         * @return string HTML
@@ -508,7 +513,7 @@ class ChangesList extends ContextSource {
        /**
         * Insert time timestamp string from $rc into $s
         *
-        * @param string $s HTML to update
+        * @param string &$s HTML to update
         * @param RecentChange $rc
         */
        public function insertTimestamp( &$s, $rc ) {
@@ -620,8 +625,8 @@ class ChangesList extends ContextSource {
 
        /** Inserts a rollback link
         *
-        * @param string $s
-        * @param RecentChange $rc
+        * @param string &$s
+        * @param RecentChange &$rc
         */
        public function insertRollback( &$s, &$rc ) {
                if ( $rc->mAttribs['rc_type'] == RC_EDIT
@@ -658,9 +663,9 @@ class ChangesList extends ContextSource {
        }
 
        /**
-        * @param string $s
-        * @param RecentChange $rc
-        * @param array $classes
+        * @param string &$s
+        * @param RecentChange &$rc
+        * @param array &$classes
         */
        public function insertTags( &$s, &$rc, &$classes ) {
                if ( empty( $rc->mAttribs['ts_tags'] ) ) {
@@ -678,7 +683,7 @@ class ChangesList extends ContextSource {
 
        /**
         * @param RecentChange $rc
-        * @param array $classes
+        * @param array &$classes
         * @return string
         * @since 1.26
         */
@@ -766,4 +771,15 @@ class ChangesList extends ContextSource {
 
                return $attrs;
        }
+
+       /**
+        * Sets the callable that generates a change line prefix added to the beginning of each line.
+        *
+        * @param callable $prefixer Callable to run that generates the change line prefix.
+        *     Takes three parameters: a RecentChange object, a ChangesList object,
+        *     and whether the current entry is a grouped entry.
+        */
+       public function setChangeLinePrefixer( callable $prefixer ) {
+               $this->changeLinePrefixer = $prefixer;
+       }
 }
index 0dc1145..5762752 100644 (file)
@@ -165,7 +165,7 @@ abstract class ChangesListFilterGroup {
                        $this->title = $groupDefinition['title'];
                }
 
-               if ( isset ( $groupDefinition['whatsThisHeader'] ) ) {
+               if ( isset( $groupDefinition['whatsThisHeader'] ) ) {
                        $this->whatsThisHeader = $groupDefinition['whatsThisHeader'];
                        $this->whatsThisBody = $groupDefinition['whatsThisBody'];
                        $this->whatsThisUrl = $groupDefinition['whatsThisUrl'];
@@ -352,7 +352,7 @@ abstract class ChangesListFilterGroup {
                        'messageKeys' => [ $this->title ]
                ];
 
-               if ( isset ( $this->whatsThisHeader ) ) {
+               if ( isset( $this->whatsThisHeader ) ) {
                        $output['whatsThisHeader'] = $this->whatsThisHeader;
                        $output['whatsThisBody'] = $this->whatsThisBody;
                        $output['whatsThisUrl'] = $this->whatsThisUrl;
index 55cb9ed..def6457 100644 (file)
@@ -91,7 +91,7 @@ class EnhancedChangesList extends ChangesList {
        /**
         * Format a line for enhanced recentchange (aka with javascript and block of lines).
         *
-        * @param RecentChange $rc
+        * @param RecentChange &$rc
         * @param bool $watched
         * @param int $linenumber (default null)
         *
@@ -172,12 +172,14 @@ class EnhancedChangesList extends ChangesList {
                $recentChangesFlags = $this->getConfig()->get( 'RecentChangesFlags' );
 
                # Add the namespace and title of the block as part of the class
-               $tableClasses = [ 'mw-collapsible', 'mw-collapsed', 'mw-enhanced-rc' ];
+               $tableClasses = [ 'mw-collapsible', 'mw-collapsed', 'mw-enhanced-rc', 'mw-changeslist-line' ];
                if ( $block[0]->mAttribs['rc_log_type'] ) {
                        # Log entry
+                       $tableClasses[] = 'mw-changeslist-log';
                        $tableClasses[] = Sanitizer::escapeClass( 'mw-changeslist-log-'
                                . $block[0]->mAttribs['rc_log_type'] );
                } else {
+                       $tableClasses[] = 'mw-changeslist-edit';
                        $tableClasses[] = Sanitizer::escapeClass( 'mw-changeslist-ns'
                                . $block[0]->mAttribs['rc_namespace'] . '-' . $block[0]->mAttribs['rc_title'] );
                }
@@ -330,6 +332,11 @@ class EnhancedChangesList extends ChangesList {
                        implode( $this->message['semicolon-separator'], $users )
                )->escaped();
 
+               $prefix = '';
+               if ( is_callable( $this->changeLinePrefixer ) ) {
+                       $prefix = call_user_func( $this->changeLinePrefixer, $block[0], $this, true );
+               }
+
                $templateParams = [
                        'articleLink' => $articleLink,
                        'charDifference' => $charDifference,
@@ -338,6 +345,7 @@ class EnhancedChangesList extends ChangesList {
                        'lines' => $lines,
                        'logText' => $logText,
                        'numberofWatchingusers' => $numberofWatchingusers,
+                       'prefix' => $prefix,
                        'rev-deleted-event' => $revDeletedMsg,
                        'tableClasses' => $tableClasses,
                        'timestamp' => $block[0]->timestamp,
@@ -366,7 +374,7 @@ class EnhancedChangesList extends ChangesList {
 
                $type = $rcObj->mAttribs['rc_type'];
                $data = [];
-               $lineParams = [];
+               $lineParams = [ 'targetTitle' => $rcObj->getTitle() ];
 
                $classes = [ 'mw-enhanced-rc' ];
                if ( $rcObj->watched
@@ -609,8 +617,10 @@ class EnhancedChangesList extends ChangesList {
 
                if ( $logType ) {
                        # Log entry
+                       $classes[] = 'mw-changeslist-log';
                        $classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-' . $logType );
                } else {
+                       $classes[] = 'mw-changeslist-edit';
                        $classes[] = Sanitizer::escapeClass( 'mw-changeslist-ns' .
                                $rcObj->mAttribs['rc_namespace'] . '-' . $rcObj->mAttribs['rc_title'] );
                }
@@ -690,8 +700,15 @@ class EnhancedChangesList extends ChangesList {
                        return $key === 'class' || Sanitizer::isReservedDataAttribute( $key );
                } );
 
+               $prefix = '';
+               if ( is_callable( $this->changeLinePrefixer ) ) {
+                       $prefix = call_user_func( $this->changeLinePrefixer, $rcObj, $this, false );
+               }
+
                $line = Html::openElement( 'table', $attribs ) . Html::openElement( 'tr' );
-               $line .= '<td class="mw-enhanced-rc"><span class="mw-enhancedchanges-arrow-space"></span>';
+               $line .= Html::rawElement( 'td', [], '<span class="mw-enhancedchanges-arrow-space"></span>' );
+               $line .= Html::rawElement( 'td', [ 'class' => 'mw-changeslist-line-prefix' ], $prefix );
+               $line .= '<td class="mw-enhanced-rc">';
 
                if ( isset( $data['recentChangesFlags'] ) ) {
                        $line .= $this->recentChangesFlags( $data['recentChangesFlags'] );
@@ -702,7 +719,12 @@ class EnhancedChangesList extends ChangesList {
                        $line .= '&#160;' . $data['timestampLink'];
                        unset( $data['timestampLink'] );
                }
-               $line .= '&#160;</td><td>';
+               $line .= '&#160;</td>';
+               $line .= Html::openElement( 'td', [
+                       'class' => 'mw-changeslist-line-inner',
+                       // Used for reliable determination of the affiliated page
+                       'data-target-page' => $rcObj->getTitle(),
+               ] );
 
                // everything else: makes it easier for extensions to add or remove data
                $line .= implode( '', $data );
index 09205bd..88c3c22 100644 (file)
@@ -25,7 +25,7 @@ class OldChangesList extends ChangesList {
        /**
         * Format a line using the old system (aka without any javascript).
         *
-        * @param RecentChange $rc Passed by reference
+        * @param RecentChange &$rc Passed by reference
         * @param bool $watched (default false)
         * @param int $linenumber (default null)
         *
@@ -82,7 +82,7 @@ class OldChangesList extends ChangesList {
                if ( $rc->mAttribs['rc_log_type'] ) {
                        $logtitle = SpecialPage::getTitleFor( 'Log', $rc->mAttribs['rc_log_type'] );
                        $this->insertLog( $html, $logtitle, $rc->mAttribs['rc_log_type'] );
-                       $flags = $this->recentChangesFlags( [ 'unpatrolled' =>$unpatrolled,
+                       $flags = $this->recentChangesFlags( [ 'unpatrolled' => $unpatrolled,
                                'bot' => $rc->mAttribs['rc_bot'] ], '' );
                        if ( $flags !== '' ) {
                                $html .= ' ' . $flags;
@@ -142,6 +142,15 @@ class OldChangesList extends ChangesList {
                        $html .= ' ' . $this->numberofWatchingusers( $rc->numberofWatchingusers );
                }
 
+               $html = Html::rawElement( 'span', [
+                       'class' => 'mw-changeslist-line-inner',
+                       'data-target-page' => $rc->getTitle(), // Used for reliable determination of the affiliated page
+               ], $html );
+               if ( is_callable( $this->changeLinePrefixer ) ) {
+                       $prefix = call_user_func( $this->changeLinePrefixer, $rc, $this, false );
+                       $html = Html::rawElement( 'span', [ 'class' => 'mw-changeslist-line-prefix' ], $prefix ) . $html;
+               }
+
                return $html;
        }
 }
index 5fad8fd..f123363 100644 (file)
@@ -426,6 +426,7 @@ class RecentChange {
         * @since 1.22
         * @deprecated since 1.29 Use RCFeed::factory() instead
         * @param string $uri URI to get the engine object for
+        * @param array $params
         * @return RCFeedEngine The engine object
         * @throws MWException
         */
@@ -552,9 +553,9 @@ class RecentChange {
         * Makes an entry in the database corresponding to an edit
         *
         * @param string $timestamp
-        * @param Title $title
+        * @param Title &$title
         * @param bool $minor
-        * @param User $user
+        * @param User &$user
         * @param string $comment
         * @param int $oldId
         * @param string $lastTimestamp
@@ -629,9 +630,9 @@ class RecentChange {
         * Note: the title object must be loaded with the new id using resetArticleID()
         *
         * @param string $timestamp
-        * @param Title $title
+        * @param Title &$title
         * @param bool $minor
-        * @param User $user
+        * @param User &$user
         * @param string $comment
         * @param bool $bot
         * @param string $ip
@@ -699,8 +700,8 @@ class RecentChange {
 
        /**
         * @param string $timestamp
-        * @param Title $title
-        * @param User $user
+        * @param Title &$title
+        * @param User &$user
         * @param string $actionComment
         * @param string $ip
         * @param string $type
@@ -730,8 +731,8 @@ class RecentChange {
 
        /**
         * @param string $timestamp
-        * @param Title $title
-        * @param User $user
+        * @param Title &$title
+        * @param User &$user
         * @param string $actionComment
         * @param string $ip
         * @param string $type
index 2eb9b22..fa98124 100644 (file)
@@ -649,11 +649,11 @@ class ChangeTags {
         * if you had ORDER BY foo_timestamp DESC, you will now need GROUP BY foo_timestamp, foo_id
         * ORDER BY foo_timestamp DESC, foo_id DESC.
         *
-        * @param string|array $tables Table names, see Database::select
-        * @param string|array $fields Fields used in query, see Database::select
-        * @param string|array $conds Conditions used in query, see Database::select
-        * @param array $join_conds Join conditions, see Database::select
-        * @param string|array $options Options, see Database::select
+        * @param string|array &$tables Table names, see Database::select
+        * @param string|array &$fields Fields used in query, see Database::select
+        * @param string|array &$conds Conditions used in query, see Database::select
+        * @param array &$join_conds Join conditions, see Database::select
+        * @param string|array &$options Options, see Database::select
         * @param string|array $filter_tag Tag(s) to select on
         *
         * @throws MWException When unable to determine appropriate JOIN condition for tagging
@@ -1328,6 +1328,7 @@ class ChangeTags {
         *
         * @see listSoftwareDefinedTags
         * @deprecated since 1.28
+        * @return array
         */
        public static function listExtensionDefinedTags() {
                wfDeprecated( __METHOD__, '1.28' );
index 1b96bff..301972d 100644 (file)
@@ -48,7 +48,7 @@ class CustomUppercaseCollation extends NumericUppercaseCollation {
         * @note This assumes $alphabet does not contain U+F3000-U+F303F
         *
         * @param array $alphabet Sorted array of uppercase characters.
-        * @param Language $language What language for number sorting.
+        * @param Language $lang What language for number sorting.
         */
        public function __construct( array $alphabet, Language $lang ) {
                // It'd be trivial to extend this past 64, you'd just
index 8dd7a38..da78a05 100644 (file)
@@ -40,7 +40,7 @@ class NumericUppercaseCollation extends UppercaseCollation {
        private $digitTransformLang;
 
        /**
-        * @param $lang Language How to convert digits.
+        * @param Language $lang How to convert digits.
         *  For example, if given language "my" than ၇ is treated like 7.
         *
         * It is expected that usually this is given $wgContLang.
@@ -76,8 +76,8 @@ class NumericUppercaseCollation extends UppercaseCollation {
         *
         * based on Language::parseFormattedNumber but without commas.
         *
-        * @param $string String sortkey to unlocalize digits of
-        * @return String Sortkey with all localized digits replaced with ASCII digits.
+        * @param string $string sortkey to unlocalize digits of
+        * @return string Sortkey with all localized digits replaced with ASCII digits.
         */
        private function convertDigits( $string ) {
                $table = $this->digitTransformLang->digitTransformTable();
index c9c05a0..9b35cad 100644 (file)
@@ -120,7 +120,7 @@ class UtfNormal {
        /**
         * Returns true if the string is _definitely_ in NFC.
         * Returns false if not or uncertain.
-        * @param string $string a UTF-8 string, altered on output to be valid UTF-8 safe for XML.
+        * @param string &$string a UTF-8 string, altered on output to be valid UTF-8 safe for XML.
         * @return bool
         */
        static function quickIsNFCVerify( &$string ) {
index 8603360..0509e29 100644 (file)
@@ -1134,10 +1134,10 @@ abstract class ContentHandler {
 
        /**
         * Add new field definition to array.
-        * @param SearchIndexField[] $fields
-        * @param SearchEngine       $engine
-        * @param string             $name
-        * @param int                $type
+        * @param SearchIndexField[] &$fields
+        * @param SearchEngine $engine
+        * @param string $name
+        * @param int $type
         * @return SearchIndexField[] new field defs
         * @since 1.28
         */
@@ -1151,7 +1151,7 @@ abstract class ContentHandler {
         * as representation of this document.
         * Overriding class should call parent function or take care of calling
         * the SearchDataForIndex hook.
-        * @param WikiPage     $page Page to index
+        * @param WikiPage $page Page to index
         * @param ParserOutput $output
         * @param SearchEngine $engine Search engine for which we are indexing
         * @return array Map of name=>value for fields
@@ -1190,7 +1190,7 @@ abstract class ContentHandler {
         *
         * Specific content handlers may override it if they need different content handling.
         *
-        * @param WikiPage    $page
+        * @param WikiPage $page
         * @param ParserCache $cache
         * @return ParserOutput
         */
index 14c8182..2b94f3f 100644 (file)
@@ -22,6 +22,7 @@ class JsonContent extends TextContent {
 
        /**
         * @param string $text JSON
+        * @param string $modelId
         */
        public function __construct( $text, $modelId = CONTENT_MODEL_JSON ) {
                parent::__construct( $text, $modelId );
@@ -96,7 +97,7 @@ class JsonContent extends TextContent {
         * @param int $revId
         * @param ParserOptions $options
         * @param bool $generateHtml
-        * @param ParserOutput $output
+        * @param ParserOutput &$output
         */
        protected function fillParserOutput( Title $title, $revId,
                ParserOptions $options, $generateHtml, ParserOutput &$output
index 7bb4def..5f585bc 100644 (file)
@@ -157,7 +157,7 @@ class TextContent extends AbstractContent {
         * changes.
         *
         * @since 1.28
-        * @param $text
+        * @param string $text
         * @return string
         */
        public static function normalizeLineEndings( $text ) {
@@ -233,7 +233,7 @@ class TextContent extends AbstractContent {
         * @param int $revId Revision ID (for {{REVISIONID}})
         * @param ParserOptions $options Parser options
         * @param bool $generateHtml Whether or not to generate HTML
-        * @param ParserOutput $output The output object to fill (reference).
+        * @param ParserOutput &$output The output object to fill (reference).
         */
        protected function fillParserOutput( Title $title, $revId,
                ParserOptions $options, $generateHtml, ParserOutput &$output
index 698a37b..ced2a66 100644 (file)
@@ -40,7 +40,7 @@ class TextContentHandler extends ContentHandler {
         * Returns the content's text as-is.
         *
         * @param Content $content
-        * @param string  $format The serialization format to check
+        * @param string $format The serialization format to check
         *
         * @return mixed
         */
index 434201a..cea8460 100644 (file)
@@ -183,7 +183,7 @@ abstract class ContextSource implements IContextSource {
         * @since 1.18
         * @param string|string[]|MessageSpecifier $key Message key, or array of keys,
         *   or a MessageSpecifier.
-        * @param mixed ...
+        * @param mixed $args,...
         * @return Message
         */
        public function msg( $key /* $args */ ) {
index 2ac4192..4a772ee 100644 (file)
@@ -451,7 +451,7 @@ class RequestContext implements IContextSource, MutableContext {
         *
         * @param string|string[]|MessageSpecifier $key Message key, or array of keys,
         *   or a MessageSpecifier.
-        * @param mixed ...
+        * @param mixed $args,...
         * @return Message
         */
        public function msg( $key ) {
index fbbc962..aafd386 100644 (file)
@@ -31,7 +31,7 @@ class ORAResult {
        }
 
        /**
-        * @param IDatabase $db
+        * @param IDatabase &$db
         * @param resource $stmt A valid OCI statement identifier
         * @param bool $unique
         */
index 6359509..06ec574 100644 (file)
@@ -454,14 +454,14 @@ class LegacyLogger extends AbstractLogger {
        }
 
        /**
-       * Log to a file without getting "file size exceeded" signals.
-       *
-       * Can also log to UDP with the syntax udp://host:port/prefix. This will send
-       * lines to the specified port, prefixed by the specified prefix and a space.
-       *
-       * @param string $text
-       * @param string $file Filename
-       */
+        * Log to a file without getting "file size exceeded" signals.
+        *
+        * Can also log to UDP with the syntax udp://host:port/prefix. This will send
+        * lines to the specified port, prefixed by the specified prefix and a space.
+        *
+        * @param string $text
+        * @param string $file Filename
+        */
        public static function emit( $text, $file ) {
                if ( substr( $file, 0, 4 ) == 'udp:' ) {
                        $transport = UDPTransport::newFromString( $file );
index 8c38d8b..2f074ba 100644 (file)
@@ -189,7 +189,7 @@ class SiteStatsUpdate implements DeferrableUpdate, MergeableUpdate {
        }
 
        /**
-        * @param string $sql
+        * @param string &$sql
         * @param string $field
         * @param int $delta
         */
index 6231c78..07124c0 100644 (file)
@@ -125,7 +125,7 @@ abstract class DiffFormatter {
         * @param int $xlen
         * @param int $ybeg
         * @param int $ylen
-        * @param array $edits
+        * @param array &$edits
         *
         * @throws MWException If the edit type is not known.
         */
index a2867a1..bf232e9 100644 (file)
@@ -616,7 +616,7 @@ TXT;
         * @param ErrorException $e
         * @param string $channel
         * @param string $level
-       */
+        */
        protected static function logError(
                ErrorException $e, $channel, $level = LogLevel::ERROR
        ) {
index 5c27658..1349c54 100644 (file)
@@ -42,7 +42,7 @@ class DumpFilter {
        protected $sendingThisPage;
 
        /**
-        * @param DumpOutput $sink
+        * @param DumpOutput &$sink
         */
        function __construct( &$sink ) {
                $this->sink =& $sink;
index c20e299..2b71db0 100644 (file)
@@ -34,7 +34,7 @@ class DumpNamespaceFilter extends DumpFilter {
        public $namespaces = [];
 
        /**
-        * @param DumpOutput $sink
+        * @param DumpOutput &$sink
         * @param array $param
         * @throws MWException
         */
index 943aa04..e0ebaa2 100644 (file)
@@ -106,7 +106,7 @@ class WikiExporter {
         * various row objects and XML output for filtering. Filters
         * can be chained or used as callbacks.
         *
-        * @param DumpOutput $sink
+        * @param DumpOutput &$sink
         */
        public function setOutputSink( &$sink ) {
                $this->sink =& $sink;
@@ -253,6 +253,7 @@ class WikiExporter {
 
        /**
         * @param string $cond
+        * @param bool $orderRevs
         * @throws MWException
         * @throws Exception
         */
index 42b36ff..4269f91 100644 (file)
@@ -183,7 +183,7 @@ class DBFileJournal extends FileJournal {
        protected function getMasterDB() {
                if ( !$this->dbw ) {
                        // Get a separate connection in autocommit mode
-                       $lb =  MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->newMainLB();
+                       $lb = MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->newMainLB();
                        $this->dbw = $lb->getConnection( DB_MASTER, [], $this->wiki );
                        $this->dbw->clearFlag( DBO_TRX );
                }
index 9aa2b18..71e1c63 100644 (file)
@@ -355,7 +355,7 @@ abstract class File implements IDBAccessObject {
                return $this->url;
        }
 
-       /*
+       /**
         * Get short description URL for a files based on the page ID
         *
         * @return string|null
index b22f8cb..cdad5fc 100644 (file)
@@ -171,8 +171,8 @@ class UnregisteredLocalFile extends File {
        }
 
        /**
-       * @return int
-       */
+        * @return int
+        */
        function getBitDepth() {
                $gis = $this->getImageSize( $this->getLocalRefPath() );
 
index a0059ce..7a520bc 100644 (file)
@@ -348,7 +348,7 @@ class TraditionalImageGallery extends ImageGalleryBase {
         *
         * Used by a subclass to insert extra high resolution images.
         * @param MediaTransformOutput $thumb The thumbnail
-        * @param array $imageParameters Array of options
+        * @param array &$imageParameters Array of options
         */
        protected function adjustImageParameters( $thumb, &$imageParameters ) {
        }
index 702c2eb..7293b99 100644 (file)
@@ -271,7 +271,7 @@ class HTMLForm extends ContextSource {
         * Construct a HTMLForm object for given display type. May return a HTMLForm subclass.
         *
         * @param string $displayFormat
-        * @param mixed $arguments... Additional arguments to pass to the constructor.
+        * @param mixed $arguments,... Additional arguments to pass to the constructor.
         * @return HTMLForm
         */
        public static function factory( $displayFormat/*, $arguments...*/ ) {
@@ -450,7 +450,7 @@ class HTMLForm extends ContextSource {
         * @since 1.23
         *
         * @param string $fieldname Name of the field
-        * @param array $descriptor Input Descriptor, as described above
+        * @param array &$descriptor Input Descriptor, as described above
         *
         * @throws MWException
         * @return string Name of a HTMLFormField subclass
index 1f49c8a..ccacbe4 100644 (file)
@@ -57,7 +57,7 @@ class UploadSourceAdapter {
         * @param string $path
         * @param string $mode
         * @param array $options
-        * @param string $opened_path
+        * @param string &$opened_path
         * @return bool
         */
        function stream_open( $path, $mode, $options, &$opened_path ) {
index 63258cb..2099709 100644 (file)
@@ -55,16 +55,12 @@ class WikiImporter {
         * @param Config $config
         * @throws Exception
         */
-       function __construct( ImportSource $source, Config $config = null ) {
+       function __construct( ImportSource $source, Config $config ) {
                if ( !class_exists( 'XMLReader' ) ) {
                        throw new Exception( 'Import requires PHP to have been compiled with libxml support' );
                }
 
                $this->reader = new XMLReader();
-               if ( !$config ) {
-                       wfDeprecated( __METHOD__ . ' without a Config instance', '1.25' );
-                       $config = MediaWikiServices::getInstance()->getMainConfig();
-               }
                $this->config = $config;
 
                if ( !in_array( 'uploadsource', stream_get_wrappers() ) ) {
@@ -428,7 +424,7 @@ class WikiImporter {
 
        /**
         * Alternate per-revision callback, for debugging.
-        * @param WikiRevision $revision
+        * @param WikiRevision &$revision
         */
        public function debugRevisionHandler( &$revision ) {
                $this->debug( "Got revision:" );
index 8f5858b..b832d45 100644 (file)
@@ -106,7 +106,7 @@ abstract class DatabaseUpdater {
        protected $holdContentHandlerUseDB = true;
 
        /**
-        * @param Database $db To perform updates on
+        * @param Database &$db To perform updates on
         * @param bool $shared Whether to perform updates on shared tables
         * @param Maintenance $maintenance Maintenance object which created us
         */
index a29d987..ae80c8b 100644 (file)
@@ -134,6 +134,7 @@ abstract class Installer {
                'envCheckUploadsDirectory',
                'envCheckLibicu',
                'envCheckSuhosinMaxValueLength',
+               'envCheck64Bit',
        ];
 
        /**
@@ -1081,6 +1082,20 @@ abstract class Installer {
                return true;
        }
 
+       /**
+        * Checks if we're running on 64 bit or not. 32 bit is becoming increasingly
+        * hard to support, so let's at least warn people.
+        *
+        * @return bool
+        */
+       protected function envCheck64Bit() {
+               if ( PHP_INT_SIZE == 4 ) {
+                       $this->showMessage( 'config-using-32bit' );
+               }
+
+               return true;
+       }
+
        /**
         * Convert a hex string representing a Unicode code point to that code point.
         * @param string $c
@@ -1353,7 +1368,7 @@ abstract class Installer {
                }
 
                // extensions -> extension.json, skins -> skin.json
-               $jsonFile = substr( $directory, 0, strlen( $directory ) -1 ) . '.json';
+               $jsonFile = substr( $directory, 0, strlen( $directory ) - 1 ) . '.json';
 
                $dh = opendir( $extDir );
                $exts = [];
index 0f639ba..d60d801 100644 (file)
@@ -267,8 +267,8 @@ EOT;
        }
 
        /**
-        * @param $dir
-        * @param $db
+        * @param string $dir
+        * @param string $db
         * @return Status
         */
        protected function makeStubDBFile( $dir, $db ) {
@@ -296,7 +296,7 @@ EOT;
        }
 
        /**
-        * @param Status $status
+        * @param Status &$status
         * @return Status
         */
        public function setupSearchIndex( &$status ) {
index 8ba3cef..69d1fcf 100644 (file)
        "config-postgres-old": "PostgreSQL $1 أو لاحق مطلوب. لديك $2.",
        "config-mssql-old": "خادم Microsoft SQL $1 أو لاحق مطلوب. لديك $2.",
        "config-sqlite-mkdir-error": "خطأ في إنشاء دليل البيانات \"$1\". تحقق من الموقع وحاول مرة أخرى.",
-       "config-sqlite-connection-error": "1$.\nتحقق من اسم دليل البيانات وقواعد البيانات أدناه وحاول مرة أخرى.",
+       "config-sqlite-connection-error": "$1.\nتحقق من اسم دليل البيانات وقواعد البيانات أدناه وحاول مرة أخرى.",
        "config-sqlite-readonly": "الملف <code>$1</code> غير قابل للكتابة.",
        "config-sqlite-cant-create-db": "لا يمكن إنشاء ملف قاعدة البيانات <code>$1</code>.",
        "config-can-upgrade": "هناك جداول ميدياويكي في قاعدة البيانات هذه. للارتقاء بها إلى ميدياويكي $1; انقر على <strong>متابعة</strong>.",
index 1335b9c..096767f 100644 (file)
@@ -83,6 +83,7 @@
        "config-no-cli-uploads-check": "'''Папярэджаньне:''' Вашая дырэкторыя для загрузак па змоўчваньні (<code>$1</code>), не правераная на ўразьлівасьць да выкананьня адвольных скрыптоў падчас усталяваньня CLI.\n.",
        "config-brokenlibxml": "У Вашай сыстэме ўсталяваныя PHP і libxml2 зь несумяшчальнымі вэрсіямі, што можа прывесьці да пашкоджаньня зьвестак MediaWiki і іншых вэб-дастасаваньняў.\nАбнавіце libxml2 да вэрсіі 2.7.3 ці больш позьняй ([https://bugs.php.net/bug.php?id=45996 паведамленьне пра памылку на сайце PHP]).\nУсталяваньне перарванае.",
        "config-suhosin-max-value-length": "Suhosin усталяваны і абмяжоўвае <code>даўжыню</code> парамэтру GET да $1 {{PLURAL:$1|1=байта|байтаў}}.\nResourceLoader, складнік MediaWiki, будзе абходзіць гэтае абмежаваньне, што адаб’ецца на прадукцыйнасьці.\nКалі магчыма, варта ўсталяваць у <code>php.ini</code> значэньне <code>suhosin.get.max_value_length</code> роўным 1024 ці больш, а таксама вызначыць тое ж значэньне для <code>$wgResourceLoaderMaxQueryLength</code> у <code>LocalSettings.php</code>.",
+       "config-using-32bit": "<strong>Папярэджаньне:</strong> падобна, што вашая сыстэма выкарыстоўвае 32-бітавыя цэлыя лікі. Гэта [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit не рэкамэндуецца].",
        "config-db-type": "Тып базы зьвестак:",
        "config-db-host": "Хост базы зьвестак:",
        "config-db-host-help": "Калі сэрвэр Вашай базы зьвестак знаходзіцца на іншым сэрвэры, увядзіце тут імя хоста ці IP-адрас.\n\nКалі Вы карыстаецеся shared-хостынгам, Ваш хостынг-правайдэр мусіць даць Вам слушнае імя хоста базы зьвестак у сваёй дакумэнтацыі.\n\nКалі Вы усталёўваеце сэрвэр Windows з выкарыстаньнем MySQL, выкарыстаньне «localhost» можа не працаваць для назвы сэрвэра. У гэтым выпадку паспрабуйце пазначыць «127.0.0.1»  для лякальнага IP-адраса.\n\nКалі Вы выкарыстоўваеце PostgreSQL, пакіньце поле пустым, каб далучыцца праз Unix-сокет.",
        "config-help-tooltip": "націсьніце, каб разгарнуць",
        "config-nofile": "Файл «$1» ня знойдзены. Ці быў ён выдалены?",
        "config-extension-link": "Ці ведаеце вы, што вашая вікі падтрымлівае [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions пашырэньні]?\n\nВы можаце праглядзець [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category пашырэньні паводле катэгорыяў] або [https://www.mediawiki.org/wiki/Extension_Matrix матрыцу пашырэньняў], каб пабачыць поўны сьпіс.",
+       "config-skins-screenshots": "$1 (здымкі экрану: $2)",
        "mainpagetext": "<strong>MediaWiki была ўсталяваная.</strong>",
        "mainpagedocfooter": "Глядзіце [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents дапаможнік карыстальніка] для атрыманьня інфармацыі па карыстаньні вікі-праграмамі.\n\n== З чаго пачаць ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Сьпіс парамэтраў канфігурацыі]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Частыя пытаньні MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Рассылка паведамленьняў пра зьяўленьне новых вэрсіяў MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Пераклад MediaWiki на вашую мову]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Даведайцеся, як змагацца з спамам у вашай вікі]"
 }
index 34efde4..dc423a6 100644 (file)
        "config-install-mainpage-exists": "প্রধান পাতা ইতিমধ্যেই বিদ্যমান, এডিয়ে যাওয়া হচ্ছে",
        "config-help": "সাহায্য",
        "config-help-tooltip": "প্রসারিত করতে ক্লিক করুন",
+       "config-skins-screenshots": "$1 (স্ক্রিনশট: $2)",
+       "config-screenshot": "স্ক্রিনশট",
        "mainpagetext": "<strong>মিডিয়াউইকি ইনস্টল করা হয়েছে।</strong>",
        "mainpagedocfooter": "কীভাবে উইকি সফটওয়্যারটি ব্যবহারকার করবেন, তা জানতে [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents ব্যবহারকারী সহায়িকা] দেখুন।\n\n== কোথা থেকে শুরু করবেন ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings কনফিগারেশন সেটিং তালিকা]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ প্রশ্নোত্তরে মিডিয়াউইকি]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce মিডিয়াউইকি মুক্তির মেইলিং লিস্ট]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources আপনার ভাষার জন্য মিডিয়াউইকি স্থানীয়করণ করুন]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam আপনার উইকিতে স্প্যামের সাথে লড়াই করার উপায় সম্পর্কে জানুন]"
 }
index 3babc3f..ca649dc 100644 (file)
@@ -92,6 +92,7 @@
        "config-no-cli-uploads-check": "'''Warnung''': Das Standardverzeichnis für hochgeladene Dateien (<code>$1</code>) wird, während der Installation über die Kommandozeile, nicht auf Sicherheitsanfälligkeiten hinsichtlich willkürlicher Skriptausführungen geprüft.",
        "config-brokenlibxml": "Das System nutzt eine Kombination aus PHP- und libxml2-Versionen, die fehleranfällig ist und versteckte Datenfehler bei MediaWiki und anderen Webanwendungen verursachen kann.\nAktualisiere auf libxml2 2.7.3 oder später, um das Problem zu lösen. Installationsabbruch ([https://bugs.php.net/bug.php?id=45996 siehe hierzu die Fehlermeldung bei PHP]).",
        "config-suhosin-max-value-length": "Suhosin ist installiert und beschränkt die Länge des GET-Parameters auf $1 Bytes.\nDer ResouceLoader von MediaWiki wird zwar unter diesen Bedingungen funktionieren, allerdings nur mit verminderter Leistungsfähigkeit.\nSofern möglich, sollte der Parameter <code>suhosin.get.max_value_length</code> in der Datei <code>php.ini</code> auf 1024 oder höher festgelegt werden.\nGleichzeitig muss der Parameter <code>$wgResourceLoaderMaxQueryLength</code> in der Datei <code>LocalSettings.php</code> auf den selben Wert eingestellt werden.",
+       "config-using-32bit": "<strong>Warnung:</strong> Es scheint, als ob dein System mit 32-Bit-Ganzzahlen läuft. Dies wird [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit nicht empfohlen].",
        "config-db-type": "Datenbanksystem:",
        "config-db-host": "Datenbankserver:",
        "config-db-host-help": "Sofern sich die Datenbank auf einem anderen Server befindet, ist hier der Servername oder die entsprechende IP-Adresse anzugeben.\n\nSofern ein gemeinschaftlich genutzter Server verwendet wird, sollte der Hoster den zutreffenden Servernamen in seiner Dokumentation angegeben haben.\n\nSofern auf einem Windows-Server installiert und MySQL genutzt wird, funktioniert der Servername „localhost“ voraussichtlich nicht. Wenn nicht, sollte  „127.0.0.1“ oder die lokale IP-Adresse angegeben werden.\n\nSofern PostgresQL genutzt wird, muss dieses Feld leer gelassen werden, um über ein Unix-Socket zu verbinden.",
        "config-help-tooltip": "Zum Expandieren klicken",
        "config-nofile": "Die Datei „$1“ konnte nicht gefunden werden. Wurde sie gelöscht?",
        "config-extension-link": "Wusstest du, dass dein Wiki die Nutzung von [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions Erweiterungen] unterstützt?\n\nDu kannst die [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category Erweiterungen nach Kategorie] anzeigen oder die [https://www.mediawiki.org/wiki/Extension_Matrix Erweiterungs-Matrix] aufrufen, um eine vollständige Liste der Erweiterungen zu sehen.",
+       "config-skins-screenshots": "$1 (Bildschirmfotos: $2)",
+       "config-screenshot": "Bildschirmfoto",
        "mainpagetext": "<strong>MediaWiki wurde installiert.</strong>",
        "mainpagedocfooter": "Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Benutzerhandbuch].\n\n== Starthilfen ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsvariablen]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki-FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]"
 }
index bb245f5..6319b76 100644 (file)
@@ -75,6 +75,7 @@
        "config-no-cli-uploads-check": "<strong>Warning:</strong> Your default directory for uploads (<code>$1</code>) is not checked for vulnerability\nto 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.\nUpgrade to libxml2 2.7.3 or later ([https://bugs.php.net/bug.php?id=45996 bug filed with PHP]).\nInstallation aborted.",
        "config-suhosin-max-value-length": "Suhosin is installed and limits the GET parameter <code>length</code> to $1 bytes.\nMediaWiki's ResourceLoader component will work around this limit, but that will degrade performance.\nIf at all possible, you should set <code>suhosin.get.max_value_length</code> to 1024 or higher in <code>php.ini</code>, and set <code>$wgResourceLoaderMaxQueryLength</code> to the same value in <code>LocalSettings.php</code>.",
+       "config-using-32bit": "<strong>Warning:</strong> your system appears to be running with 32-bit integers. This is [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit not advised].",
        "config-db-type": "Database type:",
        "config-db-host": "Database host:",
        "config-db-host-help": "If your database server is on different server, enter the host name or IP address here.\n\nIf you are using shared web hosting, your hosting provider should give you the correct host name in their documentation.\n\nIf you are installing on a Windows server and using MySQL, using \"localhost\" may not work for the server name. If it does not, try \"127.0.0.1\" for the local IP address.\n\nIf you are using PostgreSQL, leave this field blank to connect via a Unix socket.",
index 161c5db..7583455 100644 (file)
@@ -86,6 +86,7 @@
        "config-no-cli-uploads-check": "'''אזהרה:''' תיקיית בררת המחדל להעלאות (<code>$1</code>) לא נבדקת לפגיעוּת להרצת תסריטים אקראיים בזמן התקנה דרך CLI.",
        "config-brokenlibxml": "במערכת שלך יש שילוב של גרסאות של PHP ושל libxml2 שחשוף לבאגים ויכול לגרום לעיוות נתונים נסתר במדיה־ויקי וביישומי רשת אחרים.\nיש לשדרג ל־libxml2 2.7.3 או גרסה חדשה יותר ([https://bugs.php.net/bug.php?id=45996 באג מתויק ב־PHP]).\nההתקנה נעצרה.",
        "config-suhosin-max-value-length": "מותקן פה Suhosin והוא מגביל את אורך פרמטר GET ל־$1 בתים. רכיב ResourceLoader של מדיה־ויקי יעקוף את המגלבה הזאת, אבל זה יפגע בביצועים. אם זה בכלל אפשרי, כדאי לתקן את הערך של <code>suhosin.get.max_value_length</code> ל־1024 או יותר בקובץ <code>php.ini</code> ולהגדיר את ‎<code>$wgResourceLoaderMaxQueryLength</code> לאותו הערך בקובץ LocalSettings.php.",
+       "config-using-32bit": "<strong>אזהרה:</strong> נראה שהמערכת שלך רצה עם מספרים שלמים של 32 סיביות. זה [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit לא מומלץ].",
        "config-db-type": "סוג מסד הנתונים:",
        "config-db-host": "שרת מסד הנתונים:",
        "config-db-host-help": "אם שרת מסד הנתונים שלך נמצא על שרת אחר, יש להקליד את שם המחשב או את כתובת ה־IP כאן.\n\nאם זה אירוח משותף, ספק האירוח שלכם אמור לתת לך את שם השרת הנכון במסמכים.\n\nאם זוהי התקנה בשרת Windows שמשתמשת ב־MySQL, השימוש ב־localhost עשוי לא לעבוד. אם הוא לא עובד, יש לנסות את \"127.0.0.1\" בתור כתובת ה־IP המקומית.\n\nאם זה PostgreSQL, תשאירו את השדה הזה ריק כדי להתחבר דרך שקע יוניקס.",
        "config-help-tooltip": "להרחיב",
        "config-nofile": "הקובץ \"$1\" לא נמצא. האם הוא נמחק?",
        "config-extension-link": "הידעת שמדיה־ויקי תומכת ב־[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions הרחבות]?\n\nבאפשרותך לעיין ב־[https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category הרחבות לפי קטגוריה].",
+       "config-skins-screenshots": "$1 (צילומי מסך: $2)",
+       "config-screenshot": "צילום מסך",
        "mainpagetext": "<strong>תוכנת מדיה־ויקי הותקנה בהצלחה.</strong>",
        "mainpagedocfooter": "היעזרו ב[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents מדריך למשתמש] למידע על שימוש בתוכנת הוויקי.\n\n== קישורים שימושיים ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings רשימת ההגדרות]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ שאלות ותשובות על מדיה־ויקי]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce רשימת התפוצה על השקת גרסאות]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources תרגום מדיה־ויקי לשפה שלך]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam איך להיאבק נגד ספאם באתר הוויקי שלך]"
 }
index b443950..9863beb 100644 (file)
@@ -7,7 +7,8 @@
                        "संजीव कुमार",
                        "Sahilrathod",
                        "Shyamal",
-                       "Sfic"
+                       "Sfic",
+                       "Sachinkatiyar"
                ]
        },
        "config-desc": "साँचा लिए इंस्टॉलर",
@@ -50,6 +51,7 @@
        "config-apc": "[http://www.php.net/apc एपीसी] स्थापित है।",
        "config-apcu": "[http://www.php.net/apcu एपीसीयू] स्थापित है।",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp विनकैश] स्थापित है।",
+       "config-using-32bit": "<विशेष>चेतावनी:</विशेष> आपका सिस्टम 32-बिट पूर्णांक के साथ चल रहा है यह [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit विवेचित नहीं है]।",
        "config-db-type": "डेटाबेस प्रकार:",
        "config-db-host": "डेटाबेस होस्ट:",
        "config-db-host-oracle": "डेटाबेस टीएनएस:",
index f292ab3..ee01751 100644 (file)
        "config-help-tooltip": "확장하려면 클릭",
        "config-nofile": "\"$1\" 파일을 찾을 수 없습니다. 이미 삭제되었나요?",
        "config-extension-link": "당신의 위키가 [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions 확장 기능]을 지원한다는 것을 알고 계십니까?\n\n[https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category 분류별 확장 기능]을 찾아보실 수 있습니다.",
+       "config-screenshot": "스크린샷",
        "mainpagetext": "<strong>미디어위키가 설치되었습니다.</strong>",
        "mainpagedocfooter": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 이곳]에서 위키 소프트웨어에 대한 정보를 얻을 수 있습니다.\n\n== 시작하기 ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings 설정하기 목록]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ 미디어위키 FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 릴리스 메일링 리스트]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 내 언어로 미디어위키 지역화]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 당신의 위키에서 스팸에 대처하는 법을 배우세요]"
 }
index 728a9a8..d028a8c 100644 (file)
@@ -80,6 +80,7 @@
        "config-no-cli-uploads-check": "'''Предупредување:''' Вашата основна папка за подигања (<code>$1</code>) не е проверена дали е подложна\nпроизволно извршување на скрипти во текот на воспоставката на посредникот на повикувачко ниво (CLI).",
        "config-brokenlibxml": "Вашиот систем има комбинација од PHP и libxml2 верзии и затоа има грешки и може да предизвика скриено расипување на податоците кај МедијаВики и други мрежни програми.\nНадградете го на libxml2 2.7.3 или нивни понови верзии! ([https://bugs.php.net/bug.php?id=45996 грешката е заведена во PHP]). Воспоставката е откажана.",
        "config-suhosin-max-value-length": "Suhosin е воспоставен и ја ограничува должината на параметарот GET на $1 бајти. Делот ResourceLoader на МедијаВики ќе ја заобиколува ова граница, но со тоа ќе се влоши делотворноста. Ако е воопшто можно, на <code>suhosin.get.max_value_length</code> треба да го наместите на 1024 или повеќе во <code>php.ini</code>, и да му ја зададете истата вредност на <code>$wgResourceLoaderMaxQueryLength</code> во <code>LocalSettings.php</code>.",
+       "config-using-32bit": "<strong>Предупредување:</strong> вашиот систем работи на 32-битни цели броеви. Ова [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-не се препорачува].",
        "config-db-type": "Тип на база:",
        "config-db-host": "Домаќин на базата:",
        "config-db-host-help": "Ако вашата база е на друг опслужувач, тогаш тука внесете го името на домаќинот или IP-адресата.\n\nАко користите заедничко (споделено) вдомување, тогаш вашиот вдомител треба да го наведе точното име на домаќинот во неговата документација.\n\nАко воспоставувате на опслужувач на Windows и користите MySQL, можноста „localhost“ може да не функционира за опслужувачкото име. Во тој случај, обидете се со внесување на „127.0.0.1“ како месна IP-адреса.\n\nАко користите PostgreSQL, оставете го полево празно за да се поврзете преку Unix-приклучок.",
        "config-help-tooltip": "стиснете да расклопите",
        "config-nofile": "Податотеката „$1“ не е пронајдена. Да не е избришана?",
        "config-extension-link": "Дали сте знаеле дека вашето вики поддржува [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions додатоци]?\n\nМожете да ги прелистате [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category по категории]",
+       "config-skins-screenshots": "$1 (екр. снимки: $2)",
+       "config-screenshot": "екранска снимка",
        "mainpagetext": "<strong>МедијаВики е успешно воспоставен.</strong>",
        "mainpagedocfooter": "Погледнете го [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Упатството за корисници] за подетални информации како се користи вики-програмот.\n\n==Од каде да почнете==\n* [https://meta.wikimedia.org/wiki/Manual:Configuration_settings Список на нагодувања]\n* [https://meta.wikimedia.org/wiki/Manual:FAQ ЧПП (често поставувани прашања) за МедијаВики].\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Поштенски список на МедијаВики за нови верзии]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Локализирајте го МедијаВики на вашиот јазик]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Дознајте како да се борите против спам на вашето вики]"
 }
index b7a7289..b43f92f 100644 (file)
        "config-help-tooltip": "klikk for å utvide",
        "config-nofile": "Filen \"$1\" ble ikke funnet. Kan den være blitt slettet?",
        "config-extension-link": "Visste du at wikien din kan brukes sammen med en mengde [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions utvidelser]?\n\nDu kan sjekke gjennom [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category utvidelser per kategori] eller [https://www.mediawiki.org/wiki/Extension_Matrix utvidelsesmatrisen] for å se den komplette listen av utvidelser.",
+       "config-skins-screenshots": "$1 (skjermbilder: $2)",
+       "config-screenshot": "skjermbilde",
        "mainpagetext": "<strong>MediaWiki har blitt installert.</strong>",
        "mainpagedocfooter": "Sjekk [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents brukerveiledningen] for å få informasjon om hvordan du bruker wiki-programvaren.\n\n==Hvordan komme igang==\n*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Innstillingsliste]\n*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Ofte stilte spørsmål om MediaWiki]\n*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-postliste]\n*[https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Tilpass MediaWiki for ditt språk]\n*[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Lær deg å beskytte deg mot spam på wikien din]"
 }
index 2154e7e..4db6cfb 100644 (file)
@@ -19,7 +19,8 @@
                        "Macofe",
                        "Hex",
                        "Mainframe98",
-                       "Rcdeboer"
+                       "Rcdeboer",
+                       "Festina90"
                ]
        },
        "config-desc": "Het installatieprogramma voor MediaWiki",
@@ -95,6 +96,7 @@
        "config-no-cli-uploads-check": "''Waarschuwing:'' uw standaardmap voor uploads (<code>$1</code>) wordt niet gecontroleerd op kwetsbaarheden voor het uitvoeren van willekeurige scripts gedurende de CLI-installatie.",
        "config-brokenlibxml": "Uw systeem heeft een combinatie van PHP- en libxml2-versies geïnstalleerd die is foutgevoelig is en kan leiden tot onzichtbare beschadiging van gegevens in MediaWiki en andere webapplicaties.\nUpgrade naar libxml2 2.7.3 of hoger([https://bugs.php.net/bug.php?id=45996 bij PHP gerapporteerde fout]).\nDe installatie wordt afgebroken.",
        "config-suhosin-max-value-length": "Suhosin is geïnstalleerd en beperkt de GET-parameter <code>length</code> tot $1 bytes.\nDe ResourceLoader van MediaWiki omzeilt deze beperking, maar dat is slecht voor de prestaties.\nAls het mogelijk is, moet u de waarde \"<code>suhosin.get.max_value_length</code>\" in <code>php.ini</code> instellen op 1024 of hoger en <code>$wgResourceLoaderMaxQueryLength</code> in LocalSettings.php op dezelfde waarde instellen.",
+       "config-using-32bit": "<strong>Opgepast:</strong> uw systeem blijkt met 32-bit integers te werken. Dit is [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit niet geadviseerd].",
        "config-db-type": "Databasetype:",
        "config-db-host": "Databasehost:",
        "config-db-host-help": "Als uw databaseserver een andere server is, voer dan de hostnaam of het IP-adres hier in.\n\nAls u gebruik maakt van gedeelde webhosting, hoort uw provider u de juiste hostnaam te hebben verstrekt.\n\nAls u MediaWiki op een Windowsserver installeert en MySQL gebruikt, dan werkt \"localhost\" mogelijk niet als servernaam.\nAls het inderdaad niet werkt, probeer dan \"127.0.0.1\" te gebruiken als lokaal IP-adres.\n\nAls u PostgreSQL gebruikt, laat dit veld dan leeg om via een Unix-socket te verbinden.",
index f892527..884f956 100644 (file)
@@ -22,7 +22,7 @@
                ]
        },
        "config-desc": "O instalador do MediaWiki",
-       "config-title": "Instalação da MediaWiki $1",
+       "config-title": "Instalação do MediaWiki $1",
        "config-information": "Informação",
        "config-localsettings-upgrade": "Foi detetado um ficheiro <code>LocalSettings.php</code>.\nPara atualizar esta instalação, por favor introduza o valor de <code>$wgUpgradeKey</code> na caixa abaixo.\nEncontra este valor em <code>LocalSettings.php</code>.",
        "config-localsettings-cli-upgrade": "Foi detetado um ficheiro <code>LocalSettings.php</code>.\nPara atualizar esta instalação, execute o <code>update.php</code>, por favor",
        "config-help": "ajuda",
        "config-help-tooltip": "clique para expandir",
        "config-nofile": "Não foi possível encontrar o ficheiro \"$1\". Terá sido apagado?",
-       "config-extension-link": "Sabia que a sua wiki suporta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensões]?\n\nPode procurar [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensões por categoria].",
-       "mainpagetext": "<strong>MediaWiki instalado.</strong>",
+       "config-extension-link": "Sabia que a sua wiki suporta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensões]?\n\nPode consultar as [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensões por categoria] ou a [https://www.mediawiki.org/wiki/Extension_Matrix Matriz de Extensões] para ver a lista completa de extensões.",
+       "config-skins-screenshots": "$1 (capturas de ecrã: $2)",
+       "config-screenshot": "captura de ecrã",
+       "mainpagetext": "<strong>O MediaWiki foi instalado.</strong>",
        "mainpagedocfooter": "Consulte a [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Ajuda do MediaWiki] para informações sobre o uso do software wiki.\n\n== Onde começar ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de opções de configuração]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Perguntas e respostas frequentes sobre o MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Subscreva a lista de divulgação de novas versões do MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Regionalize o MediaWiki para a sua língua]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprenda a combater <i>spam</i> na sua wiki]"
 }
index 3bf7ccb..a5c6790 100644 (file)
@@ -95,6 +95,7 @@
        "config-no-cli-uploads-check": "CLI = [[w:Command-line interface|command-line interface]] (i.e. the installer runs as a command-line script, not using HTML interface via an internet browser)",
        "config-brokenlibxml": "Status message in the MediaWiki installer environment checks.",
        "config-suhosin-max-value-length": "{{doc-important|Do not translate \"length\", \"suhosin.get.max_value_length\", \"php.ini\", \"$wgResourceLoaderMaxQueryLength\" and \"LocalSettings.php\".}}\nMessage shown when PHP parameter <code>suhosin.get.max_value_length</code> is between 0 and 1023 (that max value is hard set in MediaWiki software).",
+       "config-using-32bit": "Warning message shown when installing on a 32-bit system.",
        "config-db-type": "Field label in the MediaWiki installer followed by possible database types.",
        "config-db-host": "Used as label.\n\nAlso used in {{msg-mw|Config-missing-db-host}}.",
        "config-db-host-help": "{{doc-singularthey}}",
        "config-nofile": "Used as failure message. Parameters:\n* $1 - filename",
        "config-extension-link": "Shown on last page of installation to inform about possible extensions.\n{{Identical|Did you know}}",
        "config-skins-screenshots": "Radio button text, $1 is the skin name, and $2 is a list of links to screenshots of that skin",
-       "config-skins-screenshot": "Radio button text, $1 is the skin name, and $2 is a link to a screenshot of that skin, where the link text is {{mw-msg|config-screenshot}}.",
-       "config-screenshot": "Link text for the link in {{msg-mw|config-skins-screenshot}}",
+       "config-skins-screenshot": "Radio button text, $1 is the skin name, and $2 is a link to a screenshot of that skin, where the link text is {{msg-mw|config-screenshot}}.",
+       "config-screenshot": "Link text for the link in {{msg-mw|config-skins-screenshot}}\n{{Identical|Screenshot}}",
        "mainpagetext": "Along with {{msg-mw|mainpagedocfooter}}, the text you will see on the Main Page when your wiki is installed.",
        "mainpagedocfooter": "Along with {{msg-mw|mainpagetext}}, the text you will see on the Main Page when your wiki is installed.\nThis might be a good place to put information about <nowiki>{{GRAMMAR:}}</nowiki>. See [[{{NAMESPACE}}:{{BASEPAGENAME}}/fi]] for an example. For languages having grammatical distinctions and not having an appropriate <nowiki>{{GRAMMAR:}}</nowiki> software available, a suggestion to check and possibly amend the messages having <nowiki>{{SITENAME}}</nowiki> may be valuable. See [[{{NAMESPACE}}:{{BASEPAGENAME}}/ksh]] for an example."
 }
index cdd13c2..9045605 100644 (file)
        "config-no-cli-uploads-check": "'''Предупреждение:''' каталог для загрузки по умолчанию ( <code>$1</code> ) не проверялся на уязвимости\n на выполнение произвольного сценария во время установки CLI.",
        "config-brokenlibxml": "В вашей системе имеется сочетание версий PHP и libxml2, которое может привести к скрытым повреждениям данных в MediaWiki и других веб-приложениях.\nОбновите libxml2 до версии 2.7.3 или старше ([https://bugs.php.net/bug.php?id=45996 сведения об ошибке]).\nУстановка прервана.",
        "config-suhosin-max-value-length": "Suhosin установлен и ограничивает параметр GET <code>length</code> до $1 {{PLURAL:$1|байт|байта|байт}}. Компонент MediaWiki ResourceLoader будет обходить это ограничение, но это снизит производительность. Если это возможно, следует установить <code>suhosin.get.max_value_length</code> в значение 1024 или выше в <code>php.ini</code>, а также установить для <code>$wgResourceLoaderMaxQueryLength</code> такое же значение в LocalSettings.php.",
+       "config-using-32bit": "<strong>Внимание:</strong> похоже, ваша система работает с 32-битными целыми числами. Это [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit не рекомендуется].",
        "config-db-type": "Тип базы данных:",
        "config-db-host": "Хост базы данных:",
        "config-db-host-help": "Если сервер базы данных находится на другом сервере, введите здесь его имя хоста или IP-адрес.\n\nЕсли вы используете виртуальный хостинг, ваш провайдер должен указать правильное имя хоста в своей документации.\n\nЕсли вы устанавливаете систему на сервере под Windows и используете MySQL, имя сервера «localhost» может не работать. В этом случае попробуйте указать 127.0.0.1 локальный  IP-адрес.\n\nЕсли вы используете PostgreSQL, оставьте это поле пустым для подключения через сокет Unix.",
        "config-help-tooltip": "нажмите, чтобы развернуть",
        "config-nofile": "Файл \"$1\" не удается найти. Он был удален?",
        "config-extension-link": "Знаете ли вы, что ваш вики-проект поддерживает [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions расширения]?\n\nВы можете просмотреть [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category расширения по категориям] или [https://www.mediawiki.org/wiki/Extension_Matrix матрицу расширений], чтобы увидеть их полный список.",
+       "config-skins-screenshots": "$1 (скриншоты: $2)",
+       "config-screenshot": "скриншот",
        "mainpagetext": "<strong>MediaWiki успешно установлена.</strong>",
        "mainpagedocfooter": "Информацию по работе с этой вики можно найти в [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents справочном руководстве].\n\n== Некоторые полезные ресурсы ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Список возможных настроек];\n* [https://www.mediawiki.org/wiki/Manual:FAQ/ru Часто задаваемые вопросы и ответы по MediaWiki];\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Рассылка уведомлений о выходе новых версий MediaWiki].\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Перевод MediaWiki на свой язык]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Узнайте, как бороться со спамом в вашей вики]"
 }
index 4f52403..a338387 100644 (file)
@@ -85,6 +85,7 @@
        "config-no-cli-uploads-check": "'''Varning:''' Din standardkatalog för uppladdningar (<code>$1</code>) har inte kontrollerats för sårbarhet från körning av godtyckliga skript under CLI-installationen.",
        "config-brokenlibxml": "Ditt system har en kombination av PHP och libxml2 som är buggigt och kan orsaka datakorruption i MediaWiki och andra webbprogram.\nUppgradera till libxml2 2.7.3 eller senare ([https//bugs.php.net/bug.php?id=45996 buggfil med PHP]).\nInstallationen avbröts.",
        "config-suhosin-max-value-length": "Suhosin är installerat och begränsar GET-parametern <code>length</code> till $1 bytes.\nMediaWikis ResourceLoader-komponent kommer att arbeta runt denna begränsning, men det kommer att försämra prestandan.\nOm möjligt bör du sätta <code>suhosin.get.max_value_length</code> till 1024 eller högre i <code>php.ini</code>, och sätta <code>$wgResourceLoaderMaxQueryLength</code> till samma värde som i <code>LocalSettings.php</code>.",
+       "config-using-32bit": "<strong>Varning:</strong> ditt system verkar vara en 32-bitarsversion. Detta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit rekommenderas inte].",
        "config-db-type": "Databastyp:",
        "config-db-host": "Databasvärd:",
        "config-db-host-help": "Om din databasserver är på en annan server, ange då värdnamnet eller IP-adressen här.\n\nOm du använder ett delat webbhotell, bör din leverantör ge dig rätt värdnamn i deras dokumentation.\n\nOm du installerar på en Windowsserver och använder MySQL, kanske \"localhost\" inte fungerar för servernamnet. Om det inte gör det försök med \"127.0.0.1\" som den lokala IP-adressen.\n\nOm du använder PostgreSQL, lämna detta fält blankt för att ansluta via en Unix-socket.",
        "config-help-tooltip": "klicka för att expandera",
        "config-nofile": "Filen \"$1\" kunde inte hittas. Har den raderats?",
        "config-extension-link": "Visste du att din wiki stödjer [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions tillägg]?\n\nDu kan bläddra [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category tillägg efter kategori].",
+       "config-skins-screenshots": "$1 (skärmbilder: $2)",
+       "config-screenshot": "skärmbild",
        "mainpagetext": "<strong>MediaWiki har installerats utan problem.</strong>",
        "mainpagedocfooter": "Information om hur wiki-programvaran används finns i [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents användarguiden].\n\n== Att komma igång ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista över konfigurationsinställningar]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-postlista för nya versioner av MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Lokalisera MediaWiki för ditt språk]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Läs om hur du bekämpar spam på din wiki]"
 }
index d0c0026..fab5eef 100644 (file)
@@ -98,6 +98,7 @@
        "config-no-cli-uploads-check": "<strong>警告:</strong>在CLI安装过程中,没有对您的默认上传目录(<code>$1</code>)进行执行任意脚本的漏洞检查。",
        "config-brokenlibxml": "您的系统安装的PHP和libxml2版本组合存在故障,并可能在MediaWiki和其他web应用程序中造成隐藏的数据损坏。请将libxml2升级到2.7.3或以上([https://bugs.php.net/bug.php?id=45996 PHP的故障报告])。安装已中断。",
        "config-suhosin-max-value-length": "Suhosin已经安装并将GET请求的参数长度限制在$1字节。MediaWiki的ResourceLoader部件可以在此限制下正常工作,但其性能会被降低。如果可能,请在<code>php.ini</code>中将<code>suhosin.get.max_value_length</code>设为1024或更高值,并在LocalSettings.php中将<code>$wgResourceLoaderMaxQueryLength</code>设为同一值。",
+       "config-using-32bit": "<strong>警告:</strong>您的系统似乎是32位系统。我们[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:32-bit 不建议您]使用32位系统。",
        "config-db-type": "数据库类型:",
        "config-db-host": "数据库主机:",
        "config-db-host-help": "如果您的数据库在别的服务器上,请在这里输入它的域名或IP地址。\n\n如果您在使用共享网站套餐,您的网站商应该已在他们的控制面板中给您数据库信息了。\n\n如果您在Windows中安装并且使用MySQL,“localhost”可能无效。如果确实无效,请输入“127.0.0.1”作为IP地址。\n\n如果您在使用PostgreSQL,并且要用Unix socket来连接,请留空。",
        "config-help-tooltip": "单击展开",
        "config-nofile": "找不到文件“$1”。它是否已被删除?",
        "config-extension-link": "您是否知道您的wiki支持[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions 扩展]?\n\n您可以浏览[https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category 扩展分类]或[https://www.mediawiki.org/wiki/Extension_Matrix 扩展矩阵]以查看完整的扩展列表。",
+       "config-skins-screenshots": "$1(截图:$2)",
+       "config-screenshot": "截图",
        "mainpagetext": "<strong>已安装MediaWiki。</strong>",
        "mainpagedocfooter": "请查阅[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 用户指导]以获取使用本wiki软件的信息!\n\n== 入门 ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings MediaWiki配置设置列表]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/zh-hans MediaWiki常见问题]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki发布邮件列表]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 本地化MediaWiki到您的语言]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 了解如何在您的wiki上打击破坏]"
 }
index 44721d9..e743311 100644 (file)
@@ -202,7 +202,7 @@ class JobQueueFederated extends JobQueue {
 
        /**
         * @param array $jobs
-        * @param HashRing $partitionRing
+        * @param HashRing &$partitionRing
         * @param int $flags
         * @throws JobQueueError
         * @return array List of Job object that could not be inserted
index ef0ecb3..addc7fc 100644 (file)
@@ -37,6 +37,8 @@ class JobQueueGroup {
        protected $wiki;
        /** @var string|bool Read only rationale (or false if r/w) */
        protected $readOnlyReason;
+       /** @var bool Whether the wiki is not recognized in configuration */
+       protected $invalidWiki = false;
 
        /** @var array Map of (bucket => (queue => JobQueue, types => list of types) */
        protected $coalescedQueues;
@@ -68,9 +70,17 @@ class JobQueueGroup {
         * @return JobQueueGroup
         */
        public static function singleton( $wiki = false ) {
+               global $wgLocalDatabases;
+
                $wiki = ( $wiki === false ) ? wfWikiID() : $wiki;
+
                if ( !isset( self::$instances[$wiki] ) ) {
                        self::$instances[$wiki] = new self( $wiki, wfConfiguredReadOnlyReason() );
+                       // Make sure jobs are not getting pushed to bogus wikis. This can confuse
+                       // the job runner system into spawning endless RPC requests that fail (T171371).
+                       if ( $wiki !== wfWikiID() && !in_array( $wiki, $wgLocalDatabases ) ) {
+                               self::$instances[$wiki]->invalidWiki = true;
+                       }
                }
 
                return self::$instances[$wiki];
@@ -121,6 +131,13 @@ class JobQueueGroup {
        public function push( $jobs ) {
                global $wgJobTypesExcludedFromDefaultQueue;
 
+               if ( $this->invalidWiki ) {
+                       // Do not enqueue job that cannot be run (T171371)
+                       $e = new LogicException( "Domain '{$this->wiki}' is not recognized." );
+                       MWExceptionHandler::logException( $e );
+                       return;
+               }
+
                $jobs = is_array( $jobs ) ? $jobs : [ $jobs ];
                if ( !count( $jobs ) ) {
                        return;
@@ -171,6 +188,11 @@ class JobQueueGroup {
         * @since 1.26
         */
        public function lazyPush( $jobs ) {
+               if ( $this->invalidWiki ) {
+                       // Do not enqueue job that cannot be run (T171371)
+                       throw new LogicException( "Domain '{$this->wiki}' is not recognized." );
+               }
+
                if ( PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg' ) {
                        $this->push( $jobs );
                        return;
index 2156bd7..0413ea0 100644 (file)
@@ -39,7 +39,7 @@ class ArrayUtils {
         * justification for breaking compatibility with installations
         * compiled with ./configure --disable-hash.
         *
-        * @param array $array Array to sort
+        * @param array &$array Array to sort
         * @param string $key
         * @param string $separator A separator used to delimit the array elements and the
         *     key. This can be chosen to provide backwards compatibility with
index e55bebc..2d1c58b 100644 (file)
@@ -133,8 +133,8 @@ class IEUrlExtension {
        /**
         * Returns a variant of $url which will pass isUrlExtensionBad() but has the
         * same GET parameters, or false if it can't figure one out.
-        * @param $url
-        * @param $extWhitelist array
+        * @param string $url
+        * @param array $extWhitelist
         * @return bool|string
         */
        public static function fixUrlForIE6( $url, $extWhitelist = [] ) {
@@ -251,7 +251,7 @@ class IEUrlExtension {
         * or a specification in the style of a User-Agent header, such as
         * "Apache/1.3.34 (Unix) mod_ssl/2.8.25 OpenSSL/0.9.8a PHP/4.4.2"
         *
-        * @param $serverSoftware
+        * @param string $serverSoftware
         * @return bool
         */
        public static function haveUndecodedRequestUri( $serverSoftware ) {
index 01adeab..90c7a64 100644 (file)
@@ -134,7 +134,7 @@ class MemoizedCallable {
         *
         * Like MemoizedCallable::invokeArgs(), but variadic.
         *
-        * @param mixed ...$params Parameters for memoized function or method.
+        * @param mixed $params,... Parameters for memoized function or method.
         * @return mixed The memoized callable's return value.
         */
        public function invoke() {
index 9d6b734..6c48cee 100644 (file)
@@ -275,7 +275,7 @@ class MultiHttpClient implements LoggerAwareInterface {
        }
 
        /**
-        * @param array $req HTTP request map
+        * @param array &$req HTTP request map
         * @param array $opts
         *   - connTimeout    : default connection timeout
         *   - reqTimeout     : default request timeout
@@ -435,7 +435,7 @@ class MultiHttpClient implements LoggerAwareInterface {
        /**
         * Register a logger
         *
-        * @param LoggerInterface
+        * @param LoggerInterface $logger
         */
        public function setLogger( LoggerInterface $logger ) {
                $this->logger = $logger;
index 9f15078..ef2b768 100644 (file)
@@ -28,7 +28,7 @@ class ComposerInstalled {
                                'type' => $installed['type'],
                                'licenses' => isset( $installed['license'] ) ? $installed['license'] : [],
                                'authors' => isset( $installed['authors'] ) ? $installed['authors'] : [],
-                               'description' => isset( $installed['description'] ) ? $installed['description']: '',
+                               'description' => isset( $installed['description'] ) ? $installed['description'] : '',
                        ];
                }
 
index 818ccdf..dc8bc03 100644 (file)
@@ -28,7 +28,7 @@ class ComposerLock {
                                'type' => $installed['type'],
                                'licenses' => isset( $installed['license'] ) ? $installed['license'] : [],
                                'authors' => isset( $installed['authors'] ) ? $installed['authors'] : [],
-                               'description' => isset( $installed['description'] ) ? $installed['description']: '',
+                               'description' => isset( $installed['description'] ) ? $installed['description'] : '',
                        ];
                }
 
index 6f51081..51308c1 100644 (file)
@@ -1591,7 +1591,7 @@ abstract class FileBackend implements LoggerAwareInterface {
         *   - StatusValue::newGood() if this method is called without parameters
         *   - StatusValue::newFatal() with all parameters to this method if passed in
         *
-        * @param ... string
+        * @param string $args,...
         * @return StatusValue
         */
        final protected function newStatus() {
index 044e976..eb72edc 100644 (file)
@@ -69,7 +69,7 @@ class SwiftFileBackend extends FileBackendStore {
 
        /**
         * @see FileBackendStore::__construct()
-        * Additional $config params include:
+        * @param array $config Params include:
         *   - swiftAuthUrl       : Swift authentication server URL
         *   - swiftUser          : Swift user used by MediaWiki (account:username)
         *   - swiftKey           : Swift authentication key for the above user
@@ -828,7 +828,7 @@ class SwiftFileBackend extends FileBackendStore {
         *
         * @param string $fullCont Resolved container name
         * @param string $dir Resolved storage directory with no trailing slash
-        * @param string|null $after Resolved container relative path to list items after
+        * @param string|null &$after Resolved container relative path to list items after
         * @param int $limit Max number of items to list
         * @param array $params Parameters for getDirectoryList()
         * @return array List of container relative resolved paths of directories directly under $dir
@@ -908,7 +908,7 @@ class SwiftFileBackend extends FileBackendStore {
         *
         * @param string $fullCont Resolved container name
         * @param string $dir Resolved storage directory with no trailing slash
-        * @param string|null $after Resolved container relative path of file to list items after
+        * @param string|null &$after Resolved container relative path of file to list items after
         * @param int $limit Max number of items to list
         * @param array $params Parameters for getDirectoryList()
         * @return array List of resolved container relative paths of files under $dir
@@ -1888,7 +1888,7 @@ abstract class SwiftFileBackendList implements Iterator {
         *
         * @param string $container Resolved container name
         * @param string $dir Resolved path relative to container
-        * @param string $after
+        * @param string &$after
         * @param int $limit
         * @param array $params
         * @return Traversable|array
index 30578fa..40af7ac 100644 (file)
@@ -247,7 +247,7 @@ abstract class FileOp {
         * This must update $predicates for each path that the op can change
         * except when a failing StatusValue object is returned.
         *
-        * @param array $predicates
+        * @param array &$predicates
         * @return StatusValue
         */
        final public function precheck( array &$predicates ) {
@@ -264,7 +264,7 @@ abstract class FileOp {
        }
 
        /**
-        * @param array $predicates
+        * @param array &$predicates
         * @return StatusValue
         */
        protected function doPrecheck( array &$predicates ) {
index e10606a..2ad8ac8 100644 (file)
@@ -85,7 +85,7 @@ class ScopedLock {
         * This is useful for early release of locks before function scope is destroyed.
         * This is the same as setting the lock object to null.
         *
-        * @param ScopedLock $lock
+        * @param ScopedLock &$lock
         * @since 1.21
         */
        public static function release( ScopedLock &$lock = null ) {
index badcb2b..dfc7c4b 100644 (file)
@@ -344,7 +344,7 @@ class IEContentAnalyzer {
        /**
         * Translate a MIME type from IE's idiosyncratic private types into
         * more commonly understood type strings
-        * @param $type
+        * @param string $type
         * @return string
         */
        public function translateMimeType( $type ) {
@@ -383,10 +383,10 @@ class IEContentAnalyzer {
 
        /**
         * Get the MIME type for a given named version
-        * @param $version
-        * @param $fileName
-        * @param $chunk
-        * @param $proposed
+        * @param string $version
+        * @param string $fileName
+        * @param string $chunk
+        * @param string $proposed
         * @return bool|string
         */
        protected function getMimeTypeForVersion( $version, $fileName, $chunk, $proposed ) {
@@ -553,8 +553,8 @@ class IEContentAnalyzer {
        /**
         * Check for text headers at the start of the chunk
         * Confirmed same in 5 and 7.
-        * @param $version
-        * @param $chunk
+        * @param string $version
+        * @param string $chunk
         * @return bool|string
         */
        private function checkTextHeaders( $version, $chunk ) {
@@ -579,8 +579,8 @@ class IEContentAnalyzer {
        /**
         * Check for binary headers at the start of the chunk
         * Confirmed same in 5 and 7.
-        * @param $version
-        * @param $chunk
+        * @param string $version
+        * @param string $chunk
         * @return bool|string
         */
        private function checkBinaryHeaders( $version, $chunk ) {
@@ -680,8 +680,8 @@ class IEContentAnalyzer {
        /**
         * Do heuristic checks on the bulk of the data sample.
         * Search for HTML tags.
-        * @param $version
-        * @param $chunk
+        * @param string $version
+        * @param string $chunk
         * @return array
         */
        protected function sampleData( $version, $chunk ) {
@@ -832,8 +832,8 @@ class IEContentAnalyzer {
        }
 
        /**
-        * @param $version
-        * @param $type
+        * @param string $version
+        * @param string|null $type
         * @return int|string
         */
        protected function getDataFormat( $version, $type ) {
index e48cf62..ea7f9a6 100644 (file)
@@ -275,7 +275,7 @@ class XmlTypeCheck {
 
        /**
         * Get all of the attributes for an XMLReader's current node
-        * @param $r XMLReader
+        * @param XMLReader $r
         * @return array of attributes
         */
        private function getAttributesArray( XMLReader $r ) {
@@ -293,8 +293,8 @@ class XmlTypeCheck {
        }
 
        /**
-        * @param $name element or attribute name, maybe with a full or short prefix
-        * @param $namespaceURI the namespaceURI
+        * @param string $name element or attribute name, maybe with a full or short prefix
+        * @param string $namespaceURI the namespaceURI
         * @return string the name prefixed with namespaceURI
         */
        private function expandNS( $name, $namespaceURI ) {
@@ -307,8 +307,8 @@ class XmlTypeCheck {
        }
 
        /**
-        * @param $name
-        * @param $attribs
+        * @param string $name
+        * @param string $attribs
         */
        private function elementOpen( $name, $attribs ) {
                $this->elementDataContext[] = [ $name, $attribs ];
@@ -338,7 +338,7 @@ class XmlTypeCheck {
        }
 
        /**
-        * @param $data
+        * @param string $data
         */
        private function elementData( $data ) {
                // Collect any data here, and we'll run the callback in elementClose
@@ -346,8 +346,8 @@ class XmlTypeCheck {
        }
 
        /**
-        * @param $target
-        * @param $data
+        * @param string $target
+        * @param string $data
         */
        private function processingInstructionHandler( $target, $data ) {
                $callbackReturn = false;
@@ -452,7 +452,7 @@ class XmlTypeCheck {
         *
         * If there is an error parsing the dtd, sets wellFormed to false.
         *
-        * @param $dtd string
+        * @param string $dtd
         * @return array Possibly containing keys publicid, systemid, type and internal.
         */
        private function parseDTD( $dtd ) {
index 7cd678b..a262e0e 100644 (file)
@@ -229,7 +229,7 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface {
         * @note: This method is only needed if merge() uses mergeViaCas()
         *
         * @param string $key
-        * @param mixed $casToken
+        * @param mixed &$casToken
         * @param integer $flags Bitfield of BagOStuff::READ_* constants [optional]
         * @return mixed Returns false on failure and if the item does not exist
         * @throws Exception
@@ -747,7 +747,7 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface {
         * Make a global cache key.
         *
         * @since 1.27
-        * @param string ... Key component (variadic)
+        * @param string $keys,... Key component
         * @return string
         */
        public function makeGlobalKey() {
@@ -758,7 +758,7 @@ abstract class BagOStuff implements IExpiringStore, LoggerAwareInterface {
         * Make a cache key, scoped to this instance's keyspace.
         *
         * @since 1.27
-        * @param string ... Key component (variadic)
+        * @param string $keys,... Key component
         * @return string
         */
        public function makeKey() {
index d94578d..65f3a8a 100644 (file)
@@ -174,7 +174,7 @@ class MultiWriteBagOStuff extends BagOStuff {
         * @param integer $count
         * @param bool $asyncWrites
         * @param string $method
-        * @param mixed ...
+        * @param mixed $args,...
         * @return bool
         */
        protected function doWrite( $count, $asyncWrites, $method /*, ... */ ) {
index 730eed1..5d2577b 100644 (file)
@@ -56,7 +56,7 @@ class RESTBagOStuff extends BagOStuff {
        }
 
        /**
-        * @param string  $key
+        * @param string $key
         * @param integer $flags Bitfield of BagOStuff::READ_* constants [optional]
         * @return mixed Returns false on failure and if the item does not exist
         */
@@ -82,7 +82,7 @@ class RESTBagOStuff extends BagOStuff {
        /**
         * Handle storage error
         * @param string $msg Error message
-        * @param int    $rcode Error code from client
+        * @param int $rcode Error code from client
         * @param string $rerr Error message from client
         * @return false
         */
@@ -99,9 +99,9 @@ class RESTBagOStuff extends BagOStuff {
         * Set an item
         *
         * @param string $key
-        * @param mixed  $value
-        * @param int    $exptime Either an interval in seconds or a unix timestamp for expiry
-        * @param int    $flags Bitfield of BagOStuff::WRITE_* constants
+        * @param mixed $value
+        * @param int $exptime Either an interval in seconds or a unix timestamp for expiry
+        * @param int $flags Bitfield of BagOStuff::WRITE_* constants
         * @return bool Success
         */
        public function set( $key, $value, $exptime = 0, $flags = 0 ) {
index ff7e91a..a80ed8d 100644 (file)
@@ -240,7 +240,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         * That method has cache slam avoiding features for hot/expensive keys.
         *
         * @param string $key Cache key
-        * @param mixed $curTTL Approximate TTL left on the key if present/tombstoned [returned]
+        * @param mixed &$curTTL Approximate TTL left on the key if present/tombstoned [returned]
         * @param array $checkKeys List of "check" keys
         * @param float &$asOf UNIX timestamp of cached value; null on failure [returned]
         * @return mixed Value of cache key or false on failure
@@ -261,7 +261,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
         * @see WANObjectCache::get()
         *
         * @param array $keys List of cache keys
-        * @param array $curTTLs Map of (key => approximate TTL left) for existing keys [returned]
+        * @param array &$curTTLs Map of (key => approximate TTL left) for existing keys [returned]
         * @param array $checkKeys List of check keys to apply to all $keys. May also apply "check"
         *  keys to specific cache keys only by using cache keys as keys in the $checkKeys array.
         * @param float[] &$asOfs Map of (key =>  UNIX timestamp of cached value; null on failure)
@@ -1315,7 +1315,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
 
        /**
         * @see BagOStuff::makeKey()
-        * @param string ... Key component
+        * @param string $keys,... Key component
         * @return string
         * @since 1.27
         */
@@ -1325,7 +1325,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
 
        /**
         * @see BagOStuff::makeGlobalKey()
-        * @param string ... Key component
+        * @param string $keys,... Key component
         * @return string
         * @since 1.27
         */
index 43b6f88..8ac4161 100644 (file)
@@ -118,7 +118,7 @@ class TransactionProfiler implements LoggerAwareInterface {
         * With conflicting expectations, the most narrow ones will be used
         *
         * @param array $expects Map of (event => limit)
-        * @param $fname
+        * @param string $fname
         * @since 1.26
         */
        public function setExpectations( array $expects, $fname ) {
index b8b44e6..7349b63 100644 (file)
@@ -818,7 +818,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
        }
 
        /**
-        * @param $sql
+        * @param string $sql
         * @return string|null
         */
        protected function getQueryVerb( $sql ) {
@@ -3190,7 +3190,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
         * @see WANObjectCache::getWithSetCallback()
         *
         * @param IDatabase $db1
-        * @param IDatabase ...
+        * @param IDatabase $dbs,...
         * @return array Map of values:
         *   - lag: highest lag of any of the DBs or false on error (e.g. replication stopped)
         *   - since: oldest UNIX timestamp of any of the DB lag estimates
index 8d19bc1..991e0c6 100644 (file)
@@ -989,8 +989,8 @@ abstract class DatabaseMysqlBase extends Database {
        }
 
        /**
-        * @param string $sql
-        * @param string $newLine
+        * @param string &$sql
+        * @param string &$newLine
         * @return bool
         */
        public function streamStatementEnd( &$sql, &$newLine ) {
index db5b7e5..e2d685c 100644 (file)
@@ -7,7 +7,7 @@ class Blob implements IBlob {
        protected $mData;
 
        /**
-        * @param $data string
+        * @param string $data
         */
        public function __construct( $data ) {
                $this->mData = $data;
index 6e328f4..117df68 100644 (file)
@@ -40,7 +40,7 @@ interface ILBFactory {
         *
         * Sub-classes will extend the required keys in $conf with additional parameters
         *
-        * @param $conf $params Array with keys:
+        * @param array $conf Array with keys:
         *  - localDomain: A DatabaseDomain or domain ID string.
         *  - readOnlyReason : Reason the master DB is read-only if so [optional]
         *  - srvCache : BagOStuff object for server cache [optional]
index 99c2c3c..509240f 100644 (file)
@@ -396,9 +396,14 @@ class RedisConnectionPool implements LoggerAwareInterface {
        function __destruct() {
                foreach ( $this->connections as $server => &$serverConnections ) {
                        foreach ( $serverConnections as $key => &$connection ) {
-                               /** @var Redis $conn */
-                               $conn = $connection['conn'];
-                               $conn->close();
+                               try {
+                                       /** @var Redis $conn */
+                                       $conn = $connection['conn'];
+                                       $conn->close();
+                               } catch ( RedisException $e ) {
+                                       // The destructor can be called on shutdown when random parts of the system
+                                       // have been destructed already, causing weird errors. Ignore them.
+                               }
                        }
                }
        }
index f2e35b6..75d6b9e 100644 (file)
@@ -53,7 +53,6 @@ class NullStatsdDataFactory implements IBufferingStatsdDataFactory {
         * This function creates a 'increment' StatsdData object.
         *
         * @param string|array $key The metric(s) to increment.
-        * @param float|1      $sampleRate The rate (0-1) for sampling.
         *
         * @return array
         */
@@ -66,7 +65,6 @@ class NullStatsdDataFactory implements IBufferingStatsdDataFactory {
         *
         *
         * @param string|array $key The metric(s) to decrement.
-        * @param float|1      $sampleRate The rate (0-1) for sampling.
         *
         * @return mixed
         */
index 22e5b45..00d3bd3 100644 (file)
@@ -60,7 +60,7 @@ class LogEventsList extends ContextSource {
         *
         * @param IContextSource|Skin $context Context to use; formerly it was
         *   a Skin object. Use of Skin is deprecated.
-        * @param LinkRenderer|null $linkRenderer, previously unused
+        * @param LinkRenderer|null $linkRenderer previously unused
         * @param int $flags Can be a combination of self::NO_ACTION_LINK,
         *   self::NO_EXTRA_USER_LINKS or self::USE_CHECKBOXES.
         */
@@ -569,7 +569,7 @@ class LogEventsList extends ContextSource {
        /**
         * Show log extract. Either with text and a box (set $msgKey) or without (don't set $msgKey)
         *
-        * @param OutputPage|string $out By-reference
+        * @param OutputPage|string &$out
         * @param string|array $types Log types to show
         * @param string|Title $page The page title to show log entries for
         * @param string $user The user who made the log entries
index ec97b50..a085e3e 100644 (file)
@@ -287,7 +287,7 @@ class LogPage {
         * @param string $type
         * @param Language|null $lang
         * @param Title $title
-        * @param array $params
+        * @param array &$params
         * @return string
         */
        protected static function getTitleLink( $type, $lang, $title, &$params ) {
index 1f8489f..cb07fd5 100644 (file)
@@ -102,7 +102,7 @@ class UserMailer {
         * @param MailAddress $from Sender's email
         * @param string $subject Email's subject.
         * @param string $body Email's text or Array of two strings to be the text and html bodies
-        * @param array $options:
+        * @param array $options Keys:
         *     'replyTo' MailAddress
         *     'contentType' string default 'text/plain; charset=UTF-8'
         *     'headers' array Extra headers to set
@@ -196,7 +196,7 @@ class UserMailer {
         * @param MailAddress $from Sender's email
         * @param string $subject Email's subject.
         * @param string $body Email's text or Array of two strings to be the text and html bodies
-        * @param array $options:
+        * @param array $options Keys:
         *     'replyTo' MailAddress
         *     'contentType' string default 'text/plain; charset=UTF-8'
         *     'headers' array Extra headers to set
index 1aeead5..ac39e6f 100644 (file)
@@ -88,7 +88,7 @@ class BitmapHandler extends TransformationalImageHandler {
 
        /**
         * @param File $image
-        * @param array $params
+        * @param array &$params
         * @return bool
         */
        function normaliseParams( $image, &$params ) {
index 56b20ac..3ec8772 100644 (file)
@@ -35,7 +35,7 @@ class BitmapHandler_ClientOnly extends BitmapHandler {
 
        /**
         * @param File $image
-        * @param array $params
+        * @param array &$params
         * @return bool
         */
        function normaliseParams( $image, &$params ) {
index 69982c2..6cac126 100644 (file)
@@ -1675,7 +1675,7 @@ class FormatMetadata extends ContextSource {
         *
         * @param File $file File to use
         * @param array $extendedMetadata
-        * @param int $maxCacheTime Hook handlers might use this parameter to override cache time
+        * @param int &$maxCacheTime Hook handlers might use this parameter to override cache time
         *
         * @return array [<property name> => ['value' => <value>]], or [] on error
         * @since 1.23
@@ -1772,7 +1772,7 @@ class FormatMetadata extends ContextSource {
        /**
         * Takes an array returned by the getExtendedMetadata* functions,
         * and resolves multi-language values in it.
-        * @param array $metadata
+        * @param array &$metadata
         * @since 1.23
         */
        protected function resolveMultilangMetadata( &$metadata ) {
@@ -1789,7 +1789,7 @@ class FormatMetadata extends ContextSource {
        /**
         * Takes an array returned by the getExtendedMetadata* functions,
         * and turns all fields into single-valued ones by dropping extra values.
-        * @param array $metadata
+        * @param array &$metadata
         * @since 1.25
         */
        protected function discardMultipleValues( &$metadata ) {
@@ -1810,7 +1810,7 @@ class FormatMetadata extends ContextSource {
 
        /**
         * Makes sure the given array is a valid API response fragment
-        * @param array $arr
+        * @param array &$arr
         */
        protected function sanitizeArrayForAPI( &$arr ) {
                if ( !is_array( $arr ) ) {
index 158c0dc..1eefddb 100644 (file)
@@ -80,7 +80,7 @@ abstract class ImageHandler extends MediaHandler {
 
        /**
         * @param File $image
-        * @param array $params
+        * @param array &$params
         * @return bool
         */
        function normaliseParams( $image, &$params ) {
@@ -152,8 +152,8 @@ abstract class ImageHandler extends MediaHandler {
        /**
         * Validate thumbnail parameters and fill in the correct height
         *
-        * @param int $width Specified width (input/output)
-        * @param int $height Height (output only)
+        * @param int &$width Specified width (input/output)
+        * @param int &$height Height (output only)
         * @param int $srcWidth Width of the source image
         * @param int $srcHeight Height of the source image
         * @param string $mimeType Unused
index 76c979e..aa7c62b 100644 (file)
@@ -85,7 +85,7 @@ abstract class MediaHandler {
         * Should be idempotent.
         * Returns false if the parameters are unacceptable and the transform should fail
         * @param File $image
-        * @param array $params
+        * @param array &$params
         */
        abstract function normaliseParams( $image, &$params );
 
@@ -304,8 +304,10 @@ abstract class MediaHandler {
        }
 
        /**
-       * @deprecated since 1.30, use MediaHandler::getContentHeaders instead
-       */
+        * @deprecated since 1.30, use MediaHandler::getContentHeaders instead
+        * @param array $metadata
+        * @return array
+        */
        public function getStreamHeaders( $metadata ) {
                wfDeprecated( __METHOD__, '1.30' );
                return $this->getContentHeaders( $metadata );
@@ -712,7 +714,7 @@ abstract class MediaHandler {
         *
         * @see LocalFile::purgeThumbnails
         *
-        * @param array $files
+        * @param array &$files
         * @param array $options Purge options. Currently will always be
         *  an array with a single key 'forThumbRefresh' set to true.
         */
@@ -872,7 +874,7 @@ abstract class MediaHandler {
         * @param Array $pagesByDimensions
         * @return String
         * @since 1.30
-       */
+        */
        public static function getPageRangesByDimensions( $pagesByDimensions ) {
                $pageRangesByDimensions = [];
 
@@ -913,11 +915,11 @@ abstract class MediaHandler {
        }
 
        /**
-       * Get useful response headers for GET/HEAD requests for a file with the given metadata
-       * @param $metadata Array Contains this handler's unserialized getMetadata() for a file
-       * @return Array
-       * @since 1.30
-       */
+        * Get useful response headers for GET/HEAD requests for a file with the given metadata
+        * @param array $metadata Contains this handler's unserialized getMetadata() for a file
+        * @return array
+        * @since 1.30
+        */
        public function getContentHeaders( $metadata ) {
                return [];
        }
index 1bc722c..bd78b49 100644 (file)
@@ -126,7 +126,7 @@ class SvgHandler extends ImageHandler {
 
        /**
         * @param File $image
-        * @param array $params
+        * @param array &$params
         * @return bool
         */
        function normaliseParams( $image, &$params ) {
index 742a5b7..32208cc 100644 (file)
@@ -36,7 +36,7 @@ use MediaWiki\MediaWikiServices;
 abstract class TransformationalImageHandler extends ImageHandler {
        /**
         * @param File $image
-        * @param array $params Transform parameters. Entries with the keys 'width'
+        * @param array &$params Transform parameters. Entries with the keys 'width'
         * and 'height' are the respective screen width and height, while the keys
         * 'physicalWidth' and 'physicalHeight' indicate the thumbnail dimensions.
         * @return bool
@@ -588,7 +588,7 @@ abstract class TransformationalImageHandler extends ImageHandler {
         * Runs the 'BitmapHandlerCheckImageArea' hook.
         *
         * @param File $file
-        * @param array $params
+        * @param array &$params
         * @return bool
         * @since 1.25
         */
index e2c2d2d..3e4731a 100644 (file)
@@ -86,7 +86,7 @@ class WebPHandler extends BitmapHandler {
        /**
         * Extracts the image size and WebP type from a file
         *
-        * @param string $chunks Chunks as extracted by RiffExtractor
+        * @param string $filename
         * @return array|bool Header data array with entries 'compression', 'width' and 'height',
         * where 'compression' can be 'lossy', 'lossless', 'animated' or 'unknown'. False if
         * file is not a valid WebP file.
@@ -118,6 +118,7 @@ class WebPHandler extends BitmapHandler {
        /**
         * Extracts the image size and WebP type from a file based on the chunk list
         * @param array $chunks Chunks as extracted by RiffExtractor
+        * @param string $filename
         * @return array Header data array with entries 'compression', 'width' and 'height', where
         * 'compression' can be 'lossy', 'lossless', 'animated' or 'unknown'
         */
@@ -245,7 +246,7 @@ class WebPHandler extends BitmapHandler {
        }
 
        /**
-        * @param $file
+        * @param File $file
         * @return bool True, not all browsers support WebP
         */
        public function mustRender( $file ) {
@@ -253,7 +254,7 @@ class WebPHandler extends BitmapHandler {
        }
 
        /**
-        * @param $file
+        * @param File $file
         * @return bool False if we are unable to render this image
         */
        public function canRender( $file ) {
@@ -286,9 +287,9 @@ class WebPHandler extends BitmapHandler {
        /**
         * Render files as PNG
         *
-        * @param $ext
-        * @param $mime
-        * @param $params
+        * @param string $ext
+        * @param string $mime
+        * @param array|null $params
         * @return array
         */
        public function getThumbType( $ext, $mime, $params = null ) {
index 70795ec..3cce530 100644 (file)
@@ -672,7 +672,7 @@ class SqlBagOStuff extends BagOStuff {
         * On typical message and page data, this can provide a 3X decrease
         * in storage requirements.
         *
-        * @param mixed $data
+        * @param mixed &$data
         * @return string
         */
        protected function serialize( &$data ) {
index 33f7d47..7311f71 100644 (file)
@@ -2580,7 +2580,7 @@ class Article implements Page {
        /**
         * @param array $limit
         * @param array $expiry
-        * @param bool $cascade
+        * @param bool &$cascade
         * @param string $reason
         * @param User $user
         * @return Status
@@ -2594,7 +2594,7 @@ class Article implements Page {
        /**
         * @param array $limit
         * @param string $reason
-        * @param int $cascade
+        * @param int &$cascade
         * @param array $expiry
         * @return bool
         */
@@ -2615,7 +2615,7 @@ class Article implements Page {
         * @param bool $suppress
         * @param int $u1 Unused
         * @param bool $u2 Unused
-        * @param string $error
+        * @param string &$error
         * @return bool
         */
        public function doDeleteArticle(
@@ -2629,7 +2629,7 @@ class Article implements Page {
         * @param string $summary
         * @param string $token
         * @param bool $bot
-        * @param array $resultDetails
+        * @param array &$resultDetails
         * @param User|null $user
         * @return array
         */
@@ -2642,7 +2642,7 @@ class Article implements Page {
         * @param string $fromP
         * @param string $summary
         * @param bool $bot
-        * @param array $resultDetails
+        * @param array &$resultDetails
         * @param User|null $guser
         * @return array
         */
@@ -2652,7 +2652,7 @@ class Article implements Page {
        }
 
        /**
-        * @param bool $hasHistory
+        * @param bool &$hasHistory
         * @return mixed
         */
        public function generateReason( &$hasHistory ) {
index b870831..0e3eaa5 100644 (file)
@@ -621,8 +621,8 @@ EOT
        /**
         * Make the text under the image to say what size preview
         *
-        * @param $params array parameters for thumbnail
-        * @param $sizeLinkBigImagePreview HTML for the current size
+        * @param array $params parameters for thumbnail
+        * @param string $sizeLinkBigImagePreview HTML for the current size
         * @return string HTML output
         */
        private function getThumbPrevText( $params, $sizeLinkBigImagePreview ) {
index af906fb..e60f103 100644 (file)
@@ -1047,9 +1047,9 @@ class WikiPage implements Page, IDBAccessObject {
         *
         * @since 1.19
         * @param ParserOptions $parserOptions ParserOptions to use for the parse operation
-        * @param null|int      $oldid Revision ID to get the text from, passing null or 0 will
-        *                             get the current revision (default value)
-        * @param bool          $forceParse Force reindexing, regardless of cache settings
+        * @param null|int $oldid Revision ID to get the text from, passing null or 0 will
+        *   get the current revision (default value)
+        * @param bool $forceParse Force reindexing, regardless of cache settings
         * @return bool|ParserOutput ParserOutput or false if the revision was not found
         */
        public function getParserOutput(
@@ -3001,7 +3001,7 @@ class WikiPage implements Page, IDBAccessObject {
         * @param string $token Rollback token.
         * @param bool $bot If true, mark all reverted edits as bot.
         *
-        * @param array $resultDetails Array contains result-specific array of additional values
+        * @param array &$resultDetails Array contains result-specific array of additional values
         *    'alreadyrolled' : 'current' (rev)
         *    success        : 'summary' (str), 'current' (rev), 'target' (rev)
         *
@@ -3053,7 +3053,7 @@ class WikiPage implements Page, IDBAccessObject {
         * @param string $summary Custom summary. Set to default summary if empty.
         * @param bool $bot If true, mark all reverted edits as bot.
         *
-        * @param array $resultDetails Contains result-specific array of additional values
+        * @param array &$resultDetails Contains result-specific array of additional values
         * @param User $guser The user performing the rollback
         * @param array|null $tags Change tags to apply to the rollback
         * Callers are responsible for permission checks
@@ -3633,7 +3633,7 @@ class WikiPage implements Page, IDBAccessObject {
                return $this->getTitle()->getCanonicalURL();
        }
 
-       /*
+       /**
         * @param WANObjectCache $cache
         * @return string[]
         * @since 1.28
index d2a0a1a..bc5182c 100644 (file)
@@ -264,7 +264,7 @@ class LinkHolderArray {
        /**
         * Replace <!--LINK--> link placeholders with actual links, in the buffer
         *
-        * @param string $text
+        * @param string &$text
         */
        public function replace( &$text ) {
                $this->replaceInternal( $text );
@@ -273,7 +273,7 @@ class LinkHolderArray {
 
        /**
         * Replace internal links
-        * @param string $text
+        * @param string &$text
         */
        protected function replaceInternal( &$text ) {
                if ( !$this->internals ) {
@@ -416,7 +416,7 @@ class LinkHolderArray {
 
        /**
         * Replace interwiki links
-        * @param string $text
+        * @param string &$text
         */
        protected function replaceInterwiki( &$text ) {
                if ( empty( $this->interwikis ) ) {
@@ -444,7 +444,7 @@ class LinkHolderArray {
 
        /**
         * Modify $this->internals and $colours according to language variant linking rules
-        * @param array $colours
+        * @param array &$colours
         */
        protected function doVariants( &$colours ) {
                global $wgContLang;
index 88439db..3261002 100644 (file)
@@ -972,7 +972,7 @@ class Parser {
         *
         * @param array $elements List of element names. Comments are always extracted.
         * @param string $text Source text string.
-        * @param array $matches Out parameter, Array: extracted tags
+        * @param array &$matches Out parameter, Array: extracted tags
         * @param string|null $uniq_prefix
         * @return string Stripped text
         * @since 1.26 The uniq_prefix argument is deprecated.
@@ -2103,7 +2103,7 @@ class Parser {
 
        /**
         * Process [[ ]] wikilinks (RIL)
-        * @param string $s
+        * @param string &$s
         * @throws MWException
         * @return LinkHolderArray
         *
@@ -3411,7 +3411,7 @@ class Parser {
                # string or an array containing the string and any flags. This mungs
                # things around to match what this method should return.
                if ( !is_array( $result ) ) {
-                       $result =[
+                       $result = [
                                'found' => true,
                                'text' => $result,
                        ];
@@ -4536,7 +4536,7 @@ class Parser {
         * Do not reuse this parser instance after calling getUserSig(),
         * as it may have changed if it's the $wgParser.
         *
-        * @param User $user
+        * @param User &$user
         * @param string|bool $nickname Nickname to use or false to use user's default nickname
         * @param bool|null $fancySig whether the nicknname is the complete signature
         *    or null to use default value
@@ -4897,7 +4897,7 @@ class Parser {
         * Replace "<!--LINK-->" link placeholders with actual links, in the buffer
         * Placeholders created in Linker::link()
         *
-        * @param string $text
+        * @param string &$text
         * @param int $options
         */
        public function replaceLinkHolders( &$text, $options = 0 ) {
@@ -5406,7 +5406,7 @@ class Parser {
         * Callback from the Sanitizer for expanding items found in HTML attribute
         * values, so they can be safely tested and escaped.
         *
-        * @param string $text
+        * @param string &$text
         * @param bool|PPFrame $frame
         * @return string
         */
index 73a9927..c7146a1 100644 (file)
@@ -761,7 +761,7 @@ class ParserOptions {
         * is it allowed in the specific case of parsing this page.
         * @see self::getAllowUnsafeRawHtml()
         * @since 1.29
-        * @param bool|null Value to set or null to get current value
+        * @param bool|null $x Value to set or null to get current value
         * @return bool Current value for allowUnsafeRawHtml
         */
        public function setAllowUnsafeRawHtml( $x ) {
@@ -1062,11 +1062,13 @@ class ParserOptions {
                                'speculativeRevIdCallback' => null,
                        ];
 
+                       // @codingStandardsIgnoreStart Squiz.WhiteSpace.OperatorSpacing.NoSpaceAfterAmp
                        Hooks::run( 'ParserOptionsRegister', [
                                &self::$defaults,
                                &self::$inCacheKey,
                                &self::$lazyOptions,
                        ] );
+                       // @codingStandardsIgnoreEnd
 
                        ksort( self::$inCacheKey );
                }
index 3c750ad..2588962 100644 (file)
@@ -625,7 +625,7 @@ class Preprocessor_DOM extends Preprocessor {
                                $curLen = strlen( $curChar );
                                $count = ( $curLen > 1 ) ?
                                        # allow the final character to repeat
-                                       strspn( $text, $curChar[$curLen-1], $i+1 ) + 1 :
+                                       strspn( $text, $curChar[$curLen - 1], $i + 1 ) + 1 :
                                        strspn( $text, $curChar, $i );
 
                                # we need to add to stack only if opening brace count is enough for one of the rules
index 25d253f..9ea8fa3 100644 (file)
@@ -569,7 +569,7 @@ class Preprocessor_Hash extends Preprocessor {
                                $curLen = strlen( $curChar );
                                $count = ( $curLen > 1 ) ?
                                        # allow the final character to repeat
-                                       strspn( $text, $curChar[$curLen-1], $i+1 ) + 1 :
+                                       strspn( $text, $curChar[$curLen - 1], $i + 1 ) + 1 :
                                        strspn( $text, $curChar, $i );
 
                                # we need to add to stack only if opening brace count is enough for one of the rules
index 252a227..4da7976 100644 (file)
@@ -164,7 +164,7 @@ abstract class Profiler {
        abstract public function scopedProfileIn( $section );
 
        /**
-        * @param SectionProfileCallback $section
+        * @param SectionProfileCallback &$section
         */
        public function scopedProfileOut( SectionProfileCallback &$section = null ) {
                $section = null;
index fdfb24d..57bd01f 100644 (file)
@@ -66,7 +66,7 @@ class SectionProfiler {
        }
 
        /**
-        * @param ScopedCallback $section
+        * @param ScopedCallback &$section
         */
        public function scopedProfileOut( ScopedCallback &$section ) {
                $section = null;
@@ -298,7 +298,7 @@ class SectionProfiler {
                        /* Find all items under this entry */
                        $level = $stack[$max][1];
                        $working = [];
-                       for ( $i = $max -1; $i >= 0; $i-- ) {
+                       for ( $i = $max - 1; $i >= 0; $i-- ) {
                                if ( $stack[$i][1] > $level ) {
                                        $working[] = $stack[$i];
                                } else {
@@ -439,7 +439,7 @@ class SectionProfiler {
        protected function calltreeCount( $stack, $start ) {
                $level = $stack[$start][1];
                $count = 0;
-               for ( $i = $start -1; $i >= 0 && $stack[$i][1] > $level; $i-- ) {
+               for ( $i = $start - 1; $i >= 0 && $stack[$i][1] > $level; $i-- ) {
                        $count ++;
                }
                return $count;
index ad16420..c58bb00 100644 (file)
@@ -655,7 +655,7 @@ class ResourceLoader implements LoggerAwareInterface {
         *
         * @since 1.26
         * @param ResourceLoaderContext $context
-        * @param string[] $modules List of known module names
+        * @param string[] $moduleNames List of known module names
         * @return string Hash
         */
        public function getCombinedVersion( ResourceLoaderContext $context, array $moduleNames ) {
index f99114e..cbb0bec 100644 (file)
@@ -224,7 +224,7 @@ class ResourceLoaderContext implements MessageLocalizer {
         * @since 1.27
         * @param string|string[]|MessageSpecifier $key Message key, or array of keys,
         *   or a MessageSpecifier.
-        * @param mixed ...
+        * @param mixed $args,...
         * @return Message
         */
        public function msg( $key ) {
index 01476ed..bef34f9 100644 (file)
@@ -65,9 +65,9 @@ class ResourceLoaderJqueryMsgModule extends ResourceLoaderFileModule {
        }
 
        /**
-       * @param ResourceLoaderContext $context
-       * @return array
-       */
+        * @param ResourceLoaderContext $context
+        * @return array
+        */
        public function getScriptURLsForDebug( ResourceLoaderContext $context ) {
                // Bypass file module urls
                return ResourceLoaderModule::getScriptURLsForDebug( $context );
index 64a6aec..a2c58e6 100644 (file)
@@ -402,7 +402,7 @@ abstract class RevDelList extends RevisionListBase {
        /**
         * A hook for setVisibility(): do any necessary updates post-commit.
         * STUB
-        * @param array [id => ['oldBits' => $oldBits, 'newBits' => $newBits], ... ]
+        * @param array $visibilityChangeMap [id => ['oldBits' => $oldBits, 'newBits' => $newBits], ... ]
         * @return Status
         */
        public function doPostCommitUpdates( array $visibilityChangeMap ) {
index b834c15..4a807fb 100644 (file)
@@ -98,7 +98,7 @@ class RevisionDeleter {
         * @param int $field The bitmask describing the single option.
         * @param int $diff The xor of the old and new bitfields.
         * @param int $new The new bitfield
-        * @param array $arr The array to update.
+        * @param array &$arr The array to update.
         */
        protected static function checkItem( $desc, $field, $diff, $new, &$arr ) {
                if ( $diff & $field ) {
index 32f60bc..ff1e8cb 100644 (file)
@@ -17,7 +17,7 @@ class NullIndexField implements SearchIndexField {
        /**
         * Set global flag for this field.
         *
-        * @param int  $flag Bit flag to set/unset
+        * @param int $flag Bit flag to set/unset
         * @param bool $unset True if flag should be unset, false by default
         * @return $this
         */
@@ -26,7 +26,7 @@ class NullIndexField implements SearchIndexField {
 
        /**
         * Check if flag is set.
-        * @param $flag
+        * @param int $flag
         * @return int 0 if unset, !=0 if set
         */
        public function checkFlag( $flag ) {
index 70117db..7c2f0f2 100644 (file)
@@ -138,7 +138,7 @@ abstract class SearchEngine {
         * @return mixed the feature value or null if unset
         */
        public function getFeatureData( $feature ) {
-               if ( isset ( $this->features[$feature] ) ) {
+               if ( isset( $this->features[$feature] ) ) {
                        return $this->features[$feature];
                }
                return null;
@@ -566,6 +566,7 @@ abstract class SearchEngine {
        /**
         * Process completion search results.
         * Resolves the titles and rescores.
+        * @param string $search
         * @param SearchSuggestionSet $suggestions
         * @return SearchSuggestionSet
         */
@@ -727,7 +728,7 @@ abstract class SearchEngine {
         * Create a search field definition.
         * Specific search engines should override this method to create search fields.
         * @param string $name
-        * @param int    $type One of the types in SearchIndexField::INDEX_TYPE_*
+        * @param int $type One of the types in SearchIndexField::INDEX_TYPE_*
         * @return SearchIndexField
         * @since 1.28
         */
index 40cfe39..0e99ba9 100644 (file)
@@ -35,8 +35,8 @@ class SearchExactMatchRescorer {
         * to not be in the results or be lower down the list.
         * @param string $search the query
         * @param int[] $namespaces the namespaces
-        * @param int $limit the max number of results to return
         * @param string[] $srchres results
+        * @param int $limit the max number of results to return
         * @return string[] munged results
         */
        public function rescore( $search, $namespaces, $srchres, $limit ) {
index cebdb40..20462cf 100644 (file)
@@ -32,6 +32,7 @@ class SearchHighlighter {
        /**
         * @warning If you pass false to this constructor, then
         *  the caller is responsible for HTML escaping.
+        * @param bool $cleanupWikitext
         */
        function __construct( $cleanupWikitext = true ) {
                $this->mCleanWikitext = $cleanupWikitext;
@@ -291,8 +292,8 @@ class SearchHighlighter {
        /**
         * Split text into lines and add it to extracts array
         *
-        * @param array $extracts Index -> $line
-        * @param int $count
+        * @param array &$extracts Index -> $line
+        * @param int &$count
         * @param string $text
         */
        function splitAndAdd( &$extracts, &$count, $text ) {
@@ -326,8 +327,8 @@ class SearchHighlighter {
         * @param string $text
         * @param int $start
         * @param int $end
-        * @param int $posStart (out) actual start position
-        * @param int $posEnd (out) actual end position
+        * @param int &$posStart (out) actual start position
+        * @param int &$posEnd (out) actual end position
         * @return string
         */
        function extract( $text, $start, $end, &$posStart = null, &$posEnd = null ) {
@@ -397,10 +398,10 @@ class SearchHighlighter {
         *
         * @param string $pattern Regexp for matching lines
         * @param array $extracts Extracts to search
-        * @param int $linesleft Number of extracts to make
-        * @param int $contextchars Length of snippet
-        * @param array $out Map for highlighted snippets
-        * @param array $offsets Map of starting points of snippets
+        * @param int &$linesleft Number of extracts to make
+        * @param int &$contextchars Length of snippet
+        * @param array &$out Map for highlighted snippets
+        * @param array &$offsets Map of starting points of snippets
         * @protected
         */
        function process( $pattern, $extracts, &$linesleft, &$contextchars, &$out, &$offsets ) {
index a348d6d..6f3b207 100644 (file)
@@ -30,16 +30,19 @@ interface SearchIndexField {
         * This field is case-insensitive.
         */
        const FLAG_CASEFOLD = 1;
+
        /**
         * This field contains secondary information, which is
         * already present in other fields, but can be used for
         * scoring.
         */
        const FLAG_SCORING = 2;
+
        /**
         * This field does not need highlight handling.
         */
        const FLAG_NO_HIGHLIGHT = 4;
+
        /**
         * Do not index this field, just store it.
         */
@@ -51,20 +54,23 @@ interface SearchIndexField {
         * @return array|null Null means this field does not map to anything
         */
        public function getMapping( SearchEngine $engine );
+
        /**
         * Set global flag for this field.
         *
-        * @param int  $flag Bit flag to set/unset
+        * @param int $flag Bit flag to set/unset
         * @param bool $unset True if flag should be unset, false by default
         * @return $this
         */
        public function setFlag( $flag, $unset = false );
+
        /**
         * Check if flag is set.
-        * @param $flag
+        * @param int $flag
         * @return int 0 if unset, !=0 if set
         */
        public function checkFlag( $flag );
+
        /**
         * Merge two field definitions if possible.
         *
index 9a637d8..a11dff9 100644 (file)
@@ -9,24 +9,28 @@
  * @since 1.28
  */
 abstract class SearchIndexFieldDefinition implements SearchIndexField {
+
        /**
         * Name of the field
         *
         * @var string
         */
        protected $name;
+
        /**
         * Type of the field, one of the constants above
         *
         * @var int
         */
        protected $type;
+
        /**
         * Bit flags for the field.
         *
         * @var int
         */
        protected $flags = 0;
+
        /**
         * Subfields
         * @var SearchIndexFieldDefinition[]
@@ -40,7 +44,7 @@ abstract class SearchIndexFieldDefinition implements SearchIndexField {
 
        /**
         * @param string $name Field name
-        * @param int    $type Index type
+        * @param int $type Index type
         */
        public function __construct( $name, $type ) {
                $this->name = $name;
@@ -66,7 +70,7 @@ abstract class SearchIndexFieldDefinition implements SearchIndexField {
        /**
         * Set global flag for this field.
         *
-        * @param int  $flag Bit flag to set/unset
+        * @param int $flag Bit flag to set/unset
         * @param bool $unset True if flag should be unset, false by default
         * @return $this
         */
@@ -81,7 +85,7 @@ abstract class SearchIndexFieldDefinition implements SearchIndexField {
 
        /**
         * Check if flag is set.
-        * @param $flag
+        * @param int $flag
         * @return int 0 if unset, !=0 if set
         */
        public function checkFlag( $flag ) {
index 2ea9605..77dcfe9 100644 (file)
@@ -218,7 +218,7 @@ class SearchMySQL extends SearchDatabase {
 
        /**
         * Add special conditions
-        * @param array $query
+        * @param array &$query
         * @since 1.18
         */
        protected function queryFeatures( &$query ) {
@@ -231,7 +231,7 @@ class SearchMySQL extends SearchDatabase {
 
        /**
         * Add namespace conditions
-        * @param array $query
+        * @param array &$query
         * @since 1.18 (changed)
         */
        function queryNamespaces( &$query ) {
@@ -245,7 +245,7 @@ class SearchMySQL extends SearchDatabase {
 
        /**
         * Add limit options
-        * @param array $query
+        * @param array &$query
         * @since 1.18
         */
        protected function limitResult( &$query ) {
index 50db84b..dc294c3 100644 (file)
@@ -65,7 +65,7 @@ class SearchResult {
        /**
         * Return a new SearchResult and initializes it with a title.
         *
-        * @param Title           $title
+        * @param Title $title
         * @param SearchResultSet $parentSet
         * @return SearchResult
         */
index 2c82c7d..3d4da42 100644 (file)
@@ -145,7 +145,7 @@ class SearchSqlite extends SearchDatabase {
                $searchChars = parent::legalSearchChars( $type );
                if ( $type === self::CHARS_ALL ) {
                        // " for phrase, * for wildcard
-                       $searchChars =  "\"*" . $searchChars;
+                       $searchChars = "\"*" . $searchChars;
                }
                return $searchChars;
        }
index 4e7c782..7f433db 100644 (file)
@@ -53,7 +53,7 @@ class SearchSuggestion {
        /**
         * Construct a new suggestion
         * @param float $score the suggestion score
-        * @param string $text|null the suggestion text
+        * @param string|null $text the suggestion text
         * @param Title|null $suggestedTitle the suggested title
         * @param int|null $suggestedTitleID the suggested title ID
         */
index 084ac05..b76f0ff 100644 (file)
@@ -145,7 +145,7 @@ class PHPSessionHandler implements \SessionHandlerInterface {
         * @private Use self::install().
         * @param SessionManager $manager
         * @param BagOStuff $store
-        * @param LoggerInterface $store
+        * @param LoggerInterface $logger
         */
        public function setManager(
                SessionManager $manager, BagOStuff $store, LoggerInterface $logger
index 3cf69b7..ba075e0 100644 (file)
@@ -387,7 +387,7 @@ abstract class SessionProvider implements SessionProviderInterface, LoggerAwareI
         * reset whatever token it does use here.
         *
         * @protected For use by \MediaWiki\Session\SessionManager only
-        * @param User $user;
+        * @param User $user
         */
        public function invalidateSessionsForUser( User $user ) {
        }
index 523e0cc..14d239d 100644 (file)
@@ -56,7 +56,7 @@ class Token {
         * be able to extract the timestamp.
         *
         * @param string $token
-        * @param int|null
+        * @return int|null
         */
        public static function getTimestamp( $token ) {
                $suffixLen = strlen( self::SUFFIX );
index 31e1590..a6e6339 100644 (file)
@@ -333,7 +333,7 @@ class Site implements Serializable {
         */
        public function getLinkPath() {
                $type = $this->getLinkPathType();
-               return $type === null ? null: $this->getPath( $type );
+               return $type === null ? null : $this->getPath( $type );
        }
 
        /**
index 42812e1..5e13d06 100644 (file)
@@ -191,7 +191,7 @@ class SiteImporter {
 
        /**
         * @param DOMElement $element
-        * @param $name
+        * @param string $name
         * @param string|null|bool $default
         *
         * @return null|string
index aad676f..8d5ce10 100644 (file)
@@ -29,7 +29,7 @@ abstract class BaseTemplate extends QuickTemplate {
         * Get a Message object with its context set
         *
         * @param string $name Message name
-        * @param ... $params Message params
+        * @param mixed $params,... Message params
         * @return Message
         */
        public function getMsg( $name /* ... */ ) {
@@ -201,13 +201,13 @@ abstract class BaseTemplate extends QuickTemplate {
                                ];
                                break;
                        case 'LANGUAGES':
-                               if ( $this->data['language_urls'] ) {
+                               if ( $this->data['language_urls'] !== false ) {
                                        $msgObj = $this->getMsg( 'otherlanguages' );
                                        $boxes[$boxName] = [
                                                'id' => 'p-lang',
                                                'header' => $msgObj->exists() ? $msgObj->text() : 'otherlanguages',
                                                'generated' => false,
-                                               'content' => $this->data['language_urls'],
+                                               'content' => $this->data['language_urls'] ?: [],
                                        ];
                                }
                                break;
index e0ceab5..d1be4bb 100644 (file)
@@ -62,11 +62,11 @@ abstract class QuickTemplate {
        }
 
        /**
-       * extends the value of data with name $name with the value $value
-       * @since 1.25
-       * @param string $name
-       * @param mixed $value
-       */
+        * extends the value of data with name $name with the value $value
+        * @since 1.25
+        * @param string $name
+        * @param mixed $value
+        */
        public function extend( $name, $value ) {
                if ( $this->haveData( $name ) ) {
                        $this->data[$name] = $this->data[$name] . $value;
@@ -92,14 +92,14 @@ abstract class QuickTemplate {
 
        /**
         * @param string $name
-        * @param mixed $value
+        * @param mixed &$value
         */
        public function setRef( $name, &$value ) {
                $this->data[$name] =& $value;
        }
 
        /**
-        * @param MediaWikiI18N $t
+        * @param MediaWikiI18N &$t
         */
        public function setTranslator( &$t ) {
                $this->translator = &$t;
index 849362a..e1d0034 100644 (file)
@@ -449,7 +449,7 @@ abstract class Skin extends ContextSource {
         * "<body>" tag, skins can override it if they have a need to add in any
         * body attributes or classes of their own.
         * @param OutputPage $out
-        * @param array $bodyAttrs
+        * @param array &$bodyAttrs
         */
        function addToBodyAttributes( $out, &$bodyAttrs ) {
                // does nothing by default
@@ -1215,7 +1215,7 @@ abstract class Skin extends ContextSource {
        /**
         * make sure we have some title to operate on
         *
-        * @param Title $title
+        * @param Title &$title
         * @param string $name
         */
        static function checkTitle( &$title, $name ) {
@@ -1286,7 +1286,7 @@ abstract class Skin extends ContextSource {
         *
         * This is just a wrapper around addToSidebarPlain() for backwards compatibility
         *
-        * @param array $bar
+        * @param array &$bar
         * @param string $message
         */
        public function addToSidebar( &$bar, $message ) {
@@ -1296,7 +1296,7 @@ abstract class Skin extends ContextSource {
        /**
         * Add content from plain text
         * @since 1.17
-        * @param array $bar
+        * @param array &$bar
         * @param string $text
         * @return array
         */
index fbc3022..500c2e9 100644 (file)
@@ -45,7 +45,7 @@ abstract class AuthManagerSpecialPage extends SpecialPage {
         * @param AuthenticationRequest[] $requests
         * @param array $fieldInfo Field information array (union of all
         *    AuthenticationRequest::getFieldInfo() responses).
-        * @param array $formDescriptor HTMLForm descriptor. The special key 'weight' can be set to
+        * @param array &$formDescriptor HTMLForm descriptor. The special key 'weight' can be set to
         *    change the order of the fields.
         * @param string $action Authentication type (one of the AuthManager::ACTION_* constants)
         * @return bool
@@ -474,7 +474,7 @@ abstract class AuthManagerSpecialPage extends SpecialPage {
        /**
         * Submit handler callback for HTMLForm
         * @private
-        * @param $data array Submitted data
+        * @param array $data Submitted data
         * @return Status
         */
        public function handleFormSubmit( $data ) {
@@ -598,7 +598,7 @@ abstract class AuthManagerSpecialPage extends SpecialPage {
        /**
         * Adds a sequential tabindex starting from 1 to all form elements. This way the user can
         * use the tab key to traverse the form without having to step through all links and such.
-        * @param $formDescriptor
+        * @param array &$formDescriptor
         */
        protected function addTabIndex( &$formDescriptor ) {
                $i = 1;
@@ -709,7 +709,7 @@ abstract class AuthManagerSpecialPage extends SpecialPage {
         * Sort the fields of a form descriptor by their 'weight' property. (Fields with higher weight
         * are shown closer to the bottom; weight defaults to 0. Negative weight is allowed.)
         * Keep order if weights are equal.
-        * @param array $formDescriptor
+        * @param array &$formDescriptor
         * @return array
         */
        protected static function sortFormDescriptorFields( array &$formDescriptor ) {
index 9d6fd5b..04d391b 100644 (file)
@@ -98,7 +98,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
 
        /**
         * Load basic request parameters for this Special page.
-        * @param $subPage
+        * @param string $subPage
         */
        private function loadRequestParameters( $subPage ) {
                if ( $this->mLoadedRequest ) {
@@ -1156,7 +1156,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
                        // Don't show a "create account" link if the user can't.
                        if ( $this->showCreateAccountLink() ) {
                                // link to the other action
-                               $linkTitle = $this->getTitleFor( $this->isSignup() ? 'Userlogin' :'CreateAccount' );
+                               $linkTitle = $this->getTitleFor( $this->isSignup() ? 'Userlogin' : 'CreateAccount' );
                                $linkq = $this->getReturnToQueryStringFragment();
                                // Pass any language selection on to the mode switch link
                                if ( $this->mLanguage ) {
@@ -1199,7 +1199,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
 
        /**
         * Adds fields provided via the deprecated UserLoginForm / UserCreateForm hooks
-        * @param $fieldDefinitions array
+        * @param array $fieldDefinitions
         * @param FakeAuthTemplate $template
         * @return array
         */
@@ -1247,6 +1247,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
        /**
         * Returns a string that can be appended to the URL (without encoding) to preserve the
         * return target. Does not include leading '?'/'&'.
+        * @return string
         */
        protected function getReturnToQueryStringFragment() {
                $returnto = '';
@@ -1339,7 +1340,8 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
        }
 
        /**
-        * @param array $formDescriptor
+        * @param array &$formDescriptor
+        * @param array $requests
         */
        protected function postProcessFormDescriptor( &$formDescriptor, $requests ) {
                // Pre-fill username (if not creating an account, T46775).
@@ -1395,6 +1397,11 @@ class FakeAuthTemplate extends BaseTemplate {
        /**
         * Extensions (AntiSpoof and TitleBlacklist) call this in response to
         * UserCreateForm hook to add checkboxes to the create account form.
+        * @param string $name
+        * @param string $value
+        * @param string $type
+        * @param string $msg
+        * @param string|bool $helptext
         */
        public function addInputItem( $name, $value, $type, $msg, $helptext = false ) {
                // use the same indexes as UserCreateForm just in case someone adds an item manually
@@ -1496,6 +1503,7 @@ class LoginForm extends SpecialPage {
 
        /**
         * @deprecated since 1.27 - call LoginHelper::getValidErrorMessages instead.
+        * @return array
         */
        public static function getValidErrorMessages() {
                return LoginHelper::getValidErrorMessages();
@@ -1503,6 +1511,8 @@ class LoginForm extends SpecialPage {
 
        /**
         * @deprecated since 1.27 - don't use LoginForm, use AuthManager instead
+        * @param string $username
+        * @return array|false
         */
        public static function incrementLoginThrottle( $username ) {
                wfDeprecated( __METHOD__, "1.27" );
@@ -1514,6 +1524,8 @@ class LoginForm extends SpecialPage {
 
        /**
         * @deprecated since 1.27 - don't use LoginForm, use AuthManager instead
+        * @param string $username
+        * @return bool|int
         */
        public static function incLoginThrottle( $username ) {
                wfDeprecated( __METHOD__, "1.27" );
@@ -1523,6 +1535,8 @@ class LoginForm extends SpecialPage {
 
        /**
         * @deprecated since 1.27 - don't use LoginForm, use AuthManager instead
+        * @param string $username
+        * @return void
         */
        public static function clearLoginThrottle( $username ) {
                wfDeprecated( __METHOD__, "1.27" );
@@ -1559,6 +1573,7 @@ class LoginForm extends SpecialPage {
 
        /**
         * @deprecated since 1.27 - don't use LoginForm, use AuthManager instead
+        * @return string
         */
        public static function getCreateaccountToken() {
                wfDeprecated( __METHOD__, '1.27' );
index 8dcb30c..4433ddb 100644 (file)
@@ -501,8 +501,8 @@ class SpecialPageFactory {
         * Returns a title object if the page is redirected, false if there was no such special
         * page, and true if it was successful.
         *
-        * @param Title $title
-        * @param IContextSource $context
+        * @param Title &$title
+        * @param IContextSource &$context
         * @param bool $including Bool output is being captured for use in {{special:whatever}}
         * @param LinkRenderer|null $linkRenderer (since 1.28)
         *
index 04c04b2..66e4fbe 100644 (file)
@@ -233,7 +233,7 @@ class SpecialBlock extends FormSpecialPage {
        /**
         * If the user has already been blocked with similar settings, load that block
         * and change the defaults for the form fields to match the existing settings.
-        * @param array $fields HTMLForm descriptor array
+        * @param array &$fields HTMLForm descriptor array
         * @return bool Whether fields were altered (that is, whether the target is
         *     already blocked)
         */
index d5c5528..8e6c446 100644 (file)
@@ -288,7 +288,7 @@ class SpecialExport extends SpecialPage {
                $formDescriptor += [
                        'wpDownload' => [
                                'type' => 'check',
-                               'name' =>'wpDownload',
+                               'name' => 'wpDownload',
                                'id' => 'wpDownload',
                                'default' => $request->wasPosted() ? $request->getCheck( 'wpDownload' ) : true,
                                'label-message' => 'export-download',
index 49caaa3..c18faa1 100644 (file)
@@ -35,7 +35,7 @@ class SpecialFilepath extends RedirectSpecialPage {
        /**
         * Implement by redirecting through Special:Redirect/file.
         *
-        * @param string|null $subpage
+        * @param string|null $par
         * @return Title
         */
        public function getRedirect( $par ) {
index 44e0db8..8d77091 100644 (file)
@@ -30,13 +30,15 @@ use Wikimedia\Rdbms\IDatabase;
  */
 class MediaStatisticsPage extends QueryPage {
        protected $totalCount = 0, $totalBytes = 0;
+
        /**
-       * @var integer $totalPerType Combined file size of all files in a section
-       */
+        * @var integer $totalPerType Combined file size of all files in a section
+        */
        protected $totalPerType = 0;
+
        /**
-       * @var integer $totalSize Combined file size of all files
-       */
+        * @var integer $totalSize Combined file size of all files
+        */
        protected $totalSize = 0;
 
        function __construct( $name = 'MediaStatistics' ) {
@@ -63,6 +65,7 @@ class MediaStatisticsPage extends QueryPage {
         * come out of querycache table is the order they went in. Which is hacky.
         * However, other special pages like Special:Deadendpages and
         * Special:BrokenRedirects also rely on this.
+        * @return array
         */
        public function getQueryInfo() {
                $dbr = wfGetDB( DB_REPLICA );
@@ -169,7 +172,7 @@ class MediaStatisticsPage extends QueryPage {
         *
         * @param string $mime mime type (e.g. image/jpeg)
         * @param int $count Number of images of this type
-        * @param int $totalBytes Total space for images of this type
+        * @param int $bytes Total space for images of this type
         */
        protected function outputTableRow( $mime, $count, $bytes ) {
                $mimeSearch = SpecialPage::getTitleFor( 'MIMEsearch', $mime );
@@ -197,7 +200,7 @@ class MediaStatisticsPage extends QueryPage {
                $row .= Html::rawElement(
                        'td',
                        // Make sure js sorts it in numeric order
-                       [ 'data-sort-value' =>  $bytes ],
+                       [ 'data-sort-value' => $bytes ],
                        $this->msg( 'mediastatistics-nbytes' )
                                ->numParams( $bytes )
                                ->sizeParams( $bytes )
@@ -251,6 +254,7 @@ class MediaStatisticsPage extends QueryPage {
         * Output the start of the table
         *
         * Including opening <table>, and first <tr> with column headers.
+        * @param string $mediaType
         */
        protected function outputTableStart( $mediaType ) {
                $this->getOutput()->addHTML(
index 83482f6..6a79714 100644 (file)
@@ -293,6 +293,19 @@ class SpecialNewpages extends IncludableSpecialPage {
                );
        }
 
+       /**
+        * @param stdClass $row Result row from recent changes
+        * @return Revision|bool
+        */
+       protected function revisionFromRcResult( stdClass $result ) {
+               return new Revision( [
+                       'comment' => $result->rc_comment,
+                       'deleted' => $result->rc_deleted,
+                       'user_text' => $result->rc_user_text,
+                       'user' => $result->rc_user,
+               ] );
+       }
+
        /**
         * Format a row, providing the timestamp, links to the page/history,
         * size, user links, and a comment
@@ -303,14 +316,9 @@ class SpecialNewpages extends IncludableSpecialPage {
        public function formatRow( $result ) {
                $title = Title::newFromRow( $result );
 
-               # Revision deletion works on revisions, so we should cast one
-               $row = [
-                       'comment' => $result->rc_comment,
-                       'deleted' => $result->rc_deleted,
-                       'user_text' => $result->rc_user_text,
-                       'user' => $result->rc_user,
-               ];
-               $rev = new Revision( $row );
+               // Revision deletion works on revisions,
+               // so cast our recent change row to a revision row.
+               $rev = $this->revisionFromRcResult( $result );
                $rev->setTitle( $title );
 
                $classes = [];
@@ -382,12 +390,6 @@ class SpecialNewpages extends IncludableSpecialPage {
                # Display the old title if the namespace/title has been changed
                $oldTitleText = '';
                $oldTitle = Title::makeTitle( $result->rc_namespace, $result->rc_title );
-               $ret = "{$time} {$dm}{$plink} {$hist} {$dm}{$length} {$dm}{$ulink} {$comment} "
-                       . "{$tagDisplay} {$oldTitleText}";
-
-               // Let extensions add data
-               Hooks::run( 'NewPagesLineEnding', [ $this, &$ret, $result, &$classes, &$attribs ] );
-               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
 
                if ( count( $classes ) ) {
                        $attribs['class'] = implode( ' ', $classes );
@@ -402,6 +404,13 @@ class SpecialNewpages extends IncludableSpecialPage {
                        );
                }
 
+               $ret = "{$time} {$dm}{$plink} {$hist} {$dm}{$length} {$dm}{$ulink} {$comment} "
+                       . "{$tagDisplay} {$oldTitleText}";
+
+               // Let extensions add data
+               Hooks::run( 'NewPagesLineEnding', [ $this, &$ret, $result, &$classes, &$attribs ] );
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
+
                return Html::rawElement( 'li', $attribs, $ret ) . "\n";
        }
 
@@ -485,7 +494,7 @@ class SpecialNewpages extends IncludableSpecialPage {
        }
 
        protected function feedItemDesc( $row ) {
-               $revision = Revision::newFromId( $row->rev_id );
+               $revision = $this->revisionFromRcResult( $row );
                if ( $revision ) {
                        // XXX: include content model/type in feed item?
                        return '<p>' . htmlspecialchars( $revision->getUserText() ) .
index 2943fd4..78a453e 100644 (file)
@@ -135,6 +135,16 @@ class SpecialPageLanguage extends FormSpecialPage {
                        return Status::newFatal( $ex->getMessageObject() );
                }
 
+               // Check permissions and make sure the user has permission to edit the page
+               $errors = $title->getUserPermissionsErrors( 'edit', $this->getUser() );
+
+               if ( $errors ) {
+                       $out = $this->getOutput();
+                       $wikitext = $out->formatPermissionsErrorMessage( $errors );
+                       // Hack to get our wikitext parsed
+                       return Status::newFatal( new RawMessage( '$1', [ $wikitext ] ) );
+               }
+
                // Url to redirect to after the operation
                $this->goToUrl = $title->getFullUrlForRedirect(
                        $title->isRedirect() ? [ 'redirect' => 'no' ] : []
index 41007e2..0b48d40 100644 (file)
@@ -868,7 +868,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
        /**
         * Filter $rows by categories set in $opts
         *
-        * @param ResultWrapper $rows Database rows
+        * @param ResultWrapper &$rows Database rows
         * @param FormOptions $opts
         */
        function filterByCategories( &$rows, FormOptions $opts ) {
index 4b0fa00..e1d4dd1 100644 (file)
@@ -73,28 +73,28 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                        'success' => 'revdelete-success',
                        'failure' => 'revdelete-failure',
                        'text' => 'revdelete-text-text',
-                       'selected'=> 'revdelete-selected-text',
+                       'selected' => 'revdelete-selected-text',
                ],
                'archive' => [
                        'check-label' => 'revdelete-hide-text',
                        'success' => 'revdelete-success',
                        'failure' => 'revdelete-failure',
                        'text' => 'revdelete-text-text',
-                       'selected'=> 'revdelete-selected-text',
+                       'selected' => 'revdelete-selected-text',
                ],
                'oldimage' => [
                        'check-label' => 'revdelete-hide-image',
                        'success' => 'revdelete-success',
                        'failure' => 'revdelete-failure',
                        'text' => 'revdelete-text-file',
-                       'selected'=> 'revdelete-selected-file',
+                       'selected' => 'revdelete-selected-file',
                ],
                'filearchive' => [
                        'check-label' => 'revdelete-hide-image',
                        'success' => 'revdelete-success',
                        'failure' => 'revdelete-failure',
                        'text' => 'revdelete-text-file',
-                       'selected'=> 'revdelete-selected-file',
+                       'selected' => 'revdelete-selected-file',
                ],
                'logging' => [
                        'check-label' => 'revdelete-hide-name',
index 8afea0b..85b4572 100644 (file)
@@ -555,7 +555,7 @@ class SpecialSearch extends SpecialPage {
         * Extract "power search" namespace settings from the request object,
         * returning a list of index numbers to search.
         *
-        * @param WebRequest $request
+        * @param WebRequest &$request
         * @return array
         */
        protected function powerSearch( &$request ) {
index d23625a..1d76e36 100644 (file)
@@ -58,6 +58,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                        'mediawiki.special.changeslist.visitedstatus',
                        'mediawiki.special.watchlist',
                ] );
+               $output->addModuleStyles( [ 'mediawiki.special.watchlist.styles' ] );
 
                $mode = SpecialEditWatchlist::getMode( $request, $subpage );
                if ( $mode !== false ) {
@@ -431,6 +432,23 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                $list = ChangesList::newFromContext( $this->getContext(), $this->filterGroups );
                $list->setWatchlistDivs();
                $list->initChangesListRows( $rows );
+               if ( $user->getOption( 'watchlistunwatchlinks' ) ) {
+                       $list->setChangeLinePrefixer( function ( RecentChange $rc, ChangesList $cl, $grouped ) {
+                               // Don't show unwatch link if the line is a grouped log entry using EnhancedChangesList,
+                               // since EnhancedChangesList groups log entries by performer rather than by target article
+                               if ( $rc->mAttribs['rc_type'] == RC_LOG && $cl instanceof EnhancedChangesList &&
+                                       $grouped ) {
+                                       return '';
+                               } else {
+                                       return $this->getLinkRenderer()
+                                                       ->makeKnownLink( $rc->getTitle(),
+                                                               $this->msg( 'watchlist-unwatch' )->text(), [
+                                                                       'class' => 'mw-unwatch-link',
+                                                                       'title' => $this->msg( 'tooltip-ca-unwatch' )->text()
+                                                               ], [ 'action' => 'unwatch' ] ) . '&#160;';
+                               }
+                       } );
+               }
                $dbr->dataSeek( $rows, 0 );
 
                if ( $this->getConfig()->get( 'RCShowWatchingUsers' )
@@ -596,7 +614,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                // default string representation, for example, and would confuse comparisons.
 
                // Misleadingly, the 'days' option supports hours too.
-               $days = array_map( 'strval', [ 1/24, 2/24, 6/24, 12/24, 1, 3, 7 ] );
+               $days = array_map( 'strval', [ 1 / 24, 2 / 24, 6 / 24, 12 / 24, 1, 3, 7 ] );
 
                $userWatchlistOption = (string)$this->getUser()->getOption( 'watchlistdays' );
                // add the user preference, if it isn't available already
index cfcbf65..a35a420 100644 (file)
@@ -75,7 +75,7 @@ class LoginHelper extends ContextSource {
                // Allow modification of redirect behavior
                Hooks::run( 'PostLoginRedirect', [ &$returnTo, &$returnToQuery, &$type ] );
 
-               $returnToTitle = Title::newFromText( $returnTo ) ?:  Title::newMainPage();
+               $returnToTitle = Title::newFromText( $returnTo ) ?: Title::newMainPage();
 
                if ( $wgSecureLogin && !$stickHTTPS ) {
                        $options = [ 'http' ];
index 45dced8..823b5da 100644 (file)
@@ -36,9 +36,9 @@ class ProtectedPagesPager extends TablePager {
        /**
         * @param SpecialProtectedpages $form
         * @param array $conds
-        * @param $type
-        * @param $level
-        * @param $namespace
+        * @param string $type
+        * @param string $level
+        * @param int $namespace
         * @param string $sizetype
         * @param int $size
         * @param bool $indefonly
index cdb9130..a68fe66 100644 (file)
@@ -270,7 +270,7 @@ class UsersPager extends AlphabeticPager {
        function getPageHeader() {
                list( $self ) = explode( '/', $this->getTitle()->getPrefixedDBkey() );
 
-               $groupOptions = [ $this->msg( 'group-all' )->text() =>  '' ];
+               $groupOptions = [ $this->msg( 'group-all' )->text() => '' ];
                foreach ( $this->getAllGroups() as $group => $groupText ) {
                        $groupOptions[ $groupText ] = $group;
                }
index 3a37c2e..cd59d6d 100644 (file)
@@ -3,8 +3,9 @@
                <td>
                        <span class="mw-collapsible-toggle mw-collapsible-arrow mw-enhancedchanges-arrow mw-enhancedchanges-arrow-space"></span>
                </td>
+               <td class="mw-changeslist-line-prefix">{{{ prefix }}}</td>
                <td class="mw-enhanced-rc">{{{ collectedRcFlags }}}&#160;{{ timestamp }}&#160;</td>
-               <td>
+               <td class="mw-changeslist-line-inner">
                        {{# rev-deleted-event }}<span class="history-deleted">{{{ . }}}</span>{{/ rev-deleted-event }}
                        {{{ articleLink }}}{{{ languageDirMark }}}{{{ logText }}}
                        <span class="mw-changeslist-separator">. .</span>
        </tr>
        {{# lines }}
        <tr class="{{# classes }}{{ . }} {{/ classes }}"{{{ attribs }}}>
+               <td></td>
                <td></td>
                <td class="mw-enhanced-rc">{{{ recentChangesFlags }}}&#160;</td>
-               <td class="mw-enhanced-rc-nested">
+               <td class="mw-enhanced-rc-nested" data-target-page="{{ targetTitle }}">
                        {{# timestampLink }}
                        <span class="mw-enhanced-rc-time">{{{ . }}}</span>
                        {{/ timestampLink }}
index 4852ce5..b29a3af 100644 (file)
@@ -1203,7 +1203,7 @@ class BalanceStack implements IteratorAggregate {
                        $furthestBlock = null;
                        $furthestBlockIndex = -1;
                        $stackLength = $this->length();
-                       for ( $i = $index+1; $i < $stackLength; $i++ ) {
+                       for ( $i = $index + 1; $i < $stackLength; $i++ ) {
                                if ( $this->node( $i )->isA( BalanceSets::$specialSet ) ) {
                                        $furthestBlock = $this->node( $i );
                                        $furthestBlockIndex = $i;
@@ -1225,7 +1225,7 @@ class BalanceStack implements IteratorAggregate {
 
                        // Let the common ancestor be the element immediately above
                        // the formatting element in the stack of open elements.
-                       $ancestor = $this->node( $index-1 );
+                       $ancestor = $this->node( $index - 1 );
 
                        // Let a bookmark note the position of the formatting
                        // element in the list of active formatting elements
@@ -2116,7 +2116,7 @@ class Balancer {
                                return $this->insertToken( $token, $value, $attribs, $selfClose );
                        }
                        // "Any other start tag"
-                       $adjusted = ( $this->fragmentContext && $this->stack->length()===1 ) ?
+                       $adjusted = ( $this->fragmentContext && $this->stack->length() === 1 ) ?
                                $this->fragmentContext : $this->stack->currentNode;
                        $this->stack->insertForeignElement(
                                $adjusted->namespaceURI, $value, $attribs
@@ -2242,7 +2242,7 @@ class Balancer {
 
        private function switchMode( $mode ) {
                Assert::parameter(
-                       substr( $mode, -4 )==='Mode', '$mode', 'should end in Mode'
+                       substr( $mode, -4 ) === 'Mode', '$mode', 'should end in Mode'
                );
                $oldMode = $this->parseMode;
                $this->parseMode = $mode;
@@ -2267,8 +2267,8 @@ class Balancer {
                                switch ( $node->localName ) {
                                case 'select':
                                        $stackLength = $this->stack->length();
-                                       for ( $j = $i + 1; $j < $stackLength-1; $j++ ) {
-                                               $ancestor = $this->stack->node( $stackLength-$j-1 );
+                                       for ( $j = $i + 1; $j < $stackLength - 1; $j++ ) {
+                                               $ancestor = $this->stack->node( $stackLength - $j - 1 );
                                                if ( $ancestor->isHtmlNamed( 'template' ) ) {
                                                        break;
                                                }
index 660c5b7..2ee40a8 100644 (file)
@@ -155,7 +155,7 @@ abstract class UploadBase {
        /**
         * Create a form of UploadBase depending on wpSourceType and initializes it
         *
-        * @param WebRequest $request
+        * @param WebRequest &$request
         * @param string|null $type
         * @return null|UploadBase
         */
@@ -241,7 +241,7 @@ abstract class UploadBase {
        /**
         * Initialize from a WebRequest. Override this in a subclass.
         *
-        * @param WebRequest $request
+        * @param WebRequest &$request
         */
        abstract public function initializeFromRequest( &$request );
 
@@ -1496,6 +1496,7 @@ abstract class UploadBase {
         * @param string $type PUBLIC or SYSTEM
         * @param string $publicId The well-known public identifier for the dtd
         * @param string $systemId The url for the external dtd
+        * @return bool|array
         */
        public static function checkSvgExternalDTD( $type, $publicId, $systemId ) {
                // This doesn't include the XHTML+MathML+SVG doctype since we don't
@@ -1521,6 +1522,7 @@ abstract class UploadBase {
         * @todo Replace this with a whitelist filter!
         * @param string $element
         * @param array $attribs
+        * @param array $data
         * @return bool
         */
        public function checkSvgScriptCallback( $element, $attribs, $data = null ) {
index acfabba..675bb8d 100644 (file)
@@ -34,7 +34,7 @@ class UploadFromFile extends UploadBase {
        protected $mUpload = null;
 
        /**
-        * @param WebRequest $request
+        * @param WebRequest &$request
         */
        function initializeFromRequest( &$request ) {
                $upload = $request->getUpload( 'wpUploadFile' );
index 1fbdb7d..a9f399b 100644 (file)
@@ -113,7 +113,7 @@ class UploadFromStash extends UploadBase {
        }
 
        /**
-        * @param WebRequest $request
+        * @param WebRequest &$request
         */
        public function initializeFromRequest( &$request ) {
                // sends wpSessionKey as a default when wpFileKey is missing
index 2b13dd8..7d697a1 100644 (file)
@@ -141,7 +141,7 @@ class UploadFromUrl extends UploadBase {
 
        /**
         * Entry point for SpecialUpload
-        * @param WebRequest $request
+        * @param WebRequest &$request
         */
        public function initializeFromRequest( &$request ) {
                $desiredDestName = $request->getText( 'wpDestFile' );
index fa84c94..71a4272 100644 (file)
@@ -3519,7 +3519,7 @@ class User implements IDBAccessObject {
        /**
         * Check if user is allowed to access a feature / make an action
         *
-        * @param string ... Permissions to test
+        * @param string $permissions,... Permissions to test
         * @return bool True if user is allowed to perform *any* of the given actions
         */
        public function isAllowedAny() {
@@ -3534,7 +3534,7 @@ class User implements IDBAccessObject {
 
        /**
         *
-        * @param string ... Permissions to test
+        * @param string $permissions,... Permissions to test
         * @return bool True if the user is allowed to perform *all* of the given actions
         */
        public function isAllowedAll() {
@@ -3661,7 +3661,7 @@ class User implements IDBAccessObject {
         * If e-notif e-mails are on, they will receive notification mails on
         * the next change of the page if it's watched etc.
         * @note If the user doesn't have 'editmywatchlist', this will do nothing.
-        * @param Title $title Title of the article to look at
+        * @param Title &$title Title of the article to look at
         * @param int $oldid The revision id being viewed. If not given or 0, latest revision is assumed.
         */
        public function clearNotification( &$title, $oldid = 0 ) {
index 8931e3c..19f5100 100644 (file)
@@ -372,7 +372,7 @@ class ClassCollector {
        /**
         * Accepts the next token in an expect sequence
         *
-        * @param array
+        * @param array $token
         */
        protected function tryEndExpect( $token ) {
                switch ( $this->startToken[0] ) {
index fc8bde9..f42b5a0 100644 (file)
@@ -64,9 +64,9 @@ class BatchRowUpdate {
        protected $output;
 
        /**
-        * @param BatchRowIterator   $reader    Iterator that returns an
+        * @param BatchRowIterator $reader Iterator that returns an
         *  array of database rows
-        * @param BatchRowWriter     $writer    Writer capable of pushing
+        * @param BatchRowWriter $writer Writer capable of pushing
         *  row updates to the database
         * @param RowUpdateGenerator $generator Generates single row updates
         *  based on the rows content
index 70afb91..59dcbd6 100644 (file)
@@ -41,8 +41,8 @@ class BatchRowWriter {
 
        /**
         * @param IDatabase $db The database to write to
-        * @param string       $table       The name of the table to update
-        * @param string|bool  $clusterName A cluster name valid for use with LBFactory
+        * @param string $table The name of the table to update
+        * @param string|bool $clusterName A cluster name valid for use with LBFactory
         */
        public function __construct( IDatabase $db, $table, $clusterName = false ) {
                $this->db = $db;
index 9145bb6..81a1a43 100644 (file)
@@ -176,7 +176,7 @@ class InterwikiSearchResultSetWidget implements SearchResultSetWidget {
                $iwIconUrl = $parsed['scheme'] .
                        $parsed['delimiter'] .
                        $parsed['host'] .
-                       ( isset ( $parsed['port'] ) ? ':' . $parsed['port'] : '' ) .
+                       ( isset( $parsed['port'] ) ? ':' . $parsed['port'] : '' ) .
                        '/favicon.ico';
 
                $iwIcon = new OOUI\IconWidget( [
index bcd1c16..4eead5e 100644 (file)
@@ -61,6 +61,6 @@ class InterwikiSearchResultWidget implements SearchResultWidget {
                }
 
                return Html::rawElement( 'div', [ 'class' => 'iw-result__title' ], $link . ' ' . $redirect ) .
-                       Html::rawElement( 'div', [ 'class'=> 'iw-result__content' ], $snippet );
+                       Html::rawElement( 'div', [ 'class' => 'iw-result__content' ], $snippet );
        }
 }
index 92dad9b..9db7dec 100644 (file)
@@ -203,7 +203,7 @@ class Language {
        /**
         * Create a language object for a given language code
         * @param string $code
-        * @param $fallback boolean Whether we're going through language fallback chain
+        * @param bool $fallback Whether we're going through language fallback chain
         * @throws MWException
         * @return Language
         */
@@ -1584,9 +1584,9 @@ class Language {
         * @return int[]
         */
        private static function tsToIranian( $ts ) {
-               $gy = substr( $ts, 0, 4 ) -1600;
-               $gm = substr( $ts, 4, 2 ) -1;
-               $gd = substr( $ts, 6, 2 ) -1;
+               $gy = substr( $ts, 0, 4 ) - 1600;
+               $gm = substr( $ts, 4, 2 ) - 1;
+               $gd = substr( $ts, 6, 2 ) - 1;
 
                # Days passed from the beginning (including leap years)
                $gDayNo = 365 * $gy
@@ -1666,7 +1666,7 @@ class Language {
                                                                (int)( ( 275 * $zm ) / 9 ) + $zd + 1729777;
                }
 
-               $zl = $zjd -1948440 + 10632;
+               $zl = $zjd - 1948440 + 10632;
                $zn = (int)( ( $zl - 1 ) / 10631 );
                $zl = $zl - 10631 * $zn + 354;
                $zj = ( (int)( ( 10985 - $zl ) / 5316 ) ) * ( (int)( ( 50 * $zl ) / 17719 ) ) +
@@ -3346,7 +3346,7 @@ class Language {
                                if ( $start < 0 ) {
                                        $start = 0;
                                }
-                               $groupedNumber = substr( $number, $start, $end -$start ) . $groupedNumber;
+                               $groupedNumber = substr( $number, $start, $end - $start ) . $groupedNumber;
                                $end = $start;
                                if ( $numMatches > 1 ) {
                                        // use the last pattern for the rest of the number
index dcb7a91..1cfcd2c 100644 (file)
@@ -36,8 +36,8 @@ class EnConverter extends LanguageConverter {
         * Translates text into Pig Latin. This allows developers to test the language variants
         * functionality and user interface without having to switch wiki language away from default.
         *
-        * @param $text string
-        * @param $toVariant string
+        * @param string $text
+        * @param string $toVariant
         * @return string
         */
        function translate( $text, $toVariant ) {
index f6f03c4..1a1438c 100644 (file)
@@ -282,7 +282,7 @@ class KkConverter extends LanguageConverter {
                $ret = '';
 
                foreach ( $matches as $m ) {
-                       $ret .= substr( $text, $mstart, $m[1] -$mstart );
+                       $ret .= substr( $text, $mstart, $m[1] - $mstart );
                        $ret .= $this->regsConverter( $m[0], $toVariant );
                        $mstart = $m[1] + strlen( $m[0] );
                }
index 6491f55..e0ff5e1 100644 (file)
@@ -131,7 +131,7 @@ class SrConverter extends LanguageConverter {
                $ret = $this->mTables[$toVariant]->replace( $m[0] );
                $mstart = $m[1] + strlen( $m[0] );
                foreach ( $matches as $m ) {
-                       $ret .= substr( $text, $mstart, $m[1] -$mstart );
+                       $ret .= substr( $text, $mstart, $m[1] - $mstart );
                        $ret .= parent::translate( $m[0], $toVariant );
                        $mstart = $m[1] + strlen( $m[0] );
                }
index 53da8b0..b1604f8 100644 (file)
        "tog-watchlisthideminor": "أخف التعديلات الطفيفة من قائمة المراقبة",
        "tog-watchlisthideliu": "أخف تعديلات المستخدمين المسجلين في قائمة المراقبة",
        "tog-watchlistreloadautomatically": "أعد تحميل قائمة المراقبة بصفة آلية حينما يتغير مرشح ما (يتطلب جافاسكربت)",
+       "tog-watchlistunwatchlinks": "إضافة روابط مباشرة للمراقبة/إزالة المراقبة إلى إدخالات قائمة المراقبة (جافا سكريبت مطلوبة للحصول على وظيفة التبديل)",
        "tog-watchlisthideanons": "أخف تعديلات المستخدمين المجهولين في قائمة المراقبة",
        "tog-watchlisthidepatrolled": "أخف التعديلات المراجعة في قائمة المراقبة",
        "tog-watchlisthidecategorization": "أخف تصنيف الصفحات",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (راجع أيضا [[Special:NewPages|قائمة الصفحات الجديدة]])",
        "recentchanges-submit": "أظهر",
        "rcfilters-legend-heading": "<strong>قائمة الاختصارات:</strong>",
+       "rcfilters-other-review-tools": "<strong>أدوات مراجعة أخرى</strong>",
+       "rcfilters-group-results-by-page": "جمع النتائج حسب الصفحة",
+       "rcfilters-grouping-title": "جمع",
        "rcfilters-activefilters": "المرشحات النشطة",
        "rcfilters-advancedfilters": "مرشحات متقدمة",
        "rcfilters-limit-title": "عدد التعديلات",
        "rcfilters-days-show-hours": "{{PLURAL:$1|ساعة واحدة|ساعتان|$1 ساعات|$1 ساعة}}",
        "rcfilters-quickfilters": "المرشحات المحفوظة",
        "rcfilters-quickfilters-placeholder-title": "لا وصلات تم حفظها بعد",
+       "rcfilters-quickfilters-placeholder-description": "لحفظ إعدادات الفلتر وإعادة استخدامها في وقت لاحق; انقر فوق رمز الإشارة المرجعية في منطقة الفلتر النشط أدناه.",
        "rcfilters-savedqueries-defaultlabel": "مرشحات محفوظة",
        "rcfilters-savedqueries-rename": "أعد التسمية",
        "rcfilters-savedqueries-setdefault": "حفظ كقيمة افتراضية",
        "rcfilters-savedqueries-unsetdefault": "إزالة القيمة الافتراضية",
        "rcfilters-savedqueries-remove": "أزل",
        "rcfilters-savedqueries-new-name-label": "الاسم",
+       "rcfilters-savedqueries-new-name-placeholder": "صف الغرض من المرشح",
        "rcfilters-savedqueries-apply-label": "أنشئ مرشحا",
+       "rcfilters-savedqueries-apply-and-setdefault-label": "إنشاء مرشح افتراضي",
        "rcfilters-savedqueries-cancel-label": "ألغ",
        "rcfilters-savedqueries-add-new-title": "احفظ إعدادات المرشحات الحالية",
        "rcfilters-restore-default-filters": "استرجاع المرشحات الافتراضية",
        "rcfilters-clear-all-filters": "مسح كل المرشحات",
+       "rcfilters-show-new-changes": "عرض أحدث التغييرات",
+       "rcfilters-previous-changes-label": "تغييرات تم عرضها سابقًا",
        "rcfilters-search-placeholder": "رشح أحدث التغييرات (تصفح أو ابدأ الكتابة)",
        "rcfilters-invalid-filter": "مرشح غير صحيح",
        "rcfilters-empty-filter": "لا مرشحات فعالة. كل المساهمات معروضة.",
        "rcfilters-filter-lastrevision-description": "فقط أحدث التغييرات التي طرأت على الصفحة.",
        "rcfilters-filter-previousrevision-label": "ليس آخر مراجعة",
        "rcfilters-filter-previousrevision-description": "جميع التغييرات ما عدا \"أحدث مراجعة\".",
+       "rcfilters-filter-excluded": "مستبعد",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:ليس</strong> $1",
+       "rcfilters-exclude-button-off": "استبعاد المختارة",
+       "rcfilters-exclude-button-on": "استثناء المختارة",
+       "rcfilters-view-advanced-filters-label": "مرشحات متقدمة",
        "rcfilters-view-tags": "تعديلات موسومة",
        "rcfilters-view-namespaces-tooltip": "رشح النتائج حسب النطاق",
        "rcfilters-view-tags-tooltip": "رشح النتائج حسب وسوم التعديل",
        "rcfilters-view-return-to-default-tooltip": "ارجع لقائمة المرشحات الرئيسية",
        "rcfilters-liveupdates-button": "تحديثات حية",
+       "rcfilters-liveupdates-button-title-on": "إيقاف التحديثات الحية",
+       "rcfilters-liveupdates-button-title-off": "عرض التغييرات الجديدة فور حدوثها",
        "rcnotefrom": "بالأسفل {{PLURAL:$5|التغيير|التغييرات}} منذ <strong>$2</strong> (إلى <strong>$1</strong> معروضة).",
        "rclistfromreset": "إعادة ضبط خيار التاريخ",
        "rclistfrom": "أظهر التغييرات بدء من $3 $2",
        "pageswithprop-legend": "صفحات مع خاصية الصفحة",
        "pageswithprop-text": "تسرد هذه الصفحة الصفحات التي تستخدم خاصية صفحة معينة.",
        "pageswithprop-prop": "اسم الخاصية:",
+       "pageswithprop-reverse": "فرز بترتيب عكسي",
+       "pageswithprop-sortbyvalue": "ترتيب حسب قيمة الخاصية",
        "pageswithprop-submit": "اذهب",
        "pageswithprop-prophidden-long": "قيمة خاصية النص الطويل المخفية ($1)",
        "pageswithprop-prophidden-binary": "قيمة الخاصية الثنائية المخفية ($1)",
        "watching": "يراقب...",
        "unwatching": "إزالة المراقبة...",
        "watcherrortext": "حدث خطأ أثناء تغيير إعدادات الرصد الخاصة بك \"$1\".",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "علم على كل الصفحات كمرئية",
        "enotif_impersonal_salutation": "مستخدم {{SITENAME}}",
        "enotif_subject_deleted": "الصفحة {{SITENAME}} $1 حذفها {{الجنس: $2 | $2 }}",
        "enotif_lastdiff": "لرؤية هذا التغيير، انظر $1",
        "enotif_anon_editor": "مستخدم مجهول $1",
        "enotif_body": "عزيزي $WATCHINGUSERNAME\n\n$PAGEINTRO $NEWPAGE\n\nملخص التعديل: $PAGESUMMARY $PAGEMINOREDIT\n\nاتصل بالمحرر:\nالبريد: $PAGEEDITOR_EMAIL\nويكي: $PAGEEDITOR_WIKI\n\nلن يكون هناك إخطارات أخرى في حالة حدوث مزيد من التغييرات إلا إذا قمت بزيارة تلك الصفحة أثناء تواجدك. يمكنك أيضاً إزالة العلامات عن جميع الصفحات في قائمة مراقبتك.\n\nنظام {{SITENAME}} للإشعار\n\n--\nلتغيير إعدادات الإشعار بالبريد الإلكتروني الخاص بك، قم بزيارة\n{{canonicalurl:{{#special:Preferences}}}}\n\nلتغيير إعدادات قائمة مراقبتك، قم بزيارة\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nلحذف الصفحة من قائمة مراقبتك، قم بزيارة\n$UNWATCHURL\n\nللمقترحات وللحصول على مساعدة إضافية:\n$HELPPAGE",
+       "enotif_minoredit": "هذا تعديل طفيف",
        "created": "أنشئت",
        "changed": "غيرت",
        "deletepage": "حذف الصفحة",
        "delete-warning-toobig": "لهذه الصفحة تاريخ تعديل طويل، أكثر من {{PLURAL:$1||مراجعة واحدة|مراجعتين|$1 مراجعات|$1 مراجعة}}.\nقد يؤدي حذفها إلى اضطراب عمليات قاعدة البيانات في {{SITENAME}}؛\nاستمر مع الحذر.",
        "deleteprotected": "لا يمكنك حذف هذه الصفحة لأنها محمية.",
        "deleting-backlinks-warning": "<strong>تحذير:</strong> [[Special:WhatLinksHere/{{FULLPAGENAME}}|صفحات أخرى]] تصل إلى أو تضمن الصفحة التي أنت على وشك حذفها.",
+       "deleting-subpages-warning": "<strong>تحذير:</strong> اللصفحة التي على وشك أن تحذفها لديها [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|صفحة فرعية|$1 صفحات فرعية|51=أكثر من 50 صفحة فرعية}}]].",
        "rollback": "التراجع عن التعديلات",
        "rollbacklink": "استرجع",
        "rollbacklinkcount": "استرجع {{PLURAL:$1|لا تعديلات|تعديلا واحدا|تعديلين|$1 تعديلات|$1 تعديلاً|تعديل}}",
        "fileduplicatesearch-noresults": "لا ملف بالاسم \"$1\" تم العثور عليه.",
        "specialpages": "الصفحات الخاصة",
        "specialpages-note-top": "المفتاح",
+       "specialpages-note-restricted": "* صفحات خاصة عادية.\n* <span class=\"mw-specialpagerestricted\">صفحات خاصة مقيدة.</span>",
        "specialpages-group-maintenance": "تقارير الصيانة",
        "specialpages-group-other": "صفحات خاصة أخرى",
        "specialpages-group-login": "دخول / إنشاء حساب",
        "compare-invalid-title": "العنوان الذي حددته غير متاح.",
        "compare-title-not-exists": "العنوان الذي حددته غير موجود.",
        "compare-revision-not-exists": "المراجعة التي حددتها غير موجودة.",
-       "diff-form": "'''استمارة'''",
+       "diff-form": "فروق",
+       "diff-form-oldid": "معرف مراجعة قديمة (اختياري)",
+       "diff-form-revid": "معرف مراجعة الفرق",
+       "diff-form-submit": "أظهر الفروق",
+       "permanentlink": "وصلة دائمة",
+       "permanentlink-revid": "معرف المراجعة",
+       "permanentlink-submit": "الذهاب إلى المراجعة",
        "dberr-problems": "عذرا! هذا الموقع يعاني من صعوبات تقنية.",
        "dberr-again": "جرب الانتظار بضع دقائق وإعادة التحميل.",
        "dberr-info": "(لا يمكن الوصول إلى خادوم قاعدة البيانات: $1)",
index f9fa0fb..cd7a962 100644 (file)
@@ -45,7 +45,7 @@
        "tog-shownumberswatching": "Amosar el númberu d'usuarios que tán vixilando la páxina",
        "tog-oldsig": "La to firma actual:",
        "tog-fancysig": "Tratar la firma como testu wiki (ensin enllaz automáticu)",
-       "tog-uselivepreview": "Usar vista previa en tiempu real",
+       "tog-uselivepreview": "Amosar les vistes previes ensin recargar la páxina",
        "tog-forceeditsummary": "Avisame cuando grabe col resume d'edición en blanco",
        "tog-watchlisthideown": "Anubrir les mios ediciones na llista de siguimientu",
        "tog-watchlisthidebots": "Anubrir les ediciones de bots na llista de siguimientu",
        "permissionserrorstext-withaction": "Nun tien permisu pa $2 {{PLURAL:$1|pol siguiente motivu|polos siguientes motivos}}:",
        "contentmodelediterror": "Nun ye posible editar esta revisión porque'l so modelu de conteníu ye <code>$1</code>, que ye distintu del modelu de conteníu actual de la páxina, <code>$2</code>.",
        "recreate-moveddeleted-warn": "'''Avisu: Tas volviendo a crear una páxina que se desanició anteriormente.'''\n\nHabríes considerar si ye afechisco siguir editando esta páxina.\nEquí tienes el rexistru de desanicios y tresllaos d'esta páxina:",
-       "moveddeleted-notice": "Esta páxina se desanició.\nComo referencia, embaxo s'ufre'l rexistru de desanicios y tresllaos de la páxina.",
-       "moveddeleted-notice-recent": "Esta páxina desanicióse apocayá (dientro de les postreres 24 hores).\nLos rexistros de desaniciu y treslláu de la páxina amuésense de siguío como referencia.",
+       "moveddeleted-notice": "Esta páxina se desanició.\nComo referencia, embaxo s'ufre'l rexistru de desanicios, proteiciones y tresllaos de la páxina.",
+       "moveddeleted-notice-recent": "Esta páxina desanicióse apocayá (dientro de les postreres 24 hores).\nEl rexistru de desanicios, proteiciones y tresllaos de la páxina amuésense de siguío como referencia.",
        "log-fulllog": "Ver el rexistru ensembre",
        "edit-hook-aborted": "Edición albortada pol enganche.\nNun dio esplicación.",
        "edit-gone-missing": "Nun se pudo actualizar la páxina.\nPaez que se desanició.",
        "prefs-editwatchlist-clear": "Llimpiar la to llista de siguimientu",
        "prefs-watchlist-days": "Númberu de díes qu'amosar na llista de siguimientu:",
        "prefs-watchlist-days-max": "Máximo $1 {{PLURAL:$1|día|díes}}",
-       "prefs-watchlist-edits": "Númberu máximu d'ediciones qu'amosar na llista de siguimientu espandida:",
+       "prefs-watchlist-edits": "Númberu máximu de cambios qu'amosar na llista de siguimientu:",
        "prefs-watchlist-edits-max": "Númberu máximu: 1000",
        "prefs-watchlist-token": "Pase de la llista de siguimientu:",
        "prefs-misc": "Varios",
        "recentchanges-submit": "Amosar",
        "rcfilters-legend-heading": "<strong>Llista d'abreviatures:</strong>",
        "rcfilters-other-review-tools": "<strong>Otres ferramientes de revisión</strong>",
+       "rcfilters-group-results-by-page": "Agrupar resultancies per páxina",
+       "rcfilters-grouping-title": "Agrupamientu",
        "rcfilters-activefilters": "Filtros activos",
        "rcfilters-advancedfilters": "Filtros avanzaos",
        "rcfilters-limit-title": "Cambios a amosar",
-       "rcfilters-limit-shownum": "Amosar los últimos $1 cambios",
+       "rcfilters-limit-shownum": "Amosar {{PLURAL:$1|l'últimu cambiu|los últimos $1 cambios}}",
        "rcfilters-days-title": "Últimos díes",
        "rcfilters-hours-title": "Últimes hores",
        "rcfilters-days-show-days": "$1 {{PLURAL:$1|día|díes}}",
        "rcfilters-savedqueries-new-name-label": "Nome",
        "rcfilters-savedqueries-new-name-placeholder": "Describe'l propósitu del filtru",
        "rcfilters-savedqueries-apply-label": "Crear un filtru",
+       "rcfilters-savedqueries-apply-and-setdefault-label": "Crear filtru predetermináu",
        "rcfilters-savedqueries-cancel-label": "Encaboxar",
        "rcfilters-savedqueries-add-new-title": "Guardar les preferencies de filtru actuales",
        "rcfilters-restore-default-filters": "Restaurar los filtros predeterminaos",
        "rcfilters-clear-all-filters": "Borrar tolos filtros",
+       "rcfilters-show-new-changes": "Ver los cambeos más recién",
+       "rcfilters-previous-changes-label": "Cambeos vistos anteriormente",
        "rcfilters-search-placeholder": "Filtriar los cambeos recién (restola o empieza a escribir)",
        "rcfilters-invalid-filter": "Filtru inválidu",
        "rcfilters-empty-filter": "Nun hai filtros activos. Amuésense toles contribuciones.",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:non</strong> $1",
        "rcfilters-exclude-button-off": "Torgar los seleicionaos",
        "rcfilters-exclude-button-on": "Torgando los seleicionaos",
+       "rcfilters-view-advanced-filters-label": "Filtros avanzaos",
        "rcfilters-view-tags": "Ediciones etiquetaes",
        "rcfilters-view-namespaces-tooltip": "Filtriar los resultaos por espaciu de nomes",
        "rcfilters-view-tags-tooltip": "Filtriar los resultaos usando les etiquetes d'edición",
        "rcfilters-view-return-to-default-tooltip": "Volver al menú principal de filtros",
        "rcfilters-liveupdates-button": "Anovamientos nel intre",
+       "rcfilters-liveupdates-button-title-on": "Apagar anovamientos en direuto",
+       "rcfilters-liveupdates-button-title-off": "Amosar los cambeos de la qu'asoceden",
        "rcnotefrom": "Abaxo {{PLURAL:$5|tá'l cambiu|tan los cambios}} dende'l <strong>$3</strong>, a les <strong>$4</strong> (s'amuesen un máximu de <strong>$1</strong>).",
        "rclistfromreset": "Reaniciar la seleición de data",
        "rclistfrom": "Amosar los nuevos cambios dende'l $3 a les $2",
        "pageswithprop-legend": "Páxines con una propiedá de páxina",
        "pageswithprop-text": "Esta páxina llista les páxines qu'usen una propiedá de páxina determinada.",
        "pageswithprop-prop": "Nome de la propiedá:",
+       "pageswithprop-reverse": "Ordenar a la inversa",
+       "pageswithprop-sortbyvalue": "Ordenar por valor de propiedá",
        "pageswithprop-submit": "Dir",
        "pageswithprop-prophidden-long": "valor de propiedá de testu llargu tapecíu ($1)",
        "pageswithprop-prophidden-binary": "valor de propiedá binaria tapecíu ($1)",
        "enotif_lastdiff": "Pa ver esti cambiu mira en $1",
        "enotif_anon_editor": "usuariu anónimu $1",
        "enotif_body": "Estimáu $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nResume del editor: $PAGESUMMARY $PAGEMINOREDIT\n\nPa comunicate col editor:\ncorréu: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nEn casu de producise más actividá, nun habrá más notificaciones a nun ser que visites esta páxina teniendo sesión aniciada. Tamién podríes reaniciar na to llista de siguimientu los marcadores de notificación de toles páxines que sigues.\n\nEl to abertable sistema de notificación de {{SITENAME}}\n\n--\nPa camudar les preferencies d'avisos per corréu, visita\n{{canonicalurl:{{#special:Preferences}}}}\n\nPa camudar la configuración de la to llista de siguimientu, visita\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPa desaniciar la páxina de la to llista de siguimientu, visita\n$UNWATCHURL\n\nMás ayuda y sofitu:\n$HELPPAGE",
+       "enotif_minoredit": "Esta ye una edición menor",
        "created": "creada",
        "changed": "camudada",
        "deletepage": "Esborrar páxina",
        "import-nonewrevisions": "Nun s'importó denguna revision (o yá taben toes presentes, o se saltaron por errores).",
        "xml-error-string": "$1 na llinia $2, col $3 (byte $4): $5",
        "import-upload": "Xubir datos XML",
-       "import-token-mismatch": "Perda de datos de la sesión.\n\nSeique zarróse la sesión. <strong>Comprueba si tienes abierta la sesión y vuelve a intentalo</strong>.\nSi inda nun funcionara, tenta [[Special:UserLogout|colar]] y volver a aniciar sesión y comprueba que'l restolador permite les cookies d'esti sitiu.",
+       "import-token-mismatch": "Perda de datos de la sesión.\n\nSeique zarróse la sesión. '''Comprueba si tienes abierta la sesión y tenta nuevamente'''.\nSi entá nun funciona, tenta [[Special:UserLogout|colar]] y volver a aniciar sesión y comprueba que'l restolador permite les cookies d'esti sitiu.",
        "import-invalid-interwiki": "Nun se puede importar d'esi wiki.",
        "import-error-edit": "La páxina «$1» nun s'importó porque nun tienes permisu pa editala.",
        "import-error-create": "La páxina «$1» nun s'importó porque nun tienes permisu pa creala.",
        "fileduplicatesearch-noresults": "Nun s'alcontró dengún ficheru nomáu «$1».",
        "specialpages": "Páxines especiales",
        "specialpages-note-top": "Lleenda",
+       "specialpages-note-restricted": "* Páxines especiales normales.\n* <span class=\"mw-specialpagerestricted\">Páxines especiales restrinxíes.</span>",
        "specialpages-group-maintenance": "Informes de mantenimientu",
        "specialpages-group-other": "Otres páxines especiales",
        "specialpages-group-login": "Entrar / crear cuenta",
        "compare-invalid-title": "El títulu que conseñasti nun ye válidu.",
        "compare-title-not-exists": "El títulu que conseñasti nun esiste.",
        "compare-revision-not-exists": "La revisión que conseñasti nun esiste.",
-       "diff-form": "un '''formulariu'''",
+       "diff-form": "Diferencies",
+       "diff-form-oldid": "Antiguu identificador de revisión (opcional)",
+       "diff-form-revid": "Identificador de revisión de la diferencia",
+       "diff-form-submit": "Amosar les diferencies",
+       "permanentlink": "Enllaz permanente",
+       "permanentlink-revid": "ID de la revisión",
+       "permanentlink-submit": "Dir a la revisión",
        "dberr-problems": "¡Sentímoslo! Esti sitiu ta esperimentando dificultaes téuniques.",
        "dberr-again": "Tenta esperar dellos minutos y recargar.",
        "dberr-info": "(Nun se pue entrar na base de datos: $1)",
index a74d7b6..f74f325 100644 (file)
        "apisandbox-alert-field": "Был ҡыр дәүмәле ярамай.",
        "apisandbox-continue": "Дауам итергә",
        "apisandbox-continue-clear": "Таҙартыу",
+       "apisandbox-multivalue-all-namespaces": "$1 (Барлыҡ исемдәр яланы)",
+       "apisandbox-multivalue-all-values": "$1 (барлыҡ мәғәнәләр)",
        "booksources": "Китап сығанаҡтары",
        "booksources-search-legend": "Китап сығанаҡтарын эҙлә",
        "booksources-search": "Эҙләү",
        "booksources-text": "Түбәндәге исемлектә — китаптар һатыу менән шөғөлләнеүсе сайттарға һәм китапханаларҙың эҙләү системаларына һылтанмалар, һәм уларҙа һеҙ эҙләгән китаптар тураһында өҫтәмә мәғлүмәт булыуы мөмкин.",
        "booksources-invalid-isbn": "Күрһәтелгән ISBN номерҙа хата булырға тейеш. Зинһар, номерҙы сығанаҡтан дөрөҫ күсереүегеҙҙе тикшерегеҙ.",
+       "magiclink-tracking-rfc": "RFC һылтанмаһы булған биттәр",
+       "magiclink-tracking-rfc-desc": "Был бит RFC һылтанмаһын ҡуллана. Ҡара [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] - нисек күсереү тураһында.",
+       "magiclink-tracking-pmid": "PMID серле һылтанмаһын ҡулланған биттәр",
+       "magiclink-tracking-pmid-desc": "Был бит PMID серле һылтанмаһын ҡуллана. Ҡара [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] нисек күсереү тураһында.",
+       "magiclink-tracking-isbn": "ISBN серле һылтанмаһын ҡулланған биттәр",
        "specialloguserlabel": "Башҡарыусы:",
        "speciallogtitlelabel": "Маҡсат (исем йәки ҡулланыусы {{ns:user}}):",
        "log": "Журналдар",
        "compare-invalid-title": "Керетелгән исем дөрөҫ түгел.",
        "compare-title-not-exists": "Һеҙ күрһәткән исем юҡ.",
        "compare-revision-not-exists": "Һеҙ күрһәткән версия юҡ.",
-       "diff-form": "'''форма'''",
+       "diff-form": "Айырмалар",
        "dberr-problems": "Ғәфү итегеҙ! Был сайтта техник ҡыйынлыҡтар тыуҙы.",
        "dberr-again": "Битте бер нисә минуттан яңыртып ҡарағыҙ.",
        "dberr-info": "(Мәғлүмәттәр базаһы серверы менән тоташтырылып булмай: $1)",
index bfeb4f8..7927eb9 100644 (file)
@@ -53,6 +53,7 @@
        "tog-watchlisthideminor": "Хаваць дробныя праўкі ў сьпісе назіраньня",
        "tog-watchlisthideliu": "Хаваць праўкі зарэгістраваных удзельнікаў у сьпісе назіраньня",
        "tog-watchlistreloadautomatically": "Аўтаматычна перазагружаць сьпіс назіраньня пры зьмене фільтру (патрэбны JavaScript)",
+       "tog-watchlistunwatchlinks": "Дадаць спасылкі «назіраць/не назіраць» да элемэнтаў сьпісу назіраньня (патрабуецца JavaScript для актывацыі функцыі)",
        "tog-watchlisthideanons": "Хаваць праўкі ананімаў у сьпісе назіраньня",
        "tog-watchlisthidepatrolled": "Хаваць патруляваныя праўкі ў сьпісе назіраньня",
        "tog-watchlisthidecategorization": "Хаваць катэгарызацыю старонак",
        "rcfilters-view-return-to-default-tooltip": "Вярнуцца да галоўнага мэню фільтраў",
        "rcfilters-liveupdates-button": "Імгненныя абнаўленьні",
        "rcfilters-liveupdates-button-title-on": "Адключыць аўтаматычнае абнаўленьне",
+       "rcfilters-liveupdates-button-title-off": "Паказваць новыя зьмены як толькі яны адбываюцца",
        "rcnotefrom": "Ніжэй {{PLURAL:$5|знаходзіцца зьмена|знаходзяцца зьмены}} з <strong>$4 $3</strong> (да <strong>$1</strong> на старонку).",
        "rclistfromreset": "Скінуць выбар даты",
        "rclistfrom": "Паказаць зьмены з $2 $3",
        "compare-invalid-title": "Пазначаная няслушная назва.",
        "compare-title-not-exists": "Пазначаная старонка не існуе.",
        "compare-revision-not-exists": "Пазначаная вэрсія не існуе.",
-       "diff-form": "'''форма'''",
+       "diff-form": "Адрозьненьні",
        "dberr-problems": "Прабачце! На гэтым сайце ўзьніклі тэхнічныя цяжкасьці.",
        "dberr-again": "Паспрабуйце пачакаць некалькі хвілінаў і абнавіць.",
        "dberr-info": "(Немагчыма злучыцца з базай зьвестак: $1)",
index e89516b..d45d38e 100644 (file)
        "compare-title-not-exists": "আপনার কাঙ্ক্ষিত শিরোনামটি নেই।",
        "compare-revision-not-exists": "আপনার কাঙ্ক্ষিত সংস্করণটি নেই।",
        "diff-form": "একটি '''ফরম'''",
+       "permanentlink-submit": "এই সংশোধনে যান",
        "dberr-problems": " দুঃখিত! এই সাইটটি বর্তমানে কারীগরী অসুবিধার মুখোমুখি হয়েছে।",
        "dberr-again": "কয়েক মিনিট পর পুনরায় পরিদর্শনের চেষ্টা করুন।",
        "dberr-info": "(ডেটাবেজ প্রবেশ করা সম্ভব হয়নি: $1)",
index fccc44f..ac75826 100644 (file)
@@ -73,6 +73,7 @@
        "tog-watchlisthideminor": "Na seznamu sledovaných stránek skrýt malé editace",
        "tog-watchlisthideliu": "Na seznamu sledovaných stránek skrýt editace přihlášených uživatelů",
        "tog-watchlistreloadautomatically": "Při změně filtru automaticky aktualizovat seznam sledovaných stránek (vyžaduje JavaScript)",
+       "tog-watchlistunwatchlinks": "K položkám sledovaných stránek přidat odkazy pro sledování/nesledování (rychlé přepnutí vyžaduje JavaScript)",
        "tog-watchlisthideanons": "Na seznamu sledovaných stránek skrýt editace nepřihlášených uživatelů",
        "tog-watchlisthidepatrolled": "Skrýt prověřené editace ve sledovaných stránkách",
        "tog-watchlisthidecategorization": "Skrýt kategorizaci stránek",
        "permissionserrorstext-withaction": "Z {{PLURAL:$1|následujícího důvodu|následujících důvodů}} nemáte oprávnění $2:",
        "contentmodelediterror": "Tuto revizi nemůžete editovat, protože model jejího obsahu je <code>$1</code>, což se liší od aktuálního modelu obsahu této stránky, kterým je <code>$2</code>.",
        "recreate-moveddeleted-warn": "'''Upozornění: Pokoušíte se znovuzaložit stránku, která byla v minulosti smazána.'''\n\nZvažte, zda je vhodné v editaci této stránky pokračovat.\nNíže vidíte soupis přesunů a smazání této stránky:",
-       "moveddeleted-notice": "Tato stránka byla smazána.\nPodrobnosti si můžete prohlédnout v níže zobrazeném seznamu provedených přesunů a smazání této stránky.",
-       "moveddeleted-notice-recent": "Omlouváme se, ale tato stránka byla nedávno (v posledních 24 hodinách) smazána. Pro úplnost je níže zobrazen soupis přesunů a smazání této stránky.",
+       "moveddeleted-notice": "Tato stránka byla smazána.\nPodrobnosti si můžete prohlédnout v níže zobrazeném seznamu provedených smazání, zamčení a přesunů této stránky.",
+       "moveddeleted-notice-recent": "Omlouváme se, ale tato stránka byla nedávno (v posledních 24 hodinách) smazána. Pro úplnost je níže zobrazen soupis smazání, zamčení a přesunů této stránky.",
        "log-fulllog": "Zobrazit všechny záznamy",
        "edit-hook-aborted": "Editace byla bez bližšího vysvětlení zrušena přípojným bodem.",
        "edit-gone-missing": "Stránku se nepodařilo aktualizovat.\nZřejmě byla smazána.",
        "recentchanges-submit": "Zobrazit",
        "rcfilters-legend-heading": "<strong>Seznam zkratek:</strong>",
        "rcfilters-group-results-by-page": "Seskupit výsledky podle stránky",
+       "rcfilters-grouping-title": "Seskupování",
        "rcfilters-activefilters": "Aktivní filtry",
        "rcfilters-advancedfilters": "Pokročilé filtry",
        "rcfilters-limit-title": "Zobrazit změny",
        "rcfilters-restore-default-filters": "Obnovit výchozí filtry",
        "rcfilters-clear-all-filters": "Zrušit všechny filtry",
        "rcfilters-show-new-changes": "Zobrazit nejnovější změny",
+       "rcfilters-previous-changes-label": "Dříve prohlédnuté změny",
        "rcfilters-search-placeholder": "Filtrovat nedávné změny (prohlížejte nebo začněte psát)",
        "rcfilters-invalid-filter": "Neplatný filtr",
        "rcfilters-empty-filter": "Žádné aktivní filtry. Zobrazeny jsou všechny příspěvky.",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:ne</strong> $1",
        "rcfilters-exclude-button-off": "Vynechat vybrané",
        "rcfilters-exclude-button-on": "Vybrané vynechány",
+       "rcfilters-view-advanced-filters-label": "Pokročilé filtry",
        "rcfilters-view-tags": "Označené editace",
        "rcfilters-view-namespaces-tooltip": "Filtrovat výsledky podle jmenného prostoru",
        "rcfilters-view-tags-tooltip": "Filtrovat výsledky pomocí značek editací",
        "rcfilters-view-return-to-default-tooltip": "Vrátit se do hlavního filtrovacího menu",
        "rcfilters-liveupdates-button": "Živé aktualizace",
+       "rcfilters-liveupdates-button-title-on": "Vypnout živé aktualizace",
+       "rcfilters-liveupdates-button-title-off": "Zobrazovat nové změny, jakmile jsou zveřejněny",
        "rcnotefrom": "Níže {{PLURAL:$5|je změna|jsou změny}} od <strong>$3, $4</strong> ({{PLURAL:$1|zobrazena|zobrazeny|zobrazeno}} nejvýše <strong>$1</strong>).",
        "rclistfromreset": "Obnovit výběr data",
        "rclistfrom": "Ukázat nové změny, počínaje od $2, $3",
        "compare-invalid-title": "Zadaný název je neplatný.",
        "compare-title-not-exists": "Zadaný název neexistuje.",
        "compare-revision-not-exists": "Zadaná revize neexistuje.",
-       "diff-form": "'''formulář'''",
+       "diff-form": "Rozdíly",
+       "diff-form-oldid": "ID staré revize (nepovinné)",
+       "diff-form-submit": "Zobrazit rozdíly",
+       "permanentlink": "Trvalý odkaz",
+       "permanentlink-revid": "ID revize",
+       "permanentlink-submit": "Přejít na revizi",
        "dberr-problems": "Promiňte! Tento server má v tuto chvíli technické problémy.",
        "dberr-again": "Zkuste několik minut počkat a poté znovu načíst stránku.",
        "dberr-info": "(Nelze se připojit k databázi: $1)",
index ac6f32f..7e85931 100644 (file)
        "tog-watchlisthideminor": "Kleine Bearbeitungen in der Beobachtungsliste ausblenden",
        "tog-watchlisthideliu": "Bearbeitungen angemeldeter Benutzer in der Beobachtungsliste ausblenden",
        "tog-watchlistreloadautomatically": "Sofern ein Filter geändert wurde, die Beobachtungsliste automatisch neu laden (erfordert JavaScript)",
+       "tog-watchlistunwatchlinks": "Direkte Links zum (Ent-)Beobachten bei Einträgen in der Beobachtungsliste hinzufügen (für diese Funktion ist JavaScript erforderlich)",
        "tog-watchlisthideanons": "Bearbeitungen anonymer Benutzer (IP-Adressen) in der Beobachtungsliste ausblenden",
        "tog-watchlisthidepatrolled": "Kontrollierte Änderungen in der Beobachtungsliste ausblenden",
        "tog-watchlisthidecategorization": "Kategorisierungen von Seiten in der Beobachtungsliste ausblenden",
        "watching": "Beobachten …",
        "unwatching": "Nicht mehr beobachten …",
        "watcherrortext": "Beim Ändern der Beobachtungslisteneinstellungen für „$1“ ist ein Fehler aufgetreten.",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "Alle Seiten als besucht markieren",
        "enotif_impersonal_salutation": "{{SITENAME}}-Benutzer",
        "enotif_subject_deleted": "{{SITENAME}}-Seite $1 wurde von {{GENDER:$2|$2}} gelöscht",
        "compare-invalid-title": "Der angegebene Seitenname ist ungültig.",
        "compare-title-not-exists": "Der angegebene Seitenname ist nicht vorhanden.",
        "compare-revision-not-exists": "Die angegebene Version ist nicht vorhanden.",
-       "diff-form": "ein '''Formular'''",
+       "diff-form": "Unterschiede",
+       "diff-form-oldid": "Alte Versionskennung (optional)",
        "diff-form-revid": "Versionskennung des Unterschieds",
        "diff-form-submit": "Unterschiede anzeigen",
        "permanentlink": "Permanenter Link",
        "permanentlink-revid": "Versionskennung",
+       "permanentlink-submit": "Gehe zu Version",
        "dberr-problems": "Entschuldigung. Diese Seite hat momentan technische Schwierigkeiten.",
        "dberr-again": "Warte einige Minuten und versuche dann neu zu laden.",
        "dberr-info": "(Auf die Datenbank konnte nicht zugegriffen werden: $1)",
index ad4e423..720a059 100644 (file)
@@ -53,7 +53,8 @@
                        "GR",
                        "Thodoris",
                        "Ftsalamp",
-                       "Kostas20142"
+                       "Kostas20142",
+                       "Nikosgranturismogt"
                ]
        },
        "tog-underline": "Υπογράμμιση συνδέσμων:",
        "prefs-labs": "Λειτουργίες των Labs",
        "prefs-user-pages": "Σελίδες του χρήστη",
        "prefs-personal": "Στοιχεία χρήστη",
-       "prefs-rc": "Πρόσφατες αλλαγές και εμφάνιση πολύ σύντομων άρθρων",
+       "prefs-rc": "Πρόσφατες αλλαγές",
        "prefs-watchlist": "Λίστα παρακολούθησης",
        "prefs-editwatchlist": "Επεξεργασία λίστας παρακολούθησης",
        "prefs-editwatchlist-label": "Επεξεργασία καταχωρίσεων στη λίστα παρακολούθησής σας:",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "Προβολή",
        "rcfilters-activefilters": "Ενεργά φίλτρα",
+       "rcfilters-advancedfilters": "Σύνθετα Φίλτρα",
+       "rcfilters-limit-title": "Αλλαγές για εμφάνιση",
+       "rcfilters-days-title": "Πρόσφατες ημέρες",
+       "rcfilters-hours-title": "Πρόσφατες ώρες",
+       "rcfilters-days-show-days": "$1 {{PLURAL:$1|μέρα|μέρες}}",
+       "rcfilters-days-show-hours": "$1 {{PLURAL:$1|ώρα|ώρες}}",
+       "rcfilters-quickfilters": "Αποθηκευμένα φίλτρα",
        "rcfilters-savedqueries-rename": "Μετονομασία",
        "rcfilters-savedqueries-setdefault": "Ορισμός ως προεπιλογή",
+       "rcfilters-savedqueries-remove": "Αφαίρεση",
+       "rcfilters-savedqueries-new-name-label": "Όνομα",
        "rcfilters-restore-default-filters": "Επαναφορά προεπιλεγμένων φίλτρων",
        "rcfilters-clear-all-filters": "Εκκαθάριση όλων των φίλτρων",
        "rcfilters-search-placeholder": "Φιλτράρισμα πρόσφατων αλλαγών (περιηγηθείτε ή αρχίστε να πληκτρολογείτε)",
        "compare-invalid-title": "Ο τίτλος που καθορίσατε δεν είναι έγκυρος.",
        "compare-title-not-exists": "Ο τίτλος που καθορίσατε δεν υπάρχει.",
        "compare-revision-not-exists": "Η αναθεώρηση που καθορίσατε δεν υπάρχει.",
+       "diff-form": "μια '''φόρμα'''",
        "dberr-problems": "Λυπούμαστε! Αυτός ο ιστότοπος αντιμετωπίζει τεχνικές δυσκολίες.",
        "dberr-again": "Δοκιμάστε να περιμενένετε λίγα λεπτά και να ανανεώσετε.",
        "dberr-info": "(Δεν είναι δυνατή η πρόσβαση στη βάση δεδομένων: $1)",
index 86ac78e..d7a3aeb 100644 (file)
@@ -37,6 +37,7 @@
        "tog-watchlisthideminor": "Hide minor edits from the watchlist",
        "tog-watchlisthideliu": "Hide edits by logged in users from the watchlist",
        "tog-watchlistreloadautomatically": "Reload the watchlist automatically whenever a filter is changed (JavaScript required)",
+       "tog-watchlistunwatchlinks": "Add direct unwatch/watch links to watchlist entries (JavaScript required for toggle functionality)",
        "tog-watchlisthideanons": "Hide edits by anonymous users from the watchlist",
        "tog-watchlisthidepatrolled": "Hide patrolled edits from the watchlist",
        "tog-watchlisthidecategorization": "Hide categorization of pages",
        "watching": "Watching...",
        "unwatching": "Unwatching...",
        "watcherrortext": "An error occurred while changing your watchlist settings for \"$1\".",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "Mark all pages visited",
        "enotif_impersonal_salutation": "{{SITENAME}} user",
        "enotif_subject_deleted": "{{SITENAME}} page $1 has been {{GENDER:$2|deleted}} by $2",
index 0a200d3..1afd0c0 100644 (file)
        "permissionserrorstext-withaction": "شما اجازهٔ $2 را به این {{PLURAL:$1|دلیل|دلایل}} ندارید:",
        "contentmodelediterror": "امکان ویرایش این نسخه برای شما نیست چون نوع محتوای آن <code>$1</code> است که متفاوت است با نوع محتوای کنونی صفحه <code>$2</code> است.",
        "recreate-moveddeleted-warn": "<strong>هشدار: شما در حال ایجاد صفحه‌ای هستید که قبلاً حذف شده‌است.</strong>\n\nدر نظر داشته باشید که آیا ادامهٔ ویرایش این صفحه کار درستی‌است یا نه.\nسیاههٔ حذف و انتقال این صفحه در زیر نشان داده شده‌است:",
-       "moveddeleted-notice": "این صفحه حذف شده‌است.\nدر زیر سیاههٔ حذف و انتقال این صفحه نمایش داده شده‌است.",
-       "moveddeleted-notice-recent": "متاسفانه صفحه قبلا حذف شده‌است (در ۲۴ ساعت اخیر) \nدلیل حذف و سیاههٔ انتقال در پائین موجود است.",
+       "moveddeleted-notice": "این صفحه حذف شده‌است.\nدر زیر سیاههٔ حذف، محافظت، و انتقال این صفحه نمایش داده شده‌است.",
+       "moveddeleted-notice-recent": "متاسفانه صفحه قبلا حذف شده‌است (در ۲۴ ساعت اخیر) \nدلیل حذف و سیاههٔ انتقال، و حفاظت در پائین موجود است.",
        "log-fulllog": "مشاهدهٔ سیاههٔ کامل",
        "edit-hook-aborted": "ویرایش توسط قلاب لغو شد.\nتوضیحی در این مورد داده نشد.",
        "edit-gone-missing": "امکان به‌روز کردن صفحه وجود ندارد.\nبه نظرمی‌رسد که صفحه حذف شده باشد.",
        "delete-warning-toobig": "این صفحه تاریخچهٔ ویرایشی بزرگی دارد، که شامل بیش از $1 {{PLURAL:$1|نسخه|نسخه}} است.\nحذف آن ممکن است که عملکرد پایگاه دادهٔ {{SITENAME}} را مختل کند;\nبا احتیاط ادامه دهید.",
        "deleteprotected": "شما نمی‌توانید این صفحه را پاک کنید چون که از آن محافظت شده‌است.",
        "deleting-backlinks-warning": "<strong>هشدار:</strong> [[Special:WhatLinksHere/{{FULLPAGENAME}}|صفحه‌های دیگری]] هستند که به صفحه‌ای که شما در حال حذف آن هستید پیوند دارند یا آن را تراگنجانیده‌اند.",
+       "deleting-subpages-warning": "<strong>هشدار:</strong> صفحه‌ای که شما می‌خواهید حذف کنید [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|یک زیرصفحه|$1 زیرصفحه|51=بیش از پنجاه زیرصفحه}}]] دارد.",
        "rollback": "واگردانی ویرایش‌ها",
        "rollbacklink": "واگردانی",
        "rollbacklinkcount": "واگردانی $1 ویرایش",
        "compare-invalid-title": "عنوان تعیین‌شده نامعتبر است.",
        "compare-title-not-exists": "عنوان مشخص شده وجود ندارد.",
        "compare-revision-not-exists": "پالایهٔ مشخص شده وجود ندارد.",
-       "diff-form": "یک '''فرم'''",
+       "diff-form": "تفاوت‌ها",
+       "diff-form-oldid": "شماره نسخه قدیمی (اختیاری)",
+       "diff-form-revid": "شماره نسخه تفاوت",
+       "diff-form-submit": "نمایش تفاوت",
+       "permanentlink": "پیوند پایدار",
+       "permanentlink-revid": "شماره نسخه",
+       "permanentlink-submit": "برو به نسخه",
        "dberr-problems": "شرمنده! این تارنما از مشکلات فنی رنج می‌برد.",
        "dberr-again": "چند دقیقه صبر کنید و دوباره صفحه را بارگیری کنید.",
        "dberr-info": "(امکان برقراری ارتباط با پایگاه داده وجود ندارد: $1)",
index 4e25cc5..9ae9161 100644 (file)
@@ -54,7 +54,8 @@
                        "BiscuitMan",
                        "Alluk.",
                        "Tumm1",
-                       "4shadoww"
+                       "4shadoww",
+                       "Pahkiqaz"
                ]
        },
        "tog-underline": "Linkkien alleviivaus:",
        "contentmodelediterror": "Et voi muokata tätä versiota, koska sen sisältömalli on <code>$1</code> ja tämä poikkeaa sivun nykyisestä sisältömallista, joka on <code>$2</code>.",
        "recreate-moveddeleted-warn": "'''Varoitus: Olet luomassa sellaista sivua, joka on aikaisemmin poistettu.'''\n\nHarkitse, kannattaako tätä sivua luoda uudelleen. \nAlla on tämän sivun poisto- ja siirtohistoria:",
        "moveddeleted-notice": "Tämä sivu on poistettu. \nAlla on sivun poisto-, suojaus- ja siirtohistoria.",
-       "moveddeleted-notice-recent": "Valitettavasti tämä sivu on poistettu aivan äskettäin (viimeisen 24 tunnin aikana).\nAlla on sivun poisto-, suojaus- ja siirtohistoria.",
+       "moveddeleted-notice-recent": "Valitettavasti tämä sivu on poistettu äskettäin (viimeisen 24 tunnin aikana).\nAlla on sivun poisto-, suojaus- ja siirtohistoria.",
        "log-fulllog": "Näytä loki kokonaan",
        "edit-hook-aborted": "Laajennuskoodi esti muokkauksen antamatta syytä.",
        "edit-gone-missing": "Sivun päivitys ei onnistunut.\nSe on ilmeisesti poistettu.",
        "recentchanges-submit": "Näytä",
        "rcfilters-legend-heading": "<strong>Luettelo lyhenteistä:</strong>",
        "rcfilters-other-review-tools": "<strong>Muut arviointityökalut</strong>",
+       "rcfilters-group-results-by-page": "Ryhmitä tulokset sivujen mukaan",
+       "rcfilters-grouping-title": "Ryhmitys",
        "rcfilters-activefilters": "Aktiiviset suodattimet",
        "rcfilters-limit-title": "Näytettävät muutokset",
-       "rcfilters-limit-shownum": "Näytä {{PLURAL:$1|viimeisin muutos|viimeisintä $1 muutosta}}",
+       "rcfilters-limit-shownum": "Näytä {{PLURAL:$1|viimeisin muutos|$1 viimeisintä muutosta}}",
        "rcfilters-days-title": "Viimeisimmät päivät",
        "rcfilters-hours-title": "Viimeisimmät tunnit",
        "rcfilters-days-show-days": "$1 {{PLURAL:$1|päivä|päivää}}",
        "rcfilters-savedqueries-defaultlabel": "Tallennetut suodattimet",
        "rcfilters-savedqueries-rename": "Nimeä uudelleen",
        "rcfilters-savedqueries-setdefault": "Aseta oletukseksi",
-       "rcfilters-savedqueries-unsetdefault": "Poista oletus",
+       "rcfilters-savedqueries-unsetdefault": "Poista oletuksena",
        "rcfilters-savedqueries-remove": "Poista",
        "rcfilters-savedqueries-new-name-label": "Nimi",
        "rcfilters-savedqueries-apply-label": "Luo suodatin",
        "compare-invalid-title": "Antamasi sivun nimi on virheellinen.",
        "compare-title-not-exists": "Määrittämääsi sivua ei ole.",
        "compare-revision-not-exists": "Määrittämääsi versiota ei ole.",
-       "diff-form": "'''lomake'''",
+       "diff-form": "Eroavaisuudet",
        "dberr-problems": "Tällä sivustolla on teknisiä ongelmia.",
        "dberr-again": "Odota hetki ja lataa sivu uudelleen.",
        "dberr-info": "(Tietokantaan ei saada yhteyttä: $1)",
index 01feb9d..0f95c8c 100644 (file)
        "tog-watchlisthideminor": "Masquer les modifications mineures dans la liste de suivi",
        "tog-watchlisthideliu": "Masquer les modifications faites par des utilisateurs inscrits dans la liste de suivi",
        "tog-watchlistreloadautomatically": "Recharger automatiquement la liste de suivi lorsque les options de filtrage sont modifiées (JavaScript requis)",
+       "tog-watchlistunwatchlinks": "Ajouter des liens directs de suivi/non suivi pour les entrées de la liste de suivi (JavaScript est nécessaire pour la fonctionnalité de bascule)",
        "tog-watchlisthideanons": "Masquer les modifications d’utilisateurs anonymes dans la liste de suivi",
        "tog-watchlisthidepatrolled": "Masquer les modifications relues dans la liste de suivi",
        "tog-watchlisthidecategorization": "Masquer la catégorisation des pages",
        "watching": "Suivi…",
        "unwatching": "Fin du suivi…",
        "watcherrortext": "Une erreur s'est produite lors de la modification des paramètres de votre liste de suivi pour « $1 ».",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "Marquer toutes les pages comme visitées",
        "enotif_impersonal_salutation": "Utilisateur de {{SITENAME}}",
        "enotif_subject_deleted": "La page $1 sur {{SITENAME}} a été {{GENDER:$2|supprimée}} par $2",
        "compare-invalid-title": "Le titre que vous avez spécifié n’est pas valide.",
        "compare-title-not-exists": "Le titre que vous avez spécifié n’existe pas.",
        "compare-revision-not-exists": "La révision que vous avez spécifiée n’existe pas.",
-       "diff-form": "un '''formulaire'''",
+       "diff-form": "Différences",
+       "diff-form-oldid": "ID de l’ancienne révision (facultatif)",
+       "diff-form-revid": "ID de la révision à comparer",
+       "diff-form-submit": "Afficher les différences",
+       "permanentlink": "Lien permanent",
+       "permanentlink-revid": "ID de la révision",
+       "permanentlink-submit": "Aller à la révision",
        "dberr-problems": "Désolé ! Ce site rencontre des difficultés techniques.",
        "dberr-again": "Essayez d'attendre quelques minutes et rechargez.",
        "dberr-info": "(Accès à la base de données impossible : $1)",
index b4cf71f..6b59319 100644 (file)
        "tog-shownumberswatching": "Nochd àireamh nan cleachdaichean a tha a' cumail sùil air",
        "tog-oldsig": "An t-earr-sgrìobhadh làithreach agad:",
        "tog-fancysig": "Làimhsich an t-earr-sgrìobhadh mar wikitext (gun cheangal leis fhèin)",
-       "tog-uselivepreview": "Cleachd an ro-shealladh beò",
+       "tog-uselivepreview": "Seall ro-sheallaidhean gun a bhith ag ath-luchdadh na duilleige",
        "tog-forceeditsummary": "Cuir ceist nuair a dh'fhàgas mi gearr-chunntas an deasachaidh bàn",
        "tog-watchlisthideown": "Falaich mo mhùthaidhean fhèin air mo chlàr-faire",
        "tog-watchlisthidebots": "Falaich mùthaidhean nam bot air mo chlàr-faire",
        "tog-watchlisthideminor": "Falaich mùthaidhean beaga air mo chlàr-faire",
        "tog-watchlisthideliu": "Falaich mùthaidhean le cleachdaichean a tha air logadh a-steach air mo chlàr-faire",
        "tog-watchlistreloadautomatically": "Ath-luchdaich an liosta-fhaire gu fèin-obrachail uair sam bith a thèid criathrag atharrachadh (feum air JavaScript)",
+       "tog-watchlistunwatchlinks": "Cuir ceanglaichean neo-fhaire/faire ri innteartan na liosta-faire (feum airson JavaScript airson a thoglachadh)",
        "tog-watchlisthideanons": "Falaich mùthaidhean le cleachdaichean gun ainm air mo chlàr-faire",
        "tog-watchlisthidepatrolled": "Falaich mùthaidhean air duilleagan fo fhreiceadan air a' chlàr-fhaire agam",
        "tog-watchlisthidecategorization": "Falaich roinnean nan duilleagan",
        "anontalk": "Deasbaireachd",
        "navigation": "Seòladh",
        "and": "&#32;agus",
-       "qbfind": "Lorg",
-       "qbbrowse": "Brabhsaich",
-       "qbedit": "Deasaich",
-       "qbpageoptions": "An duilleag seo",
-       "qbmyoptions": "Na duilleagan agam",
        "faq": "CÀBHA",
-       "faqpage": "Project:CÀBHA",
        "actions": "Gnìomhan",
        "namespaces": "Ainm-spàsan",
        "variants": "Tionndaidhean",
        "edit-local": "Deasaich an tuairisgeul ionadail",
        "create": "Cruthaich",
        "create-local": "Cuir tuairisgeul ionadail ris",
-       "editthispage": "Deasaich an duilleag seo",
-       "create-this-page": "Cruthaich an duilleag seo",
        "delete": "Sguab às",
-       "deletethispage": "Sguab às an duilleag seo",
-       "undeletethispage": "Neo-dhèan sguabadh às na duilleige seo",
        "undelete_short": "Neo-dhèan an sguabadh às air $1 {{PLURAL:$1|deasachadh|dheasachadh|deasachaidhean|deasachadh}}",
        "viewdeleted_short": "Seall $1 {{PLURAL:$1|deasachadh|dheasachadh|deasachaidhean|deasachadh}} a chaidh a sguabadh às",
        "protect": "Dìon",
        "protect_change": "mùth",
-       "protectthispage": "Dìon an duilleag seo",
        "unprotect": "Atharraich an dìon",
-       "unprotectthispage": "Atharraich dìon na duilleige seo",
        "newpage": "Duilleag ùr",
-       "talkpage": "Dèan deasbad mun duilleag seo",
        "talkpagelinktext": "Deasbaireachd",
        "specialpage": "Duilleag shònraichte",
        "personaltools": "Innealan pearsanta",
-       "articlepage": "Seall duilleag na susbainte",
        "talk": "Deasbaireachd",
        "views": "Tadhalan",
        "toolbox": "Innealan",
        "tool-link-userrights": "Atharraich buidhnean nan {{GENDER:$1|cleachdaichean}}",
        "tool-link-userrights-readonly": "Seall buidhnean nan {{GENDER:$1|cleachdaichean}}",
        "tool-link-emailuser": "Cuir post gun {{GENDER:$1|chleachdaiche}} seo",
-       "userpage": "Seall duilleag a' chleachdaiche",
-       "projectpage": "Seall duilleag a' phròiseict",
        "imagepage": "Seall duilleag an fhaidhle",
        "mediawikipage": "Seall duilleag na teachdaireachd",
        "templatepage": "Seall duilleag na teamplaide",
        "redirectedfrom": "(Air ath-sheòladh o $1)",
        "redirectpagesub": "Ath-sheòl an duilleag",
        "redirectto": "Dèan ath-stiùireadh gu:",
-       "lastmodifiedat": "Chaidh an duilleag seo a mhùthadh $1 aig $2 turas mu dheireadh.",
+       "lastmodifiedat": "Chaidh an duilleag seo a dheasachadh $1 aig $2 turas mu dheireadh.",
        "viewcount": "Chaidh inntrigeadh a dhèanamh dhan duilleag seo $1 {{PLURAL:$1|turas|thuras|tursan|turas}}.",
        "protectedpage": "Duilleag fo dhìon",
        "jumpto": "Gearr leum gu:",
        "databaseerror-query": "Ceist: $1",
        "databaseerror-function": "Foincsean: $1",
        "databaseerror-error": "Mearachd: $1",
+       "transaction-duration-limit-exceeded": "Airson replication lag àrd a sheachnadh, sguireadh dhen tar-chur seo nuair a chaidh faid an sgrìobhaidh ($1) seachad air a’ chrìoch dhe $2.",
        "laggedslavemode": "<strong>Rabhadh:</strong> Faodaidh nach eil ùrachaidhean a rinneadh o chionn ghoirid a' nochdadh san duilleag.",
        "readonly": "Stòr-dàta glaiste",
        "enterlockreason": "Cuir a-steach adhbhar a' ghlais, a' gabhail a-steach tuairmeas air fuasgladh a' ghlais.",
        "missingarticle-rev": "(mùthadh#: $1)",
        "missingarticle-diff": "(Diofar: $1, $2)",
        "readonly_lag": "Chaidh an stòr-dàta a ghlasadh leis fhèin fhad 's a tha frithealaichean nan stòr-dàta tràilleach air dheireadh a' mhaighstir",
+       "nonwrite-api-promise-error": "Chaidh am bann-cinn HTTP Promise-Non-Write-API-Action a chur ach is ann do mhòideal sgrìobhadh API a bha an t-iarrtas.",
        "internalerror": "Ion-mhearachd",
        "internalerror_info": "Ion-mhearachd: $1",
        "internalerror-fatal-exception": "Eisgeachd mharbhtach dhen t-seòrsa \"$1\"",
        "no-null-revision": "Cha b' urrainn dhuinn mùthadh neoinitheach ùr a chruthachadh dhan duilleag \"$1\"",
        "badtitle": "Droch thiotal",
        "badtitletext": "Bha an duilleag a dh'iarr thu mì-dhligheach, falamh no le tiotal eadar-chànanach no eadar-uicidh air a dhroch cheangal.\nFaodaidh gu bheil aon no barrachd charactairean ann nach urrainn dhut a chleachdadh ann an tiotalan.",
+       "title-invalid-empty": "Tha an duilleag a chaidh iarraidh falamh no chan eil ann ach ainm namespace.",
+       "title-invalid-utf8": "Tha sreath UTF-8 mì-dhligheach ann an tiotal na duilleige a dh’iarr thu.",
+       "title-invalid-interwiki": "Tha ceangal interwiki ann an tiotal na duilleige a dh’iarr thu nach gabh a chleachdadh ann an tiotalan.",
+       "title-invalid-talk-namespace": "Tha reifreans air duilleag deasbaireachd nach eil ann an an tiotal na duilleige a dh’iarr thu.",
+       "title-invalid-characters": "Tha caractaran mì-dhligheach ann an tiotal na duilleige a dh’iarr thu: “$1”.",
+       "title-invalid-relative": "Tha slighe dhàimheach aig an tiotal. Tha tiotalan dhuilleagan dàimheach (./, ../) mì-dhligheach a chionn ’s nach ruigear iad gu tric nuair a bhios brabhsair a’ chleachdaiche ’gan làimhseachadh.",
+       "title-invalid-magic-tilde": "Tha ceithir tuinn ann an tiotal na duilleige a dh’iarr thu agus chan eil sin dligheachd (<nowiki>~~~</nowiki>).",
+       "title-invalid-too-long": "Tha tiotal na duilleige a dh’iarr thu ro fhada. Chan fhaod e a bhith nas fhaide na $1 {{PLURAL:$1|byte}} ann an còdachadh UTF-8.",
+       "title-invalid-leading-colon": "Tha còilean nach eil ceadaichte aig toiseach na duilleige a dh’iarr thu.",
        "perfcached": "Chaidh an dàta a leanas a thasgadh 's faodaidh gu bheil e air dheireadh. Tha {{PLURAL:$1|$1 toradh|$1 thoradh|$1 toraidhean|$1 toradh}} ri fhaighinn san tasgadan air a' char as motha.",
        "perfcachedts": "Chaidh an dàta a leanas a thasgadh agus chaidh ùrachadh $1 turas mu dheireadh. Tha {{PLURAL:$4|$4 toradh|$4 thoradh|$4 toraidhean|$4 toradh}} ri fhaighinn san tasgadan air a' char as motha.",
        "querypage-no-updates": "Tha ùrachadh air a chur à comas air an duilleag seo an-dràsta.\nCha dèid an dàta an-seo ùrachadh aig an àm seo.",
        "virus-scanfailed": "dh'fhàillig an sganadh (còd $1)",
        "virus-unknownscanner": "sganair bhìorasan neo-aithnichte:",
        "logouttext": "<strong>Chaidh do logadh a-mach.</strong>\n\nThoir an aire gum bi coltas air cuid dhe na duilleagan mar gum biodh tu air logadh a-steach gus am falamhaich thu tasgadan a' bhrabhsair agad.",
+       "cannotlogoutnow-title": "Cha ghabh clàradh a-mach an-dràsta fhèin",
+       "cannotlogoutnow-text": "Chan ghabh clàradh a-mach nuair a chleachdar $1.",
        "welcomeuser": "Fàilte ort, $1",
        "welcomecreation-msg": "Chaidh an cunntas agad a chruthachadh.\nNa dìochuimhnich na [[Special:Preferences|roghainnean agad air {{SITENAME}}]] a ghleusadh dhut fhèin.",
        "yourname": "Ainm-cleachdaiche:",
        "createacct-yourpasswordagain-ph": "Cuir a-steach am facal-faire a-rithist",
        "userlogin-remembermypassword": "Cum air logadh a-steach mi",
        "userlogin-signwithsecure": "Cleachd ceangal tèarainte",
+       "cannotlogin-title": "Cha ghabh clàradh a-steach",
+       "cannotlogin-text": "Cha ghabh clàradh a-steach.",
+       "cannotloginnow-title": "Cha ghabh clàradh a-steach an-dràsta fhèin",
+       "cannotloginnow-text": "Chan ghabh clàradh a-steachnuair a chleachdar $1.",
+       "cannotcreateaccount-title": "Cha ghabh na cunntasan a chruthachadh",
+       "cannotcreateaccount-text": "Chan eil cruthachadh dìreach de chunntasan an comas air an uici seo.",
        "yourdomainname": "An àrainn-lìn agad:",
        "password-change-forbidden": "Chan urrainn dhut faclan-faire atharrachadh air an uicipeid seo.",
        "externaldberror": "Thachair mearachd le dearbhadh an stòir-dhàta air neo chan eil cead agad an cunntas agad air an taobh a-muigh ùrachadh.",
        "login": "Log a-steach",
+       "login-security": "Dearbh cò thusa",
        "nav-login-createaccount": "Log a-steach / cruthaich cunntas",
        "logout": "Log a-mach",
        "userlogout": "Log a-mach",
        "userlogin-resetpassword-link": "Na dhìochuimhnich thu am facal-faire agad?",
        "userlogin-helplink2": "Taic le logadh a-steach",
        "userlogin-loggedin": "Chaidh do logadh a-steach mar $1 mu thràth.\nCleachd am foirm gu h-ìosal airson logadh a-steach mar chleachdaiche eile.",
+       "userlogin-reauth": "Feumaidh tu clàradh a-steach às ùr a dhearbhadh gur tusa $1.",
        "userlogin-createanother": "Cruthaich cunntas eile",
        "createacct-emailrequired": "Seòladh puist-d",
        "createacct-emailoptional": "Seòladh puist-d (roghainneil)",
        "createacct-email-ph": "Cuir a-steach an seòladh puist-d agad",
        "createacct-another-email-ph": "Cuir a-steach seòladh puist-d",
        "createaccountmail": "Cleachd facal-faire sealach air thuaiream agus cuir e dhan phost-d a tha 'ga shònrachadh gu h-ìosal",
+       "createaccountmail-help": "Gabhaidh seo a chleachdadh airson cunntas a chruthachadh do neach eile gun fhiosta dè am facal-faire.",
        "createacct-realname": "Fìor-ainm (roghainneil)",
        "createacct-reason": "Adhbhar",
        "createacct-reason-ph": "Carson a tha thu a' cruthachadh cunntas eile?",
+       "createacct-reason-help": "An teachdaireachd a thèid a shealltainn ann an loga cruthachadh a’ chunntais",
        "createacct-submit": "Cruthaich an cunntas agad",
        "createacct-another-submit": "Cruthaich cunntas",
+       "createacct-continue-submit": "Lean air cruthachadh a’ chunntais",
+       "createacct-another-continue-submit": "Lean air cruthachadh a’ chunntais",
        "createacct-benefit-heading": "Tha {{SITENAME}} 'ga chruthachadh le daoine mar thu fhèin.",
        "createacct-benefit-body1": "{{PLURAL:$1|deasachadh|deasachaidhean}}",
        "createacct-benefit-body2": "{{PLURAL:$1|duilleag|duilleagan}}",
        "createacct-benefit-body3": "{{PLURAL:$1|deasaiche|deasaichean}} o chionn goirid",
        "badretype": "Chan eil an dà fhacal-faire a chuir thu a-steach a' freagairt ri chèile.",
+       "usernameinprogress": "Tha cunntas eile ’ga chruthachadh dhan ainm-chleachdaiche seo mu thràth. Fuirich ort.",
        "userexists": "Tha an t-ainm-cleachdaiche a chuir thu a-steach 'ga chleachdadh mu thràth.\nNach tagh thu ainm eile?",
        "loginerror": "Mearachd log a-steach",
        "createacct-error": "Mearachd le cruthachadh a' chunntais",
        "nocookieslogin": "Tha {{SITENAME}} a' cleachdadh briosgaidean gus daoine a logadh a-steach.\nChuir thu briosgaidean à comas.\nCuir an comas iad is feuch ris a-rithist.",
        "nocookiesfornew": "Cha deach an cunntas a chruthachadh oir cha b' urrainn dhuinn a thùs a dhearbhadh.\nDèan cinnteach gu bheil briosgaidean an comas, ath-luchdaich an duilleag seo 's feuch ris a-rithist.",
        "nocookiesforlogin": "{{int:nocookieslogin}}",
+       "createacct-loginerror": "Chaidh an cunntas a chruthachadh ach cha b’ urrainn dhuinn do chlàradh a-steach gu fèin-obrachail. Dèan [[Special:UserLogin|clàradh a-steach de làimh]].",
        "noname": "Cha do thagh thu ainm-cleachdaiche dligheach.",
        "loginsuccesstitle": "Rinn thu logadh a-steach",
        "loginsuccess": "<strong>Rinn thu logadh a-steach air {{SITENAME}} mar \"$1\".</strong>",
        "wrongpassword": "Chuir thu a-steach facal-faire cearr.\nAm feuch thu ris a-rithist?",
        "wrongpasswordempty": "Cha do chuir thu a-steach facal-faire.\nFeuch ris a-rithist.",
        "passwordtooshort": "Feumaidh faclan-faire a bhith {{PLURAL:$1|$1 charactar|$1 charactar|$1 caractaran|$1 caractar}} a dh'fhaid air a' char as lugha.",
+       "passwordtoolong": "Chan fhaod faclan-faire a bhith nas fhaide na {{PLURAL:$1|1 charactar|$1 charactar|$1 caractaran|$1 caractar}}.",
+       "passwordtoopopular": "Chan fhaodar faclan-faire cumanta a chleachdadh. Tagh rudeigin nach eil cho cumanta.",
        "password-name-match": "Chan fhaod am facal-faire 's an t-ainm-cleachdaiche agad a bhith co-ionnann.",
        "password-login-forbidden": "Tha an t-ainm-cleachdaiche 's am facal-faire seo toirmisgte.",
        "mailmypassword": "Ath-shuidhich am facal-faire",
        "createacct-another-realname-tip": "Cha leig thu leas innse dè am fìor-ainm a tha ort.\nMa bheir thu seachad e, thèid seo a chleachdadh gus urram a thoirt dha na h-ùghdaran airson an cuid obrach.",
        "pt-login": "Log a-steach",
        "pt-login-button": "Log a-steach",
+       "pt-login-continue-button": "Lean air a’ chlàradh a-steach",
        "pt-createaccount": "Cruthaich cunntas",
        "pt-userlogout": "Log a-mach",
        "php-mail-error-unknown": "Mearachd neo-aithichte san fheart mail() aig PHP.",
        "resetpass_submit": "Suidhich am facal-faire 's dèan logadh a-steach",
        "changepassword-success": "Chaidh am facal-faire agad atharrachadh!",
        "changepassword-throttled": "Dh'fheuch thu ri logadh a-steach ro thric o chionn ghoirid.\nFuirich ort $1 mus feuch thu ris a-rithist.",
+       "botpasswords": "Faclan-faire bots",
+       "botpasswords-summary": "Bheir <em>faclan-faire bots</em> cothrom air cunntas cleachdaiche slighe an API gun a bhith a’ cleachdadh prìomh theisteas a’ chunntais. Dh’fhaoidte gum bi na còraichean cleachdaiche cuingichte nuair a thathar clàraichte a-staigh air facal-faire bot.\n\nMur eil fhios agad carson a dhèanadh tu seo, ’s mathaid nach bu chòir dhut sin a dhèanamh. Cha bu chòir do dhuine sam bith iarraidh ort fear dhiubh seo a chruthachadh is a thoirt dhaibh uair sam bith.",
+       "botpasswords-disabled": "Tha faclan-faire bots à comas.",
+       "botpasswords-no-central-id": "Feumaidh tu a bhith clàraichte a-staigh air cunntas meadhanaichte mus urrainn dhut faclan-faire bots a chleachdadh.",
+       "botpasswords-existing": "Faclan-faire bots làithreach",
+       "botpasswords-createnew": "Cruthaich facal-faire bot ùr",
+       "botpasswords-editexisting": "Deasaich facal-faire bot làithreach",
+       "botpasswords-label-appid": "Ainm a’ bhot:",
+       "botpasswords-label-create": "Cruthaich",
+       "botpasswords-label-update": "Ùraich",
+       "botpasswords-label-cancel": "Sguir dheth",
+       "botpasswords-label-delete": "Sguab às",
+       "botpasswords-label-resetpassword": "Ath-shuidhich am facal-faire",
+       "botpasswords-label-grants": "Buileachaidhean iomchaidh:",
+       "botpasswords-help-grants": "Ma nì thu buileachadh, is urrainn dhut còraichean a tha aig a’ chunntas agad a thoirt seachad. Ma nì thu buileachadh an-seo, cha doir seo cothrom air còraichean sam bith nach biodh aig a’ chunntas agad co-dhiù. Seall [[Special:ListGrants|clàr a’ bhuileachaidh]] airson barrachd fiosrachaidh.",
+       "botpasswords-label-grants-column": "Air a bhuileachadh",
+       "botpasswords-bad-appid": "Chan e ainm bot dligheach a tha ann an “$1”.",
+       "botpasswords-insert-failed": "Cha b’ urrainn dhuinn an t-ainm bot “$1” a chur ris. An deach a chur ris mu thràth?",
+       "botpasswords-update-failed": "Dh’fhàillig ùrachadh an ainm bot “$1”. An deach a sguabadh às?",
+       "botpasswords-created-title": "Chaidh am facal-faire bot a chruthachadh",
+       "botpasswords-created-body": "Chaidh am facal-faire bot airson a’ bhot air a bheil “$1” aig a’ chleachdaiche “$2” a chruthachadh.",
+       "botpasswords-updated-title": "Chaidh am facal-faire bot ùrachadh",
        "resetpass_forbidden": "Cha ghabh na faclan-faire atharrachadh",
        "resetpass-no-info": "Feumaidh tu logadh a-steach mus dèan thu inntrigeadh dìreach dhan duilleag seo.",
        "resetpass-submit-loggedin": "Atharraich am facal-faire",
        "permissionserrorstext": "Chan eil cead agad sin a dhèanamh air sgàth {{PLURAL:$1|an adhbhair|nan adhbharan}} a leanas:",
        "permissionserrorstext-withaction": "Chan eil cead agad airson \"$2\" air sgàth {{PLURAL:$1|an adhbhair|nan adhbharan}} a leanas:",
        "recreate-moveddeleted-warn": "<strong>Rabhadh: Tha thu gu bhith ath-chruthachadh duilleag a chaidh a sguabadh às roimhe.</strong>\n\nSaoil am bu chòir dhut leantainn air adhart le deasachadh na duilleige?.\nSeo dhut loga an sguabaidh às agus a' ghluasaid mar fhiosrachadh dhut:",
-       "moveddeleted-notice": "Chaidh an duilleag seo a sguabadh às.\nChì thu loga an sguabaidh às agus a' ghluasaid gu h-ìosal mar fhiosrachadh dhut.",
+       "moveddeleted-notice": "Chaidh an duilleag seo a sguabadh às.\nChì thu loga an sguabaidh às, an dìon agus a’ ghluasaid gu h-ìosal mar fhiosrachadh dhut.",
        "log-fulllog": "Seall an loga slàn",
        "edit-hook-aborted": "Sguireadh dhen deasachadh ri linn dubhan.\nCha deach adhbhar a thoirt seachad.",
        "edit-gone-missing": "Cha b' urrainn dhuinn an duilleag ath-nuadhachadh.\nTha coltas gun deach a sguabadh às.",
        "page_first": "Toiseach",
        "page_last": "Deireadh",
        "histlegend": "Taghadh nan diofar: comharraich bogsaichean rèidio nam mùthaidhean gus coimeas a dhèanamh agus put Enter no am putan gu h-ìosal.<br />\nTreòir: <strong>({{int:cur}})</strong> = an diofar eadar e 's am mùthadh as ùire, <strong>({{int:last}})</strong> = an diofar eadar e 's am mùthadh roimhe, <strong>{{int:minoreditletter}}</strong> = deasachadh beag.",
-       "history-fieldset-title": "An eachdraidh brabhsaidh",
+       "history-fieldset-title": "Lorg lèirmheasan",
        "history-show-deleted": "Na chaidh sguabadh às a-mhàin",
        "histfirst": "as sine",
        "histlast": "as ùire",
        "fileduplicatesearch-noresults": "Cha deach faidhle air a bheil \"$1\" a lorg.",
        "specialpages": "Duilleagan sònraichte",
        "specialpages-note-top": "Treòir",
-       "specialpages-note": "* Duilleagan sònraichte coitcheann.\n* <span class=\"mw-specialpagerestricted\">Duilleagan sònraichte cuingichte.</span>",
        "specialpages-group-maintenance": "Aithrisean na h-obrach-glèidhidh",
        "specialpages-group-other": "Duilleagan sònraichte eile",
        "specialpages-group-login": "Log a-steach / cruthaich cunntas",
        "htmlform-cloner-delete": "Thoir air falbh",
        "htmlform-cloner-required": "Tha luach a dhìth.",
        "logentry-delete-delete": "Sguab $1 às duilleag $3",
-       "logentry-delete-restore": "Dh'aisig $1 duilleag $3",
+       "logentry-delete-restore": "Dh’aisig $1 duilleag $3 ($4)",
        "logentry-delete-event": "Dh'atharraich $1 an fhaicsinneachd aig $5 {{PLURAL:$5|tachartas|thachartas|tachartasan|tachartas}} an loga air $3: $4",
        "logentry-delete-revision": "Dh'atharraich $1 an fhaicsinneachd aig $5 {{PLURAL:$5|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} air $3: $4",
        "logentry-delete-event-legacy": "Dh'atharraich $1 an fhaicsinneachd aig tachartasan an loga air $3",
        "special-characters-group-bangla": "Bangla",
        "special-characters-group-telugu": "Telugu",
        "special-characters-group-sinhala": "Sinhala",
-       "special-characters-group-gujarati": "Gujarati"
+       "special-characters-group-gujarati": "Gujarati",
+       "randomrootpage": "Duilleag root air thuaiream"
 }
index 42a738f..de2a3c2 100644 (file)
        "contentmodelediterror": "Non pode editar esta revisión porque o seu modelo de contido é \"<code>$1</code>\", o cal difire do modelo de contido \"<code>$2</code>\", que é o actual da páxina.",
        "recreate-moveddeleted-warn": "'''Atención: Vai volver crear unha páxina que xa foi eliminada anteriormente.'''\n\nDebería considerar se é apropiado continuar a editar esta páxina.\nVelaquí están o rexistro de borrados e mais o de traslados desta páxina, por se quere consultalos:",
        "moveddeleted-notice": "Esta páxina foi borrada.\nA continuación pódese ver o rexistro de borrados e traslados desta páxina, por se quere consultalos.",
-       "moveddeleted-notice-recent": "Sentímolo, borrouse esta páxina recentemente (nas últimas 24 horas).\nVelaquí están o rexistro de borrados e traslados da páxina, por se os quere consultar.",
+       "moveddeleted-notice-recent": "Sentímolo, borrouse esta páxina recentemente (nas últimas 24 horas).\nVelaquí están o rexistro de borrados, proteccións e traslados da páxina, por se os quere consultar.",
        "log-fulllog": "Ver o rexistro completo",
        "edit-hook-aborted": "A edición foi abortada polo asociador.\nEste non deu ningunha explicación.",
        "edit-gone-missing": "Non se pode actualizar a páxina.\nSemella que foi borrada.",
        "watching": "Vixiando...",
        "unwatching": "Deixando de vixiar...",
        "watcherrortext": "Houbo un erro ao cambiar as súas opcións de vixilancia para a páxina \"$1\".",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "Marcar todas as páxinas como visitadas",
        "enotif_impersonal_salutation": "Usuario de {{SITENAME}}",
        "enotif_subject_deleted": "{{GENDER:$2|$2}} borrou a páxina chamada \"$1\" en {{SITENAME}}",
        "compare-invalid-title": "O título que especificou non é válido.",
        "compare-title-not-exists": "O título que especificou non existe.",
        "compare-revision-not-exists": "A revisión que especificou non existe.",
-       "diff-form": "un '''formulario'''",
+       "diff-form": "Diferenzas",
+       "diff-form-oldid": "Identificador de revisión antigo (opcional)",
+       "diff-form-revid": "Identificador de revisión da diferenza",
+       "diff-form-submit": "Mostrar as diferenzas",
+       "permanentlink": "Ligazón permanente",
+       "permanentlink-revid": "ID da revisión",
+       "permanentlink-submit": "Ir á revisión",
        "dberr-problems": "Sentímolo! Este sitio está experimentando dificultades técnicas.",
        "dberr-again": "Por favor, agarde uns minutos e logo probe a cargar de novo a páxina.",
        "dberr-info": "(Non se pode acceder ao servidor da base de datos: $1)",
index 5bc6c5c..1d9f503 100644 (file)
        "showdiff": "ફેરફારો દર્શાવો",
        "anoneditwarning": "<strong>ચેતવણી:</strong> તમે તમારા સભ્ય નામથી પ્રવેશ કર્યો નથી.\nઆ પાનાનાં ઇતિહાસમાં તમારૂં આઇ.પી. (IP) એડ્રેસ નોંધવામાં આવશે અને તમારૂં આઈ.પી. લોકો જાહેર રીતે જોઈ શકશે. માટે <strong>[$1 પ્રવેશ કરો]</strong> અથવા તમે <strong>[$2 ખાતું બનાવો]</strong> તો ફેરફારો તમારા સભ્યનામ હેઠળ થશે અને અન્ય ફાયદાઓ પણ મળશે.",
        "anonpreviewwarning": "તમે સભ્યનામથી પ્રવેશ કર્યો નથી,આ પાનું ઈતિહાસમાંતમારા IP સરનામાના નામે  સાચવવામાં આવશે",
-       "missingsummary": "<strong>ચેતવણી:</strong> તમે ફેરફારોનો સારાંશ આપ્યો\nજો તમે \"$1\"  પર ફરી ક્લિક કરશો તો તમારા ફેરફારો સાચવવામાં આવશે.",
+       "missingsummary": "<strong>ચેતવણી:</strong> તમે ફેરફારોનો સારાંશ આપ્યો નથી.\nજો તમે \"$1\"  પર ફરી ક્લિક કરશો તો, તમારા ફેરફારો સારાંશ વગર સાચવવામાં આવશે.",
        "missingcommenttext": "કૃપા કરી નીચે ટીપ્પણી લખો.",
-       "missingcommentheader": "'''યાદ દેવડાવું:'''તમે તમારી ટિપ્પણી ને શીર્ષક/મથાળુ આપ્યું નથી. \nજો તમે  \"$1\" પર ફરીથી ક્લિક કરશો, તો તમારા ફેરરારો મથાળા વગર સચવાશે.",
+       "missingcommentheader": "<strong>ચેતવણી:</strong> તમે તમારી ટિપ્પણી ને શીર્ષક/મથાળુ આપ્યું નથી.\nજો તમે  \"$1\" પર ફરીથી ક્લિક કરશો, તો તમારા ફેરફારો મથાળા વગર સચવાશે.",
        "summary-preview": "સંપાદન સારાંશ પૂર્વાવલોકન:",
        "subject-preview": "વિષયનું પૂર્વાવલોકન:",
        "blockedtitle": "સભ્ય પ્રતિબંધિત છે",
        "note": "'''નોંધ:'''",
        "previewnote": "<strong>ધ્યાનમાં રાખો કે આ ફક્ત પૂર્વાવલોકન છે.</strong>\nતમારા ફેરફારો હજુ સાચવવામાં આવ્યા નથી!",
        "continue-editing": "ફેરફાર કરવાનું ચાલુ રાખો",
-       "previewconflict": "àª\9cà«\8b àª¤àª®à«\87 àª\86 àªªàª¾àª¨à«\81àª\82 àª¸àª¾àª\9aવશà«\8b àª¤à«\8b àª\86 àªªà«\8dરિવà«\8dયà«\81માàª\82 àª¦à«\87àª\96ાય àª\9bà«\87 àª¤à«\87વà«\81àª\82 àª¸àª\9aવાશે.",
+       "previewconflict": "àª\86 àªªà«\82રà«\8dવદરà«\8dશન àª¤àª®àª¨à«\87 àªªàª¾àª¨à«\81àª\82 àª¸àª\9aવાયા àªªàª\9bà«\80 àª\95à«\87વà«\81àª\82 àª¦à«\87àª\96ાશà«\87 àª¤à«\87 àª¬àª¤àª¾àªµà«\87 àª\9bે.",
        "session_fail_preview": "'''અફસોસ છે! સત્ર માહિતી ખોઇ દેવાને કારણે અમે તમારું કાર્ય સાચવી ન શક્યાં.'''\nકૃપયા ફરી પ્રયત્ન કરો.\nતેમ છતાં પણ સાચવી ન શકો તો [[Special:UserLogout|logging out]] કરી ફરી પ્રવેશ કરો.",
        "session_fail_preview_html": "'''અફસોસ છે! સત્ર માહિતીનો નાશ થવાથી તમે કરેલ ફેરફાર અમે સાચવી ન શક્યાં .'''\n\n''કેમકે  {{SITENAME}} માં કાચી HTML સક્રીય છે, JavaScript ના હુમલા સામેના રક્ષણ માટે ઝલક પર રોક લગાવી છે .''\n\n'''જો આ ગંભીર પ્રયત્ન હતો તો ફરી પ્રયત્ન કરો .'''\nઅનેતમા છતાં  કમા  ના કરેતો  [[Special:UserLogout|logging out]] કરી ફરી લોગ ઇન કરો.",
        "token_suffix_mismatch": "'''તમારા ફેરફારો કેમકે તમારા ગ્રાહકએ ફેરફાર નાકામાં વિરામચિન્હો અસ્ત વ્યસ્ત કરી દેતા.'''\nઆ પાનાને ખરાબ થતો અટકાવવા આ ફેરફાર રદ્દ કરાયો છે. \nજ્યારે તમે વેબ આધારિત  અજ્ઞાત પ્રોક્સી વાપરતા હોવ ત્યારે આવું બની શકે છે.",
        "recentchanges-legend-heading": "<strong>કળ:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|નવા પાનાઓની યાદી]] પણ જુઓ)",
        "recentchanges-submit": "બતાવો",
+       "rcfilters-other-review-tools": "<strong>અન્ય ચકાસણી સાધનો</strong>",
+       "rcfilters-savedqueries-cancel-label": "રદ કરો",
        "rcnotefrom": "નીચે <strong>$3, $4</strong> થી {{PLURAL:$5|ફેરફાર|ફેરફારો}} દર્શાવેલ છે (<strong>$1</strong> સુધી દર્શાવેલ છે).",
        "rclistfrom": "$3 $2 બાદ થયેલા નવા ફેરફારો બતાવો",
        "rcshowhideminor": "નાના ફેરફારો $1",
index d02fc17..779acf1 100644 (file)
@@ -4,7 +4,8 @@
                        "Mladanali",
                        "아라",
                        "DonCamillo",
-                       "Koavf"
+                       "Koavf",
+                       "Ammarpad"
                ]
        },
        "tog-underline": "A shaya zaruruwa",
        "sep": "Sat",
        "oct": "Okt",
        "nov": "Nuw",
-       "dec": "Dic",
+       "dec": "Dis",
        "january-date": "Janairu $1",
        "february-date": "Fabrairu $1",
        "march-date": "Maris $1",
        "disclaimerpage": "Project:Babban gargaɗi",
        "edithelp": "Taimako kan gyara",
        "helppage-top-gethelp": "Taimako",
-       "mainpage": "Marhabin",
+       "mainpage": "Babban shafi",
        "mainpage-description": "Babban shafi",
        "policy-url": "Shiri:Siyasa",
        "portal": "Kofan al'umma",
        "rcshowhideliu-show": "Nuna",
        "rcshowhideliu-hide": "Ɓoye",
        "rcshowhideanons": "$1 ma'aikata masu ɓoyayye suna",
-       "rcshowhideanons-hide": "Ɓooye",
+       "rcshowhideanons-hide": "Ɓoye",
        "rcshowhidemine": "$1 sauye-sauyena",
        "rcshowhidemine-hide": "Ɓoye",
        "rclinks": "Nuna sauye-sauye $1 na ƙarshe a cikin kwanaki $2 na baya",
index f7307d3..543fa69 100644 (file)
@@ -75,6 +75,7 @@
        "tog-watchlisthideminor": "הסתרת עריכות משניות ברשימת המעקב",
        "tog-watchlisthideliu": "הסתרת עריכות של משתמשים רשומים ברשימת המעקב",
        "tog-watchlistreloadautomatically": "רענון אוטומטי של רשימת המעקב בכל פעם שמסנן משתנה (דרוש JavaScript)",
+       "tog-watchlistunwatchlinks": "הוספת קישורי הפסקת/הפעלת מעקב לערכים ברשימת המעקב (דרוש JavaScript כדי שהקישור יתעדכן בעת לחיצה עליו)",
        "tog-watchlisthideanons": "הסתרת עריכות של משתמשים אנונימיים ברשימת המעקב",
        "tog-watchlisthidepatrolled": "הסתרת עריכות בדוקות ברשימת המעקב",
        "tog-watchlisthidecategorization": "הסתרת שינויים בקטגוריות",
        "changeemail-throttled": "ביצעתם ניסיונות רבים מדי להיכנס לחשבון זה.\nאנא המתינו $1 לפני שתנסו שוב.",
        "changeemail-nochange": "יש להקליד כתובת דוא\"ל חדשה שונה.",
        "resettokens": "איפוס אסימונים",
-       "resettokens-text": "×\91×¢×\9e×\95×\93 זה ניתן לאפס אסימונים שמאפשרים גישה לנתונים פרטיים של החשבון שלך.\n\nרצוי לעשות זאת אם שיתפת אותם בטעות עם אחרים או אם חשבונך נפרץ.",
+       "resettokens-text": "×\91×\93×£ ×\94זה ניתן לאפס אסימונים שמאפשרים גישה לנתונים פרטיים של החשבון שלך.\n\nרצוי לעשות זאת אם שיתפת אותם בטעות עם אחרים או אם חשבונך נפרץ.",
        "resettokens-no-tokens": "אין אסימונים לאיפוס.",
        "resettokens-tokens": "אסימונים:",
        "resettokens-token-label": "$1 (ערך נוכחי: $2)",
        "watching": "בהוספה לרשימת המעקב...",
        "unwatching": "בהסרה מרשימת המעקב...",
        "watcherrortext": "אירעה שגיאה בעת שינוי הגדרות רשימת המעקב של \"$1\".",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "סימון כל הדפים כאילו נצפו",
        "enotif_impersonal_salutation": "משתמש ב{{GRAMMAR:תחילית|{{SITENAME}}}}",
        "enotif_subject_deleted": "הדף \"$1\" ב{{grammar:תחילית|{{SITENAME}}}} נמחק על־ידי $2",
        "compare-invalid-title": "שם הדף שציינת אינו תקין.",
        "compare-title-not-exists": "הדף שציינת אינו קיים.",
        "compare-revision-not-exists": "הגרסה שציינת אינה קיימת.",
-       "diff-form": "'''טופס'''",
+       "diff-form": "הבדלים",
+       "diff-form-oldid": "מספר הגרסה הישנה (אופציונלי)",
+       "diff-form-revid": "מספר הגרסה החדשה",
+       "diff-form-submit": "הצגת ההבדלים",
+       "permanentlink": "קישור קבוע",
+       "permanentlink-revid": "מספר הגרסה",
+       "permanentlink-submit": "מעבר לגרסה",
        "dberr-problems": "מצטערים! קיימת בעיה טכנית באתר זה.",
        "dberr-again": "נסו להמתין מספר שניות ולהעלות מחדש את הדף.",
        "dberr-info": "(לא ניתן לגשת לבסיס הנתונים: $1)",
index 3b3f5bc..001cee9 100644 (file)
@@ -82,7 +82,8 @@
                        "Shyamal",
                        "SatyamMishra",
                        "चक्रपाणी",
-                       "Anamdas"
+                       "Anamdas",
+                       "Sachinkatiyar"
                ]
        },
        "tog-underline": "कड़ियाँ अधोरेखन:",
        "tog-watchlisthideminor": "मेरी ध्यानसूची से छोटे परिवर्तन छिपाएँ",
        "tog-watchlisthideliu": "मेरी ध्यानसूची में सत्रारम्भित सदस्यों के सम्पादन न दिखाएँ",
        "tog-watchlistreloadautomatically": "जब भी छननी बदलने पर ध्यानसूची को अपने आप ही लोड करें (जावास्क्रिप्ट अनिवार्य)",
+       "tog-watchlistunwatchlinks": "देखनेवाली सूची प्रविष्टियों के लिए सीधा अनदेखा/देखा कड़ी जोड़ें (टॉगल कार्यक्षमता के लिए जावास्क्रिप्ट आवश्यक)",
        "tog-watchlisthideanons": "आई॰पी॰ सदस्यों द्वारा किए सम्पादनों को मेरी ध्यानसूची में न दिखायें",
        "tog-watchlisthidepatrolled": "परीक्षित सम्पादन मेरी ध्यानसूची में छुपाएँ",
        "tog-watchlisthidecategorization": "पृष्ठों का श्रेणीकरण छुपाएँ",
        "recentchanges-legend-heading": "<strong>कुंजी:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नए पन्नों की सूची]] को भी देखें)",
        "recentchanges-submit": "दिखाएँ",
+       "rcfilters-legend-heading": "<strong>संकेतों की सूची:</strong>",
+       "rcfilters-other-review-tools": "<strong>दूसरे समीक्षा उपकरण</strong>",
        "rcfilters-activefilters": "सक्रिय फिल्टर",
+       "rcfilters-limit-title": "दिखाने के लिए बदलाव",
        "rcfilters-limit-shownum": "पिछले $1 बदलाव दिखायें",
        "rcfilters-days-title": "कुछ दिनों के",
        "rcfilters-hours-title": "कुछ घंटों के",
        "watching": "ध्यान दे रहे हैं...",
        "unwatching": "ध्यान हटा रहे हैं...",
        "watcherrortext": "\"$1\" के लिये आपकी ध्यानसूची सेटिंग बदलते समय त्रुटि हुई।",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "सभी पृष्ठ देखे हुए दर्शाएँ",
        "enotif_impersonal_salutation": "{{SITENAME}} सदस्य",
        "enotif_subject_deleted": "{{SITENAME}} पृष्ठ $1 को {{gender:$2|$2}} ने हटा दिया है",
        "compare-title-not-exists": "आपके द्वारा निर्दिष्ट शीर्षक मौजूद नहीं है।",
        "compare-revision-not-exists": "आपके द्वारा निर्दिष्ट संशोधन मौजूद नहीं है।",
        "diff-form": "एक '''पर्चा'''",
+       "diff-form-oldid": "पुराना अवतरण (वैकल्पिक)",
+       "diff-form-submit": "अंतर दिखाएँ",
+       "permanentlink": "स्थायी कड़ी",
+       "permanentlink-revid": "अवतरण आईडी",
+       "permanentlink-submit": "अवतरण में जाएँ",
        "dberr-problems": "क्षमा करें! इस जालस्थल को कुछ तकनीकी परेशानियों का सामना करना पड़ रहा है।",
        "dberr-again": "कुछ मिनट रुकने के बाद फिर से चढ़ाएँ।",
        "dberr-info": "(डाटाबेस से संपर्क नहीं हो पा रहा: $1)",
index c21997e..b84d174 100644 (file)
        "logentry-import-upload-details": "$1 {{GENDER:$2|importálta}} a(z) $3 lapot fájlfeltöltéssel ($4 lapváltozat).",
        "logentry-import-interwiki": "$1 {{GENDER:$2|importálta}} $3 lapot egy másik wikiből",
        "logentry-import-interwiki-details": "$1 {{GENDER:$2|importálta}} a(z) $3 lapot a(z) $5 wikiről ($4 lapváltozat).",
-       "logentry-merge-merge": "$1 {{GENDER:$2|összevonta}} $3 lapot $4 lappal ($5 változtig)",
+       "logentry-merge-merge": "$1 {{GENDER:$2|összevonta}} $3 lapot $4 lappal ($5 változatig)",
        "logentry-move-move": "$1 átnevezte a(z) $3 lapot a következő névre: $4",
        "logentry-move-move-noredirect": "$1 átnevezte a(z) $3 lapot $4 lapra átirányítás nélkül",
        "logentry-move-move_redir": "$1 átnevezte a(z) $3 lapot $4 lapra az átirányítást felülírva",
index 7c56684..8f47121 100644 (file)
                        "Luigi.delia",
                        "Samuele2002",
                        "Kaspo",
-                       "Pequod76"
+                       "Pequod76",
+                       "Greis"
                ]
        },
        "tog-underline": "Sottolinea i collegamenti:",
        "editfont-style": "Stile del carattere nella casella di modifica:",
        "editfont-default": "Predefinito del browser",
        "editfont-monospace": "Carattere a larghezza fissa",
-       "editfont-sansserif": "Carattere sans-serif",
-       "editfont-serif": "Carattere serif",
+       "editfont-sansserif": "Carattere Sans-serif",
+       "editfont-serif": "Carattere Serif",
        "sunday": "domenica",
        "monday": "lunedì",
        "tuesday": "martedì",
        "oct": "ott",
        "nov": "nov",
        "dec": "dic",
-       "january-date": "{{PLURAL:$1|1°|$1}} gennaio",
-       "february-date": "{{PLURAL:$1|1°|$1}} febbraio",
-       "march-date": "{{PLURAL:$1|1°|$1}} marzo",
-       "april-date": "{{PLURAL:$1|1°|$1}} aprile",
-       "may-date": "{{PLURAL:$1|1°|$1}} maggio",
-       "june-date": "{{PLURAL:$1|1°|$1}} giugno",
-       "july-date": "{{PLURAL:$1|1°|$1}} luglio",
-       "august-date": "{{PLURAL:$1|1°|$1}} agosto",
-       "september-date": "{{PLURAL:$1|1°|$1}} settembre",
-       "october-date": "{{PLURAL:$1|1°|$1}} ottobre",
-       "november-date": "{{PLURAL:$1|1°|$1}} novembre",
-       "december-date": "{{PLURAL:$1|1°|$1}} dicembre",
+       "january-date": "$1 gennaio",
+       "february-date": "$1 febbraio",
+       "march-date": "$1 marzo",
+       "april-date": "$1 aprile",
+       "may-date": "$1 maggio",
+       "june-date": "$1 giugno",
+       "july-date": "$1 luglio",
+       "august-date": "$1 agosto",
+       "september-date": "$1 settembre",
+       "october-date": "$1 ottobre",
+       "november-date": "$1 novembre",
+       "december-date": "$1 dicembre",
        "period-am": "AM",
        "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Categoria|Categorie}}",
        "searchbutton": "Ricerca",
        "go": "Vai",
        "searcharticle": "Vai",
-       "history": "Versioni precedenti",
+       "history": "Cronologia della pagina",
        "history_short": "Cronologia",
        "history_small": "cronologia",
        "updatedmarker": "modificata dalla mia ultima visita",
        "userlogin-yourpassword": "Password",
        "userlogin-yourpassword-ph": "Inserisci la tua password",
        "createacct-yourpassword-ph": "Inserisci una password",
-       "yourpasswordagain": "Ripeti la password:",
+       "yourpasswordagain": "Riscrivi la password:",
        "createacct-yourpasswordagain": "Conferma password",
        "createacct-yourpasswordagain-ph": "Inserisci nuovamente la password",
        "userlogin-remembermypassword": "Mantienimi collegato",
        "pt-login-button": "Entra",
        "pt-login-continue-button": "Continua l'accesso",
        "pt-createaccount": "Registrati",
-       "pt-userlogout": "esci",
+       "pt-userlogout": "Esci",
        "php-mail-error-unknown": "Errore sconosciuto nella funzione PHP mail()",
        "user-mail-no-addy": "Hai cercato di inviare una e-mail senza un indirizzo.",
        "user-mail-no-body": "Tentato di inviare una e-mail con un testo vuoto o estremamente breve.",
        "watchthis": "Aggiungi agli osservati speciali",
        "savearticle": "Salva la pagina",
        "savechanges": "Salva le modifiche",
-       "publishpage": "Pubblica pagina",
-       "publishchanges": "Pubblica modifiche",
+       "publishpage": "Pubblica la pagina",
+       "publishchanges": "Pubblica le modifiche",
        "preview": "Anteprima",
        "showpreview": "Visualizza anteprima",
        "showdiff": "Mostra modifiche",
        "loginreqtitle": "Accesso richiesto",
        "loginreqlink": "effettuare l'accesso",
        "loginreqpagetext": "Per vedere altre pagine è necessario $1.",
-       "accmailtitle": "Password inviata.",
+       "accmailtitle": "Password inviata",
        "accmailtext": "Una password generata casualmente per [[User talk:$1|$1]] è stata inviata a $2. Questa password può essere modificata nella pagina per ''[[Special:ChangePassword|cambiare la password]]'' subito dopo l'accesso.",
        "newarticle": "(Nuovo)",
        "newarticletext": "Il collegamento appena seguito corrisponde ad una pagina non ancora esistente.\nSe vuoi creare la pagina ora, basta cominciare a scrivere il testo nella casella qui sotto (vedi la [$1 pagina di aiuto] per maggiori informazioni).\nSe il collegamento è stato aperto per errore, è sufficiente fare clic sul pulsante <strong>Indietro</strong> del proprio browser.",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Mostra",
        "rcfilters-legend-heading": "<strong>Elenco di abbreviazioni:</strong>",
+       "rcfilters-other-review-tools": "<strong>Altri strumenti di revisione</strong>",
        "rcfilters-grouping-title": "Raggruppamento",
        "rcfilters-activefilters": "Filtri attivi",
        "rcfilters-advancedfilters": "Filtri avanzati",
        "rcfilters-savedqueries-add-new-title": "Salva le impostazioni attuali del filtro",
        "rcfilters-restore-default-filters": "Ripristina i filtri predefiniti",
        "rcfilters-clear-all-filters": "Pulisci tutti i filtri",
+       "rcfilters-show-new-changes": "Visualizza le modifiche più recenti",
+       "rcfilters-previous-changes-label": "Modifiche visualizzate precedentemente",
        "rcfilters-search-placeholder": "Filtra le ultime modifiche (naviga o inizia a digitare)",
        "rcfilters-invalid-filter": "Filtro non valido",
        "rcfilters-empty-filter": "Nessun filtro attivo. Sono mostrati tutti i contributi.",
        "compare-invalid-title": "Il titolo che hai specificato non è valido.",
        "compare-title-not-exists": "Il titolo che hai specificato non esiste.",
        "compare-revision-not-exists": "La versione che hai specificato non esiste.",
-       "diff-form": "un '''modulo'''",
+       "diff-form": "Differenze",
+       "diff-form-submit": "Mostra le differenze",
+       "permanentlink": "Link permanente",
        "dberr-problems": "Questo sito sta avendo dei problemi tecnici.",
        "dberr-again": "Prova ad attendere qualche minuto e ricaricare.",
        "dberr-info": "(Impossibile accedere al server del database: $1)",
index d7cd709..3189ef0 100644 (file)
        "newwindow": "(新しいウィンドウで開きます)",
        "cancel": "取り消し",
        "moredotdotdot": "続き...",
-       "morenotlisted": "この一覧はおそらく完全ではありません。",
+       "morenotlisted": "この一覧は不完全かもしれません。",
        "mypage": "ページ",
        "mytalk": "トーク",
        "anontalk": "トーク",
index eb282a4..5be46fc 100644 (file)
        "edithelp": "Tallalt deg ubeddel",
        "helppage-top-gethelp": "Tallelt",
        "mainpage": "Asebter agejdan",
-       "mainpage-description": "Asebter amenzawi",
+       "mainpage-description": "Asebter agejdan",
        "policy-url": "Project:Ilugan",
        "portal": "Awwur n timetti",
        "portal-url": "Project:Awwur n timetti",
        "right-siteadmin": "Sekkweṛ naɣ kkes aseḍru i taffa n isefka",
        "right-override-export-depth": "Sifeḍ isebtar akkw d isebtar iqqenen alama tadrut n 5 iswiren",
        "right-sendemail": "Ceggaɛ tirawt i iseqdacen nniḍen",
+       "grant-group-email": "Azen imayl",
        "newuserlogpage": "Aɣmis n isnulfan n  imiḍanen n imseqdacen",
        "newuserlogpagetext": "Asebter agi yebeqqeḍ amezruy n usnulfu n imiḍanen n iseqdacen.",
        "rightslog": "Aɣmis n yizerfan n wemseqdac",
        "upload-too-many-redirects": "URL agi yesɛa aṭas illusen n wesnili.",
        "upload-http-error": "Anezri HTTP : $1",
        "upload-copy-upload-invalid-domain": "Anɣel n izdamen ur yezmer ara seg taɣult agi.",
+       "upload-dialog-title": "Azen afaylu",
+       "upload-dialog-button-cancel": "Sefsex",
+       "upload-dialog-button-back": "Uɣal",
+       "upload-dialog-button-done": "Immed",
+       "upload-dialog-button-save": "Sekles",
+       "upload-dialog-button-upload": "Sali",
+       "upload-form-label-infoform-title": "Talqayt",
+       "upload-form-label-infoform-name": "Isem",
        "upload-form-label-infoform-name-tooltip": "Azwel n useglem asuf i ufaylu, win ara ttwasqedcen d isem n ufaylu. Tzemreḍ ad tesqedceḍ tutlayt tamirant s isekkilen ilmawen. Ur sedday ara asiɣzef n ufaylu.",
+       "upload-form-label-infoform-description": "Aglam",
+       "upload-form-label-usage-title": "Aseqdec",
+       "upload-form-label-usage-filename": "Isem n ufaylu",
+       "upload-form-label-own-work": "D nek i d ameskar n umahil-a",
+       "upload-form-label-infoform-categories": "Taggayin",
        "upload-form-label-infoform-date": "Azemz",
        "backend-fail-stream": "Ulamek an ɣeṛ afaylu $1.",
        "backend-fail-backup": "Ulamek an ḥrez afaylu $1.",
        "img-auth-public": "Tasɣent n img_auth.php tella i ubeqqeḍ n ifuyla n yiwen wiki uslig.\nWiki agi yesɣwer am wiki azayez.\nI taɣellist tameqqṛant, img_auth.php yensa.",
        "img-auth-noread": "Aseqdac ur yesɛa ara azref deg taɣuri ɣef « $1 ».",
        "http-invalid-url": "URL ur teɣbel ara : $1",
-       "http-invalid-scheme": "URL s uzenziɣ « $1 » ur ɣbelen ara d-agi.",
+       "http-invalid-scheme": "Tansiwin URL s uzenziɣ \"$1\" ur ttusefraken ara d-agi.",
        "http-request-error": "Anezri warisem deg uceggaɛ n tuttra.",
        "http-read-error": "Anezri n taɣuri HTTP.",
        "http-timed-out": "Tuttra HTTP teneffeṛ.",
        "mostrevisions": "Isebtar i yettubedlen aṭas",
        "prefixindex": "Akk isebtaren s yisekkilen imezwura",
        "prefixindex-namespace": "Akkw isebtar s adat (tallunt n isemawe $1)",
+       "prefixindex-submit": "Sken",
        "prefixindex-strip": "Ekkes azwir deg umuɣ",
        "shortpages": "isebtar imecṭuḥen",
        "longpages": "Isebtar imeqqranen",
        "protectedpages-cascade": "Imestenen s uceṛcuṛ kan",
        "protectedpages-noredirect": "Ffer isemmimḍen",
        "protectedpagesempty": "isebtar-agi ttwaḥerzen s imsektayen -agi.",
+       "protectedpages-timestamp": "Asragemz",
+       "protectedpages-page": "Asebter",
+       "protectedpages-performer": "Ammesten n useqdac",
+       "protectedpages-reason": "Taɣẓint",
+       "protectedpages-submit": "Sken isebtar",
+       "protectedpages-unknown-timestamp": "Arussin",
+       "protectedpages-unknown-performer": "Aseqdac arussin",
        "protectedtitles": "Izwal ugdilen",
        "protectedtitlesempty": "Ulac azwel yesɛan asegdel s iɣewwaren agi.",
+       "protectedtitles-submit": "Sken izwal",
        "listusers": "Umuɣ n yimseqdacen",
        "listusers-editsonly": "Sekned kan iseqdacen yesɛan asekcem naɣ ugar",
        "listusers-creationsort": "Fren s azmez n usnulfu",
        "usereditcount": "$1 {{PLURAL:$1|abeddel|ibeddilen}}",
        "usercreated": "{{GENDER:$3|Yesnulfu-d}} ass n $1 ar $2",
        "newpages": "isebtar imaynuten",
+       "newpages-submit": "Sken",
        "newpages-username": "Isem n wemseqdac:",
        "ancientpages": "isebtar iqdimen",
        "move": "Smimeḍ",
        "nopagetext": "Asebter asaḍas agi ulac-it.",
        "pager-newer-n": "{{PLURAL:$1|amaynut|$1 imaynuten}}",
        "pager-older-n": "{{PLURAL:$1|aqbur|$1 iqburen}}",
-       "suppress": "Mdi",
+       "suppress": "Kkes",
        "querypage-disabled": "Asebter uslig agi yensa , taɣzint : timellal is.",
+       "apihelp": "Tallelt n API",
+       "apihelp-no-such-module": "Azegrir\"$1\" ulac-it.",
+       "apisandbox-api-disabled": "Asnas API ur yermid ara ɣef usmel-agi.",
        "apisandbox-unfullscreen": "Sken sebter",
+       "apisandbox-reset": "Sfeḍ",
+       "apisandbox-retry": "Ɛref̣ tikelt-nniḍen",
+       "apisandbox-helpurls": "Iseɣwan n tallelt",
+       "apisandbox-examples": "Imedyaten",
+       "apisandbox-dynamic-parameters": "Iɣewwaṛen-nniḍen",
+       "apisandbox-dynamic-parameters-add-label": "Rnu aɣewwaṛ",
+       "apisandbox-dynamic-parameters-add-placeholder": "Isem n uɣewwaṛ",
+       "apisandbox-dynamic-error-exists": "Aɣewwaṛ s yisem \"$1\" yella yakan.",
+       "apisandbox-deprecated-parameters": "Iɣewwaṛen iqbuṛen",
        "booksources": "Iɣbula n yidlisen",
        "booksources-search-legend": "Nadi ɣef iɣbula n yidlisen",
        "booksources-text": "Deg ukessar, yella wumuɣ n yizdayen iberraniyen izzenzen idlisen (imaynuten akk d weqdimen), yernu ahat sɛan kter talɣut ɣef idlisen i tettnadiḍ fell-asen:",
        "watching": "Ad iɛass...",
        "unwatching": "Ad ifukk aɛessi...",
        "watcherrortext": "Yella anezri imi tebeddeleḍ iɣewwaren n umuɣ inek/inem n uɛassi i « $1 ».",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "Rcem akk isebtar mmeẓren",
        "enotif_impersonal_salutation": "Amseqdac n {{SITENAME}}",
        "enotif_subject_deleted": "Asebtar $1 ɣef {{SITENAME}} yetwakkes sɣur {{GENDER:$2|$2}}",
        "tooltip-invert": "Sekcem amidag deg tankult agi iwakken ad ffereḍ ibeddilen n isebtar deg tallunt n isemawen yettwafren (dɣa tallunt n isemawen yeqqnen ma yella amidag deg tankult)",
        "namespace_association": "Tallunt n isemawen yeqqenen",
        "tooltip-namespace_association": "Sekcem amidag deg tankult agi iwakken ad rnuḍ daɣen tallunt n isemawen n umyannan yeqqnen ar tallunt n  isemawen yettwafren",
-       "blanknamespace": "(Amenzawi)",
+       "blanknamespace": "(Agejdan)",
        "contributions": "Ittekkiyen n {{GENDER:$1|umseqdac|tamseqdact}}",
        "contributions-title": "Umuɣ n tikkin n umseqdac $1",
        "mycontris": "Ittekkiyen",
        "tooltip-search": "Nadi {{SITENAME}}",
        "tooltip-search-go": "Ṛuḥ ɣer usebter i sɛan isem agi ma yella.",
        "tooltip-search-fulltext": "Nadi isebtar i sɛan aḍris agi",
-       "tooltip-p-logo": "Asebter amenzawi",
+       "tooltip-p-logo": "Rzu ar usebter agejdan",
        "tooltip-n-mainpage": "Rzu ar usebter agejdan",
-       "tooltip-n-mainpage-description": "Rzu asebter amenzawi",
+       "tooltip-n-mainpage-description": "Rzu asebter agejdan",
        "tooltip-n-portal": "Ɣef usenfar, ayen tzemrḍ ad txedmeḍ, anda tafeḍ tiɣawsiwin",
        "tooltip-n-currentevents": "Af ayen yeḍran tura",
        "tooltip-n-recentchanges": "Umuɣ n yibeddlen imaynuten deg wiki.",
index 7818dc5..799be66 100644 (file)
        "tog-watchlisthideminor": "주시문서 목록에서 사소한 편집을 숨기기",
        "tog-watchlisthideliu": "주시문서 목록에서 로그인한 사용자의 편집을 숨기기",
        "tog-watchlistreloadautomatically": "필터가 수정될 때마다 주시문서 목록 자동으로 새로 고치기 (자바스크립트 필요)",
+       "tog-watchlistunwatchlinks": "주시문서 목록 항목에 대한 직접적인 주시/주시해제 링크를 추가합니다 (토글 기능을 위해 자바스크립트가 필요합니다)",
        "tog-watchlisthideanons": "주시문서 목록에서 익명 사용자의 편집을 숨기기",
        "tog-watchlisthidepatrolled": "주시문서 목록에서 점검한 편집을 숨기기",
        "tog-watchlisthidecategorization": "페이지 분류 숨기기",
        "recentchanges-submit": "보기",
        "rcfilters-legend-heading": "<strong>약어 목록:</strong>",
        "rcfilters-other-review-tools": "<strong>다른 검토 도구</strong>",
+       "rcfilters-group-results-by-page": "문서별로 묶음",
+       "rcfilters-grouping-title": "묶기",
        "rcfilters-activefilters": "사용 중인 필터",
        "rcfilters-advancedfilters": "고급 필터",
-       "rcfilters-limit-title": "표시할 변경사항",
-       "rcfilters-limit-shownum": "최근 {{PLURAL:$1개의 변경사항}} 표시",
+       "rcfilters-limit-title": "표시할 변경사항 수",
+       "rcfilters-limit-shownum": "최근 {{PLURAL:$1|$1개의 변경사항}} 표시",
        "rcfilters-days-title": "최근 날",
        "rcfilters-hours-title": "최근 시간",
        "rcfilters-days-show-days": "$1{{PLURAL:$1|일}}",
        "rcfilters-filter-excluded": "제외됨",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:아님</strong> $1",
        "rcfilters-exclude-button-off": "선택 제외",
+       "rcfilters-exclude-button-on": "선택 제외",
        "rcfilters-view-advanced-filters-label": "고급 필터",
        "rcfilters-view-tags": "태그된 편집",
        "rcfilters-view-namespaces-tooltip": "이름공간으로 결과 필터",
        "apisandbox-sending-request": "API 요청을 보내는 중...",
        "apisandbox-loading-results": "API 결과를 받는 중...",
        "apisandbox-results-error": "API 질의 응답을 불러오는 도중 오류 발생: $1.",
+       "apisandbox-results-login-suppressed": "해당 요청은 로그인을 하지 않은 사용자가 동일 출처 보안을 우회하기 위해 진행되었습니다. API 샌드박스의 자동 토큰 조정이 해당 요청에 대해 제대로 작동하지 않는지 확인하고, 수동으로 채워주세요.",
        "apisandbox-request-selectformat-label": "요청한 데이터를 보여주기:",
        "apisandbox-request-format-url-label": "URL 쿼리 문자열",
        "apisandbox-request-url-label": "요청 URL:",
        "watching": "주시 추가 중…",
        "unwatching": "주시 해제 중…",
        "watcherrortext": "\"$1\" 문서에 대한 주시 여부를 바꾸는 중 오류가 발생했습니다.",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "모든 문서를 방문한 것으로 표시하기",
        "enotif_impersonal_salutation": "{{SITENAME}} 사용자",
        "enotif_subject_deleted": "{{SITENAME}} $1 문서를 $2님이 {{GENDER:$2|삭제했습니다}}",
        "compare-invalid-title": "입력한 제목이 잘못되었습니다.",
        "compare-title-not-exists": "입력한 문서가 존재하지 않습니다.",
        "compare-revision-not-exists": "지정한 판이 없습니다.",
-       "diff-form": "'''양식'''",
+       "diff-form": "차이",
+       "diff-form-oldid": "오래된 판 ID (선택사항)",
+       "diff-form-revid": "차이에 대한 판 ID",
+       "diff-form-submit": "차이 보기",
+       "permanentlink": "고유 링크",
+       "permanentlink-revid": "판 ID",
+       "permanentlink-submit": "판으로 이동",
        "dberr-problems": "죄송합니다! 이 사이트에 기술적인 문제가 발생하고 있습니다.",
        "dberr-again": "잠시 기다리고 나서 다시 불러오세요.",
        "dberr-info": "(데이터베이스 서버에 연결할 수 없습니다: $1)",
index 68a4dcf..2efad89 100644 (file)
@@ -47,7 +47,7 @@
        "tog-shownumberswatching": "D'Zuel vun de Benotzer déi dës Säit iwwerwaache weisen",
        "tog-oldsig": "Är Aktuell Ënnerschrëft:",
        "tog-fancysig": "Ënnerschrëft als Wiki-Text behandelen (Ouni automatesche Link)",
-       "tog-uselivepreview": "Live-Preview benotzen",
+       "tog-uselivepreview": "Live-Preview benotzen ouni d'Säit ze lueden",
        "tog-forceeditsummary": "Warnen, wa beim Späicheren de Resumé feelt",
        "tog-watchlisthideown": "Meng Ännerungen op menger Iwwerwaachungslëscht verstoppen",
        "tog-watchlisthidebots": "Ännerunge vu Botten op menger Iwwerwaachungslëscht verstoppen",
        "contentmodelediterror": "Dir kënnt dës Versioun net ännere well hiren Inhaltsmodell <code>$1</code> ass dee verschidde vum aktuellen Inhaltsmodell vun der Säit <code>$2</code> ass.",
        "recreate-moveddeleted-warn": "'''Opgepasst: Dir sidd am Gaang eng Säit unzeleeën déi schonn eng Kéier geläscht gouf.'''\n\nFrot Iech ob et wierklech sënnvoll ass dës Säit nees nei ze schafen.\nFir Iech z'informéieren fannt Dir hei d'Logbuch vum Läsche mam Grond:",
        "moveddeleted-notice": "Dës Säit gouf geläscht.\nDen Extrait aus dem Logbuch vum Réckelen a Läsche fir déi Säit fannt Dir hei drënner als Referenz.",
-       "moveddeleted-notice-recent": "Leider gouf dëse Säit rezent (bannent de leschte 24 Stonnen) geläscht. D'Logbuch vum Läschen a Réckele vun dëser Säit fannt Dir fir Ar Informatioun hei drënner.",
+       "moveddeleted-notice-recent": "Leider gouf dëse Säit rezent (bannent de leschte 24 Stonnen) geläscht. De Logg vum Läschen, Spären a Réckele vun dëser Säit fannt Dir fir Är Informatioun hei drënner.",
        "log-fulllog": "Dat ganzt Logbuch weisen",
        "edit-hook-aborted": "D'Ännerung gouf ouni Erklärung vun enger Schnëttstell (hook) ofgebrach.",
        "edit-gone-missing": "D'Säit konnt net aktualiséiert ginn.\nSi gouf anscheinend geläscht.",
        "rcfilters-filter-lastrevision-label": "Lescht Versioun",
        "rcfilters-filter-lastrevision-description": "Nëmmen déi lescht Ännerung op enger Säit.",
        "rcfilters-filter-previousrevision-label": "Net déi lescht Versioun",
-       "rcfilters-filter-previousrevision-description": "All Ännerungen, déi net déi rezenst Ännerung vun enger Säit sinn.",
+       "rcfilters-filter-previousrevision-description": "All Ännerungen, déi net déi 'rezentst Versioun' vun enger Säit sinn.",
        "rcfilters-filter-excluded": "Ausgeschloss",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:net</strong> $1",
        "rcfilters-view-advanced-filters-label": "Erweidert Filteren",
        "watching": "Iwwerwaachen …",
        "unwatching": "Net méi iwwerwaachen …",
        "watcherrortext": "Beim Ännere vun den Astellunge vun der Iwwerwaachungslëscht fir \"$1\" ass e Feeler geschitt.",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "All Säiten als besicht markéieren",
        "enotif_impersonal_salutation": "{{SITENAME}}-Benotzer",
        "enotif_subject_deleted": "D'{{SITENAME}}-Säit $1 gouf vum {{gender:$2|$2}} geläscht",
        "import-nonewrevisions": "Et goufe keng Versiounen importéiert (se waren al entweder scho virdrun importéiert ginn oder se goufen iwwersprong well Feeler dra waren).",
        "xml-error-string": "$1 an der Zeil $2, Spalt $3, (Byte $4): $5",
        "import-upload": "XML-Daten importéieren",
-       "import-token-mismatch": "D'Date vun ärer Sessioun si verluer gaang.\n\nDir sidd eventuell ausgeloggt ginn. <strong>Kuckt w.e.g. no ob Dir nach ageloggt sidd a probéiert nach eng Kéier</strong>.\nWann et dann nach net geet, probéiert [[Special:UserLogout|Iech auszeloggen]] an duerno nees anzeloggen a kuckt no ob Äre Browser Cookië vun dësem Site akzeptéiert.",
+       "import-token-mismatch": "D'Date vun ärer Sessioun si verluer gaangen.\n\nDir sidd eventuell ausgeloggt ginn. '''Kuckt w.e.g. no ob Dir nach ageloggt sidd a probéiert nach eng Kéier'''.\nWann et dann nach net geet, probéiert [[Special:UserLogout|Iech auszeloggen]] an duerno nees anzeloggen a kuckt no ob Äre Browser Cookië vun dësem Site akzeptéiert.",
        "import-invalid-interwiki": "Aus der Wiki déi Dir uginn hutt kann näischt importéiert ginn.",
        "import-error-edit": "D'Säit \"$1\" gouf net importéiert well Dir se net änneren däerft.",
        "import-error-create": "D'Säit \"$1\" gouf net importéiert well Dir se net uleeën däerft.",
        "compare-invalid-title": "Den Titel deen Dir uginn hutt ass net valabel.",
        "compare-title-not-exists": "Den Titel deen Dir uginn hutt gëtt et net.",
        "compare-revision-not-exists": "D'Versioun déi Dir uginn hutt gëtt et net.",
-       "diff-form": "ein '''Formulair'''",
+       "diff-form": "Ënnerscheeder",
+       "diff-form-submit": "Ënnerscheeder weisen.",
        "dberr-problems": "Pardon! Dëse Site huet technesch Schwieregkeeten.",
        "dberr-again": "Versicht e puer Minutten ze waarden an dann nei ze lueden.",
        "dberr-info": "(D'Datebank kann net erreecht ginn: $1)",
index 5ac4a7e..26757f2 100644 (file)
        "grant-createaccount": "Maak gebroekers aan",
        "grant-createeditmovepage": "Maak, bewirk en verplaats pagina's",
        "grant-delete": "Wösj pagina's, bewirkinge en logbookregele",
+       "grant-editmycssjs": "Bewirk diene CSS/JavaScript",
+       "grant-editmyoptions": "Bewirk dien veurkäöre",
+       "grant-editmywatchlist": "Bewirk dien volglies",
+       "grant-editpage": "Bewirk bestäöndje pagina's",
+       "grant-editprotected": "Bewirk besjurmde pagina's",
        "grant-basic": "Basisrechte",
        "newuserlogpage": "Logbook nuuj gebroekers",
        "newuserlogpagetext": "Hiej ónger saton de nuuj ingesjreve gebroekers.",
index cd63cd6..3dedf8d 100644 (file)
@@ -58,6 +58,7 @@
        "tog-watchlisthideminor": "Скриј ги ситните уредувања во набљудуваните",
        "tog-watchlisthideliu": "Скриј ги уредувањата на најавените корисници во набљудуваните",
        "tog-watchlistreloadautomatically": "Превчитувај ги набљудувањата автоматски кога ќе се смени филтерот (бара JavaScript)",
+       "tog-watchlistunwatchlinks": "Додај непосредни врски до набљудуваните (бара JavaScript)",
        "tog-watchlisthideanons": "Скриј ги уредувањата од анонимни корисници во набљудуваните",
        "tog-watchlisthidepatrolled": "Скриј испатролирани уредувања од мојот список на набљудувања",
        "tog-watchlisthidecategorization": "Сокриј ја категоризацијата на страниците",
        "permissionserrorstext-withaction": "Немате дозвола за $2, од {{PLURAL:$1|следнава причина|следниве причини}}:",
        "contentmodelediterror": "Не можете да ја измените оваа преработка бидејќи нејзиниот содржински модел е <code>$1</code>, што се разликува од тековниот содржински модел на страницата <code>$2</code>.",
        "recreate-moveddeleted-warn": "Внимание: Повторно создавате страница што претходно била бришена.'''\n\nРазмислете дали е правилно да продолжите со уредување на оваа страница.\nПодолу е прикажан дневникот на бришења и преместувања на оваа страница:",
-       "moveddeleted-notice": "Ð\9eваа Ñ\81Ñ\82Ñ\80аниÑ\86а Ð±Ð¸Ð»Ð° Ð¿Ñ\80еÑ\82Ñ\85одно Ð±Ñ\80иÑ\88ена.\nÐ\94невникоÑ\82 Ð½Ð° Ð±Ñ\80иÑ\88еÑ\9aа Ð¸ Ð¿Ñ\80емеÑ\81Ñ\82Ñ\83ваÑ\9aа Ð·Ð° Ð¾Ð²Ð°Ð° Ñ\81Ñ\82Ñ\80аниÑ\86а Ðµ Ð¿Ñ\80икажан Ð¿Ð¾Ð´Ð¾Ð»Ñ\83 Ð·Ð° Ð²Ð°Ñ\88е Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ\82елно Ð¸Ð½Ñ\84оÑ\80миÑ\80аÑ\9aе.",
-       "moveddeleted-notice-recent": "Ð\97а Ð¶Ð°Ð», Ñ\81Ñ\82Ñ\80аниÑ\86ава Ð±ÐµÑ\88е Ð½ÐµÐ¾Ð´Ð°Ð¼Ð½Ð° Ð¸Ð·Ð±Ñ\80иÑ\88ана (во Ð¿Ð¾Ñ\81ледниве 24 Ñ\87аÑ\81а).\nÐ\9fодолÑ\83 Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð³Ð¾ Ð¿Ð¾Ð³Ð»ÐµÐ´Ð°Ñ\82е Ð´Ð½ÐµÐ²Ð½Ð¸ÐºÐ¾Ñ\82 Ð½Ð° Ð±Ñ\80иÑ\88еÑ\9aе Ð¸ Ð¿Ñ\80емеÑ\81Ñ\82Ñ\83ваÑ\9aе.",
+       "moveddeleted-notice": "Ð\9eваа Ñ\81Ñ\82Ñ\80аниÑ\86а Ðµ Ð¸Ð·Ð±Ñ\80иÑ\88ана.\nÐ\94невникоÑ\82 Ð½Ð° Ð±Ñ\80иÑ\88еÑ\9aа Ð¸ Ð¿Ñ\80емеÑ\81Ñ\82Ñ\83ваÑ\9aа Ð·Ð° Ð¾Ð²Ð°Ð° Ñ\81Ñ\82Ñ\80аниÑ\86а Ðµ Ð¿Ñ\80икажан Ð¿Ð¾Ð´Ð¾Ð»Ñ\83.",
+       "moveddeleted-notice-recent": "Ð\97а Ð¶Ð°Ð», Ñ\81Ñ\82Ñ\80аниÑ\86ава Ð±ÐµÑ\88е Ð½ÐµÐ¾Ð´Ð°Ð¼Ð½Ð° Ð¸Ð·Ð±Ñ\80иÑ\88ана (во Ð¿Ð¾Ñ\81ледниве 24 Ñ\87аÑ\81а).\nÐ\9fодолÑ\83 Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð° Ð³Ð¾ Ð¿Ð¾Ð³Ð»ÐµÐ´Ð°Ñ\82е Ð´Ð½ÐµÐ²Ð½Ð¸ÐºÐ¾Ñ\82 Ð½Ð° Ð±Ñ\80иÑ\88еÑ\9aа, Ð·Ð°Ñ\88Ñ\82иÑ\82и Ð¸ Ð¿Ñ\80емеÑ\81Ñ\82Ñ\83ваÑ\9aа.",
        "log-fulllog": "Преглед на целиот дневник",
        "edit-hook-aborted": "Уредувањето е прекинато со пресретник.\nНе е дадено никакво образложение.",
        "edit-gone-missing": "Не можев да ја подновам страницата.\nВеројатно е избришана.",
        "prefs-editwatchlist-clear": "Исчисти набљудувани",
        "prefs-watchlist-days": "Број на денови за приказ во набљудуваните",
        "prefs-watchlist-days-max": "Највеќе $1 {{PLURAL:$1|ден|дена}}",
-       "prefs-watchlist-edits": "Ð\9dаÑ\98веÑ\9cе Ð¿Ñ\80икажани Ð¿Ñ\80омени Ð²Ð¾ Ð¿Ñ\80оÑ\88иÑ\80ениоÑ\82 Ñ\81пиÑ\81ок Ð½Ð° Ð½Ð°Ð±Ñ\99Ñ\83дÑ\83ваÑ\9aа:",
+       "prefs-watchlist-edits": "Ð\9dаÑ\98веÑ\9cе Ð¿Ñ\80икажани Ð¿Ñ\80омени Ð²Ð¾ Ð½Ð°Ð±Ñ\99Ñ\83дÑ\83ваÑ\9aаÑ\82а:",
        "prefs-watchlist-edits-max": "Највеќе: 1000",
        "prefs-watchlist-token": "Шифра на набљудувањата:",
        "prefs-misc": "Други нагодувања",
        "rcfilters-savedqueries-add-new-title": "Зачувај тековни филтерски поставки",
        "rcfilters-restore-default-filters": "Поврати основни филтри",
        "rcfilters-clear-all-filters": "Тргни ги сите филтри",
-       "rcfilters-show-new-changes": "Прикажи нови промени",
+       "rcfilters-show-new-changes": "Погл. најнови промени",
        "rcfilters-previous-changes-label": "Претходно прегледани промени",
        "rcfilters-search-placeholder": "Филтрирај скорешни промени (прелстајте или почнете да пишувате)",
        "rcfilters-invalid-filter": "Неважечки филтер",
        "watching": "Набљудување...",
        "unwatching": "Отстранувам од набљудувани...",
        "watcherrortext": "Се појави грешка при менувањето на вашите нагодувања набљудуваните за „$1“.",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "Означи ги сите страници како посетени",
        "enotif_impersonal_salutation": "Википедија корисник",
        "enotif_subject_deleted": "Страницата $1 на {{SITENAME}} е избришана од {{gender:$2|$2}}",
        "import-nonewrevisions": "Не увезов ниедна преработка (сите се веќе присутни или изоставени поради грешки)",
        "xml-error-string": "$1 во ред $2, колона $3 (бајт $4): $5",
        "import-upload": "Подигни XML податоци",
-       "import-token-mismatch": "Загубени седничките податоци.\n\nМоже да сте биле одјавени. <strong>Проверете дали сè уште сте најавени и обидете се повторно</strong>.\nАко проблемот продолжи да се јавува, [[Special:UserLogout|одјавете се]] и повторно најавете се, и проверете дали прелистувачот дозволува колачиња од ова мрежно место.",
+       "import-token-mismatch": "Загубени седничките податоци.\n\nМоже да сте биле одјавени. '''Проверете дали сè уште сте најавени и обидете се повторно'''.\nАко проблемот продолжи да се јавува, [[Special:UserLogout|одјавете се]] и повторно најавете се, и проверете дали прелистувачот дозволува колачиња од ова мрежно место.",
        "import-invalid-interwiki": "Не можам да увезам од наведеното вики.",
        "import-error-edit": "Страницата „$1“ не е увезена бидејќи не ви е дозволено да ја уредувате.",
        "import-error-create": "Страницата „$1“ не е увезена бидејќи не ви е дозволено да ја создадете.",
        "compare-invalid-title": "Наведениот наслов е неважечки.",
        "compare-title-not-exists": "Наведениот наслов не постои.",
        "compare-revision-not-exists": "Наведената преработка не постои.",
-       "diff-form": "'''образец'''",
+       "diff-form": "Разлики",
+       "diff-form-oldid": "Назнака на старата преработка (незадолж.)",
+       "diff-form-revid": "Назнака на преработката на разликата",
+       "diff-form-submit": "Прик. разлики",
+       "permanentlink": "Постојана врска",
+       "permanentlink-revid": "Назнака на преработката",
+       "permanentlink-submit": "Оди на преработката",
        "dberr-problems": "Жалиме! Ова мрежно место се соочува со технички потешкотии.",
        "dberr-again": "Почекајте неколку минути и обидете се повторно.",
        "dberr-info": "(Не можам да пристапам кон базата: $1)",
        "mediastatistics-header-text": "Текстуални",
        "mediastatistics-header-executable": "Извршни",
        "mediastatistics-header-archive": "Збиени формати",
+       "mediastatistics-header-3d": "3Д",
        "mediastatistics-header-total": "Сите податотеки",
        "json-warn-trailing-comma": "{{PLURAL:$1|Отстранета е една завршна запирка|Отстранети се $1 завршни запирки}} од JSON",
        "json-error-unknown": "Се јави проблем со JSON. Грешка: $1.",
index 68f0ce2..2b4ff60 100644 (file)
        "permissionserrorstext-withaction": "तुम्हाला $2 क्रियेची परवानगी नाही, खालील {{PLURAL:$1|कारणासाठी|कारणांसाठी}}:",
        "contentmodelediterror": "ही आवृत्ती आपण संपादू शकत नाही कारण त्याचा आशय-आराखडा (कंटेन्ट मॉडेल)<code>$1</code> आहे व सध्याच्या <code>$2</code> पानाचा आशय आराखडा वेगळा आहे.",
        "recreate-moveddeleted-warn": "'''सूचना: पूर्वी वगळलेला लेख तुम्ही पुन्हा बनवित आहात.'''\n\nआपण याचा विचार करा कि या पानाचे संपादन यापुढे करणे योग्य आहे काय.या पानाच्या वगळण्याच्या व स्थानांतराच्या नोंदी आपल्या (कामाच्या) सुलभतेसाठी दिलेल्या आहेत:",
-       "moveddeleted-notice": "हà¥\87 à¤ªà¤¾à¤¨ à¤µà¤\97ळणà¥\8dयात à¤\86लà¥\87लà¥\87 à¤\86हà¥\87.\nसà¤\82दरà¥\8dभासाठà¥\80, à¤µà¤\97ळणà¥\8dयाà¤\9aà¥\80 à¤µ à¤¸à¥\8dथानाà¤\82तराà¤\9aà¥\80 à¤¨à¥\8bà¤\82द à¤\96ालà¥\80 à¤¦à¤¿à¤²à¥\87लà¥\80 à¤\86हà¥\87.",
-       "moveddeleted-notice-recent": "माफ करा,हे पान अलीकडेच (मागील २४ तासात) वगळल्या गेले आहे.हा पानाच्या वगळण्याचा व हलविण्याचा लॉग संदर्भासाठी खाली दिला आहे.",
+       "moveddeleted-notice": "हà¥\87 à¤ªà¤¾à¤¨ à¤µà¤\97ळणà¥\8dयात à¤\86लà¥\87लà¥\87 à¤\86हà¥\87.\nया à¤ªà¤¾à¤¨à¤¾à¤\9aà¥\87 à¤µà¤\97ळणà¥\8dयाà¤\9aà¥\87,व à¤¸à¥\8dथानाà¤\82तरणाà¤\9aà¥\87 à¤²à¥\89à¤\97 à¤¸à¤\82दरà¥\8dभासाठà¥\80 à¤\96ालà¥\80 à¤¦à¤¿à¤²à¥\87 à¤\86हà¥\87त.",
+       "moveddeleted-notice-recent": "माफ करा,हे पान अलीकडेच (मागील २४ तासात) वगळल्या गेले आहे.\nया पानाचे वगळण्याचे,व स्थानांतरणाचे लॉग संदर्भासाठी खाली दिले आहेत.",
        "log-fulllog": "पूर्ण नोंदी पहा",
        "edit-hook-aborted": "हूकद्वारे संपादन रद्द.\nकारण दिलेले नाही.",
        "edit-gone-missing": "नविन पृष्ठ अद्यतन करता आले नाही. ते वगळले असण्याची शक्यता आहे.",
        "prefs-editwatchlist-clear": "आपली निरीक्षणसूची साफ(क्लिअर) करा",
        "prefs-watchlist-days": "निरीक्षणसूचीमध्ये दिसणाऱ्या दिवसांची संख्या:",
        "prefs-watchlist-days-max": "जास्तीत जास्त $1 {{PLURAL:$1|दिवस|दिवस}}",
-       "prefs-watchlist-edits": "वाढà¥\80व à¤¨à¤¿à¤°à¥\80à¤\95à¥\8dषणसà¥\82à¤\9aà¥\80मधà¥\8dयà¥\87 à¤¦à¤¿à¤¸à¤£à¤¾à¤±à¥\8dया à¤¸à¤\82पादनाà¤\82à¤\9aà¥\80 संख्या:",
+       "prefs-watchlist-edits": "निरà¥\80à¤\95à¥\8dषणसà¥\82à¤\9aà¥\80मधà¥\8dयà¥\87 à¤¦à¤¿à¤¸à¤£à¤¾à¤±à¥\8dया à¤¸à¤\82पादनाà¤\82à¤\9aà¥\80 à¤®à¤¹à¤¤à¥\8dतम संख्या:",
        "prefs-watchlist-edits-max": "अधिकतम अंक:  १०००.",
        "prefs-watchlist-token": "निरीक्षणसूचीचा बिल्ला:",
        "prefs-misc": "किरकोळ",
        "rcfilters-invalid-filter": "अवैध गाळणी",
        "rcfilters-filterlist-title": "गाळण्या",
        "rcfilters-filterlist-noresults": "कोणतीच गाळणी सापडली नाही",
-       "rcfilters-filtergroup-registration": "सदस्य नोंदणी",
-       "rcfilters-filter-registered-label": "नोंदणीकृत",
-       "rcfilters-filter-registered-description": "प्रवेशलेले सदस्य",
-       "rcfilters-filter-unregistered-label": "अ-नोंदणीकृत",
-       "rcfilters-filter-unregistered-description": "संपादक जे प्रवेशित नाहीत.",
        "rcfilters-filtergroup-authorship": "संपादनाचा लेखक",
        "rcfilters-filter-editsbyself-label": "आपली स्वत:ची संपादने",
        "rcfilters-filter-editsbyself-description": "आपली संपादने",
        "rcfilters-filter-editsbyother-label": "इतरांची संपादने",
        "rcfilters-filter-editsbyother-description": "इतर सदस्यांनी तयार केलेली संपादने (आपण नाही).",
        "rcfilters-filtergroup-userExpLevel": "अनुभवाचा स्तर (फक्त नोंदणीकृत सदस्यांसाठीच)",
+       "rcfilters-filter-user-experience-level-registered-label": "नोंदणीकृत",
+       "rcfilters-filter-user-experience-level-registered-description": "प्रवेशलेले सदस्य",
+       "rcfilters-filter-user-experience-level-unregistered-label": "अ-नोंदणीकृत",
+       "rcfilters-filter-user-experience-level-unregistered-description": "संपादक जे प्रवेशित नाहीत.",
        "rcfilters-filter-user-experience-level-newcomer-label": "नवागत",
        "rcfilters-filter-user-experience-level-newcomer-description": "१० संपादनांपेक्षा कमी व ४ दिवसांची सक्रियता.",
        "rcfilters-filter-user-experience-level-learner-label": "शिकाऊ",
        "fileduplicatesearch-noresults": "\"$1\" या नावाची संचिका सापडली नाही.",
        "specialpages": "विशेष पृष्ठे",
        "specialpages-note-top": "विवरण",
-       "specialpages-note": "* सर्वसाधारण विशेष पृष्ठे.\n* <span class=\"mw-specialpagerestricted\">प्रतिबंधित विशेष पृष्ठे.</span>",
        "specialpages-group-maintenance": "व्यवस्थापन अहवाल",
        "specialpages-group-other": "इतर विशेष पृष्ठे",
        "specialpages-group-login": "प्रवेश / नवीन सदस्य नोंदणी",
index b164c2e..1a0dc94 100644 (file)
        "permissionserrorstext": "အောက်ပါ {{PLURAL:$1|အကြောင်းပြချက်|အကြောင်းပြချက်များ}}ကြောင့် ထိုအရာအတွက် ခွင့်ပြုချက်မရှိပါ -",
        "permissionserrorstext-withaction": "အောက်ပါ အကြောင်းပြချက် {{PLURAL:$1|ခု|ခု}} ကြောင့် $2 အတွက် ခွင့်ပြုချက်မရှိပါ -",
        "recreate-moveddeleted-warn": "'''သတိပေးချက်။ သင်သည် ယခင်က ဖျက်ထားသော စာမျက်နှာတစ်ခုကို ပြန်လည်ဖန်တီးနေသည်။'''\n\nသင့်အနေနှင့် ဤစာမျက်နှာကို ဆက်လက်တည်းဖြတ်ရန် သင့်တော်မည် မသင့်တော်မည်ကို စဉ်းစားသင့်သည်။\nဖျက်ထားခြင်း နှင့် ရွှေ့ထားခြင်းတို့၏ မှတ်တမ်းကို သင့်အတွက် အလွယ်တကူ ကိုးကားနိုင်ရန် ဖော်ပြထားသည်။",
-       "moveddeleted-notice": "ဤစာမျက်နှာကို ဖျက်ထားသည်။\nဖျက်ထားခြင်း ရွှေ့ဆိုင်းထားခြင်းတို့နှင့် ပတ်သက်သော မှတ်တမ်းကို ကိုးကားနိုင်ရန် အောက်တွင် ဖော်ပြထားသည်။",
+       "moveddeleted-notice": "ဤစာမျက်နှာကို ဖျက်ထားသည်။\nဖျက်ထားခြင်း၊ ကာကွယ်ထားခြင်းနှင့် ရွှေ့ပြောင်းထားခြင်းတို့နှင့် ပတ်သက်သော မှတ်တမ်းကို ကိုးကားနိုင်ရန် အောက်တွင် ဖော်ပြထားသည်။",
        "log-fulllog": "မှတ်တမ်းအပြည့်အစုံကြည့်ရန်",
        "edit-gone-missing": "စာမျက်နှာကို အပ်ဒိတ်မလုပ်နိုင်ပါ။\nအဖျက်ခံလိုက်ရပုံပေါ်သည်။",
        "edit-conflict": "အငြင်းပွားမှုကို တည်းဖြတ်ရန်။",
        "fileduplicatesearch-filename": "ဖိုင်အမည် -",
        "fileduplicatesearch-submit": "ရှာဖွေရန်",
        "specialpages": "အထူး စာမျက်နှာများ",
-       "specialpages-note": "* ပုံမှန် အထူးစာမျက်နှာများ။\n* <span class=\"mw-specialpagerestricted\">ကန့်သတ်ထားသော အထူးစာမျက်နှာများ။</span>",
+       "specialpages-note-restricted": "* ပုံမှန် အထူးစာမျက်နှာများ။\n* <span class=\"mw-specialpagerestricted\">ကန့်သတ်ထားသော အထူးစာမျက်နှာများ။</span>",
        "specialpages-group-maintenance": "ထိန်းသိမ်းမှု အစီရင်ခံချက်များ",
        "specialpages-group-other": "အခြားအထူးစာမျက်နှာများ",
        "specialpages-group-login": "Log in ဝင်ရန်/ အကောင့် ဖန်တီးရန်",
index a8a0287..562a819 100644 (file)
        "permissionserrorstext-withaction": "Du har ikke tillatelse til å $2 {{PLURAL:$1|fordi|av følgende grunner}}:",
        "contentmodelediterror": "Du kan ikke redigere denne revisjonen fordi innholdsmodellen er <code>$1</code>, som avviker fra den nåværende innholdsmodellen til siden <code>$2</code>.",
        "recreate-moveddeleted-warn": "Advarsel: Du er i ferd med å opprette en side som tidligere har blitt slettet.'''\n\nDu bør vurdere om det er passende å fortsette å redigere denne siden.\nSlette- og flytteloggen for denne siden gjengis her:",
-       "moveddeleted-notice": "Denne siden har blitt slettet.\nSlette- og flytteloggen vises nedenfor.",
-       "moveddeleted-notice-recent": "Beklager, denne siden er nylig blitt slettet (i løpet av de siste 24 timer)\nSlette- og flytteloggen for siden er angitt nedenfor for referanse.",
+       "moveddeleted-notice": "Denne siden har blitt slettet.\nSlette-, beskyttelses- og flytteloggen vises nedenfor.",
+       "moveddeleted-notice-recent": "Beklager, denne siden er nylig blitt slettet (i løpet av de siste 24 timer)\nSlette-, beskyttelses- og flytteloggen for siden er angitt nedenfor for referanse.",
        "log-fulllog": "Vis hele loggen",
        "edit-hook-aborted": "Redigering avbrutt av en funksjon, uten forklaring.",
        "edit-gone-missing": "Kunne ikke oppdatere siden fordi den har blitt slettet.",
        "compare-invalid-title": "Tittelen du oppga er ugyldig.",
        "compare-title-not-exists": "Tittelen du oppga eksisterer ikke.",
        "compare-revision-not-exists": "Versjonen du oppga eksisterer ikke.",
-       "diff-form": "et '''skjema'''",
+       "diff-form": "Forskjeller",
+       "diff-form-oldid": "Gammel revisjons-ID (valgfritt)",
+       "diff-form-revid": "Revisjons-ID for diffen",
+       "diff-form-submit": "Vis forskjeller",
+       "permanentlink": "Permanent lenke",
+       "permanentlink-revid": "Revisjons-ID",
+       "permanentlink-submit": "Gå til revisjon",
        "dberr-problems": "Siden har tekniske problemer.",
        "dberr-again": "Prøv å oppdatere siden om noen minutter.",
        "dberr-info": "(Kan ikke kontakte databasetjeneren: $1)",
index d6af041..1c863bd 100644 (file)
        "watching": "Bezig met plaatsen op volglijst…",
        "unwatching": "Bezig met verwijderen van volglijst…",
        "watcherrortext": "Er is een fout opgetreden tijdens het wijzigen van uw volglijstinstellingen voor \"$1\".",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "Alle pagina's markeren als bezocht",
        "enotif_impersonal_salutation": "gebruiker van {{SITENAME}}",
        "enotif_subject_deleted": "{{SITENAME}}: pagina $1 is verwijderd door {{GENDER:$2|$2}}",
        "compare-invalid-title": "De opgegeven pagina is ongeldig.",
        "compare-title-not-exists": "De titel die u hebt opgegeven bestaat niet.",
        "compare-revision-not-exists": "De versie die u hebt opgegeven bestaat niet.",
-       "diff-form": "een '''formulier'''",
+       "diff-form": "Wijzigingen",
+       "diff-form-revid": "Versienummer van de wijziging",
+       "diff-form-submit": "Verschillen weergeven",
+       "permanentlink": "Permanente koppeling",
+       "permanentlink-revid": "Versienummer",
+       "permanentlink-submit": "Naar versie gaan",
        "dberr-problems": "Onze excuses. Deze site ondervindt op het moment technische problemen.",
        "dberr-again": "Wacht een aantal minuten en probeer het daarna opnieuw.",
        "dberr-info": "(Kan geen toegang krijgen tot de database: $1)",
index 80abf26..416b587 100644 (file)
        "rcfilters-filter-previousrevision-description": "Alle endringar som ikkje er den siste versjonen.",
        "rcfilters-filter-excluded": "Utelate",
        "rcfilters-exclude-button-off": "Utelat dei valde",
+       "rcfilters-view-advanced-filters-label": "Avanserte filter",
        "rcfilters-view-tags": "Endringar med merke",
        "rcfilters-view-namespaces-tooltip": "Filtrer resultat etter namnerom",
        "rcfilters-view-tags-tooltip": "Filtrer resultat etter endringsmerke",
        "revdelete-unrestricted": "fjerna avgrensingar for administratorar",
        "logentry-block-block": "$1 {{GENDER:$2|blokkerte}} {{GENDER:$4|$3}} for $5 $6",
        "logentry-suppress-reblock": "$1 {{GENDER:$2|endra}} blokkeringsinnstillingar for {{GENDER:$4|$3}} med opphøyrstid $5 $6",
+       "logentry-merge-merge": "$1 {{GENDER:$2|fletta}} $3 inn i $4 (versjonar til og med $5)",
        "logentry-move-move": "$1 {{GENDER:$2|flytte}} sida $3 til $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|flytte}} sida $3 til $4 utan å lata etter ei omdirigering",
        "logentry-move-move_redir": "$1 {{GENDER:$2|flytte}} sida $3 til $4 over ei omdirigering",
index 8981944..01eb029 100644 (file)
        "compare-invalid-title": "Tytuł jest nieprawidłowy.",
        "compare-title-not-exists": "Podany tytuł nie istnieje.",
        "compare-revision-not-exists": "Wybrana wersja nie istnieje.",
-       "diff-form": "'''formularz'''",
+       "diff-form": "Różnice",
+       "diff-form-oldid": "ID starej wersji",
+       "diff-form-revid": "ID wersji ze zmianą",
+       "diff-form-submit": "Pokaż różnice",
+       "permanentlink": "Link trwały do wersji",
+       "permanentlink-revid": "ID wersji",
+       "permanentlink-submit": "Przejdź do wersji",
        "dberr-problems": "Przepraszamy! Witryna ma problemy techniczne.",
        "dberr-again": "Spróbuj przeładować stronę za kilka minut.",
        "dberr-info": "(Błąd łączności z bazą danych: $1)",
index 0ea4932..4e06940 100644 (file)
        "tog-watchlisthideminor": "Ocultar edições menores da lista de páginas vigiadas",
        "tog-watchlisthideliu": "Ocultar edições de usuários autenticados da lista de páginas vigiadas",
        "tog-watchlistreloadautomatically": "Recarregar a lista de páginas vigiadas automaticamente sempre que um filtro for alterado (requer JavaScript)",
+       "tog-watchlistunwatchlinks": "Adicione links diretos de despertar/assistir a entradas da lista de observação (JavaScript necessário para a funcionalidade de alternância)",
        "tog-watchlisthideanons": "Ocultar edições de usuários anônimos da lista de páginas vigiadas",
        "tog-watchlisthidepatrolled": "Ocultar edições patrulhadas da lista de páginas vigiadas",
        "tog-watchlisthidecategorization": "Ocultar a categorização das páginas",
        "watching": "Vigiando...",
        "unwatching": "Deixando de vigiar...",
        "watcherrortext": "Ocorreu um erro ao alterar a configuração da sua lista de páginas vigiadas para \"$1\".",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "Marcar todas as páginas como visitadas",
        "enotif_impersonal_salutation": "Usuário do projeto \"{{SITENAME}}\"",
        "enotif_subject_deleted": "A página $1 da {{SITENAME}} foi eliminada por {{gender:$2|$2}}",
        "compare-invalid-title": "O título que você especificou é inválido.",
        "compare-title-not-exists": "O título que você especificou não existe.",
        "compare-revision-not-exists": "A revisão que você especificou não existe.",
-       "diff-form": "um '''formulário'''",
+       "diff-form": "Diferenças",
+       "diff-form-oldid": "ID de revisão antiga (opcional)",
+       "diff-form-revid": "ID de revisão da diferença",
+       "diff-form-submit": "Mostrar diferenças",
+       "permanentlink": "Ligação permanente",
+       "permanentlink-revid": "ID da revisão",
+       "permanentlink-submit": "Ir para revisão",
        "dberr-problems": "Desculpe! Este sítio está passando por dificuldades técnicas.",
        "dberr-again": "Experimente esperar alguns minutos e atualizar.",
        "dberr-info": "(Não pode acessar a base de dados: $1)",
index 86ccb5e..cafc398 100644 (file)
        "permissionserrorstext-withaction": "Não possui permissão para $2, {{PLURAL:$1|pelo seguinte motivo|pelos seguintes motivos}}:",
        "contentmodelediterror": "Não pode editar esta revisão porque o modelo de conteúdo é <code>$1</code>, que é diferente do modelo atual da página <code>$2</code>.",
        "recreate-moveddeleted-warn": "<strong>Aviso: Está a recriar uma página anteriormente eliminada.</strong>\n\nVerifique se é apropriado continuar a editar esta página.\nPara sua conveniência, é apresentado abaixo o registo de eliminação e movimentação da página:",
-       "moveddeleted-notice": "Esta página foi eliminada.\nPara sua referência, é apresentado abaixo o registo de eliminação e movimentação da página.",
-       "moveddeleted-notice-recent": "Desculpe, esta página foi eliminada recentemente (nas últimas 24 horas).\nA exclusão e registo de movimentação para a página são fornecidos abaixo para referência.",
+       "moveddeleted-notice": "Esta página foi eliminada.\nPara sua referência, é apresentado abaixo o registo de eliminação, proteção e movimentação da página.",
+       "moveddeleted-notice-recent": "Desculpe, esta página foi eliminada recentemente (nas últimas 24 horas).\nPara sua referência é apresentado abaixo o registo de eliminação, proteção e movimentação da página.",
        "log-fulllog": "Ver registo detalhado",
        "edit-hook-aborted": "A edição foi abortada por um hook.\nNão foi dada nenhuma explicação.",
        "edit-gone-missing": "Não foi possível atualizar a página.\nEla parece ter sido eliminada.",
        "prefs-editwatchlist-clear": "Limpar lista de páginas vigiadas",
        "prefs-watchlist-days": "Dias a mostrar nas mudanças às páginas vigiadas:",
        "prefs-watchlist-days-max": "Máximo: $1 {{PLURAL:$1|dia|dias}}",
-       "prefs-watchlist-edits": "Número de edições a mostrar na listagem expandida:",
+       "prefs-watchlist-edits": "Número máximo de edições a mostrar na lista de vigiadas:",
        "prefs-watchlist-edits-max": "Máximo: 1000",
        "prefs-watchlist-token": "Chave secreta da lista de páginas vigiadas:",
        "prefs-misc": "Diversos",
        "compare-invalid-title": "O título que especificou é inválido.",
        "compare-title-not-exists": "O título que especificou não existe.",
        "compare-revision-not-exists": "A revisão que especificou não existe.",
-       "diff-form": "um '''formulário'''",
+       "diff-form": "Diferenças",
+       "diff-form-oldid": "Identificador de revisão antigo (opcional)",
+       "diff-form-revid": "Identificador de revisão da diferença",
+       "diff-form-submit": "Mostrar diferenças",
+       "permanentlink": "Link permanente",
+       "permanentlink-revid": "Identificador de revisão",
+       "permanentlink-submit": "Ir para a revisão",
        "dberr-problems": "Desculpe! Este site está com dificuldades técnicas.",
        "dberr-again": "Experimente esperar alguns minutos e atualizar.",
        "dberr-info": "(Não foi possível aceder ao servidor da base de dados: $1)",
index f8d050f..f7b176c 100644 (file)
        "tog-watchlisthidebots": "[[Special:Preferences]], tab 'Watchlist'. Offers user to hide bot edits from watchlist. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}",
        "tog-watchlisthideminor": "[[Special:Preferences]], tab 'Watchlist'. Offers user to hide minor edits from watchlist. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}",
        "tog-watchlisthideliu": "Option in tab 'Watchlist' of [[Special:Preferences]]. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}",
-       "tog-watchlistreloadautomatically": "[[Special:Preferences]], tab 'Watchlist'. Offers user to to automatically refresh the watchlist page, when a filter is changed.",
+       "tog-watchlistreloadautomatically": "[[Special:Preferences]], tab 'Watchlist'. Offers user to automatically refresh the watchlist page, when a filter is changed.",
+       "tog-watchlistunwatchlinks": "[[Special:Preferences]], tab 'Watchlist'. Offers user to add an unwatch/watch toggle link to watchlist entries.",
        "tog-watchlisthideanons": "Option in tab 'Watchlist' of [[Special:Preferences]]. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}",
        "tog-watchlisthidepatrolled": "Option in Watchlist tab of [[Special:Preferences]]. {{Gender}}\n\n{{Related|Preferences-watchlistrc-toggle}}",
        "tog-watchlisthidecategorization": "Option in Watchlist tab of [[Special:Preferences]]. Offers user to hide/show categorization of pages. Appears next to checkboxes with labels such as {{msg-mw|tog-watchlisthideminor}}.",
        "watching": "Text displayed when clicked on the watch tab: {{msg-mw|Watch}}. It means the wiki is adding that page to your watchlist.",
        "unwatching": "Text displayed when clicked on the unwatch tab: {{msg-mw|Unwatch}}. It means the wiki is removing that page from your watchlist.",
        "watcherrortext": "When a user clicked the watch/unwatch tab and the action did not succeed, this message is displayed.\n\nThis message is used raw and should not contain wikitext.\n\nParameters:\n* $1 - ...\nSee also:\n* {{msg-mw|Addedwatchtext}}",
+       "watchlist-unwatch": "Symbol used for the link to unwatch a page from the watchlist.",
+       "watchlist-unwatch-undo": "Symbol used for the link to re-watch a page that has been unwatched from the watchlist.",
        "enotif_reset": "Used in [[Special:Watchlist]].\n\nThis should be translated as \"Mark all pages '''as''' visited\".\n\nSee also:\n* {{msg-mw|Watchlist-options|fieldset}}\n* {{msg-mw|Watchlist-details|watchlist header}}\n* {{msg-mw|Wlheader-enotif|watchlist header}}",
        "enotif_impersonal_salutation": "Used for impersonal e-mail notifications, suitable for bulk mailing.\n{{Identical|User}}",
        "enotif_subject_deleted": "Email notification subject for deleted pages. Parameters:\n* $1 - page title\n* $2 - username who has deleted the page, can be used for GENDER",
        "compare-invalid-title": "Used as error message in [[Special:ComparePages]].",
        "compare-title-not-exists": "Used as error message in [[Special:ComparePages]].",
        "compare-revision-not-exists": "Used as error message in [[Special:ComparePages]].",
-       "diff-form": "The title of [[Special:Diff]]",
+       "diff-form": "The title of [[Special:Diff]]\n{{Identical|Difference}}",
        "diff-form-oldid": "Label for the field of the old revision in the comparison for [[Special:Diff]]",
        "diff-form-revid": "Label for the field of the new revision in the comparison for [[Special:Diff]]",
        "diff-form-submit": "Submit button on [[Special:Diff]]",
index 4fb3318..cc85e3b 100644 (file)
@@ -15,7 +15,7 @@
        "underline-always": "ⵍⴱⴷⴰ",
        "sunday": "ⴰⵙⴰⵎⴰⵙ",
        "monday": "ⴰⵢⵏⴰⵙ",
-       "tuesday": "Asinas (Ettřata)",
+       "tuesday": "ⴰⵙⵉⵏⴰⵙ",
        "wednesday": "Akṛas (Řarbeɛ)",
        "thursday": "ⴰⴽⵡⴰⵙ",
        "friday": "ⴰⵙⵉⵎⵡⴰⵙ",
@@ -73,7 +73,7 @@
        "november-date": "$1 ⵏⵓⵡⴰⵏⴱⵉⵔ",
        "december-date": "$1 ⴷⵓⵊⴰⵏⴱⵉⵔ",
        "pagecategories": "{{PLURAL:$1|ⴰⵙⵎⵉⵍ|ⵉⵙⵎⵉⵍⵏ}}",
-       "category_header": "âµ\9câ´°âµ\99âµ\8fâµ\89ⵡâµ\89âµ\8f â´³ ⵜⴰⴳⴳⴰⵢⵜ \"$1\"",
+       "category_header": "âµ\9câ´°âµ\99âµ\8fâµ\89ⵡâµ\89âµ\8f â´·âµ\89 ⵜⴰⴳⴳⴰⵢⵜ \"$1\"",
        "subcategories": "ⵉⴷⵓⵙⵎⵉⵍⵏ",
        "category-media-header": "Media di category \"$1\"",
        "category-empty": "''Taggayt a war dags bu ca n Tasna niɣ ca n umedia.''",
        "mypage": "ⵜⴰⵙⵏⴰ",
        "mytalk": "ⴰⵎⵙⴰⵡⴰⵍ",
        "anontalk": "ⴰⵎⵙⴰⵡⴰⵍ",
-       "navigation": "Tagriwa",
+       "navigation": "ⴰⵙⵜⴰⵔⴰ",
        "and": "&#32;ⴷ",
        "actions": "ⵜⵉⴳⴰⵡⵉⵏ",
        "errorpagetitle": "ⵜⴰⵣⴳⵍⵜ",
        "returnto": "Dwl ghar $1.",
-       "tagline": "Zi {{SITENAME}}",
+       "tagline": "ⵣⵉ {{SITENAME}}",
        "help": "ⵜⵉⵡⵉⵙⵉ",
        "search": "ⵔⵣⵓ",
        "searchbutton": "ⵔⵣⵓ",
        "printableversion": "Tanghelt n usiggez",
        "permalink": "Tamghunt iqqimen",
        "edit": "ⵙⵏⴼⵍ",
-       "create": "Egg",
+       "create": "ⵙⵏⵓⵍⴼⵓ",
        "delete": "ⴽⴽⵙ",
        "protect": "Mstn",
        "protect_change": "ⵙⵏⴼⵍ",
        "talkpagelinktext": "ⴰⵎⵙⴰⵡⴰⵍ",
        "personaltools": "Imassen inu",
        "talk": "ⴰⵎⵙⴰⵡⴰⵍ",
-       "views": "Timmeẓṛa",
+       "views": "ⵜⴰⵏⵏⴰⵢⵉⵏ",
        "toolbox": "ⵉⵎⴰⵙⵙⵏ",
-       "otherlanguages": "S tutlayin nneḍni",
+       "otherlanguages": "ⵙ ⵜⵓⵜⵍⴰⵢⵉⵏ ⵏⵏⵉⴹⵏ",
        "redirectedfrom": "(Itwasnnmd-d zi $1)",
        "redirectpagesub": "Tasna n (Redirect)",
        "jumpto": "Nḍu ghar:",
-       "jumptonavigation": "tagriwa",
+       "jumptonavigation": "ⴰⵙⵜⴰⵔⴰ",
        "jumptosearch": "ⵔⵣⵓ",
        "aboutsite": "ⵅⴼ {{SITENAME}}",
        "aboutpage": "Project:ⵅⴼ",
        "group-bot": "ⵉⵔⵓⴱⵓⵜⵏ",
        "group-sysop": "Indbaln",
        "group-all": "(ⵎⴰⵔⵔⴰ)",
+       "grouppage-bot": "{{ns:project}}:ⵉⵔⵓⴱⵓⵜⵏ",
        "grouppage-sysop": "{{ns:project}}:inedbalen",
        "right-read": "ⵖⵔ ⵜⴰⵙⵏⵉⵡⵉⵏ",
        "right-edit": "ⵙⵏⴼⵍ ⵜⴰⵙⵏⵉⵡⵉⵏ",
        "enhancedrc-history": "ⴰⵎⵣⵔⵓⵢ",
        "recentchanges": "ⵉⵙⵏⴼⵉⵍⵏ ⵉⵏⴳⴳⵓⵔⴰ",
        "recentchanges-feed-description": "Bbar tiẓṛigin timayutin n wiki deg usudem(feed) a .",
+       "recentchanges-label-newpage": "ⵉⵙⵏⵓⵍⴼⴰ ⵓⵙⵏⴼⵍ ⴰ ⵉⵛⵜ ⵏ ⵜⴰⵙⵏⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ",
        "recentchanges-label-minor": "ⵡⴰ ⴷ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ",
        "recentchanges-label-bot": "ⴰⵙⵏⴼⵍ ⴰ ⵉⴳⴳⴰ ⵜ ⵉⵊⵊ ⵏ ⵓⵔⵓⴱⵓ",
        "rcfilters-savedqueries-new-name-label": "ⵉⵙⵎ",
        "rclinks": "Ẓar $1 tiẓṛigin tinggura di $2 n ussan inggura",
        "diff": "ⴰⵎⵣⴰⵔⴰⵢ",
        "hist": "ⴰⵎⵣⵔⵓⵢ",
-       "hide": "Snuffar",
+       "hide": "ⵙⵏⵓⴼⴼⵔ",
        "show": "semmel-d",
        "minoreditletter": "ⵎⵥⵢ",
        "newpageletter": "ⵎⵢⵏ",
        "download": "ⴰⴳⵎ",
        "listredirects": "Ẓar (redirects)",
        "unusedtemplates": "Timudmiwin war twasexedment",
-       "randompage": "Tasna mamec ma tella",
+       "randompage": "ⵜⴰⵙⵏⴰ ⵜⴰⴷⵀⵎⴰⵙⵜ",
        "randomincategory-category": "ⴰⵙⵎⵉⵍ:",
        "randomincategory-submit": "Raḥ ɣa",
        "randomredirect": "(redirect) zi ṭṭarf",
-       "statistics": "tisiḍanin",
+       "statistics": "ⵉⵙⵉⴹⵏⴻⵏ",
        "statistics-articles": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵜⵓⵎⴰⵢⵜ",
        "statistics-pages": "ⵜⴰⵙⵏⵉⵡⵉⵏ",
        "doubleredirects": "(redirects) ɛɛawdent",
        "sp-contributions-newbies-sub": "i imiḍan imaynuten",
        "sp-contributions-blocklog": "sbdd tabdart n talghut",
        "sp-contributions-talk": "ⵎⵙⴰⵡⵍ",
-       "sp-contributions-search": "Arzu x tiggawin",
+       "sp-contributions-search": "ⵔⵣⵓ ⵅ ⵜⵓⵎⵓⵜⵉⵏ",
        "sp-contributions-username": "Tansa IP d isem useqdac:",
        "sp-contributions-submit": "ⵔⵣⵓ",
        "whatlinkshere": "ⵎⵉⵏ ⵉⵇⵇⵏⴻⵏ ⵖⵔ ⴷⴰ",
        "whatlinkshere-hidelinks": "$1 timqqan",
        "blockip": "Sbdd asqdac a",
        "ipbreason": "ⵜⴰⵎⵏⵜⵉⵍⵜ:",
-       "ipboptions": "2 âµ\9câµ\99âµ\94â´°â´³âµ\89âµ\8f:2 hours,1 âµ¡â´°âµ\99âµ\99:1 day,3 âµ¡âµ\93âµ\99âµ\99â´°âµ\8f:3 days,1 âµ\89âµ\8eâ´°âµ\8dâ´°âµ\99âµ\99:1 week,2 âµ\89âµ\8eâ´°âµ\8dâ´°âµ\99âµ\99âµ\8f:2 weeks,1 âµ¡â´°âµ¢âµ¢âµ\93âµ\93âµ\94:1 month,3 âµ¡â´°âµ¢âµ¢âµ\93âµ\94âµ\8f:3 months,6 âµ¡â´°âµ¢âµ¢âµ\93âµ\94âµ\8f:6 months,1 âµ\93âµ\99ⴳⴳⵯⴰâµ\99:1 year,âµ\8dⴱⴷⴰ:infinite",
+       "ipboptions": "2 ⵜⵙⵔⴰⴳⵉⵏ:2 hours,1 ⵡⴰⵙⵙ:1 day,3 ⵡⵓⵙⵙⴰⵏ:3 days,1 ⵉⵎⴰⵍⴰⵙⵙ:1 week,2 ⵉⵎⴰⵍⴰⵙⵙⵏ:2 weeks,1 ⵡⴰⵢⵢⵓⵔ:1 month,3 ⵡⴰⵢⵢⵓⵔⵏ:3 months,6 ⵡⴰⵢⵢⵓⵔⵏ:6 months,1 ⵓⵙⴳⴳⵯⴰⵙ:1 year,ⵍⴱⴷⴰ:infinite",
        "autoblocklist-submit": "ⵔⵣⵓ",
        "ipblocklist": "Tabdart n tansiwin IP d isemawen n iseqdacen ig iteblukan",
        "blocklist-reason": "ⵜⴰⵎⵏⵜⵉⵍⵜ",
        "tooltip-ca-unwatch": "Kkes Tasna ya zi Tabdart uḥṭṭu inec",
        "tooltip-search": "ⵔⵣⵓ ⴳ {{SITENAME}}",
        "tooltip-search-go": "Uyur ghar tasna s yizwel a s imant nnes malla tella",
-       "tooltip-search-fulltext": "Rzu di tasniwin xef waḍṛis a",
+       "tooltip-search-fulltext": "ⵔⵣⵓ ⴷⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵅⴼ ⵓⴹⵔⵉⵙ ⴰ",
        "tooltip-p-logo": "Tasbtirt Tamzwarut",
        "tooltip-n-mainpage": "Adef ɣar tasna tamezwarut",
        "tooltip-n-mainpage-description": "Adef ghar tasna tamezwarut",
        "tooltip-n-portal": "Xef usenfar, mayen tzemmared ad tegged, mani ɣa tafed tiɣawsiwin",
        "tooltip-n-currentevents": "Af tilgha n ugilal xf tmsarin titurawin",
-       "tooltip-n-recentchanges": "Tabdart n isenfilen imaynuten di Wiki.",
+       "tooltip-n-recentchanges": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵉⵙⵏⴼⵉⵍⵏ ⵉⵏⴳⴳⵓⵔⴰ ⴷⴳ ⵓⵡⵉⴽⵉ",
        "tooltip-n-randompage": "Zdem ict tasna d tagacurant",
        "tooltip-n-help": "Mani gha tessned",
        "tooltip-t-whatlinkshere": "Tabdart n marra tasniwin n Wiki i d-iteqqnen da",
-       "tooltip-t-recentchangeslinked": "Isenfilen n drus zggwami di tasniwin i yetwaqqnen zi tasna ya",
+       "tooltip-t-recentchangeslinked": "ⵉⵙⵏⴼⵉⵍⵏ ⵉⵏⴳⴳⵓⵔⴰ ⴷⵉ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵇⵇⵏⴻⵏ ⵣⵉ ⵜⴰⵙⵏⴰ ⴰ",
        "tooltip-t-contributions": "Ẓar Tabdart n tiggawin n useqdac a",
        "tooltip-t-emailuser": "Sekk e-mail i bnadem a",
        "tooltip-t-upload": "ⵙⴽⵜⵔ ⵉⴼⴰⵢⵍⵓⵜⵏ",
-       "tooltip-t-specialpages": "Tabdart n marra tasniwin tinemmezrayin",
+       "tooltip-t-specialpages": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵎⴰⵔⵔⴰ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵉⵥⵍⵉⵏ",
        "tooltip-t-print": "Tanghelt usiggez n tasna ya",
        "tooltip-ca-nstab-main": "Ẓeṛ tasna n ukettur",
        "tooltip-ca-nstab-user": "Ẓar Tasna n user",
        "tooltip-ca-nstab-template": "Ẓṛ tamudmt",
        "tooltip-ca-nstab-help": "Ẓar Tasna n tallalt",
        "tooltip-ca-nstab-category": "Ẓṛ tasna n taggayt",
-       "tooltip-minoredit": "egg-itt d taẓṛigt tamẓyant",
+       "tooltip-minoredit": "ⴳⴳ ⵉⵜ ⴷ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ",
        "tooltip-save": "Xmml isnfiln nnk",
        "tooltip-preview": "Ẓṛ mayn turid, zzat i t gha txmmld!",
        "tooltip-diff": "Ẓar tiẓṛigin i teggid deg uḍṛiṣ a.",
        "tooltip-compareselectedversions": "Ẓar imsebeḍiyen jar tunɣilin n Tasna ya.",
        "tooltip-watch": "Arni Tasna ya ɣa Tabdart uḥṭṭu inec",
+       "pageinfo-header-edits": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵓⵙⵏⴼⵍ",
        "pageinfo-language": "ⵜⵓⵜⵍⴰⵢⵜ ⵏ ⵜⵓⵎⴰⵢⵜ ⵏ ⵜⴰⵙⵏⴰ",
        "pageinfo-contentpage-yes": "ⵢⴰⵀ",
        "pageinfo-protect-cascading-yes": "ⵢⴰⵀ",
index 185c8f3..c5f9e8c 100644 (file)
        "compare-invalid-title": "Titlul specificat nu este corect.",
        "compare-title-not-exists": "Titlul specificat nu există.",
        "compare-revision-not-exists": "Versiunea specificată nu există.",
+       "diff-form": "un '''formular'''",
        "dberr-problems": "Ne cerem scuze! Acest site întâmpină dificultăți tehnice.",
        "dberr-again": "Așteptați câteva minute și încercați din nou.",
        "dberr-info": "(Nu se poate accesa baza de date: $1)",
        "authprovider-resetpass-skip-label": "Omite",
        "linkaccounts-submit": "Leagă conturile",
        "unlinkaccounts": "Dezleagă conturile",
-       "unlinkaccounts-success": "Contul a fost dezlegat"
+       "unlinkaccounts-success": "Contul a fost dezlegat",
+       "userjsispublic": "Atenție: subpaginile JavaScript nu trebuie să conțină date confidențiale, întrucât ele sunt vizibile altor utilizatori."
 }
index dfe55f7..2bded0c 100644 (file)
        "gender-unknown": "При упоминании вас, программное обеспечение будет по возможности использовать гендерно-нейтральные слова",
        "gender-male": "Он редактирует страницы вики",
        "gender-female": "Онa редактирует страницы вики",
-       "prefs-help-gender": "ЭÑ\82оÑ\82 Ð¿Ð°Ñ\80амеÑ\82Ñ\80 Ð·Ð°Ð´Ð°Ð²Ð°Ñ\82Ñ\8c Ð½ÐµÐ¾Ð±Ñ\8fзаÑ\82елÑ\8cно.\nÐ\97наÑ\87ение Ð±Ñ\83деÑ\82 Ð¸Ñ\81полÑ\8cзовано Ð´Ð»Ñ\8f Ñ\82ого, Ñ\87Ñ\82обÑ\8b Ð¾Ð±Ñ\80аÑ\89аÑ\82Ñ\8cÑ\81Ñ\8f Ð¸ Ñ\83поминаÑ\82Ñ\8c Ð²Ð°Ñ\81 Ð² Ð¿Ð¾Ð´Ñ\85одÑ\8fÑ\89ем роде.\nЭта информация будет общедоступной.",
+       "prefs-help-gender": "ЭÑ\82оÑ\82 Ð¿Ð°Ñ\80амеÑ\82Ñ\80 Ð·Ð°Ð´Ð°Ð²Ð°Ñ\82Ñ\8c Ð½ÐµÐ¾Ð±Ñ\8fзаÑ\82елÑ\8cно.\nÐ\97наÑ\87ение Ð±Ñ\83деÑ\82 Ð¸Ñ\81полÑ\8cзовано Ð´Ð»Ñ\8f Ñ\82ого, Ñ\87Ñ\82обÑ\8b Ð¾Ð±Ñ\80аÑ\89аÑ\82Ñ\8cÑ\81Ñ\8f Ðº Ð²Ð°Ð¼ Ð¸ Ñ\83поминаÑ\82Ñ\8c Ð²Ð°Ñ\81 Ð² Ð¿Ñ\80авилÑ\8cном Ð³Ñ\80аммаÑ\82иÑ\87еÑ\81ком роде.\nЭта информация будет общедоступной.",
        "email": "Электронная почта",
        "prefs-help-realname": "Вводить настоящее имя необязательно.\nЕсли вы заполните его, оно может быть использовано для указания авторства ваших работ.",
        "prefs-help-email": "Адрес почты не обязателен, но это единственный способ восстановить забытый пароль.",
        "watching": "Добавление в список наблюдения…",
        "unwatching": "Удаление из списка наблюдения…",
        "watcherrortext": "Произошла ошибка при изменении настройки наблюдения для «$1».",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "Отметить все страницы как просмотренные",
        "enotif_impersonal_salutation": "Участник {{grammar:genitive|{{SITENAME}}}}",
        "enotif_subject_deleted": "Страница проекта «{{SITENAME}}» с именем «$1» была удалена {{gender:$2|участником|участницей}} $2",
        "modifiedarticleprotection": "изменён уровень защиты страницы «[[$1]]»",
        "unprotectedarticle": "снята защита с «[[$1]]»",
        "movedarticleprotection": "перенёс настройки защиты с «[[$2]]» на «[[$1]]»",
-       "protectedarticle-comment": "Защитил{{GENDER:$2||а}} «[[$1]]»",
-       "modifiedarticleprotection-comment": "Изменил{{GENDER:$2||а}} уровень защиты «[[$1]]»",
+       "protectedarticle-comment": "Защитил{{GENDER:$2||а}} [[$1]]",
+       "modifiedarticleprotection-comment": "Изменил{{GENDER:$2||а}} уровень защиты [[$1]]",
        "unprotectedarticle-comment": "Cнял{{GENDER:$2||а}} защиту с «[[$1]]»",
        "protect-title": "Установка уровня защиты для «$1»",
        "protect-title-notallowed": "Просмотр уровня защиты «$1»",
        "compare-invalid-title": "Указанное вами название недопустимо.",
        "compare-title-not-exists": "Не существует указанного вами названия.",
        "compare-revision-not-exists": "Указанной вами версии не существует.",
-       "diff-form": "'''форма'''",
+       "diff-form": "Различия",
+       "diff-form-oldid": "Старый идентификатор версии (необязательно)",
+       "diff-form-submit": "Показать отличия",
+       "permanentlink": "Постоянная ссылка",
+       "permanentlink-revid": "Идентификатор правки",
+       "permanentlink-submit": "Перейти к версии",
        "dberr-problems": "Извините! На данном сайте возникли технические трудности.",
        "dberr-again": "Попробуйте обновить страницу через несколько минут.",
        "dberr-info": "(Нет доступа к базе данных: $1)",
index 907e6c7..b92fbee 100644 (file)
@@ -35,7 +35,7 @@
        "tog-shownumberswatching": "ڏسندڙ يوزرس جو انگ ڏيکاريو",
        "tog-oldsig": "توھان جو موجوده دستخط:",
        "tog-fancysig": "صحيح کي وڪيٽيڪسٽ سمجھو (ڪنھن خوڪار ڳنڍڻي کانسواءِ)",
-       "tog-uselivepreview": "سÚ\8cÙ\8a Ø³Ù\86ئÙ\8aÙ\86 Ù¾Ù\8aØ´ Ù\86گاھÛ\81 Ø§Ø³ØªØ¹Ù\85اÙ\84 Úªريو",
+       "tog-uselivepreview": "صÙ\81Ø­Ù\8a Ú©Ù\8a Ù»Ù\8aھر Ø§ØªØ§Ø±Ú» Ø³Ù\88اءÙ\90 Ù¾Ù\8aØ´ Ù\86گاھ Ú\8fÙ\8aکاريو",
        "tog-watchlisthideown": "نظر ۾ فھرست مان منھنجون ترميمون لڪايو",
        "tog-watchlisthidebots": "نظر ۾ فھرست تان بوٽ جون ترميمون لڪايو",
        "tog-watchlisthideminor": "نظر ۾ فھرست تان معمولي ترميمون لڪايو",
        "permissionserrorstext": "هيٺين {{PLURAL:$1|سبب|سببن}} ڪري، توهان کي اهو ڪرڻ جي اجازت حاصل ڪانهي.",
        "permissionserrorstext-withaction": "ھيٺين {{PLURAL:$1|سبب|سببن}} ڪري، توھان کي $2 جي اجازت ڪانھي.",
        "recreate-moveddeleted-warn": "'''خبردار: توھان اھڙو صفحو نئين سِر سرجي رھيا آھيو جيڪو اڳ ڊاٺو ويو آھي.'''\n\nبھتر ٿيندو تہ توھان سوچي وٺو تہ ڇا ان صفحي کي سنوارڻ چڱو ٿيندو.\nتوهان جي سھولت خاطر ھتي ان صفحي جو ڊاٺ لاگ ميسر ڪجي ٿو:",
-       "moveddeleted-notice": "ھيءُ صفحو ڊھي چڪو آهي. \nحوالي طور ڊاٺ ۽ چور لاگ ھيٺ ڏجن ٿا.",
-       "moveddeleted-notice-recent": "معاف ڪندا، هيءُ صفحو تازو ئي ڊاٺو ويو آهي (پوين 24 ڪلاڪن اندر). حوالي طور ڊاٺ ۽ چور لاگ هيٺ پيش ڪجي ٿو:",
+       "moveddeleted-notice": "ھيءُ صفحو ڊھي چڪو آهي. \nحوالي طور صفحي جا ڊاھ، حفاظت ۽ چورڻ لاگ ھيٺ ڏنل آھن.",
+       "moveddeleted-notice-recent": "معاف ڪجو، هيءُ صفحو تازو ئي ڊاٺو ويو ھو (پوين 24 ڪلاڪن اندر). حوالي طور صفحي جا ڊاھ، حفاظت ۽ چورڻ لاگ ھيٺ ڏنل آھن.",
        "log-fulllog": "پُورو لاگ ڏسو",
        "edit-conflict": "سنوار تڪرار",
        "postedit-confirmation-created": "هيءُ صفحو سرجي چڪو آهي.",
index 1f082fd..575a1bd 100644 (file)
        "watchthis": "ⴹⴼⵓⵔ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "savearticle": "Ẓṛig d tḥbut",
        "preview": "Iẓṛi amzwaru",
-       "showpreview": "Iẓṛi amzwaru",
-       "showdiff": "Mel imbddln lli ifttun",
+       "showpreview": "ⵎⵍ ⵜⴰⵎⵓⵖⵍⵉ",
+       "showdiff": "ⵎⵍ ⵉⵙⵏⴼⵉⵍⵏ",
        "anoneditwarning": "Han  ''' ur ttuyssant ''' rad ibayn IP nk ɣ umzrut n tasna yad, ur sul  iḥba tamagit nk",
        "anonpreviewwarning": "ur ittuyssan mat tgit. Iɣ tgdl tawuri nk, tansa nk IP rad tbayn ɣ umzruy n imbdln n tasna yad.",
        "missingsummary": "'''Adakt nskti :''' ur ta tfit awal imun n imbddln nk.\nIɣ tklikkit tiklit yaḍn f tjrrayt « $1 », aẓṛig rad ittuyskar blla tsnt",
        "nextn": "Tallid yuckan {{PLURAL:$1|$1}}",
        "prevn-title": "$1 {{PLURAL:$1|Askfa amzaru|Iskfatn imzwura}}",
        "nextn-title": "$1 {{PLURAL:$1|ⵜⵢⴰⴼⵓⵜ ⵜⵓⴹⴼⵉⵔⵜ|ⵜⵢⴰⴼⵓⵜⵉⵏ ⵜⵓⴹⴼⵉⵔⵉⵏ}}",
-       "shown-title": "Fsr $1 tayafut{{PLURAL:$1||s}} s tasna",
+       "shown-title": "ⵎⵍ $1 {{PLURAL:$1|ⵜⵢⴰⴼⵓⵜ|ⵜⵢⴰⴼⵓⵜⵉⵏ}} ⵉ ⵜⴰⵙⵏⴰ",
        "viewprevnext": "Mel ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "\"'Tlla yat tasna lli ilan assaɣ « [[:$1]] » ɣ wiki yad",
        "searchmenu-new": "<strong>ⵙⵏⵓⵍⴼⵓ ⵜⴰⵙⵏⴰ \"[[:$1]]\" ⴳ ⵓⵡⵉⴽⵉ ⴰⴷ!</strong> {{PLURAL:$2|0=|See also the page found with your search.|See also the search results found.}}",
        "rcfilters-savedqueries-new-name-label": "ⵉⵙⵎ",
        "rcfilters-filterlist-whatsthis": "ⵎⴰⵜⵜⴰ ⵓⵢⴰ?",
        "rcfilters-filter-bots-label": "ⴱⵓⵜ",
-       "rcnotefrom": "Had imbddln lli ittuyskarn z '''$2''' ('''$1''' ɣ uggar).",
-       "rclistfrom": "Mel imbdeltn imaynutn z $3 $2",
+       "rcnotefrom": "ⴷⴷⴰⵡ ⴰⵙ {{PLURAL:$5|ⴰⵙⵏⴼⵍ|ⵉⵙⵏⴼⵉⵍⵏ}} ⵣⵖ <strong>$3, $4</strong> (ⴰⵔ <strong>$1</strong> ⴰⴷ ⵉⴱⴰⵢⵏⴻⵏ ⵙ ⵉⴳⴳⵓⵜ).",
+       "rclistfrom": "ⵎⵍ ⵉⵙⵏⴼⵉⵍⵏ ⵉⵎⴰⵢⵏⵓⵜⵏ ⵣⵖ $3 ⵖ $2",
        "rcshowhideminor": "$1 ⵉⵙⵏⴼⵉⵍⵏ ⵓⵎⵥⵉⵢⵏ",
        "rcshowhideminor-hide": "ⵙⵙⵏⵜⵍ",
        "rcshowhidebots": "$1 ⵉⵔⵓⴱⵓⵜⵏ",
+       "rcshowhidebots-show": "ⵎⵍ",
        "rcshowhidebots-hide": "ⵙⵙⵏⵜⵍ",
        "rcshowhideliu": "$1 ⵉⵙⵎⵔⴰⵙⵏ ⵣⵎⵎⴻⵎⵏⵉⵏ",
+       "rcshowhideliu-show": "ⵎⵍ",
        "rcshowhideliu-hide": "ⵙⵙⵏⵜⵍ",
        "rcshowhideanons": "$1 midn ur ttuyssan nin",
+       "rcshowhideanons-show": "ⵎⵍ",
        "rcshowhideanons-hide": "ⵙⵙⵏⵜⵍ",
        "rcshowhidepatr": "$1 ⵉⵙⵏⴼⵉⵍⵏ ⵜⵜⵡⴰⵃⴹⴰⵏⵉⵏ",
        "rcshowhidepatr-hide": "ⵙⵙⵏⵜⵍ",
        "rcshowhidemine": "$1 ⵉⵙⵏⴼⵉⵍⵏ ⵉⵏⵓ",
+       "rcshowhidemine-show": "ⵎⵍ",
        "rcshowhidemine-hide": "ⵙⵙⵏⵜⵍ",
        "rcshowhidecategorization-hide": "ⵙⵙⵏⵜⵍ",
        "rclinks": "Ml id  $1 n imbddltn immgura li ittuyskarn n id $2 ussan ad gguranin",
        "diff": "ⴰⵎⵣⴰⵔⴰⵢ",
        "hist": "ⴰⵎⵣⵔⵓⵢ",
        "hide": "ⵙⵙⵏⵜⵍ",
-       "show": "Mel",
+       "show": "ⵎⵍ",
        "minoreditletter": "ⵎⵥⵢ",
        "newpageletter": "ⵎⵢⵏ",
        "boteditletter": "ⴱ",
        "recentchangeslinked-title": "ⵉⵙⵏⴼⵉⵍⵏ ⵇⵇⵏⵏⵉⵏ ⵙ \"$1\"",
        "recentchangeslinked-summary": "Ɣid umuɣ iymbddeln li ittyskarnin tigira yad ɣ tisniwin li ittuyzdayn d kra n tasna (ulla i igmamn n kra taggayt ittuyzlayn). Tisniwin  ɣ [[Special:Watchlist|Umuɣ n tisniwin li ttsaggat]].",
        "recentchangeslinked-page": "ⵉⵙⵎ ⵏ ⵜⴰⵙⵏⴰ:",
-       "recentchangeslinked-to": "Afficher les changements vers les pages liées au lieu de la page donnée\nMel imbddeln z tisniwin li ittuyzdayni bla tasna li trit.",
+       "recentchangeslinked-to": "ⵎⵍ ⵉⵙⵏⴼⵉⵍⵏ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵇⵇⵏⵏⵉⵏ ⵙ ⵜⴰⵙⵏⴰ instead",
        "upload": "ⵙⴽⵜⵔ ⴽⵔⴰ ⵏ ⵓⴼⴰⵢⵍⵓ",
        "uploadbtn": "ⵙⴽⵜⵔ ⴰⴼⴰⵢⵍⵓ",
        "reuploaddesc": "Sbidd asrbu d turrit",
        "listfiles-latestversion-no": "ⵓⵀⵓ",
        "file-anchor-link": "ⴰⴼⴰⵢⵍⵓ",
        "filehist": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵓⴼⴰⵢⵍⵓ",
-       "filehist-help": "Adr i asakud/tizi bac attżrt manik as izwar usddaw ɣ tizi yad",
+       "filehist-help": "ⴽⵍⵉⴽⵉ ⴼ ⴽⵔⴰ ⵏ ⵓⵙⴰⴽⵓⴷ/ⴰⴽⵓⴷ ⴰⴷ ⵜⵥⵔⵜ ⴰⴼⴰⵢⵍⵓ ⵎⴽⵍⵍⵉ ⵜⵜ ⵉⵏⵏ ⵉⴽⴽⴰ ⵖ ⵜⵉⵣⵉ ⴰⵏⵏ.",
        "filehist-deleteone": "ⴽⴽⵙ",
        "filehist-revert": "Sgadda daɣ",
        "filehist-current": "ⴰⵎⵉⵔⴰⵏ",
        "linkstoimage": "Tasna yad {{PLURAL:$1|izdayn n tasna|$1 azday n tasniwin}} s usdaw:",
        "nolinkstoimage": "Ḥtta kra n tasna ur tra asdaw ad",
        "sharedupload": "Asdawad z $1 tẓḍart at tsxdmt gr iswirn yaḍnin",
-       "sharedupload-desc-here": "â´°âµ\99ⴷⴰⵡ â´°â´· âµ\89ⴽⴽⴰⴷ âµ£ : $1.  âµ\9cⵥⴹⴰâµ\94âµ\9c â´°âµ\99âµ\99âµ\89 âµ\9câµ\99ⵡⵡâµ\93âµ\94 âµ\96 âµ\9câµ\89ⵡâµ\93âµ\94âµ\89ⵡâµ\89âµ\8f âµ\9câ´°â´¹âµ\8f.\nâµ\93ⴳⴳⴰâµ\94 â´¼âµ\8dâµ\8dâ´°âµ\99 âµ\8dâµ\8dâ´°âµ\8f âµ\96 [$2 âµ\9câ´°âµ\99âµ\8fâ´° âµ\8f âµ\89âµ\8eâµ\8dâµ\93ⵣⵣâµ\93âµ\9câµ\8f] âµ\8dâµ\8dâµ\89 âµ\89âµ\8dâµ\8dâ´°âµ\8f âµ\96âµ\89â´·.",
+       "sharedupload-desc-here": "ⴰⴼⴰⵢâµ\8dâµ\93 â´°â´· âµ\89ⴽⴽⴰ â´· $1 â´· âµ\89ⵥⴹⴰâµ\94 â´°â´· âµ¢âµ\89âµ\8dâµ\89 âµ\89âµ\9câµ\9cⵢⴰⵡâµ\99âµ\85â´·â´°âµ\8e âµ\96 âµ\89âµ\99âµ\8fⴼⴰâµ\94âµ\8f âµ¢â´°â´¹âµ\8f.\nâ´°â´³âµ\8dâ´°âµ\8e âµ\89âµ\8dâµ\8dâ´°âµ\8f âµ\96 [$2 âµ\9câ´°âµ\99âµ\8fâ´° âµ\8fâµ\8fâµ\99 âµ\8f âµ\93â´³âµ\8dâ´°âµ\8e] âµ\80â´° âµ\9c â´·â´·â´°âµ¡ â´°âµ\99.",
        "uploadnewversion-linktext": "ⵙⴽⵜⵔ ⴽⵔⴰ ⵏ ⵜⵓⵏⵖⵉⵍⵜ ⵜⴰⵎⴰⵢⵏⵓⵜ ⵏ ⵓⴼⴰⵢⵍⵓ ⴰⴷ",
        "filedelete": "ⴽⴽⵙ $1",
        "filedelete-legend": "ⴽⴽⵙ ⴰⴼⴰⵢⵍⵓ",
        "watchthispage": "ⴹⴼⵓⵔ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "unwatch": "ⵙⴱⴷⴷ ⴰⴹⴼⴼⵓⵔ",
        "watchlist-details": "{{PLURAL:$1|$1 ⵜⴰⵙⵏⴰ|$1 ⵜⴰⵙⵏⵉⵡⵉⵏ}} ⴳ ⵜⵍⴳⴰⵎⵜ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⴹⴼⴼⵓⵔ, not separately counting talk pages.",
-       "wlshowlast": "Ml ikudan imggura $1 , ussan imggura $2 niɣd",
+       "wlshowlast": "ⵎⵍ $1 ⵜⵙⵔⴰⴳⵉⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ, $2 ⵡⵓⵙⵙⴰⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ",
        "watchlist-hide": "ⵙⵙⵏⵜⵍ",
        "wlshowhidebots": "ⵉⴷ ⴱⵓⵜ",
        "watchlist-options": "ⵜⵉⵙⵖⴰⵍ ⵏ ⵜⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ",
        "uctop": "(ⵜⴰⵎⵉⵔⴰⵏⵜ)",
        "month": "Z usggas (d urbur):",
        "year": "Z usggas (d urbur):",
-       "sp-contributions-newbies": "Ad ur tmlt abla tiwuriwin n wiyyaḍ",
+       "sp-contributions-newbies": "ⵎⵍ ⵖⴰⵔ ⵜⵓⵎⵓⵜⵉⵏ ⵏ ⵉⵎⵉⴹⴰⵏⴻⵏ ⵉⵎⴰⵢⵏⵓⵜⵏ",
        "sp-contributions-newbies-sub": "Z imiḍan (comptes) imaynutn",
        "sp-contributions-newbies-title": "Tiwuriwin n umqdac z imḍan imaynutn",
        "sp-contributions-blocklog": "Tinɣmas n willi ttuyqqanin (blocage)",
        "sp-contributions-blocked-notice-anon": "Tansa yad IP ttuysbddad. Maf ittuysbddad illa ɣ uɣmmis n n willi n sbid. Mayad ɣ trit ad tsnt maɣ",
        "sp-contributions-search": "ⵙⵉⴳⴳⵍ ⵜⵓⵎⵓⵜⵉⵏ",
        "sp-contributions-username": "Tansa IP niɣ assaɣ nu umsqdac:",
-       "sp-contributions-toponly": "Ad urtmlt adla mat ittuyẓran tigira yad",
+       "sp-contributions-toponly": "ⵎⵍ ⵖⴰⵔ ⵉⵙⵏⴼⵉⵍⵏ ⴳⴰⵏⵉⵏ ⵜⵓⵏⵖⵉⵍⵉⵏ ⵜⵉⵎⵉⵔⴰⵏⵉⵏ",
+       "sp-contributions-newonly": "ⵎⵍ ⵖⴰⵔ ⵉⵙⵏⴼⵉⵍⵏ ⴳⴰⵏⵉⵏ ⵉⵙⵏⵓⵍⴼⵓⵜⵏ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ",
        "sp-contributions-submit": "ⵙⵉⴳⴳⵍ",
        "sp-contributions-explain": "↓",
        "whatlinkshere": "ⵎⴰⴷ ⵉⵇⵇⵏⴻⵏ ⵙ ⵖⵉⴷ",
        "tooltip-minoredit": "ⵔⵛⵎ ⴰⵢⴰ ⵎⴰⵙ ⵉⴳⴰ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ",
        "tooltip-save": "Ḥbu imbddel nek",
        "tooltip-preview": "Mel(fsr) imbddeln nek, urat tḥibit matskert",
-       "tooltip-diff": "Mel (fsr) imbddeln li tskert u-ṭṛiṣ",
+       "tooltip-diff": "ⵎⵍ ⵎⴰⵏ ⵉⵙⵏⴼⵉⵍⵏ ⴰⴷ ⵜⵙⴽⵔⵜ ⵉ ⵓⴹⵔⵉⵙ",
        "tooltip-compareselectedversions": "Ẓr inaḥyatn gr sin lqimat li ttuystaynin ɣ tasna yad.",
        "tooltip-watch": "ⵔⵏⵓ ⵜⴰⵙⵏⴰ ⴰⴷ ⵉ ⵜⵍⴳⴰⵎⵜ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⴹⴼⴼⵓⵔ",
        "tooltip-recreate": "Als askr n tasna yad waxxa ttuwḥiyyad",
        "tooltip-undo": "\"Sglb\" ḥiyd ambdl ad t mmurẓmt tasatmt n umbdl ɣ umuḍ tiẓri tamzwarut.",
        "tooltip-summary": "Skcm yat tayafut imẓẓin",
        "pageinfo-header-edits": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵓⵙⵏⴼⵍ",
+       "pageinfo-length": "ⵜⵉⴷⴷⵉ ⵏ ⵜⴰⵙⵏⴰ (ⵙ ⵉⴷ ⴱⴰⵢⵜ)",
        "pageinfo-language": "ⵜⵓⵜⵍⴰⵢⵜ ⵏ ⵜⵓⵎⴰⵢⵜ ⵏ ⵜⴰⵙⵏⴰ",
        "pageinfo-language-change": "ⵙⵏⴼⵍ",
        "pageinfo-content-model-change": "ⵙⵏⴼⵍ",
        "pageinfo-firsttime": "ⴰⵙⴰⴽⵓⴷ ⵏ ⵓⵙⵏⵓⵍⴼⵓ ⵏ ⵜⴰⵙⵏⴰ",
        "pageinfo-lastuser": "ⴰⵎⵙⵏⴼⵍ ⵉⴳⴳⵯⵔⴰⵏ",
-       "pageinfo-lasttime": "ⴰⵙⴰⴽⵓⴷ ⵏ ⵓⵙⵏⴼⵍ ⵉⴳⴳⵯⵔⴰⵏ",
+       "pageinfo-lasttime": "â´°âµ\99â´°â´½âµ\93â´· âµ\8f âµ\93âµ\99âµ\8fâ´¼âµ\8d â´°â´½â´½âµ¯ âµ\89ⴳⴳⵯâµ\94â´°âµ\8f",
        "pageinfo-hidden-categories": "{{PLURAL:$1|ⴰⵙⵎⵉⵍ ⵉⵏⵜⵍⵏ|ⵉⵙⵎⵉⵍⵏ ⵏⵜⵍⵏⵉⵏ}} ($1)",
        "pageinfo-contentpage-yes": "ⵢⴰⵀ",
        "pageinfo-protect-cascading-yes": "ⵢⴰⵀ",
        "variantname-shi-latn": "Tašlḥiyt",
        "variantname-shi": "disable",
        "metadata": "ⵎⵉⵜⴰⴷⴰⵜⴰ",
-       "metadata-help": "Asdaw ad llan gis inɣmisn yaḍnin lli tfl lkamira tuṭunit niɣd aṣfḍ n uxddam lliɣ ay sgadda asdaw ad",
+       "metadata-help": "ⵢⵓⵙⵢ ⵓⴼⴰⵢⵍⵓ ⴰⴷ ⵓⵎⵍⴰⵏ , lli tfl lkamira tuṭunit niɣd aṣfḍ n uxddam lliɣ ay sgadda asdaw ad.\nⵉⵖ ⵉⵏⴼⵍ ⵓⴼⴰⵢⵍⵓ ⵣⵖ ⴰⴷⴷⴰⴷ ⵏⵏⵙ ⴰⵏⵚⵍⵉ, .",
        "metadata-expand": "Ml ifruriyn lluzzanin",
        "metadata-collapse": "Aḥbu n ifruriyn lluzzanin",
        "metadata-fields": "Igran n isfkan n metadata li illan ɣ tabratad ran ilin ɣ tawlaf n tasna iɣ mzzin tiflut n isfka n mita\nWiyyaḍ raggis ḥbun s ɣiklli sttin kkan gantn.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-orientation": "ⴰⵙⵡⴰⵍⴰ",
+       "exif-datetime": "ⴰⵙⴰⴽⵓⴷ ⴷ ⵡⴰⴽⵓⴷ ⵏ ⵓⵙⵏⴼⵍ ⵏ ⵓⴼⴰⵢⵍⵓ",
        "exif-flash": "ⴼⵍⴰⵛ",
        "exif-source": "ⴰⵙⴰⴳⵎ",
        "exif-languagecode": "ⵜⵓⵜⵍⴰⵢⵜ",
index d8258da..f5155f4 100644 (file)
        "permissionserrorstext-withaction": "ၸဝ်ႈၵဝ်ႇဢမ်ႇမီးသုၼ်ႇ တႃႇ $2, တွၼ်ႈတႃႇ ၸိူဝ်း ဢၼ်ပဵၼ် {{PLURAL:$1|reason|လွင်ႈတၢင်း}}:",
        "contentmodelediterror": "ၸဝ်ႈၵဝ်ႇတေဢမ်ႇၸၢင်ႈ မႄးထတ်း ၵၢၼ်ၶူၼ်ႉၶႆႈၼႆႉ၊ ယွၼ်ႉပိူဝ်ႈဝႃႈ ၽၢင်တူဝ် ၶေႃႈၶဝ်ႈပႃး မၼ်းၼႆႉပဵၼ်  <code>$1</code>, ဢၼ် ပႅၵ်ႇပိူင်ႈၵၼ်တၢင်း ၽၢင်တူဝ် ၶေႃႈၶဝ်ႈပႃး ၶွင်ႈၼႃႈလိၵ်ႈ <code>$2</code> ၼႆႉ။",
        "recreate-moveddeleted-warn": "<strong>ၶေႃႈၽၢင်ႉပၼ် : ၸဝ်ႈၵဝ်ႇ ၶိုၼ်းၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈ ဢၼ်လႆႈ မွတ်ႇပႅတ်ႈၵႂႃႇဝႆႉၼၼ်ႉ။</strong>\n\nၸဝ်ႈၵဝ်ႇ ထုၵ်ႇလီဝူၼ်ႉတူၺ်းဝႃႈ ၸွင်ႇမၼ်းသၢင်ႇထုၵ်ႇ တွၼ်ႈတႃႇတေသိုပ်ႇ မႄးထတ်း ၼႃႈလိၵ်ႈၼႆႉဢၼ်ဝႃႈၼၼ်ႉ။\nသဵၼ်ႈလၢႆ မွတ်ႇပႅတ်ႈလႄႈ ၶၢႆႉဢွင်ႈ တွၼ်ႈတႃႇၼႃႈလိၵ်ႈၼႆႉ ၵမ်ႉထႅမ်ဝႆႉပၼ် ၵႃႈတီႈၼႆႈ တွၼ်ႈတႃႇ ႁႂ်းငၢႆႈလူမ်ၸႂ် :",
-       "moveddeleted-notice": "á\81¼á\82\83á\82\88á\80\9cá\80­á\81µá\80ºá\82\88á\81¼á\82\86á\82\89 á\80\99á\80½á\80\90á\80ºá\82\87á\80\95á\82\85á\80\90á\80ºá\82\88á\81µá\82\82á\82\83á\82\87á\80\9aá\80\9dá\80ºá\82\89á\81\8b á\80\9cá\80½á\80\84á\80ºá\82\88á\80\99á\80½á\80\90á\80ºá\82\87á\80\95á\82\85á\80\90á\80ºá\82\88á\80\9cá\82\84á\82\88 á\80\9cá\80½á\80\84á\80ºá\82\88á\81¶á\81¢á\82\86á\82\89á\80\9eá\81¢á\82\86á\80\99á\81¢á\82\86 á\80\90á\80½á\81¼á\80ºá\82\88á\80\90á\82\83á\82\87 á\81¼á\82\83á\82\88á\80\9cá\80­á\81µá\80ºá\82\88á\81¼á\82\86á\82\89 á\81µá\80\99á\80ºá\82\89á\80\91á\82\85á\80\99á\80ºá\80\9dá\82\86á\82\89á\80\95á\81¼á\80º á\81¼á\80\84á\80ºá\82\87á\80\95á\82\83á\82\88á\80\90á\82\82á\80ºá\82\88á\81¼á\82\86á\82\89á\80\9aá\80°á\82\87á\81\8b á\80\99á\81¼á\80ºá\80¸ပဵၼ် တွၼ်ႈတႃႇ ႁဵတ်းၽိုၼ်ဢိင်ယဝ်ႉ။",
+       "moveddeleted-notice": "á\81¼á\82\83á\82\88á\80\9cá\80­á\81µá\80ºá\82\88á\81¼á\82\86á\82\89 á\80\99á\80½á\80\90á\80ºá\82\87á\80\95á\82\85á\80\90á\80ºá\82\88á\81µá\82\82á\82\83á\82\87á\80\9aá\80\9dá\80ºá\82\89á\81\8b á\80\9cá\80½á\80\84á\80ºá\82\88á\80\99á\80½á\80\90á\80ºá\82\87á\80\95á\82\85á\80\90á\80ºá\82\88á\81\8a á\80\9cá\80½á\80\84á\80ºá\82\88á\82\81á\82\84á\82\89á\81µá\80\84á\80ºá\82\88 á\80\9cá\82\84á\82\88 á\80\9eá\81¢á\82\86á\80\99á\81¢á\82\86á\80\9cá\80½á\80\84á\80ºá\82\88á\81¶á\81¢á\82\86á\82\89 á\80\90á\80½á\81¼á\80ºá\82\88á\80\90á\82\83á\82\87 á\81¼á\82\83á\82\88á\80\9cá\80­á\81µá\80ºá\82\88á\81¼á\82\86á\82\89 á\81µá\80\99á\80ºá\82\89á\80\91á\82\85á\80\99á\80ºá\80\9dá\82\86á\82\89á\80\95á\81¼á\80º á\81¼á\80\84á\80ºá\82\87á\80\95á\82\83á\82\88á\80\90á\82\82á\80ºá\82\88á\81¼á\82\86á\82\89 ပဵၼ် တွၼ်ႈတႃႇ ႁဵတ်းၽိုၼ်ဢိင်ယဝ်ႉ။",
        "moveddeleted-notice-recent": "ယိၼ်းၶီၸွမ်ႈယူႇ၊ ၼႃႈလိၵ်ႈၼႆႉ တိုၵ်ႉႁႃထုၵ်ႇမွတ်ႇပႅတ်ႈ (ၼႂ်းၶၢဝ်းတၢင်း မိူဝ်ႈပူၼ်ႉမႃး 24 ၸူဝ်ႈမူင်း) ၼႆႉၵူၺ်း။ သဵၼ်ႈမၢႆ မွတ်ႇပႅတ်ႈ လႄႈ ၶၢႆႉဢွင်ႈတီႈ ၸိူဝ်းၼၼ်ႉ လႆႈၵမ်ႉထႅမ်ဝႆႉပၼ်ၼင်ႇၽၢႆႇတႂ်ႈ ႁႂ်ႈၸၢင်ႈပဵၼ် ၵၢၼ်ၽိုၼ်ဢိင်။",
        "log-fulllog": "တူၺ်း သဵၼ်ႈမၢႆဢၼ်တဵမ်ထူၼ်ႈ",
        "edit-hook-aborted": "ၵၢၼ်မႄးထတ်း ထုၵ်ႇလူတ်းပႅတ်တင်းၶေႃၵွင်ႉ။\nမၼ်းဢမ်ႇပၼ်ဝႆႉ ၶေႃႈသပ်းလႅင်းသင်။",
        "editundo": "ၶိုၼ်ၶိုၼ်း",
        "diff-empty": "(ဢမ်ႇမီးလွင်ႈပႅၵ်ႇပိူင်ႈ)",
        "diff-multi-sameuser": "({{PLURAL:$1|လွင်ႈၶူၼ်ႉၶႆႈ ပၢၼ်ၵၢင် |$1 လွင်ႈၶူၼ်ႉၶႆႈ ပၢၼ်ၵၢင်}} ​ပေႃးတႃႇ ၽူႈၸႂ်တိုဝ်းမိူၼ်ၵၼ် တေဢမ်ႇၼႄပၼ်)",
+       "diff-multi-otherusers": "({{PLURAL:$1|လွင်ႈၶူၼ်ႉၶႆႈမႄးၶိုၼ်း ပၢၼ်ၵၢင် |$1 လွင်ႈၶူၼ်ႉၶႆႈမႄးၶိုၼ်း ပၢၼ်ၵၢင်}} ​\n{{PLURAL:$2|ၽူႈၸႂ်ႉတိုဝ်း ထႅင်ႈၵေႃႉၼိုင်ႈ|$2 ၽူႈၸႂ်ႉတိုဝ်း}} ဢမ်ႇၼႄဝႆႉ)",
        "searchresults": "ၶူၼ်ႉႁႃၺႃး",
        "searchresults-title": "ၶူၼ်ႉႁႃၺႃးတွၼ်ႈတႃႇ \"$1\"",
        "titlematches": "ႁူဝ်ၶေႃႈ ၼႃႈလိၵ်ႈ ၶူပ်းၵၼ်ယူႇ",
        "searchprofile-everything-tooltip": "သွၵ်ႈႁႃလမ်းၼႂ်းတင်းမူတ်း (ဢိၵ်ႇပႃးၼႃႈလိၵ်ႈ ဢုပ်ႇဢူဝ်း)",
        "searchprofile-advanced-tooltip": "သွၵ်ႈႁႃတီႈၼႂ်း ဢွင်ႈတီႈၸိုဝ်ႈႁင်းတူဝ်",
        "search-result-size": "$1 ({{PLURAL:$2|1 ၶေႃႈ|$2 ၶေႃႈ}})",
+       "search-result-category-size": "{{PLURAL:$1|1 ၽူႈၶဝ်ႈၸုမ်း|$1 ၽူႈၶဝ်ႈၸုမ်း}} ({{PLURAL:$2|1 ၵၼ်ၽႄ|$2 ၵၼ်ၽႄ}}, {{PLURAL:$3|1 ၾၢႆႇ|$3 ၾၢႆႇ}})",
        "search-redirect": "(ပိၼ်ႇဝၢႆႇမႃးတီႈ $1)",
        "search-section": "(တွၼ်ႈၵၼ် $1)",
        "search-category": "(တွၼ်ႈၵၼ် $1)",
+       "search-file-match": "(လမ်းၼႂ်းၾၢႆႇဢၼ်မႅၼ်ႈၵၼ်)",
        "search-suggest": "ၶႂ်ႈဝႃႈ $1 - ၼႆႁႃႉ",
        "search-interwiki-caption": "ၽွၼ်းလႆႈ ၵႃႈတီႈ ၼႃႈၵၢၼ် ပီႈၼွင်ႉၵၼ်",
        "search-interwiki-default": "ၽွၼ်းလႆႈ ၵႃႈတီႈ $1 :",
        "rcfilters-empty-filter": "ဢမ်ႇမီးတူဝ်ထွင် ဢၼ်တူင်ႉၼိုင်။ ၵၢၼ်ၶဝ်ႈႁူမ်ႈတၢင်းသဵင်ႈၵေႃႈၼႄဝႆႉယူႇ။",
        "rcfilters-filterlist-title": "တူဝ်ထွင်",
        "rcfilters-filterlist-noresults": "ဢမ်ႇႁၼ်မီးတူဝ်ထွင်",
-       "rcfilters-filtergroup-registration": "လွင်ႈတၢင်ႇမၢႆၽၢင် ၽူႈၸႂ်ႉတိုဝ်း",
-       "rcfilters-filter-registered-label": "တၢင်ႇမၢႆၾၢင်ဝႆႉယဝ်ႉ",
-       "rcfilters-filter-registered-description": "ၽူႈမႄးထတ်းၶဝ် ၶဝ်ႈလွၵ်ႉဢိၼ်ႇဝႆႉ",
-       "rcfilters-filter-unregistered-label": "ဢမ်ႇလႆႈတၢင်ႇမၢႆႇၽၢင်ဝႆႉ",
-       "rcfilters-filter-unregistered-description": "ၽူႈမႄးထတ်း ၸိူဝ်းဢမ်ႇလႆႈၶဝ်ႈ လွၵ်ႉဢိၼ်ႇဝႆႉ",
        "rcfilters-filtergroup-authorship": "လွင်ႈၶဝ်ႈႁူမ်ႈ ၸဝ်ႈပၢႆၵမ်",
        "rcfilters-filter-editsbyself-label": "လွင်ႈ​လႅၵ်ႈလၢႆႈ ၸဝ်ႈၵဝ်ႇႁဵတ်း",
        "rcfilters-filter-editsbyself-description": "လွင်ႈၶဝ်ႈႁူမ်ႈ ၶွင်တူဝ်ၸဝ်ႈၵဝ်ႇ",
        "rcfilters-filter-editsbyother-label": "လွင်ႈလႅၵ်ႈလၢႆႈ တၢင်ႇၵေႃႉႁဵတ်း",
        "rcfilters-filter-editsbyother-description": "လွင်ႈလႅၵ်ႈလၢႆႈတၢင်းသဵင် လိူဝ်သေၶွင်တူဝ်ၸဝ်ႈၵဝ်ႇ",
        "rcfilters-filtergroup-userExpLevel": "ၸၼ်ႉထၢၼ်ႈ တူဝ်ထူပ်း (တွၼ်ႈတႃႈ ၽူႈၸႂ်ႉတိုဝ်း ၸိူဝ်းတၢင်ႇဝႆႉ မႆၽၢင်ၵူၺ်း)",
+       "rcfilters-filter-user-experience-level-registered-label": "တၢင်ႇမၢႆၾၢင်ဝႆႉယဝ်ႉ",
+       "rcfilters-filter-user-experience-level-registered-description": "ၽူႈမႄးထတ်းၶဝ် ၶဝ်ႈလွၵ်ႉဢိၼ်ႇဝႆႉ",
+       "rcfilters-filter-user-experience-level-unregistered-label": "ဢမ်ႇလႆႈတၢင်ႇမၢႆႇၽၢင်ဝႆႉ",
+       "rcfilters-filter-user-experience-level-unregistered-description": "ၽူႈမႄးထတ်း ၸိူဝ်းဢမ်ႇလႆႈၶဝ်ႈ လွၵ်ႉဢိၼ်ႇဝႆႉ",
        "rcfilters-filter-user-experience-level-newcomer-label": "ၵူၼ်းၼႃႈမႂ်ႇ",
        "rcfilters-filter-user-experience-level-newcomer-description": "ဢေႇလိူဝ် ၵၢၼ်မႄးထတ်း ႑႐ ဢၼ် လႄႈ လွင်ႈတူင်ႉၼိုင် တႃႇသီႇဝၼ်း",
        "rcfilters-filter-user-experience-level-learner-label": "ၽူႈလဵပ်ႈႁဵၼ်း",
        "allinnamespace": "ၼႃႈလိၵ်ႈတင်းမူတ်း ($1 ဢွင်ႈၸိုဝ်ႈ)",
        "allpagessubmit": "သိုပ်ႇၵႂႃႇ",
        "allpagesprefix": "ၼႃးလိၵ်ႈဢၼ်ၼႄ ဢိၵ်ႇတင်း ၶေႃႈလူင်ႈၼႃႈ",
+       "allpages-hide-redirects": "သိူင်ႇ ၸိူဝ်းတူဝ်ပိၼ်ႇၸီႉ",
        "categories": "လိူင်ႈ",
        "sp-deletedcontributions-contribs": "လွင်ႈၶဝ်ႈႁူမ်ႈ",
        "linksearch": "သွၵ်ႈႁႃ ႁဵင်းၵွင်ႉၽၢႆႇၼွၵ်ႈ",
        "watchnologin": "ဢမ်ႇလႆႈၶဝ်ႈလွၵ်ႉဢိၼ်ႇဝႆ့",
        "addwatch": "ထႅမ်သႂ်ႇၸူး သဵၼ်ႈမၢႆ ပႂ်ႉတူၺ်း",
        "watch": "ပႂ်ႉတူၺ်း",
+       "unwatch": "ဢမ်ႇတူၺ်း",
+       "wlshowlast": "ၼႄ ၶၢဝ်းယၢမ်းလိုၼ်းသုတ်း $1 မူင်း $2 ဝၼ်း",
        "watchlist-hide": "သိူင်ႇ",
        "watchlist-submit": "ၼႄ",
        "wlshowtime": "ပွင်ႈၶၢဝ်းယၢမ်း တွၼ်ႈတႃႇ ဢွၵ်ႇၼႄ:",
        "watchlist-options": "ၵၼ်လိူၵ်ႈသၢင်ႈ တူဝ်ပႂ်ႉတူၺ်း",
        "watching": "တိုၵ်ႉတူၺ်းယူႇ...",
        "unwatching": "ဢမ်ႇတူၺ်းဝႆႉ...",
+       "enotif_reset": "ႁဵတ်းၼႃႈလိၵ်ႈတင်းသဵင်ႈ ၼင်ႇဢႅဝ်ႇဝႆႉယဝ်ႉ",
        "enotif_impersonal_salutation": "{{SITENAME}} ၽူႈၸႂ်ႉတိုဝ်း",
        "enotif_subject_deleted": "ၼႃႈလိၵ်ႈ {{SITENAME}}  $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႉ {{GENDER:$2|မူတ်ႇပႅတ်ႈ}} ဢေႃႈ။",
        "enotif_subject_created": "ၼႃႈလိၵ်ႈ {{SITENAME}}  $1 ၼႆႉ ထုၵ်ႇ $2 ၵေႃႉ {{GENDER:$2|ၵေႃႇသၢင်ႈဝႆႉ}} ဢေႃႈ",
        "logentry-contentmodel-change-revertlink": "ပိၼ်ႈၶိုၼ်း",
        "logentry-contentmodel-change-revert": "ပိၼ်ႈၶိုၼ်း",
        "protectlogpage": "မၢႆတမ်း ၵၢၼ်ႁေႉၵင်ႈ",
+       "protectedarticle": "ႁႄႉၵင်ႈဝႆႉ \"[[$1]]\"",
+       "modifiedarticleprotection": "ၸၼ်ႉထၢၼ်ႈလွင်ႈႁႄႉၵင်ႈ ဢၼ်လႅၵ်ႈလၢႆႈဝႆႉတႃႇ  \"[[$1]]\"",
        "protect-default": "ၶႂၢင်းပၼ် ၽူႈၸႂ်ႉတိုဝ်း တၢင်းသဵင်ႈ",
        "protect-fallback": "ၶႂၢင်းပၼ် ၽူႈၸႂ်ႉတိုဝ်း ဢၼ်တင်း လွင်ႈၶႂၢင်းပၼ် \"$1\" ၼၼ်ႉၵူၺ်း",
        "protect-level-autoconfirmed": "ၶႂၢင်းပၼ် ၽူႈၸႂ်ႉတိုဝ်း ဢၼ်ၼႄႉၼွၼ်းႁင်းၵူၺ်းၼၼ်ႉ ၵူၺ်း",
        "tooltip-namespace_association": "လိူၵ်ႈပၼ် လွၵ်းၼႆႉ တႃႇတေႁႂ်ႈပႃး ၶေႃႈဢုပ်ႇဢူဝ်း ဢမ်ႇၼၼ် ၸိုဝ်ႈႁူဝ်ၶေႃႈ ဢၼ်ၵပ်းၵၢႆႇလူၺ်ႈ ႁူဝ်ၶေႃႈ ဢၼ်လိူၵ်ႈဝႆႉၼၼ်ႉ။",
        "blanknamespace": "ႁူဝ်ႁႅၵ်ႇ",
        "contributions": "{{GENDER:$1|User}} ၶဝ်ႈႁူမ်ႈပႃး",
+       "contributions-title": "လွင်ႈၶဝ်ႈႁူမ်ႈၽူႈၸႂ်ႉတိုဝ်း တွၼ်ႈတႃႇ $1",
        "mycontris": "လွင်ႈၶဝ်ႈႁူမ်ႈ",
        "anoncontribs": "လွင်ႈၶဝ်ႈႁူမ်ႈ",
+       "contribsub2": "တွၼ်ႈတႃႇ {{GENDER:$3|$1}} ($2)",
        "uctop": "(ယၢမ်းလဵဝ်)",
        "month": "တႄႇဢဝ်လိူၼ် (လႄႈ ဢၼ်ပူၼ်ႉမႃး):",
        "year": "တႄႇဢဝ်ပီ (လႄႈ ဢၼ်ပူၼ်ႉမႃး):",
+       "sp-contributions-newbies": "ၼႄပၼ်လွင်ႈၶဝ်ႈႁူမ်ႈ ၶွင် ဢၶွင်ႉဢၼ်မႂ်ႇလၢႆလၢႆၵူၺ်းလႄႈ",
        "sp-contributions-newbies-sub": "တွၼ်ႈတႃႇဢၶွင်ႉ ဢၼ်မႂ်ႇ",
        "sp-contributions-blocklog": "မၢႆတမ်းၵၢၼ်​ႁေႉတတ်း",
        "sp-contributions-suppresslog": "လွင်ႈၶဝ်ႈႁူမ်ႈ {{GENDER:$1|ၽူႈၸႂ်ႉတိုဝ်း}} ဢၼ်ႁူမ်ႇလပ်ႉဝႆႉ",
        "ipb_hide_invalid": "ဢမ်ႇၸၢင်ႈႁူမ်ႇလပ်ႉဝႆႉ ဢၶွင်ႉဢၼ်ၼႆႉ; မၼ်းမီးလိူဝ်ဝႆႉ {{PLURAL:$1|လွင်ႈမႄးထတ်း ဢၼ်ၼိုင်ႈ|$1 လွင်ႈမႄးထတ်းတင်းၼမ်}}။",
        "ipb_already_blocked": "\"$1\" ၼႆႉ ထုၵ်ႇ ႁႄႉတတ်းဝႆႉယဝ်ႉ။",
        "ipb-needreblock": "$1 ၼႆႉ ထုၵ်ႇႁႄႉတတ်းဝႆႉယဝ်ႉ။ ၸွင်ႇၸဝ်ႈၵဝ်ႇ ၶႂ်ႈလႅၵ်ႈလၢႆႈ ၵၼ်တင်ႈႁိုဝ်?",
+       "proxyblocker": "တူဝ်ႁႄႉတတ်း ပရၢဝ်ႇသီႇ",
        "ipbnounblockself": "ၸဝ်ႈၵဝ်ႇ ဢမ်ႇမီးသုၼ်ႇ တွၼ်ႈတႃႇ ပိုတ်ႇသေႃးၶိုၼ်းတႃႇၸဝ်ႈၵဝ်ႇ။",
        "lockdb": "ၶတ်းယွင်ၶေႃႈမုၼ်း",
        "unlockdb": "ပိုတ်ႇသေႃး ယွင်ၶေႃႈမုၼ်း",
        "lastmodifiedatby": "ၼႃႈလိၵ်ႈဢၼ်ၼႆႉ ထုၵ်ႇ $3 ၵေႃႉမူၼ်ႉမႄးဝႆႉမိူဝ်ႈ $2, $1။",
        "spam_reverting": "လွင်ႈပိၼ်ႈၶိုၼ်း လွင်ႈၶူၼ်ႉၶႆႈ ၵမ်းလိုၼ်းသုတ်းၼၼ်ႉ မၼ်းဢမ်ႇၶဝ်ႈပႃးဝႆႉ ႁဵင်းၵွင်ႉ ဢၼ်ၵွင်ႉၸူး $1",
        "simpleantispam-label": "ၵူတ်ႇထတ်း Anti-spam.\n<strong>ယႃႇပေ</strong>ထႅမ်ဢၼ်ၼႆႉသႂ်ႇ!",
+       "pageinfo-title": "လွၼ်ႉၶၢဝ်ႇ တွၼ်ႈတႃႇ \"$1\"",
        "pageinfo-header-basic": "�လွၼ်ႉၶၢဝ်ႈ ပိုၼ်ႉထၢၼ်",
        "pageinfo-header-edits": "ပိုၼ်းမႄးထတ်း",
        "pageinfo-header-restrictions": "လွင်ႈႁႄႉၵင်ႈၼႃႈလိၵ်ႈ",
        "pageinfo-language-change": "လႅၵ်ႈလၢႆႈ",
        "pageinfo-content-model": "ပိူင်ၵေႃႇသၢင်ႈ လမ်းၼႂ်း ၼႃႈလိၵ်ႈ",
        "pageinfo-content-model-change": "လႅၵ်ႈလၢႆႈ",
+       "pageinfo-robot-policy": "လွင်ႈ ၶိူင်ႈၸၢၵ်ႈၵေႃႉ ၸီႉၼႄပၼ်",
        "pageinfo-robot-index": "ၶႂၢင်းပၼ်ဝႆႉ",
        "pageinfo-robot-noindex": "ဢမ်ႇၶႂၢင်းပၼ်ဝႆႉ",
        "pageinfo-watchers": "တၢင်းၼမ် ၽူႈတူၺ်းၼႃႈလိၵ်ႈ",
        "pageinfo-visiting-watchers": "တၢင်းၼမ်ၽူႈၶဝ်ႈတူၺ်း ၼႃႈလိၵ်ႈ ၵေႃႉဢၼ် တိုၵ်ႉႁႃၶဝ်ႈဢႅဝ်တီႈ လွင်ႈမႄးထတ်း ၸိူဝ်းပႆႇပေႃးႁိုင်",
        "pageinfo-few-watchers": "ဢေႇလိူဝ်သေ $1 {{PLURAL:$1|ၽူႈၶဝ်ႈတူၺ်း}}",
+       "pageinfo-redirects-name": "တၢင်းၼမ် လွင်ႈပိၼ်ႇၽၢႆႇ ၸူး ၼႃႈလိၵ်ႈဢၼ်ၼႆႉ",
+       "pageinfo-subpages-name": "တၢင်းၼမ် ၼႃႈလိၵ်ႈၽႄ ၶွင်ႈၼႃႈလိၵ်ႈဢၼ်ၼႆႉ",
        "pageinfo-firstuser": "ၽူႈၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈ",
        "pageinfo-firsttime": "ဝၼ်းထီႉ လွင်ႈၵေႃႇသၢင်ႈ ၼႃႈလိၵ်ႈ",
        "pageinfo-lastuser": "ၽူႈမႄးထတ်း ၵေႃႉလိုၼ်းသုတ်း",
        "pageinfo-authors": "ႁူဝ်ႁုပ်ႈတၢင်းၼမ် ၽူႈတႅမ်ႈလိၵ်ႈ ပႅၵ်ႇပိူင်ႈ",
        "pageinfo-recent-edits": "တၢင်းၼမ်လွင်ႈမႄးထတ်း ၸိူဝ်းပႆႇပေႃးႁိုင် (တီႈၼႂ်း ၶၢဝ်းပူၼ်ႉမႃး $1)",
        "pageinfo-recent-authors": "တၢင်းၼမ် ၽူႈတႅမ်ႈလိၵ်ႈ ပႅၵ်ႇပိူင်ႈ ၸိူဝ်းဢၼ်ပႆႇပေႃးႁိုင်",
+       "pageinfo-magic-words": " {{PLURAL:$1|ၶေႃႈၵႂၢမ်း|ၶေႃႈၵႂၢမ်းၸိူဝ်း}} ($1) မေႃၽၢမ်း",
        "pageinfo-hidden-categories": "သိူင်ႇဝႆႉ {{PLURAL:$1|လိူင်ႈ|လိူင်ႈ(ၼမ်)}} ($1)",
+       "pageinfo-templates": "{{PLURAL:$1|ပိူင်တမ်း|ၸိူဝ်းပိူင်တမ်း}} ($1) ဢၼ်ႁဵတ်းဝႆႉ Transclude",
        "pageinfo-toolboxlink": "လွၼ်ႉၶၢဝ်ႇၼႃႈလိၵ်ႈ",
        "pageinfo-redirectsto": "ဝိၼ်ႇၵႂႃႇၸူး",
        "pageinfo-redirectsto-info": "လွၼ်ႉၶၢဝ်ႇ",
        "markaspatrolleddiff": "မၢႆဝႆႉၼင်ႇ ပႂ်ႉယၢမ်း",
        "markaspatrolledtext": "မၢႆဝႆႉၼႃႈလိၵ်ႈၼင်ႇ ပႂ်ႉယၢမ်း",
        "markedaspatrolled": "မၢႆဝႆႉၼင်ႇ ပႂ်ႉယၢမ်း",
+       "patrol-log-page": "သဵၼ်ႈမၢႆ လွင်ႈပႂ်ႉၵူတ်ႇထတ်း",
        "previousdiff": "ၵၢၼ်မႄးထတ်း ဢၼ်ၵဝ်ႇ",
        "nextdiff": "ထတ်းသၢင်ႈဢၼ်မႂ်ႇမႂ်ႇ",
+       "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|ၼႃႈလိၵ်ႈ|ၼႃႈလိၵ်ႈ။}}",
        "file-info-size": "$1 × $2 pixels, တၢင်းလဵၵ်ႉတၢင်းယႂ်ႇ ၾၢႆႇ: $3, ယိူင်ႈ MIME: $4",
        "file-info-size-pages": "$1 × $2 pixels, သႅၼ်းၾၢႆႇ: $3, ၸုပ်ႈ MIME: $4, $5 {{PLURAL:$5|ၼႃႈ|ၼႃႈ(ၼမ်)}}",
        "file-nohires": "ဢမ်ႇမီး ဢၼ်ႁႅင်းၸိုၼ်ႈသႂ်ႇမၼ်း သုင်သုင်",
        "version-extensions": "သၢႆလင် ၸိူဝ်းဢူၼ်းသႂ်ႇဝႆႉ�",
        "version-skins": "ၽိဝ်ၼင် ၸိူဝ်းဢူၼ်းသႂ်ႇဝႆႉ�",
        "version-specialpages": "�ၼႃႈလိၵ်ႈ ၶိုၵ်ႉတွၼ်း",
+       "redirect": "ၶိုၼ်းပိၼ်ႇၽၢႆ ၼင်ႇ ၾၢႆႇ၊ ၽူႈၸႂ်ႉတိုဝ်း၊ ၼႃႈလိၵ်ႈ၊ လွင်ႈမႄးၶိုၼ်း ဢမ်ႇၼၼ် မၢႆၽၢင် သဵၼ်ႈမၢႆ",
+       "redirect-submit": "သိုပ်ႇၵႂႃႇ",
+       "redirect-lookup": "ပိုတ်ႇတူၺ်း:",
+       "redirect-value": "ၵႃႈၶၼ်:",
+       "redirect-user": "ၽၢႆၽၢင် ၽူႈၸႂ်ႉတိုဝ်း",
+       "redirect-page": "မၢႆၽၢင် ၼႃႈလိၵ်ႈ",
+       "redirect-revision": "လွင်ႈမႄးၶိုၼ်းၼႃႈလိၵ်ႈ",
+       "redirect-file": "ၸိုဝ်ႈၾၢႆႇ",
        "specialpages": "ၼႃႈလိၵ်ႈ ၶိုၵ်ႉတွၼ်း",
        "tag-filter": "ၶတ်းလိူၵ်ႈဢဝ်[[Special:Tags|Tag]]:",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tags}}]]: $2)",
+       "tags-active-yes": "ၸႂ်ႈယဝ်ႉ",
+       "tags-active-no": "ဢမ်ႇ",
+       "tags-hitcount": "$1 {{PLURAL:$1|လႅၵ်ႈလၢႆႈ|ၸိူဝ်းလႅၵ်ႈလၢႆႈ}}",
        "logentry-delete-delete": "$1 {{GENDER:$2|မွတ်ႇယဝ်ႉ}} ၼႃႈလိၵ်ႈ $3",
        "logentry-delete-restore": "$1 {{GENDER:$2|ဢဝ်ၶိုၼ်း}} ၼႃႈလိၵ်ႈ $3 ($4)",
+       "logentry-delete-revision": "$1 {{GENDER:$2|လႅၵ်ႈလၢႆႈဝႆႉ}} လွင်ႈႁၼ်လႆႈၶွင် {{PLURAL:$5|လွင်ႈၶူၼ်ႉမႄးၶိုၼ်း|$5 လွင်ႈၶူၼ်ႉမႄးၶိုၼ်း}} တီႈၼိူဝ် ၼႃႈလိၵ်ႈ $3: $4",
+       "revdelete-content-hid": "လမ်းၼႂ်း ဢၼ်သိူင်ႇဝႆႉ",
        "logentry-move-move": "$1 {{GENDER:$2|ၶၢႆႉယဝ်ႉ}} ၼႃႈလိၵ်ႈ $3 တေႃႇ $4",
+       "logentry-move-move-noredirect": "ဢမ်ႇဢွၵ်ႇယၢၼ် လွင်ႈပိၼ်ႇၽၢႆႇေသ $1 {{GENDER:$2|ၶၢႆႉဝႆႉ}} ၼႃႈလိၵ်ႈ $3 တေႃႇ $4",
+       "logentry-move-move_redir": "တၢင်ႇၼိူဝ် လွင်ႈပိၼ်ႇၽၢႆႇ သေ $1 {{GENDER:$2|ၶၢႆႉ}} ၼႃႈလိၵ်ႈ $3 တေႃႇ $4",
        "logentry-newusers-create": "ဢၶွင်ႉၽူႈၸႂ်ႉတိုဝ်း $1 ၼႆႉ လႆႈ  {{GENDER:$2|ၵေႃႇသၢင်ႈယဝ်ႉ}}",
+       "logentry-newusers-autocreate": "ဢၶွင်ႉ ၽူႈၸႂ်ႉတိုဝ်း $1 ၼႆႉ ထုၵ်ႇ  {{GENDER:$2|ၵေႃႇသၢင်ႈၵႂႃႇ}} ႁင်းမၼ်းယဝ်ႉ။",
        "logentry-upload-upload": "$1 {{GENDER:$2|လူတ်ႇၶိုၼ်ႈၵႂႃႇယဝ်ႉ}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|လူတ်ႇၶိုၼ်ႈဝႆႉ}} မၢႆဢွၵ်ႇဢၼ်မႂ်ႇ ၶွင် $3",
        "searchsuggest-search": "ၶူၼ်ႉႁႃ {{SITENAME}}",
+       "duration-days": "$1 {{PLURAL:$1|ဝၼ်း|ဝၼ်း။}}",
        "mw-widgets-dateinput-no-date": "ပႆႇလိူၵ်ႈဝၼ်းယၢမ်း",
+       "randomrootpage": "ၼႃႈလိၵ်ႈငဝ်ႈႁၢၵ်ႈ ၵမ်ႉသၢင်ႇတေႃႇ",
        "revid": "ၶူၼ်ႉၶႆႈ $1",
        "pageid": "မၢႆၽၢင် ၽိုၼ်လိၵ်ႈ $1"
 }
index 771dee7..db48f9a 100644 (file)
        "view": "ݙکھالے",
        "view-foreign": "$1 تے ݙیکھو",
        "edit": "لکھو",
+       "edit-local": "مقامی تفصیل درج کرو",
        "create": "بݨاؤ",
        "create-local": "آپنی لکھت رلاؤ",
        "delete": "مٹاؤ",
        "internalerror": "اندر دی غلطی",
        "internalerror_info": "اندر دی غلطی:$1",
        "filedeleteerror": "مِسَل \"$1\" کوں مٹایا نی ونڄ سڳیا۔",
+       "cannotdelete-title": "ورقہ\"$1\" نی مٹا سڳدے",
        "badtitle": "بھیڑا عنوان",
        "viewsource": "ماخذ ݙیکھو",
        "viewsource-title": "$1 دا مسودہ ݙیکھو",
        "cannotcreateaccount-title": "کھاتے نہوے بݨا سڳدے",
        "yourdomainname": "تہاݙی ڈومین:",
        "login": "لاگ ان تھیوو",
+       "login-security": "آپݨی سنڄاݨ دی تصدیق کرو",
        "nav-login-createaccount": "لاگ ان / کھاتہ کھولو",
        "logout": "لاگ آؤٹ",
        "userlogout": "لاگ آؤٹ",
        "createacct-reason": "سبب",
        "createacct-submit": "اپݨاں کھاتا کھولو",
        "createacct-another-submit": "کھاتہ کھولو",
+       "createacct-continue-submit": "کھاتہ بݨاوݨ جاری رکھو",
+       "createacct-another-continue-submit": "کھاتہ بݨاوݨ جاری رکھو",
        "createacct-benefit-heading": "{{SITENAME}} تہاݙے وانگوں علم دوست افراد دا مرہون منت ہے۔",
        "createacct-benefit-body1": "$1 {{PLURAL:$1|تبدیلی|تبدیلیاں}}",
        "createacct-benefit-body2": "\n$1 {{PLURAL:$1|ورقہ|ورقے}}",
        "loginsuccesstitle": "لاگ ان تھی ڳیا",
        "mailmypassword": "نواں پاس ورڈ بݨاؤ",
        "emailconfirmlink": "آپݨے ای میل پتے دی تصدیق کرو",
+       "emaildisabled": "ایہ سائٹ ای میل نی بھیج سڳدی۔",
        "accountcreated": "کھاتہ کھل ڳیا",
        "loginlanguagelabel": "زبان: $1",
        "pt-login": "لاگ ان تھیوو",
        "pt-login-button": "لاگ ان تھیوو",
+       "pt-login-continue-button": "لاگ ان جاری رکھو",
        "pt-createaccount": "کھاتہ کھولو",
        "pt-userlogout": "لاگ آؤٹ",
        "changepassword": "پاس ورڈ تبدیل کرو",
        "preview": "نمائش",
        "showpreview": "نمائش",
        "showdiff": "تبدیلیاں ݙکھاؤ",
+       "subject-preview": "موضوع دی نمائش:",
+       "blockedtitle": "ورتݨ آلا بلاک ہے",
+       "blockednoreason": "کوئی وجہ نی ݙتی ڳئی",
        "loginreqtitle": "لاگ ان ضروری ہے",
        "loginreqlink": "لاگ ان",
        "accmailtitle": "پاس ورڈ بھیج ݙتے",
        "hiddencategories": "ایہ ورقہ {{PLURAL:$1|1 لُکے زمریاں|$1 لکا زمرہ }} وچ شامل ہے:",
        "permissionserrors": "خطائے اجازت",
        "moveddeleted-notice": "ایہ ورقہ مٹایا ڳیا ہے۔ مٹاوݨ دا لاگ،حفاظت دا لاگ تے ورقہ ٹورݨ دا لاگ  حوالے کیتے ہیٹھاں ݙتے ہوئے ہن۔",
+       "log-fulllog": "پورا لاگ ݙیکھو",
        "content-model-wikitext": "ویکی متن",
        "content-model-text": "سادہ متن",
        "content-model-javascript": "جاوا  سکرپٹ",
        "history-feed-title": "ریویژن رکارڈ",
        "history-feed-description": "وکی تے ایں ورقے دی ریویژن ہسٹری",
        "history-feed-item-nocomment": "$2 کوں $1",
+       "rev-deleted-user": "(ورتن آلا ناں مٹ ڳیا)",
        "rev-delundel": "ݙکھاؤ/لکاؤ",
        "rev-showdeleted": "ݙیکھاؤ",
        "revdelete-show-file-submit": "ڄیا",
        "revdelete-hide-comment": "تبدیلی دا خلاصہ",
+       "revdelete-radio-same": "(تبدیل نہ کرو)",
        "revdelete-radio-set": "پوشیدہ",
        "revdelete-radio-unset": "ظاہر",
        "revdelete-log": "سبب:",
+       "deletedhist": "مٹایا ہویا تاریخچہ",
        "revdelete-reasonotherlist": "ہور وجہ",
        "revdelete-edit-reasonlist": "مٹاوݨ دی وجہ لکھو",
        "mergehistory-from": "مآخذ ورقہ:",
        "prefs-advancedsearchoptions": "اعلیٰ اختیارات",
        "prefs-advancedwatchlist": "اعلیٰ اختیارات",
        "prefs-tokenwatchlist": "ٹوکن",
+       "prefs-diffs": "فرق",
        "userrights-reason": "سبب:",
        "userrights-expiry": "مُکسی:",
        "userrights-expiry-othertime": "ٻیا ویلا:",
        "action-edit": "ایں ورقے تے لکھو",
        "action-createpage": "ایہ ورقہ بݨاؤ",
        "action-createaccount": "ایہ ورتݨ آلا کھاتہ کھولو",
+       "action-move": "ایہ ورقہ ٹورو",
+       "action-movefile": "ایہ فائل ٹورو",
        "action-delete": "ایہ ورقہ مٹاؤ",
        "action-sendemail": "ای میلاں بھیجو",
        "enhancedrc-history": "پچھلا کم",
        "rcfilters-savedqueries-unsetdefault": "ݙیفالٹ توں ہٹاؤ",
        "rcfilters-savedqueries-remove": "مٹاؤ",
        "rcfilters-savedqueries-new-name-label": "ناں",
+       "rcfilters-savedqueries-apply-label": "نتارا بݨاؤ",
        "rcfilters-savedqueries-cancel-label": "منسوخ",
        "rcfilters-filterlist-title": "نتارے",
        "rcfilters-highlightmenu-title": "رنگ چݨو",
        "upload-form-label-own-work": "یہ میݙا ذاتی کم ہے",
        "upload-form-label-infoform-categories": "قسماں، زمرے",
        "upload-form-label-infoform-date": "تاریخ",
+       "backend-fail-delete": "مِسَل \"$1\" کوں مٹایا نی ونڄ سڳیا۔",
        "license": "اجازت نامہ:",
        "license-header": "اجازہ کاری",
        "listfiles-delete": "مٹاؤ",
        "filedelete-legend": "فائل مٹاؤ",
        "filedelete-comment": "سبب:",
        "filedelete-submit": "مٹاؤ",
+       "filedelete-maintenance-title": "مِسل نی مٹا سڳدے",
        "randompage": "رلے ملے ورقے",
        "randomincategory-category": "قسم:",
        "randomincategory-submit": "ڄلو",
        "allpages-hide-redirects": "رجوع مکررات لکاؤ",
        "categories": "زمرہ",
        "categories-submit": "ݙِکھاؤ",
+       "deletedcontributions": "ورتݨ آلے دے کم مٹا ݙتے ڳئے",
        "linksearch-ok": "ڳولو",
        "listusers-submit": "ݙِکھاؤ",
        "listgrouprights-group": "گروپ:",
        "enotif_reset": "سارے ورقے ڈیکھ گھدن",
        "deletepage": "ورقہ مٹاؤ",
        "confirm": "تصدیق",
+       "delete-confirm": "\"$1\" مٹاؤ",
        "delete-legend": "مٹاؤ",
        "historyaction-submit": "ݙِکھاؤ",
        "dellogpage": "مٹاوݨ آلی لاگ",
        "restriction-move": "ٹرو",
        "restriction-create": "بݨاؤ",
        "restriction-upload": "اپلوڈ",
+       "undelete": "مٹائے ڳئے ورقے ݙیکھو",
        "undeletecomment": "سبب:",
        "undelete-search-submit": "ڳولو",
        "undelete-show-file-submit": "جیا",
        "show-big-image-preview": "ایں نمائش دا حجم:$1",
        "show-big-image-other": "ٻیاں {{PLURAL:$2|قرارداد|قراردادیں}}: $1۔",
        "show-big-image-size": "$1 × $2 پکسلز",
+       "sunday-at": "اتوار بوقت $1",
        "metadata": "میٹا ڈیٹا",
        "metadata-help": "ایں فائل وچ ٻیاں معلومات وی ہن۔ شاید او تہاݙے کیمرے یا سیکنر توں آیاں ہن، جیندے نال تساں ایہ فائل بݨائی ہائی۔\nجے ایہ فائل آپݨی اصل حالت وچ نہ ہووے تاں کجھ معلومات تبدیل تھئی ہوئی فائل دی پوری پوری عکاسی کائناں کریسی۔",
        "metadata-fields": "تصویر دے میٹاڈیٹا دے او خانے جہڑے پیغام میں درج ہن او تصویر دے صفحے تے شامل ہوندے ہن۔ ایہ ااوں ویلے ظاہر تھیندن جڈݨ میٹاڈیٹا کوں ودھایا ونڄے۔\nٻئے خانے شروع وچ لُڳے ہوندن۔\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "tags-active-yes": "ڄیا",
        "tags-active-no": "کو",
        "tags-hitcount": "$1 {{PLURAL:$1|تبدیلی|تبدیلیاں}}",
+       "diff-form": "فرق",
        "logentry-delete-delete": "$1 {{GENDER:$2|مٹایا ڳیا}} ورقہ $3",
        "logentry-delete-restore": "$1 {{GENDER:$2|بحال تھی ڳیوہے}} page $3 ($4)",
        "revdelete-content-hid": "مواد لکیا",
index 0844073..0f5b47c 100644 (file)
@@ -51,6 +51,7 @@
        "tog-watchlisthideminor": "Na spisku nadzorov skrij manjša urejanja",
        "tog-watchlisthideliu": "Na spisku nadzorov skrij urejanja prijavljenih uporabnikov",
        "tog-watchlistreloadautomatically": "Samodejno ponovno naloži spisek nadzorov ob spremembi filtra (zahteva JavaScript)",
+       "tog-watchlistunwatchlinks": "Dodaj neposredne povezave za dodajanje/odstranjevanje strani s spiska nadzorov (za funkcionalnost preklopa je zahtevan JavaScript)",
        "tog-watchlisthideanons": "Na spisku nadzorov skrij urejanja anonimnih uporabnikov",
        "tog-watchlisthidepatrolled": "Na spisku nadzorov skrij pregledana urejanja",
        "tog-watchlisthidecategorization": "Skrij kategorizacijo strani",
        "tmp-write-error": "Napaka pri pisanju začasne datoteke",
        "large-file": "Priporočeno je, da datoteke niso večje od $1; ta datoteka je $2.",
        "largefileserver": "Velikost datoteke presega strežnikove nastavitve.",
-       "emptyfile": "Kaže, da je aložena datoteka prazna.\nDo tega bi lahko prišlo zaradi tipkarske napake v imenu.\nAli datoteko resnično želite naložiti?",
+       "emptyfile": "Kaže, da je naložena datoteka prazna.\nDo tega bi lahko prišlo zaradi tipkarske napake v imenu.\nAli resnično želite datoteko naložiti?",
        "windows-nonascii-filename": "Ta wiki ne podpira imen datotek s posebnimi znaki.",
        "fileexists": "Datoteka s tem imenom že obstaja. Preden jo {{GENDER:|povozite}}, preverite stran <strong>[[:$1]]</strong>.\n[[$1|thumb]]",
        "filepageexists": "Opisna stran za to datoteko je bila že ustvarjena na <strong>[[:$1]]</strong>, vendar datoteka s tem imenom trenutno ne obstaja.\nPovzetek, ki ste ga vnesli, se ne bo prikazal na opisni strani.\nDa tam prikažete povzetek, morate stran urediti ročno.\n[[$1|thumb]]",
index 4a121f7..2546fdc 100644 (file)
        "rcfilters-other-review-tools": "<strong>Остали алати за преглед</strong>",
        "rcfilters-grouping-title": "Груписање",
        "rcfilters-activefilters": "Активни филтери",
+       "rcfilters-advancedfilters": "Напредни филтери",
        "rcfilters-limit-title": "Приказати измјена",
        "rcfilters-limit-shownum": "Прикажи посљедњих $1 измјена",
        "rcfilters-days-show-days": "$1 {{PLURAL:$1|дан|дана}}",
        "rcfilters-filter-lastrevision-description": "Само најновија измена на страници.",
        "rcfilters-filter-previousrevision-label": "Раније измене",
        "rcfilters-filter-previousrevision-description": "Све измене које нису најскорашњије измене странице.",
+       "rcfilters-view-advanced-filters-label": "Напредни филтери",
        "rcfilters-view-namespaces-tooltip": "Филтер резултата према именском простору",
+       "rcfilters-view-tags-tooltip": "Филтер резултата према ознаци измјене",
        "rcnotefrom": "Испод {{PLURAL:$5|је измена|су измене}} од <strong>$3, $4</strong> (до <strong>$1</strong> приказано).",
        "rclistfromreset": "Ресетуј одабир датума",
        "rclistfrom": "Прикажи нове измене почев од $2 $3",
index d612734..1c752eb 100644 (file)
        "rcfilters-legend-heading": "<strong>Spisak skraćenica:</strong>",
        "rcfilters-other-review-tools": "<strong>Ostali alati za pregled:</strong>",
        "rcfilters-activefilters": "Aktivni filteri",
+       "rcfilters-advancedfilters": "Napredni filteri",
        "rcfilters-limit-title": "Prikazati izmjena",
        "rcfilters-limit-shownum": "Prikaži posljednjih $1 izmjena",
        "rcfilters-days-show-days": "$1 {{PLURAL:$1|dana|dana}}",
        "rcfilters-filter-newpages-label": "Stvaranje stranica",
        "rcfilters-filter-newpages-description": "Izmjene kojima se stvaraju nove stranice.",
        "rcfilters-filter-logactions-label": "Radnje zabilježene u dnevnicima",
+       "rcfilters-view-advanced-filters-label": "Napredni filteri",
        "rcfilters-view-namespaces-tooltip": "Filter rezultata prema imenskom prostoru",
+       "rcfilters-view-tags-tooltip": "Filter rezultata prema oznaci izmjene",
        "rcnotefrom": "Ispod {{PLURAL:$5|je izmena|su izmene}} od <strong>$3, $4</strong> (do <strong>$1</strong> prikazano).",
        "rclistfrom": "Prikaži nove izmene počev od $2 $3",
        "rcshowhideminor": "$1 manje izmene",
index aed3d98..28ea0ae 100644 (file)
        "permissionserrorstext-withaction": "Du har inte behörighet att $2, av följande {{PLURAL:$1|anledning|anledningar}}:",
        "contentmodelediterror": "Du kan inte redigera den här sidversionen eftersom dess innehållsmodell är <code>$1</code> som skiljer sig från sidans aktuella innehållsmodell <code>$2</code>.",
        "recreate-moveddeleted-warn": "'''Varning: Du återskapar en sida som tidigare raderats.'''\n\nDu bör överväga om det är lämpligt att fortsätta redigera den här sidan.\nRaderings- och sidflyttningsloggen för den här sidan visas här som hjälp:",
-       "moveddeleted-notice": "Den här sidan har raderats.\nRaderings- och sidflyttningsloggen för sidan visas nedan som referens.",
-       "moveddeleted-notice-recent": "Tyvärr, denna sida raderades nyligen (inom de senaste 24 timmarna).\nLoggen för radering och flyttning av sidan visas nedan som referens.",
+       "moveddeleted-notice": "Den här sidan har raderats.\nRaderings-, skydd- och sidflyttningsloggen för sidan visas nedan som referens.",
+       "moveddeleted-notice-recent": "Tyvärr, denna sida raderades nyligen (inom de senaste 24 timmarna).\nLoggen för radering, skydd och flyttning av sidan visas nedan som referens.",
        "log-fulllog": "Visa fullständig logg",
        "edit-hook-aborted": "Redigering avbruten av hook.\nDen gav ingen förklaring.",
        "edit-gone-missing": "Kunde inte uppdatera sidan.\nDet verkar som att den har raderats.",
        "watching": "Bevakar...",
        "unwatching": "Avbevakar...",
        "watcherrortext": "Ett fel inträffade när du ändrade dina bevakningsinställningarna för \"$1\".",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "Markera alla sidor som besökta",
        "enotif_impersonal_salutation": "{{SITENAME}}användare",
        "enotif_subject_deleted": "{{SITENAME}}sidan $1 har raderats av {{gender:$2|$2}}",
        "compare-invalid-title": "Titeln du angav är ogiltig.",
        "compare-title-not-exists": "Titeln du angav finns inte.",
        "compare-revision-not-exists": "Versionen du angav finns inte.",
-       "diff-form": "ett '''formulär'''",
+       "diff-form": "Skillnader",
+       "diff-form-oldid": "Gammalt versions-ID (valfritt)",
+       "diff-form-revid": "Versions-ID för diff",
+       "diff-form-submit": "Visa differenser",
+       "permanentlink": "Permanent länk",
+       "permanentlink-revid": "Sidversions-ID",
+       "permanentlink-submit": "Gå till sidversion",
        "dberr-problems": "Ursäkta! Denna sajt har just nu tekniska problem.",
        "dberr-again": "Pröva med att vänta några minuter och ladda om.",
        "dberr-info": "(Kan inte komma åt databasen: $1)",
diff --git a/languages/i18n/tay.json b/languages/i18n/tay.json
new file mode 100644 (file)
index 0000000..baf6ce6
--- /dev/null
@@ -0,0 +1,538 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Akamycoco",
+                       "Corainn",
+                       "Hitaypayan",
+                       "Temu19900728",
+                       "Translatealcd"
+               ]
+       },
+       "sunday": "Hngawan ryax",
+       "monday": "’Ringan qutux hngawan",
+       "tuesday": "Tay sazing ryax qutux hngawan",
+       "wednesday": "Tay cyugal ryax qutux hngawan",
+       "thursday": "Tay spayat ryax qutux hngawan",
+       "friday": "Tay zmagal ryax qutux hngawan",
+       "saturday": "Smka’ ryax",
+       "sun": "Hngawan ryax",
+       "mon": "Ringan qutux hngawan",
+       "tue": "Tay sazing ryax qutux hngawan",
+       "wed": "Tay cyugal ryax qutux hngawan",
+       "thu": "Tay spayat ryax qutux hngawan",
+       "fri": "Tay zmagal ryax qutux hngawan",
+       "sat": "Smka’ ryax",
+       "january": "Tay qutux byacing",
+       "february": "Tay sazing byacing",
+       "march": "Tay cyugal byacing",
+       "april": "Tay spayat byacing",
+       "may_long": "Tay ymagal byacing",
+       "june": "Tay mtzyu’ byacing",
+       "july": "Tay mpitu’ byacing",
+       "august": "Tay mspat byacing",
+       "september": "Tay mqiru’ byacing",
+       "october": "Tay mawpuw byacing",
+       "november": "Tay mawpuw qutux byacing",
+       "december": "Tay mawpuw sazing byacing",
+       "january-gen": "tay qutux byacing",
+       "february-gen": "Tay sazing byacing",
+       "march-gen": "Tay cyugal byacing",
+       "april-gen": "Tay spayat byacing",
+       "may-gen": "Tay ymagal byacing",
+       "june-gen": "Tay mtzyu’ byacing",
+       "july-gen": "Tay mpitu’ byacing",
+       "august-gen": "Tay mspat byacing",
+       "september-gen": "Tay mqiru’ byacing",
+       "october-gen": "Tay mawpuw byacing",
+       "november-gen": "Tay mawpuw qutux byacing",
+       "december-gen": "Tay mawpuw sazing byacing",
+       "jan": "Tay qutux byacing",
+       "feb": "Tay sazing byacing",
+       "mar": "Tay cyugal byacing",
+       "apr": "Tay spayat byacing",
+       "may": "Tay ymagal byacing",
+       "jun": "Tay mtzyu’ byacing",
+       "jul": "Tay mpitu’ byacing",
+       "aug": "Tay mspat byacing",
+       "sep": "Tay mqiru’ byacing",
+       "oct": "Tay mawpuw byacing",
+       "nov": "Tay mawpuw qutux byacing",
+       "dec": "Tay mawpuw sazing byacing",
+       "january-date": "tay qutux byacing $1",
+       "february-date": "tay sazing byacing $1",
+       "march-date": "tay cyugal byacing $1",
+       "april-date": "tay spayat byacing $1",
+       "may-date": "tay ymagal byacing $1",
+       "june-date": "tay mtzyu’ byacing $1",
+       "july-date": "tay mpitu’ byacing $1",
+       "august-date": "tay mspat byacing $1",
+       "september-date": "tay mqiru’ byacing $1",
+       "october-date": "tay mawpuw byacing $1",
+       "november-date": "tay mawpuw qutux byacing $1",
+       "december-date": "tay mawpuw sazing byacing $1",
+       "period-am": "AM",
+       "period-pm": "PM",
+       "pagecategories": "{{PLURAL:$1|Pinbuci’ niya’ qmasuw|$1 Pinbuci’ niya’ qmasuw}}",
+       "category_header": "Zngazyan tay qsahuy pintbcyan sa\"$1\"",
+       "subcategories": "Uzyuk na pintbcyan",
+       "category-media-header": "Cyux niya’ ptbcyun na \"$1\" Meti’",
+       "hidden-categories": "{{PLURAL:$1| Lnqing na pintbcyan }}",
+       "category-subcat-count": "{{PLURAL:$2|pintbcyan qaniy ga nanak yaquw qutux uzyuk na pintbcyan quw spgluw niya’.| pintbcyan qaniy ga kwara’ kin na $1 uzyuk na pintbcyan sawn niya uziy, $2 kwara’.}}",
+       "category-article-count": "{{PLURAL:$2| pintbcyan qaniy ga ginkwara’ zngazyan tay suruw. | pintbcyan qaniy ga kwara’ kin $1 pintbcyan tay suruw, $2 kwara’.}}",
+       "category-file-count": "{{PLURAL:$2|Pintbcyan niya’ qaniy ga nanak yaquw nyux niya’ sbiru’ sa hugal qaniy|Pintbcyan niya’ qaniy ga kwara’ kin na biru’ ka $1, psqunun kwara\nga $2 .}}",
+       "listingcontinuesabbrev": "pin’ubuy sa",
+       "about": "Nanu’ quw",
+       "newwindow": "(gyahiy na giqas na kktan)",
+       "cancel": "laxan",
+       "moredotdotdot": "pzyux na’...",
+       "mypage": "qutux qutux gnyahan",
+       "mytalk": "mpkal",
+       "anontalk": "mpkal",
+       "navigation": "Pglaing pzyangay",
+       "and": "&#32; squw &#32",
+       "faq": "FAQ",
+       "namespaces": "Sslalu’ sa kung cyen",
+       "variants": "Qbuci’ pinsbahan",
+       "navigation-heading": "Biru’ na bzyagan pglaing pzyangay",
+       "returnto": " ’bzinah $1",
+       "tagline": "Minkahul squw {{SITENAME}}",
+       "help": "Minblaq kmal",
+       "search": "Hhkangi’",
+       "searchbutton": "Shkangi’",
+       "go": "mtzyuwaw",
+       "searcharticle": "Ptzyuwaw",
+       "history": "Zngazyan binrwan sraral",
+       "history_short": "Kwara’ binrwan sraral",
+       "history_small": "Pinhknyan sraral",
+       "printableversion": "Kinbalay sa musa’ blaq sp’isat",
+       "permalink": "Mrayrhuw na pin’ubuy",
+       "view": "view",
+       "view-foreign": "Psbzih mita’ squ$1",
+       "edit": "Smr’zyut miru’smr’zyut miru’",
+       "create": "ps’rux",
+       "create-local": "Tnwang sa kay’ na rhzyal qasa",
+       "delete": "’muyut",
+       "protect": "mlahang",
+       "protect_change": "smbah",
+       "newpage": "Giqas na zngayan",
+       "talkpagelinktext": "mpkal",
+       "specialpage": "Mnanak na bbrwan",
+       "personaltools": "Qayqaya’ nanak saxa’",
+       "talk": "Spkayal",
+       "views": "Cyens’",
+       "toolbox": "Qayqaya’",
+       "otherlanguages": "Kay’ bzinah",
+       "redirectedfrom": "(wal niya’ t’ringun paykura’ squ $1)",
+       "redirectto": "T’ringun pawsa’ sa",
+       "lastmodifiedat": "Zzngayan qaniy gasinr’zyut niya’ squ pucing balay tay$1 $2.",
+       "jumpto": "Musa’",
+       "jumptonavigation": "Pglaing pzyangay",
+       "jumptosearch": "Hkangi’",
+       "aboutsite": "Nanu’ quw {{SITENAME}}",
+       "aboutpage": "Project: Nanu’ quw",
+       "copyrightpage": "{{ns:project}}:pancyuen",
+       "currentevents": "’Awsan na giqas na Sinbung",
+       "currentevents-url": "Project: Pzyang giqas na sinbung",
+       "disclaimers": "Gaga’ na iyat ppanga’ sikining",
+       "disclaimerpage": "Project: kwara’ qu gaga’ na iyat ppanga’ sikining",
+       "edithelp": "Smbbaq sa ssawn nanu’ miru’ qsahuy na ssr’zyut miru’",
+       "helppage-top-gethelp": "Minblaq kmal",
+       "mainpage": "T’ringan na zzngayan",
+       "mainpage-description": "T’ringan na zzngayan",
+       "policy-url": "Project:Gaga’ na zyuwaw nanak",
+       "portal": "Kkzyup secyun",
+       "portal-url": "Project:kkzyup secyun",
+       "privacy": "Gaga’ na zyuwaw nanak",
+       "privacypage": "Project: Gaga’ na zyuwaw nanak",
+       "ok": "OK",
+       "retrievedfrom": "’Nagal sa \"$1\"",
+       "editsection": "Smr’zyut miru’",
+       "editold": "Smr’zyut miru’",
+       "editlink": "Smr’zyut miru’",
+       "viewsourcelink": "Kta quw llpgan aring sa cin’ringan",
+       "editsectionhint": "Smr’zyut miru’ gnaygay binrwan:$1",
+       "toc": "bnrwan tay qsahuy",
+       "showtoc": "Pkaykita’",
+       "hidetoc": "smbbaq",
+       "confirmable-yes": "Aw’",
+       "confirmable-no": "Iyat",
+       "site-atom-feed": "$1 na tkhulan Atom",
+       "page-atom-feed": "inkhulan na Atom tay $1",
+       "red-link-title": "$1 (ungat zzngayan)",
+       "nstab-main": "Zzngayan",
+       "nstab-user": "Pkt’aniy",
+       "nstab-special": "Mnanak na bbrwan",
+       "nstab-project": "Zngyan na Cwan’an",
+       "nstab-image": "biru’ na zayzyuwaw",
+       "nstab-mediawiki": "pintkaykay’",
+       "nstab-template": "Mopan",
+       "nstab-category": "pintbcyan na mlmlamu’",
+       "mainpage-nstab": "T’ringan na zzngayan",
+       "badtitle": "Ungat zyuwaw na lalu’ na spzyang kkayal",
+       "badtitletext": "Sni’ su’ lalu’ na spzyang kkayal su’ qasa ga ungat zyuwaw niya’, ungat ana nanu’ qsahuy niya’, ini’ ga ini’ su’ ’nblayqiy p’ubuy quw pin’ubuy su’ squw bzinah na kay’, ini’ ga ’mubuy sa sni’ naha’ lalu’ sa Wiki’. \nKuna kya wal su’ syun ka biru’ qasa ga kya’a cyux ’magan sa biru’ na ini’ baqiy mita’ hazi’.",
+       "viewsource": "Kta quw llpgan aring sa cin’ringan",
+       "yourname": "Lalu’ na pptzyuwaw:",
+       "userlogin-yourname": "Lalu’ na pptzyuwaw",
+       "userlogin-yourname-ph": "Brwaniy lalu’ na pptzyuwaw su’",
+       "yourpassword": "Mima’:",
+       "userlogin-yourpassword": "Nanak kung baq sa llpgan qaniy",
+       "userlogin-yourpassword-ph": "Brwaniy Mima’ su’",
+       "userlogin-remembermypassword": "Laxiy zngiy kinzyup maku’",
+       "login": "mzyup",
+       "logout": "mshriq",
+       "userlogout": "mshriq",
+       "userlogin-noaccount": "Ungat canghaw?",
+       "userlogin-joinproject": "Twangiy {{SITENAME}}",
+       "createaccount": "Ps’rux canghaw",
+       "userlogin-resetpassword-link": "Zngyan mima’?",
+       "userlogin-helplink2": "Mzyup musa’ rmaw",
+       "createacct-emailrequired": "Zyusyo na e-meyo’",
+       "createacct-emailoptional": "Zyusyo na e-meyo’ (bruwiy)",
+       "createacct-email-ph": "Brwaniy zyusyo na e-meyo’ su’",
+       "createacct-another-email-ph": "Brwaniy zyusyo na e-meyo’ su’",
+       "createacct-benefit-heading": "{{SITENAME}} hya’ ga ’nagal squw yan isu’ psr’zyut miru’ na squliq pins’rux.",
+       "createacct-benefit-body1": "{{PLURAL:$1|smr’zyut miru’ }}",
+       "createacct-benefit-body2": "{{PLURAL:$1|zzngayan}}",
+       "createacct-benefit-body3": "misuw qaniy na{{PLURAL:$1| smnr’zyut miru’}}",
+       "loginlanguagelabel": "Kay’:$1",
+       "pt-login": "Mzyup",
+       "pt-login-button": "mzyup",
+       "pt-createaccount": "Ps’rux  canghaw",
+       "pt-userlogout": "mshriq",
+       "botpasswords-label-create": "ps’rux",
+       "botpasswords-label-update": "Sbahun giqas",
+       "botpasswords-label-cancel": "laxan",
+       "botpasswords-label-delete": "’muyut",
+       "botpasswords-label-resetpassword": "T’aring lawziy smi’ mima’",
+       "resetpass-submit-cancel": "laxan",
+       "passwordreset": "T’aring lawziy smi’ mima’",
+       "passwordreset-username": "Lalu’ na pptzyuwaw:",
+       "bold_sample": "Qthuy na biru’",
+       "bold_tip": "Qthuy na biru’",
+       "italic_sample": "Mtkkiy na biru’",
+       "italic_tip": "Mtkkiy na biru’",
+       "link_sample": "Spzyang lalu’ na ’ubuy sqaniy",
+       "link_tip": "’nubuy sa qsahuy",
+       "extlink_sample": "http://www.example.com qaniy quw lalu’ na ’ubuy",
+       "extlink_tip": "’ubuy tay bzinah(zngyay su’ yaquw http://quw tqsu’ miru’)",
+       "headline_sample": "Biru’ spzyang lalu’ tay msinqutux",
+       "headline_tip": "Biru’ na spzyang lalu’ na binrwan tay msinsazing",
+       "nowiki_sample": "Si’ quw biru’ na iyat minKs’ xwa’",
+       "nowiki_tip": "Ini’ si’ inlung quw minKs’xwa’ kkayal kay’ na Wiki’",
+       "image_tip": "Pinraw niya’  biru’ na zayzyuwaw",
+       "media_tip": "’ubuy sa biru’ na kwara’ zayzyuwaw",
+       "sig_tip": "Cyux pglgan bnrwan zikang ru ryax nquw binrwan lalu’",
+       "hr_tip": "Swe ping syen (laxiy brwaniy iyal)",
+       "summary": "Lalu’ na spzyang bbiru’ su’",
+       "subject": "spzyang na ptzyuwaw",
+       "minoredit": "Iyat spzyang balay ssr’tun miru’ balay qaniy hya’",
+       "watchthis": "Kmyagal mita’ sa zngayan qaniy",
+       "savearticle": "Cucun qu zngazyan",
+       "showpreview": "Pnaynama’ pkita’ sa misa spkita’ na zayzyuwaw",
+       "showdiff": "Pkaykita’ sinbah",
+       "anoneditwarning": "<strong>Smrhuw kmal:</strong> Ini’ su’ kzyup na’. Maha iy wal su’ sbahun ana inu’ ga, nanu’ quw cyux ki’an na  IP su’ ga musa’ ktan kwara’ squliq. Maha iy <strong>[$1 wal mzyup]</strong> ini’ ga <strong>[$2 ps’rux Canghaw]</strong>,sinr’zyut su’ miru’ qaniy ga musa’ niya’ s’agal sa lalu’ su’ ka nyux mmiru’ qaniy smbbaq, ru musa’ magal sa kwara’ ka qqblayqan na hway naha’.",
+       "loginreqlink": "mzyup",
+       "noarticletext-nopermission": "Ungat ana cikuy knayal sa zyuwaw na qsahuy na lalu’ na kay’ squw nyux ktan sa zngayan qaniy.\nAna su’ s’usa’ sa zngayan tay bzinah \n[[Special:Search/{{PAGENAME}}|hmkangi’ sa puqing lalu’ na zngayan qaniy]], ini’ ga <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hmkangi’ sa m’ubuy sa zyuwaw na bbrwan qutux qutux ryax]</span>,ga ungat kinri’ su’ ms’rux sa zngayan qaniy.",
+       "note": "<strong> pinkita’ niya’ sa pinzga’ :</strong>",
+       "editing": "Nyuw smr’zyut miru’ $1",
+       "editingsection": "smr’zyut miru’ $1 (gnaygay binrwan)",
+       "templatesused": "Zngayan qaniy ga cyux niya’ sptzyuwaw qu nyux sbiru’ hugal qaniy{{PLURAL:$1|mopan}}:",
+       "template-protected": "(klhangan)",
+       "template-semiprotected": "(ana walskun ga baqun smbah)",
+       "hiddencategories": "zngayan qaniy hya’ ga gluw na {{PLURAL:$1|1 lnqing na pintbcyan|$1 lnqing pintbcyan}}na qutux bluw na squliq naha’:",
+       "moveddeleted-notice": "Wal pzyutan quw zngayan qaniy.\nNyux sbiru’ hugal quw wal pzyutan na zngazyan squw sinhzyuwan bniru’ sa qutux qutux ryax aki’ baqun sa ggalan pspngan mita’.",
+       "content-model-wikitext": "Wikitext",
+       "viewpagelogs": "Inblaq mita’ quw bniru’ sa zngazyan qaniy",
+       "currentrev-asof": "Spzyang balay giqas sinbahan squw  $1",
+       "revisionasof": "Gaga’ na pptzyuwaw sa qutux qutux binkgan gaga’",
+       "revision-info": "Nanu’ squ $1 kahul sa {{GENDER:$6|$2}} smnbah squ $7",
+       "previousrevision": "Sinbahan tay glaing",
+       "nextrevision": "Ssbahun babaw nya’→",
+       "currentrevisionlink": "Pzyang giqas na sinhzi’",
+       "cur": "misuw qaniy ga",
+       "last": "tay glaing",
+       "historysize": "({{PLURAL:$1|$1 bzyaqan kkayal na llpgan}})",
+       "rev-delundel": "Smbah sa musa’ slwan mita’",
+       "rev-showdeleted": "Pkaykita’",
+       "revdelete-show-file-submit": "Aw’",
+       "history-title": "Tay \"$1\" na sinbah bniru’ sraral",
+       "difference-title": "Kin ini’ ptnaq sinbahan squw \"$1\"",
+       "lineno": "Tuqiy binkgan binrwan$1:",
+       "editundo": "Psbzinah",
+       "diff-multi-sameuser": "({{PLURAL:ini’ kta quw sinbahan tay kska’ nquw sinbahan  tay $1}})",
+       "searchresults": "Babaw na hinkangi",
+       "searchresults-title": "$1 na babaw hinkangi",
+       "prevn": "tay glaing {{PLURAL:$1|$1}}",
+       "nextn": "tay suruw {{PLURAL:$1|$1}}",
+       "nextn-title": "Pimkaykita’ sa babaw tay {{PLURAL:$1|na pinspngan ktan qasa}}",
+       "shown-title": "Pinkita’ $1 {{PLURAL:$1|babaw nya’| babaw niya’}}squw qutux qutux zzngayan",
+       "viewprevnext": "Psbzih mita’ ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchmenu-new": "<strong>Ps’rux zngazyan squw Wiki qaniy \"[[:$1]]\"!</strong>{{PLURAL:$2|0=|Ini’ ga kt’aniy squ zngayan ka wal su’ ’lwan.|Ini’ ga kta sa hinkangi’ naha’ sa bzinah na zngazyan.}}",
+       "searchprofile-articles": "Bnrwan tay qsahuy na zzngazyan",
+       "searchprofile-images": "Twometi’",
+       "searchprofile-everything": "Kwara’",
+       "searchprofile-advanced": "minbayblaq balay",
+       "searchprofile-articles-tooltip": "Hkangi’ sa qsahuy na $1",
+       "searchprofile-images-tooltip": "Hhkangi’ biru’ na bniru’ sa zayzyuwaw",
+       "searchprofile-everything-tooltip": "Hkangi’ kwara’ qu bnrwan tay qsahuy na (kwara’ kin na spkayal sa zzngyan)",
+       "searchprofile-advanced-tooltip": "Hkangi’ sa sniyan nanak Kungcyen nasslalu’",
+       "search-result-size": "$1 ({{PLURAL:$2|1 binrwan|$2 binrwan}})",
+       "search-redirect": "(t’aring pglaing squw $1)",
+       "search-section": "(binkgan sa lalu’ na puqing kkayal squw uzyuk na kkayal tay $1)",
+       "search-suggest": "Imi’ na kay’ su’ ga yasa qasa: $1",
+       "search-interwiki-more": "(pzyux na’)",
+       "searchall": "kwara’",
+       "search-showingresults": "{{PLURAL:$4|tay <strong>$1</strong>pucing niya’, psqunun lga <strong>$3</strong> |tay <strong>$1 - $2</strong> pucing nya’, psqunun lga <strong>$3</strong> pucing nya’}}",
+       "search-nonefound": "Ktan qu bniru’ niya’ ga ungat quw musa’ mtnaq sa tthuzyay sa awsa’ hmkangi’.",
+       "mypreferences": "Sni’ maku’",
+       "prefs-email": "bbzagan sa e-meyo’",
+       "saveprefs": "Cucun",
+       "prefs-editing": "smr’zyut miru’",
+       "searchresultshead": "hhkangi’",
+       "prefs-searchoptions": "hhkangi’",
+       "prefs-files": "biru’ na zayzyuwaw",
+       "youremail": "e-meyo’:",
+       "username": "{{GENDER:$1|Lalu’ na pptzyuwaw}}:",
+       "email": "e-meyo’",
+       "group-user": "kwara’ ka cyux mbing ka qutux qutux ngasal",
+       "group-bot": "squliq na kikay",
+       "group-sysop": "pklahang",
+       "group-user-member": "{{GENDER:$1|kwara’ ka cyux mbing ka qutux qutux ngasal}}",
+       "grouppage-user": "{{ns:project}}: kwara’ ka cyux mbing ka qutux qutux ngasal",
+       "grouppage-bot": "{{ns:project}}:squliq na kikay",
+       "right-writeapi": "Sptzyuwaw squw API",
+       "newuserlogpage": "Ps’rux sa bbiru’ krayryax na pbing nasquliq",
+       "enhancedrc-history": "kwara’ binrwan sraral",
+       "recentchanges": "Sinbahan misuw qaniy",
+       "recentchanges-legend": "Misan sinbahan wwazyaw misuw",
+       "recentchanges-summary": "Sksa’ quw misan sinbah sa misuw qaniy ka zngayan sa Wiki’ qaniy.",
+       "recentchanges-label-newpage": "Cyux ps’rux sa qutux giqas na zzngayan quw sinr’zitan qasa",
+       "recentchanges-label-minor": "Qaniy hya’ ga mszik sa ssr’zitun miru’",
+       "recentchanges-label-bot": "Ssr’zyut miru’ qaniy hya’ ga kikay psr’zyut miru’",
+       "recentchanges-label-unpatrolled": "Iyat pnbzih mita’ na’ quw sinr’zyut bniru’ qaniy",
+       "recentchanges-label-plusminus": "Wayal spkciky sinbahan na(bzyaqan kkayal na llpgan) ka zzngazyan qasa",
+       "recentchanges-legend-heading": "<strong> pinkita’ niya’ sa pinzga’ :</strong>",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (aniy mita’ sa[[Special:NewPages|giqas na zzngayan]])",
+       "recentchanges-submit": "Pkaykita’",
+       "rcfilters-filter-bots-label": "squliq na kikay",
+       "rclistfrom": "Inkahul misan sinbahan sa $2, $3",
+       "rcshowhideminor": "$1 mszik sa ssr’tun",
+       "rcshowhideminor-show": "Pkaykita’",
+       "rcshowhideminor-hide": "smbbaq",
+       "rcshowhidebots": "$1 squliq na kikay",
+       "rcshowhidebots-show": "Pkaykita’",
+       "rcshowhidebots-hide": "smbbaq",
+       "rcshowhideliu": "$1 wal pbiru’ na pptzyuwaw",
+       "rcshowhideliu-show": "Pkaykita’",
+       "rcshowhideliu-hide": "smbbaq",
+       "rcshowhideanons": "$1 ini’ sbbqan lalu’ na mintzyuwaw",
+       "rcshowhideanons-show": "Pkaykita’",
+       "rcshowhideanons-hide": "smbbaq",
+       "rcshowhidepatr-show": "Pkaykita’",
+       "rcshowhidemine": "$1 sinr’zyut maku’ miru’",
+       "rcshowhidemine-show": "Pkaykita’",
+       "rcshowhidemine-hide": "smbbaq",
+       "rclinks": "Pinkaykita’ sinbah sa $1 smbah squw $2  misuw qaniy",
+       "diff": "Kin’ini’ ptnaq",
+       "hist": "Pinhknyan sraral",
+       "hide": "Lqing",
+       "show": "pkaykita’",
+       "minoreditletter": "cipuq",
+       "newpageletter": "Giqas",
+       "boteditletter": "squliq na kikay",
+       "rc-change-size-new": "sin-nbah$1 {{PLURAL:bzyaqan kkayal na llpgan}}",
+       "recentchangeslinked": "M’ubuy quw zyuwaw na sinbahan",
+       "recentchangeslinked-feed": "M’ubuy quw zyuwaw na sinbahan",
+       "recentchangeslinked-toolbox": "M’ubuy quw zyuwaw na sinbahan",
+       "recentchangeslinked-title": "Wal m’ubuy squw sinbahan na \"$1\"",
+       "recentchangeslinked-summary": "ani mkuw quw cyux niya’ spsbaq ssyansa zngayan tay sqaniy aniy p‘ubuy sa qsahuy kwara’ zzngayan (ini’ ga kwara’ nyux maki’ sqaniy kawayal niya’ s’nakun) ka wayal niya’ bkgun kwara’ qu zngayan ka wayal sbahun.\ncyux  maki’ sa qsahuy na [[Special:Watchlist|bnkuw su’ ka cyux su’ ktan]] ka zngayan ga musa’ niya’  <strong>biru’ qthuy</strong>buru’.",
+       "recentchangeslinked-page": "Palu’ na zzngayan",
+       "recentchangeslinked-to": "Sbah squw m’ay’ubuy zngayan sqaniy ka sinbahan na pinkaykita’ niya’ squw m’ay’ubuy sa sngayan sqaniy",
+       "upload": "Pawsa’ sa kktan zayzyuwaw na biru’",
+       "filename": "Lalu’ na tang’an",
+       "filedesc": "Lalu’ na spzyang bbiru’ su’",
+       "license-header": "Biru’ na gaga’ nqu snwayal hmriq sa kinri’",
+       "imgfile": "biru’ na zayzyuwaw",
+       "listfiles_user": "kwara’ ka cyux mbing ka qutux qutux ngasal",
+       "file-anchor-link": "biru’ na zayzyuwaw",
+       "filehist": "Bniru’ naha’ sa sinr’zyutan na biru’",
+       "filehist-help": "Pphtan ryax/zikang sa kkita’ squw kinblayan biru’ na zayzyuwaw.",
+       "filehist-current": "misuw qaniy",
+       "filehist-datetime": "ryax/zikang",
+       "filehist-thumb": "Swotu’",
+       "filehist-thumbtext": "Pinkcikuy kbalay na syasing squ kinblayan $1",
+       "filehist-user": "kwara’ ka cyux mbing ka qutux qutux ngasal.",
+       "filehist-dimensions": "Sspngan kinkrahu’",
+       "filehist-comment": "Tnwang smbbaq miru’",
+       "imagelinks": "Pptzyuwaw na sinr’zyut biru’",
+       "linkstoimage": "Nyux sbiru’ tay hugal ka {{PLURAL:$1| qutux zngazyan |$1 qutux zngazyan}}sp’ubuy sa biru’ qaniy.",
+       "nolinkstoimage": "Ungat ana qutux wal ’mubuy sa biru’ na ana nanu’ zyuwaw qaniy.",
+       "sharedupload-desc-here": "Tang’an qaniy hya’ ga  kahul squw$1 ruw hazi’ ana wal sptzyuwaw na cwan’an bbzinah. \nTay kyahu’ cyux spkita’ sa Tang’an qaniy hya’ ga cyux squw [$2 Tang’an pinqzyu’ zngayan ] na qsahuy pinqzyuwan.",
+       "upload-disallowed-here": "Iyat su’ bauqn ’mumuk quw biru’ na zayzyuwaw qaniy.",
+       "randompage": "Random page",
+       "statistics": "Sinqunan plpuw",
+       "brokenredirects-edit": "Smr’zyut miru’",
+       "nbytes": "$1 {{PLURAL:$1|qutux llpgan na bzyaqan kkayal}}",
+       "nmembers": "$1 {{PLURAL:$1|pinglgan}}",
+       "usereditcount": "$1 {{PLURAL:$1|smr’zyut miru’}}",
+       "newpages": "Giqas na zzngzyan",
+       "newpages-username": "Lalu’ na pptzyuwaw:",
+       "move": "smhzi’",
+       "pager-older-n": "{{PLURAL:$1|smural hazi’ quw $1}}",
+       "booksources": "Brbiru’ na inkhulan na pila’",
+       "booksources-search-legend": "Hkangi’ tkhulan pila’ na brbiru’",
+       "booksources-search": "Hkangi’",
+       "log": "Bniru",
+       "allarticles": "Kwara’ biru’ na zngyan",
+       "allpagessubmit": "mtzyuwaw",
+       "categories": "Pintbcyan",
+       "linksearch-ok": "hhkangi’",
+       "emailusername": "Lalu’ na pptzyuwaw:",
+       "watchlist": "Cyes’ cingtan",
+       "mywatchlist": "Kta quw binkgan biru’",
+       "watch": "Kita’",
+       "wlshowhidebots": "squliq na kikay",
+       "wlshowhideanons": "inqing lalu’ nqu squliq cyux mbing",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
+       "enotif_impersonal_salutation": "{{SITENAME}} kwara’ ka cyux mbing ka qutux qutux ngasal",
+       "enotif_anon_editor": "inqing lalu’ nqu squliq cyux mbing $1",
+       "dellogpage": "Wayal pzyutan ka bniru’ qasa",
+       "rollbacklink": "psbnahun",
+       "rollbacklinkcount": "psbzih $1{{PLURAL:$1|sinr’zyut miru’}}",
+       "pagesize": "(bzyaqan kkayal na llpgan)",
+       "restriction-edit": "Smr’zyut miru’",
+       "restriction-move": "smhzi’",
+       "undelete-search-submit": "hhkangi’",
+       "namespace": "Kung cyen na sslalu’:",
+       "invert": "Mssyuk mwazyaw",
+       "tooltip-invert": "Prawngan mwazyaw squw “bbzyagan” qaniy ga lqingun niya’ quw sinbahan zngazyan na wnwazyaw sa “kungcyen na sslalu’ ” (maha iy prawngan su’ mwazyaw quw gluw na “kungcyen na sslalu’ ” lga, mutuw niya’ siy ptnaqiy lmqing uziy kwara’ quw gluw na “kungcyen na sslalu’.”)",
+       "namespace_association": "M’ubuy squw \"kungcyen na sslalu’ \" imi’ niya’",
+       "tooltip-namespace_association": "Prawngan mwazyaw squw “bbzyagan” qaniy ga spgluw niya’ kwara’ quw kin na ppkayal sa wnwazyaw kungcyen na sslalu’, ini’ ga tunux lalu’ nquw kungcyen na sslalu’",
+       "blanknamespace": "(Spzyang balay)",
+       "contributions": "{{GENDER:$1| squliq mniru’}}bniru’ na qmnlah biru’",
+       "mycontris": "Snli’ sa binrwan",
+       "anoncontribs": "Snli’ sa binrwan",
+       "month": "Pcingan na sniyan naha’ ryax na byacing:",
+       "year": "Pcingan na sniyan naha’ ryax na kawas",
+       "sp-contributions-logs": "bniru",
+       "sp-contributions-talk": "mpkal",
+       "sp-contributions-submit": "hhkangi’",
+       "whatlinkshere": "Aniy p’ubuy tay lpgan sqaniy",
+       "whatlinkshere-title": "Aniy ’mubuy sa zngayan tay \"$1\"",
+       "whatlinkshere-page": "Zngayan",
+       "linkshere": "Zngayan tay suruw qaniy ga aniy p’ubuy sa <strong>[[:$1]]</strong>:",
+       "isredirect": "t’ringun pawsa’ sa zngayan",
+       "istemplate": " ’nagal sa",
+       "isimage": "’ubuy sa biru’ na ana nanu’ zayzyuwaw",
+       "whatlinkshere-prev": "{{PLURAL:$1|glaing tay|glaing tay $1 }}",
+       "whatlinkshere-next": "{{PLURAL:$1|tay suruw|’mubuy sa $1 }}",
+       "whatlinkshere-links": "←p’ubuy",
+       "whatlinkshere-hideredirs": "t’aring maras lawziy sa spzyang balay sa $1",
+       "whatlinkshere-hidetrans": "’ nagal sa $1",
+       "whatlinkshere-hidelinks": "$1 p’ubuy",
+       "whatlinkshere-filters": "Hmkangi’",
+       "autoblocklist-submit": "hhkangi’",
+       "ipblocklist-submit": "hhkangi’",
+       "blocklink": "qmhut",
+       "contribslink": "wal miq sa pincyuwagan",
+       "movelogpage": "Sinhzyan sa bniru’",
+       "export": "Pawsa’ sa bzinah quwzngayan",
+       "thumbnail-more": "Pkrahu’",
+       "import-upload-filename": "Lalu’ na tang’an:",
+       "tooltip-pt-userpage": "{{GENDER:|Lalu’ su’ sa pptzyuwaw}}sinr’zyut miru’",
+       "tooltip-pt-mytalk": "{{GENDER:|Rwa su’}} zngayan sa spkayal",
+       "tooltip-pt-preferences": "{{GENDER:|Rwa su’}}sni’ maku’ ktan krayryax",
+       "tooltip-pt-watchlist": "Nyux su’ mita’ squw binkgan biru’ na sinbahan sinr’zyut miru’",
+       "tooltip-pt-mycontris": "{{GENDER:|Rwa su’}}binkgan binrwan na squliq mniru’",
+       "tooltip-pt-login": "Kzyup ha sun misu’, ga baliy maha sikiy musa’ su’ mzyup balay",
+       "tooltip-pt-logout": "mshriq",
+       "tooltip-pt-createaccount": "Musa’ misu’ miyan slawkahan maha ps’rux canghaw hru kzyup qsahuy niya ha, ana maha baliy sikiy musa’ maha qasa hiya",
+       "tooltip-ca-talk": "Nanu’quw spkayal squw zyuwaw qsahuy na zzngayan",
+       "tooltip-ca-edit": "Sr’zyut squw zzngayan tay sqaniy",
+       "tooltip-ca-viewsource": "Ana wayal skun quw zngazyan qaniy ga, musa’ su’ baqun musa’ msbaybzih mita’ na’ quw puqing balay lalu’ na binkgan niya’.",
+       "tooltip-ca-history": "Zzngayan qaniy hya’ ga sinbahan sa wayal qasa",
+       "tooltip-ca-watch": "Aniy tmwang sa baqun du’ mita’ na biru’ binkgan ka ggyahan llpgan qaniy",
+       "tooltip-search": "Hmkangi’ sa {{SITENAME}}",
+       "tooltip-search-go": "Maha maki’ balay mtnaq lalu’ sa zzngayan qaniy ga, hala ta’ sa zzngayan qasa.",
+       "tooltip-search-fulltext": "Hhkangi’ sa mtntnaq kay’ niya’ sa zzngayan qaniy",
+       "tooltip-p-logo": "Musa’ sa t’ringan zzngayan",
+       "tooltip-n-mainpage": "Musa’ sa t’ringan zzngayan",
+       "tooltip-n-mainpage-description": "Musa’ sa t’ringan zzngayan",
+       "tooltip-n-portal": "Maki’ sa Cwan’an(sinpngan naha’ zyuwaw) qaniy ga, nanu’ quw musa’ su’ thzyazyun mtzyuwaw, cyux tay inu’ quw musa’ su’ ’lwan ka musa’ su’ sawyan na pcyuwagun",
+       "tooltip-n-currentevents": "Maki’ sa qsahuy sinbung ga, ktan kya quw mtnaq sa zyuwaw cyux sbiru’ gluw na zyuwaw qasa",
+       "tooltip-n-recentchanges": "Aniy paybkuw sa kktan qu misan wal sbahun misuw qaniy ka nyux qsahuy na beki’ qaniy",
+       "tooltip-n-randompage": "Spgluw sa pinkita’ na Randommzyup sa zngayan",
+       "tooltip-n-help": "Hmkangi’ sa musa’ thuzyay sa ppraw",
+       "tooltip-t-whatlinkshere": "Aniy paybkuw kwara’ quw m’ubuy sa zzngayan sqaniy ka gniyahan lpgan",
+       "tooltip-t-recentchangeslinked": "Misan sinbahan sa misuw qaniy lpgan sqaniy ka wayal sp’ubuy sa zzngayan tay bzinah",
+       "tooltip-feed-atom": "Inkhulan na Atom sa zngazyan qaniy",
+       "tooltip-t-contributions": "{{GENDER:$1|nanu’ quw nyux mtzyuwaw qaniy ga}}bnkuw niya’ ka bnrwan niya’",
+       "tooltip-t-upload": "Pawsa’ sa kktan zayzyuwaw na biru’",
+       "tooltip-t-specialpages": "Kwara’ ka binkgan kktan sa mnanak na zzngayan",
+       "tooltip-t-print": "Biru’ ka musa’ blaq sp’insat na gniyahan lpgan",
+       "tooltip-t-permalink": "Sinbahan llpgan ka mrayrhuw pin’ubuy",
+       "tooltip-ca-nstab-main": "Psbzinah mita; qsahuy na zzngayan",
+       "tooltip-ca-nstab-user": "Psbzih mita’ zngayan na cyux mtzyuwaw squliq qaniy.",
+       "tooltip-ca-nstab-special": "Zzngayan qaniy hya’ ga ini’ ptnaq balayna zzngayan, iyat baqun smr’zyut",
+       "tooltip-ca-nstab-project": "Inblaq mita’ quw zngazyan na Cwan’an qaniy",
+       "tooltip-ca-nstab-image": "Psbzih mita’ zzngzyan sa biru’ na bniru’ sa zayzyuwaw",
+       "tooltip-ca-nstab-template": "Kta quw mopan",
+       "tooltip-ca-nstab-category": "psbzih mita’ sa pintbcyan na zngazyan",
+       "tooltip-save": "Sku’ qu wayal su’ sbahun",
+       "tooltip-preview": "Zik na sskun su’ quw sinbahan su’ ga, sbnahiy mita’ quw sinbah su’.",
+       "tooltip-diff": "Aniy pkita’ quw wayal su’ sbahun tay qsahuy niya’",
+       "tooltip-rollback": "ssbu’ sa ’ubuy squ “Psbznahan” lga musa’ baq mbzinah squw sinr’ztan binrwan na misan mniru’ sa wayal qasa",
+       "tooltip-undo": "\"Psbzinah\"hya’ ga mutuw niya’ baqun psbzinah quw sinr’zyut miru’, ruw kahul sa yuran mosu’ gmyah sa pcyuawag na smr’zyut miru’, ana su’ twangan miru’ sa nanu’ quw stwang squw sslalu’ na kkayal qaniy.",
+       "tooltip-summary": "Brwaniy quw lalu’ na spzyang bbiru’ su’",
+       "simpleantispam-label": "Kmyagal sa kana ptayqihiy na niwan saysyup na kay’ na nnanu.\n<strong>Laxiy</strong> brwaniy sa bbrwan qaniy!",
+       "pageinfo-watchers": "Number of page watchers",
+       "pageinfo-toolboxlink": "Zzngayan na ggalan qqbaqan",
+       "pageinfo-contentpage-yes": "Aw’",
+       "nextdiff": "Giqas hazi’ sinr’zyut→",
+       "file-info-size": "$1 × $2 qqblayqan zzyangay, zayzyuwaw biru’ na sspngan kinkrahu’: $3, gluw na mmntnaq MIME: $4",
+       "file-nohires": "Ungat qbaqan miq qutux sa musa’ tthuzyay iyal pkaykita’ sa kinslwan iyal na qayqaya’.",
+       "svg-long-desc": "SVG biru’ na cyux slyan ana nanu’ zayzyuwaw,kinkrahu’ ktan tay babaw\n$1 × $2 tay babaw na Syangsu’,\nsspngan kinkrahu’ kkita’ syasing:$3",
+       "show-big-image": "Spzyang puqing balay na Tang’an",
+       "show-big-image-preview": "Squw tay $1 tay glaing",
+       "show-big-image-other": "Kinbaqun iyal mita’ na kwara’ tay bbzinah na {{PLURAL:$2||}}:$1",
+       "show-big-image-size": "$1 × $2 qqblayqan zzyangay",
+       "ilsubmit": "hhkangi’",
+       "metadata": "Cyuens’cryaw",
+       "metadata-help": "Taki’ sa biru’ na kwara’ zayzyuwaw qaniy ga kwara’ kin na zayzyuwaw bbzinah, kwara’ quw zyuwaw sqaniy ga hazi’ na kahul sa pins’rux na Suwe syangciy ini’ ga tmrang squw cyux ps’rux squw Sken ini’ ga cyux tmrang smr’zyut sa Suwe . \nMaha iy wal sbahun squw puqing balay na biru’ cyux syan squw ana nanu’ zyuwaw lga, iyat hazi’ baqun minblaq ppwah kruma’ quw wal minblayqun miru’ na wayal sbahun na zyuwaw hya’ la.",
+       "metadata-fields": "maki’ squw bnaykgan na pintkaykay’ ka qsahuy na Cyens’cryaw EXIF ga, syun niya’ sa zzngazyan kwara’ kin na Syasing, nanu’ iy mhiriq quw binrwan niya’ Cyens’cryaw lga nanak yaquw nyux sbiru’ hugal ka pintkaykay’ qaniy msthay.\ncyuens’ cryaw bzinah hya’ lga skun niya’ sa llqingun qasa hya’. \n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "exif-orientation": "Ppiray sa iyat ptkkiy ktan quw syasing",
+       "exif-xresolution": "Sweping Cyesitu’",
+       "exif-yresolution": "Cwec’ Cyesitu’",
+       "exif-datetime": "Ryax na sinbah Tang’an squw zikang na sinbahan Tang’an",
+       "exif-make": "Squliq ka pkbalay squw Syasinki’",
+       "exif-model": "Lalu’ na kinblayan Syasingki’",
+       "exif-software": "Ggalan pptzyuwaw sa zyuwaw na Tennaw",
+       "exif-exifversion": "ktan sa kinblayan na Exif",
+       "exif-colorspace": "Hhalan mwazyaw sa qqlah sa ini’ ptnaq  kktan na bbiru’",
+       "exif-datetimeoriginal": "Ryax na sni’ sa Craw squw zikang na sni’ sa Craw",
+       "exif-datetimedigitized": "Ryax na minsuwexwa’ squw zikang na minsuwexwa’",
+       "exif-orientation-1": "Mutuw galan sa puqing pspngan kwara’ na squliq",
+       "namespacesall": "kwara’",
+       "monthsall": "kwara’",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|mpkal]])",
+       "redirect-submit": "Ptzyuwaw",
+       "redirect-file": "Lalu’ na tang’an",
+       "fileduplicatesearch-filename": "Lalu’ na tang’an:",
+       "fileduplicatesearch-submit": "hhkangi’",
+       "specialpages": "Mnanak na zzngayan",
+       "tag-filter": "[[Special:Tags|qinlah lalu’]]hhkangi’:",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|qinlah lalu’}}]]: $2)",
+       "tags-active-yes": "Aw’",
+       "tags-active-no": "Iyat",
+       "tags-edit": "Smr’zyut miru’",
+       "logentry-delete-delete": "$1 {{GENDER:$2|wal laxan}}zngayan $3",
+       "logentry-move-move": "$1 {{GENDER:$2|wal shzyun}}zngyan $3 squw $4",
+       "logentry-newusers-create": "Wayal tmasuq {{GENDER:$2|ps’rux sq }} quw cin canghaw $1",
+       "logentry-upload-upload": "$1 {{GENDER:$2|wal pawsun }} $3",
+       "searchsuggest-search": "Hhkangi’ {{SITENAME}}",
+       "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|bzyaqan kkayal na llpgan}}",
+       "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bzyaqan kkayal na llpgan}}",
+       "mediastatistics-nbytes": "{{PLURAL:$1|$1 bzyaqan kkayal na llpgan}} ($2; $3%)",
+       "authmanager-email-label": "e-meyo’"
+}
index f700a7a..a75aaf0 100644 (file)
@@ -20,7 +20,8 @@
                        "Stranger195",
                        "Emem.calist",
                        "Asmen",
-                       "MJPCubelo"
+                       "MJPCubelo",
+                       "Blakegripling ph"
                ]
        },
        "tog-underline": "Pagsasalungguhit ng link:",
        "minoredit": "Ito ay isang munting pagbabago",
        "watchthis": "Bantayan ang pahinang ito",
        "savearticle": "Itala ang pahina",
+       "publishpage": "Ilimbag ang pahina",
        "preview": "Paunang tingin",
        "showpreview": "Paunang tingin",
        "showdiff": "Ipakita ang mga pagbabago",
        "tooltip-ca-nstab-category": "Tingnan ang pahina ng kategorya",
        "tooltip-minoredit": "Tandaan ito bilang isang maliit na pagbabago",
        "tooltip-save": "Sagipin ang iyong mga pagbabago",
+       "tooltip-publish": "Ilimbag ang pagbabago",
        "tooltip-preview": "Paunang-tingnan ang mga pagbabago mo, pakigamit muna ito bago sagipin o magtala!",
        "tooltip-diff": "Ipakita ang mga pagbabagong ginawa mo sa teksto.",
        "tooltip-compareselectedversions": "Tingnan ang pagkakaiba sa pagitan ng dalawang napiling bersyon ng pahinang ito.",
        "fileduplicatesearch-result-n": "Ang talaksan na \"$1\" ay may {{PLURAL:$2|1 kapareho|$2 mga kapareho}}.",
        "fileduplicatesearch-noresults": "Walang natagpuang talaksan na may pangalang \"$1\".",
        "specialpages": "Mga natatanging pahina",
-       "specialpages-note": "* Normal na natatanging mga pahina.\n* <span class=\"mw-specialpagerestricted\">Pinaghihigpitang natatanging mga pahina.</span>",
        "specialpages-group-maintenance": "Mga pagpapanatiling ulat",
        "specialpages-group-other": "Iba pang natatanging mga pahina",
        "specialpages-group-login": "Mag-login / lumikha ng account",
        "compare-invalid-title": "Hindi katanggap-tanggap ang tinukoy mong pamagat.",
        "compare-title-not-exists": "Hindi umiiral ang tinukoy mong pamagat.",
        "compare-revision-not-exists": "Hindi umiiral ang tinukoy mong rebisyon.",
+       "diff-form": "isang '''pormularyo'''",
        "dberr-problems": "Paumanhin! Dumaranas ng mga kahirapang teknikal ang sityong ito.",
        "dberr-again": "Subuking maghintay ng ilang mga minuto at muling magkarga.",
        "dberr-info": "(Hindi makaugnay sa tagapaghain ng kalipunan ng dato: $1)",
        "searchsuggest-containing": "naglalaman ng ...",
        "api-error-badtoken": "Panloob na kamalian: masamang kahalip.",
        "api-error-emptypage": "Lumilikha ng bago, hindi pinapayagan ang mga pahinang walang laman.",
+       "api-error-publishfailed": "Kamaliang panloob: nabigo ang tagapaghain na magtabi ng pansamantalang talaksan.",
        "api-error-stashfailed": "Panloob na kamalian: nabigo ang tagapaghain na magtabi ng pansamantalang talaksan.",
        "api-error-unknown-warning": "Hindi nalalamang babala: $1",
        "api-error-unknownerror": "Hindi malamang kamalian: \"$1\".",
index a4e5239..2e07b2b 100644 (file)
                ]
        },
        "tog-underline": "ئۇلانما ئاستى سىزىقى:",
-       "tog-hideminor": "يېقىنقى ئۆزگەرتىشتە ئازراقلا تەھرىرنى يوشۇر",
-       "tog-hidepatrolled": "يېقىنقى ئۆزگەرتىشتە كۆزەتكەن تەھرىرنى يوشۇر",
-       "tog-newpageshidepatrolled": "يېڭى بەت تىزىملىكىدە كۆزەتكەن تەھرىرنى يوشۇر",
+       "tog-hideminor": "يېقىنقى ئۆزگەرتىشىكى كىچىك تەھرىرلەشنى يوشۇرۇش",
+       "tog-hidepatrolled": "يېقىنقى ئۆزگەرتىشتە تەكشۈرۈلگەن تەھرىرلەشنى يوشۇرۇش",
+       "tog-newpageshidepatrolled": "يېڭى بەت تىزىملىكىدە كۆزەتكەن تەھرىرنى يوشۇرۇش",
        "tog-hidecategorization": "بەت تۈرىنى يوشۇرۇش",
-       "tog-extendwatchlist": "Ù\83Û\88Ú\86Û\95Ù\8aتÙ\89Ù\84Ú¯Û\95Ù\86 Ù\83Û\86زÛ\95ت ØªÙ\89زÙ\89Ù\85Ù\84Ù\89Ù\83Ù\89دÛ\95 Ù\8aÛ\90Ù\82Ù\89Ù\86Ù\82Ù\89 Ø¦Û\86زگÛ\95رتÙ\89Ø´Ù\86Ù\89Ù\84ا Ù\83Û\86رسÛ\95تÙ\85Û\95Ù\8a Ø¨Û\95Ù\84Ù\83Ù\89 Ú¾Û\95Ù\85Ù\85Û\95 Ø¦Û\86زگÛ\95رتÙ\89Ø´Ù\86Ù\89 Ù\83Û\86رسÛ\95ت",
-       "tog-usenewrc": "يېقىنقى ئۆزگەرتىش ۋە كۆزەت تىزىملىلىگىدىكى بەتلەر ئۆزگىرىشىگە ئاساسەن گۇرۇپپىلا",
+       "tog-extendwatchlist": "Ù\83Û\86زÙ\89تÙ\89Ø´ ØªÙ\89زÙ\89Ù\85Ù\84Ù\89Ù\83Ù\89دÛ\95 Ù\8aÛ\90Ù\82Ù\89Ù\86Ù\82Ù\89 Ø¦Û\86زگÛ\95رتÙ\89Ø´Ù\86Ù\89Ù\84ا Ù\83Û\86رسÛ\95تÙ\85Û\95Ù\8a Ø¨Û\95Ù\84Ù\83Ù\89 Ú¾Û\95Ù\85Ù\85Û\95 Ø¦Û\86زگÛ\95رتÙ\89Ø´Ù\86Ù\89 Ù\83Û\86رسÙ\89تÙ\89Ø´",
+       "tog-usenewrc": "يېقىنقى ئۆزگەرتىش ۋە كۆزەت تىزىملىلىگىدىكى بەتلەر ئۆزگىرىشىگە ئاساسەن گۇرۇپپىلاش",
        "tog-numberheadings": "ماۋزۇغا ئۆزلۈكىدىن تەرتىپ نومۇرى قوش",
        "tog-showtoolbar": "تەھرىر قورال بالداقنى كۆرسەت",
        "tog-editondblclick": "قوش چەككەندە بەت تەھرىرلە",
        "tog-fancysig": "ئىمزاغا wiki تېكستى سۈپىتىدە مۇئامىلە قىل (ئۆزلۈكىدىن ئۇلانما ھاسىل بولمايدۇ)",
        "tog-uselivepreview": "بەتنى قاچىلىماي تۇرۇپ ئالدىن كۆرۈشنى كۆرسىتىش",
        "tog-forceeditsummary": "ئۈزۈندە كىرگۈزمىگەندە مېنى ئەسكەرت",
-       "tog-watchlisthideown": "كۆزەت تىزىملىكىدىن مېنىڭ تەھرىرلىگىنىمنى يوشۇر",
-       "tog-watchlisthidebots": "كۆزەت تىزىملىكىدىن ماشىنا ئادەم تەھرىرلىگەننى يوشۇر",
-       "tog-watchlisthideminor": "كۆزەت تىزىملىكىدىن ئازراقلا تەھرىرلىگەننى يوشۇر",
-       "tog-watchlisthideliu": "كۆزەت تىزىملىكىدە تىزىمغا كىرگەن ئىشلەتكۈچىلەرنى يوشۇر",
-       "tog-watchlisthideanons": "كۆزەت تىزىملىكىدە ئىمزاسىز ئىشلەتكۈچىلەرنى يوشۇر",
-       "tog-watchlisthidepatrolled": "كۆزەت تىزىملىكىدىن كۆزىتىلگەن تەھرىرنى يوشۇر",
+       "tog-watchlisthideown": "كۆزىتىش تىزىملىكىدىن تەھرىرلىگىنىمنى يوشۇرىمەن",
+       "tog-watchlisthidebots": "كۆزىتىش تىزىملىكىدىن ماشىنا ئادەم تەھرىرلىگەننى يوشۇرۇش",
+       "tog-watchlisthideminor": "كۆزىتىش تىزىملىكىدىن ئازراقلا تەھرىرلىگەننى يوشۇرۇش",
+       "tog-watchlisthideliu": "كۆزىتىش تىزىملىكىدە تىزىمغا كىرگەن ئىشلەتكۈچىلەرنىڭ تەھرىرىنى يوشۇرۇش",
+       "tog-watchlisthideanons": "كۆزەت تىزىملىكىدە ئىمزاسىز ئابونتلارنى يوشۇرۇش",
+       "tog-watchlisthidepatrolled": "كۆزىتىش تىزىملىكىدىن كۆزىتىلگەن تەھرىرنى يوشۇرۇش",
        "tog-watchlisthidecategorization": "بەت تۈرىنى يوشۇرۇش",
        "tog-ccmeonemails": "مەن باشقىلارغا يوللىغان ئېلخەتنى ئۆزەمگىمۇ بىر نۇسخا يوللا",
        "tog-diffonly": "تۈزىتىلگەن ئىككى نەشرىنىڭ پەرقىنى سېلىشتۇرغاندا بەت مەزمۇنىنى كۆرسەتمە",
        "help": "ياردەم",
        "search": "ئىزدە",
        "searchbutton": "ئىزدە",
-       "go": "يۆتكەل",
-       "searcharticle": "يۆتكەل",
+       "go": "يۆتكىلىش",
+       "searcharticle": "يۆتكىلىش",
        "history": "بەتنىڭ تارىخى",
        "history_short": "تارىخ",
        "history_small": "تارىخ",
        "updatedmarker": "مەن ئالدىنقى قېتىم زىيارەت قىلغاندىن بۇيانقى يېڭىلانغىنى",
-       "printableversion": "باسÙ\82Ù\89Ù\84Ù\89 Ø¨Ù\88Ù\84Ù\89دÙ\89غاÙ\86 Ù\86Û\95شرى",
+       "printableversion": "باسÙ\85ا Ù\86Û\87سخÙ\89سى",
        "permalink": "مەڭگۈلۈك ئۇلانما",
        "print": "باس",
        "view": "كۆرۈنۈش",
        "view-foreign": "$1 دە كۆرۈش",
-       "edit": "تەھرىر",
+       "edit": "تەھرىرلەش",
        "edit-local": "يەرلىك ئىزاھاتنى تەھرىرلەش",
        "create": "قۇر",
        "create-local": "يەرلىك ئىزاھات قوشۇش",
        "views": "كۆرۈنۈش",
        "toolbox": "قوراللار",
        "tool-link-userrights": "{{GENDER:$1|ئەزا}} گۇرۇپپىسىنى ئۆزگەرتىش",
+       "tool-link-userrights-readonly": "{{GENDER:$1|ئەزا}} گۇرۇپپىسىنى كۆرۈش",
+       "tool-link-emailuser": "بۇ {{ئىشلەتكۈچى|GENDER:$1}} گە ئېلخەت يوللاش",
        "imagepage": "ھۆججەت بېتىنى كۆرسەت",
        "mediawikipage": "ئۇچۇر بېتىنى كۆرسەت",
        "templatepage": "قېلىپ بېتىنى كۆرسەت",
        "otherlanguages": "باشقا تىلاردا",
        "redirectedfrom": "(قايتا نىشان بەلگىلەش ئورنى $1)",
        "redirectpagesub": "قايتا نىشان بەلگىلەنگەن بەت",
+       "redirectto": "قايتا نىشانلاش:",
        "lastmodifiedat": "بۇ بەتنى $1 ئاخىرقى قېتىم $2 دا ئۆزگەرتكەن.",
        "viewcount": "بۇ بەت {{PLURAL:$1|بىر قېتىم|$1 قېتىم}}  زىيارەت قىلىندى.",
        "protectedpage": "قوغدالغان بەت",
        "pool-timeout": "قۇلۇپنى ساقلاش ۋاقىت ھالقىدى",
        "pool-queuefull": "قاچا ئۆچرىتى توشتى",
        "pool-errorunknown": "نامەلۇم خاتالىق",
+       "poolcounter-usage-error": "ئىشلىتىش خاتالىقى: $1",
        "aboutsite": "{{SITENAME}} ھەققىدە",
        "aboutpage": "Project:ھەققىدە",
        "copyright": "خاتىرىلەنگەندىن باشقا تېكست مەزمۇنى $1 ماددىسىغا ئاساسەن تەمىنلىنىدۇ.",
        "copyrightpage": "{{ns:project}}:نەشر ھوقۇقى",
        "currentevents": "نۆۋەتتىكى ھادىسە",
        "currentevents-url": "Project:نۆۋەتتىكى ھادىسە",
-       "disclaimers": "ئاگاھلاندۇرۇشلار",
+       "disclaimers": "ھوقۇق باياناتى",
        "disclaimerpage": "Project:ئومۇمىي ئاگاھلاندۇرۇش",
        "edithelp": "تەھرىرلەش ياردىمى",
+       "helppage-top-gethelp": "ياردەم",
        "mainpage": "باش بەت",
        "mainpage-description": "باش بەت",
        "policy-url": "Project:تاكتىكا",
        "newmessageslinkplural": "{{PLURAL:$1|بىر يېڭى ئۇچۇر|999=يېڭى ئۇچۇرلار}}",
        "newmessagesdifflinkplural": "ئاخىرقى {{PLURAL:$1|ئۆزگەرتىش|999=ئۆزگەرتىشلەر}}",
        "youhavenewmessagesmulti": "$1 دە يېڭى ئۇچۇرىڭىز بار",
-       "editsection": "تەھرىر",
-       "editold": "تەھرىر",
+       "editsection": "تەھرىرلەش",
+       "editold": "تەھرىرلەش",
        "viewsourceold": "مەنبەنى كۆرسەت",
-       "editlink": "تەھرىر",
+       "editlink": "تەھرىرلەش",
        "viewsourcelink": "مەنبەنى كۆرسەت",
-       "editsectionhint": "ئابزاس تەھرىر: $1",
+       "editsectionhint": "ئابزاس تەھرىرلەش: $1",
        "toc": "مەزمۇنى",
        "showtoc": "كۆرسەت",
-       "hidetoc": "يوشۇر",
-       "collapsible-collapse": "ئابزاس ئايرىمىسى يوشۇر",
+       "hidetoc": "يوشۇرۇش",
+       "collapsible-collapse": "قاتلاش",
        "collapsible-expand": "ياي",
        "confirmable-yes": "ھەئە",
        "confirmable-no": "ياق",
        "readonly_lag": "قوشۇمچە ساندان مۇلازىمىتىر غەملەكنى ئاساسىي مۇلازىمىتىرغا يېڭىلاۋاتىدۇ، ساندان ئۆزلۈكىدىن قۇلۇپلاندى",
        "internalerror": "ئىچكى خاتالىق",
        "internalerror_info": "ئىچكى خاتالىق: $1",
+       "internalerror-fatal-exception": "تىپ \"$1\" نىڭ ئەجەللىك خاتالىقى",
        "filecopyerror": "\"$1\" ھۆججەتنى\"$2\" غا كۆچۈرەلمىدى.",
        "filerenameerror": "\"$1\" ھۆججەتنىڭ ئاتىنى \"$2\" غا ئۆزگەرتەلمىدى.",
        "filedeleteerror": "\"$1\" ھۆججەتنى ئۆچۈرەلمىدى.",
        "directorycreateerror": "\"$1\" مۇندەرىجىنى قۇرالمىدى.",
+       "directoryreadonlyerror": "مۇندەرىجە \"$1\" پەقەت ئوقۇشچان.",
+       "directorynotreadableerror": "مۇندەرىجە \"$1\" نى ئوقۇغىلى بولمىدى.",
        "filenotfound": "\"$1\" ھۆججەتنى تاپالمىدى.",
        "unexpected": "كۈتۈلمىگەن قىممەت: \"$1\"=\"$2\".",
        "formerror": "خاتالىق: جەدۋەلنى يوللىيالمىدى",
        "virus-scanfailed": "تەكشۈرۈش مەغلۇپ بولدى (كودى $1)",
        "virus-unknownscanner": "نامەلۇم ۋىرۇسخور",
        "logouttext": "'''ھازىر تىزىمدىن چىقتىڭىز.'''\n\nدىققەت، بەزى بەتلەر توركۆرگۈنىڭ غەملىكى تازىلانمىغۇچە يەنىلا سىزنى تىزىمغا كىرگەن ھالەتتە كۆرسىتىشى مۇمكىن.",
+       "cannotlogoutnow-title": "ھازىر چېكىنگىلى بولمايدۇ",
        "welcomeuser": "$1، خۇش كەپسىز!",
        "welcomecreation-msg": "ھېساباتىڭىز قۇرۇلدى.\n\n[[Special:Preferences|{{SITENAME}} تەڭشىكىڭىزنى تەڭشەشنى ئۇنتۇپ قالماڭ]].",
        "yourname": "ئىشلەتكۈچى نامى:",
        "createacct-yourpasswordagain-ph": "پارولنى قايتا كىرگۈزۈڭ",
        "userlogin-remembermypassword": "مېنى ئەستە ساقلا",
        "userlogin-signwithsecure": "بىخەتەر ئۇلىنىشنى ئىشلەت",
+       "cannotlogin-title": "ھازىر كىرگىلى بولمايدۇ",
+       "cannotlogin-text": "كىرگىلى بولمايدۇ.",
+       "cannotloginnow-title": "ھازىر كىرگىلى بولمايدۇ",
+       "cannotcreateaccount-title": "ھېسابات قۇرالمىدى",
        "yourdomainname": "دائىرە نامىڭىز:",
        "password-change-forbidden": "بۇ ۋىكىدىكى پارولنى ئۆزگەرتەلمەيسىز.",
        "externaldberror": "بۇ سانداننى دەلىللەش خاتالىقى ياكى سىرتقى ھېساباتىڭىزنى يېڭىلاشنى چەكلىگەنلىكتىن بولغان بولۇشى مۇمكىن.",
        "login": "تىزىمغا كىر",
        "login-security": "سالاھيىتىڭىزنى جەزىملەشتۈرۈڭ",
        "nav-login-createaccount": "تىزىمغا كىر/ھېسابات قۇر",
-       "logout": "تىزىمدىن چىق",
-       "userlogout": "تىزىمدىن چىق",
+       "logout": "چېكىنىش",
+       "userlogout": "چېكىنىش",
        "notloggedin": "تىزىمغا كىرمىدى",
        "userlogin-noaccount": "ھېساباتىڭىز يوقمۇ؟",
        "userlogin-joinproject": "{{SITENAME}} قا ئەزا بولۇڭ",
        "createacct-realname": "ھەقىقى ئىسمىڭىز (ئىختىيارى)",
        "createacct-reason": "سەۋەبى",
        "createacct-reason-ph": "نېمىشقا باشقا ھېسابات قۇرماقچى بولدىڭىز",
+       "createacct-reason-help": "ئاككونت قۇرۇش خاتىرىسىدە كۆرۈنىدىغان ئۇچۇر",
        "createacct-submit": "ھېساباتىڭىزنى قۇرۇڭ",
        "createacct-another-submit": "ھېسابات قۇرۇش",
+       "createacct-continue-submit": "ئاككونت قۇرۇشنى داۋاملاشتۇرۇش",
+       "createacct-another-continue-submit": "ئاككونت قۇرۇشنى داۋاملاشتۇرۇش",
        "createacct-benefit-heading": "{{SITENAME}} سىزگە ئوخشاش كىشىلەر تەرىپىدىن قۇرۇلغان.",
        "createacct-benefit-body1": "{{PLURAL:$1|قېتىم}} تەھرىرلەنگەن",
        "createacct-benefit-body2": "{{PLURAL:$1|بەت}}",
        "changepassword-success": "پارولىڭىز ئوڭۇشلۇق ئۆزگەرتىلدى!",
        "changepassword-throttled": "سىز بۇ ھېساباتتا تىزىمغا كىرىشنى كۆپ قېتىم سىنىدىڭىز.\n$1 ساقلاپ، ئاندىن قايتا سىناڭ.",
        "botpasswords": "ماشىنا ئادەم پارولى",
+       "botpasswords-disabled": "ماشىنا ئادەم پارولى چەكلەنگەن.",
+       "botpasswords-existing": "نۆۋەتتە بار ماشىنا ئادەم پارولى",
+       "botpasswords-createnew": "يېڭى ماشىنا ئادەم پارولى قۇرۇش",
        "botpasswords-label-appid": "ماشىنا ئادەم نامى:",
        "botpasswords-label-create": "قۇرۇش",
        "botpasswords-label-update": "يېڭىلاش",
        "botpasswords-label-cancel": "قالدۇرۇش",
        "botpasswords-label-delete": "ئۆچۈرۈلگەن",
        "botpasswords-label-resetpassword": "پارولنى ئەسلىگە قايتۇرماق",
+       "botpasswords-label-grants": "قوللىنىش ھوقۇقى:",
        "botpasswords-label-grants-column": "ھوقۇقلۇق",
+       "botpasswords-bad-appid": "ماشىنا ئادەم نامى \"$1\" ئىناۋەتسىز.",
        "botpasswords-created-title": "ماشىنا ئادەم پارولى قۇرۇلدى",
        "botpasswords-updated-title": "ماشىنا ئادەم پارولى يېڭىلاندى",
        "botpasswords-deleted-title": "ماشىنا ئادەم پارولى ئۆچۈرۈلدى",
        "resetpass_forbidden": "پارولنى ئۆزگەرتەلمىدى",
+       "resetpass_forbidden-reason": "پارولنى ئۆزگەرتەلمىدى: $1",
        "resetpass-no-info": "سىز تىزىمغا كىرگەندىن كېيىن بىۋاسىتە بۇ بەتكە كىرىشىڭىز لازىم.",
        "resetpass-submit-loggedin": "پارولنى ئۆزگەرتىش",
        "resetpass-submit-cancel": "ۋاز كەچ",
        "passwordreset-emailtext-user": "{{SITENAME}} دىكى ئىشلەتكۈچى $1 بېكەت {{SITENAME}} ($4) دىكى پارولىڭىزنى قايتا بېكىتىشنى ئىلتىماس قىلدى .\nتۆۋەندىكى ئىشلەتكۈچىنىڭ {{PLURAL:$3|ھېسابات|ھېسابات}}($4)ى مۇشۇ ئېلخەتكە باغلانغان:\n\n$2\n\n{{PLURAL:$3|بۇ ۋاقىتلىق پارول|بۇ ۋاقىتلىق پارول}} {{PLURAL:$5|بىر كۈن|$5 كۈن}}دە ۋاقتى ئۆتىدۇ. ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى پارولدىن بىرنى تاللاڭ.\nسىز بەلگىلىگەن يېڭى پارول {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ. ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن پارول ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز، \nبۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا پارولىنى ئىشلىتىۋېرىڭ.",
        "passwordreset-emailelement": "ئىشلەتكۈچى نامى: \n$1\n\nۋاقىتلىق پارول: \n$2",
        "passwordreset-emailsentemail": "پارولنى قايتا بېكىتىش ئېلخېتى يوللاندى.",
+       "passwordreset-nocaller": "چوقۇم بىر يۆتكەپ ئىشلەتكۈچى تەمىنلەڭ",
+       "passwordreset-nosuchcaller": "يۆتكەپ ئىشلەتكۈچى تەرەپ مەۋجۇت ئەمەس: $1",
+       "passwordreset-invalidemail": "ئىناۋەتسىز ئېلخەت ئادرېسى",
        "changeemail": "ئېلخەت ئادرېس ئۆزگەرت",
        "changeemail-header": "ھېساباتنىڭ ئېلخەت ئادرېسىنى ئۆزگەرت",
        "changeemail-no-info": "سىز تىزىمغا كىرگەندىن كېيىن بىۋاسىتە بۇ بەتكە كىرىشىڭىز لازىم.",
        "summary": "ئۈزۈندە",
        "subject": "ماۋزۇ:",
        "minoredit": "بۇ ئازراقلا تەھرىرلەش",
-       "watchthis": "بۇ بەتنى كۆزەت",
+       "watchthis": "بۇ بەتنى كۆزىتىش",
        "savearticle": "بەت ساقلا",
        "savechanges": "ئۆزگەرتىشنى ساقلاش",
        "publishpage": "بەتنى ئېلان قىلىش",
        "updated": "(يېڭىلاندى)",
        "note": "'''ئىزاھات:'''",
        "previewnote": "'''ئېسىڭىزدە بولسۇنكى بۇ پەقەتلا ئالدىن كۆزىتىش.'''\nئۆزگەرتكەن مەزمۇنىڭىز تېخى ساقلانمىدى!",
-       "continue-editing": "تەھرىرلەشكە يۆتكەل",
+       "continue-editing": "تەھرىرلەش رايونىغا كۆچۈش",
        "previewconflict": "بۇ ئالدىن كۆزىتىشتە ئۈستىدىكى تېكست تەھرىرلەش رايونىدىكى مەزمۇننى كۆرسەتتى. ئۇ ساقلانى تاللىغاندىن كېيىن كۆرۈنىدۇ.",
        "session_fail_preview": "'''كەچۈرۈڭ! سىزنىڭ جەريان سانلىق مەلۇماتىڭىز يوقاپ كەتكەندە ئېلىپ بارغان تەھرىرىڭىزنى بىر تەرەپ قىلالمايمىز.'''\nقايتا سىناڭ.\nئەگەر يەنىلا مەغلۇپ بولسا، [[Special:UserLogout|تىزىمدىن چىق]]قاندىن كېيىن قايتا تىزىمغا كىرىڭ.",
        "session_fail_preview_html": "'''كەچۈرۈڭ! سىزنىڭ جەريان سانلىق مەلۇماتىڭىز يوقاپ كەتكەندە ئېلىپ بارغان تەھرىرىڭىزنى بىر تەرەپ قىلالمايمىز.'''\n\n''چۈنكى {{SITENAME}} بېكىتى ئەسلى HTML ئىشلىتىشكە يول قويىدۇ،   JavaScript ھۇجۇمىنىڭ ئالدىنى ئېلىش ئۈچۈن، ئالدىن كۆزىتىش يوشۇرۇلدى.''\n\n'''ئەگەر بۇ قانۇنلۇق تەھرىرلەش بولسا قايتا سىناڭ'''\nئەگەر ئۇنداق بولمىسا [[Special:UserLogout|تىزىمدىن چىق]]ىپ قايتا تىزىمغا كىرىڭ.",
        "edit-gone-missing": "بۇ بەتنى يېڭىلىيالمايدۇ.\nئۇ بايىلا ئۆچۈرۈلگەن بولۇشى مۇمكىن.",
        "edit-conflict": "تەھرىر توقۇنۇشى.",
        "edit-no-change": "تەھرىرلىگىنىڭىزگە پەرۋا قىلىنمىدى، چۈنكى تېكستتە ئۆزگىرىش بولمىدى.",
+       "postedit-confirmation-created": "بەت قۇرۇلدى.",
+       "postedit-confirmation-restored": "بەت ئەسلىگە كەلدى.",
        "postedit-confirmation-saved": "تەھرىرلىگىنىڭىز ساقلاندى.",
        "edit-already-exists": "يېڭى بەت قۇرالمىدى.\nبەت بۇرۇندىن مەۋجۇد.",
        "defaultmessagetext": "كۆڭۈلدىكى ئۇچۇر تېكستى",
        "invalid-content-data": "مەزمۇن سانلىق مەلۇماتى ئىناۋەتسىز",
        "content-not-allowed-here": "[[$2]] بەتتە \"$1\" مەزمۇنغا يول قويۇلمايدۇ",
        "editwarning-warning": "بەتتىن ئايرىلغاندا بەلكىم بارلىق تەھرىرلىگىنىڭىز بېكار بولۇپ كېتىشى مۇمكىن.\nئ‍ەگەر تىزىمغا كىرسىڭىز، مايىللىق بېتىڭىزنىڭ «{{int:prefs-editing}}» بۆلىكىدە، بۇ ئەسكەرتمىنى ئىناۋەتسىز قىلالايسىز.",
+       "editpage-invalidcontentmodel-title": "مەزمۇن ئەندىزىسىنى قوللىمىدى.",
+       "editpage-invalidcontentmodel-text": "مەزمۇن مودېلى “$1” نى قوللىمىدى.",
        "editpage-notsupportedcontentformat-title": "مەزمۇن ئەندىزىسىنى قوللىمىدى.",
        "editpage-notsupportedcontentformat-text": "مەزمۇن قېلىپى $2 نى مەزمۇن ئەندىزىسى $1 نى قوللىمىدى.",
        "content-model-wikitext": "ۋىكىتېكىست",
        "content-model-text": "ساپ تېكىست",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
+       "content-json-empty-object": "قۇرۇق ئوبېكىت",
+       "content-json-empty-array": "قۇرۇق سانلار گۇرۇپپىسى",
        "expensive-parserfunction-warning": "'''ئاگاھلاندۇرۇش:''' بۇ بەت ناھايىتى كۆپ يۇقىرى سەرپىياتتىكى گىرامماتىكىلىق ئىقتىدارنى چاقىرغان.\\n\n\\n\nئۇ {{PLURAL:$2|قېتىم|قېتىم}} دىن ئاز چاقىرىشى لازىم، ھازىر {{PLURAL:$1| $1 قېتىم| $1 قېتىم}}  چاقىرىلغان.",
        "expensive-parserfunction-category": "بەتتە يۇقىرى سەرپىياتتىكى گرامماتىكىلىق ئىقتىدار چاقىرىلغان.",
        "post-expand-template-inclusion-warning": "'''ئاگاھلاندۇرۇش:''' ئۆز ئىچىگە ئالغان قېلىپ بەك چوڭ.\nبەزى قېلىپنى ئۆز ئىچىگە ئالمايدۇ.",
        "post-expand-template-argument-warning": "'''ئاگاھلاندۇرۇش:''' بۇ بەتتە ئاز دېگەندە بىر پارامېتىر كېڭەيتىلگەن يۇقىرى قىممەتنى ئۆز ئىچىگە ئالغان.\nبۇ پارامېتىرلار ئېتىبارغا ئېلىنمايدۇ.",
        "post-expand-template-argument-category": "ئېتىبارغا ئېلىنمىغان قېلىپ پارامېتىرىنى ئۆز ئىچىگە ئالغان بەت",
        "parser-template-loop-warning": "قېلىپ دەۋرىيلىكى بايقالدى: [[$1]]",
+       "template-loop-category": "قېلىپ دەۋرىيلىنىدىغان بەت بار",
        "parser-template-recursion-depth-warning": "قايتىلانما ئىپادە چوڭقۇر چەكلىمىسىدىن ئېشىپ كەتتى ($1)",
        "language-converter-depth-warning": "تىل ئالماشتۇرۇش چوڭقۇرلۇقى چەكتىن ئاشتى ($1)",
        "node-count-exceeded-category": "بەتنىڭ نۇقتا سانى چەكتىن ئېشىپ كەتتى",
        "history-feed-description": "مەزكۇر بەتنىڭ بۇ بېكەتتىكى ئۆزگەرتىش تارىخى",
        "history-feed-item-nocomment": "$2 دىكى $1",
        "history-feed-empty": "ئىلتىماس قىلغان بەت مەۋجۇد ئەمەس\nئۇ ئۆچۈرۈلگەن ياكى ئاتى ئۆزگەرتىلگەن بولۇشى مۇمكىن\n [[Special:Search|wiki دىن ئىزدە]] نى سىناپ مۇناسىۋەتلىك يېڭى بەتكە ئېرىشىڭ.",
+       "history-edit-tags": "تاللانغان ئۆزگەرتىلگەن نەشىرىنىڭ خەتكۈچىنى تەھرىرلەش",
        "rev-deleted-comment": "(تەھرىرلەش ئۈزۈندىسى چىقىرىۋېتىلدى)",
        "rev-deleted-user": "(ئىشلەتكۈچى نامى چىقىرىۋېتىلدى)",
        "rev-deleted-event": "(خاتىرە مەشغۇلاتى چىقىرىۋېتىلدى)",
-       "rev-deleted-user-contribs": "[ئىشلەتكۈچى نامى ياكى IP ئادرېس چىقىرىۋېتىلدى - تۆھپىدىن تەھرىرنى يوشۇر]",
+       "rev-deleted-user-contribs": "[ئىشلەتكۈچى نامى ياكى IP ئادرېس چىقىرىۋېتىلدى - تۆھپىە تەھرىرلەشكە يوشۇرۇلدى]",
        "rev-deleted-text-permission": "'''ئاگاھلاندۇرۇش: بۇ بەتنىڭ تۈزىتىلگەن نەشرى'''ئۆچۈرۈلگەن'''\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ئۆچۈرۈش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ.",
        "rev-deleted-text-unhide": "بۇ بەتنىڭ تۈزىتىلگەن نەشرى '''ئۆچۈرۈلگەن'''.\n[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ئۆچۈرۈش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ.\nداۋاملاشتۇرماقچى بولسىڭىز يەنىلا [$1 بۇ نەشرىنى كۆرسەت]ەلەيسىز.",
        "rev-suppressed-text-unhide": "بۇ بەتنىڭ تۈزىتىلگەن نەشرى '''نازارەتچى يوشۇرغان'''.\n[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} نازارەتچى يوشۇرۇش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ. ئەگەر داۋاملاشتۇرماقچى بولسىڭىز يەنىلا [$1 بۇ تۈزىتىلگەن نەشرىنى كۆرسەت]ەلەيسىز.",
        "rev-suppressed-unhide-diff": "بۇ بەتنىڭ تۈزىتىلگەن نەشرى '''نازارەتچى يوشۇرغان'''.\n[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} نازارەتچى يوشۇرۇش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ. ئەگەر داۋاملاشتۇرماقچى بولسىڭىز يەنىلا [$1 بۇ تۈزىتىلگەن نەشرىنى كۆرسەت]ەلەيسىز.",
        "rev-deleted-diff-view": "بۇ بەتنىڭ بىر قېتىملىق تۈزىتىلگەن نەشرى '''ئۆچۈرۈلگەن'''\nبۇ پەرقنى كۆرەلەيسىز.: تەپسىلاتىنى [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ئۆچۈرۈش خاتىرىسى]دىن تاپالايسىز.",
        "rev-suppressed-diff-view": "بۇ بەتنىڭ بىر قېتىملىق تۈزىتىلگەن نەشرى '''نازارەتچى يوشۇرغان'''.\nبۇ پەرقنى كۆرەلەيسىز.: تەپسىلاتىنى [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} نازارەتچى يوشۇرۇش خاتىرىسى]دىن تاپالايسىز.",
-       "rev-delundel": "كۆرسەت/يوشۇر",
+       "rev-delundel": "كۆرسىتىش ھالىتىنى ئۆزگەرتىش",
        "rev-showdeleted": "كۆرسەت",
        "revisiondelete": "تۈزىتىلگەن نەشرىنى ئۆچۈر/ئەسلىگە كەلتۈر",
        "revdelete-nooldid-title": "ئىناۋەتسىز نىشان تۈزىتىش نەشرى",
        "revdelete-legend": "كۆرۈنۈشچانلىق چەكلىمە تەڭشىكى",
        "revdelete-hide-text": "تۈزىتىلگەن تېكىست",
        "revdelete-hide-image": "ھۆججەت مەزمۇنىنى يوشۇر",
-       "revdelete-hide-name": "Ù\85Û\95شغÛ\87Ù\84ات Û\8bÛ\95 Ù\86Ù\89شاÙ\86Ù\86Ù\89 Ù\8aÙ\88Ø´Û\87ر",
+       "revdelete-hide-name": "Ù\86Ù\89شاÙ\86 Û\8bÛ\95 Ø³Ø§Ù\86Ù\84Ù\89Ù\82 Ø¦Û\87Ú\86Û\87رÙ\86Ù\89 Ù\8aÙ\88Ø´Û\87رÛ\87Ø´",
        "revdelete-hide-comment": "تەھرىر ئىزاھاتىنى يوشۇر",
-       "revdelete-hide-user": "تەھرىرلىگۈچىنىڭ نامى/IP ئادرېسىنى يوشۇر",
+       "revdelete-hide-user": "تەھرىرلىگۈچىنىڭ نامى/IP ئادرېسىنى يوشۇرۇش",
        "revdelete-hide-restricted": "مەشغۇلاتچى ۋە باشقا ئىشلەتكۈچىنىڭ سانلىق مەلۇمات كۆرۈشىنىمۇ چەكلە",
        "revdelete-radio-same": "(ئۆزگەرتمە)",
        "revdelete-radio-set": "يوشۇرۇن",
        "mergehistory-empty": "بىرلەشتۈرگىلى بولىدىغان تۈزىتىلگەن نەشرى يوق.",
        "mergehistory-done": "$1 نىڭ {{PLURAL:$3|قېتىملىق|قېتىملىق}}  تۈزىتىلگەن نەشرى مۇۋەپپەقىيەتلىك ھالدا [[:$2]] غا بىرلەشتۈرۈلدى.",
        "mergehistory-fail": "تارىخنى بىرلەشتۈرگىلى بولمايدۇ، بۇ بەت ۋە ۋاقىت پارامېتىرىنى قايتا تەكشۈرۈڭ.",
+       "mergehistory-fail-bad-timestamp": "ۋاقىت ئوقى ئىناۋەتسىز.",
+       "mergehistory-fail-invalid-source": "مەنبە بەت ئىناۋەتسىز.",
+       "mergehistory-fail-invalid-dest": "نىشان بەت ئىناۋەتسىز.",
        "mergehistory-no-source": "مەنبە بەت $1 مەۋجۇد ئەمەس.",
        "mergehistory-no-destination": "نىشان بەت $1 مەۋجۇد ئەمەس.",
        "mergehistory-invalid-source": "مەنبە بەتنىڭ چوقۇم ئىناۋەتلىك ماۋزۇسى بولۇشى لازىم.",
        "notextmatches": "ماس كېلىدىغان بەت مەزمۇنى يوق",
        "prevn": "ئالدى {{PLURAL:$1|$1}}",
        "nextn": "كەينى {{PLURAL:$1|$1}}",
+       "prev-page": "ئالدىنقى بەت",
+       "next-page": "كېيىنكى بەت",
        "prevn-title": "ئالدىنقى $1 {{PLURAL:$1|نەتىجە|نەتىجە}}",
        "nextn-title": "كېيىكى $1 {{PLURAL:$1|نەتىجە|نەتىجە}}",
        "shown-title": "ھەر بىر بەتتە $1 {{PLURAL:$1|نەتىجە |نەتىجە }} كۆرسەت",
        "search-result-category-size": "{{PLURAL:$1|1 ئەزا|$1 ئەزا}}({{PLURAL:$2|1 تارماق تۈر|$2 تارماق تۈر}}, {{PLURAL:$3|1 ھۆججەت|$3 ھۆججەت}})",
        "search-redirect": "($1 قايتا نىشانلا)",
        "search-section": "(ئابزاس $1)",
+       "search-category": "(تۈر $1)",
        "search-file-match": "(ھۆججەت مەزمۇنى ماس كەلگەن)",
        "search-suggest": "ئىزدىمەكچى بولغىنىڭىز: $1",
        "search-interwiki-caption": "ھەمشىرە قۇرۇلۇشلار",
        "search-interwiki-default": "$1 دىكى نەتىجە:",
        "search-interwiki-more": "(تېخىمۇ كۆپ)",
+       "search-interwiki-more-results": "تېخىمۇ كۆپ نەتىجە",
        "search-relatedarticle": "ئالاقىدار",
        "searchrelated": "ئالاقىدار",
        "searchall": "ھەممىسى",
        "search-error": "ئىزدەش جەريانىدا بىر خاتالىق يۈز بەردى: $1",
        "preferences": "مايىللىق",
        "mypreferences": "مايىللىق",
-       "prefs-edits": "تەھرىر سانى:",
+       "prefs-edits": "تەھرىرلەش قېتىم سانى:",
        "prefsnologintext2": "مايىللىقىڭىزنى ئۆزگەرتىش ئۈچۈن $1.",
        "prefs-skin": "تېرە",
        "skin-preview": "ئالدىن كۆزەت",
        "prefs-personal": "ئىشلەتكۈچى سەپلىمە ھۆججىتى",
        "prefs-rc": "ئاخىرقى ئۆزگەرتىشلەر",
        "prefs-watchlist": "كۆزەت تىزىملىكى",
+       "prefs-editwatchlist": "كۆزەت تىزىملىكىنى تەھرىرلەش",
+       "prefs-editwatchlist-raw": "ئەسلى كۆزەت تىزىملىكىنى تەھرىرلەش",
+       "prefs-editwatchlist-clear": "كۆزىتىش تىزىملىكىنى تازىلاش",
        "prefs-watchlist-days": "كۆزەت تىزىملىكىدە كۆرۈنىدىغان كۈن سانى:",
        "prefs-watchlist-days-max": "ئەڭ چوڭ 1$ {{PLURAL:$1|كۈن}}",
        "prefs-watchlist-edits": "كۆزىتىش تىزىملىكىدە ئەڭ كۆپ ئۆزگەرتىش سانىنى كۆرسىتىش:",
        "prefs-watchlist-token": "كۆزەت تىزىملىك نىشانى:",
        "prefs-misc": "ئارىلاشما تۈر",
        "prefs-resetpass": "پارولنى ئۆزگەرتىش",
-       "prefs-changeemail": "ئېلخەت ئۆزگەرت",
+       "prefs-changeemail": "ئېلخەت ئۆزگەرتىش ياكى چىقىرۋېتىش",
        "prefs-setemail": "ئېلخەت ئادرېس تەڭشەك",
        "prefs-email": "ئېلخەت تاللانما",
        "prefs-rendering": "كۆرۈنۈش",
        "saveprefs": "ساقلا",
        "restoreprefs": "بارلىق كۆڭۈلدىكى تەڭشەكنى ئەسلىگە كەلتۈر (بارلىق بۆلەكلەردە)",
-       "prefs-editing": "تەھرىر",
+       "prefs-editing": "تەھرىرلەش",
        "searchresultshead": "ئىزدە",
        "stub-threshold": "<a href=\"#\" class=\"stub\">قىسقا بەت ئۇلانمىسى</a> فورمات چەك قىممىتى (بايت) :",
        "stub-threshold-disabled": "چەكلەنگەن",
        "username": "{{GENDER:$1|ئىشلەتكۇچى ئىسمى}}:",
        "prefs-memberingroups": "{{PLURAL:$1|گۇرۇپپا}} دىكى{{GENDER:$2| ئەزا}}:",
        "prefs-memberingroups-type": "$1",
+       "group-membership-link-with-expiry": "$1 (غىچە $2)",
        "prefs-registration": "خەتلەتكەن ۋاقىت:",
        "prefs-registration-date-time": "$1",
        "yourrealname": "ھەقىقىي ئىسىم:",
        "userrights-changeable-col": "سىز ئۆزگەرتەلەيدىغان گۇرۇپپا",
        "userrights-unchangeable-col": "سىز ئۆزگەرتەلمەيدىغان گۇرۇپپا",
        "userrights-irreversible-marker": "$1*",
+       "userrights-expiry-current": "$1 دا توختاش",
+       "userrights-expiry-none": "توختىتىلمايدۇ",
+       "userrights-expiry": "قەرەلى:",
+       "userrights-expiry-othertime": "باشقا ۋاقىت:",
        "group": "گۇرۇپپا:",
        "group-user": "ئىشلەتكۈچىلەر",
        "group-autoconfirmed": "ئۆزلۈكىدىن جەزملەنگەن ئىشلەتكۈچىلەر",
        "right-move": "بەت يۆتكە",
        "right-move-subpages": "بەتنى تاماق بەتلىرى بىلەن قوشۇپ يۆتكە",
        "right-move-rootuserpages": "غول ئىشلەتكۈچى بېتىنى يۆەتكە",
+       "right-move-categorypages": "تۈر بېتىنى يۆتكەش",
        "right-movefile": "ھۆججەت يۆتكە",
        "right-suppressredirect": "ھۆججەت يۈتكىگەندە مەنبە بەتنىڭ قايتا نىشان بەلگىلىنىشىنى قۇرما.",
        "right-upload": "ھۆججەتلەرنى يۈكلە",
        "right-reupload": "مەۋجۇد ھۆججەتنى قاپلا",
        "right-reupload-own": "ئوخشاش بىر ئادەم يوللىغان ھۆججەتنى قاپلىۋەت",
        "right-reupload-shared": "ئېتىبارغا ئېلىنمايدىغان يەرلىك ھەمبەھىر كۆپ ۋاسىتە ئامبىرىدىكى ھۆججەت",
-       "right-upload_by_url": "URL دىن ھۆججەت يۈكلە",
+       "right-upload_by_url": "URL دىن ھۆججەت يۈكلەش",
        "right-purge": "جەزملەشنى سورىمايلا تور بېكەت غەملىكىنى تازىلا",
        "right-autoconfirmed": "يېرىم قوغدالغان بەت تەھرىر",
        "right-bot": "ئاپتوماتىك جەريان دەپ قارىلىدۇ",
        "right-siteadmin": "ساندان قۇلۇپلا ۋە قۇلۇپ ئاچ",
        "right-override-export-depth": "بەت قەۋەتلىك ئۇلىنىشى بار بەتنى چىقار",
        "right-sendemail": "باشقا ئىشلەتكۈچىگە ئېلخەت يوللا",
+       "grant-group-email": "ئېلخەت يوللاش",
+       "grant-createaccount": "ھېسابات قۇرۇش",
+       "grant-editmywatchlist": "كۈزىتىش تىزىملىكىڭىزنى تەھرىرلەڭ",
+       "grant-editpage": "مەۋجۇت بەتنى تەھرىرلەش",
+       "grant-editprotected": "قوغدىلىدىغان بەتنى تەھرىرلەش",
+       "grant-highvolume": "چوڭ مىقدارلىق تەھرىرلەش",
+       "grant-uploadfile": "يېڭى ھۆججەت يۈكلەش",
+       "grant-basic": "ئاساسىي ھوقۇق",
+       "grant-viewmywatchlist": "كۈزىتىش تىزىملىكىڭىزنى كۆرۈڭ",
        "newuserlogpage": "ئىشلەتكۈچى قۇرغان خاتىرە",
        "newuserlogpagetext": "(چەكلەنگەن)",
        "rightslog": "ئىشلەتكۈچى ھوقۇق خاتىرىسى",
        "rightslogtext": "ئىشلەتكۈچى ھوقۇق خاتىرىسى",
        "action-read": "بۇ بەتنى ئوقۇ",
        "action-edit": "بۇ بەتنى تەھرىرلە",
-       "action-createpage": "بۇ بەتنى قۇر",
-       "action-createtalk": "مۇنازىرە بېتى قۇر",
+       "action-createpage": "بۇ بەتنى قۇرۇش",
+       "action-createtalk": "بۇ مۇنازىرە بېتىنى قۇرۇش",
        "action-createaccount": "بۇ ئىشلەتكۈچى ھېساباتىنى قۇر",
        "action-minoredit": "بۇنىڭغا ئازراقلا تەھرىر بەلگىسى قوي",
        "action-move": "بۇ بەتنى يۆتكە",
        "action-move-subpages": "بۇ بەتنىڭ تارماق بەتلىرىنى قوشۇپ يۆتكە",
        "action-move-rootuserpages": "غول ئىشلەتكۈچى بېتىنى يۆتكە",
+       "action-move-categorypages": "تۈر بېتىنى يۆتكەش",
        "action-movefile": "بۇ ھۆججەتنى يۆتكە",
        "action-upload": "بۇ ھۆججەتنى يۈكلە",
        "action-reupload": "مەۋجۇد ھۆججەتنى قاپلا",
        "action-upload_by_url": "بۇ ھۆججەتنى URL دىن يۈكلە",
        "action-writeapi": "API يېزىشقا ئىشلىتىلىدۇ",
        "action-delete": "بۇ بەتنى ئۆچۈر",
-       "action-deleterevision": "بۇ تۈزىتىلگەن نەشرىنى ئۆچۈر",
-       "action-deletedhistory": "بۇ بەتنىڭ ئۆچۈرۈش تارىخىنى كۆرسەت",
+       "action-deleterevision": "تۈزىتىلگەن نەشرىنى ئۆچۈرۈش",
+       "action-deletelogentry": "كۈندىلىك خاتىرىنى ئۆچۈرۈش",
+       "action-deletedhistory": "بۇ بەتنىڭ ئۆچۈرۈش تارىخىنى كۆرسىتىش",
        "action-browsearchive": "ئۆچۈرۈلگەن بەتنى ئىزدە",
-       "action-undelete": " بۇ بەتنى ئەسلىگە كەلتۈر",
+       "action-undelete": "بەتنى ئەسلىگە كەلتۈرۈش",
        "action-suppressrevision": "بۇ يوشۇرۇلغان تۈزىتىلگەن نەشرىنى قايتا كۆرۈپ ئەسلىگە كەلتۈر",
        "action-suppressionlog": "بۇ شەخسىي خاتىرىنى كۆرسەت",
        "action-block": "بۇ ئىشلەتكۈچىنىڭ تەھرىرىنى چەكلە",
        "action-sendemail": "ئېلخەت يوللا",
        "action-editmywatchlist": "كۈزىتىش تىزىملىكىڭىزنى تەھرىرلەڭ",
        "action-viewmywatchlist": "كۈزىتىش تىزىملىكىڭىزنى كۆرۈڭ",
+       "action-purge": "بۇ بەتنى يېڭىلاش",
        "nchanges": "$1 {{PLURAL:$1|ئۆزگەرتىش|ئۆزگەرتىش}}",
        "enhancedrc-history": "تارىخ",
        "recentchanges": "يېقىنقى ئۆزگەرتىشلەر",
        "recentchanges-label-minor": "بۇ ئازراقلا تەھرىرلەش",
        "recentchanges-label-bot": "بۇ تەھرىرنى ماشىنا ئادەم ئېلىپ بارغان",
        "recentchanges-label-unpatrolled": "بۇ تەھرىر تېخى كۆزىتىلمىگەن",
+       "recentchanges-legend-heading": "<strong>ئىزاھات:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (بۇنىڭغىمۇ قاراڭ [[Special:NewPages|يېڭى بەتلەر تىزىملىگى]])",
+       "recentchanges-submit": "كۆرسىتىش",
+       "rcfilters-legend-heading": "<strong>قىسقارتىپ يېزىلىش تىزىملىكى:</strong>",
+       "rcfilters-other-review-tools": " <strong>باشقا تەكشۈرۈش قوراللىرى</strong>",
+       "rcfilters-grouping-title": "گۇرۇپپىلىنىۋاتىدۇ",
+       "rcfilters-activefilters": "قوزغىتىلىغان سۈزگۈچلەر",
+       "rcfilters-days-title": "يېقىنقى بىر نەچچە كۈن",
+       "rcfilters-hours-title": "يېقىنقى بىر نەچچە سائەت",
+       "rcfilters-quickfilters": "سۈزگۈچ ساقلاندى",
+       "rcfilters-quickfilters-placeholder-title": "ئۇلىنىش ساقلانمىدى",
+       "rcfilters-savedqueries-defaultlabel": "سۈزگۈچ ساقلاندى",
+       "rcfilters-savedqueries-rename": "ئىسىم ئۆزگەرتىش",
+       "rcfilters-savedqueries-remove": "چىقىرىۋىتىش",
+       "rcfilters-savedqueries-new-name-label": "نامى",
+       "rcfilters-savedqueries-apply-label": "سۈزگۈچ قۇرۇش",
+       "rcfilters-savedqueries-apply-and-setdefault-label": "ئەسلىدىكى سۈزگۈچنى قۇرۇش",
+       "rcfilters-savedqueries-cancel-label": "چېكىنىش",
+       "rcfilters-filterlist-title": "سۈزگۈچلەر",
+       "rcfilters-filterlist-whatsthis": "بۇلار قانداق خىزمەت قىلىدۇ؟",
+       "rcfilters-highlightmenu-title": "رەڭ تاللاش",
+       "rcfilters-filterlist-noresults": "سۈزگۈچ تېپىلمىدى",
+       "rcfilters-filter-editsbyself-label": "سىز ئۆزگەرتكەن",
+       "rcfilters-filter-editsbyself-description": "ئۆزىڭىزنىڭ تۆھپىسى.",
+       "rcfilters-filter-editsbyother-label": "باشقىلار ئۆزگەرتكەن",
+       "rcfilters-filter-user-experience-level-registered-label": "تىزىملانغان",
+       "rcfilters-filter-user-experience-level-registered-description": "كىرىش تەھرىرى.",
+       "rcfilters-filter-user-experience-level-unregistered-label": "تىزىملاتمىغان",
+       "rcfilters-filter-user-experience-level-newcomer-label": "يېڭى كەلداخۇن",
+       "rcfilters-filter-user-experience-level-learner-label": "يېڭى ئۆگەنچى",
+       "rcfilters-filter-bots-label": "ماشىنا ئادەم",
+       "rcfilters-filtergroup-reviewstatus": "رازۋىتكا ھالىتى",
+       "rcfilters-filter-patrolled-label": "چارلاندى",
+       "rcfilters-filter-minor-label": "كىچىك تەھرىرلەش",
+       "rcfilters-filter-major-label": "كىچىك تەھرىرلەش ئەمەس",
+       "rcfilters-filter-watchlist-watched-label": "كۆزىتىش تىزىملىكىدە",
+       "rcfilters-filter-newpages-label": "بەت قۇرۇلدى",
+       "rcfilters-filter-categorization-label": "تۈر ئۆزگەرتىلدى",
+       "rcfilters-filtergroup-lastRevision": "ئاخىرقى نەشىرلىرى",
+       "rcfilters-filter-lastrevision-label": "ئاخىرقى نەشىرى",
+       "rcfilters-view-tags": "بەلگە قويۇلغان تەھرىرلەش",
        "rcnotefrom": "تۆۋەندىكىسى '''$2''' نىڭ ئۆزگەرتىشى (ئەڭ كۆپ بولغاندا '''$1''' كۆرسىتىدۇ )",
        "rclistfrom": "$3 $2 دىن باشلانغان يېڭى ئۆزگەرتىشنى كۆرسەت",
-       "rcshowhideminor": "$1 ئازراقلا تەھرىر",
+       "rcshowhideminor": "$1 ئازراقلا تەھرىرلەش",
+       "rcshowhideminor-show": "كۆرسىتىش",
+       "rcshowhideminor-hide": "يوشۇر",
        "rcshowhidebots": "$1 ماشىنا ئادەمنىڭ تەھرىرى",
+       "rcshowhidebots-show": "كۆرسەت",
+       "rcshowhidebots-hide": "يوشۇرۇش",
        "rcshowhideliu": "$1 خەتلەنگەن ئىشلەتكۈچى",
+       "rcshowhideliu-show": "كۆرسىتىش",
+       "rcshowhideliu-hide": "يوشۇرۇش",
        "rcshowhideanons": "$1 ئىمزاسىز ئىشلەتكۈچى تەھرىرى",
-       "rcshowhidepatr": "$1 كۆزىتىلگەن تەھرىر",
+       "rcshowhideanons-show": "كۆرسىتىش",
+       "rcshowhideanons-hide": "يوشۇر",
+       "rcshowhidepatr": "$1 كۆزىتىلگەن تەھرىرلەش",
+       "rcshowhidepatr-show": "كۆرسىتىش",
+       "rcshowhidepatr-hide": "يوشۇرۇش",
        "rcshowhidemine": "$1 مېنىڭ تەھرىرىم",
+       "rcshowhidemine-show": "كۆرسىتىش",
+       "rcshowhidemine-hide": "يوشۇرۇش",
+       "rcshowhidecategorization-show": "كۆرسىتىش",
+       "rcshowhidecategorization-hide": "يوشۇرۇش",
        "rclinks": "يېقىنقى $2 كۈن ئىچىدىكى ئەڭ يېڭى  $1 قېتىملىق ئۆزگەرتىشنى كۆرسەت.",
        "diff": "پەرق",
        "hist": "تارىخ",
-       "hide": "يوشۇر",
+       "hide": "يوشۇرۇش",
        "show": "كۆرسەت",
        "minoreditletter": "ئازراقلا",
        "newpageletter": "يېڭى",
        "rc-change-size-new": "ئۆزگەرتكەندىن كېيىن $1 {{PLURAL:$1|بايت}}",
        "newsectionsummary": "* $1 * يېڭى ئابزاس",
        "rc-enhanced-expand": "تەپسىلاتىنى كۆرسەت",
-       "rc-enhanced-hide": "تەپسىلاتىنى يوشۇر",
+       "rc-enhanced-hide": "تەپسىلاتىنى يوشۇرۇش",
        "rc-old-title": "ئەڭ دەسلەپتە \"$1\" سۈپىتىدە قۇرۇلغان",
        "recentchangeslinked": "مۇناسىۋەتلىك ئۆزگەرتىشلەر",
        "recentchangeslinked-feed": "مۇناسىۋەتلىك ئۆزگەرتىشلەر",
        "recentchangeslinked-summary": "بۇ ئالاھىدە بەت يۈزى كۆرسەتكەن بەتتىن ئۇلىنىپ چىققان يېقىنقى ئۆزگەرتىش تىزىملىكى (ياكى ئالاھىدە تۈرنىڭ ئەزاسى).\n [[Special:Watchlist|كۆزەت تىزىملىكىڭىز]] دىكى بەت يۈزى '''توم''' كۆرسىتىلىدۇ.",
        "recentchangeslinked-page": "بەت نامى:",
        "recentchangeslinked-to": "بېرىلگەن بەتكە ئۇلانغان ئۆزگەرتىشنى كۆرسەت",
-       "upload": "ھۆججەت يۈكلە",
-       "uploadbtn": "ھۆججەت يۈكلە",
+       "upload": "ھۆججەت يۈكلەش",
+       "uploadbtn": "ھۆججەت يۈكلەش",
        "reuploaddesc": "يۈكلەشتىن ۋاز كېچىپ، يۈكلەش كۆزنىكىگە قايت",
        "upload-tryagain": "ئۆزگەرتىلگەن ھۆججەت چۈشەندۈرۈشى يوللا",
        "uploadnologin": "تىزىمغا كىرمىدى",
        "booksources": "كىتاب مەنبەسى",
        "booksources-search-legend": "كىتاب مەنبەسى ئىزدە",
        "booksources-isbn": "ISBN:",
+       "booksources-search": "ئىزدەش",
        "booksources-text": "تۆۋەندىكىسى بىر قىسىم تور كىتابخانىلىرىنىڭ تىزىملىكى، ئىچىدە سىز ئىزدىمەكچى بولغان كىتابلارنىڭ تېخىمۇ كۆپ ئۇچۇرى بولۇشى مۇمكىن:",
        "booksources-invalid-isbn": "تەمىنلىگەن ISBN نومۇرى توغرا ئەمەس. ئەسلى كۆچۈرگەن مەنبەدىكى نومۇردا خاتالىق بار يوقلۇقىنى تەكشۈرۈڭ.",
        "specialloguserlabel": "ئىشلەتكۈچى:",
        "alllogstext": "{{SITENAME}} بارلىق ئىشلەتكىلى بولىدىغان خاتىرىنى ئۇنىۋېرسال كۆرسىتىدۇ.\nسىز خاتىرە تىپى، ئىشلەتكۈچى ئاتى (چوڭ كىچىك يېزىلىشنى پەرقلەندۈرىدۇ) نى تاللىيالايسىز ياكى مۇناسىۋەتلىك بەت (چوڭ كىچىك يېزىلىشنى پەرقلەندۈرىدۇ) ئارقىلىق ئىزدەش دائىرىسىنى كىچىكلىتەلەيسىز.",
        "logempty": "خاتىرىدە ماس كېلىدىغان تۈر يوق.",
        "log-title-wildcard": "بۇ تېكست بىلەن باشلانغان ماۋزۇنى ئىزدە",
-       "showhideselectedlogentries": "تالغان خاتىرىسى كۈرسەت / يوشۇر",
+       "showhideselectedlogentries": "تاللىغان خاتىرىنى كۆرسىتىش/يوشۇرۇش",
        "allpages": "ھەممە بەت",
        "nextpage": "كەينى بەت ($1)",
        "prevpage": "ئالدىنقى بەت ($1)",
        "allpagesto": "بۇ جايدىن ئاياغلاشقان بەتنى كۆرسەت:",
        "allarticles": "ھەممە بەت",
        "allinnamespace": "ئالدى بەت ($1)",
-       "allpagessubmit": "يۆتكەل",
+       "allpagessubmit": "يوللاش",
        "allpagesprefix": "ئالدى قوشۇلغۇچىسى بار بەتنى كۆرسەت:",
        "allpagesbadtitle": "بېرىلگەن بەت ماۋزۇسى قانۇنسىز ياكى ئىچكى تىلغا ئىگە ياكى ئىچكى wiki نىڭ ئالدى قوشۇلغۇچىسى.\nئۇ ماۋزۇغا ئىشلەتكىلى بولمايدىغان بىر ياكى بىر قانچە ھەرپنى ئۆز ئىچىگە ئالغان بولۇشى مۇمكىن.",
        "allpages-bad-ns": "{{SITENAME}} دا\\\"$1\" ئات بوشلۇقى يوق.",
-       "allpages-hide-redirects": "قايتا نىشانلاشنى يوشۇر",
+       "allpages-hide-redirects": "قايتا نىشانلاشنى يوشۇرۇش",
        "cachedspecial-viewing-cached-ttl": "سىز بۇ بەتنىڭ غەملەك نەشرىنى كۆرۈۋاتىسىز، ئەڭ كۆپ بولغاندا $1 كونىراق.",
        "cachedspecial-viewing-cached-ts": "سىز بۇ بەتنىڭ غەملەك نەشرىنى كۆرۈۋاتىسىز، ئۇ ئەڭ يېڭى تولۇق نەشرى بولماسلىقى مۇمكىن.",
        "cachedspecial-refresh-now": "يېقىنقىنى كۈرىشى.",
        "delete-edit-reasonlist": "ئۆچۈرۈش سەۋەبى تەھرىر",
        "delete-toobig": "بۇ بەتنىڭ بەك كۆپ تەھرىرلەش تارىخى بار، {{PLURAL:$1|تۈزىتىلگەن نەشرى|تۈزىتىلگەن نەشرى}} قېتىمدىن ئارتۇق. {{SITENAME}} قالايمىقانچىلىقنىڭ ئالدىنى ئېلىش ئۈچۈن بۇ خىل بەتلەرنى ئۆچۈرۈش مەشغۇلاتى چەكلەندى.",
        "delete-warning-toobig": "بۇ بەتنىڭ تەھرىرلەش تارىخى بەك كۆپ، {{PLURAL:$1|تۈزىتىلگەن نەشرى|تۈزىتىلگەن نەشرى}} قېتىمدىن ئارتۇق.\nبۇ بەت ئۆچۈرۈلسە {{SITENAME}} ساندانىنىڭ مەشغۇلاتىنى قالايمىقانلاشتۇرۇۋېتىشى مۇمكىن؛\nبۇ مەشغۇلاتنى داۋاملاشتۇرۇشتىن ئىلگىرى ئېھتىيات قىلىڭ.",
-       "rollback": "تەھرىر ئەسلىگە قايتۇر",
+       "rollback": "تەھرىرلەشكە قايتىش",
        "rollbacklink": "ئەسلىگە قايتۇر",
        "rollbacklinkcount": "$1 {{PLURAL:$1|تەھرىر}}نى ئەسلىگە قايتۇر",
        "rollbacklinkcount-morethan": "$1 دىن كۆپ {{PLURAL:$1|تەھرىر}}نى ئەسلىگە قايتۇر",
        "minimum-size": "ئەڭ كىچىك چوڭلۇقى",
        "maximum-size": "ئەڭ چوڭ چوڭلۇقى:",
        "pagesize": "(بايت)",
-       "restriction-edit": "تەھرىر",
+       "restriction-edit": "تەھرىرلەش",
        "restriction-move": "يۆتكە",
        "restriction-create": "قۇر",
        "restriction-upload": "يۈكلە",
        "contributions": "{{GENDER:$1|ئىشلەتكۈچى}} تۆھپىسى",
        "contributions-title": "$1 نىڭ ئىشلەتكۈچى تۆھپىسى",
        "mycontris": "تۆھپە",
+       "anoncontribs": "تۆھپە",
        "contribsub2": "{{GENDER:$3|$1}} ($2) ئۈچۈن",
        "nocontribs": "بۇ ئۆلچەمگە ماس كېلىدىغان ئۆزگەرتىش تېپىلمىدى.",
        "uctop": "(نۆۋەتتىكى)",
        "sp-contributions-search": "تۆھپە ئىزدە",
        "sp-contributions-username": "IP ئادرېس ياكى ئىشلەتكۈچى نامى:",
        "sp-contributions-toponly": "ئەڭ يېڭى تۈزىتىلگەن نەشرىنىلا كۆرسەت",
+       "sp-contributions-newonly": "بەت قۇرۇش تەھرىرىنىلا كۆرسەت",
        "sp-contributions-submit": "ئىزدە",
        "whatlinkshere": "بۇ جايدىكى ئۇلانما",
        "whatlinkshere-title": "\"$1\" بەتكە ئۇلانغان بەتلەر",
        "whatlinkshere-prev": "{{PLURAL:$1|ئالدى|ئالدى $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|كەينى|كەينى $1}}",
        "whatlinkshere-links": "→ ئۇلانما",
-       "whatlinkshere-hideredirs": "$1 قايتا نىشان بەلگىلە",
+       "whatlinkshere-hideredirs": "$1 قايتا نىشان بەلگىلەش",
        "whatlinkshere-hidetrans": "$1 ئۆز ئىچىگە ئالغان",
        "whatlinkshere-hidelinks": "$1 ئۇلانما",
        "whatlinkshere-hideimages": "$1 ھۆججەت ئۇلانما",
        "ipblocklist": "چەكلەنگەن ئىشلەتكۈچىلەر",
        "ipblocklist-legend": "چەكلەنگەن ئىشلەتكۈچىدىن بىرنى ئىزدە",
        "blocklist-userblocks": "ھېسابات چەكلەشنى يوشۇر",
-       "blocklist-tempblocks": "ۋاقىتلىق چەكلەشنى يوشۇر",
+       "blocklist-tempblocks": "ۋاقىتلىق چەكلەنمىنى يوشۇرۇش",
        "blocklist-addressblocks": "يەككە IP چەكلەشنى يوشۇر",
-       "blocklist-rangeblocks": "دائىرە چەكلىمىسىنى يوشۇر",
+       "blocklist-rangeblocks": "چەكلەنگەن IP بۆلىكىنى يوشۇرۇش",
        "blocklist-timestamp": "ۋاقىت تامغاسى",
        "blocklist-target": "نىشان",
        "blocklist-expiry": "ۋاقتى ئۆتتى",
        "allmessages-filter-modified": "ئۆزگەرتىلگەن",
        "allmessages-prefix": "ئالدى قوشۇلغۇچى سۈزگۈچ:",
        "allmessages-language": "تىل:",
-       "allmessages-filter-submit": "يۆتكەل",
+       "allmessages-filter-submit": "يوللاش",
        "thumbnail-more": "چوڭايت",
        "filemissing": "ھۆججەت يوقالغان",
        "thumbnail_error": "كىچىك رەسىم قۇرۇش خاتالىقى: $1",
        "import-logentry-interwiki-detail": "$2 دىن كەلگەن $1 {{PLURAL:$1|تۈزىتىش|تۈزىتىش}}",
        "javascripttest": "JavaScript سىناش",
        "javascripttest-qunit-intro": "mediawiki.org دىكى [$1 سىناش قوللانمىسى]نى كۆرۈڭ.",
-       "tooltip-pt-userpage": "ئىشلەتكۈچى بېتىڭىز",
+       "tooltip-pt-userpage": "{{GENDER:|سىزنىڭ ئىشلەتكۈچى}} بېتىڭىز",
        "tooltip-pt-anonuserpage": "بۇ بېكەتنى تەھرىرلىگەندە ئىشلەتكەن IP ماس كەلگەن ئىشلەتكۈچى بېتى",
-       "tooltip-pt-mytalk": "مۇنازىرە بېتىڭىز",
+       "tooltip-pt-mytalk": "{{GENDER:|سىزنىڭ}} مۇنازىرە بېتىڭىز",
        "tooltip-pt-anontalk": "مەزكۇر IP ئادرېستىن كەلگەن تەھرىرنىڭ مۇنازىرىسى",
-       "tooltip-pt-preferences": "مايىللىق تەڭشىگىڭىز",
+       "tooltip-pt-preferences": "{{GENDER:|سىزنىڭ}} مايىللىق تەڭشىكىڭىز",
        "tooltip-pt-watchlist": "سىز كۆزىتىۋاتقان بەتلەر تىزىملىگى",
-       "tooltip-pt-mycontris": "تۆھپە تىزىملىكىڭىز",
+       "tooltip-pt-mycontris": "{{GENDER:|سىزنىڭ}} تۆھپە تىزىملىكىڭىز",
        "tooltip-pt-login": "تىزىمغا كىرىشىڭىزنى تەۋسىيە قىلىمىز ئەمما مەجبۇرىي ئەمەس",
-       "tooltip-pt-logout": "تىزىمدىن چىق",
+       "tooltip-pt-logout": "چېكىنىش",
        "tooltip-pt-createaccount": "ھېساباتتىن بىرنى قۇرۇپ تىزىمغا كىرىشىڭىزنى تەۋسىيە قىلىمىز، ئەمما بۇ مەجبۇرىي ئەمەس.",
        "tooltip-ca-talk": "بەت مەزمۇنى ھەققىدىكى مۇنازىرە",
-       "tooltip-ca-edit": "بۇ بەتنى تەھرىرلىيەلەيسىز.\nساقلاشتىن ئىلگىرى ئالدىن كۆزەت كۇنۇپكىسىنى ئىشلىتىڭ",
+       "tooltip-ca-edit": "بۇ بەتنى تەھرىرلەش",
        "tooltip-ca-addsection": "يېڭى بىر مۇنازىرە باشلاڭ",
        "tooltip-ca-viewsource": "بۇ بەت قوغدالغان.\nمەنبە ھۆججىتىنى كۆرەلەيسىز",
        "tooltip-ca-history": "بۇ بەتنىڭ بۇرۇنقى نەشرى",
        "tooltip-ca-watch": "بۇ بەتنى كۆزەت تىزىملىكىگە قوش",
        "tooltip-ca-unwatch": "بۇ بەتنى كۆزەت تىزىملىكىمدىن چىقىرىۋەت",
        "tooltip-search": "{{SITENAME}} ئىزدە",
-       "tooltip-search-go": "ئەگەر بۇ ئاتتىكى بەت مەۋجۇد بولسا شۇ بەتكە يۆتكەل",
+       "tooltip-search-go": "ئوخشاش ماۋزۇلۇق تېما بولسا، بىۋاستە بۇ بەتكە يۆتكىلىدۇ",
        "tooltip-search-fulltext": "بۇ تېكست بار بەتنى ئىزدە",
        "tooltip-p-logo": "باش بەتنى زىيارەت قىل",
        "tooltip-n-mainpage": "باش بەتنى زىيارەت قىل",
        "tooltip-feed-rss": "بۇ بەتنىڭ RSS قانىلى",
        "tooltip-feed-atom": "بۇ بەتنىڭ Atom قانىلى",
        "tooltip-t-contributions": "بۇ ئىشلەتكۈچىنىڭ تۆھپە تىزىملىكىنى كۆرسەت",
-       "tooltip-t-emailuser": "بۇ ئىشلەتكۈچىگە ئېلخەت يوللا",
+       "tooltip-t-emailuser": "{{GENDER:$1|بۇ ئىشلەتكۈچىگە}} ئېلخەت يوللاش",
        "tooltip-t-upload": "ھۆججەتلەرنى يۈكلە",
        "tooltip-t-specialpages": "بارلىق ئالاھىدە بەتلەر تىزىملىكى",
-       "tooltip-t-print": "بÛ\87 Ø¨Û\95تÙ\86Ù\89Ú­ Ø¨Ø§Ø³Ù\82Ù\89Ù\84Ù\89 Ø¨Ù\88Ù\84Ù\89دÙ\89غاÙ\86 Ù\86Û\95شرى",
+       "tooltip-t-print": "بÛ\87 Ø¨Û\95تÙ\86Ù\89Ú­ Ø¨Ø§Ø³Ù\85ا Ù\86Û\87سخÙ\89سى",
        "tooltip-t-permalink": "ئۆزگەرتىلگەن نەشرىدىكى بۇ بەتنىڭ مەڭگۈلۈك ئۇلانمىسى",
        "tooltip-ca-nstab-main": "مەزمۇن بېتىنى كۆرسەت",
        "tooltip-ca-nstab-user": "ئىشلەتكۈچى بېتىنى كۆرسەت",
        "pageinfo-length": "بەت چوڭلۇقى (بايت)",
        "pageinfo-article-id": "بەت ID",
        "pageinfo-language": "بەت مەزمۇن تىلى",
-       "pageinfo-robot-policy": "ئىزدەش ماتور ھالىتى",
+       "pageinfo-content-model": "بەت مەزمۇنى تىپى",
+       "pageinfo-robot-policy": "ماشىنا ئادەمدە ئىنىدىكىسلاش",
        "pageinfo-robot-index": "چەكلەنمىگەن",
        "pageinfo-robot-noindex": "چەكلەنگەن",
        "pageinfo-watchers": "بەت كۆزەتكۈچىلەر سانى",
        "filedelete-old-unregistered": "بەلگىلەنگەن ھۆججەتنىڭ \"$1\" تۈزىتىلگەن نەشرى سانداندا يوق.",
        "filedelete-current-unregistered": "بەلگىلەنگەن ھۆججەت \"$1\" سانداندا يوق.",
        "filedelete-archive-read-only": "تور بەت مۇلازىمىتىرىدىكى ئارخىپ مۇندەرىجىسى \"$1\"  گە يازغىلى بولمايدۇ.",
-       "previousdiff": "→ ئالدىنقى تەھرىر",
+       "previousdiff": "→ ئالدىنقى تەھرىرلەش",
        "nextdiff": "كېيىنكى تەھرىر ←",
        "mediawarning": "'''ئاگاھلاندۇرۇش''': بۇ ھۆججەتتە زەھەرخەندە كود بولۇشى مۇمكىن، ئۇنى ئىجرا قىلسىڭىز سىستېمىڭىزغا خەۋپ ئېلىپ كېلىشى مۇمكىن.",
        "imagemaxsize": "سۈرەت چوڭلۇق چەكلىمىسى: <br />''(ھۆججەت چۈشەندۈرۈش بېتى ئۈچۈن)''",
        "confirm-unwatch-top": "بۇ بەتنى كۆزەت تىزىمىدىن چىقىرىۋېتەمسىز؟",
        "imgmultipageprev": "← ئالدىنقى بەت",
        "imgmultipagenext": "كېيىنكى بەت →",
-       "imgmultigo": "يۆتكەل!",
-       "imgmultigoto": "$1 بەتكە يۆتكەل",
+       "imgmultigo": "يوللاش!",
+       "imgmultigoto": "$1 .بەتكە يۆتكىلىش",
        "ascending_abbrev": "ئۆسكۈچى",
        "descending_abbrev": "كېمەيگۈچى",
        "table_pager_next": "كېيىنكى بەت",
        "table_pager_last": "ئەڭ ئاخىرقى بەت",
        "table_pager_limit": "ھەر بىر بەتتە $1 تۈر كۆرسەت",
        "table_pager_limit_label": "ھەر بەتتىكى تۈر سانى:",
-       "table_pager_limit_submit": "يۆتكەل",
+       "table_pager_limit_submit": "يوللاش",
        "table_pager_empty": "نەتىجە يوق",
        "autosumm-blank": "بەتنى قۇرۇقدا",
        "autosumm-replace": "ئالماشتۇرۇلغان مەزمۇن '$1'",
        "watchlistedit-raw-done": "كۆزەت تىزىملىكىڭىز يېڭىلاندى.",
        "watchlistedit-raw-added": "{{PLURAL:$1|1 ماۋزۇ|$1 ماۋزۇ}} قوشۇلدى:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|1 ماۋزۇ|$1 ماۋزۇ}} چىقىرىۋېتىلدى:",
+       "watchlisttools-clear": "كۆزىتىش تىزىملىكىنى تازىلاش",
        "watchlisttools-view": "مۇناسىۋەتلىك ئۆزگەرتىشنى كۆرسەت",
        "watchlisttools-edit": "كۆزەت تىزىملىكىنى كۆرۈپ تەھرىرلەش",
        "watchlisttools-raw": "ئەسلى كۆزەت تىزىملىك تەھرىرى",
        "version-entrypoints": "كىرىش نۇقتىسىنىڭ URL لىرى",
        "version-entrypoints-header-entrypoint": "كىرىش نۇقتىسى",
        "version-entrypoints-header-url": "URL",
+       "redirect-submit": "يوللاش",
+       "redirect-lookup": "تەكشۈرۈش:",
        "redirect-value": "قىممىتى:",
+       "redirect-user": "ئابونت ID",
+       "redirect-page": "بەت ID",
+       "redirect-revision": "بەت نەشىرى",
        "redirect-file": "ھۆججەت نامى",
        "redirect-not-exists": "قىممىتى تېپىلمىدى",
        "fileduplicatesearch": "تەكرار ھۆججەت ئىزدە",
        "compare-invalid-title": "سىز بەلگىلىگەن تېما ئىناۋەتسىز.",
        "compare-title-not-exists": "سىز بەلگىلىگەن تېما مەۋجۇت ئەمەس.",
        "compare-revision-not-exists": "سىز بەلگىلىگەن تۈزىتىلگەن نەشرى مەۋجۇت ئەمەس.",
-       "diff-form": "'''جەدۋەل'''",
+       "diff-form": "پەرقلەر",
+       "permanentlink": "مەڭگۈلۈك ئۇلانما",
+       "permanentlink-revid": "تۈزىتىلگەن نەشرى ID",
        "dberr-problems": "كەچۈرۈڭ! بۇ بېكەتتە تېخنىكىلىق قىيىنچىلىق كۆرۈلدى.",
        "dberr-again": "بىر قانچە مىنۇت كۈتۈپ ئاندىن قايتا يۈكلەڭ.",
        "dberr-info": "(ساندان مۇلازىمىتىرىغا ئۇلىنالمىدى:  $1)",
        "logentry-patrol-patrol": "$3 بەتنىڭ $4 تۈزىتىلگەن نەشرىگە $1 چارلاش بەلگىسى سالدى",
        "logentry-patrol-patrol-auto": "$3 بەتنىڭ $4 تۈزىتىلگەن نەشرىگە $1 چارلاش بەلگىسى ئاپتوماتىك سالدى",
        "logentry-newusers-newusers": "ئەزا $1 قۇرۇلبولدى",
-       "logentry-newusers-create": "ئەزا $1 قۇرۇلبولدى",
+       "logentry-newusers-create": "ئەزا ئاكونت $1 تىنى {{GENDER:$2|قۇرۇپ بولغان}}",
        "logentry-newusers-create2": "ئىشلەتكۈچى ھېساباتى $3 نى $1 قۇردى",
        "logentry-newusers-byemail": "ئىشلەتكۈچى ھېساباتى $3 نى $1 قۇردى ھەمدە ئىمنى تورخەتكە ئەۋەتتى",
-       "logentry-newusers-autocreate": "ئىشلەتكۈچى $1 ئاپتوماتلىق قۇرۇلدى",
+       "logentry-newusers-autocreate": "ئىشلەتكۈچى ئاكونتى $1 نى {{GENDER:$2|ئاپتوماتىك قۇردى}}",
        "logentry-rights-rights": "$3 نىڭ ئىشلەتكۈچى گۇرۇپپىسىنى $4 دىن $5 غا $1 ئالماشتۇردى",
        "logentry-rights-rights-legacy": "$3 نىڭ ئىشلەتكۈچى گۇرۇپپىسىنى $1 ئۆزگەرتتى",
        "logentry-rights-autopromote": "$1 نىڭ ئىشلەتكۈچى گۇرۇپپىسى ئۆزلۈكىدىن $4 دىن $5 غا يۈكسەلدى",
+       "logentry-upload-overwrite": "$1 يېڭى نەشىرى $3 نى {{GENDER:$2|يوللاش}}",
        "rightsnone": "(يوق)",
        "feedback-adding": "قايتۇرما ئىنكاسنى بەتكە قوشۇۋاتىدۇ…",
        "feedback-bugcheck": "قالتىس! كەمتۈكنىڭ ئاللىبۇرۇن يوللانغان [$1 مەلۇملۇق كەمتۈك] ياكى ئەمەسلىكىنى تەكشۈرۈڭ.",
        "special-characters-group-devanagari": "سانسكرىتچە",
        "special-characters-group-thai": "تايلاندچە",
        "special-characters-group-lao": "لائوسچە",
-       "special-characters-group-khmer": "كېخمېرچە"
+       "special-characters-group-khmer": "كېخمېرچە",
+       "randomrootpage": "خالىغان غول بەت"
 }
index 146647e..03bbe0b 100644 (file)
        "tog-shownumberswatching": "Показувати число користувачів, які додали сторінку до свого списку спостереження",
        "tog-oldsig": "Ваш поточний підпис:",
        "tog-fancysig": "Сприймати підпис як вікітекст (без автоматичного посилання)",
-       "tog-uselivepreview": "Ð\92икоÑ\80иÑ\81Ñ\82овÑ\83ваÑ\82и Ñ\88видкий Ð¿Ð¾Ð¿ÐµÑ\80еднÑ\96й Ð¿ÐµÑ\80еглÑ\8fд",
+       "tog-uselivepreview": "Ð\9fоказÑ\83ваÑ\82и Ð¿Ð¾Ð¿ÐµÑ\80еднÑ\96й Ð¿ÐµÑ\80еглÑ\8fд Ð±ÐµÐ· Ð¿ÐµÑ\80езаванÑ\82аженнÑ\8f Ñ\81Ñ\82оÑ\80Ñ\96нки",
        "tog-forceeditsummary": "Попереджати, коли не зазначений короткий опис редагування",
        "tog-watchlisthideown": "Приховати мої редагування у списку спостереження",
        "tog-watchlisthidebots": "Приховати редагування ботів у списку спостереження",
        "permissionserrorstext-withaction": "У Вас нема дозволу на $2 з {{PLURAL:$1|1=такої причини|таких причин}}:",
        "contentmodelediterror": "Ви не можете редагувати цю версію, оскільки модель його змісту —  <code>$1</code>, відрізняється від теперішньої моделі змісту сторінки — <code>$2</code>.",
        "recreate-moveddeleted-warn": "'''Попередження: Ви намагаєтеся створити сторінку, яка раніше вже була вилучена.'''\n\nПеревірте, чи Вам справді потрібно створювати цю сторінку.\nНижче, для зручності, наведений журнал вилучень і перейменувань:",
-       "moveddeleted-notice": "ЦÑ\8f Ñ\81Ñ\82оÑ\80Ñ\96нка Ð±Ñ\83ла Ð²Ð¸Ð»Ñ\83Ñ\87ена.\nÐ\94лÑ\8f Ð´Ð¾Ð²Ñ\96дки Ð½Ð¸Ð¶Ñ\87е Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ñ\96 Ð²Ñ\96дповÑ\96днÑ\96 Ð·Ð°Ð¿Ð¸Ñ\81и Ð· Ð¶Ñ\83Ñ\80налÑ\96в Ð²Ð¸Ð»Ñ\83Ñ\87енÑ\8c Ñ\96 Ð¿ÐµÑ\80ейменÑ\83ванÑ\8c.",
-       "moveddeleted-notice-recent": "На жаль, ця сторінка нещодавно була вилучена (протягом останніх 24 годин). Для довідки нижче наведені відповідні записи з журналів вилучень і перейменувань.",
+       "moveddeleted-notice": "ЦÑ\8e Ñ\81Ñ\82оÑ\80Ñ\96нкÑ\83 Ð±Ñ\83ло Ð²Ð¸Ð»Ñ\83Ñ\87ено.\nÐ\94лÑ\8f Ð´Ð¾Ð²Ñ\96дки Ð½Ð¸Ð¶Ñ\87е Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ñ\96 Ð²Ñ\96дповÑ\96днÑ\96 Ð·Ð°Ð¿Ð¸Ñ\81и Ð· Ð¶Ñ\83Ñ\80налÑ\96в Ð²Ð¸Ð»Ñ\83Ñ\87енÑ\8c, Ð·Ð°Ñ\85иÑ\81Ñ\82Ñ\83 Ð¹ Ð¿ÐµÑ\80ейменÑ\83ванÑ\8c Ñ\86Ñ\96Ñ\94Ñ\97 Ñ\81Ñ\82оÑ\80Ñ\96нки.",
+       "moveddeleted-notice-recent": "На жаль, ця сторінка нещодавно була вилучена (протягом останніх 24 годин). Для довідки нижче наведені відповідні записи з журналів вилучень, захисту й перейменувань цієї сторінки.",
        "log-fulllog": "Переглянути весь журнал",
        "edit-hook-aborted": "Редагування скасоване процедурою-перехоплювачем.\nДодаткові пояснення не наведені.",
        "edit-gone-missing": "Неможливо оновити сторінку.\nІмовірно, вона була вилучена.",
        "prefs-editwatchlist-clear": "Очистити список спостереження",
        "prefs-watchlist-days": "Кількість днів, що відображаються у списку спостережень:",
        "prefs-watchlist-days-max": "Максимум $1 {{PLURAL:$1|день|дні|днів}}",
-       "prefs-watchlist-edits": "Ð\9aÑ\96лÑ\8cкÑ\96Ñ\81Ñ\82Ñ\8c Ñ\80едагÑ\83ванÑ\8c Ð´Ð»Ñ\8f Ð²Ñ\96добÑ\80аженнÑ\8f Ñ\83 Ñ\80озÑ\88иÑ\80еному списку спостереження:",
+       "prefs-watchlist-edits": "Ð\9cакÑ\81ималÑ\8cна ÐºÑ\96лÑ\8cкÑ\96Ñ\81Ñ\82Ñ\8c Ð·Ð¼Ñ\96н, Ñ\8fкÑ\83 Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸Ð²Ð¾Ð´Ð¸Ñ\82и у списку спостереження:",
        "prefs-watchlist-edits-max": "Максимально: 1000",
        "prefs-watchlist-token": "Мітка списку спостереження:",
        "prefs-misc": "Інші налаштування",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (див. також [[Special:NewPages|список нових сторінок]])",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Показати",
+       "rcfilters-legend-heading": "<strong>Список скорочень:</strong>",
+       "rcfilters-other-review-tools": "<strong>Інші інструменти перевірки</strong>",
+       "rcfilters-group-results-by-page": "Групувати результати за сторінкою",
+       "rcfilters-grouping-title": "Групування",
        "rcfilters-activefilters": "Активні фільтри",
        "rcfilters-advancedfilters": "Розширені фільтри",
+       "rcfilters-limit-title": "Зміни, які слід показати",
+       "rcfilters-limit-shownum": "Показати {{PLURAL:$1|$1 останню зміну|$1 останні зміни|$1 останніх змін}}",
+       "rcfilters-days-title": "Останні дні",
+       "rcfilters-hours-title": "Останні години",
+       "rcfilters-days-show-days": "$1 {{PLURAL:$1|день|дні|днів}}",
+       "rcfilters-days-show-hours": "$1 {{PLURAL:$1|година|години|годин}}",
        "rcfilters-quickfilters": "Збережені фільтри",
        "rcfilters-quickfilters-placeholder-title": "Ще немає збережених посилань",
        "rcfilters-quickfilters-placeholder-description": "Щоб зберегти Ваші налаштування фільтрів та використати їх пізніше, клацніть на іконку закладки в ділянці активних фільтрів нижче.",
        "rcfilters-savedqueries-new-name-label": "Назва",
        "rcfilters-savedqueries-new-name-placeholder": "Опишіть мету фільтра",
        "rcfilters-savedqueries-apply-label": "Створити фільтр",
+       "rcfilters-savedqueries-apply-and-setdefault-label": "Створити стандартний фільтр",
        "rcfilters-savedqueries-cancel-label": "Скасувати",
        "rcfilters-savedqueries-add-new-title": "Зберегти поточні налаштування фільтрів",
        "rcfilters-restore-default-filters": "Відновити стандартні фільтри",
        "rcfilters-clear-all-filters": "Очистити фільтри",
+       "rcfilters-show-new-changes": "Переглянути найновіші зміни",
+       "rcfilters-previous-changes-label": "Раніше переглянуті зміни",
        "rcfilters-search-placeholder": "Фільтруйте нові редагування (переглядайте або почніть вводити)",
        "rcfilters-invalid-filter": "Недійсний фільтр",
        "rcfilters-empty-filter": "Без фільтрів. Показано всі зміни.",
        "rcfilters-filter-editsbyself-description": "Ваш власний внесок.",
        "rcfilters-filter-editsbyother-label": "Зміни, здійснені іншими",
        "rcfilters-filter-editsbyother-description": "Усі зміни, за винятком Ваших власних.",
-       "rcfilters-filtergroup-userExpLevel": "Рівень досвіду (тільки для зареєстрованих користувачів)",
+       "rcfilters-filtergroup-userExpLevel": "Реєстрація користувача і його досвід",
        "rcfilters-filter-user-experience-level-registered-label": "Зареєстровані",
        "rcfilters-filter-user-experience-level-registered-description": "Користувачі, що увійшли в систему.",
        "rcfilters-filter-user-experience-level-unregistered-label": "Незареєстровані",
        "rcfilters-filter-user-experience-level-unregistered-description": "Користувачі, які не ввійшли в систему.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Новачки",
-       "rcfilters-filter-user-experience-level-newcomer-description": "Ð\9cенÑ\88е ніж 10 редагувань і 4 дні активності.",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Ð\97аÑ\80еÑ\94Ñ\81Ñ\82Ñ\80ованÑ\96 Ñ\80едакÑ\82оÑ\80и, Ñ\8fкÑ\96 Ð¼Ð°Ñ\8eÑ\82Ñ\8c Ð¼ÐµÐ½Ñ\88 ніж 10 редагувань і 4 дні активності.",
        "rcfilters-filter-user-experience-level-learner-label": "Учні",
-       "rcfilters-filter-user-experience-level-learner-description": "Ð\91Ñ\96лÑ\8cÑ\88е Ð´Ð¾Ñ\81вÑ\96дÑ\83, Ð½Ñ\96ж Ñ\83 Â«Ð½Ð¾Ð²Ð°Ñ\87кÑ\96в», Ð°Ð»Ðµ Ð¼ÐµÐ½Ñ\88е, Ð½Ñ\96ж Ñ\83 Â«Ð´Ð¾Ñ\81вÑ\96дÑ\87ениÑ\85 ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87Ñ\96в».",
+       "rcfilters-filter-user-experience-level-learner-description": "Ð\97аÑ\80еÑ\94Ñ\81Ñ\82Ñ\80ованÑ\96 Ñ\80едакÑ\82оÑ\80и, Ñ\80Ñ\96венÑ\8c Ð´Ð¾Ñ\81вÑ\96дÑ\83 Ñ\8fкиÑ\85 Ð¿ÐµÑ\80ебÑ\83ваÑ\94 Ð¼Ñ\96ж Â«Ð½Ð¾Ð²Ð°Ñ\87ками» Ñ\82а Â«Ð´Ð¾Ñ\81вÑ\96дÑ\87еними ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87ами».",
        "rcfilters-filter-user-experience-level-experienced-label": "Досвідчені користувачі",
-       "rcfilters-filter-user-experience-level-experienced-description": "Ð\91Ñ\96лÑ\8cÑ\88е 30 Ð´Ð½Ñ\96в Ð°ÐºÑ\82ивноÑ\81Ñ\82Ñ\96 Ñ\96 Ð¿Ð¾Ð½Ð°Ð´ 500 Ñ\80едагÑ\83ванÑ\8c.",
+       "rcfilters-filter-user-experience-level-experienced-description": "Ð\97аÑ\80еÑ\94Ñ\81Ñ\82Ñ\80ованÑ\96 Ñ\80едакÑ\82оÑ\80и, Ñ\8fкÑ\96 Ð¼Ð°Ñ\8eÑ\82Ñ\8c Ð¿Ð¾Ð½Ð°Ð´ 500 Ñ\80едагÑ\83ванÑ\8c Ñ\96 30 Ð´Ð½Ñ\96в Ð°ÐºÑ\82ивноÑ\81Ñ\82Ñ\96.",
        "rcfilters-filtergroup-automated": "Автоматизовані редагування",
        "rcfilters-filter-bots-label": "Бот",
        "rcfilters-filter-bots-description": "Редагування, зроблені з допомогою автоматизованих засобів.",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Фільтр «Незначні редагування» конфліктує з одним або більше фільтрів за типом змін, оскільки певні типи змін не можна позначити як «незначні». Конфліктні фільтри позначені в ділянці активних фільтрів угорі.",
        "rcfilters-hideminor-conflicts-typeofchange": "Певні типи змін не можна позначити як «незначні», тож цей фільтр конфліктує з такими фільтрами за типом змін: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Цей фільтр за типом змін конфліктує з фільтром «Незначні редагування». Певні типи змін не можна позначати як «незначні».",
-       "rcfilters-filtergroup-lastRevision": "Ð\9fоÑ\82оÑ\87на Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\8f",
+       "rcfilters-filtergroup-lastRevision": "Ð\9eÑ\81Ñ\82аннÑ\96 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97",
        "rcfilters-filter-lastrevision-label": "Поточна версія",
-       "rcfilters-filter-lastrevision-description": "Ð\9eстання зміна на сторінці.",
-       "rcfilters-filter-previousrevision-label": "Ð\9fопеÑ\80еднÑ\96 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97",
-       "rcfilters-filter-previousrevision-description": "Усі зміни, які не є поточною версією сторінки.",
+       "rcfilters-filter-lastrevision-description": "Ð\9bиÑ\88е Ð¾стання зміна на сторінці.",
+       "rcfilters-filter-previousrevision-label": "Ð\9dе Ð¾Ñ\81Ñ\82аннÑ\8f Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\8f",
+       "rcfilters-filter-previousrevision-description": "Усі зміни, які не є «останньою версією».",
        "rcfilters-filter-excluded": "Виключено",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:не</strong> $1",
+       "rcfilters-exclude-button-off": "Виключити вибране",
+       "rcfilters-exclude-button-on": "Виключення вибраного",
+       "rcfilters-view-advanced-filters-label": "Розширені фільтри",
        "rcfilters-view-tags": "Редагування з мітками",
        "rcfilters-view-namespaces-tooltip": "Фільтрувати результати за простором назв",
        "rcfilters-view-tags-tooltip": "Фільтрувати результати, використовуючи мітки до редагувань",
        "rcfilters-view-return-to-default-tooltip": "Повернутися до головного меню фільтра",
+       "rcfilters-liveupdates-button": "Оновлення наживо",
+       "rcfilters-liveupdates-button-title-on": "Вимкнути оновлення наживо",
+       "rcfilters-liveupdates-button-title-off": "Показувати нові зміни одразу ж після їх здійснення",
        "rcnotefrom": "Нижче знаходяться {{PLURAL:$5|редагування}} з <strong>$3, $4</strong> (відображено до <strong>$1</strong>).",
        "rclistfromreset": "Скинути вибір дати",
        "rclistfrom": "Показати редагування починаючи з $3 $2.",
        "pageswithprop-legend": "Сторінки з перевизначеними властивостями",
        "pageswithprop-text": "Тут перераховані сторінки, у яких були вручну перевизначені окремі властивості.",
        "pageswithprop-prop": "Назва властивості:",
+       "pageswithprop-reverse": "Сортувати у зворотньому порядку",
+       "pageswithprop-sortbyvalue": "Сортувати за значенням властивості",
        "pageswithprop-submit": "Перейти",
        "pageswithprop-prophidden-long": "довге значення текстової властивості приховано ($1)",
        "pageswithprop-prophidden-binary": "двійкове значення властивості приховано ($1)",
        "enotif_lastdiff": "Щоб переглянути цю зміну, див. $1",
        "enotif_anon_editor": "анонімний користувач $1",
        "enotif_body": "Шановний $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nКороткий опис змін: $PAGESUMMARY $PAGEMINOREDIT\n\nЗвернутись до редагувальника:\nелектронною поштою: $PAGEEDITOR_EMAIL\nчерез вікі: $PAGEEDITOR_WIKI\n\nЯкщо ви не відвідаєте цю сторінку під своїм обліковим записом, то в подальшому не будете отримувати сповіщень про наступні дії. Ви також можете вимкнути налаштування сповіщень для усіх сторінок зі списку спостереження.\n\nВаша дружня система сповіщення {{grammar:genitive|{{SITENAME}}}}\n\n--\nЗміна налаштувань повідомлень електронною поштою\n{{canonicalurl:{{#special:Preferences}}}}\n\nЩоб змінити налаштування списку спостереження, перейдіть за посиланням\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nЩоб вилучити сторінку зі списку спостереження, відвідайте сторінку\n$UNWATCHURL\n\nЗворотній зв'язок і допомога:\n$HELPPAGE",
+       "enotif_minoredit": "Це незначна зміна",
        "created": "створена",
        "changed": "змінена",
        "deletepage": "Вилучити сторінку",
        "delete-warning-toobig": "У цієї сторінки дуже довга історія редагувань, більше $1 {{PLURAL:$1|версії|версій|версій}}.\nЇї вилучення може призвести до порушень у роботі бази даних сайту {{SITENAME}};\nдійте обережно.",
        "deleteprotected": "Ви не можете видалити цю сторінку, тому що вона захищена.",
        "deleting-backlinks-warning": "<strong>Попередження:</strong> [[Special:WhatLinksHere/{{FULLPAGENAME}}|інші сторінки]] посилаються або містять сторінку, яку Ви маєте намір видалити.",
+       "deleting-subpages-warning": "<strong>Попередження:</strong> Сторінка, яку Ви маєте намір вилучити, має [[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|$1 підсторінку|$1 підсторінки|$1 підсторінок|51=понад 50 підсторінок}}]].",
        "rollback": "Відкинуто редагування",
        "rollbacklink": "відкинути",
        "rollbacklinkcount": "відкинути $1 {{PLURAL:$1|редагування|редагування|редагувань}}",
        "undelete-search-title": "Пошук видалених сторінок",
        "undelete-search-box": "Пошук вилучених сторінок",
        "undelete-search-prefix": "Показати сторінки, що починаються з:",
+       "undelete-search-full": "Показати назви сторінок, які містять:",
        "undelete-search-submit": "Знайти",
        "undelete-no-results": "Не знайдено потрібних сторінок серед вилучених.",
        "undelete-filename-mismatch": "Неможливо відновити версію файлу з відміткою часу $1: невідповідність назви файлу",
        "import-nonewrevisions": "Ніякі поправки не були імпортовані (всі вже були оброблені, або пропущені через помилки).",
        "xml-error-string": "$1 в рядку $2, позиції $3 (байт $4): $5",
        "import-upload": "Завантажити XML-дані",
-       "import-token-mismatch": "Втрачені дані сеансу. \n\nВи могли вийти з системи. <strong>Будь ласка, переконайтеся, що досі залогінені, і спробуйте ще раз</strong>.\nЯкщо це не спрацює, спробуйте [[Special:UserLogout|вийти з системи]] і увійти знову, та перевірте, чи Ваш браузер дозволяє куки з цього сайту.",
+       "import-token-mismatch": "Втрачено дані сеансу. \n\nВи могли вийти з системи. '''Будь ласка, переконайтеся, що досі перебуваєте в системі, і спробуйте ще раз'''.\nЯкщо це не спрацює, спробуйте [[Special:UserLogout|вийти з системи]] і увійти знову, та перевірте, чи Ваш браузер дозволяє куки з цього сайту.",
        "import-invalid-interwiki": "Неможливо імпортувати із зазначеної вікі.",
        "import-error-edit": "Сторінку «$1» не було імпортовано, оскільки Вам не дозволено її редагувати.",
        "import-error-create": "Сторінку «$1» не було імпортовано, оскільки Вам не дозволено її створювати.",
        "fileduplicatesearch-noresults": "Файл з назвою «$1» не знайдено.",
        "specialpages": "Спеціальні сторінки",
        "specialpages-note-top": "Легенда",
+       "specialpages-note-restricted": "* Звичайні спеціальні сторінки.\n* <span class=\"mw-specialpagerestricted\">Спеціальні сторінки з обмеженим доступом.</span>",
        "specialpages-group-maintenance": "Технічні звіти",
        "specialpages-group-other": "Інші",
        "specialpages-group-login": "Вхід до системи / реєстрація",
        "compare-invalid-title": "Зазначена назва неприпустима.",
        "compare-title-not-exists": "Зазначена назва не існує.",
        "compare-revision-not-exists": "Зазначеної версії не існує.",
+       "diff-form": "Відмінності",
+       "diff-form-oldid": "Ідентифікатор старої версії (необов'язково)",
+       "diff-form-revid": "Ідентифікатор версії з відмінностями",
+       "diff-form-submit": "Показати відмінності",
+       "permanentlink": "Постійне посилання",
+       "permanentlink-revid": "Ідентифікатор версії",
+       "permanentlink-submit": "Перейти до версії",
        "dberr-problems": "Вибачте! На цьому сайті виникли технічні труднощі.",
        "dberr-again": "Спробуйте оновити сторінку за кілька хвилин.",
        "dberr-info": "(неможливо з'єднатися з сервером баз даних: $1)",
index 8dd0c53..9ab3d48 100644 (file)
@@ -37,7 +37,8 @@
                        "Nguyên Lê",
                        "Asmen",
                        "Stephanecbisson",
-                       "Quoclinh94"
+                       "Quoclinh94",
+                       "Tmp1109"
                ]
        },
        "tog-underline": "Gạch chân liên kết:",
        "prefs-editwatchlist-clear": "Xóa sạch danh sách theo dõi của bạn",
        "prefs-watchlist-days": "Số ngày hiển thị trong danh sách theo dõi:",
        "prefs-watchlist-days-max": "Tối đa $1 ngày",
-       "prefs-watchlist-edits": "Số lần sửa đổi tối đa trong danh sách theo dõi mở rộng:",
+       "prefs-watchlist-edits": "Số lần sửa đổi lớn nhất trong danh sách theo dõi mở rộng:",
        "prefs-watchlist-edits-max": "Con số tối đa: 1.000",
        "prefs-watchlist-token": "Dấu hiệu cho danh sách theo dõi:",
        "prefs-misc": "Linh tinh",
        "compare-invalid-title": "Tên trang chỉ định không hợp lệ.",
        "compare-title-not-exists": "Tên trang chỉ định không tồn tại.",
        "compare-revision-not-exists": "Phiên bản chỉ định không tồn tại.",
+       "diff-form": "'''biểu mẫu'''",
        "dberr-problems": "Xin lỗi! Trang này đang gặp phải những khó khăn về kỹ thuật.",
        "dberr-again": "Xin thử đợi vài phút rồi tải lại trang.",
        "dberr-info": "(Không thể liên lạc với máy chủ cơ sở dữ liệu: $1)",
index 47e7ead..39f8d8e 100644 (file)
        "tog-watchlisthideminor": "隐藏监视列表中的小编辑",
        "tog-watchlisthideliu": "隐藏监视列表中的登录用户的编辑",
        "tog-watchlistreloadautomatically": "当一条过滤器规则被更改时,自动重新加载监视列表(需要JavaScript)",
+       "tog-watchlistunwatchlinks": "添加监视列表条目的直接(取消)监视链接(需要JavaScript才能打开功能)",
        "tog-watchlisthideanons": "隐藏监视列表中的匿名用户的编辑",
        "tog-watchlisthidepatrolled": "隐藏监视列表中的已巡查编辑",
        "tog-watchlisthidecategorization": "隐藏对页面的分类",
        "watching": "正在监视...",
        "unwatching": "正在取消监视...",
        "watcherrortext": "更改“$1”的监视列表设置时出错。",
+       "watchlist-unwatch": "×",
+       "watchlist-unwatch-undo": "+",
        "enotif_reset": "标记所有页面为已访问",
        "enotif_impersonal_salutation": "{{SITENAME}}用户",
        "enotif_subject_deleted": "{{SITENAME}}页面$1已被$2删除",
        "import-mapping-subpage": "作为以下页面的子页面导入:",
        "import-upload-filename": "文件名:",
        "import-comment": "注释:",
-       "importtext": "请使用[[Special:Export|导出功能]]从源 wiki 导出文件,\n保存到您的电脑并上传到这里。",
+       "importtext": "请使用[[Special:Export|导出功能]]从源wiki导出文件,保存到您的电脑并上传到这里。",
        "importstart": "正在导入页面...",
        "import-revision-count": "$1个版本",
        "importnopages": "没有导入的页面。",
        "compare-invalid-title": "您指定的标题无效。",
        "compare-title-not-exists": "您指定的标题不存在。",
        "compare-revision-not-exists": "指定的版本不存在。",
-       "diff-form": "'''表单'''元素",
+       "diff-form": "差异",
+       "diff-form-oldid": "旧修订版本ID(可选)",
+       "diff-form-revid": "差异的修订版本ID",
+       "diff-form-submit": "显示差异",
+       "permanentlink": "固定链接",
+       "permanentlink-revid": "修订版本ID",
+       "permanentlink-submit": "前往修订版本",
        "dberr-problems": "抱歉!本网站出现了一些技术问题。",
        "dberr-again": "请等待几分钟后重试。",
        "dberr-info": "(无法访问数据库:$1)",
index 1587eeb..a7b7004 100644 (file)
        "confirm-purge-title": "清除此頁快取",
        "confirm_purge_button": "確定",
        "confirm-purge-top": "要清除此頁面的快取嗎?",
-       "confirm-purge-bottom": "刷新頁面會清空頁面的快取記錄並強制顯示最近的頁面修訂。",
+       "confirm-purge-bottom": "清除頁面會清除快取紀錄並強制顯示最近的頁面修訂。",
        "confirm-watch-button": "確定",
        "confirm-watch-top": "新增此頁面至您的監視清單?",
        "confirm-unwatch-button": "確定",
index 967224f..299beb8 100644 (file)
@@ -88,7 +88,7 @@ $defaultDateFormat = 'km';
 $dateFormats = [
        'km time' => 'ម៉ោងH:i',
        'km date' => 'l ទីd F ឆ្នាំY',
-       'km both' =>  'ម៉ោងH:i l ទីd F ឆ្នាំY',
+       'km both' => 'ម៉ោងH:i l ទីd F ឆ្នាំY',
 ];
 
 $specialPageAliases = [
index 2a102b2..c1aa082 100644 (file)
@@ -95,7 +95,7 @@ class HHVMMakeRepo extends Maintenance {
                print "Found " . count( $files ) . " files in " .
                        count( $dirs ) . " directories\n";
 
-               $tmpDir = wfTempDir() . '/mw-make-repo' . mt_rand( 0, 1<<31 );
+               $tmpDir = wfTempDir() . '/mw-make-repo' . mt_rand( 0, 1 << 31 );
                if ( !mkdir( $tmpDir ) ) {
                        $this->error( 'Unable to create temporary directory', 1 );
                }
index 578a226..b099aff 100644 (file)
@@ -448,7 +448,7 @@ class RefreshLinks extends Maintenance {
                do {
                        $finalConds = $conds;
                        $timestamp = $dbr->addQuotes( $timestamp );
-                       $finalConds []=
+                       $finalConds [] =
                                "(cl_timestamp > $timestamp OR (cl_timestamp = $timestamp AND cl_from > $lastId))";
                        $res = $dbr->select( [ 'page', 'categorylinks' ],
                                [ 'page_id', 'cl_timestamp' ],
index 3ea3048..cabea09 100644 (file)
--- a/phpcs.xml
+++ b/phpcs.xml
@@ -2,18 +2,19 @@
 <ruleset name="MediaWiki">
        <rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
                <exclude name="Generic.ControlStructures.InlineControlStructure" />
-               <!-- Disable rules added in 0.8.0 that don't pass yet -->
-               <exclude name="MediaWiki.Commenting.FunctionComment.ExtraParamComment" />
                <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamComment" />
-               <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamName" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationProtected" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.MissingDocumentationPublic" />
                <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamTag" />
                <exclude name="MediaWiki.Commenting.FunctionComment.MissingReturn" />
-               <exclude name="MediaWiki.Commenting.FunctionComment.Missing.Protected" />
-               <exclude name="MediaWiki.Commenting.FunctionComment.Missing.Public" />
-               <exclude name="MediaWiki.Commenting.FunctionComment.ParamNameNoMatch" />
                <exclude name="MediaWiki.Commenting.FunctionComment.SpacingAfter" />
-               <exclude name="MediaWiki.Commenting.FunctionComment.SpacingAfterParamName" />
-               <exclude name="MediaWiki.Commenting.FunctionComment.SpacingAfterParamType" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.ParamNameNoMatch" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.NotShortBoolReturn" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.NotShortIntReturn" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.NotShortBoolParam" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.NotShortIntParam" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.ExtraParamComment" />
+               <exclude name="MediaWiki.Commenting.FunctionComment.WrongStyle" />
                <exclude name="MediaWiki.Commenting.IllegalSingleLineComment.IllegalSingleLineCommentStart" />
                <exclude name="MediaWiki.Commenting.IllegalSingleLineComment.IllegalSingleLineCommentEnd" />
                <exclude name="MediaWiki.ControlStructures.AssignmentInControlStructures.AssignmentInControlStructures" />
@@ -41,7 +42,6 @@
                <exclude-pattern>*/includes/StubObject.php</exclude-pattern>
        </rule>
        <file>.</file>
-       <arg name="bootstrap" value="vendor/mediawiki/mediawiki-codesniffer/utils/bootstrap-ci.php"/>
        <arg name="encoding" value="UTF-8"/>
        <arg name="extensions" value="php,php5,inc,sample"/>
        <exclude-pattern type="relative">^extensions/</exclude-pattern>
index f004d62..144747b 100644 (file)
@@ -2218,11 +2218,27 @@ return [
        ],
        'mediawiki.special.watchlist' => [
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.watchlist.js',
+               'messages' => [
+                       'addedwatchtext',
+                       'addedwatchtext-talk',
+                       'removedwatchtext',
+                       'removedwatchtext-talk',
+                       'tooltip-ca-watch',
+                       'tooltip-ca-unwatch',
+                       'watchlist-unwatch',
+                       'watchlist-unwatch-undo',
+               ],
                'dependencies' => [
-                       'mediawiki.api',
+                       'mediawiki.api.watch',
+                       'mediawiki.jqueryMsg',
+                       'mediawiki.Title',
+                       'mediawiki.util',
                        'oojs-ui-core',
                        'user.options',
-               ]
+               ],
+       ],
+       'mediawiki.special.watchlist.styles' => [
+               'styles' => 'resources/src/mediawiki.special/mediawiki.special.watchlist.css',
        ],
        'mediawiki.special.version' => [
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.version.css',
index 4bcccdd..9d970ed 100644 (file)
                        return true;
                }
        }, function ( key, value ) {
-               mw.log.deprecate( $, key, value );
+               mw.log.deprecate( $, key, value, null, '$.' + key );
        } );
 
        mw.log.deprecate( $, 'escapeRE', function ( str ) {
                return str.replace( /([\\{}()|.?*+\-^$\[\]])/g, '\\$1' ); // eslint-disable-line no-useless-escape
-       }, 'Use mediawiki.RegExp instead.' );
+       }, 'Use mediawiki.RegExp instead.', '$.escapeRE' );
 
 }( jQuery, mediaWiki ) );
index ec91773..922da31 100644 (file)
@@ -90,6 +90,7 @@
                        config = $( table ).data( 'tablesorter' ).config,
                        cellIndex,
                        nodeValue,
+                       nextRow = false,
                        // Start with 1 because 0 is the fallback parser
                        i = 1,
                        lastRowIndex = -1,
                        if ( nodeValue !== '' ) {
                                if ( parsers[ i ].is( nodeValue, table ) ) {
                                        concurrent++;
-                                       rowIndex++;
+                                       nextRow = true;
                                        if ( concurrent >= needed ) {
                                                // Confirmed the parser for multiple cells, let's return it
                                                return parsers[ i ];
                                        }
+                               } else if ( parsers[ i ].id.match( /isoDate/ ) && /^\D*(\d{1,4}) ?(\[.+\])?$/.test( nodeValue ) ) {
+                                       // For 1-4 digits and maybe reference(s) parser "isoDate" or "number" is possible, check next row
+                                       empty++;
+                                       nextRow = true;
                                } else {
                                        // Check next parser, reset rows
                                        i++;
                                        rowIndex = 0;
                                        concurrent = 0;
                                        empty = 0;
+                                       nextRow = false;
                                }
                        } else {
                                // Empty cell
                                empty++;
+                               nextRow = true;
+                       }
+
+                       if ( nextRow ) {
+                               nextRow = false;
                                rowIndex++;
                                if ( rowIndex >= rows.length ) {
-                                       if ( concurrent >= rows.length - empty ) {
+                                       if ( concurrent > 0 && concurrent >= rows.length - empty ) {
                                                // Confirmed the parser for all filled cells
                                                return parsers[ i ];
                                        }
                                new RegExp( /(https?|ftp|file):\/\// )
                        ],
                        isoDate: [
-                               new RegExp( /^([-+]?\d{1,4})-([01]\d)-([0-3]\d)([T\s]((([01]\d|2[0-3])(:?[0-5]\d)?|24:?00)?(:?([0-5]\d|60))?([.,]\d+)?)([zZ]|([+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?/ ),
-                               new RegExp( /^([-+]?\d{1,4})-([01]\d)-([0-3]\d)/ )
+                               new RegExp( /^[^-\d]*(-?\d{1,4})-(0\d|1[0-2])(-([0-3]\d))?([T\s]([01]\d|2[0-4]):?(([0-5]\d):?(([0-5]\d|60)([.,]\d{1,3})?)?)?([zZ]|([-+])([01]\d|2[0-3]):?([0-5]\d)?)?)?/ ),
+                               new RegExp( /^[^-\d]*(-?\d{1,4})-?(\d\d)?(-?(\d\d))?([T\s](\d\d):?((\d\d)?:?((\d\d)?([.,]\d{1,3})?)?)?([zZ]|([-+])(\d\d):?(\d\d)?)?)?/ )
                        ],
                        usLongDate: [
                                new RegExp( /^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/ )
                        return ts.rgx.isoDate[ 0 ].test( s );
                },
                format: function ( s ) {
-                       var isodate, matches;
-                       if ( !Date.prototype.toISOString ) {
-                               // Old browsers don't understand iso, Fallback to US date parsing and ignore the time part.
-                               matches = $.trim( s ).match( ts.rgx.isoDate[ 1 ] );
-                               if ( !matches ) {
-                                       return $.tablesorter.formatFloat( 0 );
+                       var match, i, isodate, ms, hOffset, mOffset;
+                       match = s.match( ts.rgx.isoDate[ 0 ] );
+                       if ( match === null ) {
+                               // Otherwise a signed number with 1-4 digit is parsed as isoDate
+                               match = s.match( ts.rgx.isoDate[ 1 ] );
+                       }
+                       if ( !match ) {
+                               return 0;
+                       }
+                       // Month and day
+                       for ( i = 2; i <= 4; i += 2 ) {
+                               if ( !match[ i ] || match[ i ].length === 0 ) {
+                                       match[ i ] = 1;
                                }
-                               isodate = new Date( matches[ 2 ] + '/' + matches[ 3 ] + '/' + matches[ 1 ] );
-                       } else {
-                               matches = s.match( ts.rgx.isoDate[ 0 ] );
-                               if ( !matches ) {
-                                       return $.tablesorter.formatFloat( 0 );
+                       }
+                       // Time
+                       for ( i = 6; i <= 15; i++ ) {
+                               if ( !match[ i ] || match[ i ].length === 0 ) {
+                                       match[ i ] = '0';
                                }
-                               isodate = new Date( $.trim( matches[ 0 ] ) );
                        }
-                       return $.tablesorter.formatFloat( ( isodate !== undefined ) ? isodate.getTime() : 0 );
+                       ms = parseFloat( match[ 11 ].replace( /,/, '.' ) ) * 1000;
+                       hOffset = $.tablesorter.formatInt( match[ 13 ] + match[ 14 ] );
+                       mOffset = $.tablesorter.formatInt( match[ 13 ] + match[ 15 ] );
+
+                       isodate = new Date( 0 );
+                       // Because Date constructor changes year 0-99 to 1900-1999, use setUTCFullYear()
+                       isodate.setUTCFullYear( match[ 1 ], match[ 2 ] - 1, match[ 4 ] );
+                       isodate.setUTCHours( match[ 6 ] - hOffset, match[ 8 ] - mOffset, match[ 10 ], ms );
+                       return isodate.getTime();
                },
                type: 'numeric'
        } );
index 6eccc05..bd1b918 100644 (file)
@@ -99,7 +99,7 @@
        $.each( [ 'write', 'writeln' ], function ( idx, method ) {
                mw.log.deprecate( document, method, function () {
                        $( 'body' ).append( $.parseHTML( Array.prototype.join.call( arguments, '' ) ) );
-               }, 'Use jQuery or mw.loader.load instead.' );
+               }, 'Use jQuery or mw.loader.load instead.', 'document.' + method );
        } );
 
 }( mediaWiki, jQuery ) );
index 31effe1..0085bd6 100644 (file)
         * @return {Object} Minimal filters and highlights list
         */
        mw.rcfilters.Controller.prototype._getMinimalFilterList = function ( valuesObject ) {
-               var result = { filters: {}, highlights: {} },
+               var result = { filters: {}, highlights: {}, invert: valuesObject.invert },
                        baseState = this._getBaseFilterState();
 
                // XOR results
index 992ce99..59464bd 100644 (file)
                }
                .mw-search-createlink,
                .mw-search-nonefound,
-               .mw-search-results {
+               .mw-search-results,
+               .mw-search-interwiki-header {
                        float: left;
                        width: 60%;
                        clear: left;
diff --git a/resources/src/mediawiki.special/mediawiki.special.watchlist.css b/resources/src/mediawiki.special/mediawiki.special.watchlist.css
new file mode 100644 (file)
index 0000000..c9861c2
--- /dev/null
@@ -0,0 +1,15 @@
+/*!
+ * Styling for elements generated by JavaScript on Special:Watchlist
+ */
+.mw-changelist-line-inner-unwatched {
+       text-decoration: line-through;
+       opacity: 0.5;
+}
+
+span.mw-changeslist-line-prefix {
+       display: inline-block;
+}
+/* This can be either a span or a table cell */
+.mw-changeslist-line-prefix {
+       width: 1.25em;
+}
index 7cc9b9b..535ca93 100644 (file)
@@ -3,7 +3,7 @@
  */
 ( function ( mw, $, OO ) {
        $( function () {
-               var $progressBar, $resetForm = $( '#mw-watchlist-resetbutton' );
+               var api = new mw.Api(), $progressBar, $resetForm = $( '#mw-watchlist-resetbutton' );
 
                // If the user wants to reset their watchlist, use an API call to do so (no reload required)
                // Adapted from a user script by User:NQ of English Wikipedia
@@ -19,8 +19,7 @@
                        if ( !$progressBar ) {
                                $progressBar = new OO.ui.ProgressBarWidget( { progress: false } ).$element;
                                $progressBar.css( {
-                                       position: 'absolute',
-                                       width: '100%'
+                                       position: 'absolute', width: '100%'
                                } );
                        }
                        // Show progress bar
 
                        // Use action=setnotificationtimestamp to mark all as visited,
                        // then set all watchlist lines accordingly
-                       new mw.Api().postWithToken( 'csrf', {
-                               formatversion: 2,
-                               action: 'setnotificationtimestamp',
-                               entirewatchlist: true
+                       api.postWithToken( 'csrf', {
+                               formatversion: 2, action: 'setnotificationtimestamp', entirewatchlist: true
                        } ).done( function () {
                                // Enable button again
                                $button.prop( 'disabled', false );
                                $( '#mw-watchlist-form' ).submit();
                        } );
                }
+
+               if ( mw.user.options.get( 'watchlistunwatchlinks' ) ) {
+                       // Watch/unwatch toggle link:
+                       // If a page is on the watchlist, a '×' is shown which, when clicked, removes the page from the watchlist.
+                       // After unwatching a page, the '×' becomes a '+', which if clicked re-watches the page.
+                       // Unwatched page entries are struck through and have lowered opacity.
+                       $( '.mw-unwatch-link, .mw-watch-link' ).click( function ( event ) {
+                               var $unwatchLink = $( this ), // EnhancedChangesList uses <table> for each row, while OldChangesList uses <li> for each row
+                                       $watchlistLine = $unwatchLink.closest( 'li, table' )
+                                               .find( '[data-target-page]' ),
+                                       pageTitle = $watchlistLine.data( 'targetPage' ),
+                                       isTalk = mw.Title.newFromText( pageTitle ).getNamespaceId() % 2 === 1;
+
+                               // Utility function for looping through each watchlist line that matches
+                               // a certain page or its associated page (e.g. Talk)
+                               function forEachMatchingTitle( title, callback ) {
+
+                                       var titleObj = mw.Title.newFromText( title ),
+                                               pageNamespaceId = titleObj.getNamespaceId(),
+                                               isTalk = pageNamespaceId % 2 === 1,
+                                               associatedTitle = mw.Title.makeTitle( isTalk ? pageNamespaceId - 1 : pageNamespaceId + 1,
+                                                       titleObj.getMainText() ).getPrefixedText();
+                                       $( '.mw-changeslist-line' ).each( function () {
+                                               var $this = $( this ), $row, $unwatchLink;
+
+                                               $this.find( '[data-target-page]' ).each( function () {
+                                                       var $this = $( this ), rowTitle = $this.data( 'targetPage' );
+                                                       if ( rowTitle === title || rowTitle === associatedTitle ) {
+
+                                                               // EnhancedChangesList groups log entries by performer rather than target page. Therefore...
+                                                               // * If using OldChangesList, use the <li>
+                                                               // * If using EnhancedChangesList and $this is part of a grouped log entry, use the <td> sub-entry
+                                                               // * If using EnhancedChangesList and $this is not part of a grouped log entry, use the <table> grouped entry
+                                                               $row =
+                                                                       $this.closest(
+                                                                               'li, table.mw-collapsible.mw-changeslist-log td[data-target-page], table' );
+                                                               $unwatchLink = $row.find( '.mw-unwatch-link, .mw-watch-link' );
+
+                                                               callback( rowTitle, $row, $unwatchLink );
+                                                       }
+                                               } );
+                                       } );
+                               }
+
+                               // Depending on whether we are watching or unwatching, for each entry of the page (and its associated page i.e. Talk),
+                               // change the text, tooltip, and non-JS href of the (un)watch button, and update the styling of the watchlist entry.
+                               if ( $unwatchLink.hasClass( 'mw-unwatch-link' ) ) {
+                                       api.unwatch( pageTitle )
+                                               .done( function () {
+                                                       forEachMatchingTitle( pageTitle,
+                                                               function ( rowPageTitle, $row, $rowUnwatchLink ) {
+                                                                       $rowUnwatchLink
+                                                                               .text( mw.msg( 'watchlist-unwatch-undo' ) )
+                                                                               .attr( 'title', mw.msg( 'tooltip-ca-watch' ) )
+                                                                               .attr( 'href',
+                                                                                       mw.util.getUrl( rowPageTitle, { action: 'watch' } ) )
+                                                                               .removeClass( 'mw-unwatch-link loading' )
+                                                                               .addClass( 'mw-watch-link' );
+                                                                       $row.find(
+                                                                               '.mw-changeslist-line-inner, .mw-enhanced-rc-nested' )
+                                                                               .addBack( '.mw-enhanced-rc-nested' ) // For matching log sub-entry
+                                                                               .addClass( 'mw-changelist-line-inner-unwatched' );
+                                                               } );
+
+                                                       mw.notify(
+                                                               mw.message( isTalk ? 'removedwatchtext-talk' : 'removedwatchtext',
+                                                                       pageTitle ), { tag: 'watch-self' } );
+                                               } );
+                               } else {
+                                       api.watch( pageTitle )
+                                               .then( function () {
+                                                       forEachMatchingTitle( pageTitle,
+                                                               function ( rowPageTitle, $row, $rowUnwatchLink ) {
+                                                                       $rowUnwatchLink
+                                                                               .text( mw.msg( 'watchlist-unwatch' ) )
+                                                                               .attr( 'title', mw.msg( 'tooltip-ca-unwatch' ) )
+                                                                               .attr( 'href',
+                                                                                       mw.util.getUrl( rowPageTitle, { action: 'unwatch' } ) )
+                                                                               .removeClass( 'mw-watch-link loading' )
+                                                                               .addClass( 'mw-unwatch-link' );
+                                                                       $row.find( '.mw-changelist-line-inner-unwatched' )
+                                                                               .addBack( '.mw-enhanced-rc-nested' )
+                                                                               .removeClass( 'mw-changelist-line-inner-unwatched' );
+                                                               } );
+
+                                                       mw.notify(
+                                                               mw.message( isTalk ? 'addedwatchtext-talk' : 'addedwatchtext',
+                                                                       pageTitle ), { tag: 'watch-self' } );
+                                               } );
+                               }
+
+                               event.preventDefault();
+                               event.stopPropagation();
+                               $unwatchLink.blur();
+                       } );
+               }
        } );
 
-}( mediaWiki, jQuery, OO ) );
+}( mediaWiki, jQuery, OO )
+);
index 9ee499c..d55ed80 100644 (file)
 
        // Expose API publicly
        // @deprecated since MW 1.29
-       mw.log.deprecate( mw, 'toolbar', toolbar );
+       mw.log.deprecate( mw, 'toolbar', toolbar, null, 'mw.toolbar' );
 
        $( function () {
                var i, button;
index d0ec585..34f7eba 100644 (file)
                 */
                rawurlencode: rawurlencode,
 
-               /**
-                * Encode the string like Sanitizer::escapeId() in PHP
-                * @deprecated since 1.30 use escapeIdForAttribute() or escapeIdForLink()
-                *
-                * @param {string} str String to be encoded.
-                * @return {string} Encoded string
-                */
-               escapeId: function ( str ) {
-                       return escapeIdInternal( str, 'legacy' );
-               },
-
                /**
                 * Encode string into HTML id compatible form suitable for use in HTML
                 * Analog to PHP Sanitizer::escapeIdForAttribute()
         * @inheritdoc #getUrl
         * @deprecated since 1.23 Use #getUrl instead.
         */
-       mw.log.deprecate( util, 'wikiGetlink', util.getUrl, 'Use mw.util.getUrl instead.' );
+       mw.log.deprecate( util, 'wikiGetlink', util.getUrl, 'Use mw.util.getUrl instead.', 'mw.util.wikiGetlink' );
 
        /**
         * Add the appropriate prefix to the accesskey shown in the tooltip.
                }
 
                $nodes.updateTooltipAccessKeys();
-       }, 'Use jquery.accessKeyLabel instead.' );
+       }, 'Use jquery.accessKeyLabel instead.', 'mw.util.updateTooltipAccessKeys' );
 
        /**
         * Add a little box at the top of the screen to inform the user of
                }
                mw.notify( message, { autoHide: true, tag: 'legacy' } );
                return true;
-       }, 'Use mw.notify instead.' );
+       }, 'Use mw.notify instead.', 'mw.util.jsMessage' );
+
+       /**
+        * Encode the string like Sanitizer::escapeId() in PHP
+        *
+        * @method escapeId
+        * @deprecated since 1.30 use escapeIdForAttribute() or escapeIdForLink()
+        * @param {string} str String to be encoded.
+        * @return {string} Encoded string
+        */
+       mw.log.deprecate( util, 'escapeId', function ( str ) {
+               return escapeIdInternal( str, 'legacy' );
+       }, 'Use mw.util.escapeIdForAttribute or mw.util.escapeIdForLink instead.', 'mw.util.escapeId' );
 
        /**
         * Initialisation of mw.util.$content
index 9b9ea6d..8f752df 100644 (file)
@@ -158,8 +158,6 @@ $wgAutoloadClasses += [
        'MockImageHandler' => "$testDir/phpunit/mocks/media/MockImageHandler.php",
        'MockSvgHandler' => "$testDir/phpunit/mocks/media/MockSvgHandler.php",
        'MockDjVuHandler' => "$testDir/phpunit/mocks/media/MockDjVuHandler.php",
-       'MockOggHandler' => "$testDir/phpunit/mocks/media/MockOggHandler.php",
-       'MockMediaHandlerFactory' => "$testDir/phpunit/mocks/media/MockMediaHandlerFactory.php",
        'MockChangesListFilter' => "$testDir/phpunit/mocks/MockChangesListFilter.php",
        'MockChangesListFilterGroup' => "$testDir/phpunit/mocks/MockChangesListFilterGroup.php",
        'MockWebRequest' => "$testDir/phpunit/mocks/MockWebRequest.php",
index e578418..1d53344 100644 (file)
@@ -341,8 +341,9 @@ class ParserTestRunner {
                MediaWikiServices::getInstance()->disableService( 'MediaHandlerFactory' );
                MediaWikiServices::getInstance()->redefineService(
                        'MediaHandlerFactory',
-                       function () {
-                               return new MockMediaHandlerFactory();
+                       function ( MediaWikiServices $services ) {
+                               $handlers = $services->getMainConfig()->get( 'ParserTestMediaHandlers' );
+                               return new MediaHandlerFactory( $handlers );
                        }
                );
                $teardown[] = function () {
@@ -477,7 +478,7 @@ class ParserTestRunner {
         * @see staticSetup
         *
         * @param array $teardown The snippet array
-        * @param ScopedCallback|null A ScopedCallback to consume
+        * @param ScopedCallback|null $nextTeardown A ScopedCallback to consume
         * @return ScopedCallback
         */
        protected function createTeardownObject( $teardown, $nextTeardown = null ) {
@@ -1529,7 +1530,7 @@ class ParserTestRunner {
        /**
         * Add articles to the test DB.
         *
-        * @param $articles Article info array from TestFileReader
+        * @param array $articles Article info array from TestFileReader
         */
        public function addArticles( $articles ) {
                global $wgContLang;
index 4afe710..6a1f4b5 100644 (file)
@@ -300,7 +300,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                        'ConfigFactory',
                        self::makeTestConfigFactoryInstantiator(
                                $oldConfigFactory,
-                               [ 'main' =>  $bootstrapConfig ]
+                               [ 'main' => $bootstrapConfig ]
                        )
                );
                $newServices->resetServiceForTesting( 'DBLoadBalancerFactory' );
@@ -1254,7 +1254,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         *
         * @return Database[] Array of Database master connections
         */
-
        protected static function getExternalStoreDatabaseConnections() {
                global $wgDefaultExternalStore;
 
index 9d9815b..bdba6a3 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * @group GlobalFunctions
  * @covers ::wfThumbIsStandard
@@ -92,10 +94,11 @@ class WfThumbIsStandardTest extends MediaWikiTestCase {
         * @dataProvider provideThumbParams
         */
        public function testIsStandard( $message, $expected, $params ) {
-               $this->setService( 'MediaHandlerFactory', new MockMediaHandlerFactory() );
+               $handlers = MediaWikiServices::getInstance()->getMainConfig()->get( 'ParserTestMediaHandlers' );
+               $this->setService( 'MediaHandlerFactory', new MediaHandlerFactory( $handlers ) );
                $this->assertSame(
                        $expected,
-                       wfThumbIsStandard( new FakeDimensionFile( [ 2000, 1800 ] ), $params ),
+                       wfThumbIsStandard( new FakeDimensionFile( [ 2000, 1800 ], 'image/jpeg' ), $params ),
                        $message
                );
        }
index 958d70a..4744875 100644 (file)
@@ -49,7 +49,7 @@ class WatchedItemQueryServiceUnitTest extends PHPUnit_Framework_TestCase {
        }
 
        /**
-        * @param $mockDb
+        * @param PHPUnit_Framework_MockObject_MockObject|Database $mockDb
         * @return PHPUnit_Framework_MockObject_MockObject|LoadBalancer
         */
        private function getMockLoadBalancer( $mockDb ) {
index 6c18599..950e220 100644 (file)
@@ -2030,7 +2030,7 @@ class WatchedItemStoreUnitTest extends MediaWikiTestCase {
        }
 
        /**
-        * @param $text
+        * @param string $text
         * @param int $ns
         *
         * @return PHPUnit_Framework_MockObject_MockObject|Title
index 3b00194..a4b980f 100644 (file)
@@ -282,7 +282,7 @@ class LegacyHookPreAuthenticationProviderTest extends \MediaWikiTestCase {
         * @dataProvider provideTestForAccountCreation
         * @param string $msg
         * @param Status|null $status
-        * @param StatusValue Result
+        * @param StatusValue $result Result
         */
        public function testTestForAccountCreation( $msg, $status, $result ) {
                $this->hook( 'AbortNewAccount', $this->once() )
index 0015453..811c8c2 100644 (file)
@@ -84,7 +84,7 @@ class ChangesListFilterTest extends MediaWikiTestCase {
                        ]
                );
 
-               $groupB =  $this->getGroup(
+               $groupB = $this->getGroup(
                        [
                                'name' => 'groupB',
                                'filters' => [
index 1290c64..420fe74 100644 (file)
@@ -74,6 +74,47 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                $this->assertEquals( '', $html );
        }
 
+       public function testRecentChangesPrefix() {
+               $mockContext = $this->getMockBuilder( RequestContext::class )
+                       ->setMethods( [ 'getTitle' ] )
+                       ->getMock();
+               $mockContext->method( 'getTitle' )
+                       ->will( $this->returnValue( Title::newFromText( 'Expected Context Title' ) ) );
+
+               // One group of two lines
+               $enhancedChangesList = $this->newEnhancedChangesList();
+               $enhancedChangesList->setContext( $mockContext );
+               $enhancedChangesList->setChangeLinePrefixer( function ( $rc, $changesList ) {
+                       // Make sure RecentChange and ChangesList objects are the same
+                       $this->assertEquals( 'Expected Context Title', $changesList->getContext()->getTitle() );
+                       $this->assertTrue( $rc->getTitle() == 'Cat' || $rc->getTitle() == 'Dog' );
+                       return 'Hello world prefix';
+               } );
+               $enhancedChangesList->beginRecentChangesList();
+
+               $recentChange = $this->getEditChange( '20131103092153' );
+               $enhancedChangesList->recentChangesLine( $recentChange );
+               $recentChange = $this->getEditChange( '20131103092154' );
+               $enhancedChangesList->recentChangesLine( $recentChange );
+
+               $html = $enhancedChangesList->endRecentChangesList();
+
+               $this->assertRegExp( '/Hello world prefix/', $html );
+
+               // Two separate lines
+               $enhancedChangesList->beginRecentChangesList();
+
+               $recentChange = $this->getEditChange( '20131103092153' );
+               $enhancedChangesList->recentChangesLine( $recentChange );
+               $recentChange = $this->getEditChange( '20131103092154', 'Dog' );
+               $enhancedChangesList->recentChangesLine( $recentChange );
+
+               $html = $enhancedChangesList->endRecentChangesList();
+
+               preg_match_all( '/Hello world prefix/', $html, $matches );
+               $this->assertCount( 2, $matches[0] );
+       }
+
        public function testCategorizationLineFormatting() {
                $html = $this->createCategorizationLine(
                        $this->getCategorizationChange( '20150629191735', 0, 0 )
@@ -112,12 +153,16 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                preg_match_all( '/td class="mw-enhanced-rc-nested"/', $html, $matches );
                $this->assertCount( 2, $matches[0] );
 
+               preg_match_all( '/data-target-page="Cat"/', $html, $matches );
+               $this->assertCount( 2, $matches[0] );
+
                $recentChange3 = $this->getLogChange();
                $enhancedChangesList->recentChangesLine( $recentChange3, false );
 
                $html = $enhancedChangesList->endRecentChangesList();
                $this->assertContains( 'data-mw-logaction="foo/bar"', $html );
                $this->assertContains( 'data-mw-logid="25"', $html );
+               $this->assertContains( 'data-target-page="Title"', $html );
        }
 
        /**
@@ -133,10 +178,10 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
        /**
         * @return RecentChange
         */
-       private function getEditChange( $timestamp ) {
+       private function getEditChange( $timestamp, $pageTitle = 'Cat' ) {
                $user = $this->getMutableTestUser()->getUser();
                $recentChange = $this->testRecentChangesHelper->makeEditRecentChange(
-                       $user, 'Cat', 0, 5, 191, $timestamp, 0, 0
+                       $user, $pageTitle, 0, 5, 191, $timestamp, 0, 0
                );
 
                return $recentChange;
index 244a05d..91dc731 100644 (file)
@@ -155,6 +155,40 @@ class OldChangesListTest extends MediaWikiLangTestCase {
                $this->assertRegExp( "/watchlist-0-Cat/", $line );
        }
 
+       public function testRecentChangesLine_dataAttribute() {
+               $oldChangesList = $this->getOldChangesList();
+               $oldChangesList->setWatchlistDivs( true );
+
+               $recentChange = $this->getEditChange();
+               $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
+               $this->assertRegExp( '/data-target-page=\"Cat\"/', $line );
+
+               $recentChange = $this->getLogChange( 'delete', 'delete' );
+               $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
+               $this->assertRegExp( '/data-target-page="Abc"/', $line );
+       }
+
+       public function testRecentChangesLine_prefix() {
+               $mockContext = $this->getMockBuilder( RequestContext::class )
+                       ->setMethods( [ 'getTitle' ] )
+                       ->getMock();
+               $mockContext->method( 'getTitle' )
+                       ->will( $this->returnValue( Title::newFromText( 'Expected Context Title' ) ) );
+
+               $oldChangesList = $this->getOldChangesList();
+               $oldChangesList->setContext( $mockContext );
+               $recentChange = $this->getEditChange();
+
+               $oldChangesList->setChangeLinePrefixer( function ( $rc, $changesList ) {
+                       // Make sure RecentChange and ChangesList objects are the same
+                       $this->assertEquals( 'Expected Context Title', $changesList->getContext()->getTitle() );
+                       $this->assertEquals( 'Cat', $rc->getTitle() );
+                       return 'I am a prefix';
+               } );
+               $line = $oldChangesList->recentChangesLine( $recentChange );
+               $this->assertRegExp( "/I am a prefix/", $line );
+       }
+
        private function getNewBotEditChange() {
                $user = $this->getMutableTestUser()->getUser();
 
index 19cffa2..c13cf25 100644 (file)
@@ -90,7 +90,7 @@ class EtcConfigTest extends PHPUnit_Framework_TestCase {
         */
        public function testConstructCacheSpec() {
                $config = $this->createConfigMock( [ 'cache' => [
-                       'class' =>  HashBagOStuff::class
+                       'class' => HashBagOStuff::class
                ] ] );
                $config->expects( $this->once() )->method( 'fetchAllFromEtcd' )
                        ->willReturn( [
index 49907c8..f1b54f6 100644 (file)
@@ -8,7 +8,7 @@ class WikitextStructureTest extends MediaWikiLangTestCase {
 
        /**
         * Get parser output for Wiki text
-        * @param $text
+        * @param string $text
         * @return ParserOutput
         */
        private function getParserOutput( $text ) {
@@ -18,7 +18,7 @@ class WikitextStructureTest extends MediaWikiLangTestCase {
 
        /**
         * Get WikitextStructure for given text
-        * @param $text
+        * @param string $text
         * @return WikiTextStructure
         */
        private function getStructure( $text ) {
index 48310a9..fd3b0b8 100644 (file)
@@ -39,7 +39,7 @@ class ClassicInterwikiLookupTest extends MediaWikiTestCase {
                $lookup = new \MediaWiki\Interwiki\ClassicInterwikiLookup(
                        Language::factory( 'en' ),
                        WANObjectCache::newEmpty(),
-                       60*60,
+                       60 * 60,
                        false,
                        3,
                        'en'
@@ -153,7 +153,7 @@ class ClassicInterwikiLookupTest extends MediaWikiTestCase {
                $lookup = new \MediaWiki\Interwiki\ClassicInterwikiLookup(
                        Language::factory( 'en' ),
                        WANObjectCache::newEmpty(),
-                       60*60,
+                       60 * 60,
                        $cdbFile,
                        3,
                        'en'
@@ -204,7 +204,7 @@ class ClassicInterwikiLookupTest extends MediaWikiTestCase {
                $lookup = new \MediaWiki\Interwiki\ClassicInterwikiLookup(
                        Language::factory( 'en' ),
                        WANObjectCache::newEmpty(),
-                       60*60,
+                       60 * 60,
                        $hash,
                        3,
                        'en'
index 9c4c9be..58a6d38 100644 (file)
@@ -912,7 +912,7 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase {
        /**
         * @dataProvider getWithSetCallback_versions_provider
         * @param array $extOpts
-        * @param $versioned
+        * @param bool $versioned
         */
        public function testGetWithSetCallback_versions( array $extOpts, $versioned ) {
                $cache = $this->cache;
index 4b8f213..81e820e 100644 (file)
@@ -5,12 +5,15 @@
  */
 class FakeDimensionFile extends File {
        public $mustRender = false;
+       public $mime;
+       public $dimensions;
 
-       public function __construct( $dimensions ) {
+       public function __construct( $dimensions, $mime = 'unknown/unknown' ) {
                parent::__construct( Title::makeTitle( NS_FILE, 'Test' ),
                        new NullRepo( null ) );
 
                $this->dimensions = $dimensions;
+               $this->mime = $mime;
        }
 
        public function getWidth( $page = 1 ) {
@@ -28,4 +31,8 @@ class FakeDimensionFile extends File {
        public function getPath() {
                return '';
        }
+
+       public function getMimeType() {
+               return $this->mime;
+       }
 }
index bb7508c..8b4119e 100644 (file)
@@ -18,11 +18,11 @@ class SearchIndexFieldTest extends MediaWikiTestCase {
 
        /**
         * @dataProvider getMergeCases
-        * @param $t1
-        * @param $n1
-        * @param $t2
-        * @param $n2
-        * @param $result
+        * @param int $t1
+        * @param string $n1
+        * @param int $t2
+        * @param string $n2
+        * @param bool $result
         */
        public function testMerge( $t1, $n1, $t2, $n2, $result ) {
                $field1 =
index b0490ec..1c43919 100644 (file)
@@ -41,6 +41,7 @@ class SpecialWatchlistTest extends SpecialPageTestBase {
                                'watchlisthidepatrolled' => 0,
                                'watchlisthidecategorization' => 1,
                                'watchlistreloadautomatically' => 0,
+                               'watchlistunwatchlinks' => 0,
                        ]
                );
        }
diff --git a/tests/phpunit/mocks/media/MockMediaHandlerFactory.php b/tests/phpunit/mocks/media/MockMediaHandlerFactory.php
deleted file mode 100644 (file)
index 54d46b0..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/**
- * Media-handling base classes and generic functionality.
- *
- * 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 Media
- */
-
-/**
- * Replace all media handlers with a mock. We do not need to generate
- * actual thumbnails to do parser testing, we only care about receiving
- * a ThumbnailImage properly initialized.
- *
- * @since 1.28
- */
-class MockMediaHandlerFactory extends MediaHandlerFactory {
-
-       private static $overrides = [
-               'image/svg+xml' => MockSvgHandler::class,
-               'image/vnd.djvu' => MockDjVuHandler::class,
-               'application/ogg' => MockOggHandler::class,
-       ];
-
-       public function __construct() {
-               // override parent
-       }
-
-       protected function getHandlerClass( $type ) {
-               if ( isset( self::$overrides[$type] ) ) {
-                       return self::$overrides[$type];
-               }
-
-               return MockBitmapHandler::class;
-       }
-
-}
diff --git a/tests/phpunit/mocks/media/MockOggHandler.php b/tests/phpunit/mocks/media/MockOggHandler.php
deleted file mode 100644 (file)
index 99992fe..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-<?php
-/**
- * Fake handler for Ogg videos.
- *
- * 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 Media
- */
-
-class MockOggHandler extends OggHandlerTMH {
-       function doTransform( $file, $dstPath, $dstUrl, $params, $flags = 0 ) {
-               # Important or height handling is wrong.
-               if ( !$this->normaliseParams( $file, $params ) ) {
-                       return new TransformParameterError( $params );
-               }
-
-               $srcWidth = $file->getWidth();
-               $srcHeight = $file->getHeight();
-
-               // Audio should not be transformed by size, give it a default width and height
-               if ( $this->isAudio( $file ) ) {
-                       $srcWidth = 220;
-                       $srcHeight = 23;
-               }
-
-               $params['width'] = isset( $params['width'] ) ? $params['width'] : $srcWidth;
-
-               // if height overtakes width use height as max:
-               $targetWidth = $params['width'];
-               $targetHeight = $srcWidth == 0 ? $srcHeight : round( $params['width'] * $srcHeight / $srcWidth );
-               if ( isset( $params['height'] ) && $targetHeight > $params['height'] ) {
-                       $targetHeight = $params['height'];
-                       $targetWidth = round( $params['height'] * $srcWidth / $srcHeight );
-               }
-               $options = [
-                       'file' => $file,
-                       'length' => $this->getLength( $file ),
-                       'offset' => $this->getOffset( $file ),
-                       'width' => $targetWidth,
-                       'height' =>  $targetHeight,
-                       'isVideo' => !$this->isAudio( $file ),
-                       'thumbtime' => isset(
-                               $params['thumbtime']
-                       ) ? $params['thumbtime'] : intval( $file->getLength() / 2 ),
-                       'start' => isset( $params['start'] ) ? $params['start'] : false,
-                       'end' => isset( $params['end'] ) ? $params['end'] : false,
-                       'fillwindow' => isset( $params['fillwindow'] ) ? $params['fillwindow'] : false,
-                       'disablecontrols' => isset ( $params['disablecontrols'] ) ? $params['disablecontrols'] : false
-               ];
-
-               // No thumbs for audio
-               if ( !$options['isVideo'] ) {
-                       return new TimedMediaTransformOutput( $options );
-               }
-
-               // Setup pointer to thumb arguments
-               $options[ 'thumbUrl' ] = $dstUrl;
-               $options[ 'dstPath' ] = $dstPath;
-               $options[ 'path' ] = $dstPath;
-
-               return new TimedMediaTransformOutput( $options );
-       }
-
-       function getLength( $file ) {
-               if ( $this->isAudio( $file ) ) {
-                       return 0.99875;
-               }
-               return 4.3666666666667;
-       }
-
-       function getBitRate( $file ) {
-               if ( $this->isAudio( $file ) ) {
-                       return 41107;
-               }
-               return 590013;
-       }
-
-       function getWebType( $file ) {
-               if ( $this->isAudio( $file ) ) {
-                       return "audio/ogg; codecs=\"vorbis\"";
-               }
-               return "video/ogg; codecs=\"theora\"";
-       }
-
-       function getFramerate( $file ) {
-               if ( $this->isAudio( $file ) ) {
-                       return 0;
-               }
-               return 30;
-       }
-}
index 71cf852..671bdf1 100644 (file)
@@ -42,17 +42,17 @@ mw.loader.implement( 'testUsesNestedMissing', function () {
 }, {}, {});
 ",
 
-       'testSkipped' =>"
+       'testSkipped' => "
 mw.loader.implement( 'testSkipped', function () {
        QUnit.ok( false, 'Module testSkipped was supposed to be skipped.' );
 }, {}, {});
 ",
 
-       'testNotSkipped' =>"
+       'testNotSkipped' => "
 mw.loader.implement( 'testNotSkipped', function () {}, {}, {});
 ",
 
-       'testUsesSkippable' =>"
+       'testUsesSkippable' => "
 mw.loader.implement( 'testUsesSkippable', function () {}, {}, {});
 ",
 ];
index 200395e..257699a 100644 (file)
        parserTest( 'Y Dates', 'date', YDates );
 
        ISODates = [
-               [ '2000',               false, 0, 'Plain 4-digit year' ],
-               [ '2000-01',            false, 0, 'Year with month' ],
-               [ '2000-01-01', true, 946684800000, 'Year with month and day' ],
-               [ '2000-13-01', true, -Infinity, 'Non existant month' ],
-               [ '2000-01-32', true, -Infinity, 'Non existant day' ],
+               [ '2000',               false,  946684800000, 'Plain 4-digit year' ],
+               [ '2000-01',    true,   946684800000, 'Year with month' ],
+               [ '2000-01-01', true,   946684800000, 'Year with month and day' ],
+               [ '2000-13-01', false,  978307200000, 'Non existant month' ],
+               [ '2000-01-32', true,   949363200000, 'Non existant day' ],
+               [ '2000-01-01T12:30:30',        true, 946729830000, 'Date with a time' ],
                [ '2000-01-01T12:30:30Z',       true, 946729830000, 'Date with a UTC+0 time' ],
-               [ '2000-01-01T24:30:30Z',       true, -Infinity, 'Date with invalid hours' ],
-               [ '2000-01-01T12:60:30Z',       true, -Infinity, 'Date with invalid minutes' ],
+               [ '2000-01-01T24:30:30Z',       true, 946773030000, 'Date with invalid hours' ],
+               [ '2000-01-01T12:60:30Z',       true, 946728000000, 'Date with invalid minutes' ],
+               [ '2000-01-01T12:30:61Z',       true, 946729800000, 'Date with invalid amount of seconds, drops seconds' ],
                [ '2000-01-01T23:59:59Z',       true, 946771199000, 'Edges of time' ],
                [ '2000-01-01T12:30:30.111Z',   true, 946729830111, 'Date with milliseconds' ],
                [ '2000-01-01T12:30:30.11111Z', true, 946729830111, 'Date with too high precision' ],
-               [ '2000-01-01T12:30:30,111Z',   true, -Infinity, 'Date with milliseconds and , separator' ],
+               [ '2000-01-01T12:30:30,111Z',   true, 946729830111, 'Date with milliseconds and , separator' ],
                [ '2000-01-01T12:30:30+01:00',  true, 946726230000, 'Date time in UTC+1' ],
                [ '2000-01-01T12:30:30+01:30',  true, 946724430000, 'Date time in UTC+1:30' ],
                [ '2000-01-01T12:30:30-01:00',  true, 946733430000, 'Date time in UTC-1' ],
                [ '2000-01-01T12:30:30-01:30',  true, 946735230000, 'Date time in UTC-1:30' ],
                [ '2000-01-01T12:30:30.111+01:00', true, 946726230111, 'Date time and milliseconds in UTC+1' ],
                [ '2000-01-01Postfix', true, 946684800000, 'Date with appended postfix' ],
-               [ '2000-01-01 Postfix', true, 946684800000, 'Date with separate postfix' ]
-               /* Disable testcases, because behavior is browser dependant */
-               /*
-               [ '2000-11-31', true, 0, '31 days in 30 day month' ],
-               [ '50-01-01',   false, -60589296000000, 'Year with just two digits' ],
-               [ '-1000-01-01',        true, -93724128000000, 'Year BC' ],
-               [ '+1000-01-01',        true, -30610224000000, 'Date with +sign' ],
-               [ '2000-01-01 12:30:30Z',       true, 0, 'Date and time with no T marker' ],
+               [ '2000-01-01 Postfix', true, 946684800000, 'Date with separate postfix' ],
+               [ '2 Postfix',  false, -62104060800000, 'One digit with separate postfix' ],
+               [ 'ca. 2',              false, -62104060800000, 'Three digit with separate prefix' ],
+               [ '~200',               false, -55855785600000, 'Three digit with appended prefix' ],
+               [ 'ca. 200[1]', false, -55855785600000, 'Three digit with separate prefix and postfix' ],
+               [ '2000-11-31', true,   975628800000, '31 days in 30 day month' ],
+               [ '50-01-01',   true,   -60589296000000, 'Year with just two digits' ],
+               [ '2',                  false,  -62104060800000, 'Year with one digit' ],
+               [ '02-01',              true,   -62104060800000, 'Year with one digit and leading zero' ],
+               [ ' 2-01',              true,   -62104060800000, 'Year with one digit and leading space' ],
+               [ '-2-10',              true,   -62206704000000, 'Year BC with month' ],
+               [ '-9999',              false,  -377705116800000, 'max. Year BC' ],
+               [ '+9999-12',   true,   253399622400000, 'max. Date with +sign' ],
+               [ '2000-01-01 12:30:30Z',       true, 946729830000, 'Date and time with no T marker' ],
                [ '2000-01-01T12:30:60Z',       true, 946729860000, 'Date with leap second' ],
-               [ '2000-01-01T12:30:30-24:00',  true, 946816230000, 'Date time in UTC-24' ],
-               [ '2000-01-01T12:30:30+24:00',  true, 946643430000, 'Date time in UTC+24' ],
-               [ '2000-01-01T12:30:30+0100',   true, 946726230000, 'Time without separator in timezone offset' ]
-               // No "Z", uses local timezone:
-               [ '2000-01-01T12:30:30',                true, 946729830000, 'Date with a time' ],
-               [ '2000-01-01T12:30:61Z',       true, 946729800000, 'Date with invalid amount of seconds, drops seconds' ],
-               */
+               [ '2000-01-01T12:30:30-23:59',  true, 946816170000, 'Date time in UTC-23:59' ],
+               [ '2000-01-01T12:30:30+23:59',  true, 946643490000, 'Date time in UTC+23:59' ],
+               [ '2000-01-01T123030+0100',     true,   946726230000, 'Time without separators' ],
+               [ '20000101T123030+0100',       false,  946726230000, 'All without separators' ]
        ];
        parserTest( 'ISO Dates', 'isoDate', ISODates );
 
index c88941e..27d7e8d 100644 (file)
                ],
                isoDateSortingSorted = [
                        [ '2009' ],
-                       [ '2009-12-25T12:30:45' ],
                        [ '2009-12-25T12:30:45+01:00' ],
+                       [ '2009-12-25T12:30:45' ],
                        [ '2009-12-25T12:30:45.001Z' ],
                        [ '2009-12-25T12:30:45.111' ],
                        [ '2010-01-31' ],