Merge "Update signature of UserGroupsChanged to match documentation"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 19 Sep 2017 18:51:53 +0000 (18:51 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 19 Sep 2017 18:51:53 +0000 (18:51 +0000)
100 files changed:
docs/hooks.txt
includes/Hooks.php
includes/Preferences.php
includes/Xml.php
includes/actions/HistoryAction.php
includes/api/ApiExpandTemplates.php
includes/api/ApiParse.php
includes/api/i18n/ar.json
includes/api/i18n/ba.json
includes/api/i18n/cs.json
includes/api/i18n/de.json
includes/api/i18n/en.json
includes/api/i18n/es.json
includes/api/i18n/eu.json
includes/api/i18n/fr.json
includes/api/i18n/gl.json
includes/api/i18n/he.json
includes/api/i18n/hu.json
includes/api/i18n/mk.json
includes/api/i18n/pl.json
includes/api/i18n/pt-br.json
includes/api/i18n/pt.json
includes/api/i18n/qqq.json
includes/api/i18n/ru.json
includes/api/i18n/sv.json
includes/api/i18n/uk.json
includes/api/i18n/zh-hans.json
includes/export/XmlDumpWriter.php
includes/filerepo/file/LocalFile.php
includes/installer/MysqlUpdater.php
includes/libs/CSSMin.php
includes/libs/rdbms/database/IDatabase.php
includes/page/WikiPage.php
includes/parser/Parser.php
includes/resourceloader/ResourceLoaderImageModule.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialRecentchangeslinked.php
includes/specials/SpecialWatchlist.php
includes/specials/pagers/ActiveUsersPager.php
includes/specials/pagers/ImageListPager.php
languages/i18n/ais.json
languages/i18n/be-tarask.json
languages/i18n/bn.json
languages/i18n/de.json
languages/i18n/en.json
languages/i18n/fi.json
languages/i18n/gl.json
languages/i18n/he.json
languages/i18n/hu.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jv.json
languages/i18n/kab.json
languages/i18n/ko.json
languages/i18n/lfn.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/sd.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/su.json
languages/i18n/tt-cyrl.json
languages/i18n/ur.json
maintenance/archives/patch-editsummary-length.sql
maintenance/backup.inc
maintenance/benchmarks/cssmin/circle.svg
maintenance/findHooks.php
maintenance/populateIpChanges.php
resources/Resources.php
resources/lib/jquery/jquery.migrate.js
resources/src/mediawiki.action/mediawiki.action.edit.preview.js
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js
resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ChangesListWrapperWidget.highlightCircles.seenunseen.less
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
resources/src/mediawiki.skinning/interface.css
resources/src/mediawiki.special/mediawiki.special.changeslist.visitedstatus.js
resources/src/mediawiki.special/mediawiki.special.preferences.confirmClose.js [new file with mode: 0644]
resources/src/mediawiki.special/mediawiki.special.preferences.convertmessagebox.js [new file with mode: 0644]
resources/src/mediawiki.special/mediawiki.special.preferences.js [deleted file]
resources/src/mediawiki.special/mediawiki.special.preferences.tabs.js [new file with mode: 0644]
resources/src/mediawiki.special/mediawiki.special.preferences.timezone.js [new file with mode: 0644]
resources/src/mediawiki.widgets/MediaSearch/mw.widgets.MediaSearchQueue.js
resources/src/mediawiki.widgets/mw.widgets.TitleSearchWidget.js
resources/src/mediawiki/mediawiki.checkboxtoggle.js
resources/src/mediawiki/mediawiki.js
tests/parser/parserTests.txt
tests/phpunit/data/cssmin/circle.svg
tests/phpunit/includes/HooksTest.php
tests/phpunit/includes/XmlTest.php
tests/phpunit/includes/collation/CollationFaTest.php
tests/phpunit/includes/libs/CSSMinTest.php
tests/phpunit/phpunit.php
tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js
tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js
tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.errorLogger.test.js

index b7fe8c1..a19e9fc 100644 (file)
@@ -996,13 +996,10 @@ $special: ChangesListSpecialPage instance
 'ChangesListSpecialPageQuery': Called when building SQL query on pages
 inheriting from ChangesListSpecialPage (in core: RecentChanges,
 RecentChangesLinked and Watchlist).
-
 Do not use this to implement individual filters if they are compatible with the
 ChangesListFilter and ChangesListFilterGroup structure.
-
 Instead, use sub-classes of those classes, in conjunction with the
 ChangesListSpecialPageStructuredFilters hook.
-
 This hook can be used to implement filters that do not implement that structure,
 or custom behavior that is not an individual filter.
 $name: name of the special page, e.g. 'Watchlist'
@@ -1017,20 +1014,16 @@ $opts: FormOptions for this request
 filters for pages inheriting from ChangesListSpecialPage (in core: RecentChanges,
 RecentChangesLinked, and Watchlist).  Generally, you will want to construct
 new ChangesListBooleanFilter or ChangesListStringOptionsFilter objects.
-
 When constructing them, you specify which group they belong to.  You can reuse
 existing groups (accessed through $special->getFilterGroup), or create your own
 (ChangesListBooleanFilterGroup or ChangesListStringOptionsFilterGroup).
 If you create new groups, you must register them with $special->registerFilterGroup.
-
 Note that this is called regardless of whether the user is currently using
 the new (structured) or old (unstructured) filter UI.  If you want your boolean
 filter to show on both the new and old UI, specify all the supported fields.
 These include showHide, label, and description.
-
 See the constructor of each ChangesList* class for documentation of supported
 fields.
-
 $special: ChangesListSpecialPage instance
 
 'ChangeTagAfterDelete': Called after a change tag has been deleted (that is,
index f4f86be..c22dc97 100644 (file)
@@ -108,17 +108,89 @@ class Hooks {
                }
        }
 
+       /**
+        * @param string $event Event name
+        * @param array|callable $hook
+        * @param array $args Array of parameters passed to hook functions
+        * @param string|null $deprecatedVersion [optional]
+        * @param string &$fname [optional] Readable name of hook [returned]
+        * @return null|string|bool
+        */
+       private static function callHook( $event, $hook, array $args, $deprecatedVersion = null,
+               &$fname = null
+       ) {
+               // Turn non-array values into an array. (Can't use casting because of objects.)
+               if ( !is_array( $hook ) ) {
+                       $hook = [ $hook ];
+               }
+
+               if ( !array_filter( $hook ) ) {
+                       // Either array is empty or it's an array filled with null/false/empty.
+                       return null;
+               }
+
+               if ( is_array( $hook[0] ) ) {
+                       // First element is an array, meaning the developer intended
+                       // the first element to be a callback. Merge it in so that
+                       // processing can be uniform.
+                       $hook = array_merge( $hook[0], array_slice( $hook, 1 ) );
+               }
+
+               /**
+                * $hook can be: a function, an object, an array of $function and
+                * $data, an array of just a function, an array of object and
+                * method, or an array of object, method, and data.
+                */
+               if ( $hook[0] instanceof Closure ) {
+                       $fname = "hook-$event-closure";
+                       $callback = array_shift( $hook );
+               } elseif ( is_object( $hook[0] ) ) {
+                       $object = array_shift( $hook );
+                       $method = array_shift( $hook );
+
+                       // If no method was specified, default to on$event.
+                       if ( $method === null ) {
+                               $method = "on$event";
+                       }
+
+                       $fname = get_class( $object ) . '::' . $method;
+                       $callback = [ $object, $method ];
+               } elseif ( is_string( $hook[0] ) ) {
+                       $fname = $callback = array_shift( $hook );
+               } else {
+                       throw new MWException( 'Unknown datatype in hooks for ' . $event . "\n" );
+               }
+
+               // Run autoloader (workaround for call_user_func_array bug)
+               // and throw error if not callable.
+               if ( !is_callable( $callback ) ) {
+                       throw new MWException( 'Invalid callback ' . $fname . ' in hooks for ' . $event . "\n" );
+               }
+
+               // mark hook as deprecated, if deprecation version is specified
+               if ( $deprecatedVersion !== null ) {
+                       wfDeprecated( "$event hook (used in $fname)", $deprecatedVersion );
+               }
+
+               // Call the hook.
+               $hook_args = array_merge( $hook, $args );
+               return call_user_func_array( $callback, $hook_args );
+       }
+
        /**
         * Call hook functions defined in Hooks::register and $wgHooks.
         *
-        * For a certain hook event, fetch the array of hook events and
+        * For the given hook event, fetch the array of hook events and
         * process them. Determine the proper callback for each hook and
         * then call the actual hook using the appropriate arguments.
         * Finally, process the return value and return/throw accordingly.
         *
+        * For hook event that are not abortable through a handler's return value,
+        * use runWithoutAbort() instead.
+        *
         * @param string $event Event name
         * @param array $args Array of parameters passed to hook functions
-        * @param string|null $deprecatedVersion Optionally, mark hook as deprecated with version number
+        * @param string|null $deprecatedVersion [optional] Mark hook as deprecated with version number
         * @return bool True if no handler aborted the hook
         *
         * @throws Exception
@@ -130,61 +202,11 @@ class Hooks {
         */
        public static function run( $event, array $args = [], $deprecatedVersion = null ) {
                foreach ( self::getHandlers( $event ) as $hook ) {
-                       // Turn non-array values into an array. (Can't use casting because of objects.)
-                       if ( !is_array( $hook ) ) {
-                               $hook = [ $hook ];
-                       }
-
-                       if ( !array_filter( $hook ) ) {
-                               // Either array is empty or it's an array filled with null/false/empty.
+                       $retval = self::callHook( $event, $hook, $args, $deprecatedVersion );
+                       if ( $retval === null ) {
                                continue;
-                       } elseif ( is_array( $hook[0] ) ) {
-                               // First element is an array, meaning the developer intended
-                               // the first element to be a callback. Merge it in so that
-                               // processing can be uniform.
-                               $hook = array_merge( $hook[0], array_slice( $hook, 1 ) );
-                       }
-
-                       /**
-                        * $hook can be: a function, an object, an array of $function and
-                        * $data, an array of just a function, an array of object and
-                        * method, or an array of object, method, and data.
-                        */
-                       if ( $hook[0] instanceof Closure ) {
-                               $func = "hook-$event-closure";
-                               $callback = array_shift( $hook );
-                       } elseif ( is_object( $hook[0] ) ) {
-                               $object = array_shift( $hook );
-                               $method = array_shift( $hook );
-
-                               // If no method was specified, default to on$event.
-                               if ( $method === null ) {
-                                       $method = "on$event";
-                               }
-
-                               $func = get_class( $object ) . '::' . $method;
-                               $callback = [ $object, $method ];
-                       } elseif ( is_string( $hook[0] ) ) {
-                               $func = $callback = array_shift( $hook );
-                       } else {
-                               throw new MWException( 'Unknown datatype in hooks for ' . $event . "\n" );
-                       }
-
-                       // Run autoloader (workaround for call_user_func_array bug)
-                       // and throw error if not callable.
-                       if ( !is_callable( $callback ) ) {
-                               throw new MWException( 'Invalid callback ' . $func . ' in hooks for ' . $event . "\n" );
                        }
 
-                       // mark hook as deprecated, if deprecation version is specified
-                       if ( $deprecatedVersion !== null ) {
-                               wfDeprecated( "$event hook (used in $func)", $deprecatedVersion );
-                       }
-
-                       // Call the hook.
-                       $hook_args = array_merge( $hook, $args );
-                       $retval = call_user_func_array( $callback, $hook_args );
-
                        // Process the return value.
                        if ( is_string( $retval ) ) {
                                // String returned means error.
@@ -197,4 +219,26 @@ class Hooks {
 
                return true;
        }
+
+       /**
+        * Call hook functions defined in Hooks::register and $wgHooks.
+        *
+        * @param string $event Event name
+        * @param array $args Array of parameters passed to hook functions
+        * @param string|null $deprecatedVersion [optional] Mark hook as deprecated with version number
+        * @return bool Always true
+        * @throws MWException If a callback is invalid, unknown
+        * @throws UnexpectedValueException If a callback returns an abort value.
+        * @since 1.30
+        */
+       public static function runWithoutAbort( $event, array $args = [], $deprecatedVersion = null ) {
+               foreach ( self::getHandlers( $event ) as $hook ) {
+                       $fname = null;
+                       $retval = self::callHook( $event, $hook, $args, $deprecatedVersion, $fname );
+                       if ( $retval !== null && $retval !== true ) {
+                               throw new UnexpectedValueException( "Invalid return from $fname for unabortable $event." );
+                       }
+               }
+               return true;
+       }
 }
index dfc2475..a7e6684 100644 (file)
@@ -974,7 +974,7 @@ class Preferences {
                if ( $config->get( 'StructuredChangeFiltersShowPreference' ) ) {
                        $defaultPreferences['rcenhancedfilters-disable'] = [
                                'type' => 'toggle',
-                               'section' => 'rc/advancedrc',
+                               'section' => 'rc/opt-out',
                                'label-message' => 'rcfilters-preference-label',
                                'help-message' => 'rcfilters-preference-help',
                        ];
index eadc7d1..0091513 100644 (file)
@@ -615,9 +615,9 @@ class Xml {
 
                if ( $content !== false ) {
                        $s .= $content . "\n";
+                       $s .= self::closeElement( 'fieldset' ) . "\n";
                }
 
-               $s .= self::closeElement( 'fieldset' ) . "\n";
                return $s;
        }
 
index 7460340..fe84852 100644 (file)
@@ -192,27 +192,26 @@ class HistoryAction extends FormlessAction {
 
                // Add the general form
                $action = htmlspecialchars( wfScript() );
+               $content = Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) . "\n";
+               $content .= Html::hidden( 'action', 'history' ) . "\n";
+               $content .= Xml::dateMenu(
+                       ( $year == null ? MWTimestamp::getLocalInstance()->format( 'Y' ) : $year ),
+                       $month
+               ) . '&#160;';
+               $content .= $tagSelector ? ( implode( '&#160;', $tagSelector ) . '&#160;' ) : '';
+               $content .= $checkDeleted . Html::submitButton(
+                       $this->msg( 'historyaction-submit' )->text(),
+                       [],
+                       [ 'mw-ui-progressive' ]
+               );
                $out->addHTML(
                        "<form action=\"$action\" method=\"get\" id=\"mw-history-searchform\">" .
                        Xml::fieldset(
                                $this->msg( 'history-fieldset-title' )->text(),
-                               false,
+                               $content,
                                [ 'id' => 'mw-history-search' ]
                        ) .
-                       Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) . "\n" .
-                       Html::hidden( 'action', 'history' ) . "\n" .
-                       Xml::dateMenu(
-                               ( $year == null ? MWTimestamp::getLocalInstance()->format( 'Y' ) : $year ),
-                               $month
-                       ) . '&#160;' .
-                       ( $tagSelector ? ( implode( '&#160;', $tagSelector ) . '&#160;' ) : '' ) .
-                       $checkDeleted .
-                       Html::submitButton(
-                               $this->msg( 'historyaction-submit' )->text(),
-                               [],
-                               [ 'mw-ui-progressive' ]
-                       ) . "\n" .
-                       '</fieldset></form>'
+                       '</form>'
                );
 
                Hooks::run( 'PageHistoryBeforeList', [ &$this->page, $this->getContext() ] );
index e15d7da..7c86e09 100644 (file)
@@ -41,6 +41,15 @@ class ApiExpandTemplates extends ApiBase {
                $params = $this->extractRequestParams();
                $this->requireMaxOneParameter( $params, 'prop', 'generatexml' );
 
+               $title = $params['title'];
+               if ( $title === null ) {
+                       $titleProvided = false;
+                       // A title is needed for parsing, so arbitrarily choose one
+                       $title = 'API';
+               } else {
+                       $titleProvided = true;
+               }
+
                if ( $params['prop'] === null ) {
                        $this->addDeprecation(
                                'apiwarn-deprecation-expandtemplates-prop', 'action=expandtemplates&!prop'
@@ -50,6 +59,11 @@ class ApiExpandTemplates extends ApiBase {
                        $prop = array_flip( $params['prop'] );
                }
 
+               $titleObj = Title::newFromText( $title );
+               if ( !$titleObj || $titleObj->isExternal() ) {
+                       $this->dieWithError( [ 'apierror-invalidtitle', wfEscapeWikiText( $params['title'] ) ] );
+               }
+
                // Get title and revision ID for parser
                $revid = $params['revid'];
                if ( $revid !== null ) {
@@ -57,11 +71,17 @@ class ApiExpandTemplates extends ApiBase {
                        if ( !$rev ) {
                                $this->dieWithError( [ 'apierror-nosuchrevid', $revid ] );
                        }
-                       $title_obj = $rev->getTitle();
-               } else {
-                       $title_obj = Title::newFromText( $params['title'] );
-                       if ( !$title_obj || $title_obj->isExternal() ) {
-                               $this->dieWithError( [ 'apierror-invalidtitle', wfEscapeWikiText( $params['title'] ) ] );
+                       $pTitleObj = $titleObj;
+                       $titleObj = $rev->getTitle();
+                       if ( $titleProvided ) {
+                               if ( !$titleObj->equals( $pTitleObj ) ) {
+                                       $this->addWarning( [ 'apierror-revwrongpage', $rev->getId(),
+                                               wfEscapeWikiText( $pTitleObj->getPrefixedText() ) ] );
+                               }
+                       } else {
+                               // Consider the title derived from the revid as having
+                               // been provided.
+                               $titleProvided = true;
                        }
                }
 
@@ -78,12 +98,12 @@ class ApiExpandTemplates extends ApiBase {
                $reset = null;
                $suppressCache = false;
                Hooks::run( 'ApiMakeParserOptions',
-                       [ $options, $title_obj, $params, $this, &$reset, &$suppressCache ] );
+                       [ $options, $titleObj, $params, $this, &$reset, &$suppressCache ] );
 
                $retval = [];
 
                if ( isset( $prop['parsetree'] ) || $params['generatexml'] ) {
-                       $wgParser->startExternalParse( $title_obj, $options, Parser::OT_PREPROCESS );
+                       $wgParser->startExternalParse( $titleObj, $options, Parser::OT_PREPROCESS );
                        $dom = $wgParser->preprocessToDom( $params['text'] );
                        if ( is_callable( [ $dom, 'saveXML' ] ) ) {
                                $xml = $dom->saveXML();
@@ -103,9 +123,9 @@ class ApiExpandTemplates extends ApiBase {
                // if they didn't want any output except (probably) the parse tree,
                // then don't bother actually fully expanding it
                if ( $prop || $params['prop'] === null ) {
-                       $wgParser->startExternalParse( $title_obj, $options, Parser::OT_PREPROCESS );
+                       $wgParser->startExternalParse( $titleObj, $options, Parser::OT_PREPROCESS );
                        $frame = $wgParser->getPreprocessor()->newFrame();
-                       $wikitext = $wgParser->preprocess( $params['text'], $title_obj, $options, $revid, $frame );
+                       $wikitext = $wgParser->preprocess( $params['text'], $titleObj, $options, $revid, $frame );
                        if ( $params['prop'] === null ) {
                                // the old way
                                ApiResult::setContentValue( $retval, 'wikitext', $wikitext );
@@ -169,9 +189,7 @@ class ApiExpandTemplates extends ApiBase {
 
        public function getAllowedParams() {
                return [
-                       'title' => [
-                               ApiBase::PARAM_DFLT => 'API',
-                       ],
+                       'title' => null,
                        'text' => [
                                ApiBase::PARAM_TYPE => 'text',
                                ApiBase::PARAM_REQUIRED => true,
index 031fbf7..7cbd353 100644 (file)
@@ -48,10 +48,11 @@ class ApiParse extends ApiBase {
                // Get parameters
                $params = $this->extractRequestParams();
 
-               // No easy way to say that text & title are allowed together while the
-               // rest aren't, so just do it in two calls.
+               // No easy way to say that text and title or revid are allowed together
+               // while the rest aren't, so just do it in three calls.
                $this->requireMaxOneParameter( $params, 'page', 'pageid', 'oldid', 'text' );
                $this->requireMaxOneParameter( $params, 'page', 'pageid', 'oldid', 'title' );
+               $this->requireMaxOneParameter( $params, 'page', 'pageid', 'oldid', 'revid' );
 
                $text = $params['text'];
                $title = $params['title'];
@@ -169,6 +170,25 @@ class ApiParse extends ApiBase {
                        if ( !$titleObj || $titleObj->isExternal() ) {
                                $this->dieWithError( [ 'apierror-invalidtitle', wfEscapeWikiText( $title ) ] );
                        }
+                       $revid = $params['revid'];
+                       if ( $revid !== null ) {
+                               $rev = Revision::newFromId( $revid );
+                               if ( !$rev ) {
+                                       $this->dieWithError( [ 'apierror-nosuchrevid', $revid ] );
+                               }
+                               $pTitleObj = $titleObj;
+                               $titleObj = $rev->getTitle();
+                               if ( $titleProvided ) {
+                                       if ( !$titleObj->equals( $pTitleObj ) ) {
+                                               $this->addWarning( [ 'apierror-revwrongpage', $rev->getId(),
+                                                       wfEscapeWikiText( $pTitleObj->getPrefixedText() ) ] );
+                                       }
+                               } else {
+                                       // Consider the title derived from the revid as having
+                                       // been provided.
+                                       $titleProvided = true;
+                               }
+                       }
                        $wgTitle = $titleObj;
                        if ( $titleObj->canExist() ) {
                                $pageObj = WikiPage::factory( $titleObj );
@@ -183,7 +203,11 @@ class ApiParse extends ApiBase {
 
                        if ( !$textProvided ) {
                                if ( $titleProvided && ( $prop || $params['generatexml'] ) ) {
-                                       $this->addWarning( 'apiwarn-parse-titlewithouttext' );
+                                       if ( $revid !== null ) {
+                                               $this->addWarning( 'apiwarn-parse-revidwithouttext' );
+                                       } else {
+                                               $this->addWarning( 'apiwarn-parse-titlewithouttext' );
+                                       }
                                }
                                // Prevent warning from ContentHandler::makeContent()
                                $text = '';
@@ -247,9 +271,9 @@ class ApiParse extends ApiBase {
 
                        // Not cached (save or load)
                        if ( $params['pst'] ) {
-                               $p_result = $this->pstContent->getParserOutput( $titleObj, null, $popts );
+                               $p_result = $this->pstContent->getParserOutput( $titleObj, $revid, $popts );
                        } else {
-                               $p_result = $this->content->getParserOutput( $titleObj, null, $popts );
+                               $p_result = $this->content->getParserOutput( $titleObj, $revid, $popts );
                        }
                }
 
@@ -785,6 +809,9 @@ class ApiParse extends ApiBase {
                        'text' => [
                                ApiBase::PARAM_TYPE => 'text',
                        ],
+                       'revid' => [
+                               ApiBase::PARAM_TYPE => 'integer',
+                       ],
                        'summary' => null,
                        'page' => null,
                        'pageid' => [
index 6b2a2b7..6d7fea2 100644 (file)
        "apihelp-expandtemplates-summary": "يوسع كافة القوالب ضمن نصوص الويكي.",
        "apihelp-expandtemplates-param-title": "عنوان الصفحة.",
        "apihelp-expandtemplates-param-text": "نص ويكي للتحويل.",
-       "apihelp-expandtemplates-param-revid": "معرف المراجعة، ل<nowiki>{{REVISIONID}}</nowiki> والمتغيرات مماثلة.",
+       "apihelp-expandtemplates-param-revid": "معرف المراجعة، ل<code><nowiki>{{REVISIONID}}</nowiki></code> والمتغيرات مماثلة.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "نص الويكي الموسع",
        "apihelp-expandtemplates-paramvalue-prop-properties": "خصائص الصفحة التي تحددها الكلمات السحرية الموسعة في نص الويكي.",
        "apihelp-expandtemplates-paramvalue-prop-volatile": "إذا كان الإخراج سريع التأثر، ينبغي عدم استخدامه في أي مكان آخر داخل الصفحة.",
index a9e4ccd..da8535d 100644 (file)
        "apihelp-expandtemplates-summary": "wikitext ҡалыптарын аса.",
        "apihelp-expandtemplates-param-title": "Бит баш һүҙе",
        "apihelp-expandtemplates-param-text": "Конвертлау өсөн викитекст",
-       "apihelp-expandtemplates-param-revid": "<nowiki>{{REVISIONID}}</nowiki> һәм шуға оҡшаған  алмаштар өсөн ID-ны яңынан ҡарау",
+       "apihelp-expandtemplates-param-revid": "<code><nowiki>{{REVISIONID}}</nowiki></code> һәм шуға оҡшаған  алмаштар өсөн ID-ны яңынан ҡарау",
        "apihelp-expandtemplates-param-prop": "\nАлыу өсөн, мәғлүмәттең ҡайһы өлөшө\n\nИғтибар итегеҙ, әгәр бер ғәмәл дә һайланмаһа, ул саҡта һөҙөмтә  вики- текстан торасаҡ, тик сығыу элекке форматта.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "Киңәйтелгән викитекст",
        "apihelp-expandtemplates-paramvalue-prop-categories": "Бар категориялар ҙа вики текста  күрһәтелмәй индерелгән мәғлүмәттәрҙе күрһәтә",
index 1e11427..fcb4af4 100644 (file)
@@ -94,7 +94,7 @@
        "apihelp-expandtemplates-summary": "Rozbalí všechny šablony ve wikitextu.",
        "apihelp-expandtemplates-param-title": "Název stránky.",
        "apihelp-expandtemplates-param-text": "Wikitext k převedení.",
-       "apihelp-expandtemplates-param-revid": "ID revize, pro <nowiki>{{REVISIONID}}</nowiki> a podobné proměnné.",
+       "apihelp-expandtemplates-param-revid": "ID revize, pro <code><nowiki>{{REVISIONID}}</nowiki></code> a podobné proměnné.",
        "apihelp-feedcontributions-summary": "Vrátí kanál příspěvků uživatele.",
        "apihelp-feedcontributions-param-feedformat": "Formát kanálu.",
        "apihelp-feedcontributions-param-year": "Od roku (a dříve).",
index a473893..d3273db 100644 (file)
        "apihelp-expandtemplates-summary": "Alle Vorlagen innerhalb des Wikitextes expandieren.",
        "apihelp-expandtemplates-param-title": "Titel der Seite.",
        "apihelp-expandtemplates-param-text": "Zu konvertierender Wikitext.",
-       "apihelp-expandtemplates-param-revid": "Versionsnummer, die für die Anzeige von <nowiki>{{REVISIONID}}</nowiki> und ähnlichen Variablen verwendet wird.",
+       "apihelp-expandtemplates-param-revid": "Versionsnummer, die für die Anzeige von <code><nowiki>{{REVISIONID}}</nowiki></code> und ähnlichen Variablen verwendet wird.",
        "apihelp-expandtemplates-param-prop": "Welche Informationen abgerufen werden sollen.\n\nBeachte bitte, dass das Ergebnis Wikitext enthält, aber die Ausgabe in einem veralteten Format ist, falls keine Werte ausgewählt sind.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "Der expandierte Wikitext.",
        "apihelp-expandtemplates-paramvalue-prop-categories": "Kategorien in der Eingabe vorhanden, die nicht in der Ausgabe des Wikitextes vertreten sind.",
        "apihelp-paraminfo-example-1": "Zeige Info für <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd>, und <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
        "apihelp-parse-param-title": "Titel der Seite, zu der der Text gehört. Falls ausgelassen, muss <var>$1contentmodel</var> angegeben werden und [[API]] wird als Titel verwendet.",
        "apihelp-parse-param-text": "Zu parsender Text. <var>$1title</var> oder <var>$1contentmodel</var> verwenden, um das Inhaltsmodell zu steuern.",
+       "apihelp-parse-param-revid": "Versionskennung, für <code><nowiki>{{REVISIONID}}</nowiki></code> und ähnliche Variablen.",
        "apihelp-parse-param-summary": "Zu parsende Zusammenfassung.",
        "apihelp-parse-param-page": "Parst den Inhalt dieser Seite. Kann nicht zusammen mit <var>$1text</var> und <var>$1title</var> verwendet werden.",
        "apihelp-parse-param-pageid": "Parst den Inhalt dieser Seite. Überschreibt <var>$1page</var>.",
        "apiwarn-invalidcategory": "„$1“ ist keine Kategorie.",
        "apiwarn-invalidtitle": "„$1“ ist kein gültiger Titel.",
        "apiwarn-notfile": "„$1“ ist keine Datei.",
+       "apiwarn-parse-revidwithouttext": "<var>revid</var>, ohne <var>text</var> verwendet, und geparste Seiteneigenschaften wurden angefordert. Wolltest du <var>oldid</var> anstatt <var>revid</var> verwenden?",
        "apiwarn-toomanyvalues": "Es wurden zu viele Werte für den Parameter <var>$1</var> angegeben. Die Obergrenze liegt bei $2.",
        "apiwarn-validationfailed-badpref": "Keine gültige Einstellung.",
        "apiwarn-validationfailed-cannotset": "Kann nicht von diesem Modul festgelegt werden.",
index 9fbc012..dbd5451 100644 (file)
        "apihelp-expandtemplates-summary": "Expands all templates within wikitext.",
        "apihelp-expandtemplates-param-title": "Title of page.",
        "apihelp-expandtemplates-param-text": "Wikitext to convert.",
-       "apihelp-expandtemplates-param-revid": "Revision ID, for <nowiki>{{REVISIONID}}</nowiki> and similar variables.",
+       "apihelp-expandtemplates-param-revid": "Revision ID, for <code><nowiki>{{REVISIONID}}</nowiki></code> and similar variables.",
        "apihelp-expandtemplates-param-prop": "Which pieces of information to get.\n\nNote that if no values are selected, the result will contain the wikitext, but the output will be in a deprecated format.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "The expanded wikitext.",
        "apihelp-expandtemplates-paramvalue-prop-categories": "Any categories present in the input that are not represented in the wikitext output.",
        "apihelp-paraminfo-example-2": "Show info for all submodules of <kbd>[[Special:ApiHelp/query|action=query]]</kbd>.",
 
        "apihelp-parse-summary": "Parses content and returns parser output.",
-       "apihelp-parse-extended-description": "See the various prop-modules of <kbd>[[Special:ApiHelp/query|action=query]]</kbd> to get information from the current version of a page.\n\nThere are several ways to specify the text to parse:\n# Specify a page or revision, using <var>$1page</var>, <var>$1pageid</var>, or <var>$1oldid</var>.\n# Specify content explicitly, using <var>$1text</var>, <var>$1title</var>, and <var>$1contentmodel</var>.\n# Specify only a summary to parse. <var>$1prop</var> should be given an empty value.",
+       "apihelp-parse-extended-description": "See the various prop-modules of <kbd>[[Special:ApiHelp/query|action=query]]</kbd> to get information from the current version of a page.\n\nThere are several ways to specify the text to parse:\n# Specify a page or revision, using <var>$1page</var>, <var>$1pageid</var>, or <var>$1oldid</var>.\n# Specify content explicitly, using <var>$1text</var>, <var>$1title</var>, <var>$1revid</var>, and <var>$1contentmodel</var>.\n# Specify only a summary to parse. <var>$1prop</var> should be given an empty value.",
        "apihelp-parse-param-title": "Title of page the text belongs to. If omitted, <var>$1contentmodel</var> must be specified, and [[API]] will be used as the title.",
        "apihelp-parse-param-text": "Text to parse. Use <var>$1title</var> or <var>$1contentmodel</var> to control the content model.",
+       "apihelp-parse-param-revid": "Revision ID, for <code><nowiki>{{REVISIONID}}</nowiki></code> and similar variables.",
        "apihelp-parse-param-summary": "Summary to parse.",
        "apihelp-parse-param-page": "Parse the content of this page. Cannot be used together with <var>$1text</var> and <var>$1title</var>.",
        "apihelp-parse-param-pageid": "Parse the content of this page. Overrides <var>$1page</var>.",
        "apiwarn-notfile": "\"$1\" is not a file.",
        "apiwarn-nothumb-noimagehandler": "Could not create thumbnail because $1 does not have an associated image handler.",
        "apiwarn-parse-nocontentmodel": "No <var>title</var> or <var>contentmodel</var> was given, assuming $1.",
+       "apiwarn-parse-revidwithouttext": "<var>revid</var> used without <var>text</var>, and parsed page properties were requested. Did you mean to use <var>oldid</var> instead of <var>revid</var>?",
        "apiwarn-parse-titlewithouttext": "<var>title</var> used without <var>text</var>, and parsed page properties were requested. Did you mean to use <var>page</var> instead of <var>title</var>?",
        "apiwarn-redirectsandrevids": "Redirect resolution cannot be used together with the <var>revids</var> parameter. Any redirects the <var>revids</var> point to have not been resolved.",
        "apiwarn-tokennotallowed": "Action \"$1\" is not allowed for the current user.",
index 9b6b81d..af3097b 100644 (file)
        "apihelp-expandtemplates-summary": "Expande todas las plantillas en wikitexto.",
        "apihelp-expandtemplates-param-title": "Título de la página.",
        "apihelp-expandtemplates-param-text": "Sintaxis wiki que se convertirá.",
-       "apihelp-expandtemplates-param-revid": "Revisión de ID, para <nowiki>{{REVISIONID}}</nowiki> y variables similares.",
+       "apihelp-expandtemplates-param-revid": "Revisión de ID, para <code><nowiki>{{REVISIONID}}</nowiki></code> y variables similares.",
        "apihelp-expandtemplates-param-prop": "Qué elementos de información se utilizan para llegar.\n\nTenga en cuenta que si no se seleccionan los valores, el resultado contendrá el wikitexto, pero la salida será en un formato obsoleto.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "El wikitexto expandido.",
        "apihelp-expandtemplates-paramvalue-prop-categories": "Cualesquiera categorías presentes en la entrada que no están representadas en salida de wikitexto.",
index 9a16e81..32c5164 100644 (file)
@@ -73,7 +73,7 @@
        "apihelp-emailuser-example-email": "<kbd>WikiSysop</kbd> erabiltzaileari mezu elektronikoa bidali <kbd>Edukia</kbd> testuarekin.",
        "apihelp-expandtemplates-param-title": "Orrialdearen izenburua.",
        "apihelp-expandtemplates-param-text": "Bihurtzeko Wikitestua",
-       "apihelp-expandtemplates-param-revid": "Berrikusketa ID, <nowiki>{{BERRIKUSKETAID}}</nowiki> eta antzeko aldagaientzako.",
+       "apihelp-expandtemplates-param-revid": "Berrikusketa ID, <code><nowiki>{{REVISIONID}}</nowiki></code> eta antzeko aldagaientzako.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "Wikitestu zabaldua.",
        "apihelp-expandtemplates-paramvalue-prop-ttl": "Emaitzen cache-ak baliogabetu baino lehen iraun dezaketen denbora.",
        "apihelp-feedcontributions-param-feedformat": "Produktuaren formatua.",
index 4c6da2f..bd9ebcf 100644 (file)
        "apihelp-expandtemplates-summary": "Développe tous les modèles avec du wikitexte.",
        "apihelp-expandtemplates-param-title": "Titre de la page.",
        "apihelp-expandtemplates-param-text": "Wikitexte à convertir.",
-       "apihelp-expandtemplates-param-revid": "ID de révision, pour <nowiki>{{REVISIONID}}</nowiki> et les variables semblables.",
+       "apihelp-expandtemplates-param-revid": "ID de révision, pour <code><nowiki>{{REVISIONID}}</nowiki></code> et les variables semblables.",
        "apihelp-expandtemplates-param-prop": "Quelles informations récupérer.\n\nNoter que si aucune valeur n’est sélectionnée, le résultat contiendra le wikitexte, mais la sortie sera dans un format désuet.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "Le wikitexte développé",
        "apihelp-expandtemplates-paramvalue-prop-categories": "Toutes les catégories présentes dans l’entrée qui ne sont pas représentées dans la sortie du wikitexte.",
index c873685..8e978b2 100644 (file)
        "apihelp-expandtemplates-summary": "Expandir tódolos modelos dentro do wikitexto.",
        "apihelp-expandtemplates-param-title": "Título da páxina.",
        "apihelp-expandtemplates-param-text": "Sintaxis wiki a converter.",
-       "apihelp-expandtemplates-param-revid": "ID de revisión, para <nowiki>{{REVISIONID}}</nowiki> e variables similares.",
+       "apihelp-expandtemplates-param-revid": "ID de revisión, para <code><nowiki>{{REVISIONID}}</nowiki></code> e variables similares.",
        "apihelp-expandtemplates-param-prop": "Pezas de información a retornar.\n\nTeña en conta que se non se selecciona ningún valor o resultado conterá o texto wiki, pero a saída estará nun formato obsoleto.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "O wikitexto expandido.",
        "apihelp-expandtemplates-paramvalue-prop-categories": "Calquera categoría presente na entrada que non estea representada na saída do texto wiki.",
index dcb4efb..f9016c8 100644 (file)
        "apihelp-expandtemplates-summary": "הרחבת כל התבניות בתוך קוד הוויקי.",
        "apihelp-expandtemplates-param-title": "כותרת הדף.",
        "apihelp-expandtemplates-param-text": "איזה קוד ויקי להמיר.",
-       "apihelp-expandtemplates-param-revid": "מזהה גרסה, עבור <nowiki>{{REVISIONID}}</nowiki> ומשתנים דומים.",
+       "apihelp-expandtemplates-param-revid": "מזהה גרסה, עבור <code><nowiki>{{REVISIONID}}</nowiki></code> ומשתנים דומים.",
        "apihelp-expandtemplates-param-prop": "אילו חלקי מידע לקבל.\n\nיש לשים לכך שאם לא נבחרו ערכים, התוצאה תכיל את קוד הוויקי, אבל הפלט יהיה בתסדיר מיושן.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "קוד הוויקי המורחב.",
        "apihelp-expandtemplates-paramvalue-prop-categories": "קטגוריות כלשהן שקיימות בקלט ואינן מיוצגות בפלט הוויקיטקסט.",
index 813fb7c..9218258 100644 (file)
        "apihelp-expandtemplates-summary": "Minden sablon kibontása a wikiszövegben.",
        "apihelp-expandtemplates-param-title": "Lap címe.",
        "apihelp-expandtemplates-param-text": "Az átalakítandó wikiszöveg.",
-       "apihelp-expandtemplates-param-revid": "Változatazonosító a <nowiki>{{REVISIONID}}</nowiki> és hasonló változók kibontásához.",
+       "apihelp-expandtemplates-param-revid": "Változatazonosító a <code><nowiki>{{REVISIONID}}</nowiki></code> és hasonló változók kibontásához.",
        "apihelp-expandtemplates-param-prop": "A lekérendő információk.\n\nHa nincs megadva érték, a válasz tartalmazni fogja a wikiszöveget, de a kimenet elavult formátumú lesz.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "A kibontott wikiszöveg.",
        "apihelp-expandtemplates-paramvalue-prop-categories": "Bármilyen, a bemenetben szereplő kategória, ami nem jelenik meg a wikiszöveges kimenetben.",
index 1d248e2..5af7667 100644 (file)
        "apihelp-expandtemplates-summary": "Ги проширува сите шаблони во викитекст.",
        "apihelp-expandtemplates-param-title": "Наслов на страница.",
        "apihelp-expandtemplates-param-text": "Викитекст за претворање.",
-       "apihelp-expandtemplates-param-revid": "Назнака на преработката, за <nowiki>{{REVISIONID}}</nowiki> и слични променливи.",
+       "apihelp-expandtemplates-param-revid": "Назнака на преработката, за <code><nowiki>{{REVISIONID}}</nowiki></code> и слични променливи.",
        "apihelp-expandtemplates-param-prop": "Кои информации треба да ги добиете:\n\nИмајте на ум дека ако не изберете никаква вредност, исходот ќе го содржи викитекстот, но изводот ќе биде во застарен формат.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "Проширениот викитекст.",
        "apihelp-expandtemplates-param-includecomments": "Дали во изводот да се вклучени HTML-коментари.",
index 9b509ee..ac134f0 100644 (file)
        "apihelp-expandtemplates-summary": "Rozwija wszystkie szablony zawarte w wikitekście.",
        "apihelp-expandtemplates-param-title": "Tytuł strony.",
        "apihelp-expandtemplates-param-text": "Wikitext do przekonwertowania.",
-       "apihelp-expandtemplates-param-revid": "ID wersji, dla <nowiki>{{REVISIONID}}</nowiki> i podobnych zmiennych.",
+       "apihelp-expandtemplates-param-revid": "ID wersji, dla <code><nowiki>{{REVISIONID}}</nowiki></code> i podobnych zmiennych.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "Rozwinięty wikitekst.",
        "apihelp-feedcontributions-summary": "Zwraca kanał wkładu użytkownika.",
        "apihelp-feedcontributions-param-feedformat": "Format danych wyjściowych.",
index 0b9a57b..68d5197 100644 (file)
        "apihelp-expandtemplates-summary": "Expande todas a predefinições em texto wiki.",
        "apihelp-expandtemplates-param-title": "Título da página.",
        "apihelp-expandtemplates-param-text": "Texto wiki para converter.",
-       "apihelp-expandtemplates-param-revid": "ID da revisão, para <nowiki>{{REVISIONID}}</nowiki> e variáveis semelhantes.",
+       "apihelp-expandtemplates-param-revid": "ID da revisão, para <code><nowiki>{{REVISIONID}}</nowiki></code> e variáveis semelhantes.",
        "apihelp-expandtemplates-param-prop": "Quais peças de informação obter.\n\nNote que se nenhum valor for selecionado, o resultado conterá o texto wiki, mas o resultado será em um formato obsoleto.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "O texto wiki expandido.",
        "apihelp-expandtemplates-paramvalue-prop-categories": "Quaisquer categorias presentes na entrada que não estão representadas na saída wikitext.",
index 299cb5e..78ec0be 100644 (file)
        "apihelp-expandtemplates-summary": "Expande todas as predefinições incluídas num texto em notação wiki.",
        "apihelp-expandtemplates-param-title": "Título da página.",
        "apihelp-expandtemplates-param-text": "Texto em notação wiki a converter.",
-       "apihelp-expandtemplates-param-revid": "Identificador da revisão, para <nowiki>{{REVISIONID}}</nowiki> e variáveis semelhantes.",
+       "apihelp-expandtemplates-param-revid": "Identificador da revisão, para <code><nowiki>{{REVISIONID}}</nowiki></code> e variáveis semelhantes.",
        "apihelp-expandtemplates-param-prop": "As informações que devem ser obtidas:\n\nNote que se não for selecionado nenhum valor, o resultado irá conter texto em notação wiki mas a saída estará num formato obsoleto.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "O texto em notação wiki expandido.",
        "apihelp-expandtemplates-paramvalue-prop-categories": "Quaisquer categorias existentes na entrada que não estão representadas no texto em notação wiki de saída.",
index c878a53..6aaaac7 100644 (file)
        "apihelp-expandtemplates-summary": "{{doc-apihelp-summary|expandtemplates}}",
        "apihelp-expandtemplates-param-title": "{{doc-apihelp-param|expandtemplates|title}}",
        "apihelp-expandtemplates-param-text": "{{doc-apihelp-param|expandtemplates|text}}",
-       "apihelp-expandtemplates-param-revid": "{{doc-apihelp-param|expandtemplates|revid}}\n{{doc-important|Do not translate <code><<nowiki />nowiki>{{<nowiki />REVISIONID}}<<nowiki />/nowiki></code>}}",
+       "apihelp-expandtemplates-param-revid": "{{doc-apihelp-param|expandtemplates|revid}}",
        "apihelp-expandtemplates-param-prop": "{{doc-apihelp-param|expandtemplates|prop|paramvalues=1}}",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "{{doc-apihelp-paramvalue|expandtemplates|prop|wikitext}}",
        "apihelp-expandtemplates-paramvalue-prop-categories": "{{doc-apihelp-paramvalue|expandtemplates|prop|categories}}",
        "apihelp-parse-extended-description": "{{doc-apihelp-extended-description|parse}}",
        "apihelp-parse-param-title": "{{doc-apihelp-param|parse|title}}",
        "apihelp-parse-param-text": "{{doc-apihelp-param|parse|text}}",
+       "apihelp-parse-param-revid": "{{doc-apihelp-param|parse|revid}}",
        "apihelp-parse-param-summary": "{{doc-apihelp-param|parse|summary}}",
        "apihelp-parse-param-page": "{{doc-apihelp-param|parse|page}}",
        "apihelp-parse-param-pageid": "{{doc-apihelp-param|parse|pageid}}",
        "apiwarn-notfile": "{{doc-apierror}}\n\nParameters:\n* $1 - Supplied file name.",
        "apiwarn-nothumb-noimagehandler": "{{doc-apierror}}\n\nParameters:\n* $1 - File name.",
        "apiwarn-parse-nocontentmodel": "{{doc-apierror}}\n\nParameters:\n* $1 - Content model being assumed.",
+       "apiwarn-parse-revidwithouttext": "{{doc-apierror}}",
        "apiwarn-parse-titlewithouttext": "{{doc-apierror}}",
        "apiwarn-redirectsandrevids": "{{doc-apierror}}",
        "apiwarn-tokennotallowed": "{{doc-apierror}}\n\nParameters:\n* $1 - Token type being requested, typically named after the action requiring the token.",
index 36353c8..a264737 100644 (file)
        "apihelp-expandtemplates-summary": "Разворачивание всех шаблонов в вики-текст.",
        "apihelp-expandtemplates-param-title": "Заголовок страницы.",
        "apihelp-expandtemplates-param-text": "Конвертируемый вики-текст.",
-       "apihelp-expandtemplates-param-revid": "Номер версии, для <nowiki>{{REVISIONID}}</nowiki> и аналогичных переменных.",
+       "apihelp-expandtemplates-param-revid": "Номер версии, для <code><nowiki>{{REVISIONID}}</nowiki></code> и аналогичных переменных.",
        "apihelp-expandtemplates-param-prop": "Какую информацию включить.\n\nОбратите внимание, что если ни одно из значений не выбрано, результат будет содержать вики-текст, но вывод будет в устаревшем формате.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "Расширенный вики-текст.",
        "apihelp-expandtemplates-paramvalue-prop-categories": "Любые категории, присутствующие во входных данных, но не попавшие в вики-текстовый результат.",
index 086a726..025254d 100644 (file)
        "apihelp-expandtemplates-summary": "Expanderar alla mallar inom wikitext.",
        "apihelp-expandtemplates-param-title": "Sidans rubrik.",
        "apihelp-expandtemplates-param-text": "Wikitext att konvertera.",
-       "apihelp-expandtemplates-param-revid": "Revision ID, för <nowiki>{{REVISIONID}}</nowiki> och liknande variabler.",
+       "apihelp-expandtemplates-param-revid": "Revision ID, för <code><nowiki>{{REVISIONID}}</nowiki></code> och liknande variabler.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "Den expanderade wikitexten.",
        "apihelp-expandtemplates-param-includecomments": "Om HTML-kommentarer skall inkluderas i utdata.",
        "apihelp-expandtemplates-param-generatexml": "Generera ett XML tolknings träd (ersatt av $1prop=parsetree).",
index 75a50b7..e43c383 100644 (file)
        "apihelp-expandtemplates-summary": "Розгортає усі шаблони в межах вікірозмітки.",
        "apihelp-expandtemplates-param-title": "Заголовок сторінки.",
        "apihelp-expandtemplates-param-text": "Вікітекст для перетворення.",
-       "apihelp-expandtemplates-param-revid": "ID версії, для <nowiki>{{REVISIONID}}</nowiki> і подібних змінних.",
+       "apihelp-expandtemplates-param-revid": "ID версії, для <code><nowiki>{{REVISIONID}}</nowiki></code> і подібних змінних.",
        "apihelp-expandtemplates-param-prop": "Яку інформацію отримувати.\n\nЗважте, що якщо не вибрано значень, результат міститиме вікітекст, але буде в застарілому форматі.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "Розгорнений вікітекст.",
        "apihelp-expandtemplates-paramvalue-prop-categories": "Будь-які категорії, наявні у джерелі, але не виведені у вікітексті результату.",
index 1ce0369..ef6fa60 100644 (file)
        "apihelp-expandtemplates-summary": "展开wiki文本中的所有模板。",
        "apihelp-expandtemplates-param-title": "页面标题。",
        "apihelp-expandtemplates-param-text": "要转换的wiki文本。",
-       "apihelp-expandtemplates-param-revid": "修订版本ID,用于<nowiki>{{REVISIONID}}</nowiki>和类似变体。",
+       "apihelp-expandtemplates-param-revid": "修订版本ID,用于<code><nowiki>{{REVISIONID}}</nowiki></code>和类似变体。",
        "apihelp-expandtemplates-param-prop": "要获取的那条信息。\n\n注意如果没有选定值,结果将包含wiki文本,但将以弃用的格式显示。",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "展开后的wiki文本。",
        "apihelp-expandtemplates-paramvalue-prop-categories": "任何在输出中提供的,未在wiki文本输出中表现的分类。",
index 990f16d..c46eb61 100644 (file)
@@ -403,7 +403,7 @@ class XmlDumpWriter {
                if ( $file->isDeleted( File::DELETED_COMMENT ) ) {
                        $comment = Xml::element( 'comment', [ 'deleted' => 'deleted' ] );
                } else {
-                       $comment = Xml::elementClean( 'comment', null, $file->getDescription() );
+                       $comment = Xml::elementClean( 'comment', null, strval( $file->getDescription() ) );
                }
                return "    <upload>\n" .
                        $this->writeTimestamp( $file->getTimestamp() ) .
index 96e7a7e..fd0f3f3 100644 (file)
@@ -351,9 +351,8 @@ class LocalFile extends File {
                static $results = [];
 
                if ( $prefix == '' ) {
-                       return $fields;
+                       return array_merge( $fields, [ 'description' ] );
                }
-
                if ( !isset( $results[$prefix] ) ) {
                        $prefixedFields = [];
                        foreach ( $fields as $field ) {
@@ -2308,7 +2307,6 @@ class LocalFileDeleteBatch {
 
                $encTimestamp = $dbw->addQuotes( $dbw->timestamp( $now ) );
                $encUserId = $dbw->addQuotes( $this->user->getId() );
-               $encReason = $dbw->addQuotes( $this->reason );
                $encGroup = $dbw->addQuotes( 'deleted' );
                $ext = $this->file->getExtension();
                $dotExt = $ext === '' ? '' : ".$ext";
@@ -2351,7 +2349,10 @@ class LocalFileDeleteBatch {
                        ];
                        $joins = [];
 
-                       $fields += $commentStoreFaReason->insert( $dbw, $encReason );
+                       $fields += array_map(
+                               [ $dbw, 'addQuotes' ],
+                               $commentStoreFaReason->insert( $dbw, $this->reason )
+                       );
 
                        if ( $wgCommentTableSchemaMigrationStage <= MIGRATION_WRITE_BOTH ) {
                                $fields['fa_description'] = 'img_description';
index 2abc6b6..556d0d5 100644 (file)
@@ -267,7 +267,7 @@ class MysqlUpdater extends DatabaseUpdater {
 
                        // 1.25
                        // note this patch covers other _comment and _description fields too
-                       [ 'modifyField', 'recentchanges', 'rc_comment', 'patch-editsummary-length.sql' ],
+                       [ 'doExtendCommentLengths' ],
 
                        // 1.26
                        [ 'dropTable', 'hitcounter' ],
@@ -390,7 +390,7 @@ class MysqlUpdater extends DatabaseUpdater {
                global $IP;
 
                if ( !$this->doTable( 'interwiki' ) ) {
-                       return true;
+                       return;
                }
 
                if ( $this->db->tableExists( "interwiki", __METHOD__ ) ) {
@@ -1181,6 +1181,22 @@ class MysqlUpdater extends DatabaseUpdater {
                );
        }
 
+       protected function doExtendCommentLengths() {
+               $table = $this->db->tableName( 'revision' );
+               $res = $this->db->query( "SHOW COLUMNS FROM $table LIKE 'rev_comment'" );
+               $row = $this->db->fetchObject( $res );
+
+               if ( $row && ( $row->Type !== "varbinary(767)" || $row->Default !== "" ) ) {
+                       $this->applyPatch(
+                               'patch-editsummary-length.sql',
+                               false,
+                               'Extending edit summary lengths (and setting defaults)'
+                       );
+               } else {
+                       $this->output( '...comment fields are up to date' );
+               }
+       }
+
        public function getSchemaVars() {
                global $wgDBTableOptions;
 
index cd80066..ee88d0d 100644 (file)
@@ -142,7 +142,15 @@ class CSSMin {
                if ( preg_match( '/^[\r\n\t\x20-\x7e]+$/', $contents ) ) {
                        // Do not base64-encode non-binary files (sane SVGs).
                        // (This often produces longer URLs, but they compress better, yielding a net smaller size.)
-                       $uri = 'data:' . $type . ',' . rawurlencode( $contents );
+                       $encoded = rawurlencode( $contents );
+                       // Unencode some things that don't need to be encoded, to make the encoding smaller
+                       $encoded = strtr( $encoded, [
+                               '%20' => ' ', // Unencode spaces
+                               '%2F' => '/', // Unencode slashes
+                               '%3A' => ':', // Unencode colons
+                               '%3D' => '=', // Unencode equals signs
+                       ] );
+                       $uri = 'data:' . $type . ',' . $encoded;
                        if ( !$ie8Compat || strlen( $uri ) < self::DATA_URI_SIZE_LIMIT ) {
                                return $uri;
                        }
index 0283c4b..78889e5 100644 (file)
@@ -206,6 +206,7 @@ interface IDatabase {
         * Returns true if this database does an implicit sort when doing GROUP BY
         *
         * @return bool
+        * @deprecated Since 1.30; only use grouped or aggregated fields in the SELECT
         */
        public function implicitGroupby();
 
index bbf22ba..c04eb0a 100644 (file)
@@ -983,18 +983,12 @@ class WikiPage implements Page, IDBAccessObject {
 
                $dbr = wfGetDB( DB_REPLICA );
 
-               if ( $dbr->implicitGroupby() ) {
-                       $realNameField = 'user_real_name';
-               } else {
-                       $realNameField = 'MIN(user_real_name) AS user_real_name';
-               }
-
                $tables = [ 'revision', 'user' ];
 
                $fields = [
                        'user_id' => 'rev_user',
                        'user_name' => 'rev_user_text',
-                       $realNameField,
+                       'user_real_name' => 'MIN(user_real_name)',
                        'timestamp' => 'MAX(rev_timestamp)',
                ];
 
index e901f6f..d00b333 100644 (file)
@@ -2296,8 +2296,13 @@ class Parser {
                                                $this->mOutput->addLanguageLink( $nt->getFullText() );
                                        }
 
+                                       /**
+                                        * Strip the whitespace interwiki links produce, see T10897
+                                        */
                                        $s = rtrim( $s . $prefix );
-                                       $s .= trim( $trail, "\n" ) == '' ? '' : $prefix . $trail;
+                                       // Special case: strip newlines when only thing between
+                                       // this link and next are newlines
+                                       $s .= trim( $trail, "\n" ) === '' ? '' : $trail;
                                        continue;
                                }
 
@@ -2322,7 +2327,13 @@ class Parser {
                                                continue;
                                        }
                                } elseif ( $ns == NS_CATEGORY ) {
-                                       $s = rtrim( $s . "\n" ); # T2087
+                                       /**
+                                        * Strip the whitespace Category links produce, see T2087
+                                        */
+                                       $s = rtrim( $s . $prefix ); # T2087, T87753
+                                       // Special case: strip newlines when only thing between
+                                       // this link and next are newlines
+                                       $s .= trim( $trail, "\n" ) === '' ? '' : $trail;
 
                                        if ( $wasblank ) {
                                                $sortkey = $this->getDefaultSort();
@@ -2334,11 +2345,6 @@ class Parser {
                                        $sortkey = $this->getConverterLanguage()->convertCategoryKey( $sortkey );
                                        $this->mOutput->addCategory( $nt->getDBkey(), $sortkey );
 
-                                       /**
-                                        * Strip the whitespace Category links produce, see T2087
-                                        */
-                                       $s .= trim( $prefix . $trail, "\n" ) == '' ? '' : $prefix . $trail;
-
                                        continue;
                                }
                        }
index cbcf5a0..8b54959 100644 (file)
@@ -381,11 +381,13 @@ class ResourceLoaderImageModule extends ResourceLoaderModule {
         * @return string[] CSS declarations to use given URIs as background-image
         */
        protected function getCssDeclarations( $primary, $fallback ) {
+               $primaryUrl = CSSMin::buildUrlValue( $primary );
+               $fallbackUrl = CSSMin::buildUrlValue( $fallback );
                return [
-                       "background-image: url($fallback);",
-                       "background-image: linear-gradient(transparent, transparent), url($primary);",
+                       "background-image: $fallbackUrl;",
+                       "background-image: linear-gradient(transparent, transparent), $primaryUrl;",
                        // Do not serve SVG to Opera 12, bad rendering with border-radius or background-size (T87504)
-                       "background-image: -o-linear-gradient(transparent, transparent), url($fallback);",
+                       "background-image: -o-linear-gradient(transparent, transparent), $fallbackUrl;",
                ];
        }
 
index edfaa7c..671ab6f 100644 (file)
@@ -278,19 +278,14 @@ class SpecialNewpages extends IncludableSpecialPage {
                        }
                );
                $htmlForm->setMethod( 'get' );
-
-               $out->addHTML( Xml::fieldset( $this->msg( 'newpages' )->text() ) );
-
+               $htmlForm->setWrapperLegend( true );
+               $htmlForm->setWrapperLegendMsg( 'newpages' );
+               $htmlForm->addFooterText( Html::rawElement(
+                       'div',
+                       null,
+                       $this->filterLinks()
+               ) );
                $htmlForm->show();
-
-               $out->addHTML(
-                       Html::rawElement(
-                               'div',
-                               null,
-                               $this->filterLinks()
-                       ) .
-                       Xml::closeElement( 'fieldset' )
-               );
        }
 
        /**
index e353f0c..a13af55 100644 (file)
@@ -98,11 +98,11 @@ class SpecialRecentChangesLinked extends SpecialRecentChanges {
                                'wl_namespace=rc_namespace'
                        ] ];
                }
-               if ( $this->getUser()->isAllowed( 'rollback' ) ) {
-                       $tables[] = 'page';
-                       $join_conds['page'] = [ 'LEFT JOIN', 'rc_cur_id=page_id' ];
-                       $select[] = 'page_latest';
-               }
+
+               // JOIN on page, used for 'last revision' filter highlight
+               $tables[] = 'page';
+               $join_conds['page'] = [ 'LEFT JOIN', 'rc_cur_id=page_id' ];
+               $select[] = 'page_latest';
 
                $tagFilter = $opts['tagfilter'] ? explode( '|', $opts['tagfilter'] ) : [];
                ChangeTags::modifyDisplayQuery(
index 2750551..8418865 100644 (file)
@@ -635,11 +635,13 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                        'id' => 'mw-watchlist-form'
                ] );
                $form .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
-               $form .= Xml::fieldset(
-                       $this->msg( 'watchlist-options' )->text(),
-                       false,
+               $form .= Xml::openElement(
+                       'fieldset',
                        [ 'id' => 'mw-watchlist-options', 'class' => 'cloptions' ]
                );
+               $form .= Xml::element(
+                       'legend', null, $this->msg( 'watchlist-options' )->text()
+               );
 
                if ( !$this->isStructuredFilterUiEnabled() ) {
                        $form .= $this->makeLegend();
index 0665e11..64af71a 100644 (file)
@@ -118,16 +118,15 @@ class ActiveUsersPager extends UsersPager {
                                ) . ')';
                }
 
-               if ( $dbr->implicitGroupby() ) {
-                       $options = [ 'GROUP BY' => [ 'qcc_title' ] ];
-               } else {
-                       $options = [ 'GROUP BY' => [ 'user_name', 'user_id', 'qcc_title' ] ];
-               }
-
                return [
                        'tables' => $tables,
-                       'fields' => [ 'user_name', 'user_id', 'recentedits' => 'COUNT(*)', 'qcc_title' ],
-                       'options' => $options,
+                       'fields' => [
+                               'qcc_title',
+                               'user_name' => 'qcc_title',
+                               'user_id' => 'MAX(user_id)',
+                               'recentedits' => 'COUNT(*)'
+                       ],
+                       'options' => [ 'GROUP BY' => [ 'qcc_title' ] ],
                        'conds' => $conds
                ];
        }
index 813d1d4..1c46f4c 100644 (file)
@@ -286,13 +286,8 @@ class ImageListPager extends TablePager {
                        }
                        unset( $field );
 
-                       $dbr = wfGetDB( DB_REPLICA );
-                       if ( $dbr->implicitGroupby() ) {
-                               $options = [ 'GROUP BY' => 'img_name' ];
-                       } else {
-                               $columnlist = preg_grep( '/^img/', array_keys( $this->getFieldNames() ) );
-                               $options = [ 'GROUP BY' => array_merge( [ 'img_user' ], $columnlist ) ];
-                       }
+                       $columnlist = preg_grep( '/^img/', array_keys( $this->getFieldNames() ) );
+                       $options = [ 'GROUP BY' => array_merge( [ 'img_user' ], $columnlist ) ];
                        $join_conds = [ 'oldimage' => [ 'LEFT JOIN', 'oi_name = img_name' ] ];
                }
 
index 0e1f7a7..5243964 100644 (file)
@@ -13,6 +13,7 @@
        "tog-showhiddencats": "paazih madimutay a kakuniza",
        "underline-always": "mahizatuay",
        "underline-never": "amana kanca caay",
+       "editfont-style": "mikawaway-kalumyiti subal kataci nu silit a yangse:",
        "editfont-default": "saazih sakaluk pataayaw tu kawaw a sulyang",
        "editfont-monospace": "malecad ilaed a kataci nu silit",
        "editfont-sansserif": "pacabay tu telay a kataci nu sulit",
        "talk": "matatengil",
        "views": "ciwsace",
        "toolbox": "sakaluk",
+       "imagepage": "ciwsace tangan a kasabelih",
+       "mediawikipage": "ciwsace palatuh kasabelih",
+       "templatepage": "ciwsace taazihan-mitudung kasabelih",
+       "viewhelppage": "ciwsace buhci tu kamu kasabelih",
+       "categorypage": "ciwsace kakuniza a kasabelih",
+       "viewtalkpage": "ciwsace matatengil kasabelih",
        "otherlanguages": "zumaay a kamu",
        "redirectedfrom": "(miliyawtu tazuma nay $1)",
        "redirectpagesub": "miliyaw patatuzu’",
        "jumpto": "taayaw:",
        "jumptonavigation": "pasubana’ tu miidangay",
        "jumptosearch": "kilim",
+       "pool-timeout": "imahini mihalhal milawpes pamutek",
        "pool-queuefull": "laylay saculuk matumestu",
        "pool-errorunknown": "caay kapulita ku mungangaw",
        "aboutsite": "mahizaay {{SITENAME}}",
        "viewsource": "ciwsace sakatizeng bangu",
        "actionthrottled": "makelec saungay tuway",
        "exception-nologin": "caay henay patalabu",
+       "virus-unknownscanner": "caay kapulita tena’ tu milepi’ay:",
        "welcomeuser": "manamuh tu tayniay, $1!",
        "yourname": "misaungayay a kalungangan:",
        "userlogin-yourname": "misaungayay a kalungangan",
        "userlogin-yourpassword": "mima",
        "userlogin-yourpassword-ph": "suliten nu misuay a mima",
        "createacct-yourpassword-ph": "pisuliten tu mima",
+       "yourpasswordagain": "pisuliten tu mima cacay aca:",
        "createacct-yourpasswordagain": "malucekay tu mima",
        "createacct-yourpasswordagain-ph": "pisulitan ku mima kinacacay aca",
        "userlogin-remembermypassword": "i balucu’en aku patalabu setyitase",
+       "userlogin-signwithsecure": "pisaungay zahkez misiket tu calay-zazan(wanglu)",
        "cannotlogin-title": "la’cus patalabu",
        "cannotlogin-text": "la’cus patalabu.",
        "cannotloginnow-title": "la’cus patalabu ayza",
        "createaccount": "panganganen ku canghaw",
        "userlogin-resetpassword-link": "maliyuh ku mima kisu haw?",
        "userlogin-helplink2": "patalabu miedap",
+       "userlogin-createanother": "patizeng tu zumaay canghaw",
        "createacct-emailrequired": "imyiyo(email) puenengan",
        "createacct-emailoptional": "imyiyo(email) tigami (u pili’ay sasulitan)",
        "createacct-email-ph": "pisulitan ku imyiyo(email) nu misu",
+       "createacct-another-email-ph": "pisulitan imyiyo(email) puenengan",
        "createacct-reason": "mahicaay",
        "createacct-submit": "panganganen ku misuay a canghaw",
        "createacct-another-submit": "panganganen ku canghaw",
        "resetpass_header": "misumad canghaw mima",
        "oldpassword": "malumannay a mima",
        "newpassword": "baluhay a mima:",
+       "retypenew": "miliyaw suliten baluhay a mima:",
        "botpasswords": "kikay-tademaw a mima",
+       "botpasswords-existing": "naizawtu ku kikay-tademaw a mima",
+       "botpasswords-createnew": "patizeng baluhay kikay-tademaw a mima",
        "botpasswords-label-appid": "kalungangan nu kikay-tademaw:",
        "botpasswords-label-create": "patizeng",
        "botpasswords-label-update": "misabaluhay",
        "changeemail-submit": "misumad imyiyo(email)",
        "resettokens": "miliyaw patizeng sabuhat a mima",
        "resettokens-tokens": "sabuhat:",
+       "resettokens-resetbutton": "miliyaw patizeng mapili’ay a sabuhat-sacukcuk",
        "bold_sample": "kibetulay a sulit",
        "bold_tip": "kibetulay a sulit",
        "italic_sample": "tukenihay nisulit",
        "permissionserrors": "mungangaw ku tungus",
        "permissionserrorstext-withaction": "namakay isasaay {{PLURAL:$1|mahicaay}}, inayi’ kisu situngus miteka $2 miteka tuway misaungay:",
        "moveddeleted-notice": "kina kasabelih masipu tu.\nisasa nipabeli kina kasabelihay a masipu atu milimad nasulitan nakawawan, taneng miazih tu tatenga’ay.",
+       "log-fulllog": "ciwsace leku nasulitan-nazipa’an",
        "edit-conflict": "mikawaway-kalumyiti sasula’cus",
        "postedit-confirmation-created": "mapatizeng tu kasabelih.",
        "postedit-confirmation-restored": "mapatiku tu kasabelih.",
+       "postedit-confirmation-saved": "masuped tu mikawaway-kalumyiti nu misu.",
        "defaultmessagetext": "pataayaw tu kawaw palatuh  a sulit",
        "invalid-content-data": "lacul kalunasulitan la’cus",
        "content-model-text": "sulit a dada’",
        "content-json-empty-object": "inayi’ay a tuutuud",
        "content-json-empty-array": "inayi’ay a papazengan tu nisulitan",
+       "template-loop-category": "sitatutungay masaliyut a kasabelih",
+       "undo-nochange": "tina mikawaway-kalumyiti mapatiku tuway.",
        "viewpagelogs": "ciwsace kina kasabelih a nasulitan nakawawan",
        "currentrev": "sabaluhay masumad",
        "currentrev-asof": "i $1 a sabaluhay masumad",
        "revdelete-offender": "masumad nu ayaway  masacudaday:",
        "mergehistory-from": "saangangan kasabelih:",
        "mergehistory-into": "pabalucu’an kasabelih:",
+       "mergehistory-list": "kapah mikabuay a mikawaway-kalumyiti nazipa’an",
        "mergehistory-fail-bad-timestamp": "tatukian a suyling la’cus.",
        "mergehistory-reason": "mahicaay:",
        "mergelog": "mikabu tu nasulitan nazipa’an",
        "search-result-size": "$1 ({{PLURAL:$2|$2 ku sulit}})",
        "search-redirect": "(miliyaw tazuma namakay $1)",
        "search-section": "(tusil $1)",
+       "search-category": "(kakuniza $1)",
        "search-suggest": "u tuzu’ nu misu ku:$1 haw?",
        "search-interwiki-more": "(yadah)",
        "search-interwiki-more-results": "sayadahay a heci",
        "prefs-rc": "capi a demaiday a sumad",
        "prefs-watchlist": "miazihay a piazihan tu sulit",
        "prefs-editwatchlist": "miazihay a piazihan tu sulit nu mikawaway-kalumyiti",
+       "prefs-editwatchlist-raw": "mikawaway-kalumyiti saayaway misisip a piazihan-tu-sulit",
        "prefs-misc": "zuma",
        "prefs-resetpass": "misumad tu mima",
+       "prefs-setemail": "setin imyiyo(email) puenengan",
        "prefs-email": "imyiyo(email) mapili’ay",
        "prefs-rendering": "nuhekalan",
        "saveprefs": "suped",
        "timezonelegend": "tatukian a kakitizaan:",
        "localtime": "itiniay a tuki:",
        "servertime": "sefuci-kikay a tuki:",
+       "guesstimezone": "pisaungay saazih sakaluk setin sulyang",
        "timezoneregion-africa": "Afilika",
        "timezoneregion-america": "Amilikaco",
        "timezoneregion-antarctica": "Nancico",
        "prefs-registration": "pangangan a demiad:",
        "yourrealname": "tatengaay a ngangan:",
        "yourlanguage": "kamu:",
+       "yourvariant": "lacul kamu masazumaay:",
        "yournick": "baluhay sulitan a ngangan:",
        "email": "imyiyo(email)",
        "prefs-info": "anganganay a cesyun",
        "userrights-lookup-user": "mipili’ misaungayay",
        "userrights-groupsmember": "canan a luyaluy:",
        "userrights-reason": "mahicaay:",
+       "userrights-unchangeable-col": "amana kisu misumad tu luyaluy",
        "userrights-expiry-current": "kakatekuhan $1",
        "userrights-expiry-none": "inayi’ kakatekuhan",
        "userrights-expiry": "kakatekuhan:",
        "group-bureaucrat": "situngusay a mikawaway",
        "group-suppress": "misisipay",
        "group-all": "(hamin)",
+       "group-autoconfirmed-member": "lunuk a malucekay tu misaungayay",
        "group-bot-member": "{{GENDER:$1|kikay a tademaw}}",
        "group-bureaucrat-member": "{{GENDER:$1|situngusay-mikawaway}}",
        "grouppage-bot": "{{ns:project}}:kikay a tademaw",
        "right-edit": "kasabelih mikawaway-kalumyiti",
        "right-createtalk": "patizeng matatengil  kasabelih",
        "right-move": "milimad kasabelih",
+       "right-move-rootuserpages": "milimad tu limit misaungayay a kasabelih",
        "right-move-categorypages": "milimad kakuniza a kasabelih",
        "right-movefile": "milimad tu tangan",
        "right-upload": "patapabaw tu tangan",
        "right-writeapi": "pisaungay suliten API",
        "right-delete": "misipu tu kasabelih",
+       "right-browsearchive": "mikilim masipuay a kasabelih",
+       "right-undelete": "palawpes masipuay kasabelih",
+       "right-unblockself": "mihulak tu ku langat nu maku",
+       "right-noratelimit": "caypakasatezep nu saungayungayan",
        "right-mergehistory": "mikabu kasabelih nazipa’an",
+       "grant-generic": "\"$1\" tungus pulung han",
        "grant-group-page-interaction": "kasasukamu tu kasabelih",
        "grant-group-file-interaction": "kasasukamu tu myiti",
        "grant-group-email": "pabahel imyiyo(email)",
        "grant-group-administration": "mileku tu mikuwanay a kawaw",
        "grant-group-other": "zuma saungay nu binawlan",
        "grant-createaccount": "panganganen ku canghaw",
+       "grant-editmywatchlist": "mikawaway-kalumyiti numisu misisip a piazihan-tu-sulit",
+       "grant-editprotected": "mikawaway-kalumyiti madiputay a kasabelih",
        "grant-highvolume": "masibek mikawaway-kalumyiti",
        "grant-privateinfo": "misuped-miala madimut kasikazan a cesyun",
        "grant-uploadfile": "patapabaw ku baluhay a tangan",
        "action-read": "miasip tina kasabelih",
        "action-edit": "mikawaway-kalumyiti uyni a kasabelih",
        "action-createpage": "patizeng tina kasabelih",
+       "action-createtalk": "patizeng tuyni katatengilan kasabelih",
+       "action-createaccount": "patizeng tina misaungayay canghaw",
+       "action-minoredit": "sacuzu’ tina mikawaway-kalumyiti ku mikilulay",
+       "action-move-rootuserpages": "milimad tu limit misaungayay a kasabelih",
        "action-move-categorypages": "milimad kakuniza a kasabelih",
        "action-movefile": "milimad tina tangan",
        "action-upload": "patapabaw tina tangan",
+       "action-reupload": "mitahpu imahiniay a tangan",
        "action-delete": "misipu tina kasabelih",
        "action-deleterevision": "misipu tu masumaday nu ayaway",
        "action-deletelogentry": "masipu nasulitan nazipa’an  kasacacay",
+       "action-browsearchive": "mikilim masipuay a kasabelih",
+       "action-mergehistory": "mikabu tina belih a nazipa’an",
        "action-sendemail": "pabahel imyiyo(email)",
+       "action-editmywatchlist": "mikawaway-kalumyiti numisu misisip a piazihan-tu-sulit",
+       "action-editmyprivateinfo": "mikawaway-kalumyiti numisuay a cesyun",
+       "action-deletechangetags": "nay sulu nu nasulitan masipu aazihen a paya",
        "action-purge": "misipu tina kasabelih",
        "nchanges": "$1 {{PLURAL:$1|misumad}}",
        "enhancedrc-history": "nazipa’an",
        "rcfilters-savedqueries-setdefault": "paceken pataayaw tu kawaw",
        "rcfilters-savedqueries-new-name-label": "kalungangan",
        "rcfilters-savedqueries-cancel-label": "palawpes",
+       "rcfilters-restore-default-filters": "patiku pataayaw tu kawaw mipili’ay sakacucek",
        "rcfilters-filterlist-title": "sakacucek nu misapili’",
        "rcfilters-highlightbutton-title": "pulita sacuzu’ a heci",
        "rcfilters-highlightmenu-title": "mipili’ tu kilit",
        "rcfilters-filter-editsbyself-description": "numisuay a paanin",
        "rcfilters-filter-editsbyother-label": "zumaay tatemaw a sumad",
        "rcfilters-filter-user-experience-level-registered-label": "pangangan tuway",
+       "rcfilters-filter-user-experience-level-registered-description": "natalabuay nu mikawaway-kalumyiti.",
        "rcfilters-filter-user-experience-level-unregistered-label": "caay henay pangangan",
        "rcfilters-filter-user-experience-level-newcomer-label": "baluhayay a misaungayay",
        "rcfilters-filter-user-experience-level-learner-label": "mahananamay",
        "rcfilters-filter-minor-label": "cayka yadah ku misumad",
        "rcfilters-filter-major-label": "caay mikilulay mikawaway-kalumyiti",
        "rcfilters-filter-watchlist-watched-label": "miazih piazihan tu sulit",
+       "rcfilters-filter-watchlist-watchednew-label": "nasumadan nu baluhayay misisip a piazihan-tu-sulit",
        "rcfilters-filtergroup-changetype": "misumad nikalahizaan",
        "rcfilters-filter-pageedits-label": "mikawaway-kalumyiti nu kasabelih",
        "rcfilters-filter-newpages-label": "patizeng kasabelih",
        "filestatus": "nisanga’an niza tu tungus a kawaw setyitase:",
        "filesource": "saangangan:",
        "ignorewarnings": "sekipo sacahamin patalaw",
+       "unknown-error": "tahkal caay kapulita mungangaw.",
        "uploadwarning": "patapabaw patalaw",
        "savefile": "misuped tu tangan",
+       "uploaddisabled": "mapasatezep tu ku patapabaw",
+       "uploaddisabledtext": "patapabaw tangan mapasatezep tuway.",
        "upload-source": "saangangan a tangan",
        "upload-description": "tangan sapuelac",
        "upload-options": "patapabaw mapiliay",
        "upload-form-label-infoform-categories": "kakuniza",
        "upload-form-label-infoform-date": "demiad",
        "uploadstash": "patapabaw ku sulu nu pisipetan",
+       "uploadstash-clear": "palamadac tu sulu nu tangan",
+       "uploadstash-errclear": "palamadac tu tangan masepay.",
        "uploadstash-refresh": "misabaluhay tu tangan piazihan tu sulit",
+       "uploadstash-thumbnail": "ciwsace tu sukep tu zunga",
        "invalid-chunk-offset": "la’cus atilad kakitizaan",
        "img-auth-accessdenied": "kakaian misuped-miala",
        "upload-curl-error28": "patapabaw mautang",
        "license": "sapabeli tu kinli a cedang",
        "license-header": "sapabeli tu kinli a cedang",
        "nolicense": "caay henay mipili’",
+       "licenses-edit": "mikawaway-kalumyiti sapabeli tu kinli a cedang mapiliay",
        "license-nopreview": "(amana pataayaway miazih)",
        "listfiles-delete": "misipu",
        "imgfile": "tangan",
        "filedelete-edit-reasonlist": "masipu a mahicaay nu mikawaway-kalumyiti",
        "filedelete-maintenance-title": "la’cus masipu tu tangan",
        "download": "patasasa'",
+       "unwatchedpages": "caayay kasisip a kasabelih",
        "listredirects": "miliyaw patatuzu’ piazihan tu sulit",
        "listduplicatedfiles": "misaliyaw tu tangan piazihan tu sulit",
+       "unusedtemplates": "caayay kasaungay a taazihan mitudung",
        "randompage": "kakibalucu’ ay a kasabelih",
        "randomincategory": "kakibalucu’ kakuniza a kasabelih",
        "randomincategory-legend": "kakibalucu’ kakuniza a kasabelih",
        "statistics-header-edits": "sausi mikawaway-kalumyiti",
        "statistics-header-hooks": "zuma a sausi",
        "statistics-articles": "lacul kasabelih",
+       "statistics-files": "mapatapabaw tu a tangan",
+       "statistics-edits-average": "paybelih malecalecad mikawaway-kalumyiti su",
        "statistics-users-active": "saungay nu binawlan a misaungayay",
        "pageswithprop-prop": "susin kalungangan:",
        "pageswithprop-submit": "mileku",
+       "brokenredirects": "malepi’ ay miliyaw patatuzu’",
        "brokenredirects-delete": "misipu",
+       "withoutinterwiki": "inayi’ ku kamu masasiket a kasabelih",
        "withoutinterwiki-legend": "saayaway a sulit",
        "withoutinterwiki-submit": "paazih",
        "nbytes": "$1 {{PLURAL:$1|wyiyincu}}",
        "nrevisions": "$1 {{PLURAL:$1|masumad nu ayaway}}",
        "nimagelinks": "{{PLURAL:$1|kasabelih}}",
        "lonelypages": "masipulu’ a kasabelih",
+       "uncategorizedpages": "cayhen kakunizaay a kasabelih",
+       "uncategorizedcategories": "cayhenay kakunizaay a kakuniza",
+       "uncategorizedimages": "cayhen kakunizaay a tangan",
        "uncategorizedtemplates": "sapi kakuniza taazihan mitudung",
+       "unusedcategories": "caayay kasaungay a kakuniza",
+       "unusedimages": "caayay kasaungay a tangan",
        "wantedcategories": "maydihay a kakuniza",
        "wantedpages": "maydihay a kasabelih",
        "wantedfiles": "maydihay a tangan",
        "wantedtemplates": "maydihay a taazihan mitudung",
+       "mostlinkedcategories": "masasiket sayadahay a kakuniza",
+       "mostlinkedtemplates": "nipacaliwan kayadahay a kasabelih",
+       "mostimages": "masasiket kayadahay a tangan",
+       "prefixindex": "kilul tatangahan nu sulit palalitemuh tu kawaw kasabelih",
        "prefixindex-submit": "paazih",
+       "prefixindex-strip": "sekipo ayaw nu kamu i piazihan-tu-sulit",
        "shortpages": "ma’ngadisay a kasabelih",
        "longpages": "mangasiway a kasabelih",
        "deadendpages": "inayi’ masasiket kasabelih",
        "protectedpages": "madiputay a kasabelih",
+       "protectedpages-noredirect": "midimut miliyaw patatuzu’ kasabelih",
        "protectedpages-timestamp": "demiad tatukian",
        "protectedpages-page": "kasabelih",
        "protectedpages-expiry": "kakatekuhan",
        "protectedpages-params": "midiput tu aazihen a sulyang",
        "protectedpages-reason": "mahicaay",
        "protectedpages-submit": "paazih tu kasabelih",
+       "protectedpages-unknown-performer": "caay kapulita a misaungayay",
        "protectedtitles": "madiputay a satangahan",
        "protectedtitles-submit": "paazih tu satangahan",
        "listusers": "misaungayay a piazihan tu sulit",
        "ancientpages": "samalumanay a kasabelih",
        "move": "milimad",
        "notargettitle": "inayi’ ku pabalucu’an",
+       "pager-newer-n": "{{PLURAL:$1|baluhay $1}}",
        "pager-older-n": "{{PLURAL:$1| kusa malumanay}}",
        "suppress": "malangat",
        "apihelp": "buhci tu kamu nu API",
        "apisandbox-fetch-token": "lunuk suliten mima-sacukcuk",
        "apisandbox-submit-invalid-fields-title": "izaw tu ku langat la’cus",
        "apisandbox-results": "heci",
+       "apisandbox-request-selectformat-label": "paazih milunguc kalunasulitan u:",
+       "apisandbox-request-format-url-label": "URL palalitemuh tu kawaw sulisulitan",
+       "apisandbox-request-json-label": "milunguc JSON:",
+       "apisandbox-alert-field": "la’cus tina pisinga’an a sulyang.",
        "apisandbox-continue": "palalid",
        "apisandbox-continue-clear": "palawpis",
        "booksources": "nu cudad atu laculaculan",
        "allpages": "hamin nu kasabelih",
        "nextpage": "zikuzan a belih ($1)",
        "prevpage": "ayaway a belih ($1)",
+       "allpagesfrom": "paazih kasabelih miteka i:",
+       "allpagesto": "paazih kasabelih pahezek i:",
        "allarticles": "hamin nu kasabelih",
        "allpagessubmit": "mileku",
+       "allpagesprefix": "kilul tu saayaw nu nakamuan palalitemuh tu kawaw kasabelih:",
+       "allpages-hide-redirects": "midimut miliyaw patatuzu’ kasabelih",
        "categories": "kakuniza",
        "categories-submit": "paazih",
+       "categoriesfrom": "paazih kakuniza miteka i:",
        "linksearch": "ihekal masasiket mikilim",
        "linksearch-pat": "mikilim aazihen a sulit:",
        "linksearch-ns": "pangangananay a salaedan:",
        "listgrants-rights": "kinli",
        "trackingcategories": "mikilul nazikuzan kakuniza",
        "trackingcategories-desc": "kakuniza milisimet a tatungus",
+       "trackingcategories-nodesc": "inayi’ ku silaheciay a sapuelac",
        "trackingcategories-disabled": "mapasatezep kakuniza tuway",
        "mailnologin": "inayi’ pabahel puenengan",
        "usermaildisabled": "mapasatezep imyiyo(email)",
        "watchlist": "miazihay a piazihan tu sulit",
        "mywatchlist": "miazihay a piazihan tu sulit",
        "watchnologin": "caay henay patalabu",
+       "addwatch": "cunusen tu miazihay a piazihan-tu-sulit",
+       "removewatch": "misipu nay misisip a piazihan-tu-sulit",
        "watch": "miazih",
        "watchthispage": "miazih tuyni kasabelih",
        "unwatch": "palawpes aazihan",
        "wlshowhidepatr": "tayza mikibi mikawaway-kalumyiti",
        "wlshowhidemine": "numakuay a mikawaway-kalumyiti",
        "wlshowhidecategorization": "kasabelih nu kakuniza",
+       "watchlist-options": "misisipa piazihan-tu-sulit a syinsiang",
        "unwatching": "palawpes aazihan...",
        "enotif_anon_editor": "paceba panganganay a misaungayay $1",
        "enotif_minoredit": "payni mikilulay a mikawaway-kalumyiti",
        "actionfailed": "saungay mungangaw",
        "dellogpage": "masipu ku nasulitan nakawawan",
        "deletionlog": "masipu nasulitan nazipa’an",
+       "reverted": "patiku ayaway a baziyong",
        "deletecomment": "mahicaay:",
        "deletereasonotherlist": "zuma a mahicaay",
        "rollback": "panukasan mikawaway-kalumyiti",
        "changecontentmodel-title-label": "kasabelih satangahan",
        "changecontentmodel-model-label": "tatudungen misanga’ nu baluhay a lacul",
        "changecontentmodel-reason-label": "mahicaay:",
+       "changecontentmodel-emptymodels-title": "inayi’ ku silaheciay a lacul tatudungen-misanga",
        "protectlogpage": "midiput nasulitan nakawawan",
        "protect-legend": "malucekay tu midiputay",
        "protectcomment": "mahicaay:",
        "protectexpiry": "kakatekuhan:",
        "protect_expiry_invalid": "la’cusay a kakatekuhan",
        "protect_expiry_old": "Expiration time is in the past.",
+       "protect-default": "mahasa sacahamin misaungayay",
        "protect-level-sysop": "mahasa mikuwanay a cacay",
        "protect-summary-cascade": "patatusul",
        "protect-expiring": "kakatekuhan $1 (UTC)",
        "restriction-level-autoconfirmed": "lalusa-diput",
        "restriction-level-all": "amahicahicaay a kasalelal",
        "undelete-fieldset-title": "patiku misumad nu ayaway",
+       "undelete-nodiff": "inayi’ nasawniay a sumad.",
        "undeletebtn": "patiku",
        "undeleteinvert": "kabelihan mipili’",
        "undeletecomment": "mahicaay:",
+       "undelete-search-title": "mikilim masipuay a kasabelih",
+       "undelete-search-prefix": "paazih kasabelih miteka nay:",
        "undelete-search-submit": "kilim",
+       "undelete-error": "palawpes masipu kasabelih  mungangaw",
        "undelete-show-file-submit": "hang",
        "namespace": "pangangananay a salaedan:",
        "invert": "kabelihan mipili’",
        "ipb-unblock-addr": "mihulak tu langat $1",
        "ipb-blocklist-duration-left": "$1 pakawili",
        "ipusubmit": "misipu tina langat",
+       "unblocked-range": "mahulak tu ku langat $1.",
+       "blocklist": "malangatay tu a misaungayay",
        "autoblocklist-submit": "kilim",
+       "ipblocklist": "malangatay tu a misaungayay",
        "blocklist-userblocks": "midimut canghaw malangat",
        "blocklist-tempblocks": "midimut nanunuz malangat",
        "blocklist-timestamp": "demiad tatukian",
        "ipblocklist-submit": "kilim",
        "ipblocklist-localblock": "milangat itiniay",
        "infiniteblock": "inayi’ u sungliw",
+       "expiringblock": "$1 $2 hatinitu",
+       "anononlyblock": "wiza dada’ paceba panganganay ku misaungayay",
        "noautoblockblock": "mapasatezep lunuk  milangat",
+       "createaccountblock": "canghaw patizeng mapasatezep tuway",
        "emailblock": "mapasatezep imyiyo(email)",
        "blocklink": "milangat",
        "unblocklink": "mihulak tu langat",
        "contribslink": "paanin",
        "emaillink": "pabahel imyiyo(email)",
        "blocklogpage": "milangat tu nasulitan nakawawan",
+       "unblocklogentry": "mahulak malangat $1 tuway",
+       "block-log-flags-anononly": "wiza dada’ paceba panganganay ku misaungayay",
+       "block-log-flags-nocreate": "canghaw patizeng mapasatezep tuway",
        "block-log-flags-noautoblock": "mapasatezep lunuk  milangat",
        "block-log-flags-noemail": "mapasatezep imyiyo(email)",
+       "proxyblocker": "kutay sefuci-kikay milangat-kikay",
        "lockdb": "pamutek tu sulu nu kalunasulitan",
        "lockbtn": "pamutek tu sulu nu kalunasulitan",
+       "lockdbsuccesssub": "malahci pamutek sulu nu nasulitan tuway",
+       "unlockdbsuccesssub": "misipu pamutek tu sulu nu kalunasulitan tuway",
+       "databaselocked": "pamutek tuway ku sulu nu nasulitan.",
+       "databasenotlocked": "caay pamutek henay ku sulu nu nasulitan.",
        "move-page": "milimad $1",
        "move-page-legend": "milimad kasabelih",
        "newtitle": "baluhay satangahan:",
        "pagemovedsub": "milimad malaheci tuway",
        "movelogpage": "milimad ku nasulitan nakawawan",
        "movereason": "mahicaay:",
+       "delete_and_move_confirm": "hang, masipu tina kasabelih",
+       "immobile-source-page": "tina belih la’cus milimad.",
+       "imageinvalidfilename": "papatuzu’an a tangan  kalungangan la’cus.",
+       "move-leave-redirect": "miliwan miliyaw patatuzu’ kasabelih",
        "export": "patahkal ku kasabelih",
        "exportall": "patahkal sacahamin  kasabelih",
        "export-submit": "patahkal",
        "export-download": "misuped sapatangan",
        "export-templates": "yamalyilu taazihan mitudung",
+       "export-manual": "tiyung ku lima micunus kasabelih:",
        "allmessages": "sisetyimo palatuh",
        "allmessagesname": "kalungangan",
        "allmessagesdefault": "pataayaw tu kawaw palatuh  a sulit",
        "allmessages-filter-legend": "kilim",
+       "allmessages-filter": "kilul misumad zasatu mikilim:",
        "allmessages-filter-unmodified": "caay henay misumad",
        "allmessages-filter-all": "hamin",
        "allmessages-filter-modified": "masumad tuway",
        "allmessages-filter-translate": "mibelih",
        "thumbnail-more": "patabaki(micuwat)",
        "filemissing": "tangan mahedaw",
+       "thumbnail_dest_directory": "la’cus patizeng papatuzu’an a dilyikotoling",
+       "thumbnail_image-type": "caypi damaenay a zunga nikalahizaan",
        "thumbnail_image-missing": "tangan mahedaw: $1",
        "import": "pacumuden kasabelih",
+       "import-interwiki-sourcewiki": "saangangan Wiki:",
        "import-interwiki-sourcepage": "saangangan kasabelih:",
        "import-interwiki-templates": "yamalyilu sacahamin  taazihan mitudung",
        "import-interwiki-submit": "pacumud",
+       "import-mapping-namespace": "pacumud i pangangananay a salaedan:",
        "import-upload-filename": "kalungangan nu tangan:",
        "import-comment": "pacunus sakacaay kapawan:",
        "import-revision-count": "$1 {{PLURAL:$1|masumad nu ayaway}}",
+       "importcantopen": "la’cusay miwawah pacumuday a tangan",
        "importsuccess": "pahezek tuway pacumud!",
+       "importnofile": "caay henay papabaw pacumud tangan.",
        "importlogpage": "pacumuden nasulitan nazipa’an",
        "tooltip-pt-userpage": "{{GENDER:|misaungayay nu misu}} kasabelih",
        "tooltip-pt-mytalk": "{{GENDER:|misuay }}sasukamu a kasabelih",
        "tooltip-ca-viewsource": "uyni kasabelih madiputay tuway.\nkapah kisu miciwsace tuyni kasabelih sakatizeng bangu",
        "tooltip-ca-history": "uyini kasabelih nasawniay a sumad",
        "tooltip-ca-protect": "midiput tina kasabelih",
+       "tooltip-ca-unprotect": "misumad tuyniay a sadiput",
        "tooltip-ca-delete": "misipu tina kasabelih",
        "tooltip-ca-move": "milimad tina kasabelih",
        "tooltip-ca-watch": "paynien kasabelih micunus misuay cyinse piazihan tu sulit",
        "tooltip-t-permalink": "uyni kasabelih masumaday saluimengay misiket",
        "tooltip-ca-nstab-main": "ciwsace kasabelihay a lacul",
        "tooltip-ca-nstab-user": "ciwsace misaungayay a kasabelih",
+       "tooltip-ca-nstab-media": "ciwsace myiti kasabelih",
        "tooltip-ca-nstab-special": "uyni kasabelih u sazumaay belih, cayka tineng mikawaway tu kalumyiti",
        "tooltip-ca-nstab-project": "ciwsace cwanan kasabelih",
        "tooltip-ca-nstab-image": "ciwsace tangan kasabelih",
+       "tooltip-ca-nstab-mediawiki": "ciwsace sisetyimo palatuh",
        "tooltip-ca-nstab-template": "ciwsace taazihan mitudung",
+       "tooltip-ca-nstab-help": "ciwsace buhci tu kamu kasabelih",
        "tooltip-ca-nstab-category": "ciwsace kakuniza a kasabelih",
+       "tooltip-minoredit": "silusi tina tu payni mikilulay a mikawaway-kalumyiti",
        "tooltip-save": "misuped misuay a pisumad",
        "tooltip-publish": "patiyak tu sumad nu misu",
        "tooltip-preview": "kay iayaw nu pisuped miazih tu nu misuay nisumad.",
        "tooltip-diff": "paazih hica sa kisu labuay a nisumadan",
        "tooltip-watch": "paynien kasabelih micunus misuay cyinse piazihan tu sulit",
        "tooltip-watchlistedit-normal-submit": "misipu satangahan",
+       "tooltip-watchlistedit-raw-submit": "misabaluhay misisip tu piazihan-tu-sulit",
        "tooltip-upload": "miteka patapabaw",
        "tooltip-rollback": "sapecec \"patiku\" misiket, kapah patiku tayza nuayawanay a paanin tu nisulitan tina kasabelih mikawaway tu kalumyiti",
        "tooltip-undo": "\"patiku\" kapah tu patiku tuyni mikawaway tu kalumyiti payni pataayaway miazih muse miwawah mikawaway tu kalumyiti aazihan cudad, saka caay cayaw nu labu micunus mahicaay.",
        "tooltip-summary": "kapisulitan apuyu’ay a pecu’ nu lacul",
        "others": "zuma",
        "creditspage": "kasabelih kasakumi nu misayingaay",
+       "spamprotectiontitle": "misapili’ a cengse nu babakahen a sulit",
        "simpleantispam-label": "sapi tena’ babakahen a sulit kinsa.\nyu <strong>amana</strong> misulit kuyni pisinga’an!",
+       "pageinfo-title": "\"$1\" a cesyun",
        "pageinfo-header-basic": "anganganay a cesyun",
        "pageinfo-header-edits": "nazipa’an nu mikawaway-kalumyiti",
        "pageinfo-header-restrictions": "kasabelih midiput",
        "pageinfo-language-change": "misumad",
        "pageinfo-content-model": "kasabelih a lacul tatudungen misanga’",
        "pageinfo-content-model-change": "misumad",
+       "pageinfo-robot-policy": "nay kikay-tademaw patizeng kapah pikiliman tu nisulitan miasip",
        "pageinfo-robot-noindex": "amana",
        "pageinfo-watchers": "kasabelih miazihay a nikayadah",
+       "pageinfo-subpages-name": "tina belih a sailuc-kasabelih nikayadah",
        "pageinfo-firstuser": "kasabelih patizengay",
        "pageinfo-firsttime": "patizeng demiad nu kasabelih",
        "pageinfo-lastuser": "capiay a mikawaway-kalumyiti",
        "pageinfo-recent-authors": "capiay masacudaday a nikayadah",
        "pageinfo-toolboxlink": "kasabelih cesyun",
        "pageinfo-redirectsto-info": "katinengan",
+       "pageinfo-contentpage": "miasip papi lacul kasabelih",
        "pageinfo-contentpage-yes": "hang",
        "pageinfo-protect-cascading-yes": "hang",
        "pageinfo-protect-cascading-from": "patatusul midiput namakay",
        "pageinfo-category-pages": "kasabelih nikayadah",
        "pageinfo-category-subcats": "sailuc-kasasizuma nikayadah",
        "pageinfo-category-files": "tangan nikayadah",
+       "pageinfo-user-id": "misaungayay ID",
        "markaspatrolleddiff": "silusi natayza mikibi tuway",
        "markedaspatrolled": "silusi natayza mikibi tuway",
        "patrol-log-page": "tayza mikibi nasulitan nazipa’an",
        "minutes-ago": "ayaw $1 {{PLURAL:$1|widi}}",
        "seconds-ago": "ayaw $1 {{PLURAL:$1|a beti}}",
        "monday-at": "sakacacay a demiad nu lipay i$1",
+       "tuesday-at": "sakatusa a demied nu lipay i $1",
+       "wednesday-at": "saka tulu i $1",
        "thursday-at": "sakasepat i $1",
        "friday-at": "sakalima a demied nu lipay i $1",
        "saturday-at": "sakaenem a demiad nu lipay i $1",
        "sunday-at": "pilipayan i $1",
+       "yesterday-at": "nacila i $1",
        "metadata": "pulita tu kalunasulitan",
        "metadata-help": "uyni tangan labuay amin yamalyilu zuma cesyun, uyni a cesyun akay nay suewyi  sasasing asaca sapisekyin i tapang asaca suwyihwa saayaw katukuh pahzekan a nakawawan mapacunusay. anu nay tangan saayaway setyitase masumadtu, hatizaay pulita kalunasulitan akay la’cus mileku mabetil a misumad tu tangan.",
        "metadata-expand": "paazih pulita kalunasulitan",
        "exif-datetimeoriginal": "kalunasulitan masangaay’ a demiad atu tuki",
        "exif-datetimedigitized": "suwyihwaay a demiad atu tuki",
        "exif-exposuretime": "mapaedil a lawad",
+       "exif-exposuretime-format": "$1 beti ($2)",
        "exif-exposureprogram": "mapaedil a muse",
        "exif-spectralsensitivity": "edil-selal saahemi’han",
        "exif-isospeedratings": "ISO suli",
+       "exif-aperturevalue": "APEX edil",
+       "exif-brightnessvalue": "APEX likat",
        "exif-maxaperturevalue": "satabakiay a likat-mulu i lala’ nu kitakit",
        "exif-subjectdistance": "ilaed nu satangahan",
        "exif-meteringmode": "miditek tu edil a muse",
        "exif-focallength": "saed nu sapisasing",
        "exif-subjectarea": "sausi a kakitizaan",
        "exif-flashenergy": "sabelabelatay a tinghuy u icelang",
+       "exif-focalplaneresolutionunit": "edil-sanat a sapat katingalaw  tatebanan nu nisulitan",
        "exif-subjectlocation": "kakitizaan nu satangahan",
        "exif-exposureindex": "mapaedil a sulyang",
        "exif-sensingmethod": "mise nu nikasumad nay edil",
        "exif-sharpness": "kacidem",
        "exif-devicesettingdescription": "sakaluk setin sapuelac",
        "exif-subjectdistancerange": "baat nu tatizengan a liwliw",
+       "exif-gpsversionid": "GPS baziyong nu aazihen a paya",
        "exif-gpslatituderef": "pyiwyi asaca nanwyi",
        "exif-gpslongituderef": "tongcing asaca sicing",
        "exif-gpsaltituderef": "nutakalaw namakay bayu’ miazih tu tatenga’ay a sulyang",
        "exif-gpsmeasuremode": "miditek a muse",
        "exif-gpsdop": "miditek a tatungus",
        "exif-gpsspeedref": "saduba’ kalamkam a sacacaycacay",
+       "exif-gpsmapdatum": "pisaungay ulaulangan miditek a kalunasulitan",
        "exif-gpsdestlatitude": "pabalucu’an a wyitu",
        "exif-gpsdestlongituderef": "pabalucu’an a cintu",
        "exif-gpsdatestamp": "GPS a demiad",
+       "exif-gpsdifferential": "GPS chafen misumad",
        "exif-keywords": "aazihen dulit",
        "exif-worldregioncreated": "zunga masasing a kakitizaan",
        "exif-countrycreated": "zunga masasingan a kanatal",
        "exif-provinceorstatecreated": "yakuwanan a sasing",
        "exif-citycreated": "yatukay a sasing",
+       "exif-worldregiondest": "paazih tu subal nu kitakit",
        "exif-countrydest": "paazih tu kanatal",
        "exif-countrycodedest": "paazih kanatal a kodo",
        "exif-provinceorstatedest": "paazih seng asaca cou",
        "exif-citydest": "paazihay a tukay",
+       "exif-sublocationdest": "paazih tukay pulita kahicelaan",
        "exif-objectname": "sapuyuay a ngangan",
        "exif-specialinstructions": "sazumaay buhci tu kamu",
        "exif-headline": "satangahan",
        "exif-iimcategory": "kakuniza",
        "exif-iimsupplementalcategory": "micunus kakuniza",
        "exif-datetimereleased": "patiyak i",
+       "exif-originaltransmissionref": "saayaway miculu’ kakitizaan a kodo",
        "exif-identifier": "mapulitaay a kodo",
        "exif-lens": "pisaungay tu cingtou",
        "exif-serialnumber": "sasasing salaylay a banggu",
        "exif-cameraownername": "sasasing nizaay",
        "exif-label": "aazihen paya",
+       "exif-nickname": "caykaw tatengaay a zunga kalungangan",
        "exif-rightscertificate": "nisanga’an niza tu tungus a kawaw nu makuwanay a pincen",
        "exif-copyrighted": "nisanga’an niza tu tungus a kawaw setyitase",
        "exif-copyrightowner": "nizaay nisanga’an tu tungus a kawaw",
        "exif-usageterms": "mamaala a cedang",
        "exif-webstatement": "nabalucu'an nu i telay nisanga’an niza tu tungus a kawaw",
+       "exif-licenseurl": "nisanga’an niza tu tungus a kawaw pabeli tu kinli  masasiket",
        "exif-morepermissionsurl": "paliyuh pabeli tu kinli a cesyun",
+       "exif-pngfilecomment": "PNG tangan pacunus sakacaay kapawan",
        "exif-disclaimer": "caay pimuku tu sikining",
        "exif-contentwarning": "lacul mipatalaw",
+       "exif-giffilecomment": "GIF tangan pacunus sakacaay kapawan",
        "exif-intellectualgenre": "kasacacay nikalahizaan",
        "exif-subjectnewscode": "kodo nu satangahan",
        "exif-event": "sapuelac tu sikikawaw",
        "exif-organisationinimage": "sapuelac nu mikumi",
        "exif-personinimage": "sapuelac tu tademaw",
        "exif-originalimageheight": "takalaway nu caayhen masait",
+       "exif-originalimagewidth": "misait tu nuayawan a ahebal",
        "exif-compression-1": "caay henay piepian mipecec",
        "exif-copyrighted-true": "madiput nu nisanga’an niza tu tungus a kawaw",
        "exif-copyrighted-false": "caay kapulita nu nisanga’an niza tu tungus a kawaw setyitase",
        "exif-lightsource-255": "zuma katahkalan nu likat",
        "exif-flash-fired-0": "sabelabelatay a tinghui caay henay miwawah",
        "exif-flash-fired-1": "sabelabelatay a tinghui miwawah tuway",
+       "exif-flash-mode-1": "pacici sabelabelatay tinghuy mawawah",
+       "exif-flash-mode-2": "pacici sabelabelatay tinghuy mapaneng",
        "exif-flash-mode-3": "lunuk muse",
        "exif-flash-function-1": "inayi’ sasahicaan nu sabelabelatay a tinghui",
        "exif-flash-redeye-1": "muse nu kasatezep tu sumanahay a mata",
        "exif-gpsdestdistance-k": "kungli",
        "exif-gpsdestdistance-m": "inli",
        "exif-gpsdestdistance-n": "hayli",
+       "exif-gpsdop-excellent": "tada kapah ($1)",
+       "exif-gpsdop-poor": "la’cus ($1)",
        "exif-objectcycle-a": "namalamam a cacay",
        "exif-objectcycle-p": "nakalahukan a cacay",
        "exif-objectcycle-b": "namalanam atu namalahuk",
        "exif-dc-source": "saangangan a myiti",
        "exif-dc-type": "myiti nikalahizaan",
        "exif-rating-rejected": "kakaian",
+       "exif-isospeedratings-overflow": "satabakien tu 65535",
        "exif-iimcategory-clj": "mungangaw atu hulic",
        "exif-iimcategory-fin": "kyizay atu syubay",
        "exif-iimcategory-edu": "pasubana’ay a kawaw",
        "exif-iimcategory-sci": "kagak atu keci",
        "exif-iimcategory-soi": "binawlan a munday",
        "exif-iimcategory-spo": "wundukay",
+       "exif-iimcategory-war": "ngayaw, sasula’cus atu sasibud",
        "exif-iimcategory-wea": "demidad",
        "exif-urgency-normal": "tatungus ($1)",
        "exif-urgency-low": "pu’nel ($1)",
        "imgmultipageprev": "ayaway cacay a belih",
        "imgmultipagenext": "zikuzan a belih →",
        "imgmultigo": "mileku!",
+       "imgmultigoto": "taayaw saka $1 a blih",
        "img-lang-default": "(pataayaw tu kawaw a kamu)",
        "img-lang-go": "mileku",
        "ascending_abbrev": "masalaylay adidi’ay katukuh tabakiay",
        "autosumm-newblank": "patizeng nayi’ ku cacan a kasabelih",
        "watchlistedit-normal-title": "miazihay a piazihan tu sulit nu mikawaway-kalumyiti",
        "watchlistedit-normal-submit": "misipu satangahan",
+       "watchlistedit-raw-title": "mikawaway-kalumyiti saayaway misisip a piazihan-tu-sulit",
+       "watchlistedit-raw-submit": "misabaluhay misisip tu piazihan-tu-sulit",
        "watchlistedit-clear-title": "misipu miazihay a piazihan tu sulit",
        "watchlisttools-clear": "misipu miazihay a piazihan tu sulit",
+       "watchlisttools-view": "ciwsace mahizaay a sumad",
+       "watchlisttools-raw": "mikawaway-kalumyiti saayaway misisip a piazihan-tu-sulit",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1| sasukamu ]])",
        "timezone-local": "itizaay",
        "version": "baziyong",
+       "version-extensions": "malacul tu sacunusan a sakaluk",
        "version-skins": "malacul tu nuhekalan",
        "version-specialpages": "sazumaay a kasabelih",
        "version-parserhooks": "kulawid nu saheciay sakaluk",
        "version-other": "zuma",
        "version-mediahandlers": "myiti saungayay a sakaluk",
        "version-hooks": "kulawid",
+       "version-parser-function-hooks": "kamu-sakilul mapulita sapisausi makulawit",
        "version-hook-name": "kalawid a kalungangan",
        "version-hook-subscribedby": "pangangan",
        "version-no-ext-name": "[caay henay pangangan]",
        "version-ext-colheader-license": "sapabeli tu kinli a cedang",
        "version-ext-colheader-description": "sapuelac",
        "version-ext-colheader-credits": "masacudaday",
+       "version-license-title": "$1 a sapabeli tu kinli a cedang",
+       "version-credits-title": "$1 a kasakumi nu misayingaay",
        "version-poweredby-others": "zuma",
        "version-software": "malacul tu ku zwanti",
        "version-software-product": "nasang’ay a tuutuud",
        "specialpages-group-maintenance": "aazihen a cudad nu midiputay",
        "specialpages-group-other": "sazumaay cidek a kasabelih",
        "specialpages-group-login": "patalabu / panganganen ku canghaw",
+       "specialpages-group-users": "misaungayay atu tungus",
        "specialpages-group-highuse": "sawsawniay a kasabelih",
        "specialpages-group-pages": "piazihan tu sulit nu kasabelih",
        "specialpages-group-pagetools": "kasabelih sakaluk",
        "specialpages-group-wiki": "kalunasulitan atu sakaluk",
        "specialpages-group-developer": "saayaway miteka a misakakawaway sakaluk",
        "blankpage": "salengacay a kasabelih",
+       "tags": "kapah misumad tu tazihan a paya",
        "tag-filter": "[[Special:Tags|aazihen paya]] kilim:",
        "tag-filter-submit": "kilim",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|aazihen paya’}}]]: $2)",
        "tags-edit-title": "aazihen a paya mikawaway-kalumyiti",
        "tags-edit-manage-link": "aazihen a paya nu kuwan",
        "tags-edit-new-tags": "baluhay aazihen a paya:",
+       "tags-edit-add": "micunus uyniyay aazihen a paya:",
        "tags-edit-chosen-placeholder": "mipili’ hatizaay aazihen a paya",
        "tags-edit-reason": "mahicaay:",
        "tags-edit-success": "macaedung tu ku sasumad.",
        "htmlform-yes": "hang",
        "htmlform-cloner-create": "ngalepen tu cunus",
        "htmlform-cloner-delete": "milimad",
+       "htmlform-time-placeholder": "HH:MM:SS",
        "htmlform-title-not-exists": "$1 inayi’",
        "htmlform-user-not-exists": "<strong>$1</strong> inayi’",
        "logentry-delete-delete": "$1 {{GENDER:$2|masiputu}} kasabelih $3",
        "restore-count-files": "{{PLURAL:$1|1 tangan}}",
        "revdelete-content-hid": "madimut tu ku lacul",
        "revdelete-content-unhid": "palawpes midimut tu lacul",
+       "revdelete-summary-unhid": "palawpes midimut  mikawaway-kalumyiti pecu’ nu lacul",
        "logentry-move-move": "$1 {{GENDER:$2|milimad tuway}} kasabelih $3 katukuh $4",
        "logentry-newusers-create": "{{GENDER:$2|patizeng}} misaungayay canghaw tuway $1",
        "logentry-upload-upload": "$1 {{GENDER:$2|masayacay tuway}} $3",
        "feedback-subject": "satangahan:",
        "feedback-submit": "patayzaan",
        "feedback-thanks-title": "kukay tisuwanan!",
+       "feedback-useragent": "misaungayay tayli:",
        "searchsuggest-search": "kilim {{SITENAME}}",
        "api-error-unknownerror": "caay kapulita ku mungangaw: \"$1\".",
        "duration-seconds": "$1 {{PLURAL:$1|a beti}}",
        "duration-years": "$1 {{PLURAL:$1|a mihca}}",
        "duration-centuries": "$1 {{PLURAL:$1|lasubu a mihca}}",
        "duration-millennia": "$1 {{PLURAL:$1|malebut a mihca}}",
+       "limitreport-title": "tingalaw-kikay mapulita kalunasulitan:",
+       "limitreport-cputime": "CPU pisaungay a lawad(tuki)",
        "limitreport-cputime-value": "$1 {{PLURAL:$1|a beti}}",
        "limitreport-walltime": "tatengaay pisaungay a lawad-tuki",
        "limitreport-walltime-value": "$1 {{PLURAL:$1|a beti}}",
+       "limitreport-postexpandincludesize": "namicuwat nicaliwan hacica-tabaki",
        "limitreport-expansiondepth": "satakalaw micuwat ilabu",
        "expandtemplates": "micuwat tu taazihan a mitudung",
        "expand_templates_input": "suliten:",
        "expand_templates_output": "heci",
+       "expand_templates_xml_output": "XML patahkal",
        "expand_templates_ok": "malucekay",
        "expand_templates_remove_comments": "misipu buhci tu kamu",
        "expand_templates_preview": "pataayaway miazih",
        "pagelanguage": "misumad kasabelih a kamu",
        "pagelang-language": "kamu",
+       "pagelang-use-default": "pisaungay pataayaw tu kawaw a kamu",
        "pagelang-select-lang": "mipili’ tu kamu",
        "pagelang-reason": "mahicaay:",
        "pagelang-submit": "patayzaan",
        "mediastatistics-table-count": "tangan nikayadah",
        "mediastatistics-table-totalbytes": "pulung sausi nu hacica-tabaki",
        "mediastatistics-header-bitmap": "pacepacekan a zunga",
+       "mediastatistics-header-drawing": "mizunga (siangliyang zunga)",
        "mediastatistics-header-audio": "ludihang",
        "mediastatistics-header-video": "yiga",
        "mediastatistics-header-multimedia": "payadahay malocimyidiy",
        "mw-widgets-titleinput-description-new-page": "kasabelih nayai’ tu",
        "mw-widgets-categoryselector-add-category-placeholder": "micunus tu kakuniza...",
        "mw-widgets-usersmultiselect-placeholder": "micunus sangaleben...",
+       "sessionprovider-generic": "$1 kasasiketan",
        "randomrootpage": "kakibalucu’ lamitay kasabelih",
        "log-action-filter-block": "milangat nikalahizaan:",
        "log-action-filter-delete": "misipu nikalahizaan:",
        "log-action-filter-block-block": "milangat",
        "log-action-filter-block-reblock": "milangat tu sapisumad",
        "log-action-filter-block-unblock": "mihulak tu langat",
+       "log-action-filter-contentmodel-change": "lacul tatudungen-misanga’ a sumad",
        "log-action-filter-delete-delete": "misipu kasabelih",
        "log-action-filter-delete-delete_redir": "miliyaw patatuzu’ mipakutay tu sulit",
        "log-action-filter-delete-restore": "kasabelih milawpes tu sipu",
        "log-action-filter-managetags-delete": "misipu aazihen a paya",
        "log-action-filter-managetags-activate": "aazihen a paya miteka",
        "log-action-filter-managetags-deactivate": "aazihan-paya palawpesen ku pisaungay",
+       "log-action-filter-move-move_redir": "milimad miliyaw misulit miliyawtu tazuma nay",
+       "log-action-filter-newusers-create": "nay paceba panganganay a misaungayay patizeng",
+       "log-action-filter-newusers-create2": "nay pangangan misaungayay patizeng",
        "log-action-filter-newusers-autocreate": "lunuk patizeng",
        "log-action-filter-patrol-patrol": "lima-saungay tayza mikibi",
        "log-action-filter-patrol-autopatrol": "lunuk tayza mikibi",
        "authmanager-email-label": "imyiyo(email)",
        "authmanager-email-help": "imyiyo(email) puenengan",
        "authmanager-realname-label": "tatengaay a ngangan",
+       "authmanager-realname-help": "misaungayay tatenga’ay a ngangan",
        "authmanager-provider-temporarypassword": "nanunuz a mima",
        "authprovider-confirmlink-request-label": "manakanca masasiket tu canghaw",
        "authprovider-resetpass-skip-label": "sekipo",
        "specialpage-securitylevel-not-allowed-title": "amana",
        "cannotauth-not-allowed-title": "caykataneng ku tungus",
        "changecredentials": "misumad tu sapangangan-wacay",
+       "changecredentials-success": "masumad tuway zencen nu misu.",
        "removecredentials": "misipu sapangangan",
+       "removecredentials-success": "masipu tu pincen nu misu.",
        "credentialsform-provider": "pincen nikalahizaan:",
        "credentialsform-account": "canghaw kalungangan:",
+       "cannotlink-no-provider-title": "inayi’ amasasiketan a canghaw",
        "linkaccounts": "masasiket tu canghaw",
        "linkaccounts-success-text": "masasiket tu ku canghaw",
        "linkaccounts-submit": "masasiket tu canghaw",
+       "unlinkaccounts": "palawpes masasiketay a canghaw",
+       "unlinkaccounts-success": "malawpes masasiket tu canghaw.",
        "revid": "masumad nu ayaway $1",
        "pageid": "kasabelih ID $1"
 }
index 9488a19..2cde220 100644 (file)
        "file-deleted-duplicate-notitle": "Файл, ідэнтычны гэтаму файлу, раней ужо быў выдалены, а назва файла была забароненая.\nВам трэба зьвярнуцца да некага з правамі прагляду зьвестак забароненых файлаў, каб прааналізаваць сытуацыю перад тым, як загружаць файл ізноў.",
        "uploadwarning": "Папярэджаньне",
        "uploadwarning-text": "Калі ласка, зьмяніце апісаньне файла ніжэй і паспрабуйце ізноў.",
+       "uploadwarning-text-nostash": "Калі ласка, загрузіце файл ізноў, зьмніце апісаньне ніжэй і паспрабуйце яшчэ раз.",
        "savefile": "Захаваць файл",
        "uploaddisabled": "Загрузка файлаў забароненая",
        "copyuploaddisabled": "Загрузка праз URL-адрас адключаная.",
        "cannotlink-no-provider": "Няма рахункаў для далучэньня.",
        "linkaccounts": "Далучэньне рахункаў",
        "linkaccounts-success-text": "Рахунак быў далучаны.",
-       "linkaccounts-submit": "Далучыць рахункі"
+       "linkaccounts-submit": "Далучыць рахункі",
+       "unlinkaccounts": "Адлучэньне рахункаў"
 }
index 2234820..f1dd8b6 100644 (file)
        "duplicate-args-category-desc": "এই পাতায় টেমপ্লেট আহ্বান উপস্থিত রয়েছে যা সদৃশ আর্গুমেন্ট ব্যবহার করেছে, যেমন <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> বা <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>।",
        "expensive-parserfunction-warning": "'''সতর্ক হোন:''' এই পাতাটি অনেক বেশি পরিমাণে এক্সপেনসিভ পার্সার ফাংশন কল রয়েছে।\n\nএটি $2-এর চেয়ে কম পরিমাণ {{PLURAL:$2|কল|কল}} থাকা উচিত, যেখানে মোট কলের সংখ্যা {{PLURAL:$1|বর্তমানে $1|বর্তমানে $1}}।",
        "expensive-parserfunction-category": "অনেক বেশি পরিমাণে এক্সপেনসিভ পার্সার ফাংশন কল থাকা পাতাসমূহ",
-       "post-expand-template-inclusion-warning": "'''সতর্ক হোন:''' টেমপ্লেটের ইনক্লুড আকার অনেক বেশি।\nকিছু টেমপ্লেট সংযুক্ত করা নাও যেতে পারে।",
+       "post-expand-template-inclusion-warning": "<strong>সতর্ক হোন:</strong> টেমপ্লেটের অন্তর্ভুক্তির আকার অনেক বেশি।\nকিছু টেমপ্লেট সংযুক্ত করা নাও যেতে পারে।",
        "post-expand-template-inclusion-category": "যেসকল স্থানে টেমপ্লেট অন্তর্ভুক্তির আকার অতিক্রম করে গেছে সেই পাতাগুলো",
        "post-expand-template-argument-warning": "' ' ' সাবধান: ' ' ' এই পাতাটিতে অন্তত একটি ফর্মা যুক্তি আছে যা একটি খুব বড় বিস্তার আকার ধারণ করেছে।\nতাই এই আর্গুমেন্টটি বাদ দেওয়া হয়েছে।",
        "post-expand-template-argument-category": "বাদ ফর্মা আর্গুমেন্ট ধারণকারী পাতা",
        "listfiles_size": "আকার",
        "listfiles_description": "বিবরণ",
        "listfiles_count": "সংস্করণ",
-       "listfiles-show-all": "à¦\9bবির পুরাতন সংস্করণ সংযোজন",
+       "listfiles-show-all": "ফাà¦\87লà§\87র পুরাতন সংস্করণ সংযোজন",
        "listfiles-latestversion": "বর্তমান সংস্করণ",
        "listfiles-latestversion-yes": "হ্যাঁ",
        "listfiles-latestversion-no": "না",
index f99cab2..972a1ff 100644 (file)
        "prefs-editor": "Bearbeitungsprogramm",
        "prefs-preview": "Vorschau",
        "prefs-advancedrc": "Erweiterte Optionen",
+       "prefs-opt-out": "Von den Verbesserungen abmelden",
        "prefs-advancedrendering": "Erweiterte Optionen",
        "prefs-advancedsearchoptions": "Erweiterte Optionen",
        "prefs-advancedwatchlist": "Erweiterte Optionen",
        "rcfilters-restore-default-filters": "Standardfilter wiederherstellen",
        "rcfilters-clear-all-filters": "Alle Filter löschen",
        "rcfilters-show-new-changes": "Neueste Änderungen ansehen",
-       "rcfilters-search-placeholder": "Letzte Änderungen filtern (durchsuchen oder beginne mit der Eingabe)",
+       "rcfilters-search-placeholder": "Hauptfiltermenü",
        "rcfilters-invalid-filter": "Ungültiger Filter",
        "rcfilters-empty-filter": "Keine aktiven Filter. Es werden alle Beiträge angezeigt.",
        "rcfilters-filterlist-title": "Filter",
index 75e0c5c..47e6205 100644 (file)
        "prefs-editor": "Editor",
        "prefs-preview": "Preview",
        "prefs-advancedrc": "Advanced options",
+       "prefs-opt-out": "Opt out of improvements",
        "prefs-advancedrendering": "Advanced options",
        "prefs-advancedsearchoptions": "Advanced options",
        "prefs-advancedwatchlist": "Advanced options",
index 9285cc3..e380f0f 100644 (file)
        "rcfilters-empty-filter": "Ei aktiivisia suodattimia. Kaikki muutokset näytetään.",
        "rcfilters-filterlist-title": "Suodattimet",
        "rcfilters-filterlist-whatsthis": "Miten nämä toimivat?",
-       "rcfilters-filterlist-feedbacklink": "Anna palautetta uusista (beta) suodattimista",
+       "rcfilters-filterlist-feedbacklink": "Kerro mielipiteesi (uusista) suodattimista",
        "rcfilters-highlightbutton-title": "Korosta tulokset",
        "rcfilters-highlightmenu-title": "Valitse väri",
        "rcfilters-highlightmenu-help": "Valitse korostusväri tälle ominaisuudelle",
        "listfiles_size": "Koko",
        "listfiles_description": "Kuvaus",
        "listfiles_count": "Versioita",
-       "listfiles-show-all": "Näytä myös kuvien vanhemmat versiot",
+       "listfiles-show-all": "Näytä myös tiedostojen vanhemmat versiot",
        "listfiles-latestversion": "Uusin versio",
        "listfiles-latestversion-yes": "Kyllä",
        "listfiles-latestversion-no": "Ei",
        "tags-create-reason": "Syy:",
        "tags-create-submit": "Luo",
        "tags-create-no-name": "Sinun täytyy antaa merkkaukselle nimi.",
-       "tags-create-invalid-chars": "Merkkausten nimissä ei saa olla pilkkuja (<code>,</code>) tai kauttaviivoja (<code>/</code>).",
+       "tags-create-invalid-chars": "Merkkausten nimissä ei saa olla pilkkuja (<code>,</code>), putkia (<code>|</code>) tai kauttaviivoja (<code>/</code>).",
        "tags-create-invalid-title-chars": "Merkkausten nimissä ei saa olla sellaisia merkkejä, joita ei voida käyttää sivujen nimissä.",
        "tags-create-already-exists": "Merkkaus \"$1\" on jo olemassa.",
        "tags-create-warnings-above": "{{PLURAL:$2|Seuraava varoitus|Seuraavat varoitukset}} ilmenivät, kun yritettiin luoda merkkausta \"$1\":",
index 7651903..5b6a3df 100644 (file)
        "parser-template-loop-warning": "Detectouse un modelo en bucle: [[$1]]",
        "template-loop-category": "Páxinas con bucles de modelo",
        "template-loop-category-desc": "A páxina contén un bucle de modelo, por exemplo, un modelo que se chama a si mesmo recursivamente.",
+       "template-loop-warning": "<strong>Aviso:</strong> Esta páxina chama [[:$1]] o que causa un ciclo infinito de modelo (unha chamada recursiva sen fin).",
        "parser-template-recursion-depth-warning": "Excedeuse o límite de profundidade de recursión do modelo ($1)",
        "language-converter-depth-warning": "Excedeuse o límite de profundidade do convertedor de lingua ($1)",
        "node-count-exceeded-category": "Páxinas nas que se supera o número de nodos",
        "listfiles_size": "Tamaño",
        "listfiles_description": "Descrición",
        "listfiles_count": "Versións",
-       "listfiles-show-all": "Incluír as versións vellas das imaxes",
+       "listfiles-show-all": "Incluír as versións vellas dos ficheiros",
        "listfiles-latestversion": "Versión actual",
        "listfiles-latestversion-yes": "Si",
        "listfiles-latestversion-no": "Non",
index 95fc860..bc33cb3 100644 (file)
        "prefs-editor": "חלון העריכה",
        "prefs-preview": "תצוגה מקדימה",
        "prefs-advancedrc": "אפשרויות מתקדמות",
+       "prefs-opt-out": "ביטול שיפורים",
        "prefs-advancedrendering": "אפשרויות מתקדמות",
        "prefs-advancedsearchoptions": "אפשרויות מתקדמות",
        "prefs-advancedwatchlist": "אפשרויות מתקדמות",
        "rcfilters-restore-default-filters": "שחזור למסנני ברירת המחדל",
        "rcfilters-clear-all-filters": "מחיקת כל המסננים",
        "rcfilters-show-new-changes": "הצגת השינויים החדשים ביותר",
-       "rcfilters-search-placeholder": "ס×\99× ×\95×\9f ×©×\99× ×\95×\99×\99×\9d ×\90×\97ר×\95× ×\99×\9d (×¢×\99×\99× ×\95 ×\90×\95 ×\94ת×\97×\99×\9c×\95 ×\9c×\94ק×\9c×\99×\93)",
+       "rcfilters-search-placeholder": "תפר×\99×\98 ×\94×\9eסננ×\99×\9d ×\94ר×\90ש×\99",
        "rcfilters-invalid-filter": "מסנן בלתי־תקין",
        "rcfilters-empty-filter": "אין מסננים פעילים. כל התרומות מוצגות.",
        "rcfilters-filterlist-title": "מסננים",
index 2b29e48..f657842 100644 (file)
@@ -48,7 +48,8 @@
                        "BanKris",
                        "Notramo",
                        "Urbalazs",
-                       "Bencemac"
+                       "Bencemac",
+                       "Rodrigo"
                ]
        },
        "tog-underline": "Hivatkozások aláhúzása:",
        "permissionserrorstext-withaction": "Nincs jogosultságod a következő művelet elvégzéséhez: $2, a következő {{PLURAL:$1|ok|okok}} miatt:",
        "contentmodelediterror": "Nem szerkesztheted ezt a változatot, mert a tartalommodellje <code>$1</code>, ami eltér a jelenlegitől (<code>$2</code>).",
        "recreate-moveddeleted-warn": "'''Figyelem! Olyan lapot készülsz létrehozni, amit már legalább egyszer töröltek.'''\n\nMielőtt létrehoznád, nézd meg, miért törölték a lap korábbi tartalmát, és győződj meg róla, hogy a törlés indoka érvényes-e még. A törlési és átnevezési naplókban az érintett lapról az alábbi bejegyzések szerepelnek:",
-       "moveddeleted-notice": "Az oldal korábban törölve lett.\nA lap törlési és átnevezési naplója alább olvasható.",
+       "moveddeleted-notice": "Az oldal korábban törölve lett.\nA lap törlési, védelmi és átnevezési naplója alább olvasható.",
        "moveddeleted-notice-recent": "Sajnáljuk, az oldalt nemrég törölték (az elmúlt 24 órában).\nA részletekért lásd lentebb a törlési, védelmi és átnevezési naplót.",
        "log-fulllog": "Teljes napló megtekintése",
        "edit-hook-aborted": "A szerkesztés meg lett szakítva egy hook által.\nNem lett magyarázat csatolva.",
        "parser-template-loop-warning": "Végtelen ciklus a következő sablonban: [[$1]]",
        "template-loop-category": "Lapok végtelen sablonciklusokkal",
        "template-loop-category-desc": "A lap végtelen sablonciklust tartalmaz, vagyis egy sablon önmagát hívja meg rekurzívan.",
+       "template-loop-warning": "<strong>Figyelem:</strong> Ez a lap hivatkozik ide: [[:$1]] amivel a sablon hivatkozás végtelen hurokba kerül (logikailag nem érvényes).",
        "parser-template-recursion-depth-warning": "A sablon rekurzív beillesztésének mélysége átlépte a határértéket ($1)",
        "language-converter-depth-warning": "A nyelvátalakító rekurzióinak száma túllépve ($1)",
        "node-count-exceeded-category": "Túl sok csomópontot tartalmazó lapok",
        "prefs-editwatchlist-clear": "A figyelőlista kiürítése",
        "prefs-watchlist-days": "A figyelőlistában mutatott napok száma:",
        "prefs-watchlist-days-max": "Legfeljebb $1 {{PLURAL:$1|nap|nap}}",
-       "prefs-watchlist-edits": "A kiterjesztett figyelőlistán mutatott szerkesztések száma:",
+       "prefs-watchlist-edits": "A figyelőlistán megjelenő szerkesztések maximális száma:",
        "prefs-watchlist-edits-max": "Legfeljebb 1000",
        "prefs-watchlist-token": "A figyelőlista kulcsa:",
        "prefs-misc": "Egyéb",
        "timezoneregion-indian": "Indiai-óceán",
        "timezoneregion-pacific": "Csendes-óceán",
        "allowemail": "E-mail engedélyezése más szerkesztőktől",
+       "email-blacklist-label": "Letiltás ezen felhasználóknak, hogy e-mailt küldhessenek nekem",
        "prefs-searchoptions": "Keresés",
        "prefs-namespaces": "Névterek",
        "default": "alapértelmezett",
        "rcfilters-filter-editsbyself-description": "A te hozzájárulásaid.",
        "rcfilters-filter-editsbyother-label": "Mások módosításai",
        "rcfilters-filter-editsbyother-description": "Minden változtatás a tieidet kivéve.",
-       "rcfilters-filtergroup-userExpLevel": "Tapasztalati szint (csak regisztrált felhasználók)",
+       "rcfilters-filtergroup-userExpLevel": "Felhasználói regisztráció és tapasztalat",
        "rcfilters-filter-user-experience-level-registered-label": "Regisztrált",
        "rcfilters-filter-user-experience-level-registered-description": "Bejelentkezett szerkesztők.",
        "rcfilters-filter-user-experience-level-unregistered-label": "Nem regisztrált",
        "rcfilters-filter-watchlist-notwatched-description": "Minden változtatás, kivéve a figyelőlistádon szereplő lapoké.",
        "rcfilters-filtergroup-watchlistactivity": "Figyelőlista aktivitás",
        "rcfilters-filter-watchlistactivity-unseen-label": "Még nem látott változtatások",
+       "rcfilters-filter-watchlistactivity-unseen-description": "A figyelőlistádon szereplő lapokon az utolsó látogatásod után történt változtatások.",
+       "rcfilters-filter-watchlistactivity-seen-label": "Változtatások megtekintése",
        "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ések, kategória leírások...",
        "rcfilters-liveupdates-button-title-off": "A legfrissebb változtatások mutatása, amint megtörténnek",
        "rcfilters-watchlist-markseen-button": "Összes változtatás megjelölése olvasottként",
        "rcfilters-watchlist-edit-watchlist-button": "A figyelőlistád szerkesztése",
+       "rcfilters-watchlist-showupdated": "Az újabb változtatások amiket még nem néztél meg, <strong>vastaggal jelöltük</strong>",
+       "rcfilters-preference-label": "A friss változtatások fejlesztett változatának elrejtése",
        "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",
        "file-deleted-duplicate-notitle": "Egy ugyanilyen fájlt korábban már töröltek, és címét eltávolították. Kérj meg valakit, aki meg tudja nézni a törölt fájlokat, hogy tekintse át a helyzetet, mielőtt újra feltöltenéd a fájlt.",
        "uploadwarning": "Feltöltési figyelmeztetés",
        "uploadwarning-text": "Kérlek, módosítsd a fájl leírását alább, majd próbáld újra.",
+       "uploadwarning-text-nostash": "Kérjük próbálkozz újra: ismét töltsd fel a fájlt és változtass a leírásán.",
        "savefile": "Fájl mentése",
        "uploaddisabled": "Feltöltések kikapcsolva",
        "copyuploaddisabled": "A feltöltés URL alapján le van tiltva.",
        "listfiles_size": "Méret",
        "listfiles_description": "Leírás",
        "listfiles_count": "Változatok",
-       "listfiles-show-all": "A képek régebbi verzióját is",
+       "listfiles-show-all": "Tartalmazza a fájlok régebbi verzióját is",
        "listfiles-latestversion": "Aktuális változat",
        "listfiles-latestversion-yes": "Igen",
        "listfiles-latestversion-no": "Nem",
        "pageswithprop-legend": "Lap tulajdonsággal rendelkező lapok",
        "pageswithprop-text": "Ez a lap azokat a lapokat listázza, amelyek egy adott lap tulajdonsággal rendelkeznek.",
        "pageswithprop-prop": "Tulajdonságnév:",
+       "pageswithprop-reverse": "Rendezze fordított sorrendbe",
        "pageswithprop-submit": "Ugrás",
        "pageswithprop-prophidden-long": "hosszú szöveg tulajdonság elrejtve ($1)",
        "pageswithprop-prophidden-binary": "bináris tulajdonság érték rejtett ($1)",
        "delete-warning-toobig": "Ennek a lapnak a laptörténete több mint {{PLURAL:$1|egy|$1}} változatot őriz. Törlése fennakadásokat okozhat a wiki adatbázis-műveleteiben; óvatosan járj el.",
        "deleteprotected": "Nem tudod törölni a lapot, mivel le van védve.",
        "deleting-backlinks-warning": "<strong>Figyelem:</strong> [[Special:WhatLinksHere/{{FULLPAGENAME}}|Más lapok]] hivatkoznak a törlendő oldalra (vagy beillesztik azt).",
+       "deleting-subpages-warning": "<strong>Figyelem:</strong> A törlésre jelölt lapnak[[Special:PrefixIndex/{{FULLPAGENAME}}/|{{PLURAL:$1|van allapja|$1 vannak allapjai|51=több mint 50 allapja van}}]].",
        "rollback": "Szerkesztések visszaállítása",
        "rollbacklink": "visszaállítás",
        "rollbacklinkcount": "$1 szerkesztés visszaállítása",
        "sp-contributions-newonly": "Csak az új oldalt létrehozó szerkesztéseket mutassa",
        "sp-contributions-hideminor": "Apró szerkesztések elrejtése",
        "sp-contributions-submit": "Keresés",
+       "sp-contributions-outofrange": "Nem sikerült eredményt megjeleníteni. A kért IP-tartomány nagyobb, mint a CIDR korlátja ($1).",
        "whatlinkshere": "Mi hivatkozik erre",
        "whatlinkshere-title": "A(z) „$1” lapra hivatkozó lapok",
        "whatlinkshere-page": "Lap:",
        "import-nonewrevisions": "Nincs változat importálva (mindet korábban importálták vagy a hiba miatt program kihagyta).",
        "xml-error-string": "$1 a(z) $2. sorban, $3. oszlopban ($4. bájt): $5",
        "import-upload": "XML-adatok feltöltése",
-       "import-token-mismatch": "Elveszett a munkamenetadatok.\n\nLehet, hogy ki vagy jelentkezve. <strong>Kérjük, győződj meg róla, hogy még mindig be vagy jelentkezve, majd próbálkozz újra!</strong> Ha ez továbbra sem sikerül, próbálj meg [[Special:UserLogout|kijelentkezni]], majd ismét bejelentkezni, és ellenőrizd, hogy a böngésződ elfogad sütiket erről az oldalról.",
+       "import-token-mismatch": "Elvesztek a munkamenetadatok.\n\nLehet, hogy ki vagy jelentkezve. '''Kérjük, győződj meg róla, hogy még mindig be vagy jelentkezve, majd próbálkozz újra!''' Ha ez továbbra sem sikerül, próbálj meg [[Special:UserLogout|kijelentkezni]], majd ismét bejelentkezni, és ellenőrizd, hogy a böngésződ elfogad sütiket erről az oldalról.",
        "import-invalid-interwiki": "A kijelölt wikiből nem lehet importálni.",
        "import-error-edit": "„$1” lap nem került importálásra, mert nem szerkesztheted azt.",
        "import-error-create": "„$1” lap nem került importálásra, mert nem hozhatod létre azt.",
        "fileduplicatesearch-noresults": "Nincs „$1” nevű fájl.",
        "specialpages": "Speciális lapok",
        "specialpages-note-top": "Jelmagyarázat",
+       "specialpages-note-restricted": "* Mindenki számára elérhető speciális lapok.\n* <span class=\"mw-specialpagerestricted\">Korlátozott hozzáférésű speciális lapok.</span>",
        "specialpages-group-maintenance": "Állapotjelentések",
        "specialpages-group-other": "További speciális lapok",
        "specialpages-group-login": "Bejelentkezés / fiók létrehozása",
        "compare-revision-not-exists": "A megadott lapváltozat nem létezik.",
        "diff-form": "Eltérések",
        "diff-form-submit": "Változtatások megjelenítése",
+       "permanentlink": "Állandó hivatkozás",
+       "permanentlink-revid": "Változat azonosító",
        "dberr-problems": "Sajnáljuk, de az oldallal technikai problémák vannak.",
        "dberr-again": "Várj néhány percet, majd frissítsd az oldalt.",
        "dberr-info": "(Nem sikerült kapcsolódni az adatbázishoz: $1)",
        "special-characters-group-thai": "Thai",
        "special-characters-group-lao": "Lao",
        "special-characters-group-khmer": "Khmer",
+       "special-characters-group-canadianaboriginal": "Kanadai bennszülött jelek",
        "special-characters-title-endash": "kötőjel",
        "special-characters-title-emdash": "hosszú kötőjel",
        "special-characters-title-minus": "minusz jel",
index 1d676f0..e0322d4 100644 (file)
        "listfiles_size": "Dimensione",
        "listfiles_description": "Descrizione",
        "listfiles_count": "Versioni",
-       "listfiles-show-all": "Includi le vecchie versioni delle immagini",
+       "listfiles-show-all": "Includi le vecchie versioni dei file",
        "listfiles-latestversion": "Versione attuale",
        "listfiles-latestversion-yes": "Sì",
        "listfiles-latestversion-no": "No",
index 641281f..0ba17b7 100644 (file)
        "listfiles_size": "サイズ",
        "listfiles_description": "概要",
        "listfiles_count": "版数",
-       "listfiles-show-all": "画像の古い版を含める",
+       "listfiles-show-all": "ファイルの古い版を含める",
        "listfiles-latestversion": "現在の版",
        "listfiles-latestversion-yes": "はい",
        "listfiles-latestversion-no": "いいえ",
index 91ed6d0..cf6b274 100644 (file)
        "blockedtext": "<b>Asma panganggo utawa alamat IP panjenengan diblokir.</b>\n\nBlokir iki sing nglakoni $1.\nAlesané <i>$2</i>.\n\n* Diblokir wiwit: $8\n* Kadaluwarsa pemblokiran ing: $6\n* Sing arep diblokir: $7\n\nPanjenengan bisa ngubungi $1 utawa [[{{MediaWiki:Grouppage-sysop}}|pangurus liyané]] kanggo ngomongaké prakara iki.\n\nPanjenengan ora bisa nggunakaké fitur 'Kirim layang é-mail panganggo iki' kejaba panjenengan wis nglebokaké alamat é-mail sing sah ing [[Special:Preferences|prèferènsi]] panjenengan.\n\nAlamat IP panjenengan iku $3, lan ID pamblokiran iku #$5.\nTulung kabèh informasi ing ndhuwur iki disertakaké ing saben pitakon panjenengan.",
        "autoblockedtext": "Alamat IP-né panjenangan wis otomatis diblokir amarga dienggo déning panganggo liyané, sing diblokir déning $1.\n\n:<em>$2</em>\n\n* Wiwit diblokir: $8\n* Rampung diblokir: $6\n* Sing diblokir: $7\n\nPanjenengan bisa ngubungi $1 utawa [[{{MediaWiki:Grouppage-sysop}}|pangurus]] liyané kanggo ngrembug blokirané.\n\nPanjenengan ora bisa nganggo fitur \"kirim layang-èl panganggo iki\" kajaba panjenengan wis ndhaftaraké alamat layang-èl sing trep ing [[Special:Preferences|pilalan panganggoné]] panjenengan lan panjenengan durung tau diblokir nalika nganggo iku.\n\nAlamat IP-né panjenengan sing saiki ya iku $3, lan ID blokirané ya iku $5. \nMangga wuwuhen kabèh rerincèn ing ndhuwur sajeroné samubarang pitakoné panjenengan.",
        "blockednoreason": "ora ana alesan sing diwènèhaké",
-       "whitelistedittext": "Sampéyan kudu $1 murih bisa mbesut kaca.",
+       "whitelistedittext": "Mangga $1 dhisik yèn arep mbesut kaca.",
        "confirmedittext": "Panjenengan kudu ndhedhes alamat e-mail dhisik sadurungé pareng nyunting sawijining kaca. Mangga nglebokaké lan validasi alamat e-mail panjenengan sadurungé nglakoni panyuntingan. Alamat e-mail sawisé bisa diowahi liwat [[Special:Preferences|kaca préférènsi]]",
        "nosuchsectiontitle": "Pérangan ora katemu",
        "nosuchsectiontext": "Panjenengan nyoba nyunting sawijining bagéan sing ora ana.\nBagéan iki manawa wis dipindhah utawa dibusak nalika panjenengan buka.",
        "permissionserrorstext": "Panjengan ora kagungan idin kanggo nglakoni sing panjenengan gayuh amerga {{PLURAL:$1|alesan|alesan-alesan}} iki:",
        "permissionserrorstext-withaction": "Panjenengan ora duwé hak aksès kanggo $2, amarga {{PLURAL:$1|alasan|alasan}} ing ngisor iki:",
        "recreate-moveddeleted-warn": "'''Pènget: Panjenengan gawé manèh sawijining kaca sing wis tau dibusak.'''\n\nMangga digagas manèh apa pantes nerusaké nyunting kaca iki.\nIng ngisor iki kapacak log pambusakan lan pamindhahan saka kaca iki:",
-       "moveddeleted-notice": "Kaca iki wis dibusak.\nLog busak lan alih ngenani kacané cumepak ing ngisor kanggo rujukan.",
+       "moveddeleted-notice": "Kaca iki wis dibusak.\nLog busak, reksa, lan alih bab kacané cumepak ing ngisor minangka rujukan.",
        "log-fulllog": "Deleng cathetan wutuh",
        "edit-hook-aborted": "Besutan diwurungaké déning cangkolan.\nOra ana katerangané.",
        "edit-gone-missing": "Ora bisa nganyari kaca.\nKatoné kaca iki wis dibusak.",
        "deletereasonotherlist": "Alesan liya",
        "deletereason-dropdown": "*Alesan pambusakan\n** Spam\n** Vandalisme\n** Nglanggar hak cipta\n** Disuwun sing nulis\n** Pangalihan rusak",
        "delete-edit-reasonlist": "Besut alesané pambusak",
-       "delete-toobig": "Kaca iki darbé sajarah besutan sing dawa, punjul $1 {{PLURAL:$1|owahan}}.\nPambusak tumrap kaca sing kaya mangkono wis ora diidinaké nedya njagani murih ora ana karusakan ing {{SITENAME}}.",
+       "delete-toobig": "Kaca iki darbé sajarah besutan sing dawa, punjul $1 {{PLURAL:$1|owahan}}.\nMbusak kaca sing kaya mangkono wis ora diidinaké kanggo njagani supaya ora ana sing rusak ing {{SITENAME}}.",
        "delete-warning-toobig": "Kaca iki duwé sajarah besut sing dawa, punjul $1 {{PLURAL:$1|révisi}}.\nMbusak kaca iki bisa ngrusak lakuné basis dhata ing {{SITENAME}};\nkudu diayahi kanthi ngati-ati.",
        "deleteprotected": "Panjenengan ora bisa mbusak kaca iki amarga direksa.",
        "deleting-backlinks-warning": "'''Awas:''' Kaca liyane mungkin ana sing nautake ing kaca sing arep sampeyan busak.",
        "import-error-interwiki": "Kaca \"$1\" ora diimpor amarga jenengé dicadhangaké kango pranala njaba (interwiki).",
        "import-error-special": "Kaca \"$1\" ora diimpor amarga darbèké mandala aran mirunggan sing ora nglilakaké anané kaca.",
        "import-error-invalid": "Kaca \"$1\" ora diimpor amarga jenengé ora trep kanggo wiki iki.",
-       "import-error-unserialize": "Revisi $2 saka kaca \"$1\" ora bisa diurutaké. Revisi iku dilapuraké murih nganggo gagrag isi $3 sing diurutaké minangka $4.",
+       "import-error-unserialize": "Révisi $2 saka kaca \"$1\" ora bisa diurutaké. Révisi iku dilapuraké supaya nganggo modhèl kontèn $3 sing diurutaké minangka $4.",
        "import-options-wrong": "{{PLURAL:$2|Opsi|Opsi}} salah: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "Kaca wod iki sesirahé ora sah.",
        "import-rootpage-nosubpage": "Ruang nama \"$1\" di halaman turunan tidak mengizinkan subhalaman.",
        "version-libraries-description": "Wedharan",
        "version-libraries-authors": "Pangarang",
        "redirect": "Lih-lihan miturut barkas, panganggo, kaca, owahan, utawa cathetan",
-       "redirect-summary": "Kaca astamiwa iki dialihake menyang gambar (jeneng gambar diwenehi), kaca (ID revisi utama ID kaca diwenehi), utawa kaca panganggo (ID panganggo diwenehi). Cara nganggo: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
+       "redirect-summary": "Kaca mirunggan iki ngener ing sawijining barkas (jeneng gambar diwenehi), kaca (ID revisi utama ID kaca diwenehi), utawa kaca panganggo (ID panganggo diwenehi). Cara nganggo: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
        "redirect-submit": "Nuju",
        "redirect-lookup": "Golek:",
        "redirect-value": "Aji:",
index ab68c15..2efb3a4 100644 (file)
        "throttled-mailpassword": "Neceggɛed yakan tirawt n uwennez i awal-ik/im n uɛaddi deg {{PLURAL:$1|asrag agi aneggaru|$1 isragen agi ineggura}}. Awennez n uwal n uɛaddi yettwaceggaɛ tikelt kan deg {{PLURAL:$1|asrag|$1 isragen}}.",
        "mailerror": "Agul asmi yettwazen e-mail: $1",
        "acct_creation_throttle_hit": "Inebgawen iseqdacen tansa IP-ik rnan {{PLURAL:$1|n umiḍan|$1 n imiḍanen}} deg $2 n yisragen ineggura, d ayen yessawḍen ar talast tafellayt yettwasirgen deg uzilal-agi n wakud.\nIhi, timerna n imiḍanen i yinebgawen iseqdacen tansa-agi IP tewḥel akka tura.",
-       "emailauthenticated": "Tansa e-mail inek/inem tesergeg ass n $2 af $3.",
+       "emailauthenticated": "Tansa-ik(im) imayl tettwasentem di $2 af $3.",
        "emailnotauthenticated": "Tansa email inek mazal ur tettuɛqel. Ur d netceggaɛ ara email i yal tiseɣnin agi.",
        "noemailprefs": "Efk tansa e-mail iwakken ad leḥḥun iḍaɣaren-nni.",
-       "emailconfirmlink": "Sentem tansa e-mail inek",
+       "emailconfirmlink": "Sentem tansa-ik imayl",
        "invalidemailaddress": "Tansa e-mail-agi ur telhi, ur tesɛi ara taseddast n lɛali. Ssekcem tansa e-mail s taseddast n lɛali neɣ ur tefkiḍ acemma.",
        "cannotchangeemail": "Ur t-zemreḍ ara ad beddeleḍ tansa e-mail deg uwiki agi.",
        "emaildisabled": "Asmel agi ur yezmer ara ad i cegaɛ e-mail.",
        "exif-urgency-other": "Lḥir id yefka amseqdac ($1)",
        "namespacesall": "akk",
        "monthsall": "akk",
-       "confirmemail": "Sentem tansa n e-mail",
+       "confirmemail": "Sentem tans-ik imayl",
        "confirmemail_noemail": "Ur tesɛiḍ ara tansa n yitameɣtut deg [[Special:Preferences|ismenyifen n useqdac]]-ik.",
        "confirmemail_text": "{{SITENAME}} yeḥweǧ aseɣbel n tansa e-mail inek/inem uqbel ad sexdemeḍ tanfa n tirawt.\nSeqdec taqeffalt ddaw-agi iwakken ad cegɛeḍ e-mail n uragag ar tansa e-mail inek/inem.\nTirawt at sɛu azday deg-es tangalt. Tzemreḍ at seqdeceḍ tikkelt kan deg talast n ukud ;\nllid azday agi deg iminig iwakken ad sergegeḍ tansa e-mail inek/inem.",
        "confirmemail_pending": "Yettwazen-ak yagi ungal n usentem; lukan txelqeḍ isem wemseqdac tura kan,\nahat yessefk ad tegguniḍ cwiṭ qbel ad tɛreḍeḍ ad testeqsiḍ ɣef ungal amaynut.",
-       "confirmemail_send": "Azen-iyi-d angal n usentem s e-mail iwakken ad snetmeɣ.",
+       "confirmemail_send": "Azen tangalt n usentem",
        "confirmemail_sent": "E-mail yettwazen iwakken ad tsentmeḍ.",
-       "confirmemail_oncreate": "Angal n usentem yettwazen ar tansa n e-mail inek.\nYessefk ad tesseqdceḍ angal-agi iwakken ad tkecmeḍ, meɛna yessefk a t-tefkeḍ\niwakken ad xedmen yiḍaɣaren n email deg wiki-yagi.",
+       "confirmemail_oncreate": "Tangalt n usentem tettwazen ar tansa n yimay inek.\nTangalt-agi ur mačči d ayen ilaqen akken ad tkecmeḍ ar uwiki-agi, acu kan yessefk ad tt-id-muddeḍ akken ad tremdeḍ yal tawuri icudden ar tira n yiznan.",
        "confirmemail_sendfailed": "{{SITENAME}} ur yezmir ara ad yazen asentem n email.\nSsenqed tansa n email inek.\n\nAhil n uzzun n e-mail yuɣal-d s-izen agi : $1",
-       "confirmemail_invalid": "Angal n usentem mačči ṣaḥiḥ. Waqila yemmut.",
+       "confirmemail_invalid": "Tangalt n usentem mačči d tameɣtut.\nAhat yezri wakud-is.",
        "confirmemail_needlogin": "Yessefk $1 iwakken tesnetmeḍ tansa n email inek.",
        "confirmemail_success": "Tansa e-mail inek/inem tergeg.\nTura tzemreḍ ad [[Special:UserLogin|qqeneḍ]].",
        "confirmemail_loggedin": "Asentem n tansa n email inek yekfa tura.",
index 222bff8..e5cf90e 100644 (file)
        "listfiles_size": "크기",
        "listfiles_description": "설명",
        "listfiles_count": "버전",
-       "listfiles-show-all": "그림ì\9d\98 ê³¼ê±° í\8c\90 í\8f¬í\95¨",
+       "listfiles-show-all": "í\8c\8cì\9d¼ì\9d\98 ê³¼ê±° í\8c\90 í\8f¬í\95¨",
        "listfiles-latestversion": "현재 판",
        "listfiles-latestversion-yes": "예",
        "listfiles-latestversion-no": "아니오",
index 0201ec4..41cc8a4 100644 (file)
        "spamprotectiontext": "La testo cual tu ia vole fisa ia es blocida par la filtro de spam.\nEsta es probable causada par un lia a un loca esterna en la lista negra.",
        "simpleantispam-label": "Antispam. <strong>No</strong> completi esta!",
        "pageinfo-title": "Informa per \"$1\"",
+       "pageinfo-not-current": "Regretable, esta informa no es disponable per revisas vea.",
        "pageinfo-header-basic": "Informa fundal",
        "pageinfo-header-edits": "Edita la istoria",
        "pageinfo-header-restrictions": "Proteje de paje",
        "deletedrevision": "Sutrae revisa vea $1",
        "filedeleteerror-short": "Era en sutrae fix: $1",
        "filedeleteerror-long": "Eras ia aveni en desutrae la fix:\n\n$1",
+       "filedelete-old-unregistered": "La revisa spesifada de fix \"$1\" no es en la banco de datos.",
+       "filedelete-current-unregistered": "La fix spesifada \"$1\" no es en la banco de datos.",
+       "filedelete-archive-read-only": "La arciveria \"$1\" no es scrivable per la servador.",
        "previousdiff": "← Edita plu vea",
        "nextdiff": "Edita plu nova →",
+       "mediawarning": "<strong>Avisa:</strong> Esta tipo de fix pote conteni codigo malvolente.\nSi tu esecuta lo, tu risca perili tua sistem.",
+       "imagemaxsize": "Limita de grandia de imaje:<br /><em>(per pajes de descrive de fix)</em>",
+       "thumbsize": "Grandia de imajeta:",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|paje|pajes}}",
+       "file-info": "grandia de fix: $1, tipo MIME: $2",
        "file-info-size": "$1 × $2 pixeles, grandia de fix: $3, tipo MIME: $4",
        "file-info-size-pages": "$1 × $2 pixeles, grandia de fix: $3, tipo MIME: $4, $5 {{PLURAL:$5|paje|pajes}}",
        "file-nohires": "No densia plu alta es disponable.",
        "svg-long-desc": "fix svg, densia: $1 × $2 pixeles, grandia: $3",
+       "svg-long-desc-animated": "Fix SVG animada, densia: $1 × $2 pixeles, grandia: $3",
+       "svg-long-error": "Fix SVG nonvalida: $1",
        "show-big-image": "Fix orijinal",
        "show-big-image-preview": "Grandia de esta previde: $1",
        "show-big-image-other": "Otra {{PLURAL:$2|densia|densias}}: $1.",
        "show-big-image-size": "$1 × $2 pixeles",
+       "file-info-gif-looped": "siclinte",
+       "file-info-png-looped": "siclinte",
+       "file-info-png-repeat": "juada a $1 {{PLURAL:$1|ves|veses}}",
+       "file-info-png-frames": "$1 {{PLURAL:$1|imaje|imajes}}",
+       "file-no-thumb-animation": "<strong>Nota: Par causa de limitas tecnical, imajetas de esta fix no va es animada.</strong>",
+       "file-no-thumb-animation-gif": "<strong>Nota: Par causa de limitas tecnical, imajetas de imajes GIF de densia alta, como esta, no va es animada.</strong>",
        "newimages": "Imajes nova",
+       "imagelisttext": "A su es un lista de <strong>$1</strong> {{PLURAL:$1|fix|fixes}} ordinada $2.",
+       "newimages-summary": "Esta paje spesial mostra la fixes la plu resente cargada.",
        "newimages-legend": "Filtri",
+       "newimages-label": "Nom de fix (o un parte de lo):",
+       "newimages-user": "Adirije IP o nom de usor",
+       "newimages-newbies": "Mostra contribuis sola de contas nova",
+       "newimages-showbots": "Mostra cargas par botes",
+       "newimages-hidepatrolled": "Asconde cargas patruliada",
        "newimages-mediatype": "Tipo de media:",
        "noimages": "No cosas per vide.",
        "ilsubmit": "Xerca",
+       "sp-newimages-showfrom": "Mostra fixes nova comensante de $2, $1",
+       "seconds": "{{PLURAL:$1|$1 secondo|$1 secondos}}",
+       "minutes": "{{PLURAL:$1|$1 minuto|$1 minutos}}",
+       "hours": "{{PLURAL:$1|$1 ora|$1 oras}}",
+       "days": "{{PLURAL:$1|$1 dia|$1 dias}}",
+       "weeks": "{{PLURAL:$1|$1 semana|$1 semanas}}",
+       "months": "{{PLURAL:$1|$1 mense|$1 menses}}",
+       "years": "{{PLURAL:$1|$1 anio|$1 anios}}",
+       "ago": "a $1 ante aora",
+       "just-now": "presente",
        "monday-at": "en lundi a $1",
        "tuesday-at": "en martedi a $1",
        "wednesday-at": "en mercurdi a $1",
        "exif-fnumber": "Numero F",
        "exif-exposureprogram": "Program de esposa",
        "exif-spectralsensitivity": "Sensosia spetral",
+       "exif-shutterspeedvalue": "Rapidida APEX de cluador",
+       "exif-subjectdistance": "Distantia de sujeto",
+       "exif-meteringmode": "Moda de determina esposa",
+       "exif-lightsource": "Fonte de lus",
+       "exif-flash": "Flaxador",
+       "exif-focallength": "Distantia focal de lente",
+       "exif-subjectarea": "Area de sujeto",
        "exif-flashenergy": "Enerjia de flaxador",
        "exif-focalplanexresolution": "Densia X de plana focal",
        "exif-focalplaneyresolution": "Densia Y de plana focal",
        "exif-gpsareainformation": "Nom de area GPS",
        "exif-gpsdatestamp": "Data GPS",
        "exif-gpsdifferential": "Coreti diferensial GPS",
+       "exif-jpegfilecomment": "Comenta de fix JPEG",
+       "exif-keywords": "Parolas de clave",
        "exif-worldregioncreated": "Rejion de mundo en cual la foto ia es fada",
        "exif-countrycreated": "Pais en cual la foto ia es fada",
        "exif-countrycodecreated": "Codigo per la pais en cual la foto ia es fada",
        "exif-datetimemetadata": "Data de cambia la plu resente de metadatos",
        "exif-nickname": "Nom nonformal de imaje",
        "exif-rating": "Gradi (asta 5)",
+       "exif-rightscertificate": "Documento de maneja de diretos",
+       "exif-copyrighted": "State de direto de autor",
+       "exif-copyrightowner": "Autor con diretos",
+       "exif-usageterms": "Restrinjes de usa",
+       "exif-webstatement": "Declara enlinia de diretos de autor",
+       "exif-originaldocumentid": "Numero unica de documento orijinal",
+       "exif-licenseurl": "URL per lisensa de direto de autor",
        "exif-morepermissionsurl": "Informa lisensal alternativa",
        "exif-attributionurl": "Si tu reusa esta obra, per favore lia a",
        "exif-preferredattributionname": "Si tu reusa esta obra, per favore atribui lo a",
        "exif-exposureprogram-3": "Primia de abri",
        "exif-exposureprogram-4": "Primia de cluador",
        "exif-exposureprogram-5": "Program creosa (favorente profondia de campo)",
+       "exif-exposureprogram-6": "Program ativa (favorente rapidia de cluador)",
+       "exif-exposureprogram-7": "Orienta vertical (per fotos prosima con fondo nonfocada)",
+       "exif-exposureprogram-8": "Orienta vertical (per fotos prosima con fondo nonfocada)",
+       "exif-subjectdistance-value": "$1 metres",
        "exif-meteringmode-0": "Nonconoseda",
        "exif-meteringmode-1": "Promedia",
        "exif-meteringmode-2": "Promedia favorente la sentro",
        "confirmemail_oncreate": "Un codigo de confirma ia es epostada a tua adirije de eposta.\nEsta codigo no es nesesada per autentici, ma tu va nesesa furni lo ante comuta cualce funsionas epostal en la vici.",
        "confirmemail_sendfailed": "{{SITENAME}} no ia pote envia tua eposta de confirma.\nPer favore, esamina tua adirije de eposta per sinias nonvalida.\n\nEpostador ia dise: $1",
        "confirmemail_invalid": "Codigo de confirma nonvalida.\nCisa la codigo es tro vea.",
+       "confirmemail_needlogin": "Per favore, $1 per confirma tua adirije de eposta.",
+       "confirmemail_success": "Tua adirije de eposta es confirmada.\nTu pote aora [[Special:UserLogin|autentici]] e usa la vici.",
+       "confirmemail_loggedin": "Tua adirije de eposta es aora confirmada.",
+       "confirmemail_subject": "Confirma de adirije de eposta per {{SITENAME}}",
+       "confirmemail_body": "Algun, probable tu, de adirije IP $1,\nia rejistra un conta \"$2\" con esta adirije de eposta en {{SITENAME}}.\n\nPer confirma ce esta conta parteni vera a tu e per ativi\nfunsionas epostal en {{SITENAME}}, abri esta lia en tua surfador:\n\n$3\n\nSi tu *no* ia rejistra la conta, segue esta lia\nper cansela la confirma de adirije de eposta:\n\n$5\n\nEsta codigo de confirma va desvalidi a $4.",
+       "confirmemail_body_changed": "Algun, probable tu, de adirije IP $1,\nia cambia la adirije de eposta de la conta \"$2\" en {{SITENAME}} a esta adirije.\n\nPer confirma ce esta conta parteni vera a tu e per reativi\nfunsionas epostal en {{SITENAME}}, abri esta lila en tua surfador:\n\n$3\n\nSi la conta *no* parteni a tu, segue esta lia\nper cansela la confirma de adirije de eposta:\n\n$5\n\nEsta codigo de confirma va desvalidi a $4.",
+       "confirmemail_body_set": "Algun, probable tu, de adirije IP $1,\nia defini la adirije de eposta de la conta \"$2\" en {{SITENAME}} a esta adirije.\n\nPer confirma ce esta conta parteni vera a tu e per ativi\nfunsionas de eposta en {{SITENAME}}, abri esta lia en tua surfador:\n\n$3\n\nSi la conta *no* parteni a tu, segue esta lia\nper cansela la confirma de adirije de eposta:\n\n$5\n\nEsta codigo de confirma va desvalidi a $4.",
+       "confirmemail_invalidated": "Confirma de adirije de eposta canselada",
+       "invalidateemail": "Cansela confirma de eposta",
+       "notificationemail_subject_changed": "Adirije de eposta rejistrada [er {{SITENAME}} es cambiada",
+       "notificationemail_subject_removed": "Adirije de eposta rejistrada [er {{SITENAME}} es sutraeda",
+       "notificationemail_body_changed": "Algun, probable tu, de adirije IP $1,\nia cambia la adirije de eposta de la conta \"$2\" a \"$3\" en {{SITENAME}}.\n\nSi esta no ia es tu, contata direta un dirijor de la pajeria.",
+       "notificationemail_body_removed": "Algun, probable tu, de adirije IP $1,\nia sutrae la adirije de eposta de la conta \"$2\" en {{SITENAME}}.\n\nSi esta no ia es tu, contata direta un dirijor de la pajeria.",
+       "scarytranscludedisabled": "[Transcluis intervical es descomutada]",
+       "scarytranscludefailed": "[Retrae de stensil ia fali per $1]",
+       "scarytranscludefailed-httpstatus": "[Retrae de stensil ia fali per $1: HTTP $2]",
+       "scarytranscludetoolong": "[URL es tro longa]",
+       "deletedwhileediting": "<strong>Avisa:</strong> Esta paje ia es sutraeda pos cuando tu ia comensa edita!",
+       "recreate": "Recrea",
+       "confirm-purge-title": "Purga esta paje",
        "confirm_purge_button": "Oce",
+       "confirm-purge-top": "Vacui la prememoria de esta paje?",
        "confirm-watch-button": "Oce",
+       "confirm-watch-top": "Ajunta esta paje a tua lista monitorida?",
        "confirm-unwatch-button": "Oce",
+       "confirm-unwatch-top": "Sutrae esta paje de tua lista monitorida?",
        "confirm-rollback-button": "Oce",
+       "confirm-rollback-top": "Reversa editas a esta paje?",
        "quotation-marks": "$1",
+       "imgmultipageprev": "← paje presedente",
        "imgmultipagenext": "paje seguente →",
        "imgmultigo": "Vade!",
        "imgmultigoto": "Vade a paje $1",
+       "img-lang-default": "(lingua inisial)",
+       "img-lang-info": "Render esta imaje en $1. $2",
+       "img-lang-go": "Vade",
+       "ascending_abbrev": "asen",
+       "descending_abbrev": "desen",
+       "table_pager_next": "Paje seguente",
        "table_pager_prev": "Paje presedente",
        "table_pager_first": "Paje prima",
        "table_pager_last": "Paje final",
        "autoredircomment": "Paje redirijeda a [[$1]]",
        "autosumm-new": "Paje creada con \"$1\"",
        "autosumm-newblank": "Paje vacua creada",
+       "lag-warn-normal": "Cambias plu resente ca $1 {{PLURAL:$1|secondo|secondos}} ante aora es cisa no mostrada en esta lista.",
+       "lag-warn-high": "Par causa de retarda alta de la servador de datos, cambias plu resente ca $1 {{PLURAL:$1|secondo|secondos}} ante aora es cisa no mostrada en esta lista.",
+       "watchlistedit-normal-title": "Edita pajes monitorida",
+       "watchlistedit-normal-legend": "Sutrae pajes de lista monitorida",
+       "watchlistedit-normal-explain": "Titulos en tua lista de pajes monitorida es mostrada a su.\nPer sutrae un titulo, marca la caxa a lado e clica \"{{int:Watchlistedit-normal-submit}}\".\nTu pote ance [[Special:EditWatchlist/raw|edita la lista cru]].",
+       "watchlistedit-normal-submit": "Sutrae titulos",
+       "watchlistedit-normal-done": "{{PLURAL:$1|Un titulo|$1 titulos}} ia es sutraeda de tua lista de pajes monitorida:",
+       "watchlistedit-raw-title": "Edita lista cru de pajes monitorida",
+       "watchlistedit-raw-legend": "Edita lista cru de pajes monitorida",
+       "watchlistedit-raw-explain": "Titulos en tua lista de pajes monitorida es mostrada a su, e pote es editada par ajunta a e sutrae de la lista;\nun titulo per linia. Cuando tu ia fini, clica \"{{int:Watchlistedit-raw-submit}}\".\nTu pote ance [[Special:EditWatchlist|usa la editador normal]].",
+       "watchlistedit-raw-titles": "Titulos:",
+       "watchlistedit-raw-submit": "Fisa la lista",
+       "watchlistedit-raw-done": "Tua lista de pajes monitorida es cambiada.",
+       "watchlistedit-raw-added": "{{PLURAK:$1|1 titulo|$1 titulos}} ia es ajuntada:",
+       "watchlistedit-raw-removed": "{{PLURAL:$1|1 titulo|$1 titulos}} ia es sutraeda:",
+       "watchlistedit-clear-title": "Vacui la lista de pajes monitorida",
+       "watchlistedit-clear-legend": "Vacui la lista de pajes monitorida",
+       "watchlistedit-clear-explain": "Tota titulos va es sutraeda de tua lista monitorida",
+       "watchlistedit-clear-titles": "Titulos:",
+       "watchlistedit-clear-submit": "Vacui la lista (Esta es permanente!)",
+       "watchlistedit-clear-done": "Tua lista de pajes monitorida es vacuida.",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|1 titulo|$1 titulos}} ia es sutraeda:",
+       "watchlistedit-too-many": "La lista ave tro multe pajes per mostra asi.",
        "watchlisttools-clear": "Vacui la lista monitorida.",
        "watchlisttools-view": "Mostra cambias pertinente",
        "watchlisttools-edit": "Mostra e edita la lista monitorida",
        "watchlisttools-raw": "Edita la lista cru de pajes monitorida",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discute]])",
        "version": "Varia",
+       "version-extensions": "Estendentes instalada",
+       "version-skins": "Peles instalada",
+       "version-specialpages": "Pajes spesial",
+       "version-parserhooks": "Estendentes de analisador sintatical",
+       "version-variables": "Variables",
+       "version-antispam": "Preveni de spam",
+       "version-other": "Otra",
+       "version-mediahandlers": "Tratadores de media",
+       "version-hooks": "Estendentes",
+       "version-parser-extensiontags": "Eticetas estendente de analisador sintatical",
+       "version-parser-function-hooks": "Estendentes funsional de analisador sintatical",
+       "version-hook-name": "Nom de estendente",
+       "version-hook-subscribedby": "Subscribed by",
        "version-version": "($1)",
+       "version-no-ext-name": "[no nom]",
+       "version-license": "Lisensa de MediaWiki",
+       "version-ext-license": "Lisensa",
+       "version-ext-colheader-name": "Estendente",
+       "version-skin-colheader-name": "Pel",
+       "version-ext-colheader-version": "Revisa",
+       "version-ext-colheader-license": "Lisensa",
+       "version-ext-colheader-description": "Descrive",
+       "version-ext-colheader-credits": "Autores",
+       "version-license-title": "Lisensa per $1",
+       "version-license-not-found": "No informas detaliada de lisensa ia es trovada per esta estendente.",
+       "version-credits-title": "\nAtribuis per $1",
+       "version-credits-not-found": "No informas detaliosa de atribui ia es trovada per esta estendente.",
+       "version-poweredby-credits": "Esta vici es realida par <strong> [https://www.mediawiki.org/ MediaWiki]</strong>, su direto de autor © 2001-$1 $2.",
+       "version-poweredby-others": "otras",
+       "version-poweredby-translators": "traduores a translatewiki.net",
+       "version-credits-summary": "Nos desira reconose la persones seguente per sua contribuis a [[Special:Version|MediaWiki]].",
+       "version-license-info": "MediaWiki es un program libre; tu pote redistribui lo e/o altera lo su la restrinjes de la Lisensa Publica Jeneral GNU como publicida par la Funda de Programes Libre (Free Software Foundation); o revisa 2 de la Lisensa, o (si tu prefere) cualce revisa plu tarda.\n\nMediaWiki es distribuida con la espera ce lo va es usosa, ma CON NO GARANTIA; lo an no ave la garantia implicada de CONVENI PER VENDE (merchantability) or CONVENI PER UN INTENDE SPESIFADA (fitness for a particular purpose). Vide la Lisensa Publica Jeneral GNU per plu detalias.\n\nEsperable tu ia reseta [{{SERVER}}{{SCRIPTPATH}}/COPYING un copia de la Lisensa Publica Jeneral GNU] con esta program; si no, scrive a Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o [//www.gnu.org/licenses/old-licenses/gpl-2.0.html leje lo enlinia].",
+       "version-software": "Programes instalada",
        "version-software-product": "Produida",
        "version-software-version": "Revisa",
        "version-entrypoints": "URLes de puntos de entra",
        "fileduplicatesearch-submit": "Xerca",
        "specialpages": "Pajes spesial",
        "specialpages-note-top": "Esplica",
+       "specialpages-group-maintenance": "Reportas de manteni",
        "specialpages-group-other": "Otra pajes spesial",
        "specialpages-group-login": "Autentici / crea conta",
        "specialpages-group-changes": "Cambias resente e rejistras",
        "tag-filter-submit": "Filtri",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Eticeta|Eticetas}}]]: $2)",
        "tag-mw-contentmodelchange": "cambia de model de contenida",
+       "tags-tag": "Nom de eticeta",
+       "tags-display-header": "Apare en listas de cambias",
+       "tags-description-header": "Descrive plen de sinifia",
+       "tags-source-header": "Fonte",
+       "tags-active-header": "Ativa?",
+       "tags-hitcount-header": "Cambias eticetida",
        "tags-active-yes": "Si",
        "tags-active-no": "No",
+       "tags-source-extension": "Definida par la program",
+       "tags-source-manual": "Aplicada par mano par usores e botes",
        "tags-source-none": "No plu usada",
        "tags-edit": "edita",
        "tags-delete": "sutrae",
        "tags-edit-chosen-placeholder": "Eleje alga eticetas",
        "tags-edit-chosen-no-results": "No eticetas corespondente ia es trovada",
        "tags-edit-reason": "Razona:",
+       "compare-page1": "Paje 1",
+       "compare-page2": "Paje 2",
+       "compare-submit": "Compara",
+       "diff-form": "Diferes",
+       "diff-form-oldid": "Numero de revisa vea (si desirada)",
+       "diff-form-revid": "Numero de revisa de difere",
+       "diff-form-submit": "Mostra diferes",
+       "permanentlink": "Lia permanente",
+       "permanentlink-revid": "Numero de revisa",
+       "permanentlink-submit": "Vade a revisa",
+       "dberr-problems": "Pardona! Esta pajeria esperia problemes tecnical.",
+       "dberr-again": "Per favore, pausa per alga minutos e recarga.",
+       "dberr-info": "(Banco de datos no es asedable: $1)",
+       "dberr-info-hidden": "(Banco de datos no es asedable)",
+       "dberr-usegoogle": "Tu pote usa Google per xerca entretempo.",
+       "dberr-outofdate": "Nota ce sua catalogos de nosa contenida es cisa nonfresca.",
+       "dberr-cachederror": "Esta es un copia prememorida de la paje solisitada, e es cisa nonfresca.",
+       "htmlform-invalid-input": "Alga de tua enflue ave problemes.",
+       "htmlform-select-badoption": "La valua spesifada no es un eleje valida.",
+       "htmlform-int-invalid": "La valua spesifada no es un entero.",
+       "htmlform-float-invalid": "La valua spesifada no es un cuantia numeral.",
+       "htmlform-int-toolow": "La valua spesifada es min ca la minima, $1.",
+       "htmlform-int-toohigh": "La valua spesifada es plu ca la masima, $1.",
+       "htmlform-required": "Esta valua es nesesada.",
+       "htmlform-submit": "Envia",
+       "htmlform-reset": "Desfa cambias",
+       "htmlform-selectorother-other": "Otra",
+       "htmlform-no": "No",
+       "htmlform-yes": "Si",
+       "htmlform-chosen-placeholder": "Eleje",
+       "htmlform-cloner-create": "Ajunta plu",
+       "htmlform-cloner-delete": "Sutrae",
+       "htmlform-cloner-required": "A la min un valua es nesesada.",
+       "htmlform-date-placeholder": "YYYY-MM-DD",
+       "htmlform-time-placeholder": "HH:MM:SS",
+       "htmlform-datetime-placeholder": "YYYY-MM-DD HH:MM:SS",
+       "htmlform-date-invalid": "La valua spesifada no es reconoseda como un data. Proba la formato YYYY-MM-DD.",
+       "htmlform-time-invalid": "La valua spesifada no es reconoseda como un ora. Proba la formato HH:MM:SS.",
+       "htmlform-datetime-invalid": "La valua spesifada no es reconoseda como un data e ora. Proba la formato YYYY-MM-DD HH:MM:SS.",
+       "htmlform-date-toolow": "La valua spesifada es ante la data la plu temprana permeteda, $1.",
+       "htmlform-date-toohigh": "La valua spesifada es pos la data la plu tarda permeteda, $1.",
+       "htmlform-time-toolow": "La valua spesifada es ante la ora la plu temprana permeteda, $1.",
+       "htmlform-time-toohigh": "La valua spesifada es pos la ora la plu tarda permeteda, $1.",
+       "htmlform-datetime-toolow": "La valua spesifada es ante la data e ora la plu temprana permeteda, $1.",
+       "htmlform-datetime-toohigh": "La valua spesifada es pos la data e ora la plu tarda permeteda, $1.",
+       "htmlform-title-badnamespace": "[[:$1]] no es en la spasio de nom \"{{ns:$2}}\".",
+       "htmlform-title-not-creatable": "\"$1\" no es un titulo de paje creable",
+       "htmlform-title-not-exists": "$1 no esiste.",
+       "htmlform-user-not-exists": "<strong>$1</strong> no esiste.",
+       "htmlform-user-not-valid": "<strong>$1</strong> no es un nom valida de usor",
        "logentry-delete-delete": "$1 {{GENDER:$2|sutrae}} paje $3",
+       "logentry-delete-delete_redir": "\n$1 {{GENDER:$2|sutrae}} redirije $3 par suprascrive",
        "logentry-delete-restore": "$1 {{GENDER:$2|restora}} paje $3 ($4)",
+       "logentry-delete-restore-nocount": "$1 {{GENDER:$2|restora}} paje $3",
+       "restore-count-revisions": "{{PLURAL:$|1 revisa|$1 revisas}}",
+       "restore-count-files": "{{PLURAL:$|1 fix|$1 fixes}}",
+       "logentry-delete-event": "$1 {{GENDER:$2|cambia}} la vidablia de {{PLURAL:$5|un entrada|$5 entradas}} de rejistra en $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|cambia}} la vidablia de {{PLURAL:$5|un revisa|$5 revisas}} en paje $3: $4",
+       "logentry-delete-event-legacy": "$1 {{GENDER:$2|cambia}} la vidablia de entradas de rejistra en $3",
+       "logentry-delete-revision-legacy": "$1 {{GENDER:$2|cambia}} la vidablia de revisas en $3",
+       "logentry-suppress-delete": "$1 {{GENDER:$2|supresa}} paje $3",
+       "logentry-suppress-event": "$1 {{GENDER:$2|cambia}} secreta la vidablia de {{PLURAL:$5|un entrada|$5 entradas}} de rejistra en $3: $4",
+       "logentry-suppress-revision": "$1 {{GENDER:$2|cambia}} secreta la vidablia de {{PLURAL:$5|un revisa|$5 revisas}} en $3: $4",
+       "logentry-suppress-event-legacy": "$1 {{GENDER:$2|cambia}} secreta la vidablia de entradas de rejistra en $3",
+       "logentry-suppress-revision-legacy": "$1 {{GENDER:$2|cambia}} secreta la vidablia de revisas en paje $3",
        "revdelete-content-hid": "contenida ascondeda",
+       "revdelete-summary-hid": "asconde de resoma de edita",
+       "revdelete-uname-hid": "asconde de nom de usor",
+       "revdelete-content-unhid": "desasconde de contenida",
+       "revdelete-summary-unhid": "desasconde de resoma de edita",
+       "revdelete-uname-unhid": "desasconde de nom de usor",
+       "revdelete-restricted": "aplica de restrinjes a dirijores",
+       "revdelete-unrestricted": "sutrae de restrinjes per dirijores",
        "logentry-move-move": "$1 {{GENDER:$2|move}} paje $3 a $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|move}} la paje $3 a $4 sin lasa un redirije",
        "logentry-move-move_redir": "$1 {{GENDER:$2|move}} la paje $3 a $4 con redirije",
        "logentry-newusers-autocreate": "Conta de usor $1 es automata {{GENDER:$2|creada}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|carga}} $3",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|carga}} un varia nova de $3",
+       "log-name-tag": "Rejistra de eticetas",
+       "log-description-tag": "Esta paje mostra cuando usores ia ajunta o sutrae [[Special:Tags|eticetas]] de revisas o entradas de rejistra individua. La rejistra no lista atas de eticeta cuando los aveni como parte de un edita, sutrae o otra ata simil.",
+       "logentry-tag-update-add-revision": "$1 {{GENDER:$2|ajunta}} la {{PLURAL:$7|eticeta|eticetas}} $6 a revisa $4 de paje $3",
+       "logentry-tag-update-add-logentry": "$1 {{GENDER:$2|ajunta}} la {{PLURAL:$7|eticeta|eticetas}} $6 a entrada de rejistra $5 de paje $3",
+       "logentry-tag-update-remove-revision": "$1 {{GENDER:$2|sutrae}} la {{PLURAL:$9|eticeta|eticetas}} $8 de revisa $4 de paje $3",
+       "logentry-tag-update-remove-logentry": "$1 {{GENDER:$2|sutrae}} la {{PLURAL:$9|eticeta|eticetas}} $8 de entrada de rejistra $5 de paje $3",
+       "logentry-tag-update-revision": "$1 {{GENDER:$2|ajusta}} eticetas en revisa $4 de paje $3 ({{PLURAL:$7|ajunta}} $6; {{PLURAL:$9|sutrae}} $8)",
+       "logentry-tag-update-logentry": "$1 {{GENDER:$2|ajusta}} eticetas en entrada de rejistra $5 de paje $3 ({{PLURAL:$7|ajunta}} $6; {{PLURAL:$9|sutrae}} $8)",
+       "rightsnone": "(zero)",
+       "rightslogentry-temporary-group": "$1 (tempora, asta $2)",
+       "feedback-adding": "Ajuntante comenta a paje...",
+       "feedback-back": "Retro",
+       "feedback-bugcheck": "Bon! Ma serti ce lo no es ja un de la [$1 defetos conoseda], per favore.",
+       "feedback-bugnew": "Me es serta. Reporta un defeto nova",
+       "feedback-bugornote": "Si tu vole descrive la detalias de un problem tecnical, [$1 reporta un defeto], per favore.\nSi no, tu pote usa la formulario fasil a su. Tua comenta va es ajuntada a la paje \"[$3 $2]\", con ance tua nom de usor.",
+       "feedback-cancel": "Cansela",
+       "feedback-close": "Fada",
+       "feedback-external-bug-report-button": "Envia un report tecnical",
+       "feedback-dialog-title": "Envia comenta",
+       "feedback-dialog-intro": "Tu pote usa la formulario a su per envia tua comenta. Tua comenta va es ajuntada a la paje \"$1\", con ance tua nom de usor.",
+       "feedback-error1": "Era: Resulta nonreconoseda de API",
+       "feedback-error2": "Era: Fali de edita",
+       "feedback-error3": "Era: API no responde",
+       "feedback-error4": "Era: Envia a la titulo comental spesifada no es posible",
+       "feedback-message": "Mesaje:",
+       "feedback-subject": "Tema:",
+       "feedback-submit": "Envia",
+       "feedback-terms": "Me comprende ce mea informa de surfador inclui informas esata sur mea revisa de surfador e sistem de opera, e va es publica compartida con mea comenta.",
+       "feedback-termsofuse": "Me acorda furni un comenta longo la Restrinjes de Usa.",
+       "feedback-thanks": "Grasias! Tua comenta apare en la paje \"[$2 $1]\".",
+       "feedback-thanks-title": "Grasias!",
+       "feedback-useragent": "Surfador:",
        "searchsuggest-search": "Xerca {{SITENAME}}",
+       "searchsuggest-containing": "conteninte...",
+       "api-error-badtoken": "Era interna: Mal marca.",
+       "api-error-emptypage": "La crea de pajes nova e vacua no es permeteda.",
+       "api-error-publishfailed": "Era interna: la servador ia fali publici un fix tempora.",
+       "api-error-stashfailed": "Era interna: la servador ia fali fisa un fix tempora.",
+       "api-error-unknown-warning": "Avisa nonconoseda: \"$1\".",
        "duration-days": "$1 {{PLURAL:$1|dia|dias}}",
+       "limitreport-cputime": "Usa de tempo par prosedador",
+       "limitreport-cputime-value": "$1 {{PLURAL:$1|secondo|secondos}}",
+       "limitreport-walltime": "Usa de tempo real",
+       "limitreport-walltime-value": "$1 {{PLURAL:$1|secondo|secondos}}",
+       "limitreport-ppvisitednodes": "Cuantia de nodas visitada par preprosedador",
+       "limitreport-ppgeneratednodes": "Cuantia de nodas jenerada par preprosedador",
+       "limitreport-postexpandincludesize": "Grandia de inclui pos despaci",
+       "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|bait|baites}}",
+       "limitreport-templateargumentsize": "Grandia de parametres de stensil",
+       "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|bait|baites}}",
+       "limitreport-expansiondepth": "Profondia la plu grande de despaci",
+       "limitreport-expensivefunctioncount": "Cuantia de funsionas custosa de analisador sintatical",
+       "expandtemplates": "Despaci stensiles",
+       "expand_templates_intro": "Esta paje spesial prende testo e despaci tota stensiles en lo, en modo recorsante.\nLo despaci ance funsionas suportada de analisador sintatical como\n<code><nowiki>{{</nowiki>#language:…}}</code> e variables como\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nEn fato, lo despaci cuasi tota cosas entre brasetas risa duple.",
+       "expand_templates_input": "Testo enflual:",
+       "expand_templates_output": "Resulta",
+       "expand_templates_xml_output": "Esflue XML",
+       "expand_templates_html_output": "Esflue HTML cru",
        "expand_templates_ok": "Oce",
-       "randomrootpage": "Paje acaso de radis"
+       "expand_templates_remove_comments": "Sutrae comentas",
+       "expand_templates_remove_nowiki": "Supresa eticetas <nowiki> en resulta",
+       "expand_templates_generate_xml": "Mostra arbor de analise XML",
+       "expand_templates_generate_rawhtml": "Mostra HTML cru",
+       "expand_templates_preview": "Previde",
+       "expand_templates_preview_fail_html": "<em>Car HTML cru es comutada en {{SITENAME}} e datos de sesion ia es perdeda, la previde es ascondeda per preveni atacas par JavaScript.</em>\n\n<strong>Si esta es un atenta valida de previde, atenta denova, per favore.</strong>\nSi lo ancora no funsiona, proba [[Special:UserLogout|desautentici]] e reautentici, e serti ce tua surfador permete cucis de esta pajeria.",
+       "expand_templates_preview_fail_html_anon": "\n<em>Car HTML cru es comutada en {{SITENAME}} e tu no es autenticida, la previde es ascondeda per preveni atacas par JavaScript.</em>\n\n<strong>Si esta es un atenta valida de previde, [[Special:UserLogin|autentici]] e atenta denova, per favore.</strong>",
+       "expand_templates_input_missing": "Tu debe furni a la min alga testo enflual.",
+       "pagelanguage": "Cambia lingua de paje",
+       "pagelang-name": "Paje",
+       "pagelang-language": "Lingua",
+       "pagelang-use-default": "Usa lingua inisial",
+       "pagelang-select-lang": "Eleje lingua",
+       "pagelang-reason": "Razona",
+       "pagelang-submit": "Envia",
+       "right-pagelang": "Cambia lingua de paje",
+       "action-pagelang": "cambia la lingua de paje",
+       "log-name-pagelang": "Rejistra de cambias de lingua",
+       "log-description-pagelang": "Esta es un rejistra de cambias de linguas de paje.",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (comutada)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>descomutada</strong>)",
+       "mediastatistics": "Statisticas de medias",
+       "mediastatistics-summary": "Statisticas sur tipos de fix cargada. Esta inclui sola la revisa la plu resente de un fix. Revisas vea o sutraeda de fixes es escluida.",
+       "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte|$1 bytes}} ($2; $3%)",
+       "mediastatistics-bytespertype": "Grandia intera de fix per esta parte: {{PLURAL:$1|$1 bait|$1 baites}} ($2; $3%).",
+       "mediastatistics-allbytes": "\nGrandia intera de fix per tota fixes: {{PLURAL:$1|$1 bait|$1 baites}} ($2).",
+       "mediastatistics-table-mimetype": "Tipo MIME",
+       "mediastatistics-table-extensions": "Estendentes posible",
+       "mediastatistics-table-count": "Cuantia de fixes",
+       "mediastatistics-table-totalbytes": "Grandia combinada",
+       "mediastatistics-header-unknown": "Nonconoseda",
+       "mediastatistics-header-bitmap": "Imajes matrisin",
+       "mediastatistics-header-drawing": "Desinias (imajes vetoral)",
+       "mediastatistics-header-audio": "Audio",
+       "mediastatistics-header-video": "Videos",
+       "mediastatistics-header-multimedia": "Medias rica",
+       "mediastatistics-header-office": "Ofisia",
+       "mediastatistics-header-text": "Testo",
+       "mediastatistics-header-executable": "Esecutables",
+       "mediastatistics-header-archive": "Formatos compresada",
+       "mediastatistics-header-total": "Tota fixes",
+       "json-warn-trailing-comma": "$1 {{PLURAL:$1|virgula|virgulas}} codal ia es sutraeda de JSON",
+       "json-error-unknown": "La JSON ia ave un problem. Era: $1",
+       "json-error-depth": "La profondia masima de pila es esededa",
+       "json-error-ctrl-char": "Era de sinia controlante, cisa noncoreta codigida",
+       "json-error-syntax": "Era de sintatica",
+       "json-error-utf8": "Sinias UTF-8 malformida, cisa noncoreta codigida",
+       "json-error-recursion": "La valua per codigi conteni un o plu referes recorsante",
+       "json-error-inf-or-nan": "La valua per codigi conteni un o plu valuas NAN o INF",
+       "json-error-unsupported-type": "Un valua de un tipo noncodigable ia es donada",
+       "headline-anchor-title": "Lia a esta parte",
+       "special-characters-group-latin": "Latina",
+       "special-characters-group-latinextended": "Latina estendeda",
+       "special-characters-group-ipa": "AFI",
+       "special-characters-group-symbols": "Simboles",
+       "special-characters-group-greek": "Elinica",
+       "special-characters-group-greekextended": "Elinica estendeda",
+       "special-characters-group-cyrillic": "Cirilica",
+       "special-characters-group-arabic": "Arabi",
+       "special-characters-group-arabicextended": "Arabi estendeda",
+       "special-characters-group-persian": "Farsi",
+       "special-characters-group-hebrew": "Ivri",
+       "special-characters-group-bangla": "Bangla",
+       "special-characters-group-tamil": "Tamil",
+       "special-characters-group-telugu": "Telugu",
+       "special-characters-group-sinhala": "Sinala",
+       "special-characters-group-gujarati": "Gudjarati",
+       "special-characters-group-devanagari": "Devanagari",
+       "special-characters-group-thai": "Tai",
+       "special-characters-group-lao": "Lau",
+       "special-characters-group-khmer": "Cmer",
+       "special-characters-group-canadianaboriginal": "Canadian orijinal",
+       "special-characters-title-endash": "duilinia orizonal",
+       "special-characters-title-emdash": "linia orizonal",
+       "special-characters-title-minus": "sinia negativa",
+       "mw-widgets-dateinput-no-date": "No data elejeda",
+       "mw-widgets-mediasearch-input-placeholder": "Xerca medias",
+       "mw-widgets-mediasearch-noresults": "No resultas trovada.",
+       "mw-widgets-titleinput-description-new-page": "paje ancora no esiste",
+       "mw-widgets-categoryselector-add-category-placeholder": "Ajunta un categoria...",
+       "mw-widgets-usersmultiselect-placeholder": "Ajunta un categoria...",
+       "date-range-from": "De data:",
+       "date-range-to": "Asta data:",
+       "sessionmanager-tie": "Tipos multiple de autentici de solisita no pote es combinada: $1.",
+       "sessionprovider-generic": "sesiones de $1",
+       "sessionprovider-mediawiki-session-cookiesessionprovider": "sesiones con cucis",
+       "sessionprovider-nocookies": "Cucis es cisa descomutada. Serti ce tu ia comuta cucis e comensa denova.",
+       "randomrootpage": "Paje acaso de radis",
+       "log-action-filter-contentmodel": "Tipo de cambia de model de contenida:",
+       "log-action-filter-delete": "Tipo de sutrae:",
+       "log-action-filter-import": "Tipo de emporta:",
+       "log-action-filter-managetags": "Tipo de ata de maneja de eticeta:",
+       "log-action-filter-move": "Tipo de move:",
+       "log-action-filter-newusers": "Tipo de crea de conta:",
+       "log-action-filter-patrol": "Tipo de patrulia:",
+       "log-action-filter-protect": "Tipo de proteje:",
+       "log-action-filter-rights": "Tipo de cambia de direto:",
+       "log-action-filter-suppress": "Tipo de supresa:",
+       "log-action-filter-upload": "Tipo de carga:",
+       "log-action-filter-all": "Tota",
+       "authmanager-authn-not-in-progress": "Autentici no aveni, o datos de sesion es perdeda. Per favore, comensa denova.",
+       "authmanager-authn-no-primary": "La identia furnida no ia pote es autenticida.",
+       "authmanager-authn-no-local-user": "La identia furnida no es asosiada con un usor de esta vici.",
+       "gotointerwiki-external": "Tu es a punto de parti de {{SITENAME}} per visita [[$2]], cual es un pajeria separada.\n\n'''[$1 Continua a $1]'''",
+       "undelete-cantedit": "Tu no pote desutrae esta paje car tu no es permeteda a edita esta paje.",
+       "undelete-cantcreate": "Tu no pote desutrae esta paje car no paje esiste con esta nom e tu no es permeteda a crea esta paje.",
+       "pagedata-title": "Datos de paje",
+       "pagedata-text": "Esta paje furni un interfas a datos de pajes. Per favore, furni la titulo de paje en la URL, usante la sintatica de supajes.\n* Negosia de contenida segue la xapo Accept de tua surfador. Esta vole dise ce la datos de paje va es furnida en la formato prefereda par tua surfador.",
+       "pagedata-not-acceptable": "No formato conveninte ia es trovada. Tipos MIME suportada: $1",
+       "pagedata-bad-title": "Titulo nonvalida: $1."
 }
index 663b23f..9d4e883 100644 (file)
        "listfiles_size": "Wielkość",
        "listfiles_description": "Opis",
        "listfiles_count": "Wersje",
-       "listfiles-show-all": "Uwzględnij starsze wersje zdjęć",
+       "listfiles-show-all": "Uwzględnij starsze wersje plików",
        "listfiles-latestversion": "Aktualna wersja",
        "listfiles-latestversion-yes": "Tak",
        "listfiles-latestversion-no": "Nie",
index d1c9de9..5097c2b 100644 (file)
        "parser-template-loop-warning": "Ciclo de predefinições detectado: [[$1]]",
        "template-loop-category": "Páginas com loops de predefinição",
        "template-loop-category-desc": "A página contém um loop de predefinição, ou seja, uma predefinição que se chama recursivamente.",
+       "template-loop-warning": "<strong>Aviso:</strong> Esta página chama [[:$1]] o que causa um ciclo infinito de predefinições (uma chamada recursiva sem término).",
        "parser-template-recursion-depth-warning": "O limite de profundidade de recursividade de predefinição foi ultrapassado ($1)",
        "language-converter-depth-warning": "O limite de profundidade do conversor de línguas excedeu a ($1)",
        "node-count-exceeded-category": "Páginas em que o total de nós é excedido",
        "timezoneregion-indian": "Oceano Índico",
        "timezoneregion-pacific": "Oceano Pacífico",
        "allowemail": "Permitir que outros usuários me enviem e-mails",
+       "email-blacklist-label": "Proibir que esses usuários me enviem e-mails:",
        "prefs-searchoptions": "Busca",
        "prefs-namespaces": "Espaços nominais",
        "default": "padrão",
        "rcfilters-watchlist-markseen-button": "Marque todas as mudanças como visto",
        "rcfilters-watchlist-edit-watchlist-button": "Edite sua lista de páginas vigiadas",
        "rcfilters-watchlist-showupdated": "As alterações nas páginas que você não visitou desde as mudanças ocorridas estão em <strong>negrito</strong>, com marcadores sólidos.",
+       "rcfilters-preference-label": "Ocultar a versão melhorada das Mudanças Recentes",
+       "rcfilters-preference-help": "Reverte o redesenho da interface de 2017 e todas as ferramentas adicionadas na altura e desde então.",
        "rcnotefrom": "Abaixo {{PLURAL:$5|é a mudança|são as mudanças}} desde <strong>$3, $4</strong> (up to <strong>$1</strong> shown).",
        "rclistfromreset": "Redefinir seleção da data",
        "rclistfrom": "Mostrar as novas alterações a partir das $2 de $3",
        "file-deleted-duplicate-notitle": "Um arquivo idêntico a este foi anteriormente excluído, e o título foi suprimido. Você deve comunicar com alguém capaz de visualizar dados suprimidos, para verificar a situação antes de enviá-lo novamente.",
        "uploadwarning": "Aviso de envio",
        "uploadwarning-text": "Modifique a descrição do arquivo abaixo e tente novamente.",
+       "uploadwarning-text-nostash": "Por favor, recarregue o arquivo, modifique a descrição abaixo e tente novamente.",
        "savefile": "Salvar arquivo",
        "uploaddisabled": "Envio de arquivos desativado.",
        "copyuploaddisabled": "O upload por URL encontra-se desativado.",
        "listfiles_size": "Tamanho",
        "listfiles_description": "Descrição",
        "listfiles_count": "Versões",
-       "listfiles-show-all": "Incluir versões antigas das imagens",
+       "listfiles-show-all": "Inclua versões antigas de arquivos",
        "listfiles-latestversion": "Versão atual",
        "listfiles-latestversion-yes": "Sim",
        "listfiles-latestversion-no": "Não",
        "sp-contributions-newonly": "Mostrar somente as criações de páginas",
        "sp-contributions-hideminor": "Ocultar edições menores",
        "sp-contributions-submit": "Pesquisar",
+       "sp-contributions-outofrange": "Não é possível mostrar nenhum resultado. A gama de endereços IP pedida é maior do que o limite /$1 do intervalo CIDR.",
        "whatlinkshere": "Páginas afluentes",
        "whatlinkshere-title": "Páginas que têm links para \"$1\"",
        "whatlinkshere-page": "Página:",
index 6749e35..107b547 100644 (file)
        "timezoneregion-indian": "Oceano Índico",
        "timezoneregion-pacific": "Oceano Pacífico",
        "allowemail": "Aceitar correio eletrónico de outros utilizadores",
+       "email-blacklist-label": "Proibir estes utilizadores de me enviarem correio eletrónico:",
        "prefs-searchoptions": "Pesquisa",
        "prefs-namespaces": "Domínios",
        "default": "padrão",
        "uploadbtn": "Carregar ficheiro",
        "reuploaddesc": "Cancelar o envio e voltar ao formulário de carregamento",
        "upload-tryagain": "Submeta a descrição do ficheiro modificado",
+       "upload-tryagain-nostash": "Enviar o ficheiro a recarregar e a descrição modificada",
        "uploadnologin": "Não autenticado",
        "uploadnologintext": "Tem de $1 para enviar ficheiros.",
        "upload_directory_missing": "O diretório de carregamento de ficheiros ($1) não existe e o servidor de Internet não conseguiu criá-lo.",
        "file-deleted-duplicate-notitle": "Um ficheiro idêntico já foi eliminado e o seu título suprimido. Devia pedir a alguém capaz de ver os dados dos ficheiros eliminados para verificar a situação antes de carregá-lo novamente.",
        "uploadwarning": "Aviso de envio",
        "uploadwarning-text": "Modifique a descrição do ficheiro abaixo e tente novamente, por favor.",
+       "uploadwarning-text-nostash": "Recarregue o ficheiro, modifique a descrição abaixo e tente novamente, por favor.",
        "savefile": "Gravar ficheiro",
        "uploaddisabled": "Carregamentos desativados",
        "copyuploaddisabled": "Carregamento por URL desativado.",
        "listfiles_size": "Tamanho",
        "listfiles_description": "Descrição",
        "listfiles_count": "Versões",
-       "listfiles-show-all": "Incluir versões antigas de imagens",
+       "listfiles-show-all": "Incluir as versões antigas dos ficheiros",
        "listfiles-latestversion": "Versão atual",
        "listfiles-latestversion-yes": "Sim",
        "listfiles-latestversion-no": "Não",
index 8ec53bf..0a6e91b 100644 (file)
        "prefs-editor": "Used in [[Special:Preferences]], tab \"Editing\" ({{int:prefs-editing}}).\n\n{{Identical|Editor}}",
        "prefs-preview": "Used in [[Special:Preferences]], tab \"Editing\".\n{{Identical|Preview}}",
        "prefs-advancedrc": "Used in [[Special:Preferences]], tab \"Recent changes\".\n{{Identical|Advanced options}}",
+       "prefs-opt-out": "Used in [[Special:Preferences]], tab \"Recent changes\".",
        "prefs-advancedrendering": "Used in [[Special:Preferences]], tab \"Appearence\".\n{{Identical|Advanced options}}",
        "prefs-advancedsearchoptions": "Used in [[Special:Preferences]], tab \"Search options\".\n{{Identical|Advanced options}}",
        "prefs-advancedwatchlist": "Used in [[Special:Preferences]], tab \"Watchlist\".\n{{Identical|Advanced options}}",
index 63e7f91..12889fb 100644 (file)
@@ -40,7 +40,7 @@
        "tog-watchlisthidebots": "نظر ۾ فھرست تان بوٽ جون ترميمون لڪايو",
        "tog-watchlisthideminor": "نظر ۾ فھرست تان معمولي ترميمون لڪايو",
        "tog-watchlisthideliu": "داخل ٿيل يوزرس جون ڪيل ترميمون نظر ۾ فھرست ۾ نہ ڏيکاريو",
-       "tog-watchlisthideanons": "Ù\86ظر Û¾ Ù\81ھرست ØªØ§Ù\86 Ø§Ú»Ú\84اتÙ\84 Ù\8aÙ\88زر جون ترميمون لڪايو",
+       "tog-watchlisthideanons": "Ù\86ظر Û¾ Ù\81ھرست ØªØ§Ù\86 Ø§Ú»Ú\84اتÙ\84 Ù\88اپرائÙ\8aÙ\86دÚ\99 جون ترميمون لڪايو",
        "tog-watchlisthidepatrolled": "نظر ۾ فھرست مان گشت ڪيل ترميمون لڪايو",
        "tog-watchlisthidecategorization": "صفحن جا زمرا لڪايو",
        "tog-ccmeonemails": "ٻين يوزرس ڏانھن منهنجي موڪليل برقٽپال جو پرت مون کي اماڻيو",
        "talk": "بحث",
        "views": "ڏيٺون",
        "toolbox": "اوزارَ",
-       "tool-link-userrights": "{{GENDER:$1|واھپ}} گروھ مٽايو",
-       "tool-link-userrights-readonly": "{{GENDER:$1|Ù\8aÙ\88زر}} گروھ ڏسو",
-       "tool-link-emailuser": "ھن {{GENDER:$1|واھپ}} ڏانھن برقٽپال موڪليو",
+       "tool-link-userrights": "{{GENDER:$1|واپرائيندڙ}} گروھ مَٽايو",
+       "tool-link-userrights-readonly": "{{GENDER:$1|Ù\88اپرائÙ\8aÙ\86دÚ\99}}Ù\86 Ø¬Ø§ گروھ ڏسو",
+       "tool-link-emailuser": "ھن {{GENDER:$1|واپرائيندڙ}} ڏانھن برقٽپال موڪليو",
        "imagepage": "فائيل صفحو ڏسو",
        "mediawikipage": "نياپي جو صفحو ڏسو",
        "templatepage": "سانچي جو صفحو ڏسو",
        "jumpto": "ڏانھن ٽپ ڏيو:",
        "jumptonavigation": "رھنمائي",
        "jumptosearch": "ڳولا",
-       "view-pool-error": "Ù\85عذرت Ø³Ø§Ù\86 Ø³Ø±Ù\88ر Ù\87اڻÙ\8a ØªÙ\85اÙ\85 Ú¯Ú¾Ú»Ù\88 Ø³Ù\8fÚª Ø¢Ù\87Ù\8a.\nتÙ\85اÙ\85 Ú¯Ú¾Ú»Ø§ Ù\8aÙ\88زر ھن صفحي کي ڏسڻ جي ڪوشش ڪري رھيا آھن.\nمهرباني ڪري ٿورو ترسو انکان اڳ جو توھان ھن صفحي تائين رسڻ لاءِ ٻيھر ڪوشش ڪريو.\n\n$1",
-       "generic-pool-error": "Ù\85عذرت Ø³Ø§Ù\86 Ø³Ø±Ù\88ر Ù\87اڻÙ\8a ØªÙ\85اÙ\85 Ú¯Ú¾Ú»Ù\88 Ø³Ù\8fÚª Ø¢Ù\87Ù\8a.\nتÙ\85اÙ\85 Ú¯Ú¾Ú»Ø§ Ù\8aÙ\88زر هتي موجود آهن.\nمهرباني ڪري ٿورو ترسي پوءِ ڪوشش ڪريو.",
+       "view-pool-error": "Ù\85عذرت Ø³Ø§Ù\86 Ø³Ø±Ù\88ر Ù\87اڻÙ\8a ØªÙ\85اÙ\85 Ú¯Ú¾Ú»Ù\88 Ø³Ù\8fÚª Ø¢Ù\87Ù\8a.\nتÙ\85اÙ\85 Ú¯Ú¾Ú»Ø§ Ù\88اپرائÙ\8aÙ\86دÚ\99 ھن صفحي کي ڏسڻ جي ڪوشش ڪري رھيا آھن.\nمهرباني ڪري ٿورو ترسو انکان اڳ جو توھان ھن صفحي تائين رسڻ لاءِ ٻيھر ڪوشش ڪريو.\n\n$1",
+       "generic-pool-error": "Ù\85عذرت Ø³Ø§Ù\86 Ø³Ø±Ù\88ر Ù\87اڻÙ\8a ØªÙ\85اÙ\85 Ú¯Ú¾Ú»Ù\88 Ø³Ù\8fÚª Ø¢Ù\87Ù\8a.\nتÙ\85اÙ\85 Ú¯Ú¾Ú»Ø§ Ù\88اپرائÙ\8aÙ\86دÚ\99Ù\8e هتي موجود آهن.\nمهرباني ڪري ٿورو ترسي پوءِ ڪوشش ڪريو.",
        "pool-errorunknown": "اڻڄاتل چُڪَ",
        "poolcounter-usage-error": "استعمال جي خرابي: $1",
        "aboutsite": "{{SITENAME}} بابت",
        "sort-descending": "لهندڙ ترتيب ڏيو",
        "sort-ascending": "چڙهندڙ ترتيب ڏيو",
        "nstab-main": "صفحو",
-       "nstab-user": "واھپ صفحو",
+       "nstab-user": "واپرائيندڙ جو صفحو",
        "nstab-media": "ذريعاتي صفحو",
        "nstab-special": "خاص صفحو",
        "nstab-project": "رٿائي صفحو",
        "cannotlogoutnow-title": "ھاڻي خارج نٿو ٿي سگھجي",
        "cannotlogoutnow-text": "$1 استعمال ڪرڻ دوران خارج ٿيڻ ممڪن نہ آھي.",
        "welcomeuser": "ڀلي ڪري آيا، $1!",
-       "yourname": "واھپ-نانءُ:",
-       "userlogin-yourname": "واھپ-نانءُ",
+       "yourname": "واپرائيندڙ-نانءُ:",
+       "userlogin-yourname": "واپرائيندڙ-نانءُ",
        "userlogin-yourname-ph": "پنھنجو يوزرنانءُ ڄاڻايو",
-       "createacct-another-username-ph": "واھپ-نانءُ ڄاڻايو",
+       "createacct-another-username-ph": "واپرائيندڙ-نانءُ ڄاڻايو",
        "yourpassword": "ڳجھولفظ:",
        "userlogin-yourpassword": "ڳجھولفظ",
        "userlogin-yourpassword-ph": "پنهنجو ڳجھولفظ ڄاڻايو",
        "createacct-benefit-body2": "{{PLURAL:$1|صفحو|صفحا}}",
        "createacct-benefit-body3": "ھاڻوڪا {{PLURAL:$1|ڀاڱيدار}}",
        "badretype": "توهان جو ڄاڻايل ڳجھولفظ درست نہ آهي.",
-       "usernameinprogress": "ان واھپ-نانءَ لاءِ کاتو اڳ ۾ ئي تياريءَ هيٺ آهي.\nمهرباني ڪري انتظار فرمايو.",
-       "userexists": "ڄاڻايل واھپ-نانءُ اڳ ۾ ئي استعمال هيٺ آهي. مهرباني ڪري ڪو ٻيو واھپ-نانءُ چونڊيو.",
+       "usernameinprogress": "ان واپرائيندڙ-نانءَ لاءِ کاتو اڳ ۾ ئي تياريءَ هيٺ آهي.\nمهرباني ڪري انتظار فرمايو.",
+       "userexists": "ڄاڻايل واپرائيندڙ-نانءُ اڳ ۾ ئي استعمال هيٺ آهي.\nمهرباني ڪري ڪو ٻيو واپرائيندڙ-نانءُ چونڊيو.",
        "loginerror": "داخل ٿيڻ ۾ چُڪَ",
        "createacct-error": "کاتو کولڻ ۾ چُڪَ",
        "createaccounterror": "کاتو کُلي نہ سگھيو: $1",
-       "nocookiesnew": "Ù\8aÙ\8fÙ\88زر Ú©Ø§ØªÙ\88 Ú©Ù\84Ù\8a Ú\86ÚªÙ\88Ø\8c Ù¾Ø± ØªÙ\88Ù\87اÙ\86 Ø¯Ø§Ø®Ù\84 Ù\86Û\81 Ù¿Ù\8aا Ø¢Ù\87Ù\8aÙ\88. Ù\8aÙ\8fÙ\88زرس کي داخل ڪرڻ لاءِ {{SITENAME}} ڪوڪيز استعمال ڪندي آهي. توهان ڪوڪيز کي ناڪاره بڻائي رکيو آهي. داخل ٿيڻ لاءِ ڪوڪيز کي ڪارائتو بڻايو.",
+       "nocookiesnew": "Ù\88اپرائÙ\8aÙ\86دÚ\99 Ú©Ø§ØªÙ\88 Ú©Ù\84Ù\8a Ú\86ÚªÙ\88Ø\8c Ù¾Ø± ØªÙ\88Ù\87اÙ\86 Ø¯Ø§Ø®Ù\84 Ù\86Û\81 Ù¿Ù\8aا Ø¢Ù\87Ù\8aÙ\88. Ù\88اپرائÙ\8aÙ\86دÚ\99 کي داخل ڪرڻ لاءِ {{SITENAME}} ڪوڪيز استعمال ڪندي آهي. توهان ڪوڪيز کي ناڪاره بڻائي رکيو آهي. داخل ٿيڻ لاءِ ڪوڪيز کي ڪارائتو بڻايو.",
        "nocookieslogin": "يُوزرس کي داخل ڪرڻ لاءِ {{SITENAME}} ڪوڪيز استعمال ڪندي آهي.\nتوھان ڪوڪيز کي ناڪاره بڻائي رکيو آھي.\nداخل ٿيڻ لاءِ ڪوڪيز کي ڪارائتو بڻايو.",
-       "noname": "توهان جو ڄاڻايل واھپ-نانءُ ناقابل ڪار آهي.",
+       "noname": "توهان جو ڄاڻايل واپرائيندڙ-نانءُ ناقابل ڪار آهي.",
        "loginsuccesstitle": "داخل ٿيل",
        "loginsuccess": "'''هاڻي توهان {{SITENAME}} تي بطور \"$1\" داخل ٿيل آهيو.'''",
-       "nosuchuser": "\"$1\" Ù\86اÙ\84Ù\8a Ø³Ø§Ù\86 ÚªÙ\88 Ø¨Û\81 Ù\8aÙ\88زر Ù\86Û\81 Ø¢Ù\87Ù\8a.\nÙ\86Ù\86Ú\8dÙ\86 Ù\88Ú\8fÙ\86 Ø§Ú©Ø±Ù\86 Û¾ Ø§Ù\85تÙ\8aاز ÚªØ±Ú» Ù\84ازÙ\85Ù\8a Ø¢Ù\87Ù\8a. \nÙ\87Ù\90جÙ\8a Ú\86ڪاسÙ\8aÙ\88Ø\8c Ù\8aا [[Special:CreateAccount|Ù\86ئÙ\88Ù\86 Ú©Ø§ØªÙ\88 ØªØ®Ù\84Ù\8aÙ\82 ÚªØ±Ù\8aÙ\88]]",
-       "nosuchusershort": "\"$1\" نالي ڪو بہ واھپ ناهي.\nهِجي جي پڪ ڪندا.",
-       "nouserspecified": "توهان کي ڪو واھپ-نان‎ءُ ڄاڻائڻو پوندو.",
-       "login-userblocked": "Ù\87Ù\8aØ¡Ù\8f Ù\8aÙ\8fÙ\88زر بندشيل آهي. داخل ٿيڻ جي اجازت نٿي ڏجي.",
+       "nosuchuser": "\"$1\" Ù\86اÙ\84Ù\8a Ø³Ø§Ù\86 ÚªÙ\88 Ø¨Û\81 Ù\88اپرائÙ\8aÙ\86دÚ\99 Ù\86Û\81 Ø¢Ù\87Ù\8a.\nÙ\86Ù\86Ú\8dÙ\86 Ù\88Ú\8fÙ\86 Ø§Ú©Ø±Ù\86 Û¾ Ø§Ù\85تÙ\8aاز ÚªØ±Ú» Ù\84ازÙ\85Ù\8a Ø¢Ù\87Ù\8a. \nÙ\87Ù\90جÙ\8a Ú\86ڪاسÙ\8aÙ\88Ø\8c Ù\8aا [[Special:CreateAccount|Ù\86ئÙ\88Ù\86 Ú©Ø§ØªÙ\88 ØªØ®Ù\84Ù\8aÙ\82 ÚªØ±Ù\8aÙ\88]].",
+       "nosuchusershort": "\"$1\" نالي ڪو بہ واپرائيندڙ ناهي.\nپنھنجي هِجي جي پڪ ڪندا.",
+       "nouserspecified": "توهان کي ڪو واپرائيندڙ-نان‎ءُ ڄاڻائڻو پوندو.",
+       "login-userblocked": "Ù\87Ù\8aØ¡Ù\8f Ù\88اپرائÙ\8aÙ\86دÚ\99 بندشيل آهي. داخل ٿيڻ جي اجازت نٿي ڏجي.",
        "wrongpassword": "ڏنل ڳجھولفظ غير درست آهي. مھرباني ڪري ٻيھر ڪوشش ڪندا.",
        "wrongpasswordempty": "ڏنل ڳجھولفظ خالي هو.\nمهرباني ڪري وري ڪوشش ڪندا.",
        "passwordtooshort": "ڳجھولفظ گھٽ ۾ گھٽ  {{PLURAL:$1|1 اکر|$1 اکرَن}} تي ٻڌل هوڻ گھرجي.",
        "password-name-match": "توهان جو ڳجھولفظ توهان جي يوزرنانءُ کان مختلف هجڻ گھرجي.",
        "mailmypassword": "ڳجھولفظ ٻيھر مقرر ڪريو",
        "passwordremindertitle": "{{SITENAME}} لاءِ نئون عارضي ڳجھولفظ",
-       "passwordremindertext": "ÚªÙ\86Ú¾Ù\86 (شاÙ\8aد ØªÙ\88ھاÙ\86 Ø¢Ø¡Ù\90Ù¾Ù\8a Ù¾ØªÙ\8a $1 ØªØ§Ù\86) Ø§Ø³Ø§Ù\86 Ú©Ù\8a {{SITENAME}} ($4) Ù\84اءÙ\90 Ù\86ئÙ\88Ù\86 Ú³Ø¬Ú¾Ù\88Ù\84Ù\81ظ Ø§Ù\85اڻڻ Ø¬Ù\8a Ú¯Ù\8fھرÙ\8e ÚªØ¦Ù\8a.\"$2\" Ù\8aÙ\88زر لاءِ ھڪ ڳجھولفظ تخليق ڪيو ويو آهي \"$3\" تي ترتيب ڏنو ويو ھو. جيڪڏھن اھو توھان جو ارادو ھيو، تہ ھاڻي توھان کي ھينئر ئي داخل ٿي پنھنجو ڳجھولفظ تبديل ڪرڻ گھرجي.\nتوھان جو عارضي ڳجھولفظ {{PLURAL:$5|هڪ ڏينھُن|$5 ڏينھَن}} ۾ ختم ٿيندو.\n\nجيڪڏھن اھا گُھرَ اوھان نہ ڪئي ھئي، يا ھاڻي اوھان کي پنھنجو ڳجھولفظ ياد اچي ويو آھي ۽ توھان ان کي تبديل ڪرڻ نٿا چاھيو، تہ توھان ھن نياپي کي نظر انداز ڪندي پنھنجو پراڻو ڳجھولفظ ئي استعمال ڪري سگھو ٿا.",
-       "noemail": "Ù\8aÙ\8fÙ\88زر \"$1\" Ø¬Ù\8a ڪو بہ برقٽپال پتو درج ٿيل ناهي.",
+       "passwordremindertext": "ÚªÙ\86Ú¾Ù\86 (شاÙ\8aد ØªÙ\88ھاÙ\86 Ø¢Ø¡Ù\90Ù¾Ù\8a Ù¾ØªÙ\8a $1 ØªØ§Ù\86) Ø§Ø³Ø§Ù\86 Ú©Ù\8a {{SITENAME}} ($4) Ù\84اءÙ\90 Ù\86ئÙ\88Ù\86 Ú³Ø¬Ú¾Ù\88Ù\84Ù\81ظ Ø§Ù\85اڻڻ Ø¬Ù\8a Ú¯Ù\8fھرÙ\8e ÚªØ¦Ù\8a.\"$2\" Ù\88اپرائÙ\8aÙ\86دÚ\99 لاءِ ھڪ ڳجھولفظ تخليق ڪيو ويو آهي \"$3\" تي ترتيب ڏنو ويو ھو. جيڪڏھن اھو توھان جو ارادو ھيو، تہ ھاڻي توھان کي ھينئر ئي داخل ٿي پنھنجو ڳجھولفظ تبديل ڪرڻ گھرجي.\nتوھان جو عارضي ڳجھولفظ {{PLURAL:$5|هڪ ڏينھُن|$5 ڏينھَن}} ۾ ختم ٿيندو.\n\nجيڪڏھن اھا گُھرَ اوھان نہ ڪئي ھئي، يا ھاڻي اوھان کي پنھنجو ڳجھولفظ ياد اچي ويو آھي ۽ توھان ان کي تبديل ڪرڻ نٿا چاھيو، تہ توھان ھن نياپي کي نظر انداز ڪندي پنھنجو پراڻو ڳجھولفظ ئي استعمال ڪري سگھو ٿا.",
+       "noemail": "Ù\88اپرائÙ\8aÙ\86دÚ\99 \"$1\" Ø¬Ù\88 ڪو بہ برقٽپال پتو درج ٿيل ناهي.",
        "noemailcreate": "توھان کي قابلڪار برقٽپال پتو مھيا ڪرڻو پوندو.",
-       "passwordsent": "Ù\8aÙ\88زر \"$1\" Ù\84اءÙ\90 Ú¾Úª Ù\86ئÙ\88Ù\86 Ú³Ø¬Ú¾Ù\88Ù\84Ù\81ظ Ø¨Ø±Ù\82ٽپاÙ\84 Ø°Ø±Ù\8aعÙ\8a Ø§Ù\85اڻÙ\8aÙ\88 Ù\88Ù\8aÙ\88 Ø¢Ù\87Ù\8a.  مھرباني ڪري اھو حاصل ڪرڻ بعد داخل ٿيندا.",
+       "passwordsent": "Ù\88اپرائÙ\8aÙ\86دÚ\99 \"$1\" Ù\84اءÙ\90 Ú¾Úª Ù\86ئÙ\88Ù\86 Ú³Ø¬Ú¾Ù\88Ù\84Ù\81ظ Ø¨Ø±Ù\82ٽپاÙ\84 Ø°Ø±Ù\8aعÙ\8a Ø§Ù\85اڻÙ\8aÙ\88 Ù\88Ù\8aÙ\88 Ø¢Ù\87Ù\8a.\nمھرباني ڪري اھو حاصل ڪرڻ بعد داخل ٿيندا.",
        "mailerror": "ٽپال اماڻڻ ۾ چُڪَ: $1",
        "acct_creation_throttle_hit": "توهان جي آءِپي پتي تان هن وڪيءَ تي پوئين $2، کان {{PLURAL:$1|1 کاتو|$1 کاتا}} کلي چڪا آهن، جيڪو وڌ ۾ وڌ اجازت ڏنل وقت آهي. \nنتيجتاً ساڳي آءِپي پتي تان في‌الوقت وڌيڪ کاتا کولي نٿا سگھجن.",
        "emailauthenticated": "توھان جي برقٽپال پتي جي تصديق $2 تي $3 بجي ڪئي وئي.",
        "cannotchangeemail": "هن وڪيءَ تي کاتيدار جو برقٽپال پتو بدلائي نہ ٿو سگھجي.",
        "emaildisabled": "هيءَ سرزمين برقٽپال اماڻي نہ ٿي سگھي.",
        "accountcreated": "کاتو کلي چڪو",
-       "accountcreatedtext": "Ù\8aÙ\88زر Ú©Ø§ØªÙ\88 [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) جي لاءِ تخليق ٿي چڪو آهي.",
+       "accountcreatedtext": "Ù\88اپرائÙ\8aÙ\86دÚ\99 Ú©Ø§ØªÙ\88 Ø¨Ø±Ø§Ø¡Ù\90 [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|بحث]]) جي لاءِ تخليق ٿي چڪو آهي.",
        "createaccount-title": "{{SITENAME}} تي کاتو کولڻ",
        "login-throttled": "توهان تازو ئي داخل ٿيڻ جون هيڪانديون گھڻيون ڪوششون ڪيون آهن. مهرباني ڪري $1 لاءِ ترسي پوءِ وري ڪوشش ڪريو.",
        "login-abort-generic": "توهان جو داخل ٿيڻ ناڪام ويو - بند ڪيل",
-       "login-migrated-generic": "توهان جو کاتو لڏي چڪو آهي، ۽ هن وڪيءَ تي توهان جو واھپ-نان‎ءُ هاڻي وجود نٿو رکي.",
+       "login-migrated-generic": "توهان جو کاتو لڏي چڪو آهي، ۽ هن وڪيءَ تي توهان جو واپرائيندڙ-نان‎ءُ هاڻي وجود نٿو رکي.",
        "loginlanguagelabel": "ٻولي: $1",
        "createacct-another-realname-tip": "اصل نالو ڄاڻائڻ اختياري آهي. جيڪڏهن توهان اصل نالو ڄاڻايو ٿا، تہ اهو توهان کي توهان جي ڪم جي مڃتا ڏيڻ لاءِ ڪم آندو ويندو.",
        "pt-login": "داخل ٿيو",
        "passwordreset-text-one": "برقٽپال ذريعي عارضي ڳجھولفظ حاصل ڪرڻ لاءِ هيءُ فارم پُر ڪريو.",
        "passwordreset-disabled": "هن وڪيءَ تي ڳجھولفظ ٻيھر مقرر ڪرڻ وارو چارو غير فعال بڻايو ويو آهي.",
        "passwordreset-emaildisabled": "هن وڪيءَ تي برق‌ٽپال واريون خصوصيتون غير فعال بڻايون ويون آهن.",
-       "passwordreset-username": "واھپ-نانءُ:",
+       "passwordreset-username": "واپرائيندڙ-نانءُ:",
        "passwordreset-domain": "ميدان:",
        "passwordreset-email": "برقٽپال پتو:",
        "passwordreset-emailtitle": "{{SITENAME}} واري کاتي جا تفصيل",
        "missingcommenttext": "براءِ مھرباني هيٺ پنهنجو تاثر درج ڪندا.",
        "summary-preview": "تت جي پيش نگاھ:",
        "subject-preview": "موضوع جي پيش نگاھ:",
-       "blockedtitle": "واھپ بندشيل آهي.",
-       "blockedtext": "'''تÙ\88ھاÙ\86 Ø¬Ù\8a Ù\8aÙ\88زرÙ\86اÙ\86Ø¡Ù\8f Ù\8aا Ø¢Ø¡Ù\90 Ù¾Ù\8a Ú©Ù\8a Ø¨Ù\86دشÙ\8aÙ\88 Ù\88Ù\8aÙ\88 Ø¢Ú¾Ù\8a.'''\n\nبÙ\86دش $1 Ú¾Ù\86Ù\8a. Ø¬Ú\8fÚ¾Ù\86 ØªÛ\81 Ú\84اڻاÙ\8aÙ\84 Ø³Ø¨Ø¨ ''$2'' Ø¢Ù\87Ù\8a.\n\n\n* Ø¨Ù\86دش Ø¬Ù\88 Ø¢ØºØ§Ø²: $8\n* Ø¨Ù\86دش Ø¬Ù\88 Ø§Ù\86جاÙ\85: $6\n* Ø¨Ù\86دش Ø¬Ù\88 Ù\87دÙ\81: $7\n\nاھÚ\99Ù\8a Ø±Ù\88Úª ØªÙ\8a Ø¨Ø­Ø« ÚªØ±Ú» Ù\84اءÙ\90 ØªÙ\88ھاÙ\86 $1 Ù\8aا ÚªÙ\86Ú¾Ù\86 Ù»Ù\8a [[{{MediaWiki:Grouppage-sysop}}|Ù\85Ù\86تظÙ\85]] Ø³Ø§Ù\86 Ø±Ø§Ø¨Ø·Ù\88 ÚªØ±Ù\8a Ø³Ú¯Ú¾Ù\88 Ù¿Ø§. Ø¬Ù\8aÚªÚ\8fÙ\87Ù\86 ØªÙ\88ھاÙ\86 Ø¬Ù\88 Ø¯Ø±Ø³Øª [[Special:ترجÙ\8aØ­Ù\88Ù\86|کاتÙ\88 ØªØ±Ø¬Ù\8aØ­Ù\88Ù\86]] Û¾ Ø¯Ø±Ø³Øª Ø¨Ø±Ù\82ٽپاÙ\84 Ù¾ØªÙ\88 Ø¯Ø±Ø¬ Ù¿Ù\8aÙ\84 Ù\86Û\81 Ø¢Ù\87Ù\8a ØªÛ\81 ØªÙ\88Ù\87اÙ\86 'Ù\87Ù\86 Ù\8aÙ\88زر Ú©Ù\8a Ø¨Ø±Ù\82ٽپاÙ\84 ÚªØ±Ù\8aÙ\88' Ù\88ارÙ\88 Ù\81Ù\8aÚ\86ر Ù\86Û\81 Ù¿Ø§ \nYou cannot use the 'e-mail this user' feature unless a valid e-mail address is specified in your [[Special:Preferences|account preferences]] and you have not been blocked from using it.\nاستعÙ\85اÙ\84 ÚªØ±Ù\8a Ø³Ú¯Ú¾Ù\88. ØªÙ\88ھاÙ\86 Ø¬Ù\88 Ú¾Ø§Ú»Ù\88ÚªÙ\88 Ø¢Ø¡Ù\90Ù¾Ù\8a Ù¾ØªÙ\88 $3 Ø¢Ú¾Ù\8aØ\8c Û½ Ø¨Ù\86دش Ø³Ú\83اڻپ $5 Ø¢Ù\87Ù\8a. Ù\85ھرباÙ\86Ù\8a ÚªØ±Ù\8a ÚªÙ\86Ú¾Ù\86 Ø¨Û\81 Ù¾Ú\87ا Ú³Ø§Ú\87ا Ù\8aا Ù\84Ú¾Ù\88Ú\86Ú\99 لاءِ انھن مان ڪنھن ھڪ يا ٻنھي جو حوالو ڏيندا.",
+       "blockedtitle": "واپرائيندڙ بندشيل آهي",
+       "blockedtext": "'''تÙ\88ھاÙ\86 Ø¬Ù\8a Ù\88اپرائÙ\8aÙ\86دÚ\99\86اÙ\86Ø¡Ù\8f Ù\8aا Ø¢Ø¡Ù\90 Ù¾Ù\8a Ú©Ù\8a Ø¨Ù\86دشÙ\8aÙ\88 Ù\88Ù\8aÙ\88 Ø¢Ú¾Ù\8a.'''\n\nبÙ\86دش $1 Ú¾Ù\86ئÙ\8a. Ø¬Ú\8fÚ¾Ù\86 ØªÛ\81 Ú\84اڻاÙ\8aÙ\84 Ø³Ø¨Ø¨ ''$2'' Ø¢Ù\87Ù\8a.\n\n\n* Ø¨Ù\86دش Ø¬Ù\88 Ø¢ØºØ§Ø²: $8\n* Ø¨Ù\86دش Ø¬Ù\88 Ø§Ù\86جاÙ\85: $6\n* Ø¨Ù\86دش Ø¬Ù\88 Ù\87دÙ\81: $7\n\nاھÚ\99Ù\8a Ø±Ù\88Úª ØªÙ\8a Ø¨Ø­Ø« ÚªØ±Ú» Ù\84اءÙ\90 ØªÙ\88ھاÙ\86 $1 Ù\8aا ÚªÙ\86Ú¾Ù\86 Ù»Ù\8a [[{{MediaWiki:Grouppage-sysop}}|Ù\85Ù\86تظÙ\85]] Ø³Ø§Ù\86 Ø±Ø§Ø¨Ø·Ù\88 ÚªØ±Ù\8a Ø³Ú¯Ú¾Ù\88 Ù¿Ø§. Ø¬Ù\8aÚªÚ\8fÙ\87Ù\86 ØªÙ\88ھاÙ\86 Ø¬Ù\88 Ø¯Ø±Ø³Øª [[Special:Preferences|کاتÙ\8a Ø¬Ù\8a ØªØ±Ø¬Ù\8aØ­Ù\86]] Û¾ Ø¯Ø±Ø³Øª Ø¨Ø±Ù\82ٽپاÙ\84 Ù¾ØªÙ\88 Ø¯Ø±Ø¬ Ù¿Ù\8aÙ\84 Ù\86Û\81 Ø¢Ù\87Ù\8a ØªÛ\81 ØªÙ\88Ù\87اÙ\86 'Ù\87Ù\86 Ù\88اپرائÙ\8aÙ\86دÚ\99 Ú©Ù\8a Ø¨Ø±Ù\82ٽپاÙ\84 ÚªØ±Ù\8aÙ\88' Ù\88ارÙ\88 Ù\81Ù\8aÚ\86ر Ù\86Û\81 Ù¿Ø§ \nاستعÙ\85اÙ\84 ÚªØ±Ù\8a Ø³Ú¯Ú¾Ù\88. ØªÙ\88ھاÙ\86 Ø¬Ù\88 Ú¾Ø§Ú»Ù\88ÚªÙ\88 Ø¢Ø¡Ù\90Ù¾Ù\8a Ù¾ØªÙ\88 $3 Ø¢Ú¾Ù\8aØ\8c Û½ Ø¨Ù\86دش Ø³Ú\83اڻپ $5 Ø¢Ù\87Ù\8a. Ù\85ھرباÙ\86Ù\8a ÚªØ±Ù\8a ÚªÙ\86Ú¾Ù\86 Ø¨Û\81 Ù¾Ú\87ا Ú³Ø§Ú\87ا Ù\8aا Ù\84Ú¾ Ù\88 Ú\86Ú\99Ú¾ لاءِ انھن مان ڪنھن ھڪ يا ٻنھي جو حوالو ڏيندا.",
        "blockednoreason": "سبب اڻڄاڻايل",
        "whitelistedittext": "صفحا سنوارڻ لاءِ مھرباني ڪري $1.",
-       "confirmedittext": "صفحا سنوارڻ کان اڳ توھان کي پنھنجي برقٽپال پتي جي تصديق ڪرڻي پوندي. مھرباني ڪري [[Special:Preferences|يوزر ترجيحن]] ذريعي پنھنجو برقٽپال پتو ڄاڻايو ۽ تصديقيو.",
+       "confirmedittext": "صفحا سنوارڻ کان اڳ توھان کي پنھنجي برقٽپال پتي جي تصديق ڪرڻي پوندي.\nمھرباني ڪري [[Special:Preferences|واپرائيندڙ جي ترجيحن]] ذريعي پنھنجو برقٽپال پتو ڄاڻايو ۽ تصديقيو.",
        "nosuchsectiontitle": "سيڪشن نٿو لھي سگھي",
        "loginreqtitle": "داخل ٿيڻ گھربل آهي",
        "loginreqlink": "داخل ٿيو",
        "newarticletext": "توھان اھڙي صفحي جو ڳنڍڻو وٺي ھتي پھتا آھيو، جيڪو اڃا وجود نٿو رکي.\nاھڙو صفحو جوڙڻ لاءِ، ھيٺين دٻي ۾ لکڻ شروع ڪريو (وڌيڪ ڄاڻڻ لاءِ [$1 امدادي صفحو] ڏسندا).\nجي توھان ھتي غلطيءَ ۾ اچي ويا آهيو، تہ رڳو پنھنجي جھانگُوءَ جي <strong>back</strong> بٽڻ تي ٽڙڪ ڪريو.",
        "noarticletext": "في‌الوقت هن صفحي اندر ڪو بہ ٽيڪسٽ نہ آهي.\nتوهان ٻين صفحن ۾ [[Special:Search/{{PAGENAME}}|search ساڳي عنوان جي ڳولا]] ڪري سگھو ٿا،  \n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} لاڳاپيل لاگس ۾ ڳوليو]،\nيا [{{fullurl:{{FULLPAGENAME}}|action=edit}} هيءُ صفحو ترميميو]</span>.",
        "noarticletext-nopermission": "ھن وقت ھن صفحي ۾  ڪا بہ لکت نہ آھي.\nتوھان ٻين صفحن ۾ [[Special:Search/{{PAGENAME}}|ھن صفحي جي عنوان سان ڳولا ڪري سگھو ٿا]]، يا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} لاڳاپيل لاگس ڳوليو]</span>، پر توھان کي ان جي تخليق ڪرڻ جي اجازت نہ آھي.",
-       "userpage-userdoesnotexist-view": "واھپ کاتو $1 درج ٿيل نہ آهي.",
-       "blocked-notice-logextract": "هيءُ واھپ في‌الحال بندشيل آهي.\nتازو بندش لاگ حوالي طور پيش ڪجي ٿو:",
+       "userpage-userdoesnotexist-view": "واپرائيندڙ کاتو $1 درج ٿيل نہ آهي.",
+       "blocked-notice-logextract": "هيءُ واپرائيندڙ في‌الحال بندشيل آهي.\nتازو بندش لاگ حوالي طور پيش ڪجي ٿو:",
        "updated": "(تجديديل)",
        "note": "<strong>نوٽ:</strong>",
        "previewnote": "<strong>هيءَ فقط پيش نگاھ آهي.</strong>\nتوھان جون ترميمون اڃان نہ سانڍيون ويون آھن!",
        "history-feed-description": "وڪي جي هن صفحي جي ترميمي سوانح",
        "history-feed-item-nocomment": "$2 تي $1",
        "rev-deleted-comment": "(ترميمي خلاصو ھٽايل)",
-       "rev-deleted-user": "(واھپ-نانءُ ڊاٿو ويو)",
+       "rev-deleted-user": "(واپرائيندڙ-نانءُ ڊاٿو ويو)",
        "rev-deleted-event": "(لاگ تفصيل هٽايا ويا)",
-       "rev-deleted-user-contribs": "[واھپ-نانءُ يا آءِپِي پتو مِٽايو ويو - ڀاڱيدارين مان ترميمون لڪايون ويون]",
+       "rev-deleted-user-contribs": "[واپرائيندڙ-نانءُ يا آءِپِي پتو مِٽايو ويو - ڀاڱيدارين مان ترميمون لڪايون ويون]",
        "rev-suppressed-no-diff": "توهان اهو تفاوت ڏسي نہ ٿا سگھو، ڇاڪاڻ تہ ڪا هڪ ترميم <strong> ڊهي چڪي </strong> آهي.",
        "rev-delundel": "نمائش تبديل ڪريو",
        "rev-showdeleted": "ڏيکاريو",
        "revdelete-hide-image": "فائيل جو مواد لڪايو",
        "revdelete-hide-name": "هدف ۽ نيمپيما لڪايو",
        "revdelete-hide-comment": "ترميم جو تتُ",
-       "revdelete-hide-user": "ايڊيٽر جو واھپ-نانءُ/آءِپِي پتو",
+       "revdelete-hide-user": "ايڊيٽر جو واپرائيندڙ-نانءُ/آءِپِي پتو",
        "revdelete-hide-restricted": "منتظمن توڙي ٻين کان مليل اعداد دٻايو",
        "revdelete-radio-same": "(نہ بدلايو)",
        "revdelete-radio-set": "لڪل",
        "prefs-skin": "چَمَ",
        "skin-preview": "پيش نگاهہ",
        "datedefault": "بلا ترجيح",
-       "prefs-user-pages": "واھپ صفحو",
-       "prefs-personal": "Ù\8aÙ\8fÙ\88زر جو خدوخال",
+       "prefs-user-pages": "واپرائيندڙن جا صفحا",
+       "prefs-personal": "Ù\88اپرائÙ\8aÙ\86دÚ\99 جو خدوخال",
        "prefs-rc": "تازيون تبديليون",
        "prefs-watchlist": "نظر ۾ فھرست",
        "prefs-editwatchlist": "نظر ۾ فھرست کي سنواريو",
        "recentchangescount": "عدم پيروي جي صورت ۾ ڏيکارڻ جي لاءِ ترميمون:",
        "prefs-help-recentchangescount": "ان ۾ تازيون تبديليون، صفحن جي سوانح، ۽ لاگ شامل آهن.",
        "savedprefs": "توھان جون ترجيحون سانڍجي چڪيون آھن.",
-       "savedrights": "{{GENDER:$1|$1}} Ø¬Ø§ Ù\8aÙ\88زر گروھ سانڍجي چڪا آھن.",
+       "savedrights": "{{GENDER:$1|$1}} Ø¬Ø§ Ù\88اپرائÙ\8aÙ\86دÚ\99 گروھ سانڍجي چڪا آھن.",
        "timezonelegend": "اوقاتي زون:",
        "localtime": "مقامي وقت:",
        "timezoneuseserverdefault": "وڪي عدم پيروي استعمال ڪريو ($1)",
        "prefs-files": "فائيلس",
        "prefs-emailconfirm-label": "برقٽپال خاطري:",
        "youremail": "برقٽپال:",
-       "username": "{{GENDER:$1|واھپ-نانءُ}}",
+       "username": "{{GENDER:$1|واپرائيندڙ-نانءُ}}",
        "prefs-memberingroups": "{{PLURAL:$1|گروھ|گروھن}} جو {{GENDER:$2|رڪن}}:",
        "prefs-registration": "رجسٽريشن جو وقت:",
        "yourrealname": "اصل نالو:",
        "prefs-tokenwatchlist": "ٽوڪن",
        "prefs-diffs": "تفاوت",
        "prefs-help-prefershttps": "هيءَ ترجيح توهان جي ايند داخل ٿيڻ تي عمل ۾ ايندي.",
-       "userrights": "واھپ حق",
-       "userrights-lookup-user": "ڪو واھپ چونڊيو",
-       "userrights-user-editname": "ڪو واھپ-نانءُ ڄاڻايو:",
-       "editusergroup": "واھپ گروھ اتاريو",
-       "userrights-editusergroup": "{{GENDER:$1|Ù\8aÙ\88زر}} گروھ سنواريو",
-       "saveusergroups": "{{GENDER:$1|واھپ}} گروھ سانڍيو",
+       "userrights": "واپرائيندڙ جا حق",
+       "userrights-lookup-user": "ڪو واپرائيندڙ چونڊيو",
+       "userrights-user-editname": "ڪو واپرائيندڙ-نانءُ ڄاڻايو:",
+       "editusergroup": "واپرائيندڙ جا گروھ لاهيو",
+       "userrights-editusergroup": "{{GENDER:$1|Ù\88اپرائÙ\8aÙ\86دÚ\99}} گروھ سنواريو",
+       "saveusergroups": "{{GENDER:$1|واپرائيندڙ}} گروھ سانڍيو",
        "userrights-groupsmember": "برڪن:",
        "userrights-groupsmember-auto": "رڪن واجبي:",
        "userrights-reason": "سبب:",
-       "userrights-no-interwiki": "تÙ\88Ù\87اÙ\86 Ú©Ù\8a Ù»Ù\8aÙ\86 Ù\88ÚªÙ\8aز ØªÙ\8a Ù\8aÙ\8fÙ\88زر حقن ۾ ترميم ڪرڻ جو حق حاصل نہ آهي.",
+       "userrights-no-interwiki": "تÙ\88Ù\87اÙ\86 Ú©Ù\8a Ù»Ù\8aÙ\86 Ù\88ÚªÙ\8aز ØªÙ\8a Ù\88اپرائÙ\8aÙ\86دÚ\99 حقن ۾ ترميم ڪرڻ جو حق حاصل نہ آهي.",
        "userrights-nodatabase": "اعداخانو $1 يا تہ وجود نہ ٿو رکي يا تہ اهو مقامي اعدادخانو نہ آهي.",
        "userrights-changeable-col": "گروپَ جيڪي توهان تبديل ڪري سگھو ٿا",
        "userrights-unchangeable-col": "گروپَ جيڪي توهان تبديل نٿا ڪري سگھو",
        "group-sysop": "منتظم",
        "group-bureaucrat": "ڪامورا",
        "group-all": "(سڀ)",
-       "group-user-member": "{{GENDER:$1|واھپ}}",
+       "group-user-member": "{{GENDER:$1|واپرائيندڙ}}",
        "group-bot-member": "{{GENDER:$1|بوٽ}}",
        "group-sysop-member": "{{GENDER:$1|منتظم}}",
        "group-bureaucrat-member": "{{GENDER:$1|ڪامورو}}",
        "right-edit": "صفحا سنواريو",
        "right-createpage": "صفحا سنواريو (جيڪي مباحثي صفحا نہ آهن)",
        "right-createtalk": "مباحثي صفحا سرجيو",
-       "right-createaccount": "Ù\86Ù\88اÙ\86 Ù\8aÙ\8fÙ\88زر کاتا کوليو",
+       "right-createaccount": "Ù\86Ù\88اÙ\86 Ù\88اپرائÙ\8aÙ\86دÚ\99 کاتا کوليو",
        "right-minoredit": "ترميمُن کي معمُولي ڄاڻايو",
        "right-move": "صفحا چوريو",
        "right-move-subpages": "ذيلي صفحن سميت صفحا چوريو",
        "right-browsearchive": "ڊاٺل صفحا ڳوليو",
        "right-undelete": "ڪو صفحو اڻڊاهيو",
        "right-unblockself": "ڪنهن تان بندش ختم ڪريو",
-       "right-editinterface": "Ù\8aÙ\8fÙ\88زر باهمرُو کي سنواريو",
+       "right-editinterface": "Ù\88اپرائÙ\8aÙ\86دÚ\99 باهمرُو کي سنواريو",
        "right-viewmywatchlist": "پنهنجي نظر ۾ فھرست ڏسو",
        "right-editmyoptions": "پنهنجون ترجيحون سنواريو",
        "right-import": "ٻين وڪيز کان صفحا درآمديو",
        "right-importupload": "ڪو فائيل چاڙهي صفحا درآمديو",
        "right-mergehistory": "صفحن جي سوانح سنواريو",
-       "right-userrights": "سڀ واھپ حق سنواريو",
+       "right-userrights": "واپرائيندڙ جا سڀ حق سنواريو",
        "right-userrights-interwiki": "هن وڪي جي يوزرس جا حق ترميم ڪريو",
        "right-siteadmin": "اعدادخانو بنديو ۽ کوليو",
        "right-override-export-depth": "5ئين اونهائيءَ تائين ڳنڍيل صفحن سميت صفحا برآمديو",
        "grant-basic": "بنيادي حقَ",
        "grant-viewdeleted": "ڊَٺَلَ فائيلَ ۽ صفحا ڏسو",
        "grant-viewmywatchlist": "پنهنجي نظرھيٺ فھرست ڏسو",
-       "newuserlogpage": "واھپ تخليق لاگ",
-       "rightslog": "Ù\8aÙ\8fÙ\88زر حق لاگ",
+       "newuserlogpage": "واپرائيندڙ جو تخليق لاگ",
+       "rightslog": "Ù\88اپرائÙ\8aÙ\86دÚ\99 حق لاگ",
        "action-read": "هي صفحو پڙهو",
        "action-edit": "هن صفحي کي سسنواريو",
        "action-createpage": "ھي صفحو تخليق ڪريو",
        "action-createtalk": "ھي مباحثي صفحو تخليق ڪريو",
-       "action-createaccount": "ھي واھپ کاتو سرجيو",
+       "action-createaccount": "ھي واپرائيندڙ کاتو سرجيو",
        "action-history": "هن صفحي جي سوانح ڏسو",
        "action-minoredit": "هن ترميم کي معمولي طور نشان لڳايو",
        "action-move": "هيءَُ صفحو چوريو",
        "action-undelete": "صفحا اڻڊاھيو",
        "action-suppressrevision": "لڪيل ڀيرن تي نظرثاني ڪريو ۽ بحاليو",
        "action-suppressionlog": "هيءُ ذاتي لاگ ڏسو",
-       "action-block": "Ù\87Ù\86 Ù\8aÙ\8fÙ\88زر Ú©Ù\8a Ø³Ù\86Ù\88ارڻ Ú©Ø§Ù\86 Ø±Ù\88Úªيو",
+       "action-block": "Ù\87Ù\86 Ù\88اپرائÙ\8aÙ\86دÚ\99 Ú©Ù\8a Ø³Ù\86Ù\88ارڻ Ú©Ø§Ù\86 Ø¨Ù\86دشيو",
        "action-protect": "هن صفحي جي تحفظاتي سطح بدلايو",
-       "action-rollback": "ÚªÙ\86Ù\87Ù\86 Ù\85خصÙ\88ص ØµÙ\81Ø­Ù\8a ØªÙ\8a Ø¢Ø®Ø±Ù\8a ØªØ±Ù\85Ù\8aÙ\85 ÚªÙ\86دÚ\99 Ù\8aÙ\8fÙ\88زر جي سمورين ترميمن کي ترت واپس ورايو",
+       "action-rollback": "ÚªÙ\86Ù\87Ù\86 Ù\85خصÙ\88ص ØµÙ\81Ø­Ù\8a ØªÙ\8a Ø¢Ø®Ø±Ù\8a ØªØ±Ù\85Ù\8aÙ\85 ÚªÙ\86دÚ\99 Ù\88اپرائÙ\8aÙ\86دÚ\99 جي سمورين ترميمن کي ترت واپس ورايو",
        "action-import": "ٻي ڪنهن وڪي کان صفحا درآمد ڪريو",
        "action-importupload": "ڪو فائيل چاڙهي صفحا درآمديو",
        "action-unwatchedpages": "اڻ ڏٺل صفحن جي فھرست ڏسو",
        "action-mergehistory": "هن صفحي جي سوانح ضم ڪريو",
-       "action-userrights": "سڀ واھپ حق سنواريو",
+       "action-userrights": "واپرائيندڙ جا سڀ حق سنواريو",
        "action-userrights-interwiki": "ٻين وڪيز جي يوزرس جا حق ترميم ڪريو",
        "action-siteadmin": "اعدادخاني کي بند ڪريو يا کوليو",
        "action-sendemail": "برقٽپال اماڻيو",
        "rcfilters-filter-user-experience-level-unregistered-label": "اڻرجسٽر ٿيل",
        "rcfilters-filter-user-experience-level-newcomer-label": "نوان ايندڙ",
        "rcfilters-filter-user-experience-level-learner-label": "سکندڙ",
-       "rcfilters-filter-user-experience-level-experienced-label": "تجربيڪار واھپ",
+       "rcfilters-filter-user-experience-level-experienced-label": "تجربيڪار واپرائيندڙ",
        "rcfilters-filter-bots-label": "بوٽ",
        "rcfilters-filter-humans-label": "انسان (بوٽ نہ)",
        "rcfilters-filter-humans-description": "انساني ايڊيٽرن پاران ڪيل ترميمون.",
        "listfiles_thumb": "ٽِڪِلِي",
        "listfiles_date": "تاريخ",
        "listfiles_name": "نالو",
-       "listfiles_user": "واھپ",
+       "listfiles_user": "واپرائيندڙ",
        "listfiles_size": "ماپَ",
        "listfiles_description": "تشريح",
        "listfiles_count": "ورزن",
        "filehist-thumb": "آڱوٺي ننھن",
        "filehist-thumbtext": "$1 جي نظرثاني لاءِ تصويري نشان",
        "filehist-nothumb": "ٽِڪِلِي اڻموجود",
-       "filehist-user": "واھپ",
+       "filehist-user": "واپرائيندڙ",
        "filehist-dimensions": "ماپَ",
        "filehist-filesize": "فائيل ماپ",
        "filehist-comment": "تاثر",
        "statistics": "انگ اکر",
        "statistics-header-pages": "صفحي جا انگ اکر",
        "statistics-header-edits": "ترميمن جا انگ اکر",
-       "statistics-header-users": "Ù\8aÙ\8fÙ\88زر جا انگ اکر",
+       "statistics-header-users": "Ù\88اپرائÙ\8aÙ\86دÚ\99 جا انگ اکر",
        "statistics-header-hooks": "ٻيا انگ اکر",
        "statistics-articles": "موادي صفحا",
        "statistics-pages": "صفحا",
        "protectedpages-reason": "سبب",
        "protectedpages-submit": "صفحا ڏيکاريو",
        "protectedpages-unknown-timestamp": "اڻڄاتل",
-       "protectedpages-unknown-performer": "نامعلوم واھپ",
+       "protectedpages-unknown-performer": "اڻڄاتل واپرائيندڙ",
        "protectedtitles": "تحفظيل عنوان",
        "protectedtitles-submit": "عنوان ڏيکاريو",
-       "listusers": "واھپ فهرست",
+       "listusers": "واپرائيندڙن جي فهرست",
        "newpages": "نوان صفحا",
        "newpages-submit": "ڏيکاريو",
-       "newpages-username": "واھپ-نانءُ:",
+       "newpages-username": "واپرائيندڙ-نانءُ:",
        "ancientpages": "قديم ترين صفحا",
        "move": "چوريو",
        "movethispage": "هيءُ صفحو چوريو",
        "allpagesbadtitle": "صفحي جو گھربل عنوان ڪار ڪونهي، يا خالي آهي، يا وري غيردرست طريقي سان ڳنڍيل بين‌الزباني يا بين‌الوڪي عنوان آهي. \nان ۾ هڪ يا هڪ کان وڌيڪ اهڙا اکر موجود ٿي سگھن ٿا، جيڪي عنوان ۾ استعمال ڪري نہ ٿا سگھجن.",
        "categories": "زمرا",
        "categories-submit": "ڏيکاريو",
-       "deletedcontributions": "Ù\8aÙ\8fÙ\88زر Ø¬Ù\88Ù\86 Ú\8aاٺل ڀاڱيداريون",
-       "deletedcontributions-title": "Ù\8aÙ\8fÙ\88زر Ø¬Ù\88Ù\86 Ú\8aاٺل ڀاڱيداريون",
+       "deletedcontributions": "Ù\88اپرائÙ\8aÙ\86دÚ\99 Ø¬Ù\88Ù\86 Ú\8aاٿل ڀاڱيداريون",
+       "deletedcontributions-title": "Ù\88اپرائÙ\8aÙ\86دÚ\99 Ø¬Ù\88Ù\86 Ú\8aاٿل ڀاڱيداريون",
        "sp-deletedcontributions-contribs": "ڀاڱيداريون",
        "linksearch-ns": "نانءُپولار",
        "linksearch-ok": "ڳوليو",
-       "listusersfrom": "تي شروع ڪندڙ واھپ ڏيکاريو:",
+       "listusersfrom": "تي شروع ڪندڙ واپرائيندڙ ڏيکاريو:",
        "listusers-submit": "ڏيکاريو",
-       "listusers-noresult": "ÚªÙ\88 Ø¨Û\81 Ù\8aÙ\8fÙ\88زر Ù\86Û\81 Ù\84Ú\8cÙ\88",
+       "listusers-noresult": "ÚªÙ\88 Ø¨Û\81 Ù\88اپرائÙ\8aÙ\86دÚ\99 Ù\86Û\81 Ù\84Ú\8cÙ\88.",
        "listusers-blocked": "(بندشيل)",
        "activeusers": "سرگرم يُوزرس جي فهرست",
        "activeusers-groups": "گروھن سان تعلق رکندڙ يوزرس ڏيکاريو:",
        "activeusers-excludegroups": "گروھن سان تعلق رکندڙ گروھ ڇڏيو:",
        "activeusers-noresult": "ڪي بہ يُوزرس نہ لڌا.",
        "activeusers-submit": "سرگرم يُوزرس ڏيکاريو",
-       "listgrouprights": "واھپ گروھ جا حق",
+       "listgrouprights": "واپرائيندڙ گروھ جا حق",
        "listgrouprights-group": "گروهہ:",
        "listgrouprights-rights": "حق",
        "listgrouprights-members": "(رڪنن جي فھرست)",
        "trackingcategories-name": "پيغام جو نالو",
        "trackingcategories-nodesc": "ڪا به تشريح موجود نه آهي.",
        "trackingcategories-disabled": "زمرو ناقابلِ ڪار بڻايل آهي.",
-       "emailuser": "هن واھپ کي برق ٽپال اماڻيو",
-       "emailuser-title-target": "ھن {{GENDER:$1|واھپ}} ڏانھن برقٽپال موڪليو",
-       "emailuser-title-notarget": "واھپ ڏانھن برقٽپال اماڻيو",
-       "usermaildisabled": "واھپ برقٽپال ناقابلِڪار بڻيل",
+       "emailuser": "هن واپرائيندڙ کي برقٽپال اماڻيو",
+       "emailuser-title-target": "ھن {{GENDER:$1|واپرائيندڙ}} ڏانھن برقٽپال موڪليو",
+       "emailuser-title-notarget": "واپرائيندڙ ڏانھن برقٽپال اماڻيو",
+       "usermaildisabled": "واپرائيندڙ برقٽپال ناقابلِڪار بڻيل",
        "usermaildisabledtext": "توهان هن وڪي تي ٻين يوزرس ڏانهن ايميل نٿا موڪلي سگھو",
        "noemailtitle": "برقٽپال پتو ناھي",
-       "noemailtext": "هن واھپ ڪو بہ قابلِڪار برقٽپال پتو نہ ڄاڻايو آهي.",
-       "emailusername": "واھپ-نانءُ:",
+       "noemailtext": "هن واپرائيندڙ ڪو بہ قابلِڪار برقٽپال پتو نہ ڄاڻايو آهي.",
+       "emailusername": "واپرائيندڙ-نانءُ:",
        "emailusernamesubmit": "جمع ڪرايو",
        "emailfrom": "طرفان:",
        "emailto": "ڏانهن:",
        "watching": "نظر ۾ رکندي...",
        "unwatching": "نظر مان ڪڍندي...",
        "enotif_reset": "سڀ گھميل صفحن تي نشان لڳايو",
-       "enotif_impersonal_salutation": "{{SITENAME}} واھپ",
+       "enotif_impersonal_salutation": "{{SITENAME}} واپرائيندڙ",
        "enotif_lastdiff": "هي تبديلي ڏسڻ لاءِ، $1 ڏسو",
-       "enotif_anon_editor": "Ú¯Ù\85Ù\86اÙ\85 Ù\8aÙ\8fÙ\88زر $1",
+       "enotif_anon_editor": "Ú¯Ù\85Ù\86اÙ\85 Ù\88اپرائÙ\8aÙ\86دÚ\99 $1",
        "created": "ٺهي چڪو",
        "changed": "تبديل ٿي ويو",
        "deletepage": "صفحو ڊاهيو",
        "tooltip-invert": "هن دٻي تي نشان لڳايو صحفن ۾ تبديليون لڪائڻ لاءِ چونڊيل نانءَپولار مان (۽ لاڳاپيل نانءُپولار جيڪڏهن نشان لڳل)",
        "namespace_association": "منسلڪ نانءُپولار",
        "blanknamespace": "(مُک)",
-       "contributions": "{{GENDER:$1|واھپ}} جون ڀاڱيداريون",
-       "contributions-title": "يُوزر ڀاڱيداريون براءِ $1",
+       "contributions": "{{GENDER:$1|واپرائيندڙ}} جون ڀاڱيداريون",
+       "contributions-title": "$1 لاءِ واپرائيندڙ جون ڀاڱيداريون",
        "mycontris": "ڀاڱيداريون",
        "anoncontribs": "ڀاڱيداريون",
        "contribsub2": "{{GENDER:$3|$1}} ($2) لاءِ",
-       "contributions-userdoesnotexist": "Ù\8aÙ\8fÙ\88زر کاتو \"$1\" درج ٿيل نہ آهي.",
+       "contributions-userdoesnotexist": "Ù\88اپرائÙ\8aÙ\86دÚ\99 کاتو \"$1\" درج ٿيل نہ آهي.",
        "uctop": "(هاڻوڪو)",
        "month": "مھيني کان (۽ اڳوڻيون):",
        "year": "سال کان (۽ اڳوڻيون):",
        "sp-contributions-newbies": "صرف نون کاتن جون ڀاڱيداريون ڏيکاريو",
        "sp-contributions-newbies-sub": "نون کاتن لاءِ",
-       "sp-contributions-newbies-title": "Ù\86Ù\88Ù\86 Ú©Ø§ØªÙ\86 Ø¬Ù\8a Ù\84اءÙ\90 Ù\8aÙ\88زر جون ڀاڱيداريون",
+       "sp-contributions-newbies-title": "Ù\86Ù\88Ù\86 Ú©Ø§ØªÙ\86 Ø¬Ù\8a Ù\84اءÙ\90 Ù\88اپرائÙ\8aÙ\86دÚ\99 جون ڀاڱيداريون",
        "sp-contributions-blocklog": "بندش لاگ",
-       "sp-contributions-deleted": "ڊاٿل {{GENDER:$1|واھپ}} ڀاڱيداريون",
+       "sp-contributions-deleted": "{{GENDER:$1|واپرائيندڙ}} جون ڊاٿل ڀاڱيداريون",
        "sp-contributions-uploads": "چاڙھَ",
        "sp-contributions-logs": "لاگس",
        "sp-contributions-talk": "ڳالھ",
        "sp-contributions-userrights": "{{GENDER:$1|يوُزر}} حقن جي سنڀال",
        "sp-contributions-search": "ڀاڱيدارين لاءِ ڳولا ڪريو",
-       "sp-contributions-username": "آءِپي پتو يا واھپ-نانءُ:",
+       "sp-contributions-username": "آءِپي پتو يا واپرائيندڙ-نانءُ:",
        "sp-contributions-submit": "ڳوليو",
        "whatlinkshere": "هتان ڇا ڳنڍيل آهي",
        "whatlinkshere-title": "\"$1\" سان ڳنڍيندڙ صفحا",
        "whatlinkshere-hidelinks": "$1 ڳنڍڻا",
        "whatlinkshere-filters": "ڇاڻيون",
        "whatlinkshere-submit": "هلو",
-       "block": "Ù\8aÙ\8fÙ\88زر کي بندشيو",
-       "unblock": "Ù\8aÙ\8fÙ\88زر کي اڻبندشيو",
-       "blockip": "{{GENDER:$1|واھپ}} تي بندش وجھو",
-       "blockip-legend": "Ù\8aÙ\8fÙ\88زر کي بندشيو",
+       "block": "Ù\88اپرائÙ\8aÙ\86دÚ\99 کي بندشيو",
+       "unblock": "Ù\88اپرائÙ\8aÙ\86دÚ\99 کي اڻبندشيو",
+       "blockip": "{{GENDER:$1|واپرائيندڙ}} تي بندش وجھو",
+       "blockip-legend": "Ù\88اپرائÙ\8aÙ\86دÚ\99 کي بندشيو",
        "ipbexpiry": "اختتام:",
        "ipbreason": "سبب:",
        "ipbother": "ٻيو وقت:",
        "ipb-confirm": "بندش جي پڪ ڪريو",
        "badipaddress": "ناقابلڪار آءِ پي پتو",
        "blockipsuccesssub": "بندش ڪامياب ٿي",
-       "unblockip": "Ù\8aÙ\8fÙ\88زر کي اڻبندشيو",
+       "unblockip": "Ù\88اپرائÙ\8aÙ\86دÚ\99 کي اڻبندشيو",
        "ipusubmit": "اها بندش هٽايو",
        "unblocked-range": "$1 تان بندش هٽي چڪي آهي.",
        "unblocked-id": "بندش $1 هٽي چڪي آهي.",
        "unblocklogentry": "$1 تان بندش هٽائي وئي",
        "block-log-flags-anononly": "فقط نامعلوم يوزرس",
        "block-log-flags-noemail": "برقٽپال غير فعال",
-       "block-log-flags-hiddenname": "واھپ-نانءُ لڪل",
+       "block-log-flags-hiddenname": "واپرائيندڙ-نانءُ لڪل",
        "ipb_already_blocked": "\"$1\" اڳ ۾ ئي بندشيل آهي.",
        "ipbnounblockself": "توهان پنهنجو پاڻ تان بندش هٽائي نہ ٿا سگھو.",
        "lockdb": "اعدادخاني کي بنديو",
        "import-upload-filename": "فائيل نانءُ:",
        "import-comment": "تاثر:",
        "importlogpage": "درآمد لاگ",
-       "tooltip-pt-userpage": "{{GENDER:|توھانجو واھپ}} صفحو",
-       "tooltip-pt-mytalk": "{{GENDER:|توھانجو}} واھپ صفحو",
+       "tooltip-pt-userpage": "{{GENDER:|توھانجو}} صفحو",
+       "tooltip-pt-mytalk": "{{GENDER:|توھانجو}} بحث صفحو",
        "tooltip-pt-preferences": "{{GENDER:|توھانجون}} ترجيحون",
        "tooltip-pt-watchlist": "صفحن جي فھرست جيڪي توھان تبديلين لاءِ نظر ۾ رکيا آھن",
        "tooltip-pt-mycontris": "{{GENDER:|توھانجي}} ڀاڱيدارين جي فھرست",
        "tooltip-t-whatlinkshere": "ھتان ڳنڍيل سمورن وڪي صفحن جي فھرست",
        "tooltip-t-recentchangeslinked": "ويجھڙائيءَ ۾ صفحن ۾ ٿيل تبديليون هن صفحي سان ڳنڍيل آهن",
        "tooltip-feed-atom": "هن صفحي لاءِ ايٽم فيڊ",
-       "tooltip-t-contributions": "{{GENDER:$1|ھن واھپ}} جي ڀاڱيدارين جي فھرست",
-       "tooltip-t-emailuser": "{{GENDER:$1|ھن واھپ}} ڏانھن برقٽپال موڪليو",
+       "tooltip-t-contributions": "{{GENDER:$1|ھن واپرائيندڙ}} جي ڀاڱيدارين جي فھرست",
+       "tooltip-t-emailuser": "{{GENDER:$1|ھن واپرائيندڙ}} ڏانھن برقٽپال موڪليو",
        "tooltip-t-upload": "فائيل چاڙهيو",
        "tooltip-t-specialpages": "سڀني خاص صفحن جي فھرست",
        "tooltip-t-print": "هن صفحي جو ڇاپائتو پرت",
        "tooltip-t-permalink": "صفحي جي ان نظرثاليءَ ڏانھن مستقل ڳنڍڻو",
        "tooltip-ca-nstab-main": "مواد جي صفحي کي ڏسو",
-       "tooltip-ca-nstab-user": "ھن جو واھپ صفحو ڏسو",
+       "tooltip-ca-nstab-user": "واپرائيندڙ جو صفحو ڏسو",
        "tooltip-ca-nstab-special": "هيءُ خاص صفحو آهي، ان ۾ ترميم نٿي ڪري سگھجي",
        "tooltip-ca-nstab-project": "رٿائي صفحو ڏسو",
        "tooltip-ca-nstab-image": "ھن فائيل جو صفحو ڏسو",
        "tooltip-rollback": "\"واپس ورايو\" ھن صفحي ۾ پوئين ڀاڱيدار جي ڪيل ترميم(ن) کي ھڪ ٽڙڪ سان اڻڪري ٿو",
        "tooltip-preferences-save": "ترجيحون سانڍيو",
        "tooltip-summary": "ننڍو خلاصو ڏيو",
-       "anonymous": "{{SITENAME}} جا گمنام {{PLURAL:$1|واھپ|واھپَ}}",
+       "anonymous": "{{SITENAME}} جا گمنام {{PLURAL:$1|واپرائيندڙ|واپرائيندڙَ}}",
        "simpleantispam-label": "اينٽي-اسپام روڪ.\nھن کي <strong>نہ</strong> ڀريو!",
        "pageinfo-toolboxlink": "صفحي جي معلومات",
        "pageinfo-contentpage-yes": "ها",
        "exif-colorspace": "رنگ پولار",
        "exif-pixelxdimension": "عڪس جي ويڪر",
        "exif-pixelydimension": "عڪس جي اوچائي",
-       "exif-usercomment": "Ù\8aÙ\8fÙ\88زر جا تاثرات",
+       "exif-usercomment": "Ù\88اپرائÙ\8aÙ\86دÚ\99 جا تاثرات",
        "exif-relatedsoundfile": "لاڳاپيل آوازي فائيل",
        "exif-datetimeoriginal": "اعداد جي جڙڻ جي تاريخ ۽ وقت",
        "exif-datetimedigitized": "عددڪاريءَ جي تاريخ ۽ وقت",
        "htmlform-cloner-delete": "هٽايو",
        "htmlform-title-not-exists": "$1 وجود نٿو رکي.",
        "logentry-delete-delete": "$1 {{GENDER:$2|ڊاٿو}} صفحو $3",
-       "revdelete-uname-hid": "واھپ-نانءُ لڪل",
+       "revdelete-uname-hid": "واپرائيندڙ-نانءُ لڪل",
        "logentry-move-move": "$1 {{GENDER:$2|چوريو}} صفحو $3 ڏانهن $4",
-       "logentry-newusers-create": "واھپ کاتو $1 {{GENDER:$2|سرجيو ويو}}",
+       "logentry-newusers-create": "واپرائيندڙ کاتو $1 {{GENDER:$2|سرجيو ويو}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|چاڙهيو}} $3",
        "rightsnone": "(ڪو بہ نہ)",
        "feedback-back": "پوئتي",
index 1446a55..148539f 100644 (file)
        "fileduplicatesearch-noresults": "Датотека под називом „$1“ није пронађена.",
        "specialpages": "Посебне странице",
        "specialpages-note-top": "Легенда",
+       "specialpages-note-restricted": "* Обичне посебне странице.\n* <span class=\"mw-specialpagerestricted\">Посебне странице са ограничењем.</span>",
        "specialpages-group-maintenance": "Извештаји одржавања",
        "specialpages-group-other": "Остале посебне странице",
        "specialpages-group-login": "Пријава / регистрација",
        "compare-title-not-exists": "Наведени наслов не постоји.",
        "compare-revision-not-exists": "Наведена измена не постоји.",
        "diff-form": "'''форма'''",
+       "permanentlink": "Стална веза",
        "dberr-problems": "Дошло је до техничких проблема.",
        "dberr-again": "Сачекајте неколико минута и поново учитајте страницу.",
        "dberr-info": "(Не могу приступити бази података: $1)",
index 7184158..28fd9a6 100644 (file)
        "fileduplicatesearch-noresults": "Datoteka pod nazivom „$1“ nije pronađena.",
        "specialpages": "Posebne stranice",
        "specialpages-note-top": "Legenda",
+       "specialpages-note-restricted": "* Obične posebne stranice.\n* <span class=\"mw-specialpagerestricted\">Posebne stranice sa ograničenjem.</span>",
        "specialpages-group-maintenance": "Izveštaji održavanja",
        "specialpages-group-other": "Ostale posebne stranice",
        "specialpages-group-login": "Prijava / registracija",
        "compare-title-not-exists": "Navedeni naslov ne postoji.",
        "compare-revision-not-exists": "Navedena izmena ne postoji.",
        "diff-form": "'''forma'''",
+       "permanentlink": "Stalna veza",
        "dberr-problems": "Došlo je do tehničkih problema.",
        "dberr-again": "Sačekajte nekoliko minuta i ponovo učitajte stranicu.",
        "dberr-info": "(Ne mogu pristupiti bazi podataka: $1)",
        "mw-widgets-dateinput-placeholder-month": "GGGG-MM",
        "mw-widgets-titleinput-description-new-page": "stranica još uvek ne postoji",
        "mw-widgets-titleinput-description-redirect": "preusmerava na $1",
+       "mw-widgets-usersmultiselect-placeholder": "Dodaj još...",
        "randomrootpage": "Slučajna korenska stranica",
        "log-action-filter-all": "Sve",
        "log-action-filter-move-move_redir": "Premeštanje sa prepisivanjem preusmerenja",
index f66a7a9..f88ba4b 100644 (file)
        "timezoneregion-indian": "Samudra Indonésia",
        "timezoneregion-pacific": "Samudra Pasifik",
        "allowemail": "Buka berkas pikeun nampa surélék ti nu séjén",
+       "email-blacklist-label": "Larang ieu pamaké ngirim surélék ka kuring:",
        "prefs-searchoptions": "Paluruh",
        "prefs-namespaces": "Ngaranspasi",
        "default": "ti dituna",
        "backend-fail-read": "Teu bisa maca berkas $1.",
        "backend-fail-create": "Teu bisa nulis berkas \"$1\".",
        "backend-fail-maxsize": "Teu bisa nulis berkas \"$1\" kusabab leuwih ti {{PLURAL:$2|hiji bit|$2 bit}}.",
+       "backend-fail-synced": "Berkas \"$1\" mah aya dina kaayaan teu konsistén di panyimpenan internal",
        "backend-fail-connect": "Teu bisa nyambungkeun kana panyimpenan backend \"$1\".",
        "backend-fail-internal": "Aya kasalahan nu teu dipikawanoh di backend panyimpenan \"$1\".",
        "backend-fail-contenttype": "Teu bisa nangtukeun tipeu eusi berkas anu badé disimpen di \"$1\".",
+       "filejournal-fail-dbconnect": "Teu bisa nyambung ka basisdata jurnal pikeun panyimpenan ''backend'' \"$1\".",
+       "filejournal-fail-dbquery": "Teu bisa nganyarkeun basisdata jurnal pikeun panyimpenan ''backend'' \"$1\".",
        "lockmanager-notlocked": "Teu bisa muka konci \"$1\" kusabab teu dikonci.",
        "lockmanager-fail-closelock": "Teu bisa nutup berkas konci pikeun \"$1\".",
        "lockmanager-fail-deletelock": "Teu bisa ngahapus berkas konci pikeun \"$1\".",
        "lockmanager-fail-acquirelock": "Teu bisa meunang pangoncian pikeun \"$1\"",
        "lockmanager-fail-openlock": "Teu bisa muka berkas konci pikeun \"$1\".",
        "lockmanager-fail-releaselock": "Teu bisa ngaleupaskeun konci pikeun \"$1\".",
+       "lockmanager-fail-db-bucket": "Teu bisa ngagero konci basis data nu cukup dina karanjang $1.",
        "lockmanager-fail-db-release": "Teu bisa ngaleupaskeun konci dina databés $1.",
        "lockmanager-fail-svr-acquire": "Gagal nyokot konci di servér $1.",
        "lockmanager-fail-svr-release": "Teu bisa ngaleupaskeun konci dina server $1.",
        "uploadstash-errclear": "Mersihan berkas nu garagal.",
        "uploadstash-refresh": "Nyegerken deui daptar berkas",
        "uploadstash-thumbnail": "tempo miniatur",
+       "uploadstash-exception": "Teu bisa nyimpen unjalan di panyimpenan ($1): \"$2\".",
        "invalid-chunk-offset": "Opsét potongan teu valid",
        "img-auth-accessdenied": "Aksés ditolak",
+       "img-auth-badtitle": "Teu bisa nyieun judul nu valid tina \"$1\".",
+       "img-auth-nologinnWL": "Anjeun teu asup log sarta \"$1\" teu dina daptar bodas.",
        "img-auth-nofile": "Berkas \"$1\" henteu aya.",
+       "img-auth-isdir": "Anjeun nyoba ngaksés diréktori \"$1\".\nNgan aksés berkas wungkul nu diwenangkeun.",
        "img-auth-streaming": "Palidan \"$1\".",
        "img-auth-noread": "Pamaké teu boga kawenangan maca \"$1\".",
        "http-invalid-url": "URL teu bener: $1",
        "ipboptions": "2 jam:2 hours,sapoé:1 day,3 poé:3 days,saminggu:1 week,2 minggu:2 weeks,sabulan:1 month,3 bulan:3 months,6 bulan:6 months,sataun:1 year,tanpa wates:infinite",
        "ipbhidename": "Sumputkeun ngaran pamaké tina éditan jeung daptar pamaké",
        "ipbwatchuser": "Awaskeun kaca pamaké jeung kaca obrolan pamaké ieu",
+       "ipb-disableusertalk": "Cegah ieu pamaké pikeun ngédit kaca obrolan manéhns sorangan nalika dipeunpeuk",
        "ipb-change-block": "Peungpeuk deui pamaké kalawan sét konfigurasi ieu",
        "ipb-confirm": "Konfirmasi peungpeuk",
        "badipaddress": "Alamat IP teu sah",
        "blockipsuccesssub": "Meungpeuk geus hasil",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] geus dipeungpeuk.<br />\nTempo [[Special:BlockList|daptar peungpeukan]] pikeun niténan deui pameungpeukan.",
+       "ipb-blockingself": "Anjeun rék meungpeuk manéh! Yakin yeuh rék ngalakukeun kitu?",
        "ipb-edit-dropdown": "Édit alesan meungpeuk",
        "ipb-unblock-addr": "Buka peungpeuk $1",
        "ipb-unblock": "Nyabut peungpeuk pamaké atawa alamat IP",
        "blocklogpage": "Log_peungpeuk",
        "blocklog-showlog": "Ieu pamaké saméméhna geus kungsi dipeungpeuk.\nPikeun rujukan, logna dipidangkeun di handap ieu:",
        "blocklogentry": "meungpeuk [[$1]] nepi ka $2 $3",
-       "blocklogtext": "Ieu mangrupa log peta meungpeuk jeung muka peungpeuk pamaké, teu kaasup alamat IP nu dipeungpeukna otomatis. Tempo [[Special:BlockList|daptar peungpeuk IP]] pikeun daptar cegahan jeung peungpeuk.",
+       "reblock-logentry": "ngarobah peungpeukan [[$1]] kalawan waktu kadaluwarsa $2 $3",
+       "blocklogtext": "Ieu mangrupa log peta meungpeuk jeung muka peungpeuk pamaké, teu kaasup alamat IP nu dipeungpeukna otomatis. Tempo [[Special:BlockList|daptar peungpeuk]] pikeun daptar cegahan jeung peungpeuk.",
        "unblocklogentry": "peungpeuk dibuka \"$1\"",
        "block-log-flags-anononly": "pamaké anonim wungkul",
        "block-log-flags-nocreate": "teu bisa nyieun akun",
        "movenosubpage": "Ieu kaca teu boga subkaca.",
        "movereason": "Alesan:",
        "revertmove": "balikkeun",
-       "delete_and_move_text": "==Merlukeun hapusan==\n\nArtikel nu dituju \"[[:$1]]\" geus aya. Badé dihapus baé sangkan bisa mindahkeun?",
+       "delete_and_move_text": "Kaca nu ditojo \"[[:$1]]\", geus eusian.\nAnjeun rék mupusna pikeun méré lolongkran keur pangalihan?",
        "delete_and_move_confirm": "Enya, hapus kaca éta",
-       "delete_and_move_reason": "Hapus sangkan bisa mindahkeun",
+       "delete_and_move_reason": "Dipupus pikeun ngantisipasi pangalihan kaca ti \"[[$1]]\"",
        "selfmove": "Judul sumber jeung tujuanana sarua, lain gé mindahkeun atuh!",
        "immobile-source-namespace": "Teu bisa ngalihkeun kaca dina ngaranspasi \"$1\".",
        "immobile-target-namespace": "Teu bisa ngalihkeun kaca ka ngaranspasi \"$1\".",
        "pageinfo-recent-edits": "Jumlah éditan kiwari (dina $1 panungtung)",
        "pageinfo-recent-authors": "Jumlah panulis béda kiwari",
        "pageinfo-magic-words": "{{PLURAL:$1|Sakecap|Kecap}} ajaib ($1)",
+       "pageinfo-hidden-categories": "{{PLURAL:$1|Sakategori|Kategori}} nyamuni ($1)",
+       "pageinfo-templates": "{{PLURAL:$1|Sacitakan|citakan}} nu ditransklusi ($1)",
        "pageinfo-toolboxlink": "Émbaran kaca",
        "pageinfo-redirectsto": "Alihkeun ka",
        "pageinfo-redirectsto-info": "info",
index 79af9d4..01f4a88 100644 (file)
        "permissionserrorstext": "Түбәндәге {{PLURAL:$1|1=сәбәп|сәбәпләр}} аркасында сез бу гамәлне башкара алмыйсыз:",
        "permissionserrorstext-withaction": "$2 гамәлен башкара алмыйсыз. {{PLURAL:$1|1=Сәбәбе|Сәбәпләре}}:",
        "recreate-moveddeleted-warn": "'''Игътибар: Сез бетерелгән бит урынына яңа бит ясамакчы буласыз.'''\n\nСезгә чыннан да бу битне яңадан ясау кирәкме?\nТүбәндә битнең бетерү һәм күчерү көндәлеге китерелә:",
-       "moveddeleted-notice": "Бу бит бетерелгән иде.\nТүбәндә бетерелү һәм күчерелү көндәлекне китерелә.",
+       "moveddeleted-notice": "Бу бит бетерелгән.\nТүбәндә бу битнең бетерелү, якланышы һәм күчерелү көндәлекләре китерелә.",
        "log-fulllog": "Көндәлекне тулысынча карау",
        "edit-hook-aborted": "Үзгәртү махсус процедура тарафыннан кире кагыла.\nСәбәпләре китерелми.",
        "edit-gone-missing": "Битне яңартып булмый.\nУл бетерелгән булырга мөмкин.",
        "recentchanges": "Соңгы үзгәртүләр",
        "recentchanges-legend": "Соңгы үзгәртүләр көйләүләре",
        "recentchanges-summary": "Төрле битләрдә эшләнгән соңгы үзгәртүләр исемлеге.",
+       "recentchanges-noresult": "Сайланган чорда күрсәтелгән шартларга туры килүче төзәтмәләр юк.",
        "recentchanges-feed-description": "Бу агымда соңгы үзгәртүләрне күзәтү.",
        "recentchanges-label-newpage": "Бу үзгәртү белән яңа бит төзелгән",
        "recentchanges-label-minor": "Бу кече үзгәртү",
        "pageinfo-article-id": "Бит идентификаторы",
        "pageinfo-language": "Битнең теле",
        "pageinfo-language-change": "үзгәртү",
+       "pageinfo-content-model": "Бит эчтәлегенең моделе",
        "pageinfo-content-model-change": "үзгәртү",
+       "pageinfo-robot-policy": "Эзләү роботлары тарафыннан индексацияләнү",
        "pageinfo-robot-index": "Рөхсәт",
        "pageinfo-robot-noindex": "Рөхсәтсез",
+       "pageinfo-watchers": "Күзәтүчеләр саны",
+       "pageinfo-few-watchers": "$1 әзрәк {{PLURAL:$1|күзәтүче}}",
+       "pageinfo-redirects-name": "Бу биткә юнәлтүләр саны",
        "pageinfo-firstuser": "Битне төзүче",
        "pageinfo-firsttime": "Битне төзү датасы",
        "pageinfo-lastuser": "Соңгы мөхәррирләүче",
        "pageinfo-lasttime": "Соңгы үзгәртү датасы",
        "pageinfo-edits": "Гомуми төзәтүләр саны",
        "pageinfo-authors": "Гомуми авторлар саны",
+       "pageinfo-recent-edits": "Соңгы вакытта үзгәртүләр ($1 эчендә)",
+       "pageinfo-recent-authors": "Кабатланмас авторлар саны",
        "pageinfo-toolboxlink": "Бит турында мәгълүмат",
        "pageinfo-redirectsto": "Юнәлтү",
        "pageinfo-redirectsto-info": "мәгълүмат",
        "version-libraries-description": "Тасвирлама",
        "version-libraries-authors": "Авторлар",
        "redirect-submit": "Күчү",
+       "redirect-lookup": "Эзләү:",
+       "redirect-value": "Мәгънәсе",
+       "redirect-user": "Кулланучы идентификаторы",
+       "redirect-page": "Бит идентификаторы",
+       "redirect-revision": "Бит юрамасы",
+       "redirect-file": "Файл исеме",
        "fileduplicatesearch": "Бер үк файлларны эзләү",
        "fileduplicatesearch-submit": "Эзләү",
        "specialpages": "Махсус битләр",
        "tags-delete": "бетерү",
        "tags-activate": "активлаштыру",
        "tags-deactivate": "сүндерү",
+       "tags-hitcount": "$1 {{PLURAL:$1|үзгәртү}}",
        "tags-create-submit": "Төзү",
        "comparepages": "Битләрне чагыштыру",
        "compare-page1": "Беренче сәхифә",
        "logentry-newusers-create2": "$1 - $3 исемле хисап язмасы {{GENDER:$2|төзеде}}",
        "logentry-newusers-autocreate": "{{GENDER:$2|кулланучының}} автоматик рәвештә $1 хисап язмасы төзелде",
        "logentry-upload-upload": "$1 {{GENDER:$2|йөкләде}} $3",
+       "logentry-upload-overwrite": "$1 $3 өчен яңа юрама {{GENDER:$2|йөкләде}}",
        "rightsnone": "(юк)",
        "feedback-adding": "Фикерне сәхифәгә өстәү ...",
        "feedback-back": "Артка",
index 6c4ed6b..69cdba1 100644 (file)
        "tooltip-preferences-save": "ترجیحات محفوظ کریں",
        "tooltip-summary": "مختصر خلاصہ درج کریں",
        "common.css": "body,\ntextarea {\n    font-family: Amiri;\n}",
+       "group-bureaucrat.css": "/* یہاں درج شدہ سی ایس ایس محض مامورین اداری کے لیے فعال رہے گی */",
+       "group-bureaucrat.js": "/* یہاں درج شدہ جاوا اسکرپٹ محض مامورین اداری کے لیے فعال رہے گی */",
        "anonymous": "{{SITENAME}} {{PLURAL:$1|کا|کے}} گمنام {{PLURAL:$1|صارف|صارفین}}",
        "siteuser": "{{SITENAME}} $1 صارف",
        "anonuser": "{{SITENAME}} کا گمنام صارف $1",
index c8ac1ad..996d562 100644 (file)
@@ -1,11 +1,11 @@
-ALTER TABLE /*_*/revision MODIFY rev_comment varbinary(767) NOT NULL;
-ALTER TABLE /*_*/archive MODIFY ar_comment varbinary(767) NOT NULL;
-ALTER TABLE /*_*/image MODIFY img_description varbinary(767) NOT NULL;
-ALTER TABLE /*_*/oldimage MODIFY oi_description varbinary(767) NOT NULL;
-ALTER TABLE /*_*/filearchive MODIFY fa_description varbinary(767);
+ALTER TABLE /*_*/revision MODIFY rev_comment varbinary(767) NOT NULL default '';
+ALTER TABLE /*_*/archive MODIFY ar_comment varbinary(767) NOT NULL default '';
+ALTER TABLE /*_*/image MODIFY img_description varbinary(767) NOT NULL default '';
+ALTER TABLE /*_*/oldimage MODIFY oi_description varbinary(767) NOT NULL default '';
+ALTER TABLE /*_*/filearchive MODIFY fa_description varbinary(767) default '';
 ALTER TABLE /*_*/filearchive MODIFY fa_deleted_reason varbinary(767) default '';
 ALTER TABLE /*_*/recentchanges MODIFY rc_comment varbinary(767) NOT NULL default '';
 ALTER TABLE /*_*/logging MODIFY log_comment varbinary(767) NOT NULL default '';
-ALTER TABLE /*_*/ipblocks MODIFY ipb_reason varbinary(767) NOT NULL;
-ALTER TABLE /*_*/protected_titles MODIFY pt_reason varbinary(767);
+ALTER TABLE /*_*/ipblocks MODIFY ipb_reason varbinary(767) NOT NULL default '';
+ALTER TABLE /*_*/protected_titles MODIFY pt_reason varbinary(767) default '';
 
index 60b8a7a..f1cd2b9 100644 (file)
@@ -25,7 +25,6 @@
  */
 
 require_once __DIR__ . '/Maintenance.php';
-require_once __DIR__ . '/../includes/export/DumpFilter.php';
 
 use Wikimedia\Rdbms\LoadBalancer;
 use Wikimedia\Rdbms\IDatabase;
index 6b7d1af..4f7af21 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="8" height="8">
-<circle cx="4" cy="4" r="2"/>
+       <circle cx="4" cy="4" r="2"/>
 </svg>
index 81e18c9..fd36db1 100644 (file)
@@ -79,6 +79,9 @@ class FindHooks extends Maintenance {
                $nonRecurseDirs = [
                        "$IP/",
                ];
+               $extraFiles = [
+                       "$IP/tests/phpunit/MediaWikiTestCase.php",
+               ];
 
                foreach ( $recurseDirs as $dir ) {
                        $ret = $this->getHooksFromDir( $dir, self::FIND_RECURSIVE );
@@ -90,6 +93,10 @@ class FindHooks extends Maintenance {
                        $potentialHooks = array_merge( $potentialHooks, $ret['good'] );
                        $badHooks = array_merge( $badHooks, $ret['bad'] );
                }
+               foreach ( $extraFiles as $file ) {
+                       $potentialHooks = array_merge( $potentialHooks, $this->getHooksFromFile( $file ) );
+                       $badHooks = array_merge( $badHooks, $this->getBadHooksFromFile( $file ) );
+               }
 
                $documented = array_keys( $documentedHooks );
                $potential = array_keys( $potentialHooks );
@@ -262,6 +269,8 @@ class FindHooks extends Maintenance {
                                $n = [];
                                if ( preg_match_all( '/((?:[^,\(\)]|\([^\(\)]*\))+)/', $match[4], $n ) ) {
                                        $args = array_map( 'trim', $n[1] );
+                                       // remove empty entries from trailing spaces
+                                       $args = array_filter( $args );
                                }
                        } elseif ( isset( $match[3] ) ) {
                                // Found a parameter for Hooks::run,
index ffb8c43..c173270 100644 (file)
@@ -46,6 +46,12 @@ then be available when querying for IP ranges at Special:Contributions.
 TEXT
                );
                $this->addOption( 'rev-id', 'The rev_id to start copying from. Default: 0', false, true );
+               $this->addOption(
+                       'max-rev-id',
+                       'The rev_id to stop at. Default: result of MAX(rev_id)',
+                       false,
+                       true
+               );
                $this->addOption(
                        'throttle',
                        'Wait this many milliseconds after copying each batch of revisions. Default: 0',
@@ -57,20 +63,25 @@ TEXT
 
        public function doDBUpdates() {
                $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+               $dbr = $this->getDB( DB_REPLICA, [ 'vslow' ] );
                $dbw = $this->getDB( DB_MASTER );
                $throttle = intval( $this->getOption( 'throttle', 0 ) );
+               $maxRevId = intval( $this->getOption( 'max-rev-id', 0 ) );
                $start = $this->getOption( 'rev-id', 0 );
-               $end = $dbw->selectField( 'revision', 'MAX(rev_id)', false, __METHOD__ );
+               $end = $maxRevId > 0
+                       ? $maxRevId
+                       : $dbw->selectField( 'revision', 'MAX(rev_id)', false, __METHOD__ );
                $blockStart = $start;
                $revCount = 0;
 
                $this->output( "Copying IP revisions to ip_changes, from rev_id $start to rev_id $end\n" );
 
                while ( $blockStart <= $end ) {
-                       $rows = $dbw->select(
+                       $blockEnd = min( $blockStart + 200, $end );
+                       $rows = $dbr->select(
                                'revision',
                                [ 'rev_id', 'rev_timestamp', 'rev_user_text' ],
-                               [ "rev_id >= $blockStart", 'rev_user' => 0 ],
+                               [ "rev_id BETWEEN $blockStart AND $blockEnd", 'rev_user' => 0 ],
                                __METHOD__,
                                [ 'ORDER BY' => 'rev_id ASC', 'LIMIT' => $this->mBatchSize ]
                        );
@@ -80,7 +91,7 @@ TEXT
                        }
 
                        $this->output( "...checking $this->mBatchSize revisions for IP edits that need copying, " .
-                               "starting with rev_id $blockStart\n" );
+                               "between rev_ids $blockStart and $blockEnd\n" );
 
                        $insertRows = [];
                        foreach ( $rows as $row ) {
index 10786da..818112f 100644 (file)
@@ -1451,6 +1451,7 @@ return [
                        'jquery.textSelection',
                        'mediawiki.api',
                        'mediawiki.diff.styles',
+                       'mediawiki.language',
                        'mediawiki.util',
                        'mediawiki.jqueryMsg',
                        'oojs-ui-core',
@@ -2092,7 +2093,12 @@ return [
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.pagesWithProp.css',
        ],
        'mediawiki.special.preferences' => [
-               'scripts' => 'resources/src/mediawiki.special/mediawiki.special.preferences.js',
+               'scripts' => [
+                       'resources/src/mediawiki.special/mediawiki.special.preferences.confirmClose.js',
+                       'resources/src/mediawiki.special/mediawiki.special.preferences.convertmessagebox.js',
+                       'resources/src/mediawiki.special/mediawiki.special.preferences.tabs.js',
+                       'resources/src/mediawiki.special/mediawiki.special.preferences.timezone.js',
+               ],
                'messages' => [
                        'prefs-tabs-navigation-hint',
                        'prefswarning-warning',
index 12212ff..70512e0 100644 (file)
@@ -83,7 +83,9 @@ function migrateWarn( msg ) {
                warnedAbout[ msg ] = true;
                jQuery.migrateWarnings.push( msg );
                // PATCH: Add instrumentation for statistics --Krinkle
-               mw.track( "mw.deprecate", "jquery-migrate" );
+               if ( window.mw && window.mw.track ) {
+                       window.mw.track( "mw.deprecate", "jquery-migrate" );
+               }
                if ( console && console.warn && !jQuery.migrateMute ) {
                        console.warn( "JQMIGRATE: " + msg );
                        if ( jQuery.migrateTrace && console.trace ) {
index 7602dae..ab1ce27 100644 (file)
                                if ( response.parse.langlinks && mw.config.get( 'skin' ) === 'vector' ) {
                                        newList = [];
                                        $.each( response.parse.langlinks, function ( i, langlink ) {
+                                               var bcp47 = mw.language.bcp47( langlink.lang );
                                                li = $( '<li>' )
                                                        .addClass( 'interlanguage-link interwiki-' + langlink.lang )
                                                        .append( $( '<a>' )
                                                                .attr( {
                                                                        href: langlink.url,
                                                                        title: langlink.title + ' - ' + langlink.langname,
-                                                                       lang: langlink.lang,
-                                                                       hreflang: langlink.lang
+                                                                       lang: bcp47,
+                                                                       hreflang: bcp47
                                                                } )
                                                                .text( langlink.autonym )
                                                        );
index 1f9fd39..3b882a6 100644 (file)
                } );
        };
 
-       /**
-        * Check whether the default values of the filters are all false.
-        *
-        * @return {boolean} Default filters are all false
-        */
-       mw.rcfilters.dm.FiltersViewModel.prototype.areDefaultFiltersEmpty = function () {
-               var defaultFilters;
-
-               if ( this.defaultFiltersEmpty === null ) {
-                       // We only need to do this test once,
-                       // because defaults are set once per session
-                       defaultFilters = this.getFiltersFromParameters( this.getDefaultParams() );
-                       this.defaultFiltersEmpty = $.isEmptyObject( defaultFilters ) || Object.keys( defaultFilters ).every( function ( filterName ) {
-                               return !defaultFilters[ filterName ];
-                       } );
-               }
-
-               return this.defaultFiltersEmpty;
-       };
-
        /**
         * Get the item that matches the given name
         *
index d87ef73..f878941 100644 (file)
         * An item has changed
         */
 
+       /**
+        * @event default
+        * @param {string} New default ID
+        *
+        * The default has changed
+        */
+
        /* Methods */
 
        /**
                        this.getItems().forEach( function ( item ) {
                                item.toggleDefault( item.getID() === itemID );
                        } );
+
+                       this.emit( 'default', itemID );
                }
        };
 
index b07df57..507c979 100644 (file)
                this.updateChangesList();
        };
 
+       /**
+        * Check whether the default values of the filters are all false.
+        *
+        * @return {boolean} Defaults are all false
+        */
+       mw.rcfilters.Controller.prototype.areDefaultsEmpty = function () {
+               var defaultFilters = this.filtersModel.getFiltersFromParameters( this._getDefaultParams() );
+
+               this._deleteExcludedValuesFromFilterState( defaultFilters );
+
+               // Defaults can change in a session, so we need to do this every time
+               return Object.keys( defaultFilters ).every( function ( filterName ) {
+                       return !defaultFilters[ filterName ];
+               } );
+       };
+
        /**
         * Empty all selected filters
         */
 
                        queryHighlights = data.highlights || {};
                        savedParams = this.filtersModel.getParametersFromFilters(
-                               // Merge filters with sticky values
                                $.extend( true, {}, data.filters, this.filtersModel.getStickyFiltersState() )
                        );
 
index f4ca717..deaee28 100644 (file)
@@ -16,7 +16,7 @@
                &-color {
                        &-none {
                                display: inline-block;
-                               li.mw-changeslist-watchedseen & {
+                               .mw-changeslist-watchedseen & {
                                        .mw-rcfilters-ui-changesListWrapperWidget.mw-rcfilters-ui-changesListWrapperWidget-highlighted & {
                                                .mw-rcfilters-mixin-circle( @highlight-none, @result-circle-diameter, 0, true, @highlight-grey, true );
                                        }
@@ -26,7 +26,7 @@
                                        }
                                }
 
-                               li.mw-changeslist-watchedunseen & {
+                               .mw-changeslist-watchedunseen & {
                                        .mw-rcfilters-ui-changesListWrapperWidget.mw-rcfilters-ui-changesListWrapperWidget-highlighted & {
                                                .mw-rcfilters-mixin-circle( @highlight-grey, @result-circle-diameter, 0, true, @highlight-grey );
                                        }
index df3263a..757a000 100644 (file)
@@ -99,7 +99,8 @@
                        } );
                        this.queriesModel.connect( this, {
                                itemUpdate: 'onSavedQueriesItemUpdate',
-                               initialize: 'onSavedQueriesInitialize'
+                               initialize: 'onSavedQueriesInitialize',
+                               'default': 'reevaluateResetRestoreState'
                        } );
                }
 
         * Reevaluate the restore state for the widget between setting to defaults and clearing all filters
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.reevaluateResetRestoreState = function () {
-               var defaultsAreEmpty = this.model.areDefaultFiltersEmpty(),
+               var defaultsAreEmpty = this.controller.areDefaultsEmpty(),
                        currFiltersAreEmpty = this.model.areCurrentFiltersEmpty(),
                        hideResetButton = currFiltersAreEmpty && defaultsAreEmpty;
 
index 3e0d2b9..916c463 100644 (file)
@@ -76,6 +76,16 @@ textarea {
        width: auto;
 }
 
+#contentSub:empty,
+#contentSub2:empty {
+       display: none;
+}
+
+#contentSub:empty ~ #jump-to-nav,
+#contentSub2:empty ~ #jump-to-nav {
+       margin-top: 0;
+}
+
 span.subpages {
        display: block;
 }
index 954e074..6b25327 100644 (file)
@@ -1,7 +1,7 @@
 /*!
  * JavaScript for Special:Watchlist
  */
-( function ( mw, $ ) {
+( function ( $ ) {
        $( function () {
                $( '.mw-changeslist-line-watched .mw-title a' ).on( 'click', function () {
                        $( this )
@@ -9,4 +9,4 @@
                                .removeClass( 'mw-changeslist-line-watched' );
                } );
        } );
-}( mediaWiki, jQuery ) );
+}( jQuery ) );
diff --git a/resources/src/mediawiki.special/mediawiki.special.preferences.confirmClose.js b/resources/src/mediawiki.special/mediawiki.special.preferences.confirmClose.js
new file mode 100644 (file)
index 0000000..45df37f
--- /dev/null
@@ -0,0 +1,63 @@
+/*!
+ * JavaScript for Special:Preferences: Enable save button and prevent the window being accidentally
+ * closed when any form field is changed.
+ */
+( function ( mw, $ ) {
+       $( function () {
+               var allowCloseWindow;
+
+               // Check if all of the form values are unchanged
+               function isPrefsChanged() {
+                       var inputs = $( '#mw-prefs-form :input[name]' ),
+                               input, $input, inputType,
+                               index, optIndex,
+                               opt;
+
+                       for ( index = 0; index < inputs.length; index++ ) {
+                               input = inputs[ index ];
+                               $input = $( input );
+
+                               // Different types of inputs have different methods for accessing defaults
+                               if ( $input.is( 'select' ) ) {
+                                       // <select> has the property defaultSelected for each option
+                                       for ( optIndex = 0; optIndex < input.options.length; optIndex++ ) {
+                                               opt = input.options[ optIndex ];
+                                               if ( opt.selected !== opt.defaultSelected ) {
+                                                       return true;
+                                               }
+                                       }
+                               } else if ( $input.is( 'input' ) ) { // <input> has defaultValue or defaultChecked
+                                       inputType = input.type;
+                                       if ( inputType === 'radio' || inputType === 'checkbox' ) {
+                                               if ( input.checked !== input.defaultChecked ) {
+                                                       return true;
+                                               }
+                                       } else if ( input.value !== input.defaultValue ) {
+                                               return true;
+                                       }
+                               }
+                       }
+
+                       return false;
+               }
+
+               // Disable the button to save preferences unless preferences have changed
+               // Check if preferences have been changed before JS has finished loading
+               if ( !isPrefsChanged() ) {
+                       $( '#prefcontrol' ).prop( 'disabled', true );
+                       $( '#preferences > fieldset' ).one( 'change keydown mousedown', function () {
+                               $( '#prefcontrol' ).prop( 'disabled', false );
+                       } );
+               }
+
+               // Set up a message to notify users if they try to leave the page without
+               // saving.
+               allowCloseWindow = mw.confirmCloseWindow( {
+                       test: isPrefsChanged,
+                       message: mw.msg( 'prefswarning-warning', mw.msg( 'saveprefs' ) ),
+                       namespace: 'prefswarning'
+               } );
+               $( '#mw-prefs-form' ).submit( $.proxy( allowCloseWindow, 'release' ) );
+               $( '#mw-prefs-restoreprefs' ).click( $.proxy( allowCloseWindow, 'release' ) );
+       } );
+}( mediaWiki, jQuery ) );
diff --git a/resources/src/mediawiki.special/mediawiki.special.preferences.convertmessagebox.js b/resources/src/mediawiki.special/mediawiki.special.preferences.convertmessagebox.js
new file mode 100644 (file)
index 0000000..e6b7432
--- /dev/null
@@ -0,0 +1,9 @@
+/*!
+ * JavaScript for Special:Preferences: Check for successbox to replace with notifications.
+ */
+( function ( $ ) {
+       $( function () {
+               var convertmessagebox = require( 'mediawiki.notification.convertmessagebox' );
+               convertmessagebox();
+       } );
+}( jQuery ) );
diff --git a/resources/src/mediawiki.special/mediawiki.special.preferences.js b/resources/src/mediawiki.special/mediawiki.special.preferences.js
deleted file mode 100644 (file)
index b86f218..0000000
+++ /dev/null
@@ -1,305 +0,0 @@
-/*!
- * JavaScript for Special:Preferences
- */
-( function ( mw, $ ) {
-       $( function () {
-               var $preftoc, $preferences, $fieldsets, labelFunc, previousTab,
-                       $tzSelect, $tzTextbox, $localtimeHolder, servertime, allowCloseWindow,
-                       convertmessagebox = require( 'mediawiki.notification.convertmessagebox' );
-
-               labelFunc = function () {
-                       return this.id.replace( /^mw-prefsection/g, 'preftab' );
-               };
-
-               $preftoc = $( '#preftoc' );
-               $preferences = $( '#preferences' );
-
-               $fieldsets = $preferences.children( 'fieldset' )
-                       .attr( {
-                               role: 'tabpanel',
-                               'aria-labelledby': labelFunc
-                       } );
-               $fieldsets.not( '#mw-prefsection-personal' )
-                       .hide()
-                       .attr( 'aria-hidden', 'true' );
-
-               // T115692: The following is kept for backwards compatibility with older skins
-               $preferences.addClass( 'jsprefs' );
-               $fieldsets.addClass( 'prefsection' );
-               $fieldsets.children( 'legend' ).addClass( 'mainLegend' );
-
-               // Make sure the accessibility tip is selectable so that screen reader users take notice,
-               // but hide it per default to reduce interface clutter. Also make sure it becomes visible
-               // when selected. Similar to jquery.mw-jump
-               $( '<div>' ).addClass( 'mw-navigation-hint' )
-                       .text( mw.msg( 'prefs-tabs-navigation-hint' ) )
-                       .attr( 'tabIndex', 0 )
-                       .on( 'focus blur', function ( e ) {
-                               if ( e.type === 'blur' || e.type === 'focusout' ) {
-                                       $( this ).css( 'height', '0' );
-                               } else {
-                                       $( this ).css( 'height', 'auto' );
-                               }
-                       } ).insertBefore( $preftoc );
-
-               /**
-                * It uses document.getElementById for security reasons (HTML injections in $()).
-                *
-                * @ignore
-                * @param {string} name the name of a tab without the prefix ("mw-prefsection-")
-                * @param {string} [mode] A hash will be set according to the current
-                *  open section. Set mode 'noHash' to surpress this.
-                */
-               function switchPrefTab( name, mode ) {
-                       var $tab, scrollTop;
-                       // Handle hash manually to prevent jumping,
-                       // therefore save and restore scrollTop to prevent jumping.
-                       scrollTop = $( window ).scrollTop();
-                       if ( mode !== 'noHash' ) {
-                               location.hash = '#mw-prefsection-' + name;
-                       }
-                       $( window ).scrollTop( scrollTop );
-
-                       $preftoc.find( 'li' ).removeClass( 'selected' )
-                               .find( 'a' ).attr( {
-                                       tabIndex: -1,
-                                       'aria-selected': 'false'
-                               } );
-
-                       $tab = $( document.getElementById( 'preftab-' + name ) );
-                       if ( $tab.length ) {
-                               $tab.attr( {
-                                       tabIndex: 0,
-                                       'aria-selected': 'true'
-                               } ).focus()
-                                       .parent().addClass( 'selected' );
-
-                               $preferences.children( 'fieldset' ).hide().attr( 'aria-hidden', 'true' );
-                               $( document.getElementById( 'mw-prefsection-' + name ) ).show().attr( 'aria-hidden', 'false' );
-                       }
-               }
-
-               // Check for successbox to replace with notifications
-               convertmessagebox();
-
-               // Enable keyboard users to use left and right keys to switch tabs
-               $preftoc.on( 'keydown', function ( event ) {
-                       var keyLeft = 37,
-                               keyRight = 39,
-                               $el;
-
-                       if ( event.keyCode === keyLeft ) {
-                               $el = $( '#preftoc li.selected' ).prev().find( 'a' );
-                       } else if ( event.keyCode === keyRight ) {
-                               $el = $( '#preftoc li.selected' ).next().find( 'a' );
-                       } else {
-                               return;
-                       }
-                       if ( $el.length > 0 ) {
-                               switchPrefTab( $el.attr( 'href' ).replace( '#mw-prefsection-', '' ) );
-                       }
-               } );
-
-               // Jump to correct section as indicated by the hash.
-               // This function is called onload and onhashchange.
-               function detectHash() {
-                       var hash = location.hash,
-                               matchedElement, parentSection;
-                       if ( hash.match( /^#mw-prefsection-[\w]+$/ ) ) {
-                               mw.storage.session.remove( 'mwpreferences-prevTab' );
-                               switchPrefTab( hash.replace( '#mw-prefsection-', '' ) );
-                       } else if ( hash.match( /^#mw-[\w-]+$/ ) ) {
-                               matchedElement = document.getElementById( hash.slice( 1 ) );
-                               parentSection = $( matchedElement ).parent().closest( '[id^="mw-prefsection-"]' );
-                               if ( parentSection.length ) {
-                                       mw.storage.session.remove( 'mwpreferences-prevTab' );
-                                       // Switch to proper tab and scroll to selected item.
-                                       switchPrefTab( parentSection.attr( 'id' ).replace( 'mw-prefsection-', '' ), 'noHash' );
-                                       matchedElement.scrollIntoView();
-                               }
-                       }
-               }
-
-               // In browsers that support the onhashchange event we will not bind click
-               // handlers and instead let the browser do the default behavior (clicking the
-               // <a href="#.."> will naturally set the hash, handled by onhashchange.
-               // But other things that change the hash will also be caught (e.g. using
-               // the Back and Forward browser navigation).
-               // Note the special check for IE "compatibility" mode.
-               if ( 'onhashchange' in window &&
-                       ( document.documentMode === undefined || document.documentMode >= 8 )
-               ) {
-                       $( window ).on( 'hashchange', function () {
-                               var hash = location.hash;
-                               if ( hash.match( /^#mw-[\w-]+/ ) ) {
-                                       detectHash();
-                               } else if ( hash === '' ) {
-                                       switchPrefTab( 'personal', 'noHash' );
-                               }
-                       } )
-                               // Run the function immediately to select the proper tab on startup.
-                               .trigger( 'hashchange' );
-               // In older browsers we'll bind a click handler as fallback.
-               // We must not have onhashchange *and* the click handlers, otherwise
-               // the click handler calls switchPrefTab() which sets the hash value,
-               // which triggers onhashchange and calls switchPrefTab() again.
-               } else {
-                       $preftoc.on( 'click', 'li a', function ( e ) {
-                               switchPrefTab( $( this ).attr( 'href' ).replace( '#mw-prefsection-', '' ) );
-                               e.preventDefault();
-                       } );
-                       // If we've reloaded the page or followed an open-in-new-window,
-                       // make the selected tab visible.
-                       detectHash();
-               }
-
-               // Timezone functions.
-               // Guesses Timezone from browser and updates fields onchange.
-
-               $tzSelect = $( '#mw-input-wptimecorrection' );
-               $tzTextbox = $( '#mw-input-wptimecorrection-other' );
-               $localtimeHolder = $( '#wpLocalTime' );
-               servertime = parseInt( $( 'input[name="wpServerTime"]' ).val(), 10 );
-
-               function minutesToHours( min ) {
-                       var tzHour = Math.floor( Math.abs( min ) / 60 ),
-                               tzMin = Math.abs( min ) % 60,
-                               tzString = ( ( min >= 0 ) ? '' : '-' ) + ( ( tzHour < 10 ) ? '0' : '' ) + tzHour +
-                                       ':' + ( ( tzMin < 10 ) ? '0' : '' ) + tzMin;
-                       return tzString;
-               }
-
-               function hoursToMinutes( hour ) {
-                       var minutes,
-                               arr = hour.split( ':' );
-
-                       arr[ 0 ] = parseInt( arr[ 0 ], 10 );
-
-                       if ( arr.length === 1 ) {
-                               // Specification is of the form [-]XX
-                               minutes = arr[ 0 ] * 60;
-                       } else {
-                               // Specification is of the form [-]XX:XX
-                               minutes = Math.abs( arr[ 0 ] ) * 60 + parseInt( arr[ 1 ], 10 );
-                               if ( arr[ 0 ] < 0 ) {
-                                       minutes *= -1;
-                               }
-                       }
-                       // Gracefully handle non-numbers.
-                       if ( isNaN( minutes ) ) {
-                               return 0;
-                       } else {
-                               return minutes;
-                       }
-               }
-
-               function updateTimezoneSelection() {
-                       var minuteDiff, localTime,
-                               type = $tzSelect.val();
-
-                       if ( type === 'other' ) {
-                               // User specified time zone manually in <input>
-                               // Grab data from the textbox, parse it.
-                               minuteDiff = hoursToMinutes( $tzTextbox.val() );
-                       } else {
-                               // Time zone not manually specified by user
-                               if ( type === 'guess' ) {
-                                       // Get browser timezone & fill it in
-                                       minuteDiff = -( new Date().getTimezoneOffset() );
-                                       $tzTextbox.val( minutesToHours( minuteDiff ) );
-                                       $tzSelect.val( 'other' );
-                                       $tzTextbox.prop( 'disabled', false );
-                               } else {
-                                       // Grab data from the $tzSelect value
-                                       minuteDiff = parseInt( type.split( '|' )[ 1 ], 10 ) || 0;
-                                       $tzTextbox.val( minutesToHours( minuteDiff ) );
-                               }
-
-                               // Set defaultValue prop on the generated box so we don't trigger the
-                               // unsaved preferences check
-                               $tzTextbox.prop( 'defaultValue', $tzTextbox.val() );
-                       }
-
-                       // Determine local time from server time and minutes difference, for display.
-                       localTime = servertime + minuteDiff;
-
-                       // Bring time within the [0,1440) range.
-                       localTime = ( ( localTime % 1440 ) + 1440 ) % 1440;
-
-                       $localtimeHolder.text( mw.language.convertNumber( minutesToHours( localTime ) ) );
-               }
-
-               if ( $tzSelect.length && $tzTextbox.length ) {
-                       $tzSelect.change( updateTimezoneSelection );
-                       $tzTextbox.blur( updateTimezoneSelection );
-                       updateTimezoneSelection();
-               }
-
-               // Restore the active tab after saving the preferences
-               previousTab = mw.storage.session.get( 'mwpreferences-prevTab' );
-               if ( previousTab ) {
-                       switchPrefTab( previousTab, 'noHash' );
-                       // Deleting the key, the tab states should be reset until we press Save
-                       mw.storage.session.remove( 'mwpreferences-prevTab' );
-               }
-
-               $( '#mw-prefs-form' ).on( 'submit', function () {
-                       var value = $( $preftoc ).find( 'li.selected a' ).attr( 'id' ).replace( 'preftab-', '' );
-                       mw.storage.session.set( 'mwpreferences-prevTab', value );
-               } );
-
-               // Check if all of the form values are unchanged
-               function isPrefsChanged() {
-                       var inputs = $( '#mw-prefs-form :input[name]' ),
-                               input, $input, inputType,
-                               index, optIndex,
-                               opt;
-
-                       for ( index = 0; index < inputs.length; index++ ) {
-                               input = inputs[ index ];
-                               $input = $( input );
-
-                               // Different types of inputs have different methods for accessing defaults
-                               if ( $input.is( 'select' ) ) {
-                                       // <select> has the property defaultSelected for each option
-                                       for ( optIndex = 0; optIndex < input.options.length; optIndex++ ) {
-                                               opt = input.options[ optIndex ];
-                                               if ( opt.selected !== opt.defaultSelected ) {
-                                                       return true;
-                                               }
-                                       }
-                               } else if ( $input.is( 'input' ) ) { // <input> has defaultValue or defaultChecked
-                                       inputType = input.type;
-                                       if ( inputType === 'radio' || inputType === 'checkbox' ) {
-                                               if ( input.checked !== input.defaultChecked ) {
-                                                       return true;
-                                               }
-                                       } else if ( input.value !== input.defaultValue ) {
-                                               return true;
-                                       }
-                               }
-                       }
-
-                       return false;
-               }
-
-               // Disable the button to save preferences unless preferences have changed
-               // Check if preferences have been changed before JS has finished loading
-               if ( !isPrefsChanged() ) {
-                       $( '#prefcontrol' ).prop( 'disabled', true );
-                       $( '#preferences > fieldset' ).one( 'change keydown mousedown', function () {
-                               $( '#prefcontrol' ).prop( 'disabled', false );
-                       } );
-               }
-
-               // Set up a message to notify users if they try to leave the page without
-               // saving.
-               allowCloseWindow = mw.confirmCloseWindow( {
-                       test: isPrefsChanged,
-                       message: mw.msg( 'prefswarning-warning', mw.msg( 'saveprefs' ) ),
-                       namespace: 'prefswarning'
-               } );
-               $( '#mw-prefs-form' ).submit( $.proxy( allowCloseWindow, 'release' ) );
-               $( '#mw-prefs-restoreprefs' ).click( $.proxy( allowCloseWindow, 'release' ) );
-       } );
-}( mediaWiki, jQuery ) );
diff --git a/resources/src/mediawiki.special/mediawiki.special.preferences.tabs.js b/resources/src/mediawiki.special/mediawiki.special.preferences.tabs.js
new file mode 100644 (file)
index 0000000..dcfad27
--- /dev/null
@@ -0,0 +1,165 @@
+/*!
+ * JavaScript for Special:Preferences: Tab navigation.
+ */
+( function ( mw, $ ) {
+       $( function () {
+               var $preftoc, $preferences, $fieldsets, labelFunc, previousTab;
+
+               labelFunc = function () {
+                       return this.id.replace( /^mw-prefsection/g, 'preftab' );
+               };
+
+               $preftoc = $( '#preftoc' );
+               $preferences = $( '#preferences' );
+
+               $fieldsets = $preferences.children( 'fieldset' )
+                       .attr( {
+                               role: 'tabpanel',
+                               'aria-labelledby': labelFunc
+                       } );
+               $fieldsets.not( '#mw-prefsection-personal' )
+                       .hide()
+                       .attr( 'aria-hidden', 'true' );
+
+               // T115692: The following is kept for backwards compatibility with older skins
+               $preferences.addClass( 'jsprefs' );
+               $fieldsets.addClass( 'prefsection' );
+               $fieldsets.children( 'legend' ).addClass( 'mainLegend' );
+
+               // Make sure the accessibility tip is selectable so that screen reader users take notice,
+               // but hide it per default to reduce interface clutter. Also make sure it becomes visible
+               // when selected. Similar to jquery.mw-jump
+               $( '<div>' ).addClass( 'mw-navigation-hint' )
+                       .text( mw.msg( 'prefs-tabs-navigation-hint' ) )
+                       .attr( 'tabIndex', 0 )
+                       .on( 'focus blur', function ( e ) {
+                               if ( e.type === 'blur' || e.type === 'focusout' ) {
+                                       $( this ).css( 'height', '0' );
+                               } else {
+                                       $( this ).css( 'height', 'auto' );
+                               }
+                       } ).insertBefore( $preftoc );
+
+               /**
+                * It uses document.getElementById for security reasons (HTML injections in $()).
+                *
+                * @ignore
+                * @param {string} name the name of a tab without the prefix ("mw-prefsection-")
+                * @param {string} [mode] A hash will be set according to the current
+                *  open section. Set mode 'noHash' to surpress this.
+                */
+               function switchPrefTab( name, mode ) {
+                       var $tab, scrollTop;
+                       // Handle hash manually to prevent jumping,
+                       // therefore save and restore scrollTop to prevent jumping.
+                       scrollTop = $( window ).scrollTop();
+                       if ( mode !== 'noHash' ) {
+                               location.hash = '#mw-prefsection-' + name;
+                       }
+                       $( window ).scrollTop( scrollTop );
+
+                       $preftoc.find( 'li' ).removeClass( 'selected' )
+                               .find( 'a' ).attr( {
+                                       tabIndex: -1,
+                                       'aria-selected': 'false'
+                               } );
+
+                       $tab = $( document.getElementById( 'preftab-' + name ) );
+                       if ( $tab.length ) {
+                               $tab.attr( {
+                                       tabIndex: 0,
+                                       'aria-selected': 'true'
+                               } ).focus()
+                                       .parent().addClass( 'selected' );
+
+                               $preferences.children( 'fieldset' ).hide().attr( 'aria-hidden', 'true' );
+                               $( document.getElementById( 'mw-prefsection-' + name ) ).show().attr( 'aria-hidden', 'false' );
+                       }
+               }
+
+               // Enable keyboard users to use left and right keys to switch tabs
+               $preftoc.on( 'keydown', function ( event ) {
+                       var keyLeft = 37,
+                               keyRight = 39,
+                               $el;
+
+                       if ( event.keyCode === keyLeft ) {
+                               $el = $( '#preftoc li.selected' ).prev().find( 'a' );
+                       } else if ( event.keyCode === keyRight ) {
+                               $el = $( '#preftoc li.selected' ).next().find( 'a' );
+                       } else {
+                               return;
+                       }
+                       if ( $el.length > 0 ) {
+                               switchPrefTab( $el.attr( 'href' ).replace( '#mw-prefsection-', '' ) );
+                       }
+               } );
+
+               // Jump to correct section as indicated by the hash.
+               // This function is called onload and onhashchange.
+               function detectHash() {
+                       var hash = location.hash,
+                               matchedElement, parentSection;
+                       if ( hash.match( /^#mw-prefsection-[\w]+$/ ) ) {
+                               mw.storage.session.remove( 'mwpreferences-prevTab' );
+                               switchPrefTab( hash.replace( '#mw-prefsection-', '' ) );
+                       } else if ( hash.match( /^#mw-[\w-]+$/ ) ) {
+                               matchedElement = document.getElementById( hash.slice( 1 ) );
+                               parentSection = $( matchedElement ).parent().closest( '[id^="mw-prefsection-"]' );
+                               if ( parentSection.length ) {
+                                       mw.storage.session.remove( 'mwpreferences-prevTab' );
+                                       // Switch to proper tab and scroll to selected item.
+                                       switchPrefTab( parentSection.attr( 'id' ).replace( 'mw-prefsection-', '' ), 'noHash' );
+                                       matchedElement.scrollIntoView();
+                               }
+                       }
+               }
+
+               // In browsers that support the onhashchange event we will not bind click
+               // handlers and instead let the browser do the default behavior (clicking the
+               // <a href="#.."> will naturally set the hash, handled by onhashchange.
+               // But other things that change the hash will also be caught (e.g. using
+               // the Back and Forward browser navigation).
+               // Note the special check for IE "compatibility" mode.
+               if ( 'onhashchange' in window &&
+                       ( document.documentMode === undefined || document.documentMode >= 8 )
+               ) {
+                       $( window ).on( 'hashchange', function () {
+                               var hash = location.hash;
+                               if ( hash.match( /^#mw-[\w-]+/ ) ) {
+                                       detectHash();
+                               } else if ( hash === '' ) {
+                                       switchPrefTab( 'personal', 'noHash' );
+                               }
+                       } )
+                               // Run the function immediately to select the proper tab on startup.
+                               .trigger( 'hashchange' );
+               // In older browsers we'll bind a click handler as fallback.
+               // We must not have onhashchange *and* the click handlers, otherwise
+               // the click handler calls switchPrefTab() which sets the hash value,
+               // which triggers onhashchange and calls switchPrefTab() again.
+               } else {
+                       $preftoc.on( 'click', 'li a', function ( e ) {
+                               switchPrefTab( $( this ).attr( 'href' ).replace( '#mw-prefsection-', '' ) );
+                               e.preventDefault();
+                       } );
+                       // If we've reloaded the page or followed an open-in-new-window,
+                       // make the selected tab visible.
+                       detectHash();
+               }
+
+               // Restore the active tab after saving the preferences
+               previousTab = mw.storage.session.get( 'mwpreferences-prevTab' );
+               if ( previousTab ) {
+                       switchPrefTab( previousTab, 'noHash' );
+                       // Deleting the key, the tab states should be reset until we press Save
+                       mw.storage.session.remove( 'mwpreferences-prevTab' );
+               }
+
+               $( '#mw-prefs-form' ).on( 'submit', function () {
+                       var value = $( $preftoc ).find( 'li.selected a' ).attr( 'id' ).replace( 'preftab-', '' );
+                       mw.storage.session.set( 'mwpreferences-prevTab', value );
+               } );
+
+       } );
+}( mediaWiki, jQuery ) );
diff --git a/resources/src/mediawiki.special/mediawiki.special.preferences.timezone.js b/resources/src/mediawiki.special/mediawiki.special.preferences.timezone.js
new file mode 100644 (file)
index 0000000..58a5f84
--- /dev/null
@@ -0,0 +1,92 @@
+/*!
+ * JavaScript for Special:Preferences: Timezone field enhancements.
+ */
+( function ( mw, $ ) {
+       $( function () {
+               var
+                       $tzSelect, $tzTextbox, $localtimeHolder, servertime;
+
+               // Timezone functions.
+               // Guesses Timezone from browser and updates fields onchange.
+
+               $tzSelect = $( '#mw-input-wptimecorrection' );
+               $tzTextbox = $( '#mw-input-wptimecorrection-other' );
+               $localtimeHolder = $( '#wpLocalTime' );
+               servertime = parseInt( $( 'input[name="wpServerTime"]' ).val(), 10 );
+
+               function minutesToHours( min ) {
+                       var tzHour = Math.floor( Math.abs( min ) / 60 ),
+                               tzMin = Math.abs( min ) % 60,
+                               tzString = ( ( min >= 0 ) ? '' : '-' ) + ( ( tzHour < 10 ) ? '0' : '' ) + tzHour +
+                                       ':' + ( ( tzMin < 10 ) ? '0' : '' ) + tzMin;
+                       return tzString;
+               }
+
+               function hoursToMinutes( hour ) {
+                       var minutes,
+                               arr = hour.split( ':' );
+
+                       arr[ 0 ] = parseInt( arr[ 0 ], 10 );
+
+                       if ( arr.length === 1 ) {
+                               // Specification is of the form [-]XX
+                               minutes = arr[ 0 ] * 60;
+                       } else {
+                               // Specification is of the form [-]XX:XX
+                               minutes = Math.abs( arr[ 0 ] ) * 60 + parseInt( arr[ 1 ], 10 );
+                               if ( arr[ 0 ] < 0 ) {
+                                       minutes *= -1;
+                               }
+                       }
+                       // Gracefully handle non-numbers.
+                       if ( isNaN( minutes ) ) {
+                               return 0;
+                       } else {
+                               return minutes;
+                       }
+               }
+
+               function updateTimezoneSelection() {
+                       var minuteDiff, localTime,
+                               type = $tzSelect.val();
+
+                       if ( type === 'other' ) {
+                               // User specified time zone manually in <input>
+                               // Grab data from the textbox, parse it.
+                               minuteDiff = hoursToMinutes( $tzTextbox.val() );
+                       } else {
+                               // Time zone not manually specified by user
+                               if ( type === 'guess' ) {
+                                       // Get browser timezone & fill it in
+                                       minuteDiff = -( new Date().getTimezoneOffset() );
+                                       $tzTextbox.val( minutesToHours( minuteDiff ) );
+                                       $tzSelect.val( 'other' );
+                                       $tzTextbox.prop( 'disabled', false );
+                               } else {
+                                       // Grab data from the $tzSelect value
+                                       minuteDiff = parseInt( type.split( '|' )[ 1 ], 10 ) || 0;
+                                       $tzTextbox.val( minutesToHours( minuteDiff ) );
+                               }
+
+                               // Set defaultValue prop on the generated box so we don't trigger the
+                               // unsaved preferences check
+                               $tzTextbox.prop( 'defaultValue', $tzTextbox.val() );
+                       }
+
+                       // Determine local time from server time and minutes difference, for display.
+                       localTime = servertime + minuteDiff;
+
+                       // Bring time within the [0,1440) range.
+                       localTime = ( ( localTime % 1440 ) + 1440 ) % 1440;
+
+                       $localtimeHolder.text( mw.language.convertNumber( minutesToHours( localTime ) ) );
+               }
+
+               if ( $tzSelect.length && $tzTextbox.length ) {
+                       $tzSelect.change( updateTimezoneSelection );
+                       $tzTextbox.blur( updateTimezoneSelection );
+                       updateTimezoneSelection();
+               }
+
+       } );
+}( mediaWiki, jQuery ) );
index 7ee98bb..3639525 100644 (file)
@@ -4,7 +4,7 @@
  * @copyright 2011-2016 VisualEditor Team and others; see AUTHORS.txt
  * @license The MIT License (MIT); see LICENSE.txt
  */
-( function ( $, mw ) {
+( function ( mw ) {
 
        /**
         * MediaWiki media resource queue.
@@ -79,4 +79,4 @@
        mw.widgets.MediaSearchQueue.prototype.getSearchQuery = function () {
                return this.getParams().gsrsearch;
        };
-}( jQuery, mediaWiki ) );
+}( mediaWiki ) );
index 5ba9481..cd937f7 100644 (file)
@@ -4,7 +4,7 @@
  * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
  * @license The MIT License (MIT); see LICENSE.txt
  */
-( function ( $, mw ) {
+( function ( mw ) {
 
        /**
         * Creates an mw.widgets.TitleSearchWidget object.
                return response.query || {};
        };
 
-}( jQuery, mediaWiki ) );
+}( mediaWiki ) );
index 36090ea..76bc86c 100644 (file)
@@ -9,7 +9,7 @@
  * Jeroen De Dauw <jeroendedauw at gmail dot com>
  */
 
-( function ( mw, $ ) {
+( function ( $ ) {
        'use strict';
 
        $( function () {
@@ -35,4 +35,4 @@
 
        } );
 
-}( mediaWiki, jQuery ) );
+}( jQuery ) );
index 0ae45b5..b522486 100644 (file)
                                        a = [];
 
                                for ( key in o ) {
-                                       if ( hasOwn.call( o, key ) ) {
-                                               a.push( key );
-                                       }
+                                       a.push( key );
                                }
                                a.sort();
                                for ( key = 0; key < a.length; key++ ) {
                         * @param {string} sourceLoadScript URL of load.php
                         */
                        function doRequest( moduleMap, currReqBase, sourceLoadScript ) {
-                               var query = $.extend(
-                                       { modules: buildModulesString( moduleMap ) },
-                                       currReqBase
-                               );
+                               // Optimisation: Inherit (Object.create), not copy ($.extend)
+                               var query = Object.create( currReqBase );
+                               query.modules = buildModulesString( moduleMap );
                                query = sortQuery( query );
                                addScript( sourceLoadScript + '?' + $.param( query ) );
                        }
                                                // modules for this group from this source.
                                                modules = splits[ source ][ group ];
 
-                                               currReqBase = $.extend( {
-                                                       version: getCombinedVersion( modules )
-                                               }, reqBase );
+                                               // Optimisation: Inherit (Object.create), not copy ($.extend)
+                                               currReqBase = Object.create( reqBase );
+                                               currReqBase.version = getCombinedVersion( modules );
+
                                                // For user modules append a user name to the query string.
                                                if ( group === 'user' && mw.config.get( 'wgUserName' ) !== null ) {
                                                        currReqBase.user = mw.config.get( 'wgUserName' );
index 2064e03..0aa0e03 100644 (file)
@@ -16142,6 +16142,68 @@ parsoid=wt2html
 <link rel="mw:PageProp/Category" href="./Category:Baz" data-parsoid='{"stx":"simple","a":{"href":"./Category:Baz"},"sa":{"href":"Category:Baz"}}'/>
 !! end
 
+!! test
+9. Categories and newlines: should behave properly with linkprefix (T87753)
+!! options
+language=ar
+!! wikitext
+foo bar
+foo bar
+[[تصنيف:Foo]]
+[[تصنيف:Bar]]
+!! html/php
+<p>foo bar
+foo bar
+</p>
+!! html/parsoid
+<p>foo bar
+foo bar</p>
+<link rel="mw:PageProp/Category" href="./تصنيف:Foo"/>
+<link rel="mw:PageProp/Category" href="./تصنيف:Bar"/>
+!! end
+
+!! test
+10. No regressions on internal links following category (T174639)
+!! options
+parsoid=wt2html,html2html
+!! wikitext
+[[Category:Foo]]<div>a
+
+[[Foo]]</div>
+!! html/php
+<div>a
+<a href="/wiki/Foo" title="Foo">Foo</a></div>
+
+!! html/parsoid
+<link rel="mw:PageProp/Category" href="./Category:Foo"/><div>a
+
+<a rel="mw:WikiLink" href="./Foo" title="Foo">Foo</a></div>
+!! end
+
+# NOTE that Parsoid does not currently implement this special case
+# (T175416).  The plan is to remove this weird special-case in the PHP
+# parser to make it match the Parsoid output.
+!! test
+11. Special case where only newlines separate links
+!! options
+parsoid=wt2html,html2html
+!! wikitext
+[[Category:Foo]]
+
+[[Foo]][[es:Alimento]]
+
+[[Foo]]
+!! html/php
+<p><a href="/wiki/Foo" title="Foo">Foo</a><a href="/wiki/Foo" title="Foo">Foo</a>
+</p>
+!! html/parsoid
+<link rel="mw:PageProp/Category" href="./Category:Foo"/>
+
+<p><a rel="mw:WikiLink" href="./Foo" title="Foo">Foo</a></p><link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Alimento"/>
+
+<p><a rel="mw:WikiLink" href="./Foo" title="Foo">Foo</a></p>
+!! end
+
 !! test
 Category links with multiple namespaces
 !! wikitext
@@ -16189,6 +16251,20 @@ x[[Category:Foo]]y
 <p>x<link rel="mw:PageProp/Category" href="./Flokkur:Foo" data-parsoid=""/>y</p>
 !! end
 
+!! test
+Link prefix/suffixes aren't applied to language links
+!! options
+parsoid=wt2html
+language=is
+!! wikitext
+x[[es:Foo]]y
+!! html/php
+<p>xy
+</p>
+!! html/parsoid
+<p>x<link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Foo" data-parsoid=""/>y</p>
+!! end
+
 !! test
 Parsoid: Serialize link to file page with colon escape
 !! options
index 6b7d1af..4f7af21 100644 (file)
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="8" height="8">
-<circle cx="4" cy="4" r="2"/>
+       <circle cx="4" cy="4" r="2"/>
 </svg>
index 527e129..87acb52 100644 (file)
@@ -142,7 +142,50 @@ class HooksTest extends MediaWikiTestCase {
                } );
                $foo = 'original';
                Hooks::run( 'MediaWikiHooksTest001', [ &$foo ] );
-               $this->assertSame( 'original', $foo, 'Hooks continued processing after a false return.' );
+               $this->assertSame( 'original', $foo, 'Hooks abort after a false return.' );
+       }
+
+       /**
+        * @covers Hooks::runWithoutAbort
+        */
+       public function testRunWithoutAbort() {
+               $list = [];
+               Hooks::register( 'MediaWikiHooksTest001', function ( &$list ) {
+                       $list[] = 1;
+                       return true; // Explicit true
+               } );
+               Hooks::register( 'MediaWikiHooksTest001', function ( &$list ) {
+                       $list[] = 2;
+                       return; // Implicit null
+               } );
+               Hooks::register( 'MediaWikiHooksTest001', function ( &$list ) {
+                       $list[] = 3;
+                       // No return
+               } );
+
+               Hooks::runWithoutAbort( 'MediaWikiHooksTest001', [ &$list ] );
+               $this->assertSame( [ 1, 2, 3 ], $list, 'All hooks ran.' );
+       }
+
+       /**
+        * @covers Hooks::runWithoutAbort
+        */
+       public function testRunWithoutAbortWarning() {
+               Hooks::register( 'MediaWikiHooksTest001', function ( &$foo ) {
+                       return false;
+               } );
+               Hooks::register( 'MediaWikiHooksTest001', function ( &$foo ) {
+                       $foo = 'test';
+                       return true;
+               } );
+               $foo = 'original';
+
+               $this->setExpectedException(
+                       UnexpectedValueException::class,
+                       'Invalid return from hook-MediaWikiHooksTest001-closure for ' .
+                               'unabortable MediaWikiHooksTest001'
+               );
+               Hooks::runWithoutAbort( 'MediaWikiHooksTest001', [ &$foo ] );
        }
 
        /**
index 25b754d..c5572b4 100644 (file)
@@ -477,4 +477,55 @@ class XmlTest extends MediaWikiTestCase {
                        ] )
                );
        }
+
+       /**
+        * @covers Xml::fieldset
+        */
+       public function testFieldset() {
+               $this->assertEquals(
+                       "<fieldset>\n",
+                       Xml::fieldset(),
+                       'Opening tag'
+               );
+               $this->assertEquals(
+                       "<fieldset>\n",
+                       Xml::fieldset( false ),
+                       'Opening tag (false means no legend)'
+               );
+               $this->assertEquals(
+                       "<fieldset>\n",
+                       Xml::fieldset( '' ),
+                       'Opening tag (empty string also means no legend)'
+               );
+               $this->assertEquals(
+                       "<fieldset>\n<legend>Foo</legend>\n",
+                       Xml::fieldset( 'Foo' ),
+                       'Opening tag with legend'
+               );
+               $this->assertEquals(
+                       "<fieldset>\n<legend>Foo</legend>\nBar\n</fieldset>\n",
+                       Xml::fieldset( 'Foo', 'Bar' ),
+                       'Entire element with legend'
+               );
+               $this->assertEquals(
+                       "<fieldset>\n<legend>Foo</legend>\n",
+                       Xml::fieldset( 'Foo', false ),
+                       'Opening tag with legend (false means no content and no closing tag)'
+               );
+               $this->assertEquals(
+                       "<fieldset>\n<legend>Foo</legend>\n\n</fieldset>\n",
+                       Xml::fieldset( 'Foo', '' ),
+                       'Entire element with legend but no content (empty string generates a closing tag)'
+               );
+               $this->assertEquals(
+                       "<fieldset class=\"bar\">\n<legend>Foo</legend>\nBar\n</fieldset>\n",
+                       Xml::fieldset( 'Foo', 'Bar', [ 'class' => 'bar' ] ),
+                       'Opening tag with legend and attributes'
+               );
+               $this->assertEquals(
+                       "<fieldset class=\"bar\">\n<legend>Foo</legend>\n",
+                       Xml::fieldset( 'Foo', false, [ 'class' => 'bar' ] ),
+                       'Entire element with legend and attributes'
+               );
+       }
 }
index f230197..53a4f7b 100644 (file)
@@ -7,6 +7,13 @@ class CollationFaTest extends MediaWikiTestCase {
         * against a random version of libicu
         */
 
+       public function setUp() {
+               parent::setUp();
+               if ( !extension_loaded( 'intl' ) ) {
+                       $this->markTestSkipped( "PHP extension 'intl' is not loaded, skipping." );
+               }
+       }
+
        /**
         * @dataProvider provideGetFirstLetter
         */
index 7d9a420..b06df97 100644 (file)
@@ -271,9 +271,9 @@ class CSSMinTest extends MediaWikiTestCase {
                // data: URIs for red.gif, green.gif, circle.svg
                $red   = 'data:image/gif;base64,R0lGODlhAQABAIAAAP8AADAAACwAAAAAAQABAAACAkQBADs=';
                $green = 'data:image/gif;base64,R0lGODlhAQABAIAAAACAADAAACwAAAAAAQABAAACAkQBADs=';
-               $svg = 'data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A'
-                       . '%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%228%22%20height%3D'
-                       . '%228%22%3E%0A%3Ccircle%20cx%3D%224%22%20cy%3D%224%22%20r%3D%222%22%2F%3E%0A%3C%2Fsvg%3E%0A';
+               $svg = 'data:image/svg+xml,%3C%3Fxml version=%221.0%22 encoding=%22UTF-8%22%3F%3E%0A'
+                       . '%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%228%22 height='
+                       . '%228%22%3E%0A%09%3Ccircle cx=%224%22 cy=%224%22 r=%222%22/%3E%0A%3C/svg%3E%0A';
 
                // @codingStandardsIgnoreStart Generic.Files.LineLength
                return [
@@ -361,7 +361,7 @@ class CSSMinTest extends MediaWikiTestCase {
                        [
                                'SVG files are embedded without base64 encoding and unnecessary IE 6 and 7 fallback',
                                'foo { /* @embed */ background: url(circle.svg); }',
-                               "foo { background: url($svg); }",
+                               "foo { background: url(\"$svg\"); }",
                        ],
                        [
                                'Two regular files in one rule',
index d817104..7203777 100755 (executable)
@@ -137,6 +137,15 @@ class PHPUnitMaintClass extends Maintenance {
                return Maintenance::DB_ADMIN;
        }
 
+       protected function addOption( $name, $description, $required = false,
+               $withArg = false, $shortName = false, $multiOccurrence = false
+       ) {
+               // ignore --quiet which does not really make sense for unit tests
+               if ( $name !== 'quiet' ) {
+                       parent::addOption( $name, $description, $required, $withArg, $shortName, $multiOccurrence );
+               }
+       }
+
        /**
         * Force the format of elements in $_SERVER['argv']
         *  - Split args such as "wiki=enwiki" into two separate arg elements "wiki" and "enwiki"
index 0c91e43..d51dc37 100644 (file)
@@ -1,4 +1,4 @@
-( function ( mw, $ ) {
+( function ( $ ) {
        var loremIpsum = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.';
 
        QUnit.module( 'jquery.makeCollapsible', QUnit.newMwEnvironment() );
 
                $clone.find( '.mw-collapsible-toggle a' ).trigger( 'click' );
        } );
-}( mediaWiki, jQuery ) );
+}( jQuery ) );
index acbd0da..58e4d29 100644 (file)
                        } ),
                        'Default parameters are stored properly per filter and group'
                );
-
-               assert.ok(
-                       !model.areDefaultFiltersEmpty(),
-                       'Check if default filters are empty when defaults exist'
-               );
-
-               // Reset on special filter object that has no defaults
-               model = new mw.rcfilters.dm.FiltersViewModel();
-               model.initializeFilters(
-                       [ {
-                               name: 'group1',
-                               type: 'send_unselected_if_any',
-                               filters: [
-                                       { name: 'filter1', label: 'group1filter1-label', description: 'group1filter1-desc' },
-                                       { name: 'filter2', label: 'group1filter2-label', description: 'group1filter2-desc' },
-                                       { name: 'filter3', label: 'group1filter3-label', description: 'group1filter3-desc' }
-                               ]
-                       } ]
-               );
-
-               assert.ok(
-                       model.areDefaultFiltersEmpty(),
-                       'Check if default filters are empty when defaults do not exist'
-               );
        } );
 
        QUnit.test( 'Finding matching filters', function ( assert ) {
index 35b6b71..14c2bb4 100644 (file)
@@ -1,4 +1,4 @@
-( function ( mw, $ ) {
+( function ( $ ) {
        QUnit.module( 'mediawiki.special.recentchanges', QUnit.newMwEnvironment() );
 
        // TODO: verify checkboxes == [ 'nsassociated', 'nsinvert' ]
@@ -61,4 +61,4 @@
                // DOM cleanup
                $env.remove();
        } );
-}( mediaWiki, jQuery ) );
+}( jQuery ) );
index 46d7837..2a4d991 100644 (file)
@@ -1,4 +1,4 @@
-( function ( $, mw ) {
+( function ( mw ) {
        QUnit.module( 'mediawiki.errorLogger', QUnit.newMwEnvironment() );
 
        QUnit.test( 'installGlobalHandler', function ( assert ) {
@@ -39,4 +39,4 @@
                assert.strictEqual( w.onerror( errorMessage, errorUrl, errorLine ), true,
                        'Global handler preserves true return from previous handler' );
        } );
-}( jQuery, mediaWiki ) );
+}( mediaWiki ) );