Merge "Linker: Do not localize links to other wikis in comments"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 6 Jul 2017 02:08:02 +0000 (02:08 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 6 Jul 2017 02:08:02 +0000 (02:08 +0000)
183 files changed:
.mailmap
RELEASE-NOTES-1.30
composer.json
docs/hooks.txt
includes/Block.php
includes/Category.php
includes/CategoryFinder.php
includes/CategoryViewer.php
includes/DeprecatedGlobal.php
includes/FeedUtils.php
includes/Linker.php
includes/MediaWiki.php
includes/MovePage.php
includes/OutputHandler.php
includes/Preferences.php
includes/Sanitizer.php
includes/Title.php
includes/actions/CreditsAction.php
includes/api/ApiBase.php
includes/api/ApiEditPage.php
includes/api/ApiModuleManager.php
includes/api/ApiQueryBase.php
includes/api/ApiQueryUsers.php
includes/cache/BacklinkCache.php
includes/changes/ChangesListBooleanFilter.php
includes/changes/ChangesListFilter.php
includes/changes/ChangesListFilterGroup.php
includes/changes/ChangesListStringOptionsFilterGroup.php
includes/changes/EnhancedChangesList.php
includes/changes/OldChangesList.php
includes/changetags/ChangeTags.php
includes/changetags/ChangeTagsList.php
includes/changetags/ChangeTagsLogList.php
includes/changetags/ChangeTagsRevisionList.php
includes/content/AbstractContent.php
includes/content/ContentHandler.php
includes/content/WikitextContent.php
includes/debug/logger/monolog/LegacyHandler.php
includes/deferred/SearchUpdate.php
includes/diff/DiffEngine.php
includes/diff/DiffFormatter.php
includes/diff/TableDiffFormatter.php
includes/exception/MWExceptionRenderer.php
includes/export/XmlDumpWriter.php
includes/gallery/PackedOverlayImageGallery.php
includes/import/WikiImporter.php
includes/installer/PostgresUpdater.php
includes/interwiki/InterwikiLookupAdapter.php
includes/libs/CryptRand.php
includes/libs/objectcache/MemcachedClient.php
includes/libs/xmp/XMP.php
includes/media/BitmapMetadataHandler.php
includes/media/Exif.php
includes/media/IPTC.php
includes/media/JpegMetadataExtractor.php
includes/media/MediaHandler.php
includes/media/PNG.php
includes/media/TransformationalImageHandler.php
includes/page/Article.php
includes/page/ImagePage.php
includes/page/WikiPage.php
includes/parser/CoreParserFunctions.php
includes/parser/Parser.php
includes/parser/ParserCache.php
includes/parser/ParserOptions.php
includes/parser/Preprocessor_DOM.php
includes/parser/Preprocessor_Hash.php
includes/resourceloader/ResourceLoaderModule.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/search/SearchDatabase.php
includes/search/SearchEngine.php
includes/search/SearchMssql.php
includes/search/SearchMySQL.php
includes/search/SearchNearMatcher.php
includes/search/SearchOracle.php
includes/search/SearchSqlite.php
includes/site/MediaWikiPageNameNormalizer.php
includes/skins/MediaWikiI18N.php
includes/skins/Skin.php
includes/specialpage/ChangesListSpecialPage.php
includes/specialpage/QueryPage.php
includes/specialpage/SpecialPageFactory.php
includes/specials/SpecialChangeEmail.php
includes/specials/SpecialContributions.php
includes/specials/SpecialExport.php
includes/specials/SpecialMediaStatistics.php
includes/specials/SpecialNewimages.php
includes/specials/SpecialPageData.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialRecentchangeslinked.php
includes/specials/SpecialSearch.php
includes/specials/SpecialSpecialpages.php
includes/specials/SpecialStatistics.php
includes/specials/SpecialTags.php
includes/specials/SpecialUpload.php
includes/specials/SpecialUserrights.php
includes/specials/SpecialWatchlist.php
includes/title/MediaWikiTitleCodec.php
includes/upload/UploadBase.php
includes/user/UserGroupMembership.php
includes/utils/AutoloadGenerator.php
includes/widget/search/InterwikiSearchResultSetWidget.php
includes/widget/search/InterwikiSearchResultWidget.php
languages/Language.php
languages/LanguageConverter.php
languages/classes/LanguageBe_tarask.php
languages/classes/LanguageKk.php
languages/classes/LanguageKu_ku.php
languages/classes/LanguageYue.php
languages/classes/LanguageZh_hans.php
languages/i18n/be-tarask.json
languages/i18n/ca.json
languages/i18n/csb.json
languages/i18n/cv.json
languages/i18n/dty.json
languages/i18n/en.json
languages/i18n/eu.json
languages/i18n/fi.json
languages/i18n/hi.json
languages/i18n/hr.json
languages/i18n/hu.json
languages/i18n/ja.json
languages/i18n/jv.json
languages/i18n/lfn.json
languages/i18n/my.json
languages/i18n/ne.json
languages/i18n/nn.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/roa-tara.json
languages/i18n/sgs.json
languages/i18n/shi.json
languages/i18n/sv.json
languages/i18n/tcy.json
languages/i18n/vi.json
languages/i18n/wa.json
languages/i18n/yi.json
maintenance/checkSyntax.php
maintenance/deleteOldRevisions.php
maintenance/doMaintenance.php
maintenance/dumpTextPass.php
maintenance/importImages.php
maintenance/install.php
maintenance/language/checkDupeMessages.php
maintenance/namespaceDupes.php
maintenance/nukePage.php
maintenance/oracle/alterSharedConstraints.php
maintenance/refreshLinks.php
maintenance/removeUnusedAccounts.php
maintenance/userOptions.inc
mw-config/index.php
phpcs.xml
resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
resources/src/mediawiki/api/upload.js
resources/src/mediawiki/mediawiki.Upload.js
resources/src/mediawiki/page/ready.js
resources/src/mediawiki/page/startup.js
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/includes/GlobalFunctions/GlobalTest.php
tests/phpunit/includes/LinkerTest.php
tests/phpunit/includes/PreferencesTest.php
tests/phpunit/includes/WatchedItemIntegrationTest.php
tests/phpunit/includes/api/generateRandomImages.php
tests/phpunit/includes/api/query/ApiQueryBasicTest.php
tests/phpunit/includes/changes/TestRecentChangesHelper.php
tests/phpunit/includes/import/ImportLinkCacheIntegrationTest.php
tests/phpunit/includes/interwiki/InterwikiLookupAdapterTest.php
tests/phpunit/includes/libs/xmp/XMPTest.php
tests/phpunit/includes/linkeddata/PageDataRequestHandlerTest.php
tests/phpunit/includes/media/GIFMetadataExtractorTest.php
tests/phpunit/includes/parser/ParserOptionsTest.php
tests/phpunit/includes/password/UserPasswordPolicyTest.php
tests/phpunit/includes/search/SearchEngineTest.php
tests/phpunit/includes/specials/SpecialPreferencesTest.php
tests/phpunit/includes/title/ForeignTitleTest.php
tests/phpunit/includes/title/NamespaceAwareForeignTitleFactoryTest.php
tests/phpunit/includes/title/SubpageImportTitleFactoryTest.php
tests/phpunit/includes/utils/MWCryptHKDFTest.php
tests/phpunit/maintenance/DumpTestCase.php
tests/phpunit/maintenance/MaintenanceTest.php
tests/phpunit/maintenance/backupTextPassTest.php
tests/phpunit/maintenance/backup_LogTest.php
tests/qunit/data/testrunner.js

index e649fb1..2134fc5 100644 (file)
--- a/.mailmap
+++ b/.mailmap
@@ -455,9 +455,9 @@ X! <soxred93@gmail.com> <soxred93@users.mediawiki.org>
 Yaron Koren <yaron57@gmail.com>
 Yaron Koren <yaron57@gmail.com> <yaron@users.mediawiki.org>
 Yaroslav Melnychuk <yaroslavmelnuchuk@gmail.com>
-Yongmin Hong <revi@member.fsf.org>
-Yongmin Hong <revi@member.fsf.org> <revi@pobox.com>
-Yongmin Hong <revi@member.fsf.org> <reviwiki@gmail.com>
+Yongmin Hong <revi@pobox.com>
+Yongmin Hong <revi@pobox.com> <revi@member.fsf.org>
+Yongmin Hong <revi@pobox.com> <reviwiki@gmail.com>
 Yuri Astrakhan <yurik@wikimedia.org>
 Yuri Astrakhan <yurik@wikimedia.org> <yuriastrakhan@gmail.com>
 Yuri Astrakhan <yurik@wikimedia.org> <yurik@users.mediawiki.org>
index 260276f..8fc94c5 100644 (file)
@@ -43,7 +43,7 @@ production.
 === External library changes in 1.30 ===
 
 ==== Upgraded external libraries ====
-* 
+* mediawiki/mediawiki-codesniffer updated to 0.8.1.
 
 ==== New external libraries ====
 * The class \TestingAccessWrapper has been moved to the external library
@@ -126,6 +126,7 @@ changes to languages because of Phabricator reports.
   ParserOptions that would pollute the parser cache. Callers should use
   WikiPage::makeParserOptions() to create the ParserOptions object and only
   change options that affect the parser cache key.
+* Article::viewRedirect() is deprecated.
 
 == Compatibility ==
 MediaWiki 1.30 requires PHP 5.5.9 or later. There is experimental support for
index ea15e61..297af77 100644 (file)
@@ -53,7 +53,7 @@
                "jakub-onderka/php-parallel-lint": "0.9.2",
                "jetbrains/phpstorm-stubs": "dev-master#1b9906084d6635456fcf3f3a01f0d7d5b99a578a",
                "justinrainbow/json-schema": "~3.0",
-               "mediawiki/mediawiki-codesniffer": "0.8.0",
+               "mediawiki/mediawiki-codesniffer": "0.8.1",
                "monolog/monolog": "~1.22.1",
                "nikic/php-parser": "2.1.0",
                "nmred/kafka-php": "0.1.5",
index 3d310c3..8485b02 100644 (file)
@@ -74,9 +74,7 @@ Using a hook-running strategy, we can avoid having all this option-specific
 stuff in our mainline code. Using hooks, the function becomes:
 
        function showAnArticle( $article ) {
-
                if ( Hooks::run( 'ArticleShow', array( &$article ) ) ) {
-
                        # code to actually show the article goes here
 
                        Hooks::run( 'ArticleShowComplete', array( &$article ) );
@@ -2659,6 +2657,7 @@ $formData: array of user submitted data
 $form: PreferencesForm object, also a ContextSource
 $user: User object with preferences to be saved set
 &$result: boolean indicating success
+$oldUserOptions: array with user old options (before save)
 
 'PreferencesGetLegend': Override the text used for the <legend> of a
 preferences section.
@@ -3454,6 +3453,14 @@ $title: Title object of the page that we're about to undelete
 $title: title object related to the revision
 $rev: revision (object) that will be viewed
 
+'UnitTestsAfterDatabaseSetup': Called right after MediaWiki's test infrastructure
+has finished creating/duplicating core tables for unit tests.
+$database: Database in question
+$prefix: Table prefix to be used in unit tests
+
+'UnitTestsBeforeDatabaseTeardown': Called right before MediaWiki tears down its
+database infrastructure used for unit tests.
+
 'UnitTestsList': Called when building a list of paths containing PHPUnit tests.
 Since 1.24: Paths pointing to a directory will be recursively scanned for
 test case files matching the suffix "Test.php".
index a7e7308..2c935df 100644 (file)
@@ -829,7 +829,6 @@ class Block {
         * @return bool
         */
        public function deleteIfExpired() {
-
                if ( $this->isExpired() ) {
                        wfDebug( "Block::deleteIfExpired() -- deleting\n" );
                        $this->delete();
@@ -1111,7 +1110,6 @@ class Block {
         *     not be the same as the target you gave if you used $vagueTarget!
         */
        public static function newFromTarget( $specificTarget, $vagueTarget = null, $fromMaster = false ) {
-
                list( $target, $type ) = self::parseTarget( $specificTarget );
                if ( $type == Block::TYPE_ID || $type == Block::TYPE_AUTO ) {
                        return Block::newFromID( $target );
index 5c7cb8d..c22ea64 100644 (file)
@@ -269,7 +269,6 @@ class Category {
         * @return TitleArray TitleArray object for category members.
         */
        public function getMembers( $limit = false, $offset = '' ) {
-
                $dbr = wfGetDB( DB_REPLICA );
 
                $conds = [ 'cl_to' => $this->getName(), 'cl_from = page_id' ];
index 595cf95..89bf5c7 100644 (file)
@@ -186,7 +186,6 @@ class CategoryFinder {
         * Scans a "parent layer" of the articles/categories in $this->next
         */
        private function scanNextLayer() {
-
                # Find all parents of the article currently in $this->next
                $layer = [];
                $res = $this->dbr->select(
index 7086a48..9d692d7 100644 (file)
@@ -108,7 +108,6 @@ class CategoryViewer extends ContextSource {
         * @return string HTML output
         */
        public function getHTML() {
-
                $this->showGallery = $this->getConfig()->get( 'CategoryMagicGallery' )
                        && !$this->getOutput()->mNoGallery;
 
index 14329d3..7c592c6 100644 (file)
@@ -38,7 +38,6 @@ class DeprecatedGlobal extends StubObject {
        // PSR2.Methods.MethodDeclaration.Underscore
        // PSR2.Classes.PropertyDeclaration.ScopeMissing
        function _newObject() {
-
                /* Put the caller offset for wfDeprecated as 6, as
                 * that gives the function that uses this object, since:
                 * 1 = this function ( _newObject )
index 3268291..96a88d3 100644 (file)
@@ -188,7 +188,6 @@ class FeedUtils {
                        }
 
                        if ( $html === null ) {
-
                                // Omit large new page diffs, T31110
                                // Also use diff link for non-textual content
                                $diffText = self::getDiffLink( $title, $newid );
index 9ae7cc6..f2e4ac4 100644 (file)
@@ -1885,7 +1885,6 @@ class Linker {
         * @return string HTML output
         */
        public static function formatHiddenCategories( $hiddencats ) {
-
                $outText = '';
                if ( count( $hiddencats ) > 0 ) {
                        # Construct the HTML
index 9fdc95a..4df4d76 100644 (file)
@@ -821,7 +821,6 @@ class MediaWiki {
 
                        // ATTENTION: This hook is likely to be removed soon due to overall design of the system.
                        if ( Hooks::run( 'BeforeHttpsRedirect', [ $this->context, &$redirUrl ] ) ) {
-
                                if ( $request->wasPosted() ) {
                                        // This is weird and we'd hope it almost never happens. This
                                        // means that a POST came in via HTTP and policy requires us
index ce6ecad..8d0c33d 100644 (file)
@@ -440,8 +440,8 @@ class MovePage {
         * @throws MWException
         */
        private function moveToInternal( User $user, &$nt, $reason = '', $createRedirect = true,
-               array $changeTags = [] ) {
-
+               array $changeTags = []
+       ) {
                global $wgContLang;
                if ( $nt->exists() ) {
                        $moveOverRedirect = true;
index 2f47006..2dc3732 100644 (file)
@@ -183,7 +183,6 @@ function wfDoContentLength( $length ) {
  * @return string
  */
 function wfHtmlValidationHandler( $s ) {
-
        $errors = '';
        if ( MWTidy::checkErrors( $s, $errors ) ) {
                return $s;
index 4017619..008963b 100644 (file)
@@ -1485,6 +1485,8 @@ class Preferences {
                }
 
                if ( $user->isAllowed( 'editmyoptions' ) ) {
+                       $oldUserOptions = $user->getOptions();
+
                        foreach ( self::$saveBlacklist as $b ) {
                                unset( $formData[$b] );
                        }
@@ -1505,7 +1507,10 @@ class Preferences {
                                $user->setOption( $key, $value );
                        }
 
-                       Hooks::run( 'PreferencesFormPreSave', [ $formData, $form, $user, &$result ] );
+                       Hooks::run(
+                               'PreferencesFormPreSave',
+                               [ $formData, $form, $user, &$result, $oldUserOptions ]
+                       );
                }
 
                MediaWiki\Auth\AuthManager::callLegacyAuthPlugin( 'updateExternalDB', [ $user ] );
index 8424432..dd4a314 100644 (file)
@@ -906,7 +906,6 @@ class Sanitizer {
         * @return string normalized css
         */
        public static function normalizeCss( $value ) {
-
                // Decode character references like &#123;
                $value = Sanitizer::decodeCharReferences( $value );
 
index 2ebeb0d..083a725 100644 (file)
@@ -3735,8 +3735,8 @@ class Title implements LinkTarget {
         * @return array|bool True on success, getUserPermissionsErrors()-like array on failure
         */
        public function moveTo( &$nt, $auth = true, $reason = '', $createRedirect = true,
-               array $changeTags = [] ) {
-
+               array $changeTags = []
+       ) {
                global $wgUser;
                $err = $this->isValidMoveOperation( $nt, $auth, $reason );
                if ( is_array( $err ) ) {
@@ -3773,8 +3773,8 @@ class Title implements LinkTarget {
         *     no pages were moved
         */
        public function moveSubpages( $nt, $auth = true, $reason = '', $createRedirect = true,
-               array $changeTags = [] ) {
-
+               array $changeTags = []
+       ) {
                global $wgMaximumMovedPages;
                // Check permissions
                if ( !$this->userCan( 'move-subpages' ) ) {
index 803695a..021f426 100644 (file)
@@ -44,7 +44,6 @@ class CreditsAction extends FormlessAction {
         * @return string HTML
         */
        public function onView() {
-
                if ( $this->page->getID() == 0 ) {
                        $s = $this->msg( 'nocredits' )->parse();
                } else {
index 3a9167f..2dcece1 100644 (file)
@@ -967,7 +967,6 @@ abstract class ApiBase extends ContextSource {
         * @return bool
         */
        protected function getWatchlistValue( $watchlist, $titleObj, $userOption = null ) {
-
                $userWatching = $this->getUser()->isWatched( $titleObj, User::IGNORE_USER_RIGHTS );
 
                switch ( $watchlist ) {
index 0b8156b..2245195 100644 (file)
@@ -64,7 +64,6 @@ class ApiEditPage extends ApiBase {
 
                                /** @var $newTitle Title */
                                foreach ( $titles as $id => $newTitle ) {
-
                                        if ( !isset( $titles[$id - 1] ) ) {
                                                $titles[$id - 1] = $oldTitle;
                                        }
index 42dfb71..b5e47ac 100644 (file)
@@ -97,7 +97,6 @@ class ApiModuleManager extends ContextSource {
         * @param string $group Which group modules belong to (action,format,...)
         */
        public function addModules( array $modules, $group ) {
-
                foreach ( $modules as $name => $moduleSpec ) {
                        if ( is_array( $moduleSpec ) ) {
                                $class = $moduleSpec['class'];
index baefbda..f8eaa84 100644 (file)
@@ -356,7 +356,6 @@ abstract class ApiQueryBase extends ApiBase {
         * @return ResultWrapper
         */
        protected function select( $method, $extraQuery = [], array &$hookData = null ) {
-
                $tables = array_merge(
                        $this->tables,
                        isset( $extraQuery['tables'] ) ? (array)$extraQuery['tables'] : []
index 5b094cd..2a0eadd 100644 (file)
@@ -182,7 +182,6 @@ class ApiQueryUsers extends ApiQueryBase {
                        }
 
                        foreach ( $res as $row ) {
-
                                // create user object and pass along $userGroups if set
                                // that reduces the number of database queries needed in User dramatically
                                if ( !isset( $userGroups ) ) {
index 11f3c2b..4341daa 100644 (file)
@@ -174,7 +174,6 @@ class BacklinkCache {
         * @return ResultWrapper
         */
        protected function queryLinks( $table, $startId, $endId, $max, $select = 'all' ) {
-
                $fromField = $this->getPrefix( $table ) . '_from';
 
                if ( !$startId && !$endId && is_infinite( $max )
index 73c0fb0..930269c 100644 (file)
@@ -184,8 +184,8 @@ class ChangesListBooleanFilter extends ChangesListFilter {
         * @param array &$join_conds Array of join conditions; see IDatabase::select $join_conds
         */
        public function modifyQuery( IDatabase $dbr, ChangesListSpecialPage $specialPage,
-               &$tables, &$fields, &$conds, &$query_options, &$join_conds ) {
-
+               &$tables, &$fields, &$conds, &$query_options, &$join_conds
+       ) {
                if ( $this->queryCallable === null ) {
                        return;
                }
index bd895bb..0b34a5d 100644 (file)
@@ -186,12 +186,8 @@ abstract class ChangesListFilter {
         * @param string $backwardKey i18n key for conflict message in reverse
         *  direction (when in UI context of $other object)
         */
-       public function conflictsWith( $other, $globalKey, $forwardKey,
-               $backwardKey ) {
-
-               if ( $globalKey === null || $forwardKey === null ||
-                       $backwardKey === null ) {
-
+       public function conflictsWith( $other, $globalKey, $forwardKey, $backwardKey ) {
+               if ( $globalKey === null || $forwardKey === null || $backwardKey === null ) {
                        throw new MWException( 'All messages must be specified' );
                }
 
@@ -220,9 +216,7 @@ abstract class ChangesListFilter {
         * @param string $contextDescription i18n key for conflict message in this
         *  direction (when in UI context of $this object)
         */
-       public function setUnidirectionalConflict( $other, $globalDescription,
-               $contextDescription ) {
-
+       public function setUnidirectionalConflict( $other, $globalDescription, $contextDescription ) {
                if ( $other instanceof ChangesListFilterGroup ) {
                        $this->conflictingGroups[] = [
                                'group' => $other->getName(),
index 3555158..0dc1145 100644 (file)
@@ -229,12 +229,8 @@ abstract class ChangesListFilterGroup {
         * @param string $backwardKey i18n key for conflict message in reverse
         *  direction (when in UI context of $other object)
         */
-       public function conflictsWith( $other, $globalKey, $forwardKey,
-               $backwardKey ) {
-
-               if ( $globalKey === null || $forwardKey === null ||
-                       $backwardKey === null ) {
-
+       public function conflictsWith( $other, $globalKey, $forwardKey, $backwardKey ) {
+               if ( $globalKey === null || $forwardKey === null || $backwardKey === null ) {
                        throw new MWException( 'All messages must be specified' );
                }
 
@@ -263,9 +259,7 @@ abstract class ChangesListFilterGroup {
         * @param string $contextDescription i18n key for conflict message in this
         *  direction (when in UI context of $this object)
         */
-       public function setUnidirectionalConflict( $other, $globalDescription,
-               $contextDescription ) {
-
+       public function setUnidirectionalConflict( $other, $globalDescription, $contextDescription ) {
                if ( $other instanceof ChangesListFilterGroup ) {
                        $this->conflictingGroups[] = [
                                'group' => $other->getName(),
index 86b4a8b..487120d 100644 (file)
@@ -185,8 +185,8 @@ class ChangesListStringOptionsFilterGroup extends ChangesListFilterGroup {
         * @param string $value URL parameter value
         */
        public function modifyQuery( IDatabase $dbr, ChangesListSpecialPage $specialPage,
-               &$tables, &$fields, &$conds, &$query_options, &$join_conds, $value ) {
-
+               &$tables, &$fields, &$conds, &$query_options, &$join_conds, $value
+       ) {
                $allowedFilterNames = [];
                foreach ( $this->filters as $filter ) {
                        $allowedFilterNames[] = $filter->getName();
index 64d4aa7..30c6995 100644 (file)
@@ -98,7 +98,6 @@ class EnhancedChangesList extends ChangesList {
         * @return string
         */
        public function recentChangesLine( &$rc, $watched = false, $linenumber = null ) {
-
                $date = $this->getLanguage()->userDate(
                        $rc->mAttribs['rc_timestamp'],
                        $this->getUser()
index 2a53d66..09205bd 100644 (file)
@@ -32,7 +32,6 @@ class OldChangesList extends ChangesList {
         * @return string|bool
         */
        public function recentChangesLine( &$rc, $watched = false, $linenumber = null ) {
-
                $classes = $this->getHTMLClasses( $rc, $watched );
                // use mw-line-even/mw-line-odd class only if linenumber is given (feature from T16468)
                if ( $linenumber ) {
index 6ba9c10..c9b5f96 100644 (file)
@@ -201,7 +201,6 @@ class ChangeTags {
                &$rev_id = null, &$log_id = null, $params = null, RecentChange $rc = null,
                User $user = null
        ) {
-
                $tagsToAdd = array_filter( (array)$tagsToAdd ); // Make sure we're submitting all tags...
                $tagsToRemove = array_filter( (array)$tagsToRemove );
 
@@ -275,8 +274,8 @@ class ChangeTags {
                // update the tag_summary row
                $prevTags = [];
                if ( !self::updateTagSummaryRow( $tagsToAdd, $tagsToRemove, $rc_id, $rev_id,
-                       $log_id, $prevTags ) ) {
-
+                       $log_id, $prevTags )
+               ) {
                        // nothing to do
                        return [ [], [], $prevTags ];
                }
@@ -343,8 +342,8 @@ class ChangeTags {
         * @since 1.25
         */
        protected static function updateTagSummaryRow( &$tagsToAdd, &$tagsToRemove,
-               $rc_id, $rev_id, $log_id, &$prevTags = [] ) {
-
+               $rc_id, $rev_id, $log_id, &$prevTags = []
+       ) {
                $dbw = wfGetDB( DB_MASTER );
 
                $tsConds = array_filter( [
@@ -419,9 +418,7 @@ class ChangeTags {
         * @return Status
         * @since 1.25
         */
-       public static function canAddTagsAccompanyingChange( array $tags,
-               User $user = null ) {
-
+       public static function canAddTagsAccompanyingChange( array $tags, User $user = null ) {
                if ( !is_null( $user ) ) {
                        if ( !$user->isAllowed( 'applychangetags' ) ) {
                                return Status::newFatal( 'tags-apply-no-permission' );
@@ -465,7 +462,6 @@ class ChangeTags {
        public static function addTagsAccompanyingChangeWithChecks(
                array $tags, $rc_id, $rev_id, $log_id, $params, User $user
        ) {
-
                // are we allowed to do this?
                $result = self::canAddTagsAccompanyingChange( $tags, $user );
                if ( !$result->isOK() ) {
@@ -491,8 +487,8 @@ class ChangeTags {
         * @since 1.25
         */
        public static function canUpdateTags( array $tagsToAdd, array $tagsToRemove,
-               User $user = null ) {
-
+               User $user = null
+       ) {
                if ( !is_null( $user ) ) {
                        if ( !$user->isAllowed( 'changetags' ) ) {
                                return Status::newFatal( 'tags-update-no-permission' );
@@ -554,8 +550,8 @@ class ChangeTags {
         * @since 1.25
         */
        public static function updateTagsWithChecks( $tagsToAdd, $tagsToRemove,
-               $rc_id, $rev_id, $log_id, $params, $reason, User $user ) {
-
+               $rc_id, $rev_id, $log_id, $params, $reason, User $user
+       ) {
                if ( is_null( $tagsToAdd ) ) {
                        $tagsToAdd = [];
                }
@@ -792,8 +788,8 @@ class ChangeTags {
         * @since 1.25
         */
        protected static function logTagManagementAction( $action, $tag, $reason,
-               User $user, $tagCount = null, array $logEntryTags = [] ) {
-
+               User $user, $tagCount = null, array $logEntryTags = []
+       ) {
                $dbw = wfGetDB( DB_MASTER );
 
                $logEntry = new ManualLogEntry( 'managetags', $action );
@@ -869,8 +865,8 @@ class ChangeTags {
         * @since 1.25
         */
        public static function activateTagWithChecks( $tag, $reason, User $user,
-               $ignoreWarnings = false, array $logEntryTags = [] ) {
-
+               $ignoreWarnings = false, array $logEntryTags = []
+       ) {
                // are we allowed to do this?
                $result = self::canActivateTag( $tag, $user );
                if ( $ignoreWarnings ? !$result->isOK() : !$result->isGood() ) {
@@ -932,8 +928,8 @@ class ChangeTags {
         * @since 1.25
         */
        public static function deactivateTagWithChecks( $tag, $reason, User $user,
-               $ignoreWarnings = false, array $logEntryTags = [] ) {
-
+               $ignoreWarnings = false, array $logEntryTags = []
+       ) {
                // are we allowed to do this?
                $result = self::canDeactivateTag( $tag, $user );
                if ( $ignoreWarnings ? !$result->isOK() : !$result->isGood() ) {
@@ -1034,8 +1030,8 @@ class ChangeTags {
         * @since 1.25
         */
        public static function createTagWithChecks( $tag, $reason, User $user,
-               $ignoreWarnings = false, array $logEntryTags = [] ) {
-
+               $ignoreWarnings = false, array $logEntryTags = []
+       ) {
                // are we allowed to do this?
                $result = self::canCreateTag( $tag, $user );
                if ( $ignoreWarnings ? !$result->isOK() : !$result->isGood() ) {
@@ -1165,8 +1161,8 @@ class ChangeTags {
         * @since 1.25
         */
        public static function deleteTagWithChecks( $tag, $reason, User $user,
-               $ignoreWarnings = false, array $logEntryTags = [] ) {
-
+               $ignoreWarnings = false, array $logEntryTags = []
+       ) {
                // are we allowed to do this?
                $result = self::canDeleteTag( $tag, $user );
                if ( $ignoreWarnings ? !$result->isOK() : !$result->isGood() ) {
index a37f5f2..afbbb2b 100644 (file)
@@ -39,8 +39,8 @@ abstract class ChangeTagsList extends RevisionListBase {
         * @throws Exception If you give an unknown $typeName
         */
        public static function factory( $typeName, IContextSource $context,
-               Title $title, array $ids ) {
-
+               Title $title, array $ids
+       ) {
                switch ( $typeName ) {
                        case 'revision':
                                $className = 'ChangeTagsRevisionList';
index 271005f..e6d918a 100644 (file)
@@ -71,9 +71,7 @@ class ChangeTagsLogList extends ChangeTagsList {
         * @param User $user
         * @return Status
         */
-       public function updateChangeTagsOnAll( $tagsToAdd, $tagsToRemove, $params,
-               $reason, $user ) {
-
+       public function updateChangeTagsOnAll( $tagsToAdd, $tagsToRemove, $params, $reason, $user ) {
                // @codingStandardsIgnoreStart Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
                for ( $this->reset(); $this->current(); $this->next() ) {
                        // @codingStandardsIgnoreEnd
index a0248c6..91193b0 100644 (file)
@@ -81,9 +81,7 @@ class ChangeTagsRevisionList extends ChangeTagsList {
         * @param User $user
         * @return Status
         */
-       public function updateChangeTagsOnAll( $tagsToAdd, $tagsToRemove, $params,
-               $reason, $user ) {
-
+       public function updateChangeTagsOnAll( $tagsToAdd, $tagsToRemove, $params, $reason, $user ) {
                // @codingStandardsIgnoreStart Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed
                for ( $this->reset(); $this->current(); $this->next() ) {
                        // @codingStandardsIgnoreEnd
index 811b241..1d472e0 100644 (file)
@@ -488,8 +488,8 @@ abstract class AbstractContent implements Content {
                $po = new ParserOutput();
 
                if ( Hooks::run( 'ContentGetParserOutput',
-                       [ $this, $title, $revId, $options, $generateHtml, &$po ] ) ) {
-
+                       [ $this, $title, $revId, $options, $generateHtml, &$po ] )
+               ) {
                        // Save and restore the old value, just in case something is reusing
                        // the ParserOptions object in some weird way.
                        $oldRedir = $options->getRedirectTarget();
index 85894ed..f85b00d 100644 (file)
@@ -619,8 +619,8 @@ abstract class ContentHandler {
         */
        public function createDifferenceEngine( IContextSource $context, $old = 0, $new = 0,
                $rcid = 0, // FIXME: Deprecated, no longer used
-               $refreshCache = false, $unhide = false ) {
-
+               $refreshCache = false, $unhide = false
+       ) {
                // hook: get difference engine
                $differenceEngine = null;
                if ( !Hooks::run( 'GetDifferenceEngine',
index d649baf..942390f 100644 (file)
@@ -68,7 +68,6 @@ class WikitextContent extends TextContent {
         * @see Content::replaceSection()
         */
        public function replaceSection( $sectionId, Content $with, $sectionTitle = '' ) {
-
                $myModelId = $this->getModel();
                $sectionModelId = $with->getModel();
 
index 58fca8e..dbeb136 100644 (file)
@@ -194,7 +194,6 @@ class LegacyHandler extends AbstractProcessingHandler {
 
                $text = (string)$record['formatted'];
                if ( $this->useUdp() ) {
-
                        // Clean it up for the multiplexer
                        if ( $this->prefix !== '' ) {
                                $leader = ( $this->prefix === '{channel}' ) ?
index c94ae2a..b9a259b 100644 (file)
@@ -124,7 +124,7 @@ class SearchUpdate implements DeferrableUpdate {
                # Language-specific strip/conversion
                $text = $wgContLang->normalizeForSearch( $text );
                $se = $se ?: MediaWikiServices::getInstance()->newSearchEngine();
-               $lc = $se->legalSearchCharsForUpdate() . '&#;';
+               $lc = $se->legalSearchChars() . '&#;';
 
                $text = preg_replace( "/<\\/?\\s*[A-Za-z][^>]*?>/",
                        ' ', $wgContLang->lc( " " . $text . " " ) ); # Strip HTML markup
@@ -207,7 +207,7 @@ class SearchUpdate implements DeferrableUpdate {
                $ns = $this->title->getNamespace();
                $title = $this->title->getText();
 
-               $lc = $search->legalSearchCharsForUpdate() . '&#;';
+               $lc = $search->legalSearchChars() . '&#;';
                $t = $wgContLang->normalizeForSearch( $title );
                $t = preg_replace( "/[^{$lc}]+/", ' ', $t );
                $t = $wgContLang->lc( $t );
index 25d50d3..53378e5 100644 (file)
@@ -79,7 +79,6 @@ class DiffEngine {
         * @return DiffOp[]
         */
        public function diff( $from_lines, $to_lines ) {
-
                // Diff and store locally
                $this->diffInternal( $from_lines, $to_lines );
 
index 4b44b3c..6231c78 100644 (file)
@@ -60,7 +60,6 @@ abstract class DiffFormatter {
         * @return string The formatted output.
         */
        public function format( $diff ) {
-
                $xi = $yi = 1;
                $block = false;
                $context = [];
index bcae746..14307b5 100644 (file)
@@ -196,7 +196,6 @@ class TableDiffFormatter extends DiffFormatter {
         * @param string[] $closing
         */
        protected function changed( $orig, $closing ) {
-
                $diff = new WordLevelDiff( $orig, $closing );
                $del = $diff->orig();
                $add = $diff->closing();
index 579b6ca..2eb821a 100644 (file)
@@ -305,7 +305,7 @@ class MWExceptionRenderer {
                if ( $wgShowHostnames || $wgShowSQLErrors ) {
                        $info = str_replace(
                                '$1',
-                               Html::element( 'span', [ 'dir' => 'ltr' ], htmlspecialchars( $e->getMessage() ) ),
+                               Html::element( 'span', [ 'dir' => 'ltr' ], $e->getMessage() ),
                                htmlspecialchars( self::msg( 'dberr-info', '($1)' ) )
                        );
                } else {
index 5a1f92c..943408c 100644 (file)
@@ -199,7 +199,6 @@ class XmlDumpWriter {
         * @access private
         */
        function writeRevision( $row ) {
-
                $out = "    <revision>\n";
                $out .= "      " . Xml::element( 'id', null, strval( $row->rev_id ) ) . "\n";
                if ( isset( $row->rev_parent_id ) && $row->rev_parent_id ) {
@@ -287,7 +286,6 @@ class XmlDumpWriter {
         * @access private
         */
        function writeLogItem( $row ) {
-
                $out = "  <logitem>\n";
                $out .= "    " . Xml::element( 'id', null, strval( $row->log_id ) ) . "\n";
 
index e1ee7fa..db8ce68 100644 (file)
@@ -31,7 +31,6 @@ class PackedOverlayImageGallery extends PackedImageGallery {
         * @return string
         */
        protected function wrapGalleryText( $galleryText, $thumb ) {
-
                // If we have no text, do not output anything to avoid
                // ugly white overlay.
                if ( trim( $galleryText ) === '' ) {
index 2fc9f5e..63258cb 100644 (file)
@@ -394,8 +394,8 @@ class WikiImporter {
         * @return bool
         */
        public function finishImportPage( $title, $foreignTitle, $revCount,
-                       $sRevCount, $pageInfo ) {
-
+               $sRevCount, $pageInfo
+       ) {
                // Update article count statistics (T42009)
                // The normal counting logic in WikiPage->doEditUpdates() is designed for
                // one-revision-at-a-time editing, not bulk imports. In this situation it
@@ -691,7 +691,6 @@ class WikiImporter {
         * @return bool|mixed
         */
        private function processLogItem( $logInfo ) {
-
                $revision = new WikiRevision( $this->config );
 
                if ( isset( $logInfo['id'] ) ) {
index 39cb89c..0172f1a 100644 (file)
@@ -751,7 +751,6 @@ END;
        }
 
        protected function setDefault( $table, $field, $default ) {
-
                $info = $this->db->fieldInfo( $table, $field );
                if ( $info->defaultValue() !== $default ) {
                        $this->output( "Changing '$table.$field' default value\n" );
index 3baea1a..076c37f 100644 (file)
@@ -60,7 +60,6 @@ class InterwikiLookupAdapter implements InterwikiLookup {
         * @return bool Whether it exists
         */
        public function isValidInterwiki( $prefix ) {
-
                return array_key_exists( $prefix, $this->getInterwikiMap() );
        }
 
index 4b4a913..859d58b 100644 (file)
@@ -234,7 +234,6 @@ class CryptRand {
         * @return string Raw binary random data
         */
        public function generate( $bytes, $forceStrong = false ) {
-
                $bytes = floor( $bytes );
                static $buffer = '';
                if ( is_null( $this->strong ) ) {
index a94f86a..5cb49a9 100644 (file)
@@ -469,7 +469,6 @@ class MemcachedClient {
         * @return mixed
         */
        public function get( $key, &$casToken = null ) {
-
                if ( $this->_debug ) {
                        $this->_debugprint( "get($key)" );
                }
index 9d886bf..debe869 100644 (file)
@@ -135,7 +135,6 @@ class XMPReader implements LoggerAwareInterface {
         * Primary job is to initialize the XMLParser
         */
        function __construct( LoggerInterface $logger = null ) {
-
                if ( !function_exists( 'xml_parser_create_ns' ) ) {
                        // this should already be checked by this point
                        throw new RuntimeException( 'XMP support requires XML Parser' );
@@ -174,7 +173,6 @@ class XMPReader implements LoggerAwareInterface {
         * For example in jpeg's with extendedXMP
         */
        private function resetXMLParser() {
-
                $this->destroyXMLParser();
 
                $this->xmlParser = xml_parser_create_ns( 'UTF-8', ' ' );
@@ -495,7 +493,6 @@ class XMPReader implements LoggerAwareInterface {
         * @throws RuntimeException On invalid data
         */
        function char( $parser, $data ) {
-
                $data = trim( $data );
                if ( trim( $data ) === "" ) {
                        return;
@@ -644,7 +641,6 @@ class XMPReader implements LoggerAwareInterface {
         * @throws RuntimeException
         */
        private function endElementNested( $elm ) {
-
                /* cur item must be the same as $elm, unless if in MODE_STRUCT
                 * in which case it could also be rdf:Description */
                if ( $this->curItem[0] !== $elm
@@ -754,7 +750,6 @@ class XMPReader implements LoggerAwareInterface {
         * @param string $elm Namespace and element
         */
        private function endElementModeQDesc( $elm ) {
-
                if ( $elm === self::NS_RDF . ' value' ) {
                        list( $ns, $tag ) = explode( ' ', $this->curItem[0], 2 );
                        $this->saveValue( $ns, $tag, $this->charContent );
@@ -1191,7 +1186,6 @@ class XMPReader implements LoggerAwareInterface {
         * @throws RuntimeException
         */
        function startElement( $parser, $elm, $attribs ) {
-
                if ( $elm === self::NS_RDF . ' RDF'
                        || $elm === 'adobe:ns:meta/ xmpmeta'
                        || $elm === 'adobe:ns:meta/ xapmeta'
@@ -1332,7 +1326,6 @@ class XMPReader implements LoggerAwareInterface {
         * @param string $val Value to save
         */
        private function saveValue( $ns, $tag, $val ) {
-
                $info =& $this->items[$ns][$tag];
                $finalName = isset( $info['map_name'] )
                        ? $info['map_name'] : $tag;
index c5f9cbb..35c9751 100644 (file)
@@ -230,7 +230,6 @@ class BitmapMetadataHandler {
         * @return array Metadata array
         */
        public static function GIF( $filename ) {
-
                $meta = new self();
                $baseArray = GIFMetadataExtractor::getMetadata( $filename );
 
index 95fa859..9bfbc96 100644 (file)
@@ -362,7 +362,6 @@ class Exif {
         * if we make up our own types like Exif::DATE.
         */
        function collapseData() {
-
                $this->exifGPStoNumber( 'GPSLatitude' );
                $this->exifGPStoNumber( 'GPSDestLatitude' );
                $this->exifGPStoNumber( 'GPSLongitude' );
@@ -446,7 +445,6 @@ class Exif {
         */
        private function charCodeString( $prop ) {
                if ( isset( $this->mFilteredExifData[$prop] ) ) {
-
                        if ( strlen( $this->mFilteredExifData[$prop] ) <= 8 ) {
                                // invalid. Must be at least 9 bytes long.
 
index b7ebfc9..343adc2 100644 (file)
@@ -476,7 +476,6 @@ class IPTC {
         * only code that seems to have wide use. It does detect that code.
         */
        static function getCharset( $tag ) {
-
                // According to iim standard, charset is defined by the tag 1:90.
                // in which there are iso 2022 escape sequences to specify the character set.
                // the iim standard seems to encourage that all necessary escape sequences are
index 67c957a..211845c 100644 (file)
@@ -94,7 +94,6 @@ class JpegMetadataExtractor {
                                $buffer = fread( $fh, 1 );
                        }
                        if ( $buffer === "\xFE" ) {
-
                                // COM section -- file comment
                                // First see if valid utf-8,
                                // if not try to convert it to windows-1252.
index 8896264..76c979e 100644 (file)
@@ -157,7 +157,6 @@ abstract class MediaHandler {
         */
        function convertMetadataVersion( $metadata, $version = 1 ) {
                if ( !is_array( $metadata ) ) {
-
                        // unserialize to keep return parameter consistent.
                        MediaWiki\suppressWarnings();
                        $ret = unserialize( $metadata );
index 294abb3..b6288bc 100644 (file)
@@ -112,7 +112,6 @@ class PNGHandler extends BitmapHandler {
        }
 
        function isMetadataValid( $image, $metadata ) {
-
                if ( $metadata === self::BROKEN_FILE ) {
                        // Do not repetitivly regenerate metadata on broken file.
                        return self::METADATA_GOOD;
index 2a74e0d..742a5b7 100644 (file)
@@ -156,7 +156,6 @@ abstract class TransformationalImageHandler extends ImageHandler {
                        && $scalerParams['physicalHeight'] == $scalerParams['srcHeight']
                        && !isset( $scalerParams['quality'] )
                ) {
-
                        # normaliseParams (or the user) wants us to return the unscaled image
                        wfDebug( __METHOD__ . ": returning unscaled image\n" );
 
index dd54232..dc4096c 100644 (file)
@@ -214,7 +214,6 @@ class Article implements Page {
         * @since 1.21
         */
        protected function getContentObject() {
-
                if ( $this->mPage->getId() === 0 ) {
                        # If this is a MediaWiki:x message, then load the messages
                        # and return the message value for x.
@@ -569,8 +568,8 @@ class Article implements Page {
                                        $outputPage->setRevisionTimestamp( $this->mPage->getTimestamp() );
 
                                        if ( !Hooks::run( 'ArticleContentViewCustom',
-                                                       [ $this->fetchContentObject(), $this->getTitle(), $outputPage ] ) ) {
-
+                                               [ $this->fetchContentObject(), $this->getTitle(), $outputPage ] )
+                                       ) {
                                                # Allow extensions do their own custom view for certain pages
                                                $outputDone = true;
                                        }
@@ -1434,6 +1433,8 @@ class Article implements Page {
         * @param bool $appendSubtitle [optional]
         * @param bool $forceKnown Should the image be shown as a bluelink regardless of existence?
         * @return string Containing HTML with redirect link
+        *
+        * @deprecated since 1.30
         */
        public function viewRedirect( $target, $appendSubtitle = true, $forceKnown = false ) {
                $lang = $this->getTitle()->getPageLanguage();
index 6a751ac..d37700b 100644 (file)
@@ -115,23 +115,11 @@ class ImagePage extends Article {
 
                if ( $this->getTitle()->getNamespace() == NS_FILE && $this->mPage->getFile()->getRedirected() ) {
                        if ( $this->getTitle()->getDBkey() == $this->mPage->getFile()->getName() || $diff !== null ) {
-                               // mTitle is the same as the redirect target so ask Article
-                               // to perform the redirect for us.
                                $request->setVal( 'diffonly', 'true' );
-                               parent::view();
-                               return;
-                       } else {
-                               // mTitle is not the same as the redirect target so it is
-                               // probably the redirect page itself. Fake the redirect symbol
-                               $out->setPageTitle( $this->getTitle()->getPrefixedText() );
-                               $out->addHTML( $this->viewRedirect(
-                                       Title::makeTitle( NS_FILE, $this->mPage->getFile()->getName() ),
-                                       /* $appendSubtitle */ true,
-                                       /* $forceKnown */ true )
-                               );
-                               $this->mPage->doViewUpdates( $this->getContext()->getUser(), $this->getOldID() );
-                               return;
                        }
+
+                       parent::view();
+                       return;
                }
 
                if ( $wgShowEXIF && $this->displayImg->exists() ) {
index 5c7c7fe..3ba2d2e 100644 (file)
@@ -1314,7 +1314,6 @@ class WikiPage implements Page, IDBAccessObject {
         * @return bool
         */
        public function updateIfNewerOn( $dbw, $revision ) {
-
                $row = $dbw->selectRow(
                        [ 'revision', 'page' ],
                        [ 'rev_id', 'rev_timestamp', 'page_is_redirect' ],
@@ -1386,7 +1385,6 @@ class WikiPage implements Page, IDBAccessObject {
        public function replaceSectionContent(
                $sectionId, Content $sectionContent, $sectionTitle = '', $edittime = null
        ) {
-
                $baseRevId = null;
                if ( $edittime && $sectionId !== 'new' ) {
                        $dbr = wfGetDB( DB_REPLICA );
@@ -1425,7 +1423,6 @@ class WikiPage implements Page, IDBAccessObject {
        public function replaceSectionAtRev( $sectionId, Content $sectionContent,
                $sectionTitle = '', $baseRevId = null
        ) {
-
                if ( strval( $sectionId ) === '' ) {
                        // Whole-page edit; let the whole text through
                        $newContent = $sectionContent;
index e34d10b..f0f1f5f 100644 (file)
@@ -174,7 +174,6 @@ class CoreParserFunctions {
                        $magicWords = new MagicWordArray( [ 'url_path', 'url_query', 'url_wiki' ] );
                }
                switch ( $magicWords->matchStartToEnd( $arg ) ) {
-
                        // Encode as though it's a wiki page, '_' for ' '.
                        case 'url_wiki':
                                $func = 'wfUrlencode';
index b0d0e5c..9ea65e0 100644 (file)
@@ -1075,7 +1075,6 @@ class Parser {
         * @return string
         */
        public function doTableStuff( $text ) {
-
                $lines = StringUtils::explode( "\n", $text );
                $out = '';
                $td_history = []; # Is currently a td tag open?
@@ -1279,7 +1278,6 @@ class Parser {
         * @return string
         */
        public function internalParse( $text, $isMain = true, $frame = false ) {
-
                $origText = $text;
 
                // Avoid PHP 7.1 warning from passing $this by reference
@@ -1855,7 +1853,6 @@ class Parser {
         * @return string
         */
        public function replaceExternalLinks( $text ) {
-
                $bits = preg_split( $this->mExtLinkBracketedRegex, $text, -1, PREG_SPLIT_DELIM_CAPTURE );
                if ( $bits === false ) {
                        throw new MWException( "PCRE needs to be compiled with "
@@ -3031,7 +3028,6 @@ class Parser {
         * @return string The text of the template
         */
        public function braceSubstitution( $piece, $frame ) {
-
                // Flags
 
                // $text has been filled
@@ -3786,7 +3782,6 @@ class Parser {
         * @return array
         */
        public function argSubstitution( $piece, $frame ) {
-
                $error = false;
                $parts = $piece['parts'];
                $nameWithSpaces = $frame->expand( $piece['title'] );
@@ -3967,7 +3962,6 @@ class Parser {
         * @return string
         */
        public function doDoubleUnderscore( $text ) {
-
                # The position of __TOC__ needs to be recorded
                $mw = MagicWord::get( 'toc' );
                if ( $mw->match( $text ) ) {
@@ -4948,7 +4942,6 @@ class Parser {
         * @return string HTML
         */
        public function renderImageGallery( $text, $params ) {
-
                $mode = false;
                if ( isset( $params['mode'] ) ) {
                        $mode = $params['mode'];
index 76a7e1e..3b84c4b 100644 (file)
  * @todo document
  */
 class ParserCache {
+       /**
+        * Constants for self::getKey()
+        * @since 1.30
+        */
+
+       /** Use only current data */
+       const USE_CURRENT_ONLY = 0;
+
+       /** Use expired data if current data is unavailable */
+       const USE_EXPIRED = 1;
+
+       /** Use expired data or data from different revisions if current data is unavailable */
+       const USE_OUTDATED = 2;
+
+       /**
+        * Use expired data and data from different revisions, and if all else
+        * fails vary on all variable options
+        */
+       const USE_ANYTHING = 3;
+
        /** @var BagOStuff */
        private $mMemc;
        /**
@@ -103,7 +123,7 @@ class ParserCache {
         */
        public function getETag( $article, $popts ) {
                return 'W/"' . $this->getParserOutputKey( $article,
-                       $popts->optionsHash( ParserOptions::legacyOptions(), $article->getTitle() ) ) .
+                       $popts->optionsHash( ParserOptions::allCacheVaryingOptions(), $article->getTitle() ) ) .
                                "--" . $article->getTouched() . '"';
        }
 
@@ -130,16 +150,21 @@ class ParserCache {
         * It would be preferable to have this code in get()
         * instead of having Article looking in our internals.
         *
-        * @todo Document parameter $useOutdated
-        *
         * @param WikiPage $article
         * @param ParserOptions $popts
-        * @param bool $useOutdated (default true)
+        * @param int|bool $useOutdated One of the USE constants. For backwards
+        *  compatibility, boolean false is treated as USE_CURRENT_ONLY and
+        *  boolean true is treated as USE_ANYTHING.
         * @return bool|mixed|string
+        * @since 1.30 Changed $useOutdated to an int and added the non-boolean values
         */
-       public function getKey( $article, $popts, $useOutdated = true ) {
+       public function getKey( $article, $popts, $useOutdated = self::USE_ANYTHING ) {
                global $wgCacheEpoch;
 
+               if ( is_bool( $useOutdated ) ) {
+                       $useOutdated = $useOutdated ? self::USE_ANYTHING : self::USE_CURRENT_ONLY;
+               }
+
                if ( $popts instanceof User ) {
                        wfWarn( "Use of outdated prototype ParserCache::getKey( &\$article, &\$user )\n" );
                        $popts = ParserOptions::newFromUser( $popts );
@@ -150,14 +175,16 @@ class ParserCache {
                $optionsKey = $this->mMemc->get(
                        $this->getOptionsKey( $article ), $casToken, BagOStuff::READ_VERIFIED );
                if ( $optionsKey instanceof CacheTime ) {
-                       if ( !$useOutdated && $optionsKey->expired( $article->getTouched() ) ) {
+                       if ( $useOutdated < self::USE_EXPIRED && $optionsKey->expired( $article->getTouched() ) ) {
                                wfIncrStats( "pcache.miss.expired" );
                                $cacheTime = $optionsKey->getCacheTime();
                                wfDebugLog( "ParserCache",
                                        "Parser options key expired, touched " . $article->getTouched()
                                        . ", epoch $wgCacheEpoch, cached $cacheTime\n" );
                                return false;
-                       } elseif ( !$useOutdated && $optionsKey->isDifferentRevision( $article->getLatest() ) ) {
+                       } elseif ( $useOutdated < self::USE_OUTDATED &&
+                               $optionsKey->isDifferentRevision( $article->getLatest() )
+                       ) {
                                wfIncrStats( "pcache.miss.revid" );
                                $revId = $article->getLatest();
                                $cachedRevId = $optionsKey->getCacheRevisionId();
@@ -171,10 +198,10 @@ class ParserCache {
                        $usedOptions = $optionsKey->mUsedOptions;
                        wfDebug( "Parser cache options found.\n" );
                } else {
-                       if ( !$useOutdated ) {
+                       if ( $useOutdated < self::USE_ANYTHING ) {
                                return false;
                        }
-                       $usedOptions = ParserOptions::legacyOptions();
+                       $usedOptions = ParserOptions::allCacheVaryingOptions();
                }
 
                return $this->getParserOutputKey(
@@ -204,7 +231,9 @@ class ParserCache {
 
                $touched = $article->getTouched();
 
-               $parserOutputKey = $this->getKey( $article, $popts, $useOutdated );
+               $parserOutputKey = $this->getKey( $article, $popts,
+                       $useOutdated ? self::USE_OUTDATED : self::USE_CURRENT_ONLY
+               );
                if ( $parserOutputKey === false ) {
                        wfIncrStats( 'pcache.miss.absent' );
                        return false;
index 4809917..96a4368 100644 (file)
@@ -1211,10 +1211,11 @@ class ParserOptions {
         * Returns the full array of options that would have been used by
         * in 1.16.
         * Used to get the old parser cache entries when available.
-        * @todo 1.16 was years ago, can we remove this?
+        * @deprecated since 1.30. You probably want self::allCacheVaryingOptions() instead.
         * @return array
         */
        public static function legacyOptions() {
+               wfDeprecated( __METHOD__, '1.30' );
                return [
                        'stubthreshold',
                        'numberheadings',
@@ -1225,6 +1226,20 @@ class ParserOptions {
                ];
        }
 
+       /**
+        * Return all option keys that vary the options hash
+        * @since 1.30
+        * @return string[]
+        */
+       public static function allCacheVaryingOptions() {
+               // Trigger a call to the 'ParserOptionsRegister' hook if it hasn't
+               // already been called.
+               if ( self::$defaults === null ) {
+                       self::getDefaults();
+               }
+               return array_keys( array_filter( self::$inCacheKey ) );
+       }
+
        /**
         * Convert an option to a string value
         * @param mixed $value
index 7539307..3c750ad 100644 (file)
@@ -148,7 +148,6 @@ class Preprocessor_DOM extends Preprocessor {
         * @return PPNode_DOM
         */
        public function preprocessToObj( $text, $flags = 0 ) {
-
                $xml = $this->cacheGetTree( $text, $flags );
                if ( $xml === false ) {
                        $xml = $this->preprocessToXml( $text, $flags );
@@ -373,7 +372,6 @@ class Preprocessor_DOM extends Preprocessor {
                                }
                                // Handle comments
                                if ( isset( $matches[2] ) && $matches[2] == '!--' ) {
-
                                        // To avoid leaving blank lines, when a sequence of
                                        // space-separated comments is both preceded and followed by
                                        // a newline (ignoring spaces), then
index 597d1f2..25d253f 100644 (file)
@@ -304,7 +304,6 @@ class Preprocessor_Hash extends Preprocessor {
                                }
                                // Handle comments
                                if ( isset( $matches[2] ) && $matches[2] == '!--' ) {
-
                                        // To avoid leaving blank lines, when a sequence of
                                        // space-separated comments is both preceded and followed by
                                        // a newline (ignoring spaces), then
index 743b69b..1c767fa 100644 (file)
@@ -461,7 +461,6 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface {
         * @param array $localFileRefs List of files
         */
        protected function saveFileDependencies( ResourceLoaderContext $context, $localFileRefs ) {
-
                try {
                        // Related bugs and performance considerations:
                        // 1. Don't needlessly change the database value with the same list in a
@@ -757,7 +756,6 @@ abstract class ResourceLoaderModule implements LoggerAwareInterface {
                // (e.g. startup module) iterate more than once over all modules to get versions.
                $contextHash = $context->getHash();
                if ( !array_key_exists( $contextHash, $this->versionHash ) ) {
-
                        if ( $this->enableModuleContentVersion() ) {
                                // Detect changes directly
                                $str = json_encode( $this->getModuleContent( $context ) );
index d92dc0a..8973fe3 100644 (file)
@@ -33,7 +33,6 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
         * @return array
         */
        protected function getConfigSettings( $context ) {
-
                $hash = $context->getHash();
                if ( isset( $this->configVars[$hash] ) ) {
                        return $this->configVars[$hash];
@@ -135,7 +134,6 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                // The list of implicit dependencies won't be altered, so we can
                // cache them without having to worry.
                if ( !isset( $dependencyCache[$moduleName] ) ) {
-
                        if ( !isset( $registryData[$moduleName] ) ) {
                                // Dependencies may not exist
                                $dependencyCache[$moduleName] = [];
index d51e525..1d7a4a3 100644 (file)
@@ -53,7 +53,10 @@ class SearchDatabase extends SearchEngine {
         * @return string
         */
        protected function filter( $text ) {
-               $lc = $this->legalSearchChars();
+               // List of chars allowed in the search query.
+               // This must include chars used in the search syntax.
+               // Usually " (phrase) or * (wildcards) if supported by the engine
+               $lc = $this->legalSearchChars( self::CHARS_ALL );
                return trim( preg_replace( "/[^{$lc}]/", " ", $text ) );
        }
 }
index 7d05265..70117db 100644 (file)
@@ -60,6 +60,12 @@ abstract class SearchEngine {
        /** @const string profile type for query independent ranking features */
        const FT_QUERY_INDEP_PROFILE_TYPE = 'fulltextQueryIndepProfile';
 
+       /** @const int flag for legalSearchChars: includes all chars allowed in a search query */
+       const CHARS_ALL = 1;
+
+       /** @const int flag for legalSearchChars: includes all chars allowed in a search term */
+       const CHARS_NO_SYNTAX = 2;
+
        /**
         * Perform a full text search query and return a result set.
         * If full text searches are not supported or disabled, return null.
@@ -206,24 +212,16 @@ abstract class SearchEngine {
        }
 
        /**
-        * Get chars legal for search (at query time).
+        * Get chars legal for search
         * NOTE: usage as static is deprecated and preserved only as BC measure
+        * @param int $type type of search chars (see self::CHARS_ALL
+        * and self::CHARS_NO_SYNTAX). Defaults to CHARS_ALL
         * @return string
         */
-       public static function legalSearchChars() {
+       public static function legalSearchChars( $type = self::CHARS_ALL ) {
                return "A-Za-z_'.0-9\\x80-\\xFF\\-";
        }
 
-       /**
-        * Get chars legal for search (at index time).
-        *
-        * @since 1.30
-        * @return string
-        */
-       public function legalSearchCharsForUpdate() {
-               return static::legalSearchChars();
-       }
-
        /**
         * Set the maximum number of results to return
         * and how many to skip before returning the first.
index 5e8fb04..57ca06e 100644 (file)
@@ -136,7 +136,7 @@ class SearchMssql extends SearchDatabase {
         */
        function parseQuery( $filteredText, $fulltext ) {
                global $wgContLang;
-               $lc = $this->legalSearchChars();
+               $lc = $this->legalSearchChars( self::CHARS_NO_SYNTAX );
                $this->searchTerms = [];
 
                # @todo FIXME: This doesn't handle parenthetical expressions.
index 2c7feeb..2ea9605 100644 (file)
@@ -45,7 +45,7 @@ class SearchMySQL extends SearchDatabase {
        function parseQuery( $filteredText, $fulltext ) {
                global $wgContLang;
 
-               $lc = $this->legalSearchChars(); // Minus format chars
+               $lc = $this->legalSearchChars( self::CHARS_NO_SYNTAX ); // Minus syntax chars (" and *)
                $searchon = '';
                $this->searchTerms = [];
 
@@ -149,8 +149,13 @@ class SearchMySQL extends SearchDatabase {
                return $regex;
        }
 
-       public function legalSearchCharsForUpdate() {
-               return "\"*" . parent::legalSearchCharsForUpdate();
+       public static function legalSearchChars( $type = self::CHARS_ALL ) {
+               $searchChars = parent::legalSearchChars( $type );
+               if ( $type === self::CHARS_ALL ) {
+                       // " for phrase, * for wildcard
+                       $searchChars = "\"*" . $searchChars;
+               }
+               return $searchChars;
        }
 
        /**
index 0400021..8e86865 100644 (file)
@@ -70,7 +70,6 @@ class SearchNearMatcher {
                }
 
                foreach ( $allSearchTerms as $term ) {
-
                        # Exact match? No need to look further.
                        $title = Title::newFromText( $term );
                        if ( is_null( $title ) ) {
index 2e6cb84..8bcd78f 100644 (file)
@@ -174,7 +174,7 @@ class SearchOracle extends SearchDatabase {
         */
        function parseQuery( $filteredText, $fulltext ) {
                global $wgContLang;
-               $lc = $this->legalSearchChars();
+               $lc = $this->legalSearchChars( self::CHARS_NO_SYNTAX );
                $this->searchTerms = [];
 
                # @todo FIXME: This doesn't handle parenthetical expressions.
@@ -266,7 +266,11 @@ class SearchOracle extends SearchDatabase {
                        [] );
        }
 
-       public function legalSearchCharsForUpdate() {
-               return "\"" . parent::legalSearchCharsForUpdate();
+       public static function legalSearchChars( $type = self::CHARS_ALL ) {
+               $searchChars = parent::legalSearchChars( $type );
+               if ( $type === self::CHARS_ALL ) {
+                       $searchChars = "\"" . $searchChars;
+               }
+               return $searchChars;
        }
 }
index 5a8995d..2c82c7d 100644 (file)
@@ -44,7 +44,7 @@ class SearchSqlite extends SearchDatabase {
         */
        function parseQuery( $filteredText, $fulltext ) {
                global $wgContLang;
-               $lc = $this->legalSearchChars(); // Minus format chars
+               $lc = $this->legalSearchChars( self::CHARS_NO_SYNTAX ); // Minus syntax chars (" and *)
                $searchon = '';
                $this->searchTerms = [];
 
@@ -141,8 +141,13 @@ class SearchSqlite extends SearchDatabase {
                return $regex;
        }
 
-       public function legalSearchCharsForUpdate() {
-               return "\"*" . parent::legalSearchCharsForUpdate();
+       public static function legalSearchChars( $type = self::CHARS_ALL ) {
+               $searchChars = parent::legalSearchChars( $type );
+               if ( $type === self::CHARS_ALL ) {
+                       // " for phrase, * for wildcard
+                       $searchChars =  "\"*" . $searchChars;
+               }
+               return $searchChars;
        }
 
        /**
index 1a079b4..c4e490a 100644 (file)
@@ -69,7 +69,6 @@ class MediaWikiPageNameNormalizer {
         * @throws \MWException
         */
        public function normalizePageName( $pageName, $apiUrl ) {
-
                // Check if we have strings as arguments.
                if ( !is_string( $pageName ) ) {
                        throw new \MWException( '$pageName must be a string' );
index 02e8391..7fcdb3c 100644 (file)
@@ -33,7 +33,6 @@ class MediaWikiI18N {
        }
 
        function translate( $value ) {
-
                // Hack for i18n:attributes in PHPTAL 1.0.0 dev version as of 2004-10-23
                $value = preg_replace( '/^string:/', '', $value );
 
index e9d2f07..a8f9d0c 100644 (file)
@@ -20,6 +20,8 @@
  * @file
  */
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * @defgroup Skins Skins
  */
@@ -1259,7 +1261,7 @@ abstract class Skin extends ContextSource {
                };
 
                if ( $wgEnableSidebarCache ) {
-                       $cache = ObjectCache::getMainWANInstance();
+                       $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
                        $sidebar = $cache->getWithSetCallback(
                                $cache->makeKey( 'sidebar', $this->getLanguage()->getCode() ),
                                MessageCache::singleton()->isDisabled()
@@ -1391,7 +1393,6 @@ abstract class Skin extends ContextSource {
         * @return string
         */
        function getNewtalks() {
-
                $newMessagesAlert = '';
                $user = $this->getUser();
                $newtalks = $user->getNewMessageLinks();
@@ -1506,29 +1507,27 @@ abstract class Skin extends ContextSource {
                        $notice = $msg->plain();
                }
 
-               $cache = wfGetCache( CACHE_ANYTHING );
-               // Use the extra hash appender to let eg SSL variants separately cache.
-               $key = $cache->makeKey( $name . $wgRenderHashAppend );
-               $cachedNotice = $cache->get( $key );
-               if ( is_array( $cachedNotice ) ) {
-                       if ( md5( $notice ) == $cachedNotice['hash'] ) {
-                               $notice = $cachedNotice['html'];
-                       } else {
-                               $needParse = true;
+               $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+               $parsed = $cache->getWithSetCallback(
+                       // Use the extra hash appender to let eg SSL variants separately cache
+                       // Key is verified with md5 hash of unparsed wikitext
+                       $cache->makeKey( $name, $wgRenderHashAppend, md5( $notice ) ),
+                       // TTL in seconds
+                       600,
+                       function () use ( $notice ) {
+                               return $this->getOutput()->parse( $notice );
                        }
-               } else {
-                       $needParse = true;
-               }
-
-               if ( $needParse ) {
-                       $parsed = $this->getOutput()->parse( $notice );
-                       $cache->set( $key, [ 'html' => $parsed, 'hash' => md5( $notice ) ], 600 );
-                       $notice = $parsed;
-               }
+               );
 
-               $notice = Html::rawElement( 'div', [ 'id' => 'localNotice',
-                       'lang' => $wgContLang->getHtmlCode(), 'dir' => $wgContLang->getDir() ], $notice );
-               return $notice;
+               return Html::rawElement(
+                       'div',
+                       [
+                               'id' => 'localNotice',
+                               'lang' => $wgContLang->getHtmlCode(),
+                               'dir' => $wgContLang->getDir()
+                       ],
+                       $parsed
+               );
        }
 
        /**
index 1b561ef..0be0646 100644 (file)
@@ -92,8 +92,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'showHideSuffix' => 'showhideliu',
                                                'default' => false,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                                                       &$query_options, &$join_conds ) {
-
+                                                       &$query_options, &$join_conds
+                                               ) {
                                                        $conds[] = 'rc_user = 0';
                                                },
                                                'cssClassSuffix' => 'liu',
@@ -111,8 +111,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'showHideSuffix' => 'showhideanons',
                                                'default' => false,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                                                       &$query_options, &$join_conds ) {
-
+                                                       &$query_options, &$join_conds
+                                               ) {
                                                        $conds[] = 'rc_user != 0';
                                                },
                                                'cssClassSuffix' => 'anon',
@@ -182,8 +182,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'showHideSuffix' => 'showhidemine',
                                                'default' => false,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                                                       &$query_options, &$join_conds ) {
-
+                                                       &$query_options, &$join_conds
+                                               ) {
                                                        $user = $ctx->getUser();
                                                        $conds[] = 'rc_user_text != ' . $dbr->addQuotes( $user->getName() );
                                                },
@@ -198,8 +198,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'description' => 'rcfilters-filter-editsbyother-description',
                                                'default' => false,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                                                       &$query_options, &$join_conds ) {
-
+                                                       &$query_options, &$join_conds
+                                               ) {
                                                        $user = $ctx->getUser();
                                                        $conds[] = 'rc_user_text = ' . $dbr->addQuotes( $user->getName() );
                                                },
@@ -225,8 +225,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'showHideSuffix' => 'showhidebots',
                                                'default' => false,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                                                       &$query_options, &$join_conds ) {
-
+                                                       &$query_options, &$join_conds
+                                               ) {
                                                        $conds[] = 'rc_bot = 0';
                                                },
                                                'cssClassSuffix' => 'bot',
@@ -240,8 +240,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'description' => 'rcfilters-filter-humans-description',
                                                'default' => false,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                                                       &$query_options, &$join_conds ) {
-
+                                                       &$query_options, &$join_conds
+                                               ) {
                                                        $conds[] = 'rc_bot = 1';
                                                },
                                                'cssClassSuffix' => 'human',
@@ -269,8 +269,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'showHideSuffix' => 'showhideminor',
                                                'default' => false,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                                                       &$query_options, &$join_conds ) {
-
+                                                       &$query_options, &$join_conds
+                                               ) {
                                                        $conds[] = 'rc_minor = 0';
                                                },
                                                'cssClassSuffix' => 'minor',
@@ -284,8 +284,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'description' => 'rcfilters-filter-major-description',
                                                'default' => false,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                                                       &$query_options, &$join_conds ) {
-
+                                                       &$query_options, &$join_conds
+                                               ) {
                                                        $conds[] = 'rc_minor = 1';
                                                },
                                                'cssClassSuffix' => 'major',
@@ -347,8 +347,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'default' => false,
                                                'priority' => -2,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                                                       &$query_options, &$join_conds ) {
-
+                                                       &$query_options, &$join_conds
+                                               ) {
                                                        $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_EDIT );
                                                },
                                                'cssClassSuffix' => 'src-mw-edit',
@@ -363,8 +363,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'default' => false,
                                                'priority' => -3,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                                                       &$query_options, &$join_conds ) {
-
+                                                       &$query_options, &$join_conds
+                                               ) {
                                                        $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_NEW );
                                                },
                                                'cssClassSuffix' => 'src-mw-new',
@@ -382,8 +382,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'default' => false,
                                                'priority' => -5,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                                                       &$query_options, &$join_conds ) {
-
+                                                       &$query_options, &$join_conds
+                                               ) {
                                                        $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_LOG );
                                                },
                                                'cssClassSuffix' => 'src-mw-log',
@@ -412,8 +412,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'showHideSuffix' => 'showhidepatr',
                                                'default' => false,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                                                       &$query_options, &$join_conds ) {
-
+                                                       &$query_options, &$join_conds
+                                               ) {
                                                        $conds[] = 'rc_patrolled = 0';
                                                },
                                                'cssClassSuffix' => 'patrolled',
@@ -427,8 +427,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                                'description' => 'rcfilters-filter-unpatrolled-description',
                                                'default' => false,
                                                'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                                                       &$query_options, &$join_conds ) {
-
+                                                       &$query_options, &$join_conds
+                                               ) {
                                                        $conds[] = 'rc_patrolled = 1';
                                                },
                                                'cssClassSuffix' => 'unpatrolled',
@@ -450,8 +450,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                        'default' => false,
                        'priority' => -4,
                        'queryCallable' => function ( $specialClassName, $ctx, $dbr, &$tables, &$fields, &$conds,
-                               &$query_options, &$join_conds ) {
-
+                               &$query_options, &$join_conds
+                       ) {
                                $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_CATEGORIZE );
                        },
                        'cssClassSuffix' => 'src-mw-categorize',
@@ -470,7 +470,6 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                $opts = $this->getOptions();
                /** @var ChangesListFilterGroup $group */
                foreach ( $this->getFilterGroups() as $group ) {
-
                        if ( $group->getConflictingGroups() ) {
                                wfLogWarning(
                                        $group->getName() .
@@ -487,7 +486,6 @@ abstract class ChangesListSpecialPage extends SpecialPage {
 
                        /** @var ChangesListFilter $filter */
                        foreach ( $group->getFilters() as $filter ) {
-
                                /** @var ChangesListFilter $conflictingFilter */
                                foreach ( $filter->getConflictingFilters() as $conflictingFilter ) {
                                        if (
@@ -1061,8 +1059,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
         * @param FormOptions $opts
         */
        protected function buildQuery( &$tables, &$fields, &$conds, &$query_options,
-               &$join_conds, FormOptions $opts ) {
-
+               &$join_conds, FormOptions $opts
+       ) {
                $dbr = $this->getDB();
                $user = $this->getUser();
 
@@ -1121,8 +1119,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
         * @return bool|ResultWrapper Result or false
         */
        protected function doMainQuery( $tables, $fields, $conds,
-               $query_options, $join_conds, FormOptions $opts ) {
-
+               $query_options, $join_conds, FormOptions $opts
+       ) {
                $tables[] = 'recentchanges';
                $fields = array_merge( RecentChange::selectFields(), $fields );
 
@@ -1332,8 +1330,8 @@ abstract class ChangesListSpecialPage extends SpecialPage {
         *   (optional)
         */
        public function filterOnUserExperienceLevel( $specialPageClassName, $context, $dbr,
-               &$tables, &$fields, &$conds, &$query_options, &$join_conds, $selectedExpLevels, $now = 0 ) {
-
+               &$tables, &$fields, &$conds, &$query_options, &$join_conds, $selectedExpLevels, $now = 0
+       ) {
                global $wgLearnerEdits,
                        $wgExperiencedUserEdits,
                        $wgLearnerMemberSince,
index 93873c0..73b8128 100644 (file)
@@ -601,7 +601,6 @@ abstract class QueryPage extends SpecialPage {
                        # Get the cached result, select one extra row for navigation
                        $res = $this->fetchFromCache( $dbLimit, $this->offset );
                        if ( !$this->listoutput ) {
-
                                # Fetch the timestamp of this update
                                $ts = $this->getCachedTimestamp();
                                $lang = $this->getLanguage();
index 88336dd..8dcb30c 100644 (file)
@@ -234,7 +234,6 @@ class SpecialPageFactory {
                global $wgPageLanguageUseDB, $wgContentHandlerUseDB;
 
                if ( !is_array( self::$list ) ) {
-
                        self::$list = self::$coreList;
 
                        if ( !$wgDisableInternalSearch ) {
index eb98fe7..c514300 100644 (file)
@@ -63,7 +63,6 @@ class SpecialChangeEmail extends FormSpecialPage {
        }
 
        protected function checkExecutePermissions( User $user ) {
-
                if ( !AuthManager::singleton()->allowsPropertyChange( 'emailaddress' ) ) {
                        throw new ErrorPageError( 'changeemail', 'cannotchangeemail' );
                }
index 40706ac..3845649 100644 (file)
@@ -329,7 +329,6 @@ class SpecialContributions extends IncludableSpecialPage {
         * @return array
         */
        public static function getUserLinks( SpecialPage $sp, User $target ) {
-
                $id = $target->getId();
                $username = $target->getName();
                $userpage = $target->getUserPage();
index f5e9e49..d5c5528 100644 (file)
@@ -330,7 +330,6 @@ class SpecialExport extends SpecialPage {
         * @param bool $exportall Whether to export everything
         */
        private function doExport( $page, $history, $list_authors, $exportall ) {
-
                // If we are grabbing everything, enable full history and ignore the rest
                if ( $exportall ) {
                        $history = WikiExporter::FULL;
index 5192eb9..44e0db8 100644 (file)
@@ -307,6 +307,7 @@ class MediaStatisticsPage extends QueryPage {
                                // mediastatistics-header-video, mediastatistics-header-multimedia,
                                // mediastatistics-header-office, mediastatistics-header-text,
                                // mediastatistics-header-executable, mediastatistics-header-archive,
+                               // mediastatistics-header-3d,
                                $this->msg( 'mediastatistics-header-' . strtolower( $mediaType ) )->text()
                        )
                );
index 8528ce2..069dd0b 100644 (file)
@@ -105,6 +105,7 @@ class SpecialNewFiles extends IncludableSpecialPage {
                        // mediastatistics-header-video, mediastatistics-header-multimedia,
                        // mediastatistics-header-office, mediastatistics-header-text,
                        // mediastatistics-header-executable, mediastatistics-header-archive,
+                       // mediastatistics-header-3d,
                        return $this->msg( 'mediastatistics-header-' . strtolower( $type ) )->text();
                }, $this->mediaTypes );
                $mediaTypesOptions = array_combine( $mediaTypesText, $this->mediaTypes );
index f7084a8..c52c426 100644 (file)
@@ -48,7 +48,6 @@ class SpecialPageData extends SpecialPage {
         * @return PageDataRequestHandler
         */
        private function newDefaultRequestHandler() {
-
                return new PageDataRequestHandler();
        }
 
index 75d104b..d856d4b 100644 (file)
@@ -213,7 +213,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                $tagHitCounts = array_merge( $explicitlyDefinedTags, $softwareActivatedTags, $tagStats );
 
                // Sort by hits
-               asort( $tagHitCounts );
+               arsort( $tagHitCounts );
 
                // Build the list and data
                $result = [];
@@ -367,8 +367,8 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
         * @inheritdoc
         */
        protected function buildQuery( &$tables, &$fields, &$conds,
-               &$query_options, &$join_conds, FormOptions $opts ) {
-
+               &$query_options, &$join_conds, FormOptions $opts
+       ) {
                $dbr = $this->getDB();
                parent::buildQuery( $tables, $fields, $conds,
                        $query_options, $join_conds, $opts );
@@ -392,8 +392,8 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
         * @inheritdoc
         */
        protected function doMainQuery( $tables, $fields, $conds, $query_options,
-               $join_conds, FormOptions $opts ) {
-
+               $join_conds, FormOptions $opts
+       ) {
                $dbr = $this->getDB();
                $user = $this->getUser();
 
index 873285b..b3b9210 100644 (file)
@@ -50,8 +50,8 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges {
         * @inheritdoc
         */
        protected function doMainQuery( $tables, $select, $conds, $query_options,
-               $join_conds, FormOptions $opts ) {
-
+               $join_conds, FormOptions $opts
+       ) {
                $target = $opts['target'];
                $showlinkedto = $opts['showlinkedto'];
                $limit = $opts['limit'];
index e89dbc9..e5adeb5 100644 (file)
@@ -399,7 +399,6 @@ class SpecialSearch extends SpecialPage {
                $mainResultWidget = new FullSearchResultWidget( $this, $linkRenderer );
 
                if ( $search->getFeatureData( 'enable-new-crossproject-page' ) ) {
-
                        $sidebarResultWidget = new InterwikiSearchResultWidget( $this, $linkRenderer );
                        $sidebarResultsWidget = new InterwikiSearchResultSetWidget(
                                $this,
index b18b370..451669c 100644 (file)
@@ -96,7 +96,6 @@ class SpecialSpecialpages extends UnlistedSpecialPage {
                $includesCachedPages = false;
 
                foreach ( $groups as $group => $sortedPages ) {
-
                        $out->wrapWikiMsg(
                                "<h2 class=\"mw-specialpagesgroup\" id=\"mw-specialpagesgroup-$group\">$1</h2>\n",
                                "specialpages-group-$group"
index 19850e6..a60549b 100644 (file)
@@ -253,7 +253,6 @@ class SpecialStatistics extends SpecialPage {
                foreach ( $stats as $header => $items ) {
                        // Identify the structure used
                        if ( is_array( $items ) ) {
-
                                // Ignore headers that are recursively set as legacy header
                                if ( $header !== 'statistics-header-hooks' ) {
                                        $return .= $this->formatRowHeader( $header );
index e67356f..605ee00 100644 (file)
@@ -246,7 +246,6 @@ class SpecialTags extends SpecialPage {
                }
 
                if ( $showManageActions ) { // we've already checked that the user had the requisite userright
-
                        // activate
                        if ( ChangeTags::canActivateTag( $tag )->isOK() ) {
                                $actionLinks[] = $linkRenderer->makeKnownLink(
@@ -264,7 +263,6 @@ class SpecialTags extends SpecialPage {
                                        [],
                                        [ 'tag' => $tag ] );
                        }
-
                }
 
                if ( $showDeleteActions || $showManageActions ) {
index def639d..073e58d 100644 (file)
@@ -678,7 +678,6 @@ class SpecialUpload extends SpecialPage {
         */
        protected function processVerificationError( $details ) {
                switch ( $details['status'] ) {
-
                        /** Statuses that only require name changing **/
                        case UploadBase::MIN_LENGTH_PARTNAME:
                                $this->showRecoverableUploadError( $this->msg( 'minlength1' )->escaped() );
index d0a0317..0a712ef 100644 (file)
@@ -326,8 +326,8 @@ class UserrightsPage extends SpecialPage {
         * @return array Tuple of added, then removed groups
         */
        function doSaveUserGroups( $user, $add, $remove, $reason = '', $tags = [],
-               $groupExpiries = [] ) {
-
+               $groupExpiries = []
+       ) {
                // Validate input set...
                $isself = $user->getName() == $this->getUser()->getName();
                $groups = $user->getGroups();
@@ -433,8 +433,8 @@ class UserrightsPage extends SpecialPage {
         * @param array $newUGMs Associative array of (group name => UserGroupMembership)
         */
        protected function addLogEntry( $user, $oldGroups, $newGroups, $reason, $tags,
-               $oldUGMs, $newUGMs ) {
-
+               $oldUGMs, $newUGMs
+       ) {
                // make sure $oldUGMs and $newUGMs are in the same order, and serialise
                // each UGM object to a simplified array
                $oldUGMs = array_map( function ( $group ) use ( $oldUGMs ) {
index e9d3f26..65131ec 100644 (file)
@@ -246,8 +246,8 @@ class SpecialWatchlist extends ChangesListSpecialPage {
         * @inheritdoc
         */
        protected function buildQuery( &$tables, &$fields, &$conds, &$query_options,
-               &$join_conds, FormOptions $opts ) {
-
+               &$join_conds, FormOptions $opts
+       ) {
                $dbr = $this->getDB();
                parent::buildQuery( $tables, $fields, $conds, $query_options, $join_conds,
                        $opts );
@@ -263,8 +263,8 @@ class SpecialWatchlist extends ChangesListSpecialPage {
         * @inheritdoc
         */
        protected function doMainQuery( $tables, $fields, $conds, $query_options,
-               $join_conds, FormOptions $opts ) {
-
+               $join_conds, FormOptions $opts
+       ) {
                $dbr = $this->getDB();
                $user = $this->getUser();
 
index 7a71714..0fff97c 100644 (file)
@@ -86,7 +86,6 @@ class MediaWikiTitleCodec implements TitleFormatter, TitleParser {
                if ( $this->language->needsGenderDistinction() &&
                        MWNamespace::hasGenderDistinction( $namespace )
                ) {
-
                        // NOTE: we are assuming here that the title text is a user name!
                        $gender = $this->genderCache->getGenderOf( $text, __METHOD__ );
                        $name = $this->language->getGenderNsText( $namespace, $gender );
index 57bb22a..f08f4cf 100644 (file)
@@ -321,7 +321,6 @@ abstract class UploadBase {
         * @return mixed Const self::OK or else an array with error information
         */
        public function verifyUpload() {
-
                /**
                 * If there was no filename or a zero size given, give up quick.
                 */
@@ -1431,7 +1430,6 @@ abstract class UploadBase {
         * @return bool
         */
        public function checkSvgScriptCallback( $element, $attribs, $data = null ) {
-
                list( $namespace, $strippedElement ) = $this->splitXmlNamespace( $element );
 
                // We specifically don't include:
@@ -1666,7 +1664,6 @@ abstract class UploadBase {
         * @return bool true if the CSS contains an illegal string, false if otherwise
         */
        private static function checkCssFragment( $value ) {
-
                # Forbid external stylesheets, for both reliability and to protect viewer's privacy
                if ( stripos( $value, '@import' ) !== false ) {
                        return true;
index cf05df3..a06be83 100644 (file)
@@ -344,8 +344,8 @@ class UserGroupMembership {
         * @return string
         */
        public static function getLink( $ugm, IContextSource $context, $format,
-               $userName = null ) {
-
+               $userName = null
+       ) {
                if ( $format !== 'wiki' && $format !== 'html' ) {
                        throw new MWException( 'UserGroupMembership::getLink() $format parameter should be ' .
                                "'wiki' or 'html'" );
index 54a8677..8931e3c 100644 (file)
@@ -137,13 +137,11 @@ class AutoloadGenerator {
                // format class-name : path when they get converted into json.
                foreach ( $this->classes as $path => $contained ) {
                        foreach ( $contained as $fqcn ) {
-
                                // Using substr to remove the leading '/'
                                $json[$key][$fqcn] = substr( $path, 1 );
                        }
                }
                foreach ( $this->overrides as $path => $fqcn ) {
-
                        // Using substr to remove the leading '/'
                        $json[$key][$fqcn] = substr( $path, 1 );
                }
@@ -223,7 +221,6 @@ EOD;
         * @return string
         */
        public function getAutoload( $commandName = 'AutoloadGenerator' ) {
-
                // We need to check whether an extenson.json or skin.json exists or not, and
                // incase it doesn't, update the autoload.php file.
 
index ef93362..9145bb6 100644 (file)
@@ -123,7 +123,6 @@ class InterwikiSearchResultSetWidget implements SearchResultSetWidget {
         * @return string HTML
         */
        protected function footerHtml( $term, $iwPrefix ) {
-
                $href = Title::makeTitle( NS_SPECIAL, 'Search', null, $iwPrefix )->getLocalURL(
                        [ 'search' => $term, 'fulltext' => 1 ]
                );
@@ -171,7 +170,6 @@ class InterwikiSearchResultSetWidget implements SearchResultSetWidget {
         * @return OOUI\IconWidget
         **/
        protected function iwIcon( $iwPrefix ) {
-
                $interwiki = $this->iwLookup->fetch( $iwPrefix );
                $parsed = wfParseUrl( wfExpandUrl( $interwiki ? $interwiki->getURL() : '/' ) );
 
index 861fb6d..bcd1c16 100644 (file)
@@ -29,7 +29,6 @@ class InterwikiSearchResultWidget implements SearchResultWidget {
         * @return string HTML
         */
        public function render( SearchResult $result, $terms, $position ) {
-
                $title = $result->getTitle();
                $iwPrefix = $result->getTitle()->getInterwiki();
                $titleSnippet = $result->getTitleSnippet();
@@ -46,7 +45,6 @@ class InterwikiSearchResultWidget implements SearchResultWidget {
                $redirectTitle = $result->getRedirectTitle();
                $redirect = '';
                if ( $redirectTitle !== null ) {
-
                        $redirectText = $result->getRedirectSnippet();
 
                        if ( $redirectText ) {
index b5eef8c..83dff65 100644 (file)
@@ -361,7 +361,6 @@ class Language {
         * @return bool
         */
        public static function isValidBuiltInCode( $code ) {
-
                if ( !is_string( $code ) ) {
                        if ( is_object( $code ) ) {
                                $addmsg = " of class " . get_class( $code );
index 2137786..6d0368c 100644 (file)
@@ -339,7 +339,6 @@ class LanguageConverter {
         * @return string The converted text
         */
        public function autoConvert( $text, $toVariant = false ) {
-
                $this->loadTables();
 
                if ( !$toVariant ) {
index 56faa4a..6007bb4 100644 (file)
@@ -44,7 +44,6 @@ class LanguageBe_tarask extends Language {
         * @return string
         */
        function normalizeForSearch( $string ) {
-
                # MySQL fulltext index doesn't grok utf-8, so we
                # need to fold cases and convert to hex
 
index 3a50987..f6f03c4 100644 (file)
@@ -86,7 +86,6 @@ class KkConverter extends LanguageConverter {
        }
 
        function loadRegs() {
-
                $this->mCyrl2Latn = [
                        # # Punctuation
                        '/№/u' => 'No.',
@@ -423,7 +422,6 @@ class LanguageKk extends LanguageKk_cyrl {
         * @return string
         */
        function convertGrammar( $word, $case ) {
-
                $variant = $this->getPreferredVariant();
                switch ( $variant ) {
                        case 'kk-arab':
index e745965..4e9c365 100644 (file)
@@ -37,7 +37,6 @@ class LanguageKu_ku extends Language {
         * @return string
         */
        function commafy( $_ ) {
-
                if ( !preg_match( '/^\d{1,4}$/', $_ ) ) {
                        return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) );
                } else {
index d5f3e76..1107fa6 100644 (file)
@@ -54,7 +54,6 @@ class LanguageYue extends Language {
         * @return string
         */
        function normalizeForSearch( $string ) {
-
                // Double-width roman characters
                $s = self::convertDoubleWidth( $string );
                $s = trim( $s );
index 77a41e1..9d81c21 100644 (file)
@@ -56,7 +56,6 @@ class LanguageZh_hans extends Language {
         * @return string
         */
        function normalizeForSearch( $s ) {
-
                // Double-width roman characters
                $s = parent::normalizeForSearch( $s );
                $s = trim( $s );
index 6118827..f243d01 100644 (file)
        "rcfilters-view-tags": "Праўкі зь меткамі",
        "rcfilters-view-namespaces-tooltip": "Фільтар вынікаў паводле прасторы назваў",
        "rcfilters-view-tags-tooltip": "Фільтар вынікаў з дапамогай метак правак",
+       "rcfilters-view-return-to-default-tooltip": "Вярнуцца да галоўнага мэню фільтраў",
        "rcnotefrom": "Ніжэй {{PLURAL:$5|знаходзіцца зьмена|знаходзяцца зьмены}} з <strong>$4 $3</strong> (да <strong>$1</strong> на старонку).",
        "rclistfromreset": "Скінуць выбар даты",
        "rclistfrom": "Паказаць зьмены з $2 $3",
        "authpage-cannot-login-continue": "Немагчыма працягнуць уваход у сыстэму. Падобна, што тэрмін вашай сэсіі скончыўся.",
        "authpage-cannot-create": "Немагчыма пачаць стварэньне рахунку.",
        "authpage-cannot-create-continue": "Немагчыма працягнуць стварэньне рахунку. Падобна, што тэрмін вашай сэсіі скончыўся.",
+       "authpage-cannot-link": "Немагчыма пачаць далучэньне рахунку.",
        "changecredentials": "Зьмена ўліковых зьвестак",
        "removecredentials": "Выдаленьне ўліковых зьвестак",
        "removecredentials-submit": "Выдаліць уліковыя зьвесткі",
index 5a402cb..535d7db 100644 (file)
        "databaseerror-error": "Error:$1",
        "transaction-duration-limit-exceeded": "Per evitar una alta demora de resposta, s'ha interromput aquesta transacció perquè la durada d'escriptura ($1) ha sobrepassat el límit de $2 segons.\nSi esteu canviant molts elements alhora, intenteu fer-ho amb diverses operacions més petites.",
        "laggedslavemode": "Avís: La pàgina podria mancar de modificacions recents.",
-       "readonly": "La base de dades està bloquejada",
-       "enterlockreason": "Escriviu una raó pel bloqueig, així com una estimació de quan tindrà lloc el desbloqueig",
-       "readonlytext": "La base de dades està temporalment bloquejada a noves entrades i altres tasques de manteniment, segurament per tasques rutinàries de manteniment, després de les quals es tornarà a la normalitat.\n\nL'administrador que l'ha bloquejada ha donat aquesta explicació: $1",
+       "readonly": "Base de dades blocada",
+       "enterlockreason": "Escriviu una raó pel blocatge, així com una estimació de quan tindrà lloc el desblocatge",
+       "readonlytext": "La base de dades està temporalment blocada a noves entrades i altres tasques de manteniment, segurament per tasques rutinàries de manteniment, després de les quals es tornarà a la normalitat.\n\nL'administrador que l'ha blocada ha donat aquesta explicació: $1",
        "missing-article": "La base de dades no ha trobat el text d'una pàgina que hauria d'haver trobat, anomenada «$1» $2.\n\nNormalment això passa perquè s'ha seguit una diferència desactualitzada o un enllaç d'historial a una pàgina que s'ha suprimit.\n\nSi no fos el cas, podríeu haver trobat un error en el programari.\nAviseu-ho llavors a un [[Special:ListUsers/sysop|administrador]], deixant-li clar l'adreça URL causant del problema.",
        "missingarticle-rev": "(revisió#: $1)",
        "missingarticle-diff": "(dif: $1, $2)",
-       "readonly_lag": "La base de dades s'ha bloquejat automàticament mentre els servidors esclaus se sincronitzen amb el mestre",
+       "readonly_lag": "La base de dades s'ha blocat automàticament mentre els servidors esclaus se sincronitzen amb el mestre",
        "nonwrite-api-promise-error": "L'encapçalament HTTP 'Promise-Non-Write-API-Action' ha estat enviat però la petició era a mòdul d'escriptura de l'API.",
        "internalerror": "Error intern",
        "internalerror_info": "Error intern: $1",
        "mypreferencesprotected": "No tens permís per editar les teves preferències.",
        "ns-specialprotected": "No es poden modificar les pàgines especials.",
        "titleprotected": "La creació d'aquesta pàgina està protegida per [[User:$1|$1]].\nEls seus motius han estat: <em>$2</em>.",
-       "filereadonlyerror": "No s'ha pogut modificar el fitxer «$1» perquè el repositori de fitxers «$2» està en mode només de lectura.\nL'administrador de sistema que l'ha bloquejat ha donat aquesta explicació: «$3».",
+       "filereadonlyerror": "No s'ha pogut modificar el fitxer «$1» perquè el repositori de fitxers «$2» està en mode només de lectura.\nL'administrador de sistema que l'ha blocat ha donat aquesta explicació: «$3».",
        "invalidtitle-knownnamespace": "El títol amb l'espai de noms «$2» i text «$3» no és vàlid",
        "invalidtitle-unknownnamespace": "Títol no vàlid amb espai de noms desconegut de número «$1» i text «$2»",
        "exception-nologin": "No has iniciat sessió",
        "nosuchuser": "No hi ha cap usuari anomenat «$1».\nEls noms d'usuari distingeixen majúscules i minúscules.\nComproveu l'ortografia o [[Special:CreateAccount|creeu un compte nou]].",
        "nosuchusershort": "No hi ha cap usuari anomenat «$1». Comproveu que ho hàgiu escrit correctament.",
        "nouserspecified": "Heu d'especificar un nom d'usuari.",
-       "login-userblocked": "Aquest usuari està bloquejat. Inici de sessió no permès.",
+       "login-userblocked": "Aquest usuari està blocat. Inici de sessió no permès.",
        "wrongpassword": "La contrasenya que heu introduït és incorrecta. Torneu-ho a provar.",
        "wrongpasswordempty": "La contrasenya que s'ha introduït estava en blanc. Torneu-ho a provar.",
        "passwordtooshort": "La contrasenya ha de tenir un mínim {{PLURAL:$1|d'un caràcter|de $1 caràcters}}.",
        "botpasswords-label-delete": "Suprimeix",
        "botpasswords-label-resetpassword": "Reinicia la contrasenya",
        "botpasswords-label-grants": "Permisos aplicables:",
+       "botpasswords-help-grants": "Les autoritzacions permeten l'accés a permisos dels que el vostre compte d'usuari ja disposa. El fet d'habilitar una autorització aquí no dóna accés a cap permís que el vostre compte d'usuari no tingués abans. Vegeu la [[Special:ListGrants|llista d'autoritzacions]] per més informació.",
        "botpasswords-label-grants-column": "Concedit",
        "botpasswords-bad-appid": "El nom del bot «$1» no és vàlid.",
        "botpasswords-insert-failed": "No s'ha pogut afegir el nom del bot «$1». Ja hi estava afegit?",
        "passwordreset-emailelement": "Nom d'usuari: \n$1\n\nContrasenya temporal: \n$2",
        "passwordreset-emailsentemail": "Si aquesta adreça electrònica està associada al vostre compte, s’enviarà un missatge de restabliment de contrasenya.",
        "passwordreset-emailsentusername": "Si existeix una adreça electrònica associada a aquest nom d'usuari, s’hi enviarà un missatge de reestabliment de contrasenya.",
+       "passwordreset-nocaller": "Cal proveir un sol·licitant",
+       "passwordreset-nosuchcaller": "El sol·licitant no existeix: $1",
+       "passwordreset-ignored": "El restabliment de la contrasenya no s'ha realitzat. Potser no s'ha configurat cap proveïdor?",
        "passwordreset-invalidemail": "Adreça de correu electrònic no vàlida",
        "passwordreset-nodata": "No s'ha proporcionat cap nom d'usuari ni adreça electrònica",
        "changeemail": "Canvia o elimina l’adreça electrònica",
        "previewerrortext": "S'ha produït un error quan es provava de previsualitzar els canvis.",
        "blockedtitle": "L'usuari està blocat",
        "blockedtext": "'''S'ha procedit al blocatge del vostre compte d'usuari o la vostra adreça IP.'''\n\nEl blocatge l'ha dut a terme l'usuari $1.\nEl motiu donat és ''$2''.\n\n* Inici del blocatge: $8\n* Final del blocatge: $6\n* Compte blocat: $7\n\nPodeu contactar amb $1 o un dels [[{{MediaWiki:Grouppage-sysop}}|administradors]] per a discutir-ho.\n\nTingueu en compte que no podeu fer servir el formulari d'enviament de missatges de correu electrònic a cap usuari, a menys que tingueu una adreça de correu vàlida registrada a les vostres [[Special:Preferences|preferències d'usuari]] i no ho tingueu tampoc blocat.\n\nLa vostra adreça IP actual és $3, i el número d'identificació del blocatge és #$5.\nSi us plau, incloeu aquestes dades en totes les consultes que feu.",
-       "autoblockedtext": "La vostra adreça IP ha estat blocada automàticament perquè va ser usada per un usuari actualment bloquejat. Aquest usuari va ser blocat per l'{{GENDER:$1|administrador|administradora}} $1. El motiu donat per al bloqueig ha estat:\n\n:''$2''\n\n* Inici del bloqueig: $8\n* Final del bloqueig: $6\n* Usuari bloquejat: $7\n\nPodeu contactar l'usuari $1 o algun altre dels [[{{MediaWiki:Grouppage-sysop}}|administradors]] per a discutir el bloqueig.\n\nRecordeu que per a poder usar l'opció «Envia un missatge de correu electrònic a aquest usuari» haureu d'haver validat una adreça de correu electrònic a les vostres [[Special:Preferences|preferències]].\n\nEl número d'identificació de la vostra adreça IP és $3, i l'ID del bloqueig és #$5. Si us plau, incloeu aquestes dades en totes les consultes que feu.",
-       "systemblockedtext": "El vostre nom d'usuari o adreça IP ha estat bloquejada automàticament pel MediaWiki.\nEl motiu donat és:\n\n:<em>$2</em>\n\n* Inici del bloqueig: $8\n* Caducitat del bloqueig: $6\n* Destinatari del bloqueig: $7\n\nLa vostra adreça IP actual és $3.\nAfegiu les dades de més amunt en qualsevol consulta que feu al respecte.",
+       "autoblockedtext": "La vostra adreça IP ha estat blocada automàticament perquè va ser usada per un usuari actualment blocat. Aquest usuari va ser blocat per l'{{GENDER:$1|administrador|administradora}} $1. El motiu donat per al blocatge és aquest:\n\n:<em>$2</em>\n\n* Inici del blocatge: $8\n* Final del blocatge: $6\n* Usuari blocat: $7\n\nPodeu contactar l'usuari $1 o algun altre dels [[{{MediaWiki:Grouppage-sysop}}|administradors]] per a discutir el blocatge.\n\nRecordeu que per a poder usar l'opció «Envia un missatge de correu electrònic a aquest usuari» haureu d'haver validat una adreça de correu electrònic a les vostres [[Special:Preferences|preferències]].\n\nEl número d'identificació de la vostra adreça IP és $3, i l'ID del blocatge és #$5. Si us plau, incloeu aquestes dades en totes les consultes que feu.",
+       "systemblockedtext": "El vostre nom d'usuari o adreça IP ha estat blocada automàticament pel MediaWiki.\nEl motiu donat és:\n\n:<em>$2</em>\n\n* Inici del blocatge: $8\n* Caducitat del blocatge: $6\n* Destinatari del blocatge: $7\n\nLa vostra adreça IP actual és $3.\nAfegiu les dades de més amunt en qualsevol consulta que feu al respecte.",
        "blockednoreason": "no s'ha donat cap motiu",
        "whitelistedittext": "Heu de $1 per modificar pàgines.",
        "confirmedittext": "Heu de confirmar la vostra adreça electrònica abans de poder modificar les pàgines. Definiu i valideu la vostra adreça electrònica a través de les vostres [[Special:Preferences|preferències d'usuari]].",
        "copyrightwarning2": "Si us plau, tingueu en compte que totes les contribucions al projecte {{SITENAME}} poden ser corregides, alterades o esborrades per altres usuaris. Si no desitgeu la modificació i distribució lliure dels vostres escrits sense el vostre consentiment, no els poseu ací.<br />\nA més a més, en enviar el vostre text, doneu fe que és vostra l'autoria, o bé de fonts en el domini públic o altres recursos lliures similars (consulteu $1 per a més detalls).\n'''No feu servir textos amb drets d'autor sense permís!'''",
        "editpage-cannot-use-custom-model": "El model de contingut d'aquesta pàgina no pot ser canviat.",
        "longpageerror": "'''Error: El text que heu introduït és {{PLURAL:$1|d'un kilobyte|de $1 kilobytes}} i sobrepassa el màxim permès de {{PLURAL:$2|one kilobyte|$2 kilobytes}}.'''\nNo es pot desar.",
-       "readonlywarning": "<strong>Avís: La base de dades està tancada per manteniment, de manera que no podreu desar els canvis ara mateix.</strong>\nÉs possible que vulgueu copiar i enganxar el text en un arxiu de text i desar-ho més tard.\n\nL'administrador de sistema que l'ha bloquejada ha donat la següent explicació: $1",
-       "protectedpagewarning": "'''ATENCIÓ: Aquesta pàgina està bloquejada i només els usuaris amb drets d'administrador la poden modificar.\nA continuació es mostra la darrera entrada del registre com a referència:",
-       "semiprotectedpagewarning": "'''Avís:''' Aquesta pàgina està bloquejada i només pot ser modificada per usuaris registrats.\nA continuació es mostra la darrera entrada del registre com a referència:",
-       "cascadeprotectedwarning": "'''Atenció:''' Aquesta pàgina està protegida de forma que només la poden modificar els administradors, ja que està inclosa a {{PLURAL:$1|la següent pàgina|les següents pàgines}} amb l'opció de «protecció en cascada» activada:",
+       "readonlywarning": "<strong>Avís: La base de dades està blocada per manteniment, de manera que no podreu desar els canvis ara mateix.</strong>\nÉs possible que vulgueu copiar i enganxar el text en un arxiu de text i desar-ho més tard.\n\nL'administrador de sistema que l'ha blocada ha donat la següent explicació: $1",
+       "protectedpagewarning": "'''ATENCIÓ: Aquesta pàgina està protegida i només els usuaris amb drets d'administrador la poden modificar.\nA continuació es mostra la darrera entrada del registre com a referència:",
+       "semiprotectedpagewarning": "'''Avís:''' Aquesta pàgina està blocada i només pot ser modificada per usuaris registrats.\nA continuació es mostra la darrera entrada del registre com a referència:",
+       "cascadeprotectedwarning": "<strong>Atenció:</strong> Aquesta pàgina està protegida de forma que només la poden modificar usuaris amb [[Special:ListGroupRights|permisos específics]], ja que està inclosa a {{PLURAL:$1|la següent pàgina|les següents pàgines}} amb l'opció de «protecció en cascada» activada:",
        "titleprotectedwarning": "'''ATENCIÓ: Aquesta pàgina està protegida de tal manera que es necessiten uns [[Special:ListGroupRights|drets específics]] per a poder crear-la.'''\nA continuació es mostra la darrera entrada del registre com a referència:",
        "templatesused": "Aquesta pàgina fa servir {{PLURAL:$1|la següent plantilla|les següents plantilles}}:",
        "templatesusedpreview": "{{PLURAL:$1|Plantilla usada|Plantilles usades}} en aquesta previsualització:",
        "post-expand-template-argument-category": "Pàgines que contenen arguments de plantilla que s'han omès",
        "parser-template-loop-warning": "S'ha detectat un bucle de plantilla: [[$1]]",
        "template-loop-category": "Pàgines amb bucles de plantilla",
+       "template-loop-category-desc": "La pàgina conté un bucle de plantilles, és a dir, una plantilla que s'inclou a si mateixa recursivament.",
        "parser-template-recursion-depth-warning": "S'ha excedit el límit de recursivitat de plantilles ($1)",
        "language-converter-depth-warning": "S'ha excedit el límit de profunditat del convertidor d'idiomes ($1)",
        "node-count-exceeded-category": "Pàgines on s'ha excedit el recompte de nodes",
        "undo-nochange": "Sembla que ja s'ha desfet la modificació.",
        "undo-summary": "Es desfà la revisió $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussió]])",
        "undo-summary-username-hidden": "Desfés la revisió $1 d'un usuari ocult",
-       "cantcreateaccount-text": "[[User:$3|$3]] ha bloquejat la creació de comptes des d'aquesta adreça IP ('''$1''').\n\nEl motiu donat per $3 és ''$2''",
+       "cantcreateaccount-text": "[[User:$3|$3]] ha blocat la creació de comptes des d'aquesta adreça IP ('''$1''').\n\nEl motiu donat per $3 és ''$2''",
        "cantcreateaccount-range-text": "La creació de comptes des de les adreces IP en el rang <strong>$1</strong>, que inclou la vostra adreça IP (<strong>$4</strong>), ha estat blocada per [[User:$3|$3]].\n\nEl motiu donat per $3 és <em>$2</em>",
        "viewpagelogs": "Visualitza els registres d'aquesta pàgina",
        "nohistory": "No hi ha un historial de revisions per a aquesta pàgina.",
        "revdelete-edit-reasonlist": "Editar el motiu d'esborrament",
        "revdelete-offender": "Autor de la revisió:",
        "suppressionlog": "Registre de supressió",
-       "suppressionlogtext": "A continuació es mostra una llista de les supressions i blocs que impliquen contingut ocult per administradors.\nVeure la [[Special:BlockList|llista de bloqueigs]] per a la llista de prohibicions actualment operatives i bloqueigs.",
+       "suppressionlogtext": "A continuació es mostra una llista de les supressions i blocatges que involucren contingut ocult per administradors.\nVegeu la [[Special:BlockList|llista de blocatges]] per a la llista de prohibicions i blocatges en vigor.",
        "mergehistory": "Fusiona els historials de les pàgines",
        "mergehistory-header": "Aquesta pàgina us permet fusionar les revisions de l'historial d'una pàgina origen en una més nova.\nAssegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgina.",
        "mergehistory-box": "Fusiona les revisions de dues pàgines:",
        "userrights-groupsmember": "Membre de:",
        "userrights-groupsmember-auto": "Membre implícit de:",
        "userrights-groupsmember-type": "$1",
-       "userrights-groups-help": "Podeu modificar els grups als quals pertany {{GENDER:$1|aquest usuari|aquesta usuària}}.\n* Una casella marcada significa que {{GENDER:$1|l’usuari|la usuària}} pertany a aquest grup.\n* Una casella no marcada significa que {{GENDER:$1|l’usuari|la usuària}} no pertany a aquest grup.\n* Un asterisc (*) indica que no {{GENDER:$1|el|la}} podreu treure del grup una vegada l'hàgiu afegit o viceversa.\n* Un coixinet (#) indica que només podeu retardar la data d'expiració d'aquest grup i que no la podeu avançar.",
+       "userrights-groups-help": "Podeu modificar els grups als quals pertany {{GENDER:$1|aquest usuari|aquesta usuària}}.\n* Una casella marcada significa que {{GENDER:$1|l’usuari|la usuària}} pertany a aquest grup.\n* Una casella no marcada significa que {{GENDER:$1|l’usuari|la usuària}} no pertany a aquest grup.\n* Un asterisc (*) indica que no {{GENDER:$1|el|la}} podreu treure del grup una vegada l'hàgiu afegit o viceversa.\n* Un coixinet (#) indica que només podeu retardar la data d'expiració de la pertinença a aquest grup i que no la podeu avançar.",
        "userrights-reason": "Motiu:",
        "userrights-no-interwiki": "No teniu permisos per a editar els permisos d'usuari d'altres wikis.",
        "userrights-nodatabase": "La base de dades $1 no existeix o no és local.",
        "action-mergehistory": "fusionar l'historial d'aquesta pàgina",
        "action-userrights": "modificar tots els permisos d'usuari",
        "action-userrights-interwiki": "modificar permisos d'usuari en altres wikis",
-       "action-siteadmin": "bloquejar o desbloquejar la base de dades",
+       "action-siteadmin": "blocar o desblocar la base de dades",
        "action-sendemail": "enviar missatges de correu",
        "action-editmyoptions": "modifiqueu les vostres preferències",
        "action-editmywatchlist": "edita la llista de seguiment",
        "rcfilters-savedqueries-setdefault": "Defineix per defecte",
        "rcfilters-savedqueries-remove": "Suprimeix",
        "rcfilters-savedqueries-new-name-label": "Nom",
-       "rcfilters-savedqueries-apply-label": "Desa els paràmetres",
+       "rcfilters-savedqueries-apply-label": "Crea un filtre",
        "rcfilters-savedqueries-cancel-label": "Cancel·la",
        "rcfilters-savedqueries-add-new-title": "Desa els paràmetres de filtres actuals",
        "rcfilters-restore-default-filters": "Restaura els filtres per defecte",
        "rcfilters-clear-all-filters": "Esborra tots els filtres",
-       "rcfilters-search-placeholder": "Canvis recents dels filtres (navegueu o comenceu a escriure)",
+       "rcfilters-search-placeholder": "Filtra els canvis recents (navegueu o comenceu a escriure)",
        "rcfilters-invalid-filter": "Filtre no vàlid",
        "rcfilters-empty-filter": "No hi ha cap filtre actiu. Es mostren totes les contribucions.",
        "rcfilters-filterlist-title": "Filtres",
        "rcfilters-filter-user-experience-level-newcomer-label": "Novells",
        "rcfilters-filter-user-experience-level-newcomer-description": "Menys de 10 edicions i 4 dies d'activitat.",
        "rcfilters-filter-user-experience-level-learner-label": "Aprenents",
-       "rcfilters-filter-user-experience-level-learner-description": "Més dies d'activitat i més edicions que els 'novells' però menys que els 'usuaris experimentats'.",
+       "rcfilters-filter-user-experience-level-learner-description": "Més experiència que els 'novells' però menys que els 'usuaris experimentats'.",
        "rcfilters-filter-user-experience-level-experienced-label": "Usuaris experimentats",
        "rcfilters-filter-user-experience-level-experienced-description": "Més de 30 dies d'activitat i més de 500 edicions.",
        "rcfilters-filtergroup-automated": "Contribucions automatitzades",
        "rcfilters-filter-watchlist-notwatched-label": "No és a la llista de seguiment",
        "rcfilters-filtergroup-changetype": "Tipus de canvi",
        "rcfilters-filter-pageedits-label": "Modificacions de pàgina",
-       "rcfilters-filter-pageedits-description": "Modificacions al contingut del wiki, discussions, descripcions de categories...",
+       "rcfilters-filter-pageedits-description": "Modificacions al contingut del wiki, discussions, descripcions de categories",
        "rcfilters-filter-newpages-label": "Creacions de pàgines",
        "rcfilters-filter-newpages-description": "Edicions que creen noves pàgines.",
        "rcfilters-filter-categorization-label": "Canvis de categoria",
        "rcfilters-filter-categorization-description": "Registres de pàgines afegides o suprimides de les categories.",
        "rcfilters-filter-logactions-label": "Accions registrades",
-       "rcfilters-filter-logactions-description": "Accions administratives, creacions de comptes, eliminacions de pàgines, càrregues...",
+       "rcfilters-filter-logactions-description": "Accions administratives, creacions de comptes, eliminacions de pàgines, càrregues",
        "rcfilters-filtergroup-lastRevision": "Darrera revisió",
        "rcfilters-filter-lastrevision-label": "Darrera revisió",
        "rcfilters-filter-lastrevision-description": "El canvi més recent a una pàgina.",
        "php-uploaddisabledtext": "La càrrega de fitxer està desactivada al PHP. Comproveu les opcions del fitxer file_uploads.",
        "uploadscripted": "Aquest fitxer conté codi HTML o de seqüències que pot ser interpretat equivocadament per un navegador.",
        "upload-scripted-pi-callback": "No es poden carregar arxius que continguin instruccions de processament de pàgines d'estil XML",
+       "upload-scripted-dtd": "No es poden pujar fitxers SVG que continguin una declaració DTD no estàndard.",
        "uploaded-script-svg": "S’ha trobat l’element programable «$1» al fitxer SVG carregat.",
        "uploaded-hostile-svg": "S’ha trobat codi CSS no segur a l’element d’estil del fitxer SVG carregat.",
        "uploaded-event-handler-on-svg": "No es permet establir els atributs de gestió d’esdeveniments <code>$1=\"$2\"</code> en fitxers SVG.",
+       "uploaded-href-attribute-svg": "Els atributs href en fitxers SVG només tenen permès enllaçar a destinacions http:// o https://, s'ha trobat <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-href-unsafe-target-svg": "S’ha trobat un element «href» amb dades no segures: destinació URI <code>&lt;$1 $2=\"$3\"&gt;</code> en el fitxer SVG carregat.",
        "uploaded-animate-svg": "S'ha trobat l'etiqueta «animate» que pot estar canviant l'href mitjançant l'atribut <code>&lt;$1 $2=\"$3\"&gt;</code> en el fitxer SVG carregat.",
+       "uploaded-setting-event-handler-svg": "La configuració d'atributs per la gestió d'esdeveniments està bloquejada. S'ha trobat <code>&lt;$1 $2=\"$3\"&gt;</code> al fitxer SVG pujat.",
+       "uploaded-setting-href-svg": "La utilització de l'etiqueta «set» per afegir un atribut «href» a l'element pare està blocada.",
        "uploadscriptednamespace": "Aquest fitxer SVG conté un espai de noms \"<nowiki>$1</nowiki>\" no autoritzat",
        "uploadinvalidxml": "No s'ha pogut analitzar l'XML del fitxer carregat.",
        "uploadvirus": "El fitxer conté un virus! Detalls: $1",
        "backend-fail-usable": "No s'ha pogut llegir ni escriure el fitxer \"$1\" a causa de permisos insuficients o perquè hi manquen directoris/contenidors.",
        "filejournal-fail-dbconnect": "No es pot connectar amb la base de dades per emmagatzemar el backend \"$1\".",
        "filejournal-fail-dbquery": "No es pot actualitzar la base de dades per a emmagatzemar el backend \"$1\".",
-       "lockmanager-notlocked": "No s'ha pogut desbloquejar «$1»; no és bloquejat.",
-       "lockmanager-fail-closelock": "No s'ha pogut bloquejar el fitxer per «$1».",
-       "lockmanager-fail-deletelock": "No s'ha pogut suprimir el fitxer de bloqueig per «$1».",
-       "lockmanager-fail-acquirelock": "No s'ha pogut adquirir el bloqueig de «$1».",
-       "lockmanager-fail-openlock": "No s'ha pogut obrir el fitxer de bloqueig de «$1».",
-       "lockmanager-fail-releaselock": "No s'ha pogut alliberar el bloqueig de «$1».",
-       "lockmanager-fail-db-bucket": "No s'han pogut contactar un nombre suficient de bases de bloqueig en el cubell $1.",
-       "lockmanager-fail-db-release": "No s'han pogut alliberar els bloquejos a la base de dades $1.",
-       "lockmanager-fail-svr-acquire": "No s'han pogut aconseguir els bloquejos al servidor $1.",
-       "lockmanager-fail-svr-release": "No s'han pogut alliberar els bloquejos al servidor $1.",
+       "lockmanager-notlocked": "No s'ha pogut desblocar «$1»; no és blocat.",
+       "lockmanager-fail-closelock": "No s'ha pogut blocar el fitxer per «$1».",
+       "lockmanager-fail-deletelock": "No s'ha pogut suprimir el fitxer de blocatge per «$1».",
+       "lockmanager-fail-acquirelock": "No s'ha pogut adquirir el blocatge de «$1».",
+       "lockmanager-fail-openlock": "No s'ha pogut obrir el fitxer de blocatge de «$1».",
+       "lockmanager-fail-releaselock": "No s'ha pogut alliberar el blocatge de «$1».",
+       "lockmanager-fail-db-bucket": "No s'han pogut contactar un nombre suficient de bases de blocatge en el cubell $1.",
+       "lockmanager-fail-db-release": "No s'han pogut alliberar els blocatges a la base de dades $1.",
+       "lockmanager-fail-svr-acquire": "No s'han pogut aconseguir els blocatges al servidor $1.",
+       "lockmanager-fail-svr-release": "No s'han pogut alliberar els blocatges al servidor $1.",
        "zip-file-open-error": "S'ha trobat un error en obrir l'arxiu ZIP per a fer-hi comprovacions.",
        "zip-wrong-format": "El fitxer especificat no és un arxiu ZIP.",
        "zip-bad": "El fitxer està corrupte o és un arxiu ZIP il·legible.\nNo s'hi ha pogut comprovar la seguretat.",
        "enotif_body_intro_moved": "La pàgina $1 de {{SITENAME}} ha estat reanomenada el $PAGEEDITDATE per {{gender:$2|$2}}. Aneu a $3 per veure la revisió actual.",
        "enotif_body_intro_restored": "La pàgina $1 de {{SITENAME}} ha estat restaurada el $PAGEEDITDATE per {{gender:$2|$2}}. Aneu a $3 per veure la revisió actual.",
        "enotif_body_intro_changed": "La pàgina $1 de {{SITENAME}} ha estat canviada el $PAGEEDITDATE per {{gender:$2|$2}}. Aneu a $3 per veure la revisió actual.",
-       "enotif_lastvisited": "Vegeu $1 per a tots els canvis que s'han fet d'ençà de la vostra darrera visita.",
-       "enotif_lastdiff": "Consulteu $1 per a visualitzar aquest canvi.",
+       "enotif_lastvisited": "Per a tots els canvis que s'han fet d'ençà de la vostra darrera visita, vegeu $1",
+       "enotif_lastdiff": "Per a visualitzar aquest canvi, consulteu $1",
        "enotif_anon_editor": "usuari anònim $1",
        "enotif_body": "Benvolgut/uda $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nResum de l'editor: $PAGESUMMARY $PAGEMINOREDIT\n\nContacteu amb l'editor:\ncorreu: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nNo rebreu més notificacions en cas de més activitat a menys que visiteu aquesta pàgina havent iniciat sessió.\nTambé podeu canviar el mode de notificació de les pàgines que vigileu en la vostra llista de seguiment.\n\nEl servei de notificacions del projecte {{SITENAME}}\n\n--\nPer a canviar les opcions de notificació per correu electrònic aneu a\n{{canonicalurl:{{#special:Preferences}}}}\n\nPer a canviar les opcions de la vostra llista de seguiment aneu a\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPer eliminar la pàgina de la vostra llista de seguiment aneu a\n$UNWATCHURL\n\nSuggeriments i ajuda:\n$HELPPAGE",
        "created": "creada",
        "protectexpiry": "Data d'expiració",
        "protect_expiry_invalid": "Data d'expiració no vàlida",
        "protect_expiry_old": "El temps de termini ja ha passat.",
-       "protect-unchain-permissions": "Desbloqueja les opcions de protecció avançades",
+       "protect-unchain-permissions": "Desbloca les opcions de protecció avançades",
        "protect-text": "Aquí podeu visualitzar i canviar el nivell de protecció de la pàgina «$1». Assegureu-vos de seguir les polítiques existents.",
-       "protect-locked-blocked": "No podeu canviar els nivells de protecció mentre estigueu bloquejats. Ací hi ha els\nparàmetres actuals de la pàgina '''$1''':",
-       "protect-locked-dblock": "No poden canviar-se els nivells de protecció a casa d'un bloqueig actiu de la base de dades.\nAcí hi ha els paràmetres actuals de la pàgina '''$1''':",
+       "protect-locked-blocked": "No podeu canviar els nivells de protecció mentre estigueu blocat. Ací hi ha els\nparàmetres actuals de la pàgina <strong>$1</strong>:",
+       "protect-locked-dblock": "No poden canviar-se els nivells de protecció a casa d'un blocatge actiu de la base de dades.\nAcí hi ha els paràmetres actuals de la pàgina '''$1''':",
        "protect-locked-access": "El vostre compte no té permisos per a canviar els nivells de protecció de la pàgina.\nAcí es troben els paràmetres actuals de la pàgina '''$1''':",
        "protect-cascadeon": "Aquesta pàgina es troba protegida actualment perquè està inclosa en {{PLURAL:$1|la següent pàgina que té|les següents pàgines que tenen}} activada una protecció en cascada. \nCanviar el nivell de protecció d'aquesta pàgina no afectarà la protecció en cascada.",
        "protect-default": "Permet tots els usuaris",
        "sp-contributions-newbies": "Mostra les contribucions dels usuaris novells",
        "sp-contributions-newbies-sub": "Per a novells",
        "sp-contributions-newbies-title": "Contribucions dels comptes d'usuari més nous",
-       "sp-contributions-blocklog": "Registre de bloquejos",
+       "sp-contributions-blocklog": "Registre de blocatges",
        "sp-contributions-suppresslog": "contribucions suprimides de {{GENDER:$1|l'usuari|la usuària}}",
        "sp-contributions-deleted": "Contribucions de {{GENDER:$1|l’usuari|la usuària}} esborrades",
        "sp-contributions-uploads": "càrregues",
        "ipaddressorusername": "Adreça IP o nom de l'usuari",
        "ipbexpiry": "Venciment",
        "ipbreason": "Motiu:",
-       "ipbreason-dropdown": "*Motius de bloqueig més freqüents\n** Inserció d'informació falsa\n** Supressió de contingut sense justificació\n** Inserció d'enllaços promocionals (spam)\n** Inserció de contingut sense cap sentit\n** Conducta intimidatòria o hostil\n** Abús de comptes d'usuari múltiples\n** Nom d'usuari no acceptable",
+       "ipbreason-dropdown": "*Motius de blocatge més freqüents\n** Inserció d'informació falsa\n** Supressió de contingut sense justificació\n** Inserció d'enllaços promocionals (spam)\n** Inserció de contingut sense cap sentit\n** Conducta intimidatòria o hostil\n** Abús de comptes d'usuari múltiples\n** Nom d'usuari no acceptable",
        "ipb-hardblock": "Impedeix que els usuaris registrats puguin editar des d'aquesta adreça IP",
        "ipbcreateaccount": "Impedeix la creació de comptes",
        "ipbemailban": "Impedeix que l'usuari enviï correus electrònics",
        "ipbenableautoblock": "Bloca l'adreça IP d'aquest usuari, i totes les subseqüents adreces des de les quals intenti registrar-se",
-       "ipbsubmit": "Bloqueja aquesta adreça",
+       "ipbsubmit": "Bloca aquest usuari",
        "ipbother": "Un altre termini",
        "ipboptions": "2 hores:2 hours,1 dia:1 day,3 dies:3 days,1 setmana:1 week,2 setmanes:2 weeks,1 mes:1 month,3 mesos:3 months,6 mesos:6 months,1 any:1 year,infinit:infinite",
        "ipbhidename": "Amaga el nom d'usuari de les edicions i llistes",
        "ipb-confirm": "Confirma el blocatge",
        "badipaddress": "L'adreça IP no té el format correcte.",
        "blockipsuccesssub": "S'ha blocat amb èxit",
-       "blockipsuccesstext": "S'ha {{GENDER:$1|blocat|blocada}} [[Special:Contributions/$1|$1]] .<br />\nVegeu la [[Special:BlockList|llista de bloqueigs]] per revisar-los.",
+       "blockipsuccesstext": "S'ha {{GENDER:$1|blocat}} [[Special:Contributions/$1|$1]].<br />\nVegeu la [[Special:BlockList|llista de blocatges]] per revisar-los.",
        "ipb-blockingself": "Esteu a punt de blocar el vostre propi compte! Esteu segur de voler-ho fer?",
        "ipb-confirmhideuser": "Esteu a punt de blocar un usuari amb l'opció d'amagar el seu nom. Això suprimirà el seu nom a totes les llistes i registres. Esteu segur de voler-ho fer?",
        "ipb-confirmaction": "Si esteu segur que voleu fer-ho, marqueu el camp «{{int:ipb-confirm}}» a la part inferior.",
        "ipb-edit-dropdown": "Edita les raons per a blocar",
        "ipb-unblock-addr": "Desbloca $1",
        "ipb-unblock": "Desbloca un usuari o una adreça IP",
-       "ipb-blocklist": "Llista els bloquejos existents",
+       "ipb-blocklist": "Llista els blocatges existents",
        "ipb-blocklist-contribs": "Contribucions de {{GENDER:$1|$1}}",
        "ipb-blocklist-duration-left": "$1 restant",
        "unblockip": "Desbloca l'usuari",
-       "unblockiptext": "Empreu el següent formulari per restaurar\nl'accés a l'escriptura a una adreça IP o un usuari prèviament bloquejat.",
+       "unblockiptext": "Empreu el següent formulari per restaurar l'accés d'escriptura a una adreça IP o un usuari prèviament blocat.",
        "ipusubmit": "Desbloca aquesta adreça",
-       "unblocked": "S'ha desbloquejat l'{{GENDER:$1|usuari|usuària}} [[User:$1|$1]]",
+       "unblocked": "S'ha desblocat l'{{GENDER:$1|usuari|usuària}} [[User:$1|$1]]",
        "unblocked-range": "s'ha desblocat $1",
-       "unblocked-id": "S'ha eliminat el bloqueig de $1",
-       "unblocked-ip": "[[Special:Contributions/$1|$1]] ha estat desbloquejat.",
+       "unblocked-id": "S'ha eliminat el blocatge de $1",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] ha estat desblocat.",
        "blocklist": "Usuaris blocats",
        "autoblocklist-submit": "Cerca",
        "ipblocklist": "Usuaris blocats",
        "ipblocklist-legend": "Cerca un usuari blocat",
-       "blocklist-userblocks": "Amaga bloquejos de compte",
-       "blocklist-tempblocks": "Amaga bloquejos temporals",
-       "blocklist-addressblocks": "Amaga bloquejos d'una sola IP",
-       "blocklist-rangeblocks": "Amaga els bloquejos de rang",
+       "blocklist-userblocks": "Amaga blocatges de compte",
+       "blocklist-tempblocks": "Amaga els blocatges temporals",
+       "blocklist-addressblocks": "Amaga blocatges d'una sola IP",
+       "blocklist-rangeblocks": "Amaga els blocatges de rang",
        "blocklist-timestamp": "Marca horària",
        "blocklist-target": "Usuari blocat",
        "blocklist-expiry": "Caduca",
        "blocklist-by": "Administrador que ha blocat",
-       "blocklist-params": "Paràmetres del bloqueig",
+       "blocklist-params": "Paràmetres del blocatge",
        "blocklist-reason": "Motiu",
        "ipblocklist-submit": "Cerca",
-       "ipblocklist-localblock": "Bloqueig local",
-       "ipblocklist-otherblocks": "Altres {{PLURAL:$1|bloquejos|bloquejos}}",
+       "ipblocklist-localblock": "Blocatge local",
+       "ipblocklist-otherblocks": "Altres {{PLURAL:$1|blocatges}}",
        "infiniteblock": "infinit",
        "expiringblock": "venç el $1 a $2",
        "anononlyblock": "només usuari anònim",
-       "noautoblockblock": "S'ha inhabilitat el bloqueig automàtic",
+       "noautoblockblock": "S'ha inhabilitat el blocatge automàtic",
        "createaccountblock": "s'ha blocat la creació de nous comptes",
        "emailblock": "s'ha blocat l'enviament de correus electrònics",
        "blocklist-nousertalk": "no podeu modificar la pàgina de discussió pròpia",
-       "ipblocklist-empty": "La llista de bloqueigs està buida.",
-       "ipblocklist-no-results": "L'adreça IP o nom d'usuari sol·licitat no està bloquejat.",
-       "blocklink": "bloqueja",
+       "ipblocklist-empty": "La llista de blocatges està buida.",
+       "ipblocklist-no-results": "L'adreça IP o nom d'usuari sol·licitat no està blocat.",
+       "blocklink": "bloca",
        "unblocklink": "desbloca",
        "change-blocklink": "canvia el blocatge",
        "contribslink": "contribucions",
        "emaillink": "correu electrònic",
-       "autoblocker": "Se us ha blocat automàticament perquè la vostra adreça IP ha estat recentment utilitzada per l'usuari ''[[User:$1|$1]]''.\nEl motiu del bloqueig de $1 és: «$2».",
-       "blocklogpage": "Registre de bloquejos",
-       "blocklog-showlog": "S'ha blocat aquest usuari prèviament.\nPer més detalls, a sota es mostra el registre de bloquejos:",
+       "autoblocker": "Se us ha blocat automàticament perquè la vostra adreça IP ha estat recentment utilitzada per l'usuari ''[[User:$1|$1]]''.\nEl motiu del blocatge de $1 és: «$2».",
+       "blocklogpage": "Registre de blocatges",
+       "blocklog-showlog": "S'ha blocat aquest usuari prèviament.\nPer més detalls, a sota es mostra el registre de blocatges:",
        "blocklog-showsuppresslog": "S'ha blocat i amagat aquest usuari prèviament.\nPer més detalls, a sota es mostra el registre de supressions:",
        "blocklogentry": "ha blocat l'{{GENDER:$1|usuari|usuària}} [[$1]] per un període de: $2 $3",
        "reblock-logentry": "canviades les opcions del blocatge a [[$1]] amb caducitat a $2, $3",
-       "blocklogtext": "Això és una relació d'accions de bloqueig i desbloqueig. Les adreces IP bloquejades automàticament no apareixen. Vegeu la [[Special:BlockList|llista de bloqueigs]] per a veure una llista dels actuals bloqueigs operatius.",
+       "blocklogtext": "Això és una relació d'accions de blocatge i desblocatge. Les adreces IP blocades automàticament no apareixen. Aneu a la [[Special:BlockList|llista de blocatges]] per a veure una llista dels blocatges vigents.",
        "unblocklogentry": "ha desblocat $1",
        "block-log-flags-anononly": "només els usuaris anònims",
        "block-log-flags-nocreate": "s'ha desactivat la creació de comptes",
-       "block-log-flags-noautoblock": "sense bloqueig automàtic",
+       "block-log-flags-noautoblock": "sense blocatge automàtic",
        "block-log-flags-noemail": "correu-e blocat",
        "block-log-flags-nousertalk": "no podeu modificar la pàgina de discussió pròpia",
        "block-log-flags-angry-autoblock": "autoblocatge avançat activat",
        "block-log-flags-hiddenname": "nom d'usuari ocult",
-       "range_block_disabled": "La facultat dels administradors per a crear bloquejos de rang està desactivada.",
+       "range_block_disabled": "La facultat dels administradors per a crear blocatges de rang està desactivada.",
        "ipb_expiry_invalid": "Data d'acabament no vàlida.",
        "ipb_expiry_old": "El temps de vençuda és en el passat.",
        "ipb_expiry_temp": "Els blocatges amb ocultació de nom d'usuari haurien de ser permanents.",
        "ipb_hide_invalid": "No s'ha pogut eliminar el compte; té més {{PLURAL:$1|d'una edició|de $1 edicions}}.",
        "ipb_already_blocked": "«$1» ja està blocat",
        "ipb-needreblock": "L'usuari $1 ja està blocat. Voleu canviar-ne els paràmetres del blocatge?",
-       "ipb-otherblocks-header": "Altres {{PLURAL:$1|bloquejos|bloquejos}}",
+       "ipb-otherblocks-header": "Altres {{PLURAL:$1|blocatges}}",
        "unblock-hideuser": "No podeu desblocar aquest usuari, perquè el seu nom d'usuari està ocult.",
-       "ipb_cant_unblock": "Errada: No s'ha trobat el núm. ID de bloqueig $1. És possible que ja s'haguera desblocat.",
-       "ipb_blocked_as_range": "Error: L'adreça IP $1 no està blocada directament i per tant no pot ésser desbloquejada. Ara bé, sí que ho està per formar part del rang $2 que sí que pot ser desblocat.",
+       "ipb_cant_unblock": "Errada: No s'ha trobat el núm. ID de blocatge $1. És possible que ja s'haguera desblocat.",
+       "ipb_blocked_as_range": "Error: L'adreça IP $1 no està blocada directament i per tant no pot ésser desblocada. Ara bé, sí que ho està per formar part del rang $2 que sí que pot ser desblocat.",
        "ip_range_invalid": "L’interval d’adreces IP no és vàlid.",
-       "ip_range_toolarge": "No són permesos els bloquejos de rangs més grans que /$1.",
-       "proxyblocker": "Bloqueig de proxy",
+       "ip_range_toolarge": "No són permesos els blocatges de rangs més grans que /$1.",
+       "proxyblocker": "Blocatge de proxy",
        "proxyblockreason": "S'ha blocat la vostra adreça IP perquè és un proxy obert. Contactau el vostre proveïdor d'Internet o servei tècnic i informau-los d'aquest seriós problema de seguretat.",
        "sorbsreason": "La vostra adreça IP està llistada com a servidor intermediari (''proxy'') obert dins la llista negra de DNS que fa servir el projecte {{SITENAME}}.",
        "sorbs_create_account_reason": "La vostra adreça IP està llistada com a servidor intermediari (''proxy'') obert a la llista negra de DNS que utilitza el projecte {{SITENAME}}. No podeu crear-vos-hi un compte",
        "softblockrangesreason": "Les aportacions anònimes no són admeses des de la vostra adreça IP ($1). Inicieu una sessió.",
-       "xffblockreason": "Una adreça IP present en la capçalera X-Forwarded-For, sigui vostra o la d'un servidor proxy que esteu utilitzant, ha estat blocada. El motiu inicial del bloqueig és: $1",
+       "xffblockreason": "Una adreça IP present en la capçalera X-Forwarded-For, sigui vostra o la d'un servidor proxy que esteu utilitzant, ha estat blocada. El motiu inicial del blocatge és: $1",
        "cant-see-hidden-user": "L'usuari que esteu intentant blocar ja ha estat blocat i ocultat. Com que no teniu el permís hideuser no podeu veure ni modificar el seu blocatge.",
        "ipbblocked": "No podeu blocar o desblocar altres usuaris, perquè vós {{GENDER:|mateix|mateixa|mateix}} esteu {{GENDER:|blocat|blocada|blocat}}.",
-       "ipbnounblockself": "No teniu permís per a treure el vostre bloqueig",
+       "ipbnounblockself": "No teniu permís per a treure el vostre blocatge",
        "lockdb": "Bloca la base de dades",
        "unlockdb": "Desbloca la base de dades",
-       "lockdbtext": "Bloquejar la base de dades inhabilitarà a tots els usuaris per a modificar pàgines, canviar preferències, editar la llista de seguiment i altres accions que requereixen canvis en la base de dades.\nConfirmeu que això és el que voleu fer, i sobretot no us oblideu de desblocar la base de dades quan acabeu el manteniment.",
+       "lockdbtext": "Blocar la base de dades inhabilitarà tots els usuaris per a modificar pàgines, canviar preferències, editar la llista de seguiment i altres accions que requereixen canvis en la base de dades.\nConfirmeu que això és el que voleu fer, i sobretot no us oblideu de desblocar la base de dades quan acabeu el manteniment.",
        "unlockdbtext": "Desblocant la base de dades es restaurarà l'habilitat de tots\nels usuaris d'editar pàgines, canviar les preferències, editar els llistats de seguiment, i\naltres accions que requereixen canvis en la base de dades.\nConfirmeu que això és el que voleu fer.",
        "lockconfirm": "Sí, realment vull blocar la base de dades.",
        "unlockconfirm": "Sí, realment vull desblocar la base de dades.",
        "lockbtn": "Bloca la base de dades",
        "unlockbtn": "Desbloca la base de dades",
        "locknoconfirm": "No heu respost al diàleg de confirmació.",
-       "lockdbsuccesssub": "S'ha bloquejat la base de dades",
-       "unlockdbsuccesssub": "S'ha eliminat el bloqueig de la base de dades",
-       "lockdbsuccesstext": "S'ha bloquejat la base de dades.<br />\nRecordeu-vos de [[Special:UnlockDB|treure el bloqueig]] quan hàgiu acabat el manteniment.",
-       "unlockdbsuccesstext": "S'ha desbloquejat la base de dades del projecte {{SITENAME}}.",
-       "lockfilenotwritable": "No es pot modificar el fitxer de la base de dades de bloquejos. Per a blocar o desblocar la base de dades, heu de donar-ne permís de modificació al servidor web.",
-       "databaselocked": "La bases de dades ja està bloquejada.",
-       "databasenotlocked": "La base de dades no està bloquejada.",
+       "lockdbsuccesssub": "S'ha blocat la base de dades",
+       "unlockdbsuccesssub": "S'ha eliminat el blocatge de la base de dades",
+       "lockdbsuccesstext": "S'ha blocat la base de dades.<br />\nRecordeu-vos de [[Special:UnlockDB|treure el blocatge]] quan hàgiu acabat el manteniment.",
+       "unlockdbsuccesstext": "S'ha desblocat la base de dades del projecte {{SITENAME}}.",
+       "lockfilenotwritable": "No es pot modificar el fitxer de la base de dades de blocatges. Per a blocar o desblocar la base de dades, heu de donar-ne permís de modificació al servidor web.",
+       "databaselocked": "La bases de dades ja està blocada.",
+       "databasenotlocked": "La base de dades no està blocada.",
        "lockedbyandtime": "(per $1 el $2 a les $3)",
        "move-page": "Reanomena $1",
        "move-page-legend": "Reanomena la pàgina",
        "imageinvalidfilename": "El nom de fitxer indicat no és vàlid",
        "fix-double-redirects": "Actualitza també les redireccions que apuntin a l'article original",
        "move-leave-redirect": "Deixa enrere una redirecció",
-       "protectedpagemovewarning": "'''AVÍS: Aquesta pàgina està bloquejada i només els usuaris que tenen drets d'administrador la poden reanomenar.\nA continuació es mostra la darrera entrada del registre com a referència:",
-       "semiprotectedpagemovewarning": "'''Nota:''' Aquesta pàgina està bloquejada i només els usuaris registrats la poden moure.\nA continuació es mostra la darrera entrada del registre com a referència:",
+       "protectedpagemovewarning": "'''AVÍS: Aquesta pàgina està protegida i només els usuaris que tenen drets d'administrador la poden reanomenar.\nA continuació es mostra la darrera entrada del registre com a referència:",
+       "semiprotectedpagemovewarning": "'''Nota:''' Aquesta pàgina està blocada i només els usuaris registrats la poden moure.\nA continuació es mostra la darrera entrada del registre com a referència:",
        "move-over-sharedrepo": "[[:$1]] ja existeix al repositori compartit. Traslladant un fitxer a aquest títol se substituirà el fitxer compartit.",
        "file-exists-sharedrepo": "El nom de fitxer escollit ja s'utilitza al dipòsit compartit. Escolliu un altre nom.",
        "export": "Exportació de pàgines",
        "tags-create-reason": "Motiu:",
        "tags-create-submit": "Crea",
        "tags-create-no-name": "Heu d'especificar un nom d'etiqueta.",
-       "tags-create-invalid-chars": "Els noms d'etiqueta no han de contenir comes (<code>,</code>) o barres (<code>/</code>).",
+       "tags-create-invalid-chars": "Els noms d'etiqueta no han de contenir comes (<code>,</code>), barres verticals(<code>|</code>) ni barres obliqües (<code>/</code>).",
        "tags-create-invalid-title-chars": "Els noms d'etiqueta no poden contenir caràcters que no es poden usar en els títols de pàgina.",
        "tags-create-already-exists": "L'etiqueta \"$1\" ja existeix.",
        "tags-create-warnings-above": "{{PLURAL:$2|S'ha registrat la següent advertència|S'han registrat les següents advertències}} durant la creació de l'etiqueta \"$1\":",
index a4f1d8f..3713ea1 100644 (file)
                ]
        },
        "tog-underline": "Pòdsztrëchiwùjë lënczi:",
-       "tog-hideminor": "Zatacë môłi edicëje w slédnëch zmianach",
-       "tog-hidepatrolled": "Zatacë sprôdzoné edicëje slédnych zjinakach",
+       "tog-hideminor": "Zatacë môłi edicëje w slédnych zjinakach",
+       "tog-hidepatrolled": "Zatacë sprôdzoné edicëje slédnych zjinakach",
        "tog-newpageshidepatrolled": "Zatacë sprôdzoné edicëje w lësce nowich starnów",
-       "tog-hidecategorization": "Zatacë kategòrizacjã strón",
-       "tog-extendwatchlist": "Rozwinie lëstã ùzérónëch artiklów bë wëskrzënic wszëtczé zmianë, ni le blós slédné",
-       "tog-usenewrc": "Ùżëjé rozwinãti wëzdrzatk slédnych zjinaków (nót je JavaScript)",
+       "tog-hidecategorization": "Zatacë kategòrizacëjã starnów",
+       "tog-extendwatchlist": "Rozwinië lëstã ùzérónëch artiklów bë wëskrzënic wszëtczé zmianë, ni le blós slédné",
+       "tog-usenewrc": "Grëpùjë zjinaczi wedle starnów na lëscé slédnych zjinaków ë ùzérónych",
        "tog-numberheadings": "Aùtomatné numerowanié nôgłówków",
        "tog-showtoolbar": "Wëskrzëni listwã nôrzãdzów edicje",
        "tog-editondblclick": "Editëjë starnë przez dëbeltné klëkniãcé",
@@ -67,7 +67,7 @@
        "thursday": "czwiôrtk",
        "friday": "piątk",
        "saturday": "sobòta",
-       "sun": "nie",
+       "sun": "Nie.",
        "mon": "pòn",
        "tue": "wtó",
        "wed": "str",
        "category-subcat-count": "{{PLURAL:$2|Na kategòrrjô zamëkô w se blós nôslédną pòdkategòrëjã.|Na kategòrëjô mô {{PLURAL:$1|pòdkategòrëje|$1 pòdkategòrëjôw}}, w $2 kategòrëjach.}}",
        "category-subcat-count-limited": "Na kategòrëjô zamëkô w se {{PLURAL:$1|1 pòdkategòrëjã|$1 pòdkategòrëje|$1 pòdkategòrëjów}}.",
        "category-article-count": "{{PLURAL:$2|Na kategòrëjô zamëkôw w se blós jedną starnã.|Niżi mómë $1 westrzód $2 starów w ti kategòrëji.}}",
+       "category-file-count": "{{PLURAL:$2|Na kategòrëjô zamëkô w se blós jeden lopk.|W ti kategòrëji {{PLURAL:$1|je 1 lopk|są $1 lopczi|je $1 lopków}} z oòglowi wielënë $2 lopków.}}",
        "listingcontinuesabbrev": "kònt.",
        "about": "Ò serwise",
        "article": "Artikel",
        "newwindow": "(òtmëkô sã w nowim òczenkù)",
-       "cancel": "Anulujë",
+       "cancel": "Anulëje",
        "moredotdotdot": "Wicy...",
        "mypage": "Starna",
-       "mytalk": "Diskùsjô",
+       "mytalk": "Diskùsëjô",
        "anontalk": "Diskùsjô",
        "navigation": "Nawigacëjô",
        "and": "&#32;ë",
-       "qbfind": "Nalézë",
-       "qbbrowse": "Przezeranié",
-       "qbedit": "Edicëjô",
-       "qbpageoptions": "Òptacëje starnë",
-       "qbmyoptions": "Mòje òptacëje",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Dzéjania",
        "namespaces": "Rum mionów:",
        "variants": "Wariantë",
-       "navigation-heading": "Nawigacyjné menu",
+       "navigation-heading": "Nawigacjowé menu",
        "errorpagetitle": "Fela",
        "returnto": "Nazôd do starnë $1.",
        "tagline": "Z {{SITENAME}}",
        "search": "Szëkba",
        "searchbutton": "Szëkba",
        "go": "Biôj!",
-       "searcharticle": "Biôj!",
+       "searcharticle": "Biéj!",
        "history": "Historëjô starnë",
        "history_short": "Historëjô",
        "updatedmarker": "zaktualnioné òd mòji slédny gòscënë",
-       "printableversion": "Wersjô do drëkù",
+       "printableversion": "Wersëjô do drëkù",
        "permalink": "Prosti lënk",
        "print": "Drëkùjë",
-       "view": "Pòdzér",
+       "view": "Pòdzérk",
+       "view-foreign": "Òbôczë w {{grammar:MS.lp|$1}}",
        "edit": "Edicëjô",
        "create": "Ùsadzë",
-       "editthispage": "Editëjë nã starnã",
-       "create-this-page": "Ùsadzë nã starnã",
+       "create-local": "Dodôj lokalny òpisënk",
        "delete": "Rëmôj",
-       "deletethispage": "Rëmôj nã starnã",
        "undelete_short": "Doprowadzë nazôd {{PLURAL:$1|1 edicjã|$1 edicje|$1 edicjów}}",
        "protect": "Zazychrëjë",
        "protect_change": "zmieni",
-       "protectthispage": "Zazychrëjë nã starnã",
        "unprotect": "Òdzychrëjë",
-       "unprotectthispage": "Òdzychrëjë nã starnã",
        "newpage": "Nowô starna",
-       "talkpage": "Diskùsjô starnë",
-       "talkpagelinktext": "diskùsjô",
+       "talkpagelinktext": "diskùsëjô",
        "specialpage": "Specjalnô starna",
        "personaltools": "Priwatné przërëchtënczi",
-       "articlepage": "Starna artikla",
-       "talk": "Diskùsjô",
+       "talk": "Diskùsëjô",
        "views": "Pòdzérków",
        "toolbox": "Przërëchtënczi",
-       "userpage": "Wëskrzëni starnã brëkòwnika",
-       "projectpage": "Wëskrzëni stranã ùdbë",
        "imagepage": "Starna lopka",
        "mediawikipage": "Wëskrzëni starnã wiadła",
        "templatepage": "Wëskrzëni starnã wëzdrzatkù",
        "otherlanguages": "W jinych jãzëkach",
        "redirectedfrom": "(Przeczerowóné z $1)",
        "redirectpagesub": "Przeczerëjë starnã",
-       "lastmodifiedat": "Na starna bëła slédno editowónô ò $2, $1;",
+       "redirectto": "Przeczerëjë do:",
+       "lastmodifiedat": "Na starna bëła slédno editowónô: $1, $2.",
        "viewcount": "Na starna je òbzéranô ju {{PLURAL:$1|jeden rôz|$1 razy}}",
        "protectedpage": "Starna je zazychrowónô",
        "jumpto": "Skòczë do:",
        "currentevents-url": "Project:Aktualné wëdarzenia",
        "disclaimers": "Prawné zastrzedżi",
        "disclaimerpage": "Project:Prawné zastrzedżi",
-       "edithelp": "Pòmòc do edicëji",
+       "edithelp": "Pòmòc w edicëji",
        "helppage-top-gethelp": "Pòmòc",
        "mainpage": "Przédnô starna",
        "mainpage-description": "Przédnô starna",
        "nstab-media": "Starna lopków",
        "nstab-special": "Specjalnô starna",
        "nstab-project": "meta-starna",
-       "nstab-image": "Òbrôzk",
+       "nstab-image": "Lopk",
        "nstab-mediawiki": "Ògłosënk",
        "nstab-template": "Szablóna",
        "nstab-help": "Pòmòc",
        "mainpage-nstab": "Przédnô starna",
        "nosuchaction": "Felënk taczégò dzéjaniô",
        "nosuchactiontext": "Dzéjanié pòdóné w adrese URL nie je dobré.\nMòzlëwą przëczëną je lëterowô zmiłka w URL abò lëchi lënk.\nTo mòże bëc téż fela softwôrë brëkòwóny przez {{SITENAME}}.",
-       "nosuchspecialpage": "Nie da taczi specjalny starnë",
+       "nosuchspecialpage": "Felënk taczi specjalny starnë",
+       "nospecialpagetext": "<strong>Felënk zapëtóny speclajny starnë.</strong>\n\nLësta przistãpnych specjalnych starnó je [[Special:SpecialPages|tuwò]].",
        "error": "Fela",
        "databaseerror": "Fela w pòdôwkòwi baze",
        "readonly": "Baza pòdôwków je zablokòwónô",
        "filenotfound": "Ni mòże nalezc lopka \"$1\".",
        "formerror": "Fela: ni mòże wëslac fòrmùlara",
        "badarticleerror": "Nie dô zrobic ti akcëji na ti starnie.",
-       "badtitle": "Òchëbny titel",
-       "badtitletext": "Pòdóny titel starnë je òchëbny. Gwësno są w nim znaczi, chtërnëch brëkòwanié je zakôzané abò je pùsti.",
+       "badtitle": "Lëchi titel",
+       "badtitletext": "Pòdóny titel starnë nie je pòprôwny. Gwësno je òn pùsti, abò zamëkô w se mërczi chtërnëch brëkòwanié je zakôzané.",
        "viewsource": "Zdrojowi tekst",
        "editinginterface": "'''ÒSTRZÉGA:''' Editëjesz starnã, jakô zamëkô w se tekst interfejsu softwôrë. Wszëtczé zmianë tu zrobioné bãdze widzec na interfejse jinszëch brëkòwników.\nPrzemëszlë dolmaczënié na [https://translatewiki.net/wiki/Main_Page?setlang=csb translatewiki.net], ekstra ùdbie lokalizacëji softwôrë MediaWiki.",
        "logouttext": "'''Jes wëlogòwóny.'''\nMòżesz robic dali na {{SITENAME}} jakno anonimòwi brëkòwnik abò sã <span class='plainlinks'>[$1 wlogòwac]</span> znowa jakno równy, a bò jinszi brëkòwnik.\nBôczë, że do czasu wëczëszczenia pòdrãczny pamiãcë przezérnika, niejedné starnë bãdą wëzdrzëc jakbë të bëł wlogòwóny.",
        "yourname": "Miono brëkòwnika",
-       "userlogin-yourname": "Pòzwa brëkòwnika",
+       "userlogin-yourname": "Miono brëkòwnika",
+       "userlogin-yourname-ph": "Wpiszë swòjé miono brëkòwnika",
        "yourpassword": "Twòja parola",
-       "createacct-yourpassword-ph": "Wprowadzë hasło do przistãpù",
+       "userlogin-yourpassword": "Parola",
+       "userlogin-yourpassword-ph": "Wprowadzë swòją parolã",
+       "createacct-yourpassword-ph": "Wprowôdzë parolã przistãpù",
        "yourpasswordagain": "Pòwtórzë parolã",
-       "createacct-yourpasswordagain": "Pòcwierdzë hasło",
-       "createacct-yourpasswordagain-ph": "Wprowadzë hasło do przistãpù jesz rôz",
-       "userlogin-remembermypassword": "Nie wëlogòwùj mie",
+       "createacct-yourpasswordagain": "Pòcwierdzë parolã",
+       "createacct-yourpasswordagain-ph": "Wprowôdzë parolã przistãpù znowa",
+       "userlogin-remembermypassword": "Nie wëlogùjë mie",
        "yourdomainname": "Twòjô domena",
        "login": "Wlogùjë mie",
        "nav-login-createaccount": "Logòwanié",
        "userlogout": "Wëlogòwanié",
        "notloggedin": "Felëje logòwóniô",
        "userlogin-noaccount": "Ni môsz kònta?",
+       "userlogin-joinproject": "Dołączë do {{GRAMMAR:D.lp|{{SITENAME}}}}",
        "createaccount": "Założë nowé kònto",
-       "userlogin-resetpassword-link": "ZabôcziÅ\82 jes hasÅ\82o?",
+       "userlogin-resetpassword-link": "Zabëtô parola?",
        "userlogin-helplink2": "Pòmòc przë logòwaniu",
-       "createacct-emailoptional": "Adres e-mail (òptacëjno)",
-       "createacct-email-ph": "Pòdôj swój adres e-mail.",
+       "createacct-emailoptional": "Adresa e-mail (òptacjowò)",
+       "createacct-email-ph": "Wpiszë swóją e-mailową adresã.",
        "createaccountmail": "Ùżij timczasowégò hasła i wësli je na pòdóny adres e-mail.",
        "createacct-reason": "Przëczëna",
-       "createacct-submit": "Ùsadzë kònto",
+       "createacct-submit": "Ùsôdzë kònto",
+       "createacct-benefit-heading": "{{grammar:B.lp|{{SITENAME}}}} ùsôdzają lëdze taczi jak Të.",
+       "createacct-benefit-body1": "{{PLURAL:$1|edicëjô|edicëje|edicëjów}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|starna|starnë|starnów}}",
+       "createacct-benefit-body3": "{{PLURAL:$1|aktiwny brëkòwnik|aktiwnych brëkòwników}} w slédnym miesãcu",
        "badretype": "Wprowadzone parole jinaczą sã midze sobą.",
        "userexists": "To miono brëkòwnika je ju w ùżëcym. Proszã wëbrac jiné miono.",
        "loginerror": "Fela logòwaniô",
        "accountcreatedtext": "Kònto brëkòwnika dlô [[{{ns:User}}:$1|$1]], [[{{ns:User talk}}:$1|talk]] òstało ùsadzóné.",
        "createaccount-title": "Kònto ùsôdzoné dlô {{SITENAME}}",
        "loginlanguagelabel": "Jãzëk: $1",
-       "pt-login": "Wlogùj mie",
+       "pt-login": "Wlogùjë mie",
+       "pt-login-button": "Wlogùjë mie",
        "pt-createaccount": "Ùsadzë kònto",
-       "pt-userlogout": "Wëlogùj",
+       "pt-userlogout": "Wëlogùjë",
        "changepassword": "Zmiana parolë",
        "oldpassword": "Stôrô parola:",
        "newpassword": "Nowô parola",
        "retypenew": "Napiszë nową parolã jesz rôz",
        "resetpass-submit-loggedin": "Zmiana parolë",
        "resetpass-submit-cancel": "Anulujë",
+       "passwordreset": "Zresëtëjë parolã",
        "passwordreset-username": "Pòzwa brëkòwnika",
        "bold_sample": "Wëtłëszczony drëk",
        "bold_tip": "Wëtłëszczony drëk",
        "link_tip": "Bënowi lënk",
        "extlink_sample": "http://www.example.com titel lënka",
        "extlink_tip": "Bùtnowi lënk (pamiãtôj ò http:// prefiks)",
-       "headline_sample": "Tekst nagłówka",
-       "headline_tip": "Nagłówk 2 lédżi",
-       "nowiki_sample": "Wstôw tuwò niesfòrmatowóny tekst",
+       "headline_sample": "Tekst nadgłówka",
+       "headline_tip": "Nadgłówk 2 lédżi",
+       "nowiki_sample": "Wstawi tuwò niesfòrmatowóny tekst",
        "nowiki_tip": "Ignorëjë wiki-fòrmatowanié",
        "image_sample": "Przëmiôr.jpg",
        "image_tip": "Òbsôdzony lopk (n.p. òbrôzk)",
        "savearticle": "Zapiszë artikel",
        "preview": "Pòdzérk",
        "showpreview": "Wëskrzëni pòdzérk",
-       "showdiff": "Wëskrzëni zmianë",
-       "anoneditwarning": "<strong>Bôczë:</strong> Të nie jes wlogòwóny. Jeżlë wëkònôsz jakąs zmianã, twòja adresa IP mdze widocznô dlô wszëtczich. Jeżlë <strong>[$1 wlogùjesz sã]</strong> abò <strong>[$2 ùsadzysz kònto]</strong>twòje zjinaczi òstóną przëpisóné do kònta, co wicy mającë kònto òtrzimôsz rozmajité ùdogòdnienia.",
+       "showdiff": "Wëskrzëni zjinaczi",
+       "anoneditwarning": "<strong>Bôczë:</strong> Të nie jes wlogòwóny. Jeżlë wëkònôsz jakąs zmianã, twòja adresa IP mdze widocznô dlô wszëtczich. Jeżlë <strong>[$1 wlogùjesz sã]</strong> abò <strong>[$2 ùsadzysz kònto]</strong>twòje zjinaczi òstóną przëpisóné do kònta, co wicy mającë kònto dobëjesz rozmajité ùdogòdnienia.",
        "anonpreviewwarning": "Të nie jes wlogòwóny. Jeżlë wprowadzysz jaczés zjinaczi, twòja adresa IP mdze ùmieszczónô w historie edicji starnë.",
        "summary-preview": "Pòdzérk òpisënka:",
        "blockedtitle": "Brëkòwnik je zascëgóny",
        "accmailtitle": "Parola wësłónô.",
        "accmailtext": "Przëtrôfkòwò wëgenerowónô parola dlô [[User talk:$1|$1]] òsta wësłónô do $2. Parolã dlô negò nowégò kònta mòże zmienic pò wlogòwaniu na starnie <em>[[Special:ChangePassword|zjinaka parolë]]</em> .",
        "newarticle": "(Nowi)",
-       "newarticletext": "Môsz przëszłi z lënkù do starnë jaka jesz nie òbstoji.\nBë ùsôdzëc artikel, naczni pisac w kastce niżi (òb. [$1 starnã pòmòcë]\ndlô wicy wëdowiédzë).\nJeżlë jes të tuwò bez zmiłkã, le klëkni w swòjim przezérnikù knąpã '''nazôd'''.",
+       "newarticletext": "Môsz przëszłi z lënka do starnë jaka jesz nie òbstoji.\nBë ùsôdzëc artikel, naczni pisac w kastce niżi (òb. [$1 starnã pòmòcë]\ndlô wicy wëdowiédzë).\nJeżlë jes të tuwò bez zmiłkã, le klëkni w swòjim przezérnikù knąpã '''nazôd'''.",
        "anontalkpagetext": "----\n<em>To je starna diskùsje anonimòwégò brëkòwnika, chtëren nie ùsadzëł jesz swòjegò kònta, abò gò nie brëkùje.</em>\nAbë gò rozpòznac, ùżëwómë adresów IP.\nTakô adresa IP mòże bëc równak brëkòwónô przez wiele lëdzy.\nJeżlë jes anonimòwim brëkòwnikã i ùwôżôsz, że ne wiadła nie są do ce sczerowóné, tedë [[Special:CreateAccount|ùsadzë nowé kònto]] abò [[Special:UserLogin|wlogùj sã]], bë niechac niezrozmieniô z jinyma anonimòwima brëkòwnikama.''",
        "noarticletext": "Felëje starna ò tim titlu.\nMòżesz [[Special:Search/{{PAGENAME}}|szëkac za {{PAGENAME}} na jinych starnach]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} szëkac w logù] abò [{{fullurl:{{FULLPAGENAME}}|action=edit}} ùsadzëc nã starnã]</span>",
+       "noarticletext-nopermission": "Felëje starna ò tim titlu.\nMòżesz [[Special:Search/{{PAGENAME}}|szëkac za {{PAGENAME}} na jinych starnach]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} szëkac w logù] abò [{{fullurl:{{FULLPAGENAME}}|action=edit}} ùsadzëc nã starnã]</span>",
        "clearyourcache": "'''Bôczë: Pò zapisanim, mòże bãdzesz mùszôł òminąc pamiãc przezérnika bë òbaczëc zmianë.'''\n'''Mozilla / Firefox / Safari:''' przëtrzëmôj ''Shift'' òbczas klëkaniô na ''Zladëjë znowa'', abò wcësni ''Ctrl-F5'' abò ''Ctrl-R'' (''Command-R'' na kòmpùtrach Mac);\n'''Konqueror:''': klëkni na knąpã ''Zladëjë znowa'', abò wcësni ''F5'';\n'''Opera:''' wëczëszczë pòdrãczną pamiãc w ''Tools→Preferences'';\n'''Internet Explorer:'''przëtrzëmôj ''Ctrl'' òbczas klëkaniô na ''Zladëjë znowa'', abò wcësni ''Ctrl-F5''.",
        "updated": "(Zaktualnioné)",
        "previewnote": "<strong>To je blós pòdzérk.</strong>\n Artikel jesz nie je zapisóny!",
        "continue-editing": "Przeńdzë do pòla edicje.",
        "editing": "Edicëjô $1",
+       "creating": "Ùsôdzanié $1",
        "editingsection": "Edicëjô $1 (dzél)",
        "explainconflict": "Chtos sfórtowôł wprowadzëc swòją wersëjã artikla òbczôs Twòji edicëji.\nGórné pòle edicëji zamëkô w se tekst starnë aktualno zapisóny w pòdôwkòwi baze.\nTwòje zmianë są w dólnym pòlu edicëji.\nBë wprowadzëc swòje zmianë mùszisz zmòdifikòwac tekst z górnégò pòla.\n'''Blós''' tekst z górnégò pòla mdze zapisóny w baze czej wcësniesz \"$1\".",
        "yourtext": "Twój tekst",
        "hiddencategories": "Na starna przënôleżi do w {{PLURAL:$1|1 zatacony kategòrëji|$1 zataconych kategòrëjów}}:",
        "permissionserrorstext-withaction": "Ni môsz przëstãpù do $2, z {{PLURAL:$1|nôslédny przëczënë|nôslédnych przëczënów}}:",
        "recreate-moveddeleted-warn": "'''Bôczënk! Chcesz usadzëc starnã, chtërna wczasni òsta rëmniãtô.'''\n\nÙgwësni sã, czë pònowné ùsôdzenié ti starnë je kònieczné. \nNiżi je widzec register rëmaniów i zmian pòzwë ti starnë:",
+       "moveddeleted-notice": "Na starna òsta rëmniãtô.\nSpisënk rëmaniô ë zjinaków miona ti starnë je niżi.",
        "undo-summary": "Anulowanié wersje $1 aùtora [[Special:Contributions/$2|$2]] ([[User talk:$2|diskùsjô]])",
        "viewpagelogs": "Òbôczë rejestrë dzéjanió dlô ti starnë",
        "currentrev": "Aktualnô wersëjô",
        "currentrev-asof": "Aktualnô wersëjô na dzéń $1",
        "revisionasof": "Wersëjô z $1",
+       "revision-info": "Wersëjô z dnia $1 ùsôdztwa {{GENDER:$6|$2}}$7",
        "previousrevision": "← Stôrszô wersëjô",
        "nextrevision": "Nowszô wersëjô →",
        "currentrevisionlink": "Aktualnô wersëjô",
        "page_first": "zôczątk",
        "page_last": "kùńc",
        "histlegend": "Legenda: (aktualnô) = różnice w przërównanim do aktualny wersëje,\n(wczasniészô) = różnice w przërównanim do wczasniészi wersëje, D = drobné edicëje",
-       "history-fieldset-title": "Przezérôj historëjã",
+       "history-fieldset-title": "Szëkôj za wersëją",
        "history-show-deleted": "Leno rëmniãté",
        "histfirst": "òd nôstarszich",
        "histlast": "òd nônowszich",
        "revdelete-show-no-access": "Pòkôza sã fela przë próbie wëskrzënieniô elementu datowónegò na $2, $1. Widzawnota negò elementu òsta ògrańczonô - ni môsz przëstãpù.",
        "mergehistory-reason": "Przëczëna:",
        "revertmerge": "Rozdzélë",
-       "history-title": "Historiô zjinaków dlô \"$1\"",
-       "difference-title": "$1  rozeszłoscë midzë wersjama",
+       "history-title": "Historijô zjinaków dlô \"$1\"",
+       "difference-title": "$1 - rozeszłoscë midzë wersjama",
        "lineno": "Lëniô $1:",
        "compareselectedversions": "Przërównôj wëbróné wersëje",
        "editundo": "doprowadzë nazôd",
+       "diff-multi-sameuser": "(Nie wëskrzëniono $1 {{PLURAL:$1|pòstrzedny wersëji ùsôdzony|pòstrzednych wersëjów ùsôdzonych}} przez tegoò sómegò brëkòwnika)",
        "searchresults": "Skùtczi szëkbë",
        "searchresults-title": "Skùtczi szëkbë za \"$1\"",
        "notextmatches": "Felënk zamkłosë starnë",
        "prevn": "wczasniészé {{PLURAL:$1|$1}}",
        "nextn": "nôslédné {{PLURAL:$1|$1}}",
+       "nextn-title": "{{PLURAL:$1|Nôslédny|Nôslédne}} $1 {{PLURAL:$1|rezultat|rezultatë|rezultatów}}",
+       "shown-title": "Wëskrzëni pò $1 {{PLURAL:$1|rezultace|rezultaczi|resultatów}} na starnã",
        "viewprevnext": "Òbaczë ($1 {{int:pipe-separator}} $2) ($3).",
+       "searchmenu-new": "<strong>Usôdzë starnã \"[[:$1]]\"  na ti wiki!</strong> {{PLURAL:$2|0=|Òbôczë téż starnã ze skùtkama szëkbë.|Òbôczë téż skùtczi szëkbë.}}",
        "searchprofile-articles": "Artikle",
+       "searchprofile-images": "w mùltimediach",
        "searchprofile-everything": "na wszëtczich starnach",
        "searchprofile-advanced": "Awansowóné",
+       "searchprofile-articles-tooltip": "Szëkba w $1",
+       "searchprofile-images-tooltip": "Szëkba za lopkama",
+       "searchprofile-everything-tooltip": "Szëkba w całowny zamkłoscë (téz na starnach diskùsëji)",
+       "searchprofile-advanced-tooltip": "Szëkba w wëbrónych rumach mionów",
        "search-result-size": "$1 ({{PLURAL:$2|1 słowò|$2 słowa|$2 słów}})",
        "search-redirect": "(przeczérowanié z $1)",
        "search-section": "(dzél $1)",
        "search-interwiki-default": "Wëniczi òd $1:",
        "search-interwiki-more": "(wicy)",
        "searchall": "wszëtczé",
+       "search-showingresults": "{{PLURAL:$4|Skùtk szëkbë <strong>$1</strong> za <strong>$3</strong>|Skùtczi szëkbë <strong>$1 - $2</strong> za <strong>$3</strong>}}",
+       "search-nonefound": "Felënk skùtków szëkbë przë tim zapëtaniém.",
        "powersearch-legend": "Awansowónô szëkba",
        "powersearch-ns": "Szëkba w rumach mionów:",
        "preferences": "Preferencëje",
        "right-purge": "Czëszczenié pòdrãczny pamiãcë starnë bez pëtaniô ò pòcwierdzenié",
        "right-autoconfirmed": "Edicëjô dzélowò zazychrowónych starnów",
        "right-bot": "Nacéchòwanié edicëjó jakno aùtomatnych",
+       "right-writeapi": "Zapisënk przez jinterfejs API",
        "newuserlogpage": "Nowi brëkòwnicë",
        "rightslog": "Prawa brëkòwnika",
        "action-edit": "editëjë tã starnã",
        "nchanges": "{{PLURAL:$1|zjinaka|zjinaczi|zjinaków}}",
-       "enhancedrc-history": "Historiô",
-       "recentchanges": "Slédné edicje",
+       "enhancedrc-history": "Historijô",
+       "recentchanges": "Slédné edicëje",
        "recentchanges-legend": "Òptacëje slédnych zjinaków",
-       "recentchanges-summary": "Na starna prezentérëje historiã slédnëch edicjów w ti wiki.",
+       "recentchanges-summary": "Na starna wëskrzeniô historijã slédnych edicëjów w ti wiki.",
        "recentchanges-feed-description": "Pòdstrzegô slédny zmianë w tim pòwrózkù.",
-       "recentchanges-label-newpage": "W ti edicje ùsadzóno nową starnã",
-       "recentchanges-label-minor": "To je drobnô edicjô",
-       "recentchanges-label-bot": "Tã edicjã wëkònôł bòt.",
-       "recentchanges-label-unpatrolled": "Ta edicjô jesz nie òsta sprawdzónô",
-       "recentchanges-label-plusminus": "Zjinaczónô wiôlgòsc starnë (lëczba bajtów)",
+       "recentchanges-label-newpage": "Na edicëjô ùsôdza nową starnã",
+       "recentchanges-label-minor": "To je drobnô edicëjô",
+       "recentchanges-label-bot": "Tã edicëjã zrëchtowôł bòt.",
+       "recentchanges-label-unpatrolled": "Ta edicjëô jesz nie òsta sprawdzónô",
+       "recentchanges-label-plusminus": "Zjinaczonô wiôlgòsc starnë (lëczba bajtów)",
+       "recentchanges-legend-heading": "<strong>Légenda:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (òbaczë téż [[Special:NewPages|lëstã nowëch strón]])",
-       "rcnotefrom": "Niżi są zmianë òd '''$2''' (pòkazóné do '''$1''').",
+       "rcnotefrom": "Niżi {{PLURAL:$5|je zjinaka|są zjinaczi}} {{PLURAL:$5|zrobionô|zrobioné}} pò <strong>$3, $4</strong> (nie wicy jak '''$1''' pozycëji).",
        "rclistfrom": "Pòkażë nowé zmianë òd $3 $2",
        "rcshowhideminor": "$1 môłé zmianë",
+       "rcshowhideminor-show": "Pokôżë",
        "rcshowhideminor-hide": "Zatacë",
        "rcshowhidebots": "$1 botë",
-       "rcshowhidebots-show": "pokôż",
+       "rcshowhidebots-show": "Pòkôżë",
+       "rcshowhidebots-hide": "Zatacë",
        "rcshowhideliu": "$1 zaregistrowónëch brëkòwników",
+       "rcshowhideliu-show": "Pokôżë",
        "rcshowhideliu-hide": "Zatacë",
        "rcshowhideanons": "$1 anonimòwëch brëkòwników",
+       "rcshowhideanons-show": "Pokôżë",
        "rcshowhideanons-hide": "Zatacë",
        "rcshowhidepatr": "$1 òbzérónë edicëje",
        "rcshowhidemine": "$1 mòje edicje",
+       "rcshowhidemine-show": "Pòkôżë",
        "rcshowhidemine-hide": "Zatacë",
        "rcshowhidecategorization": "$1 kategòrizacjã strón",
        "rclinks": "Pòkażë slédnëch $1 zmianów zrobionëch òb slédné $2 dniów",
        "diff": "jinosc",
        "hist": "hist.",
-       "hide": "zatacë",
-       "show": "pokôż",
+       "hide": "Zatacë",
+       "show": "Pokôżë",
        "minoreditletter": "D",
        "newpageletter": "N",
        "boteditletter": "b",
+       "rc-change-size-new": "$1 {{PLURAL:$1|bajt|bajtë|bajtów}} pò zjinace",
        "rc-enhanced-expand": "Pòkażë detale (wëmôgô JavaScript)",
        "rc-enhanced-hide": "Zatacë detale",
        "recentchangeslinked": "Zmianë w dolënkòwónëch",
        "recentchangeslinked-feed": "Zmianë w dolënkòwónëch",
        "recentchangeslinked-toolbox": "Zmianë w dolënkòwónëch",
-       "recentchangeslinked-title": "Zjinaczi w lënkòwónëch z \"$1\"",
+       "recentchangeslinked-title": "Zjinaczi w lënkòwónych z \"$1\"",
        "recentchangeslinked-summary": "Niżi nachôdô sã lësta slédnëch zjinaków na lënkòwónëch starnach z pòdóny starnë (abò we wszëtczich starnach przënôleżącëch do pòdóny kategòrëji).\nStarnë z [[Special:Watchlist|lëstë ùzérónëch artiklów]] są '''pògrëbioné'''.",
        "recentchangeslinked-page": "Miono starnë:",
        "recentchangeslinked-to": "Wëskrzëni zjinaczi nié na lënkòwónëch starnach, blós na starnach lënkùjącëch do pòdóny starnë",
        "uploadwarning": "Òstrzega ò wladënkù",
        "savefile": "Zapiszë lôpk",
        "uploaddisabled": "Przeprôszómë! Mòżlëwòta wladënkù lopków na nen serwer òsta wëłączonô.",
+       "license-header": "Licencëjô",
+       "imgfile": "lopk",
        "listfiles": "Lësta òbrôzków",
        "listfiles_user": "Brëkòwnik",
-       "file-anchor-link": "Òbrôzk",
+       "file-anchor-link": "Lopk",
        "filehist": "Historëjô lopka",
        "filehist-help": "Klëkni na datum/czas, abë òbaczëc jak wëzdrzôł lopk w tim czasu.",
        "filehist-revert": "copnij",
        "filehist-comment": "Òpisënk",
        "imagelinks": "Wëkòrzëstanie lopka",
        "linkstoimage": "{{PLURAL:$1|Hewò je starna jakô òdwòłëje|Hewò są starnë jaczé òdwòłëją}} sã do negò lopka:",
-       "nolinkstoimage": "Niżódnô starna nie òdwòłëje sã do negò lopka.",
+       "nolinkstoimage": "Niżódnô starna nie lënkùje do negò lopka.",
        "sharedupload": "Nen lopk je na $1 ë mòże bëc brëkòwóny w jinych ùdbach.",
+       "sharedupload-desc-here": "Nen lopk je w $1 ë mòże bëc brëkòwóny w jinnych ùdbach.\nNiżi je wëdowiédzô ze [$2 starnë òpisënkù] negò lopka.",
        "uploadnewversion-linktext": "Wladëjë nową wersëjã negò lopka",
+       "upload-disallowed-here": "Nié mòżesz nadpisac negò lopka",
        "filerevert-comment": "Przëczëna:",
        "filedelete-comment": "Przëczëna:",
        "listredirects": "Lësta przeczerowaniów",
        "pager-older-n": "{{PLURAL:$1|1 stôrszi|$1 stôrszé|$1 stôrszich}}",
        "booksources": "Ksążczi",
        "booksources-search-legend": "Szëkba za wëdowiédzą ò ksążkach",
-       "specialloguserlabel": "Brëkòwnik:",
-       "speciallogtitlelabel": "Titel:",
-       "log": "Lodżi",
+       "booksources-search": "Szëkba",
+       "specialloguserlabel": "Chto:",
+       "speciallogtitlelabel": "Co (titel abò {{ns:user}}:miono brëkòwnika):",
+       "log": "Rejestr logòwaniô",
        "alllogstext": "Sparłãczoné registrë wszëtczich ôrtów dzejaniô dlô {{SITENAME}}.\nMòżesz zawãżëc wëszłosc przez wëbranié ôrtu registru, miona brëkòwnika abò miona zajimny dlô ce starnë.",
        "allpages": "Wszëtczé starnë",
        "nextpage": "Nôslédnô starna ($1)",
        "emailmessage": "Wiadło:",
        "emailsend": "Wëslë",
        "emailccme": "Sélôj mie e-mailã kòpijã wiadła.",
-       "watchlist": "Lësta ùzérónëch artiklów",
+       "watchlist": "Ùzéróné",
        "mywatchlist": "Lësta ùzérónëch artiklów",
        "watchnologin": "Felënk logòwóniô",
        "addedwatchtext": "Starna \"[[:$1]]\" òsta dodónô do twòji [[Special:Watchlist|lëstë ùzérónëch artiklów]].\nNa ti lësce są registre przińdnëch zjinak ti starne ë na ji starnie dyskùsëji, a samò miono starnë mdze '''wëtłëszczone''' na [[Special:RecentChanges|lësce slédnich edicëji]], bë të mògł to òbaczëc.\n\nCzej chcesz remôc starnã z lëste ùzéronëch artiklów, klikni ''Òprzestôj ùzérac''.",
        "unwatch": "Òprzestôj ùzerac",
        "unwatchthispage": "Òprzestôj ùzerac ną starnã",
        "notanarticle": "To nie je artikel",
-       "watchlist-details": "Ùzérôsz {{PLURAL:$1|$1 artikel|$1 artikle/-ów}}, nie rechùjąc diskùsëjów.",
+       "watchlist-details": "Twòjô lësta ùzérónych starnów zamëkô w se {{PLURAL:$1|$1 pozycjã|$1 pozycje|$1 pozycjów}}, nie rechùjąc diskùsëjów.",
        "wlheader-showupdated": "Artiklë jakczé òsta zmienioné òd Twòji slédny wizytë są wëapratnioné <strong>pògrëbieniém</strong>",
        "wlnote": "Niżi môsz wëskrzënioné {{PLURAL:$1|slédną zmianã|'''$1''' slédnëch zmianów}} zrobioné òb {{PLURAL:$2|gòdzënã|'''$2''' gòdzënë/gòdzënów}}.",
        "wlshowlast": "Wëskrzëni zjinaczi z $1 gòdzënów $2 dni",
        "deletereasonotherlist": "Jinszô przëczëna",
        "rollback": "Copnij edicëjã",
        "rollbacklink": "copnij",
+       "rollbacklinkcount": "cofnij $1 {{PLURAL:$1|edicëjã|edicëji|edicëjów}}",
        "rollbackfailed": "Nie szło copnąc zmianë",
        "alreadyrolled": "Ni mòże copnąc slédny edicëji starnë [[:$1]], chtërny ùsôdzcą je [[User:$2|$2]] ([[User talk:$2|Diskùsëjô]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\nchtos jiny ju zeditowôł starnã abò copnął zmianë.\n\nSlédnym ùsódzcą starnë bëł [[User:$3|$3]] ([[User talk:$3|Diskùsëjô]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "revertpage": "Edicje brëkòwnika [[Special:Contributions/$2|$2]] ([[User talk:$2|diskùsjô]]) òstałë òdrzucóné. Aùtorã przëwrócóny wersji je [[User:$1|$1]].",
        "undelete-show-file-submit": "Jo",
        "namespace": "Rum mionów:",
        "invert": "Òdwrócë zaznaczenié",
-       "namespace_association": "sparłãczóné òbrëmié mionów",
+       "tooltip-invert": "Zacechùjë nã kastkã do zatacëniô zjinaków na starnach w wëbrónych òbrëmiach mionów(ë sparłãczonyma z nima rómama mionów)",
+       "namespace_association": "sparłãczoné òbrëmié mionów",
+       "tooltip-namespace_association": "Zacechùjë nã kastkã dlô ùwzglãdnieniô starnë diskùsëji ë témë sparłãczony z wëlowónyma òbrëmiama mionów.",
        "blanknamespace": "(Przédnô)",
        "contributions": "Wkłôd {{GENDER:$1|brëkòwnika|brëkòwniczczi}}",
        "contributions-title": "Wkłôd brëkòwnika $1",
        "mycontris": "Mój wkłôd",
        "anoncontribs": "Mój wkłôd",
-       "contribsub2": "Dlô brëkòwnika $1 ($2)",
-       "uctop": "(slédnô)",
+       "contribsub2": "Dlô {{GENDER:$3|brëkòwnika|brëkòwniczczi}} $1 ($2)",
+       "uctop": "(aktualnô)",
        "month": "Òd miesąca (ë wczasni):",
        "year": "Òd rokù (ë wczasni):",
        "sp-contributions-newbies": "Pòkażë edicëjã blós nowich brëkòwników",
        "isimage": "lënk do lopka",
        "whatlinkshere-prev": "{{PLURAL:$1|wczasniészé|wczasniészé $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|nôslédné|nôslédné $1}}",
-       "whatlinkshere-links": "← lëkùjącé",
+       "whatlinkshere-links": "← lënkùjącé",
        "whatlinkshere-hideredirs": "$1 przeczérowania",
        "whatlinkshere-hidetrans": "$1 doparłãczenia",
        "whatlinkshere-hidelinks": "$1 lënczi",
        "allmessagescurrent": "Aktualny tekst",
        "allmessagestext": "To je zestôwk systemòwëch ògłosów przistãpnëch w rumie mionów MediaWiki.\nProszã zazdrzë na [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation Lokalizacëjô MediaWiki] ë [https://translatewiki.net translatewiki.net] jeżlë chcesz dolmaczëc softwôrã MediaWiki.",
        "allmessagesnotsupportedDB": "'''{{ns:special}}:Allmessages''' nie mòże bëc brëkòwónô, temù że '''$wgUseDatabaseMessages''' je wëłączony.",
-       "thumbnail-more": "Zwiszi",
+       "thumbnail-more": "Zwikszi",
        "import": "Impòrtëjë starnë",
        "tooltip-pt-userpage": "{{GENDER:|Twòja}} starna brëkòwnika",
-       "tooltip-pt-mytalk": "{{GENDER:|Twòja}} starna diskùsje",
+       "tooltip-pt-mytalk": "{{GENDER:|Mòjô}} starna diskùsëji",
        "tooltip-pt-anontalk": "Diskùsjô brëkòwnika dlô ti adresë IP",
        "tooltip-pt-preferences": "{{GENDER:|Mòje}}nastôwë",
-       "tooltip-pt-watchlist": "Lësta artiklów jaczé òbzérôsz za zmianama",
+       "tooltip-pt-watchlist": "Lësta mòjich ùzérównych starnów",
        "tooltip-pt-mycontris": "Lësta {{GENDER:|twòjich}} edicji",
        "tooltip-pt-anoncontribs": "Lësta edicji, jaczé bëłë zrobióné spòd ti adresë IP.",
        "tooltip-pt-login": "Rôczimë do wlogòwaniô sã, nie je to równak mùszebné.",
        "tooltip-pt-logout": "Wëlogòwanié",
        "tooltip-pt-createaccount": "Zachãcëwómë do ùsadzeniô kònta i wlogòwaniô, chòc nie je to òbrzészk.",
        "tooltip-ca-talk": "Diskùsjô zamkłoscë ti starnë",
-       "tooltip-ca-edit": "Edituj nã starnã.",
+       "tooltip-ca-edit": "Editëjë nã starnã.",
        "tooltip-ca-addsection": "Zrëszë nowi dzél",
        "tooltip-ca-viewsource": "Na starna je zazychrowónô.\nMòżesz òbaczëc ji zdrój.",
        "tooltip-ca-history": "Stôrszé wersëje ti starnë",
        "tooltip-t-recentchangeslinked": "Slédné zjinaczi na starnach, do chtërnëch na starna lënkùje",
        "tooltip-feed-rss": "Pòwrózk RSS dlô ti starnë",
        "tooltip-feed-atom": "Pòwrôzk Atom dlô ti starnë",
-       "tooltip-t-contributions": "Wëskrzëni lëstã edicji {{GENDER:$1|negò brëkòwnika|ti brëkòwniczczi}}",
-       "tooltip-t-emailuser": "Wëslë e-mail do tegò brëkòwnika",
+       "tooltip-t-contributions": "Wëskrzëni lëstã edicëji {{GENDER:$1|negò brëkòwnika|ti brëkòwniczczi}}",
+       "tooltip-t-emailuser": "Wëslë e-mail do{{GENDER:$1|tegò Brëkòwnika|ti Brëkòwniczczi}}",
        "tooltip-t-upload": "Wladëjë lopczi",
        "tooltip-t-specialpages": "Lësta specjalnëch starnów",
        "tooltip-t-print": "Wersëjô ti starnë do drëkù",
        "tooltip-compareselectedversions": "Wëskrzëniô różnice midzy dwóma wëbrónyma wersëjama ti starnë",
        "tooltip-watch": "Dodôj nã starnã do lëstë ùzérónëch",
        "tooltip-upload": "Naczãcé wladëka",
-       "tooltip-rollback": "\"Copni\" jednym klëkniãcem copô wszëtczé zjinaczi zrëchtowóny na ti starnie przez slédno editëjãcegò",
+       "tooltip-rollback": "\"Copni\" jednym klëkniãcem copô wszëtczé zjinaczi zrëchtowóny na ti starnie przez slédno editëjącegò",
        "tooltip-undo": "\"anulëjë\" copô nã edicëjã ë òtmëkô edicjowé òkno w tribie pòdzérkù.\nZezwôlô na dodanié przëczënë zjinaczi w òpisënkù.",
        "tooltip-preferences-save": "Zapiszë nastôwë",
        "tooltip-summary": "Wpiszë wãzłowati òpisënk",
        "othercontribs": "Òpiarté na prôcë $1.",
        "others": "jiné",
        "spamprotectiontitle": "Anti-spamòwi filter",
-       "pageinfo-toolboxlink": "Jinfòrmacje ò ti starnie.",
+       "simpleantispam-label": "Antispamòwi filter.\n<strong>Nie</strong> wpisëjë tuwò niczegò!",
+       "pageinfo-toolboxlink": "Wëdowiédzô ò ti starnie.",
        "previousdiff": "← Pòprzédnô edicëjô",
        "nextdiff": "Nôslédnô edicëjô →",
        "imagemaxsize": "Ògrańczë na starnie òpisënkù òbrôzków jich miarã do:",
        "file-info-size": "$1 × $2 pikslów, miara lopka: $3, ôrt MIME: $4",
        "file-nohires": "Felëje wikszô miara.",
        "svg-long-desc": "Lopk SVG, nominalno $1 × $2 pikslów, miara lopka: $3",
-       "show-big-image": "Pierwòszny lopk",
+       "show-big-image": "Pierwòtny lopk",
+       "show-big-image-preview": "Miara pòdzérkù – $1.",
+       "show-big-image-other": "{{PLURAL:$2|Jinszô rozdzélnota|Jinszy rozdzélnotë}}: $1.",
+       "show-big-image-size": "$1 × $2 pikslów",
        "newimages": "Galerëjô nowich lopków",
        "ilsubmit": "Szëkôj",
        "bydate": "wedle datumù",
        "metadata-expand": "Wëskrzëni detale",
        "metadata-collapse": "Zatacë detale",
        "metadata-fields": "Wëskrzënioné niżi pòla metadanëch bãdą widzawné na starnie graficzi.\nJinszé pòla bãdą domëslno zataconé.\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": "Ùczérowanié òbrôzu",
+       "exif-xresolution": "Hòrizontalnô rozdzelnota",
+       "exif-yresolution": "Wertikalnô rozdzelnota",
+       "exif-datetime": "Datum ë czas zjinaczi lopka",
+       "exif-make": "Producenta kamerë",
+       "exif-model": "Mòdel kamërë",
+       "exif-software": "Bëkòwónô softwôra",
+       "exif-exifversion": "Wersëjô sztandardu Exif",
+       "exif-colorspace": "Dzél farwów",
+       "exif-datetimeoriginal": "Datum ë czas ùsôdzenia",
+       "exif-datetimedigitized": "Datum ë czas zdigitalizowaniô",
        "exif-source": "Zdrój",
        "exif-languagecode": "Jãzëk",
+       "exif-orientation-1": "zwëczajnô",
        "exif-iimcategory-spo": "Szpòrt",
        "namespacesall": "wszëtczé",
        "monthsall": "wszëtczé",
        "watchlisttools-view": "Òbaczë wôżnészé zmianë",
        "watchlisttools-edit": "Òbaczë a editëjë lëstã ùzérónëch artiklów",
        "watchlisttools-raw": "Editëjë sërą lëstã",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|diskùsëjô]])",
        "version": "Wersëjô",
        "specialpages": "Specjalné starnë",
+       "tag-filter": "Filtr [[Special:Tags|znakòwników]]:",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Znakòwnik|Znakòwniczi}}]]: $2)",
        "tags-create-reason": "Przëczëna:",
        "tags-delete-reason": "Przëczëna:",
        "tags-activate-reason": "Przëczëna:",
        "logentry-delete-delete": "$1 {{GENDER:$2|rëmnął|rëmnãła}} starnã $3",
        "revdelete-restricted": "nastôwi ògrańczenia dlô sprôwników",
        "revdelete-unrestricted": "rëmôj ògrańczenia dlô sprôwników",
+       "logentry-move-move": "$1 {{GENDER:$2|przeniós|przeniosła}} starnã $3 do $4",
+       "logentry-newusers-create": "Kònto {{GENDER:$2|brëkòwnika|brëkòwnicczki}} $1 òstało ùsôdzone",
        "logentry-protect-protect": "$1 {{GENDER:$2|zazychrowôł|zazychrowała}} $3 $4",
+       "logentry-upload-upload": "$1 {{GENDER:$2|przesłôł|przesłała}} $3",
+       "searchsuggest-search": "Szëkba",
        "pagelang-reason": "Przëczëna",
        "special-characters-group-ipa": "IPA",
        "special-characters-group-symbols": "Céchë",
index 5cbc556..ec4fe66 100644 (file)
@@ -10,7 +10,8 @@
                        "Блокнот",
                        "아라",
                        "Chuvash2014",
-                       "Macofe"
+                       "Macofe",
+                       "Chuvash"
                ]
        },
        "tog-underline": "Ссылкăсене аялтан туртса палармалла:",
        "dec": "Раш",
        "pagecategories": "{{PLURAL:$1|Категори|Категорисем}}",
        "category_header": "\"$1\" категоринчи статьясем",
-       "subcategories": "Ð\9fодкатегорисем",
+       "subcategories": "Ð\9aаÑ\82егоÑ\80иÑ\80и категорисем",
        "category-media-header": "\"$1\" категоринчи файлсем",
        "category-empty": "''Хальхи вăхăтра ку категори пушă.''",
        "hidden-categories": "{{PLURAL:$1|Пытарнă категори|Пытарнă категорисем}}",
        "hidden-category-category": "Пытарнă категорисем",
-       "category-subcat-count": "{{PLURAL:$2|Ку категоринче çак айри категори пур.|$2-ран(-рен,-тан,-тен) {{PLURAL:$1|$1 айри категорине кăтартнă|$1 айри категорине кăтартнă|$1 айри категорине кăтартнă}}.}}",
+       "category-subcat-count": "{{PLURAL:$2|Ку категоринче ку категори кăна.|Ку категоринче {{PLURAL:$1|категори|$1 категорисем}}, пурте $2.}}",
        "category-subcat-count-limited": "Ку категоринче {{PLURAL:$1|$1 айри категори|$1 айри категори|$1 айри категори}}.",
        "category-article-count": "{{PLURAL:$2|1=Ку категоринче пĕр страница кăна.|Ку категорири $2 страницăран $1 кăтартнă.}}",
        "category-article-count-limited": "Ку категоринче {{PLURAL:$1|страница|$1 страницăсем}}.",
        "anontalk": "Сӳтсе явни",
        "navigation": "Меню",
        "and": "&#32;тата",
-       "qbfind": "Шырани",
-       "qbbrowse": "Пăх",
-       "qbedit": "Тӳрлет",
-       "qbpageoptions": "Страница ĕнерлевĕсем",
-       "qbmyoptions": "Сирĕн ĕнĕрлевсем",
        "faq": "ЫйХу",
-       "faqpage": "Project:ЫйХу",
        "namespaces": "Ят хушшисем",
        "variants": "Вариантсем",
        "errorpagetitle": "Йăнăш",
        "view": "Пăх",
        "edit": "Тӳрлет",
        "create": "Çĕннине ту",
-       "editthispage": "Страницăна тӳрлетесси",
-       "create-this-page": "Ку страницăна хатĕрле",
        "delete": "Кăларса пăрах",
-       "deletethispage": "Хурат ăна",
        "undelete_short": "$1 тӳрлетӳсене каялла тавăр",
        "protect": "хӳтĕле",
        "protect_change": "улăштар",
-       "protectthispage": "Хӳтĕле",
        "unprotect": "Хӳтĕлеве пăрахăçла",
-       "unprotectthispage": "Хӳтĕлеве пăрахăçла",
        "newpage": "Çĕнĕ статья",
-       "talkpage": "Сӳтсе явни",
        "talkpagelinktext": "Сӳтсе явни",
        "specialpage": "Ятарлă страницă",
        "personaltools": "Ман хатĕрсем",
-       "articlepage": "Статьяна пăх",
        "talk": "Сӳтсе явни",
        "views": "Пурĕ пăхнă",
        "toolbox": "Хатĕрсем",
-       "userpage": "Хутшăнакан страницине пăх",
-       "projectpage": "Проект страницине пăх",
        "imagepage": "Файл страницине пăх",
        "mediawikipage": "Пĕлтерӳ страницине кăтарт",
        "templatepage": "Шаблонăн страницине пăх",
        "minoredit": "Пĕчĕк улшăну",
        "watchthis": "Ку страницăна сăна",
        "savearticle": "Страницăна çырса хур",
+       "savechanges": "Çырса хур",
+       "publishchanges": "Çырса хăвар",
        "preview": "Епле курăнĕ",
        "showpreview": "Маларах пăхни",
        "showdiff": "Улăштарнисене кăтартни",
        "anoncontribs": "Хушни",
        "contribsub2": "{{GENDER:$3|$1}} валли ($2)",
        "uctop": "(хальхи)",
-       "month": "Уйăхран (тата маларах):",
-       "year": "Çултан (тата маларах):",
+       "month": "Уйăхран (маларах та):",
+       "year": "Çултан (маларах та):",
        "sp-contributions-blocklog": "Чарса лартнисен журналĕ",
        "sp-contributions-logs": "логсем",
        "sp-contributions-talk": "сӳтсе яв",
        "table_pager_limit_submit": "Ту",
        "table_pager_empty": "Тупăнмарĕ",
        "autosumm-blank": "Статьяна йăлтах пушатрĕ",
-       "autosumm-replace": "Ăшĕнчине улăштарнă \"$1\"",
+       "autosumm-replace": "Ăшне улăштарчĕ \"$1\"",
        "autoredircomment": "[[$1]] çине куçарни",
        "autosumm-new": "Çĕнĕ страница \"$1\"",
        "watchlisttools-view": "Ку тӳрлетӳпе çыхăннăскерсем",
index be955da..6dd67a9 100644 (file)
        "anontalk": "कुरडी",
        "navigation": "पथप्रदर्शन",
        "and": "&#32;रे",
-       "qbfind": "तम जाण",
-       "qbbrowse": "ब्राउज गर्न्या",
-       "qbedit": "सम्पादन",
-       "qbpageoptions": "ये पानो",
-       "qbmyoptions": "मेरो पानो",
        "faq": "भौत सोधिन्या प्रश्नहरू",
-       "faqpage": "Project:भौत सोधियाका प्रश्नहरू",
        "actions": "कार्यहरू",
        "namespaces": "नेमस्पेस",
        "variants": "बहुरुपअन",
        "edit-local": "स्थानिय वर्णन सम्पादन गर",
        "create": "सृजना गर",
        "create-local": "स्थानिय वर्णन सम्पादन गर",
-       "editthispage": "यो पाना सम्पादन गर",
-       "create-this-page": "यो पाना बनाउन्या",
        "delete": "मेट्न्या",
-       "deletethispage": "पाना मेट्न्या",
-       "undeletethispage": "मेट्याको पाना फर्काउने",
        "undelete_short": "{{PLURAL:$1|एक  मेट्याको सम्पादन|$1 मेट्याका सम्पादनहरू}} फर्काउन्या",
        "viewdeleted_short": "{{PLURAL:$1|मेटियाको सम्पादन |$1 मेटियाका सम्पादनहरू}}",
        "protect": "सुरक्षित राख",
        "protect_change": "बदल्न्या",
-       "protectthispage": "यै पानाकी सुरक्षित गर",
        "unprotect": "सुरक्षा परिवर्तन गर",
-       "unprotectthispage": "यै पानाको सुरक्षा परिवर्तन गर",
        "newpage": "नयाँ पाना",
-       "talkpage": "यै पानाका बारेमी छलफल गर",
        "talkpagelinktext": "कुरणि",
        "specialpage": "खास पानो",
        "personaltools": "व्यक्तिगत औजारअन",
-       "articlepage": "कन्टेन्ट पानो हेर",
        "talk": "कुरणिकाआनी",
        "views": "अवलोकन गरऽ",
        "toolbox": "औजारअन",
        "tool-link-userrights": "परिवर्तन{{GENDER:$1|प्रयोगकर्ता}}समूहहरू",
        "tool-link-userrights-readonly": "{{GENDER:$1|प्रयोगकर्ता}} समूहअन तकऽ",
        "tool-link-emailuser": "{{GENDER:$1|प्रयोगकर्ता}}लाई एइ इमेलमी पठाऽ",
-       "userpage": "प्रयोगकर्ता पाना हेर्न्या",
-       "projectpage": "प्रोजेक्ट पानो हेर्न्या",
        "imagepage": "चित्र पानो हेर",
        "mediawikipage": "कुरडी पानो हेर",
        "templatepage": "ढाँचा पानो हेर",
        "recentchanges-label-plusminus": "यति बाइटहरू संख्याले पानाको आकार फेरबदल  भयाको छ",
        "recentchanges-legend-heading": "<strong>आदर्श वाक्य:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नौला पानाको सूची]] यैलाई लै हेरिदिय)",
-       "rcfilters-quickfilters-placeholder": "दोबरा प्रयोग अद्दाइ तमरा पसन्दीदा औजार मिलानअन सञ्‍चय अरऽ।",
        "rcfilters-savedqueries-rename": "पुनर्नामकरण",
        "rcfilters-savedqueries-remove": "हटाऽ",
        "rcfilters-savedqueries-new-name-label": "नाउँ",
        "newimages-summary": "यै खास पानाले अन्तिम अपलोड गर्याका फाइलहरू धेकाउँन्छ ।",
        "newimages-user": "आइपी(IP) ठेगाना या प्रयोगकर्ता नाउँ",
        "days": "{{PLURAL:$1|$1 दिन|$1 दिनहरू}}",
+       "yesterday-at": "बेली $1 मी",
        "metadata": "मेटाडेटा",
        "metadata-help": "यै फाइलमि अतिरिक्त जानकारीहरू छन्, यैलाई बणुउन सम्भवतः डिजिटल क्यामरा और स्क्यानर प्रयोग गरियाको हुनसकन्छ । यदि यै फाइललाई खास अवस्थाबठे फेरबदल गरियाको हो भण्या यै फाइलले  सब्बै विवरण प्रतिबिम्बित गद्द सक्यानाइथी ।",
        "metadata-fields": "Image metadata fields listed in this message will be included on image page display when the metadata table is collapsed.\nOthers will be hidden by default.\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",
index 606203b..7d107d9 100644 (file)
        "mediastatistics-header-text": "Textual",
        "mediastatistics-header-executable": "Executables",
        "mediastatistics-header-archive": "Compressed formats",
+       "mediastatistics-header-3d": "3D",
        "mediastatistics-header-total": "All files",
        "json-warn-trailing-comma": "$1 trailing {{PLURAL:$1|comma was|commas were}} removed from JSON",
        "json-error-unknown": "There was a problem with the JSON. Error: $1",
index a3f0e15..6fbdac0 100644 (file)
        "readonlywarning": "<strong>Oharra: Datu-basea blokeatu egin da mantenu lanak burutzeko, beraz ezingo dituzu orain zure aldaketak gorde.</strong>I\nTestua fitxategi baten kopiatu dezakezu, eta beranduago erabiltzeko gorde.\n\nBlokeatu zuen administratzaileak honako azalpena eman zuen: $1",
        "protectedpagewarning": "'''Oharra:  Orri hau blokeatua dago administratzaileek soilik eraldatu ahal dezaten.'''\nAzken erregistroa ondoren ikusgai dago erreferentzia gisa:",
        "semiprotectedpagewarning": "'''Oharra''': Orrialde hau erregistratutako erabiltzaileek bakarrik aldatzeko babestuta dago.\nErregistroko azken sarrera azpian jartzen da erreferentzia gisa:",
-       "cascadeprotectedwarning": "'''Oharra:''' Orrialde hau blokeatua izan da eta administratzaileek baino ez dute berau aldatzeko ahalmena, honako {{PLURAL:$1|orrialdeko|orrialdeetako}} kaskada-babesean txertatuta dagoelako:",
+       "cascadeprotectedwarning": "<strong>Oharra:</strong> Orrialde hau blokeatua izan da eta [[Special:ListGroupRights|baimen zehatzak]] dituzten erabiltzaileek baino ez dute berau aldatzeko ahalmena, honako {{PLURAL:$1|orrialdeko|orrialdeetako}} kaskada-babesean txertatuta dagoelako:",
        "titleprotectedwarning": "'''Oharra: Orrialde hau blokeatuta dago eta bakarrik [[Special:ListGroupRights|erabiltzaile batzuek]] sortu dezakete.'''\nAzken erregistroko sarrera ematen da azpian erreferentzia gisa:",
        "templatesused": "Orri honetan erabiltzen {{PLURAL:$1|den txantiloia|diren txantiloiak}}:",
        "templatesusedpreview": "Aurreikuspen honetan erabiltzen {{PLURAL:$1|den txantiloia|diren txantiloiak}}:",
        "saveusergroups": "Erabiltzaile {{GENDER:$1|taldeak}} gorde",
        "userrights-groupsmember": "Ondorengo talde honetako kide da:",
        "userrights-groupsmember-auto": "Honen kide inplizitua:",
-       "userrights-groups-help": "Lankide hau zein taldetakoa den alda dezakezu:\n* Laukia hautatuta baldin badago, esan nahi du lankidea talde horretakoa dela.\n* Laukia hautatu gabe baldin badago, esan nahi du lankidea talde horretakoa ez dela.\n* Izartxoak (*) erakusten du ezin duzula talde horretatik kendu, taldera gehitu eta gero; edo alderantziz, ezin duzula talde horretara gehitu, taldetik kendu eta gero.\n* Traolak (#) erakusten du taldearen iraungipen data luzatu egin dezakezula soilik; ez ordea aurreratu.",
+       "userrights-groups-help": "Lankide hau zein taldetakoa den alda dezakezu:\n* Laukia hautatuta baldin badago, esan nahi du lankidea talde horretakoa dela.\n* Laukia hautatu gabe baldin badago, esan nahi du lankidea talde horretakoa ez dela.\n* Izartxoak (*) erakusten du ezin duzula talde horretatik kendu, taldera gehitu eta gero; edo alderantziz, ezin duzula talde horretara gehitu, taldetik kendu eta gero.\n* Traolak (#) erakusten du talde-partaidetzaren iraungipen data luzatu egin dezakezula soilik; ez ordea aurreratu.",
        "userrights-reason": "Arrazoia:",
        "userrights-no-interwiki": "Ez duzu beste wikietan erabiltzaile eskumenak aldatzeko baimenik.",
        "userrights-nodatabase": "$1 datubasea ez da existitzen edo ez dago lokalki.",
        "pageswithprop-prophidden-long": "testu luzearen ezagaurria izkutatua ($1)",
        "doubleredirects": "Birbideratze bikoitzak",
        "doubleredirectstext": "Lerro bakoitzean lehen eta bigarren birzuzenketetarako loturak ikus daitezke, eta baita edukia daukan edo eduki beharko lukeen orrialderako lotura ere. Lehen birzuzenketak azken honetara <del>zuzendu</del> beharko luke.",
-       "double-redirect-fixed-move": "«[[$1]]» orria mugitu da, eta orain «[[$2]]» orrira daraman birbideratzea da",
-       "double-redirect-fixed-maintenance": "«[[$1]]» orritik «[[$2]]» orrira birbideratze bikoitza konpontzea",
+       "double-redirect-fixed-move": "«[[$1]]» orria mugitu da.\nAutomatikoki eguneratu da eta orain «[[$2]]» orrira darama.",
+       "double-redirect-fixed-maintenance": "«[[$1]]» orritik «[[$2]]» orrira birbideratze bikoitza automatikoki konpontzea mantentze lan bat da.",
        "double-redirect-fixer": "Birbideratze zuzentzailea",
        "brokenredirects": "Hautsitako birzuzenketak",
        "brokenredirectstext": "Ondorengo birbideratze hauek existitzen ez diren orrietara bideratuta daude:",
        "watchlist-details": "{{PLURAL:$1|Orrialde $1|$1 orrialde}} jarraitzen, eztabaida orrialdeak kontuan hartu gabe.",
        "wlheader-enotif": "Posta bidezko ohartarazpena gaituta dago.",
        "wlheader-showupdated": "Bisitatu zenituen azken alditik aldaketak izan dituzten orrialdeak '''beltzez''' nabarmenduta daude.",
-       "wlnote": "Jarraian {{PLURAL:$2|ikus daiteke azken orduko|ikus daitezke azken '''$2''' orduetako}} azken {{PLURAL:$1|aldaketa|'''$1''' aldaketak}}, $3, $4 gisa.",
+       "wlnote": "Jarraian {{PLURAL:$2|ikus daiteke azken orduko|ikus daitezke azken <strong>$2</strong> orduetako}} azken {{PLURAL:$1|aldaketa|<strong>$1</strong> aldaketak}}, $3, $4 gisa.",
        "wlshowlast": "Erakutsi azken $1 orduak, azken $2 egunak",
        "watchlist-hide": "Ezkutatu",
        "watchlist-submit": "Erakutsi",
        "enotif_body_intro_moved": "{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|mugitu}} du $2 erabiltzaileak $PAGEEDITDATE datan, ikus $3 oraingo bertsiorako.",
        "enotif_body_intro_restored": "{{SITENAME}} guneko «$1» orria {{GENDER:$2|lehengoratu}} du $2 administratzaileak $PAGEEDITDATE datan. Oraingo bertsioa ikusteko, zoaz helbide honetara: $3.",
        "enotif_body_intro_changed": "{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|aldatu}} du $2 erabiltzaileak $PAGEEDITDATE datan, ikus $3 oraingo bertsiorako.",
-       "enotif_lastvisited": "Ikus «$1» zure azken bisitaz geroztik izandako aldaketa guztiak ikusteko.",
+       "enotif_lastvisited": "Zure azken bisitaz geroztik izandako aldaketa guztiak ikusteko, ikus «$1»",
        "enotif_lastdiff": "Aldaketa hau ikusteko, ikus $1.",
        "enotif_anon_editor": "$1 erabiltzaile anonimoa",
        "enotif_body": "Kaixo $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\n\nEgilearen laburpena: $PAGESUMMARY $PAGEMINOREDIT\n\nEgilearekin harremanetan jarri:\nposta: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nEz dira oharpen gehiago bidaliko orrialde hau berriz bisitatzen ez baduzu izena emanda zaudela.\nHorrez gain, orrialdeen oharpen konfigurazioa leheneratu dezakezu jarraipen zerrendatik.\n\n             Adeitasunez {{SITENAME}}(e)ko oharpen sistema\n\n--\nZure epostaren jakinarazpenen konfigurazioa aldatzeko, ikus\n{{canonicalurl:{{#special:Preferences}}}}\n\nZure jarraipen zerrendako konfigurazioa aldatzeko, ikus\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nOrrialdea zure jarraipen zerrendatik ezabatzeko, ikus\n$UNWATCHURL\n\nLaguntza:\n$HELPPAGE",
        "alreadyrolled": "Ezin da [[User:$2|$2]] ([[User talk:$2|eztabaida]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) wikilariak «[[:$1]]» orrian egindako azken aldaketa desegin;\nbeste norbaitek editatu edo desegin du jadanik.\n\nAzken aldaketa [[User:$3|$3]] ([[User talk:$3|eztabaida]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) wikilariak egin du.",
        "editcomment": "Aldaketaren laburpena: <em>$1</em>.",
        "revertpage": "[[Special:Contributions/$2|$2]] ([[User talk:$2|talk]]) wikilariaren aldaketak deseginda, edukia [[User:$1|$1]] wikilariaren azken bertsiora itzuli da.",
-       "rollback-success": "$1 wikilariaren aldaketak deseginda,\nedukia $2 wikilariaren azken bertsiora itzuli da.",
+       "rollback-success": "{{GENDER:$3|$1}}; wikilariaren aldaketak deseginda,\nedukia {{GENDER:$4|$2}} wikilariaren azken bertsiora itzuli da.",
        "sessionfailure-title": "Saio-akatsa",
        "sessionfailure": "Badirudi saioarekin arazoren bat dagoela; bandalismoak saihesteko ekintza hau ezeztatu egin da. Mesedez, nabigatzaileko \"atzera\" botoian klik egin, hona ekarri zaituen orrialde hori berriz kargatu, eta saiatu berriz.",
        "changecontentmodel-title-label": "Orriaren izenburua",
index 275062a..4a548dc 100644 (file)
        "mw-widgets-titleinput-description-redirect": "ohjaus kohteeseen $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Lisää luokka...",
        "mw-widgets-usersmultiselect-placeholder": "Lisää enemmän...",
-       "date-range-from": "Lähtien:",
-       "date-range-to": "Päättyen:",
+       "date-range-from": "Aloituspäivä:",
+       "date-range-to": "Päättymispäivä:",
        "sessionmanager-tie": "!!FYZZ!!Cannot combine multiple request authentication types: $1.",
        "sessionprovider-generic": "$1 istuntoa",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "istuntoja, joissa on evästeet käytössä",
index c2c2ea8..885df8b 100644 (file)
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|नए पन्नों की सूची]] को भी देखें)",
        "recentchanges-submit": "दिखाएँ",
        "rcfilters-activefilters": "सक्रिय फिल्टर",
-       "rcfilters-quickfilters": "सहà¥\87à¤\9cा à¤«à¤¼à¤¿à¤²à¥\8dà¤\9fर à¤¸à¥\87à¤\9fिà¤\82à¤\97",
+       "rcfilters-quickfilters": "सà¥\81रà¤\95à¥\8dषित à¤«à¤¼à¤¿à¤²à¥\8dà¤\9fर",
        "rcfilters-quickfilters-placeholder-title": "कोई कड़ी अभी तक सहेजा नहीं गया",
        "rcfilters-quickfilters-placeholder-description": "अपने फ़िल्टर सेटिंग को सहेजने और बाद में उपयोग करने के लिए नीचे दिये बूकमार्क छवि पर क्लिक करें।",
        "rcfilters-savedqueries-defaultlabel": "सहेजे फ़िल्टर",
index d6d5d64..8333ad6 100644 (file)
        "emailsend": "Pošalji",
        "emailccme": "Pošalji mi e-mailom kopiju moje poruke.",
        "emailccsubject": "Kopija Vaše poruke suradniku $1: $2",
-       "emailsent": "E-mail poslan",
+       "emailsent": "E-poruka je poslana!",
        "emailsenttext": "Vaša poruka je poslana.",
        "emailuserfooter": "Ovu je e-poruku {{GENDER:$1|poslao suradnik|poslala suradnica}} $1 {{GENDER:$2|suradniku $2|suradnici $2}} uporabom mogućnosti \"{{int:emailuser}}\" s projekta {{SITENAME}}. Ukoliko {{GENDER:$2|odgovorite}} na tu e-poruku, {{GENDER:$2|Vaša}} će poruka biti izravno poslana {{GENDER:$1|izvornom pošiljatelju}}, otkrivajući pritom {{GENDER:$2|Vašu}} adresu e-pošte {{GENDER:$1|pošiljatelju|pošiljateljici}}.",
        "usermessage-summary": "Ostavljanje poruke sustava.",
index bf2a048..629bb70 100644 (file)
@@ -47,7 +47,8 @@
                        "Wolf Rex",
                        "BanKris",
                        "Notramo",
-                       "Urbalazs"
+                       "Urbalazs",
+                       "Bencemac"
                ]
        },
        "tog-underline": "Hivatkozások aláhúzása:",
        "anontalk": "Vitalap",
        "navigation": "Navigáció",
        "and": "&#32;és",
-       "qbfind": "Keresés",
-       "qbbrowse": "Böngészés",
-       "qbedit": "Szerkesztés",
-       "qbpageoptions": "Lapbeállítások",
-       "qbmyoptions": "Lapjaim",
        "faq": "GyIK",
-       "faqpage": "Project:GyIK",
        "actions": "Műveletek",
        "namespaces": "Névterek",
        "variants": "Változatok",
        "edit-local": "Helyi leírás szerkesztése",
        "create": "Létrehozás",
        "create-local": "Helyi leírás hozzáadása",
-       "editthispage": "Lap szerkesztése",
-       "create-this-page": "Oldal létrehozása",
        "delete": "Törlés",
-       "deletethispage": "Lap törlése",
-       "undeletethispage": "Lap helyreállítása",
        "undelete_short": "{{PLURAL:$1|Egy|$1}} szerkesztés helyreállítása",
        "viewdeleted_short": "{{PLURAL:$1|Egy|$1}} törölt szerkesztés megtekintése",
        "protect": "Lapvédelem",
        "protect_change": "módosítás",
-       "protectthispage": "Lapvédelem",
        "unprotect": "Védelem módosítása",
-       "unprotectthispage": "A lap védelmének módosítása",
        "newpage": "Új lap",
-       "talkpage": "A lappal kapcsolatos megbeszélés",
        "talkpagelinktext": "vitalap",
        "specialpage": "Speciális lap",
        "personaltools": "Személyes eszközök",
-       "articlepage": "Szócikk megtekintése",
        "talk": "Vitalap",
        "views": "Nézetek",
        "toolbox": "Eszközök",
        "tool-link-userrights": "{{GENDER:$1|Felhasználócsoportok}} módosítása",
        "tool-link-userrights-readonly": "{{GENDER:$1|Felhasználói}} csoportok megtekintése",
        "tool-link-emailuser": "E-mail küldése ennek a {{GENDER:$1|felhasználónak}}",
-       "userpage": "Felhasználó lapjának megtekintése",
-       "projectpage": "Projektlap megtekintése",
        "imagepage": "A fájl leírólapjának megtekintése",
        "mediawikipage": "Üzenetlap megtekintése",
        "templatepage": "Sablon lapjának megtekintése",
        "search-file-match": "(fájl tartalma egyezik)",
        "search-suggest": "Keresési javaslat: $1",
        "search-rewritten": "Találatok mutatása a következőre: $1. Inkább erre szeretnék rákeresni: $2.",
-       "search-interwiki-caption": "Társlapok",
+       "search-interwiki-caption": "Találatok társlapokról",
        "search-interwiki-default": "$1 találatok:",
        "search-interwiki-more": "(több)",
        "search-interwiki-more-results": "további eredmények",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lásd még: [[Special:NewPages|új lapok listája]])",
        "recentchanges-submit": "Megjelenítés",
        "rcfilters-activefilters": "Aktív szűrők",
-       "rcfilters-quickfilters": "Gyors hivatkozások",
+       "rcfilters-advancedfilters": "Haladó szűrők",
+       "rcfilters-quickfilters": "Mentett szűrők",
+       "rcfilters-quickfilters-placeholder-title": "Nincs mentett hivatkozás",
        "rcfilters-savedqueries-defaultlabel": "Mentett szűrők",
        "rcfilters-savedqueries-rename": "Átnevezés",
        "rcfilters-savedqueries-setdefault": "Beállítás alapértelmezettként",
+       "rcfilters-savedqueries-unsetdefault": "Eltávolítás, mint alapértelmezés",
        "rcfilters-savedqueries-remove": "Eltávolítás",
        "rcfilters-savedqueries-new-name-label": "Név",
+       "rcfilters-savedqueries-new-name-placeholder": "Írd le a szűrő célját.",
        "rcfilters-savedqueries-apply-label": "Gyors hivatkozás létrehozása",
        "rcfilters-savedqueries-cancel-label": "Mégse",
        "rcfilters-savedqueries-add-new-title": "Szűrők mentése gyors hivatkozásként",
        "rcfilters-filter-minor-description": "Szerző által aprónak jelölt szerkesztések",
        "rcfilters-filter-major-label": "Nem apró szerkesztések",
        "rcfilters-filter-major-description": "Nem aprónak jelölt szerkesztések.",
+       "rcfilters-filtergroup-watchlist": "Figyelőlistán szereplő oldalak",
        "rcfilters-filter-watchlist-watched-label": "Figyelőlistán",
+       "rcfilters-filter-watchlist-watched-description": "Figyelőlistádra felvett lapokon történt változtatások",
+       "rcfilters-filter-watchlist-watchednew-label": "Figyelőlistádon történt friss változtatások",
+       "rcfilters-filter-watchlist-watchednew-description": "A figyelőlistádon szereplő lapokon az utolsó látogatásod után történt változtatások.",
+       "rcfilters-filter-watchlist-notwatched-label": "Figyelőlistán nem szereplők",
+       "rcfilters-filter-watchlist-notwatched-description": "Minden változtatás, kivéve a figyelőlistádon szereplő lapoké.",
        "rcfilters-filtergroup-changetype": "Változtatás típusa",
        "rcfilters-filter-pageedits-label": "Lapszerkesztések",
-       "rcfilters-filter-pageedits-description": "A wiki tartalom szerkesztése, beszélgetés, kategória leírások...",
+       "rcfilters-filter-pageedits-description": "A wiki tartalom szerkesztése, beszélgetések, kategória leírások...",
        "rcfilters-filter-newpages-label": "Laplétrehozások",
        "rcfilters-filter-newpages-description": "Új oldalt létrehozó szerkesztések.",
        "rcfilters-filter-categorization-label": "Kategóriaváltoztatások",
        "rcfilters-filter-lastrevision-description": "Egy lap legfrissebb változtatása",
        "rcfilters-filter-previousrevision-label": "Régebbi változatok",
        "rcfilters-filter-previousrevision-description": "Minden változtatás a legutóbbiak kivételével",
+       "rcfilters-filter-excluded": "Kizárva",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:nem</strong> $1",
+       "rcfilters-view-tags": "Megjelölt szerkesztések",
+       "rcfilters-view-namespaces-tooltip": "Találatok szűrése névtér szerint",
+       "rcfilters-view-tags-tooltip": "Találatok szűrése címkék használatával",
+       "rcfilters-view-return-to-default-tooltip": "Vissza a főszűrőmenübe.",
        "rcnotefrom": "Alább a <strong>$3 $4</strong> óta történt változtatások láthatóak (legfeljebb <b>$1</b> db).",
        "rclistfromreset": "Dátumválasztás visszaállítása",
        "rclistfrom": "$3, $2 után történt változtatások megtekintése",
        "usermaildisabled": "Email fogadás letiltva",
        "usermaildisabledtext": "Nem küldhetsz emailt más felhasználóknak ezen a wikin",
        "noemailtitle": "Nincs e-mail cím",
-       "noemailtext": "Ez a szerkesztő nem adott meg érvényes e-mail címet.",
+       "noemailtext": "Ez a szerkesztő nem adott meg érvényes e-mail-címet.",
        "nowikiemailtext": "Ez a szerkesztő nem kíván másoktól e-mail üzeneteket fogadni.",
        "emailnotarget": "A címzett nem létezik vagy a felhasználónév érvénytelen.",
        "emailtarget": "Írd be címzett felhasználónevét",
        "newimages-user": "IP-cím vagy felhasználónév",
        "newimages-showbots": "Botos feltöltések mutatása",
        "newimages-hidepatrolled": "Ellenőrzött szerkesztések elrejtése",
+       "newimages-mediatype": "Médiatípus:",
        "noimages": "Nem tekinthető meg semmi.",
        "gallery-slideshow-toggle": "Miniatűrök ki/bekapcsolása",
        "ilsubmit": "Keresés",
        "gotointerwiki-invalid": "A megadott cím érvénytelen.",
        "gotointerwiki-external": "A(z) {{SITENAME}} elhagyására és a(z) [[$2]] meglátogatására készülsz, ami egy másik webhelyen található.\n\n[$1 Kattints ide a(z) $1 oldalra való továbblépéshez.]",
        "undelete-cantedit": "Nem állíthatod helyre ezt a lapot, mert nincs jogosultságod a szerkesztéséhez.",
-       "undelete-cantcreate": "Nem állíthatod helyre ezt a lapot, mert nem létezik ilyen című lap, és nincs jogosultságod létrehozni azt."
+       "undelete-cantcreate": "Nem állíthatod helyre ezt a lapot, mert nem létezik ilyen című lap, és nincs jogosultságod létrehozni azt.",
+       "pagedata-bad-title": "Érvénytelen cím: $1."
 }
index 7b1188c..1adb8ee 100644 (file)
        "templatesused": "このページで使用されている{{PLURAL:$1|テンプレート}}:",
        "templatesusedpreview": "このプレビューで使用されている{{PLURAL:$1|テンプレート}}:",
        "templatesusedsection": "この節で使用されている{{PLURAL:$1|テンプレート}}:",
-       "template-protected": "(保護)",
+       "template-protected": "(保護)",
        "template-semiprotected": "(半保護)",
        "hiddencategories": "このページは {{PLURAL:$1|$1 個の隠しカテゴリ}}に属しています:",
        "edittools": "<!-- ここに書いたテキストは編集およびアップロードのフォームの下に表示されます。 -->",
        "tags-edit-chosen-placeholder": "いくつかのタグを選択",
        "tags-edit-chosen-no-results": "一致するタグが見つかりません",
        "tags-edit-reason": "理由:",
-       "tags-edit-revision-submit": "変更を {{PLURAL:$1|this revision|$1 revisions}} に適用",
-       "tags-edit-logentry-submit": "変更を {{PLURAL:$1|this log entry|$1 log entries}} に適用",
+       "tags-edit-revision-submit": "変更を{{PLURAL:$1|この版|$1件の版}}に適用",
+       "tags-edit-logentry-submit": "変更を{{PLURAL:$1|この記録項目|$1件の記録項目}}に適用",
        "tags-edit-success": "変更が適用されました。",
        "tags-edit-failure": "変更は適用できませんでした: $1",
        "tags-edit-nooldid-title": "無効な対象版",
index 6225f65..c821e24 100644 (file)
        "tagline": "Saka {{SITENAME}}",
        "help": "Pitulung",
        "search": "Golèk",
-       "search-ignored-headings": " #<!-- lirwakaké waé larik iki kaya asliné --> <pre>\n# Sesirah sing bakal dilirwakaké déning golèkan.\n# Owahan tumrap iki bakal katon nalika sesirahé wis diindhèks.\n# Panjenengan bisa meksa ngindhèks ulang kaca kanthi ngayahi besutan kosong.\n# Sintaksisé kaya mangkéné:\n#   * Samubarang saka karakter \"#\" tumeka pungkasané larik iku minangka tanggapan.\n#   * Saben larik sing ora kosong iku sesirah sing kudu dilirwakaké lan samubarangé.\nRujukan\nPranala njaba\nUga delengen\n #</pre> <!-- lirwakaké waé larik iki kaya asliné -->",
+       "search-ignored-headings": " #<!-- lirwakaké waé larik iki kaya asliné --> <pre>\n# Sesirah sing bakal dilirwakaké déning golèkan.\n# Owahan tumrap iki bakal katon nalika sesirahé wis diindhèks.\n# Panjenengan bisa meksa ngindhèks ulang kaca kanthi ngayahi besutan kosong.\n# Sintaksisé kaya mangkéné:\n#   * Samubarang saka karakter \"#\" tumeka pungkasané larik iku minangka tanggepan.\n#   * Saben larik sing ora kosong iku sesirah sing kudu dilirwakaké lan samubarangé.\nRujukan\nPranala njaba\nUga delengen\n #</pre> <!-- lirwakaké waé larik iki kaya asliné -->",
        "searchbutton": "Golèk",
        "go": "Menyang",
        "searcharticle": "Menyang",
        "poolcounter-usage-error": "Masalah pangguna: $1",
        "aboutsite": "Ngenani {{SITENAME}}",
        "aboutpage": "Project:Ngenani",
-       "copyright": "Isi cumepak kanthi pangayoman $1 kajaba disebutaké yèn ana liyané.",
+       "copyright": "Isi cumepak kanthi pangayoman $1, kajaba ana katerangan liyané.",
        "copyrightpage": "{{ns:project}}:Hak cipta",
        "currentevents": "Kadadéan saiki",
        "currentevents-url": "Project:Kadadéan saiki",
        "policy-url": "Project:Kabijakan",
        "portal": "Gapura paguyuban",
        "portal-url": "Project:Garupa paguyuban",
-       "privacy": "Paugeran privasi",
-       "privacypage": "Project:Paugeran privasi",
+       "privacy": "Pranatan bab priangga",
+       "privacypage": "Project:Pranatan bab priangga",
        "badaccess": "Aksès ora olèh",
        "badaccess-group0": "Panjenengan ora pareng nglakokaké tindhakan sing panjenengan gayuh.",
        "badaccess-groups": "Pratingkah panjenengan diwatesi tumrap panganggo ing {{PLURAL:$2|klompoké|klompoké}}: $1.",
        "anonpreviewwarning": "<em>Panjenengan durung mlebu log. Yèn disimpen, alamat IP panjenengan bakal kacathet ing sujarah besutan kaca iki.</em>",
        "missingsummary": "<strong>Pangéling-éling:</strong> Panjenengan ora ngisèni ringkesané besutan.\nManawa panjenengan mencèt \"$1\" manèh, besutané panjengan bakal kasimpen tanpa katerangan.",
        "selfredirect": "<strong>Pélik:</strong> Sampéyan ngalih kaca iki iya nyang kaca iki dhéwé.\nSampéyan mungkin salah wènèh tujuan kanggo alihan utawa salah mbesut kaca.\nYèn sampéyan ngeklik \"$1\" manèh, kaca alihan bakal digawé.",
-       "missingcommenttext": "Mangga isi tanggapan ing ngisor iki.",
+       "missingcommenttext": "Mangga isi tanggepan ing ngisor iki.",
        "missingcommentheader": "'''Pangéling:''' Sampéyan durung nyadhiyakaké judhul/jejer kanggo tanggepan iki.\nYèn Sampéyan klik \"$1\" manèh, suntingan Sampéyan bakal kasimpen tanpa kuwi.",
        "summary-preview": "Pratuduh ringkesan besutan:",
        "subject-preview": "Pratuduh jejer:",
        "rev-suppressed-unhide-diff": "Sawiji benahan saka prabédan iki wis '''dibrèdèl'''.\nRincian bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambrèdèlan].\nSampéyan uga isih bisa [$1 ndelok prabédan iki] yèn Sampéyan gelem.",
        "rev-deleted-diff-view": "Sawiji benahan saka prabédan iki wis '''dibusak'''.\nSampéyan isih bisa ndelok prabédan iki; rincian bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambusakan].",
        "rev-suppressed-diff-view": "Sawiji benahan saka prabédan iki wis '''dibrèdèl'''.\nSampéyan isih bisa ndelok prabédan iki; rincian bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambrèdèlan].",
-       "rev-delundel": "Owah kasatmatan",
+       "rev-delundel": "owah pakatonan",
        "rev-showdeleted": "tuduhaké",
        "revisiondelete": "Busak/wurung busak révisi",
        "revdelete-nooldid-title": "Rèvisi tujuan ora sah",
        "yourvariant": "Werna basa isi:",
        "prefs-help-variant": "Varian utawa ortograpi sing Sampéyan pilih kanggo nampilaké kaca kontèn saka wiki iki.",
        "yournick": "Tapak asma anyar:",
-       "prefs-help-signature": "Tanggapan ing kaca parembugan kudu ditapakasmani mawa \"<nowiki>~~~~</nowiki>\", sing bakal salin dadi tapak asma lan tandha wektuné panjenengan.",
+       "prefs-help-signature": "Tanggepan ing kaca parembugan kudu ditapakasmani mawa \"<nowiki>~~~~</nowiki>\", sing bakal salin dadi tapak asma lan tandha wektuné panjenengan.",
        "badsig": "Tapak astanipun klèntu; cèk rambu HTML.",
        "badsiglength": "Tapak asta panjenengan kedawan.\nAja luwih saka {{PLURAL:$1|karakter|karakter}}.",
        "yourgender": "Kepiyé panjenengan nggambaraké salirané panjenengan?",
        "right-editmyuserjs": "Owahi berkas JavaScript panganggo sampeyan",
        "right-viewmywatchlist": "Deleng pawawangané panjenengan",
        "right-editmywatchlist": "Owahi daftar pangawasan sampeyan. Cathetan: ana cara liyane kanggo nambahi kaca menyang daftar, sanadyan ora duwe hak iki.",
-       "right-viewmyprivateinfo": "Dheleng data pribadi sampeyan (kayata alamat layang elektronik, jeneng asli)",
-       "right-editmyprivateinfo": "Owahi data pribadi sampeyan (kayata alamat layang elektronik, jeneng asli)",
+       "right-viewmyprivateinfo": "Deleng dhata prianggané panjenengan dhéwé (kaya ta alamat layang-èl, jeneng asli)",
+       "right-editmyprivateinfo": "Besut dhata prianggané panjenengan dhéwé (kaya ta alamat layang-èl, jeneng asli)",
        "right-editmyoptions": "Owahi preferensi sampeyan",
        "right-rollback": "Balèkaké kanthi gelis besutaning panganggo pungkasan sing mbesut kaca tinamtu",
        "right-markbotedits": "Tandhani besutan sing kawurungan yèn besutan bot",
        "action-browsearchive": "nggolèki kaca-kaca sing wis dibusak",
        "action-undelete": "wurung busak kaca",
        "action-suppressrevision": "tinjo lan balèkaké révisi sing didhelikaké",
-       "action-suppressionlog": "mirsani log pribadi iki",
+       "action-suppressionlog": "deleng log priangga iki",
        "action-block": "malang panganggo iki mbesut",
        "action-protect": "owahi tataran rereksané kaca iki",
        "action-rollback": "gelis mbalèkaké suntingané panganggo pungkasan nèng sawijining saca",
        "action-editmyoptions": "besut pilalané panjenengan",
        "action-editmywatchlist": "owahi daftar pantauan sampeyan",
        "action-viewmywatchlist": "dheleng daftar pantauan sampeyan",
-       "action-viewmyprivateinfo": "dheleng informasi pribadi sampeyan",
-       "action-editmyprivateinfo": "owahi informasi pribadi sampeyan",
+       "action-viewmyprivateinfo": "deleng katerangan prianggané panjenengan",
+       "action-editmyprivateinfo": "besut katerangan prianggané panjenengan",
        "action-editcontentmodel": "besut modhèl kontèné sawijiné kaca",
        "action-managechangetags": "gawé lan patèni tag",
        "action-applychangetags": "pasang tag nyang owahané panjenengan",
        "filereuploadsummary": "Owah-owahan berkas:",
        "filestatus": "Status hak cipta",
        "filesource": "Sumber",
-       "ignorewarning": "Lirwakna pèngetan lan langsung simpen berkas.",
-       "ignorewarnings": "Lirwakna pèngetan apa waé",
+       "ignorewarning": "Lirwakaké pepéling lan simpen langsung barkasé.",
+       "ignorewarnings": "Lirwakaké samubarang pepéling",
        "minlength1": "Jeneng berkas paling ora minimal kudu awujud saaksara.",
        "illegalfilename": "Jeneng berkas \"$1\" ngandhut aksara sing ora diparengaké ana sajroning irah-irahan kaca. Mangga owahana jeneng berkas iku lan cobanen  diunggahaké manèh.",
        "filename-toolong": "Jeneng berkas ora olèh luwih dawa saka 240 bita.",
        "empty-file": "Barkas sing panjenengan kirim kosong.",
        "file-too-large": "Barkas sing panjenengan kirim kagedhèn.",
        "filename-tooshort": "Jeneng barkas kecendhèken.",
-       "filetype-banned": "Jinis berkas iki dilarang.",
-       "verification-error": "Berkas iki ora lulus pangesahan.",
+       "filetype-banned": "Barkas jinis iki dilarang.",
+       "verification-error": "Barkas iki ora lulus vèrifikasi.",
        "hookaborted": "Owahan sing panjenengan ayahi diwurungaké déning èkstènsi.",
        "illegal-filename": "Jeneng barkas ora diidinaké.",
        "overwrite": "Nibani berkas sing wis ana ora dililakaké.",
        "tmp-create-error": "Ora bisa nggawé berkas sawetara.",
        "tmp-write-error": "Ora bisa nulis berkas sawetara.",
        "large-file": "Ukuran berkas disaranaké supaya ora ngluwihi $1 bita; berkas iki ukurané $2 bita.",
-       "largefileserver": "Berkas iki luwih gedhé tinimbang sing bisa kaparengaké server.",
+       "largefileserver": "Barkas iki luwih gedhé tinimbang sing diidinaké ing paladèn.",
        "emptyfile": "Berkas sing panjenengan unggahaké katoné kosong. Mbokmenawa iki amerga anané salah ketik ing jeneng berkas. Mangga dipastèkaké apa panjenengan pancèn kersa ngunggahaké berkas iki.",
        "windows-nonascii-filename": "Wiki iki ora nyengkuyung jeneng berkas mawa karakter kusus.",
        "fileexists": "Sawijining berkas mawa jeneng iku wis ana, mangga dipriksa <strong>[[:$1]]</strong> yèn panjenengan ora yakin sumedya ngowahiné.\n[[$1|thumb]]",
        "sourcefilename": "Jeneng barkas sumber:",
        "sourceurl": "URL sumber:",
        "destfilename": "Jeneng barkas tujuan:",
-       "upload-maxfilesize": "Ukuran maksimal berkas: $1",
+       "upload-maxfilesize": "Gedhéné barkas pol: $1",
        "upload-description": "Katerangan barkas",
-       "upload-options": "Opsi pangundhuhan",
-       "watchthisupload": "Awasana berkas iki",
+       "upload-options": "Opsi unggahan",
+       "watchthisupload": "Awasi barkas iki",
        "filewasdeleted": "Sawijining berkas mawa jeneng iki wis tau diunggahaké lan sawisé dibusak.\nMangga priksanen $1 sadurungé ngunggahaké berkas iku manèh.",
        "filename-bad-prefix": "Jeneng berkas sing panjenengan unggahaké, diawali mawa '''\"$1\"''', sing sawijining jeneng non-dèskriptif sing biasané diwènèhaké sacara otomatis déning kamera digital. Mangga milih jeneng liyané sing luwih dèskriptif kanggo berkas panjenengan.",
        "upload-proto-error": "Protokol ora bener",
        "upload-curl-error6-text": "URL sing diwènèhaké ora bisa dihubungi.\nMangga dipriksa manèh yèn URL iku pancèn bener lan situs iki lagi aktif.",
        "upload-curl-error28": "Pangunggahan ngliwati wektu",
        "upload-curl-error28-text": "Situsé kesuwèn sadurungé réaksi.\nMangga dipriksa menawa situsé aktif, nunggu sedélok lan coba manèh.\nMbok-menawa panjenengan bisa nyoba manèh ing wektu sing luwih longgar.",
-       "license": "Jenis lisènsi:",
-       "license-header": "Pamalilah",
+       "license": "Lisènsi:",
+       "license-header": "Lisènsi",
        "nolicense": "Durung ana sing dipilih",
        "licenses-edit": "Besut pilihan lisènsi",
        "license-nopreview": "(Pratuduh ora ana)",
        "listfiles-latestversion-yes": "Iya",
        "listfiles-latestversion-no": "Ora",
        "file-anchor-link": "Barkas",
-       "filehist": "Babading barkas",
-       "filehist-help": "Klik tanggal/wayah saprelu ndeleng barkasé kaya sing muncul rikala iku.",
+       "filehist": "Sujarah barkas",
+       "filehist-help": "Klik ing tanggal/wektuné saprelu ndeleng rupané barkasé nalika tanggal iku.",
        "filehist-deleteall": "busaken kabèh",
        "filehist-deleteone": "busaken iki",
        "filehist-revert": "balèkna",
        "filehist-current": "saiki",
-       "filehist-datetime": "Tanggal/Tabuh",
+       "filehist-datetime": "Tanggal/Wektu",
        "filehist-thumb": "Gambar cilik",
        "filehist-thumbtext": "Gambar cilik kanggo owahan $1",
        "filehist-nothumb": "Ora ana miniatur",
        "filehist-user": "Panganggo",
        "filehist-dimensions": "Alang ujur",
        "filehist-filesize": "Gedhené barkas",
-       "filehist-comment": "Tanggapan",
+       "filehist-comment": "Tanggepan",
        "imagelinks": "Panggunané barkas",
        "linkstoimage": "{{PLURAL:$1|Kaca|$1 kaca}} ngisor iki nggayut barkas iki:",
        "linkstoimage-more": "Luwih saka $1 {{PLURAL:$1|kaca|kaca-kaca}} nduwèni pranala menyang berkas iki.\nDhaftar ing ngisor nuduhaké {{PLURAL:$1|kaca pisanan kanthi pranala langsung|$1 kaca kanthi pranala langsung}} menyang berkas iki.\n[[Special:WhatLinksHere/$2|dhaftar pepak]] uga ana.",
        "sharedupload-desc-create": "Berkas iki saka $1 lan mungkin dianggo nèng proyèk liya.\nMungkin Sampéyan pingin nyunting katrangan nèng [$2 kaca katrangan berkasé] nèng kono.",
        "filepage-nofile": "Ora ana barkas kanthi jeneng kaya mangkéné.",
        "filepage-nofile-link": "Ora ana berkas nganggo jeneng iki, nanging panjenengan bisa [$1 ngunggahaké].",
-       "uploadnewversion-linktext": "Unggahna vèrsi sing luwih anyar tinimbang gambar iki",
+       "uploadnewversion-linktext": "Unggah vèrsi anyar saka barkas iki",
        "shared-repo-from": "saka $1",
        "shared-repo": "sawijining panyimpenan kanggo bebarengan",
        "upload-disallowed-here": "Sampéyan ora kena ngeblegi barkas iki.",
        "withoutinterwiki-summary": "Kaca-kaca ing ngisor iki ora nggayut nyang vèrsi basa liyané.",
        "withoutinterwiki-legend": "Préfiks",
        "withoutinterwiki-submit": "Tuduhna",
-       "fewestrevisions": "Artikel mawa owah-owahan sithik dhéwé",
+       "fewestrevisions": "Artikel sing owahé sithik dhéwé",
        "nbytes": "$1 {{PLURAL:$1|bét|bét}}",
        "ncategories": "$1 {{PLURAL:$1|kategori|kategori}}",
        "ninterwikis": "$1 {{PLURAL:$1|interwiki|interwiki}}",
        "prefixindex-namespace": "Kabèh kaca mawa ater-ater (bilik jeneng $1)",
        "prefixindex-submit": "Tuduhaké",
        "prefixindex-strip": "Busak ater-ater saka pratélan",
-       "shortpages": "Kaca cendhak",
-       "longpages": "Kaca dawa",
+       "shortpages": "Kaca sing cekak",
+       "longpages": "Kaca sing dawa",
        "deadendpages": "Kaca sing buntu",
        "deadendpagestext": "Kaca-kaca ing ngisor iki ora nggayut nyang kaca liya ing {{SITENAME}}.",
        "protectedpages": "Kaca sing direksa",
        "newpages": "Kaca anyar",
        "newpages-submit": "Tuduhaké",
        "newpages-username": "Jeneng panganggo:",
-       "ancientpages": "Kaca lawas dhéwé",
+       "ancientpages": "Kaca sing lawas dhéwé",
        "move": "Pindhahen",
        "movethispage": "Lih kaca iki",
        "unusedimagestext": "Berkas-berkas sing kapacak iki ana nanging ora dienggo ing kaca apa waé.\nTulung digatèkaké yèn situs wèb liyané mbok-menawa bisa nyambung ing sawijining berkas sacara langsung mawa URL langsung, lan berkas-berkas kaya mengkéné iku mbok-menawa ana ing daftar iki senadyan ora dienggo aktif manèh.",
        "export-addcat": "Tambahna",
        "export-addnstext": "Nambahaké kaca saka bilik jeneng:",
        "export-addns": "Tambah",
-       "export-download": "Simpen minangka berkas",
+       "export-download": "Simpen dadi barkas",
        "export-templates": "Lebokaké cithakan",
        "export-pagelinks": "Lebokaké kaca sing kagayut nyang jeroning:",
        "export-manual": "Tambah kaca kanthi manual:",
        "thumbnail_dest_directory": "Ora bisa nggawé dirèktori tujuan",
        "thumbnail_image-type": "Tipe gambar ora didhukung",
        "thumbnail_gd-library": "Konfigurasi pustaka GD ora pepak: fungsi $1 ilang",
-       "thumbnail_image-missing": "Berkas katonané ilang: $1",
+       "thumbnail_image-missing": "Barkas sing kayané ilang: $1",
        "import": "Impor kaca",
        "importinterwiki": "Impor saka wiki liya",
        "import-interwiki-text": "Pilih sawijining wiki lan irah-irahan kaca sing arep diimpor.\nTanggal révisi lan jeneng panyunting bakal dilestarèkaké.\nKabèh aktivitas impor transwiki bakal dilog ing [[Special:Log/import|log impor]].",
        "importsuccess": "Ngimpor rampung!",
        "importnosources": "Ora ana sumber impor transwiki sing wis digawé lan pangunggahan sajarah sacara langsung wis dinon-aktifaké.",
        "importnofile": "Ora ana berkas sumber impor sing wis diunggahaké.",
-       "importuploaderrorsize": "Pangunggahan berkas impor gagal. Ukuran berkas ngluwihi ukuran sing diidinaké.",
+       "importuploaderrorsize": "Unggahan barkas impor ora dadi.\nBarkasé gedhéné ngluwihi ukuran sing diidinaké.",
        "importuploaderrorpartial": "Pangunggahan berkas impor gagal. Namung sabagéyan berkas sing kasil bisa diunggahaké.",
        "importuploaderrortemp": "Pangunggahan berkas gagal. Sawijining dirèktori sauntara sing dibutuhaké ora ana.",
        "import-parse-failure": "Prosès impor XML gagal",
        "anonymous": "{{PLURAL:$1|Panganggo|panganggo}} anon ing {{SITENAME}}.",
        "siteuser": "Panganggo {{SITENAME}} $1",
        "anonuser": "Panganggo anonim {{SITENAME}} $1",
-       "lastmodifiedatby": "Kaca iki pungkasan diowahi pukul $2, $1 déning $3.",
+       "lastmodifiedatby": "Kaca iki pungkasan dibesut pukul $2, $1 déning $3.",
        "othercontribs": "Adhedhasar karyané $1.",
        "others": "liya-liyané",
        "siteusers": "{{PLURAL:$2|{{GENDER:$1|Panganggo}}|Panganggo}} {{SITENAME}} $1",
        "imagemaxsize": "Wates ukuran gambar:<br />''(kanggo kaca dhèskripsi berkas)''",
        "thumbsize": "Ukuran gambar cilik (thumbnail):",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|kaca|kaca}}",
-       "file-info": "ukuran berkas: $1, tipe MIME: $2",
+       "file-info": "ukuran barkas: $1, jinis MIME: $2",
        "file-info-size": "$1 × $2 piksel, ukuran barkas: $3, jinis MIME: $4",
        "file-info-size-pages": "$1 × $2 piksel, gedhéné berkas: $3, jinisé MIME: $4, $5 {{PLURAL:$5|kaca|kaca}}",
        "file-nohires": "Ora ana résolusi sing luwih dhuwur.",
        "yesterday-at": "Dhek wingi jam $1",
        "bad_image_list": "Formaté kaya mengkéné:\n\nNamung butir daftar (baris sing diawali mawa tandha *) sing mèlu diitung. Pranala kapisan ing sawijining baris kudu pranala ing berkas sing ala.\nPranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian'', yaiku artikel sing bisa nuduhaké berkas iku.",
        "metadata": "Métadata",
-       "metadata-help": "Berkas iki ngandhut informasi tambahan sing mbokmenawa ditambahaké déning kamera digital utawa ''scanner'' sing dipigunakaké kanggo nggawé utawa olèhé digitalisasi berkas. Yèn berkas iki wis dimodifikasi, detail sing ana mbokmenawa ora sacara kebak nuduhaké informasi saka gambar sing wis dimodifikasi iki.",
-       "metadata-expand": "Tuduhna detail tambahan",
-       "metadata-collapse": "Delikna detail tambahan",
+       "metadata-help": "Barkas iki ngemu katerangan tambahan, bokmanawa asalé saka kodhak dhigital utawa sekèner sing dienggo metha utawa ndhigitalisasi barkas iku. \nYèn barkasé wis diowahi saka asliné, sawenèh rerincèn mungkin ora sawutuhé mèmper karo barkas owahané.",
+       "metadata-expand": "Tuduhaké rerincèn tambahan",
+       "metadata-collapse": "Dhelikaké rerincèn tambahan",
        "metadata-fields": "Babagan-babagan métadhata gambar sing kapacak ing layang iki bakal dimot nyang pitontonan kaca gambar nalika métadhata diciyutaké.\nLiyané bakal kadhelikaké kanthi baku.\n* panggawé\n* gagrag\n* tanggalwayahasli\n* wayahpaparan\n* angkaf\n* bijibanteriso\n* dawafocal\n* artis\n* hakcipta\n* pratélangambar\n* latitudgps\n* longitudgps\n* altitudgps",
        "exif-imagewidth": "Jembar",
        "exif-imagelength": "Dhuwur",
        "exif-primarychromaticities": "Kromatisitas werna primer",
        "exif-ycbcrcoefficients": "Koèfisièn matriks transformasi papan werna",
        "exif-referenceblackwhite": "Wiji réferènsi pasangan ireng putih",
-       "exif-datetime": "Tanggal lan tabuh owahé barkas",
+       "exif-datetime": "Tanggal lan wektu owahé barkas",
        "exif-imagedescription": "Sesirah gambar",
        "exif-make": "Produsèn kamera",
        "exif-model": "Modhèl kaméra",
        "exif-pixelydimension": "Dhuwuring gambar",
        "exif-usercomment": "Komentar panganggo",
        "exif-relatedsoundfile": "Barkas swara magepokan",
-       "exif-datetimeoriginal": "Surya lan tabuh panggawéning data",
-       "exif-datetimedigitized": "Tanggal lan tabuh dhigitalisasi",
+       "exif-datetimeoriginal": "Tanggal lan wektu turuné dhata",
+       "exif-datetimedigitized": "Tanggal lan wektu dhigitalisasi",
        "exif-subsectime": "Subdetik DateTime",
        "exif-subsectimeoriginal": "Subdetik DateTimeOriginal",
        "exif-subsectimedigitized": "Subdetik DateTimeDigitized",
        "exif-gpsareainformation": "Jeneng wilayah GPS",
        "exif-gpsdatestamp": "Tanggal GPS",
        "exif-gpsdifferential": "Korèksi diférènsial GPS",
-       "exif-jpegfilecomment": "Tanggepan berkas JPEG",
+       "exif-jpegfilecomment": "Tanggepan barkas JPEG",
        "exif-keywords": "Tembung kunci",
        "exif-worldregioncreated": "Tlatah ing donya anggoné gambaré dijupuk",
        "exif-countrycreated": "Nagara anggoné gambaré dijupuk",
        "exif-morepermissionsurl": "Inpormasi lisènsi alternatip",
        "exif-attributionurl": "Nalika nganggo manèh karya iki, mangga ubungaké nèng",
        "exif-preferredattributionname": "Nalika nganggo manèh karya iki, mangga awèhi krèdit",
-       "exif-pngfilecomment": "Tanggepan berkas PNG",
+       "exif-pngfilecomment": "Tanggepan barkas PNG",
        "exif-disclaimer": "Sélakan",
        "exif-contentwarning": "Pèngetan kontèn",
        "exif-giffilecomment": "Tanggepan berkas GIF",
        "feedback-dialog-title": "Awèh saran",
        "feedback-error1": "Masalah: Kasil ora dingertèni saka API",
        "feedback-error2": "Masalah: Besutané wurung",
-       "feedback-error3": "Masalah: Ora ana tanggapan saka API",
+       "feedback-error3": "Masalah: Ora ana tanggepan saka API",
        "feedback-message": "Layang:",
        "feedback-subject": "Jejer:",
        "feedback-submit": "Kirim",
index 4f679d7..5ab613e 100644 (file)
        "anontalk": "Discute",
        "navigation": "Naviga",
        "and": "&#32;e",
-       "qbfind": "Trova",
-       "qbbrowse": "Surfa",
-       "qbedit": "Edita",
-       "qbpageoptions": "Esta paje",
-       "qbmyoptions": "Me pajes",
        "faq": "Demandas comun",
-       "faqpage": "Project: Demandas comun",
        "actions": "Atas",
        "namespaces": "Locas de nom",
        "variants": "Varias",
        "edit-local": "Edita descrive local",
        "create": "Crea",
        "create-local": "Ajunta descrive local",
-       "editthispage": "Cambia esta paje",
-       "create-this-page": "Crea esta paje",
        "delete": "Sutrae",
-       "deletethispage": "Sutrae esta paje",
-       "undeletethispage": "Desutrae esta paje",
        "undelete_short": "Desutrae {{PLURAL:$1|edita|editas}}",
        "viewdeleted_short": "Vide {{PLURAL:$1|un edit desutraeda|$1 editas desutraeda}}",
        "protect": "Proteje",
        "protect_change": "cambia",
-       "protectthispage": "Proteje esta paje",
        "unprotect": "Cambia la proteje",
-       "unprotectthispage": "Cambia la proteje de esta paje",
        "newpage": "Paje nova",
-       "talkpage": "Discute esta paje",
        "talkpagelinktext": "Parla",
        "specialpage": "Paje spesial",
        "personaltools": "Utiles personal",
-       "articlepage": "Vide la paje de contenis",
        "talk": "Discutes",
        "views": "Vides",
        "toolbox": "Utiles",
        "tool-link-userrights": "Cambia grupos de {{GENDER:$1|usor}}",
        "tool-link-userrights-readonly": "Vide grupos de {{GENDER:$1|usor}}",
        "tool-link-emailuser": "E-posta esta {{GENDER:$1|usor}}",
-       "userpage": "Vide paje de usor",
-       "projectpage": "Vide la paje de projeta",
        "imagepage": "Vide paje de fix",
        "mediawikipage": "Vide la paje de mesaje",
        "templatepage": "Vide la paje de model",
        "generic-pool-error": "Pardona, la servadores es tro cargada a esta ora.\nTro multe usores es atentante vide esta recurso.\nPer favore espeta ante cuando tu atenta vide esta recurso denova.",
        "aboutsite": "Supra {{SITENAME}}",
        "aboutpage": "Project:Supra",
+       "copyright": "Contenis es disponable su $1, estra diferente notada.",
        "copyrightpage": "{{ns:project}}:Diretos de autor",
        "currentevents": "Avenis presente",
        "currentevents-url": "Project:Avenis presente",
        "ok": "Oce",
        "retrievedfrom": "Retraeda de \"$1\"",
        "youhavenewmessages": "Tu ave $1 ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|Tu ave}} $1 de {{PLURAL:$3|otra usor|$3 usores}} ($2).",
+       "newmessageslinkplural": "{{PLURAL:$1|un mesaje nova|999=mesajes nova}}",
+       "newmessagesdifflinkplural": "ultima {{PLURAL:$1|cambia|cambias}}",
        "youhavenewmessagesmulti": "Tu ave mesajes nova en $1",
        "editsection": "cambia",
        "editold": "edita",
        "nstab-help": "Paje de aida",
        "nstab-category": "Categoria",
        "mainpage-nstab": "Paje Prima",
+       "nosuchspecialpage": "No esiste tal paje spesial",
+       "nospecialpagetext": "<strong>Tu ia demanda per un paje spesial nonpertinente.</strong>\n\nUn lista de pajes spesial pertinente pote es trovada en\n[[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Era",
        "databaseerror": "Era de base de datos",
        "missingarticle-diff": "(Difere: $1, $2)",
        "badtitle": "Titulo es mal",
        "badtitletext": "La titulo de la paje tu ia desira ia es nonlegal, es vacua, o es un titulo intervici o interlingual no liada coreta. Es posable ce es un o plu simboles ce no pote es usada en titulos.",
        "viewsource": "Vide la orijin",
-       "viewsourcetext": "Tu pote vide e copia la orijin de esta paje:",
+       "viewsource-title": "Vide fonte per $1",
+       "viewsourcetext": "Tu pote vide e copia la orijina de esta paje:",
        "mycustomcssprotected": "Tu no ave permete per edita esta paje CSS.",
        "mycustomjsprotected": "Tu no ave permete per edita esta paje JavaScript.",
        "myprivateinfoprotected": "Tu no ave permete per edita tua informa privata.",
        "newarticletext": "Tu ia segue un lia a un paje ce no esista ja.\nPer crea la paje, comensa scrive en la caxa a su\n(vide la [$1 paje de aida] per plu).\nSi tu es asi par era, clica a la boton '''retro''' de tu surfador.",
        "noarticletext": "On ave aora no testo a esta paje.\nTu pote [[Special:Search/{{PAGENAME}}|xerca per la titulo de esta paje]] en otra pajes,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} xerca la arcivos relatada],\no [{{fullurl:{{FULLPAGENAME}}|action=edit}} edita esta paje]</span>.",
        "noarticletext-nopermission": "On ave presente no testo en esta paje.\nTu pote [[Special:Search/{{PAGENAME}}|xerca per esta titulo de paje]] en otra pajes, o <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} xerca arcivos relatada]</span>, ma tu no es permeteda per crea esta paje.",
-       "previewnote": "'''Esta sola un previde; cambias no es fisada ja'''",
+       "userpage-userdoesnotexist-view": "La conta de usor \"$1\" no es enscriveda",
+       "clearyourcache": "<strong>Note:</strong> After saving, you may have to bypass your browser's cache to see the changes.\n* <strong>Firefox / Safari:</strong> Hold <em>Shift</em> while clicking <em>Reload</em>, or press either <em>Ctrl-F5</em> or <em>Ctrl-R</em> (<em>⌘-R</em> on a Mac)\n* <strong>Google Chrome:</strong> Press <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> on a Mac)\n* <strong>Internet Explorer:</strong> Hold <em>Ctrl</em> while clicking <em>Refresh</em>, or press <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Go to <em>Menu → Settings</em> (<em>Opera → Preferences</em> on a Mac) and then to <em>Privacy & security → Clear browsing data → Cached images and files</em>.",
+       "previewnote": "<strong>Esta es sola un previde.</strong>\nTua cambias no es fisada ja!",
+       "continue-editing": "Vade a la loca de edita",
        "editing": "En la prosede de edita $1",
        "creating": "Creante $1",
        "editingsection": "Edita $1 (sesion)",
        "template-semiprotected": "(proteje en parte)",
        "hiddencategories": "Esta paje es un membro de {{PLURAL:$1|1 categoria ascondeda|$1 categorias ascondeda}}:",
        "nocreatetext": "{{SITENAME}} ave un restringe a la capas per crea pajes nova.\nTu pote vade a retro e edita un paje esistente, o  [[Special:UserLogin|sinia per entra o crea un conta]].",
+       "permissionserrors": "Era de permete",
        "permissionserrorstext-withaction": "Tua no es permeteda per $2, per la {{PLURAL:$1|razona|razonas}} seguente:",
        "recreate-moveddeleted-warn": "<strong>Avisa: Tu es recreante un paje cual ia es sutraeda a ante.</strong>\nTu debe pensa si la continua de edita de esta paje conveni.\nLa arcivo de sutraes e moves per esta paje es asi per tua conveni:",
        "moveddeleted-notice": "Esta paje ia es sutraeda.\nLa arcivo de sutraes e moves per la paje es furnida a su per refere.",
+       "content-model-wikitext": "vicitesto",
+       "undo-failure": "Esta edita ia no pote es desfada par causa de editas media.",
        "viewpagelogs": "Vide la arcivo de esta paje",
        "currentrev": "Cambia presente",
        "currentrev-asof": "Cambia presente a departi di $1",
        "page_first": "prima",
        "page_last": "final",
        "histlegend": "Diferente eleje: Marca la caxas de radio de esta varias per compare e clica entra o la boton a la funda.<br />\n(presente) = difere de la varia presente,\n(presedente) = difere con varia presedente, M = edita minor.",
-       "history-fieldset-title": "Surfa istoria",
+       "history-fieldset-title": "Surfa per revisas",
        "histfirst": "La plu vea",
        "histlast": "La plu nova",
        "historysize": "({{PLURAL:$1|1 otuple|$1 otuples}})",
        "historyempty": "(vacua)",
        "history-feed-title": "Istoria de revises",
+       "history-feed-description": "Istoria de revide per esta paje en la vici",
        "history-feed-item-nocomment": "$1 a $2",
        "rev-delundel": "mostra/asconde",
        "rev-showdeleted": "mostra",
        "revdelete-radio-unset": "Vidable",
        "pagehist": "Istoria de paje",
        "deletedhist": "Istoria sutraeda",
+       "mergelog": "Fusa jornal de ativia",
        "history-title": "Istoria de cambias de \"$1\"",
        "difference-title": "Difere entre revisas de \"$1\"",
        "lineno": "Linia $1:",
        "compareselectedversions": "Compare varias elejeda",
        "editundo": "desfa",
+       "diff-empty": "(Zero difere)",
        "diff-multi-sameuser": "({{PLURAL:$1|Un revisa media|$1 revisas media}} par la mesma usor no mostrada)",
+       "diff-multi-otherusers": "({{PLURAL:$1|Un revisa media|$1 revisas media}} par {{PLURAL:$2|otra usor|$2 usores}} no mostrada)",
        "searchresults": "Resultas de xerca",
        "searchresults-title": "Xerca la resultas per \"$1\"",
        "prevn": "{{PLURAL:$1|$1}} presedente",
        "nextn": "{{PLURAL:$1|$1}} seguente",
+       "prevn-title": "Seguente $1 {{PLURAL:$1|resulta|resultas}}",
        "nextn-title": "Seguente $1 {{PLURAL:$1|resulta|resultas}}",
        "shown-title": "Mostra $1 {{PLURAL:$1|resulta|resultas}} per paje",
        "viewprevnext": "Vide ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchmenu-exists": "<strong>Lo esiste un paje nomida \"[[:$1]]\" en esta vici.</strong> {{PLURAL:$2|0=|Vide ance la otra resultas de xerca trovada.}}",
        "searchmenu-new": "<strong>Crea la paje \"[[:$1]]\" a esta wiki!</strong> {{PLURAL:$2|0=|Vide ance la paje trovada con tua xerca.|Vide ance la resultas trovada par la xerca.}}",
        "searchprofile-articles": "Pajes de contenis",
        "searchprofile-images": "Multimedios",
        "searchprofile-everything-tooltip": "Xerca tota contenidas (incluinte pajes de conversa)",
        "searchprofile-advanced-tooltip": "Xerca en nomspasios unica",
        "search-result-size": "$1 ({{PLURAL:$2|1 parola|$2 parolas}})",
+       "search-result-category-size": "{{PLURAL:$1|1 membro |$1 membros}} ({{PLURAL:$2|1 sucategoria|$2 sucategorias}}, {{PLURAL:$3|1 arcivo|$3 arcivos}})",
        "search-redirect": "(redirije de $1)",
        "search-section": "(sesion $1)",
+       "search-file-match": "(coresponde con la contenida de la arcivo)",
        "search-suggest": "Tu ia intende: $1",
        "search-interwiki-default": "Resultas de $1:",
        "search-interwiki-more": "(plu)",
        "saveusergroups": "Fisa la grupo de usores",
        "group": "Grupo:",
        "group-user": "Usores",
+       "group-bot": "Bots",
        "group-sysop": "Dirijores",
        "group-all": "(tota)",
        "group-user-member": "{{GENDER:$1|usor}}",
        "grouppage-user": "{{ns:project}}:Usores",
+       "grouppage-bot": "{{ns:project}}:Bots",
        "grouppage-sysop": "{{ns:project}}:Dirijores",
        "right-writeapi": "Usa de la API de scrive",
        "newuserlogpage": "Arcivo de creas de usor",
        "rightslog": "Catalogo de diretos de usor",
        "action-edit": "edita esta paje",
+       "action-createaccount": "crea esta conta de usor",
        "nchanges": "$1 {{PLURAL:$1|cambia|cambias}}",
        "enhancedrc-history": "istoria",
        "recentchanges": "Cambias resente",
        "recentchanges-legend": "Elejes  per cambias resente",
        "recentchanges-summary": "Asi la lista de cambias resente en la vici.",
+       "recentchanges-noresult": "No cambias en la periodo donada coresponde con esta criterios.",
        "recentchanges-feed-description": "Seque la cambias plu resente a la vici en esta flue.",
        "recentchanges-label-newpage": "Esta edita ia crea un paje nova",
        "recentchanges-label-minor": "Esta es un edita minor",
        "recentchanges-label-plusminus": "La grandia de esta paje es cambiada par esta cuantia de baites",
        "recentchanges-legend-heading": "<strong>Titulo:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (vide ance [[Special:NewPages|la lista de pajes nova]])",
-       "rcnotefrom": "A su es la cambias de '''$2''' (asta '''$1''' es mostrada).",
+       "rcnotefrom": "A su {{PLURAL:$5|es la cambia|es la cambias}} de <strong>$3, $4</strong> (asta <strong>$1</strong> shown).",
        "rclistfrom": "Mostra cambias nova, comensante de $3 $2",
        "rcshowhideminor": "$1 editas minor",
        "rcshowhideminor-show": "Mostra",
        "rcshowhidebots-show": "Mostra",
        "rcshowhidebots-hide": "Asconde",
        "rcshowhideliu": "$1 usores identifiada aora",
+       "rcshowhideliu-show": "Mostra",
        "rcshowhideliu-hide": "Asconde",
        "rcshowhideanons": "$1 usores sin nom",
        "rcshowhideanons-show": "Mostra",
        "rc-change-size-new": "$1 {{PLURAL:$1|bait|baites}}  pos cambia",
        "rc-enhanced-expand": "Mostra detalias",
        "rc-enhanced-hide": "Asconde detalias",
+       "rc-old-title": "creada orijinal como \"$1\"",
        "recentchangeslinked": "Cambias relateda",
        "recentchangeslinked-feed": "Cambias relateda",
        "recentchangeslinked-toolbox": "Cambias relateda",
        "filedesc": "Resoma",
        "savefile": "Fisa fix",
        "upload-file-error": "Era interna",
+       "license": "Lisensa:",
        "license-header": "Lisensa",
        "imgfile": "fix",
        "listfiles": "Lista de imajes",
        "filehist-datetime": "Date/Tempo",
        "filehist-thumb": "Imajeta",
        "filehist-thumbtext": "Imajeta per varia pos $1",
+       "filehist-nothumb": "No imajeta",
        "filehist-user": "Usor",
        "filehist-dimensions": "Mesuras",
        "filehist-filesize": "Grandia de fix",
        "filehist-comment": "Comenta",
        "imagelinks": "Usas de fix",
        "linkstoimage": "Esta {{PLURAL:$1|paje|pajes}} lia a esta fix:",
+       "linkstoimage-more": "Plu ca $1 {{PLURAL:$1|un paje lia|pajes lia}} a esta arcivo.\nLa lista a su mostra la {{PLURAL:$1|prima lia|prima $1 lias}} a esta arcivo.\nUn [[Special:WhatLinksHere/$2|lista completa]] es disposable.",
        "nolinkstoimage": "Es no pajes ce lia a esta fix.",
+       "linkstoimage-redirect": "$1 (redirije de arcivo) $2",
        "sharedupload": "Esta fix es parte de $1 e pote es usada par otra projetas.",
        "sharedupload-desc-here": "Esta fix es de $1 e pote es usada par otra projetas.\nLa descrive su sua [$2 paje de descrive de fix] ala es mostra a su.",
+       "filepage-nofile": "No esiste un arcivo con esta nom.",
        "uploadnewversion-linktext": "Envia un varia nova de esta fix",
        "upload-disallowed-here": "Tu no pote suprascrive esta arcivo.",
        "mimesearch": "Xerca de MIME",
        "randomredirect": "Redirije acaso",
        "statistics": "Statisticas",
        "doubleredirects": "Redirijes duple",
+       "double-redirect-fixer": "Reparor de redirijes",
        "brokenredirects": "Redirijes rompeda",
        "withoutinterwiki": "Pajes sin lias de lingua",
        "fewestrevisions": "Pajes con la min revides",
        "booksources-search-legend": "Xerca per fontes de libros",
        "booksources-search": "Xerca",
        "specialloguserlabel": "Usor:",
-       "speciallogtitlelabel": "Titulo:",
+       "speciallogtitlelabel": "Ojeto (titulo o {{ns:usor}}:nom de usor per la usor):",
        "log": "Lista de atas",
        "all-logs-page": "Tota catalogos",
+       "logempty": "No matching items in log.",
        "allpages": "Tota pajes",
        "nextpage": "Paje seguente ($1)",
        "prevpage": "Paje presedente ($1)",
        "allarticles": "Tota pajes",
        "allpagessubmit": "Vade",
        "allpagesprefix": "Mostra pajes con prefis:",
+       "allpages-hide-redirects": "Asconde redirijes",
        "categories": "Categorias",
        "categoriespagetext": "Es la categorias seguente en la vici.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
        "linksearch-ok": "Xerca",
        "emailmessage": "Mesaje:",
        "emailsend": "Envia",
        "emailsent": "E-posta ia es enviada",
+       "usermessage-editor": "Notas de sistem",
        "watchlist": "Lista de pajes oservada",
        "mywatchlist": "Lista de pajes oservada",
        "watchlistfor2": "Per $1 $2",
        "watch": "Oserva",
        "watchthispage": "Oserva esta paje",
        "unwatch": "Nonoserva",
-       "watchlist-details": "{{PLURAL:$1|$1 paje|$1 pajes}} osservada, sin pajes de discutes.",
+       "watchlist-details": "{{PLURAL:$1|$1 paje|$1 pajes}} oservada, sin pajes de discutes.",
+       "wlheader-showupdated": "La pajes cual ia es cambiada de la ultima ves ce tu ia visita los es mostrada en <strong>spesa</strong>.",
+       "wlnote": "A su {{PLURAL:$1|ies la ultima cambia|es la ultima<strong>$1</strong> cambias}} en la ultima {{PLURAL:$2|ora|<strong>$2</strong> oras}}, en $3, $4.",
        "wlshowlast": "Mostra la $1 oras e $2 dias presedente",
+       "watchlist-options": "Elejes de lista de oserva.",
        "watching": "Oserva...",
        "unwatching": "No oserva...",
+       "enotif_reset": "Marca la pajes visitada",
        "created": "Creada",
        "deletepage": "Sutrae la paje",
        "confirm": "Aproba",
        "rollbacklinkcount": "reversa $1 {{PLURAL:$1|edita|editas}}",
        "protectlogpage": "Catalogo de protejes",
        "protectedarticle": "\"[[$1]]\" protejeda",
+       "modifiedarticleprotection": "cambia nivel de proteje a \"[[$1]]\"",
        "unprotectedarticle": "''[[$1]]'' desprotejeda",
        "protect-title": "Fisa nivel de proteje a \"$1\"",
        "prot_1movedto2": "[[$1]] es moveda a [[$2]]",
        "protect-expiry-options": "1 ora:1 hour,1 dia:1 day,1 semana:1 week,2 semanas:2 weeks,1 mensa:1 month,3 mensas:3 months,6 mensas:6 months,1 anio:1 year,nonlimitada:infinite",
        "restriction-type": "Permete:",
        "restriction-level": "Nivel de restrinje:",
+       "restriction-edit": "Edita",
+       "restriction-move": "Move",
        "undelete": "Restora paje sutraeda",
        "undeletebtn": "Restora",
        "undelete-search-submit": "Xerca",
        "tooltip-namespace_association": "Marca esta caxa per inclui ance la nomspasio de discute o sujeto asosiada con la nomspasio elejeda",
        "blanknamespace": "(Prima)",
        "contributions": "Contribuis de {{GENDER:$1|usor}}",
+       "contributions-title": "Contribuis de la usor per $1",
        "mycontris": "Mea contribuis",
        "anoncontribs": "Contribuis",
-       "contribsub2": "Per $1 ($2)",
-       "uctop": "(culmine)",
+       "contribsub2": "Per {{GENDER:$3|$1}} ($2)",
+       "nocontribs": "No cambias ia es trovada corespondente con esta criterios.",
+       "uctop": "(aora)",
        "month": "De mensa (e plu vea):",
        "year": "De anio (e plu vea):",
        "sp-contributions-newbies": "Sola mostra contribuis de contas nova",
        "sp-contributions-newbies-sub": "Per contas nova",
        "sp-contributions-blocklog": "Impedi arcivo",
-       "sp-contributions-talk": "Parla",
+       "sp-contributions-uploads": "cargas",
+       "sp-contributions-logs": "Lista de atas",
+       "sp-contributions-talk": "discute",
        "sp-contributions-userrights": "Dirije de la diretos de usores",
        "sp-contributions-search": "Xerca per contribuis",
        "sp-contributions-username": "Adirije de IP o nom de usor:",
+       "sp-contributions-toponly": "Sola mostra editas cual es la revisas ultima.",
+       "sp-contributions-newonly": "Sola mostra editas cual es creas de pajes.",
        "sp-contributions-submit": "Xerca",
        "whatlinkshere": "Ce es liada a asi",
        "whatlinkshere-title": "Pajes ci lia a \"$1\"",
        "whatlinkshere-hideredirs": "$1 redirijes",
        "whatlinkshere-hidetrans": "$1 transcluis",
        "whatlinkshere-hidelinks": "$1 lias",
+       "whatlinkshere-hideimages": "$1 lias de arcivo",
        "whatlinkshere-filters": "Filtros",
        "blockip": "Impedi usor",
        "ipbreason": "Razona:",
        "contribslink": "contribuis",
        "blocklogpage": "impedi arcivo",
        "blocklogentry": "impedida [[$1]] con un tempo de fini de $2 $3",
+       "block-log-flags-nocreate": "crea de contas descapasida",
+       "proxyblocker": "Proxy blocker",
        "move-page-legend": "Move paje",
        "movepagetext": "Usa la forma a su va cambia la nom de un paje, e va move tota se istoria a la nom nova.\nLa titulo vea va deveni un paje de redirije a la titulo nova.\nLias a la titulo de la paje vea no va es cambiada;\nTu debe vide serta ce es redirijes duple o rompeda.\nTu es respondable per es serta ce la lias va continua vade a la locas intendeda.\n\nNota ce la paje '''no''' va es moveda si es ja un paje a la titulo nova, sin el es vacua o un redirije e no ave un istoria de editas presedente.\nEsta sinifia ce tu pote cambia la nom de un paje a la loca presedente si tu era, e tu no pote scrive supra un paje ce esiste ja.\n\n'''AVISA!'''\nEsta pote es un cambia dramos e nonespetada per un paje poplal;\nper favore, es serta ce tu comprende la resulta de esta ata ante tu continua.",
        "movepagetalktext": "La paje de discuta de esta paje va es moveda automatica con el '''eseta si:'''\n*Un paje de discuta ce no es vacua esiste ja su la nom nova, o\n*Tu cambia la indica en la caxa su.\n\nEn esta casos, tu va nesesa move o fusa la paje per mano, si desirada.",
        "tooltip-t-recentchangeslinked": "Cambia resente en pajes liada de esta paje",
        "tooltip-feed-atom": "Enflue de atom per esta paje",
        "tooltip-t-contributions": "Vide la lista de contribuis de {{GENDER:$1|esta usor}}",
-       "tooltip-t-emailuser": "Envia un eposta a esta usor",
+       "tooltip-t-emailuser": "Envia un e-posta a {{GENDER:$1|esta usor}}",
        "tooltip-t-upload": "Envia fixes",
        "tooltip-t-specialpages": "Lista de tota pajes spesial",
        "tooltip-t-print": "Varia primable de esta paje",
        "tooltip-ca-nstab-special": "Esta es un paje special, e no pote es editada.",
        "tooltip-ca-nstab-project": "Vide la paje de la projeta",
        "tooltip-ca-nstab-image": "Vide la paje de fix",
+       "tooltip-ca-nstab-mediawiki": "Vide la mesaje de sistem",
        "tooltip-ca-nstab-template": "Mostra la model",
        "tooltip-ca-nstab-help": "Vide la paje de aida",
        "tooltip-ca-nstab-category": "Vide la paje de la categoria",
        "tooltip-summary": "Entra un resoma corta",
        "others": "otras",
        "simpleantispam-label": "Proba anti-spam.\n<strong>No</strong> completa esta!",
+       "pageinfo-title": "Informa per \"$1\"",
+       "pageinfo-header-basic": "Informa fundal",
+       "pageinfo-header-edits": "Edita la istoria",
+       "pageinfo-header-restrictions": "Cambia la proteje",
+       "pageinfo-header-properties": "Proprias de la paje",
+       "pageinfo-display-title": "Mostra la titulo",
+       "pageinfo-default-sort": "Default sort key",
+       "pageinfo-length": "Longia de paje (en baites)",
+       "pageinfo-article-id": "Carta de identia de la paje",
+       "pageinfo-language": "Lingua de la paje de contenidas",
+       "pageinfo-content-model": "Model de la paje de contenidas",
+       "pageinfo-robot-policy": "Catalogo par robotes",
+       "pageinfo-robot-index": "Permeteda",
+       "pageinfo-watchers": "Numeros de oservores de paje",
+       "pageinfo-few-watchers": "Min ca $1 {{PLURAL:$1|oservor|oservores}}",
+       "pageinfo-redirects-name": "Numero de redirijes a esta paje",
+       "pageinfo-subpages-name": "Numero de supajes de esta paje",
+       "pageinfo-firstuser": "Creor de paje",
+       "pageinfo-firsttime": "Data de crea de la paje",
+       "pageinfo-lastuser": "Editor la plu nova",
+       "pageinfo-lasttime": "Data de la ultima edita",
+       "pageinfo-edits": "Numero total de editas",
+       "pageinfo-authors": "Numero total de autores diferente",
+       "pageinfo-recent-edits": "Numero resente de editas (en la pasada $1)",
+       "pageinfo-recent-authors": "Numero total de autores diferente",
+       "pageinfo-magic-words": "{{PLURAL:$1|parola|parolas}} majial ($1)",
+       "pageinfo-hidden-categories": "{{PLURAL:$1|Categoria|Categorias}} ascondeda ($1)",
+       "pageinfo-templates": "Transcluded {{PLURAL:$1|template|templates}} ($1)",
        "pageinfo-toolboxlink": "Informa de paje",
+       "pageinfo-contentpage": "Contada como paje de contenidas",
+       "pageinfo-contentpage-yes": "Si",
+       "patrol-log-page": "Patrol log",
        "previousdiff": "← Difere plu vea",
        "nextdiff": "Difere plu nova →",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|paje|pajes}}",
        "file-info-size": "$1 × $2 pixel, grandia de fix: $3, MIME tipo: $4",
+       "file-info-size-pages": "$1 × $2 pixels, file size: $3, MIME type: $4, $5 {{PLURAL:$5|paje|pajes}}",
        "file-nohires": "No plu densia posable.",
        "svg-long-desc": "SVG fix, per nom $1 × $2 pixeles, grandia de fix: $3",
        "show-big-image": "Arcivo orijinal",
        "namespacesall": "tota",
        "monthsall": "tota",
        "confirm_purge_button": "Oce",
+       "imgmultipagenext": "paje seguente →",
+       "imgmultigo": "Vade!",
+       "imgmultigoto": "Vade a la paje $1",
+       "watchlisttools-clear": "Clari la lista de oserva.",
        "watchlisttools-view": "Vide cambias pertinente",
        "watchlisttools-edit": "Vide e edita la lista de pajes oservada",
        "watchlisttools-raw": "Edita la lista rua de pajes oservada",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discute]])",
        "version": "Varia",
        "version-version": "($1)",
+       "redirect": "Redirijeda par arcivo, suor, paje, revisa, o carta de identia per identifia se",
+       "redirect-submit": "Vade",
+       "redirect-lookup": "Lookup:",
+       "redirect-value": "Valua:",
+       "redirect-user": "Carta de identia de la usor",
+       "redirect-page": "Carta de identia de la paje",
+       "redirect-revision": "Revisa de la paje",
+       "redirect-file": "Nom de arcivo",
        "fileduplicatesearch-submit": "Xerca",
        "specialpages": "Pajes spesial",
        "tag-filter": "Filtre de [[Special:Tags|eticeta]]:",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tags}}]]: $2)",
+       "tags-active-yes": "Si",
+       "tags-active-no": "No",
+       "tags-hitcount": "$1 {{PLURAL:$1|cambia|cambias}}",
        "logentry-delete-delete": "$1 {{GENDER:$2|sutraeda}} paje $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|reponeda}} paje $3 ($4)",
+       "logentry-delete-revision": "$1 {{GENDER:$2|ia cambia}} vidablia de {{PLURAL:$5|un revisa|$5 revisas}} en la paje $3: $4",
+       "revdelete-content-hid": "contenida ascondeda",
        "logentry-move-move": "$1 {{GENDER:$2|moveda}} paje $3 a $4",
+       "logentry-move-move-noredirect": "$1 {{GENDER:$2|ia move}} la paje $3 a $4 sin lasa un redirije",
+       "logentry-move-move_redir": "$1 {{GENDER:$2|ia move}} la paje $3 a $4 per redirije",
+       "logentry-patrol-patrol-auto": "$1 {{GENDER:$2|ia marca}} revisa de forma automata $4 de paje $3 patruliada",
        "logentry-newusers-create": "Conta de usor $1 ia es {{GENDER:$2|creada}}",
+       "logentry-newusers-autocreate": "La conta de usor $1 ia es {{GENDER:$2|creada}} direta",
        "logentry-upload-upload": "$1 {{GENDER:$2|cargada}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|ia carga}} un varia nova de $3",
        "searchsuggest-search": "Xerca {{SITENAME}}",
-       "expand_templates_ok": "Oce"
+       "duration-days": "$1 {{PLURAL:$1|dia|dias}}",
+       "expand_templates_ok": "Oce",
+       "randomrootpage": "Paje radis acaso"
 }
index 43ea969..b164c2e 100644 (file)
        "loginlanguagelabel": "ဘာသာ: $1",
        "pt-login": "အကောင့်ဝင်ရန်",
        "pt-login-button": "အကောင့်ဝင်ရန်",
+       "pt-login-continue-button": "ဆက်လက် ဝင်ရောက်ပါ",
        "pt-createaccount": "အကောင့် ဖန်တီးရန်",
        "pt-userlogout": "အကောင့်ထွက်ရန်",
        "changepassword": "စကားဝှက် ပြောင်းရန်",
index 00d8d12..691eefa 100644 (file)
        "whatlinkshere-title": "$1 सँग जोडिएका पानाहरू",
        "whatlinkshere-page": "पृष्ठ:",
        "linkshere": "निम्न पृष्ठहरू '''[[:$1]]''' मा जोडिन्छ :",
-       "nolinkshere": " '''[[:$1]]'''मा à¤²à¤¿à¤\82à¤\95 à¤­à¤\8fà¤\95ा à¤ªà¥\8dयाà¤\95à¥\87à¤\9cà¥\87à¤\9cहरà¥\81 छैनन्",
+       "nolinkshere": " '''[[:$1]]'''मा à¤²à¤¿à¤\82à¤\95 à¤­à¤\8fà¤\95ा à¤\95à¥\81नà¥\88 à¤ªà¥\83षà¥\8dठहरà¥\82 छैनन्",
        "nolinkshere-ns": "चुनिएको नामस्थानमा '''[[:$1]]''' सित जोडिने पृष्ठहरू छैनन्।",
        "isredirect": "अनुप्रेषित पृष्ठ",
        "istemplate": "पारदर्शिता",
index 0e286eb..1db91d1 100644 (file)
        "modifiedarticleprotection": "endra nivået på vernet av «[[$1]]»",
        "unprotectedarticle": "fjerna vern av «[[$1]]»",
        "movedarticleprotection": "flytta verneinnstillingar frå «[[$2]]» til «[[$1]]»",
+       "protectedarticle-comment": "{{GENDER:$2|Verna}} «[[$1]]»",
        "unprotectedarticle-comment": "{{GENDER:$2|Fjerna}} vern av «[[$1]]»",
        "protect-title": "Vernar «$1»",
        "protect-title-notallowed": "Sjå vernenivået til «$1»",
index d4f5285..4d854d9 100644 (file)
        "mediastatistics-header-text": "Header on [[Special:MediaStatistics]] for file types that are in the text category. This includes simple text formats, including plain text formats, json, csv, and xml. Source code of compiled programming languages may be included here in the future, but isn't currently.",
        "mediastatistics-header-executable": "Header on [[Special:MediaStatistics]] for file types that are in the executable category. This includes things like source files for interpreted programming language (Shell scripts, javascript, etc).",
        "mediastatistics-header-archive": "Header on [[Special:MediaStatistics]] for file types that are in the archive category. Includes things like tar, zip, gzip etc.",
+       "mediastatistics-header-3d": "Header on [[Special:MediaStatistics]] for file types that are in the 3D category. Includes STL files.",
        "mediastatistics-header-total": "Header on [[Special:MediaStatistics]] for a summary of all file types.",
        "json-warn-trailing-comma": "A warning message notifying that JSON text was automatically corrected by removing erroneous commas.\n\nParameters:\n* $1 - number of commas that were removed\n{{Related|Json-error}}",
        "json-error-unknown": "User error message when there’s an unknown error.\n\nThis error is shown if we received an unexpected value from PHP. See http://php.net/manual/en/function.json-last-error.php\n\nParameters:\n* $1 - integer error code\n{{Related|Json-error}}",
index 7774735..55d3bdb 100644 (file)
        "rcfilters-filter-lastrevision-description": "Cea mai recentă modificare a unei pagini.",
        "rcfilters-filter-previousrevision-label": "Versiuni recente",
        "rcfilters-filter-previousrevision-description": "Toate modificările care nu sunt cea mai recentă modificare a unei pagini.",
+       "rcfilters-filter-excluded": "Exclus",
        "rcnotefrom": "Dedesubt {{PLURAL:$5|se află o modificare|sunt modificările}} începând cu <b>$3, $4</b> (maximum <b>$1</b> afișate).",
        "rclistfromreset": "Resetați selectarea datei",
        "rclistfrom": "Afișează modificările începând cu $3, ora $2",
        "file-thumbnail-no": "Numele fișierului începe cu <strong>$1</strong>.\nSe pare că este o imagine cu dimensiune redusă''(thumbnail)''.\nDacă ai această imagine la rezoluție mare încarc-o pe aceasta, altfel schimbă numele fișierului.",
        "fileexists-forbidden": "Un fișier cu acest nume există deja și nu poate fi rescris.\nMergeți înapoi și încărcați acest fișier sub un nume nou. [[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "Un fișier cu acest nume există deja în magazia de imagini comune; mergeți înapoi și încărcați fișierul sub un nou nume. [[File:$1|thumb|center|$1]]",
-       "fileexists-no-change": "Încărcarea este un duplicat exact al versiunii curente <strong>[[:$1]]</strong>.",
-       "fileexists-duplicate-version": "Încărcarea este un duplicat exact al {{PLURAL:$2|versiunii vechi|versiunilor vechi}} a <strong>[[:$1]]</strong>.",
+       "fileexists-no-change": "Fișierul încărcat este un duplicat exact al versiunii curente a <strong>[[:$1]]</strong>.",
+       "fileexists-duplicate-version": "Fișierul încărcat este un duplicat exact al {{PLURAL:$2|versiunii vechi|versiunilor vechi}} a <strong>[[:$1]]</strong>.",
        "file-exists-duplicate": "Acest fișier este dublura {{PLURAL:$1|fișierului|fișierelor}}:",
        "file-deleted-duplicate": "Un fișier identic cu acesta ([[:$1]]) a fost șters anterior. Verificați istoricul ștergerilor fișierului înainte de a-l reîncărca.",
        "file-deleted-duplicate-notitle": "Un fișier identic cu acesta a fost șters anterior, iar titlul a fost suprimat.\nAr trebui să contactați pe cineva care poate vizualiza datele suprimate ale fișierului pentru a evalua situația înainte de a începe să-l reîncărcați.",
        "uploaded-hostile-svg": "S-a descoperit CSS vulnerabil în elementul de stil al fișierului SVG încărcat.",
        "uploaded-event-handler-on-svg": "Setarea atributelor <code>$1=„$2”</code> de gestionare a evenimentului nu este permisă pentru fișierele SVG.",
        "uploaded-href-attribute-svg": "Atributele href din fișierele SVG au permisiunea de a se conecta numai la adrese destinație http:// sau https://, dar a fost găsit <code>&lt;$1 $2=\"$3\"&gt;</code>.",
-       "uploaded-href-unsafe-target-svg": "S-a găsit href către informații nesigure: destinație URI <code>&lt;$1 $2=„$3”&gt;</code> în fișierul SVG încărcat.",
+       "uploaded-href-unsafe-target-svg": "S-a găsit href către informații nesigure: destinație URI <code>&lt;$1 $2=\"$3\"&gt;</code> în fișierul SVG încărcat.",
        "uploaded-animate-svg": "S-a găsit în fișierul SVG încărcat eticheta „animate” care ar putea modifica valoarea href folosind atributul „from” <code>&lt;$1 $2=„$3”&gt;</code>.",
        "uploaded-setting-event-handler-svg": "Setarea atributelor de gestionare a evenimentului nu este permisă; s-a găsit <code>&lt;$1 $2=„$3”&gt;</code> în fișierul SVG încărcat.",
        "uploaded-setting-href-svg": "Este blocată utilizarea etichetei „set” pentru a adăuga atributul „href” în elementul-părinte.",
        "modifiedarticleprotection": "schimbat nivelul de protecție pentru \"[[$1]]\"",
        "unprotectedarticle": "a eliminat protecția pentru „[[$1]]”",
        "movedarticleprotection": "setările de protecție au fost mutate de la „[[$2]]” la „[[$1]]”",
-       "protectedarticle-comment": "A protejat „[[$1]]”",
-       "unprotectedarticle-comment": "A eliminat protecția pentru „[[$1]]”",
+       "protectedarticle-comment": "{{GENDER:$2|a protejat}} „[[$1]]”",
+       "unprotectedarticle-comment": "{{GENDER:$2|a eliminat protecția}} pentru „[[$1]]”",
        "protect-title": "Protejare „$1”",
        "protect-title-notallowed": "Vizualizare nivel de protecție pentru „$1”",
        "prot_1movedto2": "a mutat [[$1]] la [[$2]]",
        "tags-actions-header": "Acțiuni",
        "tags-active-yes": "Da",
        "tags-active-no": "Nu",
-       "tags-source-extension": "Definită de o extensie",
+       "tags-source-extension": "Definită de software",
        "tags-source-manual": "Aplicată manual de utilizatori și roboți",
        "tags-source-none": "Nu mai este în uz",
        "tags-edit": "modificare",
        "htmlform-user-not-valid": "<strong>$1</strong> nu este un nume de utilizator valid.",
        "logentry-delete-delete": "$1 {{GENDER:$2|a șters}} pagina $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|a șters}} pagina de redirecționare $3 prin suprascriere",
-       "logentry-delete-restore": "$1 {{GENDER:$2|a restaurat}} pagina $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|a restaurat}} pagina $3 ($4)",
+       "restore-count-files": "{{PLURAL:$1|1 fișier|$1 fișiere}}",
        "logentry-delete-event": "$1 {{GENDER:$2|a schimbat}} vizibilitatea {{PLURAL:$5|unui eveniment din jurnal|a $5 evenimente din jurnal|a $5 de evenimente din jurnal}} pentru $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|a schimbat}} vizibilitatea {{PLURAL:$5|unei versiuni|a $5 versiuni|a $5 de versiuni}} pentru pagina $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|a modificat}} vizibilitatea evenimentelor din jurnal pentru $3",
        "logentry-tag-update-revision": "$1 {{GENDER:$2|a actualizat}} etichetele pentru versiunea $4 a paginii $3 ({{PLURAL:$7|adăugat}} $6; {{PLURAL:$9|șters}} $8)",
        "logentry-tag-update-logentry": "$1 {{GENDER:$2|a actualizat}} etichetele intrării din jurnal $5 a paginii $3 ({{PLURAL:$7|adăugat}} $6; {{PLURAL:$9|șters}} $8)",
        "rightsnone": "(niciunul)",
+       "rightslogentry-temporary-group": "$1 (temporar, până la $2)",
        "feedback-adding": "Se adaugă părerea pe pagină...",
        "feedback-back": "Înapoi",
        "feedback-bugcheck": "Minunat! Trebuie doar să verificați dacă nu cumva problema a fost [$1 deja înregistrată].",
        "api-error-emptypage": "Crearea paginilor noi, goale nu este permisă.",
        "api-error-publishfailed": "Eroare internă: serverul nu a putut publica fișierul temporar.",
        "api-error-stashfailed": "Eroare internă: serverul nu a putut stoca fișierul temporar.",
-       "api-error-unknown-warning": "Avertisment necunoscut: $1",
+       "api-error-unknown-warning": "Avertisment necunoscut: \"$1\".",
        "api-error-unknownerror": "Eroare necunoscută: „$1”.",
        "duration-seconds": "$1 {{PLURAL:$1|secundă|secunde|de secunde}}",
        "duration-minutes": "$1 {{PLURAL:$1|minut|minute|de minute}}",
        "pagelang-language": "Limbă",
        "pagelang-use-default": "Folosește limba implicită",
        "pagelang-select-lang": "Alege limba",
+       "pagelang-reason": "Motiv",
        "pagelang-submit": "Trimite",
+       "pagelang-nonexistent-page": "Pagina $1 nu există.",
        "right-pagelang": "Modifică limba paginii",
        "action-pagelang": "modificați limba paginii",
        "log-name-pagelang": "Jurnal modificare limbă",
        "mw-widgets-dateinput-placeholder-month": "AAAA-LL",
        "mw-widgets-titleinput-description-new-page": "pagina nu există încă",
        "mw-widgets-titleinput-description-redirect": "redirecționare către $1",
+       "date-range-from": "De la data:",
+       "date-range-to": "Până la data:",
        "sessionmanager-tie": "Nu se pot combina multiple tipuri de cereri de autentificare: $1.",
        "sessionprovider-generic": "sesiuni $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sesiuni pe bază de module cookie.",
        "log-action-filter-rights-autopromote": "Schimbare automată",
        "log-action-filter-upload-upload": "Încărcare nouă",
        "log-action-filter-upload-overwrite": "Reîncărcare",
+       "authmanager-email-label": "E-mail",
+       "authmanager-email-help": "Adresă de e-mail",
+       "authmanager-realname-label": "Nume real",
+       "authmanager-realname-help": "Numele real al utilizatorului",
+       "authprovider-resetpass-skip-label": "Omite",
        "linkaccounts-submit": "Leagă conturile",
        "unlinkaccounts": "Dezleagă conturile",
        "unlinkaccounts-success": "Contul a fost dezlegat"
index eee48ee..1975137 100644 (file)
        "botpasswords-label-cancel": "Annulle",
        "botpasswords-label-delete": "Scangìlle",
        "botpasswords-label-resetpassword": "Azzere 'a passuord",
+       "botpasswords-label-grants": "Assegnazziune applicabbile:",
        "botpasswords-label-grants-column": "Assegnazziune",
        "botpasswords-created-title": "Passuord d'u bot ccrejate",
        "botpasswords-updated-title": "Passuord d'u bot cangiate",
        "uploaded-script-svg": "Acchiate elemende pe script \"$1\" jndr'à 'u file SVG carecate.",
        "uploaded-hostile-svg": "Acchiate 'nu CSS insecure ndr'à l'elemende de stile d'u file SVG carecate.",
        "uploaded-event-handler-on-svg": "'A 'mbostazione de le attribute de gestione de l'evende <code>$1=\"$2\"</code> non ge se pò ffà cu le file SVG.",
-       "uploaded-href-unsafe-target-svg": "Acchiate 'na destinazione href non secure <code>&lt;$1 $2=\"$3\"&gt;</code> jndr'à 'u file SVG carecate.",
+       "uploaded-href-unsafe-target-svg": "Acchiate 'nu href a date non secure: URI de destinazione <code>&lt;$1 $2=\"$3\"&gt;</code> jndr'à 'u file SVG carecate.",
        "uploadscriptednamespace": "Stu file SVG tène 'nu namespace illegale '<nowiki>$1</nowiki>'",
        "uploadinvalidxml": "L'XML jndr'à 'u file carecate non ge pò essere analizzate.",
        "uploadvirus": "Alanga toje, 'u file condiene 'nu virus! Dettaglie: $1",
        "backend-fail-read": "Non ge pozze leggere 'u file $1.",
        "backend-fail-create": "Non ge pozze scrivere 'u file $1.",
        "backend-fail-maxsize": "Non ge pozze scrivere 'u file \"$1\" purcé jè cchiù granne de {{PLURAL:$2|'nu byte|$2 byte}}",
-       "backend-fail-readonly": "L'archivije de rete \"$1\" jè pe stu mumende in sole letture. 'U mutive ha state: \"$2\"",
+       "backend-fail-readonly": "L'archivije de rete \"$1\" jè pe stu mumende in sole letture. 'U mutive ha state: <em>$2</em>",
        "backend-fail-synced": "'U file \"$1\" jè jndr'à 'nu state ingonsistende jndr'à l'archivije inderne",
        "backend-fail-connect": "Non ge pozze connettere 'a memorie de rrete \"$1\".",
        "backend-fail-internal": "'N'errore scanusciute s'à verificate jndr'à l'archivije de rrete \"$1\".",
        "apihelp-no-such-module": "Module \"$1\" none acchiate.",
        "apisandbox": "Sandbox de l'API",
        "apisandbox-api-disabled": "API non g'è abbiletate sus a stu site.",
-       "apisandbox-intro": "Ause sta pàgene pe sperimendà cu le '''API de le web service pe MediaUicchi'''.\nFà referimende a [https://www.mediawiki.org/wiki/API:Main_page 'a documendazione de l'API] pe cchiù dettaglie de l'ause de l'API.\nEsembie: [https://www.mediawiki.org/wiki/API#A_simple_example pigghie 'u condenute d'a Pàgene Prengepàle]. Scacchie 'n'azione pe 'ndrucà otre esembie.\n\nVide ca, pure ca queste jè 'na buatte de sabbie tu puè carrescià le cangiaminde de sta pàgene sus 'a uicchi.",
+       "apisandbox-intro": "Ause sta pàgene pe sperimendà cu le <strong>API de le web service pe MediaUicchi</strong>.\nFà referimende a [[mw:API:Main page| 'a documendazione de l'API]] pe cchiù dettaglie de l'ause de l'API.\nEsembie: [https://www.mediawiki.org/wiki/API#A_simple_example pigghie 'u condenute d'a Pàgene Prengepàle]. Scacchie 'n'azione pe 'ndrucà otre esembie.\n\nVide ca, pure ca queste jè 'na buatte de sabbie tu puè carrescià le cangiaminde de sta pàgene sus 'a uicchi.",
        "apisandbox-submit": "Fà 'na richieste",
        "apisandbox-reset": "Pulizze",
        "apisandbox-examples": "Esembie",
        "emailccsubject": "Copie de le messàgge tue a $1: $2",
        "emailsent": "E-mail mannete",
        "emailsenttext": "'U messagge email tue ha state mannete.",
-       "emailuserfooter": "Sta e-mail ha state {{GENDER:$1|mannate}} da $1 a {{GENDER:$2|$2}} da 'a funziona \"{{int:emailuser}}\" de {{SITENAME}}.",
+       "emailuserfooter": "Sta e-mail ha state {{GENDER:$1|mannate}} da $1 a {{GENDER:$2|$2}} da 'a funziona \"{{int:emailuser}}\" de {{SITENAME}}. Ce {{GENDER:$2|respunne}}, 'a mail d'a resposta toje avéne mannate direttamende {{GENDER:$1|a 'u mittende origgenale}}, dicenne {{GENDER:$1|'u}} indirizze {{GENDER:$2|tune}} de poste elettroneche.",
        "usermessage-summary": "Lassanne 'nu messagge de sisteme.",
        "usermessage-editor": "Messaggiatore de sisteme",
        "usermessage-template": "MediaWiki:UserMessage",
        "enotif_body_intro_moved": "'A pàgene $1 de {{SITENAME}} ha state spustate suse a $PAGEEDITDATE da {{gender:$2|$2}}, vide $3 p'a revisione corrende.",
        "enotif_body_intro_restored": "'A pàgene $1 de {{SITENAME}} ha state repristenate suse a $PAGEEDITDATE da {{gender:$2|$2}}, vide $3 p'a revisione corrende.",
        "enotif_body_intro_changed": "'A pàgene $1 de {{SITENAME}} ha state cangiate suse a $PAGEEDITDATE da {{gender:$2|$2}}, vide $3 p'a revisione corrende.",
-       "enotif_lastvisited": "Vide $1 pe tutte le cangiaminde da l'urtema visita toje.",
-       "enotif_lastdiff": "Vide $1 pe vedè stu cangiamende.",
+       "enotif_lastvisited": "'Ndruche $1 pe tutte le cangiaminde da l'urtema visita toje.",
+       "enotif_lastdiff": "Pe 'ndrucà stu cangiamende, 'ndruche $1",
        "enotif_anon_editor": "Utende anonime $1",
        "enotif_body": "Care $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nRiepileghe de le cangiaminde: $PAGESUMMARY $PAGEMINOREDIT\n\nCondatte 'u cangiatore:\nmail: $PAGEEDITOR_EMAIL\nuicchi: $PAGEEDITOR_WIKI\n\nNon ge stonne otre notifiche ce tu face otre attivitate senze ca tu visite sta pàgene.\nTu puè pure azzerà 'a spunde de le notifiche pe tutte le pàggene condrollate jndr'à l'elenghe tune.\n\nStatte Bbuene, 'u sisteme de notificaziune de {{SITENAME}}\n\n--\nPe cangià le 'mbostaziune de notifeche de l'email toje, vè vide\n{{canonicalurl:{{#special:Preferences}}}}\n\nPe cangià le 'mbostaziune de l'elenghe de le pàggene condrollate tune, vè vide\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nPe scangellà 'a pàgene da l'elenghe de le pàggene condrollate, vè vide\n$UNWATCHURL\n\nSegnalaziune e otre assistenze:\n$HELPPAGE",
        "created": "ccrejete",
        "delete-toobig": "Sta pàgene tène 'na storie de cangiaminde troppe longhe, sus a $1 {{PLURAL:$1|revisione|revisiune}}.\n'U scangellamende de stuèzze de pàgene avène ristrette pe prevenì 'ngasinaminde accidentale de {{SITENAME}}.",
        "delete-warning-toobig": "Sta pàgene tène 'na storie troppo longhe, sus a $1 {{PLURAL:$1|revisione|revisiune}}.\nScangellanne pò ccreja casine sus a le operazione d'u database de {{SITENAME}};\nvà cunge cunge!",
        "deleteprotected": "Non ge puè scangellà sta pàgene purcé ha state protette.",
-       "deleting-backlinks-warning": "'''Attenziò:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Otre pàggene]] appondene o vonne 'a pàgene ca tu vue ccù scangìlle.",
+       "deleting-backlinks-warning": "<strong>Attenziò:</strong> [[Special:WhatLinksHere/{{FULLPAGENAME}}|Otre pàggene]] appondene o vonne 'a pàgene ca tu vue ccù scangìlle.",
        "rollback": "Annulle le cangiaminde",
        "rollbacklink": "annulle 'u cangiaminde",
        "rollbacklinkcount": "annulle $1 {{PLURAL:$1|cangiamende|cangiaminde}}",
        "editcomment": "'U riepileghe d'u cangiamende ere: <em>$1</em>.",
        "revertpage": "Cangiaminde annullate da [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) a l'urtema versione da [[User:$1|$1]]",
        "revertpage-nouser": "Le cangiaminde annullate da 'n'utende scunnute a l'urtema revisione da {{GENDER:$1|[[User:$1|$1]]}}",
-       "rollback-success": "Cangiaminde annullate da $1;\nturnate rete a l'urtema versione da $2.",
+       "rollback-success": "Cangiaminde annullate da {{GENDER:$3|$1}};\nturnate rrete a l'urtema versione de {{GENDER:$4|$2}}.",
        "sessionfailure-title": "Sessione fallite",
        "sessionfailure": "Pare ca stonne probbleme cu 'a sessiona toje de collegamende;\nst'azione ha state scangellate pe precauzione condre a le 'ngasinaminde d'a sessione.\nPe piacere cazze \"rete\" e recareche 'a pàgene da addò tu è venute e pruève 'n'otra vote.",
        "changecontentmodel": "Cange 'u modelle de condenute de 'na pàgene",
        "undeleteviewlink": "vide",
        "undeleteinvert": "Selezione a smerse",
        "undeletecomment": "Mutive:",
-       "cannotundelete": "Repristine fallite:\n$1",
+       "cannotundelete": "O tutte o quacche repristine ave fallite:\n$1",
        "undeletedpage": "'''$1 ha state repristinate'''\n\nLigge l'[[Special:Log/delete|archivije de le scangellaminde]] pe 'nu report de le urteme scangellaminde e repristinaminde.",
        "undelete-header": "Vide [[Special:Log/delete|l'archivije de le scangellaminde]] pe l'urteme pàggene scangellete.",
        "undelete-search-title": "Cirche le pàggene scangellate",
        "sp-contributions-newbies-sub": "Pe l'utinde nuève",
        "sp-contributions-newbies-title": "Condrebbute de l'utinde pe le cunde utinde nuéve",
        "sp-contributions-blocklog": "Archivije de le Bloccaminde",
-       "sp-contributions-suppresslog": "condrebbute de l'utende scangellate",
-       "sp-contributions-deleted": "condrebbute de l'utende scangellate",
+       "sp-contributions-suppresslog": "condrebbute de {{GENDER:$1|l'utende}} scettate",
+       "sp-contributions-deleted": "condrebbute de {{GENDER:$1|l'utende}} scangellate",
        "sp-contributions-uploads": "carecaminde",
        "sp-contributions-logs": "archivije",
        "sp-contributions-talk": "parle",
-       "sp-contributions-userrights": "Gestione de le deritte utende",
+       "sp-contributions-userrights": "Gestione de le deritte {{GENDER:$1|utende}}",
        "sp-contributions-blocked-notice": "Stu utende jè pe mò bloccate. L'urteme archivije de le bloccaminde se iacchie aqquà sotte pe referimende:",
        "sp-contributions-blocked-notice-anon": "Stu indirizze IP jè pe mò bloccate.<br />\nL'urteme archivije de le bloccaminde se iacche aqquà sotte pe referimende:",
        "sp-contributions-search": "Ricerche pe condrebbute",
        "lastmodifiedatby": "Sta pàgene ha state cangiate l'urtema vote a le $2, d'u $1 da $3.",
        "othercontribs": "Basete sus a 'na fatije de $1.",
        "others": "otre",
-       "siteusers": "{{PLURAL:$2|utende|utinde}} de {{SITENAME}} $1",
+       "siteusers": "{{PLURAL:$2|{{GENDER:$1|utende}}|utinde}} de {{SITENAME}} $1",
        "anonusers": "{{PLURAL:$2|utende|utinde}} anonime de {{SITENAME}} $1",
        "creditspage": "Pàgene de le crediti",
        "nocredits": "Non ge stonne 'mbormaziune sus a le credite disponibbele pe sta pàgene.",
        "scarytranscludefailed-httpstatus": "[Analise d'u template fallite pe $1: HTTP $2]",
        "scarytranscludetoolong": "[URL jè troppe longhe]",
        "deletedwhileediting": "'''Fà attenziò''': Sta pàgene ha state scangellete apprime ca tu acumenzasse a fà 'u cangiamende!",
-       "confirmrecreate": "L'utende [[User:$1|$1]] ([[User talk:$1|'Ngazzaminde]]) ha scangellate sta pàgene apprisse ca tu è accumenzate a cangiarle, cu stu mutive:\n: ''$2''\nPe piacere conferme ca tu vuè avveramende reccrejà sta pàgene.",
+       "confirmrecreate": "L'utende [[User:$1|$1]] ([[User talk:$1|'Ngazzaminde]]) ha {{GENDER:$1|scangellate}} sta pàgene apprisse ca tu è accumenzate a cangiarle, cu stu mutive:\n: <em>$2</em>\nPe piacere conferme ca tu vuè avveramende reccrejà sta pàgene.",
        "confirmrecreate-noreason": "L'utende [[User:$1|$1]] ([[User talk:$1|'ngazzaminde]]) ha scangellate sta pàgene apprisse ca tu l'è cangiate. Pe piacere conferme ca tu vuè avveramende reccrejà sta pàgene.",
        "recreate": "Ccreje n'otra vote",
        "unit-pixel": "px",
        "watchlistedit-raw-done": "'A liste de le pàggene condrollete ha state aggiornete.",
        "watchlistedit-raw-added": "{{PLURAL:$1|'nu titele ha|$1 titele onne}} state aggiunde:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|'nu titele ha|$1 titele onne}} state scangillete:",
-       "watchlistedit-clear-title": "Elenghe de le pàggene condrollate sdevacate",
+       "watchlistedit-clear-title": "Sdevache l'elenghe de le pàggene condrollate",
        "watchlistedit-clear-legend": "Sdevache l'elenghe de le pàggene condrollate",
        "watchlistedit-clear-explain": "Tutte le titole avènene luate da l'elenghe de le pàggene condrollate tune",
        "watchlistedit-clear-titles": "Titole:",
        "tags-create-reason": "Mutive:",
        "tags-create-submit": "Ccreje",
        "tags-create-no-name": "Tu a specificà 'nu nome d'u tag.",
-       "tags-create-invalid-chars": "Le nome de le tag non g'onna tenè le virgole (<code>,</code>) o slash (<code>/</code>).",
+       "tags-create-invalid-chars": "Le nome de le tag non g'onna tenè le virgole (<code>,</code>), le pipe (<code>|</code>) o slash (<code>/</code>).",
        "tags-create-invalid-title-chars": "Le nome de le tag non g'onna tenè carattere ca non ge ponne essere ausate jndr'à le titole de le pàggene.",
        "tags-create-already-exists": "'U tag \"$1\" già esiste.",
        "tags-create-warnings-above": "{{PLURAL:$2|'U seguende avvise ha|le seguende avvise onne}} assute quanne ste pruvave de ccrejà 'u tag \"$1\":",
        "logentry-protect-protect-cascade": "$1 {{GENDER:$2|prutette}} $3 $4 [a cascate]",
        "logentry-protect-modify": "$1 {{GENDER:$2|ave cangiate}} 'u levélle de protezzione pe $3 $4",
        "logentry-protect-modify-cascade": "$1 {{GENDER:$2|ave cangiate}} 'u levélle de protezzione pe $3 $4 [a cascate]",
-       "logentry-rights-rights": "$1 membre d'u gruppe {{GENDER:$2|cangiate}} pe $3 da $4 a $5",
+       "logentry-rights-rights": "$1 {{GENDER:$2|ave cangiate}} membre d'u gruppe pe {{GENDER:$6|$3}} da $4 a $5",
        "logentry-rights-rights-legacy": "$1 ave {{GENDER:$2|cangiate}} 'u membre d'u gruppe pe $3",
        "logentry-rights-autopromote": "$1 ha state {{GENDER:$2|promosse}} automaticamende da $4 a $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|carecate}} $3",
        "api-error-emptypage": "Quanne se ne ccreje une, le pàggene vacande non ge sò permesse.",
        "api-error-publishfailed": "Errore inderne: 'U server ha fallite 'a pubblecazione d'u file temboranèe.",
        "api-error-stashfailed": "Errore inderne: 'U server ha fallite 'a reggistrazione de le file temboranèe.",
-       "api-error-unknown-warning": "Avvertimende scanusciute: $1",
+       "api-error-unknown-warning": "Avvertimende scanusciute: \"$1\".",
        "api-error-unknownerror": "Errore scanusciute: \"$1\"",
        "duration-seconds": "{{PLURAL:$1|seconde|seconde}}",
        "duration-minutes": "{{PLURAL:$1|minute|minute}}",
        "expand_templates_generate_xml": "Fà vedè l'arvule de l'analisi XML",
        "expand_templates_generate_rawhtml": "Fà vedè l'HTML grezze",
        "expand_templates_preview": "Andeprime",
-       "expand_templates_preview_fail_html": "<em>Purcé {{SITENAME}} téne abbilitate l'HTML grezze e stavane 'nu sbuénne de date de sessione perdute, l'andeprime avène scunnute pe precauzione condre a attacche JavaScript.</em>\n\n<strong>Ce quiste jè 'nu tendative de andeprime leggittime, pe piacere pruéve arrete.</strong>\nCe angore non ge funzione, pruéve a [[Special:UserLogout|assè]] e trasè arrete.",
+       "expand_templates_preview_fail_html": "<em>Purcé {{SITENAME}} téne abbilitate l'HTML grezze e stavane 'nu sbuénne de date de sessione perdute, l'andeprime avène scunnute pe precauzione condre a attacche JavaScript.</em>\n\n<strong>Ce quiste jè 'nu tendative de andeprime leggittime, pe piacere pruéve arrete.</strong>\nCe angore non ge funzione, pruéve a [[Special:UserLogout|assè]] e trasè arrete e verifiche ca 'u browser tune face ausà le cookie da stu site.",
        "expand_templates_preview_fail_html_anon": "<em>Purcé {{SITENAME}} téne abbilitate l'HTML grezze e tu non g'è trasute, l'andeprime avène scunnute pe precauzione condre a attacche JavaScript.</em>\n\n<strong>Ce quiste jè 'nu tendative de andeprime leggittime, [[Special:UserLogin|tràse]] e pruéve arrete.</strong>",
-       "pagelanguage": "Scacchiatore d'a lènghe d'a pàgene",
+       "pagelanguage": "Cange 'a lènghe d'a pàgene",
        "pagelang-name": "Pàgene",
        "pagelang-language": "Lènghe",
        "pagelang-use-default": "Ause 'a lènghe de base",
        "action-pagelang": "cange 'a lènghe d'a pàgene",
        "log-name-pagelang": "Archivije de le cangiaminde d'a lènghe",
        "log-description-pagelang": "Quiste jè l'archivije de le cangiaminde d'a lènghe jndr'à pàgene.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cangiate}} 'a lènghe d'a pàgene pe $3 da $4 a $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cangiate}} 'a lènghe de $3 da $4 a $5.",
        "default-skin-not-found": "Pizze! 'U skin de base pa uicchi toje, definite jndr'à <code dir=\"ltr\">$wgDefaultSkin</code> cumme <code>$1</code>, non g'è disponibbile.\n\n'A installazziona toje pare ca téne {{PLURAL:$4|'u skin|le skin}} seguende. 'Ndruche [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Confirazione d'u skin] pe 'mbormaziune sus a cumme abbilità {{PLURAL:$4|jidde|lore}} e scacchià quidde de base.\n\n$2\n\n; Ce tu è installate ggià MediaUicchi:\n: Tu probbabbilmende è installate da git, o direttamende da 'u codece sorgende ausanne otre metode. Quiste s'aspette. Pruéve a installà otre skin da 'a [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's cartelle de le skin], da:\n:* Scarecanne 'u [https://www.mediawiki.org/wiki/Download installatore tarball], 'u quale téne 'nu sacche de skin e estenziune. Tu puè cupià e 'ngollà 'a cartelle <code>skins/</code> da jidde.\n:* Scarecanne 'nu skin individuale de tarballs da [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Ausanne Git pe scarecà le skin].\n: Facenne quiste non ge inderferisce cu l'archivije git tune ce tu si 'nu sveluppatore MediaUicchi.\n\n; Ce tu è aggiornate MediaUicchi:\n: MediaUicchi 1.24 e versiune cchiù nuéve non ge abbilitane automaticamende le skin installate ('ndruche [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Canusce le skin autodiscovery]). Tu puè 'ngollà {{PLURAL:$5|'a linèe|le linèe}} seguende jndr'à <code>LocalSettings.php</code> pe abbilità {{PLURAL:$5|'u |tutte}} {{PLURAL:$5|skin|le skin}} installate:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Ce tu è cangiate <code>LocalSettings.php</code>:\n: Fà 'nu doppie condrolle sus a 'u nome de le skin pe tipe.",
        "default-skin-not-found-no-skins": "Pizze! 'U skin de base pa uicchi toje, definite jndr'à <code dir=\"ltr\">$wgDefaultSkin</code> cumme <code>$1</code>, non g'è disponibbile.\n\nTu non g'è installate le skin.\n\n; Ce tu è installate o aggiornate MediaUicchi:\n: Tu probbabbilmende è installate da git, o direttamende da 'u codece sorgende ausanne otre metode. Quiste s'aspette. MediaUicchi 1.24 e versiune cchiù nuéve non ge 'ngludone  le skin jndr'à l'archivije prengepàle.Pruéve a installà quacche skin da 'a [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's cartelle de le skin], da:\n:* Scarecanne 'u [https://www.mediawiki.org/wiki/Download installatore tarball], 'u quale téne 'nu sacche de skin e estenziune. Tu puè cupià e 'ngollà 'a cartelle <code>skins/</code> da jidde.\n:* Scarecanne 'nu skin individuale de tarballs da [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Ausanne Git pe scarecà le skin].\n: Facenne quiste non ge inderferisce cu l'archivije git tune ce tu si 'nu sveluppatore MediaUicchi.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (abbilitate)",
index 8804f70..8158fcc 100644 (file)
        "loginerror": "Prisėjongėma klaida",
        "createacct-error": "Paskīruos dėrbėma klaida",
        "createaccounterror": "Nė̄šiejė padėrbtė paskīruos: $1",
-       "nocookiesnew": "Nauduotuojė paskīra bova sokurta, bat Tamsta nēsot prėsėjongis. {{SITENAME}} nauduo pakavukus (''cookies''), ka prėkergtom nauduotuojus. Tamsta esot ėšjongis anūs. Prašuom ijongtė pakavukus, tumet prisėjonkat so sava naujo nauduotuojė vardo ė slaptažuodio.",
+       "nocookiesnew": "Nauduotuojė paskīra bova sokorta, bet Tamīsta nēsi prīsijongė̄s. {{SITENAME}} nauduoj pakavokus (''cookies''), ka prīkergtom nauduotuojus. Tamīsta esi ėšjongė̄s anūs. Prašuom ijongtė pakavokus, tūmet prīsijonkat so sava naujo nauduotuojė vardo ė slaptažuodio.",
        "nocookieslogin": "{{SITENAME}} nauduo pakavukus (''cookies''), ka prėkergtom nauduotuojus. Tamsta esat ėšjongis anūs. Prašuom ijongtė pakavukus ė pamiegītė apent.",
        "noname": "Naožrašėt tinkama nauduotuoja varda!",
        "loginsuccesstitle": "Prisijongiet gerā",
        "password-login-forbidden": "Tuo nauduotuojė varda ė slaptažuodė nauduojėms nie galėms.",
        "mailmypassword": "Atgamintė slaptažuodi",
        "passwordremindertitle": "Laikėns {{SITENAME}} slaptažuodis",
-       "passwordremindertext": "Kažkastā (tėkriausē Tamsta, ėš IP adresa $1)\npaprašė, kū atsiōstomiet naujė slaptažuodi pruojektō {{SITENAME}} ($4).\nLaikėns slaptažuodis nauduotuojō „$2“ bova sokorts ėr nustatīts kāp „$3“.\nJēgo Tamsta nuoriejot ana pakeistė tūmet torietomiet prisėjongtė ė daba pakeistė sava slaptažuodi.\nTamstas laikėns slaptažuodis bengs galiuotė par {{PLURAL:$5|dėina|$5 dėinas}}.\n\nJēgo kažkas kėts atlėka ta prašīma aba Tamsta prisėmėniet sava slaptažuodi ė\nnebnuorėt ana pakeistė, Tamsta galėt tėisiuog nekreiptė diemiesė ė šėta gruomata ė tuoliau\nnauduotis sava senu slaptažuodžiu.",
+       "passwordremindertext": "Kažė kas tā (tikriausē Tamīsta, ėš IP adresa $1)\npaprašė, ka atsiōstomiet naujė slaptažuodi pruojektō {{SITENAME}} ($4).\nLaikėns slaptažuodis nauduotuojō „$2“ bova sokorts ėr nūstatīts kap „$3“.\nJēgo Tamīsta nuoriejot ana pamainītė, tūmet torietomiet prīsijongtė ė daba pakeistė sava slaptažuodi.\nTamstas laikėns slaptažuodis bėngs galiuotė par {{PLURAL:$5|dėina|$5 dėinas}}.\n\nJēgo kažė kas kėts padėrba ton prašīma aba Tamsīta prīsimėniet sava slaptažuodi ė\nnabnuorat anon pakeistė, Tamīsta galat tėisiuog nekrēptė diemiesė i šėton gruomata ė tūliaus\nnauduotėis sava seno slaptažuodio.",
        "noemail": "Nier anėjuokė el. pašta adresa ivesta nauduotuojō „$1“.",
        "noemailcreate": "Tamsta nuruodīkat elektruonėni pašta, katros vēk",
        "passwordsent": "Naus slaptažuodis bova nusiōsts i el. pašta adresa,\nožregėstrouta nauduotuojė „$1“.\nPrašuom prisėjongtė vielē, kumet Tamsta gausėt anū.",
        "previewerrortext": "Miegėnant parveizietė pakeitėmus nūtėka klaida.",
        "blockedtitle": "Nauduotuos īr ožgints",
        "blockedtext": "'''Tamstas nauduotuojė vards aba IP adresos ožgints īr.'''\n\nOžgīnė nauduotuos $1.\nDingstės ''$2''.\n\n* Ožgīnėms prasėdė̄jė: $8\n* Ožgīnėms pasėbengs: $6\n* Kas tor būtė ožgints: $7\n\nTamsta galat parašītė $1 aba kėtėim\n[[{{MediaWiki:Grouppage-sysop}}|admėnėstratuorėm]], jēgo mīslėjat, ka Tamstā ožgīnė ba grieka.\nTamsta negalat „rašītė gromata ton nauduotuojō“, jēgo nasat davis tėkra sava el. pašta adresa sava [[Special:Preferences|paskīruos nustatīmūs]] ė nasat ožgints nu anuos nauduojėma.\nTamstas dabartėnis IP adresos īr $3, vuo ožgīnėma ID īr #$5. Prašuom nuruodītė ton, kumet prašīsėt atgėnoms.",
-       "autoblockedtext": "Tamstas IP adresos bova liuosā ožgints, tudie, ka ana nauduojė kėts nauduotuos, katra ožgīnė $1.\nDouta dingstės īr tuokė:\n\n:''$2''\n\n* Ožgīnėms prasėdė̄jė: $8\n* Ožgīnėms pasėbengs: $6\n* Kas tor būtė ožgints: $7\n\nTamsta galėt sosėsėiktė so $1 aba kėtu [[{{MediaWiki:Grouppage-sysop}}|adminėstratuoriom]], kū aprokoutomėt biedas diel bluokavėma.\n\nTamsta galat parašītė $1 aba kėtėim\n[[{{MediaWiki:Grouppage-sysop}}|admėnėstratuorėm]], jēgo mīslėjat, ka Tamstā ožgīnė ba grieka.\nTamsta negalat „rašītė gromata ton nauduotuojō“, jēgo nasat davis tėkra sava el. pašta adresa sava [[Special:Preferences|paskīruos nustatīmūs]] ė nasat ožgints nu anuos nauduojėma.\nTamstas dabartėnis IP adresos īr $3, vuo ožgīnėma ID īr #$5. Prašuom nuruodītė ton, kumet prašīsėt atgėnoms.",
+       "autoblockedtext": "Tamīstas IP adresos bova liuosā ožgints, tūdie, ka ana nauduojė kėts nauduotuos, katra ožgīnė $1.\nDouta dingstės īr tuokė:\n\n:''$2''\n\n* Ožgīnėms prasidė̄jė: $8\n* Ožgīnėms pasibėngs: $6\n* Kas tor būtė ožgints: $7\n\nTamīsta galat sosisėiktė so $1 aba kėtu [[{{MediaWiki:Grouppage-sysop}}|adminėstratuoriom]], ka aprokoutomėt biedas diel bluokavėma.\n\nTamīsta galat parašītė $1 aba kėtėim\n[[{{MediaWiki:Grouppage-sysop}}|admėnėstratuorėm]], jēgo mīslėjat, ka Tamīstā ožgīnė ba grieka.\nTamīsta nagalat „rašītė gromata ton nauduotuojō“, jēgo nasat davė̄s tėkra sava el. pašta adresa sava [[Special:Preferences|paskīruos nustatīmūs]] ė nasat ožgints nu anuos nauduojėma.\nTamīstas dabartėnis IP adresos īr $3, vuo ožgīnėma ID īr #$5. Prašuom nūruodītė ton, kūmet prašīsat būtė atgėnoms.",
        "blockednoreason": "dingstėis nie douta",
        "whitelistedittext": "Tamstā rēk $1, ka dėrbtomiet poslapius.",
        "nosuchsectiontitle": "Nier tuokė skėrsnė",
        "accmailtext": "Bikāp padėrbts slaptažuodis, katros prėgol prī [[User talk:$1|$1]] bova siōsts pošto $2. Kāp prėsėjongsat, galat <em>[[Special:ChangePassword|anon parkeistė]]</em>.",
        "newarticle": "(Naus)",
        "newarticletext": "Tamsta pakliovat poslapin, katros dā nie padėrbts.\nJēgo nuorat anon padėrbtė, rašīkat laukė, katros ī apatiuo\n(veiziekat [$1 pagelbas poslapi]).\nJēgo pakliovat čė netīčiuom, paprastiausē paspauskat naršīklės mīgtoka '''atgal'''.",
-       "anontalkpagetext": "----''Tas īr anonimėnė nauduotuojė, katros nier sosėkūrės aba nenauduo paskīruos, aptarėmu poslapis.\nDielē tuo nauduojams IP adresos anuo atpažėnėmō.\nTas IP adresos gal būtė dalinams keletō nauduotuoju.\nJēgo Tamsta esat anonimėnis nauduotuos ėr veizėt, kū kuomentarā nier skėrtė Tamstā, [[Special:CreateAccount|sokorkėt paskīra]] aba [[Special:UserLogin|prisėjonkėt]], ė nebūsėt maišuoms so kėtās anonimėnēs nauduotuojās.''",
+       "anontalkpagetext": "----''Tas īr bavardė nauduotuojė, katros nier sosikūrė̄s aba nanauduo paskīruos, aptarėmu poslapis.\nDielē tuo nauduojams IP adresos anuo atpažėnėmō.\nTas IP adresos gal būtė dalinams keletō nauduotuoju.\nJēgo Tamīsta esat anyonėmėnis nauduotuos ėr veizėt, ka kuomentarā nier skėrtė Tamīstā, [[Special:CreateAccount|sokorkėt paskīra]] aba [[Special:UserLogin|prīsijonkėt]], ė nabūsėt maišuoms so kėtās anuonėmėnēs nauduotuojēs.''",
        "noarticletext": "Nūnā tamė poslapie nie nijuokė teksta.\nTamsta galat [[Special:Search/{{PAGENAME}}|ėiškuotė tou poslapė pavadėnėma]] terp kėtū poslapiu,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ėiškuotė prėgolontiu īrašu],\naba [{{fullurl:{{FULLPAGENAME}}|action=edit}} keistė tou poslapi]</span>.",
        "noarticletext-nopermission": "Nūnā tamė poslapie nier anėjuokė teksta.\nTamsta galat [[Special:Search/{{PAGENAME}}|ėiškuotė šėtuo poslapė pavadėnėma]] kėtūs poslapiūs,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ėiškuotė prėgolontiūm ragėstru]</span>.",
        "userpage-userdoesnotexist": "Nauduotuojė paskīra „<nowiki>$1</nowiki>“ nier ožregėstrouta. Prašuom patikrėntė, a Tamsta nuorėt kortė/keistė ta poslapi.",
        "prefs-help-gender": "Gėmėnies pasirinkėms nie būtėns.\nJēb ana nūruodīsat, svetainės aplinka kreipsis i Tamsta palē Tamstas gėmėnė. \nTas būs vėsiem žėnuoma.",
        "email": "El. paštos:",
        "prefs-help-realname": "Tėkros vards nier privaluoms, ale jēgo Tamsta ana ivesėt, ons bus nauduojams Tamstas darba pažīmiejėmou.",
-       "prefs-help-email": "El. pašta adresos nier būtėns, bat ons leid Tamstā gautė naujė slaptažuodi, jēgo pamėršuot kuoks ons bova, ė tēpuogi Tamsta galėt leistė kėtėims pasėiktė Tamsta par Tamstas nauduotuojė aba nauduotuojė aptarėma poslapi tāp, ka anėi nežėnuotom Tamstas el. pašta adresa.",
+       "prefs-help-email": "El. pašta adresos nier būtėns, bet ons leid Tamīstā gautė nauji slaptažuodi, jēgo pamėršuot kuoks ons bova, ė tepuogė Tamīsta galat leistė kėtėims pasėiktė Tamīsta par Tamīstas nauduotuoja aba nauduotuoja aptarėma poslapi tap, ka anėi nažėnuotom Tamīstas el. pašta adresa.",
        "prefs-help-email-required": "Rēk el. pašta adresa",
        "prefs-info": "Pagrindėnės žėnės",
        "prefs-i18n": "Kalbuos nustatīmā",
        "delete-legend": "Trīnėms",
        "historywarning": "<strong>Atėdės:</strong> Poslapis, katron nuorat ėštrintė, bova pakeists $1 {{PLURAL:$1|sīki|sīkius|sīkiu}}:",
        "historyaction-submit": "Ruodītė",
-       "confirmdeletetext": "Tamsta pasėrėnkuot ėštrėntė poslapi a abruozdieli draugum so vėsa anuo istuorėjė.\nPrašuom patvėrtėntė, kū Tamsta tėkrā nuorėt šėtu padarītė, žėnuot aple galėmus padarėnius, ė kū Tamsta šėtā daruot atsėžvelgdamė i [[{{MediaWiki:Policy-url}}|puolitėka]].",
+       "confirmdeletetext": "Tamīsta pasirinkuot ėštrintė poslapi aba abruozdieli sīkiom so vėsa anuo istuorėjė.\nPrašuom patvėrtintė, ka Tamīsta tėkrā nuorėt šėton padarītė, žėnuot aplė galėmus padarėnius, ė kū Tamīsta šėton daruot palē  [[{{MediaWiki:Policy-url}}|Vikimedėjės puolėtėka]].",
        "actioncomplete": "Vēksmos padėrbts īr",
        "actionfailed": "Vēksmos atšaukts īr",
        "deletedtext": "„$1“ ėštrints īr.\nVielībūju trīnėmu istuorėjė - $2.",
        "move-page": "Parvadintė $1",
        "move-page-legend": "Poslapė parvadėnėms",
        "movepagetext": "Nauduojont ta skvarma, katra apatiuo īr, parvadinsat poslapi ėr ėšlaikīsat anuo istuorėjė.\nOnkstesnis pavadėnėms palėks nosokėmo - ons ruodīs poslapin naujė varda.\nTamsta esat atsakėngs, ka nūruodas ruodītom tenā, kor ė rēk.\n\nAtminkat, ka poslapis '''nabus''' parvadints, jēgo jau īr poslapis naujo pavadinėmo, tėktās jēgo ons īr dīks aba netor keitėmu istuorėjės.\nTumet, Tamsta galat parvadintė poslapi seniou nauduoto vardo, jēgo priš šėta ons bova par klaida parvadints, ar esontiu poslapiu sogadintė negalat.\n\n'''ATĖDĖS!'''\nJēgo parvadinat tonkē nauduojama poslapi, ta galat prėdėrbtė ėškadas. Tudie kervauokat, ka dėrbat.",
-       "movepagetext-noredirectfixer": "So ton skvarma apatiuo Tamsta parvadinsat poslapi ė parkelsat vėsa anou istuorėjė.\nSens poslapis paliks nūsokėmo i nauja straipsnė varda.\nSotikrinkėt, ka napalėikat [[Special:DoubleRedirects|dvėgobu]] aba [[Special:BrokenRedirects|navēkontiu nūsokėmu]].\nTamsta pasilėikat atsakings, ka nūruodas ė tuoliaus ruodītom tenās, kor ė rēk.\n\nToriekat uomenie, ka poslapis '''nabūs''' parvadins, jēb jau poslapis so tuokio vardo ī (nabentās, ons būtom tėktās nūsokėms ba istuorėjės).\nTas rēšk, ka Tamsta galiesat sogrōžintė poslapi ont sena anou varda, jēb padarīsat klaida.\n\n'''ATĖDĖS:'''\nJēb parvadinat gausē nauduojama poslapi, ta galat prīdėrbtė ėškadas;\nTudie kervauokat, ka dėrbat!",
+       "movepagetext-noredirectfixer": "So ton skvarma apatiuo Tamīsta parvadinsat poslapi ė parkelsat vėsa anou istuorėjė.\nSens poslapis paliks nūsokėmo i nauja straipsnė varda.\nSotikrinkėt, ka napalėikat [[Special:DoubleRedirects|dvėgobu]] aba [[Special:BrokenRedirects|navēkontiu nūsokėmu]].\nTamīsta pasilėikat atsakings, ka nūruodas ė tuoliaus ruodītom tenās, kor ė rēk.\n\nToriekat uomenie, ka poslapis '''nabūs''' parvadins, jēb jau poslapis so tuokio vardo ī (nabentās, ons būtom tėktās nūsokėms ba istuorėjės).\nTas rēšk, ka Tamīsta galiesat sogrōžintė poslapi ont sena anou varda, jēb padarīsat klaida.\n\n'''ATĖDĖS:'''\nJēb parvadinat gausē nauduojama poslapi, ta galat prīdėrbtė ėškadas;\nTūdie kervauokat, ka dėrbat!",
        "movepagetalktext": "Sosėits aptarėma poslapis bus autuomatėškā parkelts draugom so ano, '''ėšskīrus:''':\n*Poslapis nauju pavadinėmo tor netoštė aptarėma poslapi, a\n*Paliksėt žemiau asontė varnale nepažīmieta.\nŠėtās atviejās Tamsta sava nužiūra torėt parkeltė a apjongtė aptarėma poslapi.",
        "moveuserpage-warning": "<strong>Atėdės:</strong> Tamsta parvadėnsat nauduotuojė poslapi. Žėnuokat, ka tėktās poslapis bat <em>ne patsā nauduotuos</em> bos parvadints.",
        "movecategorypage-warning": "<strong>Atėdės:</strong> Tamsta parvadinsat kateguorėjės poslapi. Žėnuokat, ka tėktas poslapis bos parvadints, bat <em>poslapē, katrėi anon prėgol,</em> tor būtė sokergtė apent.",
        "confirmemail_needlogin": "Tamstā rēk $1, kū patvirtėntomiet sava el. pašta adresa.",
        "confirmemail_loggedin": "Tamstas el. pašta adresos ožtvėrtints īr.",
        "confirmemail_subject": "{{SITENAME}} el. pašta ožtvirtėnėms",
-       "confirmemail_body": "Kažėnkas, mosiet Tamsta IP adreso $1, ožregėstrava\npaskīra „$2“ sosėita so šėtuom el. pašta adresu pruojektė {{SITENAME}}.\n\nKū patvirtėntomiet, kū ta diežotė ėš tėkrā prėklausa Tamstā, ėr aktīvoutomiet\nel. pašta puoslaugi pruojėktė {{SITENAME}}, atdarīkiet ta nūruoda sava naršīklie:\n\n$3\n\nJēgo paskīra regėstravuot *ne* Tamsta, tumet ēkėt ta nūruoda,\nkū atšauktomiet el. pašta adresa patvirtėnėma:\n\n$5\n\nPatvirtėnėma kods bengs galiuotė $4.",
+       "confirmemail_body": "Kažėnkas, rasietās Tamīsta ėš IP adresa $1, ožregistrava\npaskīra „$2“ sosėita so šėtuom el. pašta adreso pruojektė {{SITENAME}}.\n\nKa patvėrtėntuomiet, ka ta pašta diežotė ėš tėkrā prėklausa Tamīstā, ėr ījongtomiet\nel. pašta puoslaugi pruojėktė {{SITENAME}}, atdarīkiet ton nūruoda sava naršīklie:\n\n$3\n\nJēgo paskīra registravuot *ne* Tamīsta, tūmet ēkėt par ta nūruoda,\nka atšauktomiet el. pašta adresa patvėrtėnėma:\n\n$5\n\nPatvėrtėnėma kuods bėngs vēktė $4.",
        "invalidateemail": "El. pašta patvirtėnėma atšaukėms",
        "deletedwhileediting": "<strong>Atėdės:</strong> Tas poslapis bova ėštrints pu tuo, kāp pradiejėt anon dėrbtė!",
        "confirmrecreate": "Nauduotuos [[User:$1|$1]] ([[User talk:$1|aptarėms]]) ėštrīnė ton poslapi pu tuo, kāp anon pradiejėt dėrbtė; ons davė tuokė dingsti:\n: <em>$2</em>\nA tėkrā nuorat anon padėrbtė apent?",
index 7a01219..1969077 100644 (file)
@@ -9,7 +9,7 @@
                ]
        },
        "tog-underline": "krrj du izdayn:",
-       "tog-hideminor": "Ḥbu imbddl imaynutn lli fssusnin.",
+       "tog-hideminor": "ⵙⵙⵏⵜⵍ ⵉⵙⵏⴼⵍⵏ ⵓⵎⵥⵉⵢⵏ ⴳ ⵉⵙⵏⴼⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ",
        "tog-hidepatrolled": "Hide patrolled edits in recent changes",
        "tog-newpageshidepatrolled": "Ḥbu tisniwin lli n tsagga gr tisniwin timaynutin",
        "tog-extendwatchlist": "Ssaɣḍ umuɣ n tisniwin lli n ttfur bac ad n ẓṛṛa imbddln maci ɣir imaynutn",
@@ -22,7 +22,7 @@
        "tog-watchdefault": "Zaydn tasniwin lli tżrigɣ i umuɣ n tilli tsaggaɣ",
        "tog-watchmoves": "Zayd tisniwin lli smattayɣ i tilli tsggaɣ.",
        "tog-watchdeletion": "Zaydn tasniwin lli kkesɣ i tilli tsaggaɣ",
-       "tog-minordefault": "Rcm kullu iẓṛign li fssusni sɣiklli gan.",
+       "tog-minordefault": "ⵔⵛⵎ ⵉⵙⵏⴼⵍⵏ ⴰⴽⴽⵯ ⵎⴰⵙ ⴳⴰⵏ ⵓⵎⵥⵉⵢⵏ ⵙ ⵓⵡⵏⵓⵍ",
        "tog-previewontop": "Mel iẓri amzwaru ɣ uflla ɣ taɣzut n imbddln",
        "tog-previewonfirst": "Ml imzray n imbdln imzwura",
        "tog-enotifwatchlistpages": "sifd yi tabrat  igh ibdl kra yat twriqt ghomdfor inu",
@@ -30,7 +30,7 @@
        "tog-enotifminoredits": "sifd yi tabrat  i ibdln mziynin",
        "tog-enotifrevealaddr": "Ml tansa n tibratin inu ɣ umuɣ n tbratin",
        "tog-shownumberswatching": "Ml uṭṭun n Midn lli swurn ɣ tasna yad",
-       "tog-oldsig": "Asmmaql (Tiẓṛi) n ukrraj n ufus lli illan:",
+       "tog-oldsig": "ⴰⵙⴳⵎⴹ {{GENDER:Username|ⵏⵏⴽ|ⵏⵏⵎ}} ⴰⵎⵉⵔⴰⵏ:",
        "tog-fancysig": "Skr akrrag n ufus s taɣarast  n  wikitext (bla azday utumatik)",
        "tog-uselivepreview": "Skr s umẓri amaynu izrbn (ira JavaScript) (Arm)",
        "tog-forceeditsummary": "Ayyit tini iɣ ur iwiɣ imsmun n imbdln",
        "tog-showhiddencats": "sbaynd tsnifat ihbanin",
        "tog-norollbackdiff": "hiyd lfarq baad lqiyam bstirjaa",
        "underline-always": "dima",
-       "underline-never": "ḥtta manak",
+       "underline-never": "ⵊⵊⵓ",
        "underline-default": "ala hssad regalhe n lmotasaffih",
        "editfont-style": "lkht n lmintaqa nthrir",
        "editfont-default": "ala hssab reglage n lmotasaffih",
        "editfont-monospace": "kht ard tabt",
        "editfont-sansserif": "lkht bla zwayd",
        "editfont-serif": "lkht szwayd",
-       "sunday": "Asamas",
-       "monday": "Aynas",
-       "tuesday": "Asinas",
+       "sunday": "ⴰⵙⴰⵎⴰⵙ",
+       "monday": "ⴰⵢⵏⴰⵙ",
+       "tuesday": "ⴰⵙⵉⵏⴰⵙ",
        "wednesday": "Akras",
-       "thursday": "Akwas",
-       "friday": "asimas",
+       "thursday": "ⴰⴽⵡⴰⵙ",
+       "friday": "ⴰⵙⵉⵎⵡⴰⵙ",
        "saturday": "asidyas",
        "sun": "asamas",
        "mon": "Aynas",
@@ -70,7 +70,7 @@
        "february": "brayr",
        "march": "ⵎⴰⵔⵚ",
        "april": "Ibrir",
-       "may_long": "Mayyu",
+       "may_long": "ⵎⴰⵢⵢⵓ",
        "june": "ⵢⵓⵏⵢⵓ",
        "july": "ⵢⵓⵍⵢⵓⵣ",
        "august": "ⵖⵓⵛⵜ",
@@ -80,7 +80,7 @@
        "december": "ⴷⵓⵊⴰⵏⴱⵉⵔ",
        "january-gen": "ⵉⵏⵏⴰⵢⵔ",
        "february-gen": "Brayr",
-       "march-gen": "Mars",
+       "march-gen": "ⵎⴰⵔⵚ",
        "april-gen": "Ibrir",
        "may-gen": "ⵎⴰⵢⵢⵓ",
        "june-gen": "ⵢⵓⵏⵢⵓ",
        "navigation": "ⴰⵙⵜⴰⵔⴰ",
        "and": "&#32;ⴷ",
        "faq": "Isqsitn li bdda tsutulnin",
-       "actions": "Imskarn",
+       "actions": "ⵜⵉⴳⴰⵡⵉⵏ",
        "namespaces": "Ismawn n tɣula",
        "variants": "ⵜⵉⵎⵣⴰⵔⴰⵢⵉⵏ",
        "errorpagetitle": "ⵜⴰⵣⴳⵍⵜ",
        "undelete_short": "Yurrid {{PLURAL:$1|yan umbddel|$1 imbddeln}}",
        "protect": "Ḥbu",
        "protect_change": "ⵙⵏⴼⵍ",
-       "unprotect": "Kksas aḥbu",
+       "unprotect": "ⵙⵏⴼⵍ ⴰⴼⵔⴰⴳ",
        "newpage": "ⵜⴰⵙⵏⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ",
        "talkpagelinktext": "ⵎⵙⴰⵡⴰⵍ",
        "specialpage": "ⵜⴰⵙⵏⴰ ⵉⵥⵍⵉⵏ",
-       "personaltools": "Imasn inu",
+       "personaltools": "ⵉⵎⴰⵙⵙⵏ ⵉⵏⵉⵎⴰⵏⴻⵏ",
        "talk": "ⴰⵎⵙⴰⵡⴰⵍ",
        "views": "Ẓr.. (Mel)",
        "toolbox": "ⵉⵎⴰⵙⵙⵏ",
        "pagetitle-view-mainpage": "{{SITENAME}}",
        "retrievedfrom": "Yurrid z \"$1\"",
        "youhavenewmessages": "Illa dark $1 ($2).",
+       "newmessageslinkplural": "{{PLURAL:$1|ⵜⵓⵣⵉⵏⵜ ⵜⴰⵎⴰⵢⵏⵓⵜ|ⵜⵓⵣⵉⵏⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ}}",
+       "newmessagesdifflinkplural": "{{PLURAL:$1|ⴰⵙⵏⴼⵍ ⵉⴳⴳⵯⵔⴰⵏ|ⵉⵙⵏⴼⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ}}",
        "youhavenewmessagesmulti": "Dark tibratin timaynutin ɣ $1",
        "editsection": "ⵙⵏⴼⵍ",
        "editold": "ⵙⵏⴼⵍ",
        "thisisdeleted": "Mel niɣd rard $1?",
        "viewdeleted": "Mel $1?",
        "restorelink": "{{PLURAL:$1|Ambddel lli imḥin|imbddel lli imḥin}}",
-       "feedlinks": "Asudm:",
+       "feedlinks": "ⵉⴼⵉⵍⵉ:",
        "feed-invalid": "Anaw n usurdm ur gis iffuy umya",
        "feed-unavailable": "Isudmn ur llanin ɣil",
        "site-rss-feed": "$1 asudm n RSS",
        "page-atom-feed": "$1 azday atom",
        "red-link-title": "$1 (tasna yad ur tlli)",
        "nstab-main": "ⵜⴰⵙⵏⴰ",
-       "nstab-user": "Tasnat u-msxdam",
+       "nstab-user": "ⵜⴰⵙⵏⴰ ⵏ {{GENDER:{{ROOTPAGENAME}}|ⵓⵙⵎⵔⴰⵙ|ⵜⵙⵎⵔⴰⵙⵜ}}",
        "nstab-media": "Tasnat Ntuzumt",
-       "nstab-special": "Tasna tamzlit",
+       "nstab-special": "ⵜⴰⵙⵏⴰ ⵉⵥⵍⵉⵏ",
        "nstab-project": "Tasna n tuwuri",
        "nstab-image": "ⴰⴼⴰⵢⵍⵓ",
        "nstab-mediawiki": "ⵜⵓⵣⵉⵏⵜ",
        "mainpage-nstab": "ⵜⴰⵙⵏⴰ ⵏ ⵓⵙⵏⵓⴱⴳ",
        "nosuchaction": "Ur illa mat iskrn",
        "nosuchactiontext": "Mytuskarn ɣu tansa yad ur tti tgi.\n\nIrwas is turit tansa  skra mani yaḍnin, ulla azday ur igi amya.\n\nTzdar attili tamukrist ɣ {{SITENAME}}.",
-       "nosuchspecialpage": "Urtlla tasna su w-ussaɣad",
+       "nosuchspecialpage": "ⵓⵔ ⵜⵍⵍⵉ ⵜⴰⵙⵏⴰ ⴰⴷ ⵉⵥⵍⵉⵏ",
        "nospecialpagetext": "<strong>Trit yat tasna tamzlit ur illan.</strong>\n\nTifilit n tasnayin gaddanin ratn taft ɣid [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "ⵜⴰⵣⴳⵍⵜ",
        "databaseerror": "ⵜⴰⵣⴳⵍⵜ ⴳ ⵜⴰⵙⵉⵍⴰ ⵏ ⵉⵙⴼⴽⴰ",
        "missing-article": "lqaa'ida n lbayanat ortofa nass ad gh tawriqt  liss ikhssa asti taf limism \"$1\" $2.\n\nghikad artitsbib  igh itabaa lfrq aqdim nghd tarikh artawi skra nsfha ityohyadn.\n\nighor iga lhal ghika ati ran taft kra lkhata gh lbarnamaj.\n\nini mayad ikra [[Special:ListUsers/sysop|lmodir]] tfktas ladriss ntwriqt an.",
        "missingarticle-rev": "(lmorajaaa#: $1)",
        "missingarticle-diff": "(ⴰⵎⵣⴰⵔⴰⵢ: $1, $2)",
-       "internalerror": "khata ghogns",
-       "internalerror_info": "khata ghogns :$1",
+       "internalerror": "ⵜⴰⵣⴳⵍⵜ ⵜⴰⴳⵯⵏⵙⴰⵏⵜ",
+       "internalerror_info": "ⵜⴰⵣⴳⵍⵜ ⵜⴰⴳⵯⵏⵙⴰⵏⵜ: $1",
        "filecopyerror": "orimkin ankopi \"$1\" s \"$2\".",
        "filerenameerror": "ur as tufit ad tsmmut \"$1\" s \"$2\".",
        "filedeleteerror": "Ur as yuffi ad ikkis asddaw ad « $1 ».",
        "notloggedin": "Ur tmlit mat git",
        "createaccount": "Murzm amidan nek (lkunt)..",
        "createaccountmail": "S tirawt taliktunant",
+       "createacct-benefit-body1": "{{PLURAL:$1|ⴰⵙⵏⴼⵍ|ⵉⵙⵏⴼⵍⵏ}}",
        "createacct-benefit-body2": "{{PLURAL:$1|ⵜⴰⵙⵏⴰ|ⵜⴰⵙⵏⵉⵡⵉⵏ}}",
+       "createacct-benefit-body3": "{{PLURAL:$1|ⴰⵏⴰⵎⵓ ⵉⴳⴳⵯⵔⴰⵏ|ⵉⵏⴰⵎⵓⵜⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ}}",
        "badretype": "Tasarut lin tgit ur dis tucka.",
        "userexists": "Asaɣ nu umsqdac li tskcmt illa yad",
        "loginerror": "Gar akccum",
        "summary": "Tagḍwit (ⵜⴰⴳⴹⵡⵉⵜ):",
        "subject": "ⴰⵙⵏⵜⵍ:",
        "minoredit": "ⵡⴰⴷ ⵉⴳⴰ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ",
-       "watchthis": "Ṭfr tasna yad",
+       "watchthis": "ⴹⴼⵓⵔ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "savearticle": "Ẓṛig d tḥbut",
        "preview": "Iẓṛi amzwaru",
        "showpreview": "Iẓṛi amzwaru",
        "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",
        "missingcommenttext": "Σafak skjm awnnit (aɣfawal) nk ɣ uflla.",
        "summary-preview": "Tiẓṛi  n tagḍwit:",
-       "blockedtitle": "lmostkhdim ad itbloka",
+       "blockedtitle": "ⵉⵜⵜⵡⴰⴳⴷⵍ ⵓⵙⵎⵔⴰⵙ ⴰⴷ",
        "blockednoreason": "ta yan sabab oritfki",
        "whitelistedittext": "Illa fllak ad tilit ɣ $1 bac adak ittuyskar ad tsbadlt mayllan ɣid",
        "confirmedittext": "Illa fllak ad talst i tansa nk tbratin urta tsbadalt tisniwin.\nKcm zwar tft tansan nk tbratin ɣ [[Special:Preferences|Timssusmin n umqdac]].",
        "template-protected": "Agdal",
        "template-semiprotected": "Azin-ugdal",
        "hiddencategories": "{{PLURAL:$1|Taggayt iḥban|Taggayin ḥbanin}} lli ɣtlla tasba yad :",
+       "permissionserrors": "ⵜⴰⵣⴳⵍⵜ ⴳ ⵜⵓⵔⴰⴳⵜ",
        "permissionserrorstext-withaction": "Urak ittuyskar  {{IGGUT:||e|(e)}} s $2, bac {{PLURAL:$1|s wacku yad|iwackutn ad}} :",
        "recreate-moveddeleted-warn": "\"Balak z ɣin: tmmaɣt addaɣ tskrt tasna lli yad ittuykkasn.\"\nẒr zwar is ifulki ad tfrt imbddln ɣ tasna yad. Tanɣmast n mad ittuykkasn d mad ibddln ttla ɣid ɣ uzddar.",
        "moveddeleted-notice": "Tasna yad ttuykkas. inɣmas n tuyykkas d issmmattayn nsn llan ɣ ɣ ufflla i tusna.",
        "history-show-deleted": "Tḥiyd hlli",
        "histfirst": "Amzwaru",
        "histlast": "Amggaru",
-       "historyempty": "(orgiss walo)",
+       "historyempty": "(ⵢⵓⴳⴰ)",
        "history-feed-item-nocomment": "$1 ⴳ $2",
        "rev-delundel": "Mel/ĥbu",
        "rev-showdeleted": "Mel",
        "revdelete-log": "Maɣ..acku:",
        "revdel-restore": "sbadl tannayt",
        "pagehist": "ⴰⵎⵣⵔⵓⵢ ⵏ ⵜⴰⵙⵏⴰ",
-       "deletedhist": "Amzruy lli ittuykkasn",
+       "deletedhist": "ⴰⵎⵣⵔⵓⵢ ⵉⵜⵜⵡⴰⴽⴽⵙⵏ",
        "mergehistory": "Smun imzruyn n tisniwin.",
        "mergehistory-header": "Tasna yad ar ttjja ad tsmunt ticggarin n umzruy ɣ yat tasna taɣbalut s yat tasna tamaynut.",
        "mergehistory-box": "Smun ilqqmn ad n snat tisniwin :",
        "editundo": "Urri",
        "diff-multi-manyusers": "({{PLURAL:$1|yan ulqm n gratsn|$1 ilqmn ngratsn}} zdar mnnaw {{PLURAL:$2|amcgr |n $2 imcgrn}} {{PLURAL:$1|iḥba|lli iḥban}})",
        "searchresults": "Mad akkan icnubcn",
-       "searchresults-title": "Mad akkan icnubcn f \"$1\"",
+       "searchresults-title": "ⵜⵉⵢⴰⴼⵓⵜⵉⵏ ⵏ ⵓⵔⵣⵣⵓ ⵅⴼ \"$1\"",
        "titlematches": "Assaɣ n tasna iga zund",
        "textmatches": "Aṭṛiṣ n tasna iga zund",
        "notextmatches": "Ur ittyufa kra nu uṭṛiṣ igan zund ɣwad",
        "prevn": "Tamzwarut {{PLURAL:$1|$1}}",
        "nextn": "Tallid yuckan {{PLURAL:$1|$1}}",
        "prevn-title": "$1 {{PLURAL:$1|Askfa amzaru|Iskfatn imzwura}}",
-       "nextn-title": "$1 {{PLURAL:$1|askfa d itfrn|iskfatn d itfrn}}",
+       "nextn-title": "$1 {{PLURAL:$1|ⵜⵢⴰⴼⵓⵜ ⵜⵓⴹⴼⵉⵔⵜ|ⵜⵢⴰⴼⵓⵜⵉⵏ ⵜⵓⴹⴼⵉⵔⵉⵏ}}",
        "shown-title": "Fsr $1 tayafut{{PLURAL:$1||s}} s tasna",
        "viewprevnext": "Mel ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "\"'Tlla yat tasna lli ilan assaɣ « [[:$1]] » ɣ wiki yad",
-       "searchmenu-new": "'''Skr Tasna « [[:$1|$1]] » ɣ wiki !'''",
-       "searchprofile-articles": "Mayllan ɣ tasna",
+       "searchmenu-new": "<strong>ⵙⵏⵓⵍⴼⵓ ⵜⴰⵙⵏⴰ \"[[:$1]]\" ⴳ ⵓⵡⵉⴽⵉ ⴰⴷ!</strong> {{PLURAL:$2|0=|See also the page found with your search.|See also the search results found.}}",
+       "searchprofile-articles": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵜⵓⵎⴰⵢⵜ",
        "searchprofile-images": "Multimedia",
-       "searchprofile-everything": "kullu",
+       "searchprofile-everything": "ⴰⴽⴽⵯ",
        "searchprofile-advanced": "motaqqadim",
        "searchprofile-articles-tooltip": "ⵙⵉⴳⴳⵍ ⴳ $1",
-       "searchprofile-images-tooltip": "qlb gh tswira",
+       "searchprofile-images-tooltip": "ⵙⵉⴳⴳⵍ ⵉⴼⴰⵢⵍⵓⵜⵏ",
        "searchprofile-everything-tooltip": "Cabba ɣ kullu may ityran ɣid (d ḥtta ɣ tisna nu umsgdal)",
        "searchprofile-advanced-tooltip": "Cabba ɣ igmmaḍn li tuyzlaynin",
-       "search-result-size": "$1 ({{PLURAL:$2|1 taguri|$2 tiguriwin}})",
-       "search-result-category-size": "$1 amdan{{PLURAL:$1||i-n}} ($2 ddu talɣa{{PLURAL:$2||i-s}}, $3 asdaw{{PLURAL:$3||i-n}})",
+       "search-result-size": "$1 ({{PLURAL:$2|1 ⵜⴳⵓⵔⵉ|$2 ⵜⴳⵓⵔⵉⵡⵉⵏ}})",
+       "search-result-category-size": "$1 {{PLURAL:$1|ⵓⴳⵎⴰⵎ|ⵉⴳⵎⴰⵎⵏ}} ($2 {{PLURAL:$2|ⵡⴰⴷⵓⵎⵙⵉⵍ|ⵉⴷⵓⵎⵙⵉⵍⵏ}}, $3 {{PLURAL:$3|ⵓⴼⴰⵢⵍⵓ|ⵉⴼⴰⵢⵍⵓⵜⵏ}})",
        "search-redirect": "(Asmmati $1)",
        "search-section": "(ⵜⵉⴳⵣⵎⵉ $1)",
        "search-category": "(ⴰⵙⵎⵉⵍ $1)",
        "search-suggest": "ⵉⵙ ⵜⵔⵉⴷ ⴰⴷ ⵜⵉⵏⵉⴷ: $1",
        "search-interwiki-caption": "Tiwuriwin taytmatin",
-       "search-interwiki-default": "$1 imyakkatn",
+       "search-interwiki-default": "ⵜⵉⵢⴰⴼⵓⵜⵉⵏ ⵏ $1:",
        "search-interwiki-more": "(ⵓⴳⴳⴰⵔ)",
        "search-relatedarticle": "Tzdi",
        "searchrelated": "Tuyzday",
-       "searchall": "Kullu",
+       "searchall": "ⴰⴽⴽⵯ",
        "showingresults": "Ẓr azddar  {{PLURAL:$1|'''1''' May tuykfan|'''$1''' Mad kfan}} Bdu s #'''$2'''",
        "search-nonefound": "Ur ittuykfa walu maygan zund ɣayli trit",
        "powersearch-legend": "Amsigl imzwarn",
        "powersearch-ns": "Icnubbucn ɣ tɣulin",
        "powersearch-togglelabel": "Sti",
-       "powersearch-toggleall": "Kullu",
-       "powersearch-togglenone": "Walu",
+       "powersearch-toggleall": "ⴰⴽⴽⵯ",
+       "powersearch-togglenone": "ⵓⵍⴰ ⵢⴰⵜ",
        "search-external": "ⴰⵔⵣⵣⵓ ⴰⴱⵔⵔⴰⵏⵉ",
        "searchdisabled": "{{SITENAME}} Acnubc ibid.\nTzdar at cabbat ɣilad ɣ Google.\nIzdar ad urtili ɣ isbidn n mayllan ɣ {{SITENAME}} .",
        "preferences": "Timssusmin",
-       "mypreferences": "Timssusmin",
-       "prefs-edits": "Uṭṭun n n imbddeln",
+       "mypreferences": "ⵉⵙⵏⵢⵉⴼⵏ",
+       "prefs-edits": "ⵓⵟⵟⵓⵏ ⵏ ⵉⵙⵏⴼⵍⵏ:",
        "prefs-skin": "ⵜⵉⵎⵍⵙⵉⵜ",
        "skin-preview": "Ammal",
        "datedefault": "Timssusmin",
        "prefs-personal": "milf n umsxdam",
-       "prefs-rc": "Imbddeln imggura",
-       "prefs-watchlist": "lista n tabiaa",
+       "prefs-rc": "ⵉⵙⵏⴼⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ",
+       "prefs-watchlist": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ",
        "prefs-watchlist-days": "osfan liratzrt gh lista n umdfur",
        "prefs-watchlist-days-max": "Maximum $1 {{PLURAL:$1|day|days}}",
        "prefs-watchlist-token": "tasarut n list n omdfor",
        "prefs-custom-css": "khss CSS",
        "prefs-custom-js": "khss JavaScipt",
        "youremail": "Tabrat mail",
-       "username": "smiyt o-msxdam:",
+       "username": "{{GENDER:$1|ⵉⵙⵎ ⵏ ⵓⵙⵎⵔⴰⵙ|ⵉⵙⵎ ⵏ ⵜⵙⵎⵔⴰⵙⵜ}}:",
        "group-membership-link-with-expiry": "$1 (ⴰⵔ $2)",
        "prefs-registration": "ⵜⵉⵣⵉ ⵏ ⵓⵣⵎⵎⴻⵎ:",
        "yourrealname": "ⵉⵙⵎ ⵏ ⵜⵉⴷⵜ:",
        "yournick": "ⴰⵙⴳⵎⴹ ⴰⵎⴰⵢⵏⵓ:",
        "yourgender": "ljins",
        "gender-unknown": "ghayr mohdad",
-       "gender-male": "dkr",
-       "gender-female": "lont",
+       "gender-male": "ⴰⵔ ⵉⵙⵏⴼⴰⵍ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵓⵡⵉⴽⵉ",
+       "gender-female": "ⴰⵔ ⵜⵙⵏⴼⴰⵍ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵏ ⵓⵡⵉⴽⵉ",
        "email": "email",
        "prefs-help-email": "Tansa n tbratin ur tga bzzez, mac trwa ad taft taguri n uzray d ar ak tskar ast tsbadlt iɣ tti tuut.",
        "prefs-help-email-others": "Tẓḍart ad tstit ad tajt wiyyaḍ ad ak ttaran, snḥkmn dik ɣ, mlinak iwnnan nsn ɣ tasna lli sik iẓlin bla ssn assaɣ nk d mad tgit.",
        "prefs-signature": "ⴰⵙⴳⵎⴹ",
        "prefs-dateformat": "ⵜⴰⵍⵖⴰ ⵏ ⵓⵙⴰⴽⵓⴷ",
        "group": "ⵜⴰⵔⴰⴱⴱⵓⵜ:",
+       "group-bot": "ⵉⴷ ⴱⵓⵜ",
        "group-sysop": "Anedbalen n unagraw",
+       "grouppage-bot": "{{ns:project}}:ⵉⴷ ⴱⵓⵜ",
        "grouppage-sysop": "{{ns:project}}: Inedbalen",
        "right-read": "ⵖⵔ ⵜⴰⵙⵏⵉⵡⵉⵏ",
        "right-edit": "ⵙⵏⴼⵍ ⵜⴰⵙⵏⵉⵡⵉⵏ",
        "recentchanges": "ⵉⵙⵏⴼⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ",
        "recentchanges-legend": "Tixtiɣitin (options) n imbddl imaynutn",
        "recentchanges-summary": "Ml imbddln imaynutn  n wiki ɣ tasna yad",
-       "recentchanges-feed-description": "Tfr imbddln imggura n wiki yad ɣ usuddm",
+       "recentchanges-feed-description": "ⴹⴼⵓⵔ ⵉⵙⵏⴼⵍⵏ ⴰⴽⴽⵯ ⵉⴳⴳⵯⵔⴰⵏ ⵏ ⵓⵡⵉⴽⵉ ⴳ ⵉⴼⵉⵍⵉ ⴰⴷ.",
        "recentchanges-label-newpage": "ⵉⵙⵏⵓⵍⴼⴰ ⵓⵙⵏⴼⵍ ⴰⴷ ⵢⴰⵜ ⵜⴰⵙⵏⴰ ⵜⴰⵎⴰⵢⵏⵓⵜ",
        "recentchanges-label-minor": "ⵡⴰⴷ ⵉⴳⴰ ⴰⵙⵏⴼⵍ ⵓⵎⵥⵉⵢ",
-       "recentchanges-label-bot": "Ambddl ad iskr robot",
+       "recentchanges-label-bot": "ⴰⵙⵏⴼⵍ ⴰⴷ ⵉⵙⴽⵔ ⵜ ⵢⴰⵏ ⵓⵔⵓⴱⵓ",
        "recentchanges-label-unpatrolled": "Ambddl ad ura jju ittmẓra",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ⵥⵔ ⵓⵍⴰ [[Special:NewPages|ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ]])",
        "rcfilters-savedqueries-new-name-label": "ⵉⵙⵎ",
        "rcfilters-filterlist-whatsthis": "ⵎⴰⵜⵜⴰ ⵓⵢⴰ?",
        "rcfilters-filter-bots-label": "ⴱⵓⵜ",
        "rcshowhideminor-hide": "ⵙⵙⵏⵜⵍ",
        "rcshowhidebots": "$1 ⵉⴷ ⴱⵓⵜ",
        "rcshowhidebots-hide": "ⵙⵙⵏⵜⵍ",
-       "rcshowhideliu": "$1 midn li ttuyqqiyadnin",
+       "rcshowhideliu": "$1 ⵉⵙⵎⵔⴰⵙⵏ ⵣⵎⵎⴻⵎⵏⵉⵏ",
        "rcshowhideliu-hide": "ⵙⵙⵏⵜⵍ",
        "rcshowhideanons": "$1 midn ur ttuyssan nin",
        "rcshowhideanons-hide": "ⵙⵙⵏⵜⵍ",
        "number_of_watching_users_pageview": "[$1 iżŗi {{PLURAL:$1|amsqdac|imsqdacn}}]",
        "rc_categories_any": "wanna",
        "rc-change-size": "$1",
+       "rc-change-size-new": "$1 {{PLURAL:$1|ⴱⴰⵢⵜ|ⵉⴷ ⴱⴰⵢⵜ}} ⴷⴼⴼⵉⵔ ⵓⵙⵏⴼⵍ",
        "newsectionsummary": "/* $1 */ ⵜⵉⴳⵣⵎⵉ ⵜⴰⵎⴰⵢⵏⵓⵜ",
        "rc-enhanced-expand": "Ml ifruriyn (ira JavaScript)",
        "rc-enhanced-hide": "Ĥbu ifruriyn",
        "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.",
-       "upload": "Srbu asddaw",
+       "upload": "ⵙⴽⵜⵔ ⴽⵔⴰ ⵏ ⵓⴼⴰⵢⵍⵓ",
        "uploadbtn": "ⵙⴽⵜⵔ ⴰⴼⴰⵢⵍⵓ",
        "reuploaddesc": "Sbidd asrbu d turrit",
        "upload-tryagain": "Ṣafḍ Anglam n ufaylu li ibudln",
        "uploadnologin": "Ur tmlit mat git",
-       "uploadnologintext": "Mel zwar mat git [[Special:UserLogin|Mel mat git]] iɣ trit ad tsrbut isddawn.",
+       "uploadnologintext": "ⵉⵍⴰⵇ ⴰⴷ $1 ⴱⴰⵛ ⴰⵙ ⵜⵙⴽⵜⵔⴷ ⵉⴼⴰⵢⵍⵓⵜⵏ.",
        "upload_directory_missing": "Akaram n w-affay ($1) ur ittyufa d urt iskr uqadac web (serveur)",
        "uploadlogpage": "Anɣmis n isrbuṭn",
        "filename": "ⵉⵙⵎ ⵏ ⵓⴼⴰⵢⵍⵓ",
        "upload-form-label-usage-filename": "ⵉⵙⵎ ⵏ ⵓⴼⴰⵢⵍⵓ",
        "upload-form-label-infoform-categories": "ⵉⵙⵎⵉⵍⵏ",
        "upload-form-label-infoform-date": "ⴰⵙⴰⴽⵓⴷ",
-       "license": "Tlla s izrfan",
-       "license-header": "Tẓrg ddu n izrfan",
+       "license": "ⵜⵓⵔⴰⴳⵜ:",
+       "license-header": "ⵜⵓⵔⴰⴳⵜ",
        "listfiles-delete": "ⴽⴽⵙ",
        "imgfile": "ⴰⴼⴰⵢⵍⵓ",
+       "listfiles": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵉⴼⴰⵢⵍⵓⵜⵏ",
        "listfiles_date": "ⴰⵙⴰⴽⵓⴷ",
        "listfiles_name": "ⵉⵙⵎ",
        "listfiles_count": "ⵜⵓⵏⵖⵉⵍⵉⵏ",
        "filehist-datetime": "ⴰⵙⴰⴽⵓⴷ/ⴰⴽⵓⴷ",
        "filehist-thumb": "Awlaf imżżin",
        "filehist-thumbtext": "Mżżi n lqim ɣ tizi $1",
-       "filehist-user": "Amsqdac",
-       "filehist-dimensions": "Dimensions",
+       "filehist-user": "ⴰⵙⵎⵔⴰⵙ",
+       "filehist-dimensions": "ⵉⵎⵏⴰⴷⵏ",
        "filehist-comment": "ⴰⵅⴼⴰⵡⴰⵍ",
        "imagelinks": "Izdayn n usdaw",
        "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": "ⴰⵙⴷⴰⵡ ⴰⴷ ⵉⴽⴽⴰⴷ ⵣ : $1.  ⵜⵥⴹⴰⵔⵜ ⴰⵙⵙⵉ ⵜⵙⵡⵡⵓⵔ ⵖ ⵜⵉⵡⵓⵔⵉⵡⵉⵏ ⵜⴰⴹⵏ.\nⵓⴳⴳⴰⵔ ⴼⵍⵍⴰⵙ ⵍⵍⴰⵏ ⵖ [$2 ⵜⴰⵙⵏⴰ ⵏ ⵉⵎⵍⵓⵣⵣⵓⵜⵏ] ⵍⵍⵉ ⵉⵍⵍⴰⵏ ⵖⵉⴷ.",
-       "uploadnewversion-linktext": "Srbud tunɣilt tamaynut n usdaw ad",
+       "uploadnewversion-linktext": "ⵙⴽⵜⵔ ⴽⵔⴰ ⵏ ⵜⵓⵏⵖⵉⵍⵜ ⵜⴰⵎⴰⵢⵏⵓⵜ ⵏ ⵓⴼⴰⵢⵍⵓ ⴰⴷ",
        "filedelete": "ⴽⴽⵙ $1",
        "filedelete-legend": "ⴽⴽⵙ ⴰⴼⴰⵢⵍⵓ",
        "filedelete-submit": "ⴽⴽⵙ",
        "lonelypagestext": "Tisnawinad ur ur tuyzdaynt z ulla lant ɣ tisniwin yaḍnin ɣ {{SITENAME}}.",
        "uncategorizedpages": "Tisnawinad ur llant ɣ graygan taggayt",
        "uncategorizedcategories": "Taggayin ur ittuyzlayn ɣ kraygan taggayt",
-       "prefixindex": "Tisniwin lli izwarn s ...",
+       "prefixindex": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⴰⴽⴽⵯ ⵉⵍⴰⵏ ⵓⵣⵡⵉⵔ",
        "protectedpages-page": "ⵜⴰⵙⵏⴰ",
-       "usercreated": "{{GENDER:$3|tuyskar}}  z $1 ar $2",
+       "listusers": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵉⵙⵎⵔⴰⵙⵏ",
+       "usercreated": "{{GENDER:$3|ⵉⵙⵏⵓⵍⴼⴰ|ⵜⵙⵏⵓⵍⴼⴰ}} ⴳ $1 ⴳ $2",
        "newpages": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⵜⵉⵎⴰⵢⵏⵓⵜⵉⵏ",
        "move": "ⵙⵎⴰⵜⵜⵉ",
        "movethispage": "ⵙⵎⴰⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "prevpage": "Tasna li izrin $1",
        "allpagesfrom": "Mel tisniwin li ittizwirn z",
        "allpagesto": "Mel tasniwin li ttgurunin s",
-       "allarticles": "Tasniwin kullu tnt",
-       "allinnamespace": "Tasniwin kullu tnt ɣ ($1 assaɣadɣar)",
+       "allarticles": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⴰⴽⴽⵯ",
+       "allinnamespace": "ⵜⴰⵙⵏⵉⵡⵉⵏ ⴰⴽⴽⵯ ($1 namespace)",
        "allpagessubmit": "Ftu",
        "allpagesprefix": "Mel tasniwin li ttizwirnin s",
        "categories": "ⵉⵙⵎⵉⵍⵏ",
        "emailsubject": "ⴰⵙⵏⵜⵍ:",
        "emailmessage": "ⵜⵓⵣⵉⵏⵜ:",
        "emailsend": "ⴰⵣⵏ",
-       "watchlist": "Umuɣ n imtfrn",
-       "mywatchlist": "Umuɣ inu lli tsaggaɣ",
+       "watchlist": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ",
+       "mywatchlist": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ",
        "watchlistfor2": "ⵉ $1 $2",
        "addedwatchtext": "tasna « [[:$1]] » tllan ɣ [[Special:Watchlist|umuɣ n umtfr]]. Imbdln lli dyuckan d tasna lli dis iṭṭuzn rad asn nskr agmmaḍ nsn. Tasna radd ttbayan s \"uḍnay\" ɣ [[Special:RecentChanges|Umuɣ n imbddeln imaynutn]]",
        "removedwatchtext": "Tasna \"[[:$1]]\" ḥra ttuykkas z [[Special:Watchlist|your watchlist]].",
-       "watch": "zaydtin i tochwafin-niw",
-       "watchthispage": "Ṭfr tasna yad",
-       "unwatch": "Ur rast tsaggaɣ",
-       "watchlist-details": "Umuɣ nk n imttfura ar  ittawi $1 tasna {{PLURAL:$1||s}}, bla dis tsmunt tisniwin n imdiwiln.",
+       "watch": "ⴹⴼⵓⵔ",
+       "watchthispage": "ⴹⴼⵓⵔ ⵜⴰⵙⵏⴰ ⴰⴷ",
+       "unwatch": "ⵙⴱⴷⴷ ⴰⴹⴼⴼⵓⵔ",
+       "watchlist-details": "{{PLURAL:$1|$1 ⵜⴰⵙⵏⴰ|$1 ⵜⴰⵙⵏⵉⵡⵉⵏ}} ⴳ ⵜⵍⴳⴰⵎⵜ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⴹⴼⴼⵓⵔ, not separately counting talk pages.",
        "wlshowlast": "Ml ikudan imggura $1 , ussan imggura $2 niɣd",
        "watchlist-hide": "ⵙⵙⵏⵜⵍ",
        "wlshowhidebots": "ⵉⴷ ⴱⵓⵜ",
-       "watchlist-options": "Tixtiṛiyin n umuɣ lli ntfar",
-       "watching": "Ar itt sagga",
+       "watchlist-options": "ⵜⵉⵙⵖⴰⵍ ⵏ ⵜⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ",
+       "watching": "ⵉⴹⴼⴰⵔ...",
        "unwatching": "Ur at sul ntsagga",
        "deletepage": "ⴽⴽⵙ ⵜⴰⵙⵏⴰ",
        "delete-confirm": "ⴽⴽⵙ \"$1\"",
        "namespace": "Taɣult",
        "invert": "amglb n ustay",
        "blanknamespace": "(Amuqran)",
-       "contributions": "Tiwuriwin n umsaws",
-       "contributions-title": "Umuɣ n tiwuriwin n umsqdac $1",
+       "contributions": "ⵜⵓⵎⵓⵜⵉⵏ ⵏ {{GENDER:$1|ⵓⵙⵎⵔⴰⵙ|ⵜⵙⵎⵔⴰⵙⵜ}}",
+       "contributions-title": "ⵜⵓⵎⵓⵜⵉⵏ ⵏ {{GENDER:$1|ⵓⵙⵎⵔⴰⵙ|ⵜⵙⵎⵔⴰⵙⵜ}} $1",
        "mycontris": "ⵜⵓⵎⵓⵜⵉⵏ",
        "anoncontribs": "ⵜⵓⵎⵓⵜⵉⵏ",
        "contribsub2": "ⵉ {{GENDER:$3|$1}} ($2)",
        "whatlinkshere-hidelinks": "$1 izdayn",
        "whatlinkshere-hideimages": "$1 izdayn awlaf",
        "whatlinkshere-filters": "Istayn",
-       "blockip": "Qn f umsqdac",
+       "blockip": "ⴳⴷⵍ {{GENDER:$1|ⴰⵙⵎⵔⴰⵙ|ⵜⴰⵙⵎⵔⴰⵙⵜ}}",
        "ipboptions": "2 ikudn:2 hours,1 as:1 day,3 ussan:3 days,1 imalas:1 week,2 imalasn:2 weeks,1 ayur:1 month,3 irn:3 months,6 irn:6 months,1 asggas:1 year,tusut ur iswuttan:infinite",
        "ipbhidename": "ḥbu assaɣ n umsqdac ɣ imbdln d umuɣn",
        "ipbwatchuser": "Tfr tisniwin d imsgdaln n umqdac",
        "autoblocklist-submit": "ⵙⵉⴳⴳⵍ",
-       "ipblocklist": "Imsqdacn ttuẓnin",
+       "ipblocklist": "ⵉⵙⵎⵔⴰⵙⵏ ⵜⵜⵡⴰⴳⴷⵍⵏⵉⵏ",
        "ipblocklist-submit": "ⵙⵉⴳⴳⵍ",
        "blocklink": "ⴳⴷⵍ",
        "unblocklink": "kkis agdal",
        "export": "assufɣ n tasniwin",
        "export-addcat": "ⵔⵏⵓ",
        "export-addns": "ⵔⵏⵓ",
+       "export-manual": "ⵔⵏⵓ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵙ ⵓⴼⵓⵙ:",
        "allmessagesname": "ⵉⵙⵎ",
-       "allmessagesdefault": "Tabrat bla astay",
+       "allmessagesdefault": "ⴰⴹⵔⵉⵙ ⵙ ⵓⵡⵏⵓⵍ",
        "allmessages-language": "ⵜⵓⵜⵍⴰⵢⵜ:",
        "allmessages-filter-translate": "ⵙⵙⵓⵖⵍ",
        "thumbnail-more": "Simɣur",
        "tooltip-pt-userpage": "Tasna n umsqdac",
        "tooltip-pt-mytalk": "ⵜⴰⵙⵏⴰ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⵎⵙⴰⵡⴰⵍ",
        "tooltip-pt-anontalk": "Amsgdal f imbddeln n tansa n IP yad",
-       "tooltip-pt-preferences": "Timssusmin inu",
+       "tooltip-pt-preferences": "ⵉⵙⵏⵢⵉⴼⵏ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}}",
        "tooltip-pt-watchlist": "Tifilit n tisnatin li itsaggan imdddeln li gisnt ittyskarn..",
-       "tooltip-pt-mycontris": "Tabdart n ismmadn inu",
+       "tooltip-pt-mycontris": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵜⵓⵎⵓⵜⵉⵏ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}}",
        "tooltip-pt-login": "Yufak at qiyt akcum nek, mach ur fllak ibziz .",
        "tooltip-pt-logout": "ⴼⴼⵖ",
        "tooltip-ca-talk": "ⴰⵎⵙⴰⵡⴰⵍ ⵅⴼ ⵜⴰⵙⵏⴰ ⵏ ⵜⵓⵎⴰⵢⵜ",
        "tooltip-ca-edit": "ⵙⵏⴼⵍ ⵜⴰⵙⵏⴰ ⴰⴷ",
-       "tooltip-ca-addsection": "Bdu ayyaw amaynu.",
+       "tooltip-ca-addsection": "ⵙⵙⵏⵜⵉ ⴽⵔⴰ ⵏ ⵜⴳⵣⵎⵉ ⵜⴰⵎⴰⵢⵏⵓⵜ",
        "tooltip-ca-viewsource": "Tasnatad tuyḥba. mac dẓdart at tẓrt aɣbalu nes.",
        "tooltip-ca-history": "Tunɣilt tamzwarut n tasna yad",
        "tooltip-ca-protect": "Ḥbu tasna yad",
-       "tooltip-ca-unprotect": "Kkis aḥbu n tasna yad",
+       "tooltip-ca-unprotect": "ⵙⵏⴼⵍ ⴰⴼⵔⴰⴳ ⵏ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "tooltip-ca-delete": "ⴽⴽⵙ ⵜⴰⵙⵏⴰ ⴰⴷ",
        "tooltip-ca-undelete": "Rard imbddeln imzwura li ittyskarnin ɣ tasna yad",
        "tooltip-ca-move": "ⵙⵎⴰⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ",
-       "tooltip-ca-watch": "Smd tasna yad itilli tsaggat.",
-       "tooltip-ca-unwatch": "Kkis tasna yad z ɣ tilli tsaggat",
+       "tooltip-ca-watch": "ⵔⵏⵓ ⵜⴰⵙⵏⴰ ⴰⴷ ⵉ ⵜⵍⴳⴰⵎⵜ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⴹⴼⴼⵓⵔ",
+       "tooltip-ca-unwatch": "ⵙⵉⵜⵜⵉ ⵜⴰⵙⵏⴰ ⴰⴷ ⵣⴳ ⵜⵍⴳⴰⵎⵜ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⴹⴼⴼⵓⵔ",
        "tooltip-search": "ⵙⵉⴳⴳⵍ ⴳ {{SITENAME}}",
        "tooltip-search-go": "Ftu s tasna s w-assaɣ znd ɣ-wad  iɣ tlla",
        "tooltip-search-fulltext": "Cnubc aṭṛiṣad ɣ tisnatin",
        "tooltip-n-mainpage-description": "Kid tasna tamuqrant",
        "tooltip-n-portal": "f' usenfar, matzdart atitskrt, maniɣrattaft ɣayli trit",
        "tooltip-n-currentevents": "Tiɣri izrbn i kullu maɣid immusn",
-       "tooltip-n-recentchanges": "Umuɣ n imbddlen imaynuten ɣ l-wiki",
+       "tooltip-n-recentchanges": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵉⵙⵏⴼⵍⵏ ⴳⴳⵯⵔⴰⵏⵉⵏ ⴳ ⵓⵡⵉⴽⵉ",
        "tooltip-n-randompage": "Srbu yat tasna ɣik nna ka tga",
        "tooltip-n-help": "Adɣar n w-aws",
        "tooltip-t-whatlinkshere": "Umuɣ n kullu tisnatin n Wiki lid ilkkmn ɣid",
        "tooltip-t-recentchangeslinked": "Imbddln imaynutn n tisnatin li ittylkamn s tasna yad",
        "tooltip-feed-rss": "Usuddm (Flux) n tasna yad",
        "tooltip-feed-atom": "Usuddm Atum n tasna yad",
-       "tooltip-t-contributions": "Ẓr umuɣ n tiwuriwin n umsqdac ad",
+       "tooltip-t-contributions": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵜⵓⵎⵓⵜⵉⵏ ⵏ {{GENDER:$1|ⵓⵙⵎⵔⴰⵙ|ⵜⵙⵎⵔⴰⵙⵜ}} ⴰⴷ",
        "tooltip-t-emailuser": "Ṣafd tabrat umsqdac ad",
-       "tooltip-t-upload": "sɣlid ifaylutn",
-       "tooltip-t-specialpages": "Umuɣ n tisniwin timẓlayin",
+       "tooltip-t-upload": "ⵙⴽⵜⵔ ⵉⴼⴰⵢⵍⵓⵜⵏ",
+       "tooltip-t-specialpages": "ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵜⴰⵙⵏⵉⵡⵉⵏ ⵥⵍⵉⵏⵉⵏ ⴰⴽⴽⵯ",
        "tooltip-t-print": "Lqim uziggz n tasna yad",
        "tooltip-t-permalink": "Azday bdda i lqim n tasna yad",
        "tooltip-ca-nstab-main": "Ẓr mayllan ɣ tasna",
        "tooltip-ca-nstab-user": "Ẓr tasna n useqdac",
        "tooltip-ca-nstab-media": "Iẓri n tasna n midya",
-       "tooltip-ca-nstab-special": "Tasna yad tuyẓlay, uras tufit ast ẓregt(tbddelt) nttat nit",
+       "tooltip-ca-nstab-special": "ⵜⴰⴷ ⵜⴳⴰ ⵢⴰⵜ ⵜⴰⵙⵏⴰ ⵉⵥⵍⵉⵏ, ⴷ ⵓⵔ ⵉⵎⴽⵉⵏ ⴰⴷ ⵜⵜ ⵜⵙⵏⴼⵍⴷ",
        "tooltip-ca-nstab-project": "Żr tasna n twwuri",
        "tooltip-ca-nstab-image": "Źr tasna n usdaw",
        "tooltip-ca-nstab-mediawiki": "Żr tabrat nu-nagraw.",
        "tooltip-ca-nstab-template": "Żr tamudemt",
        "tooltip-ca-nstab-help": "Źr tasna nu-saws",
        "tooltip-ca-nstab-category": "Źr tasna nu-stay",
-       "tooltip-minoredit": "Kerj ażřigad mas ifssus",
+       "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-compareselectedversions": "Ẓr inaḥyatn gr sin lqimat li ttuystaynin ɣ tasna yad.",
-       "tooltip-watch": "Smdn tasna yad i tilli tsggat.",
+       "tooltip-watch": "ⵔⵏⵓ ⵜⴰⵙⵏⴰ ⴰⴷ ⵉ ⵜⵍⴳⴰⵎⵜ {{GENDER:|ⵏⵏⴽ|ⵏⵏⵎ}} ⵏ ⵓⴹⴼⴼⵓⵔ",
        "tooltip-recreate": "Als askr n tasna yad waxxa ttuwḥiyyad",
        "tooltip-upload": "Izwir siɣ tullt.",
        "tooltip-rollback": "\"Rard\" s yan klik ażrig (iżrign) s ɣiklli sttin kkan tiklit li igguran",
        "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-language": "ⵜⵓⵜⵍⴰⵢⵜ ⵏ ⵜⵓⵎⴰⵢⵜ ⵏ ⵜⴰⵙⵏⴰ",
        "pageinfo-language-change": "ⵙⵏⴼⵍ",
        "pageinfo-content-model-change": "ⵙⵏⴼⵍ",
        "pageinfo-firsttime": "ⴰⵙⴰⴽⵓⴷ ⵏ ⵓⵙⵏⵓⵍⴼⵓ ⵏ ⵜⴰⵙⵏⴰ",
+       "pageinfo-lastuser": "ⴰⵎⵙⵏⴼⵍ ⵉⴳⴳⵯⵔⴰⵏ",
+       "pageinfo-lasttime": "ⴰⵙⴰⴽⵓⴷ ⵏ ⵓⵙⵏⴼⵍ ⵉⴳⴳⵯⵔⴰⵏ",
        "pageinfo-hidden-categories": "{{PLURAL:$1|ⴰⵙⵎⵉⵍ ⵉⵏⵜⵍⵏ|ⵉⵙⵎⵉⵍⵏ ⵏⵜⵍⵏⵉⵏ}} ($1)",
        "pageinfo-contentpage-yes": "ⵢⴰⵀ",
        "pageinfo-protect-cascading-yes": "ⵢⴰⵀ",
        "exif-source": "ⴰⵙⴰⴳⵎ",
        "exif-languagecode": "ⵜⵓⵜⵍⴰⵢⵜ",
        "exif-iimcategory": "ⴰⵙⵎⵉⵍ",
+       "exif-orientation-1": "ⴰⵎⴰⴳⵏⵓ",
        "exif-exposureprogram-1": "ⴰⵡⴼⵓⵙ",
        "exif-subjectdistance-value": "$1 {{PLURAL:$1|ⵎⵉⵜⵔⵓ|ⵉⴷ ⵎⵉⵜⵔⵓ}}",
-       "exif-meteringmode-0": "orityawssan",
+       "exif-meteringmode-0": "ⴰⵔⵓⵙⵙⵉⵏ",
        "exif-meteringmode-1": "moyen",
        "exif-meteringmode-2": "moyen igiddi gh tozzomt",
        "exif-meteringmode-3": "tanqqit",
        "exif-lightsource-4": "ⴼⵍⴰⵛ",
        "exif-lightsource-9": "ljow ifolkin",
        "exif-lightsource-10": "tagot",
-       "exif-lightsource-11": "asklo",
+       "exif-lightsource-11": "ⴰⵎⴰⵍⵓ",
        "exif-sensingmethod-2": "amfay n lon n tozmi ghyat tosa",
        "exif-sensingmethod-3": "amfay n lon n tozmi ghsnat tosatin",
        "exif-gaincontrol-0": "ⵡⴰⵍⵓ",
        "exif-contrast-0": "normal",
        "exif-contrast-1": "irtb",
-       "exif-contrast-2": "iqor",
-       "exif-saturation-0": "normal",
+       "exif-contrast-2": "ⴰⵇⵓⵔⴰⵔ",
+       "exif-saturation-0": "ⴰⵎⴰⴳⵏⵓ",
        "exif-saturation-1": "imik ntmlli",
        "exif-saturation-2": "kigan ntmlli",
        "exif-sharpness-0": "normal",
        "exif-sharpness-1": "irtb",
        "exif-sharpness-2": "iqor",
-       "exif-subjectdistancerange-0": "orityawssan",
-       "exif-subjectdistancerange-1": "Macro",
+       "exif-subjectdistancerange-0": "ⴰⵔⵓⵙⵙⵉⵏ",
+       "exif-subjectdistancerange-1": "ⵎⴰⴽⵔⵓ",
        "exif-subjectdistancerange-2": "tannayt iqrbn",
        "exif-gpslatitude-n": "dairat lard chamaliya",
        "exif-gpsspeed-n": "Knots",
        "exif-iimcategory-edu": "ⴰⵙⴳⵎⵉ",
        "exif-iimcategory-hth": "ⵜⴰⴷⵓⵙⵉ",
        "exif-iimcategory-pol": "ⵜⴰⵙⵔⵜⵉⵜ",
-       "namespacesall": "kullu",
-       "monthsall": "kullu",
+       "namespacesall": "ⴰⴽⴽⵯ",
+       "monthsall": "ⴰⴽⴽⵯ",
        "recreate": "awd skr",
        "confirm_purge_button": "ⵡⴰⵅⵅⴰ",
        "confirm-watch-button": "ⵡⴰⵅⵅⴰ",
        "table_pager_empty": "ornofa amya",
        "watchlistedit-normal-submit": "hiyd lanawin",
        "watchlistedit-raw-titles": "Azwl",
+       "watchlisttools-clear": "ⵙⴼⴹ ⵜⴰⵍⴳⴰⵎⵜ ⵏ ⵓⴹⴼⴼⵓⵔ",
        "watchlisttools-view": "Umuɣ n imtfrn",
        "watchlisttools-edit": "Ẓr tẓṛgt umuɣ lli tuytfarn",
        "watchlisttools-raw": "Ẓṛig umuɣ n tisniwin",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|ⴰⵎⵙⴰⵡⴰⵍ]])",
        "duplicate-defaultsort": "Balak: tasarut n ustay « $2 » ar tbj tallit izwarn« $1 ».",
        "version": "ⵜⵓⵏⵖⵉⵍⵜ",
        "version-specialpages": "Tisnatin timzlay",
        "tags-active-no": "ⵓⵀⵓ",
        "tags-edit": "ⵙⵏⴼⵍ",
        "tags-delete": "ⴽⴽⵙ",
+       "tags-hitcount": "$1 {{PLURAL:$1|ⵓⵙⵏⴼⵍ|ⵉⵙⵏⴼⵍⵏ}}",
        "tags-create-submit": "ⵙⵏⵓⵍⴼⵓ",
        "comparepages": "ⵙⵎⵣⴰⵣⴰⵍ ⵜⴰⵙⵏⵉⵡⵉⵏ",
        "compare-page1": "ⵜⴰⵙⵏⴰ 1",
        "htmlform-yes": "ⵢⴰⵀ",
        "htmlform-cloner-create": "ⵔⵏⵓ ⵙⵓⵍ",
        "htmlform-time-placeholder": "HH:MM:SS",
+       "logentry-delete-delete": "{{GENDER:$2|ⵉⴽⴽⵙ|ⵜⴽⴽⵙ}} $1 ⵜⴰⵙⵏⴰ $3",
        "revdelete-content-hid": "ⵜⵓⵎⴰⵢⵜ ⵉⵏⵜⵍⵏ",
        "revdelete-restricted": "iskr aqn i indbaln",
        "revdelete-unrestricted": "Aqn iḥiyd i indbaln",
-       "rightsnone": "(ḥtta yan)",
+       "logentry-move-move": "{{GENDER:$2|ⵉⵙⵎⴰⵜⵜⵉ|ⵜⵙⵎⴰⵜⵜⵉ}} $1 ⵜⴰⵙⵏⴰ $3 ⵙ $4",
+       "logentry-upload-upload": "{{GENDER:$2|ⵉⵙⴽⵜⵔ|ⵜⵙⴽⵜⵔ}} $1  $3",
+       "logentry-upload-overwrite": "{{GENDER:$2|ⵉⵙⴽⵜⵔ|ⵜⵙⴽⵜⵔ}} $1 ⵢⴰⵜ ⵜⵓⵏⵖⵉⵍⵜ ⵜⴰⵎⴰⵢⵏⵓⵜ ⵏ $3",
+       "rightsnone": "(ⵓⵍⴰ ⵢⴰⵏ)",
        "feedback-message": "ⵜⵓⵣⵉⵏⵜ:",
        "feedback-subject": "ⴰⵙⵏⵜⵍ:",
        "feedback-thanks-title": "ⵜⴰⵏⵎⵎⵉⵔⵜ!",
index 1454000..2730a1b 100644 (file)
        "rcfilters-filter-excluded": "Exkluderad",
        "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
        "rcfilters-view-tags": "Märkta redigeringar",
+       "rcfilters-view-namespaces-tooltip": "Filtrera resultat efter namnrymder",
+       "rcfilters-view-tags-tooltip": "Filtrera resultat med redigeringsmärken",
+       "rcfilters-view-return-to-default-tooltip": "Återvänd till huvudfiltreringsmenyn",
        "rcnotefrom": "Nedan visas {{PLURAL:$5|ändringen|ändringar}} sedan <strong>$3, $4</strong> (upp till <strong>$1</strong> ändringar visas).",
        "rclistfromreset": "Återställ datumval",
        "rclistfrom": "Visa nya ändringar från och med $2 $3",
index 30eebe6..f617ce6 100644 (file)
                        "Kiranpoojary"
                ]
        },
-       "tog-underline": "ಲಿà²\82à²\95à³\8dâ\80\8dಲà³\86ದ à²¤à²¿à²°à³\8dತà³\8d à²\97à³\86ರà³\86(à²\85à²\82ಡರà³\8d à²²à³\88ನà³\8d) à²ªà²¾à²¡à³\8dâ\80\8dಲà³\86",
-       "tog-hideminor": "à²\8eಲà³\8dಯà³\86ಲà³\8dಯ à²¬à²¦à²²à²¾à²µà²¨ೆಲೆನ್ ದೆಂಗಾಲೆ",
-       "tog-hidepatrolled": "à²\95ಾತà³\8aà²\82ದಿಪà³\8dಪà³\81ನ à²¸à²\82ಪದನà³\86ಲà³\86ನà³\8d à²\87à²\82à²\9aಿಪà³\8aದ à²¬à²¦à²²à²¾à²µà²¨à³\86ಡà³\8d à²¦à³\86à²\82à²\97ಾಲ",
-       "tog-newpageshidepatrolled": "à²\95ಾತà³\8aà²\82ದಿಪà³\8dಪà³\81ನ à²ªà³\81à²\9fà³\8aಲà³\86ನà³\8d à²ªà³\8aಸ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\86 à²ªà²\9fà³\8dà²\9fಿಡà³\8d à²¦à³\86à²\82à²\97ಾಲ",
-       "tog-hidecategorization": "ವಿà²\82à²\97ಡಿತà³\8dâ\80\8dನ à²ªà³\81à²\9fà³\8aಲà³\86ನà³\8d à²¦à³\86à²\82à²\97ಾಲ",
-       "tog-extendwatchlist": "à²\95à³\87ವಲà³\8a à²\87à²\82à²\9aಿಪà³\8aದ à²¬à²¦à²²à²¾à²µà²¨à³\86ಲತà³\8dತà²\82ದà³\86, à²¸à²\82ಬà²\82ದà³\8a à²\87ಪà³\8dಪà³\81ನ à²®à²¾à²¤ à²¬à²¦à²²à²¾à²µà²¨à³\86ನà³\8dಲಾ à²¤à³\8bà²\9cà³\81ನà²\82à²\9aನà³\86 à²ªà²\9fà³\8dà²\9fಿನà³\8d à²µà²¿à²¸à³\8dತರಿಸಲೆ",
-       "tog-usenewrc": "à²\87à²\82à²\9aಿಪà³\8aದ à²¬à²¦à²²à²¾à²µà²¨à³\86 à²¬à³\8aà²\95à³\8dà²\95à³\8a à²µà³\80à²\95à³\8dಷಣಾಪà²\9fà³\8dà²\9fಿಡà³\8d à²\97à³\81à²\82ಪà³\81 à²ªà³\81à²\9fà³\8a à²¬à²¦à²²à²¾à²µà²¨à³\86",
-       "tog-numberheadings": "ತರà³\86ಬರವà³\81ಲà³\86à²\97à³\8d à²\85à²\82à²\95ೆಲೆನ್ ತೋಜಾವು",
+       "tog-underline": "à²\95à³\8aà²\82ಡಿಲà³\86à²\97à³\8d à²\85ಡಿà²\97à³\80à²\9fà³\8d à²ªà²¾à²¡à³\81ನà³\81:",
+       "tog-hideminor": "à²\87à²\82à²\9aಿಪà³\8aದ à²¬à²¦à²²à²¾à²µà²£à³\86ಲà³\86ಡà³\8d à²\95ಿà²\9eà³\8dà²\9e à²¬à²¦à²²à²¾à²µà²£ೆಲೆನ್ ದೆಂಗಾಲೆ",
+       "tog-hidepatrolled": "à²\87à²\82à²\9aಿಪà³\8aದ à²¬à²¦à²²à²¾à²µà²£à³\86ಲà³\86ಡà³\8d à²ªà²°à³\80à²\95à³\8dಷಣà³\86 à²®à²²à³\8dತಿ à²¬à²¦à²²à²¾à²µà²£à³\86ನà³\8d à²¦à³\86à²\82à²\97ಾಲà³\86",
+       "tog-newpageshidepatrolled": "ಪà³\8aಸ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\86 à²ªà²\9fà³\8dà²\9fಿಡà³\8d à²ªà²°à³\80à²\95à³\8dಷಣà³\86 à²®à²²à³\8dತಿ à²ªà³\81à²\9fà³\8aà²\95à³\8dಲà³\86ನà³\8d à²¦à³\86à²\82à²\97ಾಲà³\86.",
+       "tog-hidecategorization": "ಪà³\81à²\9fà³\8aà²\95à³\8dಲà³\86ನ à²µà²°à³\8dà²\97à³\80à²\95ರಣà³\8aನà³\81 à²¦à³\86à²\82à²\97ಾಲà³\86",
+       "tog-extendwatchlist": "à²\95à³\87ವಲà³\8a à²\87à²\82à²\9aಿಪà³\8aದ à²¬à²¦à²²à²¾à²µà²¨à³\86ಲತà³\8dತà²\82ದà³\86, à²¸à²\82ಬà²\82ದà³\8a à²\87ಪà³\8dಪà³\81ನ à²®à²¾à²¤ à²¬à²¦à²²à²¾à²µà²¨à³\86ನà³\8dಲಾ à²¤à³\8bà²\9cà³\81ಲà³\86à²\95 à²ªà²\9fà³\8dà²\9fಿನà³\8d à²µà²¿à²¸à³\8dತರಿಪà³\81ಲೆ",
+       "tog-usenewrc": "à²\87à²\82à²\9aಿಪà³\8aದ à²¬à²¦à²²à²¾à²µà²£à³\86 à²¬à³\8aà²\95à³\8dà²\95à³\8a à²µà³\80à²\95à³\8dಷಣಾಪà²\9fà³\8dà²\9fಿಡà³\8d à²ªà³\81à²\9fà³\8aತ à²\85ನà³\81ಸಾರ à²\97à³\81à²\82ಪà³\81 à²¬à²¦à²²à²¾à²µà²£à³\86ಲà³\81",
+       "tog-numberheadings": "ತರà³\86ಬರವà³\81ಲà³\86à²\97à³\8d à²\95à³\8dರಮಸà²\82à²\96à³\8dಯೆಲೆನ್ ತೋಜಾವು",
        "tog-showtoolbar": "ಸಂಪಾದನೆದ ಉಪಕರನೊ ಪಟ್ಟಿನ್ ತೋಜಾವು",
        "tog-editondblclick": "ರಡ್ಡ್ ಸರ್ತಿ ಒತ್ತ್‌ನಗ ಪುಟೊನು ಸಂಪೊಲಿಪುನಂಚ ಆವಡ್",
        "tog-editsectiononrightclick": "ಪುಟೊತ ವಿಬಾಗೊಲೆನ್ ಐತ ಸೀರ್ಸಿಕೆನ್ ರಡ್ಡ್ ಸರ್ತಿ ಒತ್ತ್‌ನಗ ಸಂಪೊಲಿಪುನಂಚ ಉಪ್ಪಡ್",
-       "tog-watchcreations": "ಯಾನà³\8d à²¸à³\81ರà³\81 à²®à²²à³\8dತಿನ à²²à³\87à²\95ನೊಲೆನ್ ಎನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೇರ್ಪಾಲೆ",
-       "tog-watchdefault": "ಯಾನ್ ಸಂಪೊಲಿಪುನ ಪುಟೊಲೆನ್ ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೇರ್ಪಾಲೆ",
-       "tog-watchmoves": "ಯಾನà³\8d à²¸à³\8dತಲಾà²\82ತರಿಸಪà³\81ನ à²ªà³\81à²\9fೊಲೆನ್ ಎನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೇರ್ಪಾಲೆ",
-       "tog-watchdeletion": "ಯಾನà³\8d à²¦à³\86ತà³\8dತà³\8dâ\80\8c à²ªà²¾à²¡à³\81ನ à²ªà³\81à²\9fೊಲೆನ್ ಎನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೇರ್ಪಾಲೆ",
-       "tog-watchuploads": "à²\8eನà³\8dನ à²\85ಪà³\8dಲà³\8bಡà³\8d à²ªà²\9fà³\8dà²\9fಿà²\97à³\8d à²ªà³\8aಸ à²\95ಡತà³\8aಲà³\86ನà³\8d à²¸à³\87ರಲ",
-       "tog-watchrollback": "ಯಾನ್ ಪಿರ ದೆತೊನುನ ಪುಟೊಲೆನ್ ಎನ್ನ ಗುಮನೊಗು ಸೇರಲೆ",
-       "tog-minordefault": "ಪà³\82ರಾ ಸಂಪಾದನೆನ್ಲಾ ಎಲ್ಯ ಪಂಡ್‍ದ್ ಗುರ್ತ ಮಲ್ಪುಲೆ",
+       "tog-watchcreations": "ಯಾನà³\8d à²\89à²\82ಡà³\81ಮಲà³\8dತಿನ à²ªà³\81à²\9fà³\8aà²\95à³\8dಲà³\86ನà³\8d à²¬à³\8aà²\95à³\8dà²\95 à²\85ಪà³\8dಲà³\8bಡà³\8d à²®à²²à³\8dತಿ à²\95ಡತೊಲೆನ್ ಎನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೇರ್ಪಾಲೆ",
+       "tog-watchdefault": "ಯಾನà³\8d à²¸à²\82ಪà³\8aಲಿಪà³\81ನ à²ªà³\81à²\9fà³\8aà²\95à³\8dಲà³\86ನà³\8d à²¬à³\8aà²\95à³\8dà²\95 à²\95ಡತà³\8aಲà³\86ನà³\8d à²µà³\80à²\95à³\8dಷಣಾಪà²\9fà³\8dà²\9fಿà²\97à³\8d à²¸à³\87ರà³\8dಪಾಲà³\86",
+       "tog-watchmoves": "ಯಾನà³\8d à²¸à³\8dತಲಾà²\82ತರಿಪà³\81ನ à²ªà³\81à²\9fà³\8aà²\95à³\8dಲà³\86ನà³\8d à²¬à³\8aà²\95à³\8dà²\95 à²\95ಡತೊಲೆನ್ ಎನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೇರ್ಪಾಲೆ",
+       "tog-watchdeletion": "ಯಾನà³\8d à²®à²¾à²\9cಾಯಿನ à²ªà³\81à²\9fà³\8aà²\95à³\8dಲà³\86ನà³\8d à²¬à³\8aà²\95à³\8dà²\95 à²\95ಡತೊಲೆನ್ ಎನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೇರ್ಪಾಲೆ",
+       "tog-watchuploads": "ಯಾನà³\8d à²\85ಪà³\8dಲà³\8bಡà³\8d à²®à²²à³\8dತಿನ à²ªà³\8aಸ à²\95ಡತà³\8aಲà³\86ನà³\8d à²\8eನà³\8dನ à²µà³\80à²\95à³\8dಷಣಾಪà²\9fà³\8dà²\9fಿà²\97à³\8d à²¸à³\87ರà³\8dಪಾಲà³\86",
+       "tog-watchrollback": "ಯಾನ್ ಪಿರದೆತೊನುನ ಪುಟೊಕ್ಲೆನ್ ಎನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೇರ್ಪಾಲೆ",
+       "tog-minordefault": "ಮà³\82ಲಸà³\8dಥಿತಿà²\9fà³\8d à²®à²¾à²¤ಾ ಸಂಪಾದನೆನ್ಲಾ ಎಲ್ಯ ಪಂಡ್‍ದ್ ಗುರ್ತ ಮಲ್ಪುಲೆ",
        "tog-previewontop": "ಮುನ್ನೋಟನ್ ಸಂಪಾದನೆ ಅಂಕನೊದ ಮಿತ್ತ್ ತೊಜ್ಪಾಲೆ",
-       "tog-previewonfirst": "ಸುತ ಬದಲಾವನೆದ ಬೊಕ್ಕ ಮನ್ನೋಟನ್ ತೊಜ್ಪಾಲೆ",
-       "tog-enotifwatchlistpages": "ಎನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಡ್ ಉಪ್ಪುನಂಚಿನ ಒವಾಂಡಲ ಪುಟೊ ಬದಲಾನಗ ಎಂಕ್ ಇ-ಅಂಚೆ ಕಡಪುಡ್ಲೆ",
+       "tog-previewonfirst": "ಸà³\81ರà³\81ತ à²¬à²¦à²²à²¾à²µà²¨à³\86ದ à²¬à³\8aà²\95à³\8dà²\95 à²®à²¨à³\8dನà³\8bà²\9fನà³\8d à²¤à³\8aà²\9cà³\8dಪಾಲà³\86",
+       "tog-enotifwatchlistpages": "à²\8eನà³\8dನ à²µà³\80à²\95à³\8dಷಣಾಪà²\9fà³\8dà²\9fಿಡà³\8d à²\89ಪà³\8dಪà³\81ನà²\82à²\9aಿನ à²\92ವà³\8dವಾà²\82ಡಲ à²ªà³\81à²\9fà³\8a à²¬à²¦à²²à²¾à²¨à²\97 à²\8eà²\82à²\95à³\8d à²\87-à²\85à²\82à²\9aà³\86 à²\95ಡಪà³\81ಡà³\8dಲà³\86",
        "tog-enotifusertalkpages": "ಎನ್ನ ಚರ್ಚೆ ಪುಟ ಬದಲಾಂಡ ಎಂಕ್ ಇ-ಮೇಲ್ ಕಡಪುಡ್ಲೆ",
        "tog-enotifminoredits": "ಎಲ್ಯೆಲ್ಯ ಬದಲಾವನೆ ಆಂಡಲ ಎಂಕ್ ಇ-ಅಂಚೆ ಕಡಪುಡ್ಲೆ",
        "tog-enotifrevealaddr": "ಪ್ರಕಟಣೆ ಇ-ಮೇಲ್‍ಡ್ ಎನ್ನ ಇ-ಮೇಲ್ ವಿಳಾಸನ್ ತೊಜ್ಪಾಲೆ",
        "tog-oldsig": "ಇತ್ತೆ ಉಪ್ಪುನ ದಸ್ಕತ್ತ್",
        "tog-fancysig": "ದಸ್ಕತ್ತ್‌ನ್ ವಿಕಿಟೆಕ್ಷ್ಟ್ ಆದ್ ದೆತ್ತೊನು (ಸ್ವಯಂ ಕೊಂಡಿ ದಾಂತೆ)",
        "tog-uselivepreview": "ನೇರೊ ಮುನ್ನೋಟೊನು ಉಪಯೋಗ ಮಲ್ಪುಲೆ",
-       "tog-forceeditsummary": "ಸà²\82ಪಾದನà³\86 à²¸à²¾à²°à²¾à²\82ಸà³\8aನà³\81 à²\95ಾಲಿ à²¬à³\81ಡà³\8dâ\80\8dà²\82ದà³\8d ಎಂಕ್ ನೆನಪು ಮಲ್ಪುಲೆ",
-       "tog-watchlisthideown": "ವà³\80à²\95à³\8dಷಣಾಪà²\9fà³\8dà²\9fಿಡà³\8d à²\8eನà³\8dನ à²¸à²\82ಪಾದನà³\86ಲà³\86ನà³\8d à²¤à³\8aà²\9cà³\8dâ\80\8dಪಾವà³\8aಡà³\8dà²\9aಿ",
+       "tog-forceeditsummary": "ಸà²\82ಪಾದನà³\86 à²¸à²¾à²°à²¾à²\82ಸà³\8aನà³\81 à²\95ಾಲಿ à²¬à³\81ಡà³\8dâ\80\8dà²\82ಡ ಎಂಕ್ ನೆನಪು ಮಲ್ಪುಲೆ",
+       "tog-watchlisthideown": "ವà³\80à²\95à³\8dಷಣಾಪà²\9fà³\8dà²\9fಿಡà³\8d à²\8eನà³\8dನ à²¸à²\82ಪಾದನà³\86ಲà³\86ನà³\8d à²¦à³\86à²\82à²\97ಾಲà³\86",
        "tog-watchlisthidebots": "ವೀಕ್ಷಣಾಪಟ್ಟಿಡ್ ಬಾಟ್ ಸಂಪಾದನೆಲೆನ್ ದೆಂಗಾಲೆ",
        "tog-watchlisthideminor": "ಎಲ್ಯ ಬದಲಾವಣೆಲೆನ್ ವೀಕ್ಷಣಾಪಟ್ಟಿರ್ದ್ ದೆಂಗಾಲೆ",
        "tog-watchlisthideliu": "ಲಾಗಿನ್ ಆತಿನಂಚಿನ ಸದಸ್ಯೆರ್‍ನ ಸಂಪಾದನೆಲೆನ್ ವೀಕ್ಷಣಾಪಟ್ಟಿರ್ದ್ ದೆಂಗಾಲೆ",
-       "tog-watchlisthideanons": "ಪುದರಿಜ್ಜಂದಿನ ಬಳಕೆದಾರನ ಸಂಪಾದನೆಲೆನ್ ವೀಕ್ಷಣಾಪಟ್ಟಿರ್ದ್ ದೆಂಗಾಲೆ",
-       "tog-watchlisthidepatrolled": "ವೀಕ್ಷಣಾಪಟ್ಟಿಡ್ ಬಾಟ್ ಸಂಪಾದನೆಲೆನ್ ದೆಂಗಾಲೆ",
-       "tog-watchlisthidecategorization": "ವಿಂಗಡಿತ್‍ನ ಪುಟೊಲೆನ್ ಅಡೆಂಗಲ",
-       "tog-ccmeonemails": "ಯಾನ್ ಬೇತೆ ಸದಸ್ಯೆರೆಗ್ ಕಡಪುಡ್ಪುನಂಚಿನ ಇ-ಮೇಲ್’ಲೆದ ಪ್ರತಿಲೆನ್(copy) ಎಂಕ್ ಕಡಪುಡ್ಲೆ",
-       "tog-diffonly": "ವ್ಯತ್ಯಾಸದ ತಿರ್ತುಪ್ಪುನಂಚಿನ ಪುಟೊತ ವಿವರೊಲೆನ್ ತೊಜ್’ಪಾವೊಚಿ",
+       "tog-watchlistreloadautomatically": "ಅರಿಪೆ ಬದಲಾನಗ ವೀಕ್ಷಣಾಪಟ್ಟಿ ಕುಡೊರ ಲೋಡ್ ಆವಡ್ (ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಉಪ್ಪೊಡು)",
+       "tog-watchlisthideanons": "ಪುದರಿದಾಂತಿ ಗಲಸುನಾರೆನ ಸಂಪಾದನೆಲೆನ್ ವೀಕ್ಷಣಾಪಟ್ಟಿಡ್ದ್ ದೆಂಗಾಲೆ",
+       "tog-watchlisthidepatrolled": "ಪರೀಕ್ಷಣೆ ಮಲ್ತಿನ ಸಂಪಾದನೆಲೆನ್ ವೀಕ್ಷಣಾಪಟ್ಟಿಡ್ದ್ ದೆಂಗಾಲೆ",
+       "tog-watchlisthidecategorization": "ಪುಟೊಕ್ಲೆನ ವರ್ಗೀಕರಣೊನು ದೆಂಗಾಲೆ",
+       "tog-ccmeonemails": "ಯಾನ್ ಬೇತೆ ಸದಸ್ಯೆರೆಗ್ ಕಡಪುಡ್ಪುನಂಚಿನ ಇ-ಮೇಲ್’ಲೆನ ಪ್ರತಿಲೆನ್ (copy) ಎಂಕ್ ಕಡಪುಡ್ಲೆ",
+       "tog-diffonly": "ವ್ಯತ್ಯಾಸದ ತಿರ್ತುಪ್ಪುನಂಚಿನ ಪುಟೊತ ವಿವರೊಲೆನ್ ತೋಜಾವೊಡ್ಚಿ",
        "tog-showhiddencats": "ದೆಂಗಾದಿನ ವರ್ಗೊಲೆನ್ ತೊಜ್ಪಾಲೆ",
-       "tog-norollbackdiff": "ದà³\86ತà³\8dತà³\8dâ\80\8c à²ªà²¾à²¡à³\8dâ\80\8dನà³\86ಡà³\8dâ\80\8dದà³\8d à²¬à³\81à²\95à³\8dà²\95à³\8a à²µà³\8dಯತà³\8dಯಾಸà³\8aನà³\81 à²¬à³\81ಡà³\8dâ\80\8dಲà³\86",
+       "tog-norollbackdiff": "ಪಿರದà³\86ತà³\8dತಿ à²¬à³\81à²\95à³\8dà²\95à³\8a à²µà³\8dಯತà³\8dಯಾಸà³\8aನà³\81 à²¤à³\8bà²\9cಾವà³\8aಡà³\8dà²\9aಿ",
        "tog-useeditwarning": "ಸಂಪೊಲಿತ್‍ನೆನ್ ಒರಿಪಾವಂದೆ ಪಿದಡ್ಂಡ ಎನನ್ ಎಚ್ಚರಿಪುಲೆ",
-       "tog-prefershttps": "ಏಪೊಗುಲ ಲಾಗಿನ್ ಆಯಿನ ಬುಕ್ಕೊ ಜಾಗ್ರತೆದ ಸಂಪರ್ಕೊನು  ಬಳಕೆ ಮಲ್ಪುಲೆ",
+       "tog-prefershttps": "ಏಪೊಗುಲ ಲಾಗಿನ್ ಆಯಿನ ಬುಕ್ಕೊ ಜಾಗ್ರತೆದ ಸಂಪರ್ಕೊನು ಗಲಸ್‌ಲೆ",
        "underline-always": "ಯಾಪಲ",
        "underline-never": "ಯಾಪಗ್ಲಾ ಇಜ್ಜಿ",
        "underline-default": "ಬ್ರೌಸರ್‍ದ ಯತಾಸ್ತಿತಿ",
-       "editfont-style": "ಬರೆಪುನ ಜಾಗದ ಅಕ್ಷರದ ಶೈಲಿ",
+       "editfont-style": "ಬರೆಪುನ ಜಾಗದ ಅಕ್ಷರದ ಶೈಲಿ:",
        "editfont-default": "ಬ್ರೌಸರ್’ದ ಯಥಾಸ್ಥಿತಿ",
        "editfont-monospace": "ಒಂಜಿ ಜಾಗೆದ ಮುದ್ರೆಲಿಪಿ",
        "editfont-sansserif": "ಸಾನ್ಸ್-ಸೆರಿಫ್ ಲಿಪಿ",
        "june-date": "ಜೂನ್ $1",
        "july-date": "ಜುಲಾಯಿ $1",
        "august-date": "ಆಗೋಸ್ಟ್ $1",
-       "september-date": "ಸಪà³\8dà²\9fà²\82ಬರà³\8a $1",
-       "october-date": "ಅಕ್ಟೋಬರ $1",
-       "november-date": "ನವಂಬರ $1",
-       "december-date": "ದಸಂಬರ $1",
+       "september-date": "ಸಪà³\8dà²\9fà²\82ಬರà³\8d $1",
+       "october-date": "ಅಕ್ಟೋಬರ $1",
+       "november-date": "ನವಂಬರ $1",
+       "december-date": "ದಸಂಬರ $1",
        "period-am": "ಕಾಂಡೆ",
        "period-pm": "ಬೈಯ್ಯ",
-       "pagecategories": "{{PLURAL:$1|Category|ವರ್ಗೊಲು}}",
+       "pagecategories": "{{PLURAL:$1|ವರ್ಗೊ|ವರ್ಗೊಲು}}",
        "category_header": "\"$1\" ವರ್ಗಡುಪ್ಪುನಂಚಿನ ಲೇಕನೊಲು",
-       "subcategories": "ಉಪ ವರ್ಗೊಲು",
+       "subcategories": "ಉಪವರ್ಗೊಲು",
        "category-media-header": "\"$1\" ವರ್ಗಡುಪ್ಪುನಂಚಿನ ಚಿತ್ರೊ/ಶಬ್ಧೊ ಫೈಲ್‍ಲು",
        "category-empty": "''ಈ ವರ್ಗೊಡು ಸದ್ಯಗ್ ಓವುಲ ಪುಟೊಕುಲಾವಡ್ ಅತ್ತಂಡ ಚಿತ್ರೊಲಾವಡ್ ಇಜ್ಜಿ.''",
-       "hidden-categories": "{{PLURAL:$1|Hidden category|ದೆಂಗಾದ್ ದೀತಿನ ವರ್ಗೊಲು}}",
+       "hidden-categories": "{{PLURAL:$1|ದೆಂಗಾದ್ ದೀತಿನ ವರ್ಗೊ|ದೆಂಗಾದ್ ದೀತಿನ ವರ್ಗೊಲು}}",
        "hidden-category-category": "ದೆಂಗಾದ್ ದೀತಿನ ವರ್ಗೊಲು",
        "category-subcat-count": "{{PLURAL:$2|ಈ ವರ್ಗೊಡು ತಿರ್ತ್ ಕೊರ್ತಿನ ಒಂಜಿ ಉಪವರ್ಗೊ ಮಾತ್ರ ಉಂಡು.|ಈ ವರ್ಗೊಡು ತಿರ್ತ್ ಕೊರ್ತಿನ {{PLURAL:$1|ಉಪವರ್ಗೊ|$1 ಉಪವರ್ಗೊಲೆನ್}} ಸೇರಾದ್, ಒಟ್ಟುಗು $2 ಉಪವರ್ಗೊಲು ಉಂಡು.}}",
        "category-subcat-count-limited": "ಈ ವರ್ಗೊಡು ತಿರ್ತ್ ತೊಜ್ಪಾದಿನ {{PLURAL:$1|ಉಪವರ್ಗ|$1 ಉಪವರ್ಗೊಲು}} ಉಂಡು.",
        "category-article-count": "{{PLURAL:$2|ಈ ವರ್ಗೊಡು ತಿರ್ತ್ ಉಪ್ಪುನ ಒಂಜಿ ಪುಟೊ ಮಾತ್ರ ಉಂಡು|ಒಟ್ಟು $2 ಪುಟೊಕುಲೆಡ್ ತಿರ್ತ್ ಉಪ್ಪುನ {{PLURAL:$1|ಪುಟೊ|$1 ಪುಟೊಕುಲು}} ಈ ವರ್ಗೊಡು ಉಂಡು.}}",
-       "category-article-count-limited": "ಪà³\8dರಸà²\95à³\8dತ à²µà²°à³\8dà²\97à³\8aಡà³\81 à²\88 à²¤à²¿à²°à³\8dತà³\8dâ\80\99ದ {{PLURAL:$1|ಪà³\81à²\9f à²\89à²\82ಡà³\81|$1 à²ªà³\81à²\9fà³\8aಲà³\81 à²\89à²\82ಡà³\81}}.",
-       "category-file-count": "{{PLURAL:$2|à²\88 à²µà²°à³\8dà²\97à³\8aಡà³\81 à²\88 à²¤à²¿à²°à³\8dತà³\8dâ\80\8dದ à²\95ಾಲಿ à²\92à²\82à²\9cಿ à²«à³\88ಲà³\8d à²\89à²\82ಡà³\81.|à²\88 à²µà²°à³\8dà²\97à³\8aಡà³\81 à²\88 à²¤à²¿à²°à³\8dತà³\8dâ\80\8dದ {{PLURAL:$1| à²«à³\88ಲà³\8dâ\80\8dನà³\8d|$1  à²«à³\88ಲà³\8dâ\80\8dನà³\8d}} à²¸à³\87ರà³\8dಪಾದà³\8d, à²\92à²\9fà³\8dà²\9fಿà²\97à³\86 $2 ಉಂಡು.}}",
-       "category-file-count-limited": "ಪà³\8dರಸà²\95à³\8dತ à²µà²°à³\8dà²\97à³\8aಡà³\81 à²\88 à²¤à²¿à²°à³\8dತà³\8dâ\80\99ದ {{PLURAL:$1|ಫà³\88ಲà³\8d à²\89à²\82ಡà³\81|$1 à²«à³\88ಲà³\8dâ\80\99ಲà³\81 à²\89à²\82ಡà³\81}}.",
+       "category-article-count-limited": "ತಿರà³\8dತà³\8d à²\95à³\8aರà³\8dತಿನ {{PLURAL:$1|ಪà³\81à²\9f|$1 à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\81}} à²\88 à²µà²°à³\8dà²\97à³\8aಡà³\81 à²\89à²\82ಡà³\81.",
+       "category-file-count": "{{PLURAL:$2|ತಿರà³\8dತà³\8d à²\95à³\8aರà³\8dತಿನ à²\92à²\82à²\9cಿ à²«à³\88ಲà³\8d à²®à²¾à²¤à³\8dರ à²\88 à²µà²°à³\8dà²\97à³\8aಡà³\81 à²\89à²\82ಡà³\81.|à²\92à²\9fà³\8dà²\9fà³\81 $2 à²«à³\88ಲà³\8dâ\80\8cಲà³\86ಡà³\8d, à²¤à²¿à²°à³\8dತà³\8d à²\95à³\8aರà³\8dತಿನ {{PLURAL:$1|ಫà³\88ಲà³\8dâ\80\8d|$1 à²«à³\88ಲà³\8dâ\80\8dಲà³\81}} à²\88 à²µà²°à³\8dà²\97à³\8aಡà³\81 ಉಂಡು.}}",
+       "category-file-count-limited": "ತಿರà³\8dತà³\8d à²\95à³\8aರà³\8dತಿನ {{PLURAL:$1|ಫà³\88ಲà³\8d|$1 à²«à³\88ಲà³\8dâ\80\8cಲà³\81}} à²\88 à²µà²°à³\8dà²\97à³\8aಡà³\81 à²\89à²\82ಡà³\81.",
        "listingcontinuesabbrev": "ದುಂಬು.",
-       "index-category": "ವಿಷಯ à²¸à³\82à²\9aಿ à²ªà³\81à²\9fà²\95à³\8dâ\80\98ಲು",
-       "noindex-category": "ವಿಷಯಸà³\82à²\9aಿ à²\87ಜ್ಜಾಂದಿನ ಪುಟೊಕುಲು",
+       "index-category": "ಸà³\82à²\9aಿà²\95à³\8dರಮà³\8aà²\9fಿತà³\8dತಿ à²ªà³\81à²\9fà²\95à³\81ಲು",
+       "noindex-category": "ಸà³\82à²\9aಿà²\95à³\8dರಮà³\8aà²\9fಿಜ್ಜಾಂದಿನ ಪುಟೊಕುಲು",
        "broken-file-category": "ಕಡಿದಿನ ಕಡತದ ಕೊಂಡಿಲು ಉಪ್ಪುನ ಪುಟೊಕುಲು",
        "about": "ಎಂಕ್ಲೆನ ಬಗ್ಗೆ",
        "article": "ಲೇಖನ ಪುಟ",
-       "newwindow": "(ಪà³\8aಸ à²\95à²\82ಡಿನà³\8d à²¦à³\86ಪà³\8dಪà³\81ಲà³\86)",
+       "newwindow": "(ಪà³\8aಸ à²\95à²\82ಡಿನà³\8d à²¦à³\86ಪà³\8dಪà³\81à²\82ಡà³\81)",
        "cancel": "ವಜಾ ಮಲ್ಪುಲೆ",
        "moredotdotdot": "ನನಲ...",
        "morenotlisted": "ಈ ಪಟ್ಟಿ ಪೂರ್ತಿ ಆತ್‍ಜಿ.",
        "navigation": "ಸಂಚಾರೊ",
        "and": "&#32;ಬೊಕ್ಕ",
        "faq": "ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು",
-       "actions": "à²\95à³\8dರಿಯà³\86à²\95à³\8dà²\95à³\81ಲà³\81",
-       "namespaces": "ಪುದರ್‍ದ ವರ್ಗೊಲು",
-       "variants": "ದಿà²\82à²\9c",
+       "actions": "ಕ್ರಿಯೆಲು",
+       "namespaces": "ಪುದರ್-ಜಾಗೆಲು",
+       "variants": "ವಿವಿಧ à²°à³\82ಪà³\8aಲà³\81",
        "navigation-heading": "ಸಂಚಾರೊದ ಮೆನು",
        "errorpagetitle": "ದೋಷ",
        "returnto": "$1ಗ್ ಪಿರಪೋಲೆ.",
        "tagline": "{{SITENAME}}ರ್ದ್",
        "help": "ಸಹಾಯೊ",
        "search": "ನಾಡ್‍ಲೆ",
+       "search-ignored-headings": "#<!--ಈ ಲೈನ್‌ನ್ ಎಂಚ ಉಂಡು ಅಂಚೆನೆ ಬುಡ್ಲೆ--> <pre>\n# ನಾಡ್‌ನಗ ಅಲಕ್ಷ್ಯ ಮಲ್ಪೊಡಾಯಿನ ತರೆಬರವುಲು.\n# ತರೆಬರವು ಇತ್ತಿ ಪುಟೊ ಇಂಡೆಕ್ಸ್ ಆನಗನೇ, ನೆಕ್ಕ್ ಆಪಿನ ಬದಲಾವಣೆಲು ತೋಜುಂಡು.\n# ಈರ್ ಶೂನ್ಯ ಸಂಪಾದನೆ ಮಲ್ತ್‌ದ್ ಒಂಜಿ ಪುಟೊನು ಕುಡ ಇಂಡೆಕ್ಸ್ ಆಪಿಲೆಕೊ ಮಲ್ಪೊಲಿ. \n# ವಾಕ್ಯರಚಣೆ ಇಂಚ ಉಂಡು:\n#   * \"#\" ಅಕ್ಷರೊಡ್ದು ಲೈನ್‌ದ ಕಡೆ ಮುಟ್ಟ ಉಪ್ಪುನ ಮಾತಾ ಟಿಪ್ಪಣಿ.\n#   * ಖಾಲಿ ಅತ್ತಾಂದಿನ ಒಂಜೊಂಜಿ ಲೈನ್‌ಲಾ ಅಕ್ಷರ ನಮೂನೆ ಬೊಕ್ಕ ಮಾತೆನ್ಲಾ ಅಲಕ್ಷ್ಯ ಮಲ್ಪುನ ತರೆಬರವು.\nಉಲ್ಲೇಕೊ\nಪಿದಯಿದ ಕೊಂಡಿಲು\nಉಂದೆನ್ಲಾ ತೂಲೆ\n #</pre> <!--ಈ ಲೈನ್‌ನ್ ಎಂಚ ಉಂಡು ಅಂಚೆನೆ ಬುಡ್ಲೆ-->",
        "searchbutton": "ನಾಡ್‍ಲೆ",
        "go": "ಪೋ",
        "searcharticle": "ಪೋಲೆ",
        "history": "ಪುಟೊತ ಚರಿತ್ರೆ",
        "history_short": "ಇತಿಹಾಸೊ",
        "history_small": "ಇತಿಹಾಸೊ",
-       "updatedmarker": "à²\8eನà³\8dನ à²\85à²\95à³\87ರಿದ à²µà³\80à²\95à³\8dಷಣà³\86 à²¡à³\8dದà³\8d à²¬à³\81ಕ್ಕ ಆಯಿನ ಬದಲಾವಣೆಲು",
+       "updatedmarker": "ಯಾನà³\8d à²\85à²\95à³\87ರಿà²\97à³\8d à²¤à³\82ಯಿಬà³\8aಕ್ಕ ಆಯಿನ ಬದಲಾವಣೆಲು",
        "printableversion": "ಪ್ರಿಂಟ್ ಆವೃತ್ತಿ",
        "permalink": "ಸ್ತಿರೊ ಕೊಂಡಿ",
        "print": "ಪ್ರಿ೦ಟ್ ಮನ್ಪುಲೆ",
        "view": "ತೂಲೆ",
-       "view-foreign": "$1ಡà³\8d à²®à²¿à²¤à³\8dತà³\8d à²¤à³\82ಲà³\86",
+       "view-foreign": "$1ಡ್ ತೂಲೆ",
        "edit": "ಸಂಪೊಲಿಪುಲೆ",
        "edit-local": "ಸ್ಥಳೀಯ ವಿವರಣೆನ್ ಸೇರಾಲೆ",
        "create": "ಸೃಷ್ಟಿಪುಲೆ",
        "create-local": "ಸ್ಥಳೀಯ ವಿವರಣೆನ್ ಸೇರಾಲೆ",
        "delete": "ಮಾಜಾಲೆ",
-       "undelete_short": "ಪಿರ à²ªà²¾à²¡à³\8dಲà³\86 {{PLURAL:$1|à²\92೦à²\9cಿ à²¬à²¦à²²à²¾à²µà²£à³\86|$1 à²¬à²¦à²²à²¾à²µà²£à³\86ಲà³\81}}",
-       "viewdeleted_short": "ನೋಟ{{PLURAL:$1|1 ಡಿಲೀಟ್ ಆತಿನ ಸಂಪಾದನೆ|$1 ಡಿಲೀಟ್ ಆತಿನ ಸಂಪಾದನೆಲು}}",
-       "protect": "ಸ೦ರà²\95à³\8dಷಿಸಾಲೆ",
-       "protect_change": "ಬದಲಾಲೆ",
+       "undelete_short": "ಮಾà²\9cಾದಿನ {{PLURAL:$1|à²\92೦à²\9cಿ à²¬à²¦à²²à²¾à²µà²£à³\86ನà³\8d|$1 à²¬à²¦à²²à²¾à²µà²£à³\86ಲà³\86ನà³\8d}} à²ªà²¿à²° à²ªà²¾à²¡à³\8dಲà³\86",
+       "viewdeleted_short": "{{PLURAL:$1|1 ಡಿಲೀಟ್ ಆತಿನ ಒಂಜಿ ಸಂಪಾದನೆನ್|$1 ಡಿಲೀಟ್ ಆತಿನ ಸಂಪಾದನೆಲೆನ್}} ತೂಲೆ",
+       "protect": "ಸ೦ರà²\95à³\8dಷಿಪà³\81ಲೆ",
+       "protect_change": "ಬದಲà³\8dಪà³\81ಲೆ",
        "unprotect": "ರಕ್ಷಣೆನ್ ಬದಲ್‍ಪುಲೆ",
        "newpage": "ಪೊಸ ಪುಟೊ",
        "talkpagelinktext": "ಪಾತೆರ",
        "specialpage": "ವಿಶೇಷ ಪುಟ",
        "personaltools": "ಸ್ವಂತೊ ಉಪಕರಣೊಲು",
        "talk": "ಚರ್ಚೆ",
-       "views": "à²\85ಬಿಪà³\8dರಾಯೊಲು",
+       "views": "ನà³\8bà²\9fೊಲು",
        "toolbox": "ಉಪಕರಣೊಲು",
-       "tool-link-userrights": "{{GENDER:$1|ಸದಸà³\8dಯà³\86ನ}} à²\97à³\81à²\82ಪà³\81ನ್ ಬದಲ್ಪುಲೆ",
-       "tool-link-userrights-readonly": "{{GENDER:$1|ಸದಸ್ಯೆರ್ನ}} ಗುಂಪುನ್ ತೂಲೆ",
-       "tool-link-emailuser": "à²\88 {{GENDER:$1|ಸದಸà³\8dಯನ}}à²\97à³\8d à²\87ಮà³\87ಲà³\8d à²®à²¾à²¨à³\8dಪಿ",
+       "tool-link-userrights": "{{GENDER:$1|ಸದಸà³\8dಯà³\86ರà³\8dನ}} à²\97à³\81à²\82ಪà³\81ಲà³\86ನ್ ಬದಲ್ಪುಲೆ",
+       "tool-link-userrights-readonly": "{{GENDER:$1|ಸದಸà³\8dಯà³\86ರà³\8dನ}} à²\97à³\81à²\82ಪà³\81ಲà³\86ನà³\8d à²¤à³\82ಲà³\86",
+       "tool-link-emailuser": "à²\88 {{GENDER:$1|ಸದಸà³\8dಯà³\86ರà³\86à²\97à³\8d}} à²\87-ಮà³\87ಲà³\8d à²®à²²à³\8dಪà³\81ಲà³\86",
        "imagepage": "ಫೈಲ್‍ದ ಪುಟೊನು ತೂಲೆ",
        "mediawikipage": "ಸಂದೇಶ ಪುಟೊನು ತೂಲೆ",
        "templatepage": "ಟೆಂಪ್ಲೇಟ್ ಪುಟೊನು ತೂಲೆ",
        "redirectedfrom": "($1 ರ್ದ್ ಪಿರ ನಿರ್ದೇಸನೊದ)",
        "redirectpagesub": "ಪುನರ್ನಿರ್ದೇಶನೊದ ಪುಟೊ",
        "redirectto": "ಇಂದೆಕ್ಕ್ ಪುನರ್ನಿರ್ದೇಸನೊ:",
-       "lastmodifiedat": "à²\88 à²ªà³\81à²\9fà³\8a à²\87à²\82ದà³\86ತ à²¦à³\81à²\82ಬà³\81 $2, $1 ಗ್ ಬದಲಾತ್ಂಡ್.",
-       "viewcount": "ಈ ಪುಟೊನು {{PLURAL:$1|1 ಸರಿ|$1 ಸರಿ}} ತೂತೆರ್.",
+       "lastmodifiedat": "à²\88 à²ªà³\81à²\9fà³\8a à²\85à²\95à³\87ರಿà²\97à³\8d à²¤à²¾à²°à³\80à²\95à³\8d $1 à²¤à³\8dತಾನಿ $2 ಗ್ ಬದಲಾತ್ಂಡ್.",
+       "viewcount": "ಈ ಪುಟೊನು {{PLURAL:$1|ಒರ|$1 ಸರ್ತಿ}} ತೂತೆರ್.",
        "protectedpage": "ಸಂರಕ್ಷಿತ ಪುಟ",
        "jumpto": "ಇಡೆಗ್ ಪೋಲೆ:",
        "jumptonavigation": "ಸಂಚಾರೊ",
        "jumptosearch": "ನಾಡ್‍ಲೆ",
-       "view-pool-error": "à²\95à³\8dಷಮಿಸಲà³\86, à²¸à²°à³\8dವಲà³\81 à²\88 à²\95à³\8dಷಣà³\8aಡà³\8dದà³\81 à²¦à²¿à²\82à²\9c à²¦à²¿à²¨à³\8dನà³\8a à²\86ತà³\8dà²\82ಡà³\8d.\nಮಸà³\8dತà³\8d à²¬à²³à²\95à³\86ದಾರà³\86ರà³\8d à²\88 à²ªà³\81à²\9fà³\8aನà³\81 à²¤à³\82ಯà³\86ರà³\86 à²ªà³\8dರಯತà³\8dನಿಸವà³\8aà²\82ದà³\81ಲà³\8dಲà³\86ರà³\8d.  à²\88ರà³\8d à²¬à³\81à²\95à³\8dà²\95à³\8a \nà²\88ರà³\8d à²\88 à²ªà³\81à²\9fà³\8aà²\95à³\81 à²¨à²¾à²¨à³\8aರà³\8a à²¤à³\82ಯà³\86ರà³\86 à²ªà³\8dರಯತà³\8dನಿಸಲà³\86 à²¸à³\81ರà³\81à²\95à³\81 à²¦à²¯à³\8aಮಲà³\8dತà³\8d à²\95ಾಪà³\81ಲà³\86.\n$1",
-       "generic-pool-error": "à²\95à³\8dಷಮಿಸಲà³\86, à²¸à²°à³\8dವಲà³\81 à²\88 à²\95à³\8dಷಣà³\8aಡà³\8dದà³\81 à²¦à²¿à²\82à²\9c à²¦à²¿à²¨à³\8dನà³\8a à²\86ತà³\8dà²\82ಡà³\8d.\nಮಸà³\8dತà³\8d à²¬à²³à²\95à³\86ದಾರà³\86ರà³\8d à²\88 à²¸à²\82ಪನà³\8dಮà³\82ಲà³\8aನà³\81 à²¤à³\82ಯà³\86ರà³\86 à²ªà³\8dರಯತà³\8dನಿಸವà³\8aà²\82ದà³\81ಲà³\8dಲà³\86ರà³\8d.  à²\88ರà³\8d à²\88 à²¸à²\82ಪನà³\8dಮà³\82ಲà³\8aನà³\81 à²¨à²¾à²¨à³\8aರà³\8a à²¤à³\82ಯà³\86ರà³\86 à²ªà³\8dರಯತà³\8dನಿಸಲà³\86 à²¸à³\81ರà³\81à²\95à³\81 à²¦à²¯à³\8aಮಲà³\8dತà³\8d à²\95ಾಪುಲೆ.",
-       "pool-timeout": "ಪà³\8aರà³\8dತಾತà³\8dà²\82ಡà³\8d à²¬à³\80à²\97à³\8a à²¦à³\86ಪà³\8dಪà³\81ನà³\87à²\9f à²\95ಾಪà³\81ಲà³\86",
-       "pool-queuefull": "ಪà³\8dರà²\95à³\8dರಿಯà³\86ದ à²µà²¿à²¸à³\87ಸà³\8a à²\95à³\8dಯà³\82 à²®à³\81à²\97ಿದ್ಂಡ್",
-       "pool-errorunknown": "à²\97à³\8aತà³\8dತಿà²\82à²\9cà²\82ದಿನ  ದೋಷ",
-       "pool-servererror": "ಪà³\82ಲà³\8d à²\95à³\8cà²\82à²\9fರà³\8d à²¸à³\87ವà³\86 à²¤à²¿à²\95à³\8aà²\82ದಿದà³\8dದಿ ($1).",
-       "poolcounter-usage-error": "ಬಳà²\95à³\86ದ ದೋಸೊ: $1",
+       "view-pool-error": "ಮಾಪà³\81 à²®à²²à³\8dಪà³\81ಲà³\86, à²¸à²¦à³\8dಯà²\97à³\8d à²¸à²°à³\8dವರà³\8d à²\93ವರà³\8dâ\80\8cಲà³\8bಡà³\8d à²\86ತà³\8dà²\82ಡà³\8d.\nಮಸà³\8dತà³\8d à²\9cನ à²\97ಲಸà³\81ನಾà²\95à³\8dಲà³\81 à²\88 à²ªà³\81à²\9fà³\8aನà³\81 à²¤à³\82ಯà³\86ರà³\86 à²ªà³\8dರಯತà³\8dನ à²®à²²à³\8dತà³\8aà²\82ದà³\81ಲà³\8dಲà³\86ರà³\8d.\nದಯದà³\80ದà³\8d à²\92à²\82ತà³\86 à²ªà³\8aರà³\8dತà³\81 à²\95ಾತà³\8dâ\80\8cದà³\8d à²\95à³\81ಡà³\8aರ à²\88 à²ªà³\81à²\9fà³\8aನà³\81 à²¤à³\82ಯà³\86ರà³\86 à²ªà³\8dರಯತà³\8dನ à²®à²²à³\8dಪà³\81ಲà³\86. \n\n$1",
+       "generic-pool-error": "ಮಾಪà³\81 à²®à²²à³\8dಪà³\81ಲà³\86, à²¸à²¦à³\8dಯà²\97à³\8d à²¸à²°à³\8dವರà³\8d à²\93ವರà³\8dâ\80\8cಲà³\8bಡà³\8d à²\86ತà³\8dà²\82ಡà³\8d.\nಮಸà³\8dತà³\8d à²\9cನ à²\97ಲಸà³\81ನಾà²\95à³\8dಲà³\81 à²\88 à²ªà³\81à²\9fà³\8aನà³\81 à²¤à³\82ಯà³\86ರà³\86 à²ªà³\8dರಯತà³\8dನ à²®à²²à³\8dತà³\8aà²\82ದà³\81ಲà³\8dಲà³\86ರà³\8d.\nದಯದà³\80ದà³\8d à²\92à²\82ತà³\86 à²ªà³\8aರà³\8dತà³\81 à²\95ಾತà³\8dâ\80\8cದà³\8d à²\95à³\81ಡà³\8aರ à²\88 à²ªà³\81à²\9fà³\8aನà³\81 à²¤à³\82ಯà³\86ರà³\86 à²ªà³\8dರಯತà³\8dನ à²®à²²à³\8dಪುಲೆ.",
+       "pool-timeout": "ಬà³\80à²\97à³\8aà²\97à³\81 à²\95ಾಪà³\81ನ à²ªà³\8aರà³\8dತà³\81 à²®à³\81à²\97ಿà²\82ಡà³\8d.",
+       "pool-queuefull": "ಪà³\82ಲà³\8d à²\95à³\8dಯà³\82 à²¦à²¿à²\82à²\9cà³\8dâ\80\8cದ್ಂಡ್",
+       "pool-errorunknown": "à²\97à³\8aತà³\8dತಿà²\9cà³\8dà²\9cà²\82ದಿನ ದೋಷ",
+       "pool-servererror": "ಪà³\82ಲà³\8d à²\95à³\8cà²\82à²\9fರà³\8d à²¸à³\87ವà³\86 à²\87à²\9cà³\8dà²\9cಿ ($1).",
+       "poolcounter-usage-error": "à²\97ಲಸà³\81ನà³\86ತà³\8dತ ದೋಸೊ: $1",
        "aboutsite": "{{SITENAME}} ದ ಬಗೆಟ್",
        "aboutpage": "Project:ಬಗೆಟ್ಟ್",
        "copyright": "ಪ್ರತ್ಯೇಕವಾದ್ ಉಲ್ಲೇಕ ಮಲ್ಪಂದೆ ಇತ್ತ್ಂಡ, ವಿಸಯ \"$1\" ದಡಿಟ್ ಲಭ್ಯ ಉಂಡು.",
        "currentevents": "ಇತ್ತೆದ ಸಂಗತಿಲು",
        "currentevents-url": "Project:ಇತ್ತೆದ ಸಂಗತಿಲು",
        "disclaimers": "ಹಕ್ಕ್‌ ನಿರಾಕರಣೆಲು",
-       "disclaimerpage": "Project:ಸಾಮಾನà³\8dಯà³\8a à²¹à²\95à³\8dà²\95à³\8dâ\80\8c à²¬à³\81ಡà³\8dâ\80\8cನ",
+       "disclaimerpage": "Project:ಸಾಮಾನà³\8dಯà³\8a à²¹à²\95à³\8dà²\95à³\8dâ\80\8c à²¨à²¿à²°à²¾à²\95ರಣà³\86ಲà³\81",
        "edithelp": "ಸಂಪಾದನೆಗ್ ಸಹಾಯೊ",
        "helppage-top-gethelp": "ಸಹಾಯೊ",
        "mainpage": "ಮುಖ್ಯ ಪುಟ",
        "privacypage": "Project:ಕಾಸಗಿ ಕಾರ್ಯೊನೀತಿ",
        "badaccess": "ಅನುಮತಿ ದೋಷ",
        "badaccess-group0": "ಈರ್ ಕೇನಿನ ಬೇಲೆನ್ ಮಲ್ಪೆರೆ ಇರೆಗ್ ಅನುಮತಿ ಇಜ್ಜಿ.",
-       "badaccess-groups": "à²\88ರà³\8d à²\95à³\87ನಿನà²\82à²\9aಿನ à²\95à³\8dರಿಯà³\86 à²\96ಾಲಿ à²\88 {{PLURAL:$2|à²\97à³\81à²\82ಪà³\81à²\97à³\81|à²\97à³\81à²\82ಪà³\81ಲà³\86ಡà³\8d à²\92à²\82à²\9cà³\86à²\97à³\8d}} à²¸à³\87ರà³\8dದà³\81ಪà³\8dಪà³\81ನ à²¬à²³à²\95à³\86ದಾರà³\86ರà³\86à²\97à³\8d à²®à²¾à²\82ತà³\8dರà³\8a: $1.",
-       "versionrequired": "ಮà³\80ಡಿಯವಿà²\95ಿಯದ $1 à²¨à³\87 à²\85ವà³\83ತà³\8dತಿ à²¬à³\8bಡà³\81",
-       "versionrequiredtext": "à²\88 à²ªà³\81à²\9fà³\8aನà³\81 à²¤à³\82ಯà³\86ರà³\86 à²®à³\80ಡಿಯವಿà²\95ಿಯದ $1 à²¨à³\87 à²\86ವà³\83ತà³\8dತಿ à²¬à³\8bಡà³\81.\n[[Special:Version|à²\86ವà³\83ತà³\8dತಿ]] à²ªà³\81à²\9fನà³\81 ತೂಲೆ.",
+       "badaccess-groups": "à²\88ರà³\8d à²\95à³\87ನಿನà²\82à²\9aಿನ à²\95à³\8dರಿಯà³\86 à²\96ಾಲಿ à²\88 {{PLURAL:$2|à²\97à³\81à²\82ಪà³\81à²\97à³\81|à²\97à³\81à²\82ಪà³\81ಲà³\86ಡà³\8d à²\92à²\82à²\9cà³\86à²\97à³\8d}} à²¸à³\87ರà³\8dದà³\81ಪà³\8dಪà³\81ನ à²¸à²¦à²¸à³\8dಯà³\86ರà³\86à²\97à³\8d à²®à²¾à²¤à³\8dರ: $1.",
+       "versionrequired": "ಮೀಡಿಯವಿಕಿದ $1 ನೇ ಅವೃತ್ತಿ ಬೋಡು",
+       "versionrequiredtext": "à²\88 à²ªà³\81à²\9fà³\8aನà³\81 à²\97ಲಸರà³\86 à²®à³\80ಡಿಯವಿà²\95ಿದ $1 à²¨à³\87 à²\86ವà³\83ತà³\8dತಿ à²¬à³\8bಡà³\81.\n[[Special:Version|à²\86ವà³\83ತà³\8dತಿ à²ªà³\81à²\9fà³\8aನà³\81]] ತೂಲೆ.",
        "ok": "ಸರಿ",
-       "retrievedfrom": "\"$1\"ರà³\8dದà³\8d à²¦à³\86ತà³\8aನà³\8dನà²\82à²\9aಿನ",
+       "retrievedfrom": "\"$1\"ಡà³\8dದà³\8d à²¦à³\86ತà³\8dತà³\8aà²\82ದà³\81à²\82ಡà³\81",
        "youhavenewmessages": "ಇರೆಗ್ $1 ಉಂಡು ($2).",
        "youhavenewmessagesfromusers": "{{PLURAL:$4|ಈರೆಗ್}} {{PLURAL:$3|ನನೊರಿ ಸದಸ್ಯೆಡ್ದ್|$3 ಸದಸ್ಯೆರೆಡ್ದ್}} $1 ಉಂಡು. ($2)",
        "youhavenewmessagesmanyusers": " ನಿಕ್ಲೆಗ್ ದಿಂಜ ಸದಸ್ಯೆರೆಡ್ದ್ $1 ಉಂಡು ($2).",
        "toc": "ಪರಿವಿಡಿ",
        "showtoc": "ತೊಜ್ಪಾವು",
        "hidetoc": "ದೆಂಗಾವು",
-       "collapsible-collapse": "à²\95à³\81à²\97à³\8dà²\97ಿಸಾಲ",
+       "collapsible-collapse": "à²\8eಲà³\8dಯ à²®à²²à³\8dಪà³\81ಲà³\86",
        "collapsible-expand": "ವಿಸ್ತಾರ ಮಲ್ಪುಲೆ",
-       "confirmable-confirm": "{{GENDER:$1|ನಿà²\95à³\8dಲà³\8d}} à²\95à²\82ಡಿತà³\8aನೆ?",
+       "confirmable-confirm": "{{GENDER:$1|à²\88ರà³\8d}} à²¨à²¿à²\97à²\82à²\9fà³\8d à²®à²²à³\8dತà³\8aà²\82ಡರೆ?",
        "confirmable-yes": "ಅಂದ್",
        "confirmable-no": "ಅತ್ತ್",
-       "thisisdeleted": "$1 à²¨à³\8d à²¤à³\82ವà³\8aಡà³\86 à²\85ತà³\8dತà³\8d à²¦à³\81à²\82ಬà³\81ದ à²²à³\86à²\95ೆ ಮಲ್ಪೊಡೆ?",
+       "thisisdeleted": "$1 à²¨à³\8d à²¤à³\82ವà³\8aಡà³\86 à²\85ತà³\8dತà³\8d à²\95à³\81ಡ à²¸à³\8dತಾಪನೆ ಮಲ್ಪೊಡೆ?",
        "viewdeleted": "$1 ನ್ ತೂವೊಡೆ?",
-       "restorelink": "{{PLURAL:$1|1 ಡಿಲೀಟ್ ಆತಿನ ಸಂಪಾದನೆ|$1 ಡಿಲೀಟ್ ಆತಿನ ಸಂಪಾದನೆಲು}}",
+       "restorelink": "{{PLURAL:$1|ಒಂಜಿ ಮಾಜಾದಿನ ಸಂಪಾದನೆ|$1 ಮಾಜಾದಿನ ಸಂಪಾದನೆಲು}}",
        "feedlinks": "ಫೀಡ್:",
-       "feed-invalid": "à²\87ನà³\8dವಾಲಿಡà³\8d à²¸à²¬à³\8dಸà³\8dâ\80\99à²\95à³\8dರಿಪà³\8dಶನà³\8d à²«à³\80ಡà³\8d à²\9fà³\88ಪà³\8d.",
-       "feed-unavailable": "{{SITENAME}} ಡ್ ಸಿಂಡಿಕೇಶನ್ ಫೀಡ್ ಲಬ್ಯೊ ಇದ್ದಿ.",
+       "feed-invalid": "ಸದಸà³\8dಯತà³\8dವದ à²«à³\80ಡà³\8d à²¨à²®à³\82ನà³\86 à²¸à²°à²¿ à²\87à²\9cà³\8dà²\9cಿ.",
+       "feed-unavailable": "ಸಿಂಡಿಕೇಶನ್ ಫೀಡುಲು ಇಜ್ಜಿ",
        "site-rss-feed": "$1 RSS ಫೀಡ್",
        "site-atom-feed": "$1 ಆಟಮ್ ಫೀಡ್",
        "page-rss-feed": "\"$1\" RSS ಫೀಡ್",
-       "page-atom-feed": "\"$1\" ಪುಟೊತ Atom ಫೀಡ್",
+       "page-atom-feed": "\"$1\" ಪುಟೊತ ಆಟಮ್ ಫೀಡ್",
        "feed-atom": "Atom",
        "feed-rss": "RSS",
        "red-link-title": "$1 (ಈ ಪುಟೊ ನನಲ ಅಸ್ತಿತ್ವೊಡ್ ಇಜ್ಜಿ)",
-       "sort-descending": "à²\87ಳಿà²\95à³\86 à²\95à³\8dರಮà³\8aà²\9fà³\8dà²\9fà³\81 à²\9cà³\8bಡಿಸಾಲ",
-       "sort-ascending": "à²\8fರಿà²\95à³\86 à²\95à³\8dರಮà³\8aà²\9fà³\8dà²\9fà³\81 à²\9cà³\8bಡಿಸಾಲ",
+       "sort-descending": "à²\9cಪà³\8dಪà³\81ನ à²\95à³\8dರಮà³\8aà²\9fà³\8dà²\9fà³\81 à²\9cà³\8bಡಾಲà³\86",
+       "sort-ascending": "à²\8fರà³\81ನ à²\95à³\8dರಮà³\8aà²\9fà³\8dà²\9fà³\81 à²\9cà³\8bಡಾಲà³\86",
        "nstab-main": "ಪುಟೊ",
        "nstab-user": "ಸದಸ್ಯೆರೆನ ಪುಟೊ",
        "nstab-media": "ಮೀಡಿಯ ಪುಟ",
        "nstab-help": "ಸಹಾಯ ಪುಟ",
        "nstab-category": "ವರ್ಗೊ",
        "mainpage-nstab": "ಮುಖ್ಯ ಪುಟ",
-       "nosuchaction": "à²\88 à²°à³\80ತಿದ à²\93ವà³\81 à²\95à³\8dರಿಯà³\86ಲಾ(à²\86à²\95à³\8dಶನà³\8d) ಇಜ್ಜಿ",
-       "nosuchactiontext": "ಈ URLದ ಒಟ್ಟಿಗೆ ಉಪ್ಪುನ ಕ್ರಿಯೆನ್ ವಿಕಿ ಗುರ್ತ ಪತ್ತುಜಿ{{SITENAME}}.",
-       "nosuchspecialpage": "à²\88 à²ªà³\81ದರà³\8dâ\80\99ದ à²\92ವà³\81ಲಾ à²µà²¿à²·à³\87ಶ à²ªà³\81à²\9f ಇಜ್ಜಿ",
-       "nospecialpagetext": "<strong>à²\88ರà³\8d à²\85ಸà³\8dಥಿತà³\8dವಡà³\8d à²\87à²\9cà³\8dà²\9cà²\82ದಿನ à²µà²¿à²·à³\87ಶ à²ªà³\81à²\9fà³\8aನà³\81 à²\95à³\87ನà³\8dದರà³\8d.</strong>\n\nà²\85ಸà³\8dಥಿತà³\8dವಡà³\8d à²\89ಪà³\8dಪà³\81ನà²\82à²\9aಿನ à²µà²¿à²·à³\87ಶ à²ªà³\81à²\9fà³\8aಲà³\8dದ ಪಟ್ಟಿ [[Special:SpecialPages|{{int:specialpages}}]] ಡ್ ಉಂಡು.",
+       "nosuchaction": "à²\87à²\82à²\9aಿತà³\8dತಿ à²µà²¾ à²\95à²\9cà³\8dà²\9cà³\8aಲಾ ಇಜ್ಜಿ",
+       "nosuchactiontext": "ಈ ಯು.ಆರ್.ಎಲ್. ದ ಕ್ರಿಯೆ ಸರಿಯಾಯಿನವು ಅತ್ತ್.\nಈರ್ ಯು.ಆರ್.ಎಲ್. ನ್ ತಪ್ಪಾದ್ ಬರೆದುಪ್ಪರ್ ಅತ್ತಾಂಡ ಸರಿ ಇಜ್ಜಾಂದಿನ ಕೊಡಿನ್ ಒತ್ತುದುಪ್ಪರ್.\nಇಜ್ಜಿಂಡ, {{SITENAME}} ಗಲಸುನ ಸಾಫ್ಟ್‌ವೇರ್‌ದ ದೋಷಲಾ ಆದುಪ್ಪು.",
+       "nosuchspecialpage": "à²\87à²\82à²\9aಿತà³\8dತಿ à²µà²¾ à²µà²¿à²¸à³\87ಸà³\8a à²ªà³\81à²\9fಲಾ ಇಜ್ಜಿ",
+       "nospecialpagetext": "<strong>à²\88ರà³\8d à²\85ಸà³\8dಥಿತà³\8dವಡà³\8d à²\87à²\9cà³\8dà²\9cà²\82ದಿನ à²µà²¿à²·à³\87ಶ à²ªà³\81à²\9fà³\8aನà³\81 à²\95à³\87ನà³\8dದರà³\8d.</strong>\n\nà²\85ಸà³\8dಥಿತà³\8dವಡà³\8d à²\89ಪà³\8dಪà³\81ನà²\82à²\9aಿನ à²µà²¿à²·à³\87ಶ à²ªà³\81à²\9fà³\8aà²\95à³\8dಲà³\86ನ ಪಟ್ಟಿ [[Special:SpecialPages|{{int:specialpages}}]] ಡ್ ಉಂಡು.",
        "error": "ದೋಷ",
        "databaseerror": "ಡೇಟಾಬೇಸ್ ದೋಷ",
-       "databaseerror-text": "ಡà³\87à²\9fಾಬà³\87ಸà³\8d à²µà²¿à²\9aಾರà³\8aಡà³\81 à²¦à³\8bಸà³\8a à²¤à³\8bà²\9cಿದà³\8d à²¬à²¤à³\8dತà³\8dà²\82ಡà³\8d.  à²\88 à²¤à²\82ತà³\8dರಾಸà³\8a à²\92à²\82à²\9cಿ à²¦à³\8bಸà³\8aನà³\81 à²¤à³\8bà²\9cಾವà³\8aà²\82ದà³\81à²\82ಡು.",
-       "databaseerror-textcl": "ಡà³\87à²\9fಾಬà³\87ಸà³\8d à²µà²¿à²\9aಾರà³\8aಡà³\81 à²¦à³\8bಸà³\8a à²¤à³\8bà²\9cಿದà³\8d à²¬à²°à³\8aà²\82ದà³\81à²\82ಡà³\81.",
-       "databaseerror-query": "ವಿà²\9aಾರà³\8a: $1",
+       "databaseerror-text": "ಡà³\87à²\9fಾಬà³\87ಸà³\8d à²ªà³\8dರಶà³\8dನà³\86ಡà³\8d à²¦à³\8bಸà³\8a à²¤à³\8bà²\9cಿದà³\8d à²¬à²¤à³\8dತà³\8dà²\82ಡà³\8d.  à²\89à²\82ದà³\81 à²¸à²¾à²«à³\8dà²\9fà³\8dâ\80\8cವà³\87ರà³\8d à²¦à³\8bಷಲಾ à²\86ದà³\81ಪà³\8dಪು.",
+       "databaseerror-textcl": "ಡà³\87à²\9fಾಬà³\87ಸà³\8d à²ªà³\8dರಶà³\8dನà³\86ಡà³\8d à²¦à³\8bಸà³\8a à²¤à³\8bà²\9cಿದà³\8d à²¬à²¤à³\8dತà³\8dà²\82ಡà³\8d.",
+       "databaseerror-query": "ಪà³\8dರಶà³\8dನà³\86: $1",
        "databaseerror-function": "ಕಾರ್ಯೊ: $1",
        "databaseerror-error": "ದೋಸೊ: $1",
-       "laggedslavemode": "<strong>ಎಚ್ಚರೊ:</strong> ಪುಟೊಡು ಇಂಚಿಪದ ಬದಲಾವಣೆಲೆನ್ ತೂವೊಲಿ.",
+       "transaction-duration-limit-exceeded": "ಮಲ್ಲ ಪ್ರತಿಕೃತಿ ಅಂತರೊನು ತಡೆಗಟ್ಟೆರೆ, ಈ ಕಾರ್ಯೊ ರದ್ದಾತ್ಂಡ್, ದಾಯೆಪಂಡ ಬರೆಪಿನ ಪೊರ್ತು ($1), $2 ಸೆಕಂಡ್ ಮಿತಿನ್ ದಾಟ್‌ದ್ಂಡ್. ಒಂಜೇಲೆ ಈರ್ ಮಸ್ತ್ ವಿಸಯೊಲೆನ್ ಒಟ್ಟುಗು ಬದಲ್ ಮಲ್ತೊಂದಿತ್ತ್ಂಡ, ಐತ ಪಗತೆಗ್ ಬೇತೆ ಬೇತೆ ಎಲ್ಯ ಕಾರ್ಯೊಲೆನ್ ಮಲ್ಪೆರೆ ಪ್ರಯತ್ನ ಮಲ್ಪುಲೆ.",
+       "laggedslavemode": "<strong>ಎಚ್ಚರೊ:</strong> ಪುಟೊಡು ಇಂಚಿಪದ ಬದಲಾವಣೆಲು ಉಪ್ಪಂದ್.",
        "readonly": "ಡಾಟಾಬೇಸ್ ಲಾಕ್ ಆತ್೦ಡ್",
-       "enterlockreason": "ಡೇಟಬೇಸ್ ಮುಚ್ಚುನ ಕಾರಣೊನು ಬೊಕ್ಕೊ ನಾನೊರೊ ಅಯಿನ್ ದೆಪ್ಪುನ ಅಂದಾಜಿದ ಪೊರ್ತುನು ತೆರಿಪಾಲೆ",
+       "enterlockreason": "ಡೇಟಬೇಸ್‌ಗ್ ಲಾಕ್ ಪಾಡುನ ಕಾರಣೊನು ಬೊಕ್ಕೊ ಲಾಕ್‌ನ್ ದೆಪ್ಪುನ ಅಂದಾಜಿದ ಪೊರ್ತುನು ತೆರಿಪಾಲೆ",
        "missing-article": "\"$1\" $2 ಪುದರ್’ದ ಪುಟ ದೇಟಬೇಸ್’ಡ್ ಇಜ್ಜಿ.\n\nಡಿಲೀಟ್ ಮಲ್ತಿನ ಪುಟೊಕು ಸಂಪರ್ಕ ಕೊರ್ಪುನ ಇತಿಹಾಸ ಲಿಂಕ್ ಅತ್ತ್’ನ್ಡ ವ್ಯತ್ಯಾಸ ಲಿಂಕ್’ನ್ ಒತ್ತುನೆರ್ದಾದ್ ಈ ದೋಷ ಸಾಧಾರಣವಾದ್ ಬರ್ಪುಂಡು.\n\nಒಂಜಿ ವೇಳೆ ಅಂಚ ಆದಿಜ್ಜಿಂಡ, ಉಂದು ಒಂಜಿ ಸಾಫ್ಟ್-ವೇರ್ ದೋಷ ಆದುಪ್ಪು.\nಇಂದೆನ್  [[Special:ListUsers/sysop|ವಿಕಿ-ಅಧಿಕಾರಿಗ್]] ತೆರಿಪಾಲೆ.",
        "missingarticle-rev": "(ಮರು-ಆವೃತ್ತಿ#: $1)",
        "missingarticle-diff": "(ವ್ಯತ್ಯಾಸೊ: $1, $2)",
        "currentrev-asof": "$1ದ ಇಂಚಿಪದ ಆವೃತ್ತಿ",
        "revisionasof": "$1ದಿನೊತ ಆವೃತ್ತಿ",
        "revision-info": "$1 ಪ್ರಕಾರೊ {{GENDER:$6|$2}} ಇಂಬೆರೆಡ್ದ್ ಆಯಿನ ಬದಲಾವಣೆ $7",
-       "previousrevision": "â\86\90ದà³\81à²\82ಬà³\8aರà³\8a à²¤à³\82ಯಿನ",
+       "previousrevision": "â\86\90ದà³\81à²\82ಬà³\81ದ à²\86ವà³\83ತà³\8dತಿ",
        "nextrevision": "ದುಂಬುದ ತಿದ್ದುಪಡಿ →",
        "currentrevisionlink": "ಇತ್ತೆದ ತಿದ್ದುಪಡಿ",
        "cur": "ಸದ್ಯೊ",
        "recentchangeslinked": "ಸಂಬಂದೊ ಉಪ್ಪುನಂಚಿನ ಬದಲಾವಣೆಲು",
        "recentchangeslinked-feed": "ಸಂಬಂಧ ಉಪ್ಪುನಂಚಿನ ಬದಲಾವಣೆಲು",
        "recentchangeslinked-toolbox": "ಸಂಬಂದೊ ಉಪ್ಪುನಂಚಿನ ಬದಲಾವಣೆಲು",
-       "recentchangeslinked-title": "\"$1\" à²ªà³\81à²\9fà³\8aà²\9fà³\81 à²\86ಯಿನ à²¬à²¦à²²à²¾à²µà²£à³\86à²\97à³\8d à²¸à²\82ಬà²\82ದಿಸದà³\8d",
+       "recentchangeslinked-title": "\"$1\" à²ªà³\81à²\9fà³\8aà²\95à³\81 à²¸à²\82ಬà²\82ದಿತಿನ à²¬à²¦à²²à²¾à²µà²£à³\86ಲà³\81",
        "recentchangeslinked-summary": "ಒಂಜಿ ನಿರ್ದಿಸ್ಟೊ ಪುಟೊರ್ದು ಸಂಪರ್ಕೊ ಉಪ್ಪುನ ಪುಟೊಕುಲೆಗ್ (ಅತ್ತಂಡ ನಿರ್ದಿಸ್ಟೊ ವರ್ಗೊಗು ಸೇರ್ದಿನ ಸದಸ್ಯೆರೆಗ್) ಇಂಚಿಪ ಮಲ್ತಿನಂಚಿನ ಬದಲಾವಣೆಲೆನ್ ತಿರ್ತ್ ಪಟ್ಟಿ ಮಲ್ತ್‌ದ್ಂಡ್.\n[[Special:Watchlist|ಇರೆನ ವೀಕ್ಷಣೆ ಪಟ್ಟಿಡ್]] ಉಪ್ಪುನ ಪುಟೊಕುಲು ''ದಪ್ಪ ಅಕ್ಷರೊಡು\" ಉಂಡು.",
        "recentchangeslinked-page": "ಪುಟೊತ ಪುದರ್:",
        "recentchangeslinked-to": "ಇಂದೆತ ಬದಲ್‍ಗ್ ಕೊರ್ತ್‍ನ ಪುಟೊಗು ಕೊಂಡಿ ಉಪ್ಪುನಂಚಿನ ಪುಟೊಲೆದ ಬದಲಾವಣೆಲೆನ್ ತೋಜಾವು",
        "withoutinterwiki": "ಬಾಸೆದ ಸಂಪರ್ಕ ದಾಂತಿನ ಪುಟೊಕುಲು",
        "withoutinterwiki-submit": "ತೋಜಾಲೆ",
        "fewestrevisions": "ಮಸ್ತ್ ಕಡಮೆ ಬದಲಾವಣೆ ಆತಿನ ಪುಟೊಕುಲು",
-       "nbytes": "$1 {{PLURAL:$1|byte|ಬೈಟ್‍ಲು}}",
+       "nbytes": "$1 {{PLURAL:$1|ಬೈಟ್|ಬೈಟ್‍ಲು}}",
        "nmembers": "$1 {{PLURAL:$1|ಸದಸ್ಯೆರ್|ಸದಸ್ಯೆರ್ಲು}}",
        "lonelypages": "ಒಂಟಿ ಪುಟೊಕುಲು",
        "uncategorizedpages": "ಒತ್ತರೆ ಆವಂದಿನ ಪುಟೊಕುಲು",
        "exif-imagewidth": "ಅಗೆಲ",
        "exif-imagelength": "ಎತ್ತರೊ",
        "exif-orientation": "ದಿಕ್ಕ್ ದಿಸೆ",
-       "exif-xresolution": "à²\85ಡà³\8dಡà²\97ಲà³\8aದ à²°à³\87ಸಲà³\8dಯà³\82ಶನà³\8d",
+       "exif-xresolution": "ಅಡ್ಡದ ರೇಸಲ್ಯೂಶನ್",
        "exif-yresolution": "ಉದ್ದೊದ ರೇಸಲ್ಯೂಶನ್",
        "exif-datetime": "ಫೈಲ್‍ನ್ ಬದಲಾವಣೆ ಮಲ್ತ್‌ನ ದಿನೊ ಬೊಕ್ಕ ಪೊರ್ತು",
        "exif-make": "ಕ್ಯಾಮರೊದ ತಯಾರೆಕೆರ್",
        "blankpage": "ಖಾಲಿ ಪುಟ",
        "tag-filter": "[[Special:Tags|ಟ್ಯಾಗ್]]ಅರಿಪೆ:",
        "tag-filter-submit": "ಅರಿಪೆ",
-       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|ಟ್ಯಾಗುಲು}}]]:$2)",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ಟ್ಯಾಗ್|ಟ್ಯಾಗುಲು}}]]:$2)",
        "tags-title": "ತೂಗು ಪಟ್ಟಿಲು",
        "tags-source-header": "ಮೂಲೊ",
        "tags-active-header": "ಸಕ್ರಿಯ?",
index 1313064..d434d40 100644 (file)
@@ -53,7 +53,7 @@
        "tog-watchcreations": "Tự động theo dõi các trang tôi tạo và các tập tin tôi tải lên",
        "tog-watchdefault": "Tự động theo dõi các trang và tập tin tôi sửa",
        "tog-watchmoves": "Tự động theo dõi các trang và tập tin tôi di chuyển",
-       "tog-watchdeletion": "Tự động theo dõi các trang và tập tin tôi x",
+       "tog-watchdeletion": "Tự động theo dõi các trang và tập tin tôi xóa",
        "tog-watchuploads": "Thêm các tập tin tải lên của tôi vào danh sách theo dõi của tôi",
        "tog-watchrollback": "Tự động theo dõi các trang tôi lùi sửa",
        "tog-minordefault": "Mặc định đánh dấu tất cả sửa đổi của tôi là sửa đổi nhỏ",
        "edit-local": "Sửa miêu tả địa phương",
        "create": "Tạo",
        "create-local": "Thêm miêu tả địa phương",
-       "delete": "X",
+       "delete": "Xóa",
        "undelete_short": "Phục hồi {{PLURAL:$1|một sửa đổi|$1 sửa đổi}}",
        "viewdeleted_short": "Xem {{PLURAL:$1|sửa đổi|$1 sửa đổi}} đã xóa",
        "protect": "Khóa",
        "confirmable-no": "Không",
        "thisisdeleted": "Xem hay phục hồi $1 ?",
        "viewdeleted": "Xem $1?",
-       "restorelink": "{{PLURAL:$1|một|$1}} sửa đổi đã x",
+       "restorelink": "{{PLURAL:$1|một|$1}} sửa đổi đã xóa",
        "feedlinks": "Nạp:",
        "feed-invalid": "Định dạng nguồn cấp dữ liệu không hợp lệ.",
        "feed-unavailable": "Nguồn cấp dữ liệu không có sẵn tại đây",
        "readonly": "Cơ sở dữ liệu bị khóa",
        "enterlockreason": "Nêu lý do khóa, cùng với thời hạn khóa",
        "readonlytext": "Cơ sở dữ liệu hiện đã bị khóa không nhận trang mới và các điều chỉnh khác, có lẽ để bảo trì cơ sở dữ liệu định kỳ, một thời gian ngắn nữa nó sẽ trở lại bình thường.\n\nQuản trị viên hệ thống khi khóa nó đã đưa ra lời giải thích sau: $1",
-       "missing-article": "Cơ sở dữ liệu không tìm thấy văn bản của trang lẽ ra phải có, trang      Normal   0               false   false   false      EN-US   X-NONE   X-NONE                                                     MicrosoftInternetExplorer4                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     “$1” $2.\n\nĐiều này thường xảy ra do nhấn vào liên kết khác biệt phiên bản đã quá lâu hoặc liên kết lịch sử của một trang đã bị xoá.\n\nNếu không phải lý do trên, có thể bạn đã gặp phải một lỗi của phần mềm.\nXin hãy báo nó cho một [[Special:ListUsers/sysop|bảo quản viên]], trong đó ghi lại địa chỉ URL.",
+       "missing-article": "Cơ sở dữ liệu không tìm thấy văn bản của trang lẽ ra phải có, trang “$1” $2.\n\nĐiều này thường xảy ra do nhấn vào liên kết khác biệt phiên bản đã quá lâu hoặc liên kết lịch sử của một trang đã bị xóa.\n\nNếu không phải lý do trên, có thể bạn đã gặp phải một lỗi của phần mềm.\nXin hãy báo nó cho một [[Special:ListUsers/sysop|bảo quản viên]], trong đó ghi lại địa chỉ URL.",
        "missingarticle-rev": "(số phiên bản: $1)",
        "missingarticle-diff": "(Khác: $1, $2)",
        "readonly_lag": "Cơ sở dữ liệu bị khóa tự động trong khi các máy chủ cập nhật thông tin của nhau.",
        "internalerror-fatal-exception": "Ngoại lệ chí tử loại “$1”",
        "filecopyerror": "Không thể chép tập tin “$1” đến “$2”.",
        "filerenameerror": "Không thể đổi tên tập tin “$1” thành “$2”.",
-       "filedeleteerror": "Không thể x tập tin “$1”.",
+       "filedeleteerror": "Không thể xóa tập tin “$1”.",
        "directorycreateerror": "Không thể tạo được danh mục “$1”.",
        "directoryreadonlyerror": "Thư mục “$1” là chỉ-đọc.",
        "directorynotreadableerror": "Không đọc được thư mục “$1”.",
        "unexpected": "Không hiểu giá trị: “$1”=“$2”.",
        "formerror": "Lỗi: không gửi mẫu đi được.",
        "badarticleerror": "Không thể thực hiện được tác vụ như thế tại trang này.",
-       "cannotdelete": "Không thể xoá trang hay tập tin “$1”. Có thể nó đã bị ai đó xoá rồi.",
-       "cannotdelete-title": "Không thể x trang “$1”",
-       "delete-hook-aborted": "Một phần bổ trợ phần mềm đã bỏ qua việc x này.\nKhông có lý do nào được đưa ra.",
+       "cannotdelete": "Không thể xóa trang hay tập tin “$1”. Có thể nó đã bị ai đó xóa rồi.",
+       "cannotdelete-title": "Không thể xóa trang “$1”",
+       "delete-hook-aborted": "Một phần bổ trợ phần mềm đã bỏ qua việc xóa này.\nKhông có lý do nào được đưa ra.",
        "no-null-revision": "Không thể tạo phiên bản không nội dung mới cho trang “$1”",
        "badtitle": "Tựa trang sai",
        "badtitletext": "Tựa trang yêu cầu không đúng, rỗng, hoặc là một liên kết ngôn ngữ hoặc liên kết wiki sai. Nó có thể chứa một hoặc nhiều ký tự mà tựa trang không thể sử dụng.",
        "virus-badscanner": "Cấu hình sau: không nhận ra bộ quét virus: ''$1''",
        "virus-scanfailed": "quét thất bại (mã $1)",
        "virus-unknownscanner": "không nhận ra phần mềm diệt virus:",
-       "logouttext": "'''Bạn đã đăng xuất.'''\n\nXin lưu ý rằng một vài trang có thể vẫn hiển thị như khi bạn còn đăng nhập, cho đến khi bạn x vùng nhớ đệm (''cache'') của trình duyệt.",
+       "logouttext": "'''Bạn đã đăng xuất.'''\n\nXin lưu ý rằng một vài trang có thể vẫn hiển thị như khi bạn còn đăng nhập, cho đến khi bạn xóa vùng nhớ đệm (''cache'') của trình duyệt.",
        "cannotlogoutnow-title": "Không thể đăng xuất lúc này",
        "cannotlogoutnow-text": "Không thể đăng xuất khi đang dùng $1.",
        "welcomeuser": "Hoan nghênh, $1!",
        "botpasswords-label-create": "Tạo",
        "botpasswords-label-update": "Cập nhật",
        "botpasswords-label-cancel": "Hủy bỏ",
-       "botpasswords-label-delete": "X",
+       "botpasswords-label-delete": "Xóa",
        "botpasswords-label-resetpassword": "Đặt lại mật khẩu",
        "botpasswords-label-grants": "Các quyền có liên quan:",
        "botpasswords-help-grants": "Các lượt cấp phép cho phép truy cập các quyền lợi mà tài khoản của bạn đã có. Việc cấp phép tại đây không có cho phép truy cập quyền nào mà tài khoản của bạn thường không có. Xem thêm thông tin trong [[Special:ListGrants|bảng cấp phép]].",
        "botpasswords-label-grants-column": "Cấp quyền",
        "botpasswords-bad-appid": "Bot có tên \"$1\" không hợp lệ.",
        "botpasswords-insert-failed": "Không thể thêm tên bot \"$1\". Nó đã được thêm vào chưa?",
-       "botpasswords-update-failed": "Không thể khi cập nhật bot có tên \"$1\". Có phải nó đã bị xoá?",
+       "botpasswords-update-failed": "Không thể khi cập nhật bot có tên “$1”. Có phải nó đã bị xóa?",
        "botpasswords-created-title": "Mật khẩu bot đã được tạo",
        "botpasswords-created-body": "Đã tạo mật khẩu cho bot “$1” của người dùng “$2”.",
        "botpasswords-updated-title": "Mật khẩu Bot đã được cập nhật",
        "botpasswords-updated-body": "Đã cập nhật mật khẩu cho bot “$1” của người dùng “$2”.",
-       "botpasswords-deleted-title": "Mật khẩu bot đã bị x",
-       "botpasswords-deleted-body": "Đã x mật khẩu cho bot “$1” của người dùng “$2”.",
+       "botpasswords-deleted-title": "Mật khẩu bot đã bị xóa",
+       "botpasswords-deleted-body": "Đã xóa mật khẩu cho bot “$1” của người dùng “$2”.",
        "botpasswords-newpassword": "Mật khẩu mới để đăng nhập như <strong>$1</strong> là <strong>$2</strong>. <em>Xin hãy ghi lại mật khẩu này để mai mốt tham khảo.</em> <br> (Các bot cũ cần tên đăng nhập khớp với tên người dùng cuối cùng có thể sử  dụng tên người dùng <strong>$3</strong> và mật khẩu <strong>$4</strong>.)",
        "botpasswords-no-provider": "BotPasswordsSessionProvider không có sẵn.",
        "botpasswords-restriction-failed": "Mật khẩu bot giới hạn ngăn chặn đăng nhập này.",
        "whitelistedittext": "Bạn phải $1 để sửa trang.",
        "confirmedittext": "Bạn cần phải xác nhận địa chỉ thư điện tử trước khi được sửa đổi trang. Xin hãy đặt và xác nhận địa chỉ thư điện tử của bạn dùng trang [[Special:Preferences|tùy chọn]].",
        "nosuchsectiontitle": "Không tìm thấy đề mục",
-       "nosuchsectiontext": "Bạn vừa sửa đổi một mục chưa tồn tại.\nCó thể nó đã bị di chuyển hoặc x đi trong khi bạn đang xem trang.",
+       "nosuchsectiontext": "Bạn vừa sửa đổi một mục chưa tồn tại.\nCó thể nó đã bị di chuyển hoặc xóa đi trong khi bạn đang xem trang.",
        "loginreqtitle": "Cần đăng nhập",
        "loginreqlink": "đăng nhập",
        "loginreqpagetext": "Bạn phải $1 mới có quyền xem các trang khác.",
        "anontalkpagetext": "----\n<em>Đây là trang thảo luận của một người dùng vô danh chưa tạo tài khoản hoặc có tài khoản nhưng không đăng nhập.</em>\nDo đó chúng ta phải dùng một dãy số gọi là địa chỉ IP để xác định anh/chị ta.\nMột địa chỉ IP như vậy có thể có nhiều người cùng dùng chung.\nNếu bạn là một thành viên vô danh và cảm thấy rằng có những lời bàn luận không thích hợp đang nhắm vào bạn, xin hãy [[Special:CreateAccount|tạo tài khoản]] hoặc [[Special:UserLogin|đăng nhập]] để tránh sự nhầm lẫn về sau với những thành viên vô danh khác.",
        "noarticletext": "Trang này hiện chưa có nội dung.\nBạn có thể [[Special:Search/{{PAGENAME}}|tìm kiếm tựa trang này]] trong các trang khác, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tìm trong các nhật trình liên quan],\nhoặc [{{fullurl:{{FULLPAGENAME}}|action=edit}} tạo mới trang này]</span>.",
        "noarticletext-nopermission": "Trang này hiện đang trống.\nBạn có thể [[Special:Search/{{PAGENAME}}|tìm kiếm tựa trang này]] tại các trang khác, hoặc <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tìm kiếm các nhật trình liên quan]</span>, nhưng bạn không được phép tạo trang này.",
-       "missing-revision": "Phiên bản #$1 của trang có tên “{{FULLPAGENAME}}” không tồn tại.\n\nLỗi này thường xuất hiện đối khi theo dõi liên kết lỗi thời đến phiên bản cũ của một trang đã bị x.\nXem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].",
+       "missing-revision": "Phiên bản #$1 của trang có tên “{{FULLPAGENAME}}” không tồn tại.\n\nLỗi này thường xuất hiện đối khi theo dõi liên kết lỗi thời đến phiên bản cũ của một trang đã bị xóa.\nXem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].",
        "userpage-userdoesnotexist": "Đây chưa có tài khoản với tên “<nowiki>$1</nowiki>”. Xin hãy kiểm tra lại nếu bạn muốn tạo hay sửa trang này.",
        "userpage-userdoesnotexist-view": "Chưa có tài khoản với tên “$1”.",
        "blocked-notice-logextract": "Người dùng này hiện đang bị cấm sửa đổi. Nhật trình cấm gần nhất được ghi ở dưới để tiện theo dõi:",
-       "clearyourcache": "<strong>Chú ý:</strong> Sau khi lưu trang, có thể bạn sẽ phải x bộ nhớ đệm của trình duyệt để xem các thay đổi.\n* <strong>Firefox / Safari:</strong> Nhấn giữ phím <em>Shift</em> trong khi nhấn <em>Tải lại</em> (<em>Reload</em>), hoặc nhấn tổ hợp <em>Ctrl-F5</em> hay <em>Ctrl-R</em> (⌘R trên Mac)\n* <strong>Google Chrome:</strong> Nhấn tổ hợp <em>Ctrl-Shift-R</em> (⇧⌘R trên Mac)\n* <strong>Internet Explorer:</strong> Nhấn giữ phím <em>Ctrl</em> trong khi nhấn <em>Làm tươi</em>, hoặc nhấn tổ hợp <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Mở <em>Menu → Cài đặt</em> (<em>Opera → Tùy chỉnh</em> trên Mac), mở tab <em>Quyền riêng tư & bảo mật</em>, bấm <em>Xóa dữ liệu duyệt web</em> và đánh hộp kiểm <em>Hình ảnh và tệp trong cache</em>.",
+       "clearyourcache": "<strong>Chú ý:</strong> Sau khi lưu trang, có thể bạn sẽ phải xóa bộ nhớ đệm của trình duyệt để xem các thay đổi.\n* <strong>Firefox / Safari:</strong> Nhấn giữ phím <em>Shift</em> trong khi nhấn <em>Tải lại</em> (<em>Reload</em>), hoặc nhấn tổ hợp <em>Ctrl-F5</em> hay <em>Ctrl-R</em> (⌘R trên Mac)\n* <strong>Google Chrome:</strong> Nhấn tổ hợp <em>Ctrl-Shift-R</em> (⇧⌘R trên Mac)\n* <strong>Internet Explorer:</strong> Nhấn giữ phím <em>Ctrl</em> trong khi nhấn <em>Làm tươi</em>, hoặc nhấn tổ hợp <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Mở <em>Menu → Cài đặt</em> (<em>Opera → Tùy chỉnh</em> trên Mac), mở tab <em>Quyền riêng tư & bảo mật</em>, bấm <em>Xóa dữ liệu duyệt web</em> và đánh hộp kiểm <em>Hình ảnh và tệp trong cache</em>.",
        "usercssyoucanpreview": "'''Mẹo:''' Sử dụng nút “{{int:showpreview}}” để kiểm thử bản CSS của bạn trước khi lưu trang.",
        "userjsyoucanpreview": "'''Mẹo:''' Sử dụng nút “{{int:showpreview}}” để kiểm thử bản JS của bạn trước khi lưu trang.",
        "usercsspreview": "'''Hãy nhớ rằng bạn chỉ đang xem trước trang CSS cá nhân của bạn.\nNó chưa được lưu!'''",
        "editingold": "'''Chú ý: bạn đang sửa một phiên bản cũ. Nếu bạn lưu, các sửa đổi trên các phiên bản mới hơn sẽ bị mất.'''",
        "yourdiff": "Khác",
        "copyrightwarning": "Xin chú ý rằng tất cả các đóng góp của bạn tại {{SITENAME}} được xem là sẽ phát hành theo giấy phép $2 (xem $1 để biết thêm chi tiết). Nếu bạn không muốn những gì mình viết ra bị sửa đổi không thương tiếc và không sẵn lòng cho phép phát hành lại, xin đừng nhấn nút \"Lưu trang\".<br />\nBạn phải đảm bảo với chúng tôi rằng chính bạn là tác giả của những gì mình viết ra, hoặc chép nó từ một nguồn thuộc phạm vi công cộng hoặc tự do tương đương.<br />\n<strong>ĐỪNG ĐĂNG NỘI DUNG CÓ BẢN QUYỀN MÀ CHƯA XIN PHÉP!</strong>",
-       "copyrightwarning2": "Xin chú ý rằng tất cả các đóng góp của bạn tại {{SITENAME}} có thể được sửa đổi, thay thế, hoặc x bỏ bởi các thành viên khác. Nếu bạn không muốn trang của bạn bị sửa đổi không thương tiếc, đừng đăng trang ở đây.<br />\nBạn phải đảm bảo với chúng tôi rằng chính bạn là người viết nên, hoặc chép nó từ một nguồn thuộc phạm vi công cộng hoặc tự do tương đương (xem $1 để biết thêm chi tiết).\n'''Đừng đăng nội dung có bản quyền mà không xin phép!'''",
+       "copyrightwarning2": "Xin chú ý rằng tất cả các đóng góp của bạn tại {{SITENAME}} có thể được sửa đổi, thay thế, hoặc xóa bỏ bởi các thành viên khác. Nếu bạn không muốn trang của bạn bị sửa đổi không thương tiếc, đừng đăng trang ở đây.<br />\nBạn phải đảm bảo với chúng tôi rằng chính bạn là người viết nên, hoặc chép nó từ một nguồn thuộc phạm vi công cộng hoặc tự do tương đương (xem $1 để biết thêm chi tiết).\n'''Đừng đăng nội dung có bản quyền mà không xin phép!'''",
        "editpage-cannot-use-custom-model": "Không thể thay đổi kiểu nội dung của trang này.",
        "longpageerror": "'''Lỗi: Văn bạn mà bạn muốn lưu dài $1 kilôbyte, dài hơn độ dài tối đa cho phép $2 kilôbyte.'''\nKhông thể lưu trang.",
        "readonlywarning": "<strong>CẢNH BÁO: Cơ sở dữ liệu đã bị khóa để bảo dưỡng, do đó bạn không thể lưu các sửa đổi của mình. Bạn nên cắt-dán đoạn bạn vừa sửa vào một tập tin và lưu nó lại để sửa đổi sau này.</strong>\n\nQuản trị viên hệ thống khi khóa dữ liệu đã đưa ra lý do: $1",
        "permissionserrorstext": "Bạn không có quyền thực hiện thao tác đó, vì {{PLURAL:$1|lý do|các lý do}} sau:",
        "permissionserrorstext-withaction": "Bạn không được quyền $2, vì {{PLURAL:$1|lý do|các lý do}} sau:",
        "contentmodelediterror": "Bạn không thể sửa đổi phiên bản này vì kiểu nội dung của nó là <code>$1</code>, trong khi kiểu nội dung của trang là <code>$2</code>.",
-       "recreate-moveddeleted-warn": "'''Cảnh báo: Bạn sắp tạo lại một trang từng bị xoá trước đây.'''\n\nBạn nên cân nhắc trong việc tiếp tục soạn thảo trang này.\nCác nhật trình xoá và di chuyển của trang được đưa ra dưới đây để tiện theo dõi:",
-       "moveddeleted-notice": "Trang này đã bị xoá.\nCác nhật trình xoá và di chuyển của trang được đưa ra dưới đây để tiện theo dõi.",
+       "recreate-moveddeleted-warn": "'''Cảnh báo: Bạn sắp tạo lại một trang từng bị xóa trước đây.'''\n\nBạn nên cân nhắc trong việc tiếp tục soạn thảo trang này.\nCác nhật trình xóa và di chuyển của trang được đưa ra dưới đây để tiện theo dõi:",
+       "moveddeleted-notice": "Trang này đã bị xóa.\nCác nhật trình xóa và di chuyển của trang được đưa ra dưới đây để tiện theo dõi.",
        "moveddeleted-notice-recent": "Rất tiếc, trang này vừa bị xóa (trong vòng 24 giờ trước).\nCác nhật trình xóa và di chuyển của trang được đưa ra dưới đây để tiện theo dõi.",
        "log-fulllog": "Xem nhật trình đầy đủ",
        "edit-hook-aborted": "Một phần bổ trợ phần mềm đã bỏ qua sửa đổi này.\nKhông có lý do nào được đưa ra.",
        "page_last": "cuối",
        "histlegend": "Chọn so sánh: Đánh dấu để chọn các phiên bản để so sánh rồi nhấn Enter hoặc nút ở dưới.<br />\nChú giải: '''({{int:cur}})''' = khác với phiên bản hiện hành, '''({{int:last}})''' = khác với phiên bản trước, '''{{int:minoreditletter}}''' = sửa đổi nhỏ.",
        "history-fieldset-title": "Tìm trong lịch sử trang",
-       "history-show-deleted": "Chỉ những sửa đổi bị x",
+       "history-show-deleted": "Chỉ những sửa đổi bị xóa",
        "histfirst": "cũ nhất",
        "histlast": "mới nhất",
        "historysize": "({{PLURAL:$1|1 byte|$1 byte}})",
        "history-feed-item-nocomment": "$1 vào lúc $2",
        "history-feed-empty": "Trang bạn yêu cầu không tồn tại. Có thể là nó đã bị xóa khỏi wiki hay được đổi tên. Hãy [[Special:Search|tìm kiếm trong wiki]] về các trang mới có liên quan.",
        "history-edit-tags": "Sửa đổi thẻ của các phiên bản đã chọn",
-       "rev-deleted-comment": "(tóm lược sửa đổi đã bị x)",
-       "rev-deleted-user": "(tên người dùng đã bị x)",
-       "rev-deleted-event": "(chi tiết nhật trình đã bị x)",
+       "rev-deleted-comment": "(tóm lược sửa đổi đã bị xóa)",
+       "rev-deleted-user": "(tên người dùng đã bị xóa)",
+       "rev-deleted-event": "(chi tiết nhật trình đã bị xóa)",
        "rev-deleted-user-contribs": "[tên người dùng hay địa chỉ IP bị ẩn – sửa đổi được ẩn khỏi danh sách đóng góp]",
-       "rev-deleted-text-permission": "Phiên bản này đã bị '''xoá'''.\nCó thể có thêm chi tiết tại [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} nhật trình xoá].",
+       "rev-deleted-text-permission": "Phiên bản này đã bị '''xóa'''.\nCó thể có thêm chi tiết tại [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].",
        "rev-suppressed-text-permission": "Phiên bản này đã bị '''ẩn'''.\nCó thêm chi tiết tại [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} nhật trình ẩn].",
        "rev-deleted-text-unhide": "Phiên bản này đã bị '''xóa'''.\nCó thể có thêm chi tiết tại [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].\nBạn vẫn có thể [$1 xem phiên bản này] nếu muốn.",
        "rev-suppressed-text-unhide": "Phiên bản này đã bị '''giấu'''.\nCó thể có thêm chi tiết tại [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} nhật trình giấu].\nBạn vẫn có thể [$1 xem phiên bản này] nếu muốn.",
        "prefs-watchlist": "Theo dõi",
        "prefs-editwatchlist": "Sửa các trang tôi theo dõi",
        "prefs-editwatchlist-label": "Sửa đổi các mục trong danh sách theo dõi của bạn:",
-       "prefs-editwatchlist-edit": "Xem và x các tiêu đề trong danh sách theo dõi của bạn",
+       "prefs-editwatchlist-edit": "Xem và xóa các tiêu đề trong danh sách theo dõi của bạn",
        "prefs-editwatchlist-raw": "Sửa danh sách theo dõi dạng thô",
        "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:",
        "saveusergroups": "Lưu nhóm {{GENDER:$1}}người dùng",
        "userrights-groupsmember": "Thuộc nhóm:",
        "userrights-groupsmember-auto": "Ngầm thuộc nhóm:",
-       "userrights-groups-help": "Bạn có thể thay đổi các nhóm người dùng của thành viên này:\n* Hộp kiểm được đánh dấu có nghĩa rằng thành viên thuộc về nhóm đó.\n* Hộp không được đánh dấu có nghĩa rằng thành viên không thuộc về nhóm đó.\n* Dấu * có nghĩa là bạn sẽ không thể x thành viên ra khỏi nhóm này một khi bạn đã thêm họ vào, hoặc ngược lại.\n* Dấu # có nghĩa là bạn chỉ có thể giảm thời hạn thành viên được ở trong nhóm này; bạn không thể tăng thời hạn đó lên được.",
+       "userrights-groups-help": "Bạn có thể thay đổi các nhóm người dùng của thành viên này:\n* Hộp kiểm được đánh dấu có nghĩa rằng thành viên thuộc về nhóm đó.\n* Hộp không được đánh dấu có nghĩa rằng thành viên không thuộc về nhóm đó.\n* Dấu * có nghĩa là bạn sẽ không thể xóa thành viên ra khỏi nhóm này một khi bạn đã thêm họ vào, hoặc ngược lại.\n* Dấu # có nghĩa là bạn chỉ có thể giảm thời hạn thành viên được ở trong nhóm này; bạn không thể tăng thời hạn đó lên được.",
        "userrights-reason": "Lý do:",
        "userrights-no-interwiki": "Bạn không có quyền thay đổi quyền hạn của thành viên tại các wiki khác.",
        "userrights-nodatabase": "Cơ sở dữ liệu $1 không tồn tại hoặc nằm ở bên ngoài.",
        "group-bot": "Bot",
        "group-sysop": "Bảo quản viên",
        "group-bureaucrat": "Hành chính viên",
-       "group-suppress": "Người x hẳn Flow",
+       "group-suppress": "Người xóa hẳn Flow",
        "group-all": "(tất cả)",
        "group-user-member": "{{GENDER:$1}}thành viên",
        "group-autoconfirmed-member": "{{GENDER:$1}}thành viên tự động xác nhận",
        "group-bot-member": "{{GENDER:$1}}bot",
        "group-sysop-member": "{{GENDER:$1}}bảo quản viên",
        "group-bureaucrat-member": "{{GENDER:$1}}hành chính viên",
-       "group-suppress-member": "{{GENDER:$1}}người x hẳn Flow",
+       "group-suppress-member": "{{GENDER:$1}}người xóa hẳn Flow",
        "grouppage-user": "{{ns:project}}:Thành viên",
        "grouppage-autoconfirmed": "{{ns:project}}:Thành viên tự xác nhận",
        "grouppage-bot": "{{ns:project}}:Bot",
        "right-nominornewtalk": "Không báo về tin nhắn mới khi trang thảo luận chỉ được sửa đổi nhỏ",
        "right-apihighlimits": "Được dùng giới hạn cao hơn khi truy vấn API",
        "right-writeapi": "Sử dụng API để viết",
-       "right-delete": "X trang",
-       "right-bigdelete": "X trang có lịch sử lớn",
-       "right-deletelogentry": "X và phục hồi khoản mục nhật trình nào đó",
-       "right-deleterevision": "X và phục hồi phiên bản nào đó của trang",
-       "right-deletedhistory": "Xem phần lịch sử đã x, mà không xem nội dung đi kèm",
-       "right-deletedtext": "Xem văn bản đã x và các thay đổi giữa phiên bản đã xóa",
-       "right-browsearchive": "Tìm kiếm trang đã bị x",
+       "right-delete": "Xóa trang",
+       "right-bigdelete": "Xóa trang có lịch sử lớn",
+       "right-deletelogentry": "Xóa và phục hồi khoản mục nhật trình nào đó",
+       "right-deleterevision": "Xóa và phục hồi phiên bản nào đó của trang",
+       "right-deletedhistory": "Xem phần lịch sử đã xóa, mà không xem nội dung đi kèm",
+       "right-deletedtext": "Xem văn bản đã xóa và các thay đổi giữa phiên bản đã xóa",
+       "right-browsearchive": "Tìm kiếm trang đã bị xóa",
        "right-undelete": "Phục hồi trang",
        "right-suppressrevision": "Xem và hiện/ẩn các phiên bản trang cụ thể đối với mọi người dùng khác",
        "right-viewsuppressed": "Xem các phiên bản được ẩn mà mọi người khác không thấy được",
        "right-managechangetags": "Tạo và bật/tắt [[Special:Tags|thẻ]]",
        "right-applychangetags": "Áp dụng [[Special:Tags|thẻ]], cùng với những thay đổi của một người",
        "right-changetags": "Thêm và loại bỏ tùy ý các [[Special:Tags|thẻ]] vào các phiên bản riêng và các mục nhật trình",
-       "right-deletechangetags": "X [[Special:Tags|thẻ]] khỏi cơ sở dữ liệu",
+       "right-deletechangetags": "Xóa [[Special:Tags|thẻ]] khỏi cơ sở dữ liệu",
        "grant-generic": "Gói quyền “$1”",
        "grant-group-page-interaction": "Tương tác với trang",
        "grant-group-file-interaction": "Tương tác với tập tin",
        "grant-blockusers": "Cấm và bỏ cấm người dùng",
        "grant-createaccount": "Mở tài khoản",
        "grant-createeditmovepage": "Tạo, sửa đổi, và di chuyển trang",
-       "grant-delete": "X trang, phiên bản, và mục nhật trình",
+       "grant-delete": "Xóa trang, phiên bản, và mục nhật trình",
        "grant-editinterface": "Sửa không gian tên MediaWiki và CSS/JavaScript cá nhân",
        "grant-editmycssjs": "Sửa đổi CSS/JavaScript cá nhân của bạn",
        "grant-editmyoptions": "Sửa đổi tùy chọn cá nhân của bạn",
        "grant-uploadeditmovefile": "Tải lên, thay thế, và di chuyển tập tin",
        "grant-uploadfile": "Tải lên tập tin mới",
        "grant-basic": "Quyền cơ bản",
-       "grant-viewdeleted": "Xem các trang và tập tin đã x",
+       "grant-viewdeleted": "Xem các trang và tập tin đã xóa",
        "grant-viewmywatchlist": "Xem danh sách theo dõi của bạn",
        "grant-viewrestrictedlogs": "Xem mục nhật trình hạn chế",
        "newuserlogpage": "Nhật trình mở tài khoản",
        "action-reupload-shared": "ghi đè lên tập tin đang thuộc kho tập tin chung này",
        "action-upload_by_url": "tải lên tập tin này từ địa chỉ URL",
        "action-writeapi": "dùng API để sửa đổi",
-       "action-delete": "x trang này",
-       "action-deleterevision": "x phiên bản",
-       "action-deletelogentry": "x mục nhật trình",
-       "action-deletedhistory": "xem các phiên bản đã bị xóa của trang",
-       "action-deletedtext": "xem văn bản của phiên bản đã x",
-       "action-browsearchive": "tìm kiếm trang đã bị x",
+       "action-delete": "xóa trang này",
+       "action-deleterevision": "xóa phiên bản",
+       "action-deletelogentry": "xóa mục nhật trình",
+       "action-deletedhistory": "xem các phiên bản đã bị xóa của trang",
+       "action-deletedtext": "xem văn bản của phiên bản đã xóa",
+       "action-browsearchive": "tìm kiếm trang đã bị xóa",
        "action-undelete": "phục hồi trang",
        "action-suppressrevision": "xem và phục hồi phiên bản ẩn",
        "action-suppressionlog": "xem nhật trình ẩn giấu này",
        "action-managechangetags": "tạo và bật/tắt thẻ",
        "action-applychangetags": "áp dụng các thẻ cùng với những thay đổi của bạn",
        "action-changetags": "thêm và loại bỏ các thẻ tùy ý trên các phiên bản riêng và các mục nhật trình",
-       "action-deletechangetags": "xoá thẻ khỏi cơ sở dữ liệu",
+       "action-deletechangetags": "Xóa thẻ khỏi cơ sở dữ liệu",
        "action-purge": "làm mới trang này",
        "nchanges": "$1 thay đổi",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|sau lần truy cập vừa rồi}}",
        "rcfilters-savedqueries-setdefault": "Đặt làm mặc định",
        "rcfilters-savedqueries-unsetdefault": "Loại bỏ mặc định",
        "rcfilters-restore-default-filters": "Mặc định lại các bộ lọc",
-       "rcfilters-clear-all-filters": "X sạch các bộ lọc",
+       "rcfilters-clear-all-filters": "Xóa sạch các bộ lọc",
        "rcfilters-search-placeholder": "Lọc các thay đổi gần đây (duyệt hoặc bắt đầu đánh chữ)",
        "rcfilters-invalid-filter": "Bộ lọc không hợp lệ",
        "rcfilters-empty-filter": "Không có bộ lọc hiện hành. Tất cả các đóng góp được hiển thị.",
        "rcfilters-filter-categorization-label": "Thay đổi thể loại",
        "rcfilters-filter-categorization-description": "Các tác vụ xếp trang vào thể loại hoặc gỡ trang khỏi thể loại.",
        "rcfilters-filter-logactions-label": "Tác vụ được ghi trong nhật trình",
-       "rcfilters-filter-logactions-description": "Các tác vụ bảo quản, mở tài khoản, x trang, tải lên…",
+       "rcfilters-filter-logactions-description": "Các tác vụ bảo quản, mở tài khoản, xóa trang, tải lên…",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Bộ lọc \"Các sửa đổi nhỏ\" mâu thuẫn với một hoặc nhiều bộ lọc Loại sửa đổi, bởi có một số loại sửa đổi không thể được đánh dấu là \"nhỏ\". Các bộ lọc mâu thuẫn với nhau được đánh dấu trong mục Bộ lọc hiện hành ở trên.",
        "rcfilters-hideminor-conflicts-typeofchange": "Một số loại sửa đổi không thể được đánh dấu là \"nhỏ\", do đó bộ lọc này mâu thuẫn với các bộ lọc Loại sửa đổi dưới đây: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Bộ lọc Loại sửa đổi này mâu thuẫn với bộ lọc \"Các sửa đổi nhỏ\". Có một số loại sửa đổi không thể được đánh dấu là \"nhỏ\".",
        "recentchanges-page-added-to-category": "[[:$1]] được xếp vào thể loại",
        "recentchanges-page-added-to-category-bundled": "[[:$1]] được xếp vào thể loại; [[Special:WhatLinksHere/$1|trang này được nhúng vào các trang khác]]",
        "recentchanges-page-removed-from-category": "[[:$1]] được gỡ khỏi thể loại",
-       "recentchanges-page-removed-from-category-bundled": "[[:$1]] được x khỏi thể loại; [[Special:WhatLinksHere/$1|trang này được nhúng vào các trang khác]]",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] được xóa khỏi thể loại; [[Special:WhatLinksHere/$1|trang này được nhúng vào các trang khác]]",
        "autochange-username": "MediaWiki thay đổi tự động",
        "upload": "Tải tập tin lên",
        "uploadbtn": "Tải tập tin lên",
        "upload_directory_missing": "Thư mục tải lên ($1) không có hoặc máy chủ web không thể tạo được.",
        "upload_directory_read_only": "Máy chủ không thể sửa đổi thư mục tải lên ($1) được.",
        "uploaderror": "Lỗi khi tải lên",
-       "upload-recreate-warning": "'''Cảnh báo: Một tập tin với tên này đã từng bị xoá hoặc di chuyển.'''\n\nNhật trình xoá và di chuyển của trang này được ghi ở dưới để bạn tiện theo dõi:",
+       "upload-recreate-warning": "'''Cảnh báo: Một tập tin với tên này đã từng bị xóa hoặc di chuyển.'''\n\nNhật trình xóa và di chuyển của trang này được ghi ở dưới để bạn tiện theo dõi:",
        "uploadtext": "Hãy sử dụng mẫu sau để tải tập tin lên.\nĐể xem hoặc tìm kiếm những hình ảnh đã được tải lên trước đây, xin mời xem [[Special:FileList|danh sách các tập tin đã tải lên]].\nviệc tải lên và tải lên lại được ghi lại trong [[Special:Log/upload|nhật trình tải lên]], việc xóa đi được ghi trong [[Special:Log/delete|nhật trình xóa]].\n\nĐể đưa tập tin vào trang, hãy dùng liên kết có một trong các dạng sau:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Tập tin.jpg]]</nowiki></code>''' để phiên bản đầy đủ của tập tin\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Tập tin.png|200px|nhỏ|trái|văn bản thay thế]]</nowiki></code>''' để dùng hình đã được co lại còn 200 điểm ảnh chiều rộng đặt trong một hộp ở lề bên trái với 'văn bản thay thế' dùng để mô tả\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Tập tin.ogg]]</nowiki></code>''' để liên kết trực tiếp đến tập tin mà không hiển thị nó",
        "upload-permitted": "{{PLURAL:$2|Định dạng|Các định dạng}} tập tin được phép tải lên: $1.",
        "upload-preferred": "{{PLURAL:$1|Định dạng|Các định dạng}} tập tin nên dùng: $1.",
        "backend-fail-hashes": "Không thể tính các mã băm tập tin để so sánh.",
        "backend-fail-notsame": "Một tập tin khác biệt đã tồn tại ở $1.",
        "backend-fail-invalidpath": "$1 không phải đường dẫn lưu giữ hợp lệ.",
-       "backend-fail-delete": "Không thể xoá tập tin \"$1\".",
+       "backend-fail-delete": "Không thể xóa tập tin “$1”.",
        "backend-fail-describe": "Không thể thay đổi siêu dữ liệu của tập tin “$1”.",
        "backend-fail-alreadyexists": "Tập tin $1 đã tồn tại.",
        "backend-fail-store": "Không thể lưu tập tin $1 tại $2.",
        "filejournal-fail-dbquery": "Không thể cập nhật cơ sở dữ liệu nhật ký của phía sau lưu trữ “$1”.",
        "lockmanager-notlocked": "Không thể mở khóa “$1”; nó chưa khóa.",
        "lockmanager-fail-closelock": "Không thể đóng tập tin khóa cho “$1”.",
-       "lockmanager-fail-deletelock": "Không thể xoátập tin khóa cho \"$1\".",
+       "lockmanager-fail-deletelock": "Không thể xóa tập tin khóa cho “$1”.",
        "lockmanager-fail-acquirelock": "Không thể lấy khóa cho “$1”.",
        "lockmanager-fail-openlock": "Không thể mở tập tin khóa cho “$1”.",
        "lockmanager-fail-releaselock": "Không thể thả khóa cho “$1”.",
        "zip-unsupported": "Tập tin ZIP này sử dụng các tính năng ZIP không được hỗ trợ bởi MediaWiki.\nKhông thể kiểm tra nó về bảo mật.",
        "uploadstash": "Hàng đợi tải lên",
        "uploadstash-summary": "Đây là các tập tin mà bạn đã hoặc đang tải lên nhưng chưa xuất bản tại wiki. Chỉ bạn có thể xem các tập tin này.",
-       "uploadstash-clear": "X các tập tin đợi tải lên",
+       "uploadstash-clear": "Xóa các tập tin đợi tải lên",
        "uploadstash-nofiles": "Bạn không có tập tin trong hàng đợi tải lên.",
        "uploadstash-badtoken": "Tác vụ bị thất bại, có lẽ vì thông tin đăng nhập của bạn đã hết hạn. Hãy thử lại.",
        "uploadstash-errclear": "Việc dọn sạch các tập tin bị thất bại.",
        "license-nopreview": "(Không xem trước được)",
        "upload_source_url": "(URL hợp lệ của một tập tin ai có thể truy cập)",
        "upload_source_file": "(tập tin trên máy của bạn)",
-       "listfiles-delete": "x",
+       "listfiles-delete": "xóa",
        "listfiles-summary": "Trang đặc biệt này liệt kê các tập tin được tải lên.",
        "listfiles_search_for": "Tìm kiếm theo tên tập tin:",
        "listfiles-userdoesnotexist": "Tài khoản người dùng “$1” không được đăng ký.",
        "file-anchor-link": "Tập tin",
        "filehist": "Lịch sử tập tin",
        "filehist-help": "Nhấn vào một ngày/giờ để xem nội dung tập tin tại thời điểm đó.",
-       "filehist-deleteall": "x toàn bộ",
-       "filehist-deleteone": "x bản này",
+       "filehist-deleteall": "xóa toàn bộ",
+       "filehist-deleteone": "xóa bản này",
        "filehist-revert": "lùi lại",
        "filehist-current": "hiện",
        "filehist-datetime": "Ngày/Giờ",
        "filerevert-success": "'''[[Media:$1|$1]]''' đã được lùi về [$4 phiên bản lúc $3, $2].",
        "filerevert-badversion": "Không tồn tại phiên bản trước đó của tập tin tại thời điểm trên.",
        "filerevert-identical": "Phiên bản hiện tại của tập tin đã y hệt với phiên bản được chọn.",
-       "filedelete": "X $1",
-       "filedelete-legend": "X tập tin",
-       "filedelete-intro": "Bạn đang chuẩn bị x tập tin <strong>[[Media:$1|$1]]</strong> cùng với tất cả lịch sử của nó.",
-       "filedelete-intro-old": "Bạn đang x phiên bản của <strong>[[Media:$1|$1]]</strong> vào lúc [$4 $3, $2].",
+       "filedelete": "Xóa $1",
+       "filedelete-legend": "Xóa tập tin",
+       "filedelete-intro": "Bạn đang chuẩn bị xóa tập tin <strong>[[Media:$1|$1]]</strong> cùng với tất cả lịch sử của nó.",
+       "filedelete-intro-old": "Bạn đang xóa phiên bản của <strong>[[Media:$1|$1]]</strong> vào lúc [$4 $3, $2].",
        "filedelete-comment": "Lý do:",
-       "filedelete-submit": "X",
-       "filedelete-success": "<strong>$1</stron> đã bị xoá.",
-       "filedelete-success-old": "Phiên bản của <strong>[[Media:$1|$1]]</strong> vào lúc $3, $2 đã bị x.",
+       "filedelete-submit": "Xóa",
+       "filedelete-success": "<strong>$1</strong> đã bị xóa.",
+       "filedelete-success-old": "Phiên bản của <strong>[[Media:$1|$1]]</strong> vào lúc $3, $2 đã bị xóa.",
        "filedelete-nofile": "'''$1''' không tồn tại.",
        "filedelete-nofile-old": "Không có phiên bản lưu trữ của '''$1''' với các thuộc tính này.",
        "filedelete-otherreason": "Lý do bổ sung:",
        "filedelete-reason-otherlist": "Lý do khác",
-       "filedelete-reason-dropdown": "*Những lý do x thường gặp\n** Vi phạm bản quyền\n** Tập tin trùng lặp",
-       "filedelete-edit-reasonlist": "Sửa lý do x",
-       "filedelete-maintenance": "Tác vụ x và phục hồi tập tin đã bị tắt tạm thời trong khi bảo trì.",
-       "filedelete-maintenance-title": "Không thể x tập tin",
+       "filedelete-reason-dropdown": "*Những lý do xóa thường gặp\n** Vi phạm bản quyền\n** Tập tin trùng lặp",
+       "filedelete-edit-reasonlist": "Sửa lý do xóa",
+       "filedelete-maintenance": "Tác vụ xóa và phục hồi tập tin đã bị tắt tạm thời trong khi bảo trì.",
+       "filedelete-maintenance-title": "Không thể xóa tập tin",
        "mimesearch": "Tìm kiếm theo định dạng",
        "mimesearch-summary": "Trang này có khả năng lọc tập tin theo kiểu MIME. Đầu vào: kiểu-nội-dung/kiểu-phụ hoặc kiểu-nội-dung/*, ví dụ <code>image/jpeg</code>.",
        "mimetype": "Kiểu MIME:",
        "listduplicatedfiles-summary": "Đây là danh sách các tập tin là bản sao của tập tin khác, chỉ tính theo phiên bản mới nhất của các tập tin địa phương.",
        "listduplicatedfiles-entry": "[[:File:$1|$1]] có [[$3|{{PLURAL:$2|một bản sao|$2 bản sao}}]].",
        "unusedtemplates": "Bản mẫu chưa dùng",
-       "unusedtemplatestext": "Trang này liệt kê tất cả các trang trong không gian tên {{ns:template}} mà chưa được dùng trong trang nào khác.\nHãy nhớ kiểm tra các liên kết khác đến bản mẫu trước khi x chúng.",
+       "unusedtemplatestext": "Trang này liệt kê tất cả các trang trong không gian tên {{ns:template}} mà chưa được dùng trong trang nào khác.\nHãy nhớ kiểm tra các liên kết khác đến bản mẫu trước khi xóa chúng.",
        "unusedtemplateswlh": "liên kết khác",
        "randompage": "Trang ngẫu nhiên",
        "randompage-nopages": "Hiện chưa có trang nào trong {{PLURAL:$2||các}} không gian tên: $1.",
        "brokenredirects": "Đổi hướng sai",
        "brokenredirectstext": "Các trang đổi hướng sau đây liên kết đến trang không tồn tại:",
        "brokenredirects-edit": "sửa",
-       "brokenredirects-delete": "x",
+       "brokenredirects-delete": "xóa",
        "withoutinterwiki": "Trang chưa có liên kết ngoại ngữ",
        "withoutinterwiki-summary": "Các trang sau đây không có liên kết đến các phiên bản ngoại ngữ khác:",
        "withoutinterwiki-legend": "Tiền tố",
        "categories-submit": "Xem",
        "categoriespagetext": "{{PLURAL:$1|Thể loại|Các thể loại}} dưới đây có trang hoặc tập tin phương tiện.\nNhững [[Special:UnusedCategories|thể loại trống]] không được hiển thị tại đây.\nXem thêm [[Special:WantedCategories|thể loại cần thiết]].",
        "categoriesfrom": "Hiển thị thể loại bằng đầu từ:",
-       "deletedcontributions": "Đóng góp đã bị x của thành viên",
-       "deletedcontributions-title": "Đóng góp đã bị x của thành viên",
+       "deletedcontributions": "Đóng góp đã bị xóa của thành viên",
+       "deletedcontributions-title": "Đóng góp đã bị xóa của thành viên",
        "sp-deletedcontributions-contribs": "đóng góp",
        "linksearch": "Tìm kiếm liên kết ngoài",
        "linksearch-pat": "Mẫu liên kết:",
        "removewatch": "Gỡ khỏi danh sách theo dõi",
        "removedwatchtext": "“[[:$1]]” cùng trang thảo luận đã được đưa ra khỏi [[Special:Watchlist|danh sách theo dõi]] của bạn.",
        "removedwatchtext-talk": "“[[:$1]]” cùng trang đi kèm đã được đưa ra khỏi [[Special:Watchlist|danh sách theo dõi]] của bạn.",
-       "removedwatchtext-short": "Trang \"$1\" đã được xoá khỏi danh sách theo dõi của bạn.",
+       "removedwatchtext-short": "Trang “$1” đã được xóa khỏi danh sách theo dõi của bạn.",
        "watch": "Theo dõi",
        "watchthispage": "Theo dõi trang này",
        "unwatch": "Ngừng theo dõi",
        "unwatchthispage": "Ngừng theo dõi",
        "notanarticle": "Không phải trang có nội dung",
-       "notvisiblerev": "Phiên bản bị x",
+       "notvisiblerev": "Phiên bản bị xóa",
        "watchlist-details": "Bạn đang theo dõi {{PLURAL:$1}}$1 trang, không kể riêng các trang thảo luận.",
        "wlheader-enotif": "Đã bật thông báo qua thư điện tử.",
        "wlheader-showupdated": "Các trang đã thay đổi kể từ lần cuối bạn xem chúng được in '''đậm'''",
        "watcherrortext": "Lỗi xảy ra khi theo dõi hoặc ngừng theo dõi “$1”.",
        "enotif_reset": "Đánh dấu đã xem mọi trang",
        "enotif_impersonal_salutation": "thành viên {{SITENAME}}",
-       "enotif_subject_deleted": "Trang $1 tại {{SITENAME}} đã được x bởi $2.",
+       "enotif_subject_deleted": "Trang $1 tại {{SITENAME}} đã được xóa bởi $2.",
        "enotif_subject_created": "Trang $1 tại {{SITENAME}} đã được tạo ra bởi $2.",
        "enotif_subject_moved": "Trang $1 tại {{SITENAME}} đã được di chuyển bởi $2.",
        "enotif_subject_restored": "Trang $1 tại {{SITENAME}} đã được phục hồi bởi $2.",
        "enotif_subject_changed": "Trang $1 tại {{SITENAME}} đã được thay đổi bởi $2",
-       "enotif_body_intro_deleted": "Trang $1 tại {{SITENAME}} đã được $2 x vào $PAGEEDITDATE, xem $3.",
+       "enotif_body_intro_deleted": "Trang $1 tại {{SITENAME}} đã được $2 xóa vào $PAGEEDITDATE, xem $3.",
        "enotif_body_intro_created": "Trang $1 tại {{SITENAME}} đã được $2 tạo ra vào $PAGEEDITDATE. Xem phiên bản hiện hành tại $3 .",
        "enotif_body_intro_moved": "Trang $1 tại {{SITENAME}} đã được $2 di chuyển vào $PAGEEDITDATE. Xem phiên bản hiện hành tại $3 .",
        "enotif_body_intro_restored": "Trang $1 tại {{SITENAME}} đã được $2 phục hồi vào $PAGEEDITDATE. Xem phiên bản hiện hành tại $3 .",
        "enotif_lastvisited": "Xem $1 để biết các thay đổi diễn ra từ lần xem cuối cùng của bạn.",
        "enotif_lastdiff": "Vào $1 để xem sự thay đổi này.",
        "enotif_anon_editor": "người dùng vô danh $1",
-       "enotif_body": "Xin chào $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nTóm lược sửa đổi: $PAGESUMMARY $PAGEMINOREDIT\n\nLiên lạc với người viết trang qua:\nthư: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nSẽ không có thông báo nào khác nếu có sự thay đổi tiếp theo trừ khi bạn xem trang đó lúc khi đăng nhập. Bạn cũng có thể thiết lập lại việc nhắc nhở cho tất cả các trang nằm trong danh sách theo dõi của bạn.\n\nHệ thống báo tin {{SITENAME}} thân thiện của bạn\n\n--\nĐể thay đổi các thiết lập thư điện tử thông báo, mời xem:\n{{canonicalurl:{{#special:Preferences}}}}\n\nĐể thay đổi các thiết lập danh sách theo dõi, mời xem:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nĐể x trang ra khỏi danh sách theo dõi của bạn, mời xem:\n$UNWATCHURL\n\nPhản hồi và cần sự hỗ trợ:\n$HELPPAGE",
+       "enotif_body": "Xin chào $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nTóm lược sửa đổi: $PAGESUMMARY $PAGEMINOREDIT\n\nLiên lạc với người viết trang qua:\nthư: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nSẽ không có thông báo nào khác nếu có sự thay đổi tiếp theo trừ khi bạn xem trang đó lúc khi đăng nhập. Bạn cũng có thể thiết lập lại việc nhắc nhở cho tất cả các trang nằm trong danh sách theo dõi của bạn.\n\nHệ thống báo tin {{SITENAME}} thân thiện của bạn\n\n--\nĐể thay đổi các thiết lập thư điện tử thông báo, mời xem:\n{{canonicalurl:{{#special:Preferences}}}}\n\nĐể thay đổi các thiết lập danh sách theo dõi, mời xem:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nĐể xóa trang ra khỏi danh sách theo dõi của bạn, mời xem:\n$UNWATCHURL\n\nPhản hồi và cần sự hỗ trợ:\n$HELPPAGE",
        "created": "viết mới",
        "changed": "thay đổi",
-       "deletepage": "X trang",
+       "deletepage": "Xóa trang",
        "confirm": "Xác nhận",
        "excontent": "nội dung cũ: “$1”",
        "excontentauthor": "nội dung cũ: “$1”; người viết duy nhất: “[[Special:Contributions/$2|$2]]” ([[User talk:$2|thảo luận]])",
        "exbeforeblank": "nội dung trước khi tẩy trống: “$1”",
-       "delete-confirm": "Xoá \"$1\"",
-       "delete-legend": "X",
-       "historywarning": "<strong>Cảnh báo:</strong> Trang bạn sắp x đã có lịch sử $1 phiên bản:",
+       "delete-confirm": "Xóa “$1”",
+       "delete-legend": "Xóa",
+       "historywarning": "<strong>Cảnh báo:</strong> Trang bạn sắp xóa đã có lịch sử $1 phiên bản:",
        "historyaction-submit": "Xem",
-       "confirmdeletetext": "Bạn sắp xoá một trang cùng với tất cả lịch sử của nó.\nXin xác nhận việc bạn định làm, và hiểu rõ những hệ lụy của nó, và bạn thực hiện nó theo đúng đúng [[{{MediaWiki:Policy-url}}|quy định]].",
+       "confirmdeletetext": "Bạn đang chuẩn bị xóa một trang cùng với tất cả lịch sử của nó.\nXin xác nhận việc bạn định làm, và hiểu rõ những hệ lụy của nó, và bạn thực hiện nó theo đúng đúng [[{{MediaWiki:Policy-url}}|quy định]].",
        "actioncomplete": "Đã thực hiện xong",
        "actionfailed": "Tác động bị thất bại",
-       "deletedtext": "Đã xoá \"$1\". Xem danh sách các tác vụ xoá gần nhất tại $2.",
-       "dellogpage": "Nhật trình x",
-       "dellogpagetext": "Dưới đây là danh sách các trang bị x gần đây nhất.",
-       "deletionlog": "nhật trình x",
+       "deletedtext": "Đã xóa “$1”. Xem danh sách các tác vụ xóa gần nhất tại $2.",
+       "dellogpage": "Nhật trình xóa",
+       "dellogpagetext": "Dưới đây là danh sách các trang bị xóa gần đây nhất.",
+       "deletionlog": "nhật trình xóa",
        "reverted": "Đã hồi phục một phiên bản cũ",
        "deletecomment": "Lý do:",
        "deleteotherreason": "Lý do khác/bổ sung:",
        "deletereasonotherlist": "Lý do khác",
-       "deletereason-dropdown": "*Các lý do x phổ biến\n** Đăng tỉ thư rác\n** Phá hoại\n** Vi phạm bản quyền\n** Tác giả yêu cầu\n** Chuyển hướng sai",
-       "delete-edit-reasonlist": "Sửa lý do x",
-       "delete-toobig": "Trang này có lịch sử sửa đổi lớn, đến hơn $1 lần sửa đổi.\nViệc x các trang như vậy bị hạn chế để ngăn ngừa phá hoại do vô ý cho {{SITENAME}}.",
-       "delete-warning-toobig": "Trang này có lịch sử sửa đổi lớn, đến hơn $1 lần sửa đổi.\nViệc x các trang có thể làm tổn hại đến hoạt động của cơ sở dữ liệu {{SITENAME}};\nhãy cẩn trọng khi thực hiện.",
-       "deleteprotected": "Bạn không thể x trang này vì nó đã được khóa lại.",
-       "deleting-backlinks-warning": "<strong>Cảnh báo:</strong> Có [[Special:WhatLinksHere/{{FULLPAGENAME}}|trang khác]] liên kết đến hoặc nhúng trang mà bạn sắp x.",
+       "deletereason-dropdown": "*Các lý do xóa phổ biến\n** Đăng tỉ thư rác\n** Phá hoại\n** Vi phạm bản quyền\n** Tác giả yêu cầu\n** Chuyển hướng sai",
+       "delete-edit-reasonlist": "Sửa lý do xóa",
+       "delete-toobig": "Trang này có lịch sử sửa đổi lớn, đến hơn $1 lần sửa đổi.\nViệc xóa các trang như vậy bị hạn chế để ngăn ngừa phá hoại do vô ý cho {{SITENAME}}.",
+       "delete-warning-toobig": "Trang này có lịch sử sửa đổi lớn, đến hơn $1 lần sửa đổi.\nViệc xóa các trang có thể làm tổn hại đến hoạt động của cơ sở dữ liệu {{SITENAME}};\nhãy cẩn trọng khi thực hiện.",
+       "deleteprotected": "Bạn không thể xóa trang này vì nó đã được khóa lại.",
+       "deleting-backlinks-warning": "<strong>Cảnh báo:</strong> Có [[Special:WhatLinksHere/{{FULLPAGENAME}}|trang khác]] liên kết đến hoặc nhúng trang mà bạn sắp xóa.",
        "rollback": "Lùi tất cả sửa đổi",
        "rollbacklink": "lùi tất cả",
        "rollbacklinkcount": "lùi tất cả $1 sửa đổi",
        "restriction-level-sysop": "khóa hẳn",
        "restriction-level-autoconfirmed": "hạn chế sửa đổi",
        "restriction-level-all": "mọi mức độ",
-       "undelete": "Xem các trang bị x",
-       "undeletepage": "Xem và phục hồi trang bị x",
+       "undelete": "Xem các trang bị xóa",
+       "undeletepage": "Xem và phục hồi trang bị xóa",
        "undeletepagetitle": "'''Sau đây là những phiên bản đã bị xóa của [[:$1]].'''",
-       "viewdeletedpage": "Xem các trang bị x",
+       "viewdeletedpage": "Xem các trang bị xóa",
        "undeletepagetext": "{{PLURAL:$1|Trang sau|$1 trang sau}} đã bị xóa nhưng vẫn nằm trong kho lưu trữ và có thể phục hồi được. Kho lưu trữ sẽ được xóa định kỳ.",
        "undelete-fieldset-title": "Phục hồi phiên bản",
        "undeleteextrahelp": "Để phục hồi toàn bộ lịch sử trang, hãy để trống các hộp kiểm và bấm nút '''''{{int:undeletebtn}}'''''.\nĐể thực hiện phục hồi có chọn lọc, hãy đánh dấu vào hộp kiểm của các phiên bản muốn phục hồi, rồi bấm nút '''''{{int:undeletebtn}}'''''.\nBấm nút '''''Tẩy trống''''' sẽ tẩy trống ô lý do và tất cả các hộp kiểm.",
-       "undeleterevisions": "$1 phiên bản đã bị x",
+       "undeleterevisions": "$1 phiên bản đã bị xóa",
        "undeletehistory": "Nếu bạn phục hồi trang này, tất cả các phiên bản của nó cũng sẽ được phục hồi vào lịch sử của trang.\nNếu một trang mới có cùng tên đã được tạo ra kể từ khi xóa trang này, các phiên bản được khôi phục sẽ xuất hiện trong lịch sử trước.",
        "undeleterevdel": "Việc phục hồi sẽ không được thực hiện nếu nó dẫn đến việc phiên bản trang hoặc tập tin trên cùng bị xóa mất một phần.\nTrong trường hợp đó, bạn phải bỏ đánh dấu hộp kiểm hoặc bỏ ẩn những phiên bản bị xóa mới nhất.",
        "undeletehistorynoadmin": "Trang này đã bị xóa.\nLý do xóa trang được hiển thị dưới đây, cùng với thông tin về những người đã sửa đổi trang này trước khi bị xóa.\nChỉ có bảo quản viên mới xem được văn bản đầy đủ của những phiên bản trang bị xóa.",
        "log-action-filter-delete-delete": "Xóa trang",
        "log-action-filter-delete-delete_redir": "Ghi đè trang đổi hướng",
        "log-action-filter-delete-restore": "Phục hồi trang",
-       "log-action-filter-delete-event": "X nhật trình",
+       "log-action-filter-delete-event": "Xóa nhật trình",
        "log-action-filter-delete-revision": "Xóa phiên bản",
        "log-action-filter-import-interwiki": "Nhập liên wiki",
        "log-action-filter-import-upload": "Nhập bằng cách tải lên XML",
index da54fcd..066206e 100644 (file)
        "anontalk": "Copinaedje",
        "navigation": "Naiviaedje",
        "and": "&#32;eyet",
-       "qbfind": "Trover",
-       "qbbrowse": "Foyter",
-       "qbedit": "Candjî",
-       "qbpageoptions": "Cisse pådje ci",
-       "qbmyoptions": "Mes pådjes",
        "actions": "Accions",
        "namespaces": "Espåces di lomaedje",
        "variants": "Variantes",
        "view-foreign": "Vey so $1",
        "edit": "Candjî",
        "create": "Ahiver",
-       "editthispage": "Candjî l' pådje",
-       "create-this-page": "Ahiver cisse pådje la",
        "delete": "Disfacer",
-       "deletethispage": "Disfacer l' pådje",
        "undelete_short": "Rapexhî {{PLURAL:$1|on candjmint|$1 candjmints}}",
        "viewdeleted_short": "Vey {{PLURAL:$1|on candjmint disfacé|$1 candjmints disfacés}}",
        "protect": "Protedjî",
        "protect_change": "candjî",
-       "protectthispage": "Protedjî l' pådje",
        "unprotect": "Candjî l' protedjaedje",
-       "unprotectthispage": "Candjî l' protedjaedje del pådje",
        "newpage": "Novele pådje",
-       "talkpage": "Copene sol pådje",
        "talkpagelinktext": "Copiner",
        "specialpage": "Pådje sipeciåle",
        "personaltools": "Usteyes da vosse",
-       "articlepage": "Vey l' årtike",
        "talk": "Copene",
        "views": "Vuwes",
        "toolbox": "Usteyes",
-       "userpage": "Vey li pådje di l' uzeu",
-       "projectpage": "Vey li pådje do pordjet",
        "imagepage": "Vey li pådje do fitchî",
        "viewtalkpage": "Vey li pådje di copene",
        "otherlanguages": "Ôtes lingaedjes",
        "edit-gone-missing": "Li pàdje n' a sepou esse rapontieye.\nMotoit k' elle a stî tapêye evoye.",
        "edit-conflict": "Ecramiaedje di candjmints.",
        "edit-no-change": "Vosse sicrijhaedje n' a nén passé, paski rén n' a stî candjî al modêye di dvant.",
+       "postedit-confirmation-saved": "vosse candjmint a stî schapé",
        "edit-already-exists": "Li novele pâdje n' a savou esse ahivêye, ca cisse pâdje la egzistêye dedja.",
        "editwarning-warning": "Cwiter cisse pådje ci vos frè piede tos les candjmints ki vos avoz fwait.\nSi vos estoz elodjî, vos ploz dismete cist adviertixhmint ci dins l' linwete «Boesse di tecse» di vos preferinces.",
        "post-expand-template-inclusion-warning": "'''Asteme:''' I gn a trop di modeles dins cisse pådje ci.\nSacwants di zels ni seront nén eployîs.",
        "action-suppressionlog": "vey ci djournå privé ci",
        "action-block": "espaitchî cist(e) uzeu(se) ci di scrire",
        "action-protect": "candjî les liveas d' protedjaedje del pådje",
+       "action-autopatrol": "aveur vosse candjmint marké come ricoridjî",
        "nchanges": "$1 {{PLURAL:$1|candjmint|candjmints}}",
        "recentchanges": "Dierins candjmints",
        "recentchanges-legend": "Tchuzes po les dierins candjmints",
        "pageinfo-toolboxlink": "Infôrmåcion sol pådje",
        "markaspatrolleddiff": "Marké come ricoridjî",
        "markaspatrolledtext": "Marker cisse pådje ci come dedja patrouyeye",
+       "markedaspatrolled": "Markêye come ricoridjeye",
+       "markedaspatrolledtext": "Li relîte modêye di [[:$1]] a stî markêye come ricoridjeye",
+       "markedaspatrollednotify": "Ci candjmint cial di $1 a stî marké come ricoridjî",
        "patrol-log-page": "Djournå des patrouyaedjes",
        "patrol-log-header": "Çouchal c' est on djournå des modêyes k' ont stî patrouyeyes.",
        "deletedrevision": "Viye modêye $1 disfacêye",
index 2b3796f..4001765 100644 (file)
        "mergehistory-fail-bad-timestamp": "צייטשטעמפל איז אומגילטיק.",
        "mergehistory-fail-invalid-source": "קוואל־בלאט איז אומגילטיק.",
        "mergehistory-fail-invalid-dest": "צילבלאט איז אומגילטיק.",
+       "mergehistory-fail-self-merge": "מקור און ציל בלעטער זענען די זעלבע.",
        "mergehistory-fail-toobig": "אוממעגלעך אויסצופירן היסטאריע צונויפמישונג ווײַל מען וואלט געדארפט באוועגן מער ווי $1 {{PLURAL:$1|רעוויזיע|רעוויזיעס}}.",
        "mergehistory-no-source": "מקור בלאַט $1 עקזיסטירט נישט.",
        "mergehistory-no-destination": "פֿארציל בלאַט $1 עקזיסטירט נישט.",
        "userrights-user-editname": "לייגט אריין א באַניצער-נאמען:",
        "editusergroup": "לאדן באַניצער גרופּעס",
        "editinguser": "ענדערן באַניצער רעכטן פון  {{GENDER:$1|באַניצער|באַניצערין}} <strong>[[User:$1|$1]]</strong> $2",
+       "viewinguserrights": "באַקוקן באַניצער רעכטן פון  {{GENDER:$1|באַניצער|באַניצערין}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "רעדאַקטירן {{GENDER:$1|באַניצער|באַניצערין}} גרופעס",
        "userrights-viewusergroup": "באַקוקן {{GENDER:$1|באַניצער|באַניצערין}} גרופעס",
        "saveusergroups": "אויפֿהיטן {{GENDER:$1|באַניצער}} גרופעס",
        "grant-group-file-interaction": "אינטעראגירן מיט מעדיע",
        "grant-group-watchlist-interaction": "אינטעראגירן מיט אייער אויפֿפאסונג־ליסטע",
        "grant-group-email": "שיקן ע־פאסט",
+       "grant-group-high-volume": "אויספֿירן מאסן אקטיוויטעטן",
        "grant-group-other": "פֿארשידענע אקטיוויטעטן",
        "grant-createaccount": "שאַפֿן קאנטעס",
        "grant-createeditmovepage": "שאפֿן, רעדאקטירן און באוועגן בלעטער",
        "grant-editmywatchlist": "רעדאקטירן אײַער אויפֿפאסונג ליסטע",
        "grant-editpage": "רעדאקטירן עקזיסטירנדע בלעטער",
        "grant-editprotected": "רעדאקטירן געשיצטע בלעטער",
+       "grant-patrol": "פאטראלירן ענדערונגען צו בלעטער",
+       "grant-sendemail": "שיקן ע-פאסט צו אנדערע באניצער",
+       "grant-uploadeditmovefile": "ארויפֿלאדן, טוישן און באוועגן טעקעס",
        "grant-uploadfile": "אַרויפֿלאָדן נייע טעקעס",
        "grant-basic": "בעיסיק רעכטן",
+       "grant-viewdeleted": "באקוקן אויסגעמעקטע טעקעס און בלעטער",
        "grant-viewmywatchlist": "קוקט אייער אויפפאסונג ליסטע",
        "newuserlogpage": "נייע באַניצערס לאָג-בוך",
        "newuserlogpagetext": "דאס איז א לאג פון באַניצערס אײַנשרײַבונגען.",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "ווייזן",
        "rcfilters-activefilters": "אַקטיווע פילטערס",
-       "rcfilters-quickfilters": "אויפֿגעהיטענע פֿילטער־שטעלונגען",
+       "rcfilters-quickfilters": "אויפֿגעהיטענע פֿילטערס",
        "rcfilters-quickfilters-placeholder-title": "קיין לינקען נאך נישט אויפֿגעהיטן",
        "rcfilters-savedqueries-defaultlabel": "אױפֿגעהיטענע פֿילטערס",
        "rcfilters-savedqueries-rename": "ענדערן נאמען",
        "rcfilters-empty-filter": "קיין אַקטיווע פילטערס. אלע ביישטייערונגען געוויזן.",
        "rcfilters-filterlist-title": "פֿילטערס",
        "rcfilters-filterlist-whatsthis": "וואס איז דאס?",
+       "rcfilters-highlightmenu-title": "אויסקלויבן א קאליר",
        "rcfilters-filterlist-noresults": "קיין פֿילטערס נישט געטראפֿן",
        "rcfilters-filtergroup-registration": "באניצער איינשרייבונג",
        "rcfilters-filter-registered-label": "אײַנגעשריבן",
        "special-characters-title-endash": "ען טירע",
        "special-characters-title-emdash": "עם טירע",
        "special-characters-title-minus": "מינוס",
+       "mw-widgets-dateinput-no-date": "קיין דאטע נישט אויסגעוויילט",
        "mw-widgets-titleinput-description-new-page": "דער בלאַט עקזיסטירט נאך נישט",
        "date-range-from": "פֿון דאטע",
        "date-range-to": "ביז דאטע:",
index 49bd05c..3910f29 100644 (file)
@@ -168,7 +168,6 @@ class CheckSyntax extends Maintenance {
         * @return array Resulting list of changed files
         */
        private function getGitModifiedFiles( $path ) {
-
                global $wgMaxShellMemory;
 
                if ( !is_dir( "$path/.git" ) ) {
index 24a63a3..9559623 100644 (file)
@@ -43,7 +43,6 @@ class DeleteOldRevisions extends Maintenance {
        }
 
        function doDelete( $delete = false, $args = [] ) {
-
                # Data should come off the master, wrapped in a transaction
                $dbw = $this->getDB( DB_MASTER );
                $this->beginTransaction( $dbw, __METHOD__ );
index e649c9d..53a317a 100644 (file)
@@ -113,14 +113,18 @@ $maintenance->execute();
 // Potentially debug globals
 $maintenance->globals();
 
-// Perform deferred updates.
-$lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
-$lbFactory->commitMasterChanges( $maintClass );
-DeferredUpdates::doUpdates();
+if ( $maintenance->getDbType() !== Maintenance::DB_NONE ) {
+       // Perform deferred updates.
+       $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+       $lbFactory->commitMasterChanges( $maintClass );
+       DeferredUpdates::doUpdates();
+}
 
 // log profiling info
 wfLogProfilingData();
 
-// Commit and close up!
-$lbFactory->commitMasterChanges( 'doMaintenance' );
-$lbFactory->shutdown( $lbFactory::SHUTDOWN_NO_CHRONPROT );
+if ( isset( $lbFactory ) ) {
+       // Commit and close up!
+       $lbFactory->commitMasterChanges( 'doMaintenance' );
+       $lbFactory->shutdown( $lbFactory::SHUTDOWN_NO_CHRONPROT );
+}
index c6e9aad..2b79b54 100644 (file)
@@ -575,7 +575,6 @@ TEXT
                }
 
                while ( $failures < $this->maxFailures ) {
-
                        // As soon as we found a good text for the $id, we will return immediately.
                        // Hence, if we make it past the try catch block, we know that we did not
                        // find a good text.
index b3866c1..625e1f7 100644 (file)
@@ -185,9 +185,7 @@ class ImportImages extends Maintenance {
                # Batch "upload" operation
                $count = count( $files );
                if ( $count > 0 ) {
-
                        foreach ( $files as $file ) {
-
                                if ( $sleep && ( $processed > 0 ) ) {
                                        sleep( $sleep );
                                }
index 3e632f0..cac3009 100644 (file)
@@ -90,12 +90,42 @@ class CommandLineInstaller extends Maintenance {
                $this->addOption( 'env-checks', "Run environment checks only, don't change anything" );
        }
 
+       public function getDbType() {
+               if ( $this->hasOption( 'env-checks' ) ) {
+                       return Maintenance::DB_NONE;
+               }
+               return parent::getDbType();
+       }
+
        function execute() {
                global $IP;
 
                $siteName = $this->getArg( 0, 'MediaWiki' ); // Will not be set if used with --env-checks
                $adminName = $this->getArg( 1 );
+               $envChecksOnly = $this->hasOption( 'env-checks' );
+
+               $this->setDbPassOption();
+               if ( !$envChecksOnly ) {
+                       $this->setPassOption();
+               }
+
+               $installer = InstallerOverrides::getCliInstaller( $siteName, $adminName, $this->mOptions );
+
+               $status = $installer->doEnvironmentChecks();
+               if ( $status->isGood() ) {
+                       $installer->showMessage( 'config-env-good' );
+               } else {
+                       $installer->showStatusMessage( $status );
+
+                       return;
+               }
+               if ( !$envChecksOnly ) {
+                       $installer->execute();
+                       $installer->writeConfigurationFile( $this->getOption( 'confpath', $IP ) );
+               }
+       }
 
+       private function setDbPassOption() {
                $dbpassfile = $this->getOption( 'dbpassfile' );
                if ( $dbpassfile !== null ) {
                        if ( $this->getOption( 'dbpass' ) !== null ) {
@@ -110,7 +140,9 @@ class CommandLineInstaller extends Maintenance {
                        }
                        $this->mOptions['dbpass'] = trim( $dbpass, "\r\n" );
                }
+       }
 
+       private function setPassOption() {
                $passfile = $this->getOption( 'passfile' );
                if ( $passfile !== null ) {
                        if ( $this->getOption( 'pass' ) !== null ) {
@@ -127,21 +159,6 @@ class CommandLineInstaller extends Maintenance {
                } elseif ( $this->getOption( 'pass' ) === null ) {
                        $this->error( 'You need to provide the option "pass" or "passfile"', true );
                }
-
-               $installer = InstallerOverrides::getCliInstaller( $siteName, $adminName, $this->mOptions );
-
-               $status = $installer->doEnvironmentChecks();
-               if ( $status->isGood() ) {
-                       $installer->showMessage( 'config-env-good' );
-               } else {
-                       $installer->showStatusMessage( $status );
-
-                       return;
-               }
-               if ( !$this->hasOption( 'env-checks' ) ) {
-                       $installer->execute();
-                       $installer->writeConfigurationFile( $this->getOption( 'confpath', $IP ) );
-               }
        }
 
        function validateParamsAndArgs() {
index baf917c..92ddc44 100644 (file)
@@ -93,7 +93,6 @@ if ( $run ) {
        $count = 0;
 
        if ( ( $messageExist ) && ( $messageCExist ) ) {
-
                if ( !strcmp( $runMode, 'php' ) ) {
                        print "<?php\n";
                        print '$dupeMessages = [' . "\n";
index 0bd627f..4a2b49a 100644 (file)
@@ -256,7 +256,6 @@ class NamespaceConflictChecker extends Maintenance {
 
                $ok = true;
                foreach ( $targets as $row ) {
-
                        // Find the new title and determine the action to take
 
                        $newTitle = $this->getDestinationTitle( $ns, $name,
index de037dc..ff821cc 100644 (file)
@@ -39,7 +39,6 @@ class NukePage extends Maintenance {
        }
 
        public function execute() {
-
                $name = $this->getArg();
                $delete = $this->getOption( 'delete', false );
 
index 48c3d37..ed412da 100644 (file)
@@ -67,8 +67,8 @@ class AlterSharedConstraints extends Maintenance {
                                                AND ucc.constraint_name = uc.constraint_name
                                                AND uccpk.constraint_name = uc.r_constraint_name
                                                AND uccpk.table_name = '$ltable'" );
-                       while ( ( $row = $result->fetchRow() ) !== false ) {
 
+                       while ( ( $row = $result->fetchRow() ) !== false ) {
                                $this->output( "Altering {$row['constraint_name']} ..." );
 
                                try {
index 9f3552a..facc506 100644 (file)
@@ -178,7 +178,6 @@ class RefreshLinks extends Maintenance {
                        $this->output( "Starting from page_id $start of $end.\n" );
 
                        for ( $id = $start; $id <= $end; $id++ ) {
-
                                if ( !( $id % self::REPORTING_INTERVAL ) ) {
                                        $this->output( "$id\n" );
                                        wfWaitForSlaves();
@@ -191,7 +190,6 @@ class RefreshLinks extends Maintenance {
                                $this->output( "Starting from page_id $start of $end.\n" );
 
                                for ( $id = $start; $id <= $end; $id++ ) {
-
                                        if ( !( $id % self::REPORTING_INTERVAL ) ) {
                                                $this->output( "$id\n" );
                                                wfWaitForSlaves();
index ec8fcfe..c750784 100644 (file)
@@ -39,7 +39,6 @@ class RemoveUnusedAccounts extends Maintenance {
        }
 
        public function execute() {
-
                $this->output( "Remove unused accounts\n\n" );
 
                # Do an initial scan for inactive accounts and report the result
index c657c03..5d773d1 100644 (file)
@@ -82,7 +82,6 @@ class UserOptions {
         * @return bool
         */
        private function initializeOpts( $opts, $args ) {
-
                $this->mQuick = isset( $opts['nowarn'] );
                $this->mQuiet = isset( $opts['quiet'] );
                $this->mDry = isset( $opts['dry'] );
@@ -149,12 +148,10 @@ class UserOptions {
                );
 
                foreach ( $result as $id ) {
-
                        $user = User::newFromId( $id->user_id );
 
                        // Get the options and update stats
                        if ( $this->mAnOption ) {
-
                                if ( !array_key_exists( $this->mAnOption, $defaultOptions ) ) {
                                        print "Invalid user option. Use --list to see valid choices\n";
                                        exit;
@@ -203,14 +200,12 @@ class UserOptions {
                );
 
                foreach ( $result as $id ) {
-
                        $user = User::newFromId( $id->user_id );
 
                        $curValue = $user->getOption( $this->mAnOption );
                        $username = $user->getName();
 
                        if ( $curValue == $this->mOldValue ) {
-
                                if ( !$this->mQuiet ) {
                                        print "Setting {$this->mAnOption} for $username from '{$this->mOldValue}' " .
                                                "to '{$this->mNewValue}'): ";
@@ -279,7 +274,6 @@ USAGE;
         * @return bool
         */
        public function warn() {
-
                if ( $this->mQuick ) {
                        return true;
                }
index be9debc..10b8d97 100644 (file)
@@ -44,7 +44,6 @@ function wfInstallerMain() {
        $installer = InstallerOverrides::getWebInstaller( $wgRequest );
 
        if ( !$installer->startSession() ) {
-
                if ( $installer->request->getVal( "css" ) ) {
                        // Do not display errors on css pages
                        $installer->outputCss();
index 7eca9ea..92a218a 100644 (file)
--- a/phpcs.xml
+++ b/phpcs.xml
@@ -1,6 +1,9 @@
 <?xml version="1.0"?>
 <ruleset name="MediaWiki">
        <rule ref="./vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
+               <exclude name="Generic.ControlStructures.InlineControlStructure" />
+               <!-- Rule will pass in 0.10.0 but update depends on T167168 -->
+               <exclude name="MediaWiki.WhiteSpace.SpaceBeforeClassBrace.NoSpaceBeforeBrace" />
                <!-- Disable rules added in 0.8.0 that don't pass yet -->
                <exclude name="MediaWiki.Commenting.FunctionComment.ExtraParamComment" />
                <exclude name="MediaWiki.Commenting.FunctionComment.MissingParamComment" />
@@ -17,9 +20,6 @@
                <exclude name="MediaWiki.Commenting.IllegalSingleLineComment.IllegalSingleLineCommentEnd" />
                <exclude name="MediaWiki.ControlStructures.AssignmentInControlStructures.AssignmentInControlStructures" />
                <exclude name="MediaWiki.NamingConventions.LowerCamelFunctionsName.FunctionName" />
-               <exclude name="MediaWiki.WhiteSpace.DisallowEmptyLineFunctions.NoEmptyLine" />
-               <exclude name="MediaWiki.WhiteSpace.SpaceBeforeControlStructureBrace.EmptyLines" />
-               <exclude name="MediaWiki.WhiteSpace.SpaceBeforeClassBrace.NoSpaceBeforeBrace" />
                <exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.NewLineComment" />
                <exclude name="MediaWiki.WhiteSpace.SpaceBeforeSingleLineComment.SingleSpaceBeforeSingleLineComment" />
                <exclude name="MediaWiki.Usage.DbrQueryUsage.DbrQueryFound" />
                        <property name="ignoreList" type="array" value="$IP,$messageMemc,$parserMemc" />
                </properties>
        </rule>
-       <file>.</file>
-       <arg name="encoding" value="UTF-8"/>
-       <arg name="extensions" value="php,php5,inc,sample"/>
        <rule ref="Generic.Files.LineLength">
                <exclude-pattern>*/languages/messages/Messages*.php</exclude-pattern>
        </rule>
        <rule ref="PSR2.Methods.MethodDeclaration.Underscore">
                <exclude-pattern>*/includes/StubObject.php</exclude-pattern>
        </rule>
-       <rule ref="Generic.ControlStructures.InlineControlStructure.NotAllowed">
-               <severity>0</severity>
-       </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>node_modules/</exclude-pattern>
        <exclude-pattern>vendor/</exclude-pattern>
        <exclude-pattern type="relative">^extensions/</exclude-pattern>
index 7de6669..27387c9 100644 (file)
@@ -56,7 +56,7 @@
                                trigger: ':',
                                groups: [ {
                                        // Group definition (single group)
-                                       name: 'namespaces',
+                                       name: 'namespace', // parameter name is singular
                                        type: 'string_options',
                                        title: mw.msg( 'namespaces' ),
                                        labelPrefixKey: { 'default': 'rcfilters-tag-prefix-namespace', inverted: 'rcfilters-tag-prefix-namespace-inverted' },
index 351ceb2..9814142 100644 (file)
                        comment: true,
                        text: true,
                        watchlist: true,
-                       ignorewarnings: true
+                       ignorewarnings: true,
+                       chunk: true,
+                       offset: true,
+                       filesize: true,
+                       async: true
                };
 
        /**
                 * @return {jQuery.Promise}
                 */
                uploadWithFormData: function ( file, data ) {
-                       var key,
+                       var key, request,
                                deferred = $.Deferred();
 
                        for ( key in data ) {
                        }
 
                        data = $.extend( {}, this.defaults.parameters, { action: 'upload' }, data );
-                       data.file = file;
+                       if ( !data.chunk ) {
+                               data.file = file;
+                       }
 
                        if ( !data.filename && !data.stash ) {
                                throw new Error( 'Filename not included in file data.' );
                        }
 
                        // Use this.postWithEditToken() or this.post()
-                       this[ this.needToken() ? 'postWithEditToken' : 'post' ]( data, {
+                       request = this[ this.needToken() ? 'postWithEditToken' : 'post' ]( data, {
                                // Use FormData (if we got here, we know that it's available)
                                contentType: 'multipart/form-data',
                                // No timeout (default from mw.Api is 30 seconds)
                                        deferred.reject( errorCode, result );
                                } );
 
-                       return deferred.promise();
+                       return deferred.promise( { abort: request.abort } );
+               },
+
+               /**
+                * Upload a file in several chunks.
+                *
+                * @param {File} file
+                * @param {Object} data Other upload options, see action=upload API docs for more
+                * @param {number} [chunkSize] Size (in bytes) per chunk (default: 5MB)
+                * @param {number} [chunkRetries] Amount of times to retry a failed chunk (default: 1)
+                * @return {jQuery.Promise}
+                */
+               chunkedUpload: function ( file, data, chunkSize, chunkRetries ) {
+                       var start, end, promise, next, active,
+                               deferred = $.Deferred();
+
+                       chunkSize = chunkSize === undefined ? 5 * 1024 * 1024 : chunkSize;
+                       chunkRetries = chunkRetries === undefined ? 1 : chunkRetries;
+
+                       if ( !data.filename ) {
+                               throw new Error( 'Filename not included in file data.' );
+                       }
+
+                       // Submit first chunk to get the filekey
+                       active = promise = this.uploadChunk( file, data, 0, chunkSize, '', chunkRetries )
+                               .fail( deferred.reject )
+                               .progress( deferred.notify );
+
+                       // Now iteratively submit the rest of the chunks
+                       for ( start = chunkSize; start < file.size; start += chunkSize ) {
+                               end = Math.min( start + chunkSize, file.size );
+                               next = $.Deferred();
+
+                               // We could simply chain one this.uploadChunk after another with
+                               // .then(), but then we'd hit an `Uncaught RangeError: Maximum
+                               // call stack size exceeded` at as low as 1024 calls in Firefox
+                               // 47. This'll work around it, but comes with the drawback of
+                               // having to properly relay the results to the returned promise.
+                               // eslint-disable-next-line no-loop-func
+                               promise.done( function ( start, end, next, result ) {
+                                       var filekey = result.upload.filekey;
+                                       active = this.uploadChunk( file, data, start, end, filekey, chunkRetries )
+                                               .done( end === file.size ? deferred.resolve : next.resolve )
+                                               .fail( deferred.reject )
+                                               .progress( deferred.notify );
+                               // start, end & next must be bound to closure, or they'd have
+                               // changed by the time the promises are resolved
+                               }.bind( this, start, end, next ) );
+
+                               promise = next;
+                       }
+
+                       return deferred.promise( { abort: active.abort } );
+               },
+
+               /**
+                * Uploads 1 chunk.
+                *
+                * @private
+                * @param {File} file
+                * @param {Object} data Other upload options, see action=upload API docs for more
+                * @param {number} start Chunk start position
+                * @param {number} end Chunk end position
+                * @param {string} [filekey] File key, for follow-up chunks
+                * @param {number} [retries] Amount of times to retry request
+                * @return {jQuery.Promise}
+                */
+               uploadChunk: function ( file, data, start, end, filekey, retries ) {
+                       var upload, retry,
+                               api = this,
+                               chunk = this.slice( file, start, end );
+
+                       // When uploading in chunks, we're going to be issuing a lot more
+                       // requests and there's always a chance of 1 getting dropped.
+                       // In such case, it could be useful to try again: a network hickup
+                       // doesn't necessarily have to result in upload failure...
+                       retries = retries === undefined ? 1 : retries;
+                       retry = function ( code, result ) {
+                               var deferred = $.Deferred(),
+                                       callback = function () {
+                                               api.uploadChunk( file, data, start, end, filekey, retries - 1 )
+                                                       .then( deferred.resolve, deferred.reject );
+                                       };
+
+                               // Don't retry if the request failed because we aborted it (or
+                               // if it's another kind of request failure)
+                               if ( code !== 'http' || result.textStatus === 'abort' ) {
+                                       return deferred.reject( code, result );
+                               }
+
+                               setTimeout( callback, 1000 );
+                               return deferred.promise();
+                       };
+
+                       data.filesize = file.size;
+                       data.chunk = chunk;
+                       data.offset = start;
+
+                       // filekey must only be added when uploading follow-up chunks; the
+                       // first chunk should never have a filekey (it'll be generated)
+                       if ( filekey && start !== 0 ) {
+                               data.filekey = filekey;
+                       }
+
+                       upload = this.uploadWithFormData( file, data );
+                       return upload.then(
+                                       null,
+                                       // If the call fails, we may want to try again...
+                                       retries === 0 ? null : retry,
+                                       function ( fraction ) {
+                                               // Since we're only uploading small parts of a file, we
+                                               // need to adjust the reported progress to reflect where
+                                               // we actually are in the combined upload
+                                               return ( start + fraction * ( end - start ) ) / file.size;
+                                       }
+                               ).promise( { abort: upload.abort } );
+               },
+
+               /**
+                * Slice a chunk out of a File object.
+                *
+                * @private
+                * @param {File} file
+                * @param {number} start
+                * @param {number} stop
+                * @return {Blob}
+                */
+               slice: function ( file, start, stop ) {
+                       if ( file.mozSlice ) {
+                               // FF <= 12
+                               return file.mozSlice( start, stop, file.type );
+                       } else if ( file.webkitSlice ) {
+                               // Chrome <= 20
+                               return file.webkitSlice( start, stop, file.type );
+                       } else {
+                               // On really old browser versions (before slice was prefixed),
+                               // slice() would take (start, length) instead of (start, end)
+                               // We'll ignore that here...
+                               return file.slice( start, stop, file.type );
+                       }
+               },
+
+               /**
+                * This function will handle how uploads to stash (via uploadToStash or
+                * chunkedUploadToStash) are resolved/rejected.
+                *
+                * After a successful stash, it'll resolve with a callback which, when
+                * called, will finalize the upload in stash (with the given data, or
+                * with additional/conflicting data)
+                *
+                * A failed stash can still be recovered from as long as 'filekey' is
+                * present. In that case, it'll also resolve with the callback to
+                * finalize the upload (all warnings are then ignored.)
+                * Otherwise, it'll just reject as you'd expect, with code & result.
+                *
+                * @private
+                * @param {jQuery.Promise} uploadPromise
+                * @param {Object} data
+                * @return {jQuery.Promise}
+                * @return {Function} return.finishUpload Call this function to finish the upload.
+                * @return {Object} return.finishUpload.data Additional data for the upload.
+                * @return {jQuery.Promise} return.finishUpload.return API promise for the final upload
+                * @return {Object} return.finishUpload.return.data API return value for the final upload
+                */
+               finishUploadToStash: function ( uploadPromise, data ) {
+                       var filekey,
+                               api = this;
+
+                       function finishUpload( moreData ) {
+                               return api.uploadFromStash( filekey, $.extend( data, moreData ) );
+                       }
+
+                       return uploadPromise.then(
+                               function ( result ) {
+                                       filekey = result.upload.filekey;
+                                       return finishUpload;
+                               },
+                               function ( errorCode, result ) {
+                                       if ( result && result.upload && result.upload.filekey ) {
+                                               // Ignore any warnings if 'filekey' was returned, that's all we care about
+                                               filekey = result.upload.filekey;
+                                               return $.Deferred().resolve( finishUpload );
+                                       }
+                                       return $.Deferred().reject( errorCode, result );
+                               }
+                       );
                },
 
                /**
                 * @param {File|HTMLInputElement} file
                 * @param {Object} [data]
                 * @return {jQuery.Promise}
-                * @return {Function} return.finishStashUpload Call this function to finish the upload.
-                * @return {Object} return.finishStashUpload.data Additional data for the upload.
-                * @return {jQuery.Promise} return.finishStashUpload.return API promise for the final upload
-                * @return {Object} return.finishStashUpload.return.data API return value for the final upload
+                * @return {Function} return.finishUpload Call this function to finish the upload.
+                * @return {Object} return.finishUpload.data Additional data for the upload.
+                * @return {jQuery.Promise} return.finishUpload.return API promise for the final upload
+                * @return {Object} return.finishUpload.return.data API return value for the final upload
                 */
                uploadToStash: function ( file, data ) {
-                       var filekey,
-                               api = this;
+                       var promise;
 
                        if ( !data.filename ) {
                                throw new Error( 'Filename not included in file data.' );
                        }
 
-                       function finishUpload( moreData ) {
-                               return api.uploadFromStash( filekey, $.extend( data, moreData ) );
+                       promise = this.upload( file, { stash: true, filename: data.filename } );
+
+                       return this.finishUploadToStash( promise, data );
+               },
+
+               /**
+                * Upload a file to the stash, in chunks.
+                *
+                * This function will return a promise, which when resolved, will pass back a function
+                * to finish the stash upload.
+                *
+                * @see #method-uploadToStash
+                * @param {File|HTMLInputElement} file
+                * @param {Object} [data]
+                * @param {number} [chunkSize] Size (in bytes) per chunk (default: 5MB)
+                * @param {number} [chunkRetries] Amount of times to retry a failed chunk (default: 1)
+                * @return {jQuery.Promise}
+                * @return {Function} return.finishUpload Call this function to finish the upload.
+                * @return {Object} return.finishUpload.data Additional data for the upload.
+                * @return {jQuery.Promise} return.finishUpload.return API promise for the final upload
+                * @return {Object} return.finishUpload.return.data API return value for the final upload
+                */
+               chunkedUploadToStash: function ( file, data, chunkSize, chunkRetries ) {
+                       var promise;
+
+                       if ( !data.filename ) {
+                               throw new Error( 'Filename not included in file data.' );
                        }
 
-                       return this.upload( file, { stash: true, filename: data.filename } ).then(
-                               function ( result ) {
-                                       filekey = result.upload.filekey;
-                                       return finishUpload;
-                               },
-                               function ( errorCode, result ) {
-                                       if ( result && result.upload && result.upload.filekey ) {
-                                               // Ignore any warnings if 'filekey' was returned, that's all we care about
-                                               filekey = result.upload.filekey;
-                                               return $.Deferred().resolve( finishUpload );
-                                       }
-                                       return $.Deferred().reject( errorCode, result );
-                               }
+                       promise = this.chunkedUpload(
+                               file,
+                               { stash: true, filename: data.filename },
+                               chunkSize,
+                               chunkRetries
                        );
+
+                       return this.finishUploadToStash( promise, data );
                },
 
                /**
index 02df2a8..7e6cfb6 100644 (file)
 
                this.setState( Upload.State.UPLOADING );
 
-               return this.api.upload( this.getFile(), {
+               return this.api.chunkedUpload( this.getFile(), {
                        watchlist: ( this.getWatchlist() ) ? 1 : undefined,
                        comment: this.getComment(),
                        filename: this.getFilename(),
 
                this.setState( Upload.State.UPLOADING );
 
-               this.stashPromise = this.api.uploadToStash( this.getFile(), {
+               this.stashPromise = this.api.chunkedUploadToStash( this.getFile(), {
                        filename: this.getFilename()
                } ).then( function ( finishStash ) {
                        upload.setState( Upload.State.STASHED );
index 1f6c8a6..e147664 100644 (file)
@@ -1,14 +1,4 @@
 ( function ( mw, $ ) {
-       // Break out of framesets
-       if ( mw.config.get( 'wgBreakFrames' ) ) {
-               // Note: In IE < 9 strict comparison to window is non-standard (the standard didn't exist yet)
-               // it works only comparing to window.self or window.window (http://stackoverflow.com/q/4850978/319266)
-               if ( window.top !== window.self ) {
-                       // Un-trap us from framesets
-                       window.top.location.href = location.href;
-               }
-       }
-
        mw.hook( 'wikipage.content' ).add( function ( $content ) {
                var $sortable, $collapsible;
 
index 49cfd8a..7514044 100644 (file)
@@ -1,4 +1,13 @@
 ( function ( mw, $ ) {
+       // Break out of framesets
+       if ( mw.config.get( 'wgBreakFrames' ) ) {
+               // Note: In IE < 9 strict comparison to window is non-standard (the standard didn't exist yet)
+               // it works only comparing to window.self or window.window (http://stackoverflow.com/q/4850978/319266)
+               if ( window.top !== window.self ) {
+                       // Un-trap us from framesets
+                       window.top.location.href = location.href;
+               }
+       }
 
        $( function () {
                var $diff;
index c2eebfa..15833dc 100644 (file)
@@ -5,6 +5,8 @@ use MediaWiki\Logger\LoggerFactory;
 use MediaWiki\Logger\MonologSpi;
 use MediaWiki\MediaWikiServices;
 use Psr\Log\LoggerInterface;
+use Wikimedia\Rdbms\IMaintainableDatabase;
+use Wikimedia\Rdbms\Database;
 use Wikimedia\TestingAccessWrapper;
 
 /**
@@ -1049,7 +1051,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
 
        private function addCoreDBData() {
                if ( $this->db->getType() == 'oracle' ) {
-
                        # Insert 0 user to prevent FK violations
                        # Anonymous user
                        if ( !$this->db->selectField( 'user', '1', [ 'user_id' => 0 ] ) ) {
@@ -1114,6 +1115,8 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                        return;
                }
 
+               Hooks::run( 'UnitTestsBeforeDatabaseTeardown' );
+
                foreach ( $wgJobClasses as $type => $class ) {
                        // Delete any jobs under the clone DB (or old prefix in other stores)
                        JobQueueGroup::singleton()->get( $type )->delete();
@@ -1216,6 +1219,8 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                if ( $db->getType() == 'oracle' ) {
                        $db->query( 'BEGIN FILL_WIKI_INFO; END;' );
                }
+
+               Hooks::run( 'UnitTestsAfterDatabaseSetup', [ $db, $prefix ] );
        }
 
        /**
@@ -1713,7 +1718,6 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
                        if ( !isset( $wgNamespaceContentModels[$ns] ) ||
                                $wgNamespaceContentModels[$ns] === CONTENT_MODEL_WIKITEXT
                        ) {
-
                                $wikitextNS = $ns;
 
                                return $wikitextNS;
index 33b6e2f..5e54b8d 100644 (file)
@@ -362,7 +362,6 @@ class GlobalTest extends MediaWikiTestCase {
         * @covers ::wfClientAcceptsGzip
         */
        public function testClientAcceptsGzipTest() {
-
                $settings = [
                        'gzip' => true,
                        'bzip' => false,
@@ -396,7 +395,6 @@ class GlobalTest extends MediaWikiTestCase {
         * @covers ::wfPercent
         */
        public function testWfPercentTest() {
-
                $pcts = [
                        [ 6 / 7, '0.86%', 2, false ],
                        [ 3 / 3, '1%' ],
index d684a43..f4844f8 100644 (file)
@@ -265,7 +265,6 @@ class LinkerTest extends MediaWikiLangTestCase {
         * @dataProvider provideCasesForFormatLinksInComment
         */
        public function testFormatLinksInComment( $expected, $input, $wiki ) {
-
                $conf = new SiteConfiguration();
                $conf->settings = [
                        'wgServer' => [
index 90b6396..ada516d 100644 (file)
@@ -77,6 +77,78 @@ class PreferencesTest extends MediaWikiTestCase {
                $this->assertEquals( 'mw-email-authenticated', $prefs['emailauthentication']['cssclass'] );
        }
 
+       /**
+        * Test that PreferencesFormPreSave hook has correct data:
+        *  - user Object is passed
+        *  - oldUserOptions contains previous user options (before save)
+        *  - formData and User object have set up new properties
+        *
+        * @see https://phabricator.wikimedia.org/T169365
+        * @covers Preferences::tryFormSubmit
+        */
+       public function testPreferencesFormPreSaveHookHasCorrectData() {
+               $oldOptions = [
+                       'test' => 'abc',
+                       'option' => 'old'
+               ];
+               $newOptions = [
+                       'test' => 'abc',
+                       'option' => 'new'
+               ];
+               $configMock = new HashConfig( [
+                       'HiddenPrefs' => []
+               ] );
+               $form = $this->getMockBuilder( PreferencesForm::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+
+               $userMock = $this->getMockBuilder( User::class )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $userMock->method( 'getOptions' )
+                       ->willReturn( $oldOptions );
+               $userMock->method( 'isAllowedAny' )
+                       ->willReturn( true );
+               $userMock->method( 'isAllowed' )
+                       ->willReturn( true );
+
+               $userMock->expects( $this->exactly( 2 ) )
+                       ->method( 'setOption' )
+                       ->withConsecutive(
+                               [ $this->equalTo( 'test' ), $this->equalTo( $newOptions[ 'test' ] ) ],
+                               [ $this->equalTo( 'option' ), $this->equalTo( $newOptions[ 'option' ] ) ]
+                       );
+
+               $form->expects( $this->any() )
+                       ->method( 'getModifiedUser' )
+                       ->willReturn( $userMock );
+
+               $form->expects( $this->any() )
+                       ->method( 'getContext' )
+                       ->willReturn( $this->context );
+
+               $form->expects( $this->any() )
+                       ->method( 'getConfig' )
+                       ->willReturn( $configMock );
+
+               $this->setTemporaryHook( 'PreferencesFormPreSave', function(
+                       $formData, $form, $user, &$result, $oldUserOptions )
+                       use ( $newOptions, $oldOptions, $userMock ) {
+
+                       $this->assertSame( $userMock, $user );
+                       foreach ( $newOptions as $option => $value ) {
+                               $this->assertSame( $value, $formData[ $option ] );
+                       }
+                       foreach ( $oldOptions as $option => $value ) {
+                               $this->assertSame( $value, $oldUserOptions[ $option ] );
+                       }
+                       $this->assertEquals( true, $result );
+               }
+               );
+
+               Preferences::tryFormSubmit( $newOptions, $form );
+       }
+
        /** Helper */
        protected function prefsFor( $user_key ) {
                $preferences = [];
index 65a8c86..01e7ecb 100644 (file)
@@ -28,7 +28,6 @@ class WatchedItemIntegrationTest extends MediaWikiTestCase {
        }
 
        public function testWatchAndUnWatchItem() {
-
                $user = $this->getUser();
                $title = Title::newFromText( 'WatchedItemIntegrationTestPage' );
                // Cleanup after previous tests
index d499714..d4a5acf 100644 (file)
@@ -16,7 +16,6 @@ class GenerateRandomImages extends Maintenance {
        }
 
        public function execute() {
-
                $getOptSpec = [
                        'dictionaryFile::',
                        'minWidth::',
index fbc794e..c612f26 100644 (file)
@@ -248,7 +248,6 @@ class ApiQueryBasicTest extends ApiQueryTestBase {
         * Test basic lists
         */
        public function testAllTogether() {
-
                // All props together
                $this->check( $this->merge(
                        self::$links,
index 2f908fe..4da09d8 100644 (file)
@@ -12,7 +12,6 @@ class TestRecentChangesHelper {
        public function makeEditRecentChange( User $user, $titleText, $curid, $thisid, $lastid,
                $timestamp, $counter, $watchingUsers
        ) {
-
                $attribs = array_merge(
                        $this->getDefaultAttributes( $titleText, $timestamp ),
                        [
@@ -72,7 +71,6 @@ class TestRecentChangesHelper {
        public function makeNewBotEditRecentChange( User $user, $titleText, $curid, $thisid, $lastid,
                $timestamp, $counter, $watchingUsers
        ) {
-
                $attribs = array_merge(
                        $this->getDefaultAttributes( $titleText, $timestamp ),
                        [
@@ -111,7 +109,6 @@ class TestRecentChangesHelper {
        public function makeCategorizationRecentChange(
                User $user, $titleText, $curid, $thisid, $lastid, $timestamp
        ) {
-
                $attribs = array_merge(
                        $this->getDefaultAttributes( $titleText, $timestamp ),
                        [
index 8e06f9e..bdb4831 100644 (file)
@@ -27,7 +27,6 @@ class ImportLinkCacheIntegrationTest extends MediaWikiTestCase {
        }
 
        public function testImportForImportSource() {
-
                $this->doImport( $this->importStreamSource );
 
                // Imported title
@@ -56,7 +55,6 @@ class ImportLinkCacheIntegrationTest extends MediaWikiTestCase {
         * @depends testImportForImportSource
         */
        public function testReImportForImportSource() {
-
                $this->doImport( $this->importStreamSource );
 
                // ReImported title
@@ -76,7 +74,6 @@ class ImportLinkCacheIntegrationTest extends MediaWikiTestCase {
        }
 
        private function doImport( $importStreamSource ) {
-
                $importer = new WikiImporter(
                        $importStreamSource->value,
                        MediaWikiServices::getInstance()->getMainConfig()
index 1d62a78..31c9e50 100644 (file)
@@ -39,7 +39,6 @@ class InterwikiLookupAdapterTest extends MediaWikiTestCase {
        }
 
        public function testFetch() {
-
                $interwiki = $this->interwikiLookup->fetch( '' );
                $this->assertNull( $interwiki );
 
index 9291eb6..5eee8b8 100644 (file)
@@ -181,7 +181,6 @@ class XMPTest extends PHPUnit_Framework_TestCase  {
         * @covers XMPReader::checkParseSafety
         */
        public function testCheckParseSafety() {
-
                // Test for detection
                $xmpPath = __DIR__ . '/../../../data/xmp/';
                $file = fopen( $xmpPath . 'doctype-included.xmp', 'rb' );
index 666dcf2..2b18b08 100644 (file)
@@ -77,7 +77,6 @@ class PageDataRequestHandlerTest extends \MediaWikiTestCase {
        }
 
        public function handleRequestProvider() {
-
                $cases = [];
 
                $cases[] = [ '', [], [], '!!', 400 ];
index 1044e52..278b441 100644 (file)
@@ -24,7 +24,6 @@ class GIFMetadataExtractorTest extends MediaWikiTestCase {
        }
 
        public static function provideGetMetadata() {
-
                $xmpNugget = <<<EOF
 <?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
 <x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 7.30'>
index 264e35d..ad899bd 100644 (file)
@@ -5,6 +5,42 @@ use Wikimedia\ScopedCallback;
 
 class ParserOptionsTest extends MediaWikiTestCase {
 
+       private static function clearCache() {
+               $wrap = TestingAccessWrapper::newFromClass( ParserOptions::class );
+               $wrap->defaults = null;
+               $wrap->lazyOptions = [
+                       'dateformat' => [ ParserOptions::class, 'initDateFormat' ],
+               ];
+               $wrap->inCacheKey = [
+                       'dateformat' => true,
+                       'numberheadings' => true,
+                       'thumbsize' => true,
+                       'stubthreshold' => true,
+                       'printable' => true,
+                       'userlang' => true,
+                       'wrapclass' => true,
+               ];
+       }
+
+       protected function setUp() {
+               global $wgHooks;
+
+               parent::setUp();
+               self::clearCache();
+
+               $this->setMwGlobals( [
+                       'wgRenderHashAppend' => '',
+                       'wgHooks' => [
+                               'PageRenderingHash' => [],
+                       ] + $wgHooks,
+               ] );
+       }
+
+       protected function tearDown() {
+               self::clearCache();
+               parent::tearDown();
+       }
+
        /**
         * @dataProvider provideIsSafeToCache
         * @param bool $expect Expected value
@@ -48,7 +84,6 @@ class ParserOptionsTest extends MediaWikiTestCase {
                global $wgHooks;
 
                $globals += [
-                       'wgRenderHashAppend' => '',
                        'wgHooks' => [],
                ];
                $globals['wgHooks'] += [
@@ -103,13 +138,6 @@ class ParserOptionsTest extends MediaWikiTestCase {
 
        // Test weird historical behavior is still weird
        public function testOptionsHashEditSection() {
-               global $wgHooks;
-
-               $this->setMwGlobals( [
-                       'wgRenderHashAppend' => '',
-                       'wgHooks' => [ 'PageRenderingHash' => [] ] + $wgHooks,
-               ] );
-
                $popt = ParserOptions::newCanonical();
                $popt->registerWatcher( function ( $name ) {
                        $this->assertNotEquals( 'editsection', $name );
@@ -175,4 +203,33 @@ class ParserOptionsTest extends MediaWikiTestCase {
                ScopedCallback::consume( $reset );
        }
 
+       public function testAllCacheVaryingOptions() {
+               global $wgHooks;
+
+               // $wgHooks is already saved in self::setUp(), so we can modify it freely here
+               $wgHooks['ParserOptionsRegister'] = [];
+               $this->assertSame( [
+                       'dateformat', 'numberheadings', 'printable', 'stubthreshold',
+                       'thumbsize', 'userlang', 'wrapclass',
+               ], ParserOptions::allCacheVaryingOptions() );
+
+               self::clearCache();
+
+               $wgHooks['ParserOptionsRegister'][] = function ( &$defaults, &$inCacheKey ) {
+                       $defaults += [
+                               'foo' => 'foo',
+                               'bar' => 'bar',
+                               'baz' => 'baz',
+                       ];
+                       $inCacheKey += [
+                               'foo' => true,
+                               'bar' => false,
+                       ];
+               };
+               $this->assertSame( [
+                       'dateformat', 'foo', 'numberheadings', 'printable', 'stubthreshold',
+                       'thumbsize', 'userlang', 'wrapclass',
+               ], ParserOptions::allCacheVaryingOptions() );
+       }
+
 }
index 3bd82b4..0839cfb 100644 (file)
@@ -58,7 +58,6 @@ class UserPasswordPolicyTest extends MediaWikiTestCase {
        }
 
        public function testGetPoliciesForUser() {
-
                $upp = $this->getUserPasswordPolicy();
 
                $user = User::newFromName( 'TestUserPolicy' );
@@ -100,7 +99,6 @@ class UserPasswordPolicyTest extends MediaWikiTestCase {
         * @dataProvider provideCheckUserPassword
         */
        public function testCheckUserPassword( $username, $groups, $password, $valid, $ok, $msg ) {
-
                $upp = $this->getUserPasswordPolicy();
 
                $user = User::newFromName( $username );
index c945d1e..9711eab 100644 (file)
@@ -124,20 +124,58 @@ class SearchEngineTest extends MediaWikiLangTestCase {
                        "Plain search" );
        }
 
+       public function testWildcardSearch() {
+               $res = $this->search->searchText( 'smith*' );
+               $this->assertEquals(
+                       [ 'Smithee' ],
+                       $this->fetchIds( $res ),
+                       "Search with wildcards" );
+
+               $res = $this->search->searchText( 'smithson*' );
+               $this->assertEquals(
+                       [],
+                       $this->fetchIds( $res ),
+                       "Search with wildcards must not find unrelated articles" );
+
+               $res = $this->search->searchText( 'smith* smithee' );
+               $this->assertEquals(
+                       [ 'Smithee' ],
+                       $this->fetchIds( $res ),
+                       "Search with wildcards can be combined with simple terms" );
+
+               $res = $this->search->searchText( 'smith* "one who smiths"' );
+               $this->assertEquals(
+                       [ 'Smithee' ],
+                       $this->fetchIds( $res ),
+                       "Search with wildcards can be combined with phrase search" );
+       }
+
        public function testPhraseSearch() {
                $res = $this->search->searchText( '"smithee is one who smiths"' );
                $this->assertEquals(
                        [ 'Smithee' ],
                        $this->fetchIds( $res ),
                        "Search a phrase" );
-               $res = $this->search->searchText( '"smithee is one who smiths"' );
+
+               $res = $this->search->searchText( '"smithee is who smiths"' );
+               $this->assertEquals(
+                       [],
+                       $this->fetchIds( $res ),
+                       "Phrase search is not sloppy, search terms must be adjacent" );
+
+               $res = $this->search->searchText( '"is smithee one who smiths"' );
+               $this->assertEquals(
+                       [],
+                       $this->fetchIds( $res ),
+                       "Phrase search is ordered" );
+       }
+
+       public function testPhraseSearchHighlight() {
+               $phrase = "smithee is one who smiths";
+               $res = $this->search->searchText( "\"$phrase\"" );
                $match = $res->next();
-               $terms = [ 'smithee', 'is', 'one', 'who', 'smiths' ];
-               $snippet = "";
-               foreach ( $terms as $term ) {
-                       $snippet .= " <span class='searchmatch'>" . $term . "</span>";
-               }
-               $this->assertRegexp( '/' . preg_quote( $snippet, '/' ) . '/',
+               $snippet = "A <span class='searchmatch'>" . $phrase . "</span>";
+               $this->assertStringStartsWith( $snippet,
                        $match->getTextSnippet( $res->termMatches() ),
                        "Highlight a phrase search" );
        }
index fd587bf..ac58d68 100644 (file)
@@ -21,7 +21,6 @@ class SpecialPreferencesTest extends MediaWikiTestCase {
         * @todo give this test a real name explaining what is being tested here
         */
        public function testBug41337() {
-
                // Set a low limit
                $this->setMwGlobals( 'wgMaxSigChars', 2 );
 
index b6c2427..25ff186 100644 (file)
@@ -51,8 +51,8 @@ class ForeignTitleTest extends MediaWikiTestCase {
         * @dataProvider basicProvider
         */
        public function testBasic( ForeignTitle $title, $expectedId, $expectedName,
-               $expectedText ) {
-
+               $expectedText
+       ) {
                $this->assertEquals( true, $title->isNamespaceIdKnown() );
                $this->assertEquals( $expectedId, $title->getNamespaceId() );
                $this->assertEquals( $expectedName, $title->getNamespaceName() );
index 520108a..9aa3578 100644 (file)
@@ -76,7 +76,6 @@ class NamespaceAwareForeignTitleFactoryTest extends MediaWikiTestCase {
         * @dataProvider basicProvider
         */
        public function testBasic( $title, $ns, ForeignTitle $foreignTitle ) {
-
                $foreignNamespaces = [
                        0 => '', 1 => 'Talk', 100 => 'Portal', 9000 => 'Bogus'
                ];
index baeb95c..93ce080 100644 (file)
@@ -60,8 +60,8 @@ class SubpageImportTitleFactoryTest extends MediaWikiTestCase {
         * @dataProvider basicProvider
         */
        public function testBasic( ForeignTitle $foreignTitle, Title $rootPage,
-               Title $title ) {
-
+               Title $title
+       ) {
                $factory = new SubpageImportTitleFactory( $rootPage );
                $testTitle = $factory->createTitleFromForeignTitle( $foreignTitle );
 
index 760d41e..86c19ae 100644 (file)
@@ -40,7 +40,6 @@ class MWCryptHKDFTest extends MediaWikiTestCase {
         * Test vectors from Appendix A on https://tools.ietf.org/html/rfc5869
         */
        public static function providerRfc5869() {
-
                // @codingStandardsIgnoreStart Generic.Files.LineLength
                return [
                        // A.1
index 1d55ab8..99bd427 100644 (file)
@@ -298,7 +298,6 @@ abstract class DumpTestCase extends MediaWikiLangTestCase {
         * @param string $name Title of the current page
         */
        protected function assertPageStart( $id, $ns, $name ) {
-
                $this->assertNodeStart( "page" );
                $this->skipWhitespace();
 
@@ -393,7 +392,6 @@ abstract class DumpTestCase extends MediaWikiLangTestCase {
                        if ( ( $this->xml->nodeType == XMLReader::END_ELEMENT )
                                && ( $this->xml->name == "text" )
                        ) {
-
                                $this->xml->read();
                        }
                        $this->skipWhitespace();
index 6b0e344..e21e726 100644 (file)
@@ -52,7 +52,6 @@ class MaintenanceFixup extends Maintenance {
         * Simulates what Maintenance wants to happen at script's end.
         */
        public function simulateShutdown() {
-
                if ( $this->shutdownSimulated ) {
                        $this->testCase->fail( __METHOD__ . " called more than once" );
                }
@@ -175,7 +174,6 @@ class MaintenanceTest extends MediaWikiTestCase {
         *   after shutdown simulation.
         */
        private function assertOutputPrePostShutdown( $preShutdownOutput, $expectNLAppending ) {
-
                $this->assertEquals( $preShutdownOutput, $this->getActualOutput(),
                        "Output before shutdown simulation" );
 
index ea5ca8d..8242c79 100644 (file)
@@ -265,7 +265,6 @@ class TextPassDumperDatabaseTest extends DumpTestCase {
                // duration. If the dump did not take long enough increase the iteration
                // count, to generate a bigger stub file next time.
                while ( $lastDuration < $minDuration ) {
-
                        // Setting up the dump
                        wfRecursiveRemoveDir( $nameOutputDir );
                        $this->assertTrue( wfMkdirParents( $nameOutputDir ),
@@ -323,7 +322,6 @@ class TextPassDumperDatabaseTest extends DumpTestCase {
                // Each run of the following loop body tries to handle exactly 1 /page/ (not
                // iteration of stub content). $i is only increased after having treated page 4.
                for ( $i = 0; $i < $iterations; ) {
-
                        // 1. Assuring a file is opened and ready. Skipping across header if
                        //    necessary.
                        if ( !$fileOpened ) {
@@ -511,7 +509,6 @@ class TextPassDumperDatabaseTest extends DumpTestCase {
                $content = $header;
                $iterations = intval( $iterations );
                for ( $i = 0; $i < $iterations; $i++ ) {
-
                        $page1 = '  <page>
     <title>BackupDumperTestP1</title>
     <ns>0</ns>
index 0019a3f..91e1b1e 100644 (file)
@@ -104,7 +104,6 @@ class BackupDumperLoggerTest extends DumpTestCase {
        private function assertLogItem( $id, $user_name, $user_id, $comment, $type,
                $subtype, $title, $parameters = []
        ) {
-
                $this->assertNodeStart( "logitem" );
                $this->skipWhitespace();
 
index 39baf17..d7da5a0 100644 (file)
 
                        return {
                                setup: function () {
-
                                        // Greetings, mock environment!
                                        mw.config = new MwMap();
                                        mw.config.set( freshConfigCopy( localEnv.config ) );