Merge "Improve documentation for wfParseUrl"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Sun, 18 Jun 2017 19:18:39 +0000 (19:18 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Sun, 18 Jun 2017 19:18:39 +0000 (19:18 +0000)
245 files changed:
.travis.yml
RELEASE-NOTES-1.30
autoload.php
docs/hooks.txt
includes/DefaultSettings.php
includes/EditPage.php
includes/GlobalFunctions.php
includes/Linker.php
includes/MediaWiki.php
includes/Sanitizer.php
includes/Title.php
includes/actions/Action.php
includes/actions/HistoryAction.php
includes/api/ApiBase.php
includes/api/ApiFormatBase.php
includes/api/ApiOpenSearch.php
includes/api/ApiParse.php
includes/api/i18n/cs.json
includes/api/i18n/de.json
includes/api/i18n/en.json
includes/api/i18n/gl.json
includes/api/i18n/he.json
includes/api/i18n/hu.json
includes/api/i18n/ko.json
includes/api/i18n/lt.json
includes/api/i18n/nb.json
includes/api/i18n/pt.json
includes/api/i18n/qqq.json
includes/api/i18n/ru.json
includes/api/i18n/zh-hans.json
includes/changes/ChangesList.php
includes/changes/EnhancedChangesList.php
includes/changes/OldChangesList.php
includes/changetags/ChangeTags.php
includes/context/ContextSource.php
includes/context/DerivativeContext.php
includes/context/IContextSource.php
includes/context/RequestContext.php
includes/db/DatabaseOracle.php
includes/debug/logger/monolog/AvroFormatter.php
includes/deferred/DeferredUpdates.php
includes/filerepo/FileBackendDBRepoWrapper.php
includes/filerepo/file/File.php
includes/filerepo/file/LocalFile.php
includes/gallery/ImageGalleryBase.php
includes/gallery/TraditionalImageGallery.php
includes/htmlform/OOUIHTMLForm.php
includes/import/WikiImporter.php
includes/installer/WebInstallerLanguage.php
includes/installer/i18n/ast.json
includes/installer/i18n/bs.json
includes/installer/i18n/ce.json
includes/installer/i18n/lij.json
includes/installer/i18n/mk.json
includes/installer/i18n/pt.json
includes/jobqueue/JobQueueDB.php
includes/jobqueue/JobRunner.php
includes/libs/CryptRand.php
includes/libs/filebackend/FileBackendStore.php
includes/libs/http/HttpAcceptNegotiator.php [new file with mode: 0644]
includes/libs/http/HttpAcceptParser.php [new file with mode: 0644]
includes/libs/mime/MimeAnalyzer.php
includes/libs/objectcache/MultiWriteBagOStuff.php
includes/libs/objectcache/WANObjectCache.php
includes/libs/rdbms/TransactionProfiler.php
includes/libs/rdbms/database/DBConnRef.php
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/database/DatabaseMssql.php
includes/libs/rdbms/database/DatabasePostgres.php
includes/libs/rdbms/database/IDatabase.php
includes/libs/rdbms/lbfactory/ILBFactory.php
includes/libs/rdbms/lbfactory/LBFactory.php
includes/libs/rdbms/loadmonitor/LoadMonitor.php
includes/linkeddata/PageDataRequestHandler.php [new file with mode: 0644]
includes/logging/LogEventsList.php
includes/media/DjVu.php
includes/media/MediaHandler.php
includes/objectcache/SqlBagOStuff.php
includes/page/CategoryPage.php
includes/parser/Parser.php
includes/parser/ParserCache.php
includes/parser/ParserOptions.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderContext.php
includes/revisiondelete/RevDelFileItem.php
includes/skins/Skin.php
includes/specialpage/ChangesListSpecialPage.php
includes/specialpage/SpecialPage.php
includes/specialpage/SpecialPageFactory.php
includes/specials/SpecialChangeContentModel.php
includes/specials/SpecialMIMEsearch.php
includes/specials/SpecialNewimages.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialPageData.php [new file with mode: 0644]
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUpload.php
includes/specials/pagers/ContribsPager.php
includes/specials/pagers/DeletedContribsPager.php
includes/specials/pagers/NewFilesPager.php
includes/templates/EnhancedChangesListGroup.mustache
includes/tidy/RaggettWrapper.php
includes/tidy/RemexCompatFormatter.php
includes/tidy/tidy.conf
includes/user/PasswordReset.php
includes/widget/search/InterwikiSearchResultSetWidget.php
includes/widget/search/InterwikiSearchResultWidget.php
includes/widget/search/SimpleSearchResultWidget.php
languages/Language.php
languages/LanguageConverter.php
languages/MessageLocalizer.php [new file with mode: 0644]
languages/classes/LanguageEn.php [new file with mode: 0644]
languages/i18n/ace.json
languages/i18n/af.json
languages/i18n/ar.json
languages/i18n/ast.json
languages/i18n/atj.json
languages/i18n/az.json
languages/i18n/azb.json
languages/i18n/ba.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bn.json
languages/i18n/br.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/cs.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es-formal.json
languages/i18n/es.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fr.json
languages/i18n/gl.json
languages/i18n/glk.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hr.json
languages/i18n/hy.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jv.json
languages/i18n/ka.json
languages/i18n/km.json
languages/i18n/ko.json
languages/i18n/lb.json
languages/i18n/lij.json
languages/i18n/lt.json
languages/i18n/lv.json
languages/i18n/lzh.json
languages/i18n/mg.json
languages/i18n/mk.json
languages/i18n/mr.json
languages/i18n/my.json
languages/i18n/nan.json
languages/i18n/nb.json
languages/i18n/nds-nl.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/ru.json
languages/i18n/rue.json
languages/i18n/sah.json
languages/i18n/sgs.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sq.json
languages/i18n/sv.json
languages/i18n/tcy.json
languages/i18n/tet.json
languages/i18n/th.json
languages/i18n/tt-cyrl.json
languages/i18n/uk.json
languages/i18n/ur.json
languages/i18n/vi.json
languages/i18n/yi.json
languages/i18n/yue.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesAr.php
languages/messages/MessagesArz.php
languages/messages/MessagesAtj.php
languages/messages/MessagesEn.php
maintenance/importDump.php
maintenance/importImages.php
resources/Resources.php
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FilterGroup.js
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.FiltersViewModel.js
resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ItemModel.js
resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js
resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js [new file with mode: 0644]
resources/src/mediawiki.rcfilters/mw.rcfilters.init.js
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterMenuHeaderWidget.less
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.FilterWrapperWidget.less
resources/src/mediawiki.rcfilters/styles/mw.rcfilters.ui.ItemMenuOptionWidget.less
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterMenuHeaderWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterTagMultiselectWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FilterWrapperWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.FormWrapperWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.ItemMenuOptionWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.MenuSelectWidget.js
resources/src/mediawiki.rcfilters/ui/mw.rcfilters.ui.TagItemWidget.js
resources/src/mediawiki.special/mediawiki.special.search.interwikiwidget.styles.less
resources/src/mediawiki/mediawiki.storage.js
resources/src/mediawiki/mediawiki.toc.js
resources/src/mediawiki/mediawiki.toc.print.css
tests/parser/parserTests.txt
tests/phpunit/includes/GlobalFunctions/wfArrayFilterTest.php [new file with mode: 0644]
tests/phpunit/includes/ReadOnlyModeTest.php
tests/phpunit/includes/SanitizerTest.php
tests/phpunit/includes/TitleTest.php
tests/phpunit/includes/api/ApiBaseTest.php
tests/phpunit/includes/api/ApiParseTest.php
tests/phpunit/includes/auth/AuthManagerTest.php
tests/phpunit/includes/changes/EnhancedChangesListTest.php
tests/phpunit/includes/changes/OldChangesListTest.php
tests/phpunit/includes/db/DatabaseSQLTest.php
tests/phpunit/includes/libs/http/HttpAcceptNegotiatorTest.php [new file with mode: 0644]
tests/phpunit/includes/libs/http/HttpAcceptParserTest.php [new file with mode: 0644]
tests/phpunit/includes/libs/objectcache/MultiWriteBagOStuffTest.php
tests/phpunit/includes/libs/objectcache/WANObjectCacheTest.php
tests/phpunit/includes/linkeddata/PageDataRequestHandlerTest.php [new file with mode: 0644]
tests/phpunit/includes/media/MediaHandlerTest.php
tests/phpunit/includes/media/XContentDimensionsTest.php [deleted file]
tests/phpunit/includes/parser/ParserOptionsTest.php
tests/phpunit/includes/specials/SpecialPageDataTest.php [new file with mode: 0644]
tests/phpunit/includes/user/PasswordResetTest.php
tests/phpunit/languages/LanguageTest.php
tests/phpunit/mocks/filebackend/MockFSFile.php
tests/qunit/QUnitTestResources.php
tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js [new file with mode: 0644]
tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.toc.test.js

index baf7f03..5e2c7a0 100644 (file)
@@ -31,11 +31,6 @@ matrix:
       php: hhvm-3.12
     - env: dbtype=mysql dbuser=root
       php: 7
-  allow_failures:
-    # Postgres support for unit tests is still buggy
-    # https://phabricator.wikimedia.org/T75174
-    - env: dbtype=postgres dbuser=travis
-      php: 5.5
 
 services:
   - mysql
index 343c296..0f5cb47 100644 (file)
@@ -27,6 +27,7 @@ production.
   ParserOptions would pollute the parser cache. Callers should use
   WikiPage::makeParserOptions() to create the ParserOptions object and only
   change options that affect the parser cache key.
+* (T45547) $wgUsePigLatinVariant added (off by default).
 
 === New features in 1.30 ===
 * (T37247) Output from Parser::parse() will now be wrapped in a div with
@@ -34,11 +35,12 @@ production.
   ParserOptions::setWrapOutputClass().
 * Added 'ChangeTagsAllowedAdd' hook, enabling extensions to allow software-
   specific tags to be added by users.
-* File storage backends that supports headers (eg. Swift) now store an
-  X-Content-Dimensions header for originals that contain the media's dimensions
-  as page ranges keyed by dimensions.
 * Added a 'ParserOptionsRegister' hook to allow extensions to register
   additional parser options.
+* (T45547) Included Pig Latin, a language game in English, as a
+  LanguageConverter variant.  This allows English-speaking developers
+  to develop and test LanguageConverter more easily.  Pig Latin can be
+  enabled by setting $wgUsePigLatinVariant to true.
 
 === Languages updated in 1.30 ===
 
@@ -79,6 +81,11 @@ changes to languages because of Phabricator reports.
 
 * …
 
+==== Pig Latin added ====
+* (T45547) Added Pig Latin, a made-up English variant (en-x-piglatin),
+  for easier variant development and testing. Disabled by default. It can be
+  enabled by setting $wgUsePigLatinVariant to true.
+
 === Other changes in 1.30 ===
 * The use of an associative array for $wgProxyList, where the IP address is in
   the key instead of the value, is deprecated (e.g. [ '127.0.0.1' => 'value' ]).
@@ -99,6 +106,14 @@ changes to languages because of Phabricator reports.
   or wikilinks.
 * (T163966) Page moves are now counted as edits for the purposes of
   autopromotion, i.e., they increment the user_editcount field in the database.
+* Two new hooks, LogEventsListLineEnding and NewPagesLineEnding were added for
+  manipulating Special:Log and Special:NewPages lines.
+* The OldChangesListRecentChangesLine, EnhancedChangesListModifyLineData,
+  PageHistoryLineEnding, ContributionsLineEnding and DeletedContributionsLineEnding
+  hooks have an additional parameter, for manipulating HTML data attributes of
+  RC/history lines. EnhancedChangesListModifyBlockLineData can do that via the
+  $data['attribs'] subarray.
+* (T130632) The OutputPage::enableTOC() method was removed.
 
 == Compatibility ==
 MediaWiki 1.30 requires PHP 5.5.9 or later. There is experimental support for
index 0264435..293bf6a 100644 (file)
@@ -426,6 +426,7 @@ $wgAutoloadLocalClasses = [
        'EmailNotification' => __DIR__ . '/includes/mail/EmailNotification.php',
        'EmaillingJob' => __DIR__ . '/includes/jobqueue/jobs/EmaillingJob.php',
        'EmptyBagOStuff' => __DIR__ . '/includes/libs/objectcache/EmptyBagOStuff.php',
+       'EnConverter' => __DIR__ . '/languages/classes/LanguageEn.php',
        'EncryptedPassword' => __DIR__ . '/includes/password/EncryptedPassword.php',
        'EnhancedChangesList' => __DIR__ . '/includes/changes/EnhancedChangesList.php',
        'EnotifNotifyJob' => __DIR__ . '/includes/jobqueue/jobs/EnotifNotifyJob.php',
@@ -701,6 +702,7 @@ $wgAutoloadLocalClasses = [
        'LanguageConverter' => __DIR__ . '/languages/LanguageConverter.php',
        'LanguageCu' => __DIR__ . '/languages/classes/LanguageCu.php',
        'LanguageDsb' => __DIR__ . '/languages/classes/LanguageDsb.php',
+       'LanguageEn' => __DIR__ . '/languages/classes/LanguageEn.php',
        'LanguageEs' => __DIR__ . '/languages/classes/LanguageEs.php',
        'LanguageEt' => __DIR__ . '/languages/classes/LanguageEt.php',
        'LanguageFi' => __DIR__ . '/languages/classes/LanguageFi.php',
@@ -979,6 +981,7 @@ $wgAutoloadLocalClasses = [
        'MessageBlobStore' => __DIR__ . '/includes/cache/MessageBlobStore.php',
        'MessageCache' => __DIR__ . '/includes/cache/MessageCache.php',
        'MessageContent' => __DIR__ . '/includes/content/MessageContent.php',
+       'MessageLocalizer' => __DIR__ . '/languages/MessageLocalizer.php',
        'MessageSpecifier' => __DIR__ . '/includes/libs/MessageSpecifier.php',
        'MigrateFileRepoLayout' => __DIR__ . '/maintenance/migrateFileRepoLayout.php',
        'MigrateUserGroup' => __DIR__ . '/maintenance/migrateUserGroup.php',
@@ -1070,6 +1073,7 @@ $wgAutoloadLocalClasses = [
        'PackedOverlayImageGallery' => __DIR__ . '/includes/gallery/PackedOverlayImageGallery.php',
        'Page' => __DIR__ . '/includes/page/Page.php',
        'PageArchive' => __DIR__ . '/includes/page/PageArchive.php',
+       'PageDataRequestHandler' => __DIR__ . '/includes/linkeddata/PageDataRequestHandler.php',
        'PageExists' => __DIR__ . '/maintenance/pageExists.php',
        'PageLangLogFormatter' => __DIR__ . '/includes/logging/PageLangLogFormatter.php',
        'PageProps' => __DIR__ . '/includes/PageProps.php',
@@ -1378,6 +1382,7 @@ $wgAutoloadLocalClasses = [
        'SpecialNewpages' => __DIR__ . '/includes/specials/SpecialNewpages.php',
        'SpecialPage' => __DIR__ . '/includes/specialpage/SpecialPage.php',
        'SpecialPageAction' => __DIR__ . '/includes/actions/SpecialPageAction.php',
+       'SpecialPageData' => __DIR__ . '/includes/specials/SpecialPageData.php',
        'SpecialPageFactory' => __DIR__ . '/includes/specialpage/SpecialPageFactory.php',
        'SpecialPageLanguage' => __DIR__ . '/includes/specials/SpecialPageLanguage.php',
        'SpecialPagesWithProp' => __DIR__ . '/includes/specials/SpecialPagesWithProp.php',
@@ -1606,6 +1611,8 @@ $wgAutoloadLocalClasses = [
        'WikiRevision' => __DIR__ . '/includes/import/WikiRevision.php',
        'WikiStatsOutput' => __DIR__ . '/maintenance/language/StatOutputs.php',
        'WikiTextStructure' => __DIR__ . '/includes/content/WikiTextStructure.php',
+       'Wikimedia\\Http\\HttpAcceptNegotiator' => __DIR__ . '/includes/libs/http/HttpAcceptNegotiator.php',
+       'Wikimedia\\Http\\HttpAcceptParser' => __DIR__ . '/includes/libs/http/HttpAcceptParser.php',
        'Wikimedia\\Rdbms\\Blob' => __DIR__ . '/includes/libs/rdbms/encasing/Blob.php',
        'Wikimedia\\Rdbms\\ChronologyProtector' => __DIR__ . '/includes/libs/rdbms/ChronologyProtector.php',
        'Wikimedia\\Rdbms\\ConnectionManager' => __DIR__ . '/includes/libs/rdbms/connectionmanager/ConnectionManager.php',
index 0e8b508..3d310c3 100644 (file)
@@ -1155,6 +1155,9 @@ $page: SpecialPage object for contributions
 &$ret: the HTML line
 $row: the DB row for this line
 &$classes: the classes to add to the surrounding <li>
+&$attribs: associative array of other HTML attributes for the <li> element.
+  Currently only data attributes reserved to MediaWiki are allowed
+  (see Sanitizer::isReservedDataAttribute).
 
 'ContributionsToolLinks': Change tool links above Special:Contributions
 $id: User identifier
@@ -1200,6 +1203,9 @@ $page: SpecialPage object for DeletedContributions
 &$ret: the HTML line
 $row: the DB row for this line
 &$classes: the classes to add to the surrounding <li>
+&$attribs: associative array of other HTML attributes for the <li> element.
+  Currently only data attributes reserved to MediaWiki are allowed
+  (see Sanitizer::isReservedDataAttribute).
 
 'DifferenceEngineAfterLoadNewText': called in DifferenceEngine::loadNewText()
 after the new revision's content has been loaded into the class member variable
@@ -1512,6 +1518,9 @@ $changesList: EnhancedChangesList object
 $block: An array of RecentChange objects in that block
 $rc: The RecentChange object for this line
 &$classes: An array of classes to change
+&$attribs: associative array of other HTML attributes for the <tr> element.
+  Currently only data attributes reserved to MediaWiki are allowed
+  (see Sanitizer::isReservedDataAttribute).
 
 'EnhancedChangesListModifyBlockLineData': to alter data used to build
 a non-grouped recent change line in EnhancedChangesList.
@@ -1999,6 +2008,16 @@ $file: the File object or false if broken link
 &$attribs: the attributes to be applied
 &$ret: the value to return if your hook returns false
 
+'LogEventsListLineEnding': Called before a Special:Log line is finished
+$page: the LogEventsList object
+&$ret: the HTML line
+$entry: the DatabaseLogEntry object for this row
+&$classes: the classes to add to the surrounding <li>
+&$attribs: associative array of other HTML attributes for the <li> element.
+  Currently only data attributes reserved to MediaWiki are allowed
+  (see Sanitizer::isReservedDataAttribute).
+
+
 'HtmlPageLinkRendererBegin':
 Used when generating internal and interwiki links in
 LinkRenderer, before processing starts.  Return false to skip default
@@ -2284,6 +2303,16 @@ $title: the diff page title (nullable)
 $old: the ?old= param value from the url
 $new: the ?new= param value from the url
 
+'NewPagesLineEnding': Called before a NewPages line is finished.
+$page: the SpecialNewPages object
+&$ret: the HTML line
+$row: the database row for this page (the recentchanges record and a few extras - see
+  NewPagesPager::getQueryInfo)
+&$classes: the classes to add to the surrounding <li>
+&$attribs: associative array of other HTML attributes for the <li> element.
+  Currently only data attributes reserved to MediaWiki are allowed
+  (see Sanitizer::isReservedDataAttribute).
+
 'NewRevisionFromEditComplete': Called when a revision was inserted due to an
 edit.
 $wikiPage: the WikiPage edited
@@ -2296,7 +2325,10 @@ return false to omit the line from RecentChanges and Watchlist special pages.
 &$changeslist: The OldChangesList instance.
 &$s: HTML of the form "<li>...</li>" containing one RC entry.
 $rc: The RecentChange object.
-&$classes: array of css classes for the <li> element
+&$classes: array of css classes for the <li> element.
+&$attribs: associative array of other HTML attributes for the <li> element.
+  Currently only data attributes reserved to MediaWiki are allowed
+  (see Sanitizer::isReservedDataAttribute).
 
 'OpenSearchUrls': Called when constructing the OpenSearch description XML. Hooks
 can alter or append to the array of URLs for search & suggestion formats.
@@ -2404,6 +2436,9 @@ $historyAction: the action object
 &$row: the revision row for this line
 &$s: the string representing this parsed line
 &$classes: array containing the <li> element classes
+&$attribs: associative array of other HTML attributes for the <li> element.
+  Currently only data attributes reserved to MediaWiki are allowed
+  (see Sanitizer::isReservedDataAttribute).
 
 'PageHistoryPager::doBatchLookups': Called after the pager query was run, before
 any output is generated, to allow batch lookups for prefetching information
index 5b7ca3e..00e26d9 100644 (file)
@@ -1455,6 +1455,8 @@ $wgGalleryOptions = [
        'captionLength' => true,
        // Show the filesize in bytes in categories
        'showBytes' => true,
+       // Show the dimensions (width x height) in categories
+       'showDimensions' => true,
        'mode' => 'traditional',
 ];
 
@@ -3056,6 +3058,12 @@ $wgDisableTitleConversion = false;
  */
 $wgDefaultLanguageVariant = false;
 
+/**
+ * Whether to enable the pig latin variant of English (en-x-piglatin),
+ * used to ease variant development work.
+ */
+$wgUsePigLatinVariant = false;
+
 /**
  * Disabled variants array of language variant conversion.
  *
@@ -6767,6 +6775,12 @@ $wgUseRCPatrol = true;
  */
 $wgStructuredChangeFiltersEnableSaving = true;
 
+/**
+ * Whether to show the new experimental views (like namespaces, tags, and users) in
+ * RecentChanges filters
+ */
+$wgStructuredChangeFiltersEnableExperimentalViews = false;
+
 /**
  * Use new page patrolling to check new pages on Special:Newpages
  */
@@ -8559,6 +8573,15 @@ $wgPopularPasswordFile = __DIR__ . '/../serialized/commonpasswords.cdb';
  */
 $wgMaxUserDBWriteDuration = false;
 
+/*
+ * Max time (in seconds) a job-generated transaction can spend in writes.
+ * If exceeded, the transaction is rolled back with an error instead of being committed.
+ *
+ * @var int|bool Disabled if false
+ * @since 1.30
+ */
+$wgMaxJobDBWriteDuration = false;
+
 /**
  * Mapping of event channels (or channel categories) to EventRelayer configuration.
  *
index f79a286..6be8771 100644 (file)
@@ -4335,8 +4335,6 @@ HTML
                $buttonLabel = $this->context->msg( $this->getSaveButtonLabel() )->text();
 
                $attribs = [
-                       'id' => 'wpSaveWidget',
-                       'inputId' => 'wpSave',
                        'name' => 'wpSave',
                        'tabindex' => ++$tabindex,
                ] + Linker::tooltipAndAccesskeyAttribs( 'save' );
@@ -4344,6 +4342,8 @@ HTML
                if ( $this->oouiEnabled ) {
                        $saveConfig = OOUI\Element::configFromHtmlAttributes( $attribs );
                        $buttons['save'] = new OOUI\ButtonInputWidget( [
+                               'id' => 'wpSaveWidget',
+                               'inputId' => 'wpSave',
                                // Support: IE 6 – Use <input>, otherwise it can't distinguish which button was clicked
                                'useInputTag' => true,
                                'flags' => [ 'constructive', 'primary' ],
@@ -4354,20 +4354,20 @@ HTML
                } else {
                        $buttons['save'] = Html::submitButton(
                                $buttonLabel,
-                               $attribs,
+                               $attribs + [ 'id' => 'wpSave' ],
                                [ 'mw-ui-progressive' ]
                        );
                }
 
                $attribs = [
-                       'id' => 'wpPreviewWidget',
-                       'inputId' => 'wpPreview',
                        'name' => 'wpPreview',
                        'tabindex' => ++$tabindex,
                ] + Linker::tooltipAndAccesskeyAttribs( 'preview' );
                if ( $this->oouiEnabled ) {
                        $previewConfig = OOUI\Element::configFromHtmlAttributes( $attribs );
                        $buttons['preview'] = new OOUI\ButtonInputWidget( [
+                               'id' => 'wpPreviewWidget',
+                               'inputId' => 'wpPreview',
                                // Support: IE 6 – Use <input>, otherwise it can't distinguish which button was clicked
                                'useInputTag' => true,
                                'label' => $this->context->msg( 'showpreview' )->text(),
@@ -4377,18 +4377,18 @@ HTML
                } else {
                        $buttons['preview'] = Html::submitButton(
                                $this->context->msg( 'showpreview' )->text(),
-                               $attribs
+                               $attribs + [ 'id' => 'wpPreview' ]
                        );
                }
                $attribs = [
-                       'id' => 'wpDiffWidget',
-                       'inputId' => 'wpDiff',
                        'name' => 'wpDiff',
                        'tabindex' => ++$tabindex,
                ] + Linker::tooltipAndAccesskeyAttribs( 'diff' );
                if ( $this->oouiEnabled ) {
                        $diffConfig = OOUI\Element::configFromHtmlAttributes( $attribs );
                        $buttons['diff'] = new OOUI\ButtonInputWidget( [
+                               'id' => 'wpDiffWidget',
+                               'inputId' => 'wpDiff',
                                // Support: IE 6 – Use <input>, otherwise it can't distinguish which button was clicked
                                'useInputTag' => true,
                                'label' => $this->context->msg( 'showdiff' )->text(),
@@ -4398,7 +4398,7 @@ HTML
                } else {
                        $buttons['diff'] = Html::submitButton(
                                $this->context->msg( 'showdiff' )->text(),
-                               $attribs
+                               $attribs + [ 'id' => 'wpDiff' ]
                        );
                }
 
index f7978c5..089ed81 100644 (file)
@@ -203,6 +203,38 @@ function wfArrayDiff2_cmp( $a, $b ) {
        }
 }
 
+/**
+ * Like array_filter with ARRAY_FILTER_USE_BOTH, but works pre-5.6.
+ *
+ * @param array $arr
+ * @param callable $callback Will be called with the array value and key (in that order) and
+ *   should return a bool which will determine whether the array element is kept.
+ * @return array
+ */
+function wfArrayFilter( array $arr, callable $callback ) {
+       if ( defined( 'ARRAY_FILTER_USE_BOTH' ) ) {
+               return array_filter( $arr, $callback, ARRAY_FILTER_USE_BOTH );
+       }
+       $filteredKeys = array_filter( array_keys( $arr ), function ( $key ) use ( $arr, $callback ) {
+               return call_user_func( $callback, $arr[$key], $key );
+       } );
+       return array_intersect_key( $arr, array_fill_keys( $filteredKeys, true ) );
+}
+
+/**
+ * Like array_filter with ARRAY_FILTER_USE_KEY, but works pre-5.6.
+ *
+ * @param array $arr
+ * @param callable $callback Will be called with the array key and should return a bool which
+ *   will determine whether the array element is kept.
+ * @return array
+ */
+function wfArrayFilterByKey( array $arr, callable $callback ) {
+       return wfArrayFilter( $arr, function ( $val, $key ) use ( $callback ) {
+               return call_user_func( $callback, $key );
+       } );
+}
+
 /**
  * Appends to second array if $value differs from that in $default
  *
index bed9957..b133ecd 100644 (file)
@@ -1561,7 +1561,7 @@ class Linker {
                $title = wfMessage( 'toc' )->inLanguage( $lang )->escaped();
 
                return '<div id="toc" class="toc">'
-                       . '<div id="toctitle" class="toctitle"><h2>' . $title . "</h2></div>\n"
+                       . '<div class="toctitle"><h2>' . $title . "</h2></div>\n"
                        . $toc
                        . "</ul>\n</div>\n";
        }
index 2125c23..364ed86 100644 (file)
@@ -898,9 +898,8 @@ class MediaWiki {
                        __METHOD__
                );
 
-               // Push lazilly-pushed jobs
                // Important: this must be the last deferred update added (T100085, T154425)
-               DeferredUpdates::addCallableUpdate( [ 'JobQueueGroup', 'pushLazyJobs' ] );
+               DeferredUpdates::addCallableUpdate( [ JobQueueGroup::class, 'pushLazyJobs' ] );
 
                // Do any deferred jobs
                DeferredUpdates::doUpdates( 'enqueue' );
index c4883ba..8920e92 100644 (file)
@@ -782,15 +782,12 @@ class Sanitizer {
 
                        # Allow any attribute beginning with "data-"
                        # However:
-                       # * data-ooui is reserved for ooui
-                       # * data-mw and data-parsoid are reserved for parsoid
-                       # * data-mw-<name here> is reserved for extensions (or core) if
-                       #   they need to communicate some data to the client and want to be
-                       #   sure that it isn't coming from an untrusted user.
+                       # * Disallow data attributes used by MediaWiki code
                        # * Ensure that the attribute is not namespaced by banning
                        #   colons.
-                       if ( !preg_match( '/^data-(?!ooui|mw|parsoid)[^:]*$/i', $attribute )
+                       if ( !preg_match( '/^data-[^:]*$/i', $attribute )
                                && !isset( $whitelist[$attribute] )
+                               || self::isReservedDataAttribute( $attribute )
                        ) {
                                continue;
                        }
@@ -858,6 +855,24 @@ class Sanitizer {
                return $out;
        }
 
+       /**
+        * Given an attribute name, checks whether it is a reserved data attribute
+        * (such as data-mw-foo) which is unavailable to user-generated HTML so MediaWiki
+        * core and extension code can safely use it to communicate with frontend code.
+        * @param string $attr Attribute name.
+        * @return bool
+        */
+       public static function isReservedDataAttribute( $attr ) {
+               // data-ooui is reserved for ooui.
+               // data-mw and data-parsoid are reserved for parsoid.
+               // data-mw-<name here> is reserved for extensions (or core) if
+               // they need to communicate some data to the client and want to be
+               // sure that it isn't coming from an untrusted user.
+               // We ignore the possibility of namespaces since user-generated HTML
+               // can't use them anymore.
+               return (bool)preg_match( '/^data-(ooui|mw|parsoid)/i', $attr );
+       }
+
        /**
         * Merge two sets of HTML attributes.  Conflicting items in the second set
         * will override those in the first, except for 'class' attributes which
@@ -1192,7 +1207,7 @@ class Sanitizer {
                ];
 
                $id = urlencode( strtr( $id, ' ', '_' ) );
-               $id = str_replace( array_keys( $replace ), array_values( $replace ), $id );
+               $id = strtr( $id, $replace );
 
                if ( !preg_match( '/^[a-zA-Z]/', $id ) && !in_array( 'noninitial', $options ) ) {
                        // Initial character must be a letter!
index a8cfad8..c9f09f7 100644 (file)
@@ -1419,13 +1419,22 @@ class Title implements LinkTarget {
         * @return string The prefixed text
         */
        private function prefix( $name ) {
+               global $wgContLang;
+
                $p = '';
                if ( $this->isExternal() ) {
                        $p = $this->mInterwiki . ':';
                }
 
                if ( 0 != $this->mNamespace ) {
-                       $p .= $this->getNsText() . ':';
+                       $nsText = $this->getNsText();
+
+                       if ( $nsText === false ) {
+                               // See T165149. Awkward, but better than erroneously linking to the main namespace.
+                               $nsText = $wgContLang->getNsText( NS_SPECIAL ) . ":Badtitle/NS{$this->mNamespace}";
+                       }
+
+                       $p .= $nsText . ':';
                }
                return $p . $name;
        }
index f06f828..844a0d6 100644 (file)
@@ -34,7 +34,7 @@
  * format (protect, delete, move, etc), and the just-do-something format (watch, rollback,
  * patrol, etc). The FormAction and FormlessAction classes represent these two groups.
  */
-abstract class Action {
+abstract class Action implements MessageLocalizer {
 
        /**
         * Page on which we're performing the action
@@ -253,7 +253,7 @@ abstract class Action {
         *
         * @return Message
         */
-       final public function msg() {
+       final public function msg( $key ) {
                $params = func_get_args();
                return call_user_func_array( [ $this->getContext(), 'msg' ], $params );
        }
index d1be7d4..7460340 100644 (file)
@@ -780,9 +780,11 @@ class HistoryPager extends ReverseChronologicalPager {
                        $s .= ' <span class="mw-changeslist-separator">. .</span> ' . $s2;
                }
 
-               Hooks::run( 'PageHistoryLineEnding', [ $this, &$row, &$s, &$classes ] );
+               $attribs = [ 'data-mw-revid' => $rev->getId() ];
+
+               Hooks::run( 'PageHistoryLineEnding', [ $this, &$row, &$s, &$classes, &$attribs ] );
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
 
-               $attribs = [];
                if ( $classes ) {
                        $attribs['class'] = implode( ' ', $classes );
                }
index a6c4b2a..5332d7e 100644 (file)
@@ -1863,6 +1863,23 @@ abstract class ApiBase extends ContextSource {
                        throw new MWException( 'Successful status passed to ApiBase::dieStatus' );
                }
 
+               // ApiUsageException needs a fatal status, but this method has
+               // historically accepted any non-good status. Convert it if necessary.
+               $status->setOK( false );
+               if ( !$status->getErrorsByType( 'error' ) ) {
+                       $newStatus = Status::newGood();
+                       foreach ( $status->getErrorsByType( 'warning' ) as $err ) {
+                               call_user_func_array(
+                                       [ $newStatus, 'fatal' ],
+                                       array_merge( [ $err['message'] ], $err['params'] )
+                               );
+                       }
+                       if ( !$newStatus->getErrorsByType( 'error' ) ) {
+                               $newStatus->fatal( 'unknownerror-nocode' );
+                       }
+                       $status = $newStatus;
+               }
+
                throw new ApiUsageException( $this, $status );
        }
 
index eb23bd6..36247dd 100644 (file)
@@ -219,7 +219,14 @@ abstract class ApiFormatBase extends ApiBase {
                        if ( !$this->getIsWrappedHtml() ) {
                                // When the format without suffix 'fm' is defined, there is a non-html version
                                if ( $this->getMain()->getModuleManager()->isDefined( $lcformat, 'format' ) ) {
-                                       $msg = $context->msg( 'api-format-prettyprint-header' )->params( $format, $lcformat );
+                                       if ( !$this->getRequest()->wasPosted() ) {
+                                               $nonHtmlUrl = strtok( $this->getRequest()->getFullRequestURL(), '?' )
+                                                       . '?' . $this->getRequest()->appendQueryValue( 'format', $lcformat );
+                                               $msg = $context->msg( 'api-format-prettyprint-header-hyperlinked' )
+                                                       ->params( $format, $lcformat, $nonHtmlUrl );
+                                       } else {
+                                               $msg = $context->msg( 'api-format-prettyprint-header' )->params( $format, $lcformat );
+                                       }
                                } else {
                                        $msg = $context->msg( 'api-format-prettyprint-header-only-html' )->params( $format );
                                }
index dc1b4e7..ff65d0e 100644 (file)
@@ -25,7 +25,6 @@
  */
 
 use MediaWiki\MediaWikiServices;
-use Wikimedia\Rdbms\Database;
 
 /**
  * @ingroup API
index 91e49ab..b2e03c8 100644 (file)
@@ -38,6 +38,9 @@ class ApiParse extends ApiBase {
        /** @var Content $pstContent */
        private $pstContent = null;
 
+       /** @var bool */
+       private $contentIsDeleted = false, $contentIsSuppressed = false;
+
        public function execute() {
                // The data is hot but user-dependent, like page views, so we set vary cookies
                $this->getMain()->setCacheMode( 'anon-public-user-private' );
@@ -85,6 +88,9 @@ class ApiParse extends ApiBase {
 
                $redirValues = null;
 
+               $needContent = isset( $prop['wikitext'] ) ||
+                       isset( $prop['parsetree'] ) || $params['generatexml'];
+
                // Return result
                $result = $this->getResult();
 
@@ -110,27 +116,9 @@ class ApiParse extends ApiBase {
                                $wgTitle = $titleObj;
                                $pageObj = WikiPage::factory( $titleObj );
                                list( $popts, $reset, $suppressCache ) = $this->makeParserOptions( $pageObj, $params );
-
-                               // If for some reason the "oldid" is actually the current revision, it may be cached
-                               // Deliberately comparing $pageObj->getLatest() with $rev->getId(), rather than
-                               // checking $rev->isCurrent(), because $pageObj is what actually ends up being used,
-                               // and if its ->getLatest() is outdated, $rev->isCurrent() won't tell us that.
-                               if ( !$suppressCache && $rev->getId() == $pageObj->getLatest() ) {
-                                       // May get from/save to parser cache
-                                       $p_result = $this->getParsedContent( $pageObj, $popts,
-                                               $pageid, isset( $prop['wikitext'] ) );
-                               } else { // This is an old revision, so get the text differently
-                                       $this->content = $rev->getContent( Revision::FOR_THIS_USER, $this->getUser() );
-
-                                       if ( $this->section !== false ) {
-                                               $this->content = $this->getSectionContent(
-                                                       $this->content, $this->msg( 'revid', $rev->getId() )
-                                               );
-                                       }
-
-                                       // Should we save old revision parses to the parser cache?
-                                       $p_result = $this->content->getParserOutput( $titleObj, $rev->getId(), $popts );
-                               }
+                               $p_result = $this->getParsedContent(
+                                       $pageObj, $popts, $suppressCache, $pageid, $rev, $needContent
+                               );
                        } else { // Not $oldid, but $pageid or $page
                                if ( $params['redirects'] ) {
                                        $reqParams = [
@@ -172,25 +160,9 @@ class ApiParse extends ApiBase {
                                }
 
                                list( $popts, $reset, $suppressCache ) = $this->makeParserOptions( $pageObj, $params );
-
-                               // Don't pollute the parser cache when setting options that aren't
-                               // in ParserOptions::optionsHash()
-                               /// @todo: This should be handled closer to the actual cache instead of here, see T110269
-                               $suppressCache = $suppressCache ||
-                                       $params['disablepp'] ||
-                                       $params['disablelimitreport'] ||
-                                       $params['preview'] ||
-                                       $params['sectionpreview'] ||
-                                       $params['disabletidy'];
-
-                               if ( $suppressCache ) {
-                                       $this->content = $this->getContent( $pageObj, $pageid );
-                                       $p_result = $this->content->getParserOutput( $titleObj, null, $popts );
-                               } else {
-                                       // Potentially cached
-                                       $p_result = $this->getParsedContent( $pageObj, $popts, $pageid,
-                                               isset( $prop['wikitext'] ) );
-                               }
+                               $p_result = $this->getParsedContent(
+                                       $pageObj, $popts, $suppressCache, $pageid, null, $needContent
+                               );
                        }
                } else { // Not $oldid, $pageid, $page. Hence based on $text
                        $titleObj = Title::newFromText( $title );
@@ -249,6 +221,12 @@ class ApiParse extends ApiBase {
                        if ( $params['onlypst'] ) {
                                // Build a result and bail out
                                $result_array = [];
+                               if ( $this->contentIsDeleted ) {
+                                       $result_array['textdeleted'] = true;
+                               }
+                               if ( $this->contentIsSuppressed ) {
+                                       $result_array['textsuppressed'] = true;
+                               }
                                $result_array['text'] = $this->pstContent->serialize( $format );
                                $result_array[ApiResult::META_BC_SUBELEMENTS][] = 'text';
                                if ( isset( $prop['wikitext'] ) ) {
@@ -279,6 +257,12 @@ class ApiParse extends ApiBase {
 
                $result_array['title'] = $titleObj->getPrefixedText();
                $result_array['pageid'] = $pageid ?: $pageObj->getId();
+               if ( $this->contentIsDeleted ) {
+                       $result_array['textdeleted'] = true;
+               }
+               if ( $this->contentIsSuppressed ) {
+                       $result_array['textsuppressed'] = true;
+               }
 
                if ( $params['disabletoc'] ) {
                        $p_result->setTOCEnabled( false );
@@ -541,64 +525,72 @@ class ApiParse extends ApiBase {
                Hooks::run( 'ApiMakeParserOptions',
                        [ $popts, $pageObj->getTitle(), $params, $this, &$reset, &$suppressCache ] );
 
+               // Force cache suppression when $popts aren't cacheable.
+               $suppressCache = $suppressCache || !$popts->isSafeToCache();
+
                return [ $popts, $reset, $suppressCache ];
        }
 
        /**
         * @param WikiPage $page
         * @param ParserOptions $popts
+        * @param bool $suppressCache
         * @param int $pageId
-        * @param bool $getWikitext
+        * @param Revision|null $rev
+        * @param bool $getContent
         * @return ParserOutput
         */
-       private function getParsedContent( WikiPage $page, $popts, $pageId = null, $getWikitext = false ) {
-               $this->content = $this->getContent( $page, $pageId );
+       private function getParsedContent(
+               WikiPage $page, $popts, $suppressCache, $pageId, $rev, $getContent
+       ) {
+               $revId = $rev ? $rev->getId() : null;
+               $isDeleted = $rev && $rev->isDeleted( Revision::DELETED_TEXT );
+
+               if ( $getContent || $this->section !== false || $isDeleted ) {
+                       if ( $rev ) {
+                               $this->content = $rev->getContent( Revision::FOR_THIS_USER, $this->getUser() );
+                               if ( !$this->content ) {
+                                       $this->dieWithError( [ 'apierror-missingcontent-revid', $revId ] );
+                               }
+                       } else {
+                               $this->content = $page->getContent( Revision::FOR_THIS_USER, $this->getUser() );
+                               if ( !$this->content ) {
+                                       $this->dieWithError( [ 'apierror-missingcontent-pageid', $pageId ] );
+                               }
+                       }
+                       $this->contentIsDeleted = $isDeleted;
+                       $this->contentIsSuppressed = $rev &&
+                               $rev->isDeleted( Revision::DELETED_TEXT | Revision::DELETED_RESTRICTED );
+               }
 
-               if ( $this->section !== false && $this->content !== null ) {
-                       // Not cached (save or load)
-                       return $this->content->getParserOutput( $page->getTitle(), null, $popts );
+               if ( $this->section !== false ) {
+                       $this->content = $this->getSectionContent(
+                               $this->content,
+                               $pageId === null ? $page->getTitle()->getPrefixedText() : $this->msg( 'pageid', $pageId )
+                       );
+                       return $this->content->getParserOutput( $page->getTitle(), $revId, $popts );
                }
 
-               // Try the parser cache first
-               // getParserOutput will save to Parser cache if able
-               $pout = $page->getParserOutput( $popts );
-               if ( !$pout ) {
-                       $this->dieWithError( [ 'apierror-nosuchrevid', $page->getLatest() ] );
+               if ( $isDeleted ) {
+                       // getParserOutput can't do revdeled revisions
+                       $pout = $this->content->getParserOutput( $page->getTitle(), $revId, $popts );
+               } else {
+                       // getParserOutput will save to Parser cache if able
+                       $pout = $page->getParserOutput( $popts, $revId, $suppressCache );
                }
-               if ( $getWikitext ) {
-                       $this->content = $page->getContent( Revision::RAW );
+               if ( !$pout ) {
+                       $this->dieWithError( [ 'apierror-nosuchrevid', $revId ?: $page->getLatest() ] );
                }
 
                return $pout;
        }
 
-       /**
-        * Get the content for the given page and the requested section.
-        *
-        * @param WikiPage $page
-        * @param int $pageId
-        * @return Content
-        */
-       private function getContent( WikiPage $page, $pageId = null ) {
-               $content = $page->getContent( Revision::RAW ); // XXX: really raw?
-
-               if ( $this->section !== false && $content !== null ) {
-                       $content = $this->getSectionContent(
-                               $content,
-                               !is_null( $pageId )
-                                       ? $this->msg( 'pageid', $pageId )
-                                       : $page->getTitle()->getPrefixedText()
-                       );
-               }
-               return $content;
-       }
-
        /**
         * Extract the requested section from the given Content
         *
         * @param Content $content
         * @param string|Message $what Identifies the content in error messages, e.g. page title.
-        * @return Content|bool
+        * @return Content
         */
        private function getSectionContent( Content $content, $what ) {
                // Not cached (save or load)
index a6f1a28..164a7c2 100644 (file)
@@ -10,7 +10,8 @@
                        "Macofe",
                        "Danny B.",
                        "LordMsz",
-                       "Dvorapa"
+                       "Dvorapa",
+                       "Matěj Suchánek"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:Special:MyLanguage/API:Main_page|Dokumentace]]\n* [[mw:Special:MyLanguage/API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api E-mailová konference]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Oznámení k API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Chyby a požadavky]\n</div>\n<strong>Stav:</strong> Všechny funkce uvedené na této stránce by měly fungovat, ale API se stále aktivně vyvíjí a může se kdykoli změnit. Upozornění na změny získáte přihlášením se k [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ e-mailové konferenci mediawiki-api-announce].\n\n<strong>Chybné požadavky:</strong> Pokud jsou do API zaslány chybné požadavky, bude vrácena HTTP hlavička s klíčem „MediaWiki-API-Error“ a hodnota této hlavičky a chybový kód budou nastaveny na stejnou hodnotu. Více informací najdete [[mw:Special:MyLanguage/API:Errors_and_warnings|v dokumentaci]].\n\n<strong>Testování:</strong> Pro jednoduché testování požadavků na API zkuste [[Special:ApiSandbox]].",
@@ -80,7 +81,7 @@
        "apihelp-edit-param-nocreate": "Pokud stránka neexistuje, vrátit chybu.",
        "apihelp-edit-param-watch": "Přidat stránku na seznam sledovaných.",
        "apihelp-edit-param-unwatch": "Odstranit stránku ze seznamu sledovaných.",
-       "apihelp-edit-param-watchlist": "Bezpodmíněnečně přidat nebo odstranit stránku ze sledovaných stránek aktuálního uživatele, použít nastavení nebo neměnit sledování.",
+       "apihelp-edit-param-watchlist": "Bezpodmínečně přidat nebo odstranit stránku ze sledovaných stránek aktuálního uživatele, použít nastavení nebo neměnit sledování.",
        "apihelp-edit-param-redirect": "Automaticky opravit přesměrování.",
        "apihelp-edit-example-edit": "Upravit stránku.",
        "apihelp-emailuser-description": "Poslat uživateli e-mail.",
index 264c9d2..f15e55d 100644 (file)
@@ -71,6 +71,7 @@
        "apihelp-compare-param-totitle": "Zweiter zu vergleichender Titel.",
        "apihelp-compare-param-toid": "Zweite zu vergleichende Seitennummer.",
        "apihelp-compare-param-torev": "Zweite zu vergleichende Version.",
+       "apihelp-compare-paramvalue-prop-title": "Die Seitentitel der Versionen „Von“ und „Nach“.",
        "apihelp-compare-example-1": "Unterschied zwischen Version 1 und 2 abrufen",
        "apihelp-createaccount-description": "Erstellen eines neuen Benutzerkontos.",
        "apihelp-createaccount-param-preservestate": "Falls <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> für <samp>hasprimarypreservedstate</samp> wahr ausgegeben hat, sollten Anfragen, die als <samp>primary-required</samp> markiert wurden, ausgelassen werden. Falls ein nicht-leerer Wert für <samp>preservedusername</samp> zurückgegeben wurde, muss dieser Benutzername für den Parameter <var>username</var> verwendet werden.",
index ed3f25f..5554105 100644 (file)
        "api-format-title": "MediaWiki API result",
        "api-format-prettyprint-header": "This is the HTML representation of the $1 format. HTML is good for debugging, but is unsuitable for application use.\n\nSpecify the <var>format</var> parameter to change the output format. To see the non-HTML representation of the $1 format, set <kbd>format=$2</kbd>.\n\nSee the [[mw:Special:MyLanguage/API|complete documentation]], or the [[Special:ApiHelp/main|API help]] for more information.",
        "api-format-prettyprint-header-only-html": "This is an HTML representation intended for debugging, and is unsuitable for application use.\n\nSee the [[mw:Special:MyLanguage/API|complete documentation]], or the [[Special:ApiHelp/main|API help]] for more information.",
+       "api-format-prettyprint-header-hyperlinked": "This is the HTML representation of the $1 format. HTML is good for debugging, but is unsuitable for application use.\n\nSpecify the <var>format</var> parameter to change the output format. To see the non-HTML representation of the $1 format, set [$3 <kbd>format=$2</kbd>].\n\nSee the [[mw:API|complete documentation]], or the [[Special:ApiHelp/main|API help]] for more information.",
        "api-format-prettyprint-status": "This response would be returned with HTTP status $1 $2.",
 
        "api-login-fail-aborted": "Authentication requires user interaction, which is not supported by <kbd>action=login</kbd>. To be able to login with <kbd>action=login</kbd>, see [[Special:BotPasswords]]. To continue using main-account login, see <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
index c7bcf02..e6414b1 100644 (file)
@@ -63,6 +63,7 @@
        "apihelp-compare-param-fromtitle": "Primeiro título para comparar.",
        "apihelp-compare-param-fromid": "Identificador da primeira páxina a comparar.",
        "apihelp-compare-param-fromrev": "Primeira revisión a comparar.",
+       "apihelp-compare-param-fromtext": "Uso este texto en vez do contido da revisión especificada por <var>fromtitle</var>, <var>fromid</var> ou <var>fromrev</var>.",
        "apihelp-compare-param-totitle": "Segundo título para comparar.",
        "apihelp-compare-param-toid": "Identificador da segunda páxina a comparar.",
        "apihelp-compare-param-torev": "Segunda revisión a comparar.",
index b6a5b09..74d83e6 100644 (file)
        "apihelp-compare-param-fromtitle": "כותרת ראשונה להשוואה.",
        "apihelp-compare-param-fromid": "מס׳ זיהוי של העמוד הראשון להשוואה.",
        "apihelp-compare-param-fromrev": "גרסה ראשונה להשוואה.",
+       "apihelp-compare-param-fromtext": "להשתמש בטקסט הזה במקום תוכן הגרסה שהוגדרה על־ידי <var dir=\"ltr\">fromtitle</var>, <var dir=\"ltr\">fromid</var> או <var dir=\"ltr\">fromrev</var>.",
+       "apihelp-compare-param-frompst": "לעשות התמרה לפני שמירה ב־<var>fromtext</var>.",
+       "apihelp-compare-param-fromcontentmodel": "מודל התוכן של <var>fromtext</var>. אם זה לא סופק, ייעשה ניחוש על סמך פרמטרים אחרים.",
+       "apihelp-compare-param-fromcontentformat": "תסדיר הסדרת תוכן של <var>fromtext</var>.",
        "apihelp-compare-param-totitle": "כותרת שנייה להשוואה.",
        "apihelp-compare-param-toid": "מס׳ מזהה של העמוד השני להשוואה.",
        "apihelp-compare-param-torev": "גרסה שנייה להשוואה.",
+       "apihelp-compare-param-torelative": "להשתמש בגרסה יחסית לגרסה שהוסקה מ<var dir=\"ltr\">fromtitle</var>, <var dir=\"ltr\">fromid</var> או <var dir=\"ltr\">fromrev</var>. לכל אפשריות ה־\"to\" האחרות לא תהיה השפעה.",
+       "apihelp-compare-param-totext": "להשתמש בטקסט הזה במקום התוכן של הגרסה שהוגדר ב־<var dir=\"ltr\">totitle</var>, <var dir=\"ltr\">toid</var> or <var dir=\"ltr\">torev</var>.",
+       "apihelp-compare-param-topst": "לעשות התמרה לפני שמירה ב־<var>totext</var>.",
+       "apihelp-compare-param-tocontentmodel": "מודל התוכן של <var>totext</var>. אם זה לא סופק, ייעשה ניחוש על סמך פרמטרים אחרים.",
+       "apihelp-compare-param-tocontentformat": "תסדיר הסדרת תוכן של <var>fromtext</var>.",
+       "apihelp-compare-param-prop": "אילו פריטי מידע לקבל.",
+       "apihelp-compare-paramvalue-prop-diff": "ה־HTML של ההשוואה.",
+       "apihelp-compare-paramvalue-prop-diffsize": "גודל ה־HTML של ההשוואה, בבתים.",
+       "apihelp-compare-paramvalue-prop-rel": "מזהי הגרסאות של הגרסאות לפני \"from\" ואחרי \"to\", אם יש כאלה.",
+       "apihelp-compare-paramvalue-prop-ids": "מזהי הדף והגרסה של גרסאות ה־\"from\" וה־\"to\".",
+       "apihelp-compare-paramvalue-prop-title": "כותרות הדפים של גרסאות ה־\"from\" וה־\"to\".",
+       "apihelp-compare-paramvalue-prop-user": "השם והמזהה של המשתמש של גרסאות ה־\"from\" וה־\"to\".",
+       "apihelp-compare-paramvalue-prop-comment": "התקציר על גרסאות ה־\"from\" וה־\"to\".",
+       "apihelp-compare-paramvalue-prop-parsedcomment": "התקציר המפוענח על גרסאות ה־\"from\" וה־\"to\".",
+       "apihelp-compare-paramvalue-prop-size": "הגודל של גרסאות ה־\"from\" וה־\"to\".",
        "apihelp-compare-example-1": "יצירת תיעוד שינוי בין גרסה 1 ל־2.",
        "apihelp-createaccount-description": "יצירת חשבון משתמש חדש.",
        "apihelp-createaccount-param-preservestate": "אם <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> החזיר true עבור <samp>hasprimarypreservedstate</samp>, בקשות שמסומנות בתור <samp>primary-required</samp> אמורות להיות מושמטות. אם מוחזר ערך לא ריק ל־<samp>preservedusername</samp>, שם המשתמש הזה ישמש לפרמטר <var>username</var>.",
        "apierror-changeauth-norequest": "יצירת בקשת השינוי נכשלה.",
        "apierror-chunk-too-small": "גודל הפלח המזערי הוא {{PLURAL:$1|בית אחד|$1 בתים}} בשביל פלחים לא סופיים.",
        "apierror-cidrtoobroad": "טווחי CIDR של $1 שרחבים יותר מ־/$2 אינם קבילים.",
-       "apierror-compare-inputneeded": "כותרת, מזהה דף, או מספר גרסה נחוצים בשביל הפרמטרים <var>from</var> ו־<var>to</var>.",
+       "apierror-compare-no-title": "לא ניתן לעשות התמרה לפני שמירה ללא כותרת. נא לנסות לציין <var>fromtitle</var> או <var>totitle</var>.",
+       "apierror-compare-relative-to-nothing": "אין גרסת \"from\" עבור <var>torelative</var> שתהיה יחסית.",
        "apierror-contentserializationexception": "הסדרת התוכן נכשלה: $1",
        "apierror-contenttoobig": "התוכן שסיפקת חורג מגודל הערך המרבי של {{PLURAL:$1|קילובייט אחד|$1 קילובייטים}}.",
        "apierror-copyuploadbaddomain": "העלאות לפי URL אינם מורשות מהמתחם הזה.",
        "apierror-maxlag": "ממתין ל־$2: שיהוי של {{PLURAL:$1|שנייה אחת|$1 שניות}}.",
        "apierror-mimesearchdisabled": "חיפוש MIME כבוי במצב קמצן.",
        "apierror-missingcontent-pageid": "תוכן חסר עבור מזהה הדף $1.",
+       "apierror-missingcontent-revid": "תוכן חסר עבור מזהה הגרסה $1.",
        "apierror-missingparam-at-least-one-of": "דרוש {{PLURAL:$2|הפרמטר|לפחות אחד מהפרמטרים}} $1.",
        "apierror-missingparam-one-of": "דרוש {{PLURAL:$2|הפרמטר|אחד מהפרמטרים}} $1.",
        "apierror-missingparam": "הפרמטר <var>$1</var> צריך להיות מוגדר.",
        "apierror-missingrev-pageid": "אין גרסה נוכחית של דף עם המזהה $1.",
+       "apierror-missingrev-title": "אין גרסה נוכחית לכותרת $1.",
        "apierror-missingtitle-createonly": "כותרות חסרות יכולות להיות מוגנות עם <kbd>create</kbd>.",
        "apierror-missingtitle": "הדף שנתת אינו קיים.",
        "apierror-missingtitle-byname": "הדף $1 אינו קיים.",
        "apiwarn-badurlparam": "לא היה אפשר לפענח את <var>$1urlparam</var> עבור $2. משתמשים רק ב־width ו־height.",
        "apiwarn-badutf8": "הערך הערך שהועבר ל־<var>$1</var> מכיל נתונים בלתי־תקינים או בלתי־מנורמלים. נתונים טקסט אמורים להיות תקינים, מנורמלי NFC ללא תווי בקרה C0 למעט HT (\\t)‏, LF (\\n), ו־CR (\\r).",
        "apiwarn-checktoken-percentencoding": "נא לבדוק שסימנים כמו \"+\" באסימון מקודדים עם אחוזים בצורה נכונה ב־URL.",
+       "apiwarn-compare-nocontentmodel": "לא היה אפשר לקבוע את מודל התוכן, נניח שזה $1.",
        "apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> הוצהר בתור מיושן. נא להשתמש ב־ <kbd>prop=deletedrevisions</kbd> או ב־<kbd>list=alldeletedrevisions</kbd> במקום זה.",
        "apiwarn-deprecation-expandtemplates-prop": "מכיוון שלא ניתנו ערכים לפרמטר <var>prop</var>, תסדיר מיושן ישמש לפלט. התסדיר הזה מיושן, ובעתיד יינתן ערך בררת מחדל לפרמטר <var>prop</var>, כך שתמיד ישמש התסדיר החדש.",
        "apiwarn-deprecation-httpsexpected": "משמש HTTP כשהיה צפוי HTTPS.",
index 5ae31c1..5d997be 100644 (file)
        "apihelp-resetpassword-param-email": "A visszaállítandó felhasználó e-mail-címe.",
        "apihelp-resetpassword-example-user": "Jelszó-visszaállító e-mail küldése <kbd>Example</kbd> felhasználónak.",
        "apihelp-resetpassword-example-email": "Jelszó-visszaállító e-mail küldése az összes <kbd>user@example.com</kbd> e-mail-című felhasználónak.",
+       "apihelp-revisiondelete-description": "Változatok törlése és helyreállítása.",
+       "apihelp-revisiondelete-param-ids": "A törlendő lapváltozatok azonosítói.",
+       "apihelp-revisiondelete-param-reason": "A törlés vagy helyreállítás indoklása.",
+       "apihelp-revisiondelete-example-revision": "A <kbd>12345</kbd> lapváltozat tartalmának elrejtése a <kbd>Main Page</kbd> lapon.",
+       "apihelp-revisiondelete-example-log": "A <kbd>67890</kbd> naplóbejegyzés összes adatának elrejtése <kbd>BLP violation</kbd> indoklással.",
+       "apihelp-rollback-description": "A lap legutóbbi változtatásának visszavonása.\n\nHa a lap utolsó szerkesztője egymás után több szerkesztést végzett, az összes visszavonása.",
+       "apihelp-rollback-param-title": "A visszaállítandó lap címe. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
+       "apihelp-rollback-param-pageid": "A visszaállítandó lap lapazonosítója. Nem használható együtt a <var>$1title</var> paraméterrel.",
+       "apihelp-rollback-param-summary": "Egyéni szerkesztési összefoglaló. Ha üres, az alapértelmezett összefoglaló lesz használatban.",
+       "apihelp-rollback-param-markbot": "A visszavont és a visszavonó szerkesztések botszerkesztésnek jelölése.",
+       "apihelp-rollback-param-watchlist": "A lap hozzáadása a figyelőlistához vagy eltávolítása onnan feltétel nélkül, a beállítások használata vagy a figyelőlista érintetlenül hagyása.",
+       "apihelp-rsd-description": "Egy RSD-séma (Really Simple Discovery) exportálása.",
+       "apihelp-rsd-example-simple": "Az RSD-séma exportálása.",
+       "apihelp-setnotificationtimestamp-description": "A figyelt lapok értesítési időbélyegének frissítése.\n\nEz érinti a módosított lapok kiemelését a figyelőlistán és a laptörténetekben, valamint az e-mail-küldést a „{{int:tog-enotifwatchlistpages}}” beállítás engedélyezése esetén.",
+       "apihelp-setnotificationtimestamp-param-entirewatchlist": "Dolgozás az összes figyelt lapon.",
+       "apihelp-setnotificationtimestamp-param-timestamp": "Az értesítési időbélyeg állítása erre az időbélyegre.",
+       "apihelp-setnotificationtimestamp-param-torevid": "Az értesítési időbélyeg állítása erre a lapváltozatra (csak egy lap esetén).",
+       "apihelp-setnotificationtimestamp-param-newerthanrevid": "Az értesítési időbélyeg állítása ennél a lapváltozatnál újabbra (csak egy lap esetén).",
+       "apihelp-setnotificationtimestamp-example-all": "Az értesítési állapot visszaállítása a teljes figyelőlistára.",
+       "apihelp-setnotificationtimestamp-example-page": "A <kbd>Main page</kbd> értesítési állapotának visszaállítása.",
+       "apihelp-setnotificationtimestamp-example-pagetimestamp": "A <kbd>Main page</kbd> értesítési időbélyegének módosítása, hogy a 2012. január 1-jét követő szerkesztések nem megtekintettek legyenek.",
+       "apihelp-setnotificationtimestamp-example-allpages": "A <kbd>{{ns:user}}</kbd> névtérbeli lapok értesítési állapotának visszaállítása.",
+       "apihelp-setpagelanguage-description": "Egy lap nyelvének módosítása.",
+       "apihelp-setpagelanguage-description-disabled": "A lapnyelv módosítása nem engedélyezett ezen a wikin.\n\nEngedélyezd a <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var> PHP-változót ezen művelet használatához.",
+       "apihelp-setpagelanguage-param-title": "A módosítandó lap címe. Nem használható együtt a <var>$1pageid</var> paraméterrel.",
+       "apihelp-setpagelanguage-param-pageid": "A módosítandó lap azonosítója. Nem használható együtt a <var>$1title</var> paraméterrel.",
+       "apihelp-setpagelanguage-param-lang": "A lap nyelvének módosítása erre a nyelvkódra. Használd a <kbd>default</kbd> értéket a wiki alapértelmezett tartalomnyelvére való visszaállításhoz.",
+       "apihelp-setpagelanguage-param-reason": "A módosítás oka.",
+       "apihelp-setpagelanguage-example-language": "A <kbd>Main Page</kbd> nyelvének módosítása baszkra.",
+       "apihelp-setpagelanguage-example-default": "A 123 azonosítójú lap nyelvének módosítása a wiki alapértelmezett tartalomnyelvére.",
        "apihelp-userrights-param-userid": "Felhasználói azonosító.",
        "api-help-title": "MediaWiki API súgó",
        "api-help-lead": "Ez egy automatikusan generált MediaWiki API-dokumentációs lap.\n\nDokumentáció és példák: https://www.mediawiki.org/wiki/API",
index 06a5aee..4458f36 100644 (file)
        "apihelp-rollback-example-simple": "<kbd>Project:대문</kbd> 문서의 <kbd>예시</kbd>의 마지막 판을 되돌리기",
        "apihelp-setpagelanguage-description": "문서의 언어를 변경합니다.",
        "apihelp-setpagelanguage-description-disabled": "이 위키에서 문서의 언어 변경은 허용되지 않습니다.\n\n이 동작을 사용하려면 <var>[[mw:Special:MyLanguage/Manual:$wgPageLanguageUseDB|$wgPageLanguageUseDB]]</var>을 활성화하십시오.",
+       "apihelp-setpagelanguage-param-title": "언어를 변경하려는 문서의 제목입니다. <var>$1pageid</var>와 함께 사용할 수 없습니다.",
+       "apihelp-setpagelanguage-param-pageid": "언어를 변경하려는 문서의 ID입니다. <var>$1title</var>과 함께 사용할 수 없습니다.",
+       "apihelp-setpagelanguage-param-lang": "문서를 변경할 언어의 언어 코드입니다. 문서를 위키의 기본 콘텐츠 언어로 재설정하려면 <kbd>default</kbd>를 사용하십시오.",
        "apihelp-setpagelanguage-param-reason": "변경 이유.",
        "apihelp-setpagelanguage-example-language": "<kbd>Main Page</kbd>의 언어를 바스크어로 변경합니다.",
        "apihelp-stashedit-param-sectiontitle": "새 문단을 위한 제목.",
        "apihelp-undelete-example-revisions": "<kbd>대문</kbd> 문서의 두 판을 복구합니다.",
        "apihelp-unlinkaccount-description": "현재 사용자에 연결된 타사 계정을 제거합니다.",
        "apihelp-unlinkaccount-example-simple": "<kbd>FooAuthenticationRequest</kbd>와 연결된 제공자에 대한 현재 사용자의 토론 링크 제거를 시도합니다.",
+       "apihelp-upload-description": "파일을 업로드하거나 대기 중인 업로드 상태를 가져옵니다.\n\n몇 가지 방식을 사용할 수 있습니다:\n* <var>$1file</var> 변수를 사용하여 파일의 내용을 직접 업로드합니다.\n* <var>$1filesize</var>, <var>$1chunk</var>, <var>$1offset</var> 변수를 사용하여 파일을 부분적으로 업로드합니다.\n* <var>$1url</var> 변수를 사용하여 미디어위키 서버가 URL로부터 파일을 가져오게 합니다.\n* <var>$1filekey</var> 변수를 사용하여 경고로 실패한 과거의 업로드를 완료합니다.\n<var>$1file</var>을(를) 보낼 때 HTTP POST는 파일 업로드로 끝나야 합니다. (예: <code>multipart/form-data</code>를 사용하여)",
        "apihelp-upload-param-filename": "대상 파일 이름.",
        "apihelp-upload-param-comment": "업로드 주석입니다. 또, <var>$1text</var>가 지정되지 않은 경우 새로운 파일들의 초기 페이지 텍스트로 사용됩니다.",
        "apihelp-upload-param-tags": "업로드 기록 항목과 파일 문서 판에 적용할 태그를 변경합니다.",
index 0935c59..f923e18 100644 (file)
@@ -14,6 +14,7 @@
        "apihelp-compare-param-fromid": "Pirmojo lyginamo puslapio ID.",
        "apihelp-compare-param-totitle": "Antrasis pavadinimas palyginimui.",
        "apihelp-compare-param-toid": "Antrojo lyginamo puslapio ID.",
+       "apihelp-compare-param-prop": "Kokią informaciją gauti.",
        "apihelp-createaccount-description": "Kurti naują vartotojo paskyrą.",
        "apihelp-createaccount-param-name": "Naudotojo vardas.",
        "apihelp-createaccount-param-email": "Vartotojo el. pašto adresas (nebūtina).",
index f2705ba..72a5fda 100644 (file)
        "apihelp-main-param-origin": "Når man aksesserer API-en som bruker en domene-kryssende AJAX-forespørsel (CORS), sett denne til det opprinnelige domenet. Denne må tas med i alle pre-flight-forespørsler, og derfor være en del av spørre-URI-en (ikke POST-kroppen).\n\nFor autentiserte forespørsler må denne stemme helt med en av de opprinnelige i <code>Origin</code>-headeren, slik at den må settes til noe a la <kbd>https://en.wikipedia.org</kbd> eller <kbd>https://meta.wikimedia.org</kbd>. Hvis denne parameteren ikke stemmer med <code>Origin</code>-headeren, returneres et 403-svar. Hvis denne parameteren stemmer med <code>Origin</code>-headeren og originalen er hvitlistet, vil <code>Access-Control-Allow-Origin</code> og <code>Access-Control-Allow-Credentials</code>-headere bli satt.\n\nFor ikke-autentiserte forepørsler, spesifiser <kbd>*</kbd>. Denne vil gjøre at <code>Access-Control-Allow-Origin</code>-headeren blir satt, men <code>Access-Control-Allow-Credentials</code> blir <code>false</code> og alle bruerspesifikke data blir begrenset.",
        "apihelp-main-param-uselang": "Språk å bruke for meldingsoversettelser. <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> med <kbd>siprop=languages</kbd> returnerer en liste over språkkoder, eller spesifiser <kbd>user</kbd> for å bruke den nåværende brukerens språkpreferanser, eller spesifiser <kbd>content</kbd> for å bruke denne wikiens innholdsspråk.",
        "apihelp-main-param-errorformat": "Formater som kan brukes for advarsels- og feiltekster.\n; plaintext: Wikitext der HTML-tagger er fjernet og elementer byttet ut.\n; wikitext: Ubehandlet wikitext.\n; html: HTML.\n; raw: Meldingsnøkler og -parametre.\n; none: Ingen tekst, bare feilkoder.\n; bc: Format brukt før MediaWiki 1.29. <var>errorlang</var> og <var>errorsuselocal</var> ses bort fra.",
+       "apihelp-main-param-errorlang": "Språk som skal brukes for advarsler og feil. <kbd>[[Specia:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> med <kbd>siprop=languages/<kbd> returnerer ei liste over språkkoder, eller angi <kbd>content</kbd> for å bruke wikiens innholdsspråk, eller angi <kbd>uselang</kbd> for å bruke samme verdi som <var>uselang</var>-parameteren.",
        "apihelp-main-param-errorsuselocal": "Hvis gitt, vil feiltekster bruke lokalt tilpassede meldinger fra {{ns:MediaWiki}}-navnerommet.",
        "apihelp-block-description": "Blokker en bruker.",
        "apihelp-block-param-user": "Brukernavn, IP-adresse eller IP-intervall som skal blokkeres. Kan ikke brukes sammen med <var>$1userid</var>",
+       "apihelp-block-param-userid": "Bruker-ID som skal blokkeres. Kan ikke brukes sammen med <var>$1user</var>.",
        "apihelp-block-param-expiry": "Utløpstid. Kan være relativ (f.eks. <kbd>5 months</kbd> eller <kbd>2 weeks</kbd>) eller absolutt (f.eks. <kbd>2014-09-18T12:34:56Z</kbd>). Om den er satt til <kbd>infinite</kbd>, <kbd>indefinite</kbd> eller <kbd>never</kbd> vil blokkeringen ikke ha noen utløpsdato.",
        "apihelp-block-param-reason": "Årsak for blokkering.",
        "apihelp-block-param-anononly": "Blokker bare anonyme brukere (dvs. hindre anonyme redigeringer fra denne IP-adressen).",
@@ -56,6 +58,9 @@
        "apihelp-compare-param-fromtitle": "Første tittel å sammenligne.",
        "apihelp-compare-param-fromid": "Første side-ID å sammenligne.",
        "apihelp-compare-param-fromrev": "Første revisjon å sammenligne.",
+       "apihelp-compare-param-fromtext": "Bruk denne teksten i stedet for innholdet i revisjonen som angis med <var>fromtitle</var>, <var>fromid</var> eller <var>fromrev</var>.",
+       "apihelp-compare-param-fromcontentmodel": "Innholdsmodell for <var>fromtext</var>. Om den ikke angis vil den gjettes basert på de andre parameterne.",
+       "apihelp-compare-param-fromcontentformat": "Innholdsserialiseringsformat for <var>fromtext</var>.",
        "apihelp-compare-param-totitle": "Andre tittel å sammenligne.",
        "apihelp-compare-param-toid": "Andre side-ID å sammenligne.",
        "apihelp-compare-param-torev": "Andre revisjon å sammenligne.",
index 749136a..dc9516e 100644 (file)
        "api-format-title": "Resultado da API do MediaWiki.",
        "api-format-prettyprint-header": "Esta é a representação em HTML do formato $1. O HTML é bom para o despiste de erros, mas inadequado para uso na aplicação.\n\nEspecifique o parâmetro <var>format</var> para alterar o formato de saída. Para ver a representação que não é em HTML do formato $1, defina <kbd>format=$2</kbd>.\n\nConsulte a [[mw:Special:MyLanguage/API|documentação completa]], ou a [[Special:ApiHelp/main|ajuda da API]] para mais informação.",
        "api-format-prettyprint-header-only-html": "Esta é uma representação em HTML para ser usada no despiste de erros, mas inadequada para uso na aplicação.\n\nConsulte a [[mw:Special:MyLanguage/API|documentação completa]], ou a [[Special:ApiHelp/main|ajuda da API]] para mais informação.",
+       "api-format-prettyprint-header-hyperlinked": "Esta é a representação em HTML do formato $1. O HTML é bom para o despiste de erros, mas inadequado para uso na aplicação.\n\nEspecifique o parâmetro <var>format</var> para alterar o formato de saída. Para ver a representação que não é em HTML do formato $1, defina [$3 <kbd>format=$2</kbd>].\n\nConsulte a [[mw:API|documentação completa]], ou a [[Special:ApiHelp/main|ajuda da API]] para mais informação.",
        "api-format-prettyprint-status": "Esta resposta seria devolvida com o estado de HTTP: $1 $2.",
        "api-login-fail-aborted": "A autenticação requer interação com o utilizador, que não é suportada por <kbd>action=login</kbd>. Para poder entrar com <kbd>action=login</kbd>, consulte [[Special:BotPasswords]]. Para continuar a usar a autenticação da conta principal, consulte <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
        "api-login-fail-aborted-nobotpw": "A autenticação requer interação com o utilizador, que não é suportada por <kbd>action=login</kbd>. Para entrar, consulte <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
index e53ece6..2f6041c 100644 (file)
        "apihelp-xml-param-includexmlnamespace": "{{doc-apihelp-param|xml|includexmlnamespace}}",
        "apihelp-xmlfm-description": "{{doc-apihelp-description|xmlfm|seealso=* {{msg-mw|apihelp-xml-description}}}}",
        "api-format-title": "{{technical}}\nPage title when API output is pretty-printed in HTML.",
-       "api-format-prettyprint-header": "{{technical}} Displayed as a header when API output is pretty-printed in HTML.\n\nParameters:\n* $1 - Format name\n* $2 - Non-pretty-printing module name",
+       "api-format-prettyprint-header": "{{technical}} Displayed as a header when API output is pretty-printed in HTML, but a post request is received.\n\nParameters:\n* $1 - Format name\n* $2 - Non-pretty-printing module name",
        "api-format-prettyprint-header-only-html": "{{technical}} Displayed as a header when API output is pretty-printed in HTML, but there is no non-html module.\n\nParameters:\n* $1 - Format name",
+       "api-format-prettyprint-header-hyperlinked": "{{technical}} Displayed as a header when API output is pretty-printed in HTML.\n\nParameters:\n* $1 - Format name\n* $2 - Non-pretty-printing module name\n* $3 - URL to Non-pretty-printing module",
        "api-format-prettyprint-status": "{{technical}} Displayed as a header when API pretty-printed output is used for a response that uses an unusual HTTP status code.\n\nParameters:\n* $1 - HTTP status code (integer)\n* $2 - Standard English text for the status code.",
        "api-login-fail-aborted": "{{technical}} Displayed as an error when API login fails due to AuthManager requiring user interaction.\n\nSee also:\n* {{msg-mw|api-login-fail-aborted-nobotpw}}",
        "api-login-fail-aborted-nobotpw": "{{technical}} Displayed as an error when API login fails due to AuthManager requiring user interaction. Used when BotPasswords is disabled.\n\nSee also:\n* {{msg-mw|api-login-fail-aborted}}",
index 74ea993..9fece21 100644 (file)
        "apihelp-compare-param-fromtitle": "Заголовок первой сравниваемой страницы.",
        "apihelp-compare-param-fromid": "Идентификатор первой сравниваемой страницы.",
        "apihelp-compare-param-fromrev": "Первая сравниваемая версия.",
+       "apihelp-compare-param-fromtext": "Используйте этот текст вместо содержимого версии, заданной <var>fromtitle</var>, <var>fromid</var> или <var>fromrev</var>.",
+       "apihelp-compare-param-frompst": "Выполнить преобразование перед записью правки (PST) над <var>fromtext</var>.",
+       "apihelp-compare-param-fromcontentmodel": "Модель содержимого <var>fromtext</var>. Если не задана, будет угадана по другим параметрам.",
+       "apihelp-compare-param-fromcontentformat": "Формат сериализации содержимого <var>fromtext</var>.",
        "apihelp-compare-param-totitle": "Заголовок второй сравниваемой страницы.",
        "apihelp-compare-param-toid": "Идентификатор второй сравниваемой страницы.",
        "apihelp-compare-param-torev": "Вторая сравниваемая версия.",
+       "apihelp-compare-param-torelative": "Использовать версию, относящуюся к определённой<var>fromtitle</var>, <var>fromid</var> или <var>fromrev</var> Все другие опции 'to' будут проигнорированы.",
+       "apihelp-compare-param-totext": "Используйте этот текст вместо содержимого версии, заданной <var>totitle</var>, <var>toid</var> или <var>torev</var>.",
+       "apihelp-compare-param-topst": "Выполнить преобразование перед записью правки (PST) над <var>totext</var>.",
+       "apihelp-compare-param-tocontentmodel": "Модель содержимого <var>totext</var>. Если не задана, будет угадана по другим параметрам.",
+       "apihelp-compare-param-tocontentformat": "Формат сериализации содержимого <var>totext</var>.",
+       "apihelp-compare-param-prop": "Какую информацию получить.",
+       "apihelp-compare-paramvalue-prop-diff": "HTML разницы.",
+       "apihelp-compare-paramvalue-prop-diffsize": "Размер HTML разницы в байтах.",
+       "apihelp-compare-paramvalue-prop-rel": "Идентификаторы предыдущей к 'from' и следующей за 'to' версий.",
+       "apihelp-compare-paramvalue-prop-ids": "Идентификаторы страниц и версий 'from' и 'to'.",
+       "apihelp-compare-paramvalue-prop-title": "Названия страниц для версий 'from' и 'to'.",
+       "apihelp-compare-paramvalue-prop-user": "Имя и идентификатор участника для версий 'from' и 'to'.",
+       "apihelp-compare-paramvalue-prop-comment": "Описания правок для версий 'from' и 'to'.",
+       "apihelp-compare-paramvalue-prop-parsedcomment": "Распарсенные описания правок для версий 'from' и 'to'.",
+       "apihelp-compare-paramvalue-prop-size": "Размер версий 'from' и 'to'.",
        "apihelp-compare-example-1": "Создать разницу между версиями 1 и 2.",
        "apihelp-createaccount-description": "Создание новой учётной записи.",
        "apihelp-createaccount-param-preservestate": "Если запрос <kbd>[[Special:ApiHelp/query+authmanagerinfo|action=query&meta=authmanagerinfo]]</kbd> возвращает true для <samp>hasprimarypreservedstate</samp>, то запросы, отмеченные как <samp>primary-required</samp>, должны быть пропущены. Если запрос возвращает непустое значение поля <samp>preservedusername</samp>, то это значение должно быть использовано в параметре <samp>username</var>.",
        "api-format-title": "Результат MediaWiki API",
        "api-format-prettyprint-header": "Это HTML-представление формата $1. HTML хорош для отладки, но неудобен для практического применения.\n\nУкажите параметр <var>format</var> для изменения формата вывода. Для отображения не-HTML-представления формата $1, присвойте <kbd>format=$2</kbd>.\n\nСм. [[mw:Special:MyLanguage/API|полную документацию]] или [[Special:ApiHelp/main|справку API]] для получения дополнительной информации.",
        "api-format-prettyprint-header-only-html": "Это HTML-представление для отладки, не рассчитанное на практическое применение.\n\nСм. [[mw:Special:MyLanguage/API|полную документацию]] или [[Special:ApiHelp/main|справку API]] для получения дополнительной информации.",
+       "api-format-prettyprint-header-hyperlinked": "Это HTML-представление формата $1. HTML хорош для отладки, но неудобен для практического применения.\n\nУкажите параметр <var>format</var> для изменения формата вывода. Для отображения не-HTML-представления формата $1, присвойте [$3 <kbd>format=$2</kbd>].\n\nСм. [[mw:API|полную документацию]] или [[Special:ApiHelp/main|справку API]] для получения дополнительной информации.",
        "api-format-prettyprint-status": "Этот ответ будет возвращён HTTP статусом $1 $2.",
        "api-login-fail-aborted": "Аутентификация требует взаимодействия с пользователем, что не поддерживается <kbd>action=login</kbd>. Чтобы авторизовываться через <kbd>action=login</kbd>, см. [[Special:BotPasswords]]. Для продолжения использования авторизации основного аккаунта см. <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
        "api-login-fail-aborted-nobotpw": "Аутентификация требует взаимодействия с пользователем, что не поддерживается <kbd>action=login</kbd>. Для авторизации см. <kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>.",
        "apierror-changeauth-norequest": "Попытка создать запрос правки провалилась.",
        "apierror-chunk-too-small": "Минимальный размер кусочка — $1 {{PLURAL:$1|байт|байта|байтов}}, если кусочек не является последним.",
        "apierror-cidrtoobroad": "Диапазоны $1 CIDR, шире /$2, не разрешены.",
+       "apierror-compare-no-title": "Невозможно выполнить преобразование перед записью правки без заголовка. Попробуйте задать <var>fromtitle</var> или <var>totitle</var>.",
+       "apierror-compare-relative-to-nothing": "Нет версии 'from', к которой относится <var>torelative</var>.",
        "apierror-contentserializationexception": "Сериализация содержимого провалилась: $1",
        "apierror-contenttoobig": "Предоставленное вами содержимое превышает максимальный размер страницы в $1 {{PLURAL:$1|килобайт|килобайта|килобайтов}}.",
        "apierror-copyuploadbaddomain": "Загрузка по ссылке недоступна с этого домена.",
        "apierror-maxlag": "Ожидание $2: $1 {{PLURAL:$1|секунда|секунды|секунд}} задержки.",
        "apierror-mimesearchdisabled": "Поиск по MIME отключен в жадном режиме.",
        "apierror-missingcontent-pageid": "Отсутствует содержимое страницы с идентификатором $1.",
+       "apierror-missingcontent-revid": "Отсутствует содержимое версии с идентификатором $1.",
        "apierror-missingparam-at-least-one-of": "{{PLURAL:$2|Параметр|Как минимум один из параметров}} $1 обязателен.",
        "apierror-missingparam-one-of": "{{PLURAL:$2|Параметр|Один из параметров}} $1 обязателен.",
        "apierror-missingparam": "Параметр <var>$1</var> должен быть задан.",
        "apierror-missingrev-pageid": "Нет текущей версии страницы с идентификатором $1.",
+       "apierror-missingrev-title": "Нет текущей версии для заголовка $1.",
        "apierror-missingtitle-createonly": "Несуществующие названия страниц могут быть защищены только с помощью <kbd>create</kbd>.",
        "apierror-missingtitle": "Указанная вами страница не существует.",
        "apierror-missingtitle-byname": "Страница $1 не существует.",
        "apiwarn-badurlparam": "Невозможно распарсить $2 из <var>$1urlparam</var>. Используется только ширина и высота.",
        "apiwarn-badutf8": "Значение, переданное <var>$1</var>, содержит некорректные или ненормализованные данные. Текстовые данные должны быть корректным NFC-нормализованным Юникодом без символов управления C0, кроме HT (\\t), LF (\\n) и CR (\\r).",
        "apiwarn-checktoken-percentencoding": "Проверьте, что символы вроде «+» в токене корректно закодированы %-последовательностями в ссылке.",
+       "apiwarn-compare-nocontentmodel": "Модель содержимого не может быть определена, предполагается $1.",
        "apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd> не поддерживается. Пожалуйста, вместо него используйте <kbd>prop=deletedrevisions</kbd> или <kbd>list=alldeletedrevisions</kbd>.",
        "apiwarn-deprecation-expandtemplates-prop": "Поскольку никакие значения не были указаны в параметре <var>prop</var>, был использован наследованный формат. Этот формат является устаревшим, и в будущем параметру <var>prop</var> будет присвоено значение по умолчанию, что приведёт к повсеместному использованию нового формата.",
        "apiwarn-deprecation-httpsexpected": "Использован HTTP, где ожидался HTTPS.",
index 34d4a8d..6166b00 100644 (file)
        "api-format-title": "MediaWiki API 结果",
        "api-format-prettyprint-header": "这是$1格式的HTML实现。HTML对调试很有用,但不适合应用程序使用。\n\n指定<var>format</var>参数以更改输出格式。要查看$1格式的非HTML实现,设置<kbd>format=$2</kbd>。\n\n参见[[mw:Special:MyLanguage/API|完整文档]],或[[Special:ApiHelp/main|API帮助]]以获取更多信息。",
        "api-format-prettyprint-header-only-html": "这是用来调试的HTML实现,不适合实际使用。\n\n参见[[mw:Special:MyLanguage/API|完整文档]],或[[Special:ApiHelp/main|API帮助]]以获取更多信息。",
+       "api-format-prettyprint-header-hyperlinked": "这是$1格式的HTML实现。HTML对调试很有用,但不适合应用程序使用。\n\n指定<var>format</var>参数以更改输出格式。要查看$1格式的非HTML实现,设置[$3 <kbd>format=$2</kbd>]。\n\n参见[[mw:API|完整文档]],或[[Special:ApiHelp/main|API帮助]]以获取更多信息。",
        "api-format-prettyprint-status": "此响应将会返回HTTP状态$1 $2。",
        "api-login-fail-aborted": "身份验证需要用户交互,而其不被<kbd>action=login</kbd>支持。要通过<kbd>action=login</kbd>登录,请参见[[Special:BotPasswords]]。要继续使用主账户登录,请参见<kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>。",
        "api-login-fail-aborted-nobotpw": "身份验证需要用户交互,而其不被<kbd>action=login</kbd>支持。要登录,请参见<kbd>[[Special:ApiHelp/clientlogin|action=clientlogin]]</kbd>。",
        "apierror-changeauth-norequest": "创建更改请求失败。",
        "apierror-chunk-too-small": "对于非最终块,最小块大小为$1{{PLURAL:$1|字节}}。",
        "apierror-cidrtoobroad": "比/$2更宽的$1 CIDR地址段不被接受。",
+       "apierror-compare-relative-to-nothing": "没有与<var>torelative</var>的“来源”修订版本相对的版本。",
        "apierror-contentserializationexception": "内容序列化失败:$1",
        "apierror-contenttoobig": "您提供的内容超过了$1{{PLURAL:$1|千字节}}的条目大小限制。",
        "apierror-copyuploadbaddomain": "不允许从此域名通过URL上传。",
        "apiwarn-alldeletedrevisions-performance": "当生成标题时,为获得更好性能,请设置<kbd>$1dir=newer</kbd>。",
        "apiwarn-badurlparam": "不能为$2解析<var>$1urlparam</var>。请只使用宽和高。",
        "apiwarn-badutf8": "<var>$1</var>通过的值包含无效或非标准化数据。正文数据应为有效的NFC标准化Unicode,没有除HT(\\t)、LF(\\n)和CR(\\r)以外的C0控制字符。",
+       "apiwarn-compare-nocontentmodel": "没有可以定义的模型,假定为$1。",
        "apiwarn-deprecation-deletedrevs": "<kbd>list=deletedrevs</kbd>已被弃用。请改用<kbd>prop=deletedrevisions</kbd>或<kbd>list=alldeletedrevisions</kbd>。",
        "apiwarn-deprecation-expandtemplates-prop": "因为没有为<var>prop</var>参数指定值,所以在输出上使用了遗留格式。这种格式已弃用,并且将来会为<var>prop</var>参数设置默认值,这会导致新格式总会被使用。",
        "apiwarn-deprecation-httpsexpected": "当应为HTTPS时,HTTP被使用。",
index 92a3d3f..5aa693d 100644 (file)
@@ -177,6 +177,8 @@ class ChangesList extends ContextSource {
                } else {
                        $classes[] = Sanitizer::escapeClass( self::CSS_CLASS_PREFIX . 'ns' .
                                $rc->mAttribs['rc_namespace'] . '-' . $rc->mAttribs['rc_title'] );
+                       $classes[] = Sanitizer::escapeClass( self::CSS_CLASS_PREFIX . 'ns-' .
+                               $rc->mAttribs['rc_namespace'] );
                }
 
                // Indicate watched status on the line to allow for more
@@ -739,4 +741,26 @@ class ChangesList extends ContextSource {
                        && intval( $rcObj->getAttribute( 'rc_this_oldid' ) ) === 0;
        }
 
+       /**
+        * Get recommended data attributes for a change line.
+        * @param RecentChange $rc
+        * @return string[] attribute name => value
+        */
+       protected function getDataAttributes( RecentChange $rc ) {
+               $type = $rc->getAttribute( 'rc_source' );
+               switch ( $type ) {
+                       case RecentChange::SRC_EDIT:
+                       case RecentChange::SRC_NEW:
+                               return [
+                                       'data-mw-revid' => $rc->mAttribs['rc_this_oldid'],
+                               ];
+                       case RecentChange::SRC_LOG:
+                               return [
+                                       'data-mw-logid' => $rc->mAttribs['rc_logid'],
+                                       'data-mw-logaction' => $rc->mAttribs['rc_log_type'] . '/' . $rc->mAttribs['rc_log_action'],
+                               ];
+                       default:
+                               return [];
+               }
+       }
 }
index b34a33f..03f63f6 100644 (file)
@@ -447,13 +447,16 @@ class EnhancedChangesList extends ChangesList {
                # Tags
                $data['tags'] = $this->getTags( $rcObj, $classes );
 
+               $attribs = $this->getDataAttributes( $rcObj );
+
                // give the hook a chance to modify the data
                $success = Hooks::run( 'EnhancedChangesListModifyLineData',
-                       [ $this, &$data, $block, $rcObj, &$classes ] );
+                       [ $this, &$data, $block, $rcObj, &$classes, &$attribs ] );
                if ( !$success ) {
                        // skip entry if hook aborted it
                        return [];
                }
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
 
                $lineParams['recentChangesFlagsRaw'] = [];
                if ( isset( $data['recentChangesFlags'] ) ) {
@@ -469,6 +472,7 @@ class EnhancedChangesList extends ChangesList {
                }
 
                $lineParams['classes'] = array_values( $classes );
+               $lineParams['attribs'] = Html::expandAttributes( $attribs );
 
                // everything else: makes it easier for extensions to add or remove data
                $lineParams['data'] = array_values( $data );
@@ -671,6 +675,8 @@ class EnhancedChangesList extends ChangesList {
                # Show how many people are watching this if enabled
                $data['watchingUsers'] = $this->numberofWatchingusers( $rcObj->numberofWatchingusers );
 
+               $data['attribs'] = array_merge( $this->getDataAttributes( $rcObj ), [ 'class' => $classes ] );
+
                // give the hook a chance to modify the data
                $success = Hooks::run( 'EnhancedChangesListModifyBlockLineData',
                        [ $this, &$data, $rcObj ] );
@@ -678,9 +684,11 @@ class EnhancedChangesList extends ChangesList {
                        // skip entry if hook aborted it
                        return '';
                }
+               $attribs = $data['attribs'];
+               unset( $data['attribs'] );
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
 
-               $line = Html::openElement( 'table', [ 'class' => $classes ] ) .
-                       Html::openElement( 'tr' );
+               $line = Html::openElement( 'table', $attribs ) . Html::openElement( 'tr' );
                $line .= '<td class="mw-enhanced-rc"><span class="mw-enhancedchanges-arrow-space"></span>';
 
                if ( isset( $data['recentChangesFlags'] ) ) {
index a5d5191..2a53d66 100644 (file)
@@ -50,16 +50,23 @@ class OldChangesList extends ChangesList {
                                $rc->mAttribs['rc_namespace'] . '-' . $rc->mAttribs['rc_title'] );
                }
 
+               $attribs = $this->getDataAttributes( $rc );
+
                // Avoid PHP 7.1 warning from passing $this by reference
                $list = $this;
-               if ( !Hooks::run( 'OldChangesListRecentChangesLine', [ &$list, &$html, $rc, &$classes ] ) ) {
+               if ( !Hooks::run( 'OldChangesListRecentChangesLine',
+                       [ &$list, &$html, $rc, &$classes, &$attribs ] )
+               ) {
                        return false;
                }
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
 
                $dateheader = ''; // $html now contains only <li>...</li>, for hooks' convenience.
                $this->insertDateHeader( $dateheader, $rc->mAttribs['rc_timestamp'] );
 
-               return "$dateheader<li class=\"" . implode( ' ', $classes ) . "\">" . $html . "</li>\n";
+               $attribs['class'] = implode( ' ', $classes );
+
+               return $dateheader . Html::rawElement( 'li', $attribs,  $html ) . "\n";
        }
 
        /**
index ff6a873..6ba9c10 100644 (file)
@@ -120,6 +120,32 @@ class ChangeTags {
                return $msg->parse();
        }
 
+       /**
+        * Get the message object for the tag's long description.
+        *
+        * Checks if message key "mediawiki:tag-$tag-description" exists. If it does not,
+        * or if message is disabled, returns false. Otherwise, returns the message object
+        * for the long description.
+        *
+        * @param string $tag Tag
+        * @param IContextSource $context
+        * @return Message|bool Message object of the tag long description or false if
+        *  there is no description.
+        */
+       public static function tagLongDescriptionMessage( $tag, IContextSource $context ) {
+               $msg = $context->msg( "tag-$tag-description" );
+               if ( !$msg->exists() ) {
+                       return false;
+               }
+               if ( $msg->isDisabled() ) {
+                       // The message exists but is disabled, hide the description.
+                       return false;
+               }
+
+               // Message exists and isn't disabled, use it.
+               return $msg;
+       }
+
        /**
         * Add tags to a change given its rc_id, rev_id and/or log_id
         *
index 2264670..36d6df2 100644 (file)
@@ -181,10 +181,12 @@ abstract class ContextSource implements IContextSource {
         * Parameters are the same as wfMessage()
         *
         * @since 1.18
+        * @param string|string[]|MessageSpecifier $key Message key, or array of keys,
+        *   or a MessageSpecifier.
         * @param mixed ...
         * @return Message
         */
-       public function msg( /* $args */ ) {
+       public function msg( $key /* $args */ ) {
                $args = func_get_args();
 
                return call_user_func_array( [ $this->getContext(), 'msg' ], $args );
index 2939510..9c3c42a 100644 (file)
@@ -324,10 +324,12 @@ class DerivativeContext extends ContextSource implements MutableContext {
         * it would set only the original context, and not take
         * into account any changes.
         *
+        * @param string|string[]|MessageSpecifier $key Message key, or array of keys,
+        *   or a MessageSpecifier.
         * @param mixed $args,... Arguments to wfMessage
         * @return Message
         */
-       public function msg() {
+       public function msg( $key ) {
                $args = func_get_args();
 
                return call_user_func_array( 'wfMessage', $args )->setContext( $this );
index 8e9fc6f..d13e1a5 100644 (file)
@@ -52,7 +52,7 @@ use Liuggio\StatsdClient\Factory\StatsdDataFactory;
  * belong here either. Session state changes should only be propagated on
  * shutdown by separate persistence handler objects, for example.
  */
-interface IContextSource {
+interface IContextSource extends MessageLocalizer {
        /**
         * Get the WebRequest object
         *
@@ -143,14 +143,6 @@ interface IContextSource {
         */
        public function getTiming();
 
-       /**
-        * Get a Message object with context set.  See wfMessage for parameters.
-        *
-        * @param mixed ...
-        * @return Message
-        */
-       public function msg();
-
        /**
         * Export the resolved user IP, HTTP headers, user ID, and session ID.
         * The result will be reasonably sized to allow for serialization.
index 0e1de50..2cabfe1 100644 (file)
@@ -449,10 +449,12 @@ class RequestContext implements IContextSource, MutableContext {
         * Get a Message object with context set
         * Parameters are the same as wfMessage()
         *
+        * @param string|string[]|MessageSpecifier $key Message key, or array of keys,
+        *   or a MessageSpecifier.
         * @param mixed ...
         * @return Message
         */
-       public function msg() {
+       public function msg( $key ) {
                $args = func_get_args();
 
                return call_user_func_array( 'wfMessage', $args )->setContext( $this );
index b728786..556fe75 100644 (file)
@@ -558,19 +558,9 @@ class DatabaseOracle extends Database {
        }
 
        function nativeInsertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
-               $insertOptions = [], $selectOptions = []
+               $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
                $destTable = $this->tableName( $destTable );
-               if ( !is_array( $selectOptions ) ) {
-                       $selectOptions = [ $selectOptions ];
-               }
-               list( $startOpts, $useIndex, $tailOpts, $ignoreIndex ) =
-                       $this->makeSelectOptions( $selectOptions );
-               if ( is_array( $srcTable ) ) {
-                       $srcTable = implode( ',', array_map( [ $this, 'tableName' ], $srcTable ) );
-               } else {
-                       $srcTable = $this->tableName( $srcTable );
-               }
 
                $sequenceData = $this->getSequenceData( $destTable );
                if ( $sequenceData !== false &&
@@ -585,13 +575,16 @@ class DatabaseOracle extends Database {
                        $val = $val . ' field' . ( $i++ );
                }
 
-               $sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
-                       " SELECT $startOpts " . implode( ',', $varMap ) .
-                       " FROM $srcTable $useIndex $ignoreIndex ";
-               if ( $conds != '*' ) {
-                       $sql .= ' WHERE ' . $this->makeList( $conds, LIST_AND );
-               }
-               $sql .= " $tailOpts";
+               $selectSql = $this->selectSQLText(
+                       $srcTable,
+                       array_values( $varMap ),
+                       $conds,
+                       $fname,
+                       $selectOptions,
+                       $selectJoinConds
+               );
+
+               $sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ') ' . $selectSql;
 
                if ( in_array( 'IGNORE', $insertOptions ) ) {
                        $this->ignoreDupValOnIndex = true;
index 2700daa..2a50566 100644 (file)
@@ -23,7 +23,6 @@ namespace MediaWiki\Logger\Monolog;
 use AvroIODatumWriter;
 use AvroIOBinaryEncoder;
 use AvroIOTypeException;
-use AvroNamedSchemata;
 use AvroSchema;
 use AvroStringIO;
 use AvroValidator;
index 51f5a28..a3a37f6 100644 (file)
@@ -286,7 +286,7 @@ class DeferredUpdates {
                }
 
                // Avoiding running updates without them having outer scope
-               if ( !self::getBusyDbConnections() ) {
+               if ( !self::areDatabaseTransactionsActive() ) {
                        self::doUpdates( $mode );
                        return true;
                }
@@ -356,16 +356,19 @@ class DeferredUpdates {
        }
 
        /**
-        * @return IDatabase[] Connection where commit() cannot be called yet
+        * @return bool If a transaction round is active or connection is not ready for commit()
         */
-       private static function getBusyDbConnections() {
-               $connsBusy = [];
-
+       private static function areDatabaseTransactionsActive() {
                $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+               if ( $lbFactory->hasTransactionRound() ) {
+                       return true;
+               }
+
+               $connsBusy = false;
                $lbFactory->forEachLB( function ( LoadBalancer $lb ) use ( &$connsBusy ) {
                        $lb->forEachOpenMasterConnection( function ( IDatabase $conn ) use ( &$connsBusy ) {
                                if ( $conn->writesOrCallbacksPending() || $conn->explicitTrxActive() ) {
-                                       $connsBusy[] = $conn;
+                                       $connsBusy = true;
                                }
                        } );
                } );
index 856dc36..2394704 100644 (file)
@@ -24,7 +24,6 @@
  */
 
 use Wikimedia\Rdbms\DBConnRef;
-use Wikimedia\Rdbms\MaintainableDBConnRef;
 
 /**
  * @brief Proxy backend that manages file layout rewriting for FileRepo.
index 53211fe..9aa2b18 100644 (file)
@@ -2173,7 +2173,7 @@ abstract class File implements IDBAccessObject {
                                $metadata = [];
                        }
 
-                       return $handler->getContentHeaders( $metadata, $this->getWidth(), $this->getHeight() );
+                       return $handler->getContentHeaders( $metadata );
                }
 
                return [];
index a90156f..8d715e8 100644 (file)
@@ -1206,9 +1206,7 @@ class LocalFile extends File {
                                $metadata = [];
                        }
 
-                       $options['headers'] = $handler->getContentHeaders(
-                               $metadata, $props['width'], $props['height']
-                       );
+                       $options['headers'] = $handler->getContentHeaders( $metadata );
                } else {
                        $options['headers'] = [];
                }
index 6884f65..eeb8a8f 100644 (file)
@@ -38,6 +38,11 @@ abstract class ImageGalleryBase extends ContextSource {
         */
        protected $mShowBytes;
 
+       /**
+        * @var bool Whether to show the dimensions in categories
+        */
+       protected $mShowDimensions;
+
        /**
         * @var bool Whether to show the filename. Default: true
         */
@@ -136,6 +141,7 @@ abstract class ImageGalleryBase extends ContextSource {
                $galleryOptions = $this->getConfig()->get( 'GalleryOptions' );
                $this->mImages = [];
                $this->mShowBytes = $galleryOptions['showBytes'];
+               $this->mShowDimensions = $galleryOptions['showDimensions'];
                $this->mShowFilename = true;
                $this->mParser = false;
                $this->mHideBadImages = false;
@@ -283,6 +289,16 @@ abstract class ImageGalleryBase extends ContextSource {
                return empty( $this->mImages );
        }
 
+       /**
+        * Enable/Disable showing of the dimensions of an image in the gallery.
+        * Enabled by default.
+        *
+        * @param bool $f Set to false to disable
+        */
+       function setShowDimensions( $f ) {
+               $this->mShowDimensions = (bool)$f;
+       }
+
        /**
         * Enable/Disable showing of the file size of an image in the gallery.
         * Enabled by default.
index 1fd7b0a..a0059ce 100644 (file)
@@ -174,15 +174,20 @@ class TraditionalImageGallery extends ImageGalleryBase {
                        // ":{$ut}" );
                        // $ul = Linker::link( $linkTarget, $ut );
 
-                       if ( $this->mShowBytes ) {
-                               if ( $img ) {
-                                       $fileSize = htmlspecialchars( $lang->formatSize( $img->getSize() ) );
-                               } else {
-                                       $fileSize = $this->msg( 'filemissing' )->escaped();
+                       $meta = [];
+                       if ( $img ) {
+                               if ( $this->mShowDimensions ) {
+                                       $meta[] = $img->getDimensionsString();
                                }
-                               $fileSize = "$fileSize<br />\n";
-                       } else {
-                               $fileSize = '';
+                               if ( $this->mShowBytes ) {
+                                       $meta[] = htmlspecialchars( $lang->formatSize( $img->getSize() ) );
+                               }
+                       } elseif ( $this->mShowDimensions || $this->mShowBytes ) {
+                               $meta[] = $this->msg( 'filemissing' )->escaped();
+                       }
+                       $meta = $lang->semicolonList( $meta );
+                       if ( $meta ) {
+                               $meta .= "<br />\n";
                        }
 
                        $textlink = $this->mShowFilename ?
@@ -201,7 +206,7 @@ class TraditionalImageGallery extends ImageGalleryBase {
                                ) . "\n" :
                                '';
 
-                       $galleryText = $textlink . $text . $fileSize;
+                       $galleryText = $textlink . $text . $meta;
                        $galleryText = $this->wrapGalleryText( $galleryText, $thumb );
 
                        # Weird double wrapping (the extra div inside the li) needed due to FF2 bug
index 6650321..ed99802 100644 (file)
@@ -191,6 +191,10 @@ class OOUIHTMLForm extends HTMLForm {
         * @return string
         */
        public function getErrorsOrWarnings( $elements, $elementsType ) {
+               if ( $elements === '' ) {
+                       return '';
+               }
+
                if ( !in_array( $elementsType, [ 'error', 'warning' ], true ) ) {
                        throw new DomainException( $elementsType . ' is not a valid type.' );
                }
index 06b579a..2fc9f5e 100644 (file)
@@ -39,6 +39,7 @@ class WikiImporter {
        private $mNoticeCallback, $mDebug;
        private $mImportUploads, $mImageBasePath;
        private $mNoUpdates = false;
+       private $pageOffset = 0;
        /** @var Config */
        private $config;
        /** @var ImportTitleFactory */
@@ -146,6 +147,16 @@ class WikiImporter {
                $this->mNoUpdates = $noupdates;
        }
 
+       /**
+        * Sets 'pageOffset' value. So it will skip the first n-1 pages
+        * and start from the nth page. It's 1-based indexing.
+        * @param int $nthPage
+        * @since 1.29
+        */
+       function setPageOffset( $nthPage ) {
+               $this->pageOffset = $nthPage;
+       }
+
        /**
         * Set a callback that displays notice messages
         *
@@ -562,9 +573,19 @@ class WikiImporter {
                $keepReading = $this->reader->read();
                $skip = false;
                $rethrow = null;
+               $pageCount = 0;
                try {
                        while ( $keepReading ) {
                                $tag = $this->reader->localName;
+                               if ( $this->pageOffset ) {
+                                       if ( $tag === 'page' ) {
+                                               $pageCount++;
+                                       }
+                                       if ( $pageCount < $this->pageOffset ) {
+                                               $keepReading = $this->reader->next();
+                                               continue;
+                                       }
+                               }
                                $type = $this->reader->nodeType;
 
                                if ( !Hooks::run( 'ImportHandleToplevelXMLTag', [ $this ] ) ) {
index cfd4a86..bce07d3 100644 (file)
@@ -98,17 +98,19 @@ class WebInstallerLanguage extends WebInstallerPage {
         * @return string
         */
        public function getLanguageSelector( $name, $label, $selectedCode, $helpHtml = '' ) {
-               global $wgDummyLanguageCodes;
+               global $wgExtraLanguageCodes;
 
                $output = $helpHtml;
 
                $select = new XmlSelect( $name, $name, $selectedCode );
                $select->setAttribute( 'tabindex', $this->parent->nextTabIndex() );
 
+               $unwantedLanguageCodes = $wgExtraLanguageCodes +
+                       LanguageCode::getDeprecatedCodeMapping();
                $languages = Language::fetchLanguageNames();
                ksort( $languages );
                foreach ( $languages as $code => $lang ) {
-                       if ( isset( $wgDummyLanguageCodes[$code] ) ) {
+                       if ( isset( $unwantedLanguageCodes[$code] ) ) {
                                continue;
                        }
                        $select->addOption( "$code - $lang", $code );
index d47334c..1b2831f 100644 (file)
        "config-db-schema-help": "Esti esquema de vezu va tar bien.\nCamúdalos solo si sabes que lo precises.",
        "config-pg-test-error": "Nun puede coneutase cola base de datos <strong>$1</strong>: $2",
        "config-sqlite-dir": "Direutoriu de datos SQLite:",
+       "config-oracle-def-ts": "Espaciu de tables predetermináu:",
+       "config-oracle-temp-ts": "Espaciu de tables temporal:",
        "config-type-mysql": "MySQL (o compatible)",
        "config-type-mssql": "Microsoft SQL Server",
+       "config-support-info": "MediaWiki ye compatible colos siguientes sistemes de bases de datos:\n\n$1\n\nSi nun atopes na llista el sistema de base de datos que tas intentando utilizar, sigue les instrucciones enllazaes enriba p'activar la compatibilidá.",
+       "config-header-mysql": "Configuración de MySQL",
+       "config-header-postgres": "Configuración de PostgreSQL",
+       "config-header-sqlite": "Configuración de SQLite",
+       "config-header-oracle": "Configuración d'Oracle",
+       "config-header-mssql": "Configuración de Microsoft SQL Server",
        "config-invalid-db-type": "Triba non válida de base de datos.",
        "config-missing-db-name": "Tienes d'introducir un valor pa «{{int:config-db-name}}».",
+       "config-missing-db-host": "Tienes d'escribir un valor pa «{{int:config-db-host}}».",
+       "config-missing-db-server-oracle": "Tienes d'escribir un valor pa «{{int:config-db-host-oracle}}».",
+       "config-invalid-db-server-oracle": "TNS inválidu pa la base de datos «$1».\nUsa una cadena «TNS Name» o «Easy Connect» ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Métodos de nomenclatura d'Oracle]).",
+       "config-invalid-db-name": "Nome inválidu de la base de datos «$1».\nUsa sólo lletres ASCII (a-z, A-Z), númberos (0-9), guiones baxos (_) y guiones (-).",
+       "config-invalid-db-prefix": "Prefixu inválidu pa la base de datos «$1».\nUsa sólo lletres ASCII (a-z, A-Z), númberos (0-9), guiones baxos (_) y guiones (-).",
+       "config-connection-error": "$1.\n\nComprueba'l sirvidor, el nome d'usuariu y la contraseña, y tenta nuevamente.",
+       "config-invalid-schema": "Esquema inválidu «$1» pa MediaWiki.\nUsa sólo lletres ASCII (a-z, A-Z), númberos (0-9) y guiones baxos (_).",
+       "config-db-sys-create-oracle": "L'instalador sólo almite l'emplegu d'una cuenta SYSDBA pa crear una cuenta nueva.",
+       "config-db-sys-user-exists-oracle": "La cuenta d'usuariu «$1» yá esiste. ¡SYSDBA sólo puede utilizase pa crear una nueva cuenta!",
+       "config-postgres-old": "Ríquese PostgreSQL $1 o posterior. Tienes la versión $2.",
+       "config-mssql-old": "Ríquese Microsoft SQL Server $1 o posterior. Tienes la versión $2.",
+       "config-sqlite-name-help": "Escueye'l nome qu'identifica la to wiki.\nNun uses espacios o guiones.\nEsti va usase como nome del ficheru de datos pa SQLite.",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
        "config-mysql-utf8": "UTF-8",
index a8abcec..6613972 100644 (file)
        "config-env-php": "PHP $1 je instaliran.",
        "config-env-hhvm": "HHVM $1 je instaliran.",
        "config-no-db": "Ne mogu pronaći pogodan upravljački program za bazu podataka! Morate ga instalirati za PHP-bazu.\n{{PLURAL:$2|Podržana je sljedeća vrsta|Podržane su sljedeće vrste}} baze podataka: $1.\n\nAko se sami kompajlirali PHP, omogućite klijent baze podataka u postavkama koristeći, naprimjer, <code>./configure --with-mysqli</code>.\nAko ste instalirali PHP iz paketa za Debian ili Ubuntu, onda također morate instalirati, naprimjer, paket <code>php5-mysql</code>.",
+       "config-memory-raised": "<code>memory_limit</code> za PHP iznosi $1, povišen na $2.",
+       "config-memory-bad": "<strong>Upozorenje:</strong> <code>memory_limit</code> za PHP iznosi $1.\nOvo je vjerovatno premalo.\nInstalacija možda neće uspjeti!",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] je instaliran",
        "config-apc": "[http://www.php.net/apc APC] je instaliran",
+       "config-apcu": "[http://www.php.net/apcu APCu] je instaliran",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] je instaliran",
        "config-diff3-bad": "GNU diff3 nije pronađen.",
+       "config-git": "Pronađen je Git program za kontrolu verzija: <code>$1</code>.",
+       "config-git-bad": "Nije pronađen Git program za kontrolu verzija.",
+       "config-imagemagick": "Pronađen je ImageMagick: <code>$1</code>.\nAko omogućite postavljanje, bit će omogućena minijaturizacija slika.",
+       "config-gd": "Utvrđeno je da je ugrađena grafička biblioteka GD.\nAko omogućite postavljanje, bit će omogućena minijaturizacija slika.",
+       "config-no-scaling": "Ne mogu pronaći biblioteku GD niti ImageMagick.\nMinijaturizacija slika bit će onemogućena.",
+       "config-no-uri": "<strong>Greška:</strong> Ne mogu utvrditi trenutni URI.\nInstalacija je prekinuta.",
        "config-db-type": "Vrsta baze podataka:",
        "config-db-host": "Domaćin baze podataka:",
        "config-db-wiki-settings": "Identificiraj ovu wiki",
        "config-db-name": "Naziv baze podataka:",
        "config-db-name-oracle": "Šema baze podataka:",
+       "config-db-install-account": "Korisnički račun za instalaciju",
        "config-db-username": "Korisničko ime baze podataka:",
        "config-db-password": "Lozinka baze podataka:",
+       "config-db-wiki-account": "Korisnički račun za redovan rad",
+       "config-db-prefix": "Prefiks tabele u bazi podataka:",
+       "config-mysql-old": "Zahtijeva se MySQL $1 ili noviji. Vi imate $2.",
        "config-db-port": "Port baze podataka:",
        "config-db-schema": "Šema za MediaWiki:",
+       "config-pg-test-error": "Ne mogu se povezati na bazu podataka <strong>$1</strong>: $2",
+       "config-sqlite-dir": "Folder za SQLite-podatke:",
        "config-oracle-def-ts": "Predodređeni tabelarni prostor:",
        "config-oracle-temp-ts": "Privremeni tabelarni prostor:",
+       "config-type-mysql": "MySQL (ili kompaktibilan)",
+       "config-type-mssql": "Microsoft SQL Server",
        "config-header-mysql": "Postavke MySQL-a",
        "config-header-postgres": "Postavke PostgreSQL-a",
        "config-header-sqlite": "Postavke SQLite-a",
        "config-missing-db-name": "Morate unijeti vrijednost za \"{{int:config-db-name}}\".",
        "config-missing-db-host": "Morate unijeti vrijednost za \"{{int:config-db-host}}\".",
        "config-missing-db-server-oracle": "Morate unijeti vrijednost za \"{{int:config-db-host-oracle}}\".",
+       "config-db-sys-create-oracle": "Program za instalaciju podržava samo upotrebu SYSDBA-računa za pravljenje novih računa.",
+       "config-postgres-old": "Zahtijeva se PostgreSQL $1 ili noviji. Vi imate $2.",
+       "config-mssql-old": "Zahtijeva se Microsoft SQL Server $1 ili noviji. Vi imate $2.",
+       "config-sqlite-name-help": "Izaberite ime koje će predstavljati Vaš wiki.\nNemojte koristiti razmake i crte.\nOvo će se koristiti za ime datoteke SQLite-podataka.",
        "config-sqlite-readonly": "Datoteka <code>$1</code> nije zapisiva.",
+       "config-sqlite-cant-create-db": "Ne mogu napraviti datoteku <code>$1</code> za bazu podataka.",
        "config-sqlite-fts3-downgrade": "PHP ne podržava FTS3, poništavam nadogradnju tabela.",
        "config-upgrade-done": "Nadogradnja završena.\n\nSada možete [$1 početi koristiti Vaš wiki].\n\nAko želite regenerirati Vašu datoteku <code>LocalSettings.php</code>, kliknite na dugme ispod.\nOvo <strong>nije preporučeno</strong> osim ako nemate problema s Vašim wikijem.",
        "config-upgrade-done-no-regenerate": "Nadogradnja završena.\n\nSad možete [$1 početi da koristite svoj wiki].",
        "config-regenerate": "Regeneriraj LocalSettings.php →",
        "config-unknown-collation": "<strong>Upozorenje:</strong> Baza podataka koristi nepoznatu kolaciju.",
        "config-db-web-account": "Račun baze podataka za mrežni pristup",
+       "config-db-web-account-same": "Koristi isti račun kao i za instalaciju",
        "config-db-web-create": "Napravi račun ako već ne postoji",
        "config-mysql-engine": "Skladišni pogon:",
        "config-mysql-innodb": "InnoDB",
        "config-site-name-blank": "Upišite ime sajta.",
        "config-project-namespace": "Imenski prostor projekta:",
        "config-ns-generic": "Projekt",
+       "config-ns-site-name": "Isti kao ime wikija: $1",
        "config-ns-other": "Drugo (navedite)",
        "config-ns-other-default": "MyWiki",
        "config-admin-box": "Administratorski račun",
        "config-admin-password-mismatch": "Lozinke koje ste upisali se ne poklapaju.",
        "config-admin-email": "Adresa e-pošte:",
        "config-admin-error-bademail": "Upisali ste neispravnu adresu e-pošte.",
+       "config-pingback": "Podijeli podatke o instalaciji s programerima MediaWikija.",
+       "config-optional-continue": "Postavi mi još pitanja.",
        "config-optional-skip": "Već mi je dosadilo, daj samo instaliraj wiki.",
+       "config-profile": "Profil korisničkih prava:",
        "config-profile-wiki": "Otvoren wiki",
+       "config-profile-no-anon": "Potrebno je napraviti račun",
+       "config-profile-fishbowl": "Samo ovlašteni korisnici",
        "config-profile-private": "Privatni wiki",
        "config-license": "Autorska prava i licenca:",
        "config-license-none": "Bez podnožja za licencu",
        "config-license-pd": "Javno vlasništvo",
+       "config-email-settings": "Postavke e-pošte",
+       "config-enable-email": "Omogući odlaznu e-poštu",
+       "config-upload-enable": "Omogući postavljanje datoteka",
+       "config-upload-deleted": "Folder za obrisane datoteke:",
        "config-logo": "URL logotipa:",
+       "config-instantcommons": "Omogući Instant Commons",
        "config-cc-again": "Izaberite ponovo...",
        "config-advanced-settings": "Napredna konfiguracija",
        "config-extensions": "Proširenja",
        "config-skins": "Teme",
+       "config-skins-use-as-default": "Koristi temu kao predodređenu",
+       "config-skins-missing": "Nije pronađena nijedna tema. MediaWiki će koristiti rezervnu temu dok ne instalirate druge.",
+       "config-skins-must-enable-some": "Morate izabrati barem jednu temu.",
+       "config-skins-must-enable-default": "Tema koju ste izabrali za predodređenu mora se omogućiti.",
        "config-install-alreadydone": "<strong>Upozorenje:</strong> Izgleda da već imate instaliran MediaWiki i da ga ponovo pokušavate instalirati.\nIdite na sljedeću stranicu.",
        "config-install-step-done": "završeno",
        "config-install-step-failed": "neuspješno",
        "config-install-extensions": "Uključujem proširenja",
        "config-install-database": "Postavljam bazu podataka",
        "config-install-schema": "Pravim šemu",
+       "config-install-pg-plpgsql": "Provjeravam jezik PL/pgSQL",
+       "config-pg-no-plpgsql": "Morate instalirati jezik PL/pgSQL u bazu podataka $1",
        "config-install-user": "Pravim korisnika baze podataka",
        "config-install-user-alreadyexists": "Korisnik \"$1\" već postoji",
+       "config-install-user-create-failed": "Pravljenje korisnika \"$1\" nije uspjelo: $2",
+       "config-install-user-grant-failed": "Dodjeljivanje dozvola korisniku \"$1\" nije uspjelo: $2",
        "config-install-user-missing": "Navedeni korisnik \"$1\" ne postoji.",
        "config-install-tables": "Pravim tabele",
        "config-install-interwiki": "Popunjavam predodređenu međuprojektnu tabelu",
        "config-install-stats": "Pokrećem statistiku",
        "config-install-keys": "Stvaram tajne ključeve",
+       "config-install-updates": "Spriječi pokretanje nepotrebnih ažuriranja",
        "config-install-sysop": "Pravim administratorski korisnički račun",
+       "config-install-subscribe-fail": "Ne mogu Vas pretplatiti na mediawiki-announce: $1",
+       "config-install-subscribe-notpossible": "cURL nije instaliran, a <code>allow_url_fopen</code> nije dostupno.",
        "config-install-mainpage": "Pravim početnu stranicu sa standardnim sadržajem",
+       "config-install-mainpage-exists": "Početna strana već postoji. Prelazim na sljedeće.",
+       "config-install-mainpage-failed": "Ne mogu umetnuti početnu stranu: $1",
        "config-download-localsettings": "Preuzmi <code>LocalSettings.php</code>",
        "config-help": "pomoć",
        "config-help-tooltip": "kliknite da proširite",
index cb7e392..e11fae2 100644 (file)
@@ -29,7 +29,7 @@
        "config-page-existingwiki": "Йолуш йолу вики",
        "config-copyright": "=== Авторан бакъонаш а хьал а ===\n\n$1\nMediaWiki ю маьрша программин латораг, шу йиш ю фондас арахецна йолу GNU General Public License лицензица и яржо я хийца а.\n\nMediaWiki яржош ю и шуна пайдане хир яц те аьлла, амма цхьа юкъарахилар доцуш. Хь. кхин. лицензи мадарра GNU General Public License .\n\nШоьга кхача езаш яра [{{SERVER}}{{SCRIPTPATH}}/COPYING копи GNU General Public License] хӀокху программица, кхаьчна яцахь язъе Free Software Foundation, Inc., адрес тӀе: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA я [//www.gnu.org/licenses/old-licenses/gpl-2.0.html еша и онлайнехь].",
        "config-no-fts3": "'''Тергам бе''': SQLite гулйина хуттург йоцуш [//sqlite.org/fts3.html FTS3] — лахар болхбеш хир дац оцу бухца.",
-       "config-no-cli-uri": "'''ДӀахьедар''': <code>--scriptpath</code> параметр язйина яц, иза Ӏад йитарца лелош ю: <code>$1</code> .",
+       "config-no-cli-uri": "'''ДӀахьедар''': <code>--scriptpath</code> параметр язйина яц, иза Ӏадйитаран кепаца лелош ю: <code>$1</code> .",
        "config-db-name": "Хаамийн базан цӀе:",
        "config-type-mssql": "Microsoft SQL Server",
        "config-header-mssql": "Microsoft SQL Server параметраш",
@@ -66,9 +66,9 @@
        "config-logo": "Логотипан URL:",
        "config-cc-again": "Хьаржа кхин цӀа…",
        "config-skins": "Кечяран тема",
-       "config-skins-use-as-default": "ХӀара тема Ӏад йитарца лелае",
+       "config-skins-use-as-default": "ХӀара тема Ӏадйитаран кепара лелае",
        "config-skins-must-enable-some": "Ахьа цхьаъ мукъа тема латина йита езаш ю.",
-       "config-skins-must-enable-default": "Ӏад йитарца йолу тема латина хила еза.",
+       "config-skins-must-enable-default": "Ӏадйитаран кепаца йолу тема латина хила еза.",
        "config-install-step-done": "кхочушдина",
        "config-install-step-failed": "тар цаделира",
        "config-install-user": "Декъашхочун хаамийн база кхоллар",
index 0f692d4..0ecc097 100644 (file)
        "config-postgres-old": "Ghe voeu MySQL $1 ò 'na verscion succesciva. Ti ti g'hæ a $2.",
        "config-mssql-old": "Ghe voeu Microsoft SQL Server $1 ò succescivo. Ti ti g'hæ a verscion $2.",
        "config-sqlite-name-help": "Çerni un nomme ch'o l'identiffiche a to wiki.\nNo doeuviâ spaÇçi ò trattin.\nQuesto o serviâ pe-o nomme do file di dæti SQLite.",
-       "config-sqlite-parent-unwritable-group": "No se poeu creâ a directory dæti <code><nowiki>$1</nowiki></code>, percose a directory supeiô <code><nowiki>$2</nowiki></code> a no l'è scrivibbile da-o webserver.\n\nO programma d'instalaÇion o l'ha determinou l'utente con chi o serviou web o l'è in esecuçion.\nDagghe a poscibilitæ de scrive inta directory <code><nowiki>$3</nowiki></code> pe continoâ.\nInsce un scistema Unix/Linux fanni:\n\n<pre>cd $2\nmkdir $3\nchgrp $4 $3\nchmod g+w $3</pre>"
+       "config-sqlite-parent-unwritable-group": "No se poeu creâ a directory dæti <code><nowiki>$1</nowiki></code>, percose a directory supeiô <code><nowiki>$2</nowiki></code> a no l'è scrivibbile da-o webserver.\n\nO programma d'instalaÇion o l'ha determinou l'utente con chi o serviou web o l'è in esecuçion.\nDagghe a poscibilitæ de scrive inta directory <code><nowiki>$3</nowiki></code> pe continoâ.\nInsce un scistema Unix/Linux fanni:\n\n<pre>cd $2\nmkdir $3\nchgrp $4 $3\nchmod g+w $3</pre>",
+       "config-sqlite-parent-unwritable-nogroup": "No se poeu creâ a directory dæti <code><nowiki>$1</nowiki></code>, percose a directory supeiô <code><nowiki>$2</nowiki></code> a no l'è scrivibbile da-o webserver.\n\nO programma d'instalaçion o no l'ha posciuo determinâ l'utente con chi o serviou web o l'è in esecuçion.\nRendi a directory <code><nowiki>$3</nowiki></code> scrivibbile globalmente, da esso (e da atri) pe continoâ.\nInsce un scistema Unix/Linux fanni:\n\n<pre>cd $2\nmkdir $3\nchmod a+w $3</pre>",
+       "config-sqlite-mkdir-error": "Errô durante a creaçion da directory dæti \"$1\".\nControlla a poxiçion e proeuva torna.",
+       "config-sqlite-dir-unwritable": "Imposcibile scrive inta directory \"$1\".\nCangia i aotoizaçioin de mainea che o webserver o ghe  posse scrive e proeuva torna.",
+       "config-sqlite-connection-error": "$1.\n\nControlla a directory dæti e o nomme do database chì de sotta, e proeuva torna.",
+       "config-sqlite-readonly": "O file <code>$1</code> o no l'è scrivibbile.",
+       "config-sqlite-cant-create-db": "Imposcibile creâ o file do database <code>$1</code> .",
+       "config-sqlite-fts3-downgrade": "A-o PHP gh'amanca o suporto FTS3, declassamento tabelle in corso",
+       "config-can-upgrade": "Gh'è de tabelle da MediaWiki in questo database.\nPe agiornâle a MediaWiki $1, clicca insce '''continnoa'''.",
+       "config-upgrade-done": "Agiornamento completo.\n\nAoa ti poeu [$1 començâ a doeuviâ a to wiki].\n\nSe t'oeu rigenerâ o to file <code>LocalSettings.php</code>, clicca in sciô pomello de sotta. Questa opiaçion '''a no l'è racomandâ''', a meno che no ti gh'aggi di problemi co-a to wiki.",
+       "config-upgrade-done-no-regenerate": "Agiornamento completo.\n\nAoa ti poeu [$1 començâ a doeuviâ a to wiki].",
+       "config-regenerate": "Rigennera LocalSettings.php →",
+       "config-show-table-status": "A query <code>SHOW TABLE STATUS</code> a l'è fallia!",
+       "config-unknown-collation": "'''Atençion:''' o database o doeuvia de reggole de confronto non riconosciue.",
+       "config-db-web-account": "Account do database pe l'acesso web",
+       "config-db-web-help": "Seleçion-a o nomme utente e a password che o serviou web o l'adoeuviâ pe conettise a-o serviou de database, durante o normale fonçionamento da wiki.",
+       "config-db-web-account-same": "Doeuvia o mæximo account de l'instalaçion",
+       "config-db-web-create": "Crea l'account s'o no l'existe ancon",
+       "config-db-web-no-create-privs": "L'account doeuviou pe l'installaçion o no dispon-e di privileggi necessai pe creâ un atro account.\nL'account indicou chì o deve za existe.",
+       "config-mysql-engine": "Motô d'archiviaçion:",
+       "config-mysql-innodb": "InnoDB",
+       "config-mysql-myisam": "MyISAM",
+       "config-mysql-myisam-dep": "<strong>Atençion:</strong> t'hæ seleçionou MyISAM comme motô d'archiviaçion pe MySQL, ch'o no l'è racomandou pe l'uso con  MediaWiki, percose:\n* o supporta debolmente a concorença pe-o blocco da tabella\n* o l'è ciu inclinou a-a corruçion di atri motoî\n* o codiçe de base MediaWiki o no gestisce sempre MyISAM comm'o doviæ\n\nSe a to instalaçion MySQL a supporta InnoDB, l'è atamente racomandou che ti o çerni a-o so posto.\nSe a to installaçion MySQL a no supporta InnoDB, foscia l'è o momento pe 'n agiornamento.",
+       "config-mysql-only-myisam-dep": "<strong>Atençion:</strong> MyISAM o l'è l'unnico motô d'archiviaçion disponibbile pe MySQL insce sta macchina, e questo no l'è consegiou pe doeuviâlo con MediaWiki, percose:\n* o supporta debolmente a concorenza pe-o blocco da tabella\n* o l''è ciu inclinou a-a corruçion di atri motoî\n* o coddiçe de base MediaWiki MyISAM  o no-o gestisce sempre comm'o doviæ\n\nS'a to installaçion MySQL a no supporta InnoDB, foscia l'è o momento pe 'n agiornamento.",
+       "config-mysql-engine-help": "<strong>InnoDB</strong> o l'è quæxi sempre a megio opçion, in quante o g'ha 'n bon supporto da concorença.\n\n<strong>MyISAM</strong> o poriæ vese ciu veloçe inte installaçioin mono-utente ò in sola-lettua.\nI database MyISAM tendan a dannezâse ciu soventi di database InnoDB.",
+       "config-mysql-charset": "Set di caratteri do database:",
+       "config-mysql-binary": "Binaio",
+       "config-mysql-utf8": "UTF-8",
+       "config-mysql-charset-help": "In <strong>modalitæ binaia</strong>, MediaWiki a l'archivvia o testo UTF-8 into database in campi binai.\nQuest'o l'è ciu efficaçe che a modalitæ UTF-8 do MySQL, e o consente de doeuviâ a gamma completa de caratteri Unicode.\n\nIn <strong>modalitæ UTF-8</strong>, MySQL o saviâ inte quæ set de caratteri l'è che son i to dæti, e o poriâ presentâli e convertîli in moddo apropiou, ma o no te permetiâ de memorizâ i caratteri de d'ato a-o [https://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Cian de base murtilenguistego].",
+       "config-mssql-auth": "Tipo d'aotenticaçion:",
+       "config-mssql-install-auth": "Seleçion-a o tipo d'aotenticaçion ch'o saiâ doeuviou pe conettise a-o database durante o processo de instalaçion.\nSe ti seleçion-i \"{{int:config-mssql-windowsauth}}\", saiâ doeuviou e credençiæ de quæ se segge utente segge aproeuv'a fâ giâ o serviou web.",
+       "config-mssql-web-auth": "Seleçion-a o tipo d'aotenticaçion che o serviou web o doeuviâ pe conettise a-o database. \nSe ti seleçion-i \"{{int:config-mssql-windowsauth}}\", saiâ doeuviou e credençiæ de quæ se segge utente segge aproeuv'a fâ giâ o serviou web.",
+       "config-mssql-sqlauth": "Aotenticaçion de SQL Server",
+       "config-mssql-windowsauth": "Aotenticaçion de Windows",
+       "config-site-name": "Nomme da wiki:",
+       "config-site-name-help": "Questo saiâ vixualizou inta bara do tittolo do navegatô e in atri varri recanti.",
+       "config-site-name-blank": "Inseisci o nomme de 'n scito.",
+       "config-project-namespace": "Namespace do progetto:",
+       "config-ns-generic": "Progetto",
+       "config-ns-site-name": "Pægio che o nomme do wiki: $1",
+       "config-ns-other": "Atro (specificâ)",
+       "config-ns-other-default": "MyWiki",
+       "config-project-namespace-help": "Aproeuvo a l'exempio da Wikipedia, molte wiki tegnan e so paggine co-e reggole separæ da-e paggine de contegnuo, inte 'n '''namespace de progetto'''.\nTutti i tittoli de paggine inte sto namespace començan co-in çerto prefisso, che ti poeu indicâ chie.\nA l'uzo, sto prefisso o deriva da-o nomme da wiki, ma o no poeu contegnî di caratteri de pontezatua comme \"#\" ò \":\".",
+       "config-ns-invalid": "O namespace indicou \"<nowiki>$1</nowiki>\" o no l'è vallido.\nSpecificâ un despægio namespace de progetto.",
+       "config-ns-conflict": "O namespace indicou \"<nowiki>$1</nowiki>\" o l'è in conflito co-in namespace predefinio MediaWiki.\nSpecificâ un despægio namespace de progetto.",
+       "config-admin-box": "Account amministratô",
+       "config-admin-name": "O to nomme utente:",
+       "config-admin-password": "Poula segretta:",
+       "config-admin-password-confirm": "Ripeti a poula segretta:",
+       "config-admin-help": "Inseisci chì o to nomme utente prefeio, presempio \"Giobatta Parodi\".\nSto chì o l'è o nomme che ti doeuviæ pe acede a-a wiki.",
+       "config-admin-name-blank": "Inseisci un nomme pe l'aministratô.",
+       "config-admin-name-invalid": "O nomme utente indicou \"<nowiki>$1</nowiki>\" o no l'è vallido.\nSpecificâ un nomme utente despægio.",
+       "config-admin-password-blank": "Inseisci 'na password pe l'account d'aministratô.",
+       "config-admin-password-mismatch": "E doe password inseie no corispondan.",
+       "config-admin-email": "Adresso e-mail:",
+       "config-admin-email-help": "Inseisci chì 'n adresso e-mail pe poei riçeive di e-mail da-i atri utenti da wiki, rimpostâ a to password, e vese informou de modiffiche aportæ a-e to paggine sotta oservaçion. Se no te interessa, ti poeu lasciâ voeuo questo campo.",
+       "config-admin-error-user": "Erô interno durante a creaçion de 'n aministratô co-o nomme \"<nowiki>$1</nowiki>\".",
+       "config-admin-error-password": "Erô interno durante l'impostaçion de 'na password pe aministratô \"<nowiki>$1</nowiki>\": <pre>$2</pre>",
+       "config-admin-error-bademail": "T'hæ inseio un adresso e-mail non vallido.",
+       "config-subscribe": "Sottoscrivi a [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce mailing list di anonçi de release].",
+       "config-subscribe-help": "Se tratta de 'na mailing list a basso traffego dedicâ a-i anonçi de sciortie de noeuve verscioin, compreize de importante segnalaçioin pe-a segueçça.\nSe conseggia de inscrivise e agiornâ a proppia instalaçion de MediaWiki quande sciorte 'na noeuva verscion.",
+       "config-subscribe-noemail": "T'hæ provou a inscrivite a-a mailing list dedicâ a-i anonçi de noeuve verscioin sença fornî un adresso e-mail.\nInseisci un adresso e-mail se ti dexidei efetoâ l'inscriçion a-a mailing list.",
+       "config-pingback": "Condividdi i dæti insce questa installaçion co-i svilupatoî da MediaWiki.",
+       "config-pingback-help": "Se ti seleçion-i questa opçion, MediaWiki a contattiâ periodicamente https://www.mediawiki.org co-i dæti base insce questa instançia MediaWiki. Queta categoria de dæti a l'includde, prexempio, o tipo de scistema, a verscion de PHP e o database de backend çernuo. A Wikimedia Foundation a condividde questi dæti co-i sviluppatoî Mediawiki pe agiutâla a guidâ i futuri sforsci de sviluppo. Pe-o to scistema saiâ inviou i seguenti dæti:\n<pre>$1</pre>",
+       "config-almost-done": "T'hæ quæxi a tio!\nAoa ti poeu sâtâ a restante parte da configuaçion e instalâ a wiki subbito.",
+       "config-optional-continue": "Famme di atre domande.",
+       "config-optional-skip": "Son za stuffo, installa a wiki e basta.",
+       "config-profile": "Profî di driti utente:",
+       "config-profile-wiki": "Wiki averta",
+       "config-profile-no-anon": "Creaçion utença obrigatoia",
+       "config-profile-fishbowl": "Solo utenti aotorizæ",
+       "config-profile-private": "Wiki privâ",
+       "config-profile-help": "E wiki fonçion-an megio se ti permetti a tante person-e de poeili modificâ.\nIn MediaWiki, l'è sempliçe controlâ i urtime modiffiche, e ripristinâ i danni caosæ da di utenti inesperti ò malintençionæ.\n\nTuttavia, tanti han trovou a MediaWiki uttile inte 'n'ampia varietæ de rolli, e de volte no l'è faççile convinçe tutti di vantaggi da modalitæ wiki.\nPerciò, fanni a to scelta.\n\nO modello <strong>{{int:config-profile-wiki}}</strong> o consente a chi se segge de modificâ, anche sença efetoâ l'acesso.\nUna wiki con <strong>{{int:config-profile-no-anon}}</strong> a l'ofre 'na magiô responsabilitæ, ma a poriæ scoragî i contributoî ocaxonæ.\n\nO scenario <strong>{{int:config-profile-fishbowl}}</strong> o consente a-i utenti aotorizæ de modificâ, ma o pubbrico o poeu vixualizâ e paggine, compreiso a cronologia.\nUn <strong>{{int:config-profile-private}}</strong> o consente solo ch'a-i utenti aotorizæ de vixualizâ e paggine, o mæximo groppo o poeu modificâle.\n\nDe configuaçioin di driti utente ciu complesse son disponibbile doppo l'instalaçion, amia a  [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights parte relativa do manoâ].",
+       "config-license": "Driti d'aotô e liçençia:",
+       "config-license-none": "Nisciun pê de paggina pe-a liçençia",
+       "config-license-cc-by-sa": "Creative Commons Attribuçion-Condividdi pægio",
+       "config-license-cc-by": "Creative Commons Attribuçion",
+       "config-license-cc-by-nc-sa": "Creative Commons Attribuçion-Non comerciale-Condividdi Pægio",
+       "config-license-cc-0": "Creative Commons Zero (pubbrico dominnio)",
+       "config-license-gfdl": "GNU Free Documentation License 1.3 o verscioin sucescive",
+       "config-license-pd": "Pubbrico dominnio",
+       "config-license-cc-choose": "Seleçion-a un-a de liçençie Creative Commons",
+       "config-license-help": "Tante wiki pubbriche rilascian i so contributi co-ina [http://freedomdefined.org/Definition liçençia libbera]. Sto fæto o l'agiutta a creâ un senso de propietæ condivisa inta comunitæ e o l'incoragisce a contriboî a longo termine. O no l'è generalmente necessaio pe 'na wiki privâ ò aziendale.\n\nSe ti voeu doeuviâ di scriti da Wikipedia, ò ti dexiddei che a Wikipedia a posse vese in graddo de acetâ di scriti copiæ da-a to wiki, ti doviesci scellie <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nIn precedença a Wikipedia a l'ha doeuviou a GNU Free Documentation License. A GFDL a l'è 'na liçençia vallida, ma a l'è difiççile da capî e a complica o riutilizzo di contegnui.",
+       "config-email-settings": "Impostaçioin e-mail",
+       "config-enable-email": "Abillita a sciortia da posta elettronica",
+       "config-enable-email-help": "Se ti voeu che fonçion-e l'e-mail, e [http://www.php.net/manual/en/mail.configuration.php PHP's impostaçioin della posta] dev'esan configuæ corettamente.\nSe non ti dexiddei arcun-a fonçionalitæ de posta eletronnica, ti a poeu disabilitâ chie.",
+       "config-email-user": "Abillita e-mail fra utenti",
+       "config-email-user-help": "Consente a tutti i utenti de inviâse l'un l'atro l'e-mail, se l'han abilitou inte so preferençe.",
+       "config-email-usertalk": "Abillita e notiffiche pe-e paggine de discuscion utente",
+       "config-email-usertalk-help": "Consente a-i utenti de riçeive de notiffiche pe-e modiffiche de so paggine de discuscion, se l'han abilitou inte so preferençe.",
+       "config-email-watchlist": "Abillita e notiffiche pe-a lista sott'oservaçion",
+       "config-email-watchlist-help": "Consente a-i utenti de riçeive de notiffiche pe-e pagine da lista sott'oservaçion, se l'han abilitou inte so preferençe.",
+       "config-email-auth": "Abillita aotenticaçion via e-mail",
+       "config-email-auth-help": "Se questa opçion a l'è attivâ, i utenti dovian confermâ o so adresso e-mail doeouviando un ingancio ch'o ven inviou ogni votta che l'impostan ò o cangian.\nSolo i adressi de posta elettronica aotenticæ poeuan riçeive de e-mail da di atri utenti ò cangiâ e e-mail de notiffica.\nImpostâ st'opçion l'è <strong>raccomandou</strong> pe-e wiki pubbriche pe via do potençiale abuso dee fonçioin de posta elettronica.",
+       "config-email-sender": "Adresso e-mail de ritorno:",
+       "config-email-sender-help": "Inseisci l'adresso e-mail da doeuviâ comme adresso de ritorno pe-a posta ch'a sciorte.\nChì l'è donde ghe saiâ inviou i eventoali eroî.\nMolti server de posta richiedan che armeno a parte do nomme de dominnio a segge vallida.",
+       "config-upload-settings": "Caregamenti de inmaggine e file",
+       "config-upload-enable": "Consentî o caregamento di file",
+       "config-upload-help": "O caregamento di file o poriæ espon-e o to serviou a di reizeghi de segueçça.\nPe magioî informaçioin, lezi a  [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security seçion in sciâ segueçça] into manoâ.\n\nPe consentî o caregamento di file, modiffica a modalitæ inta sottodirectory <code>images</code> da directory prinçipâ da MediaWiki coscì che o serviou web o posse scrive lì.\nPoi attiva questa opçion.",
+       "config-upload-deleted": "Directory pe-i file scassæ:",
+       "config-upload-deleted-help": "Çerni 'na directory onde archiviâ i file scassæ.\nIdealmente, questa a no doviæ ese accescibbile da-o web.",
+       "config-logo": "URL do logo:",
+       "config-logo-help": "O tema predefinio da MediaWiki o l'includde o spaççio pe 'n logo de 135 x 160 pixel sorve o menù laterâ.\nCarrega 'n'inmaggine de dimenscioin apropiæ e inseisci l'URL chie.\n\nL'è poscibbile doeuviâ <code>$wgStylePath</code> o <code>$wgScriptPath</code> se o logo o l'è relativo a sti percorsci.\n\nSe un logo no ti o voeu, lascia sta casella voeua.",
+       "config-instantcommons": "Abillita Instant Commons",
+       "config-instantcommons-help": "[https://www.mediawiki.org/wiki/InstantCommons Instant Commons] a l'è 'na fonçionalitæ ch'a consente a-i wiki de doeuviâ inmaggine, soin e atri file murtimediæ ch'atroæ 'n sciô scito [https://commons.wikimedia.org/ Wikimedia Commons].\nPe fâ questo, a MediaWiki a richiede l'accesso a l'Internet.\n\nPe ciu informaçioin insce sta fonçionalitæ, con tanto de instruçioin sciu comme configuâlo pe de wiki despæge da-a Wikimedia Commons, consurtæ [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos o manoâ].",
+       "config-cc-error": "O selettô de liçençie Creative Commons o no l'ha reizo arcun resultato.\nInseisci manoalmente o nomme da liçençia.",
+       "config-cc-again": "Çerni torna...",
+       "config-cc-not-chosen": "Çerni quæ liçençia Creative Commons ti voeu e sciacca \"proceed\".",
+       "config-advanced-settings": "Configuaçion avançâ",
+       "config-cache-options": "Impostaçioin pe-a cache di ogetti:",
+       "config-cache-help": "A memorizaçion di ogetti inta cache a serve pe fâ anâ ciu fito a MediaWiki sarvando inta cache i dæti che ti doeuvi soventi.\nPe di sciti de dimenscioin mezan-e e grende l'è cadamente consegiou attivâ a cache, ma pe-i piccin ascì se ne vediâ i benefiççi.",
+       "config-cache-none": "Nisciun-a memorizaçion inta cache (nisciun-a fonçionalitæ a l'è impedia, ma in scî sciti wiki ciu grendi a veloçitæ a poriæ risentîne)",
+       "config-cache-accel": "Mette in cache ogetti PHP (APC, APCu, XCache ò WinCache)",
+       "config-cache-memcached": "Doeuvia Memcached (a richiede urteioî attivitæ de instalaçion e configuaçion)",
+       "config-memcached-servers": "Serviou de Memcached:",
+       "config-memcached-help": "Lista de adressi IP da doeuviâ pe Memcached.\nTi doviesci specificâne un pe riga e indicâ a porta da doeuviâ. Presempio:\n 127.0.0.1:11211\n 192.168.1.25:1234",
+       "config-memcache-needservers": "L'è stæto seleçionou o tipo de caching Memcached, ma no l'è stæto impostou arcun serviou.",
+       "config-memcache-badip": "L'è stæto inseio un adresso IP non vallido pe Memcached: $1.",
+       "config-memcache-noport": "Non l'è stæto specificou 'na porta da doeuviâ pe-o serviou Memcached: $1.\nSe no ti sæ quæ a l'è a porta, o valô pe difetto o l'è 11211.",
+       "config-memcache-badport": "I nummeri de porta pe Memcached dovieivan ese tra $1 e $2.",
+       "config-extensions": "Estenscioin",
+       "config-extensions-help": "I estenscioin elencæ de d'ato son stæte rilevæ inta to directory <code>./extensions</code>.\n\nQueste poririvan richiede 'n urteiô configuaçion, ma l'è poscibbile attivâle aoa",
+       "config-skins": "Pelle",
+       "config-skins-help": "E pelle elencæ de d'ato son stæte rilevæ inta to directory <code>./skins</code>. Ti devi attivâne aomanco un-a e scellie quella predefinia.",
+       "config-skins-use-as-default": "Doeuvia sta pelle comme predefinia",
+       "config-skins-missing": "No l'è stæto trovou arcun-a pelle; a MediaWiki a l'adoeuviâ 'na soluçion de ripiego pe scin che no ti ne instaliæ un-a apropiâ.",
+       "config-skins-must-enable-some": "Ti devi çerne armeno 'na pelle da attivâ.",
+       "config-skins-must-enable-default": "A pelle çernua comme predefinia a dev'ese attivâ.",
+       "config-install-alreadydone": "'''Attençion:''' pâ che t'aggi za instalou a MediaWiki e ti çerchi de instalâla torna.\nProcedi a-a paggina succesciva.",
+       "config-install-begin": "Sciacando \"{{int:config-continue}}\", t'inçiæ l'instalaçion da MediaWiki.\nSe primma ti voesci fâ di atri cangiamenti, premmi \"{{int:config-back}}\".",
+       "config-install-step-done": "fæto",
+       "config-install-step-failed": "no ariescio",
+       "config-install-extensions": "Estenscioin compreize",
+       "config-install-database": "Configuaçion do database",
+       "config-install-schema": "Creaçion do schema",
+       "config-install-pg-schema-not-exist": "O schema PostgreSQL o no l'existe.",
+       "config-install-pg-schema-failed": "Creaçion tabelle non riuscia.\nAsseguite che l'utente \"$1\" o posse scrive into schema \"$2\".",
+       "config-install-pg-commit": "Commetti i cangiamenti",
+       "config-install-pg-plpgsql": "Controllo do lenguaggio PL/pgSQL",
+       "config-pg-no-plpgsql": "Bezoeugna che t'installi o lenguaggio PL/pgSQL into database $1",
+       "config-pg-no-create-privs": "L'utença indicâ pe l'instalaçion a no dispon-e di privileggi necessai pe creâ 'n'utença.",
+       "config-pg-not-in-role": "L'utença indicâ pe l'utente web a l'existe za.\nL'utença indicâ pe l'instalaçion a no l'è un super-utente e a no l'è un membro do rollo di utenti web, quindi a no l'è in graddo de creâ di ogetti de propietæ de l'utente web.\n\nMediaWiki atoalmente a richiede che e tabelle seggian de propietæ de l'utente web. Indica 'n atro account web, ò clicca \"inderê\" e speciffica un utente pe l'instalaçion oportunamente privilegiou.",
+       "config-install-user": "Creaçion de utente do database",
+       "config-install-user-alreadyexists": "L'utente $1 o l'existe za.",
+       "config-install-user-create-failed": "Creaçion de l'utente \"$1\" no ariescia: $2",
+       "config-install-user-grant-failed": "Erô durante a concescion de l'aotorizaçion a l'utente \"$1\": $2",
+       "config-install-user-missing": "L'utente indicou \"$1\" o no l'existe.",
+       "config-install-user-missing-create": "L'utente indicou \"$1\" o no l'existe.\nSeleçion-a a casella \"crea utença\" chì de sotta, se ti a voeu creâ.",
+       "config-install-tables": "Creaçion tabelle",
+       "config-install-tables-exist": "'''Atençion:''' pâ che e tabelle da MediaWiki ghe seggian za.\nSato a creaçion.",
+       "config-install-tables-failed": "'''Erô''': a creaçion da tabella a no l'è ariescia: $1",
+       "config-install-interwiki": "Impimento da tabella interwiki predefinia",
+       "config-install-interwiki-list": "Imposcibbile leze o file <code>interwiki.list</code>.",
+       "config-install-interwiki-exists": "'''Atençion:''' pâ che inta tabella interwiki ghe segge za di elementi.\nA lista predefinia a se sata.",
+       "config-install-stats": "Iniçializaçion de statisteghe",
+       "config-install-keys": "Generaçion de ciave segrette",
+       "config-insecure-keys": "'''Atençion:''' {{PLURAL:$2|Una ciave segûa|De ciave segûe}} ($1) {{PLURAL:$2|generâ|generæ}} durante l'instalaçion {{PLURAL:$2|a|}} no {{PLURAL:$2|l'è|son}} completamente {{PLURAL:$2|segûa|segûe}}. Consciddera de cangiâ{{PLURAL:$2|la|le}} manoalmente.",
+       "config-install-updates": "Impedî l'esecuçion di agiornamenti non necessai",
+       "config-install-updates-failed": "<strong>Erô:</strong> l'inseimento de ciave de agiornamento inte tabelle o no l'è ariescio pe-o seguente erô: $1",
+       "config-install-sysop": "Creaçion de l'utença pe l'aministratô",
+       "config-install-subscribe-fail": "Imposcibbile sottoscrive mediawiki-announce: $1",
+       "config-install-subscribe-notpossible": "cURL o no l'è instalou e <code>allow_url_fopen</code> o no l'è disponibbile.",
+       "config-install-mainpage": "Creaçion da paggina prinçipâ con contegnuo predefinio",
+       "config-install-mainpage-exists": "A paggina prinçipâ a l'existe za, ignorou",
+       "config-install-extension-tables": "Creaçion de tabelle pe i estenscioin attivæ",
+       "config-install-mainpage-failed": "Imposcibbile insei a paggina prinçipâ: $1",
+       "config-install-done": "<strong>Complimenti!</strong>\nT'hæ instalou MediaWiki.\n\nO programma d'instalaçion o l'ha generou un file <code>LocalSettings.php</code> ch'o conten tutte e impostaçioin.\n\nTi devi scaregâlo e inseilo inta directory base da to wiki (a mæxima dovve gh'è index.php). O download o doviæ partî aotomaticamente.\n\nSe o download o no s'inandia, ò s'o l'è stæto annulou, ti poeu ricomençâ clicando in sce l'ingancio chì aproeuvo:\n\n$3\n\n<strong>Notta:</strong> se ti sciorti aoa da l'installaçion sença scaregâ o file de configuaçion ch'o l'è stæto generou, questo doppo o no saiâ ciu disponibbile.\n\nQuande t'hæ fæto, ti poeu <strong>[$2 intrâ inta to wiki]</strong>.",
+       "config-install-done-path": "<strong>Complimenti!</strong>\nT'hæ instalou MediaWiki.\n\nO programma d'instalaçion o l'ha generou un file <code>LocalSettings.php</code> ch'o conten tutte e impostaçioin.\n\nTi devi scaregâlo e inseilo in <code>$4</code>. O download o doviæ partî aotomaticamente.\n\nSe o download o no s'inandia, ò s'o l'è stæto annulou, ti poeu inandiâlo torna clicando in sce l'ingancio chì de sotta:\n\n$3\n\n<strong>Notta:</strong> se ti sciorti aoa da l'installaçion sença scaregâ o file de configuaçion ch'o l'è stæto generou, questo doppo o no saiâ ciu disponibbile.\n\nQuande t'hæ fæto, ti poeu <strong>[$2 intrâ inta to wiki]</strong>.",
+       "config-download-localsettings": "Scarega <code>LocalSettings.php</code>",
+       "config-help": "agiutto",
+       "config-help-tooltip": "clicca pe espande",
+       "config-nofile": "O file \"$1\" o no poeu vese atrovou. O l'è stæto eliminou?",
+       "config-extension-link": "Ti o saveivi che o to wiki o suporta i  [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions estenscioin]?\n\nTi poeu navegâ tra i [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category estenscioin pe categoria].",
+       "mainpagetext": "<strong>MediaWiki o l'è stæto instalou.</strong>",
+       "mainpagedocfooter": "Consurta a [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents guidda utente] pe ciu informaçioin in sce l'uso de questo software wiki.\n\n== Pe començâ ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Impostaçioin de configuaçion]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Domande frequente sciu MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list anonçi MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Troeuva MediaWiki inta to lengoa]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Imprendi a combatte o spam in sciâ to wiki]"
 }
index b8dab21..728a9a8 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Bjankuloski06",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Srdjan m"
                ]
        },
        "config-desc": "Воспоставувачот на МедијаВики",
@@ -58,7 +59,7 @@
        "config-pcre-old": "'''Кобно:''' Се бара PCRE $1 или понова верзија.\nВашиот PHP-бинарен е сврзан со PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Повеќе информации].",
        "config-pcre-no-utf8": "<strong>Кобно</strong>: PCRE-модулот на PHP е срочен без поддршка за PCRE_UTF8.\nМедијаВики бара поддршка за UTF-8 за да може да работи правилно.",
        "config-memory-raised": "<code>memory_limit</code> за PHP изнесува $1, зголемен на $2.",
-       "config-memory-bad": "'''Предупредување:''' <code>memory_limit</code> за PHP изнесува $1.\nОва е веројатно премалку.\nВоспоставката може да не успее!",
+       "config-memory-bad": "<strong>Предупредување:</strong> <code>memory_limit</code> за PHP изнесува $1.\nОва е веројатно премалку.\nВоспоставката може да не успее!",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] е воспоставен",
        "config-apc": "[http://www.php.net/apc APC] е воспоставен",
        "config-apcu": "[http://www.php.net/apcu APCu] е воспоставен",
@@ -71,7 +72,7 @@
        "config-imagemagick": "Пронајден е ImageMagick: <code>$1</code>.\nАко овозможите подигање, тогаш ќе биде овозможена минијатуризација на сликите.",
        "config-gd": "Утврдив дека има вградена GD графичка библиотека.\nАко овозможите подигање, тогаш ќе биде овозможена минијатураизација на сликите.",
        "config-no-scaling": "Не можев да пронајдам GD-библиотека или ImageMagick.\nМинијатуризацијата на сликите ќе биде оневозможена.",
-       "config-no-uri": "'''Грешка:''' Не можев да го утврдам тековниот URI.\nВоспоставката е откажана.",
+       "config-no-uri": "<strong>Грешка:</strong> Не можев да го утврдам тековниот URI.\nВоспоставката е откажана.",
        "config-no-cli-uri": "'''Предупредување''': Нема наведено <code>--scriptpath</code>. Ќе се користи основниот: <code>$1</code>.",
        "config-using-server": "Користите опслужувач под името „<nowiki>$1</nowiki>“.",
        "config-using-uri": "Користите опслужувач со URL-адреса „<nowiki>$1$2</nowiki>“.",
        "config-db-port": "Порта на базата:",
        "config-db-schema": "Шема за МедијаВики",
        "config-db-schema-help": "Оваа шема обично по правило ќе работи нормално.\nСменете ја само ако знаете дека треба да се смени.",
-       "config-pg-test-error": "Не можам да се поврзам со базата '''$1''': $2",
+       "config-pg-test-error": "Не можам да се поврзам со базата <strong>$1</strong>: $2",
        "config-sqlite-dir": "Папка на SQLite-податоци:",
        "config-sqlite-dir-help": "SQLite ги складира сите податоци во една податотека.\n\nПапката што ќе ја наведете мора да е запислива од мрежниот опслужувач во текот на воспоставката.\n\nТаа '''не''' смее да биде достапна преку семрежјето, и затоа не ја ставаме кајшто ви се наоѓаат PHP-податотеките.\n\nВоспоставувачот воедно ќе создаде податотека <code>.htaccess</code>, но ако таа не функционира како што треба, тогаш некој ќе може да ви влезе во вашата необработена (сирова) база на податоци.\nТука спаѓаат необработени кориснички податоци (е-поштенски адреси, хеширани лозинки) како и избришани преработки и други податоци за викито до кои се има ограничен пристап.\n\nСе препорачува целата база да ја сместите некаде, како на пр. <code>/var/lib/mediawiki/вашетовики</code>.",
        "config-oracle-def-ts": "Стандарден таблеарен простор:",
index 779a32f..d68e5a2 100644 (file)
        "config-desc": "O instalador do MediaWiki",
        "config-title": "Instalação da MediaWiki $1",
        "config-information": "Informação",
-       "config-localsettings-upgrade": "Foi detectado um ficheiro <code>LocalSettings.php</code>.\nPara atualizar esta instalação, por favor introduza o valor de <code>$wgUpgradeKey</code> na caixa abaixo.\nEncontra este valor em <code>LocalSettings.php</code>.",
-       "config-localsettings-cli-upgrade": "Foi detectado um ficheiro <code>LocalSettings.php</code>.\nPara atualizar esta instalação, execute o <code>update.php</code>, por favor",
+       "config-localsettings-upgrade": "Foi detetado um ficheiro <code>LocalSettings.php</code>.\nPara atualizar esta instalação, por favor introduza o valor de <code>$wgUpgradeKey</code> na caixa abaixo.\nEncontra este valor em <code>LocalSettings.php</code>.",
+       "config-localsettings-cli-upgrade": "Foi detetado um ficheiro <code>LocalSettings.php</code>.\nPara atualizar esta instalação, execute o <code>update.php</code>, por favor",
        "config-localsettings-key": "Chave de atualização:",
        "config-localsettings-badkey": "A chave de atualização que forneceu está incorreta.",
-       "config-upgrade-key-missing": "Foi detectada uma instalação existente do MediaWiki.\nPara atualizar esta instalação, por favor coloque a seguinte linha no final do seu <code>LocalSettings.php</code>:\n\n$1",
+       "config-upgrade-key-missing": "Foi detetada uma instalação existente do MediaWiki.\nPara atualizar esta instalação, por favor coloque a seguinte linha no final do seu <code>LocalSettings.php</code>:\n\n$1",
        "config-localsettings-incomplete": "O ficheiro <code>LocalSettings.php</code> existente parece estar incompleto.\nA variável $1 não está definida.\nPor favor, defina esta variável no <code>LocalSettings.php</code> e clique \"{{int:Config-continue}}\".",
        "config-localsettings-connection-error": "Ocorreu um erro ao ligar à base de dados usando as configurações especificadas no <code>LocalSettings.php</code>. Por favor corrija essas configurações e tente novamente.\n\n$1",
        "config-session-error": "Erro ao iniciar a sessão: $1",
@@ -37,7 +37,7 @@
        "config-your-language": "A sua língua:",
        "config-your-language-help": "Selecione o idioma que será usado durante o processo de instalação.",
        "config-wiki-language": "Língua da wiki:",
-       "config-wiki-language-help": "Selecione o idioma que será predominante na wiki.",
+       "config-wiki-language-help": "Selecione a língua que será predominante na wiki.",
        "config-back": "← Voltar",
        "config-continue": "Continuar →",
        "config-page-language": "Língua",
        "config-memcache-noport": "Não especificou a porta a usar para o servidor Memcached: $1.\nSe não sabe qual é a porta, a predefinida é a 11211.",
        "config-memcache-badport": "Os números das portas do Memcached devem estar entre $1 e $2.",
        "config-extensions": "Extensões",
-       "config-extensions-help": "Foi detectada a existência das extensões listadas acima, no seu diretório <code>./extensions</code>.\n\nEstas talvez necessitem de configurações adicionais, mas pode ativá-las agora",
+       "config-extensions-help": "Foi detetada a existência das extensões listadas acima, no seu diretório <code>./extensions</code>.\n\nEstas talvez necessitem de configurações adicionais, mas pode ativá-las agora.",
        "config-skins": "Temas",
        "config-skins-help": "Os temas listados abaixo foram detetados no seu diretório <code>./skins</code>. Deverá ativar pelo menos um e escolher qual o escolhido por padrão.",
        "config-skins-use-as-default": "Usar este tema como padrão",
index 5e45730..9b9928d 100644 (file)
@@ -185,13 +185,16 @@ class JobQueueDB extends JobQueue {
         * @return void
         */
        protected function doBatchPush( array $jobs, $flags ) {
-               DeferredUpdates::addUpdate( new AutoCommitUpdate(
-                       wfGetDB( DB_MASTER ),
-                       __METHOD__,
-                       function ( IDatabase $dbw, $fname ) use ( $jobs, $flags ) {
-                               $this->doBatchPushInternal( $dbw, $jobs, $flags, $fname );
-                       }
-               ) );
+               DeferredUpdates::addUpdate(
+                       new AutoCommitUpdate(
+                               $this->getMasterDB(),
+                               __METHOD__,
+                               function ( IDatabase $dbw, $fname ) use ( $jobs, $flags ) {
+                                       $this->doBatchPushInternal( $dbw, $jobs, $flags, $fname );
+                               }
+                       ),
+                       DeferredUpdates::PRESEND
+               );
        }
 
        /**
index 0a0e9e0..49b7a45 100644 (file)
@@ -38,6 +38,8 @@ use Wikimedia\Rdbms\DBReplicationWaitError;
  * @since 1.24
  */
 class JobRunner implements LoggerAwareInterface {
+       /** @var Config */
+       protected $config;
        /** @var callable|null Debug output handler */
        protected $debug;
 
@@ -74,6 +76,7 @@ class JobRunner implements LoggerAwareInterface {
                        $logger = LoggerFactory::getInstance( 'runJobs' );
                }
                $this->setLogger( $logger );
+               $this->config = MediaWikiServices::getInstance()->getMainConfig();
        }
 
        /**
@@ -101,7 +104,8 @@ class JobRunner implements LoggerAwareInterface {
         * @return array Summary response that can easily be JSON serialized
         */
        public function run( array $options ) {
-               global $wgJobClasses, $wgTrxProfilerLimits;
+               $jobClasses = $this->config->get( 'JobClasses' );
+               $profilerLimits = $this->config->get( 'TrxProfilerLimits' );
 
                $response = [ 'jobs' => [], 'reached' => 'none-ready' ];
 
@@ -111,7 +115,7 @@ class JobRunner implements LoggerAwareInterface {
                $noThrottle = isset( $options['throttle'] ) && !$options['throttle'];
 
                // Bail if job type is invalid
-               if ( $type !== false && !isset( $wgJobClasses[$type] ) ) {
+               if ( $type !== false && !isset( $jobClasses[$type] ) ) {
                        $response['reached'] = 'none-possible';
                        return $response;
                }
@@ -136,7 +140,7 @@ class JobRunner implements LoggerAwareInterface {
                // Catch huge single updates that lead to replica DB lag
                $trxProfiler = Profiler::instance()->getTransactionProfiler();
                $trxProfiler->setLogger( LoggerFactory::getInstance( 'DBPerformance' ) );
-               $trxProfiler->setExpectations( $wgTrxProfilerLimits['JobRunner'], __METHOD__ );
+               $trxProfiler->setExpectations( $profilerLimits['JobRunner'], __METHOD__ );
 
                // Some jobs types should not run until a certain timestamp
                $backoffs = []; // map of (type => UNIX expiry)
@@ -289,9 +293,8 @@ class JobRunner implements LoggerAwareInterface {
                        $status = $job->run();
                        $error = $job->getLastError();
                        $this->commitMasterChanges( $lbFactory, $job, $fnameTrxOwner );
-                       // Push lazilly-pushed jobs
                        // Important: this must be the last deferred update added (T100085, T154425)
-                       DeferredUpdates::addCallableUpdate( [ 'JobQueueGroup', 'pushLazyJobs' ] );
+                       DeferredUpdates::addCallableUpdate( [ JobQueueGroup::class, 'pushLazyJobs' ] );
                        // Run any deferred update tasks; doUpdates() manages transactions itself
                        DeferredUpdates::doUpdates();
                } catch ( Exception $e ) {
@@ -363,15 +366,13 @@ class JobRunner implements LoggerAwareInterface {
         * @see $wgJobBackoffThrottling
         */
        private function getBackoffTimeToWait( Job $job ) {
-               global $wgJobBackoffThrottling;
+               $throttling = $this->config->get( 'JobBackoffThrottling' );
 
-               if ( !isset( $wgJobBackoffThrottling[$job->getType()] ) ||
-                       $job instanceof DuplicateJob // no work was done
-               ) {
+               if ( !isset( $throttling[$job->getType()] ) || $job instanceof DuplicateJob ) {
                        return 0; // not throttled
                }
 
-               $itemsPerSecond = $wgJobBackoffThrottling[$job->getType()];
+               $itemsPerSecond = $throttling[$job->getType()];
                if ( $itemsPerSecond <= 0 ) {
                        return 0; // not throttled
                }
@@ -519,17 +520,17 @@ class JobRunner implements LoggerAwareInterface {
         * @throws DBError
         */
        private function commitMasterChanges( LBFactory $lbFactory, Job $job, $fnameTrxOwner ) {
-               global $wgJobSerialCommitThreshold;
+               $syncThreshold = $this->config->get( 'JobSerialCommitThreshold' );
 
                $time = false;
                $lb = $lbFactory->getMainLB( wfWikiID() );
-               if ( $wgJobSerialCommitThreshold !== false && $lb->getServerCount() > 1 ) {
+               if ( $syncThreshold !== false && $lb->getServerCount() > 1 ) {
                        // Generally, there is one master connection to the local DB
                        $dbwSerial = $lb->getAnyOpenConnection( $lb->getWriterIndex() );
                        // We need natively blocking fast locks
                        if ( $dbwSerial && $dbwSerial->namedLocksEnqueue() ) {
                                $time = $dbwSerial->pendingWriteQueryDuration( $dbwSerial::ESTIMATE_DB_APPLY );
-                               if ( $time < $wgJobSerialCommitThreshold ) {
+                               if ( $time < $syncThreshold ) {
                                        $dbwSerial = false;
                                }
                        } else {
@@ -541,7 +542,12 @@ class JobRunner implements LoggerAwareInterface {
                }
 
                if ( !$dbwSerial ) {
-                       $lbFactory->commitMasterChanges( $fnameTrxOwner );
+                       $lbFactory->commitMasterChanges(
+                               $fnameTrxOwner,
+                               // Abort if any transaction was too big
+                               [ 'maxWriteDuration' => $this->config->get( 'MaxJobDBWriteDuration' ) ]
+                       );
+
                        return;
                }
 
@@ -566,7 +572,11 @@ class JobRunner implements LoggerAwareInterface {
                }
 
                // Actually commit the DB master changes
-               $lbFactory->commitMasterChanges( $fnameTrxOwner );
+               $lbFactory->commitMasterChanges(
+                       $fnameTrxOwner,
+                       // Abort if any transaction was too big
+                       [ 'maxWriteDuration' => $this->config->get( 'MaxJobDBWriteDuration' ) ]
+               );
                ScopedCallback::consume( $unlocker );
        }
 }
index 0d3613a..4b4a913 100644 (file)
@@ -247,8 +247,11 @@ class CryptRand {
                        // On Linux, getrandom syscall will be used if available.
                        // On Windows CryptGenRandom will always be used
                        // On other platforms, /dev/urandom will be used.
+                       // Avoids polyfills from before php 7.0
                        // All error situations will throw Exceptions and or Errors
-                       if ( function_exists( 'random_bytes' ) ) {
+                       if ( PHP_VERSION_ID >= 70000
+                               || ( defined( 'HHVM_VERSION_ID' ) && HHVM_VERSION_ID >= 31101 )
+                       ) {
                                $rem = $bytes - strlen( $buffer );
                                $buffer .= random_bytes( $rem );
                        }
index e2f7886..039bd42 100644 (file)
@@ -1250,7 +1250,7 @@ abstract class FileBackendStore extends FileBackend {
         * @return array
         */
        protected function sanitizeOpHeaders( array $op ) {
-               static $longs = [ 'content-disposition', 'x-content-dimensions' ];
+               static $longs = [ 'content-disposition' ];
 
                if ( isset( $op['headers'] ) ) { // op sets HTTP headers
                        $newHeaders = [];
diff --git a/includes/libs/http/HttpAcceptNegotiator.php b/includes/libs/http/HttpAcceptNegotiator.php
new file mode 100644 (file)
index 0000000..5f8d9a6
--- /dev/null
@@ -0,0 +1,139 @@
+<?php
+
+/**
+ * Utility for negotiating a value from a set of supported values using a preference list.
+ * This is intended for use with HTTP headers like Accept, Accept-Language, Accept-Encoding, etc.
+ * See RFC 2616 section 14 for details.
+ *
+ * To use this with a request header, first parse the header value into an array of weights
+ * using HttpAcceptParser, then call getBestSupportedKey.
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ * @author Thiemo Mättig
+ */
+
+namespace Wikimedia\Http;
+
+class HttpAcceptNegotiator {
+
+       /**
+        * @var string[]
+        */
+       private $supportedValues;
+
+       /**
+        * @var string
+        */
+       private $defaultValue;
+
+       /**
+        * @param string[] $supported A list of supported values.
+        */
+       public function __construct( array $supported ) {
+               $this->supportedValues = $supported;
+               $this->defaultValue = reset( $supported );
+       }
+
+       /**
+        * Returns the best supported key from the given weight map. Of the keys from the
+        * $weights parameter that are also in the list of supported values supplied to
+        * the constructor, this returns the key that has the highest weight associated
+        * with it. If two keys have the same weight, the more specific key is preferred,
+        * as required by RFC2616 section 14. Keys that map to 0 or false are ignored.
+        * If no matching key is found, $default is returned.
+        *
+        * @param float[] $weights An associative array mapping accepted values to their
+        *              respective weights.
+        *
+        * @param null|string $default The value to return if non of the keys in $weights
+        *              is supported (null per default).
+        *
+        * @return null|string The best supported key from the $weights parameter.
+        */
+       public function getBestSupportedKey( array $weights, $default = null ) {
+               // Make sure we correctly bias against wildcards and ranges, see RFC2616, section 14.
+               foreach ( $weights as $name => &$weight ) {
+                       if ( $name === '*' || $name === '*/*' ) {
+                               $weight -= 0.000002;
+                       } elseif ( substr( $name, -2 ) === '/*' ) {
+                               $weight -= 0.000001;
+                       }
+               }
+
+               // Sort $weights by value and...
+               asort( $weights );
+
+               // remove any keys with values equal to 0 or false (HTTP/1.1 section 3.9)
+               $weights = array_filter( $weights );
+
+               // ...use the ordered list of keys
+               $preferences = array_reverse( array_keys( $weights ) );
+
+               $value = $this->getFirstSupportedValue( $preferences, $default );
+               return $value;
+       }
+
+       /**
+        * Returns the first supported value from the given preference list. Of the values from
+        * the $preferences parameter that are also in the list of supported values supplied
+        * to the constructor, this returns the value that has the lowest index in the list.
+        * If no such value is found, $default is returned.
+        *
+        * @param string[] $preferences A list of acceptable values, in order of preference.
+        *
+        * @param null|string $default The value to return if non of the keys in $weights
+        *              is supported (null per default).
+        *
+        * @return null|string The best supported key from the $weights parameter.
+        */
+       public function getFirstSupportedValue( array $preferences, $default = null ) {
+               foreach ( $preferences as $value ) {
+                       foreach ( $this->supportedValues as $supported ) {
+                               if ( $this->valueMatches( $value, $supported ) ) {
+                                       return $supported;
+                               }
+                       }
+               }
+
+               return $default;
+       }
+
+       /**
+        * Returns true if the given acceptable value matches the given supported value,
+        * according to the HTTP specification. The following rules are used:
+        *
+        * - comparison is case-insensitive
+        * - if $accepted and $supported are equal, they match
+        * - if $accepted is `*` or `*` followed by `/*`, it matches any $supported value.
+        * - if both $accepted and $supported contain a `/`, and $accepted ends with `/*`,
+        *   they match if the part before the first `/` is equal.
+        *
+        * @param string $accepted An accepted value (may contain wildcards)
+        * @param string  $supported A supported value.
+        *
+        * @return bool Whether the given supported value matches the given accepted value.
+        */
+       private function valueMatches( $accepted, $supported ) {
+               // RDF 2045: MIME types are case insensitive.
+               // full match
+               if ( strcasecmp( $accepted, $supported ) === 0 ) {
+                       return true;
+               }
+
+               // wildcard match (HTTP/1.1 section 14.1, 14.2, 14.3)
+               if ( $accepted === '*' || $accepted === '*/*' ) {
+                       return true;
+               }
+
+               // wildcard match (HTTP/1.1 section 14.1)
+               if ( substr( $accepted, -2 ) === '/*'
+                       && strncasecmp( $accepted, $supported, strlen( $accepted ) - 2 ) === 0
+               ) {
+                       return true;
+               }
+
+               return false;
+       }
+
+}
diff --git a/includes/libs/http/HttpAcceptParser.php b/includes/libs/http/HttpAcceptParser.php
new file mode 100644 (file)
index 0000000..bce071e
--- /dev/null
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * Utility for parsing a HTTP Accept header value into a weight map. May also be used with
+ * other, similar headers like Accept-Language, Accept-Encoding, etc.
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ */
+
+namespace Wikimedia\Http;
+
+class HttpAcceptParser {
+
+       /**
+        * Parses an HTTP header into a weight map, that is an associative array
+        * mapping values to their respective weights. Any header name preceding
+        * weight spec is ignored for convenience.
+        *
+        * This implementation is partially based on the code at
+        * http://www.thefutureoftheweb.com/blog/use-accept-language-header
+        *
+        * Note that type parameters and accept extension like the "level" parameter
+        * are not supported, weights are derived from "q" values only.
+        *
+        * @todo: If additional type parameters are present, ignore them cleanly.
+        *        At present, they often confuse the result.
+        *
+        * See HTTP/1.1 section 14 for details.
+        *
+        * @param string $rawHeader
+        *
+        * @return array
+        */
+       public function parseWeights( $rawHeader ) {
+               //FIXME: The code below was copied and adapted from WebRequest::getAcceptLang.
+               //       Move this utility class into core for reuse!
+
+               // first, strip header name
+               $rawHeader = preg_replace( '/^[-\w]+:\s*/', '', $rawHeader );
+
+               // Return values in lower case
+               $rawHeader = strtolower( $rawHeader );
+
+               // Break up string into pieces (values and q factors)
+               $value_parse = null;
+               preg_match_all( '@([a-z\d*]+([-+/.][a-z\d*]+)*)\s*(;\s*q\s*=\s*(1(\.0{0,3})?|0(\.\d{0,3})?)?)?@',
+                       $rawHeader, $value_parse );
+
+               if ( !count( $value_parse[1] ) ) {
+                       return [];
+               }
+
+               $values = $value_parse[1];
+               $qvalues = $value_parse[4];
+               $indices = range( 0, count( $value_parse[1] ) - 1 );
+
+               // Set default q factor to 1
+               foreach ( $indices as $index ) {
+                       if ( $qvalues[$index] === '' ) {
+                               $qvalues[$index] = 1;
+                       } elseif ( $qvalues[$index] == 0 ) {
+                               unset( $values[$index], $qvalues[$index], $indices[$index] );
+                       } else {
+                               $qvalues[$index] = (float)$qvalues[$index];
+                       }
+               }
+
+               // Sort list. First by $qvalues, then by order. Reorder $values the same way
+               array_multisort( $qvalues, SORT_DESC, SORT_NUMERIC, $indices, $values );
+
+               // Create a list like "en" => 0.8
+               $weights = array_combine( $values, $qvalues );
+
+               return $weights;
+       }
+
+}
index 565c157..c361fdf 100644 (file)
@@ -1144,6 +1144,15 @@ EOT;
                return MEDIATYPE_UNKNOWN;
        }
 
+       /**
+        * Returns an array of media types (MEDIATYPE_xxx constants)
+        *
+        * @return array
+        */
+       public function getMediaTypes() {
+               return array_keys( $this->mediaTypes );
+       }
+
        /**
         * Get the MIME types that various versions of Internet Explorer would
         * detect from a chunk of the content.
index 9dcfa7c..687c67c 100644 (file)
@@ -226,4 +226,12 @@ class MultiWriteBagOStuff extends BagOStuff {
 
                return $ret;
        }
+
+       public function makeKey() {
+               return call_user_func_array( [ $this->caches[0], __FUNCTION__ ], func_get_args() );
+       }
+
+       public function makeGlobalKey() {
+               return call_user_func_array( [ $this->caches[0], __FUNCTION__ ], func_get_args() );
+       }
 }
index 423d43e..0842e04 100644 (file)
@@ -202,8 +202,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        public static function newEmpty() {
                return new self( [
                        'cache'   => new EmptyBagOStuff(),
-                       'pool'    => 'empty',
-                       'relayer' => new EventRelayerNull( [] )
+                       'pool'    => 'empty'
                ] );
        }
 
@@ -1109,7 +1108,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        final public function getMultiWithSetCallback(
                ArrayIterator $keyedIds, $ttl, callable $callback, array $opts = []
        ) {
-               $valueKeys = array_keys( iterator_to_array( $keyedIds, true ) );
+               $valueKeys = array_keys( $keyedIds->getArrayCopy() );
                $checkKeys = isset( $opts['checkKeys'] ) ? $opts['checkKeys'] : [];
 
                // Load required keys into process cache in one go
@@ -1195,7 +1194,7 @@ class WANObjectCache implements IExpiringStore, LoggerAwareInterface {
        final public function getMultiWithUnionSetCallback(
                ArrayIterator $keyedIds, $ttl, callable $callback, array $opts = []
        ) {
-               $idsByValueKey = iterator_to_array( $keyedIds, true );
+               $idsByValueKey = $keyedIds->getArrayCopy();
                $valueKeys = array_keys( $idsByValueKey );
                $checkKeys = isset( $opts['checkKeys'] ) ? $opts['checkKeys'] : [];
                unset( $opts['lockTSE'] ); // incompatible
index 5d3534f..823e0dc 100644 (file)
@@ -265,8 +265,9 @@ class TransactionProfiler implements LoggerAwareInterface {
         * @param string $db DB name
         * @param string $id ID string of transaction
         * @param float $writeTime Time spent in write queries
+        * @param integer $affected Number of rows affected by writes
         */
-       public function transactionWritingOut( $server, $db, $id, $writeTime = 0.0 ) {
+       public function transactionWritingOut( $server, $db, $id, $writeTime = 0.0, $affected = 0 ) {
                $name = "{$server} ({$db}) (TRX#$id)";
                if ( !isset( $this->dbTrxMethodTimes[$name] ) ) {
                        $this->logger->info( "Detected no transaction for '$name' - out of sync." );
@@ -284,6 +285,14 @@ class TransactionProfiler implements LoggerAwareInterface {
                        );
                        $slow = true;
                }
+               // Warn if too many rows were changed...
+               if ( $affected > $this->expect['maxAffected'] ) {
+                       $this->reportExpectationViolated(
+                               'maxAffected',
+                               "[transaction $id writes to {$server} ({$db})]",
+                               $affected
+                       );
+               }
                // Fill in the last non-query period...
                $lastQuery = end( $this->dbTrxMethodTimes[$name] );
                if ( $lastQuery ) {
index b6167aa..fb4122d 100644 (file)
@@ -124,6 +124,10 @@ class DBConnRef implements IDatabase {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
 
+       public function pendingWriteRowsAffected() {
+               return $this->__call( __FUNCTION__, func_get_args() );
+       }
+
        public function isOpen() {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
@@ -243,13 +247,13 @@ class DBConnRef implements IDatabase {
        }
 
        public function selectField(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = []
+               $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
        ) {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
 
        public function selectFieldValues(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = []
+               $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
        ) {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
@@ -407,7 +411,7 @@ class DBConnRef implements IDatabase {
 
        public function insertSelect(
                $destTable, $srcTable, $varMap, $conds,
-               $fname = __METHOD__, $insertOptions = [], $selectOptions = []
+               $fname = __METHOD__, $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
                return $this->__call( __FUNCTION__, func_get_args() );
        }
index ee7644f..9e91592 100644 (file)
@@ -200,6 +200,10 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
         * @var integer Number of write queries for the current transaction
         */
        private $mTrxWriteQueryCount = 0;
+       /**
+        * @var integer Number of rows affected by write queries for the current transaction
+        */
+       private $mTrxWriteAffectedRows = 0;
        /**
         * @var float Like mTrxWriteQueryCount but excludes lock-bound, easy to replicate, queries
         */
@@ -583,6 +587,10 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                return $this->mTrxLevel ? $this->mTrxWriteCallers : [];
        }
 
+       public function pendingWriteRowsAffected() {
+               return $this->mTrxWriteAffectedRows;
+       }
+
        /**
         * Get the list of method names that have pending write queries or callbacks
         * for this transaction
@@ -1011,7 +1019,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                if ( $ret !== false ) {
                        $this->lastPing = $startTime;
                        if ( $isWrite && $this->mTrxLevel ) {
-                               $this->updateTrxWriteQueryTime( $sql, $queryRuntime );
+                               $this->updateTrxWriteQueryTime( $sql, $queryRuntime, $this->affectedRows() );
                                $this->mTrxWriteCallers[] = $fname;
                        }
                }
@@ -1042,8 +1050,9 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
         *
         * @param string $sql A SQL write query
         * @param float $runtime Total runtime, including RTT
+        * @param integer $affected Affected row count
         */
-       private function updateTrxWriteQueryTime( $sql, $runtime ) {
+       private function updateTrxWriteQueryTime( $sql, $runtime, $affected ) {
                // Whether this is indicative of replica DB runtime (except for RBR or ws_repl)
                $indicativeOfReplicaRuntime = true;
                if ( $runtime > self::SLOW_WRITE_SEC ) {
@@ -1058,6 +1067,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
                $this->mTrxWriteDuration += $runtime;
                $this->mTrxWriteQueryCount += 1;
+               $this->mTrxWriteAffectedRows += $affected;
                if ( $indicativeOfReplicaRuntime ) {
                        $this->mTrxWriteAdjDuration += $runtime;
                        $this->mTrxWriteAdjQueryCount += 1;
@@ -1140,7 +1150,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
        }
 
        public function selectField(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = []
+               $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
        ) {
                if ( $var === '*' ) { // sanity
                        throw new DBUnexpectedError( $this, "Cannot use a * field: got '$var'" );
@@ -1152,7 +1162,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
                $options['LIMIT'] = 1;
 
-               $res = $this->select( $table, $var, $cond, $fname, $options );
+               $res = $this->select( $table, $var, $cond, $fname, $options, $join_conds );
                if ( $res === false || !$this->numRows( $res ) ) {
                        return false;
                }
@@ -2346,7 +2356,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
        public function insertSelect(
                $destTable, $srcTable, $varMap, $conds,
-               $fname = __METHOD__, $insertOptions = [], $selectOptions = []
+               $fname = __METHOD__, $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
                if ( $this->cliMode ) {
                        // For massive migrations with downtime, we don't want to select everything
@@ -2358,7 +2368,8 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                                $conds,
                                $fname,
                                $insertOptions,
-                               $selectOptions
+                               $selectOptions,
+                               $selectJoinConds
                        );
                }
 
@@ -2370,7 +2381,9 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                        $fields[] = $this->fieldNameWithAlias( $sourceColumnOrSql, $dstColumn );
                }
                $selectOptions[] = 'FOR UPDATE';
-               $res = $this->select( $srcTable, implode( ',', $fields ), $conds, $fname, $selectOptions );
+               $res = $this->select(
+                       $srcTable, implode( ',', $fields ), $conds, $fname, $selectOptions, $selectJoinConds
+               );
                if ( !$res ) {
                        return false;
                }
@@ -2391,7 +2404,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
         */
        protected function nativeInsertSelect( $destTable, $srcTable, $varMap, $conds,
                $fname = __METHOD__,
-               $insertOptions = [], $selectOptions = []
+               $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
                $destTable = $this->tableName( $destTable );
 
@@ -2401,32 +2414,18 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
                $insertOptions = $this->makeInsertOptions( $insertOptions );
 
-               if ( !is_array( $selectOptions ) ) {
-                       $selectOptions = [ $selectOptions ];
-               }
-
-               list( $startOpts, $useIndex, $tailOpts, $ignoreIndex ) = $this->makeSelectOptions(
-                       $selectOptions );
-
-               if ( is_array( $srcTable ) ) {
-                       $srcTable = implode( ',', array_map( [ $this, 'tableName' ], $srcTable ) );
-               } else {
-                       $srcTable = $this->tableName( $srcTable );
-               }
+               $selectSql = $this->selectSQLText(
+                       $srcTable,
+                       array_values( $varMap ),
+                       $conds,
+                       $fname,
+                       $selectOptions,
+                       $selectJoinConds
+               );
 
                $sql = "INSERT $insertOptions" .
-                       " INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
-                       " SELECT $startOpts " . implode( ',', $varMap ) .
-                       " FROM $srcTable $useIndex $ignoreIndex ";
-
-               if ( $conds != '*' ) {
-                       if ( is_array( $conds ) ) {
-                               $conds = $this->makeList( $conds, self::LIST_AND );
-                       }
-                       $sql .= " WHERE $conds";
-               }
-
-               $sql .= " $tailOpts";
+                       " INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ') ' .
+                       $selectSql;
 
                return $this->query( $sql, $fname );
        }
@@ -2805,6 +2804,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                $this->mTrxShortId = sprintf( '%06x', mt_rand( 0, 0xffffff ) );
                $this->mTrxWriteDuration = 0.0;
                $this->mTrxWriteQueryCount = 0;
+               $this->mTrxWriteAffectedRows = 0;
                $this->mTrxWriteAdjDuration = 0.0;
                $this->mTrxWriteAdjQueryCount = 0;
                $this->mTrxWriteCallers = [];
@@ -2871,7 +2871,12 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                if ( $this->mTrxDoneWrites ) {
                        $this->mLastWriteTime = microtime( true );
                        $this->trxProfiler->transactionWritingOut(
-                               $this->mServer, $this->mDBname, $this->mTrxShortId, $writeTime );
+                               $this->mServer,
+                               $this->mDBname,
+                               $this->mTrxShortId,
+                               $writeTime,
+                               $this->mTrxWriteAffectedRows
+                       );
                }
 
                $this->runOnTransactionIdleCallbacks( self::TRIGGER_COMMIT );
@@ -2916,7 +2921,10 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
                $this->mTrxAtomicLevels = [];
                if ( $this->mTrxDoneWrites ) {
                        $this->trxProfiler->transactionWritingOut(
-                               $this->mServer, $this->mDBname, $this->mTrxShortId );
+                               $this->mServer,
+                               $this->mDBname,
+                               $this->mTrxShortId
+                       );
                }
 
                $this->mTrxIdleCallbacks = []; // clear
index 782727a..8f3cab8 100644 (file)
@@ -717,11 +717,12 @@ class DatabaseMssql extends Database {
         * @param string $fname
         * @param array $insertOptions
         * @param array $selectOptions
+        * @param array $selectJoinConds
         * @return null|ResultWrapper
         * @throws Exception
         */
        public function nativeInsertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
-               $insertOptions = [], $selectOptions = []
+               $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
                $this->mScrollableCursor = false;
                try {
@@ -732,7 +733,8 @@ class DatabaseMssql extends Database {
                                $conds,
                                $fname,
                                $insertOptions,
-                               $selectOptions
+                               $selectOptions,
+                               $selectJoinConds
                        );
                } catch ( Exception $e ) {
                        $this->mScrollableCursor = true;
index 2fe275b..bdac06c 100644 (file)
@@ -256,7 +256,10 @@ class DatabasePostgres extends Database {
                }
                /* Transaction stays in the ERROR state until rolled back */
                if ( $this->mTrxLevel ) {
-                       $this->rollback( __METHOD__ );
+                       // Throw away the transaction state, then raise the error as normal.
+                       // Note that if this connection is managed by LBFactory, it's already expected
+                       // that the other transactions LBFactory manages will be rolled back.
+                       $this->rollback( __METHOD__, self::FLUSHING_INTERNAL );
                }
                parent::reportQueryError( $error, $errno, $sql, $fname, false );
        }
@@ -681,14 +684,13 @@ __INDEXATTR__;
         * @param string $fname
         * @param array $insertOptions
         * @param array $selectOptions
+        * @param array $selectJoinConds
         * @return bool
         */
        public function nativeInsertSelect(
                $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
-               $insertOptions = [], $selectOptions = []
+               $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        ) {
-               $destTable = $this->tableName( $destTable );
-
                if ( !is_array( $insertOptions ) ) {
                        $insertOptions = [ $insertOptions ];
                }
@@ -705,28 +707,9 @@ __INDEXATTR__;
                        $savepoint->savepoint();
                }
 
-               if ( !is_array( $selectOptions ) ) {
-                       $selectOptions = [ $selectOptions ];
-               }
-               list( $startOpts, $useIndex, $tailOpts, $ignoreIndex ) =
-                       $this->makeSelectOptions( $selectOptions );
-               if ( is_array( $srcTable ) ) {
-                       $srcTable = implode( ',', array_map( [ $this, 'tableName' ], $srcTable ) );
-               } else {
-                       $srcTable = $this->tableName( $srcTable );
-               }
-
-               $sql = "INSERT INTO $destTable (" . implode( ',', array_keys( $varMap ) ) . ')' .
-                       " SELECT $startOpts " . implode( ',', $varMap ) .
-                       " FROM $srcTable $useIndex $ignoreIndex ";
-
-               if ( $conds != '*' ) {
-                       $sql .= ' WHERE ' . $this->makeList( $conds, LIST_AND );
-               }
-
-               $sql .= " $tailOpts";
+               $res = parent::nativeInsertSelect( $destTable, $srcTable, $varMap, $conds, $fname,
+                       $insertOptions, $selectOptions, $selectJoinConds );
 
-               $res = (bool)$this->query( $sql, $fname, $savepoint );
                if ( $savepoint ) {
                        $bar = pg_result_error( $this->mLastResult );
                        if ( $bar != false ) {
@@ -1059,6 +1042,7 @@ __INDEXATTR__;
                if ( $schema === false ) {
                        $schema = $this->getCoreSchema();
                }
+               $table = $this->realTableName( $table, 'raw' );
                $etable = $this->addQuotes( $table );
                $eschema = $this->addQuotes( $schema );
                $sql = "SELECT 1 FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n "
@@ -1386,6 +1370,13 @@ SQL;
                return false;
        }
 
+       public function serverIsReadOnly() {
+               $res = $this->query( "SHOW default_transaction_read_only", __METHOD__ );
+               $row = $this->fetchObject( $res );
+
+               return $row ? ( strtolower( $row->default_transaction_read_only ) === 'on' ) : false;
+       }
+
        /**
         * @param string $lockName
         * @return string Integer
index bec26a6..7c6413c 100644 (file)
@@ -274,6 +274,14 @@ interface IDatabase {
         */
        public function pendingWriteCallers();
 
+       /**
+        * Get the number of affected rows from pending write queries
+        *
+        * @return integer
+        * @since 1.30
+        */
+       public function pendingWriteRowsAffected();
+
        /**
         * Is a connection to the database open?
         * @return bool
@@ -560,11 +568,12 @@ interface IDatabase {
         * @param string|array $cond The condition array. See IDatabase::select() for details.
         * @param string $fname The function name of the caller.
         * @param string|array $options The query options. See IDatabase::select() for details.
+        * @param string|array $join_conds The query join conditions. See IDatabase::select() for details.
         *
         * @return bool|mixed The value from the field, or false on failure.
         */
        public function selectField(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = []
+               $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
        );
 
        /**
@@ -581,12 +590,13 @@ interface IDatabase {
         * @param string|array $cond The condition array. See IDatabase::select() for details.
         * @param string $fname The function name of the caller.
         * @param string|array $options The query options. See IDatabase::select() for details.
+        * @param string|array $join_conds The query join conditions. See IDatabase::select() for details.
         *
         * @return bool|array The values from the field, or false on failure
         * @since 1.25
         */
        public function selectFieldValues(
-               $table, $var, $cond = '', $fname = __METHOD__, $options = []
+               $table, $var, $cond = '', $fname = __METHOD__, $options = [], $join_conds = []
        );
 
        /**
@@ -1239,12 +1249,14 @@ interface IDatabase {
         *    IDatabase::insert() for details.
         * @param array $selectOptions Options for the SELECT part of the query, see
         *    IDatabase::select() for details.
+        * @param array $selectJoinConds Join conditions for the SELECT part of the query, see
+        *    IDatabase::select() for details.
         *
         * @return IResultWrapper
         */
        public function insertSelect( $destTable, $srcTable, $varMap, $conds,
                $fname = __METHOD__,
-               $insertOptions = [], $selectOptions = []
+               $insertOptions = [], $selectOptions = [], $selectJoinConds = []
        );
 
        /**
index ac79acc..6e328f4 100644 (file)
@@ -192,6 +192,13 @@ interface ILBFactory {
         */
        public function rollbackMasterChanges( $fname = __METHOD__ );
 
+       /**
+        * Check if a transaction round is active
+        * @return bool
+        * @since 1.29
+        */
+       public function hasTransactionRound();
+
        /**
         * Determine if any master connection has pending changes
         * @return bool
index 53d5ef4..3567204 100644 (file)
@@ -250,6 +250,10 @@ abstract class LBFactory implements ILBFactory {
                } );
        }
 
+       public function hasTransactionRound() {
+               return ( $this->trxRoundId !== false );
+       }
+
        /**
         * Log query info if multi DB transactions are going to be committed now
         */
index d120b6f..4300e9f 100644 (file)
@@ -161,7 +161,10 @@ class LoadMonitor implements ILoadMonitor {
                        if ( !$conn ) {
                                $lagTimes[$i] = false;
                                $host = $this->parent->getServerName( $i );
-                               $this->replLogger->error( __METHOD__ . ": host $host is unreachable" );
+                               $this->replLogger->error(
+                                       __METHOD__ . ": host {db_server} is unreachable",
+                                       [ 'db_server' => $host ]
+                               );
                                continue;
                        }
 
@@ -171,7 +174,10 @@ class LoadMonitor implements ILoadMonitor {
                                $lagTimes[$i] = $conn->getLag();
                                if ( $lagTimes[$i] === false ) {
                                        $host = $this->parent->getServerName( $i );
-                                       $this->replLogger->error( __METHOD__ . ": host $host is not replicating?" );
+                                       $this->replLogger->error(
+                                               __METHOD__ . ": host {db_server} is not replicating?",
+                                               [ 'db_server' => $host ]
+                                       );
                                }
                        }
 
diff --git a/includes/linkeddata/PageDataRequestHandler.php b/includes/linkeddata/PageDataRequestHandler.php
new file mode 100644 (file)
index 0000000..d26b304
--- /dev/null
@@ -0,0 +1,172 @@
+<?php
+
+use Wikimedia\Http\HttpAcceptParser;
+use Wikimedia\Http\HttpAcceptNegotiator;
+
+/**
+ * Request handler implementing a data interface for mediawiki pages.
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ * @author Amir Sarabadanai
+ */
+
+class PageDataRequestHandler {
+
+       /**
+        * Checks whether the request is complete, i.e. whether it contains all information needed
+        * to reply with page data.
+        *
+        * This does not check whether the request is valid and will actually produce a successful
+        * response.
+        *
+        * @param string|null $subPage
+        * @param WebRequest $request
+        *
+        * @return bool
+        * @throws HttpError
+        */
+       public function canHandleRequest( $subPage, WebRequest $request ) {
+               if ( $subPage === '' || $subPage === null ) {
+                       if ( $request->getText( 'target', '' ) === '' ) {
+                               return false;
+                       } else {
+                               return true;
+                       }
+               }
+
+               $parts = explode( '/', $subPage, 2 );
+               if ( $parts !== 2 ) {
+                       $slot = $parts[0];
+                       if ( $slot === 'main' or $slot === '' ) {
+                               return true;
+                       }
+               }
+
+               return false;
+       }
+
+       /**
+        * Main method for handling requests.
+        *
+        * @param string $subPage
+        * @param WebRequest $request The request parameters. Known parameters are:
+        *        - title: the page title
+        *        - format: the format
+        *        - oldid|revision: the revision ID
+        * @param OutputPage $output
+        *
+        * @note: Instead of an output page, a WebResponse could be sufficient, but
+        *        redirect logic is currently implemented in OutputPage.
+        *
+        * @throws HttpError
+        */
+       public function handleRequest( $subPage, WebRequest $request, OutputPage $output ) {
+               // No matter what: The response is always public
+               $output->getRequest()->response()->header( 'Access-Control-Allow-Origin: *' );
+
+               if ( !$this->canHandleRequest( $subPage, $request ) ) {
+                       throw new HttpError( 400, wfMessage( 'pagedata-bad-title', $subPage ) );
+               }
+
+               $revision = 0;
+
+               $parts = explode( '/', $subPage, 2 );
+               if ( $subPage !== '' ) {
+                       $title = $parts[1];
+               } else {
+                       $title = $request->getText( 'target', '' );
+               }
+
+               $revision = $request->getInt( 'oldid', $revision );
+               $revision = $request->getInt( 'revision', $revision );
+
+               if ( $title === null || $title === '' ) {
+                       //TODO: different error message?
+                       throw new HttpError( 400, wfMessage( 'pagedata-bad-title', $title ) );
+               }
+
+               try {
+                       $title = Title::newFromTextThrow( $title );
+               } catch ( MalformedTitleException $ex ) {
+                       throw new HttpError( 400, wfMessage( 'pagedata-bad-title', $title ) );
+               }
+
+               $this->httpContentNegotiation( $request, $output, $title, $revision );
+       }
+
+       /**
+        * Applies HTTP content negotiation.
+        * If the negotiation is successful, this method will set the appropriate redirect
+        * in the OutputPage object and return. Otherwise, an HttpError is thrown.
+        *
+        * @param WebRequest $request
+        * @param OutputPage $output
+        * @param Title $title
+        * @param int $revision The desired revision
+        *
+        * @throws HttpError
+        */
+       public function httpContentNegotiation(
+               WebRequest $request,
+               OutputPage $output,
+               Title $title,
+               $revision = 0
+       ) {
+               $contentHandler = ContentHandler::getForTitle( $title );
+               $mimeTypes = $contentHandler->getSupportedFormats();
+
+               $headers = $request->getAllHeaders();
+               if ( isset( $headers['ACCEPT'] ) ) {
+                       $parser = new HttpAcceptParser();
+                       $accept = $parser->parseWeights( $headers['ACCEPT'] );
+               } else {
+                       // anything goes
+                       $accept = [
+                               '*' => 0.1 // just to make extra sure
+                       ];
+                       // prefer the default
+                       $accept[$mimeTypes[0]] = 1;
+               }
+
+               $negotiator = new HttpAcceptNegotiator( $mimeTypes );
+               $format = $negotiator->getBestSupportedKey( $accept, null );
+
+               if ( $format === null ) {
+                       $format = isset( $accept['text/html'] ) ? 'text/html' : null;
+               }
+
+               if ( $format === null ) {
+                       $msg = wfMessage( 'pagedata-not-acceptable', implode( ', ', $mimeTypes ) );
+                       throw new HttpError( 406, $msg );
+               }
+
+               $url = $this->getDocUrl( $title, $format, $revision );
+               $output->redirect( $url, 303 );
+       }
+
+       /**
+        * Returns a url representing the given title.
+        *
+        * @param Title $title
+        * @param string|null $format The (normalized) format name, or ''
+        * @param int $revision
+        * @return string
+        */
+       private function getDocUrl( Title $title, $format = '', $revision = 0 ) {
+               $params = [];
+
+               if ( $revision > 0 ) {
+                       $params['oldid'] = $revision;
+               }
+
+               if ( $format === 'text/html' ) {
+                       return $title->getFullURL( $params );
+               }
+
+               $params[ 'action' ] = 'raw';
+
+               return $title->getFullURL( $params );
+       }
+
+}
index 317652a..c5501cb 100644 (file)
@@ -390,9 +390,18 @@ class LogEventsList extends ContextSource {
                        [ 'mw-logline-' . $entry->getType() ],
                        $newClasses
                );
+               $attribs = [
+                       'data-mw-logid' => $entry->getId(),
+                       'data-mw-logaction' => $entry->getFullType(),
+               ];
+               $ret = "$del $time $action $comment $revert $tagDisplay";
+
+               // Let extensions add data
+               Hooks::run( 'LogEventsListLineEnding', [ $this, &$ret, $entry, &$classes, &$attribs ] );
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
+               $attribs['class'] = implode( ' ', $classes );
 
-               return Html::rawElement( 'li', [ 'class' => $classes ],
-                       "$del $time $action $comment $revert $tagDisplay" ) . "\n";
+               return Html::rawElement( 'li', $attribs, $ret ) . "\n";
        }
 
        /**
index f260850..aae66d3 100644 (file)
@@ -461,43 +461,4 @@ class DjVuHandler extends ImageHandler {
                        return false;
                }
        }
-
-       /**
-       * Get useful response headers for GET/HEAD requests for a file with the given metadata
-       * @param $metadata Array Contains this handler's unserialized getMetadata() for a file
-       * @param $fallbackWidth int|null Width to fall back to if metadata doesn't have any
-       * @param $fallbackHeight int|null Height to fall back to if metadata doesn't have any
-       * @return Array
-       * @since 1.30
-       */
-       public function getContentHeaders( $metadata, $fallbackWidth = null, $fallbackHeight = null ) {
-               if ( !isset( $metadata['xml'] ) ) {
-                       return [];
-               }
-
-               $trees = $this->extractTreesFromMetadata( $metadata['xml'] );
-               $dimensionInfo = $this->getDimensionInfoFromMetaTree( $trees['MetaTree'] );
-
-               if ( !$dimensionInfo ) {
-                       return [];
-               }
-
-               $pagesByDimensions = [];
-               $count = $dimensionInfo['pageCount'];
-
-               for ( $i = 1; $i <= $count; $i++ ) {
-                       $dimensions = $dimensionInfo['dimensionsByPage'][ $i - 1 ];
-                       $dimensionString = $dimensions['width'] . 'x' . $dimensions['height'];
-
-                       if ( isset ( $pagesByDimensions[ $dimensionString ] ) ) {
-                               $pagesByDimensions[ $dimensionString ][] = $i;
-                       } else {
-                               $pagesByDimensions[ $dimensionString ] = [ $i ];
-                       }
-               }
-
-               $pageRangesByDimensions = MediaHandler::getPageRangesByDimensions( $pagesByDimensions );
-
-               return [ 'X-Content-Dimensions' => $pageRangesByDimensions ];
-       }
 }
index ec4d372..8896264 100644 (file)
@@ -916,32 +916,10 @@ abstract class MediaHandler {
        /**
        * Get useful response headers for GET/HEAD requests for a file with the given metadata
        * @param $metadata Array Contains this handler's unserialized getMetadata() for a file
-       * @param $fallbackWidth int|null Width to fall back to if metadata doesn't have any
-       * @param $fallbackHeight int|null Height to fall back to if metadata doesn't have any
        * @return Array
        * @since 1.30
        */
-       public function getContentHeaders( $metadata, $fallbackWidth = null, $fallbackHeight = null ) {
-               if ( !isset( $metadata['width'] ) ) {
-                       if ( is_null( $fallbackWidth ) ) {
-                               return [];
-                       }
-
-                       $metadata['width'] = $fallbackWidth;
-               }
-
-               if ( !isset( $metadata['height'] ) ) {
-                       if ( is_null( $fallbackHeight ) ) {
-                               return [];
-                       }
-
-                       $metadata['height'] = $fallbackHeight;
-               }
-
-               $dimensionString = $metadata['width'] . 'x' . $metadata['height'];
-               $pagesByDimensions = [ $dimensionString => [ 1 ] ];
-               $pageRangesByDimensions = MediaHandler::getPageRangesByDimensions( $pagesByDimensions );
-
-               return [ 'X-Content-Dimensions' => $pageRangesByDimensions ];
+       public function getContentHeaders( $metadata ) {
+               return [];
        }
 }
index a4a6ba8..6c10301 100644 (file)
@@ -588,7 +588,7 @@ class SqlBagOStuff extends BagOStuff {
                                        while ( true ) {
                                                $conds = $baseConds;
                                                if ( $maxExpTime !== false ) {
-                                                       $conds[] = 'exptime > ' . $db->addQuotes( $maxExpTime );
+                                                       $conds[] = 'exptime >= ' . $db->addQuotes( $maxExpTime );
                                                }
                                                $rows = $db->select(
                                                        $this->getTableNameByShard( $i ),
index ccc50f7..7dea271 100644 (file)
@@ -27,7 +27,7 @@
  */
 class CategoryPage extends Article {
        # Subclasses can change this to override the viewer class.
-       protected $mCategoryViewerClass = 'CategoryViewer';
+       public $mCategoryViewerClass = 'CategoryViewer';
 
        /**
         * @var WikiCategoryPage
index 34f6232..d8722ba 100644 (file)
@@ -4974,6 +4974,7 @@ class Parser {
 
                $ig->setContextTitle( $this->mTitle );
                $ig->setShowBytes( false );
+               $ig->setShowDimensions( false );
                $ig->setShowFilename( false );
                $ig->setParser( $this );
                $ig->setHideBadImages();
index 9c6cf93..1f0e19e 100644 (file)
@@ -327,6 +327,13 @@ class ParserCache {
                        // ...and its pointer
                        $this->mMemc->set( $this->getOptionsKey( $page ), $optionsKey, $expire );
 
+                       // Normally, when there was no key change, the above would have
+                       // overwritten the old entry. Delete that old entry to save disk
+                       // space.
+                       $oldParserOutputKey = $this->getParserOutputKey( $page,
+                               $popts->optionsHashPre30( $optionsKey->mUsedOptions, $page->getTitle() ) );
+                       $this->mMemc->delete( $oldParserOutputKey );
+
                        Hooks::run(
                                'ParserCacheSaveComplete',
                                [ $this, $parserOutput, $page->getTitle(), $popts, $revId ]
index f8ed63f..5be0321 100644 (file)
@@ -60,7 +60,6 @@ class ParserOptions {
         */
        private static $inCacheKey = [
                'dateformat' => true,
-               'editsection' => true,
                'numberheadings' => true,
                'thumbsize' => true,
                'stubthreshold' => true,
@@ -82,6 +81,13 @@ class ParserOptions {
         */
        private $mTimestamp;
 
+       /**
+        * The edit section flag is in ParserOptions for historical reasons, but
+        * doesn't actually affect the parser output since Feb 2015.
+        * @var bool
+        */
+       private $mEditSection = true;
+
        /**
         * Stored user object
         * @var User
@@ -244,23 +250,6 @@ class ParserOptions {
                return $this->setOptionLegacy( 'enableImageWhitelist', $x );
        }
 
-       /**
-        * Create "edit section" links?
-        * @return bool
-        */
-       public function getEditSection() {
-               return $this->getOption( 'editsection' );
-       }
-
-       /**
-        * Create "edit section" links?
-        * @param bool|null $x New value (null is no change)
-        * @return bool Old value
-        */
-       public function setEditSection( $x ) {
-               return $this->setOptionLegacy( 'editsection', $x );
-       }
-
        /**
         * Automatically number headings?
         * @return bool
@@ -878,6 +867,23 @@ class ParserOptions {
                return wfSetVar( $this->mTimestamp, $x );
        }
 
+       /**
+        * Create "edit section" links?
+        * @return bool
+        */
+       public function getEditSection() {
+               return $this->mEditSection;
+       }
+
+       /**
+        * Create "edit section" links?
+        * @param bool|null $x New value (null is no change)
+        * @return bool Old value
+        */
+       public function setEditSection( $x ) {
+               return wfSetVar( $this->mEditSection, $x );
+       }
+
        /**
         * Set the redirect target.
         *
@@ -1041,7 +1047,6 @@ class ParserOptions {
                        // *UPDATE* ParserOptions::matches() if any of this changes as needed
                        self::$defaults = [
                                'dateformat' => null,
-                               'editsection' => true,
                                'tidy' => false,
                                'interfaceMessage' => false,
                                'targetLanguage' => null,
@@ -1256,16 +1261,32 @@ class ParserOptions {
        public function optionsHash( $forOptions, $title = null ) {
                global $wgRenderHashAppend;
 
+               $options = $this->options;
+               $defaults = self::getCanonicalOverrides() + self::getDefaults();
+               $inCacheKey = self::$inCacheKey;
+
+               // Historical hack: 'editsection' hasn't been a true parser option since
+               // Feb 2015 (instead the parser outputs a constant placeholder and post-parse
+               // processing handles the option). But Wikibase forces it in $forOptions
+               // and expects the cache key to still vary on it for T85252.
+               // @todo Deprecate and remove this behavior after optionsHashPre30() is
+               //  removed (Wikibase can use addExtraKey() or something instead).
+               if ( in_array( 'editsection', $forOptions, true ) ) {
+                       $options['editsection'] = $this->mEditSection;
+                       $defaults['editsection'] = true;
+                       $inCacheKey['editsection'] = true;
+                       ksort( $inCacheKey );
+               }
+
                // We only include used options with non-canonical values in the key
                // so adding a new option doesn't invalidate the entire parser cache.
                // The drawback to this is that changing the default value of an option
                // requires manual invalidation of existing cache entries, as mentioned
                // in the docs on the relevant methods and hooks.
-               $defaults = self::getCanonicalOverrides() + self::getDefaults();
                $values = [];
-               foreach ( self::$inCacheKey as $option => $include ) {
+               foreach ( $inCacheKey as $option => $include ) {
                        if ( $include && in_array( $option, $forOptions, true ) ) {
-                               $v = $this->optionToString( $this->options[$option] );
+                               $v = $this->optionToString( $options[$option] );
                                $d = $this->optionToString( $defaults[$option] );
                                if ( $v !== $d ) {
                                        $values[] = "$option=$v";
@@ -1364,7 +1385,7 @@ class ParserOptions {
                // directly. At least Wikibase does at this point in time.
                if ( !in_array( 'editsection', $forOptions ) ) {
                        $confstr .= '!*';
-               } elseif ( !$this->options['editsection'] ) {
+               } elseif ( !$this->mEditSection ) {
                        $confstr .= '!edit=0';
                }
 
index 767046b..c2faf48 100644 (file)
@@ -1170,7 +1170,7 @@ MESSAGE;
         * @param array $templates Keys are name of templates and values are the source of
         *   the template.
         * @throws MWException
-        * @return string
+        * @return string JavaScript code
         */
        protected static function makeLoaderImplementScript(
                $name, $scripts, $styles, $messages, $templates
@@ -1200,7 +1200,7 @@ MESSAGE;
         *
         * @param mixed $messages Either an associative array mapping message key to value, or a
         *   JSON-encoded message blob containing the same data, wrapped in an XmlJsCode object.
-        * @return string
+        * @return string JavaScript code
         */
        public static function makeMessageSetScript( $messages ) {
                return Xml::encodeJsCall(
@@ -1256,7 +1256,7 @@ MESSAGE;
         *
         * @param string $name
         * @param string $state
-        * @return string
+        * @return string JavaScript code
         */
        public static function makeLoaderStateScript( $name, $state = null ) {
                if ( is_array( $name ) ) {
@@ -1286,7 +1286,7 @@ MESSAGE;
         * @param string $group Group which the module is in.
         * @param string $source Source of the module, or 'local' if not foreign.
         * @param string $script JavaScript code
-        * @return string
+        * @return string JavaScript code
         */
        public static function makeCustomLoaderScript( $name, $version, $dependencies,
                $group, $source, $script
@@ -1358,7 +1358,7 @@ MESSAGE;
         * @param string $group Group which the module is in
         * @param string $source Source of the module, or 'local' if not foreign
         * @param string $skip Script body of the skip function
-        * @return string
+        * @return string JavaScript code
         */
        public static function makeLoaderRegisterScript( $name, $version = null,
                $dependencies = null, $group = null, $source = null, $skip = null
@@ -1412,7 +1412,7 @@ MESSAGE;
         *
         * @param string $id Source ID
         * @param string $loadUrl load.php url
-        * @return string
+        * @return string JavaScript code
         */
        public static function makeLoaderSourcesScript( $id, $loadUrl = null ) {
                if ( is_array( $id ) ) {
@@ -1436,7 +1436,7 @@ MESSAGE;
         *
         * @deprecated since 1.25; use makeInlineScript instead
         * @param string $script JavaScript code
-        * @return string
+        * @return string JavaScript code
         */
        public static function makeLoaderConditionalScript( $script ) {
                return '(window.RLQ=window.RLQ||[]).push(function(){' .
@@ -1466,7 +1466,7 @@ MESSAGE;
         * the given value.
         *
         * @param array $configuration List of configuration values keyed by variable name
-        * @return string
+        * @return string JavaScript code
         */
        public static function makeConfigSetScript( array $configuration ) {
                return Xml::encodeJsCall(
index 8955b8c..f99114e 100644 (file)
@@ -29,7 +29,7 @@ use MediaWiki\MediaWikiServices;
  * Object passed around to modules which contains information about the state
  * of a specific loader request.
  */
-class ResourceLoaderContext {
+class ResourceLoaderContext implements MessageLocalizer {
        protected $resourceLoader;
        protected $request;
        protected $logger;
@@ -222,10 +222,12 @@ class ResourceLoaderContext {
         * Get a Message object with context set.  See wfMessage for parameters.
         *
         * @since 1.27
+        * @param string|string[]|MessageSpecifier $key Message key, or array of keys,
+        *   or a MessageSpecifier.
         * @param mixed ...
         * @return Message
         */
-       public function msg() {
+       public function msg( $key ) {
                return call_user_func_array( 'wfMessage', func_get_args() )
                        ->inLanguage( $this->getLanguage() )
                        // Use a dummy title because there is no real title
index 62bafe9..9beafc9 100644 (file)
@@ -19,8 +19,6 @@
  * @ingroup RevisionDelete
  */
 
-use Wikimedia\Rdbms\IDatabase;
-
 /**
  * Item class for an oldimage table row
  */
index ccb202e..e9d2f07 100644 (file)
@@ -1485,7 +1485,7 @@ abstract class Skin extends ContextSource {
         *   should fall back to the next notice in its sequence
         */
        private function getCachedNotice( $name ) {
-               global $wgRenderHashAppend, $parserMemc, $wgContLang;
+               global $wgRenderHashAppend, $wgContLang;
 
                $needParse = false;
 
@@ -1506,9 +1506,10 @@ abstract class Skin extends ContextSource {
                        $notice = $msg->plain();
                }
 
+               $cache = wfGetCache( CACHE_ANYTHING );
                // Use the extra hash appender to let eg SSL variants separately cache.
-               $key = $parserMemc->makeKey( $name . $wgRenderHashAppend );
-               $cachedNotice = $parserMemc->get( $key );
+               $key = $cache->makeKey( $name . $wgRenderHashAppend );
+               $cachedNotice = $cache->get( $key );
                if ( is_array( $cachedNotice ) ) {
                        if ( md5( $notice ) == $cachedNotice['hash'] ) {
                                $notice = $cachedNotice['html'];
@@ -1521,7 +1522,7 @@ abstract class Skin extends ContextSource {
 
                if ( $needParse ) {
                        $parsed = $this->getOutput()->parse( $notice );
-                       $parserMemc->set( $key, [ 'html' => $parsed, 'hash' => md5( $notice ) ], 600 );
+                       $cache->set( $key, [ 'html' => $parsed, 'hash' => md5( $notice ) ], 600 );
                        $notice = $parsed;
                }
 
index 09ed3c4..1b561ef 100644 (file)
@@ -791,16 +791,18 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                $config = $this->getConfig();
                $opts = new FormOptions();
                $structuredUI = $this->getUser()->getOption( 'rcenhancedfilters' );
+               // If urlversion=2 is set, ignore the filter defaults and set them all to false/empty
+               $useDefaults = $this->getRequest()->getInt( 'urlversion' ) !== 2;
 
                // Add all filters
                foreach ( $this->filterGroups as $filterGroup ) {
                        // URL parameters can be per-group, like 'userExpLevel',
                        // or per-filter, like 'hideminor'.
                        if ( $filterGroup->isPerGroupRequestParameter() ) {
-                               $opts->add( $filterGroup->getName(), $filterGroup->getDefault() );
+                               $opts->add( $filterGroup->getName(), $useDefaults ? $filterGroup->getDefault() : '' );
                        } else {
                                foreach ( $filterGroup->getFilters() as $filter ) {
-                                       $opts->add( $filter->getName(), $filter->getDefault( $structuredUI ) );
+                                       $opts->add( $filter->getName(), $useDefaults ? $filter->getDefault( $structuredUI ) : false );
                                }
                        }
                }
@@ -808,6 +810,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                $opts->add( 'namespace', '', FormOptions::STRING );
                $opts->add( 'invert', false );
                $opts->add( 'associated', false );
+               $opts->add( 'urlversion', 1 );
 
                return $opts;
        }
index ba58e92..9594952 100644 (file)
@@ -33,7 +33,7 @@ use MediaWiki\MediaWikiServices;
  *
  * @ingroup SpecialPage
  */
-class SpecialPage {
+class SpecialPage implements MessageLocalizer {
        // The canonical name of this special page
        // Also used for the default <h1> heading, @see getDescription()
        protected $mName;
@@ -743,7 +743,7 @@ class SpecialPage {
         * @return Message
         * @see wfMessage
         */
-       public function msg( /* $args */ ) {
+       public function msg( $key /* $args */ ) {
                $message = call_user_func_array(
                        [ $this->getContext(), 'msg' ],
                        func_get_args()
@@ -783,6 +783,10 @@ class SpecialPage {
         * @since 1.25
         */
        public function addHelpLink( $to, $overrideBaseUrl = false ) {
+               if ( $this->including() ) {
+                       return;
+               }
+
                global $wgContLang;
                $msg = $this->msg( $wgContLang->lc( $this->getName() ) . '-helppage' );
 
index 84d3b08..81e2b7e 100644 (file)
@@ -186,6 +186,7 @@ class SpecialPageFactory {
                'Revisiondelete' => 'SpecialRevisionDelete',
                'RunJobs' => 'SpecialRunJobs',
                'Specialpages' => 'SpecialSpecialpages',
+               'PageData' => 'SpecialPageData'
        ];
 
        private static $list;
index a36b414..8eaae4c 100644 (file)
@@ -198,7 +198,7 @@ class SpecialChangeContentModel extends FormSpecialPage {
                        $oldContent = $this->oldRevision->getContent();
                        try {
                                $newContent = ContentHandler::makeContent(
-                                       $oldContent->getNativeData(), $this->title, $data['model']
+                                       $oldContent->serialize(), $this->title, $data['model']
                                );
                        } catch ( MWException $e ) {
                                return Status::newFatal(
index 52cb30a..7087cff 100644 (file)
@@ -74,6 +74,7 @@ class MIMEsearchPage extends QueryPage {
                                'img_major_mime' => $this->major,
                                // This is in order to trigger using
                                // the img_media_mime index in "range" mode.
+                               // @todo how is order defined? use MimeAnalyzer::getMediaTypes?
                                'img_media_type' => [
                                        MEDIATYPE_BITMAP,
                                        MEDIATYPE_DRAWING,
index 583d4f9..8528ce2 100644 (file)
@@ -25,6 +25,9 @@ class SpecialNewFiles extends IncludableSpecialPage {
        /** @var FormOptions */
        protected $opts;
 
+       /** @var string[] */
+       protected $mediaTypes;
+
        public function __construct() {
                parent::__construct( 'Newimages' );
        }
@@ -32,9 +35,10 @@ class SpecialNewFiles extends IncludableSpecialPage {
        public function execute( $par ) {
                $this->setHeaders();
                $this->outputHeader();
+               $mimeAnalyzer = MediaWiki\MediaWikiServices::getInstance()->getMimeAnalyzer();
+               $this->mediaTypes = $mimeAnalyzer->getMediaTypes();
 
                $out = $this->getOutput();
-               $out->addModules( 'mediawiki.special.newFiles' );
                $this->addHelpLink( 'Help:New images' );
 
                $opts = new FormOptions();
@@ -42,7 +46,9 @@ class SpecialNewFiles extends IncludableSpecialPage {
                $opts->add( 'like', '' );
                $opts->add( 'user', '' );
                $opts->add( 'showbots', false );
+               $opts->add( 'newbies', false );
                $opts->add( 'hidepatrolled', false );
+               $opts->add( 'mediatype', $this->mediaTypes );
                $opts->add( 'limit', 50 );
                $opts->add( 'offset', '' );
                $opts->add( 'start', '' );
@@ -67,6 +73,14 @@ class SpecialNewFiles extends IncludableSpecialPage {
                        $opts->setValue( 'end', $end, true );
                }
 
+               // if all media types have been selected, wipe out the array to prevent
+               // the pointless IN(...) query condition (which would have no effect
+               // because every possible type has been selected)
+               $missingMediaTypes = array_diff( $this->mediaTypes, $opts->getValue( 'mediatype' ) );
+               if ( empty( $missingMediaTypes ) ) {
+                       $opts->setValue( 'mediatype', [] );
+               }
+
                $opts->validateIntBounds( 'limit', 0, 500 );
 
                $this->opts = $opts;
@@ -85,6 +99,17 @@ class SpecialNewFiles extends IncludableSpecialPage {
        }
 
        protected function buildForm() {
+               $mediaTypesText = array_map( function ( $type ) {
+                       // mediastatistics-header-unknown, mediastatistics-header-bitmap,
+                       // mediastatistics-header-drawing, mediastatistics-header-audio,
+                       // mediastatistics-header-video, mediastatistics-header-multimedia,
+                       // mediastatistics-header-office, mediastatistics-header-text,
+                       // mediastatistics-header-executable, mediastatistics-header-archive,
+                       return $this->msg( 'mediastatistics-header-' . strtolower( $type ) )->text();
+               }, $this->mediaTypes );
+               $mediaTypesOptions = array_combine( $mediaTypesText, $this->mediaTypes );
+               ksort( $mediaTypesOptions );
+
                $formDescriptor = [
                        'like' => [
                                'type' => 'text',
@@ -98,6 +123,12 @@ class SpecialNewFiles extends IncludableSpecialPage {
                                'name' => 'user',
                        ],
 
+                       'newbies' => [
+                               'type' => 'check',
+                               'label-message' => 'newimages-newbies',
+                               'name' => 'newbies',
+                       ],
+
                        'showbots' => [
                                'type' => 'check',
                                'label-message' => 'newimages-showbots',
@@ -110,6 +141,16 @@ class SpecialNewFiles extends IncludableSpecialPage {
                                'name' => 'hidepatrolled',
                        ],
 
+                       'mediatype' => [
+                               'type' => 'multiselect',
+                               'dropdown' => true,
+                               'flatlist' => true,
+                               'name' => 'mediatype',
+                               'label-message' => 'newimages-mediatype',
+                               'options' => $mediaTypesOptions,
+                               'default' => $this->mediaTypes,
+                       ],
+
                        'limit' => [
                                'type' => 'hidden',
                                'default' => $this->opts->getValue( 'limit' ),
@@ -144,11 +185,15 @@ class SpecialNewFiles extends IncludableSpecialPage {
                }
 
                HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() )
+                       // For the 'multiselect' field values to be preserved on submit
+                       ->setFormIdentifier( 'specialnewimages' )
                        ->setWrapperLegendMsg( 'newimages-legend' )
                        ->setSubmitTextMsg( 'ilsubmit' )
                        ->setMethod( 'get' )
                        ->prepareForm()
                        ->displayForm( false );
+
+               $this->getOutput()->addModules( 'mediawiki.special.newFiles' );
        }
 
        protected function getGroupName() {
index be8ad8f..83482f6 100644 (file)
@@ -314,6 +314,7 @@ class SpecialNewpages extends IncludableSpecialPage {
                $rev->setTitle( $title );
 
                $classes = [];
+               $attribs = [ 'data-mw-revid' => $result->rev_id ];
 
                $lang = $this->getLanguage();
                $dm = $lang->getDirMark();
@@ -378,11 +379,19 @@ class SpecialNewpages extends IncludableSpecialPage {
                        $tagDisplay = '';
                }
 
-               $css = count( $classes ) ? ' class="' . implode( ' ', $classes ) . '"' : '';
-
                # Display the old title if the namespace/title has been changed
                $oldTitleText = '';
                $oldTitle = Title::makeTitle( $result->rc_namespace, $result->rc_title );
+               $ret = "{$time} {$dm}{$plink} {$hist} {$dm}{$length} {$dm}{$ulink} {$comment} "
+                       . "{$tagDisplay} {$oldTitleText}";
+
+               // Let extensions add data
+               Hooks::run( 'NewPagesLineEnding', [ $this, &$ret, $result, &$classes, &$attribs ] );
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
+
+               if ( count( $classes ) ) {
+                       $attribs['class'] = implode( ' ', $classes );
+               }
 
                if ( !$title->equals( $oldTitle ) ) {
                        $oldTitleText = $oldTitle->getPrefixedText();
@@ -393,8 +402,7 @@ class SpecialNewpages extends IncludableSpecialPage {
                        );
                }
 
-               return "<li{$css}>{$time} {$dm}{$plink} {$hist} {$dm}{$length} "
-                       . "{$dm}{$ulink} {$comment} {$tagDisplay} {$oldTitleText}</li>\n";
+               return Html::rawElement( 'li', $attribs, $ret ) . "\n";
        }
 
        /**
diff --git a/includes/specials/SpecialPageData.php b/includes/specials/SpecialPageData.php
new file mode 100644 (file)
index 0000000..f7084a8
--- /dev/null
@@ -0,0 +1,87 @@
+<?php
+
+/**
+ * Special page to act as an endpoint for accessing raw page data.
+ * The web server should generally be configured to make this accessible via a canonical URL/URI,
+ * such as <http://my.domain.org/data/main/Foo>.
+ *
+ * @license GPL-2.0+
+ */
+class SpecialPageData extends SpecialPage {
+
+       /**
+        * @var PageDataRequestHandler|null
+        */
+       private $requestHandler = null;
+
+       public function __construct() {
+               parent::__construct( 'PageData' );
+       }
+
+       /**
+        * Sets the request handler to be used by the special page.
+        * May be used when a particular instance of PageDataRequestHandler is already
+        * known, e.g. during testing.
+        *
+        * If no request handler is set using this method, a default handler is created
+        * on demand by initDependencies().
+        *
+        * @param PageDataRequestHandler $requestHandler
+        */
+       public function setRequestHandler( PageDataRequestHandler $requestHandler ) {
+               $this->requestHandler = $requestHandler;
+       }
+
+       /**
+        * Initialize any un-initialized members from global context.
+        * In particular, this initializes $this->requestHandler
+        */
+       protected function initDependencies() {
+               if ( $this->requestHandler === null ) {
+                       $this->requestHandler = $this->newDefaultRequestHandler();
+               }
+       }
+
+       /**
+        * Creates a PageDataRequestHandler based on global defaults.
+        *
+        * @return PageDataRequestHandler
+        */
+       private function newDefaultRequestHandler() {
+
+               return new PageDataRequestHandler();
+       }
+
+       /**
+        * @see SpecialWikibasePage::execute
+        *
+        * @param string|null $subPage
+        *
+        * @throws HttpError
+        */
+       public function execute( $subPage ) {
+               $this->initDependencies();
+
+               // If there is no title, show an HTML form
+               // TODO: Don't do this if HTML is not acceptable according to HTTP headers.
+               if ( !$this->requestHandler->canHandleRequest( $subPage, $this->getRequest() ) ) {
+                       $this->showForm();
+                       return;
+               }
+
+               $this->requestHandler->handleRequest( $subPage, $this->getRequest(), $this->getOutput() );
+       }
+
+       /**
+        * Shows an informative page to the user; Called when there is no page to output.
+        */
+       public function showForm() {
+               $this->getOutput()->showErrorPage( 'pagedata-title', 'pagedata-text' );
+       }
+
+       public function isListed() {
+               // Do not list this page in Special:SpecialPages
+               return false;
+       }
+
+}
index acfc1c0..5ec2064 100644 (file)
@@ -138,7 +138,8 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
         * @param string $subpage
         */
        public function execute( $subpage ) {
-               global $wgStructuredChangeFiltersEnableSaving;
+               global $wgStructuredChangeFiltersEnableSaving,
+                       $wgStructuredChangeFiltersEnableExperimentalViews;
 
                // Backwards-compatibility: redirect to new feed URLs
                $feedFormat = $this->getRequest()->getVal( 'feed' );
@@ -184,7 +185,58 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                                'wgStructuredChangeFiltersEnableSaving',
                                $wgStructuredChangeFiltersEnableSaving
                        );
+                       $out->addJsConfigVars(
+                               'wgStructuredChangeFiltersEnableExperimentalViews',
+                               $wgStructuredChangeFiltersEnableExperimentalViews
+                       );
+                       $out->addJsConfigVars(
+                               'wgRCFiltersChangeTags',
+                               $this->buildChangeTagList()
+                       );
+               }
+       }
+
+       /**
+        * Fetch the change tags list for the front end
+        *
+        * @return Array Tag data
+        */
+       protected function buildChangeTagList() {
+               function stripAllHtml( $input ) {
+                       return trim( html_entity_decode( strip_tags( $input ) ) );
                }
+
+               $explicitlyDefinedTags = array_fill_keys( ChangeTags::listExplicitlyDefinedTags(), 0 );
+               $softwareActivatedTags = array_fill_keys( ChangeTags::listSoftwareActivatedTags(), 0 );
+               $tagStats = ChangeTags::tagUsageStatistics();
+
+               $tagHitCounts = array_merge( $explicitlyDefinedTags, $softwareActivatedTags, $tagStats );
+
+               // Sort by hits
+               asort( $tagHitCounts );
+
+               // Build the list and data
+               $result = [];
+               foreach ( $tagHitCounts as $tagName => $hits ) {
+                       if (
+                               // Only get active tags
+                               isset( $explicitlyDefinedTags[ $tagName ] ) ||
+                               isset( $softwareActivatedTags[ $tagName ] )
+                       ) {
+                               // Parse description
+                               $desc = ChangeTags::tagLongDescriptionMessage( $tagName, $this->getContext() );
+
+                               $result[] = [
+                                       'name' => $tagName,
+                                       'label' => stripAllHtml( ChangeTags::tagDescription( $tagName, $this->getContext() ) ),
+                                       'description' => $desc ? stripAllHtml( $desc->parse() ) : '',
+                                       'cssClass' => Sanitizer::escapeClass( 'mw-tag-' . $tagName ),
+                                       'hits' => $hits,
+                               ];
+                       }
+               }
+
+               return $result;
        }
 
        /**
index eb4f0cc..fa38506 100644 (file)
@@ -21,7 +21,6 @@
  * @ingroup SpecialPage
  */
 
-use MediaWiki\MediaWikiServices;
 use Wikimedia\Rdbms\ResultWrapper;
 
 /**
index f4a4818..def639d 100644 (file)
@@ -821,6 +821,7 @@ class SpecialUpload extends SpecialPage {
 
                $gallery = ImageGalleryBase::factory( false, $this->getContext() );
                $gallery->setShowBytes( false );
+               $gallery->setShowDimensions( false );
                foreach ( $dupes as $file ) {
                        $gallery->add( $file->getTitle() );
                }
index a3880ee..6bd7eb0 100644 (file)
@@ -365,9 +365,9 @@ class ContribsPager extends RangeChronologicalPager {
         * @return string
         */
        function formatRow( $row ) {
-
                $ret = '';
                $classes = [];
+               $attribs = [];
 
                $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
 
@@ -388,7 +388,7 @@ class ContribsPager extends RangeChronologicalPager {
                MediaWiki\restoreWarnings();
 
                if ( $validRevision ) {
-                       $classes = [];
+                       $attribs['data-mw-revid'] = $rev->getId();
 
                        $page = Title::newFromRow( $row );
                        $link = $linkRenderer->makeLink(
@@ -535,19 +535,21 @@ class ContribsPager extends RangeChronologicalPager {
                }
 
                // Let extensions add data
-               Hooks::run( 'ContributionsLineEnding', [ $this, &$ret, $row, &$classes ] );
+               Hooks::run( 'ContributionsLineEnding', [ $this, &$ret, $row, &$classes, &$attribs ] );
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
 
                // TODO: Handle exceptions in the catch block above.  Do any extensions rely on
                // receiving empty rows?
 
-               if ( $classes === [] && $ret === '' ) {
+               if ( $classes === [] && $attribs === [] && $ret === '' ) {
                        wfDebug( "Dropping Special:Contribution row that could not be formatted\n" );
                        return "<!-- Could not format Special:Contribution row. -->\n";
                }
+               $attribs['class'] = $classes;
 
                // FIXME: The signature of the ContributionsLineEnding hook makes it
                // very awkward to move this LI wrapper into the template.
-               return Html::rawElement( 'li', [ 'class' => $classes ], $ret ) . "\n";
+               return Html::rawElement( 'li', $attribs, $ret ) . "\n";
        }
 
        /**
index 78e1092..43d7ad4 100644 (file)
@@ -195,6 +195,7 @@ class DeletedContribsPager extends IndexPager {
        function formatRow( $row ) {
                $ret = '';
                $classes = [];
+               $attribs = [];
 
                /*
                 * There may be more than just revision rows. To make sure that we'll only be processing
@@ -213,17 +214,20 @@ class DeletedContribsPager extends IndexPager {
                MediaWiki\restoreWarnings();
 
                if ( $validRevision ) {
+                       $attribs['data-mw-revid'] = $rev->getId();
                        $ret = $this->formatRevisionRow( $row );
                }
 
                // Let extensions add data
-               Hooks::run( 'DeletedContributionsLineEnding', [ $this, &$ret, $row, &$classes ] );
+               Hooks::run( 'DeletedContributionsLineEnding', [ $this, &$ret, $row, &$classes, &$attribs ] );
+               $attribs = wfArrayFilterByKey( $attribs, [ Sanitizer::class, 'isReservedDataAttribute' ] );
 
-               if ( $classes === [] && $ret === '' ) {
+               if ( $classes === [] && $attribs === [] && $ret === '' ) {
                        wfDebug( "Dropping Special:DeletedContribution row that could not be formatted\n" );
                        $ret = "<!-- Could not format Special:DeletedContribution row. -->\n";
                } else {
-                       $ret = Html::rawElement( 'li', [ 'class' => $classes ], $ret ) . "\n";
+                       $attribs['class'] = $classes;
+                       $ret = Html::rawElement( 'li', $attribs, $ret ) . "\n";
                }
 
                return $ret;
index cce0323..001c296 100644 (file)
@@ -74,6 +74,20 @@ class NewFilesPager extends RangeChronologicalPager {
                        }
                }
 
+               if ( $opts->getValue( 'newbies' ) ) {
+                       // newbie = most recent 1% of users
+                       $dbr = wfGetDB( DB_REPLICA );
+                       $max = $dbr->selectField( 'user', 'max(user_id)', false, __METHOD__ );
+                       $conds[] = 'img_user >' . (int)( $max - $max / 100 );
+
+                       // there's no point in looking for new user activity in a far past;
+                       // beyond a certain point, we'd just end up scanning the rest of the
+                       // table even though the users we're looking for didn't yet exist...
+                       // see T140537, (for ContribsPages, but similar to this)
+                       $conds[] = 'img_timestamp > ' .
+                               $dbr->addQuotes( $dbr->timestamp( wfTimestamp() - 30 * 24 * 60 * 60 ) );
+               }
+
                if ( !$opts->getValue( 'showbots' ) ) {
                        $groupsWithBotPermission = User::getGroupsWithPermission( 'bot' );
 
@@ -112,6 +126,10 @@ class NewFilesPager extends RangeChronologicalPager {
                        $options[] = 'STRAIGHT_JOIN';
                }
 
+               if ( $opts->getValue( 'mediatype' ) ) {
+                       $conds['img_media_type'] = $opts->getValue( 'mediatype' );
+               }
+
                $likeVal = $opts->getValue( 'like' );
                if ( !$this->getConfig()->get( 'MiserMode' ) && $likeVal !== '' ) {
                        $dbr = wfGetDB( DB_REPLICA );
index 352eb17..3a37c2e 100644 (file)
@@ -14,7 +14,7 @@
                </td>
        </tr>
        {{# lines }}
-       <tr class="{{# classes }}{{ . }} {{/ classes }}">
+       <tr class="{{# classes }}{{ . }} {{/ classes }}"{{{ attribs }}}>
                <td></td>
                <td class="mw-enhanced-rc">{{{ recentChangesFlags }}}&#160;</td>
                <td class="mw-enhanced-rc-nested">
index 9f6feb8..b793a58 100644 (file)
@@ -48,6 +48,12 @@ class RaggettWrapper {
                // Modify inline Microdata <link> and <meta> elements so they say <html-link> and <html-meta> so
                // we can trick Tidy into not stripping them out by including them in tidy's new-empty-tags config
                $wrappedtext = preg_replace( '!<(link|meta)([^>]*?)(/{0,1}>)!', '<html-$1$2$3', $wrappedtext );
+               // Similar for inline <style> tags, but those aren't empty.
+               $wrappedtext = preg_replace_callback( '!<style([^>]*)>(.*?)</style>!s', function ( $m ) {
+                       return '<html-style' . $m[1] . '>'
+                               . $this->replaceCallback( [ $m[2] ] )
+                               . '</html-style>';
+               }, $wrappedtext );
 
                // Preserve empty li elements (T49673) by abusing Tidy's datafld hack
                // The whitespace class is as in TY_(InitMap)
@@ -78,8 +84,9 @@ class RaggettWrapper {
         * @return string
         */
        public function postprocess( $text ) {
-               // Revert <html-{link,meta}> back to <{link,meta}>
+               // Revert <html-{link,meta,style}> back to <{link,meta,style}>
                $text = preg_replace( '!<html-(link|meta)([^>]*?)(/{0,1}>)!', '<$1$2$3', $text );
+               $text = preg_replace( '!<(/?)html-(style)([^>]*)>!', '<$1$2$3>', $text );
 
                // Remove datafld
                $text = str_replace( '<li datafld=""', '<li', $text );
index 3dc727b..c8a715b 100644 (file)
@@ -5,7 +5,6 @@ namespace MediaWiki\Tidy;
 use RemexHtml\HTMLData;
 use RemexHtml\Serializer\HtmlFormatter;
 use RemexHtml\Serializer\SerializerNode;
-use RemexHtml\Tokenizer\PlainAttributes;
 
 /**
  * @internal
index d93ce22..d4a3199 100644 (file)
@@ -20,3 +20,5 @@ fix-uri: no
 # html-{meta,link} is a hack we use to prevent Tidy from stripping <meta> and <link> used in the body for Microdata
 new-empty-tags: html-meta, html-link, wbr, source, track
 new-inline-tags: video, audio, bdi, data, time, mark
+# html-style is a hack we use to prevent pre-HTML5 versions of Tidy from stripping <style> used in the body for TemplateStyles
+new-blocklevel-tags: html-style
index 4ee256c..dd16fb7 100644 (file)
@@ -100,9 +100,10 @@ class PasswordReset implements LoggerAwareInterface {
                        } elseif ( !$user->isAllowed( 'editmyprivateinfo' ) ) {
                                // Maybe not all users have permission to change private data
                                $status = StatusValue::newFatal( 'badaccess' );
-                       } elseif ( $user->isBlocked() ) {
+                       } elseif ( $this->isBlocked( $user ) ) {
                                // Maybe the user is blocked (check this here rather than relying on the parent
-                               // method as we have a more specific error message to use here
+                               // method as we have a more specific error message to use here and we want to
+                               // ignore some types of blocks)
                                $status = StatusValue::newFatal( 'blocked-mailpassword' );
                        }
 
@@ -250,6 +251,37 @@ class PasswordReset implements LoggerAwareInterface {
                return StatusValue::newGood( $passwords );
        }
 
+       /**
+        * Check whether the user is blocked.
+        * Ignores certain types of system blocks that are only meant to force users to log in.
+        * @param User $user
+        * @return bool
+        * @since 1.30
+        */
+       protected function isBlocked( User $user ) {
+               $block = $user->getBlock() ?: $user->getGlobalBlock();
+               if ( !$block ) {
+                       return false;
+               }
+               $type = $block->getSystemBlockType();
+               if ( in_array( $type, [ null, 'global-block' ], true ) ) {
+                       // Normal block. Maybe it was meant for someone else and the user just needs to log in;
+                       // or maybe it was issued specifically to prevent some IP from messing with password
+                       // reset? Go out on a limb and use the registration allowed flag to decide.
+                       return $block->prevents( 'createaccount' );
+               } elseif ( $type === 'proxy' ) {
+                       // we disallow actions through proxy even if the user is logged in
+                       // so it makes sense to disallow password resets as well
+                       return true;
+               } elseif ( in_array( $type, [ 'dnsbl', 'wgSoftBlockRanges' ], true ) ) {
+                       // these are just meant to force login so let's not prevent that
+                       return false;
+               } else {
+                       // some extension - we'll have to guess
+                       return true;
+               }
+       }
+
        /**
         * @param string $email
         * @return User[]
index 6d942de..ef93362 100644 (file)
@@ -90,7 +90,8 @@ class InterwikiSearchResultSetWidget implements SearchResultSetWidget {
                        $iwResultListOutput .= Html::rawElement( 'li',
                                [
                                        'class' => 'iw-resultset',
-                                       'data-iw-resultset-pos' => $iwResultSetPos
+                                       'data-iw-resultset-pos' => $iwResultSetPos,
+                                       'data-iw-resultset-source' => $iwPrefix
                                ],
 
                                $iwResultItemOutput .
@@ -177,7 +178,7 @@ class InterwikiSearchResultSetWidget implements SearchResultSetWidget {
                $iwIconUrl = $parsed['scheme'] .
                        $parsed['delimiter'] .
                        $parsed['host'] .
-                       ( $parsed['port'] ? ':' . $parsed['port'] : '' ) .
+                       ( isset ( $parsed['port'] ) ? ':' . $parsed['port'] : '' ) .
                        '/favicon.ico';
 
                $iwIcon = new OOUI\IconWidget( [
index acd792d..861fb6d 100644 (file)
@@ -6,7 +6,6 @@ use HtmlArmor;
 use MediaWiki\Linker\LinkRenderer;
 use SearchResult;
 use SpecialSearch;
-use Title;
 use Html;
 
 /**
index 9fe816a..8190442 100644 (file)
@@ -6,7 +6,6 @@ use HtmlArmor;
 use MediaWiki\Linker\LinkRenderer;
 use SearchResult;
 use SpecialSearch;
-use Title;
 
 /**
  * Renders a simple one-line result
index fb45cf7..b5eef8c 100644 (file)
@@ -203,10 +203,11 @@ class Language {
        /**
         * Create a language object for a given language code
         * @param string $code
+        * @param $fallback boolean Whether we're going through language fallback chain
         * @throws MWException
         * @return Language
         */
-       protected static function newFromCode( $code ) {
+       protected static function newFromCode( $code, $fallback = false ) {
                if ( !Language::isValidCode( $code ) ) {
                        throw new MWException( "Invalid language code \"$code\"" );
                }
@@ -220,7 +221,7 @@ class Language {
                }
 
                // Check if there is a language class for the code
-               $class = self::classFromCode( $code );
+               $class = self::classFromCode( $code, $fallback );
                if ( class_exists( $class ) ) {
                        $lang = new $class;
                        return $lang;
@@ -826,7 +827,7 @@ class Language {
         * @return array Language code => language name
         */
        private static function fetchLanguageNamesUncached( $inLanguage = null, $include = 'mw' ) {
-               global $wgExtraLanguageNames;
+               global $wgExtraLanguageNames, $wgUsePigLatinVariant;
 
                // If passed an invalid language code to use, fallback to en
                if ( $inLanguage !== null && !Language::isValidCode( $inLanguage ) ) {
@@ -841,6 +842,11 @@ class Language {
                }
 
                $mwNames = $wgExtraLanguageNames + MediaWiki\Languages\Data\Names::$names;
+               if ( $wgUsePigLatinVariant ) {
+                       // Pig Latin (for variant development)
+                       $mwNames['en-x-piglatin'] = 'Igpay Atinlay';
+               }
+
                foreach ( $mwNames as $mwCode => $mwName ) {
                        # - Prefer own MediaWiki native name when not using the hook
                        # - For other names just add if not added through the hook
@@ -4338,10 +4344,11 @@ class Language {
 
        /**
         * @param string $code
+        * @param boolean $fallback Whether we're going through language fallback chain
         * @return string Name of the language class
         */
-       public static function classFromCode( $code ) {
-               if ( $code == 'en' ) {
+       public static function classFromCode( $code, $fallback = true ) {
+               if ( $fallback && $code == 'en' ) {
                        return 'Language';
                } else {
                        return 'Language' . str_replace( '-', '_', ucfirst( $code ) );
index 5382df4..19d644c 100644 (file)
@@ -36,6 +36,7 @@ class LanguageConverter {
         * @var array
         */
        static public $languagesWithVariants = [
+               'en',
                'gan',
                'iu',
                'kk',
diff --git a/languages/MessageLocalizer.php b/languages/MessageLocalizer.php
new file mode 100644 (file)
index 0000000..9a1796b
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
+/**
+ * Interface for localizing messages in MediaWiki
+ *
+ * @since 1.30
+ * @ingroup Language
+ */
+interface MessageLocalizer {
+
+       /**
+        * This is the method for getting translated interface messages.
+        *
+        * @see https://www.mediawiki.org/wiki/Manual:Messages_API
+        * @see Message::__construct
+        *
+        * @param string|string[]|MessageSpecifier $key Message key, or array of keys,
+        *   or a MessageSpecifier.
+        * @param mixed $params,... Normal message parameters
+        * @return Message
+        */
+       public function msg( $key /*...*/ );
+
+}
diff --git a/languages/classes/LanguageEn.php b/languages/classes/LanguageEn.php
new file mode 100644 (file)
index 0000000..dcb7a91
--- /dev/null
@@ -0,0 +1,85 @@
+<?php
+/**
+ * English specific code.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Language
+ */
+
+class EnConverter extends LanguageConverter {
+       /**
+        * Dummy methods required by base class.
+        */
+       function loadDefaultTables() {
+               $this->mTables = [
+                       'en' => new ReplacementArray(),
+                       'en-x-piglatin' => new ReplacementArray(),
+               ];
+       }
+
+       /**
+        * Translates text into Pig Latin. This allows developers to test the language variants
+        * functionality and user interface without having to switch wiki language away from default.
+        *
+        * @param $text string
+        * @param $toVariant string
+        * @return string
+        */
+       function translate( $text, $toVariant ) {
+               if ( $toVariant === 'en-x-piglatin' ) {
+                       // Only process words composed of standard English alphabet, leave the rest unchanged.
+                       // This skips some English words like 'naïve' or 'résumé', but we can live with that.
+                       // Ignore single letters and words which aren't lowercase or uppercase-first.
+                       return preg_replace_callback( '/[A-Za-z][a-z]+/', function ( $matches ) {
+                               $word = $matches[0];
+                               if ( preg_match( '/^[aeiou]/i', $word ) ) {
+                                       return $word . 'way';
+                               } else {
+                                       return preg_replace_callback( '/^(qu|[^aeiou][^aeiouy]*)(.*)$/i', function ( $m ) {
+                                               $ucfirst = strtoupper( $m[1][0] ) === $m[1][0];
+                                               if ( $ucfirst ) {
+                                                       return ucfirst( $m[2] ) . lcfirst( $m[1] ) . 'ay';
+                                               } else {
+                                                       return $m[2] . $m[1] . 'ay';
+                                               }
+                                       }, $word );
+                               }
+                       }, $text );
+               } else {
+                       return $text;
+               }
+       }
+}
+
+/**
+ * English
+ *
+ * @ingroup Language
+ */
+class LanguageEn extends Language {
+       function __construct() {
+               global $wgUsePigLatinVariant, $wgHooks;
+
+               parent::__construct();
+
+               if ( $wgUsePigLatinVariant ) {
+                       $this->mConverter = new EnConverter( $this, 'en', [ 'en', 'en-x-piglatin' ] );
+                       $wgHooks['PageContentSaveComplete'][] = $this->mConverter;
+               }
+       }
+}
index 726b170..699a2f6 100644 (file)
@@ -11,7 +11,8 @@
                        "Sayed Muddasir",
                        "Si Gam Acèh",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Rachmat04"
                ]
        },
        "tog-underline": "Bôh garéh yup peunawôt:",
        "anontalk": "Peugah haba IP nyoë.",
        "navigation": "Keumudoë",
        "and": "&#32;ngön",
-       "qbfind": "Mita",
-       "qbbrowse": "Lop",
-       "qbedit": "Andam",
-       "qbpageoptions": "Laman nyoe",
-       "qbmyoptions": "Laman lôn",
        "faq": "Teunanyöng Umom",
-       "faqpage": "Project:FAQ",
        "actions": "Buët",
        "namespaces": "Ruweuëng nan",
        "variants": "Ragam",
        "edit-local": "Andam deskripsi lokal",
        "create": "Peugöt",
        "create-local": "Tamah deskripsi lokal",
-       "editthispage": "Andam laman nyoë",
-       "create-this-page": "Peugöt laman nyoë",
        "delete": "Sampôh",
-       "deletethispage": "Sampôh laman nyoë",
-       "undeletethispage": "Bèk neusampôh laman nyoë",
        "undelete_short": "Bateuë sampôh {{PLURAL:$1|one edit|$1 edits}}",
        "viewdeleted_short": "Eu {{PLURAL:$1|saboh neuandam|$1 neuandam}} nyang geusampôh",
        "protect": "Peulindông",
        "protect_change": "ubah",
-       "protectthispage": "Peulindông laman nyoë",
        "unprotect": "Gantoë neulindông",
-       "unprotectthispage": "Gantoë neulindông laman nyoë",
        "newpage": "Laman barô",
-       "talkpage": "Peugah haba bhah laman nyoë",
        "talkpagelinktext": "Marit",
        "specialpage": "Laman kusuih",
        "personaltools": "Peukakaih droë",
-       "articlepage": "Eu asoë laman",
        "talk": "Marit",
        "views": "Seuneudeuih",
        "toolbox": "Alat",
-       "userpage": "Eu laman ureuëng ngui",
-       "projectpage": "Eu laman buët",
        "imagepage": "Eu laman beureukaih",
        "mediawikipage": "Eu laman peusan sistem",
        "templatepage": "Eu laman seunaleuëk",
        "redirectedfrom": "(Geupeupinah nibak $1)",
        "redirectpagesub": "Laman peuninah",
        "redirectto": "Peupinah u:",
-       "lastmodifiedat": "Laman nyoë seuneulheuëh geuubah bak $1 poh $2.",
+       "lastmodifiedat": "Mieng nyoe seuneulheueh geuandam bak $1, poh $2.",
        "viewcount": "Laman nyoë ka geusaweuë {{PLURAL:$1|sigo|$sigo}}.<br />",
        "protectedpage": "Laman teupeulindông",
        "jumpto": "Grôp u:",
        "watchlisttools-view": "Peudeuh neuubah meukaw'èt",
        "watchlisttools-edit": "Peudeuh ngön andam dapeuta keunalön",
        "watchlisttools-raw": "Andam dapeuta keunalön meuntah",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|marit]])",
        "duplicate-defaultsort": "'''Ingat:''' Gunci meuurot pukok \"$2\" jipeuhiro gunci meuurot pukok \"$1\" sigohlomjih.",
        "version": "Curak",
        "fileduplicatesearch-submit": "Mita",
index 38a665d..97661f6 100644 (file)
        "anontalk": "Bespreking",
        "navigation": "Navigasie",
        "and": "&#32;en",
-       "qbfind": "Vind",
-       "qbbrowse": "Snuffel",
-       "qbedit": "Wysig",
-       "qbpageoptions": "Bladsyopsies",
-       "qbmyoptions": "My bladsye",
        "faq": "Gewilde vrae",
-       "faqpage": "Project:GewildeVrae",
        "actions": "Aksies",
        "namespaces": "Naamruimtes",
        "variants": "Variante",
        "edit-local": "Wysig plaaslike beskrywing",
        "create": "Skep",
        "create-local": "Voeg plaaslike beskrywing by",
-       "editthispage": "Wysig hierdie bladsy",
-       "create-this-page": "Skep hierdie bladsy",
        "delete": "Skrap",
-       "deletethispage": "Skrap die bladsy",
-       "undeletethispage": "Ontskrap die bladsy",
        "undelete_short": "Herstel {{PLURAL:$1|een wysiging|$1 wysigings}}",
        "viewdeleted_short": "Wys {{PLURAL:$1|een geskrapte wysiging|$1 geskrapte wysigings}}",
        "protect": "Beskerm",
        "protect_change": "wysig",
-       "protectthispage": "Beskerm hierdie bladsy",
        "unprotect": "Wysig beskerming",
-       "unprotectthispage": "Wysig beskerming vir die bladsy",
        "newpage": "Nuwe bladsy",
-       "talkpage": "Bespreek hierdie bladsy",
        "talkpagelinktext": "Besprekings",
        "specialpage": "Spesiale bladsy",
        "personaltools": "Persoonlike gereedskap",
-       "articlepage": "Lees artikel",
        "talk": "Bespreking",
        "views": "Weergawes",
        "toolbox": "Gereedskap",
-       "userpage": "Lees gebruikersbladsy",
-       "projectpage": "Lees metabladsy",
        "imagepage": "Lees bladsy oor lêer",
        "mediawikipage": "Bekyk boodskapsbladsy",
        "templatepage": "Bekyk sjabloonsbladsy",
        "accmailtext": "'n Lukrake wagwoord vir [[User talk:$1|$1]] is na $2 gestuur.\n\nDie wagwoord vir hierdie nuwe gebruiker kan op die ''[[Special:ChangePassword|verander wagwoord]]''-bladsy verander word nadat ingeteken is.",
        "newarticle": "(Nuut)",
        "newarticletext": "Hierdie bladsy bestaan nie.\nTik iets in die invoerboks hier onder om 'n nuwe bladsy te skep. Meer inligting is op die [$1 hulpbladsy] beskikbaar.\nAs u per ongeluk hier uitgekom het, gebruik u blaaier se '''terug'''-knoppie.",
-       "anontalkpagetext": "----''Hierdie is die besprekingsblad vir 'n anonieme gebruiker wat nog nie 'n gebruiker geskep het nie, of wat dit nie gebruik nie.\nDaarom moet ons sy/haar numeriese IP-adres vir identifikasie gebruik.\nSó 'n adres kan deur verskeie gebruikers gedeel word.\nIndien u 'n anonieme gebruiker is wat voel dat ontoepaslike kommentaar teen u gerig is, [[Special:CreateAccount|skep 'n gebruiker]] of [[Special:UserLogin|meld aan]] om verwarring met ander anonieme gebruikers te voorkom.''",
+       "anontalkpagetext": "----\n<em>Hierdie is die besprekingsblad vir 'n anonieme gebruiker wat nog nie 'n rekening geskep het nie, of wat dit nie gebruik nie.</em>\nDaarom moet ons sy/haar numeriese IP-adres vir identifikasie gebruik.\nSó 'n adres kan deur verskeie gebruikers gedeel word.\nIndien u 'n anonieme gebruiker is wat voel dat ontoepaslike kommentaar teen u gerig is, [[Special:CreateAccount|skep gerus 'n rekening]] of [[Special:UserLogin|meld aan]] om verwarring met ander anonieme gebruikers te voorkom.",
        "noarticletext": "Hierdie bladsy bevat geen teks nie.\nU kan [[Special:Search/{{PAGENAME}}|vir die bladsytitel in ander bladsye soek]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} die verwante logboeke deursoek]\nof [{{fullurl:{{FULLPAGENAME}}|action=edit}} hierdie bladsy wysig]</span>.",
        "noarticletext-nopermission": "Hierdie bladsy bevat geen teks nie.\nU kan vir die term [[Special:Search/{{PAGENAME}}|in ander bladsye soek]] of\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} die verwante logboeke deursoek]</span>, maar u kan nie die bladsy skep nie.",
        "missing-revision": "Die weergawe #$1 van die bladsy \"{{FULLPAGENAME}} bestaan nie.\n\nDit word meestal veroorsaak deur die volg van 'n verouderde verwysing na 'n bladsy wat verwyder is.\nMeer gegewens kan moontlik in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} skraplogboek] gevind word.",
        "editundo": "maak ongedaan",
        "diff-empty": "(Geen verskil)",
        "diff-multi-sameuser": "({{PLURAL:$1|Een wysiging tussenin|$1 wysigings tussenin}} deur dieselfde gebruiker nie gewys nie)",
+       "diff-multi-otherusers": "({{PLURAL:$1|Een wysiging tussenin|$1 wysigings tussenin}} deur {{PLURAL:$2|een ander gebruiker|$2 gebruikers}} nie gewys nie)",
        "diff-multi-manyusers": "({{PLURAL:$1|Een wysiging tussenin|$1 wysigings tussenin}} deur meer as $2 {{PLURAL:$2|gebruiker|gebruikers}} nie gewys nie)",
        "difference-missing-revision": "{{PLURAL:$2|'n Weergawe|$2 weergawes}} van die verskil ($1) {{PLURAL:$2|is|is}} nie gevind nie.\n\nDit word meestal veroorsaak deur die volg van 'n verouderde verwysing na 'n bladsy wat verwyder is.\nDetails kan in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} skraplogboek] gevind word.",
        "searchresults": "Soekresultate",
        "booksources-text": "Hieronder is 'n lys van webtuistes wat nuwe en gebruikte boeke verkoop, en dalk meer inligting oor die boeke waarna u soek kan bevat:",
        "booksources-invalid-isbn": "Die ingevoerde ISBN-kode blyk asof dit ongeldig is; maak asseblief seker dat u dit sonder fout oorgekopiëer het vanaf die oorspronklike bron.",
        "specialloguserlabel": "Uitvoerende gebruiker:",
-       "speciallogtitlelabel": "Teiken (bladsy of gebruiker):",
+       "speciallogtitlelabel": "Teiken (titel of {{ns:user}}:gebruiker vir gebruiker):",
        "log": "Logboeke",
        "logeventslist-submit": "Wys",
        "all-logs-page": "Alle openbare logboeke",
        "tooltip-feed-rss": "RSS-voed vir hierdie bladsy",
        "tooltip-feed-atom": "Atoomvoer vir hierdie bladsy",
        "tooltip-t-contributions": "Bekyk 'n lys van bydraes deur {{GENDER:$1|hierdie gebruiker}}",
-       "tooltip-t-emailuser": "Stuur 'n e-pos aan hierdie gebruiker",
+       "tooltip-t-emailuser": "Stuur 'n e-pos aan {{GENDER:$1|hierdie gebruiker}}",
        "tooltip-t-upload": "Laai lêers op",
        "tooltip-t-specialpages": "'n Lys van al die spesiale bladsye",
        "tooltip-t-print": "Drukbare weergawe van hierdie bladsy",
        "pageinfo-length": "Bladsylengte (in grepe)",
        "pageinfo-article-id": "Bladsy-ID",
        "pageinfo-language": "Taal vir die bladsy",
+       "pageinfo-content-model": "Bladsy se inhoudmodel",
        "pageinfo-content-model-change": "wysig",
        "pageinfo-robot-policy": "Status vir soekenjins",
        "pageinfo-robot-index": "Toegestaan",
index 7829324..2a8a97b 100644 (file)
@@ -77,9 +77,9 @@
        "tog-underline": "سطر تحت الوصلات:",
        "tog-hideminor": "أخف التعديلات الطفيفة في أحدث التغييرات",
        "tog-hidepatrolled": "أخف التعديلات المراجعة في أحدث التغييرات",
-       "tog-newpageshidepatrolled": "أخÙ\81 Ø§Ù\84صÙ\81حات Ø§Ù\84Ù\85عاÙ\8aÙ\86ة من قائمة الصفحات الجديدة",
+       "tog-newpageshidepatrolled": "أخÙ\81 Ø§Ù\84صÙ\81حات Ø§Ù\84Ù\85راجعة من قائمة الصفحات الجديدة",
        "tog-hidecategorization": "أخف تصنيف الصفحات",
-       "tog-extendwatchlist": "Ù\85دد قائمة المراقبة لتعرض كل التغييرات، وليس أحدثها فقط",
+       "tog-extendwatchlist": "Ù\88سع قائمة المراقبة لتعرض كل التغييرات، وليس أحدثها فقط",
        "tog-usenewrc": "طي التغييرات حسب الصفحة في أحدث التغييرات وقائمة المراقبة",
        "tog-numberheadings": "ترقيم العناوين تلقائيا",
        "tog-showtoolbar": "إظهار شريط التحرير",
@@ -89,8 +89,8 @@
        "tog-watchdefault": "أضف الصفحات والملفات التي أعدلها إلى قائمة مراقبتي",
        "tog-watchmoves": "أضف الصفحات والملفات التي أنقلها إلى قائمة مراقبتي",
        "tog-watchdeletion": "أضف الصفحات والملفات التي أحذفها إلى قائمة مراقبتي",
-       "tog-watchuploads": "أضÙ\81 Ø§Ù\84Ù\85Ù\84Ù\81ات Ø§Ù\84جدÙ\8aدة Ø§Ù\84تÙ\8a Ø±Ù\81عتها إلى قائمة مراقبتي",
-       "tog-watchrollback": "أضÙ\81 Ø¥Ù\84Ù\89 Ù\82ائÙ\85Ø© Ù\85راÙ\82بتÙ\8a Ø§Ù\84صÙ\81حات Ø§Ù\84تÙ\8a Ù\83Ù\86ت Ø£Ø¬Ø±Ù\8aت Ù\81Ù\8aÙ\87ا Ø§Ø³ØªØ±Ø¬Ø§Ø¹Ø§Øª",
+       "tog-watchuploads": "أضÙ\81 Ø§Ù\84Ù\85Ù\84Ù\81ات Ø§Ù\84جدÙ\8aدة Ø§Ù\84تÙ\8a Ø£Ø±Ù\81عها إلى قائمة مراقبتي",
+       "tog-watchrollback": "أضÙ\81 Ø§Ù\84صÙ\81حات Ø§Ù\84تÙ\8a Ø£Ø¬Ø±Ù\8a Ø¹Ù\84Ù\8aÙ\87ا Ø§Ø³ØªØ±Ø¬Ø§Ø¹Ø§Øª Ø¥Ù\84Ù\89 Ù\82ائÙ\85Ø© Ù\85راÙ\82بتÙ\8a",
        "tog-minordefault": "أشِّر كل التعديلات على أنها طفيفة مبدئيا",
        "tog-previewontop": "أظهر معاينة النص فوق صندوق التحرير",
        "tog-previewonfirst": "أظهر معاينة مع أول تعديل",
        "tog-watchlisthideown": "أخف تعديلاتي من قائمة المراقبة",
        "tog-watchlisthidebots": "أخف تعديلات البوتات من قائمة المراقبة",
        "tog-watchlisthideminor": "أخف التعديلات الطفيفة من قائمة المراقبة",
-       "tog-watchlisthideliu": "أخف تعديلات المستخدمين المسجلين في قائمة المراقبة\n\n\nإخفاء التعديلات التي كتبها تسجيل الدخول للمستخدمين من قائمة المراقبة",
+       "tog-watchlisthideliu": "أخف تعديلات المستخدمين المسجلين في قائمة المراقبة",
        "tog-watchlistreloadautomatically": "أعد تحميل قائمة المراقبة بصفة آلية حينما يتغير مرشح ما (يتطلب جافاسكربت)",
        "tog-watchlisthideanons": "أخف تعديلات المستخدمين المجهولين في قائمة المراقبة",
        "tog-watchlisthidepatrolled": "أخف التعديلات المراجعة في قائمة المراقبة",
        "tog-ccmeonemails": "أرسل إلي نسخا من الرسائل الإلكترونية التي أرسلها إلى المستخدمين الآخرين",
        "tog-diffonly": "لا تعرض محتوى الصفحة أسفل الفرق",
        "tog-showhiddencats": "أظهر التصنيفات المخفية",
-       "tog-norollbackdiff": "لا تظهر الفروق بعد إجراء التراجع",
+       "tog-norollbackdiff": "لا تظهر الفروق بعد إجراء استرجاع",
        "tog-useeditwarning": "حذّرني عندما أغادر تحرير صفحة فيها تغييرات لم أحفظها",
-       "tog-prefershttps": "دائÙ\85ا Ø§Ø³ØªØ®Ø¯Ù\85 اتصالا آمنا عند تسجيل الدخول",
+       "tog-prefershttps": "استخدÙ\85 Ø¯Ø§Ø¦Ù\85ا اتصالا آمنا عند تسجيل الدخول",
        "underline-always": "دائما",
        "underline-never": "أبدا",
        "underline-default": "وفق المظهر أو المتصفح",
        "oct": "تشرين الأول",
        "nov": "تشرين الثاني",
        "dec": "كانون الأول",
-       "january-date": "يناير/كانون الثاني $1",
-       "february-date": "فبراير/شباط $1",
-       "march-date": "مارس/آذار $1",
-       "april-date": "أبريل/نيسان $1",
-       "may-date": "مايو/أيار $1",
-       "june-date": "يونيو/حزيران $1",
-       "july-date": "يوليو/تموز $1",
-       "august-date": "أغسطس/آب $1",
-       "september-date": "سبتمبر/أيلول $1",
-       "october-date": "أكتوبر/تشرين الأول $1",
-       "november-date": "نوفمبر/تشرين الثاني $1",
-       "december-date": "ديسمبر/كانون الأول $1",
+       "january-date": "$1 يناير",
+       "february-date": "$1 فبراير",
+       "march-date": "$1 مارس",
+       "april-date": "$1 أبريل",
+       "may-date": "$1 مايو",
+       "june-date": "$1 يونيو",
+       "july-date": "$1 يوليو",
+       "august-date": "$1 أغسطس",
+       "september-date": "$1 سبتمبر",
+       "october-date": "$1 أكتوبر",
+       "november-date": "$1 نوفمبر",
+       "december-date": "$1 ديسمبر",
        "period-am": "صباحًا",
        "period-pm": "مساءً",
        "pagecategories": "{{PLURAL:$1|بلا تصنيف|تصنيف|تصنيفان|تصنيفات}}",
        "category_header": "صفحات تصنيف «$1»",
        "subcategories": "تصنيفات فرعية",
        "category-media-header": "ملفات تصنيف \"$1\"",
-       "category-empty": "هذا التصنيف لا يحتوي حالياً على أي صفحات أو ملفات.",
+       "category-empty": "<em>هذا التصنيف لا يحتوي حالياً على أي صفحات أو ملفات.</em>",
        "hidden-categories": "{{PLURAL:$1|لا تصنيفات مخفية|تصنيف مخفي|تصنيفان مخفيان|تصنيفات مخفية}}",
        "hidden-category-category": "تصنيفات مخفية",
        "category-subcat-count": "{{PLURAL:$2|هذا التصنيف يحوي التصنيف الفرعي التالي|هذا التصنيف يحوي {{PLURAL:$1||التصنيف الفرعي|تصنيفين فرعيين|$1 تصنيفات فرعية}}، من إجمالي $2.}}",
        "anontalk": "نقاش",
        "navigation": "تصفح",
        "and": "&#32;و",
-       "qbfind": "جد",
-       "qbbrowse": "تصفح",
-       "qbedit": "عدل",
-       "qbpageoptions": "هذه الصفحة",
-       "qbmyoptions": "صفحاتي",
        "faq": "الأسئلة المتكررة",
-       "faqpage": "Project:أسئلة متكررة",
        "actions": "أفعال",
        "namespaces": "نطاقات",
        "variants": "المتغيرات",
        "history": "تاريخ الصفحة",
        "history_short": "التاريخ",
        "history_small": "تاريخ",
-       "updatedmarker": "عدلت منذ زيارتي الأخيرة",
+       "updatedmarker": "عُدلت منذ زيارتي الأخيرة",
        "printableversion": "نسخة للطباعة",
        "permalink": "رابط دائم",
        "print": "اطبع",
        "edit-local": "تعديل الوصف المحلي",
        "create": "أنشئ",
        "create-local": "أضف وصفا محليا",
-       "editthispage": "عدل هذه الصفحة",
-       "create-this-page": "أنشئ صفحة بهذا العنوان",
        "delete": "حذف",
-       "deletethispage": "احذف هذه الصفحة",
-       "undeletethispage": "استرجع هذه الصفحة",
        "undelete_short": "استرجاع {{PLURAL:$1||تعديل واحد|تعديلين|$1 تعديلات|$1 تعديلاً|$1 تعديل}}",
        "viewdeleted_short": "استعرض {{PLURAL:$1||تعديل واحد|تعديلين|$1 تعديلات|$1 تعديلاً|$1 تعديل}}",
        "protect": "حماية",
        "protect_change": "غير",
-       "protectthispage": "احم هذه الصفحة",
        "unprotect": "غير الحماية",
-       "unprotectthispage": "غير حماية هذه الصفحة",
        "newpage": "صفحة جديدة",
-       "talkpage": "ناقش هذه الصفحة",
        "talkpagelinktext": "نقاش",
        "specialpage": "صفحة خاصة",
        "personaltools": "أدوات شخصية",
-       "articlepage": "اعرض صفحة المحتوى",
        "talk": "نقاش",
        "views": "معاينة",
        "toolbox": "أدوات",
        "tool-link-userrights": "تغيير مجموعات {{GENDER:$1|المستخدم|المستخدمة}}",
        "tool-link-userrights-readonly": "عرض مجموعات {{GENDER:$1|المستخدم|المستخدمة}}",
        "tool-link-emailuser": "أرسل رسالة {{GENDER:$1|لهذا المستخدم|لهذه المستخدمة}}",
-       "userpage": "طالع صفحة المستخدم",
-       "projectpage": "طالع صفحة المشروع",
        "imagepage": "طالع صفحة الملف",
        "mediawikipage": "طالع صفحة الرسالة",
        "templatepage": "طالع صفحة القالب",
        "redirectedfrom": "(بالتحويل من $1)",
        "redirectpagesub": "صفحة تحويل",
        "redirectto": "تحويل إلى",
-       "lastmodifiedat": "آخر تعديل لهذه الصفحة كان يوم $1 الساعة $2.",
+       "lastmodifiedat": "آخر تعديل لهذه الصفحة كان يوم $1، الساعة $2.",
        "viewcount": "{{PLURAL:$1|لم تعرض هذه الصفحة أبدا|تم عرض هذه الصفحة مرة واحدة|تم عرض هذه الصفحة مرتين|تم عرض هذه الصفحة $1 مرات|تم عرض هذه الصفحة $1 مرة}}.",
        "protectedpage": "صفحة محمية",
        "jumpto": "اذهب إلى:",
        "jumptonavigation": "تصفح",
        "jumptosearch": "ابحث",
-       "view-pool-error": "عذراØ\8c Ø§Ù\84Ø®Ù\88ادÙ\8aÙ\85 Ù\85Ù\86Ù\87Ù\83Ø© Ø­Ø§Ù\84Ù\8aا.\nÙ\8aحاÙ\88Ù\84 Ù\85ستخدÙ\85Ù\88Ù\86 Ù\83ثر Ø§Ù\84Ù\88صÙ\88Ù\84 Ø¥Ù\84Ù\89 Ù\87Ø°Ù\87 Ø§Ù\84صÙ\81حة.\nÙ\85Ù\86 Ù\81ضÙ\84Ù\83 ØªÙ\85Ù\87Ù\91Ù\84 Ù\82Ù\84Ù\8aÙ\84ا Ù\82بÙ\84 Ù\85حاÙ\88Ù\84Ø© Ø§Ù\84Ù\88صÙ\88Ù\84 Ø¥Ù\84Ù\89 Ù\87Ø°Ù\87 Ø§Ù\84صÙ\81حة Ù\85جددا.\n\n$1",
-       "generic-pool-error": "عذرا، الخوادم مشغولة حاليا لوجود مستخدمون كثر يطلبون عرض هذا المورد. انتظر قليلا وأعد المحاولة.",
+       "view-pool-error": "عذرا، الخوادم منهكة حاليا.\nيحاول مستخدمون كثر الوصول إلى هذه الصفحة.\nمن فضلك تمهّل قليلا قبل محاولة الوصول إلى هذه الصفحة مجددا.\n\n$1",
+       "generic-pool-error": "عذرا، الخوادم منهكة حاليا.\nيحاول مستخدمون كثر الوصول إلى هذا المورد.\nمن فضلك تمهّل قليلا قبل محاولة الوصول إلى هذا المورد مجددا.",
        "pool-timeout": "انتهت مهلة القفل",
        "pool-queuefull": "الطابور ملآن",
        "pool-errorunknown": "خطأ غير معروف",
        "portal-url": "Project:بوابة المجتمع",
        "privacy": "سياسة الخصوصية",
        "privacypage": "Project:سياسة الخصوصية",
-       "badaccess": "عطÙ\84 في الصلاحيات",
+       "badaccess": "خطأ في الصلاحيات",
        "badaccess-group0": "غير مصرّح لك بتنفيذ الفعل الذي اعتزمته.",
        "badaccess-groups": "الفعل الذي اعتزمته مقصور على المستخدمين أعضاء {{PLURAL:$2||المجموعة|إحدى المجموعتين|إحدى المجموعات}}: $1.",
        "versionrequired": "تلزم الإصدارة $1 من ميدياويكي",
        "versionrequiredtext": "تلزم الإصدارة $1 من ميدياويكي لاستعمال هذه الصفحة. طالع [[Special:Version|صفحة معلومات الإصدارة]]",
        "ok": "موافق",
        "retrievedfrom": "مجلوبة من \"$1\"",
-       "youhavenewmessages": "{{PLURAL:$3|لك}} $1 ($2).",
+       "youhavenewmessages": "{{PLURAL:$3|لديك}} $1 ($2).",
        "youhavenewmessagesfromusers": "{{PLURAL:$4|لديك}} $1 من {{PLURAL:$3|مستخدم واحد|مستخدم واحد|مستخدمين اثنين|$3 مستخدمين|$3 مستخدما|$3 مستخدم}} ($2).",
        "youhavenewmessagesmanyusers": "لديك $1 من مستخدمين كثر ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|رسالة جديدة|999=رسائل جديدة}}",
        "feed-unavailable": "التلقيمات غير متوفرة",
        "site-rss-feed": "تلقيمة آر إس إس $1",
        "site-atom-feed": "تلقيمة أتوم $1",
-       "page-rss-feed": "تلقيمة آر إس إس \"$1\"",
-       "page-atom-feed": "تلقيمة أتوم \"$1\"",
+       "page-rss-feed": "تلقيمة آر إس إس لصفحة \"$1\"",
+       "page-atom-feed": "تلقيمة أتوم لصفحة \"$1\"",
        "feed-atom": "أتوم",
        "feed-rss": "أر إس إس",
        "red-link-title": "$1 (الصفحة غير موجودة)",
        "nosuchactiontext": "الفعل المحدد بواسطة المسار غير صحيح.\nربما تكون قد كتبت المسار بطريقة غير صحيحة، أو اتبعت رابطا غير صحيح.\nو قد يكون مرجع هذا علة في {{SITENAME}}.",
        "nosuchspecialpage": "لا توجد صفحة خاصة بهذا الاسم",
        "nospecialpagetext": "<strong>لقد طلبت صفحة خاصة غير صحيحة.</strong>\n\nقائمة الصفحات الخاصة موجودة في [[Special:SpecialPages|{{int:specialpages}}]].",
-       "error": "عطÙ\84",
-       "databaseerror": "عطÙ\84 في قاعدة البيانات",
+       "error": "خطأ",
+       "databaseerror": "خطأ في قاعدة البيانات",
        "databaseerror-text": "حدث خطأ في إستعلام قاعدة البيانات. قد يشير هذا إلى خطأ في البرنامج.",
        "databaseerror-textcl": "حدث خطأ في إستعلام قاعدة البيانات.",
        "databaseerror-query": "استعلام: $1",
        "searchprofile-everything": "الكل",
        "searchprofile-advanced": "متقدم",
        "searchprofile-articles-tooltip": "ابحث في $1",
-       "searchprofile-images-tooltip": "ابحث عن الصور",
+       "searchprofile-images-tooltip": "ابحث عن الملفات",
        "searchprofile-everything-tooltip": "ابحث في كل المحتوى (شاملا صفحات النقاش)",
        "searchprofile-advanced-tooltip": "ابحث في النطاقات المخصصة",
        "search-result-size": "$1 ({{PLURAL:$2|لا كلمات|كلمة واحدة|كلمتان|$2 كلمات|$2 كلمة}})",
        "recentchanges-submit": "أظهر",
        "rcfilters-activefilters": "المرشحات النشطة",
        "rcfilters-quickfilters": "إعدادات الترشيح المحفوظة",
+       "rcfilters-quickfilters-placeholder-title": "لا وصلات تم حفظها بعد",
        "rcfilters-savedqueries-defaultlabel": "مرشحات محفوظة",
        "rcfilters-savedqueries-rename": "أعد التسمية",
        "rcfilters-savedqueries-setdefault": "حفظ كقيمة افتراضية",
        "rcfilters-filter-watchlist-notwatched-description": "كل شيء باستثناء التغييرات في صفحات قائمة مراقبتك.",
        "rcfilters-filtergroup-changetype": "نوع التغيير",
        "rcfilters-filter-pageedits-label": "تعديلات الصفحة",
-       "rcfilters-filter-pageedits-description": "التعديلات لمحتوى الويكي، النقاشات، وصوفات التصنيفات....",
+       "rcfilters-filter-pageedits-description": "التعديلات لمحتوى الويكي، النقاشات، وصوفات التصنيفات",
        "rcfilters-filter-newpages-label": "إنشاء الصفحات",
        "rcfilters-filter-newpages-description": "التعديلات التي تصنع صفحات جديدة.",
        "rcfilters-filter-categorization-label": "تغييرات التصنيفات",
        "rcfilters-filter-categorization-description": "سجلات إضافة أو إزالة الصفحات من التصنيفات.",
        "rcfilters-filter-logactions-label": "الأفعال المسجلة",
-       "rcfilters-filter-logactions-description": "الأفعال الإدارية، إنشاء الحسابات، حذف الصفحات، عمليات الرفع....",
+       "rcfilters-filter-logactions-description": "الأفعال الإدارية، إنشاء الحسابات، حذف الصفحات، عمليات الرفع",
        "rcfilters-hideminor-conflicts-typeofchange-global": "مرشح \"التعديلات الطفيفة\" يتعارض مع مرشح واحد أو أكثر من مرشحات نوع التغيير، وذلك لأن بعض أنواع التغيير لا يمكن التعليم عليها ك\"طفيفة.\" المرشحات المتعارضة معلم عليها في مساحة المرشحات النشطة بالأعلى.",
        "rcfilters-hideminor-conflicts-typeofchange": "بعض أنواع التغييرات لا يمكن التعليم عليها ك\"طفيفة،\" لذا فهذا المرشح يتعارض مع مرشحات نوع التغيير التالية: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "مرشح نوع التغيير هذا يتعارض مع مرشح \"التعديلات الطفيفة\". بعض أنواع التغييرات لا يمكن التعليم عليها ك\"طفيفة.\"",
        "listfiles-latestversion-no": "لا",
        "file-anchor-link": "ملف",
        "filehist": "تاريخ الملف",
-       "filehist-help": "اضغط على وقت/زمن لرؤية الملف كما بدا في هذا الزمن.",
+       "filehist-help": "اضغط على زمن/تاريخ لرؤية الملف كما بدا في هذا الزمن.",
        "filehist-deleteall": "احذف الكل",
        "filehist-deleteone": "حذف",
        "filehist-revert": "استرجع",
        "filehist-current": "حالي",
-       "filehist-datetime": "وقت/زمن",
+       "filehist-datetime": "زمن/تاريخ",
        "filehist-thumb": "صورة مصغرة",
        "filehist-thumbtext": "تصغير للنسخة بتاريخ $1",
        "filehist-nothumb": "لا تصغير",
        "autoblocklist-submit": "بحث",
        "autoblocklist-legend": "قائمة المنع التلقائي",
        "autoblocklist-localblocks": "{{PLURAL:$1|المنع التلقائي المحلي|عمليات المنع التلقائي المحلية}}",
+       "autoblocklist-total-autoblocks": "مُجمل الممنوعون تلقائيا: $1",
        "autoblocklist-empty": "قائمة المنع التلقائي فارغة.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|المنع التلقائي الآخر|عمليات المنع التلقائي الأخرى}}",
        "ipblocklist": "المستخدمون الممنوعون",
        "tooltip-pt-login": "يفضل أن تسجل الدخول، لكنه ليس إلزاميا.",
        "tooltip-pt-login-private": "عليك تسجيل الدخول لاستخدام هذه الويكي.",
        "tooltip-pt-logout": "تسجيل الخروج",
-       "tooltip-pt-createaccount": "نشجعك على عمل حساب وتسجيل دخولك; لكنه غير ضروري على اي حال",
+       "tooltip-pt-createaccount": "نشجعك على عمل حساب وتسجيل دخولك؛ لكنه غير ضروري على اي حال",
        "tooltip-ca-talk": "نقاش عن صفحة المحتوى",
        "tooltip-ca-edit": "تعديل هذه الصفحة",
        "tooltip-ca-addsection": "ابدأ قسما جديدا",
        "tooltip-search": "ابحث في {{SITENAME}}",
        "tooltip-search-go": "اذهب إلى صفحة بالاسم نفسه إن وجدت",
        "tooltip-search-fulltext": "ابحث في الصفحات عن هذا النص",
-       "tooltip-p-logo": "الصفحة الرئيسية",
+       "tooltip-p-logo": "زÙ\8fر Ø§Ù\84صÙ\81حة Ø§Ù\84رئÙ\8aسÙ\8aØ©",
        "tooltip-n-mainpage": "زر الصفحة الرئيسية",
        "tooltip-n-mainpage-description": "زر الصفحة الرئيسية",
        "tooltip-n-portal": "حول المشروع، ماذا يمكن أن تفعل، أين يمكن أن تجد ما تحتاجه",
        "tooltip-n-currentevents": "مطالعة سريعة لأهم الأحداث الجارية",
        "tooltip-n-recentchanges": "قائمة أحدث التغييرات في الويكي.",
        "tooltip-n-randompage": "حمل صفحة عشوائية",
-       "tooltip-n-help": "اÙ\84Ù\85Ù\83اÙ\86 Ù\84لمساعدة",
+       "tooltip-n-help": "Ø­Ù\8aØ« ØªØ¬Ø¯ Ø§لمساعدة",
        "tooltip-t-whatlinkshere": "قائمة بكل صفحات الويكي التي تصل هنا",
        "tooltip-t-recentchangeslinked": "أحدث التغييرات في الصفحات الموصولة من هذه الصفحة",
        "tooltip-feed-rss": "تلقيم أر إس إس لهذه الصفحة",
        "pageid": "معرف الصفحة $1",
        "rawhtml-notallowed": "لا يمكن استخدام وسوم &lt;html&gt; خارج الصفحات العادية.",
        "gotointerwiki": "ترك {{SITENAME}}",
-       "gotointerwiki-invalid": "العنوان المحدد كان غير صحيح.",
-       "gotointerwiki-external": "أنت على وشك ترك {{SITENAME}} لزيارة [[$2]] والذي هو موقع منفصل.\n\n[$1 اضغط هنا للاستمرار إلى $1].",
+       "gotointerwiki-invalid": "العنوان المحدد غير صحيح.",
+       "gotointerwiki-external": "أنت على وشك ترك {{SITENAME}} لزيارة [[$2]]، وهو موقع منفصل.\n\n'''[$1 اضغط هنا للاستمرار إلى $1]'''",
        "undelete-cantedit": "أنت لا يمكنك استرجاع هذه الصفحة حيث أنه لا يمكنك تعديل هذه الصفحة.",
-       "undelete-cantcreate": "أنت لا يمكنك استرجاع هذه الصفحة حيث أنه لا توجد صفحة بهذا الاسم وأنت غير مسموح لك بإنشاء هذه الصفحة."
+       "undelete-cantcreate": "أنت لا يمكنك استرجاع هذه الصفحة حيث أنه لا توجد صفحة بهذا الاسم وأنت غير مسموح لك بإنشاء هذه الصفحة.",
+       "pagedata-title": "بيانات الصفحة",
+       "pagedata-bad-title": "عنوان خاطئ: $1."
 }
index beac634..77cc528 100644 (file)
        "anontalk": "Alderique",
        "navigation": "Navegación",
        "and": "&#32;y",
-       "qbfind": "Alcontrar",
-       "qbbrowse": "Navegar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta páxina",
-       "qbmyoptions": "Les mios páxines",
        "faq": "EMF (entrugues más frecuentes)",
-       "faqpage": "Project:FAQ",
        "actions": "Aiciones",
        "namespaces": "Espacios de nome",
        "variants": "Variantes",
        "edit-local": "Editar la descripción llocal",
        "create": "Crear",
        "create-local": "Amestar descripción llocal",
-       "editthispage": "Editar esta páxina",
-       "create-this-page": "Crear esta páxina",
        "delete": "Desaniciar",
-       "deletethispage": "Desaniciar esta páxina",
-       "undeletethispage": "Restaurar esta páxina",
        "undelete_short": "Restaurar {{PLURAL:$1|una edición|$1 ediciones}}",
        "viewdeleted_short": "Ver {{PLURAL:$1|una edición desaniciada|$1 ediciones desaniciaes}}",
        "protect": "Protexer",
        "protect_change": "camudar",
-       "protectthispage": "Protexer esta páxina",
        "unprotect": "Camudar la proteición",
-       "unprotectthispage": "Camudar la proteición d'esta páxina",
        "newpage": "Páxina nueva",
-       "talkpage": "Aldericar sobre esta páxina",
        "talkpagelinktext": "Alderique",
        "specialpage": "Páxina especial",
        "personaltools": "Ferramientes personales",
-       "articlepage": "Ver la páxina de conteníu",
        "talk": "Alderique",
        "views": "Vistes",
        "toolbox": "Ferramientes",
        "tool-link-userrights": "Cambiar los grupos {{GENDER:$1|del usuariu|de la usuaria}}",
        "tool-link-userrights-readonly": "Ver los grupos {{GENDER:$1|del usuariu|de la usuaria}}",
        "tool-link-emailuser": "Unviar un corréu electrónicu a {{GENDER:$1|esti usuariu|esta usuaria}}",
-       "userpage": "Ver la páxina d'usuariu",
-       "projectpage": "Ver la páxina del proyeutu",
        "imagepage": "Ver la páxina del ficheru",
        "mediawikipage": "Ver la páxina del mensaxe",
        "templatepage": "Ver la páxina de plantía",
        "gotointerwiki-invalid": "El títulu especificáu nun ye válidu.",
        "gotointerwiki-external": "Tas a piques de dexar {{SITENAME}} pa visitar [[$2]], que ye un sitiu web distintu.\n\n'''[$1 Siguir a $1]'''",
        "undelete-cantedit": "Nun puedes desfacer el borráu d'esta páxina porque nun tienes permisu pa editala.",
-       "undelete-cantcreate": "Nun puedes desfacer el borráu d'esta páxina porque nun existe nenguna páxina con esti nome y nun tienes permisu pa creala."
+       "undelete-cantcreate": "Nun puedes desfacer el borráu d'esta páxina porque nun existe nenguna páxina con esti nome y nun tienes permisu pa creala.",
+       "pagedata-title": "Datos de la páxina",
+       "pagedata-text": "Esta páxina ufre una interfaz de datos pa les páxines. Escribe'l títulu de la páxina na URL, usando la sintaxis de subpáxina.\n* Aplícase la negociación de conteníu en base a la testera Accept del to cliente. Esto significa que los datos de la páxina van dase nel formatu que prefiera'l to cliente.",
+       "pagedata-not-acceptable": "Nun s'alcontró nengún formatu que coincidiera. Tipos MIME soportaos: $1",
+       "pagedata-bad-title": "Títulu inválidu: $1."
 }
index 6f23131..b915faf 100644 (file)
        "tog-underline": "Kicawetcita ntowapesinihikana:",
        "tog-hideminor": "Ka ki ocitakaniwoki kwekisinihikana nta katcicta aka ka sapinakoki.",
        "tog-hidepatrolled": "Nohwe nta ka ki kweskisinihikateki nama weckat katcicta ka ki aci koski kanawapatcikateki",
-       "tog-newpageshidepatrolled": " Katcicta paskickwemakana ka ki koski aci tapwatcikateki  taci e ici masinateki ocki paskickwemikana",
+       "tog-newpageshidepatrolled": "Katcicta paskickwemakana ka ki koski aci tapwatcikateki  taci e ici masinateki ocki paskickwemikana",
        "tog-hidecategorization": "Katcicta tipanictawin paskickwemikana",
        "tog-extendwatchlist": "Ekoci kaskina kata nokok nohwe nosinesinihan ka kweskisinihikateki ka masinateki aka tepirak nohwe kata nokok aka weckat ka ki otci otamirotakaniwiki.",
+       "tog-usenewrc": "Tatwa paskickwemakan mamowicta ka ki meckotcitakaniwoki  aka weckat kaki otci kweskisinihikateki acit nta nosinesinihikanik.",
        "tog-numberheadings": " Nicike kata masinihikepirik akitasowina  e icinikateki tipanisinihikanica",
        "tog-showtoolbar": "Motena ka maskotikw kata nokoki irapitcitcikana masinihikakan e nisawitakaniwok",
+       "tog-editondblclick": "Nicowaw mamakona kata kweskisinahaman paskickwemakana",
+       "tog-watchcreations": "Ita acotcita nosinesinihikanik paskickwemikana ocki ka ocitaian acit nohwe ka natcipitaman natisinihikaniwoca.",
+       "tog-watchdefault": "Acotcicta paskickemikana nosinesinihikanik acit natisinihikaniwoca ka ki kweskisinahaman",
+       "tog-watchuploads": "Ka natcipitaman ocki natisinihikaniwoca nta ici acotcita nosinesinihikanik",
        "underline-always": "Mocak",
        "underline-never": "Nama wiskat",
        "sunday": "Manactakaniwon",
        "anontalk": "Ka ici arimowaniok",
        "navigation": "Matcecikinikan",
        "and": "&#32;kaie",
-       "qbbrowse": "Nantowepaha",
-       "qbedit": "Meckotcita",
-       "qbpageoptions": "Nohwe paskickwemakan",
-       "qbmyoptions": "Nipaskickwemakana",
        "namespaces": "Ka ici masinasotcik",
        "variants": "Pitoc",
        "navigation-heading": "Matcecikinikana",
        "permalink": "Matakan pamikicikwepitcikanik",
        "print": "Orowipitaman",
        "view": "Tapwatcike",
-       "view-foreign": "Nta ici ntowapata$1",
+       "view-foreign": "Nta ici ntowapata $1",
        "edit": "Meckotcita",
        "create": "Ocita",
        "create-local": "Arimota ke acotcictek",
-       "editthispage": "Mecikotona owe",
-       "create-this-page": "Wita ohwe ka masinatek",
        "delete": "Wepina",
        "protect": "Tacikatek",
        "newpage": "Ocki matcecikinakanik",
        "talk": "Ka ici arimowaniwok",
        "views": "Ke icinakok",
        "toolbox": "Irapitcitcikan",
-       "userpage": "Kitci wapataman nihe masinahikan ka apatak",
-       "projectpage": "Kitci wapataman nehe masinihikan ocki otamirowinik otci",
        "imagepage": "Kitci wapataman nihe masinahikan",
        "otherlanguages": "Kotakahi aiarimowewina",
        "redirectedfrom": "(Taci e kiweckwemakak $1)",
        "badtitle": "nama mia icinikatew",
        "badtitletext": "Nama takon nohwe e icinikatek paskickwemikan, cikoctew,kekotc nama mia ki otci icinikatcikatew e itectamakaniwok nte arimwewinik kekotc nte otamirowinik.\nPotc osam nipira aitisinihikana actetikena nama tca ki actakaniwona tan e icinikatcikateki kekwan.",
        "viewsource": "Nte ici nta kanawapata e otciparik",
+       "viewsource-title": "Nta ici ntowapata $1",
        "yourname": "Icinikasowin:",
        "userlogin-yourname": "Icinikasowin",
        "userlogin-yourname-ph": "Pitakesinaha kit icinikasowin",
        "upload-disallowed-here": "Nama actew  kata meckotanaman.",
        "filedelete": "Wepina $1",
        "filedelete-submit": "Wepina",
+       "mimesearch": "MIME nantona",
        "randompage": "Nakowepitaman",
        "randomincategory-category": "Ka ici arimotcikatek:",
        "randomincategory-submit": "Tapowata",
        "dellogpage": " Nesitc ka wepinikatek kanaweritcikan",
        "deletionlog": "nesitc ka wepinikatek kanaweritcikan",
        "rollbacklink": "e maninakatek",
-       "rollbacklinkcount": " nesitc wepina $1 {{PLURAL:$1|kweskisinikan|kweskisinihikana}}",
+       "rollbacklinkcount": "nesitc wepina $1 {{PLURAL:$1|kweskisinikan|kweskisinihikana}}",
        "protectlogpage": "Nanakatisiwina wapatcikan",
        "restriction-type": "Niheritam:",
        "pagesize": "(irik)",
        "tooltip-ca-talk": "Kecpin wi aimihate awik aniheriw otci",
        "tooltip-ca-edit": "Meckotana ohwe",
        "tooltip-ca-addsection": "Kitcipirin ocki aimihitosinahikan",
-       "tooltip-ca-viewsource": "Nakataweritakon paskickwemikan\n Taci e otcipirik",
+       "tooltip-ca-viewsource": "Nakataweritakon paskickwemikan\nTaci e otcipirik",
        "tooltip-ca-history": "Nictam ka ki itasinahikatek",
        "tooltip-ca-move": "Orinkata owe masinhikan",
        "tooltip-ca-watch": "E ici nosinehaman ici acotcicta paskickwemakan",
        "tooltip-preview": "Mikwetc pitaman e kanawapataman ka ki meckotcitain, epwomici actain pamikicikwepitcikanik.",
        "tooltip-diff": "Nokota nohwe ka ki meckotcisinihaham  masinihikanik",
        "tooltip-rollback": "\"Nakaha\" nikanikatew kotc peikwa e makohotc nohwe makonakan kaskina ka ki meckotcisinihikateki nta paskickwemakanik nohwe ka ki orisinihiketc mamitcit",
-       "tooltip-undo": "\"Nama ntowatc\"nihictamikan nictam meckotcisinihikan minawatc cepirihomikon taci e ici meckotcisinihikaniwok ke ici kanawapataman.Matci kaie ki ka acotcitan kekwan espirik  nta nosem masinihikanik.",
+       "tooltip-undo": "\"Nama ntowatc\" nihictamikan nictam meckotcisinihikan minawatc cepirihomikon taci e ici meckotcisinihikaniwok ke ici kanawapataman.Matci kaie ki ka acotcitan kekwan espirik  nta nosem masinihikanik.",
        "tooltip-summary": "Acta e arimotaman masinihikan apicic",
        "simpleantispam-label": "Ntokiskeritcike piciriwe masinihikan \n\nNte nota <strong>nama kekwan</strong> masinaha ota!",
        "pageinfo-toolboxlink": "Tipatcimo masinahikan",
index e59b05d..c5b80ae 100644 (file)
        "anontalk": "Müzakirə",
        "navigation": "Naviqasiya",
        "and": "&#32;və",
-       "qbfind": "Tap",
-       "qbbrowse": "Gözdən keçir",
-       "qbedit": "Redaktə",
-       "qbpageoptions": "Bu səhifə",
-       "qbmyoptions": "Mənim səhifələrim",
        "faq": "TSS",
-       "faqpage": "Project:TSS",
        "actions": "Hərəkətlər",
        "namespaces": "Adlar fəzası",
        "variants": "Variantlar",
        "edit-local": "Lokal izahı redaktə et",
        "create": "Yarat",
        "create-local": "Lokal izah əlavə et",
-       "editthispage": "Bu səhifəni redaktə et",
-       "create-this-page": "Bu səhifəni yarat",
        "delete": "Sil",
-       "deletethispage": "Bu səhifəni sil",
-       "undeletethispage": "Bu səhifənin silmə əməliyyatını geri qaytar",
        "undelete_short": "$1 {{PLURAL:$1|dəyişikliyi|dəyişiklikləri}} bərpa et",
        "viewdeleted_short": "{{PLURAL:$1|bir silinmiş redaktəyə|$1 silinmiş redaktəyə}}",
        "protect": "Mühafizə et",
        "protect_change": "dəyiş",
-       "protectthispage": "Bu səhifəni mühafizə et",
        "unprotect": "Mühafizəni kənarlaşdır",
-       "unprotectthispage": "Bu səhifənin mühafizəsini kənarlaşdır",
        "newpage": "Yeni səhifə",
-       "talkpage": "Bu səhifəni müzakirə et",
        "talkpagelinktext": "Müzakirə",
        "specialpage": "Xüsusi səhifə",
        "personaltools": "Şəxsi alətlər",
-       "articlepage": "Məqaləni nəzərdən keçir",
        "talk": "Müzakirə",
        "views": "Görünüş",
        "toolbox": "Alətlər",
-       "userpage": "İstifadəçi səhifəsini göstər",
-       "projectpage": "Layihə səhifəsini göstər",
        "imagepage": "Fayl səhifəsini göstər",
        "mediawikipage": "Mesaj səhifəsini göstər",
        "templatepage": "Şablon səhifəsini göstər",
index dd65fc7..b1441ff 100644 (file)
        "anontalk": "دانیشیق",
        "navigation": "دوْلانماق",
        "and": "&#32;و",
-       "qbfind": "تاپ",
-       "qbbrowse": "گؤزدن گئچیرت",
-       "qbedit": "دَییشدیر",
-       "qbpageoptions": "بۇ صفحه‌‌",
-       "qbmyoptions": "صفحه‌‌لریم",
        "faq": "چوْخ سوْروشولان سوْال‌لار",
-       "faqpage": "Project:چوْخ سوْروشولان سوْال‌لار",
        "actions": "چالیشمالار",
        "namespaces": "آد فضالاری",
        "variants": "دئییش‌لر",
        "edit-local": "یئرلی آچیقلامالاری دَییشدیر",
        "create": "یارات",
        "create-local": "یئرلی آچیقلاما آرتیر",
-       "editthispage": "بۇ صحیفه‌‌نی دَییشدیر",
-       "create-this-page": "بۇ صفحه‌‌نی يارات",
        "delete": "سیل",
-       "deletethispage": "بۇ صحیفه‌‌نی سیل",
-       "undeletethispage": "بۇ صحیفه‌نی دیریلت",
        "undelete_short": "{{PLURAL:$1|بیر دَییشیکلیگی|$1 دَییشیکلیگی}} قایتار",
        "viewdeleted_short": "{{PLURAL:$1|بیر|$1}} سیلینمیش دَییشیکلیگه باخ",
        "protect": "قوْرو",
        "protect_change": "ديَیشدیر",
-       "protectthispage": "بۇ صحیفه‌‌نی قوْرو",
        "unprotect": "قوْروماغی دَییشدیر",
-       "unprotectthispage": "بۇ صحیفه‌نین قوْروماسینی دَییشدیر",
        "newpage": "يئنی صفحه‌‌",
-       "talkpage": "بۇ صحیفه‌نی دانیش",
        "talkpagelinktext": "دانیشیق",
        "specialpage": "اؤزل صفحه",
        "personaltools": "شخصی آراجلار",
-       "articlepage": "ایچری‌لی صحیفه‌یه باخ",
        "talk": "دانیشیق",
        "views": "گؤرونوشلر",
        "toolbox": "آلتلر",
-       "userpage": "ایشلدن صفحه‌‌سینه باخ",
-       "projectpage": "پروژه صحیفه‌سینه باخ",
        "imagepage": "فایل صحیفه‌سینه باخ",
        "mediawikipage": "مئساژ صحیفه‌سینه باخ",
        "templatepage": "شابلون صحیفه‌سینه باخ",
        "specialpages-group-maintenance": "ساخلانیش گوزاریشلری",
        "specialpages-group-other": "آیری اؤزل صفحه‌لر",
        "specialpages-group-login": "گیریش / حساب یارات",
-       "specialpages-group-changes": "سون دییشیک‌لیک‌لر و قئیدلر",
+       "specialpages-group-changes": "سون دییشیک‌لیک‌لر و ژورناللار",
        "specialpages-group-media": "مئدیا مروزه‌لری و یوکلمه‌لر",
        "specialpages-group-users": "ایشلدن‌لر و حاقلار",
        "specialpages-group-highuse": "ان چوْخ ایشلدیلمیش صفحه‌لر",
index 2f759d6..68e9727 100644 (file)
        "anontalk": "Әңгәмә",
        "navigation": "Төп йүнәлештәр",
        "and": "&#32;һәм",
-       "qbfind": "Эҙләү",
-       "qbbrowse": "Байҡарға",
-       "qbedit": "Үҙгәртергә",
-       "qbpageoptions": "Был бит",
-       "qbmyoptions": "Биттәрем",
        "faq": "ЙБҺ",
-       "faqpage": "Project:ЙБҺ",
        "actions": "Ғәмәлдәр",
        "namespaces": "Исем арауыҡтары",
        "variants": "Варианттар",
        "edit-local": "Локаль тасуирламаны үҙгәртергә",
        "create": "Төҙөргә",
        "create-local": "Локаль тасуирлама өҫтәргә",
-       "editthispage": "Был мәҡәләне үҙгәртергә",
-       "create-this-page": "Был битте яһарға",
        "delete": "Юҡ  итергә",
-       "deletethispage": "Был битте юйырға",
-       "undeletethispage": "Юйылған битте ҡабат тергеҙеү",
        "undelete_short": "$1 {{PLURAL:$1|үҙгәртеүҙе}} тергеҙергә",
        "viewdeleted_short": "{{PLURAL:$1|1=1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}} ҡарау",
        "protect": "Һаҡларға",
        "protect_change": "үҙгәртергә",
-       "protectthispage": "Был битте һаҡларға",
        "unprotect": "Һаҡлауҙы үҙгәртергә",
-       "unprotectthispage": "Был биттең һаҡлауын үҙгәртергә",
        "newpage": "Яңы бит",
-       "talkpage": "Фекер алышыу",
        "talkpagelinktext": "әңг.",
        "specialpage": "Ярҙамсы бит",
        "personaltools": "Шәхси ҡоралдар",
-       "articlepage": "Мәҡәләне ҡарап сығырға",
        "talk": "Әңгәмә",
        "views": "Ҡарауҙар",
        "toolbox": "Ҡоралдар",
        "tool-link-userrights": "{{GENDER:$1|Ҡатнашыусы}} төркөмдәрен үҙгәртергә",
        "tool-link-userrights-readonly": "{{GENDER:$1|Ҡатнашыусы|Ҡатнашыулар}} төркөмдәрен ҡарарға",
        "tool-link-emailuser": "{{GENDER:$1|Ҡатнашыусыға}} хат яҙырға",
-       "userpage": "Ҡулланыусы битен ҡарарға",
-       "projectpage": "Проект битен ҡарарға",
        "imagepage": "Файл битен ҡарарға",
        "mediawikipage": "Хәбәрҙәр битен ҡарарға",
        "templatepage": "Ҡалып битен ҡарарға",
        "redirectedfrom": "($1 битенән йүнәлтелде)",
        "redirectpagesub": "Йүнәлтеү бите",
        "redirectto": "Йүнәлтергә:",
-       "lastmodifiedat": "Был биттең һуңғы тапҡыр үҙгәртелеү ваҡыты: $2, $1 .",
+       "lastmodifiedat": "Был бит һуңғы тапҡыр $2 $1 үҙгәртелгән.",
        "viewcount": "Был биткә $1 {{PLURAL:$1|тапҡыр}} мөрәжәғәт иттеләр.",
        "protectedpage": "Һаҡланған бит",
        "jumpto": "Унда күсергә:",
        "userpage-userdoesnotexist": "«<nowiki>$1</nowiki>» иҫәп яҙыуы юҡ. Һеҙ бындай бит яһарға йәки битте үҙгәртергә теләһәгеҙ яңынан тикшерегеҙ.",
        "userpage-userdoesnotexist-view": "«$1» исемле иҫәп яҙыуы юҡ.",
        "blocked-notice-logextract": "Хәҙергә был ҡатнашыусы ябылған. Һуңғы ҡулланыусы ябыу яҙмаһы:",
-       "clearyourcache": "'''Иҫкәрмә:''' Битте һаҡлағандан һуң үҙгәртеүҙерегеҙ күренһен өсөн, браузерығыҙҙың кэшын таҙартығыҙ.\n* '''Firefox / Safari:''' ''Shift'' төймәһенә баҫып, ебәрмәйенсә, ''Яңыртырға'' төймәһенә баҫығыҙ, йәки ''Ctrl-F5'' йә ''Ctrl-R'' (Mac-та ''⌘-R'') төймәләренә баҫығыҙ\n* '''Google Chrome:''' ''Ctrl-Shift-R'' төймәһенә баҫығыҙ (Mac-та ''⌘-Shift-R'')\n* '''Internet Explorer:''' ''Ctrl'' төймәһенә баҫып, ебәрмәйенсә, ''Яңыртырға'' төймәһенә баҫығыҙ, йәки ''Ctrl-F5'' төймәһенә баҫығыҙ\n* '''Opera:''' ''Ҡоралдар → Көйләүҙәр' менюһында кеш таҙартыуҙы һайлағыҙ",
+       "clearyourcache": "<strong>Иҫкәрмә:</strong> Битте һаҡлағандан һуң үҙгәртеүҙерегеҙ күренһен өсөн, браузерығыҙҙың кэшын таҙартырға кәрәктер.\n* <strong>Firefox / Safari:</strong> <em>Shift</em> төймәһенә баҫып, ебәрмәйенсә, <em>Яңыртырға</em> төймәһенә баҫығыҙ, йәки <em>Ctrl-F5</em> йә <em>Ctrl-R</em> (Mac-та <em>⌘-R</em>) төймәләренә баҫығыҙ\n* <strong>Google Chrome:</strong> <em>Ctrl-Shift-R </em>төймәһенә баҫығыҙ (Mac-та <em>⌘-Shift-R</em>)\n* <strong>Internet Explorer:</strong> <em>Ctrl </em>төймәһенә баҫып, ебәрмәйенсә, <em>Яңыртырға</em>төймәһенә баҫығыҙ, йәки <em>Ctrl-F5 </em>төймәһенә баҫығыҙ\n* <strong>Opera:</strong> <em>Ҡоралдар → Көйләүҙәр</em> (Mac-та <em>Opera → Көйләүҙәр</em>) бүлегенә күсегеҙ,  һуңынан <em>Хәүефһеҙлек → Кереүҙәр тарихын таҙартыу → Рәсемдәр кэшлау</em> менюһында кеш таҙартыуҙы һайлағыҙ",
        "usercssyoucanpreview": "'''Кәңәш:''' Яңы CSS-файлды һаҡларҙан алда тикшерер өсөн \"{{int:showpreview}}\" төймәһенә баҫығыҙ.",
        "userjsyoucanpreview": "'''Кәңәш:''' Яңы JS-файлды һаҡларҙан алда тикшерер өсөн \"{{int:showpreview}}\" төймәһенә баҫығыҙ.",
        "usercsspreview": "'''Был бары тик CSS файлды алдан ҡарау ғына, ул әле һаҡланмаған!'''",
        "page_first": "беренсе",
        "page_last": "аҙаҡҡы",
        "histlegend": "Айырма һайлау: сағыштырырға теләгән 2 версияны һайлап Enter-ға йәки биттең аҫҡы өлөшөндәге төймәгә баҫығыҙ.<br />\nАңлатмалар: '''({{int:cur}})''' — хәҙерге версиянан айырма, '''({{int:last}})''' — алдағы версиянан айырма, '''{{int:minoreditletter}}''' — әҙ үҙгәреш яһалған.",
-       "history-fieldset-title": "Тарихты ҡарарға",
+       "history-fieldset-title": "Үҙгәртеүҙәрҙе эҙләү",
        "history-show-deleted": "Юйылғандар ғына",
        "histfirst": "Иң иҫкеләр",
        "histlast": "Иң һуңғылар",
        "rcshowhidecategorization": "Биттәр категориялаштырыуын $1",
        "rcshowhidecategorization-show": "Күрһәтергә",
        "rcshowhidecategorization-hide": "Йәшерелгән",
-       "rclinks": "Һуңғы $2 көн эсендәге һуңғы $1 үҙгәртеүҙе күрһәтергә",
+       "rclinks": "Һуңғы $2 көндә яһалған һуңғы $1 үҙгәртеүҙе күрһәтергә",
        "diff": "айыр.",
        "hist": "тарих",
        "hide": "йәшер",
        "htmlform-user-not-exists": "<strong>$1</strong> ғәмәлдә юҡ",
        "htmlform-user-not-valid": "<strong>$1</strong> — ярамаған иҫәп яҙмаһы",
        "logentry-delete-delete": "$1 $3 битен {{GENDER:$2|юйҙы}}",
-       "logentry-delete-restore": "$1 $3 битен {{GENDER:$2|тергеҙҙе}}",
+       "logentry-delete-restore": "$1 $3 ($4) битен {{GENDER:$2|тергеҙҙе}}",
        "logentry-delete-event": "$1 журналдағы {{PLURAL:$5|яҙманы}} $3: $4 {{GENDER:$2|үҙгәртте}}",
        "logentry-delete-revision": "Ҡатнашыусы $1 $3: $4 битенең {{PLURAL:$5|$5 версиялары|$5 версияларының|1=версиялар}} күренешен {{GENDER:$2|үҙгәртте|үҙгәртте}}.",
        "logentry-delete-event-legacy": "$1  $3 журналы яҙмаларының күренеүсәнлеген {{GENDER:$2|үҙгәртте}}",
index 9b82d2a..977f5bc 100644 (file)
        "anontalk": "Гутаркі",
        "navigation": "Навігацыя",
        "and": "&#32;і",
-       "qbfind": "Знайсьці",
-       "qbbrowse": "Праглядзець",
-       "qbedit": "Рэдагаваць",
-       "qbpageoptions": "Гэтая старонка",
-       "qbmyoptions": "Мае старонкі",
        "faq": "Частыя пытаньні",
-       "faqpage": "Project:Частыя пытаньні",
        "actions": "Дзеяньні",
        "namespaces": "Прасторы назваў",
        "variants": "Варыянты",
        "edit-local": "Рэдагаваць лякальнае апісаньне",
        "create": "Стварыць",
        "create-local": "Дадаць лякальнае апісаньне",
-       "editthispage": "Рэдагаваць гэтую старонку",
-       "create-this-page": "Стварыць гэтую старонку",
        "delete": "Выдаліць",
-       "deletethispage": "Выдаліць гэтую старонку",
-       "undeletethispage": "Аднавіць гэту старонку",
        "undelete_short": "Аднавіць $1 {{PLURAL:$1|рэдагаваньне|рэдагаваньні|рэдагаваньняў}}",
        "viewdeleted_short": "Паказаць $1 {{PLURAL:$1|выдаленае рэдагаваньне|выдаленыя рэдагаваньні|выдаленых рэдагаваньняў}}",
        "protect": "Абараніць",
        "protect_change": "зьмяніць",
-       "protectthispage": "Абараніць гэтую старонку",
        "unprotect": "Зьмяніць абарону",
-       "unprotectthispage": "Зьмяніць абарону старонкі",
        "newpage": "Новая старонка",
-       "talkpage": "Абмеркаваць гэтую старонку",
        "talkpagelinktext": "гутаркі",
        "specialpage": "Спэцыяльная старонка",
        "personaltools": "Асабістыя прылады",
-       "articlepage": "Паказаць старонку зьместу",
        "talk": "Абмеркаваньне",
        "views": "Рэжымы",
        "toolbox": "Інструмэнты",
        "tool-link-userrights": "Зьмяніць групы {{GENDER:$1|ўдзельніка|ўдзельніцы}}",
        "tool-link-userrights-readonly": "Паказаць групы {{GENDER:$1|ўдзельніка|ўдзельніцы}}",
        "tool-link-emailuser": "Даслаць {{GENDER:$1|удзельніку|удзельніцы}} ліст электроннай поштай",
-       "userpage": "Паказаць старонку ўдзельніка",
-       "projectpage": "Паказаць старонку праекту",
        "imagepage": "Паказаць старонку файла",
        "mediawikipage": "Паказаць старонку паведамленьня",
        "templatepage": "Паказаць старонку шаблёну",
        "recentchanges-legend": "Налады апошніх зьменаў",
        "recentchanges-summary": "Сачыце за апошнімі зьменамі ў {{GRAMMAR:месны|{{SITENAME}}}} на гэтай старонцы.",
        "recentchanges-noresult": "Зьмены, што пасуюць дадзенаму пэрыяду і крытэрам, ня знойдзеныя.",
-       "recentchanges-feed-description": "Сачыце за апошнімі зьменамі ў {{GRAMMAR:месны|{{SITENAME}}}} праз гэтую стужку.",
+       "recentchanges-feed-description": "Сачыце за апошнімі зьменамі ў вікі праз гэтую стужку.",
        "recentchanges-label-newpage": "Гэтым рэдагаваньнем была створаная новая старонка",
        "recentchanges-label-minor": "Гэта дробнае рэдагаваньне",
        "recentchanges-label-bot": "Гэтае рэдагаваньне зробленае робатам",
        "rcfilters-filter-lastrevision-description": "Апошняя зьмена на старонцы.",
        "rcfilters-filter-previousrevision-label": "Ранейшыя вэрсіі",
        "rcfilters-filter-previousrevision-description": "Усе зьмены, якія не зьяўляюцца самымі апошнімі на старонцы.",
+       "rcfilters-filter-excluded": "Выключаны",
        "rcnotefrom": "Ніжэй {{PLURAL:$5|знаходзіцца зьмена|знаходзяцца зьмены}} з <strong>$4 $3</strong> (да <strong>$1</strong> на старонку).",
        "rclistfromreset": "Скінуць выбар даты",
        "rclistfrom": "Паказаць зьмены з $2 $3",
        "sp-contributions-blocked-notice": "{{GENDER:$1|Гэты ўдзельнік у дадзены момант заблякаваны|Гэтая ўдзельніца ў дадзены момант заблякаваная}}. Апошні запіс з журнала блякаваньняў пададзены ніжэй для даведкі:",
        "sp-contributions-blocked-notice-anon": "Гэты IP-адрас у дадзены момант заблякаваны.\nАпошні запіс з журнала блякаваньняў пададзены ніжэй для даведкі:",
        "sp-contributions-search": "Пошук унёску",
-       "sp-contributions-username": "IP-адрас альбо імя ўдзельніка/ўдзельніцы:",
+       "sp-contributions-username": "IP-адрас альбо імя ўдзельніка ці ўдзельніцы:",
        "sp-contributions-toponly": "Паказваць толькі зьмены, якія зьяўляюцца апошнімі вэрсіямі",
        "sp-contributions-newonly": "Паказваць толькі праўкі, якімі былі створаныя старонкі",
        "sp-contributions-hideminor": "Схаваць дробныя праўкі",
        "tags-create-reason": "Прычына:",
        "tags-create-submit": "Стварыць",
        "tags-create-no-name": "Вы мусіце пазначыць назву меткі.",
-       "tags-create-invalid-chars": "Назвы метак ня мусяць утрымліваць коскі (<code>,</code>) або сымбалі касых рысаў (<code>/</code>).",
+       "tags-create-invalid-chars": "Назвы метак ня мусяць утрымліваць коскі (<code>,</code>), сымбалі вэртыкальных (<code>|</code>) або касых рысаў (<code>/</code>).",
        "tags-create-invalid-title-chars": "Назвы метак ня мусяць утрымліваць сымбалі, якія нельга ўжываць у назвах старонак.",
        "tags-create-already-exists": "Метка «$1» ужо існуе.",
        "tags-create-warnings-above": "Пры спробе стварыць метку «$1» {{PLURAL:$2|выяўленае наступнае папярэджаньне|выяўленыя наступныя папярэджаньні}}:",
        "authprovider-confirmlink-request-label": "Рахункі, якія павінны быць злучаныя",
        "authprovider-confirmlink-success-line": "$1: пасьпяхова далучаны.",
        "authprovider-confirmlink-failed": "Далучэньне рахунку не атрымалася цалкам: $1",
+       "authprovider-confirmlink-ok-help": "Працягнуць пасьля паказу паведамленьняў пра памылкі далучэньня.",
+       "authprovider-resetpass-skip-label": "Прапусьціць",
+       "authprovider-resetpass-skip-help": "Прапусьціць скіданьне паролю.",
+       "authform-nosession-login": "Аўтэнтыфікацыя была пасьпяховай, але ваш браўзэр ня змог «запомніць» уваход у сыстэму.\n\n$1",
+       "authform-nosession-signup": "Рахунак быў створаны, але ваш браўзэр ня змог «запомніць» уваход у сыстэму.\n\n$1",
+       "authform-newtoken": "Адсутнічае токен. $1",
+       "authform-notoken": "Адсутнічае токен",
+       "authform-wrongtoken": "Няслушны токен",
        "changecredentials": "Зьмена ўліковых зьвестак",
        "removecredentials": "Выдаленьне ўліковых зьвестак",
        "removecredentials-submit": "Выдаліць уліковыя зьвесткі",
index 49fd7e9..9cd29ac 100644 (file)
        "anontalk": "Размовы",
        "navigation": "Навігацыя",
        "and": "&#32;і",
-       "qbfind": "Знайсці",
-       "qbbrowse": "Выбраць",
-       "qbedit": "Правіць",
-       "qbpageoptions": "Гэтая старонка",
-       "qbmyoptions": "Свае старонкі",
        "faq": "ЧАПЫ",
-       "faqpage": "Project:ЧАПЫ",
        "actions": "Дзеянні",
        "namespaces": "Прасторы імёнаў",
        "variants": "Варыянты",
        "edit-local": "Правіць тутэйшае апісанне",
        "create": "Стварыць",
        "create-local": "Дадаць тутэйшае апісанне",
-       "editthispage": "Правіць гэту старонку",
-       "create-this-page": "Стварыць старонку",
        "delete": "Сцерці",
-       "deletethispage": "Сцерці гэту старонку",
-       "undeletethispage": "Аднавіць гэту старонку",
        "undelete_short": "Аднавіць {{PLURAL:$1|адну праўку|$1 правак}}",
        "viewdeleted_short": "Паказаць {{PLURAL:$1|адну сцёртую праўку|$1 сцёртыя праўкі}}",
        "protect": "Ахова",
        "protect_change": "змяніць",
-       "protectthispage": "Пачаць ахоўваць гэтую старонку",
        "unprotect": "Змяніць ахову",
-       "unprotectthispage": "Змяніць ахову гэтай старонкі",
        "newpage": "Новая старонка",
-       "talkpage": "Размовы пра гэтую старонку",
        "talkpagelinktext": "Размовы",
        "specialpage": "Адмысловая старонка",
        "personaltools": "Асабістыя прылады",
-       "articlepage": "Паказаць старонку змесціва",
        "talk": "Размовы",
        "views": "Віды",
        "toolbox": "Прылады",
        "tool-link-userrights": "Змяніць групы {{GENDER:$1|ўдзельніка|ўдзельніцы}}",
        "tool-link-userrights-readonly": "Паказаць групы {{GENDER:$1|ўдзельніка|ўдзельніцы}}",
        "tool-link-emailuser": "Напісаць ліст {{GENDER:$1|удзельніку|удзельніцы}}",
-       "userpage": "Паказаць старонку ўдзельніка",
-       "projectpage": "Паказаць старонку праекта",
        "imagepage": "Гл. старонку файла",
        "mediawikipage": "Паказаць старонку паведамлення",
        "templatepage": "Паказаць старонку шаблона",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (гл. асобна [[Special:NewPages|новыя старонкі]])",
        "recentchanges-submit": "Паказаць",
        "rcfilters-activefilters": "Актыўныя фільтры",
+       "rcfilters-savedqueries-rename": "Перайменаваць",
+       "rcfilters-savedqueries-setdefault": "Устанавіць прадвызначаным",
+       "rcfilters-savedqueries-unsetdefault": "Зняць прадвызначэнне",
+       "rcfilters-savedqueries-remove": "Сцерці",
+       "rcfilters-savedqueries-new-name-label": "Назва",
+       "rcfilters-savedqueries-apply-label": "Запісаць настройкі",
+       "rcfilters-savedqueries-cancel-label": "Скасаваць",
+       "rcfilters-savedqueries-add-new-title": "Запісаць цяперашнія настройкі фільтра",
        "rcfilters-restore-default-filters": "Аднавіць фільтры па змоўчанні",
        "rcfilters-clear-all-filters": "Ачысціць усе фільтры",
+       "rcfilters-invalid-filter": "Недапушчальны фільтр",
+       "rcfilters-filterlist-title": "Фільтры",
+       "rcfilters-filterlist-whatsthis": "Што гэта?",
        "rcfilters-highlightmenu-title": "Выбраць колер",
        "rcfilters-highlightmenu-help": "Выбраць колер для падсвечвання уласцівасці",
        "rcfilters-filtergroup-registration": "Рэгістрацыя ўдзельніка",
        "rcfilters-filter-humans-description": "Праўкі, зробленыя людзьмі",
        "rcfilters-filter-patrolled-label": "Дагледжаны",
        "rcfilters-filter-unpatrolled-label": "Недагледжаны",
+       "rcfilters-filtergroup-lastRevision": "Цяперашняя версія",
+       "rcfilters-filter-lastrevision-label": "Актуальная версія",
        "rcnotefrom": "Ніжэй {{PLURAL:$5|паказана змяненне|паказаны змены}} з <strong>$3, $4</strong> (не больш за <strong>$1</strong>).",
        "rclistfrom": "Паказаць змены з $3 $2",
        "rcshowhideminor": "$1 дробныя праўкі",
        "editcomment": "Тлумачэнне праўкі было: <em>$1</em>.",
        "revertpage": "Праўкі аўтарства [[Special:Contributions/$2|$2]] ([[User talk:$2|размова]]) адкочаныя; вернута апошняя версія аўтарства [[User:$1|$1]]",
        "revertpage-nouser": "Праўкі (імя ўдзельніка схавана) адкочаны да версіі {{GENDER:$1|[[User:$1|$1]]}}",
-       "rollback-success": "Адкочаны праўкі $1; вернута апошняя версія $2.",
+       "rollback-success": "Адкочаны праўкі {{GENDER:$3|$1}}; вернута апошняя версія {{GENDER:$4|$2}}.",
        "rollback-success-notify": "Адкочаны праўкі $1;\nвернута апошняя версія $2. [$3 Паказаць змены]",
        "sessionfailure-title": "Памылка сеансу",
        "sessionfailure": "Магчыма, ёсць праблемы з вашым сеансам працы ў сістэме. Таму вам было адмоўлена ў выкананні дзеяння, каб засцерагчыся ад захопу сеанса.\n\nВярніцеся на папярэднюю старонку, перазагрузіце яе і тады паспрабуйце зноў.",
        "changecontentmodel-emptymodels-text": "Змесціва [[:$1]] не можа быць ператворана ні ў які тып.",
        "log-name-contentmodel": "Журнал змен мадэляў змесціва",
        "log-description-contentmodel": "Падзеі, звязаныя з мадэлямі змесціва старонак",
+       "logentry-contentmodel-new": "$1 {{GENDER:$2|стварыў|стварыла}} старонку $3, выкарыстаўшы нетыповую мадэль змесціва \"$5\"",
        "logentry-contentmodel-change-revertlink": "адкаціць",
        "logentry-contentmodel-change-revert": "адкат",
        "protectlogpage": "Журнал аховы",
        "sp-contributions-uploads": "укладанні",
        "sp-contributions-logs": "журналы",
        "sp-contributions-talk": "размовы",
-       "sp-contributions-userrights": "распараджэнне правамі ўдзельніка",
+       "sp-contributions-userrights": "распараджэнне правамі {{GENDER:$1|ўдзельніка|ўдзельніцы}}",
        "sp-contributions-blocked-notice": "Гэты ўдзельнік у дадзены момант заблакаваны. Ніжэй прыведзены апошні запіс з журнала блакаванняў:",
        "sp-contributions-blocked-notice-anon": "Гэты IP-адрас у дадзены момант заблакаваны.\nНіжэй прыведзены апошні запіс з журнала блакаванняў:",
        "sp-contributions-search": "Знайсці ўклад",
        "unblocked-id": "Блок $1 быў зняты",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] быў разблакіраваны.",
        "blocklist": "Заблакаваныя ўдзельнікі",
+       "autoblocklist-submit": "Шукаць",
        "ipblocklist": "Заблакаваныя ўдзельнікі",
        "ipblocklist-legend": "Знайсці заблакаванага ўдзельніка",
        "blocklist-userblocks": "Схаваць блакіроўкі ўліковых запісаў",
        "version-libraries-description": "Апісанне",
        "version-libraries-authors": "Аўтары",
        "redirect": "Перасылка да файла, ID удзельніка, старонкі, версіі ці журнала",
-       "redirect-summary": "Гэта адмысловая старонка перасылае да файла (з назвы файла), на старонку (з ідэнтыфікатара версіі ці старонкі), ці на старонку ўдзельніка (калі дадзены лічбавы ID удзельніка). Ужыванне: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ці [[{{#Special:Redirect}}/user/101]].",
+       "redirect-summary": "Гэта адмысловая старонка перасылае да файла (з назвы файла), на старонку (з ідэнтыфікатара версіі ці старонкі), на старонку ўдзельніка (калі дадзены лічбавы ID удзельніка), ці на запіс журнала (калі дадзены лічбавы ID запісу). Ужыванне: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]],[[{{#Special:Redirect}}/user/101]], ці [[{{#Special:Redirect}}/logid/186]].",
        "redirect-submit": "Перайсці",
        "redirect-lookup": "Шукаць:",
        "redirect-value": "Значэнне:",
        "htmlform-user-not-valid": "<strong>$1</strong> - недапушчальная назва уліковага запісу.",
        "logentry-delete-delete": "$1 {{GENDER:$2|сцёр|сцёрла}} старонку $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|выдаліў|выдаліла}} перанакіраванне $3 шляхам перазапісу",
-       "logentry-delete-restore": "$1 {{GENDER:$2|аднавіў|аднавіла}} старонку $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|аднавіў|аднавіла}} старонку $3 ($4)",
        "logentry-delete-event": "$1 {{GENDER:$2|змяніў|змяніла}} бачнасць {{PLURAL:$5|запісу журнала|$5 запісаў журнала}} $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|змяніў|змяніла}} бачнасць {{PLURAL:$5|версіі|$5 версій|$5 версій}} старонкі $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|змяніў|змяніла}} бачнасць запісаў журнала $3",
        "mw-widgets-mediasearch-input-placeholder": "Пошук мультымедыя",
        "mw-widgets-titleinput-description-new-page": "старонка яшчэ не існуе",
        "mw-widgets-titleinput-description-redirect": "перанакіраванне на $1",
+       "randomrootpage": "Выпадковая карэнная старонка",
        "log-action-filter-all": "Усе",
        "log-action-filter-block-block": "заблакаваць",
        "log-action-filter-block-reblock": "Змена блакіроўкі",
index 77d31be..b6cce20 100644 (file)
        "anontalk": "Беседа",
        "navigation": "Навигация",
        "and": "&#32;и",
-       "qbfind": "Търсене",
-       "qbbrowse": "Избор",
-       "qbedit": "Редактиране",
-       "qbpageoptions": "Тази страница",
-       "qbmyoptions": "Моите страници",
        "faq": "ЧЗВ",
-       "faqpage": "Project:ЧЗВ",
        "actions": "Действия",
        "namespaces": "Именни пространства",
        "variants": "Варианти",
        "edit-local": "Редактиране на локалното описание",
        "create": "Създаване",
        "create-local": "Добавяне на локално описание",
-       "editthispage": "Редактиране",
-       "create-this-page": "Създаване на страницата",
        "delete": "Изтриване",
-       "deletethispage": "Изтриване",
-       "undeletethispage": "Възстановяване на страницата",
        "undelete_short": "Възстановяване на {{PLURAL:$1|една редакция|$1 редакции}}",
        "viewdeleted_short": "Преглед на {{PLURAL:$1|една изтрита редакция|$1 изтрити редакции}}",
        "protect": "Защита",
        "protect_change": "промяна",
-       "protectthispage": "Защита",
        "unprotect": "Промяна на защитата",
-       "unprotectthispage": "Промяна на защитата на тази страница",
        "newpage": "Нова страница",
-       "talkpage": "Дискусионна страница",
        "talkpagelinktext": "беседа",
        "specialpage": "Специална страница",
        "personaltools": "Лични инструменти",
-       "articlepage": "Преглед на страница",
        "talk": "Беседа",
        "views": "Прегледи",
        "toolbox": "Инструменти",
        "tool-link-userrights": "Промяна на {{GENDER:$1|потребителските}} групи",
        "tool-link-userrights-readonly": "Преглед на {{GENDER:$1|потребителските}} групи",
        "tool-link-emailuser": "Писмо до {{GENDER:$1|потребителя}}",
-       "userpage": "Потребителска страница",
-       "projectpage": "Проектна страница",
        "imagepage": "Преглед на файла",
        "mediawikipage": "Преглед на съобщението",
        "templatepage": "Преглед на шаблона",
        "nstab-template": "Шаблон",
        "nstab-help": "Помощ",
        "nstab-category": "Категория",
-       "mainpage-nstab": "Ð\93лавна страница",
+       "mainpage-nstab": "Ð\9dаÑ\87ална страница",
        "nosuchaction": "Няма такова действие",
        "nosuchactiontext": "Действието, указано в интернет адреса, е невалидно.\nМоже би сте допуснали грешка в изписването на адреса или сте последвали некоректна хипервръзка.\nПроблемът може да се дължи и на грешка в софтуера на {{SITENAME}}.",
        "nosuchspecialpage": "Няма такава специална страница",
        "user-mail-no-addy": "Опитвате се да изпратите електронно писмо без да е посочен адрес за електронна поща.",
        "user-mail-no-body": "Опитвате се да изпратите е-писмо с празно или изключително кратко съдържание.",
        "changepassword": "Смяна на парола",
-       "resetpass_announce": "За да завърши процеса на влизане е необходимо да се избере нова парола.",
+       "resetpass_announce": "За да се завърши процеса на влизане е необходимо да се избере нова парола.",
        "resetpass_text": "<!-- Тук добавете текст -->",
        "resetpass_header": "Промяна на парола",
        "oldpassword": "Стара парола:",
        "showdiff": "Показване на промените",
        "blankarticle": "<strong>Предупреждение:</strong> Статията, която създавате е празна.\nАко щракнете на „$1“ отново, статията ще бъде създадена без никакво съдържание.",
        "anoneditwarning": "<strong>Внимание:</strong> Не сте влезли в системата. Ако направите редакция IP-адресът Ви ще бъде публично видим. Ако <strong>[$1 влезете]</strong> или си <strong>[$2 създадете акаунт]</strong>, редакциите Ви ще бъдат свързани с потребителското Ви име, заедно с други преимущества.",
-       "anonpreviewwarning": "Внимание: Не сте влезли в системата. Ако съхраните редакцията си, тя ще бъде записана в историята на страницата с вашият IP-адрес.",
-       "missingsummary": "'''Напомняне:''' Не е въведено кратко описание на промените. При повторно натискане на бутона „Съхраняване“, редакцията ще бъде съхранена без резюме.",
+       "anonpreviewwarning": "<em>Не сте влезли в системата. Ако съхраните редакцията си, тя ще бъде записана в историята на страницата с вашия IP-адрес.</em>",
+       "missingsummary": "<strong>Напомняне:</strong> Не е въведено кратко описание на промените.\nПри повторно натискане на бутона „$1“, редакцията ще бъде съхранена без резюме.",
        "missingcommenttext": "По-долу въведете вашето съобщение.",
        "missingcommentheader": "<strong>Напомняне:</strong> Не е въведено заглавие на коментара.\nПри повторно натискане на „$1“, редакцията ще бъде записана без коментар.",
        "summary-preview": "Предварителен преглед на резюмето:",
        "subject-preview": "Предварителен преглед на заглавието:",
        "previewerrortext": "Възникна грешка при опита за преглед на промените.",
        "blockedtitle": "Потребителят е блокиран",
-       "blockedtext": "'''Вашето потребителско име (или IP-адрес) беше блокирано.'''\n\nБлокирането е извършено от $1. Посочената причина е: ''$2''\n\n*Начало на блокирането: $8\n*Край на блокирането: $6\n*Блокирането се отнася за: $7\n\nМожете да се свържете с $1 или с някой от останалите [[{{MediaWiki:Grouppage-sysop}}|администратори]], за да обсъдите блокирането.\n\nМожете да използвате услугата „Пращане писмо на потребител“ само ако не ви е забранена употребата й и ако сте посочили валидна електронна поща в [[Special:Preferences|настройките]] си.\n\nВашият IP адрес е $3, а номерът на блокирането е $5. Включвайте едно от двете или и двете във всяко запитване, което правите.",
-       "autoblockedtext": "IP-адресът ви беше блокиран автоматично, защото е бил използван от друг потребител, който е бил блокиран от $1.\nПосочената причина е:\n\n:''$2''\n\n* Начало на блокирането: $8\n* Край на блокирането: $6\n* Блокирането се отнася за: $7\n\nМожете да се свържете с $1 или с някой от останалите [[{{MediaWiki:Grouppage-sysop}}|администратори]], за да обсъдите блокирането.\n\nМожете да използвате услугата „Пращане писмо на потребител“ само ако не ви е забранена употребата й и ако сте посочили валидна електронна поща в [[Special:Preferences|настройките]] си.\n\nТекущият ви IP-адрес е $3, а номерът на блокирането ви е $5. Включвайте ги във всяко питане, което правите.",
+       "blockedtext": "'''Вашето потребителско име (или IP-адрес) беше блокирано.'''\n\nБлокирането е извършено от $1. Посочената причина е: ''$2''\n\n*Начало на блокирането: $8\n*Край на блокирането: $6\n*Блокирането се отнася за: $7\n\nМожете да се свържете с $1 или с някой от останалите [[{{MediaWiki:Grouppage-sysop}}|администратори]], за да обсъдите блокирането.\n\nМожете да използвате услугата „Пращане писмо на потребител“ само ако не ви е забранена употребата ѝ и ако сте посочили валидна електронна поща в [[Special:Preferences|настройките]] си.\n\nВашият IP адрес е $3, а номерът на блокирането е $5. Включвайте едно от двете или и двете във всяко запитване, което правите.",
+       "autoblockedtext": "IP-адресът ви беше блокиран автоматично, защото е бил използван от друг потребител, който е бил блокиран от $1.\nПосочената причина е:\n\n:''$2''\n\n* Начало на блокирането: $8\n* Край на блокирането: $6\n* Блокирането се отнася за: $7\n\nМожете да се свържете с $1 или с някой от останалите [[{{MediaWiki:Grouppage-sysop}}|администратори]], за да обсъдите блокирането.\n\nМожете да използвате услугата „Пращане писмо на потребител“ само ако не ви е забранена употребата ѝ и ако сте посочили валидна електронна поща в [[Special:Preferences|настройките]] си.\n\nТекущият ви IP-адрес е $3, а номерът на блокирането ви е $5. Включвайте ги във всяко питане, което правите.",
        "blockednoreason": "не е указана причина",
        "whitelistedittext": "Редактирането на страници изисква $1 в системата.",
        "confirmedittext": "Необходимо е да потвърдите електронната си поща, преди да редактирате страници.\nВъведете и потвърдете адреса си на [[Special:Preferences|страницата с настройките]].",
        "nosuchsectiontitle": "Няма такъв раздел",
-       "nosuchsectiontext": "Опитахте да редактирате раздел, който не съществува. Може би е бил преместен или изтрит междувременно.",
+       "nosuchsectiontext": "Опитахте да редактирате раздел, който не съществува.\nМоже би е бил преместен или изтрит междувременно.",
        "loginreqtitle": "Изисква се влизане",
        "loginreqlink": "влизане",
        "loginreqpagetext": "Необходимо е $1, за да можете да разглеждате други страници.",
        "accmailtitle": "Паролата беше изпратена.",
        "accmailtext": "Случайно генерирана парола за [[User talk:$1|$1]] беше изпратена на $2. Паролата може да бъде променена от страницата ''[[Special:ChangePassword|„Промяна на паролата“]]'' след влизане в системата.",
        "newarticle": "(нова)",
-       "newarticletext": "Последвахте препратка към страница, която все още не съществува.\nЗа да я създадете, просто започнете да пишете в долната текстова кутия\n(вижте [$1 помощната страница] за повече информация).",
+       "newarticletext": "Последвахте препратка към страница, която все още не съществува.\nЗа да я създадете, просто започнете да пишете в долната текстова кутия\n(вижте [$1 помощната страница] за повече информация).\nАко сте тук по погрешка, щракнете бутона <strong>назад</strong> на вашия браузър.",
        "anontalkpagetext": "----\n<em>Това е дискусионната страница на анонимен потребител, който все още няма регистрирана сметка или не я използва</em>\nЗатова се налага да използваме IP-адрес, за да го идентифицираме.\nТакъв адрес може да се споделя от няколко потребители.\nАко сте анонимен потребител и мислите, че тези неуместни коментари са отправени към вас, [[Special:CreateAccount|регистрирайте се]] или [[Special:UserLogin|влезте в системата]], за да избегнете евентуално бъдещо объркване с други анонимни потребители.",
        "noarticletext": "Понастоящем няма текст на тази страница. Можете да [[Special:Search/{{PAGENAME}}|потърсите за заглавието на страницата]] в други страници, да <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} потърсите в съответните дневници] или [{{fullurl:{{FULLPAGENAME}}|action=edit}} да я създадете]</span>.",
        "noarticletext-nopermission": "Понастоящем в тази страница няма текст.\nМожете да [[Special:Search/{{PAGENAME}}|потърсите заглавието на тази страница ]] в други страници или да <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} потърсите в съответните дневници]</span>, но нямате права да създадете тази страница.",
        "missing-revision": "Версия #$1 на страницата „{{FULLPAGENAME}}“ не съществува.\n\nТова обикновено се дължи на препратка от историята на страницата, която е била изтрита.\nПодробности могат да бъдат открити в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дневника на изтриванията].",
        "userpage-userdoesnotexist": "Няма регистрирана потребителска сметка за „$1“.\nМоля потвърдете, че желаете да създадете/редактирате тази страница.",
        "userpage-userdoesnotexist-view": "Не е регистрирана потребителска сметка на име „$1“.",
-       "blocked-notice-logextract": "Ð\92 Ð¼Ð¾Ð¼ÐµÐ½Ñ\82а Ñ\82ози Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82ел Ðµ Ð±Ð»Ð¾ÐºÐ¸Ñ\80ан.\nÐ\9fо-долÑ\83 Ð·Ð° Ñ\81пÑ\80авка Ðµ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½ Ð¿Ð¾Ñ\81ледниÑ\8fÑ\82 Ð·Ð°Ð¿Ð¸Ñ\81 Ð¾Ñ\82 Ð\94невника на блокиранията:",
+       "blocked-notice-logextract": "Ð\92 Ð¼Ð¾Ð¼ÐµÐ½Ñ\82а Ñ\82ози Ð¿Ð¾Ñ\82Ñ\80ебиÑ\82ел Ðµ Ð±Ð»Ð¾ÐºÐ¸Ñ\80ан.\nÐ\9fо-долÑ\83 Ð·Ð° Ñ\81пÑ\80авка Ðµ Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½ Ð¿Ð¾Ñ\81ледниÑ\8fÑ\82 Ð·Ð°Ð¿Ð¸Ñ\81 Ð¾Ñ\82 Ð´невника на блокиранията:",
        "clearyourcache": "<strong>Забележка:</strong> За да се видят промените, необходимо е след съхраняване на страницата, кешът на браузъра да бъде изтрит.\n* <strong>Firefox / Safari:</strong> Задържа се клавиш <em>Shift</em> и се щраква върху <em>Презареждане</em> (<em>Reload</em>) или чрез клавишната комбинация <em>Ctrl-F5</em> or <em>Ctrl-R</em> (<em>⌘-R</em> за Mac);\n* <strong>Google Chrome:</strong> клавишна комбинация <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> за Mac)\n* <strong>Internet Explorer:</strong> Задържа се клавиш <em>Ctrl</em> и се щраква върху <em>Refresh</em> или чрез клавишната комбинация <em>Ctrl-F5</em>;\n* <strong>Opera:</strong> кешът се изчиства през менюто <em>Tools → Settings</em> (<em>Opera → Preferences</em> за Mac) след което <em>Privacy & security → Clear browsing data → Cached images and files</em>.",
-       "usercssyoucanpreview": "'''Съвет:''' Използвайте бутона „{{int:showpreview}}“, за да изпробвате новия код на CSS преди съхранението.",
-       "userjsyoucanpreview": "'''Съвет:''' Използвайте бутона „{{int:showpreview}}“, за да изпробвате новия код на Джаваскрипт преди съхранението.",
-       "usercsspreview": "'''Не забравяйте, че това е само предварителен преглед на кода на CSS. Страницата все още не е съхранена!'''",
+       "usercssyoucanpreview": "<strong>Съвет:</strong> Използвайте бутона „{{int:showpreview}}“, за да изпробвате новия код на CSS преди съхранението.",
+       "userjsyoucanpreview": "<strong>Съвет:</strong> Използвайте бутона „{{int:showpreview}}“, за да изпробвате новия код на Джаваскрипт преди съхранението.",
+       "usercsspreview": "<strong>Не забравяйте, че това е само предварителен преглед на кода на CSS.\nСтраницата все още не е съхранена!</strong>",
        "userjspreview": "'''Не забравяйте, че това е само изпробване/предварителен преглед на кода на Джаваскрипт. Страницата все още не е съхранена!'''",
        "sitecsspreview": "'''Не забравяйте, че това е само предварителен преглед на този CSS.'''\n'''Той все още не е съхранен!'''",
        "sitejspreview": "'''Не забравяйте, че това е само предварителен преглед на този Джаваскрипт код.'''\n'''Той все още не е съхранен!'''",
        "nextn-title": "$1 {{PLURAL:$1|следващ резултат|следващи резултата}}",
        "shown-title": "Показване на $1 {{PLURAL:$1|резултат|резултата}} на страница",
        "viewprevnext": "Преглед ($1 {{int:pipe-separator}} $2) ($3).",
-       "searchmenu-exists": "'''Съществува страница с името „[[:$1]]“ в това уики.'''",
+       "searchmenu-exists": "<strong>Съществува страница с името „[[:$1]]“ в това уики.</strong> {{PLURAL:$2|0=|Вижте и другите открити резултати.}}",
        "searchmenu-new": "<strong>Създаване на страницата „[[:$1]]“ в това уики!</strong> {{PLURAL:$2|0=|Вижте също страницата, която е резултат от търсенето.|Вижте също резултатите от търсенето.}}",
-       "searchprofile-articles": "СÑ\8aдÑ\8aÑ\80жаÑ\82елни Ñ\81Ñ\82Ñ\80аниÑ\86и",
+       "searchprofile-articles": "СÑ\82Ñ\80аниÑ\86и Ñ\81Ñ\8aÑ\81 Ñ\81Ñ\8aдÑ\8aÑ\80жание",
        "searchprofile-images": "Мултимедия",
        "searchprofile-everything": "Всичко",
        "searchprofile-advanced": "Разширено търсене",
        "search-redirect": "(пренасочване от $1)",
        "search-section": "(раздел $1)",
        "search-category": "(категория $1)",
+       "search-file-match": "(съвпада със съдържанието на файла)",
        "search-suggest": "Вероятно имахте предвид: $1",
        "search-rewritten": "Показани са резултати за $1. Вместо това търсете $2.",
        "search-interwiki-caption": "Резултати от сродни проекти",
        "grant-editprotected": "Редактиране на защитени страници",
        "grant-highvolume": "Голям обем за редактиране",
        "grant-oversight": "Скриване на потребители и прикриване на редакции",
-       "grant-patrol": "Патрулират промени страници",
+       "grant-patrol": "Патрулиране промени на страници",
        "grant-privateinfo": "Достъп до лична информация",
        "grant-protect": "Защита и премахване на защита на страници",
        "grant-rollback": "Връщане на промени по страници",
        "grant-sendemail": "Изпращане на имейл до други потребители",
-       "grant-uploadeditmovefile": "Качване, заменяне и прехвърляне на файлове",
+       "grant-uploadeditmovefile": "Качване, замяна и преместване на файлове",
        "grant-uploadfile": "Качване на нови файлове",
        "grant-basic": "Основни права",
-       "grant-viewdeleted": "Преглед на изтрити файлове и страници",
+       "grant-viewdeleted": "Преглед на изтритите файлове и страници",
        "grant-viewmywatchlist": "Преглед на списъка ви за наблюдение",
        "newuserlogpage": "Дневник на регистрациите",
        "newuserlogpagetext": "В този дневник се записват регистрациите на потребители.",
        "rcfilters-filter-user-experience-level-learner-description": "Повече опит от „Новодошли“, но по-малко от „Опитни потребители“.",
        "rcfilters-filter-user-experience-level-experienced-label": "Опитни потребители",
        "rcfilters-filter-user-experience-level-experienced-description": "Повече от 30 дни активност и 500 редакции.",
-       "rcfilters-filtergroup-automated": "Автоматизирани приноси",
+       "rcfilters-filtergroup-automated": "Автоматизирани редакции",
        "rcfilters-filter-bots-label": "Бот",
        "rcfilters-filter-bots-description": "Редакции, направени с помощта на автоматизирани инструменти.",
        "rcfilters-filter-humans-label": "Човек (не бот)",
        "upload-dialog-button-upload": "Качване",
        "upload-form-label-infoform-title": "Подробности",
        "upload-form-label-infoform-name": "Име",
-       "upload-form-label-infoform-name-tooltip": "Уникално описателно заглавие на файла, което ще бъде записано като име на файла. Можете да използвате обикновен текст с разстояние. Не включвайте файловото разширение.",
+       "upload-form-label-infoform-name-tooltip": "Уникално описателно заглавие на файла, което ще бъде записано като име на файла. Можете да използвате обикновен текст с интервали. Не добавяйте разширението на файла.",
        "upload-form-label-infoform-description": "Описание",
        "upload-form-label-infoform-description-tooltip": "Накратко опишете всичко, което си струва да се каже за тази творба.\nНапример, ако е снимка, опишете основните неща, които са снимани, повода, местоположението и т.н.",
        "upload-form-label-usage-title": "Използване",
        "img-auth-public": "Функцията img_auth.php е да извлича файлове от частни уикита.\nТова уики е конфигурирано като публично.\nС цел оптимална сигурност, функцията img_auth.php е деактивирана.",
        "img-auth-noread": "Потребителят няма достъп за четене на „$1“.",
        "http-invalid-url": "Невалиден адрес: $1",
-       "http-invalid-scheme": "Не се поддържат URL адреси с префикс „$1“.",
+       "http-invalid-scheme": "Не се поддържат URL адреси с представка „$1“.",
        "http-request-error": "HTTP заявката пропадна поради неизвестна грешка.",
        "http-read-error": "HTTP грешка при четене.",
        "http-timed-out": "Пресрочено време за HTTP заявка.",
        "undeleteextrahelp": "За възстановяване на пълната история на страницата не се слагат отметки и се натиска '''''{{int:undeletebtn}}'''''.\nЗа частично възстановяване се поставят отметки на тези версии на страницата, които трябва да бъдат възстановени, след което се натиска '''''{{int:undeletebtn}}'''''.",
        "undeleterevisions": "$1 {{PLURAL:$1|версия беше изтрита|версии бяха изтрити}}",
        "undeletehistory": "Ако възстановите страницата, всички версии ще бъдат върнати в историята.\nАко след изтриването е създадена страница със същото име, възстановените версии ще се появят като по-ранна история, а текущата версия на страницата няма да бъде заменена автоматично. Също така обърнете внимание, че ограниченията, приложени върху версиите, ще се загубят след възстановяването.",
-       "undeleterevdel": "Възстановяването няма да бъде изпълнено, ако би довело до частично изтриване на актуалната версия. В такъв случай актуалната версия не трябва да бъде избирана или пък състоянието й трябва да бъде променено на нормална (нескрита) версия. Версиите на файлове, които нямате право да преглеждате, няма да бъдат възстановени.",
-       "undeletehistorynoadmin": "Тази страница е била изтрита. В резюмето отдолу е посочена причината за това, заедно с информация за потребителите, редактирали страницата преди изтриването й. Конкретното съдържание на изтритите версии е достъпно само за администратори.",
+       "undeleterevdel": "Възстановяването няма да бъде изпълнено, ако би довело до частично изтриване на актуалната версия. В такъв случай актуалната версия не трябва да бъде избирана или пък състоянието ѝ трябва да бъде променено на нормална (нескрита) версия. Версиите на файлове, които нямате право да преглеждате, няма да бъдат възстановени.",
+       "undeletehistorynoadmin": "Тази страница е била изтрита. В резюмето отдолу е посочена причината за това, заедно с информация за потребителите, редактирали страницата преди изтриването ѝ. Конкретното съдържание на изтритите версии е достъпно само за администратори.",
        "undelete-revision": "Изтрита версия на $1 (към $4, в $5) от $3:",
        "undeleterevision-missing": "Неправилна или липсваща версия. Може да сте последвали грешна препратка или указаната версия да е била възстановена или премахната от архива",
        "undelete-nodiff": "Не е открита предишна редакция.",
        "delete_and_move_reason": "Изтрита, за да се освободи място за преместване от „[[$1]]“",
        "selfmove": "Страницата не може да бъде преместена, тъй като целевото име съвпада с първоначалното ѝ заглавие.",
        "immobile-source-namespace": "Не могат да се местят страници в именно пространство „$1“",
-       "immobile-target-namespace": "Ð\9dе Ðµ Ð²Ñ\8aзможно Ð¿Ñ\80емеÑ\81Ñ\82ванеÑ\82о Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86и Ð² Ð¸Ð¼ÐµÐ½Ð½Ð¾Ñ\82о Ð¿Ñ\80оÑ\81Ñ\82Ñ\80анÑ\81Ñ\82во â\80\9e$1â\80\9c",
+       "immobile-target-namespace": "Ð\9dе Ð¼Ð¾Ð³Ð°Ñ\82 Ð´Ð° Ñ\81е Ð¼ÐµÑ\81Ñ\82Ñ\8fÑ\82 Ñ\81Ñ\82Ñ\80аниÑ\86и Ð² Ð¸Ð¼ÐµÐ½Ð½Ð¾ Ð¿Ñ\80оÑ\81Ñ\82Ñ\80анÑ\81Ñ\82во â\80\9e$1â\80\9c.",
        "immobile-target-namespace-iw": "Страницата не може да бъде преместена под заглавие, оформено като междууики препратка.",
        "immobile-source-page": "Тази страница не може да бъде премествана.",
        "immobile-target-page": "Не може да се извърши преместване върху това целево заглавие.",
-       "imagenocrossnamespace": "Невъзможно е да се преместват картинки извън това именно пространство",
+       "imagenocrossnamespace": "Не може да се преместват картинки извън това именно пространство.",
        "nonfile-cannot-move-to-file": "Не може да се премести във файл нещо, което не е файл.",
-       "imagetypemismatch": "Новото разширение на файла не съвпада с типа му",
-       "imageinvalidfilename": "Целевото име на файл е невалидно",
+       "imagetypemismatch": "Новото разширение на файла не съвпада с типа му.",
+       "imageinvalidfilename": "Целевото име на файл е невалидно.",
        "fix-double-redirects": "Обновяване на всички двойни пренасочвания, които сочат към оригиналното заглавие",
        "move-leave-redirect": "Оставяне на пренасочваща страница от старото към новото заглавие",
        "protectedpagemovewarning": "<strong>Внимание:</strong> Тази страница е защитена и само потребители със статут на администратори могат да я преместят.\nЗа справка по-долу е показан последният запис от дневниците.",
-       "semiprotectedpagemovewarning": "'''Внимание:''' Тази страница е защитена и само регистрирани потребители могат да я преместят.\nЗа справка по-долу е показан последният запис от дневниците.",
+       "semiprotectedpagemovewarning": "<strong>Забележка:</strong> Тази страница е защитена и само регистрирани потребители могат да я преместят.\nЗа справка по-долу е показан последният запис от дневниците.",
        "move-over-sharedrepo": "[[:$1]] вече съществува в споделеното хранилище. Преместване на файл с това заглавие ще замени споделения файл.",
-       "file-exists-sharedrepo": "Ð\98збÑ\80аноÑ\82о Ð¸Ð¼Ðµ Ð½Ð° Ñ\84айл Ð²ÐµÑ\87е Ñ\81е Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð° Ð¾Ñ\82 Ñ\84айл Ð² Ñ\81опделеното хранилище.\nНеобходимо е да изберете друго име.",
+       "file-exists-sharedrepo": "Ð\98збÑ\80аноÑ\82о Ð¸Ð¼Ðµ Ð½Ð° Ñ\84айл Ð²ÐµÑ\87е Ñ\81е Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð° Ð¾Ñ\82 Ñ\84айл Ð² Ñ\81поделеното хранилище.\nНеобходимо е да изберете друго име.",
        "export": "Изнасяне на страници",
        "exporttext": "Тук можете да изнесете като XML текста и историята на една или повече страници. Получените данни можете да вмъкнете в друг сайт, използващ софтуера МедияУики, чрез [[Special:Import|неговата страница за внaсяне]].\n\nЗа да изнесете няколко страници, въвеждайте всяко ново заглавие на '''нов ред'''. След това изберете дали искате само текущата версия (заедно с информация за последната редакция) или всички версии (заедно с текущата) на страницата.\n\nАко желаете само текущата версия, бихте могли да използвате препратка от вида [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] за страницата [[{{MediaWiki:Mainpage}}]].",
        "exportall": "Изнасяне на всички страници",
        "exportcuronly": "Включване само на текущата версия, а не на цялата история",
-       "exportnohistory": "----\n'''Важно:''' Изнасянето на пълната история на страниците е забранено, защото много забавя уикито.",
+       "exportnohistory": "----\n<strong>Забележка:</strong>' Изнасянето на пълната история на страниците е забранено, защото много забавя уикито.",
        "exportlistauthors": "Добавяне на пълен списък на редакторите за всяка страница",
        "export-submit": "Изнасяне",
        "export-addcattext": "Добавяне на страници от категория:",
        "export-download": "Съхраняване като файл",
        "export-templates": "Включване на шаблоните",
        "export-pagelinks": "Включване на свързаните страници с дълбочина до:",
-       "export-manual": "Добавяне на страниците ръчно:",
+       "export-manual": "Добавете страници ръчно:",
        "allmessages": "Системни съобщения",
        "allmessagesname": "Име",
        "allmessagesdefault": "Текст по подразбиране",
        "allmessagescurrent": "Текущ текст",
        "allmessagestext": "Тази страница съдържа списък на системните съобщения от именното пространство „МедияУики“.\nПосетете [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation MediaWiki Localisation] и [https://translatewiki.net translatewiki.net], ако желаете да допринесете за общата локализация на софтуера МедияУики.",
-       "allmessagesnotsupportedDB": "Тази страница не може да бъде използвана, тъй като е изключена възможността '''$wgUseDatabaseMessages'''.",
+       "allmessagesnotsupportedDB": "Тази страница не може да бъде използвана, тъй като е изключена възможността <strong>$wgUseDatabaseMessages</strong>",
        "allmessages-filter-legend": "Филтър",
        "allmessages-filter": "Филтриране по ниво на персонализация:",
        "allmessages-filter-unmodified": "Непроменени",
        "allmessages-prefix": "Филтриране по представка:",
        "allmessages-language": "Език:",
        "allmessages-filter-submit": "Отваряне",
-       "allmessages-filter-translate": "Ð\9fÑ\80евеждане",
+       "allmessages-filter-translate": "Ð\9fÑ\80евод",
        "thumbnail-more": "Увеличаване",
        "filemissing": "Липсващ файл",
        "thumbnail_error": "Грешка при създаване на миникартинка: $1",
        "import-revision-count": "$1 {{PLURAL:$1|версия|версии}}",
        "importnopages": "Няма страници за внасяне.",
        "imported-log-entries": "{{PLURAL:$1|Внесен е $1 запис|Внесени са $1 записа}} в дневника.",
-       "importfailed": "Внасянето беше неуспешно: $1",
+       "importfailed": "Внасянето беше неуспешно: nowiki>$1</nowiki>",
        "importunknownsource": "Непознат тип файл",
        "importcantopen": "Не е възможно да се отвори файла за внасяне",
        "importbadinterwiki": "Невалидна уики препратка",
        "import-upload": "Качване на XML данни",
        "import-token-mismatch": "Загуба на данните за текущата сесия.\n\nМоже би сте излезли от системата. <strong>Моля, уверете се, че сте влезли в профила си и опитайте отново</strong>.\nАко все още не работи, опитайте да [[Special:UserLogout|излезете]] и да влезете отново, също така проверете дали браузърът ви позволява бисквитки от този сайт.",
        "import-invalid-interwiki": "Не може да бъде извършено внасяне от посоченото уики.",
-       "import-error-edit": "СÑ\82Ñ\80аниÑ\86аÑ\82а â\80\9e$1â\80\9c Ð½Ðµ Ð±ÐµÑ\88е Ð¸Ð¼Ð¿Ð¾Ñ\80Ñ\82иÑ\80ана, тъй като нямате права да я редактирате.",
-       "import-error-create": "СÑ\82Ñ\80аниÑ\86аÑ\82а â\80\9e$1â\80\9c Ð½Ðµ Ð±ÐµÑ\88е Ð¸Ð¼Ð¿Ð¾Ñ\80Ñ\82иÑ\80ана, тъй като нямате права да я създадете.",
-       "import-error-interwiki": "СÑ\82Ñ\80аниÑ\86аÑ\82а â\80\9e$1â\80\9c Ð½Ðµ Ð±ÐµÑ\88е Ð¸Ð¼Ð¿Ð¾Ñ\80Ñ\82иÑ\80ана, тъй като името ѝ е запазено за външно свързване (междууики).",
+       "import-error-edit": "СÑ\82Ñ\80аниÑ\86аÑ\82а â\80\9e$1â\80\9c Ð½Ðµ Ð±ÐµÑ\88е Ð²Ð½ÐµÑ\81ена, тъй като нямате права да я редактирате.",
+       "import-error-create": "СÑ\82Ñ\80аниÑ\86аÑ\82а â\80\9e$1â\80\9c Ð½Ðµ Ð±ÐµÑ\88е Ð²Ð½ÐµÑ\81ена, тъй като нямате права да я създадете.",
+       "import-error-interwiki": "СÑ\82Ñ\80аниÑ\86аÑ\82а â\80\9e$1â\80\9c Ð½Ðµ Ð±ÐµÑ\88е Ð²Ð½ÐµÑ\81ена, тъй като името ѝ е запазено за външно свързване (междууики).",
        "import-error-special": "Страницата „$1“ не беше внесена, тъй като принадлежи към специално именно пространство, което не позволява страници.",
        "import-error-invalid": "Страницата „$1“ не беше внесена, тъй като името към което трябваше да бъде внесена е невалидно на това уики.",
        "import-rootpage-invalid": "Посочената основна страница е с невалидно заглавие.",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|версия беше внесена|версии бяха внесени}}",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|една версия беше внесена|$1 версии бяха внесени}} от $2",
        "javascripttest": "Тестване на JavaScript",
-       "javascripttest-pagetext-unknownaction": "Неизвестно действие \"$1\".",
+       "javascripttest-pagetext-unknownaction": "Неизвестно действие „$1“.",
        "javascripttest-qunit-intro": "Вижте [$1 тестовата документация] на mediawiki.org.",
        "tooltip-pt-userpage": "Вашата потребителска страница",
        "tooltip-pt-anonuserpage": "Потребителската страница за адреса, от който редактирате",
        "tooltip-pt-watchlist": "Списък на страници, чиито промени сте избрали да наблюдавате",
        "tooltip-pt-mycontris": "Списък на {{GENDER:|вашите}} приноси",
        "tooltip-pt-anoncontribs": "Списък на промените, направени от този IP адрес",
-       "tooltip-pt-login": "Ð\9dаÑ\81Ñ\8aÑ\80Ñ\87аваме Ð\92и Ð´Ð° Ð²Ð»ÐµÐ·ÐµÑ\82е, Ð²Ñ\8aпÑ\80еки че не е задължително.",
-       "tooltip-pt-logout": "Излизане от {{SITENAME}}",
+       "tooltip-pt-login": "Ð\9fÑ\80епоÑ\80Ñ\8aÑ\87ваме Ð\92и Ð´Ð° Ð²Ð»ÐµÐ·ÐµÑ\82е, Ð²Ñ\8aпÑ\80еки, че не е задължително.",
+       "tooltip-pt-logout": "Излизане",
        "tooltip-pt-createaccount": "Насърчаваме Ви да си създадете сметка и да влезете, въпреки че не е задължително.",
-       "tooltip-ca-talk": "Ð\91еÑ\81еда Ð¾Ñ\82ноÑ\81но страницата",
+       "tooltip-ca-talk": "Ð\91еÑ\81еда Ð·Ð° страницата",
        "tooltip-ca-edit": "Редактиране на страницата",
        "tooltip-ca-addsection": "Започване на нов раздел",
-       "tooltip-ca-viewsource": "Страницата е защитена. Можете да разгледате изходния й код.",
+       "tooltip-ca-viewsource": "Страницата е защитена. Можете да разгледате изходният ѝ код.",
        "tooltip-ca-history": "Предишни версии на страницата",
        "tooltip-ca-protect": "Защитаване на страницата",
        "tooltip-ca-unprotect": "Промяна на защитата за тази страница",
        "tooltip-minoredit": "Отбелязване на промяната като малка",
        "tooltip-save": "Съхраняване на промените",
        "tooltip-publish": "Публикуване на промените",
-       "tooltip-preview": "Предварителен преглед, използвайте го преди да съхраните!",
+       "tooltip-preview": "Предварителен преглед. Използвайте го преди да съхраните.",
        "tooltip-diff": "Показване на направените от вас промени по текста",
        "tooltip-compareselectedversions": "Показване на разликите между двете избрани версии на страницата",
        "tooltip-watch": "Добавяне на страницата към списъка ви за наблюдение",
        "creditspage": "Библиография и източници",
        "nocredits": "Няма въведени източници или библиография.",
        "spamprotectiontitle": "Филтър за защита от спам",
-       "spamprotectiontext": "СÑ\82Ñ\80аниÑ\86аÑ\82а, ÐºÐ¾Ñ\8fÑ\82о Ð¸Ñ\81каÑ\85Ñ\82е Ð´Ð° Ñ\81Ñ\8aÑ\85Ñ\80аниÑ\82е, Ð±ÐµÑ\88е Ð±Ð»Ð¾ÐºÐ¸Ñ\80ана Ð¾Ñ\82 Ñ\84илÑ\82Ñ\8aÑ\80а Ð¿Ñ\80оÑ\82ив Ñ\81пам. Ð¢Ð¾Ð²Ð° Ð¾Ð±Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¾ Ðµ Ð¿Ñ\80иÑ\87инено от препратка към външен сайт.",
+       "spamprotectiontext": "СÑ\82Ñ\80аниÑ\86аÑ\82а, ÐºÐ¾Ñ\8fÑ\82о Ð¸Ñ\81каÑ\85Ñ\82е Ð´Ð° Ñ\81Ñ\8aÑ\85Ñ\80аниÑ\82е, Ð±ÐµÑ\88е Ð±Ð»Ð¾ÐºÐ¸Ñ\80ана Ð¾Ñ\82 Ñ\84илÑ\82Ñ\8aÑ\80а Ð·Ð° Ñ\81пам. Ð¢Ð¾Ð²Ð° Ð¾Ð±Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¾ Ðµ Ð¿Ñ\80едизвикано от препратка към външен сайт.",
        "spamprotectionmatch": "Следният текст предизвика включването на филтъра: $1",
        "spambot_username": "Спамочистач",
        "spam_reverting": "Връщане на последната версия, несъдържаща препратки към $1",
        "spam_blanking": "Всички версии, съдържащи препратки към $1, изчистване",
        "spam_deleting": "Всички версии съдържат препратки към $1, изтриване",
-       "simpleantispam-label": "Ð\9fÑ\80овеÑ\80ка Ð·Ð° Ñ\81пам.\n<strong>Ð\9dÐ\95</strong> попълвайте това поле!",
+       "simpleantispam-label": "Ð\9fÑ\80овеÑ\80ка Ð·Ð° Ñ\81пам.\n<strong>Ð\9dе</strong> попълвайте това поле!",
        "pageinfo-title": "Информация за \"$1\"",
        "pageinfo-not-current": "За съжаление тази информация не може да бъде предоставена за стари версии.",
        "pageinfo-header-basic": "Основна информация",
        "markedaspatrollederror": "Не е възможно да се отбележи като проверена",
        "markedaspatrollederrortext": "Необходимо е да се посочи редакция, която да бъде отбелязана като проверена.",
        "markedaspatrollederror-noautopatrol": "Не е разрешено да маркирате своите редакции като проверени.",
-       "markedaspatrollednotify": "Тази Ð¿Ñ\80омÑ\8fна на $1 беше отбелязана като патрулирана.",
+       "markedaspatrollednotify": "РедакÑ\86иÑ\8fÑ\82а на $1 беше отбелязана като патрулирана.",
        "markedaspatrollederrornotify": "Неуспешно отбелязване на редакция като патрулирана.",
        "patrol-log-page": "Дневник на патрула",
        "patrol-log-header": "Тази страница съдържа дневник на проверените версии.",
        "exif-artist": "Автор",
        "exif-copyright": "Притежател на авторското право",
        "exif-exifversion": "Exif версия",
-       "exif-flashpixversion": "Поддържана версия Flashpix",
+       "exif-flashpixversion": "Поддържана версия на Flashpix",
        "exif-colorspace": "Цветово пространство",
        "exif-componentsconfiguration": "Значение на всеки компонент",
-       "exif-compressedbitsperpixel": "Режим Ð½Ð° ÐºÐ¾Ð¼Ð¿Ñ\80еÑ\81иÑ\8f Ð½Ð° Ð¾Ð±Ñ\80аза",
+       "exif-compressedbitsperpixel": "Режим Ð½Ð° ÐºÐ¾Ð¼Ð¿Ñ\80еÑ\81иÑ\8f Ð½Ð° Ð¸Ð·Ð¾Ð±Ñ\80ажениеÑ\82о",
        "exif-pixelxdimension": "Ширина на изображението",
        "exif-pixelydimension": "Височина на изображението",
-       "exif-usercomment": "Ð\94опÑ\8aлниÑ\82елни коментари",
+       "exif-usercomment": "Ð\9fоÑ\82Ñ\80ебиÑ\82елÑ\81ки коментари",
        "exif-relatedsoundfile": "Свързан звуков файл",
        "exif-datetimeoriginal": "Дата и час на създаване",
-       "exif-datetimedigitized": "Ð\94аÑ\82а Ð¸ Ñ\87аÑ\81 Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ\81а",
+       "exif-datetimedigitized": "Ð\94аÑ\82а Ð¸ Ñ\87аÑ\81 Ð½Ð° Ð´Ð¸Ð³Ð¸Ñ\82ализаÑ\86иÑ\8f",
        "exif-subsectime": "DateTime части от секундата",
        "exif-subsectimeoriginal": "DateTimeOriginal части от секундата",
        "exif-subsectimedigitized": "DateTimeDigitized части от секундата",
        "exif-keywords": "Ключови думи",
        "exif-worldregioncreated": "Регион на света, където е направена снимката",
        "exif-countrycreated": "Държава, в която е направена снимката",
-       "exif-countrycodecreated": "Ð\9aод Ð½Ð° Ð´Ñ\8aÑ\80жаваÑ\82а, ÐºÑ\8aдето е направена снимката",
-       "exif-provinceorstatecreated": "Ð\9eблаÑ\81Ñ\82 Ð¸Ð»Ð¸ Ñ\89аÑ\82, ÐºÑ\8aдето е направена снимката",
+       "exif-countrycodecreated": "Ð\9aод Ð½Ð° Ð´Ñ\8aÑ\80жаваÑ\82а, Ð² ÐºÐ¾Ñ\8fто е направена снимката",
+       "exif-provinceorstatecreated": "Ð\9eблаÑ\81Ñ\82 Ð¸Ð»Ð¸ Ñ\89аÑ\82, Ð² ÐºÐ¾Ð¹то е направена снимката",
        "exif-citycreated": "Град, в който е направена снимката",
        "exif-worldregiondest": "Показан регион на света",
        "exif-countrydest": "Показана държава",
        "exif-urgency-low": "Ниска ($1)",
        "exif-urgency-high": "Висока ($1)",
        "exif-urgency-other": "Зададен от потребителя приоритет ($1)",
-       "namespacesall": "Ð\92сички",
+       "namespacesall": "всички",
        "monthsall": "всички",
        "confirmemail": "Потвърждаване на адрес за електронна поща",
        "confirmemail_noemail": "Не сте посочили валиден адрес за електронна поща в [[Special:Preferences|настройки си]].",
        "confirmrecreate": "Потребител [[User:$1|$1]] ([[User talk:$1|беседа]]) е {{GENDER:$1|изтрил}} страницата, след като сте започнали да я редактирате, като е посочил следното обяснение:\n: <em>$2</em>\nПотвърдете, че наистина желаете да създадете страницата отново.",
        "confirmrecreate-noreason": "Потребител [[User:$1|$1]] ([[User talk:$1|беседа]]) {{GENDER:$1|изтри}} тази страница след като сте започнали да я редактирате. Необходимо е потвърждение, че наистина желаете да създадете страницата отново.",
        "recreate": "Ново създаване",
+       "confirm-purge-title": "Изчистване на страницата",
        "confirm_purge_button": "Добре",
        "confirm-purge-top": "Изчистване на складираното копие на страницата?",
-       "confirm-purge-bottom": "Изчистването на страница опреснява кеша и показва последната й версия.",
+       "confirm-purge-bottom": "Изчистването на страница опреснява кеша и показва последната ѝ версия.",
        "confirm-watch-button": "Потвърждаване",
        "confirm-watch-top": "Добавяне на страницата в списъка ви за наблюдение?",
        "confirm-unwatch-button": "Потвърждаване",
index 4a32779..e3912c1 100644 (file)
@@ -33,7 +33,8 @@
                        "Kayser Ahmad",
                        "NahidSultan",
                        "Elias Ahmmad",
-                       "Catrope"
+                       "Catrope",
+                       "Mohammed Galib Hasan"
                ]
        },
        "tog-underline": "সংযোগের নিচে দাগ দেখানো হোক:",
        "anontalk": "আলাপ",
        "navigation": "পরিভ্রমণ",
        "and": "&#32;এবং",
-       "qbfind": "অনুসন্ধান",
-       "qbbrowse": "ব্রাউজ",
-       "qbedit": "সম্পাদনা",
-       "qbpageoptions": "এই পাতা",
-       "qbmyoptions": "আমার পাতাগুলি",
        "faq": "প্রাজিপ্র",
-       "faqpage": "Project:প্রাজিপ্র",
        "actions": "কার্যক্রম",
        "namespaces": "নামস্থান",
        "variants": "বিকল্পসমূহ",
        "tagline": "{{SITENAME}} থেকে",
        "help": "সাহায্য",
        "search": "অনুসন্ধান",
-       "search-ignored-headings": " #<!-- এই লাইনটিকে ঠিক যেমন আছে তেমনটি রেখে দিন --> <pre>\n# যেসব শিরোনাম অনুসন্ধানে অগ্রাহ্য করা হবে।\n# যখনই শিরোনামযুক্ত পাতাটি সূচীভুক্ত হবে, তখনই এখানকার কোন পরিবর্তন বাস্তবায়িত হবে।\n# আপনি একটি নাল/শূন্য সম্পাদনা করে পাতাটিকে বলপূর্বক পুনঃসূচীভুক্ত করতে পারেন।\n# সিনট্যাক্স বা পদক্রম/পদবিন্যাসের নিয়মগুলি নিম্নরূপ:\n#   * অক্ষর থেকে শুরু করে লাইনের শেষ পর্যন্ত সবকিছু হচ্ছে একটি মন্তব্য বা কমেন্ট।\n#   * প্রতিটি অশূন্য লাইন হচ্ছে যে শিরোনামটি অগ্রাহ্য করা হবে, বড় হাতের লেখা এবং অন্যান্য সবকিছু গণনায় ধরে।\nতথ্যসূত্র\nবহিঃসংযোগ\nআরও দেখুন\n#</pre> <!-- এই লাইনটিকে ঠিক যেমন আছে তেমনটি রেখে দিন -->",
+       "search-ignored-headings": " #<!-- এই লাইনটিকে ঠিক যেমন আছে তেমনটি রেখে দিন --> <pre>\n# যেসব শিরোনাম অনুসন্ধানে অগ্রাহ্য করা হবে।\n# যখনই শিরোনামযুক্ত পাতাটি সূচীভুক্ত হবে, তখনই এখানকার কোন পরিবর্তন বাস্তবায়িত হবে।\n# আপনি একটি নাল/শূন্য সম্পাদনা করে পাতাটিকে বলপূর্বক পুনঃসূচীভুক্ত করতে পারেন।\n# সিনট্যাক্স বা পদক্রম/পদবিন্যাসের নিয়মগুলি নিম্নরূপ:\n#   * অক্ষর থেকে শুরু করে লাইনের শেষ পর্যন্ত সবকিছু হচ্ছে একটি মন্তব্য।\n#   * প্রতিটি অশূন্য লাইন হচ্ছে যে শিরোনামটি অগ্রাহ্য করা হবে, বড় হাতের লেখা এবং অন্যান্য সবকিছু গণনায় ধরে।\nতথ্যসূত্র\nবহিঃসংযোগ\nআরও দেখুন\n#</pre> <!-- এই লাইনটিকে ঠিক যেমন আছে তেমনটি রেখে দিন -->",
        "searchbutton": "অনুসন্ধান",
        "go": "চলো",
        "searcharticle": "চলো",
        "edit-local": "স্থানীয় বিবরণ সম্পাদনা করুন",
        "create": "তৈরি করুন",
        "create-local": "স্থানীয় বিবরণ যোগ করুন",
-       "editthispage": "এই পাতাটি সম্পাদনা করুন",
-       "create-this-page": "এই পাতাটি তৈরি করুন",
        "delete": "অপসারণ",
-       "deletethispage": "এই পাতাটি অপসারণ করুন",
-       "undeletethispage": "পাতাটি পুনরুদ্ধার করুন",
        "undelete_short": "{{PLURAL:$1|১টি সম্পাদনা|$1টি সম্পাদনা}} পুনঃস্থাপন করুন",
        "viewdeleted_short": "{{PLURAL:$1|একটি অপসারিত সম্পাদনা|$1টি অপসারিত সম্পাদনা}} দেখুন",
        "protect": "সুরক্ষা",
        "protect_change": "পরিবর্তন করুন",
-       "protectthispage": "এই পাতাটি সুরক্ষিত করুন",
        "unprotect": "সুরক্ষা পরিবর্তন",
-       "unprotectthispage": "এই পাতার সুরক্ষা পরিবর্তন করুন",
        "newpage": "নতুন পাতা",
-       "talkpage": "আলোচনা করুন",
        "talkpagelinktext": "আলোচনা",
        "specialpage": "বিশেষ পাতা",
        "personaltools": "নিজস্ব সরঞ্জামসমূহ",
-       "articlepage": "বিষয়বস্তুর পাতাটি দেখুন",
        "talk": "আলোচনা",
        "views": "দৃষ্টিকোণ",
        "toolbox": "সরঞ্জাম",
        "tool-link-userrights": "{{GENDER:$1|ব্যবহারকারী}} দল পরিবর্তন করুন",
        "tool-link-userrights-readonly": "{{GENDER:$1|ব্যবহারকারী}} দল দেখুন",
        "tool-link-emailuser": "এই {{GENDER:$1|ব্যবহারকারী}}কে ইমেইল পাঠান",
-       "userpage": "ব্যবহারকারীর পাতা দেখুন",
-       "projectpage": "প্রকল্প পাতাটি দেখুন",
        "imagepage": "ফাইল পাতা দেখুন",
        "mediawikipage": "বার্তার পাতা দেখুন",
        "templatepage": "টেমপ্লেট পাতা দেখুন",
        "rcfilters-filter-lastrevision-description": "একটি পাতার সর্বশেষ সাম্প্রতিক পরিবর্তন।",
        "rcfilters-filter-previousrevision-label": "পূর্ববর্তী সংশোধন",
        "rcfilters-filter-previousrevision-description": "সব পরিবর্তন যা একটি পাতার সর্বশেষ সাম্প্রতিক পরিবর্তন নয়।",
+       "rcfilters-view-tags": "ট্যাগসমূহ",
        "rcnotefrom": "<strong>$2</strong>টা থেকে সংঘটিত পরিবর্তনগুলি (সর্বোচ্চ <strong>$1টি</strong> দেখানো হয়েছে)।",
        "rclistfromreset": "তারিখ নির্বাচন পুনঃস্থাপন করুন",
        "rclistfrom": "$2, $3 তারিখের পর সংঘটিত নতুন পরিবর্তনগুলো দেখাও",
        "newimages-legend": "ছাঁকনি",
        "newimages-label": "ফাইলের নাম (অথবা এর কোন অংশ):",
        "newimages-user": "আইপি ঠিকানা বা ব্যবহারকারী নাম",
+       "newimages-newbies": "শুধু নতুন অ্যাকাউন্টের অবদানসমূহ দেখান",
        "newimages-showbots": "বটের আপলোড দেখান",
        "newimages-hidepatrolled": "টহলকৃত আপলোড লুকানো হোক",
+       "newimages-mediatype": "মিডিয়ার ধরন:",
        "noimages": "দেখার মত কিছু নেই।",
        "gallery-slideshow-toggle": "থাম্বনেল ভাসান",
        "ilsubmit": "অনুসন্ধান",
        "gotointerwiki-invalid": "নিদিষ্টকৃত শিরোনামটি অবৈধ।",
        "gotointerwiki-external": "আপনি [[$2]] পরিদর্শন করতে {{SITENAME}} ছাড়তে চলেছেন যা একটি ভিন্ন ওয়েবসাইট।\n\n'''[$1 $1-এ চলুন]'''",
        "undelete-cantedit": "আপনি এই পাতাটি ফিরিয়ে আনতে পারবেন না কারণ আপনার এই পাতাটি সম্পাদনা করার অনুমতি নেই।",
-       "undelete-cantcreate": "আপনি এই পাতাটি ফিরিয়ে আনতে পারবেন না কারণ এই নামে কোন পাতা বিদ্যমান নেই ও আপনার এই পাতাটি তৈরি করার অনুমতি নেই।"
+       "undelete-cantcreate": "আপনি এই পাতাটি ফিরিয়ে আনতে পারবেন না কারণ এই নামে কোন পাতা বিদ্যমান নেই ও আপনার এই পাতাটি তৈরি করার অনুমতি নেই।",
+       "pagedata-title": "পাতার উপাত্ত",
+       "pagedata-bad-title": "অপ্রযোজ্য শিরোনাম: \"$1\""
 }
index 1808595..d58caf3 100644 (file)
        "anontalk": "Kaozeal",
        "navigation": "Merdeiñ",
        "and": "&#32;ha(g)",
-       "qbfind": "Klask",
-       "qbbrowse": "Furchal",
-       "qbedit": "Kemmañ",
-       "qbpageoptions": "Pajenn an dibaboù",
-       "qbmyoptions": "Ma dibaboù",
        "faq": "FAG",
-       "faqpage": "Project:FAG",
        "actions": "Oberoù",
        "namespaces": "Esaouennoù anv",
        "variants": "Adstummoù",
        "edit-local": "Kemmañ an deskrivadur lec'hel",
        "create": "Krouiñ",
        "create-local": "Ouzhpennañ un deskrivadur lec'hel",
-       "editthispage": "Kemmañ ar bajenn-mañ",
-       "create-this-page": "Krouiñ ar bajenn-mañ",
        "delete": "Diverkañ",
-       "deletethispage": "Diverkañ ar bajenn-mañ",
-       "undeletethispage": "Diziverkañ ar bajenn-mañ",
        "undelete_short": "Diziverkañ {{PLURAL:$1|ur c'hemm|$1 kemm}}",
        "viewdeleted_short": "Gwelet {{PLURAL:$1|ur c'hemm diverket|$1 kemm diverket}}",
        "protect": "Gwareziñ",
        "protect_change": "kemmañ",
-       "protectthispage": "Gwareziñ ar bajenn-mañ",
        "unprotect": "Cheñch gwarez",
-       "unprotectthispage": "Cheñch live gwareziñ ar bajenn-mañ",
        "newpage": "Pajenn nevez",
-       "talkpage": "Pajenn gaozeal",
        "talkpagelinktext": "kaozeal",
        "specialpage": "Pajenn dibar",
        "personaltools": "Ostilhoù personel",
-       "articlepage": "Sellet ouzh ar pennad",
        "talk": "Kaozeadenn",
        "views": "Gweladennoù",
        "toolbox": "Ostilhoù",
        "tool-link-userrights": "Kemmañ strolladoù an {{GENDER:$1|implijer|implijerez}}",
        "tool-link-userrights-readonly": "Gwelet strolladoù an {{GENDER:$1|implijer|implijerez}}",
        "tool-link-emailuser": "Kas ur postel d'an {{PLURAL:$1|an implijer-mañ|an implijerez-mañ}}",
-       "userpage": "Pajenn implijer",
-       "projectpage": "Pajenn meta",
        "imagepage": "Gwelet pajenn ar restr",
        "mediawikipage": "Sellet ouzh pajenn ar c'hemennadennoù",
        "templatepage": "Gwelet patrom ar bajenn",
        "rcfilters-savedqueries-unsetdefault": "Diweredekaat dre ziouer",
        "rcfilters-savedqueries-remove": "Dilemel",
        "rcfilters-savedqueries-new-name-label": "Anv",
-       "rcfilters-savedqueries-apply-label": "Krouiñ ul liamm prim",
+       "rcfilters-savedqueries-apply-label": "Enrollañ an arventennoù",
        "rcfilters-savedqueries-cancel-label": "Nullañ",
-       "rcfilters-savedqueries-add-new-title": "Enrollañ ar siloù evel liammoù prim",
+       "rcfilters-savedqueries-add-new-title": "Enrollañ arventennoù ar sil en implij",
        "rcfilters-restore-default-filters": "Assevel ar siloù dre ziouer",
        "rcfilters-clear-all-filters": "Riñsañ an holl siloù",
        "rcfilters-search-placeholder": "Silañ ar c'hemmoù diwezhañ (merdeiñ pe kregiñ da skrivañ)",
index 4f5efff..2ec3c23 100644 (file)
        "anontalk": "Razgovor",
        "navigation": "Navigacija",
        "and": "&#32;i",
-       "qbfind": "Pronađi",
-       "qbbrowse": "Potraži",
-       "qbedit": "Uredi",
-       "qbpageoptions": "Opcije stranice",
-       "qbmyoptions": "Moje opcije",
        "faq": "ČPP",
-       "faqpage": "Project:NPP",
        "actions": "Akcije",
        "namespaces": "Imenski prostori",
        "variants": "Varijante",
        "edit-local": "Uredi lokalni opis",
        "create": "Napravi",
        "create-local": "Dodaj lokalni opis",
-       "editthispage": "Uredite ovu stranicu",
-       "create-this-page": "Napravi ovu stranicu",
        "delete": "Obriši",
-       "deletethispage": "Obriši ovu stranicu",
-       "undeletethispage": "Povrati ovu stranicu",
        "undelete_short": "Vrati obrisanih {{PLURAL:$1|$1 izmjenu|$1 izmjene|$1 izmjena}}",
        "viewdeleted_short": "Pogledaj {{PLURAL:$1|jednu obrisanu izmjenu|$1 obrisane izmjene|$1 obrisanih izmjena}}",
        "protect": "Zaštiti",
        "protect_change": "promijeni",
-       "protectthispage": "Zaštiti ovu stranicu",
        "unprotect": "Promijeni zaštitu",
-       "unprotectthispage": "Promijeni zaštitu ove stranice",
        "newpage": "Nova stranica",
-       "talkpage": "Razgovor o stranici",
        "talkpagelinktext": "razgovor",
        "specialpage": "Posebna stranica",
        "personaltools": "Lični alati",
-       "articlepage": "Pogledaj članak",
        "talk": "Razgovor",
        "views": "Pregledi",
        "toolbox": "Alati",
        "tool-link-userrights": "Promijeni {{GENDER:$1|korisničke}} grupe",
        "tool-link-userrights-readonly": "Vidi {{GENDER:$1|korisničke}} grupe",
        "tool-link-emailuser": "Pošalji e-poruku {{GENDER:$1|korisniku|korisnici}}",
-       "userpage": "Pogledaj korisničku stranicu",
-       "projectpage": "Pogledaj stranicu projekta",
        "imagepage": "Pogledaj stranicu datoteke",
        "mediawikipage": "Pogledaj stranicu sa porukama",
        "templatepage": "Pogledaj stranicu za šablone",
        "usernameinprogress": "Račun za ovo korisničko ime već se pravi. Molimo sačekajte.",
        "userexists": "Korisničko ime je već u upotrebi.\nIzaberite drugo.",
        "loginerror": "Greška pri prijavljivanju",
-       "createacct-error": "Došlo je do greške pri otvaranju naloga",
+       "createacct-error": "Greška u pravljenju računa",
        "createaccounterror": "Ne mogu napraviti račun: $1",
        "nocookiesnew": "Korisnički račun je napravljen, ali niste prijavljeni.\n{{SITENAME}} koristi kolačiće (cookies) za prijavu korisnika.\nVama su kolačići onemogućeni.\nOmogućite ih pa se onda prijavite s novim korisničkim imenom i lozinkom.",
        "nocookieslogin": "{{SITENAME}} koristi kolačiće (''cookies'') za prijavu korisnika.\nVama su kolačići onemogućeni.\nOmogućite ih i pokušajte ponovo.",
        "next-page": "sljedeća stranica",
        "prevn-title": "{{PLURAL:$1|Prethodni $1 rezultat|Prethodna $1 rezultata|Prethodnih $1 rezultata}}",
        "nextn-title": "{{PLURAL:$1|Sljedeći $1 rezultat|Sljedeća $1 rezultata|Sljedećih $1 rezultata}}",
-       "shown-title": "Pokaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici",
+       "shown-title": "Prikaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici",
        "viewprevnext": "Pogledaj ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''Postoji stranica pod nazivom \"[[:$1]]\" na ovoj wiki'''",
        "searchmenu-new": "<strong>Napravi stranicu \"[[:$1]]\" na ovoj wiki!</strong> {{PLURAL:$2|0=|Pogledajte također stranicu pronađenu vašom pretragom.|Pogledajte također i vaše rezultate pretrage.}}",
        "rc_categories_any": "Bilo koju odabranu",
        "rc-change-size-new": "$1 {{PLURAL:$1|bajt|bajta|bajtova}} poslije izmjene",
        "newsectionsummary": "/* $1 */ novi odlomak",
-       "rc-enhanced-expand": "Pokaži detalje",
+       "rc-enhanced-expand": "Prikaži detalje",
        "rc-enhanced-hide": "Sakrij detalje",
        "rc-old-title": "prvobitno kreirano kao \"$1\"",
        "recentchangeslinked": "Srodne izmjene",
        "recentchangeslinked-title": "Srodne promjene sa \"$1\"",
        "recentchangeslinked-summary": "Ova posebna stranica prikazuje promjene na povezanim stranicama.\nStranice koje su na vašem [[Special:Watchlist|spisku praćenja]] su '''podebljane'''.",
        "recentchangeslinked-page": "Naslov stranice:",
-       "recentchangeslinked-to": "Pokaži promjene stranica koji su povezane sa datom stranicom",
+       "recentchangeslinked-to": "Prikaži izmjene stranica koji su povezane s datom stranicom",
        "recentchanges-page-added-to-category": "Stranica [[:$1]] dodana je u kategoriju",
        "recentchanges-page-added-to-category-bundled": "Stranica [[:$1]] dodana je u kategoriju, [[Special:WhatLinksHere/$1|ovu stranicu sadrže druge stranice]]",
        "recentchanges-page-removed-from-category": "Stranica [[:$1]] uklonjena je iz kategorije",
        "protectedtitlesempty": "Nijedan naslov članka trenutno nije zaštićen ovim parametrima.",
        "protectedtitles-submit": "Prikaži naslove",
        "listusers": "Spisak korisnika",
-       "listusers-editsonly": "Pokaži samo korisnike koji su uređivali",
+       "listusers-editsonly": "Prikaži samo korisnike koji su uređivali",
        "listusers-creationsort": "Sortiraj po datumu pravljenja",
        "listusers-desc": "Sortiraj u opadajućem redoslijedu",
        "usereditcount": "$1 {{PLURAL:$1|izmjena|izmjene}}",
        "apisandbox-request-selectformat-label": "Prikaži zahtijevane podatke kao:",
        "apisandbox-request-url-label": "URL zahtjeva:",
        "apisandbox-results-fixtoken": "Ispravi žeton i pošalji ponovo",
+       "apisandbox-results-fixtoken-fail": "Nisam uspio dobiti žeton \"$1\".",
        "apisandbox-continue": "Nastavi",
        "apisandbox-continue-clear": "Očisti",
        "apisandbox-multivalue-all-namespaces": "$1 (svi imenski prostori)",
        "activeusers-intro": "Ovo je spisak korisnika koji su imali neku aktivnost u {{PLURAL:$1|posljednji $1 dan|posljednja $1 dana|posljednjih $1 dana}}.",
        "activeusers-count": "$1 {{PLURAL:$1|izmjena|izmjene|izmjena}} u {{PLURAL:$3|posljednji $3 dan|posljednja $3 dana|posljednjih $3 dana}}",
        "activeusers-from": "Prikaži korisnike koji počinju sa:",
+       "activeusers-groups": "Prikaži korisnike koji su članovi grupa:",
+       "activeusers-excludegroups": "Izuzmi korisnike koji su članovi grupa:",
        "activeusers-noresult": "Nije pronađen korisnik.",
        "activeusers-submit": "Prikaži aktivne korisnike",
        "listgrouprights": "Prava korisničkih grupa",
        "newimages-legend": "Filter",
        "newimages-label": "Ime datoteke (ili dio imena):",
        "newimages-user": "IP-adresa ili korisničko ime",
+       "newimages-newbies": "Prikaži doprinose samo novih računa",
        "newimages-showbots": "Prikaži datoteke koje su postavili botovi",
        "newimages-hidepatrolled": "Sakrij patrolirana postavljanja",
+       "newimages-mediatype": "Vrsta datoteke:",
        "noimages": "Nema ništa.",
        "gallery-slideshow-toggle": "Uključi/isključi sličice",
        "ilsubmit": "Traži",
        "tags-create-reason": "Razlog:",
        "tags-create-submit": "Napravi",
        "tags-create-no-name": "Morate navesti ime oznake.",
-       "tags-create-invalid-chars": "Nazivi oznaka ne smiju sadržavati zareze (<code>,</code>) ni kose crte (<code>/</code>).",
+       "tags-create-invalid-chars": "Nazivi oznaka ne smiju sadržavati zareze (<code>,</code>), uspravne (<code>|</code>) ni kose crte (<code>/</code>).",
        "tags-create-invalid-title-chars": "Nazivi oznaka ne smiju sadržavati znakove koje se ne mogu koristiti u naslovima stranica.",
        "tags-create-already-exists": "Oznaka \"$1\" već postoji.",
        "tags-create-warnings-above": "{{PLURAL:$2|Dogodila se sljedeća greška|Dogodile su se sljedeće greške}} pri stvaranju oznake \"$1\":",
        "expand_templates_remove_comments": "Ukloni komentare",
        "expand_templates_remove_nowiki": "Onemogući oznake <nowiki> u rezultatima",
        "expand_templates_generate_xml": "Prikaži XML stablo parsera",
-       "expand_templates_generate_rawhtml": "Pokaži izvorni HTML",
+       "expand_templates_generate_rawhtml": "Prikaži izvorni HTML",
        "expand_templates_preview": "Pregled",
        "expand_templates_preview_fail_html": "<em>Budući da {{SITENAME}} ima uključen sirov HTML, te je bilo gubitka u podacima sesije, pregled je sakriven kao mjera predostrožnosti protiv napada preko JavaScripta.</em>\n\n<strong>Ako je ovo ispravan pokušaj pretpregleda, pokušajte ponovo.</strong>\nAko i dalje ne bude radilo, pokušajte se [[Special:UserLogout|odjaviti]], pa ponovo prijaviti i provjerite dozvoljava li Vaš preglednik kolačiće s ovog sajta.",
        "expand_templates_preview_fail_html_anon": "<em>Pošto stranica {{SITENAME}} ima uključen sirov HTML prikaz, a vi se niste prijavili, pregled je sakriven kao mjera predostrožnosti protiv JavaScript napada.</em>\n\n<strong>Ako je ovo ispravan pokušaj pretpregleda, molim da se [[Special:UserLogin|prijavite]] i pokušate ponovo.</strong>",
index 068904c..8ae9a42 100644 (file)
        "anontalk": "Discussió",
        "navigation": "Navegació",
        "and": "&#32;i",
-       "qbfind": "Cerca",
-       "qbbrowse": "Navega",
-       "qbedit": "Modifica",
-       "qbpageoptions": "Opcions de pàgina",
-       "qbmyoptions": "Pàgines pròpies",
        "faq": "PMF",
-       "faqpage": "Project:PMF",
        "actions": "Accions",
        "namespaces": "Espais de noms",
        "variants": "Variants",
        "edit-local": "Modifica la descripció local",
        "create": "Crea",
        "create-local": "Afegeix una descripció local",
-       "editthispage": "Modifica la pàgina",
-       "create-this-page": "Crea aquesta pàgina",
        "delete": "Elimina",
-       "deletethispage": "Elimina la pàgina",
-       "undeletethispage": "Desfés l'eliminació d'aquesta pàgina",
        "undelete_short": "Restaura {{PLURAL:$1|l'edició eliminada|$1 edicions eliminades}}",
        "viewdeleted_short": "Mostra {{PLURAL:$1|una edició eliminada|$1 edicions eliminades}}",
        "protect": "Protegeix",
        "protect_change": "canvia",
-       "protectthispage": "Protegeix aquesta pàgina",
        "unprotect": "Desprotegeix",
-       "unprotectthispage": "Desprotegeix aquesta pàgina",
        "newpage": "Pàgina nova",
-       "talkpage": "Discussió",
        "talkpagelinktext": "discussió",
        "specialpage": "Pàgina especial",
        "personaltools": "Eines de l'usuari",
-       "articlepage": "Mostra la pàgina",
        "talk": "Discussió",
        "views": "Vistes",
        "toolbox": "Eines",
        "tool-link-userrights": "Canvia els grups de l'{{GENDER:$1|usuari|usuària}}",
        "tool-link-userrights-readonly": "Mostra els grups d'{{GENDER:$1|usuari}}",
        "tool-link-emailuser": "Envia un missatge electrònic a l'{{GENDER:$1|usuari|usuària}}",
-       "userpage": "Visualitza la pàgina d'usuari",
-       "projectpage": "Visualitza la pàgina del projecte",
        "imagepage": "Visualitza la pàgina del fitxer",
        "mediawikipage": "Visualitza la pàgina de missatges",
        "templatepage": "Visualitza la pàgina de plantilla",
        "userinvalidcssjstitle": "'''Atenció:''' No existeix l'aparença «$1». Recordeu que les subpàgines personalitzades amb extensions .css i .js utilitzen el títol en minúscules, per exemple, {{ns:user}}:NOM/vector.css no és el mateix que {{ns:user}}:NOM/Vector.css.",
        "updated": "(Actualitzat)",
        "note": "'''Nota:'''",
-       "previewnote": "<strong>Recorda que això és només una previsualització.</strong>\nEls vostres canvis encara no s’han desat!",
+       "previewnote": "<strong>Recordeu que això és només una previsualització.</strong>\nEls vostres canvis encara no s’han desat!",
        "continue-editing": "Aneu a l’àrea d’edició",
        "previewconflict": "Aquesta previsualització reflecteix, a l'àrea\nd'edició superior, el text tal com apareixerà si trieu desar-lo.",
        "session_fail_preview": "Disculpes! No s'ha pogut processar la vostra modificació a causa d'una pèrdua de dades de la sessió.\n\nPot ser que s'hagi tancat la sessió. <strong>Comproveu si teniu la sessió iniciada i proveu-ho una altra vegada</strong>.\nSi continués sense funcionar, proveu de [[Special:UserLogout|finalitzar la sessió]] i torneu a iniciar-ne una. Comproveu que el vostre navegador permeti les galetes d'aquest lloc.",
        "defaultmessagetext": "Missatge per defecte",
        "content-failed-to-parse": "Ha fallat l'anàlisi del contingut de $2 per al model $1: $3",
        "invalid-content-data": "Dades de contingut no vàlides",
-       "content-not-allowed-here": "No és permès el contingut \"$1\" a la pàgina [[$2]]",
+       "content-not-allowed-here": "No és permès el contingut «$1» a la pàgina [[$2]]",
        "editwarning-warning": "Si sortiu d'aquesta pàgina, perdreu tots els canvis que hàgiu fet.\nSi teniu un compte d'usuari, podeu eliminar aquest avís en la secció «{{int:prefs-editing}}» de les vostres preferències.",
        "editpage-invalidcontentmodel-title": "Model de contingut no permès",
        "editpage-invalidcontentmodel-text": "El model de contingut «$1» no és permès.",
        "recentchanges-submit": "Mostra",
        "rcfilters-activefilters": "Filtres actius",
        "rcfilters-quickfilters-placeholder-title": "Encara no s’ha desat cap enllaç",
+       "rcfilters-savedqueries-defaultlabel": "Filtres desats",
        "rcfilters-savedqueries-rename": "Reanomena",
+       "rcfilters-savedqueries-setdefault": "Defineix per defecte",
+       "rcfilters-savedqueries-remove": "Suprimeix",
        "rcfilters-savedqueries-new-name-label": "Nom",
        "rcfilters-savedqueries-apply-label": "Desa els paràmetres",
        "rcfilters-savedqueries-cancel-label": "Cancel·la",
+       "rcfilters-savedqueries-add-new-title": "Desa els paràmetres de filtres actuals",
        "rcfilters-restore-default-filters": "Restaura els filtres per defecte",
        "rcfilters-clear-all-filters": "Esborra tots els filtres",
        "rcfilters-search-placeholder": "Canvis recents dels filtres (navegueu o comenceu a escriure)",
        "rcfilters-filter-minor-description": "Modificacions que l'autor va etiquetar com a menors.",
        "rcfilters-filter-major-label": "Modificacions no menors",
        "rcfilters-filter-major-description": "Modificacions no etiquetades com a menors.",
+       "rcfilters-filtergroup-watchlist": "Pàgines en seguiment",
+       "rcfilters-filter-watchlist-watched-label": "A la llista de seguiment",
+       "rcfilters-filter-watchlist-watched-description": "Canvis a les pàgines en la vostra llista de seguiment.",
+       "rcfilters-filter-watchlist-watchednew-label": "Canvis nous a la llista de seguiment",
+       "rcfilters-filter-watchlist-watchednew-description": "Canvis a les pàgines en seguiment que no heu visitat des que van ocórrer els canvis.",
        "rcfilters-filter-watchlist-notwatched-label": "No és a la llista de seguiment",
        "rcfilters-filtergroup-changetype": "Tipus de canvi",
        "rcfilters-filter-pageedits-label": "Modificacions de pàgina",
        "rcfilters-filter-categorization-description": "Registres de pàgines afegides o suprimides de les categories.",
        "rcfilters-filter-logactions-label": "Accions registrades",
        "rcfilters-filter-logactions-description": "Accions administratives, creacions de comptes, eliminacions de pàgines, càrregues...",
+       "rcfilters-filtergroup-lastRevision": "Darrera revisió",
        "rcfilters-filter-lastrevision-label": "Darrera revisió",
+       "rcfilters-filter-lastrevision-description": "El canvi més recent a una pàgina.",
+       "rcfilters-filter-previousrevision-label": "Revisions anteriors",
        "rcnotefrom": "A sota hi ha {{PLURAL:$5|el canvi|els canvis}} a partir de <strong>$3, $4</strong> (fins a <strong>$1</strong>).",
        "rclistfrom": "Mostra els canvis nous des de $3, $2",
        "rcshowhideminor": "$1 edicions menors",
        "tooltip-pt-mycontris": "Llista de {{GENDER:|les vostres}} contribucions",
        "tooltip-pt-anoncontribs": "Una llista de les modificacions fetes des d'aquesta adreça IP",
        "tooltip-pt-login": "Us animem a registrar-vos, però no és obligatori",
+       "tooltip-pt-login-private": "Cal que inicieu una sessió per a utilitzar aquest wiki",
        "tooltip-pt-logout": "Finalitza la sessió d'usuari",
        "tooltip-pt-createaccount": "Us animem a què creeu un compte i inicieu sessió, encara que no és obligatori",
        "tooltip-ca-talk": "Discussió sobre el contingut d'aquesta pàgina",
        "mw-widgets-titleinput-description-redirect": "redirigeix a $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Afegeix una categoria...",
        "mw-widgets-usersmultiselect-placeholder": "Afegeix-ne més...",
+       "date-range-from": "De la data:",
+       "date-range-to": "A la data:",
        "sessionmanager-tie": "No es poden combinar diferents tipus de sol·licituds d'autenticació: $1.",
        "sessionprovider-generic": "$1 sessions",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sessions basades en galetes",
index bd74b76..0d108b2 100644 (file)
        "anontalk": "Дийцаре",
        "navigation": "Навигаци",
        "and": "&#32;а",
-       "qbfind": "Лахар",
-       "qbbrowse": "Хьажар",
-       "qbedit": "Нисъе",
-       "qbpageoptions": "АгӀона гӀирс нисбар",
-       "qbmyoptions": "Хьан нисдарш",
        "faq": "СиХХ",
-       "faqpage": "Project:СиХХ",
        "actions": "Дийраш",
        "namespaces": "ЦӀерийн меттигаш",
        "variants": "Кепараш",
        "searcharticle": "Дехьа гӀо",
        "history": "Истори",
        "history_short": "Истори",
+       "history_small": "истори",
        "updatedmarker": "Керла яккхина сона гинчултӀаьхьа",
        "printableversion": "Зорба туху верси",
        "permalink": "Даиман йолу хьажорг",
        "edit-local": "ТӀетоха локальни цуьнах лаьцна",
        "create": "Кхолла",
        "create-local": "ТӀетоха локальни цуьнах лаьцна",
-       "editthispage": "Нисъе хӀъара агӀо",
-       "create-this-page": "Кхолла хӀара агӀо",
        "delete": "ДӀаяккха",
-       "deletethispage": "ДӀаяккха хӀара агӀо",
-       "undeletethispage": "ХӀара агӀо меттахӀоттор",
        "undelete_short": "МеттахӀоттайé $1 {{PLURAL:$1|нисйинарг|нисйинарш}}",
        "viewdeleted_short": "{{PLURAL:$1|$1 ДӀадаьккхина нийсдаре|$1 ДӀадаьхна нийсдарше}} хьажар",
        "protect": "Ларъяр",
        "protect_change": "хийца",
-       "protectthispage": "Ларъе хӀара агӀо",
        "unprotect": "Ларъяр хийцар",
-       "unprotectthispage": "ХӀокху агӀонан ларъяр хийца",
        "newpage": "Керла агӀонаш",
-       "talkpage": "ХӀара агӀо йийцаре йилла",
        "talkpagelinktext": "Дийцаре",
        "specialpage": "Белхан агӀо",
        "personaltools": "Долахь болу гӀирсаш",
-       "articlepage": "Хьажа яззаме",
        "talk": "Дийцаре",
        "views": "Хьажарш",
        "toolbox": "ГӀирсаш",
        "tool-link-userrights": "{{GENDER:$1|Декъашхочун}} бакъо хийцар",
        "tool-link-userrights-readonly": "Хьажа {{GENDER:$1|декъашхочун}} тобанаш",
        "tool-link-emailuser": "Язде {{GENDER:$1|декъашхочунга}} кехат",
-       "userpage": "Хьажа декъашхочуьна агӀоне",
-       "projectpage": "Хьажа кхолламан агӀоне",
        "imagepage": "Хьажа файлан агӀоне",
        "mediawikipage": "Хьагайта хааман агӀо",
        "templatepage": "Хьажа кепа агӀоне",
        "createacct-another-realname-tip": "Декъашхочун бакъ цӀе (яз ца йича мега).\nАхьа и язяхь, агӀона хийцам бича хьан цӀе гуш хира ю.",
        "pt-login": "ЧугӀо",
        "pt-login-button": "ЧугӀо",
+       "pt-login-continue-button": "Чекхдаккха",
        "pt-createaccount": "Кхолла декъашхочун дӀаяздар",
        "pt-userlogout": "Болх дӀаберзор",
        "php-mail-error-unknown": "PHP-функцин mail() доьвзуш доцу гӀалат",
        "newpassword": "Керла пароль:",
        "retypenew": "Юха язъйе керла пароль:",
        "resetpass_submit": "Пароль дӀахӀоттийна а системин чугӀо",
-       "changepassword-success": "Хьан пароль кхиамца хийцина!",
+       "changepassword-success": "Хьан пароль хийцина!",
        "changepassword-throttled": "Хьо дукха гӀиртира.\nДехар до, собар де $1 юха гӀортале.",
        "botpasswords": "Ботийн парольш",
        "botpasswords-editexisting": "Тае ботан йолуш йолу пароль",
        "postedit-confirmation-restored": "АгӀо меттахӀотта йина.",
        "postedit-confirmation-saved": "Хьан нисдар дӀаяздина.",
        "edit-already-exists": "Керла агӀо кхолла цатарло.\nИза хӀинцале йолуш ю.",
-       "defaultmessagetext": "Ӏад дитарца йоза",
+       "defaultmessagetext": "Ӏадйитаран кепаца йоза",
        "content-failed-to-parse": "Чулацам $2 богӀуш бац $1: $3.",
        "invalid-content-data": "Хилийта йиш йоцу хаамаш",
        "content-not-allowed-here": "Чулацам \"$1\" [[$2]] агӀонгахь хилийта йиш яц",
        "content-model-css": "CSS",
        "content-json-empty-object": "Еса объект",
        "content-json-empty-array": "Еса меттиг",
+       "deprecated-self-close-category": "ШадӀакъовлалуш мегаш йоцу HTML-тегаш йолу агӀонаш",
        "duplicate-args-warning": "Тидам: [[:$1]] кхойкху [[:$2]] «дегӀан_хатӀ» «$3» параметран цхьаннал сов маьӀна долу карточка.\nТӀаьххьара къастийна долу маьӀна бен лелор дац.",
        "duplicate-args-category": "Кепийн кхайкхамашкахь аргументаш юх-юха лелош йолу агӀонаш",
        "expensive-parserfunction-warning": "'''Тидам бе!''' Ресурсийн функцийн дехарш сов даьлла агӀонаш .\n\nДукху хилла ца деза {{PLURAL:$2|$2 дехар|$2 дехарш|1=цхьана дехар}}, хӀинца $1 {{PLURAL:$1|дехар}} ду.",
        "post-expand-template-inclusion-category": "Чу дуьхкуш долу кепийн барам тӀех баьлла агӀонаш",
        "post-expand-template-argument-category": "Кепийн аргументаш юкъахь йитина агӀонаш",
        "parser-template-loop-warning": "Карийна кепаш юкъахь хилла шад: [[$1]]",
+       "template-loop-category": "Шеддаш болу кепаш йолу агӀонаш",
        "parser-template-recursion-depth-warning": "Дозанал хьаладаьлла кӀоргенца юх юха дина кеп ($1)",
        "node-count-exceeded-category": "Шедийн дукхалла сов даьлла агӀонаш",
        "node-count-exceeded-warning": "Шедийн дукхалла сов даьлла агӀонаш",
        "search-interwiki-caption": "Гергара проекташ",
        "search-interwiki-default": "$1 хилам:",
        "search-interwiki-more": "(кхин)",
+       "search-interwiki-more-results": "Кхин каринарш",
        "search-relatedarticle": "ХӀоттаделларг",
        "searchrelated": "хlоттаделларг",
        "searchall": "массо",
        "showingresultsinrange": "Лахахь гайтина {{PLURAL:$1|<strong>1</strong> хилам}} диапазонехь <strong>$2</strong> тӀера <strong>$3</strong> кхаччалц.",
        "search-showingresults": "{{PLURAL:$4|Карийна <strong>$1</strong> — цхьаъ агӀо|И дош карийна <strong>$3</strong> агӀонашкахь, царех гойту $2 агӀо}}",
        "search-nonefound": "Дехаре терра цхьа хӀума ца карийна.",
+       "search-nonefound-thiswiki": "Дехаре терра цхьа хӀума ца карийна сайтехь.",
        "powersearch-legend": "Шуьйра лахар",
        "powersearch-ns": "ЦӀерийн меттигашкахь лахар:",
        "powersearch-togglelabel": "Билгалдан:",
        "prefsnologintext2": "Дехар до, гӀирс дӀанисбан язъяр.",
        "prefs-skin": "Кечяран тема",
        "skin-preview": "Хьалха хьажар",
-       "datedefault": "Iад йитарца",
+       "datedefault": "Ӏадйитаран кеп",
        "prefs-labs": "Муха ю хьажарна таронаш",
        "prefs-user-pages": "Декъашхочун агӀо",
        "prefs-personal": "Долахь болу хаамаш",
        "prefs-email": "Электронан поштан параметраш",
        "prefs-rendering": "Арахьара хатl",
        "saveprefs": "Ӏалашдан",
-       "restoreprefs": "МеттахӀоттабе гӀирс Iад битарца",
+       "restoreprefs": "Ӏадйитаран кеп",
        "prefs-editing": "Тадар",
        "searchresultshead": "Лахар",
        "stub-threshold": "Кеч яран доза коьртан хьажоргашна ($1):",
        "stub-threshold-disabled": "ДӀадайина",
        "recentchangesdays": "Керла нисдар гайта динахь:",
        "recentchangesdays-max": "Къезиг $1 {{PLURAL:$1|дена}}",
-       "recentchangescount": "Iад йитарца гойтуш долу нисдарийн дукхалла",
+       "recentchangescount": "Ӏадйитаран кепаца гойтуш долу нисдарийн дукхалла",
        "prefs-help-recentchangescount": "Гойту керла нисдарш, агӀонийн истори, тептарш.",
        "prefs-help-watchlist-token2": "Иза хьан тергаме могӀан къайла догӀа ду.\nМуьлха и хуучунна йиш ю хьан тергаме могӀам беша, цундела ма хаийта иза кхечаьрга. [[Special:ResetTokens|ТӀетаӀа йе кхуза и хьайга кхосса лууш делахь]].",
        "savedprefs": "Хьан гӀирс Ӏалашбина.",
        "allowemail": "Магийта декъашхошна хьайга электронан поштехула кехат кхехьийта",
        "prefs-searchoptions": "Лахар",
        "prefs-namespaces": "ЦӀерийн меттигаш",
-       "default": "Iад йитарца",
+       "default": "Ӏадйитаран кеп",
        "prefs-files": "Файлаш",
        "prefs-custom-css": "Долахь йолу CSS",
        "prefs-custom-js": "Долахь йолу JS",
        "prefs-common-css-js": "Юкъара CSS/JS массо кеч даран темийн:",
-       "prefs-reset-intro": "ХӀара агӀо лело мега ахьа нисбина гӀирс Ӏад битарца юха бокхуш.\nХӀара дешдерг кхочушъ динчул  тӀехьа хьан йиш хир-яц и юха меттахӀотто.",
+       "prefs-reset-intro": "ХӀара агӀо лело мега ахьа нисбина гӀирс Ӏадбитаран кепаца юха бокхуш.\nХӀара дешдерг кхочушъ динчул  тӀехьа хьан йиш хир-яц и юха меттахӀотто.",
        "prefs-emailconfirm-label": "Электронан пошт бакъ яр:",
        "youremail": "Электронан пошт:",
        "username": "{{GENDER:$1|Декъашхочун цӀе}}:",
        "prefs-memberingroups": "{{GENDER:$1|Тобана|Тобаншан}} {{PLURAL:$2|декъашхо|декъашхой}}:",
+       "group-membership-link-with-expiry": "$1 ($2 тӀе кхаччалц)",
        "prefs-registration": "ДӀаяздар кхолийна хан:",
        "yourrealname": "Хьан бакъ цӀе:",
        "yourlanguage": "Мотт:",
        "userrights-no-interwiki": "Хьан бакъо яц декъашхой бакъо хийца кхечу википеди чохь.",
        "userrights-changeable-col": "Хьоьга хийцалун бакъонаш",
        "userrights-unchangeable-col": "Хьоьга хийцалун бакъонаш",
+       "userrights-expiry-current": "Чекхйолу $1",
        "userrights-expiry-none": "Цкъа а",
        "userrights-expiry": "Бакъо дӀайолу:",
+       "userrights-expiry-existing": "$2, $3",
        "userrights-expiry-othertime": "Кхин хан:",
+       "userrights-expiry-options": "1 де:1 day,1 кӀира:1 week,1 бутт:1 mopnth,3 months,6 бутт:6 months,1 шо:1 year",
+       "userrights-invalid-expiry": "«$1» группин хан чеккхйолу хан нийса яц.",
        "group": "Тоба:",
        "group-user": "Декъашхой",
        "group-autoconfirmed": "АвтотӀелаьцна декъашхой",
        "grant-group-file-interaction": "Медиафайлашца зӀе",
        "grant-group-email": "ДӀадахьийта кехат",
        "grant-group-high-volume": "Дешдерг сиха дар",
+       "grant-group-other": "Тайп-тайпанара жигаралла",
        "grant-blockusers": "Декъашхойн блоктохар а, блокдӀаяккхар а",
        "grant-createaccount": "Декъашхочун дӀаяздарш кхоллар",
        "grant-createeditmovepage": "АгӀонашна хийцам бар",
        "recentchanges-legend-heading": "<strong>Легенда:&nbsp;</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (хьажа кхин [[Special:NewPages|керла агӀонийн могӀа]])",
        "recentchanges-submit": "Гайта",
+       "rcfilters-savedqueries-defaultlabel": "Ӏалашъе луьттург",
+       "rcfilters-savedqueries-rename": "ЦӀе хийцар",
+       "rcfilters-savedqueries-setdefault": "Ӏадйитаран кеп хӀоттае",
+       "rcfilters-savedqueries-unsetdefault": "Ӏадйитаран кеп дӀаяккха",
+       "rcfilters-savedqueries-remove": "ДӀаяккха",
+       "rcfilters-savedqueries-new-name-label": "ЦӀе",
+       "rcfilters-savedqueries-apply-label": "Ӏалашде нисъяр",
+       "rcfilters-savedqueries-cancel-label": "Цаоьшу",
+       "rcfilters-savedqueries-add-new-title": "Ӏалашде литтар нисъяр",
+       "rcfilters-restore-default-filters": "Литтарш Ӏадйитаран кепе меттахӀоттае",
+       "rcfilters-clear-all-filters": "Ерриге литтарш цӀанъян",
        "rcfilters-filterlist-title": "Литтарш",
        "rcfilters-filterlist-noresults": "Литтарш цакарий",
+       "rcfilters-filtergroup-registration": "Декъашхойн регистраци",
+       "rcfilters-filter-registered-label": "Регистрацийинарш",
+       "rcfilters-filter-unregistered-label": "Регистрацицайинарш",
        "rcfilters-filtergroup-authorship": "Нисде авторалла",
        "rcfilters-filter-editsbyself-label": "Хьан дисдарш",
        "rcfilters-filter-editsbyself-description": "Хьан нисдарш.",
        "rcfilters-filter-editsbyother-label": "Кхечу декъашхойн нисдарш",
        "rcfilters-filter-user-experience-level-newcomer-label": "Керланиш",
        "rcfilters-filter-user-experience-level-learner-label": "Доьшуш берш",
+       "rcfilters-filter-bots-label": "Бот",
+       "rcfilters-filter-patrolled-label": "Патрулйина",
+       "rcfilters-filtergroup-lastRevision": "Карара верси",
+       "rcfilters-filter-lastrevision-label": "Карара верси",
+       "rcfilters-filter-lastrevision-description": "АгӀона уггаре тӀеххьара хийцамаш.",
+       "rcfilters-filter-previousrevision-label": "Хьалхара версеш",
+       "rcfilters-filter-excluded": "ДӀаяьккхина",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
+       "rcfilters-view-tags": "Билгалонаш",
        "rcnotefrom": "Лахахь гайтина тӀера <strong>$2</strong> (хийцамаш <strong>$1</strong> кӀезиг).",
+       "rclistfromreset": "Терахь харжар дӀадаккха",
        "rclistfrom": "Гайта хийцам {{CURRENTYEAR}} шеран {{CURRENTDAY}} {{CURRENTMONTHNAMEGEN}} {{CURRENTTIME}} бина болу",
        "rcshowhideminor": "$1 кегийра нисдарш",
        "rcshowhideminor-show": "Гайта",
        "apihelp-no-such-module": "Модуль «$1» цакарий.",
        "apisandbox": "Ловзаран майда API",
        "apisandbox-intro": "Лела йе хӀара агӀо '''MediaWiki API''' зуьйш.\nAPI кхин муха лела йо хьажа [https://www.mediawiki.org/wiki/API:Main_page кхузахь]. Масала, [https://www.mediawiki.org/wiki/API#A_simple_example Коьрта агӀона чулацам схьаэца]. Кхин масалаш ган харжа дийриг.",
+       "apisandbox-fullscreen": "Схьаяста панель",
        "apisandbox-unfullscreen": "Гайта агӀо",
        "apisandbox-submit": "Дехар далар",
        "apisandbox-reset": "ЦӀанъян",
        "apisandbox-retry": "ЮхагӀорта",
-       "apisandbox-examples": "Масала",
+       "apisandbox-helpurls": "ГӀоьна гӀирсийн тӀе хьажоргаш",
+       "apisandbox-examples": "Масалаш",
+       "apisandbox-dynamic-parameters": "Кхин параметраш",
        "apisandbox-dynamic-parameters-add-label": "ТӀетоха параметр:",
        "apisandbox-dynamic-parameters-add-placeholder": "Параметран цӀе",
        "apisandbox-dynamic-error-exists": "«$1» цӀе йолу параметр йолуш ю",
        "apisandbox-results": "Хилам",
        "apisandbox-request-url-label": "Дехаран URL-адрес:",
        "apisandbox-request-time": "Дехар дина хан: $1",
+       "apisandbox-continue": "Кхин дӀа",
+       "apisandbox-continue-clear": "ЦӀанъян",
+       "apisandbox-continue-help": "{{int:apisandbox-continue}} [https://www.mediawiki.org/wiki/API:Query#Continuing_queries чекхдаккха] тӀеххьара дехар; {{int:apisandbox-continue-clear}} чекхдаккхарца йолу параметраш цӀанъян.",
+       "apisandbox-multivalue-all-namespaces": "$1 (Ерриге цӀерийн меттигаш)",
+       "apisandbox-multivalue-all-values": "$1 (Дерриге маьӀнаш)",
        "booksources": "Жайнан хьосташ",
        "booksources-search-legend": "Жайнех лаьцна хаам лахар",
        "booksources-search": "Лахар",
        "trackingcategories-msg": "Категореш зер",
        "trackingcategories-name": "Хааман цӀе",
        "trackingcategories-desc": "Категорин чутухуш йолчун хила деза хьал",
+       "restricted-displaytitle-ignored": "Гуш йолуш цӀерш тергалцойо агӀонаш",
        "expensive-parserfunction-category-desc": "АгӀорахь тӀех дуккха ресурсийн функцеш лелош ю (<code>#ifexist</code> саниш). Мадарра ду — [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit] агӀонгахь.",
        "trackingcategories-nodesc": "Цунах лаьцна хӀума дац.",
        "trackingcategories-disabled": "Категори дӀаяйина ю",
        "changecontentmodel": "АгӀона контентан модель таяр",
        "changecontentmodel-title-label": "АгӀона цӀе",
        "changecontentmodel-reason-label": "Бахьана:",
+       "changecontentmodel-submit": "Хийца",
        "logentry-contentmodel-change-revertlink": "юхаяккха",
        "logentry-contentmodel-change-revert": "Юхаяккха",
        "protectlogpage": "Ларяран тептар",
        "modifiedarticleprotection": "«[[$1]]» агӀонан ларяран локхалла хийцина",
        "unprotectedarticle": "«[[$1]]» ларъяр дӀадаьстина",
        "movedarticleprotection": "«[[$2]]» агӀона тӀера ларъяр «[[$1]]» агӀона тӀе даьккхина",
+       "protectedarticle-comment": "{{GENDER:$2|Ларйина}} «[[$1]]»",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Хийцина}} «[[$1]]» лаъръяран барам",
+       "unprotectedarticle-comment": "{{GENDER:$2|ДӀадаьккхина}} «[[$1]]» тӀера ларъяр",
        "protect-title": "Ларъяр: «$1»",
        "protect-title-notallowed": "ГӀораллин бараме хьажар «$1»",
        "prot_1movedto2": "«[[$1]]» цӀе хийцина → «[[$2]]»",
        "ipb-unblock": "дӀаякхаблок декъашхонтӀера я IP-адрес тӀера",
        "ipb-blocklist": "Блоктоьхнарш",
        "ipb-blocklist-contribs": "{{GENDER:$1|$1}} къинхьегам",
+       "ipb-blocklist-duration-left": "$1 йисина",
        "unblockip": "ДӀаякхаблок декъашхонтӀера",
        "unblockiptext": "Лелае лахара форма IP-адрес тӀера я декъашхойн дӀаяздар тӀера блокдӀайокхуш.",
        "ipusubmit": "ДIаяккха хӀара блок",
        "unblocked": "[[User:$1|$1]] хьайаьстина.",
        "unblocked-range": "$1 блоктоьхна",
        "unblocked-id": "$1 блокдӀаяьккхина",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] блокдӀаяьккхина.",
        "blocklist": "Блоктоьхна декъашхой",
+       "autoblocklist": "Автоблоктохарш",
+       "autoblocklist-submit": "Лахар",
+       "autoblocklist-legend": "Автоблоктохарийн могӀам",
+       "autoblocklist-localblocks": "{{PLURAL:$1|Локальни автоблоктохар|Локальни автоблоктохарш}}",
+       "autoblocklist-total-autoblocks": "Дерриге автоблоктохарш: $1",
+       "autoblocklist-empty": "Автоблоктохарийн могӀам беса бу",
+       "autoblocklist-otherblocks": "{{PLURAL:$1|Кхин автоблоктохар|Кхин автоблоктохарш}}",
        "ipblocklist": "Блоктоьхна декъашхой",
        "ipblocklist-legend": "Блоктоьхна декъашхо лахар",
        "blocklist-userblocks": "ДӀахьулян дӀаяздарийн блоктохарш",
        "export-templates": "Латадé кепаш",
        "allmessages": "ГӀирса хаамаш",
        "allmessagesname": "Хаам",
-       "allmessagesdefault": "Ӏад дитарца йоза",
+       "allmessagesdefault": "Ӏадйитаран кепаца йоза",
        "allmessagescurrent": "Карарчу хенан йоза",
        "allmessagestext": "ХӀара «MediaWiki» цӀерийн меттигера системан хаамийн могӀа бу.\nХьайна MediaWiki тая лууш делахь, дехар до, проект [https://translatewiki.net translatewiki.net] [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation юьйцучу хьажа].",
        "allmessagesnotsupportedDB": "'''$wgUseDatabaseMessages''' дӀаяйина хилар бахьнехь хӀара агӀо дӀачӀаьгӀна ю.",
        "pageinfo-header-restrictions": "АгӀона ларъяр",
        "pageinfo-header-properties": "АгӀона билгало",
        "pageinfo-display-title": "Гушболу корта",
-       "pageinfo-default-sort": "Къасторан догӀа Ӏад йитарца",
+       "pageinfo-default-sort": "Къасторан догӀа Ӏадйитаран кепаца",
        "pageinfo-length": "АгӀона йохалла (байташкахь)",
        "pageinfo-article-id": "АгӀона ID",
        "pageinfo-language": "АгӀона мотт",
+       "pageinfo-language-change": "хийца",
        "pageinfo-content-model": "АгӀона чулацаман модель",
+       "pageinfo-content-model-change": "хийца",
        "pageinfo-robot-policy": "Лахарийн системийн индексаци",
        "pageinfo-robot-index": "Магийна",
        "pageinfo-robot-noindex": "Магийна дац",
        "pageinfo-category-pages": "АгӀонийн дукхалла",
        "pageinfo-category-subcats": "Бухара категорийн дукхалла",
        "pageinfo-category-files": "Файлийн дукхалла",
+       "pageinfo-user-id": "Декъашхочун ID",
        "markaspatrolleddiff": "Билгалйе теллина санна",
        "markaspatrolledtext": "Билгалъе хӀара агӀо хьаьжжина сана",
        "markedaspatrolled": "ДӀадахка теллина санна хилар",
        "patrol-log-header": "Хьажжина версеш йолу тептар.",
        "log-show-hide-patrol": "$1 тӀехьажаран тептар",
        "log-show-hide-tag": "$1 билгалонийн тептар",
+       "confirm-markpatrolled-button": "ХӀаъ",
        "deletedrevision": "ДӀаяьккхина шира верси $1",
        "filedeleteerror-short": "Файл дӀаяккхаран гӀалат: $1",
        "filedeleteerror-long": "Файл дӀайоккхуш гӀалат даьлла:\n\n$1",
        "newimages-user": "Декъашхочун цӀе я IP-адрес",
        "newimages-showbots": "Гайта боташ чуяьхна файлаш",
        "newimages-hidepatrolled": "Къайлаяха патруль йина файлаш",
+       "newimages-mediatype": "Медиа тайпа:",
        "noimages": "Суьрташ дац.",
+       "gallery-slideshow-toggle": "ТӀеяха миниатюраш",
        "ilsubmit": "Лахар",
        "bydate": "терахьашца",
        "sp-newimages-showfrom": "Гайта керла файлаш $2, $1 тӀера дуьйна",
        "exif-urgency-low": "Лахара ($1)",
        "exif-urgency-high": "Лакхара ($1)",
        "exif-urgency-other": "Декъашхочо билгалйина приоритет ($1)",
-       "namespacesall": "маÑ\81Ñ\81о",
+       "namespacesall": "еÑ\80Ñ\80иге",
        "monthsall": "массо",
        "confirmemail": "Электронан поштан адрес бакъдар",
        "confirmemail_noemail": "Ахьа нийса электронан поштан адрес яздина дац [[Special:Preferences|гӀирсан чохь]].",
        "confirm-watch-top": "ТӀетоха хӀара агӀо хьан тергаме могӀам юкъа?",
        "confirm-unwatch-button": "ХӀаъ",
        "confirm-unwatch-top": "ДӀаяккха хӀара агӀо хьай тергаме могӀанан юкъар?",
+       "confirm-rollback-button": "ХӀаъ",
+       "confirm-rollback-top": "ХӀокху агӀона нисдарш юхадаха?",
        "comma-separator": " a,&#32;",
        "quotation-marks": "«$1»",
        "imgmultipageprev": "← хьалха йоьду агӀо",
        "imgmultipagenext": "тӀаьхьа йоьгӀу агӀо →",
        "imgmultigo": "ДехьагӀо!",
        "imgmultigoto": "АгӀончу $1 гӀо",
-       "img-lang-default": "(Ӏад битарца болу мотт)",
+       "img-lang-default": "(Ӏадйитаран кепаца болу мотт)",
        "img-lang-info": "Гайта хӀара сурт $1 $2 маттахь",
        "img-lang-go": "Кхочушдé",
        "ascending_abbrev": "гар",
        "version-specialpages": "Белхан агӀонаш",
        "version-parserhooks": "Cинтаксисан къастор схьалоцурш",
        "version-variables": "Хийцаме",
+       "version-antispam": "Антиспам",
        "version-other": "Кхин",
        "version-mediahandlers": "Медиа кеч ерраш",
        "version-hooks": "Схьалуьцарш",
        "tags-deactivate": "дӀаяйа",
        "tags-hitcount": "$1 {{PLURAL:$1|хийцам}}",
        "tags-create-heading": "Кхолла керла билгало",
-       "tags-create-explanation": "Юха кхоьллина билгалонаш декъашхошна а, боташна а Ӏад йтарца тӀекхочуш хира ю.",
+       "tags-create-explanation": "Юха кхоьллина билгалонаш декъашхошна а, боташна а Ӏадйитаран кепаца тӀекхочуш хира ю.",
        "tags-create-tag-name": "Билгалонна цӀе:",
        "tags-create-reason": "Бахьана:",
        "tags-create-submit": "Кхолла",
        "tags-edit-revision-legend": "ТӀетоха я дӀаяха тегаш {{PLURAL:$1|this revision|all $1 revisions}} чура",
        "tags-edit-logentry-legend": "ТӀетоха я дӀаяха тегаш {{PLURAL:$1|this log entry|all $1 log entries}} чура",
        "tags-edit-existing-tags": "Йолуш йолу билгалонаш:",
-       "tags-edit-existing-tags-none": "''ХӀахӀа''",
+       "tags-edit-existing-tags-none": "''ХӀан-хӀа''",
        "tags-edit-new-tags": "Керла билгалонаш:",
        "tags-edit-add": "ТӀетоха хӀара билгалонаш:",
        "tags-edit-remove": "ДӀаяха хӀара билгалонаш:",
        "tags-edit-remove-all-tags": "(дӀаяха массо билгалонаш)",
        "tags-edit-chosen-placeholder": "Харжа цхьаъ я массийта тег",
+       "tags-edit-chosen-no-results": "Лоьхуш йолу билгалонаш цакарий",
        "tags-edit-reason": "Бахьана:",
        "tags-edit-nooldid-title": "Ӏалашонан верси билгалйина яц",
        "comparepages": "АгӀонаш юстар",
        "pagelanguage": "АгӀона мотт харжар",
        "pagelang-name": "АгӀо",
        "pagelang-language": "Мотт",
-       "pagelang-use-default": "Ӏад битарца мотт",
+       "pagelang-use-default": "Ӏадйитаран кепаца мотт",
        "pagelang-select-lang": "Харжа мотт",
        "pagelang-submit": "ДӀадахьийта",
        "right-pagelang": "АгӀона мотт хийца",
index bcb5dc9..145aa30 100644 (file)
        "anontalk": "Diskuse",
        "navigation": "Navigace",
        "and": "&#32;a",
-       "qbfind": "Hledání",
-       "qbbrowse": "Listování",
-       "qbedit": "Editování",
-       "qbpageoptions": "Tato stránka",
-       "qbmyoptions": "Moje stránky",
        "faq": "Často kladené otázky",
-       "faqpage": "Project:Často kladené otázky",
        "actions": "Akce",
        "namespaces": "Jmenné prostory",
        "variants": "Varianty",
        "edit-local": "Editovat místní popis",
        "create": "Vytvořit",
        "create-local": "Přidat místní popis",
-       "editthispage": "Editovat stránku",
-       "create-this-page": "Vytvořit tuto stránku",
        "delete": "Smazat",
-       "deletethispage": "Smazat stránku",
-       "undeletethispage": "Obnovit tuto stránku",
        "undelete_short": "Obnovit $1 {{PLURAL:$1|verzi|verze|verzí}}",
        "viewdeleted_short": "Zobrazit {{PLURAL:$1|smazanou editaci|$1 smazané editace|$1 smazaných editací}}",
        "protect": "Zamknout",
        "protect_change": "změnit",
-       "protectthispage": "Zamknout stránku",
        "unprotect": "Změnit zámek",
-       "unprotectthispage": "Změnit zámek této stránky",
        "newpage": "Nová stránka",
-       "talkpage": "Diskusní stránka",
        "talkpagelinktext": "diskuse",
        "specialpage": "Speciální stránka",
        "personaltools": "Osobní nástroje",
-       "articlepage": "Prohlédnout si stránku",
        "talk": "Diskuse",
        "views": "Zobrazení",
        "toolbox": "Nástroje",
        "tool-link-userrights": "Změnit uživatelské skupiny {{GENDER:$1|tohoto uživatele|této uživatelky}}",
        "tool-link-userrights-readonly": "Zobrazit {{GENDER:$1|uživatelské}} skupiny",
        "tool-link-emailuser": "Poslat e-mail {{GENDER:$1|tomuto uživateli|této uživatelce}}",
-       "userpage": "Prohlédnout si uživatelskou stránku",
-       "projectpage": "Prohlédnout si stránku projektu",
        "imagepage": "Prohlédnout si stránku o souboru",
        "mediawikipage": "Prohlédnout si text rozhraní",
        "templatepage": "Prohlédnout si šablonu",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Zobrazit",
        "rcfilters-activefilters": "Aktivní filtry",
-       "rcfilters-quickfilters": "Od data:",
+       "rcfilters-quickfilters": "Uložená nastavení filtrů",
        "rcfilters-quickfilters-placeholder-title": "Zatím neuloženy žádné odkazy",
        "rcfilters-quickfilters-placeholder-description": "Pokud chcete uložit svá nastavení filtrů a použít je později, klikněte na ikonku záložky v ploše aktivních filtrů níže.",
        "rcfilters-savedqueries-defaultlabel": "Uložené filtry",
        "rcfilters-savedqueries-unsetdefault": "Nemít jako výchozí",
        "rcfilters-savedqueries-remove": "Odstranit",
        "rcfilters-savedqueries-new-name-label": "Název",
-       "rcfilters-savedqueries-apply-label": "Vytvořit rychlý odkaz",
+       "rcfilters-savedqueries-apply-label": "Uložit nastavení",
        "rcfilters-savedqueries-cancel-label": "Zrušit",
-       "rcfilters-savedqueries-add-new-title": "Uložit filtry jako rychlý odkaz",
+       "rcfilters-savedqueries-add-new-title": "Uložit současné nastavení filtrů",
        "rcfilters-restore-default-filters": "Obnovit výchozí filtry",
        "rcfilters-clear-all-filters": "Zrušit všechny filtry",
        "rcfilters-search-placeholder": "Filtrovat nedávné změny (prohlížejte nebo začněte psát)",
        "rcfilters-filter-watchlist-notwatched-description": "Vše kromě změn vašich sledovaných stránek.",
        "rcfilters-filtergroup-changetype": "Typ změny",
        "rcfilters-filter-pageedits-label": "Editace stránek",
-       "rcfilters-filter-pageedits-description": "Editace obsahu wiki, diskusí, popisů kategorií...",
+       "rcfilters-filter-pageedits-description": "Editace obsahu wiki, diskusí, popisů kategorií",
        "rcfilters-filter-newpages-label": "Založení stránek",
        "rcfilters-filter-newpages-description": "Editace, které vytvářejí nové stránky.",
        "rcfilters-filter-categorization-label": "Změny kategorií",
        "rcfilters-filter-categorization-description": "Záznamy stránek zařazených do nebo vyřazených z kategorií.",
        "rcfilters-filter-logactions-label": "Zaznamenané činnosti",
-       "rcfilters-filter-logactions-description": "Administrativní úkony, založení účtů, mazání stránek, načtení souborů...",
+       "rcfilters-filter-logactions-description": "Administrativní úkony, založení účtů, mazání stránek, načtení souborů",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Filtr „Malé editace“ je v konfliktu s jedním nebo více filtry podle typu změny, protože určité typy změn nelze označit jako malé. Dotyčné filtry jsou označeny nahoře, v prostoru „Aktivní filtry“.",
        "rcfilters-hideminor-conflicts-typeofchange": "Určité typy změn nelze označit jako malé, tento filtr je proto v konfliktu s následujícími filtry podle typu změny: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Tento filtr podle typu změny je v konfliktu s filtrem „Malé editace“. Určité typy změn nelze označit jako malé.",
        "rcfilters-filter-lastrevision-description": "Poslední změna stránky.",
        "rcfilters-filter-previousrevision-label": "Dřívější verze",
        "rcfilters-filter-previousrevision-description": "Všechny změny, které nejsou nejnovější úpravou stránky.",
+       "rcfilters-view-tags": "Značky",
        "rcnotefrom": "Níže {{PLURAL:$5|je změna|jsou změny}} od <strong>$3, $4</strong> ({{PLURAL:$1|zobrazena|zobrazeny|zobrazeno}} nejvýše <strong>$1</strong>).",
        "rclistfromreset": "Obnovit výběr data",
        "rclistfrom": "Ukázat nové změny, počínaje od $2, $3",
        "newimages-legend": "Filtr",
        "newimages-label": "Název souboru (nebo jeho část):",
        "newimages-user": "IP adresa nebo uživatelské jméno",
+       "newimages-newbies": "Zobrazit pouze příspěvky nových účtů",
        "newimages-showbots": "Zobrazit soubory načtené roboty",
        "newimages-hidepatrolled": "Skrýt prověřená načtení souborů",
        "noimages": "Není co zobrazit.",
        "tags-create-reason": "Důvod:",
        "tags-create-submit": "Vytvořit",
        "tags-create-no-name": "Musíte uvést název značky.",
-       "tags-create-invalid-chars": "Názvy značek nesmí obsahovat čárky (<code>,</code>) ani dopředná lomítka (<code>/</code>).",
+       "tags-create-invalid-chars": "Názvy značek nesmí obsahovat čárky (<code>,</code>), svislé čáry (<code>|</code>) ani dopředná lomítka (<code>/</code>).",
        "tags-create-invalid-title-chars": "Názvy značek nesmí obsahovat znaky, které nelze používat v názvech stránek.",
        "tags-create-already-exists": "Značka „$1“ již existuje.",
        "tags-create-warnings-above": "Při pokusu o vytvoření značky „$1“ {{PLURAL:$1|bylo zjištěno|byla zjištěna}} následující varování:",
index b4ef245..68727dd 100644 (file)
        "anontalk": "Diskussion",
        "navigation": "Navigation",
        "and": "&#32;og",
-       "qbfind": "Søg",
-       "qbbrowse": "Gennemse",
-       "qbedit": "Redigér",
-       "qbpageoptions": "Denne side",
-       "qbmyoptions": "Mine sider",
        "faq": "OSS",
-       "faqpage": "Project:OSS",
        "actions": "Handlinger",
        "namespaces": "Navnerum",
        "variants": "Varianter",
        "edit-local": "Redigér lokal beskrivelse",
        "create": "Opret",
        "create-local": "Tilføj lokal beskrivelse",
-       "editthispage": "Redigér side",
-       "create-this-page": "Opret denne side",
        "delete": "Slet",
-       "deletethispage": "Slet side",
-       "undeletethispage": "Gendan denne side",
        "undelete_short": "Gendan {{PLURAL:$1|én redigering|$1 redigeringer}}",
        "viewdeleted_short": "Vis {{PLURAL:$1|én slettet redigering|$1 slettede redigeringer}}",
        "protect": "Beskyt",
        "protect_change": "ændr",
-       "protectthispage": "Beskyt side",
        "unprotect": "Ændr beskyttelse",
-       "unprotectthispage": "Ændr beskyttelsen af denne side",
        "newpage": "Ny side",
-       "talkpage": "Diskussion",
        "talkpagelinktext": "diskussion",
        "specialpage": "Speciel side",
        "personaltools": "Personlige værktøjer",
-       "articlepage": "Se artiklen",
        "talk": "Diskussion",
        "views": "Visninger",
        "toolbox": "Værktøjer",
        "tool-link-userrights": "Ændre {{GENDER:$1|bruger}}grupper",
        "tool-link-userrights-readonly": "Se {{GENDER:$1|bruger}}grupper",
        "tool-link-emailuser": "Send e-mail til denne {{GENDER:$1|bruger}}",
-       "userpage": "Vis brugerside",
-       "projectpage": "Vis projektside",
        "imagepage": "Vis filside",
        "mediawikipage": "Vis beskedside",
        "templatepage": "Vis skabelonside",
        "botpasswords-label-delete": "Slet",
        "botpasswords-label-resetpassword": "Nulstil adgangskode",
        "botpasswords-label-grants": "Tilgængelige bevillinger:",
+       "botpasswords-created-title": "Botkodeord oprettet",
        "botpasswords-updated-title": "Bot kodeord opdateret",
        "botpasswords-deleted-title": "Bot kodeord slettet",
        "resetpass_forbidden": "Adgangskoder kan ikke ændres",
        "page_last": "Enden",
        "histlegend": "Forklaring: (nuværende) = forskel til den nuværende\nversion, (forrige) = forskel til den forrige version, M = mindre ændring",
        "history-fieldset-title": "Søg efter versioner",
-       "history-show-deleted": "Kun slettede",
+       "history-show-deleted": "Kun slettede revisioner",
        "histfirst": "ældste",
        "histlast": "nyeste",
        "historysize": "($1 {{PLURAL:$1|Byte|Bytes}})",
        "mergehistory-done": "$3 {{PLURAL:$3|version|versioner}} af $1 blev flettet sammen med [[:$2]].",
        "mergehistory-fail": "Sammenfletningen kunne ikke gennemføres. Vær venlig at kontrollere sidenavne og tidsafgrænsning.",
        "mergehistory-fail-bad-timestamp": "Tidsangivelsen er ugyldig.",
+       "mergehistory-fail-invalid-source": "Kildesiden er ugyldig.",
+       "mergehistory-fail-invalid-dest": "Målsiden er ugyldigt.",
        "mergehistory-fail-toobig": "Ude af stand til at flette historiken sammen, fordi flere end grænsen på $1 {{PLURAL:$1|version|versioner}} ville blive flyttet.",
        "mergehistory-no-source": "Kildesiden $1 findes ikke.",
        "mergehistory-no-destination": "Destinationssiden $1 findes ikke.",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Vis",
        "rcfilters-activefilters": "Aktive filtre",
+       "rcfilters-quickfilters": "Gemte filterindstillinger",
+       "rcfilters-quickfilters-placeholder-title": "Ingen links gemt endnu",
        "rcfilters-savedqueries-defaultlabel": "Gemte filtre",
        "rcfilters-savedqueries-rename": "Omdøb",
        "rcfilters-savedqueries-setdefault": "Vælg som grundindstilling",
        "rcfilters-savedqueries-unsetdefault": "Fravælg som grundindstilling",
        "rcfilters-savedqueries-remove": "Fjern",
        "rcfilters-savedqueries-new-name-label": "Navn",
+       "rcfilters-savedqueries-apply-label": "Gem indstillinger",
        "rcfilters-savedqueries-cancel-label": "Annullér",
+       "rcfilters-savedqueries-add-new-title": "Gem nuværende filterindstillinger",
        "rcfilters-restore-default-filters": "Gendan standardfiltre",
        "rcfilters-clear-all-filters": "Ryd alle filtre",
        "rcfilters-search-placeholder": "Filtrer seneste ændringer (gennemse eller begynd at taste)",
        "rcfilters-empty-filter": "Ingen aktive filtre. All bidrag vises.",
        "rcfilters-filterlist-title": "Filtre",
        "rcfilters-filterlist-whatsthis": "Hvad er dette?",
+       "rcfilters-filterlist-feedbacklink": "Giv feedback på de nye (beta)filtre",
        "rcfilters-highlightbutton-title": "Fremhæv resultater",
        "rcfilters-highlightmenu-title": "Vælg en farve",
        "rcfilters-highlightmenu-help": "Vælg en farve for at fremhæve denne egenskab",
        "rcfilters-filterlist-noresults": "Ingen filtre fundet",
+       "rcfilters-noresults-conflict": "Ingen resultater fundet fordi søgekriterierne er i konflikt",
        "rcfilters-filtergroup-registration": "Brugerregistrering",
-       "rcfilters-filter-registered-label": "Registreret",
+       "rcfilters-filter-registered-label": "Registrerede",
        "rcfilters-filter-registered-description": "Indloggede brugere",
-       "rcfilters-filter-unregistered-label": "Uregistreret",
+       "rcfilters-filter-unregistered-label": "Uregistrerede",
        "rcfilters-filter-unregistered-description": "Redaktører, der ikke er logget ind.",
+       "rcfilters-filtergroup-authorship": "Bidragets forfatter",
        "rcfilters-filter-editsbyself-label": "Ændringer af dig",
        "rcfilters-filter-editsbyself-description": "Dine egne bidrag.",
        "rcfilters-filter-editsbyother-label": "Ændringer af andre",
        "rcfilters-filter-editsbyother-description": "Alle ændringer undtagen din egen.",
        "rcfilters-filtergroup-userExpLevel": "Erfaringsniveau (kun for registrerede brugere)",
+       "rcfilters-filtergroup-user-experience-level-conflicts-unregistered": "Erfaringsfiltre finder kun registrerede brugere, så dette filter er i konflikt med filtret \"Uregistrerede\".",
        "rcfilters-filter-user-experience-level-newcomer-label": "Nybegyndere",
        "rcfilters-filter-user-experience-level-newcomer-description": "Færre end 10 redigeringer og 4 dages aktivitet",
+       "rcfilters-filter-user-experience-level-learner-label": "Let øvede",
        "rcfilters-filter-user-experience-level-learner-description": "Mere erfaring end \"nybegyndere\" men mindre end \"erfarne brugere\".",
        "rcfilters-filter-user-experience-level-experienced-label": "Erfarne brugere",
        "rcfilters-filter-user-experience-level-experienced-description": "Over 30 dages aktivitet og 500 redigeringer.",
        "rcfilters-filter-bots-description": "Redigeringer udført af automatiserede værktøjer.",
        "rcfilters-filter-humans-label": "Menneske (ikke bot)",
        "rcfilters-filter-humans-description": "Redigeringer udført af mennesker.",
+       "rcfilters-filtergroup-reviewstatus": "Gennemgangsstatus",
        "rcfilters-filter-patrolled-label": "Patruljerede",
        "rcfilters-filter-patrolled-description": "Redigeringer markerede som patruljerede.",
        "rcfilters-filter-unpatrolled-label": "Upatruljerede",
        "rcfilters-filter-unpatrolled-description": "Redigeringer ikke markerede som patruljerede.",
+       "rcfilters-filtergroup-significance": "Betydning",
        "rcfilters-filter-minor-label": "Mindre redigeringer",
        "rcfilters-filter-minor-description": "Redigeringer som ophavsmanden har markeret som mindre.",
+       "rcfilters-filter-major-label": "Ikke-mindre ændringer",
+       "rcfilters-filter-major-description": "Ændringer som ikke er markerede som mindre.",
+       "rcfilters-filtergroup-watchlist": "Overvågede sider",
+       "rcfilters-filter-watchlist-watched-label": "På overvågningsliste",
+       "rcfilters-filter-watchlist-watched-description": "Ændringer af sider på din overvågningsliste",
+       "rcfilters-filter-watchlist-watchednew-label": "Nye ændringer på overvågningslisten",
+       "rcfilters-filter-watchlist-watchednew-description": "Ændringer af overvågede sider du ikke har besøgt siden ændringerne blev gjort.",
+       "rcfilters-filter-watchlist-notwatched-label": "Ikke på overvågningsliste",
+       "rcfilters-filter-watchlist-notwatched-description": "Alt undtagen ændringer af sider på din overvågningsliste.",
+       "rcfilters-filtergroup-changetype": "Type ændring",
+       "rcfilters-filter-pageedits-label": "Sideredigeringer",
+       "rcfilters-filter-pageedits-description": "Ændringer af wikiindhold, diskussioner, kategoribeskrivelser...",
+       "rcfilters-filter-newpages-label": "Sideoprettelser",
+       "rcfilters-filter-newpages-description": "Redigeringer som opretter nye sider.",
+       "rcfilters-filter-categorization-label": "Kategoriændringer",
+       "rcfilters-filter-categorization-description": "Optegnelser af at sider bliver tilføjet til eller fjernet fra kategorier.",
+       "rcfilters-filter-logactions-label": "Loggede handlinger",
+       "rcfilters-filter-logactions-description": "Administrative handlinger, kontooprettelser, sidesletninger, uploads...",
+       "rcfilters-filtergroup-lastRevision": "Sidste revision",
+       "rcfilters-filter-lastrevision-label": "Seneste revision",
+       "rcfilters-filter-lastrevision-description": "Den nyeste ændring af en side.",
+       "rcfilters-filter-previousrevision-label": "Tidligere revisioner",
+       "rcfilters-filter-previousrevision-description": "Alle ændringer som ikke er den nyeste ændring af en side.",
        "rcnotefrom": "Nedenfor er op til '''$1''' {{PLURAL:$5|ændring|ændringer}} siden '''$2''' vist.",
        "rclistfromreset": "Nulstil datovalg",
        "rclistfrom": "Vis nye ændringer startende fra den $3 kl. $2",
        "upload-too-many-redirects": "URL'en indeholdt for mange omdirigeringer",
        "upload-http-error": "Der opstod en HTTP-fejl: $1",
        "upload-copy-upload-invalid-domain": "Uploads af kopier er ikke tilgængelig fra dette domæne.",
+       "upload-dialog-disabled": "Filuploads ved brug af denne dialog er slået fra på denne wiki.",
        "upload-dialog-title": "Læg en fil op",
        "upload-dialog-button-cancel": "Annuller",
        "upload-dialog-button-back": "Tilbage",
        "mw-widgets-titleinput-description-new-page": "side eksisterer ikke endnu",
        "mw-widgets-titleinput-description-redirect": "omdiriger til $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Tilføj en kategori...",
+       "date-range-from": "Fra dato:",
+       "date-range-to": "Til dato:",
        "randomrootpage": "Tilfældig stamside",
        "log-action-filter-block": "Blokeringstype:",
        "log-action-filter-delete": "Sletningstype:",
index c53cb0e..824fa9c 100644 (file)
        "anontalk": "Diskussionsseite",
        "navigation": "Navigation",
        "and": "&#32;und",
-       "qbfind": "Finden",
-       "qbbrowse": "Durchsuchen",
-       "qbedit": "Bearbeiten",
-       "qbpageoptions": "Seitenoptionen",
-       "qbmyoptions": "Meine Seiten",
        "faq": "Häufig gestellte Fragen",
-       "faqpage": "Project:FAQ",
        "actions": "Aktionen",
        "namespaces": "Namensräume",
        "variants": "Varianten",
        "edit-local": "Lokale Beschreibung bearbeiten",
        "create": "Erstellen",
        "create-local": "Lokale Beschreibung hinzufügen",
-       "editthispage": "Seite bearbeiten",
-       "create-this-page": "Seite erstellen",
        "delete": "Löschen",
-       "deletethispage": "Diese Seite löschen",
-       "undeletethispage": "Diese Seite wiederherstellen",
        "undelete_short": "{{PLURAL:$1|1 Version|$1 Versionen}} wiederherstellen",
        "viewdeleted_short": "{{PLURAL:$1|Eine gelöschte Version|$1 gelöschte Versionen}} ansehen",
        "protect": "Schützen",
        "protect_change": "ändern",
-       "protectthispage": "Seite schützen",
        "unprotect": "Seitenschutz ändern",
-       "unprotectthispage": "Seitenschutz ändern",
        "newpage": "Neue Seite",
-       "talkpage": "Diese Seite diskutieren",
        "talkpagelinktext": "Diskussion",
        "specialpage": "Spezialseite",
        "personaltools": "Meine Werkzeuge",
-       "articlepage": "Inhaltsseite anzeigen",
        "talk": "Diskussion",
        "views": "Ansichten",
        "toolbox": "Werkzeuge",
        "tool-link-userrights": "{{GENDER:$1|Benutzergruppen}} ändern",
        "tool-link-userrights-readonly": "{{GENDER:$1|Benutzergruppen}} ansehen",
        "tool-link-emailuser": "E-Mail an {{GENDER:$1|diesen Benutzer|diese Benutzerin}} senden",
-       "userpage": "Benutzerseite anzeigen",
-       "projectpage": "Projektseite anzeigen",
        "imagepage": "Dateiseite anzeigen",
        "mediawikipage": "Meldungsseite anzeigen",
        "templatepage": "Vorlagenseite anzeigen",
        "rcfilters-filter-newpages-description": "Bearbeitungen, die zu neuen Seiten führen.",
        "rcfilters-filter-categorization-label": "Kategorieänderungen",
        "rcfilters-filter-categorization-description": "Einträge von Seiten, die zu Kategorien hinzugefügt oder aus ihnen entfernt wurden.",
-       "rcfilters-filter-logactions-label": "Protokollierte Aktionen",
+       "rcfilters-filter-logactions-label": "Logbucheinträge",
        "rcfilters-filter-logactions-description": "Administrative Aktionen, Benutzerkontenerstellungen, Seitenlöschungen, hochgeladene Dateien …",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Der Filter „Kleine Bearbeitungen“ kollidiert mit einem oder mehreren Änderungstypfiltern, da bestimmte Änderungstypen nicht als „klein“ festgelegt werden können. Die kollidierenden Filter sind oben im Bereich der aktiven Filter markiert.",
        "rcfilters-hideminor-conflicts-typeofchange": "Bestimmte Änderungstypen können nicht als „klein“ festgelegt werden, so dass dieser Filter mit den folgenden Änderungstypfiltern kollidiert: $1",
        "rcfilters-filter-lastrevision-description": "Die aktuellste Änderung an einer Seite.",
        "rcfilters-filter-previousrevision-label": "Frühere Versionen",
        "rcfilters-filter-previousrevision-description": "Alle Änderungen, die nicht die aktuellste Änderung an einer Seite sind.",
+       "rcfilters-filter-excluded": "Ausgeschlossen",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:nicht</strong> $1",
+       "rcfilters-view-tags": "Markierungen",
        "rcnotefrom": "Angezeigt {{PLURAL:$5|wird die Änderung|werden die Änderungen}} seit <strong>$3, $4</strong> (max. <strong>$1</strong> Einträge).",
        "rclistfromreset": "Datumsauswahl zurücksetzen",
        "rclistfrom": "Nur Änderungen seit $3, $2 Uhr zeigen.",
        "newimages-legend": "Filter",
        "newimages-label": "Dateiname (oder ein Teil davon):",
        "newimages-user": "IP-Adresse oder Benutzername",
+       "newimages-newbies": "Nur Beiträge neuer Benutzerkonten anzeigen",
        "newimages-showbots": "Von Bots hochgeladene Dateien anzeigen",
        "newimages-hidepatrolled": "Kontrollierte Dateien ausblenden",
+       "newimages-mediatype": "Medientyp:",
        "noimages": "Keine Dateien gefunden.",
        "gallery-slideshow-toggle": "Vorschaubilder umschalten",
        "ilsubmit": "Suchen",
        "tags-create-reason": "Grund:",
        "tags-create-submit": "Erstellen",
        "tags-create-no-name": "Du musst einen Markierungsnamen angeben.",
-       "tags-create-invalid-chars": "Markierungsnamen dürfen keine Kommas (<code>,</code>) oder Schrägstriche (<code>/</code>) enthalten.",
+       "tags-create-invalid-chars": "Markierungsnamen dürfen keine Kommata (<code>,</code>), senkrechte Striche (<code>|</code>) oder Schrägstriche (<code>/</code>) enthalten.",
        "tags-create-invalid-title-chars": "Markierungsnamen dürfen keine Zeichen enthalten, die nicht in Seitennamen verwendet werden können.",
        "tags-create-already-exists": "Die Markierung „$1“ ist bereits vorhanden.",
        "tags-create-warnings-above": "Die {{PLURAL:$2|folgende Warnung ist|folgenden Warnungen sind}} beim Versuch, die Markierung „$1“ zu erstellen, aufgetreten:",
        "gotointerwiki-invalid": "Der angegebene Titel ist ungültig.",
        "gotointerwiki-external": "Du bist dabei, {{SITENAME}} zu verlassen, um [[$2]] zu besuchen, was eine externe Website ist.\n\n'''[$1 Auf $1 fortfahren]'''",
        "undelete-cantedit": "Du kannst diese Seite nicht wiederherstellen, da du nicht berechtigt bist, diese Seite zu bearbeiten.",
-       "undelete-cantcreate": "Du kannst diese Seite nicht wiederherstellen, da es keine vorhandene Seite mit diesem Namen gibt und du nicht berechtigt bist, diese Seite zu erstellen."
+       "undelete-cantcreate": "Du kannst diese Seite nicht wiederherstellen, da es keine vorhandene Seite mit diesem Namen gibt und du nicht berechtigt bist, diese Seite zu erstellen.",
+       "pagedata-title": "Seitendaten",
+       "pagedata-text": "Diese Seite stellt eine Datenschnittstelle für Seiten zur Verfügung. Bitte gib mithilfe der Unterseitensyntax den Seitentitel in der URL an.\n* Übertragungen von Inhalten werden basierend auf dem Accept-Header deines Clients ausgeführt. Das bedeutet, dass die Seitendaten in dem Format zur Verfügung gestellt werden, das von deinem Client bevorzugt wird.",
+       "pagedata-not-acceptable": "Kein passendes Format gefunden. Unterstützte MIME-Typen: $1",
+       "pagedata-bad-title": "Ungültiger Titel: $1."
 }
index eabd0d6..1492aa4 100644 (file)
@@ -52,7 +52,8 @@
                        "Ανώνυμος Βικιπαιδιστής",
                        "GR",
                        "Thodoris",
-                       "Ftsalamp"
+                       "Ftsalamp",
+                       "Kostas20142"
                ]
        },
        "tog-underline": "Υπογράμμιση συνδέσμων:",
        "anontalk": "Σελίδα συζήτησης αυτής της διεύθυνσης IP",
        "navigation": "Πλοήγηση",
        "and": "&#32;και",
-       "qbfind": "Εύρεση",
-       "qbbrowse": "Περιήγηση",
-       "qbedit": "Επεξεργασία",
-       "qbpageoptions": "Αυτή η σελίδα",
-       "qbmyoptions": "Οι σελίδες μου",
        "faq": "Συχνές ερωτήσεις",
-       "faqpage": "Project:Συχνές ερωτήσεις",
        "actions": "Ενέργειες",
        "namespaces": "Ονοματοχώροι",
        "variants": "Παραλλαγές",
        "edit-local": "Επεξεργασία τοπικής περιγραφής",
        "create": "Δημιουργία",
        "create-local": "Προσθήκη τοπικής περιγραφής",
-       "editthispage": "Επεξεργασία αυτής της σελίδας",
-       "create-this-page": "Δημιουργία αυτής της σελίδας",
        "delete": "Διαγραφή",
-       "deletethispage": "Διαγραφή αυτής της σελίδας",
-       "undeletethispage": "Επαναφορά αυτής της διαγεγραμμένης σελίδας",
        "undelete_short": "Επαναφορά {{PLURAL:$1|μίας διαγεγραμμένης επεξεργασίας|$1 διαγεγραμμένων επεξεργασιών}}.",
        "viewdeleted_short": "Προβολή {{PLURAL:$1|μίας διαγεγραμμένης επεξεργασίας|$1 διαγεγραμμένων επεξεργασιών}}",
        "protect": "Προστασία",
        "protect_change": "αλλαγή",
-       "protectthispage": "Προστασία αυτής της σελίδας",
        "unprotect": "Αλλαγή προστασίας",
-       "unprotectthispage": "Αλλαγή προστασίας αυτής της σελίδας",
        "newpage": "Νέα σελίδα",
-       "talkpage": "Συζήτηση για αυτήν τη σελίδα",
        "talkpagelinktext": "Συζήτηση",
        "specialpage": "Ειδική σελίδα",
        "personaltools": "Προσωπικά εργαλεία",
-       "articlepage": "Εμφάνιση σελίδας περιεχομένου",
        "talk": "Συζήτηση",
        "views": "Προβολές",
        "toolbox": "Εργαλεία",
        "tool-link-userrights": "Αλλαγή ομάδων {{GENDER:$1|χρήστη}}",
        "tool-link-userrights-readonly": "Εμφάνιση {{GENDER:$1|ομάδων}}  χρηστών",
        "tool-link-emailuser": "Αποστολή e-mail {{GENDER:$1|στο|στη}} χρήστη",
-       "userpage": "Προβολή σελίδας χρήστη",
-       "projectpage": "Προβολή σελίδας εγχειρήματος",
        "imagepage": "Προβολή σελίδας αρχείου",
        "mediawikipage": "Προβολή σελίδας μηνύματος",
        "templatepage": "Προβολή σελίδας προτύπου",
        "recentchanges-legend-plusminus": "(<em>±123</em>)",
        "recentchanges-submit": "Προβολή",
        "rcfilters-activefilters": "Ενεργά φίλτρα",
+       "rcfilters-savedqueries-rename": "Μετονομασία",
+       "rcfilters-savedqueries-setdefault": "Ορισμός ως προεπιλογή",
        "rcfilters-restore-default-filters": "Επαναφορά προεπιλεγμένων φίλτρων",
        "rcfilters-clear-all-filters": "Εκκαθάριση όλων των φίλτρων",
        "rcfilters-search-placeholder": "Φιλτράρισμα πρόσφατων αλλαγών (περιηγηθείτε ή αρχίστε να πληκτρολογείτε)",
index 9fe0e3c..766acf3 100644 (file)
        "anontalk": "Talk",
        "navigation": "Navigation",
        "and": "&#32;and",
-       "qbfind": "Find",
-       "qbbrowse": "Browse",
-       "qbedit": "Edit",
-       "qbpageoptions": "This page",
-       "qbmyoptions": "My pages",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "sitetitle": "{{SITENAME}}",
        "sitesubtitle": "",
        "actions": "Actions",
        "edit-local": "Edit local description",
        "create": "Create",
        "create-local": "Add local description",
-       "editthispage": "Edit this page",
-       "create-this-page": "Create this page",
        "delete": "Delete",
-       "deletethispage": "Delete this page",
-       "undeletethispage": "Undelete this page",
        "undelete_short": "Undelete {{PLURAL:$1|one edit|$1 edits}}",
        "viewdeleted_short": "View {{PLURAL:$1|one deleted edit|$1 deleted edits}}",
        "protect": "Protect",
        "protect_change": "change",
-       "protectthispage": "Protect this page",
        "unprotect": "Change protection",
-       "unprotectthispage": "Change protection of this page",
        "newpage": "New page",
-       "talkpage": "Discuss this page",
        "talkpagelinktext": "talk",
        "specialpage": "Special page",
        "personaltools": "Personal tools",
        "addsection": "+",
-       "articlepage": "View content page",
        "talk": "Discussion",
        "views": "Views",
        "toolbox": "Tools",
        "tool-link-userrights": "Change {{GENDER:$1|user}} groups",
        "tool-link-userrights-readonly": "View {{GENDER:$1|user}} groups",
        "tool-link-emailuser": "Email this {{GENDER:$1|user}}",
-       "userpage": "View user page",
-       "projectpage": "View project page",
        "imagepage": "View file page",
        "mediawikipage": "View message page",
        "templatepage": "View template page",
        "rcfilters-filter-categorization-description": "Records of pages being added or removed from categories.",
        "rcfilters-filter-logactions-label": "Logged actions",
        "rcfilters-filter-logactions-description": "Administrative actions, account creations, page deletions, uploads…",
-       "rcfilters-hideminor-conflicts-typeofchange-global": "The \"Minor edits\" filter conflicts with one or more Type of Change filters, because certain types of change cannot be designated as \"minor.\" The conflicting filters are marked in the Active Filters area, above.",
-       "rcfilters-hideminor-conflicts-typeofchange": "Certain types of change cannot be designated as \"minor,\" so this filter conflicts with the following Type of Change filters: $1",
-       "rcfilters-typeofchange-conflicts-hideminor": "This Type of Change filter conflicts with the \"Minor Edits\" filter. Certain types of change cannot be designated as \"minor.\"",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "The \"Minor edits\" filter conflicts with one or more Type of change filters, because certain types of change cannot be designated as \"minor\". The conflicting filters are marked in the Active filters area, above.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Certain types of change cannot be designated as \"minor\", so this filter conflicts with the following Type of Change filters: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "This Type of change filter conflicts with the \"Minor edits\" filter. Certain types of change cannot be designated as \"minor\".",
        "rcfilters-filtergroup-lastRevision": "Last revision",
        "rcfilters-filter-lastrevision-label": "Last revision",
        "rcfilters-filter-lastrevision-description": "The most recent change to a page.",
        "rcfilters-filter-previousrevision-label": "Earlier revisions",
        "rcfilters-filter-previousrevision-description": "All changes that are not the most recent change to a page.",
+       "rcfilters-filter-excluded": "Excluded",
+       "rcfilters-tag-prefix-namespace": ":$1",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
+       "rcfilters-tag-prefix-tags": "#$1",
+       "rcfilters-view-tags": "Tags",
        "rcnotefrom": "Below {{PLURAL:$5|is the change|are the changes}} since <strong>$3, $4</strong> (up to <strong>$1</strong> shown).",
        "rclistfromreset": "Reset date selection",
        "rclistfrom": "Show new changes starting from $2, $3",
        "newimages-legend": "Filter",
        "newimages-label": "Filename (or a part of it):",
        "newimages-user": "IP address or username",
+       "newimages-newbies": "Show contributions of new accounts only",
        "newimages-showbots": "Show uploads by bots",
        "newimages-hidepatrolled": "Hide patrolled uploads",
+       "newimages-mediatype": "Media type:",
        "noimages": "Nothing to see.",
        "gallery-slideshow-toggle": "Toggle thumbnails",
        "ilsubmit": "Search",
        "tags-create-reason": "Reason:",
        "tags-create-submit": "Create",
        "tags-create-no-name": "You must specify a tag name.",
-       "tags-create-invalid-chars": "Tag names must not contain commas (<code>,</code>) or forward slashes (<code>/</code>).",
+       "tags-create-invalid-chars": "Tag names must not contain commas (<code>,</code>), pipes (<code>|</code>), or forward slashes (<code>/</code>).",
        "tags-create-invalid-title-chars": "Tag names must not contain characters that cannot be used in page titles.",
        "tags-create-already-exists": "The tag \"$1\" already exists.",
        "tags-create-warnings-above": "The following {{PLURAL:$2|warning was|warnings were}} encountered when attempting to create the tag \"$1\":",
        "gotointerwiki-invalid": "The specified title is invalid.",
        "gotointerwiki-external": "You are about to leave {{SITENAME}} to visit [[$2]], which is a separate website.\n\n'''[$1 Continue to $1]'''",
        "undelete-cantedit": "You cannot undelete this page as you are not allowed to edit this page.",
-       "undelete-cantcreate": "You cannot undelete this page as there is no existing page with this name and you are not allowed to create this page."
+       "undelete-cantcreate": "You cannot undelete this page as there is no existing page with this name and you are not allowed to create this page.",
+       "pagedata-title": "Page data",
+       "pagedata-text": "This page provides a data interface to pages. Please provide the page title in the URL, using subpage syntax.\n* Content negotiation applies based on you client's Accept header. This means that the page data will be provided in the format preferred by your client.",
+       "pagedata-not-acceptable": "No matching format found. Supported MIME types: $1",
+       "pagedata-bad-title": "Invalid title: $1."
 }
index a594a39..87a00be 100644 (file)
        "anontalk": "Diskuto",
        "navigation": "Navigado",
        "and": "&#32;kaj",
-       "qbfind": "Serĉi",
-       "qbbrowse": "Foliumi",
-       "qbedit": "Redakti",
-       "qbpageoptions": "Ĉi tiu paĝo",
-       "qbmyoptions": "Miaj paĝoj",
        "faq": "Oftaj demandoj",
-       "faqpage": "Project:Oftaj demandoj",
        "actions": "Agoj",
        "namespaces": "Nomspacoj",
        "variants": "Variantoj",
        "edit-local": "Redakti lokan priskribon",
        "create": "Krei",
        "create-local": "Aldoni lokan priskribon",
-       "editthispage": "Redakti la paĝon",
-       "create-this-page": "Krei ĉi tiun paĝon",
        "delete": "Forigi",
-       "deletethispage": "Forigi ĉi tiun paĝon",
-       "undeletethispage": "Restarigi tiun ĉi paĝon",
        "undelete_short": "Malforigi {{PLURAL:$1|redakton|$1 redaktojn}}",
        "viewdeleted_short": "Vidi {{PLURAL:$1|unu forigitan redakton|$1 forigitajn redaktojn}}",
        "protect": "Protekti",
        "protect_change": "ŝanĝi",
-       "protectthispage": "Protekti la paĝon",
        "unprotect": "Ŝanĝi protekton",
-       "unprotectthispage": "Ŝanĝi protekton de ĉi tiu paĝo",
        "newpage": "Nova paĝo",
-       "talkpage": "Diskuti la paĝon",
        "talkpagelinktext": "diskuto",
        "specialpage": "Speciala paĝo",
        "personaltools": "Personaj iloj",
-       "articlepage": "Vidi enhavan paĝon",
        "talk": "Diskuto",
        "views": "Vidoj",
        "toolbox": "Iloj",
        "tool-link-userrights": "Ŝanĝi grupojn de ĉi tiu {{GENDER:$1|uzanto}}",
        "tool-link-userrights-readonly": "Vidi grupojn de {{GENDER:$1|uzanto}}",
        "tool-link-emailuser": "Sendi retpoŝton al ĉi tiu {{GENDER:$1|uzanto}}",
-       "userpage": "Vidi uzantopaĝon",
-       "projectpage": "Rigardi projektopaĝon",
        "imagepage": "Vidi dosieropaĝon",
        "mediawikipage": "Vidi mesaĝopaĝon",
        "templatepage": "Vidi ŝablonopaĝon",
        "page_first": "unua",
        "page_last": "lasta",
        "histlegend": "Klarigo: (nuna) = vidu malsamojn kompare kun la nuna versio, (antaŭa) = malsamojn kompare kun la antaŭa versio, <strong>E</strong> = malgranda redakteto",
-       "history-fieldset-title": "Traserĉi historion",
+       "history-fieldset-title": "Serĉi versiojn",
        "history-show-deleted": "Nur forigitaĵoj",
        "histfirst": "plej malnova",
        "histlast": "plej nova",
        "uploadnewversion-linktext": "Alŝuti novan version de ĉi tiu dosiero",
        "shared-repo-from": "de $1",
        "shared-repo": "komuna dosierujo",
+       "shared-repo-name-wikimediacommons": "Vikimedia Komunejo",
        "upload-disallowed-here": "Vi ne povas superskribi ĉi tiun bildon.",
        "filerevert": "Restarigi $1",
        "filerevert-legend": "Restarigi dosieron",
        "htmlform-user-not-valid": "<strong>$1</strong> ne estas valida salutnomo.",
        "logentry-delete-delete": "$1 forigis paĝon $3",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2|forigis}} alidirektitan $3 per anstataŭigado",
-       "logentry-delete-restore": "$1 restarigis paĝon $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|restarigis}} paĝon $3 ($4)",
        "logentry-delete-event": "$1 ŝanĝis videblecon de {{PLURAL:$5|protokola evento|$5 protokolaj eventoj}} je $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|ŝanĝis}} videblecon de {{PLURAL:$5|revizio|$5 reviziojn}} je paĝo $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|ŝanĝis}} videblecon de protokolaj eventoj en $3",
index b8cd52e..a86ccea 100644 (file)
        "anontalk": "Discusión para esta IP",
        "navigation": "Navegación",
        "and": "&#32;y",
-       "qbfind": "Buscar",
-       "qbbrowse": "Examinar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta página",
-       "qbmyoptions": "Mis páginas",
        "faq": "PP. FF.",
-       "faqpage": "Project:Preguntas frecuentes",
        "actions": "Acciones",
        "namespaces": "Espacios de nombres",
        "variants": "Variantes",
        "edit-local": "Editar descripción local",
        "create": "Crear",
        "create-local": "Añadir descripción local",
-       "editthispage": "Editar esta página",
-       "create-this-page": "Crear esta página",
        "talkpagelinktext": "Discusión",
        "personaltools": "Herramientas personales",
        "talk": "Discusión",
index ce8da68..3b50dc3 100644 (file)
        "anontalk": "Discusión",
        "navigation": "Navegación",
        "and": "&#32;y",
-       "qbfind": "Buscar",
-       "qbbrowse": "Navegar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta página",
-       "qbmyoptions": "Mis páginas",
        "faq": "Preguntas frecuentes",
-       "faqpage": "Project:Preguntas frecuentes",
        "actions": "Acciones",
        "namespaces": "Espacios de nombres",
        "variants": "Variantes",
        "edit-local": "Editar descripción local",
        "create": "Crear",
        "create-local": "Añadir descripción local",
-       "editthispage": "Editar esta página",
-       "create-this-page": "Crear esta página",
        "delete": "Borrar",
-       "deletethispage": "Borrar esta página",
-       "undeletethispage": "Restaurar esta página",
        "undelete_short": "Restaurar {{PLURAL:$1|una edición|$1 ediciones}}",
        "viewdeleted_short": "Ver {{PLURAL:$1|una edición borrada|$1 ediciones borradas}}",
        "protect": "Proteger",
        "protect_change": "cambiar",
-       "protectthispage": "Proteger esta página",
        "unprotect": "Cambiar protección",
-       "unprotectthispage": "Cambiar la protección de esta página",
        "newpage": "Página nueva",
-       "talkpage": "Discutir esta página",
        "talkpagelinktext": "discusión",
        "specialpage": "Página especial",
        "personaltools": "Herramientas personales",
-       "articlepage": "Ver artículo",
        "talk": "Discusión",
        "views": "Vistas",
        "toolbox": "Herramientas",
        "tool-link-userrights": "Modificar grupos {{GENDER:$1|del usuario|de la usuaria}}",
        "tool-link-userrights-readonly": "Ver los grupos {{GENDER:$1|del usuario|de la usuaria}}",
        "tool-link-emailuser": "Enviar un correo a {{GENDER:$1|este usuario|esta usuaria}}",
-       "userpage": "Ver página de usuario",
-       "projectpage": "Ver página del proyecto",
        "imagepage": "Ver página del archivo",
        "mediawikipage": "Ver página del mensaje",
        "templatepage": "Ver página de plantilla",
        "saveusergroups": "Guardar grupos {{GENDER:$1|del usuario|de la usuaria}}",
        "userrights-groupsmember": "Miembro de:",
        "userrights-groupsmember-auto": "Miembro implícito de:",
-       "userrights-groups-help": "Puedes cambiar los grupos en que está este usuario:\n* Una casilla marcada significa que el usuario está en ese grupo.\n* Una casilla sin marcar significa que el usuario no está en ese grupo.\n* Un * indica que no se puede eliminar el grupo una vez que se ha añadido o viceversa.\n* Un # indica que sólo se puede volver a poner la fecha de caducidad de membresía de este grupo; no se pueden llevar adelante.",
+       "userrights-groups-help": "Puedes modificar los grupos a los que pertenece {{GENDER:$1|este usuario|esta usuaria}}:\n* Una casilla marcada significa que {{GENDER:$1|el usuario|la usuaria}} está en ese grupo.\n* Una casilla sin marcar significa que {{GENDER:$1|el usuario|la usuaria}} no está en ese grupo.\n* Un * indica que no podrás eliminar el grupo una vez que lo añadas, o viceversa.\n* Un # indica que puedes únicamente postergar, y no adelantar, la fecha de caducidad de la membresía a este grupo.",
        "userrights-reason": "Motivo:",
        "userrights-no-interwiki": "No tienes permiso para editar permisos de usuario en otros wikis.",
        "userrights-nodatabase": "La base de datos $1 no existe o no es local.",
        "authmanager-authplugin-setpass-failed-message": "El complemento de autenticación denegó el cambio de contraseña.",
        "authmanager-authplugin-create-fail": "El complemento de autenticación denegó la creación de la cuenta.",
        "authmanager-authplugin-setpass-denied": "El complemento de autenticación no permite el cambio de contraseñas.",
-       "authmanager-authplugin-setpass-bad-domain": "Dominio inválido.",
+       "authmanager-authplugin-setpass-bad-domain": "El dominio no es válido.",
        "authmanager-autocreate-noperm": "La creación automática de cuentas no está permitida.",
        "authmanager-autocreate-exception": "La creación automática de cuentas ha sido temporalmente desactivada debido a errores previos.",
        "authmanager-userdoesnotexist": "El usuario «$1» no está registrado.",
        "gotointerwiki-invalid": "El título especificado no es válido.",
        "gotointerwiki-external": "Estás a punto de abandonar {{SITENAME}} para visitar [[$2]], un sitio web diferente.\n\n'''[$1 Continuar a $1]'''",
        "undelete-cantedit": "No puedes deshacer el borrado de esta página porque no tienes permisos para editarla.",
-       "undelete-cantcreate": "No puedes deshacer el borrado de esta página porque no existe ninguna página con este nombre y no tienes permisos para crearla."
+       "undelete-cantcreate": "No puedes deshacer el borrado de esta página porque no existe ninguna página con este nombre y no tienes permisos para crearla.",
+       "pagedata-title": "Datos de la página",
+       "pagedata-bad-title": "El título «$1» no es válido."
 }
index 3c96266..a8e07e7 100644 (file)
                        "Matma Rex",
                        "Gorkaazk",
                        "Vriullop",
-                       "Osoitz"
+                       "Osoitz",
+                       "Mikel Ibaiba"
                ]
        },
-       "tog-underline": "Azpimarratu loturak:",
-       "tog-hideminor": "Ezkutatu azken aldaketetan aldaketa txikiak",
-       "tog-hidepatrolled": "Ezkutatu patruilatutako aldaketa azken aldaketetan",
+       "tog-underline": "Azpimarratutako linka:",
+       "tog-hideminor": "Ezkutatu azken aldaketetan edizio txikiak",
+       "tog-hidepatrolled": "Ezkutatu patruilatutako aldaketa azken aldaketetatik",
        "tog-newpageshidepatrolled": "Ezkutatu patruilatutako orriak, orri-zerrenda berritik",
        "tog-hidecategorization": "Ezkutatu orrien kategorizazioa",
        "tog-extendwatchlist": "Jarraipen-zerrenda zabaldu aldaketa guztiak ikusteko, ez bakarrik azken aldaketak",
        "tog-usenewrc": "Azken aldaketetan eta jarraipen-zerrendan aldaketak orrialdearen arabera taldekatu",
        "tog-numberheadings": "Zenbakitu automatikoki goiburuak",
        "tog-showtoolbar": "Aldaketen tresna-barra erakutsi",
-       "tog-editondblclick": "Klik bikoitzaren bitartez orrialdeak aldatu",
+       "tog-editondblclick": "Klik bikoitzaren bitartez orrialdeak editatu",
        "tog-editsectiononrightclick": "Atalen izenburuetan eskuin klik eginez aldatzea gaitu",
        "tog-watchcreations": "Sortzen ditudan orrialdeak eta fitxategiak nire jarraipen-zerrendara gehitu",
        "tog-watchdefault": "Aldatzen ditudan orrialdeak eta fitxategiak nire jarraipen-zerrendara gehitu",
        "tog-watchrollback": "Nire jarraipen zerrendan rollbacka egin dudan orrialdeak erakutsi",
        "tog-minordefault": "Aukera lehenetsitzat, markatu aldaketa guztiak txikitzat",
        "tog-previewontop": "Aurrebista aldaketa koadroaren aurretik erakutsi",
-       "tog-previewonfirst": "Lehen aldaketan aurrebista erakutsi",
+       "tog-previewonfirst": "Lehen edizioan aurrebista erakutsi",
        "tog-enotifwatchlistpages": "Bidal iezadazue e-posta bat, jarraitzen ari naizen orrialde edo fitxategi bat aldatzen denean",
        "tog-enotifusertalkpages": "Nire eztabaida orrialdea aldatzen denean e-posta jaso",
        "tog-enotifminoredits": "Orrialde edo fitxategietan aldaketak txikiak direnean ere e-posta jaso",
        "tog-enotifrevealaddr": "Jakinarazpen mezuetan nire e-posta helbidea erakutsi",
-       "tog-shownumberswatching": "Jarraitzen duen erabiltzaile kopurua erakutsi",
+       "tog-shownumberswatching": "Ikusten duten erabiltzaile kopurua erakutsi",
        "tog-oldsig": "Zure egungo sinadura:",
        "tog-fancysig": "Sinadura wikitestu gisa tratatu (lotura automatikorik gabe)",
        "tog-uselivepreview": "Zuzeneko aurrebista erabili",
        "tog-diffonly": "''Diff''-ak agertzen direnean, orrialdearen edukiera ezkutatu",
        "tog-showhiddencats": "Ikusi kategoria ezkutuak",
        "tog-norollbackdiff": "Rollback bat egin ondoren ezberdintasunak ez erakutsi",
-       "tog-useeditwarning": "Abisa nazazu gorde gabeko aldaketak eginez orrialde bat uzten dudanean",
+       "tog-useeditwarning": "Abisa nazazu gorde gabeko aldaketak eginez edizio orrialde bat uzten dudanean",
        "tog-prefershttps": "Erabili beti konexio seguru bat sartzerakoan",
        "underline-always": "Beti",
        "underline-never": "Inoiz ez",
        "underline-default": "Lehenetsitako nabigatzailea",
        "editfont-style": "Aldatu eremuko letra tipoa:",
        "editfont-default": "Nabigatzaileak aurretik zehaztua",
-       "editfont-monospace": "Monospace iturria",
+       "editfont-monospace": "Monospaced iturria",
        "editfont-sansserif": "Sans-serif iturria",
        "editfont-serif": "Serif iturria",
        "sunday": "Igandea",
        "period-am": "AM",
        "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Kategoria|Kategoriak}}",
-       "category_header": "«$1» kategoriako artikuluak",
+       "category_header": "«$1» kategoriako orriak",
        "subcategories": "Azpikategoriak",
        "category-media-header": "Media \"$1\" kategorian",
        "category-empty": "''Kategoria honek ez dauka artikulurik uneotan.''",
        "noindex-category": "Indexatugabeko orrialdeak",
        "broken-file-category": "Fitxategiren baterako lotura hautsia duten orriak",
        "about": "Honi buruz",
-       "article": "Artikulua",
+       "article": "Eduki orria",
        "newwindow": "(leiho berrian irekitzen da)",
-       "cancel": "Utzi",
+       "cancel": "Deuseztatu",
        "moredotdotdot": "Gehiago...",
        "morenotlisted": "Zerrenda hau agian ez dago osorik.",
        "mypage": "Orrialdea",
-       "mytalk": "Eztabaida",
+       "mytalk": "Hitz egin",
        "anontalk": "Eztabaida",
        "navigation": "Nabigazioa",
        "and": "&#32;eta",
-       "qbfind": "Aurkitu",
-       "qbbrowse": "Arakatu",
-       "qbedit": "Aldatu",
-       "qbpageoptions": "Orrialde hau",
-       "qbmyoptions": "Nire orrialdeak",
        "faq": "Maiz egindako galderak",
-       "faqpage": "Project:Maiz egindako galderak",
        "actions": "Ekintzak",
        "namespaces": "Izen-tarteak",
        "variants": "Aldaerak",
        "print": "Inprimatu",
        "view": "Ikusi",
        "view-foreign": "$1(e)n ikusi",
-       "edit": "Aldatu",
+       "edit": "Editatu",
        "edit-local": "Aldatu deskribapen lokala",
        "create": "Sortu",
        "create-local": "Gehitu deskribapen lokala",
-       "editthispage": "Orri hau aldatu",
-       "create-this-page": "Sortu orri hau",
        "delete": "Ezabatu",
-       "deletethispage": "Ezabatu orri hau",
-       "undeletethispage": "Orrialde hau bergaitu",
        "undelete_short": "Berreskuratu {{PLURAL:$1|aldaketa bat|$1 aldaketa}}",
        "viewdeleted_short": "Ikusi ezabatutako {{PLURAL:$1|bidalketa bat|$1 bidalketa}}",
        "protect": "Babestu",
        "protect_change": "aldatu",
-       "protectthispage": "Orri hau babestu",
        "unprotect": "Babesa aldatu",
-       "unprotectthispage": "Orrialde honen babesa aldatu",
        "newpage": "Orrialde berria",
-       "talkpage": "Orrialde honi buruz eztabaidatu",
-       "talkpagelinktext": "Eztabaida",
-       "specialpage": "Aparteko orrialdea",
+       "talkpagelinktext": "Hitz egin",
+       "specialpage": "Orrialde berezia",
        "personaltools": "Tresna pertsonalak",
-       "articlepage": "Artikulua ikusi",
        "talk": "Eztabaida",
        "views": "Ikustaldiak",
        "toolbox": "Tresnak",
-       "tool-link-userrights": "Erabiltzaile {{GENDER:$1|taldea}} aldatu",
+       "tool-link-userrights": "Aldatu {{GENDER:$1|erabiltzaile}} taldeak",
        "tool-link-userrights-readonly": "{{GENDER:$1|Erabiltzailearen}} taldeak  ikusi",
        "tool-link-emailuser": "{{GENDER:$1|Erabiltzale}} honi e-posta bidali",
-       "userpage": "Lankide orrialdea ikusi",
-       "projectpage": "Proiektuaren orrialdea ikusi",
        "imagepage": "Ikusi fitxategiaren orria",
        "mediawikipage": "Mezu orrialdea ikusi",
        "templatepage": "Txantiloi orrialdea ikusi",
        "lastmodifiedat": "Orrialdearen azken aldaketa: $1, $2.",
        "viewcount": "Orrialde hau {{PLURAL:$1|behin|$1 aldiz}} bisitatu da.",
        "protectedpage": "Babestutako orrialdea",
-       "jumpto": "Hona jo:",
+       "jumpto": "Hona jauzi:",
        "jumptonavigation": "nabigazioa",
        "jumptosearch": "bilatu",
        "view-pool-error": "Barkatu, zerbitzariak gainezka daude uneotan.\nErabiltzaile gehiegi ari da orrialde hau ikusi nahiean.\nMesedez itxaron ezazu unetxo bat orrialde honetara berriz sartzen saiatu baino lehen.\n\n$1",
        "retrievedfrom": "\"$1\"(e)tik jasota",
        "youhavenewmessages": "$1 dauzkazu ($2).",
        "youhavenewmessagesfromusers": "{{PLURAL:$3|Beste erabiltzaile baten|$3 erabiltzaileren}} $1 ($2).",
-       "youhavenewmessagesmanyusers": "Hainbat erabiltzaileren $1 ($2).",
+       "youhavenewmessagesmanyusers": "Hainbat erabiltzaileren $1 daukazu ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|Mezu berri bat duzu|999=Mezu berriak dituzu}}",
        "newmessagesdifflinkplural": "azken {{PLURAL:$1|aldaketa|999=aldaketak}}",
        "youhavenewmessagesmulti": "Mezu berriak dituzu $1(e)n",
-       "editsection": "aldatu",
-       "editold": "aldatu",
-       "viewsourceold": "kodea ikusi",
-       "editlink": "aldatu",
+       "editsection": "Editatu",
+       "editold": "Editatu",
+       "viewsourceold": "iturria ikusi",
+       "editlink": "editatu",
        "viewsourcelink": "jatorria ikusi",
-       "editsectionhint": "Aldatu atal hau: «$1»",
+       "editsectionhint": "Editatu atal hau: «$1»",
        "toc": "Edukiak",
        "showtoc": "erakutsi",
        "hidetoc": "ezkutatu",
        "botpasswords-label-cancel": "Utzi",
        "botpasswords-label-delete": "Ezabatu",
        "botpasswords-label-resetpassword": "Pasahitza berrezarri",
+       "botpasswords-label-grants": "Aplikagarriak diren diru laguntzak:",
        "botpasswords-label-grants-column": "Baimenduta",
        "botpasswords-bad-appid": "Bot horren \"$1\" izen hori ez da baliagarria.",
        "botpasswords-insert-failed": "Ezin izan da bot \"$1\" izen hori gehitu. Dagoeneko gehituta zegoen?",
+       "botpasswords-update-failed": "\"$1\" Errobota ezin eguneratu. Ezabatua izan al da?",
        "botpasswords-created-title": "Botaren pasahitza sortu da",
        "botpasswords-updated-title": "Botaren pasahitza eguneratu da",
        "botpasswords-deleted-title": "Botaren pasahitza ezabatu da",
        "passwordreset-emailtitle": "{{SITENAME}}-rako kontuaren xehetasunak",
        "passwordreset-emailelement": "Erabiltzaile izena: \n$1\n\nBehin-behineko pasahitza: \n$2",
        "passwordreset-emailsentemail": "Hau zure kontuarekin lotuta dagoen helbide elektronikoa baldin bada, mezu elektronikoa bidaliko da zure pasahitza berrezartzeko.",
+       "passwordreset-invalidemail": "Baliogabeko helbide elektronikoa",
        "changeemail": "Aldatu edo kendu e-mail helbidea",
        "changeemail-header": "Bete ezazu inprimaki hau, zure helbide elektronikoa aldatzeko. Zure kontuari helbide elektronikorik elkartuta ez izatea nahi baduzu, utz ezazu hutsik helbide elektroniko berria, inprimakia bidaltzen duzunean.",
        "changeemail-no-info": "Orrialde honetara zuzenean sartzeko izena eman behar duzu.",
        "powersearch-togglelabel": "Egiaztatu:",
        "powersearch-toggleall": "Guztiak",
        "powersearch-togglenone": "Bat ere ez",
+       "powersearch-remember": "Etorkizunean bilaketentzako hautaketa gogoratu",
        "search-external": "Kanpo bilaketa",
        "searchdisabled": "{{SITENAME}}(e)n ezgaituta dago bilaketa. Dena dela, Google erabiliz ere egin dezakezu bilaketa. Kontuan izan bertan dituzten {{SITENAME}}(e)ko emaitzak zaharkituta egon daitezkeela.",
        "search-error": "Akats bat gertatu da bilaketa egiterakoan: $1",
        "right-siteadmin": "Blokeatu eta desblokeatu datu basea blokeatu",
        "right-override-export-depth": "5eko sakonerararteko loturiko orrialdeak barne esportatu",
        "right-sendemail": "Beste erabiltzaileei e-posta bidali",
+       "grant-group-page-interaction": "Orriekin elkarreragin",
        "grant-group-email": "E-posta bidali",
        "grant-createaccount": "Kontuak sortu",
        "grant-createeditmovepage": "Orrialdeak sortu, aldatu eta mugitu",
        "grant-editmywatchlist": "Zure jarraipen zerrenda aldatu",
        "grant-editpage": "Aldatu dauden orrialdeak",
        "grant-editprotected": "Babestutako orriak aldatu",
+       "grant-highvolume": "Bolumen-handiko edizioa",
        "grant-patrol": "Orrietako aldaketa patruilatu",
        "grant-protect": "Orriak babestu eta babesgabetu",
        "grant-sendemail": "Bidali mezu elektronikoa beste erabiltzailei",
        "action-editmyprivateinfo": "zure informazio pribatua aldatu",
        "action-managechangetags": "Etiketak sortu eta (des)aktibatu",
        "action-deletechangetags": "ezabatu etiketak datu-basetik",
+       "action-purge": "Orri hau purgatu",
        "nchanges": "{{PLURAL:$1|aldaketa 1|$1 aldaketa}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|azkeneko bisitatik}}",
        "enhancedrc-history": "historia",
        "rcfilters-savedqueries-defaultlabel": "Gordetako iragazkiak",
        "rcfilters-savedqueries-remove": "Kendu",
        "rcfilters-savedqueries-new-name-label": "Izena",
-       "rcfilters-savedqueries-apply-label": "Sortu lotura azkarra",
+       "rcfilters-savedqueries-apply-label": "Konfigurazioa gorde",
        "rcfilters-savedqueries-cancel-label": "Utzi",
        "rcfilters-savedqueries-add-new-title": "Gorde iragazkiak lotura azkarra gisa",
        "rcfilters-restore-default-filters": "Leheneratu iragazki lehenetsiak",
        "rcfilters-filter-unregistered-label": "Ez erregistratuak",
        "rcfilters-filtergroup-authorship": "Ekarpenaren egiletza",
        "rcfilters-filter-editsbyself-label": "Zuk egindako aldaketak",
+       "rcfilters-filter-editsbyself-description": "Zure ekarpenak",
        "rcfilters-filter-editsbyother-label": "Besteek egindako aldaketak",
        "rcfilters-filter-editsbyother-description": "Aldaketa guztiak norberarenak izan ezik.",
        "rcfilters-filter-user-experience-level-newcomer-label": "Iritsiberriak",
        "rcfilters-filter-lastrevision-label": "Azken berrikuspena",
        "rcfilters-filter-lastrevision-description": "Orrialde bati eginiko aldaketarik berriena.",
        "rcfilters-filter-previousrevision-label": "Aurreko berrikuspenak",
+       "rcfilters-view-tags": "Etiketak",
        "rcnotefrom": "Jarraian azaltzen diren {{PLURAL:$5|aldaketak}} data honetatik aurrerakoak dira: <strong>$3,$4</strong> (gehienez <b>$1</b> erakusten dira).",
        "rclistfrom": "Erakutsi $3 $2 ondorengo aldaketa berriak",
        "rcshowhideminor": "$1 aldaketa txikiak",
index d3cb899..da36161 100644 (file)
@@ -58,7 +58,9 @@
                        "Namo",
                        "Alifakoor",
                        "Dejavu",
-                       "AzorAhai"
+                       "AzorAhai",
+                       "Yoosef Pooranvary",
+                       "DEXi"
                ]
        },
        "tog-underline": "خط کشیدن زیر پیوندها:",
        "anontalk": "بحث",
        "navigation": "ناوبری",
        "and": "&#32;و",
-       "qbfind": "یافتن",
-       "qbbrowse": "مرور",
-       "qbedit": "ویرایش",
-       "qbpageoptions": "این صفحه",
-       "qbmyoptions": "صفحه‌های من",
        "faq": "پرسش‌های متداول",
-       "faqpage": "Project:پرسش‌های متداول",
        "actions": "عملکردها",
        "namespaces": "فضاهای نام",
        "variants": "گویش‌ها",
        "edit-local": "ویرایش توضیحات محلی",
        "create": "ایجاد",
        "create-local": "افزودن توضیحات محلی",
-       "editthispage": "ویرایش این صفحه",
-       "create-this-page": "ایجاد این صفحه",
        "delete": "حذف",
-       "deletethispage": "حذف این صفحه",
-       "undeletethispage": "احیای این صفحه",
        "undelete_short": "احیای {{PLURAL:$1|یک ویرایش|$1 ویرایش}}",
        "viewdeleted_short": "نمایش {{PLURAL:$1|یک ویرایش حذف‌شده|$1 ویرایش حذف‌شده}}",
        "protect": "محافظت",
        "protect_change": "تغییر",
-       "protectthispage": "محافظت از این صفحه",
        "unprotect": "تغییر محافظت",
-       "unprotectthispage": "تغییر محافظت این صفحه",
        "newpage": "صفحهٔ تازه",
-       "talkpage": "بحث دربارهٔ این صفحه",
        "talkpagelinktext": "بحث",
        "specialpage": "صفحهٔ ویژه",
        "personaltools": "ابزارهای شخصی",
-       "articlepage": "نمایش مقاله",
        "talk": "بحث",
        "views": "بازدیدها",
        "toolbox": "ابزارها",
        "tool-link-userrights": "تغییر گروه‌های {{GENDER:$1|کاربر}}",
        "tool-link-userrights-readonly": "نمایش گروه‌های {{GENDER:$1|کاربر}}",
        "tool-link-emailuser": "فرستادن نامه به {{GENDER:$1|کاربر}}",
-       "userpage": "نمایش صفحهٔ کاربر",
-       "projectpage": "نمایش صفحهٔ پروژه",
        "imagepage": "نمایش صفحهٔ پرونده",
        "mediawikipage": "نمایش صفحهٔ پیغام",
        "templatepage": "نمایش صفحهٔ الگو",
        "recentchanges-legend-plusminus": "(<em>±۱۲۳</em>)",
        "recentchanges-submit": "نمایش",
        "rcfilters-activefilters": "پالایه‌های فعال",
-       "rcfilters-quickfilters": "پیوندهای سریع",
+       "rcfilters-quickfilters": "تنظیمات ذخیره‌شدهٔ پالایه",
+       "rcfilters-quickfilters-placeholder-title": "هنوز پیوندی ذخیره نشده‌است",
+       "rcfilters-quickfilters-placeholder-description": "برای ذخیره پالایه‌هایتان و استفاده مجدد آنها، در محیط فعال پالایه در پایین بر روی دکمهٔ بوک‌مارک کلیک کنید.",
        "rcfilters-savedqueries-defaultlabel": "پالایه‌های ذخیره‌شده",
        "rcfilters-savedqueries-rename": "تغییر نام",
        "rcfilters-savedqueries-setdefault": "تنظیم به عنوان پیش‌فرض",
        "rcfilters-savedqueries-unsetdefault": "حذف از پیش‌فرض",
        "rcfilters-savedqueries-remove": "حذف",
        "rcfilters-savedqueries-new-name-label": "نام",
-       "rcfilters-savedqueries-apply-label": "اÛ\8cجاد Ù¾Û\8cÙ\88Ù\86د Ø³Ø±Û\8cع",
+       "rcfilters-savedqueries-apply-label": "ذخÛ\8cرÙ\87 ØªÙ\86ظÛ\8cÙ\85ات",
        "rcfilters-savedqueries-cancel-label": "لغو",
-       "rcfilters-savedqueries-add-new-title": "ذخیرهٔ پالایه‌ها به عنوان پیوند سریع",
+       "rcfilters-savedqueries-add-new-title": "ذخیره تنظیمات کنونی پالایه",
        "rcfilters-restore-default-filters": "بازگردانی پالایه‌های پیش‌فرض",
        "rcfilters-clear-all-filters": "پاک‌کردن تمام پالایه‌ها",
        "rcfilters-search-placeholder": "پالایش تغییرات اخیر (جستجو یا شروع به تایپ)",
        "rcfilters-filter-categorization-label": "تغییرات رده",
        "rcfilters-filter-categorization-description": "سوابق صفحه‌هایی که به رده‌ها افزوده یا حذف شده‌اند.",
        "rcfilters-filter-logactions-label": "سیاههٔ فعالیت‌ها",
-       "rcfilters-filter-logactions-description": "فعالیت‌های مدیریتی، ایجاد حساب، حذف صفحه، بارگذاری‌ها ....",
+       "rcfilters-filter-logactions-description": "فعالیت‌های مدیریتی، ایجاد حساب، حذف صفحه، بارگذاری‌ها ...",
        "rcfilters-hideminor-conflicts-typeofchange-global": "پالایهٔ «ویرایش جزئی» با یک یا چند تا از پالایه‌های «نوع تغییرات» تعارض دارد چرا که برخی از انواع تغییرات را نمی‌توان به عنوان «جزئی» علامت زد. پالایه‌های دیگر در قسمت «پالایه‌های فعال» در بالا نشان داده شده‌اند.",
        "rcfilters-hideminor-conflicts-typeofchange": "برخی از انواع تغییرات را نمی‌توان به عنوان «جزئی» علامت زد، به همین خاطر این پالایه با پالایه‌های «نوع تغییرات» که در ادامه آمده در تعارض است: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "این پالایهٔ «نوع تغییرات» با پالایهٔ «تغییرات جزئی» در تعارض است. برخی از انواع تغییرات را نمی‌توان به عنوان «جزئی» علامت زد.",
        "rcfilters-filter-lastrevision-description": "جدیدترین تغییر در یک صفحه.",
        "rcfilters-filter-previousrevision-label": "نسخه‌های قبلی",
        "rcfilters-filter-previousrevision-description": "تمام تغییراتی که تازه‌ترین تغییر در یک صفحه نیستند.",
+       "rcfilters-view-tags": "برچسب‌ها",
        "rcnotefrom": "در زیر تغییرات از <strong>$3, $4</strong> (تا <strong>$1</strong> {{PLURAL:$5|نشان داده شده‌است|نشان داده شده‌اند}}).",
        "rclistfromreset": "از نو کردن انتخاب تاریخ",
        "rclistfrom": "نمایش تغییرات تازه با شروع از $3 $2",
        "autoblocklist-submit": "جستجو کن",
        "autoblocklist-legend": "فهرست قطع دسترسی‌های خودکار",
        "autoblocklist-localblocks": "{{PLURAL:$1|قطع دسترسی خودکار|قطع دسترسی‌های خودکار}} به صورت محلی",
+       "autoblocklist-total-autoblocks": "تعداد کلی بستن‌های خودکار: $1",
        "autoblocklist-empty": "فهرست قطع دسترسی‌های خودکار خالی‌ست.",
        "autoblocklist-otherblocks": "سایر {{PLURAL:$1|قطع دسترسی خودکار|قطع دسترسی‌های خودکار}}",
        "ipblocklist": "کاربران بسته‌شده",
        "newimages-legend": "پالودن",
        "newimages-label": "نام پرونده (یا قسمتی از آن):",
        "newimages-user": "نشانی آی‌پی یا نام کاربری",
+       "newimages-newbies": "فقط مشارکت‌های کاربران جدید نمایش داده شود",
        "newimages-showbots": "نمایش بارگذاری‌ها توسط ربات‌ها",
        "newimages-hidepatrolled": "مخفی کردن بارگذاری گشت‌زن‌ها",
+       "newimages-mediatype": "نوع رسانه",
        "noimages": "چیزی برای دیدن نیست.",
        "gallery-slideshow-toggle": "فعال یا غیرفعال کردن تصاویر بندانگشتی",
        "ilsubmit": "جستجو",
        "tags-create-reason": "دلیل:",
        "tags-create-submit": "ایجاد",
        "tags-create-no-name": "نام تگ باید مشخص شود.",
-       "tags-create-invalid-chars": "Ù\86اÙ\85 ØªÚ¯‌ها نباید حاوی کاما (<code>,</code>) یا خط مورب (<code>/</code>) باشد.",
+       "tags-create-invalid-chars": "Ù\86اÙ\85 Ø¨Ø±Ú\86سب‌ها نباید حاوی کاما (<code>,</code>) یا خط مورب (<code>/</code>) باشد.",
        "tags-create-invalid-title-chars": "نام تگ‌ها نباید شامل حروفی شود که نمی‌توان از آن‌ها در عنوان صفحات استفاده کرد.",
        "tags-create-already-exists": "تگ \"$1\" هم‌اکنون موجود است.",
        "tags-create-warnings-above": "در هنگام ایجاد تگ \"$1\" با {{PLURAL:$2|هشدار|هشدارهای}} زیر پیش آمد:",
        "gotointerwiki-invalid": "عنوان مشخص شده نامجاز است.",
        "gotointerwiki-external": "شما در حال ترک {{SITENAME}} هستید تا [[$2]] را ببینید که یک وب‌گاه مجزا است.\n\n'''[$1 ادامه تا $1]'''",
        "undelete-cantedit": "شما نمی‌توانید این صفحه را احیا کنید چون مجاز به ویرایش این صفحه نیستید.",
-       "undelete-cantcreate": "شما نمی‌توانید این صفحه را احیا کنید چرا که صفحه‌ای به این نام همینک وجود ندارد و شما مجاز به ساختن آن نیستید."
+       "undelete-cantcreate": "شما نمی‌توانید این صفحه را احیا کنید چرا که صفحه‌ای به این نام همینک وجود ندارد و شما مجاز به ساختن آن نیستید.",
+       "pagedata-title": "اطلاعات صفحه",
+       "pagedata-not-acceptable": "هیچ قالب تطبیقی یافت نشد. انواع MIME پشتیبانی شده: $1",
+       "pagedata-bad-title": "عنوان نامعتبر: «$1»."
 }
index 71ada4a..ade2de7 100644 (file)
        "anontalk": "Discussion",
        "navigation": "Navigation",
        "and": "&#32;et",
-       "qbfind": "Rechercher",
-       "qbbrowse": "Parcourir",
-       "qbedit": "Modifier",
-       "qbpageoptions": "Cette page",
-       "qbmyoptions": "Mes pages",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Actions",
        "namespaces": "Espaces de noms",
        "variants": "Variantes",
        "edit-local": "Modifier la description locale",
        "create": "Créer",
        "create-local": "Ajouter une description locale",
-       "editthispage": "Modifier cette page",
-       "create-this-page": "Créer cette page",
        "delete": "Supprimer",
-       "deletethispage": "Supprimer cette page",
-       "undeletethispage": "Restaurer cette page",
        "undelete_short": "Restaurer {{PLURAL:$1|une modification|$1 modifications}}",
        "viewdeleted_short": "Voir {{PLURAL:$1|une modification supprimée|$1 modifications supprimées}}",
        "protect": "Protéger",
        "protect_change": "modifier",
-       "protectthispage": "Protéger cette page",
        "unprotect": "Changer la protection",
-       "unprotectthispage": "Changer la protection de cette page",
        "newpage": "Nouvelle page",
-       "talkpage": "Discussion sur cette page",
        "talkpagelinktext": "discussion",
        "specialpage": "Page spéciale",
        "personaltools": "Outils personnels",
-       "articlepage": "Voir la page de contenu",
        "talk": "Discussion",
        "views": "Affichages",
        "toolbox": "Outils",
        "tool-link-userrights": "Modifier les groupes de l’utilisat{{GENDER:$1|eur|rice}}",
        "tool-link-userrights-readonly": "Voir les {{GENDER:$1|groupes utilisateur}}",
        "tool-link-emailuser": "Envoyer un courriel à {{GENDER:$1|l’utilisateur|l’utilisatrice}}",
-       "userpage": "Voir la page utilisateur",
-       "projectpage": "Voir la page du projet",
        "imagepage": "Voir la page du fichier",
        "mediawikipage": "Voir la page du message",
        "templatepage": "Voir la page du modèle",
        "rcfilters-filter-lastrevision-description": "Dernière modification apportée à une page.",
        "rcfilters-filter-previousrevision-label": "Versions précédentes",
        "rcfilters-filter-previousrevision-description": "Toutes les modifications apportées à une page et qui ne sont pas la dernière.",
+       "rcfilters-filter-excluded": "Exclu",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
+       "rcfilters-view-tags": "Étiquettes",
        "rcnotefrom": "Ci-dessous {{PLURAL:$5|la modification effectuée|les modifications effectuées}} depuis le <strong>$3, $4</strong> (affichées jusqu’à <strong>$1</strong>).",
        "rclistfromreset": "Réinitialiser la sélection de la date",
        "rclistfrom": "Afficher les nouvelles modifications depuis le $3 à $2",
        "newimages-legend": "Filtre",
        "newimages-label": "Nom du fichier (ou une partie de celui-ci) :",
        "newimages-user": "Adresse IP ou nom d'utilisateur",
+       "newimages-newbies": "Afficher uniquement les contributions des nouveaux comptes",
        "newimages-showbots": "Afficher les imports faits par des robots",
        "newimages-hidepatrolled": "Masquer les téléversements patrouillés",
+       "newimages-mediatype": "Type de média :",
        "noimages": "Aucune image à afficher.",
        "gallery-slideshow-toggle": "Basculer les vignettes",
        "ilsubmit": "Rechercher",
        "watchlistedit-clear-removed": "{{PLURAL:$1|Un titre a été|$1 titres ont été}} retirés :",
        "watchlistedit-too-many": "Il y a trop de pages à afficher ici.",
        "watchlisttools-clear": "Effacer la liste de suivi",
-       "watchlisttools-view": "Afficher les modifications associées",
+       "watchlisttools-view": "Voir les modifications correspondantes",
        "watchlisttools-edit": "Voir et modifier la liste de suivi",
        "watchlisttools-raw": "Modifier la liste de suivi en mode brut",
        "iranian-calendar-m1": "Farvardin",
        "tags-create-reason": "Raison :",
        "tags-create-submit": "Créer",
        "tags-create-no-name": "Vous devez spécifier un nom de balise.",
-       "tags-create-invalid-chars": "Les noms de balise ne doivent pas contenir de virgules (<code>,</code>) ni de barres obliques (<code>/</code>).",
+       "tags-create-invalid-chars": "Les noms de balise ne doivent pas contenir de virgules (<code>,</code>), de barres verticales (<code>|</code>), ni de barres obliques (<code>/</code>).",
        "tags-create-invalid-title-chars": "Les noms de balise ne doivent pas contenir de caractères qui ne peuvent pas être utilisés dans les titres des pages.",
        "tags-create-already-exists": "La balise « $1 » existe déjà.",
        "tags-create-warnings-above": "{{PLURAL:$2|L'avertissement suivant|Les avertissements suivants}} ont été rencontrés lors de la tentative de création de la balise « $1 » :",
        "gotointerwiki-invalid": "Le titre spécifié n’est pas valide.",
        "gotointerwiki-external": "Vous allez quitter {{SITENAME}} pour visiter [[$2]], qui est un site web distinct.\n\n<strong>[$1 Continuer vers $1]</strong>",
        "undelete-cantedit": "Vous ne pouvez pas annuler la suppression de cette page car vous n’êtes pas autorisé à la modifier.",
-       "undelete-cantcreate": "Vous ne pouvez pas annuler la suppression de cette page car il n’existe pas de page avec ce nom, et vous n’êtes pas autorisé à la créer."
+       "undelete-cantcreate": "Vous ne pouvez pas annuler la suppression de cette page car il n’existe pas de page avec ce nom, et vous n’êtes pas autorisé à la créer.",
+       "pagedata-title": "Données de page",
+       "pagedata-text": "Cette page fournit une interface de données aux pages. Veuillez fournir le titre de la page dans l’URL en utilisant la syntaxe de sous-page.\n* La négociation de contenu s’applique d’après l’entête Accept de votre client. Cela veut dire que les données de la page seront fournies dans le format préféré par votre client.",
+       "pagedata-not-acceptable": "Aucun format correspondant trouvé. Types MIME supportés : $1",
+       "pagedata-bad-title": "Titre non valide : $1."
 }
index f6eacfa..568ff80 100644 (file)
        "anontalk": "Conversa",
        "navigation": "Navegación",
        "and": "&#32;e",
-       "qbfind": "Procurar",
-       "qbbrowse": "Navegar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta páxina",
-       "qbmyoptions": "As miñas páxinas",
        "faq": "Preguntas máis frecuentes",
-       "faqpage": "Project:FAQ",
        "actions": "Accións",
        "namespaces": "Espazos de nomes",
        "variants": "Variantes",
        "edit-local": "Editar a descrición local",
        "create": "Crear",
        "create-local": "Engadir unha descrición local",
-       "editthispage": "Editar esta páxina",
-       "create-this-page": "Crear esta páxina",
        "delete": "Borrar",
-       "deletethispage": "Borrar esta páxina",
-       "undeletethispage": "Restaurar esta páxina",
        "undelete_short": "Restaurar {{PLURAL:$1|unha edición|$1 edicións}}",
        "viewdeleted_short": "Ver {{PLURAL:$1|unha edición borrada|$1 edicións borradas}}",
        "protect": "Protexer",
        "protect_change": "cambiar",
-       "protectthispage": "Protexer esta páxina",
        "unprotect": "Cambiar a protección",
-       "unprotectthispage": "Cambiar a protección desta páxina",
        "newpage": "Páxina nova",
-       "talkpage": "Conversar sobre esta páxina",
        "talkpagelinktext": "Conversa",
        "specialpage": "Páxina especial",
        "personaltools": "Ferramentas persoais",
-       "articlepage": "Ver a páxina de contido",
        "talk": "Conversa",
        "views": "Vistas",
        "toolbox": "Ferramentas",
        "tool-link-userrights": "Modificar os grupos {{GENDER:$1|do usuario|da usuaria}}",
        "tool-link-userrights-readonly": "Ver os {{GENDER:$1|grupos de usuario}}",
        "tool-link-emailuser": "Enviar un correo electrónico {{GENDER:$1|ao usuario|á usuaria}}",
-       "userpage": "Ver a páxina {{GENDER:{{BASEPAGENAME}}|do usuario|da usuaria}}",
-       "projectpage": "Ver a páxina do proxecto",
        "imagepage": "Ver a páxina do ficheiro",
        "mediawikipage": "Ver a páxina da mensaxe",
        "templatepage": "Ver a páxina do modelo",
        "rcfilters-filter-lastrevision-description": "A última modificación a unha páxina.",
        "rcfilters-filter-previousrevision-label": "Versións anteriores",
        "rcfilters-filter-previousrevision-description": "Tódolos cambios realizados nunha páxina e que non son os máis recentes.",
+       "rcfilters-filter-excluded": "Excluído",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:non</strong> $1",
+       "rcfilters-view-tags": "Etiquetas",
        "rcnotefrom": "A continuación {{PLURAL:$5|móstrase o cambio feito|móstranse os cambios feitos}} desde o <strong>$3</strong> ás <strong>$4</strong> (móstranse <strong>$1</strong> como máximo).",
        "rclistfromreset": "Reinicializar a selección da data",
        "rclistfrom": "Mostrar os cambios novos desde o $3 ás $2",
        "newimages-legend": "Filtro",
        "newimages-label": "Nome do ficheiro (ou parte del):",
        "newimages-user": "Enderezo IP ou nome de usuario",
+       "newimages-newbies": "Mostrar só as contribucións das contas de usuario novas",
        "newimages-showbots": "Mostrar as cargas feitas por bots",
        "newimages-hidepatrolled": "Agochar as subidas patrulladas",
+       "newimages-mediatype": "Tipo de ficheiro multimedia",
        "noimages": "Non hai imaxes que mostrar.",
        "gallery-slideshow-toggle": "Intercambiar as miniaturas",
        "ilsubmit": "Procurar",
        "tags-create-reason": "Motivo:",
        "tags-create-submit": "Crear",
        "tags-create-no-name": "Debe especificar unha páxina.",
-       "tags-create-invalid-chars": "Os nomes das etiquetas non poden conter nin comas (<code>,</code>) nin barras (<code>/</code>).",
+       "tags-create-invalid-chars": "Os nomes das etiquetas non poden conter nin comas (<code>,</code>), barras verticais (<code>|</code>), nin barras (<code>/</code>).",
        "tags-create-invalid-title-chars": "As páxinas non deben conter caracteres que non se poidan usar nos títulos das páxinas.",
        "tags-create-already-exists": "A páxina \"$1\" xa existe.",
        "tags-create-warnings-above": "{{PLURAL:$2|Atopouse o seguinte erro|Atopáronse os seguintes erros}} ao intentar crear a etiqueta \"$1\":",
        "gotointerwiki-invalid": "O título especificado non é válido.",
        "gotointerwiki-external": "Vai sair de {{SITENAME}} para visitar [[$2]], que é un sitio web externo.\n\n'''[$1 Continuar en $1]'''",
        "undelete-cantedit": "Non pode anular o borrado desta páxina porque non ten permisos para editar esta páxina.",
-       "undelete-cantcreate": "Non pode anular o borrado desta páxina xa que non hai ningunha páxina con ese nome e non ten permisos para creala."
+       "undelete-cantcreate": "Non pode anular o borrado desta páxina xa que non hai ningunha páxina con ese nome e non ten permisos para creala.",
+       "pagedata-title": "Datos da páxina",
+       "pagedata-text": "Esta páxina porporciona unha interface de datos para páxinas. Por favor, proporcione o título da páxina na URL, usando a sintaxe de subpáxinas.\n* A negociación de contido aplícase baseándose na cabeceira Accept do seu cliente. Isto significa que os datos da páxina serán proporcionados no formato preferido polo seu cliente.",
+       "pagedata-not-acceptable": "Non se atopou ningún formato correspondente. Tipos MIME soportadosː $1",
+       "pagedata-bad-title": "Título non válido: $1."
 }
index e42ae97..d521606 100644 (file)
        "anontalk": "گب",
        "navigation": "گرأخؤردن",
        "and": "&#32;ؤ",
-       "qbfind": "ىاتن",
-       "qbedit": "دچینواچین",
-       "qbpageoptions": "اي ولگ",
        "faq": "رايج سۊالؤن",
-       "faqpage": "Project:رايج سۊالؤن",
        "actions": "کۊنۊشؤن",
        "namespaces": "نؤمفضاؤن",
        "variants": "گۊىشؤن",
        "view-foreign": "دئن $1ˇ ميئن",
        "edit": "دچينواچين",
        "create": "چاگۊدن",
-       "editthispage": "اي ولگه دچينواچين بکۊن",
-       "create-this-page": "اي ولگه چاکۊن",
        "delete": "حذف",
-       "deletethispage": "اي ولگه پاکأ کۊن.",
-       "undeletethispage": "اي ولگه احيا بکۊن.",
        "protect": "پأسن",
        "protect_change": "تغيير",
-       "protectthispage": "اي ولگه بپا",
        "unprotect": "پأسنه عوضأؤدن",
-       "unprotectthispage": "اي ولگˇ پأسنه عوضأکۊن",
        "newpage": "تازه ولگ",
        "talkpagelinktext": "گب",
        "specialpage": "خاصˇ ولگ",
        "talk": "گب",
        "views": "بدئرؤن",
        "toolbox": "أبزارؤن",
-       "userpage": "کارگيرˇ ولگه دئن",
        "imagepage": "فايلˇ ولگه دئن",
        "categorypage": "جرگه ولگه دئن",
        "otherlanguages": "باخي زوانؤنˇ جي",
        "redirectedfrom": "(مسير عوضاؤدن $1 أجي)",
+       "redirectpagesub": "تغييرمسيرˇ ولگ",
        "redirectto": "تغييرمسير به:",
        "lastmodifiedat": "اي ولگ آخري گرش $1ˇ ميئن ساعت $2 دچينواچين بۊبؤ.",
        "protectedpage": "بپأسه ولگ",
        "right-sendemail": "باخي کارگيرؤنه ايمىل بخسأن",
        "newuserlogpage": "کارگير چاگۊدنˇ سياهه",
        "newuserlogpagetext": "اي ىکته سياهه' کارگير چاگۊدنؤنˇ جي",
+       "action-edit": "اي ولگه دچينواچين بکۊن",
        "action-createaccount": "اي کارگيري حيسابه چاکۊن",
        "action-move-categorypages": "جرگه ولگؤنه جابجا گۊدن",
        "action-block": "اي کارگيرˇ دچينواچينˇ دسفأرسه دبۊد",
        "rcshowhidebots-show": "نۊشؤن دأن",
        "rcshowhidebots-hide": "دۊخۊسان",
        "rcshowhideliu": "$1 ثبتˇ نام بؤده کارگيرؤن",
+       "rcshowhideliu-show": "نۊشؤن دأن",
        "rcshowhideliu-hide": "دۊخۊسان",
        "rcshowhideanons": "$1 ناشناس کارگيرؤن",
        "rcshowhideanons-show": "نۊشؤن دأن",
        "file-anchor-link": "فاىل",
        "filehist": "فاىلˇ تاريخ",
        "filehist-help": "تاريخ/زمتؤنˇ سر کيليک بکۊنين تا اۊ تاريخ/زمتˇ نۊسخه' بىنين.",
+       "filehist-revert": "واگرداني",
        "filehist-current": "ألؤنˇ نۊسخه",
        "filehist-datetime": "تاريخ/زمت",
        "filehist-thumb": "کلˇ أنگۊشتي",
        "listusers": "کارگيرؤنˇ ليست",
        "newpages": "تازه ولگؤن",
        "newpages-username": "کارگيري نؤم:",
+       "move": "جابجا گۊدن",
        "unusedcategoriestext": "اي جرگهٰ‌ن درن ولي هيته وانيويسؤن ىا باخيˇ جرگهٰ‌ن اۊشؤنه کارأنگينن.",
        "suppress": "دۊخۊسانگري",
        "booksources": "کيتابˇ سربسؤن",
        "trackingcategories-desc": "جرگه گۊنجاىشˇ ملاک",
        "hidden-category-category-desc": "جرگه خؤ ولگˇ مئن <code><nowiki>__HIDDENCAT__</nowiki></code> شامل بنه، کي نۊگذارنه کي جرگه خالؤنˇ جعبه پيشفرض ولگؤنˇ مئن نۊشؤن بدأببۊن.",
        "trackingcategories-disabled": "جرگه دئه کار نۊکؤنه",
+       "emailuser": "اي کارگيره ايميل گۊدن",
        "emailuser-title-target": "اي {{GENDER:$1|کارگيره}} ايمىل بخسأن.",
        "usermaildisabled": "نشأنه کارگير ئبه ايمىل خسأنئن.",
        "usermaildisabledtext": "شمه اي ويکي مئن مننين باخي کارگيرؤنه ايمىل بخسأنين",
        "anoncontribs": "مۊشارکتؤن",
        "month": "اي ماه مئن (ؤ دأميشک):",
        "year": "اي سالˇ مئن (ؤ دأميشک):",
+       "sp-contributions-uploads": "جؤرأکشئنؤن",
        "sp-contributions-talk": "گب",
+       "sp-contributions-submit": "وامج",
        "whatlinkshere": "هرچي خال ببؤ ائره",
        "whatlinkshere-title": "ولگؤني گه «$1»ˇ أمرأ خال دأنن",
        "whatlinkshere-page": "ولگ:",
        "tooltip-ca-viewsource": "اي ولگ بپاسأکه.\nتؤنين اينˇ سربسه بينين",
        "tooltip-ca-history": "اي ولگˇ قديمي نۊسخه'ن",
        "tooltip-ca-protect": "أ ولگه بپا",
+       "tooltip-ca-delete": "اي ولگه پاکأ کۊن",
        "tooltip-ca-move": "اي ولگه جابجا گۊدن",
        "tooltip-ca-watch": "اي ولگه علاوه بکۊن تي پىگيري ليسته",
        "tooltip-search": "{{SITENAME}} مئن وامج",
        "tooltip-diff": "تغييرؤني گه شۊمۊ وؤتˇ ميئن بدأينˇ نۊشؤن دأن",
        "tooltip-rollback": "\"پساوگردان\" اي ولگˇ آخري دچينواچينگرˇ دچينواچينؤنه ىکته تنگۊلى أجي خؤنثا کؤنه.",
        "tooltip-summary": "فيچالسه وارد بکۊنين",
+       "pageinfo-header-edits": "تاريخچهٰ دچينواچين گۊدن",
        "pageinfo-header-restrictions": "ولگه پأسن",
+       "pageinfo-robot-index": "مؤجاز",
+       "pageinfo-firstuser": "ولگˇ چاکۊنکس",
        "pageinfo-hidden-categories": "جخۊته {{PLURAL:$1| جرگه|جرگه}} ( $1 )",
        "pageinfo-toolboxlink": "ولگˇ اطلاعات",
        "pageinfo-category-info": "جرگه اطلاعات",
        "namespacesall": "همه",
        "monthsall": "همه",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|گب]])",
+       "redirect-submit": "بۊشۊ",
+       "redirect-file": "فايلˇ نؤم",
        "specialpages": "خاصˇ ولگؤن",
        "specialpages-group-login": "ديرين/ثبتˇ نؤم",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|تگ|تگؤن}}]]: $2)",
index be7130e..5841750 100644 (file)
@@ -37,6 +37,7 @@
        "tog-hideminor": "હાલમાં થયેલા ફેરફારમાં નાના ફેરફારો છુપાવો",
        "tog-hidepatrolled": "હાલના સલામતી માટે કરવામાં આવેલાં થયેલા ફેરફારો છુપાવો.",
        "tog-newpageshidepatrolled": "નવાં પાનાંની યાદીમાંથી દેખરેખ હેઠળનાં પાનાં છુપાવો",
+       "tog-hidecategorization": "પાનાંનું વર્ગીકરણ છુપાવો",
        "tog-extendwatchlist": "ધ્યાનસૂચિને વિસ્તૃત કરો જેથી,ફક્ત તાજેતરનાજ નહીં, બધા આનુષાંગિક ફેરફારો જોઇ શકાય",
        "tog-usenewrc": "તાજા ફેરફારોમાં અને ધ્યાનસૂચિમાં ફેરફારોને પાનાં અનુસાર જૂથમાં ગોઠવો",
        "tog-numberheadings": "મથાળાંઓને આપો-આપ ક્રમ (ઑટો નંબર) આપો",
@@ -55,7 +56,7 @@
        "tog-enotifminoredits": "પાનાં અને ફાઇલ્સમાં નાનાં ફેરફાર થાય તો પણ મને ઇમેલ મોકલો",
        "tog-enotifrevealaddr": "નોટીફીકેશનના ઇમેલમાં મારૂ ઇમેલ સરનામું બતાવો",
        "tog-shownumberswatching": "ધ્યાન રાખતા સભ્યોની સંખ્યા બતાવો",
-       "tog-oldsig": "હાલના હસ્તાક્ષર:",
+       "tog-oldsig": "તમારા àª¹àª¾àª²àª¨àª¾ àª¹àª¸à«\8dતાàª\95à«\8dષર:",
        "tog-fancysig": "હસ્તાક્ષરનો વિકિલખાણ તરીકે ઉપયોગ કરો (સ્વચાલિત કડી વગર)",
        "tog-uselivepreview": "જીવંત પૂર્વદર્શન વાપરો",
        "tog-forceeditsummary": "કોરો 'ફેરફાર સારાંશ' ઉમેરતા પહેલા મને ચેતવો",
        "tog-watchlisthideliu": "લોગ થયેલા સભ્ય દ્વારા કરવામાં આવેલ ફેરફાર ધ્યાનસુચીમાં છુપાવો.",
        "tog-watchlisthideanons": "અજાણ્યા સભ્ય દ્વારા થયેલ ફેરફાર મારી ધ્યાનસુચીમાં છુપાવો",
        "tog-watchlisthidepatrolled": "સુરક્ષા કાજે કરવામાં આવેલ ફેરફાર મારી ધ્યાનસુચીમાં છુપાવો",
+       "tog-watchlisthidecategorization": "પાનાંઓનું વર્ગીકરણ છુપાવો",
        "tog-ccmeonemails": "મે અન્યોને મોકલેલા ઇમેલની નકલ મને મોકલો",
        "tog-diffonly": "તફાવતની નીચે લેખ ન બતાવશો",
        "tog-showhiddencats": "છુપી શ્રેણીઓ દર્શાવો",
-       "tog-norollbackdiff": "રà«\8bલબà«\87àª\95 àª\95રà«\8dયા àªªàª\9bà«\80ના àª¤àª«àª¾àªµàª¤à«\8b àª\9bà«\81પાવà«\8b",
+       "tog-norollbackdiff": "રà«\8bલબà«\87àª\95 àª\95રà«\8dયા àªªàª\9bà«\80ના àª¤àª«àª¾àªµàª¤à«\8b àª¦àª°à«\8dશાવà«\8b àª¨àª¹à«\80àª\82",
        "tog-useeditwarning": "સાચવ્યા વગર જો હું પૃષ્ઠ છોડું તો મને ચેતવણી આપો",
-       "tog-prefershttps": "સભ્યનામથી પ્રવેશ કર્યો હોય ત્યારે સુરક્ષિત જોડાણ (https) જ વાપરો",
+       "tog-prefershttps": "àª\9cà«\8dયારà«\87 àª¸àª­à«\8dયનામથà«\80 àªªà«\8dરવà«\87શ àª\95રà«\8dયà«\8b àª¹à«\8bય àª¤à«\8dયારà«\87 àª¸à«\81રàª\95à«\8dષિત àª\9cà«\8bડાણ (https) àª\9c àªµàª¾àªªàª°à«\8b",
        "underline-always": "હંમેશાં",
        "underline-never": "કદી નહિ",
        "underline-default": "પૂર્વ નિર્ધારિત સ્કિન કે બ્રાઉઝર",
        "category-file-count-limited": "નીચે દર્શાવેલ {{PLURAL:$1|દસ્તાવેજ|દસ્તાવેજો}} પ્રસ્તુત શ્રેણીમાં છે.",
        "listingcontinuesabbrev": "ચાલુ..",
        "index-category": "અનુક્રમણિકા બનાવેલા પાનાં",
-       "noindex-category": "અનુક્રમણિકા નહી બનાવેલા પાનાં",
+       "noindex-category": "અનુક્રમણિકા નહી બનાવેલા પાનાં",
        "broken-file-category": "ફાઇલોની ત્રૂટક કડીઓવાળાં પાનાં",
        "about": "વિષે",
        "article": "લેખનું પાનું",
        "newwindow": "(નવા પાનામાં ખુલશે)",
        "cancel": "રદ કરો",
        "moredotdotdot": "વધારે...",
-       "morenotlisted": "આ યાદી પૂર્ણ નથી.",
+       "morenotlisted": "àª\95દાàª\9a àª\86 àª¯àª¾àª¦à«\80 àªªà«\82રà«\8dણ àª¨àª¥à«\80.",
        "mypage": "પાનું",
        "mytalk": "ચર્ચા",
        "anontalk": "ચર્ચા",
        "navigation": "ભ્રમણ",
        "and": "&#32;અને",
-       "qbfind": "શોધો",
-       "qbbrowse": "બ્રાઉઝ",
-       "qbedit": "ફેરફાર કરો",
-       "qbpageoptions": "આ પાનું",
-       "qbmyoptions": "મારાં પાનાં",
        "faq": "FAQ\nવારંવાર પુછાતા પ્રશ્નો",
-       "faqpage": "Project:વારંવાર પુછાતા પ્રશ્નો",
        "actions": "ક્રિયાઓ",
        "namespaces": "નામાવકાશો",
        "variants": "ભિન્ન રૂપો",
        "edit-local": "સ્થાનિક વર્ણનમાં ફેરફાર કરો",
        "create": "બનાવો",
        "create-local": "સ્થાનિક વર્ણન ઉમેરો",
-       "editthispage": "આ પાનામાં ફેરફાર કરો",
-       "create-this-page": "આ પાનું બનાવો",
-       "delete": "રદ કરો",
-       "deletethispage": "આ પાનું હટાવો",
-       "undeletethispage": "આ પાનું પુનર્જીવીત કરો",
+       "delete": "દૂર કરો",
        "undelete_short": "હટાવેલ {{PLURAL:$1|એક ફેરફાર|$1 ફેરફારો}} પરત લાવો.",
        "viewdeleted_short": "{{PLURAL:$1|ભૂંસી નાખેલો એક|ભૂંસી નાખેલા $1}} ફેરફાર જુઓ",
        "protect": "સુરક્ષિત કરો",
        "protect_change": "બદલો",
-       "protectthispage": "આ પાનું સુરક્ષિત કરો",
        "unprotect": "સુરક્ષા બદલો",
-       "unprotectthispage": "આ પાનાનું સુરક્ષા  બદલો",
        "newpage": "નવું પાનું",
-       "talkpage": "આ પાના વિષે ચર્ચા કરો",
        "talkpagelinktext": "ચર્ચા",
        "specialpage": "ખાસ પાનું",
        "personaltools": "વ્યક્તિગત સાધનો",
-       "articlepage": "લેખનું પાનું જુઓ",
        "talk": "ચર્ચા",
        "views": "દેખાવ",
        "toolbox": "સાધનો",
-       "userpage": "સભ્યનું પાનું જુઓ",
-       "projectpage": "પ્રકલ્પનું પાનું જુઓ",
        "imagepage": "ફાઇલનું પાનું જુઓ",
        "mediawikipage": "સંદેશનું પાનું જુઓ",
        "templatepage": "ઢાંચાનું પાનુ જુઓ",
        "ok": "મંજૂર",
        "retrievedfrom": "\"$1\" થી મેળવેલ",
        "youhavenewmessages": "{{PLURAL:$3|તમારી પાસે}} $1 ($2).",
-       "youhavenewmessagesfromusers": "આપને માટે {{PLURAL:$3|અન્ય સભ્ય|$3 અન્ય સભ્યો}} તરફથી $1 છે. ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|આપ}}ને માટે {{PLURAL:$3|અન્ય સભ્ય|$3 અન્ય સભ્યો}} તરફથી $1 છે. ($2).",
        "youhavenewmessagesmanyusers": "આપને માટે ઘણાં સભ્યો તરફથી $1 છે ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|નવો સંદેશો|૯૯૯=નવા સંદેશા}}",
        "newmessagesdifflinkplural": "છેલ્લા {{PLURAL:$1|ફેરફાર|૯૯૯=ફેરફારો}}",
        "youhavenewmessagesmulti": "તમારા માટે $1 ઉપર નવા સંદેશાઓ છે",
        "editsection": "ફેરફાર કરો",
        "editold": "ફેરફાર કરો",
-       "viewsourceold": "સà«\8dરà«\8bત જુઓ",
+       "viewsourceold": "મà«\82ળ જુઓ",
        "editlink": "ફેરફાર",
-       "viewsourcelink": "સà«\8dરà«\8bત જુઓ",
+       "viewsourcelink": "મà«\82ળ જુઓ",
        "editsectionhint": "પરિચ્છેદમાં ફેરફાર કરો: $1",
        "toc": "અનુક્રમણિકા",
        "showtoc": "બતાવો",
        "actionthrottled": "અકાળે અટાકાવી દીધેલી ક્રિયા",
        "actionthrottledtext": "સ્પામ નિયંત્રણ તકેદારી રૂપે આ ક્રિયા અમુક મર્યાદામાં જ કરી શકો છો, અને તમે તે મર્યાદા વટાવી દીધી છે. કૃપા કરી થોડાક સમય પછી ફરી પ્રયત્ન કરો.",
        "protectedpagetext": "ફેરફારો કે એવું કંઈ પણ થતું રોકવા માટે આ પાનું સુરક્ષિત કરવામાં આવ્યું છે.",
-       "viewsourcetext": "આપ આ પાનાનો મૂળ સ્રોત નિહાળી શકો છો અને તેની નકલ (copy) પણ કરી શકો છો:",
-       "viewyourtext": "આપ આ પાનાનાં '''આપનાં સંપાદનો'''નો મૂળ સ્રોત નિહાળી શકો છો અને તેની નકલ (copy) પણ કરી શકો છો:",
+       "viewsourcetext": "આપ આ પાનાનો મૂળ સ્રોત નિહાળી શકો છો અને તેની નકલ (copy) પણ કરી શકો છો.",
+       "viewyourtext": "આપ આ પાનાનાં <strong>આપનાં સંપાદનો</strong>નો મૂળ સ્રોત નિહાળી શકો છો અને તેની નકલ (copy) પણ કરી શકો છો:<strong>",
        "protectedinterface": "આ પાનું સોફ્ટવેર માટે ઇન્ટરફેઇસ ટેક્સટ આપે છે, અને તેને દુરુપયોગ રોકવા માટે સ્થગિત કર્યું છે.\nબધાંજ વિકિ માટે ભાષાંતર ઉમેરવા કે બદલવા માટે, કૃપા કરી [https://translatewiki.net/ translatewiki.net], મિડિયાવિકિ સ્થાનિયકરણ પ્રકલ્પ, વાપરો.",
        "editinginterface": "<strong>ચેતવણી:</strong> તમે જે પાનામાં ફેરફાર કરી રહ્યા છો તે પાનું સોફ્ટવેર માટે ઇન્ટરફેસ ટેક્સટ પૂરી પાડે છે.\nઅહીંનો બદલાવ આ વિકિ પર ઉપસ્થિત અન્ય સભ્યોના ઇન્ટરફેસનાં દેખાવ ઉપર અસરકર્તા બનશે.",
        "cascadeprotected": "આ પાના પર ફેરફાર પ્રતિબંધિત છે, કારણ કે આ પાનું {{PLURAL:$1|એવા પાનાં}}નું સભ્ય છે કે જેમાં અનુવર્તી(પગથિયામય) સંરક્ષણ લાગુ કરવામાં આવ્યું છે :\n$2",
        "nocookieslogin": "{{SITENAME}} કુકીઝ સિવાય પ્રવેશ કરવા નહીં દે.\nતમે કુકીઝ બંધ કરી છે.\nકૃપા કરી કુકીઝ ચાલુ કરીને તમારા સભ્યનામ સાથે પ્રવેશ કરો.",
        "nocookiesfornew": "સભ્ય ખાતાની પુષ્ટિ નથી થઇ, અમે તેના સ્ત્રોતની પુષ્ટિ ન કરી શક્યા.\nખાત્રી કરો કે તમે કુકીઝ સક્રીય કરી છે, અને પાનું ફરીથી ચડાવો",
        "noname": "તમે પ્રમાણભૂત સભ્યનામ જણાવેલ નથી.",
-       "loginsuccesstitle": "પ્રવેશ સફળ",
+       "loginsuccesstitle": "પ્રવેશીત",
        "loginsuccess": "'''તમે હવે {{SITENAME}}માં \"$1\" તરીકે પ્રવેશી ચુક્યા છો.'''",
        "nosuchuser": "\"$1\" નામ ધરાવતો કોઇ સભ્ય અસ્તિત્વમાં નથી.\n\nસભ્યનામો અક્ષરસંવેદી (કેસ સેન્સિટીવ) હોય છે.\n\nકૃપા કરી સ્પેલીંગ/જોડણી ચકાસો અથવા [[Special:CreateAccount|નવું ખાતુ ખોલો]].",
        "nosuchusershort": "\"$1\" નામનો કોઇ સભ્ય નથી, તમારી જોડણી તપાસો.",
        "noemail": "સભ્ય \"$1\"નું કોઇ ઇ-મેલ સરનામું નોંધાયેલું નથી.",
        "noemailcreate": "તમારે વૈધ ઇમેલ આપવાની જરૂર છે.",
        "passwordsent": "\"$1\" ની નવી ગુપ્તસંજ્ઞા (પાસવર્ડ) આપના ઇમેઇલ પર મોકલવામાં આવ્યો છે.\nકૃપા કરી તે મળ્યા બાદ ફરી લોગ ઇન કરો.",
-       "blocked-mailpassword": "ફેરફાર કરવા માટે તમારું IP એડ્રેસ સ્થગિત કરી દેવાયું છે, તેથી દૂરુપયોગ ટાળવા માટે તમને ગુપ્તસંજ્ઞા ફરી મેળવવાની છૂટ નથી.",
+       "blocked-mailpassword": "ફà«\87રફાર àª\95રવા àª®àª¾àª\9fà«\87 àª¤àª®àª¾àª°à«\81àª\82 IP àª\8fડà«\8dરà«\87સ àª¸à«\8dથàª\97િત àª\95રà«\80 àª¦à«\87વાયà«\81àª\82 àª\9bà«\87, àª¤à«\87થà«\80 àª¦à«\82રà«\81પયà«\8bàª\97 àª\9fાળવા àª®àª¾àª\9fà«\87 àª¤àª®àª¨à«\87 àª\86 IP àª\8fડà«\8dરà«\87સ àªªàª°àª¥à«\80 àª\97à«\81પà«\8dતસàª\82àª\9cà«\8dàª\9eા àª«àª°à«\80 àª®à«\87ળવવાનà«\80 àª\9bà«\82àª\9f àª¨àª¥à«\80.",
        "eauthentsent": "પુષ્ટિ કરવા માટે નિશ્ચિત થયેલા સરનામાં પર ઇમેલ મોકલવામાં આવ્યો છે.\nએ જ સરનામે બીજો ઇમેલ થતાં પહેલાં તમારે ઇમેલમાં લખેલી સૂચનાઓ પ્રમાણે કરવું પડશે જેથી એ પુષ્ટિ થઇ શકે કે આપેલું સરનામું તમારું છે.",
        "throttled-mailpassword": "ગુપ્ત સંજ્ઞા યાદ અપાવતી ઇમેઇલ છેલ્લા {{PLURAL:$1|કલાકમાં|$1 કલાકોમાં}} મોકલેલી છે.\nદૂરુપયોગ રોકવા માટે, {{PLURAL:$1|કલાકમાં|$1 કલાકોમાં}} ફક્ત એક જ આવી મેઇલ કરવામાં આવે છે.",
        "mailerror": "મેઇલ મોકલવામાં ત્રુટિ: $1",
-       "acct_creation_throttle_hit": "àª\86 àªµàª¿àª\95િના àª®à«\81લાàª\95ાતà«\80àª\93àª\8f àª¤àª®àª¾àª°à«\81àª\82 IP àªµàª¾àªªàª°à«\80નà«\87 àª\97àª\88 àª\95ાલà«\87 {{PLURAL:$1|1 àª\96ાતà«\81àª\82 |$1 àª\96ાતા}} àª\96à«\8bલà«\8dયાàª\82 àª\9bà«\87,àª\9cà«\87 àªªà«\8dરવાનગીની મહત્તમ સંખ્યા છે. આને પરિણામે મુલાકાતી આ ક્ષણેવધુ ખાતા નહીં ખોલી શકે.",
+       "acct_creation_throttle_hit": "àª\86 àªµàª¿àª\95િના àª®à«\81લાàª\95ાતà«\80àª\93àª\8f àª¤àª®àª¾àª°à«\81àª\82 IP àªµàª¾àªªàª°à«\80નà«\87 àªªàª¾àª\9bલા $2માàª\82 {{PLURAL:$1|1 àª\96ાતà«\81àª\82 |$1 àª\96ાતા}} àª\96à«\8bલà«\8dયાàª\82 àª\9bà«\87, àª\9cà«\87 àªªરવાનગીની મહત્તમ સંખ્યા છે. આને પરિણામે મુલાકાતી આ ક્ષણેવધુ ખાતા નહીં ખોલી શકે.",
        "emailauthenticated": "તમારૂં ઇ-મેઇલ સરનામું $2 ના $3 સમયે પ્રમાણિત કરેલું છે.",
        "emailnotauthenticated": "તમારૂં ઇ-મેઇલ સરનામું હજુ સુધી પ્રમાણિત થયેલું નથી.\n\nનિમ્નલિખિત વિશેષતાઓમાંથી કોઇ માટે ઇ-મેઇલ મોકલવામાં આવશે નહીં.",
        "noemailprefs": "આ વિશેષતાઓ કાર્ય કરી શકે તે માટે 'તમારી પસંદ'માં ઇ-મેઇલ સરનામું દર્શાવો.",
        "createaccount-title": "{{SITENAME}} માટે ખાતુ બનાવ્યું",
        "createaccount-text": "કોઇકે {{SITENAME}} ($4) પર, નામ \"$2\", ગુપ્તસંજ્ઞા \"$3\", શાથે તમારા ઇ-મેઇલ એડ્રેસ માટે ખાતુ બનાવેલ છે.\n\nતમે હવે પ્રવેશ કરી અને ગુપ્તસંજ્ઞા બદલી શકો છો.\n\nજો આ ખાતુ ભુલથી બનેલું હોય તો,આ સંદેશને અવગણી શકો છો.",
        "login-throttled": "તમે હાલમાં ઘણાં જ પ્રવેશ પ્રયત્નો કર્યા છે.\nકૃપા કરી ફરી પ્રયત્ન કરતાં પહેલાં $1 રાહ જુઓ.",
-       "login-abort-generic": "તમારà«\81àª\82 àªªà«\8dરવà«\87શ àª¨àª¿àª·à«\8dફળ àª¥àª¯à«\81àª\82 - àª\9bà«\8bડà«\80 àª¦à«\87વાયà«\81àª\82",
+       "login-abort-generic": "તમારà«\80 àªªà«\8dરવà«\87શવિધિ àª¨àª¿àª·à«\8dફળ àª¥àª\88 - àª°àª¦àª¬àª¾àª¤àª²",
        "loginlanguagelabel": "ભાષા: $1",
        "suspicious-userlogout": "લોગ આઉટ કરવાની તમારી વિનંતિ પૂરી ન કરી શકાઇ. એમ લાગે છે કે તેને તૃટિ પામેલ બ્રાઉઝર કે પ્રોક્સી દ્વારા મોકલાઈ હતી.",
        "createacct-another-realname-tip": "સાચું નામ મરજીયાત છે.\nજો તમે તે આપવાનું પસંદ કરશો, તો તેનો ઉપયોગ તમે કરેલ યોગદાનનું શ્રેય આપવા માટે થશે.",
        "newpassword": "નવી ગુપ્તસંજ્ઞા:",
        "retypenew": "નવી ગુપ્ત સંજ્ઞા (પાસવર્ડ) ફરી લખો:",
        "resetpass_submit": "ગુપ્તસંજ્ઞા બદલીને પ્રવેશ કરો.",
-       "changepassword-success": "તમારà«\80 àª\97à«\81પà«\8dતસàª\82àª\9cà«\8dàª\9eા àª¸àª«àª³àª¤àª¾àªªà«\82રà«\8dવàª\95 àª¬àª¦àª²àª¾àª\87 àª\97àª\87 છે!",
+       "changepassword-success": "તમારà«\80 àª\97à«\81પà«\8dતસàª\82àª\9cà«\8dàª\9eા àª¬àª¦àª²à«\80 àª\85પાàª\88 છે!",
        "resetpass_forbidden": "ગુપ્તસંજ્ઞા બદલી શકાશે નહીં",
        "resetpass-no-info": "બારોબાર આ પાનું જોવા માટે પ્રવેશ કરવો આવશ્યક છે.",
        "resetpass-submit-loggedin": "ગુપ્તસંજ્ઞા બદલો",
        "hr_tip": "આડી લીટી (શક્ય તેટલો ઓછો ઉપયોગ કરો)",
        "summary": "સારાંશ:",
        "subject": "વિષય:",
-       "minoredit": "àª\86 àª\8fàª\95 àª¨àª¾àª¨à«\8b àª¸à«\81ધારà«\8b છે",
+       "minoredit": "àª\86 àª\8fàª\95 àª¨àª¾àª¨à«\8b àª«à«\87રફાર છે",
        "watchthis": "આ પાનાને ધ્યાનમાં રાખો",
        "savearticle": "પાનું સાચવો",
        "savechanges": "પરિવર્તન સાચવો",
        "summary-preview": "સારાંશ પૂર્વાવલોકન:",
        "subject-preview": "વિષય/શીર્ષક પૂર્વાવલોકન:",
        "blockedtitle": "સભ્ય પ્રતિબંધિત છે",
-       "blockedtext": "'''આપનાં સભ્ય નામ અથવા આઇ.પી. એડ્રેસ પર પ્રતિબંધ મુકવામાં આવ્યો છે.'''\n\nઆ પ્રતિબંધ  $1એ મુક્યો છે.\nજેને માટે કારણ આપવામાં આવ્યું છે કે, ''$2''.\n\n* પ્રતિબંધ મુક્યા તારીખ: $8\n* પ્રતિબંધ ઉઠાવવાની તારીખ: $6\n* જેના ઉપર પ્રતિબંધ મુક્યો છે તે: $7\n\nઆપનાં પર મુકવામાં આવેલાં પ્રતિબંધ વિષે ચર્ચા કરવા માટે આપ $1નો કે અન્ય [[{{MediaWiki:Grouppage-sysop}}|પ્રબંધક]]નો સંપર્ક કરી શકો છો.\nઆપ 'સભ્યને ઇ-મેલ કરો' ની કડી વાપરી નહી શકો, પરંતુ જો આપનાં [[Special:Preferences|મારી પસંદ]]માં યોગ્ય ઇ-મેલ સરનામું વાપર્યું હશે અને તમારા તે ખાતું વાપરવા ઉપર પ્રતિબંધ નહી મુક્યો હોય તો તમે તે કડીનો ઉપયોગ કરી શકશો.\nતમારૂં હાલનું આઇ.પી સરનામું છે $3, અને જેના પર પ્રતિબંધ મુકવામાં આવ્યો છે તે છે  #$5.\nમહેરબાની કરીને કોઇ પણ પત્ર વ્યવહારમાં ઉપરની બધીજ માહિતીનો ઉલ્લેખ કરશો.",
+       "blockedtext": "<strong>આપનાં સભ્ય નામ અથવા આઇ.પી. એડ્રેસ પર પ્રતિબંધ મુકવામાં આવ્યો છે.</strong>\n\nઆ પ્રતિબંધ $1એ મુક્યો છે.\nજેને માટે કારણ આપવામાં આવ્યું છે, <em>$2</em>.\n\n* પ્રતિબંધ મુક્યા તારીખ: $8\n* પ્રતિબંધ ઉઠાવવાની તારીખ: $6\n* જેના ઉપર પ્રતિબંધ મુક્યો છે તે: $7\n\nઆપનાં પર મુકવામાં આવેલાં પ્રતિબંધ વિષે ચર્ચા કરવા માટે આપ $1નો કે અન્ય [[{{MediaWiki:Grouppage-sysop}}|પ્રબંધક]]નો સંપર્ક કરી શકો છો.\nઆપ 'સભ્યને ઇ-મેલ કરો' ની કડી વાપરી નહી શકો, પરંતુ જો આપનાં [[Special:Preferences|મારી પસંદ]]માં યોગ્ય ઇ-મેલ સરનામું વાપર્યું હશે અને તમારા તે ખાતું વાપરવા ઉપર પ્રતિબંધ નહી મુક્યો હોય તો તમે તે કડીનો ઉપયોગ કરી શકશો.\nતમારૂં હાલનું આઇ.પી સરનામું છે $3, અને જેના પર પ્રતિબંધ મુકવામાં આવ્યો છે તે છે  #$5.\nમહેરબાની કરીને કોઇ પણ પત્ર વ્યવહારમાં ઉપરની બધીજ માહિતીનો ઉલ્લેખ કરશો.",
        "autoblockedtext": "તમારાં IP સરનામા પર સ્વયંચાલિત રીતે રોક લગાવી દેવાઈ છે કેમકે તે અન્ય સભ્ય દ્વારા વાપરવામાં આવ્યું હતું જેના પર $1 દ્વારા પહેલેથી પ્રતિબંધ મૂકવામાં આવ્યો છે.\n:''$2''\n\n* રોકની શરુઆત : $8\n* રોકની સમાપ્તિ : $6\n* પ્રસ્તાવિત રોક સહન કરનાર : $7\n\nતમે $1 અથવા કોઇ અન્ય [[{{MediaWiki:Grouppage-sysop}}|પ્રબંધક]]નો સંપર્ક કરી રોકની ચર્ચા કરી શકો.\n\nનોંધો કે તેમે \"આ સભ્યને ઈ-મેલ કરો\" વિકલ્પ નહિ વાપરી શકો, સિવાયકે તમરી પાસે તમારા [[Special:Preferences|user preferences]]માં વૈધ ઈ-મેલ સરનામું હોય અને તે વાપરવા પર પ્રતિબંધ ન મૂકવામાં આવ્યો હોય.\n\nતમારું હાલનું IP સરનામું $3 છે, અને રોકની ID છે #$5.\nઆ માહિતી તમારી પૂછપરછમાં જરૂર ઉમેરશો.",
        "blockednoreason": "કોઇ કારણ દર્શાવવામાં આવ્યું નથી",
        "whitelistedittext": "ફેરફાર કરવા માટે તમારે $1 કરવાનું છે.",
        "noarticletext": "આ પાનામાં હાલમાં કોઇ લખાણ નથી.\nતમે બીજાં પાનાંમાં [[Special:Search/{{PAGENAME}}|આ પાનાંના શીર્ષક માટે શોધી શકો છો]], <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}}}} સંલગ્ન માહિતિ પત્રકોમાં શોધી શકો છો], પરંતુ તમને આ પાનું બનાવવાની મંજૂરી નથી.",
        "userpage-userdoesnotexist": "સભ્ય ખાતું \"<nowiki>$1</nowiki>\"ની નોંધણીનથી થઈ.\nશું તમે ખરેખર આ પાનાની રચના કે ફેરફાર કરવા માંગો છો",
-       "userpage-userdoesnotexist-view": "સભ્યના ખાતા $1 ની નોંધણી નથી થઈ",
+       "userpage-userdoesnotexist-view": "સભ્ય ખાતા \"$1\" ની નોંધણી થયેલ નથી.",
        "blocked-notice-logextract": "આ સભ્ય હાલમાં પ્રતિબંધિત છે.\nતમારા નીરીક્ષણ માટે તાજેતરમાં પ્રતિબંધિત થયેલા સભ્યોની યાદિ આપી છે.",
-       "clearyourcache": "<strong>નà«\8bàª\82ધ:</strong> àªªàª¾àª¨à«\81àª\82 àª¸àª¾àª\9aવà«\8dયા àªªàª\9bà«\80, àª¤àª®àª¾àª°à«\87 àª¤àª®àª¾àª°àª¾ àª¬à«\8dરાàª\89àª\9dરનà«\80 àª\95à«\85શ àª¬àª¾àª¯àªªàª¾àª¸ àª\95રવાનà«\80 àª\86વશà«\8dયàª\95તા àªªàª¡à«\80 àª¶àª\95à«\87 àª\9bà«\87.\n*<strong>ફાયરફà«\8bàª\95à«\8dસ / àª¸àª«àª¾àª°à«\80:</strong> </em>શà«\80ફà«\8dàª\9f<em> àª¦àª¬àª¾àªµà«\87લà«\80 àª°àª¾àª\96à«\80નà«\87 ''રિલà«\8bડ'' àªªàª° àª\95à«\8dલિàª\95 àª\95રà«\8b, àª\85થવા àª¤à«\8b <em>Ctrl-F5</em> àª\95à«\87 <em>Ctrl-R<em> àª¦àª¬àª¾àªµà«\8b (મà«\87àª\95 àªªàª° <em>â\8c\98-R</em>)\n*<strong>àª\97à«\81àª\97લ àª\95à«\8dરà«\8bમ:</strong> <em>Ctrl-Shift-R</em> àª¦àª¬àª¾àªµà«\8b (મà«\87àª\95 àªªàª° <em>â\8c\98-Shift-R</em>)\n*<strong>àª\88નà«\8dàª\9fરનà«\87àª\9f àª\8fàª\95à«\8dસપà«\8dલà«\8bરર:</strong> <em>Ctrl</em> àª¦àª¬àª¾àªµà«\87લà«\80 àª°àª¾àª\96à«\80નà«\87 <em>રિફà«\8dરà«\87શ</em> àªªàª° àª\95à«\8dલિàª\95 àª\95રà«\8b, àª\85થવા <em>Ctrl-F5</em> àª¦àª¬àª¾àªµà«\8b\n*<strong>àª\93પà«\87રા:</strong> <em>સાધનà«\8b â\86\92 àªªàª¸àª\82દàª\97à«\80àª\93</em>માàª\82 àª\9càª\88નà«\87 àª\95à«\85શ àª¸àª¾àª« àª\95રà«\8b",
+       "clearyourcache": "<strong>નà«\8bàª\82ધ:</strong> àªªàª¾àª¨à«\81àª\82 àª¸àª¾àª\9aવà«\8dયા àªªàª\9bà«\80, àª¤àª®àª¾àª°à«\87 àª¤àª®àª¾àª°àª¾ àª¬à«\8dરાàª\89àª\9dરનà«\80 àª\95à«\85શ àª¬àª¾àª¯àªªàª¾àª¸ àª\95રવાનà«\80 àª\86વશà«\8dયàª\95તા àªªàª¡à«\80 àª¶àª\95à«\87 àª\9bà«\87.\n*<strong>ફાયરફà«\8bàª\95à«\8dસ / àª¸àª«àª¾àª°à«\80:</strong> </em>શà«\80ફà«\8dàª\9f<em> àª¦àª¬àª¾àªµà«\87લà«\80 àª°àª¾àª\96à«\80નà«\87 ''રિલà«\8bડ'' àªªàª° àª\95à«\8dલિàª\95 àª\95રà«\8b, àª\85થવા àª¤à«\8b <em>Ctrl-F5</em> àª\95à«\87 <em>Ctrl-R<em> àª¦àª¬àª¾àªµà«\8b (મà«\87àª\95 àªªàª° <em>â\8c\98-R</em>)\n*<strong>àª\97à«\81àª\97લ àª\95à«\8dરà«\8bમ:</strong> <em>Ctrl-Shift-R</em> àª¦àª¬àª¾àªµà«\8b (મà«\87àª\95 àªªàª° <em>â\8c\98-Shift-R</em>)\n*<strong>àª\88નà«\8dàª\9fરનà«\87àª\9f àª\8fàª\95à«\8dસપà«\8dલà«\8bરર:</strong> <em>Ctrl</em> àª¦àª¬àª¾àªµà«\87લà«\80 àª°àª¾àª\96à«\80નà«\87 <em>રિફà«\8dરà«\87શ</em> àªªàª° àª\95à«\8dલિàª\95 àª\95રà«\8b, àª\85થવા <em>Ctrl-F5</em> àª¦àª¬àª¾àªµà«\8b\n*<strong>àª\93પà«\87રા:</strong> <em>મà«\87નà«\81 â\86\92 àª¸à«\87àª\9fિàª\82àª\97à«\8dસ</em> (<em>àª\93પà«\87રા â\86\92 àªªà«\8dરà«\87ફરà«\87નà«\8dસિàª\9d</em> àª®à«\87àª\95 àªªàª°) àª®àª¾àª\82 àª\9cાàª\93 àª\85નà«\87 àªªàª\9bà«\80 <em>પà«\8dરાયવસà«\80 àª\85નà«\87 àª¸àª¿àª\95à«\8dયà«\81રિàª\9fà«\80 â\86\92 àª¬à«\8dરાàª\89àª\9dà«\80àª\82àª\97 àª¡à«\87àª\9fા àª¸àª¾àª« àª\95રà«\8b â\86\92 àª\95à«\85શ àª¥àª¯à«\87લા àª\9aિતà«\8dરà«\8b àª\85નà«\87 àª«àª¾àª\88લà«\8b</em> àªªàª° àª\9cાàª\93.",
        "usercssyoucanpreview": "'''ટીપ:''' તમારા નવા CSSને સાચવતા પહેલા  \"{{int:showpreview}}\" બટન વાપરી ચકાસણી કરો.",
        "userjsyoucanpreview": "'''ટીપ:''' Use the તમારી નવી JavaScript ને સાચવતા પહેલા   \"{{int:showpreview}}\" બટન વાપરી ચકાસો.",
        "usercsspreview": "'''યાદ રહે કે તમે તમારા સભ્ય CSS નું અવલોકન કરો છે.'''\n'''હજી સીધું તે સચવાયું નથી!'''",
        "userinvalidcssjstitle": "'''ચેતવણી:''' કોઇ પણ \"$1\" પટલ નથી.\nસભ્ય રચિત .css અને  .js પાના બીજી અંગ્રેજી બારખડી શીર્ષક વાપરે છે, દા. ત. {{ns:user}}:Foo/vector.css નહીં કે {{ns:user}}:Foo/Vector.css.",
        "updated": "(સંવર્ધીત)",
        "note": "'''નોંધ:'''",
-       "previewnote": "'''આ ફક્ત પૂર્વાવલોકન છે;'''\nતમારા ફેરફારો હજુ સાચવવામાં નથી આવ્યા!",
+       "previewnote": "<strong>ધ્યાનમાં રાખો કે આ ફક્ત પૂર્વાવલોકન છે.</strong>\nતમારા ફેરફારો હજુ સાચવવામાં આવ્યા નથી!",
        "continue-editing": "ફેરફાર કરવાનું ચાલુ રાખો",
        "previewconflict": "જો તમે આ પાનું સાચવશો તો આ પ્રિવ્યુમાં દેખાય છે તેવું સચવાશે.",
        "session_fail_preview": "'''અફસોસ છે! સત્ર માહિતી ખોઇ દેવાને કારણે અમે તમારું કાર્ય સાચવી ન શક્યાં.'''\nકૃપયા ફરી પ્રયત્ન કરો.\nતેમ છતાં પણ સાચવી ન શકો તો [[Special:UserLogout|logging out]] કરી ફરી પ્રવેશ કરો.",
        "currentrev-asof": "$1એ જોઈ શકાતી હાલની આવૃત્તિ",
        "revisionasof": "$1 સુધીનાં પુનરાવર્તન",
        "revision-info": "{{GENDER:$6|$2}}$7 દ્વારા $1 સુધીમાં કરવામાં આવેલાં ફેરફારો",
-       "previousrevision": "â\86\90 àª\9cà«\81ના àª«à«\87રફારà«\8b",
-       "nextrevision": "àª\86 àªªàª\9bà«\80નà«\81àª\82 àªªà«\81નરાવરà«\8dતન→",
+       "previousrevision": "â\86\90 àª\9cà«\81નà«\80 àª\86વà«\83તà«\8dતિ",
+       "nextrevision": "àª\86 àªªàª\9bà«\80નà«\80 àª\86વà«\83તà«\8dતિ →",
        "currentrevisionlink": "વર્તમાન આવૃત્તિ",
        "cur": "વર્તમાન",
        "next": "આગળ",
        "page_first": "પહેલું",
        "page_last": "છેલ્લું",
        "histlegend": "વિવિધ પસંદગી:સરખામણી માટે સુધારેલી આવૃતિઓના રેડિયો ખાનાઓ પસંદ કરો અને એન્ટર દબાવો અથવા નીચે આપેલું બટન દબાવો.<br />\nસમજૂતી:'''({{int:cur}})''' = વર્તમાન અને સુધારેલી આવૃતિનો તફાવત, '''({{int:last}})''' = પૂર્વવર્તી ફેરફારનો તફાવત, '''{{int:minoreditletter}}''' = નાનો ફેરફાર.",
-       "history-fieldset-title": "àª\87તિહાસ àª\89àª\96à«\87ળો",
+       "history-fieldset-title": "àª\86વà«\83તà«\8dતિàª\93 àª®àª¾àª\9fà«\87 àª¶à«\8bધો",
        "history-show-deleted": "માત્ર હટાવાયેલા",
        "histfirst": "જુનામાં જુનું",
        "histlast": "નવામાં નવું",
        "compareselectedversions": "પસંદ કરેલા સરખાવો",
        "showhideselectedversions": "પસંદ કરેલા બતાવો / સંતાડો",
        "editundo": "રદ કરો",
-       "diff-empty": "(àª\95à«\8bàª\87 àª­à«\87દ àª¨àª¹ી)",
+       "diff-empty": "(àª\95à«\8bàª\87 àª­à«\87દ àª¨àª¥ી)",
        "diff-multi-sameuser": "(સમાન સભ્ય દ્વારા {{PLURAL:$1|કરાયેલ એક પુનરાવર્તન| કરાયેલા $1 પુનરાવર્તનો}} દર્શાવેલ નથી)",
+       "diff-multi-otherusers": "({{PLURAL:$2|એક અન્ય સભ્ય|$2 સભ્યો}} વડેની {{PLURAL:$1|વચ્ચેની એક આવૃત્તિ|વચ્ચેની $1 આવૃત્તિઓ}} દર્શાવેલ નથી)",
        "diff-multi-manyusers": "{{PLURAL:$2|એક સભ્યએ કરેલું|$2 સભ્યોએ કરેલા}} ({{PLURAL:$1|વચગાળાનું એક પુનરાવર્તન દર્શાવ્યં|વચગાળાનાં $1 પુનરાવર્તનો દર્શાવ્યાં}} નથી.)",
        "searchresults": "પરિણામોમાં શોધો",
        "searchresults-title": "\"$1\" માટેના પરિણામો",
        "search-redirect": "($1થી વાળેલું)",
        "search-section": "(વિભાગ $1)",
        "search-category": "(શ્રેણી $1)",
+       "search-file-match": "(ફાઇલ વિગતને અનુરૂપ છે)",
        "search-suggest": "શું તમે $1 કહેવા માંગો છો?",
        "search-interwiki-caption": "બંધુ પ્રકલ્પ",
        "search-interwiki-default": "$1 માંથી પરીણામો:",
        "recentchanges": "તાજા ફેરફારો",
        "recentchanges-legend": "હાલમાં થયેલા ફેરફારોના વિકલ્પ",
        "recentchanges-summary": "વિકિમાં તાજેતરમાં થયેલા ફેરફારો પર અહીંથી નજર રાખો.",
+       "recentchanges-noresult": "આપેલા સમયગાળા દરમિયાન આ માપદંડો માટે કોઇ ફેરફારો મળ્યા નહી.",
        "recentchanges-feed-description": "આ ફીડ દ્વારા વિકિમાં થયેલા તાજા ફેરફારો પર ધ્યાન રાખો.",
        "recentchanges-label-newpage": "આ ફેરફાર દ્વારા નવું પાનું નિર્મિત થયું",
-       "recentchanges-label-minor": "àª\86 àª\8fàª\95 àª¨àª¾àª¨à«\8b àª¸à«\81ધારà«\8b àª\9bà«\87.",
-       "recentchanges-label-bot": "àª\86 àª«à«\87રફાર àª¬à«\8bàª\9f àª¦à«\8dવારા àª\95રાયà«\8b àª\9bà«\87",
+       "recentchanges-label-minor": "àª\86 àª\8fàª\95 àª¨àª¾àª¨à«\8b àª«à«\87રફાર àª\9bà«\87",
+       "recentchanges-label-bot": "àª\86 àª«à«\87રફાર àª¬à«\8bàª\9f àª¦à«\8dવારા àª\95રાયà«\8b àª¹àª¤à«\8b",
        "recentchanges-label-unpatrolled": "આ ફેરફાર હજી ચકાસાયો નથી",
        "recentchanges-label-plusminus": "પાનાનું કદ આપેલા અંકો જેટલાં બાઈટ્સ જેટલું બદલ્યુ છે.",
        "recentchanges-legend-heading": "<strong>કળ:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|નવા પાનાઓની યાદી]] પણ જુઓ)",
-       "rcnotefrom": "નીચે <strong>$2</strong> થી ફેરફારો દર્શાવેલ છે (<strong>$1</strong> સુધી દર્શાવલે છે).",
+       "recentchanges-submit": "બતાવો",
+       "rcnotefrom": "નીચે <strong>$3, $4</strong> થી {{PLURAL:$5|ફેરફાર|ફેરફારો}} દર્શાવેલ છે (<strong>$1</strong> સુધી દર્શાવેલ છે).",
        "rclistfrom": "$3 $2 બાદ થયેલા નવા ફેરફારો બતાવો",
        "rcshowhideminor": "નાના ફેરફારો $1",
        "rcshowhideminor-show": "બતાવો",
        "rcshowhidemine": "મારા ફેરફારો $1",
        "rcshowhidemine-show": "બતાવો",
        "rcshowhidemine-hide": "છુપાવો",
+       "rcshowhidecategorization": "પાનાનું વર્ગીકરણ $1",
+       "rcshowhidecategorization-show": "બતાવો",
+       "rcshowhidecategorization-hide": "છુપાવો",
        "rclinks": "છેલ્લાં $2 દિવસમાં થયેલા છેલ્લાં $1 ફેરફારો દર્શાવો",
        "diff": "ભેદ",
        "hist": "ઇતિહાસ",
        "mostrevisions": "સૌથી વધુ ફેરફાર થયેલા પાનાં",
        "prefixindex": "પૂર્વાક્ષર સૂચિ",
        "prefixindex-namespace": "શરૂઆતમાં ($1 namespace) ધરાવતા પાનાં",
+       "prefixindex-submit": "બતાવો",
        "shortpages": "નાનાં પાનાં",
        "longpages": "લાંબા પાનાઓ",
        "deadendpages": "મૃતાંત પાના",
        "usereditcount": "$1 {{PLURAL:$1|ફેરફાર|ફેરફારો}}",
        "usercreated": "$1 તારીખે $2 વાગ્યે {{GENDER:$3|બનાવ્યું}}",
        "newpages": "નવાં પાનાં",
+       "newpages-submit": "બતાવો",
        "newpages-username": "સભ્યનામ:",
        "ancientpages": "સૌથી જૂનાં પાનાં",
        "move": "નામ બદલો",
        "notargettext": "આ ક્રિયા જેના પર કરવાની છે તે સભ્ય કે પાનાની માહિતી તમે પૂરી પાડી નથી",
        "nopagetitle": "આવું કોઇ લક્ષ્ય પાનું નથી",
        "nopagetext": "તમે લખેલ પાનું અસ્તિત્વમાં નથી",
-       "pager-newer-n": "{{PLURAL:$1|નવું 1|નવા $1}}",
+       "pager-newer-n": "{{PLURAL:$1|નવું |નવા $1}}",
        "pager-older-n": "{{PLURAL:$1|જૂનું ૧|જૂનાં $1}}",
        "suppress": "નાબૂદ",
        "querypage-disabled": "કાર્યક્ષમતાના કારણે આ ખાસ પાનું નિષ્ક્રિ કરાયું છે.",
        "apihelp": "API મદદ",
        "apihelp-no-such-module": "સાધન જૂથ \"$1\" ન મળ્યું.",
+       "apisandbox-unfullscreen": "પાનું બતાવો",
        "apisandbox-submit": "વિનંતી કરો",
        "apisandbox-reset": "સાફ કરો",
        "apisandbox-examples": "ઉદાહરણો",
        "booksources-text": "નીચે દર્શાવેલ યાદી એ કડીઓ બતાવે છે જેઓ નવા અને જૂના પુસ્તકો  વેચે છે , અને તમે માંગેલ વસ્તુ સંબંધિ વધુ મહિતી પણ ધરાવી શકે છે.",
        "booksources-invalid-isbn": "આપેલ ISBN વૈધ નથી લાગતો; મૂળ સ્રોતને ચકાસી, ભૂલ શોધી, ખરી માહિતી આપો.",
        "specialloguserlabel": "કર્તા:",
-       "speciallogtitlelabel": "લક્ષ્યાંક (શીર્ષક અથવા વપરાશકર્તા)",
+       "speciallogtitlelabel": "લક્ષ્યાંક (શીર્ષક અથવા {{ns:user}}:સભ્યનું સભ્યનામ):",
        "log": "લૉગ",
+       "logeventslist-submit": "બતાવો",
        "all-logs-page": "બધાં જાહેર માહિતીપત્રકો",
        "alllogstext": "{{SITENAME}} ના લોગનો સંયુક્ત વર્ણન.\nતમે લોગનો પ્રકાર,સભ્ય નામ અથવા અસરગ્રસ્ત પાના આદિ પસંદ કરી તમારી યાદિ ટૂંકાવી શકો.",
        "logempty": "લોગમાં આને મળતી કોઇ વસ્તુ નથી",
        "log-title-wildcard": "આ શબ્દો દ્વારા શરૂ થનાર શીર્ષકો શોધો",
        "showhideselectedlogentries": "પસંદગીની લોગ નોંધણીઓ બતાવો/છુપાવો",
-       "allpages": "બધા પાના",
+       "allpages": "બધા પાનાંઓ",
        "nextpage": "આગળનું પાનું ($1)",
        "prevpage": "પાછળનું પાનું ($1)",
        "allpagesfrom": "આનાથી શરૂ થતા પાના દર્શાવો:",
        "allpagesprefix": "ઉપસર્ગ ધરાવતા પાનાં શોધો",
        "allpagesbadtitle": "આપનું ઈચ્છિત શીર્ષક અમાન્ય છે, ખાલી છે, અથવાતો અયોગ્ય રીતે આંતર-ભાષિય કે આંતર-વિકિ સાથે જોડાયેલું શીર્ષક છે.\nશક્ય છે કે તેમાં એક કે વધુ એવા અક્ષર કે ચિહ્નો છે કે જે પાનાનાં શીર્ષક માટે અવૈધ છે.",
        "allpages-bad-ns": "{{SITENAME}} ને નામસ્થળ  \"$1\" નથી.",
-       "allpages-hide-redirects": "àª\85નà«\8dયતà«\8dર àªµàª¾àª³à«\87લાàª\82 પાનાંઓ છૂપાવો",
+       "allpages-hide-redirects": "દિશાનિરà«\8dદà«\87શિત પાનાંઓ છૂપાવો",
        "cachedspecial-refresh-now": "આધૂનિક બતાવો.",
        "categories": "શ્રેણીઓ",
+       "categories-submit": "બતાવો",
        "categoriespagetext": "નીચેની {{PLURAL:$1|શ્રેણી|શ્રેણીઓ}}માં પાના કે અન્ય સભ્યો છે.\n[[Special:UnusedCategories|વણ વપરાયેલી શ્રેણીઓ]] અત્રે દર્શાવવામાં આવી નથી.\n[[Special:WantedCategories|ઈચ્છિત શ્રેણીઓ]] પણ જોઈ જુઓ.",
        "categoriesfrom": "આનાથી શરૂ થતી શ્રેણી દર્શાવો:",
        "deletedcontributions": "સભ્યનું યોગદાન ભૂંસી નાખો",
        "trackingcategories-disabled": "વર્ગ અસક્રિય છે.",
        "mailnologin": "મેળવનારનું સરનામું નથી",
        "mailnologintext": "અન્ય સભ્યને ઇ-મેલ મોકલવા માટે તમે [[Special:UserLogin|logged in]] પ્રવેશ કરેલ હોવો જોઈએ અને તમારા[[Special:Preferences|preferences]] વિકલ્પોમાં તમારા ઈ-મેલ સરનામાની પુષ્ટિ થયેલી હોવી જોઈએ",
-       "emailuser": "સભà«\8dયનà«\87 àª\87-મેલ કરો",
+       "emailuser": "àª\86 àª¸àª­à«\8dયનà«\87 àª\87મેલ કરો",
        "emailuser-title-target": "આ {{GENDER:$1|સભ્ય}}ને ઇમેલ કરો",
        "emailuser-title-notarget": "ઇ-મેલ વપરાશકર્તા",
        "emailpagetext": "તમે નીચે દર્શાવેલ ફોર્મ વાપરી આ {{GENDER:$1|સભ્ય}}ને ઇ-મેલ મોકલી શકો છો.\nતમે [[Special:Preferences|તમારી પસંદમાં]] જે ઇ-મેલ સરનામું લખ્યું હશે તે \"દ્વારા\"ના નામ હેઠળ દેખાશે, જેથી ઇ-મેલ મેળવનાર તમને સંદેશાનો જવાબ આપી શકશે.",
        "unwatchthispage": "નીરીક્ષણ બંધ કરો",
        "notanarticle": "માહિતી વિનાનું પાનું",
        "notvisiblerev": "અન્ય સભ્ય દ્વારા થયેલું સંપાદન ભૂંસી નખાયું છે.",
-       "watchlist-details": "ચર્ચાનાં પાનાં ન ગણતા {{PLURAL:$1|$1 પાનું|$1 પાનાં}} ધ્યાનસૂચીમાં છે.",
+       "watchlist-details": "àª\9aરà«\8dàª\9aાનાàª\82 àªªàª¾àª¨àª¾àª\82 àª\85લàª\97થà«\80 àª¨ àª\97ણતા {{PLURAL:$1|$1 àªªàª¾àª¨à«\81àª\82|$1 àªªàª¾àª¨àª¾àª\82}} àª§à«\8dયાનસà«\82àª\9aà«\80માàª\82 àª\9bà«\87.",
        "wlheader-enotif": "ઈમેલ સૂચના પદ્ધતિ સક્રીય કરાઈ.",
        "wlheader-showupdated": "તમારી છેલ્લી મુલાકાત પછી બદલાયેલાં પાના  '''ઘાટા''' અક્ષરો વડે દર્શાવ્યાં છે.",
-       "wlnote": "નીચે $3, $4 વાગ્યા સુધીના છેલ્લા {{PLURAL:$2|એક કલાક|'''$2''' કલાક}}માં થયેલા {{PLURAL:$1|ફેરફાર|'''$1''' ફેરફારો }} દર્શાવ્યા છે.",
+       "wlnote": "નીચે $3, $4 વાગ્યા સુધીના છેલ્લા {{PLURAL:$2|એક કલાક|<strong>$2</strong> કલાક}}માં થયેલા {{PLURAL:$1|ફેરફાર|<strong>$1</strong> ફેરફારો }} દર્શાવ્યા છે.",
        "wlshowlast": "છેલ્લા $1 કલાકો $2 દિવસો બતાવો",
+       "watchlist-hide": "છુપાવો",
+       "watchlist-submit": "બતાવો",
+       "wlshowhidecategorization": "પાનાનું વર્ગીકરણ",
        "watchlist-options": "ધ્યાનસૂચિના વિકલ્પો",
        "watching": "નજર રાખી રહ્યાં છો...",
        "unwatching": "નજર રાખવાની બંધ કરી છે...",
        "delete-confirm": "$1ને ભૂસી નાંખો.",
        "delete-legend": "રદ કરો",
        "historywarning": "'''ચેતવણી:''' જે પાનું તમે હટાવવા જઇ રહ્યાં છો તેને આશરે $1 {{PLURAL:$1|પુનરાવર્તન|પુનરાવર્તનો}}નો ઇતિહાસ છે:",
+       "historyaction-submit": "બતાવો",
        "confirmdeletetext": "આપ આ પાનું તેના ઇતિહાસ (બધાજ પૂર્વ  ફેરફારો) સાથે હટાવી રહ્યાં છો.\nકૃપા કરી ખાત્રી કરો કે આપ આમ કરવા ઇચ્છો છો, આપ આના સારા-નરસા પરિણામોથી વાકેફ છો, અને આપ આ કાર્ય [[{{MediaWiki:Policy-url}}|નીતિ]]ને અનુરૂપ જ કરી રહ્યાં છો.",
        "actioncomplete": "કામ પૂર્ણ",
        "actionfailed": "કાર્ય અસફળ",
        "minimum-size": "લઘુત્તમ કદ",
        "maximum-size": "મહત્તમ કદ",
        "pagesize": "(બાઇટ્સ)",
-       "restriction-edit": "બદલો",
+       "restriction-edit": "ફà«\87રફાર àª\95રો",
        "restriction-move": "ખસેડો",
        "restriction-create": "બનાવો",
        "restriction-upload": "ફાઇલ ચઢાવો",
        "tooltip-namespace_association": "પસંદ કરેલા નામસ્થળ સાથેસંલગ્ન નામ સ્થ્ળની માહિતી શામિલ કરવા આ ખાનું પણ અંકિત કરો",
        "blanknamespace": "(મુખ્ય)",
        "contributions": "{{GENDER:$1|સભ્ય}}ના યોગદાનો",
-       "contributions-title": "સભ્ય $1નું યોગદાન",
-       "mycontris": "યોગદાન",
+       "contributions-title": "$1 માટે સભ્યના યોગદાનો",
+       "mycontris": "યોગદાન",
        "anoncontribs": "યોગદાનો",
        "contribsub2": "($2) માટે {{GENDER:$3|$1}}",
        "nocontribs": "આ પરિમાણને મળતી પરિણામ નથી મળ્યાં",
        "sp-contributions-search": "યોગદાન શોધો",
        "sp-contributions-username": "IP સરનામું અથવા સભ્યનામ:",
        "sp-contributions-toponly": "માત્ર છેલ્લી આવૃત્તિના ફેરફારો જ દર્શાવો",
+       "sp-contributions-newonly": "માત્ર નવા પાનાં બનાવ્યા હોય તેવા ફેરફાર દર્શાવો",
+       "sp-contributions-hideminor": "નાના ફેરફારો છુપાવો",
        "sp-contributions-submit": "શોધો",
        "whatlinkshere": "અહી શું જોડાય છે",
        "whatlinkshere-title": "\"$1\" ને જોડતા પાનાં",
        "tooltip-save": "તમે કરેલાં ફેરફારો સુરક્ષિત કરો",
        "tooltip-preview": "તમે કરેલાં ફેરફારોનું પૂર્વદર્શન કરો. કૃપા કરી કાર્ય સુરક્ષિત કરતાં પહેલા આ જોઇ લો.",
        "tooltip-diff": "તમે માહિતીમાં કયા ફેરફારો કર્યા છે તે જોવા મળશે",
-       "tooltip-compareselectedversions": "અ પાનાનાં પસંદ કરેલા બે વૃત્તાંત વચ્ચેનાં ભેદ જુઓ.",
+       "tooltip-compareselectedversions": "અા પાનાની પસંદ કરેલી બે આવૃત્તિઓ વચ્ચેનો ભેદ જુઓ",
        "tooltip-watch": "આ પાનાને તમારી ધ્યાનસૂચિમાં ઉમેરો",
        "tooltip-watchlistedit-normal-submit": "શીર્ષકો હટાવો",
        "tooltip-watchlistedit-raw-submit": "ધ્યાનસૂચિ અધ્યતન બનાવો",
        "pageinfo-length": "પાનાંની લંબાઇ (બાઇટમાં)",
        "pageinfo-article-id": "પાનાં ઓળખ",
        "pageinfo-language": "પાનાંની વિગતની ભાષા",
+       "pageinfo-content-model": "પાનાનું લખાણ બંધારણ",
        "pageinfo-robot-policy": "રોબોટ્સ દ્વારા અનુક્રમિત",
        "pageinfo-robot-index": "માન્ય",
        "pageinfo-robot-noindex": "અમાન્ય",
        "pageinfo-watchers": "પાના નીરીક્ષકોની સંખ્યા",
+       "pageinfo-few-watchers": "$1 કરતા ઓછા {{PLURAL:$1|ચાતક|ચાતકો}}",
        "pageinfo-redirects-name": "આ પાનાં પર દિશાનિર્દેશનોની સંખ્યા",
-       "pageinfo-subpages-name": "આ પાનાંનું ઉપપાનું",
+       "pageinfo-subpages-name": "આ પાનાના ઉપપાનાઓ",
+       "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|દિશાનિર્દેશન|દિશાનિર્દેશનો}}; $3 {{PLURAL:$3|દિશાનિર્દેશન નહી|દિશાનિર્દેશનો નહી}})",
        "pageinfo-firstuser": "પૃષ્ઠ સર્જક",
        "pageinfo-firsttime": "પાનાં બનાવવાની તારીખ",
        "pageinfo-lastuser": "છેલ્લો ફેરફાર કરનાર",
        "pageinfo-toolboxlink": "પાનાંની માહિતી",
        "pageinfo-redirectsto": "તરફ દિશાનિર્દેશન",
        "pageinfo-redirectsto-info": "માહિતી",
+       "pageinfo-contentpage": "લખાણ પાના તરીકે ગણાયેલ",
        "pageinfo-contentpage-yes": "હા",
        "pageinfo-protect-cascading-yes": "હા",
        "pageinfo-category-info": "શ્રેણી માહિતી",
        "newimages-summary": "આ ખાસ પાનું છેવટની  ચડાવેલા વફાઈલા બતાવે છે",
        "newimages-legend": "ચાળણી",
        "newimages-label": "ફાઈલનામ (કે તેનો ભાગ)",
+       "newimages-newbies": "માત્ર નવા ખુલેલાં ખાતાઓનું યોગદાન બતાવો",
        "noimages": "જોવા માટે કશું નથી.",
        "ilsubmit": "શોધો",
        "bydate": "તારીખ પ્રમાણે",
        "version-entrypoints-header-url": "URL",
        "version-libraries-library": "લાઇબ્રેરી",
        "version-libraries-version": "આવૃત્તિ",
+       "redirect": "ફાઇલ, સભ્ય, પાનું, આવૃત્તિ, અથવા લૉગ ઓળખ વડે દિશાનિર્દેશન",
        "redirect-submit": "જાઓ",
        "redirect-lookup": "જુઓ:",
        "redirect-value": "કિંમત:",
        "htmlform-cloner-create": "વધુ ઉમેરો",
        "htmlform-cloner-delete": "હટાવો",
        "logentry-delete-delete": "$1 દ્વારા પાનું $3 {{GENDER:$2|દૂર કરવામાં આવ્યું}}",
-       "logentry-delete-restore": "$1 {{GENDER:$2|પુનઃસંગ્રહ}} પાનું $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|પુનઃસંગ્રહ}} પાનું $3 ($4)",
        "logentry-delete-event": "$1 એ {{PLURAL:$5|લૉગ ઘટના|$5 લૉગ ઘટનાઓ}} ની દ્રશ્યતા $3 પર {{GENDER:$2|બદલેલ}} છે: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|એ}} પૃષ્ઠ $3 પરના {{PLURAL:$5|એક પુનરાવર્તન|$5 પુનરાવર્તનો}}ની દૃષ્યતા બદલી: $4",
        "logentry-delete-event-legacy": "$1એ $3 પર લોગ ઘટનાઓની દૃશ્યતા {{GENDER:$2|બદલી}}",
        "logentry-newusers-create2": "સભ્ય ખાતું $3 $1 વડે {{GENDER:$2|બનાવવામાં આવ્યું હતું}}",
        "logentry-newusers-autocreate": "વપરાશકર્તા ખાતું $1 આપમેળે {{GENDER:$2|બનાવવામાં આવ્યું હતું}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|દ્વારા ચડાવેલ}} $3",
+       "logentry-upload-overwrite": "$1 એ $3 ની નવી આવૃત્તિ {{GENDER:$2|ચડાવી}}",
        "rightsnone": "(કંઈ નહી)",
        "feedback-adding": "પ્રતિભાવ આ પાના પર ઉમેરાઈ રહ્યો છે.",
        "feedback-bugcheck": "સરસ! જરા જોઈ લેશો કે આ  પહેલેથી જ હાજર [$1 known bugs] નથીને?",
        "special-characters-group-thai": "થાઈ",
        "special-characters-group-lao": "લાઓ",
        "special-characters-group-khmer": "ખ્મેર",
-       "mw-widgets-titleinput-description-new-page": "પાનું અસ્તિત્વ ધરાવતું નથી."
+       "mw-widgets-titleinput-description-new-page": "પાનું અસ્તિત્વ ધરાવતું નથી.",
+       "randomrootpage": "યાદચ્છિક મૂળ પાનું"
 }
index 5887fe7..a57065a 100644 (file)
        "anontalk": "שיחה",
        "navigation": "ניווט",
        "and": "&#32;וגם",
-       "qbfind": "חיפוש",
-       "qbbrowse": "ניווט",
-       "qbedit": "עריכה",
-       "qbpageoptions": "הדף הזה",
-       "qbmyoptions": "הדפים שלי",
        "faq": "שאלות ותשובות",
-       "faqpage": "Project:שאלות ותשובות",
        "actions": "פעולות",
        "namespaces": "מרחבי שם",
        "variants": "גרסאות שפה",
        "edit-local": "עריכת התיאור המקומי",
        "create": "יצירה",
        "create-local": "הוספת תיאור מקומי",
-       "editthispage": "עריכת דף זה",
-       "create-this-page": "יצירת דף זה",
        "delete": "מחיקה",
-       "deletethispage": "מחיקת דף זה",
-       "undeletethispage": "שחזור דף זה",
        "undelete_short": "שחזור {{PLURAL:$1|עריכה אחת|$1 עריכות}}",
        "viewdeleted_short": "הצגת {{PLURAL:$1|עריכה מחוקה אחת|$1 עריכות מחוקות}}",
        "protect": "הגנה",
        "protect_change": "שינוי",
-       "protectthispage": "הפעלת הגנה על דף זה",
        "unprotect": "שינוי הגנה",
-       "unprotectthispage": "שינוי ההגנה על דף זה",
        "newpage": "דף חדש",
-       "talkpage": "שיחה על דף זה",
        "talkpagelinktext": "שיחה",
        "specialpage": "דף מיוחד",
        "personaltools": "כלים אישיים",
-       "articlepage": "צפייה בדף התוכן",
        "talk": "שיחה",
        "views": "צפיות",
        "toolbox": "כלים",
        "tool-link-userrights": "שינוי הרשאות ה{{GENDER:$1|משתמש|משתמשת}}",
        "tool-link-userrights-readonly": "צפייה בהרשאות ה{{GENDER:$1|משתמש|משתמשת}}",
        "tool-link-emailuser": "שליחת דוא\"ל ל{{GENDER:$1|משתמש|משתמשת}}",
-       "userpage": "צפייה בדף המשתמש",
-       "projectpage": "צפייה בדף המיזם",
        "imagepage": "צפייה בדף הקובץ",
        "mediawikipage": "צפייה בדף ההודעה",
        "templatepage": "צפייה בדף התבנית",
        "rcfilters-filter-lastrevision-description": "השינוי האחרון בדף.",
        "rcfilters-filter-previousrevision-label": "גרסאות קודמות",
        "rcfilters-filter-previousrevision-description": "כל השינויים שאינם השינוי האחרון בדף.",
+       "rcfilters-filter-excluded": "מוחרג",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:לא</strong> $1",
+       "rcfilters-view-tags": "תגיות",
        "rcnotefrom": "להלן {{PLURAL:$5|השינוי שבוצע|השינויים שבוצעו}} מאז <strong>$3, $4</strong> (מוצגים עד <strong>$1</strong>).",
        "rclistfromreset": "איפוס בחירת התאריך",
        "rclistfrom": "הצגת שינויים חדשים החל מ־$2, $3",
        "newimages-legend": "מסנן",
        "newimages-label": "שם הקובץ (או חלק ממנו):",
        "newimages-user": "כתובת IP או שם משתמש",
+       "newimages-newbies": "הצגת תרומות של משתמשים חדשים בלבד",
        "newimages-showbots": "הצגת העלאות שבוצעו על־ידי בוטים",
        "newimages-hidepatrolled": "הסתרת העלאות בדוקות",
+       "newimages-mediatype": "סוג המדיה:",
        "noimages": "אין קבצים.",
        "gallery-slideshow-toggle": "הצגת/הסתרת תמונות ממוזערות",
        "ilsubmit": "חיפוש",
        "tags-create-reason": "הסבר:",
        "tags-create-submit": "יצירה",
        "tags-create-no-name": "יש לציין שם לתגית.",
-       "tags-create-invalid-chars": "ש×\9e×\95ת ×ª×\92×\99×\95ת ×\90×\99× ×\9d ×\99×\9b×\95×\9c×\99×\9d ×\9c×\9b×\9c×\95×\9c ×ª×\95×\95×\99 ×¤×¡×\99ק (<code>,</code>) ×\90×\95 ×¡×\9cש ×\99×\9e× ×\99 (<code>/</code>).",
+       "tags-create-invalid-chars": "ש×\9e×\95ת ×ª×\92×\99×\95ת ×\90×\99× ×\9d ×\99×\9b×\95×\9c×\99×\9d ×\9c×\9b×\9c×\95×\9c ×¤×¡×\99ק×\99×\9d (<code>,</code>), ×§×\95×\95×\99×\9d × ×\99צ×\91×\99×\9d (<code>|</code>) ×\90×\95 ×¡×\9cש×\99×\9d ×\99×\9e× ×\99×\99×\9d (<code>/</code>).",
        "tags-create-invalid-title-chars": "שמות תגיות אינם יכולים לכלול תווים שאינם ניתנים לשימוש בכותרות דפים.",
        "tags-create-already-exists": "התגית \"$1\" כבר קיימת.",
        "tags-create-warnings-above": "{{PLURAL:$2|האזהרה הבאה התקבלה|האזהרות הבאות התקבלו}} בעת הניסיון ליצירת התגית \"$1\":",
        "gotointerwiki-invalid": "הכותרת שצוינה אינה תקינה.",
        "gotointerwiki-external": "{{GENDER:|אתה עומד|את עומדת|אתם עומדים}} לעזוב את {{SITENAME}} כדי לבקר באתר הנפרד \"[[$2]]\".\n\n'''[$1 להמשך לכתובת $1]'''",
        "undelete-cantedit": "אין באפשרותך לשחזר דף זה, כי אין באפשרותך לערוך אותו.",
-       "undelete-cantcreate": "אין באפשרותך לשחזר דף זה, כי אין דף קיים בשם זה ואין באפשרותך ליצור אותו."
+       "undelete-cantcreate": "אין באפשרותך לשחזר דף זה, כי אין דף קיים בשם זה ואין באפשרותך ליצור אותו.",
+       "pagedata-title": "מידע על הדף",
+       "pagedata-text": "דף זה מהווה ממשק מידע לדפים. כדי להשתמש בו, כותרת הדף צריכה להופיע בכתובת ה־URL, בעזרת התחביר המתאים לדפי־משנה.\n* דף זה משתמש בשיטת \"ניתוב התוכן\" (Content negotiation) בהתבסס על כותרת ה־Accept ששולח צד הלקוח. פירוש הדבר הוא שהמידע על הדף יישלח בפורמט שצד הלקוח (כגון דפדפן) מעדיף.",
+       "pagedata-not-acceptable": "לא נמצא פורמט נתמך. סוגי MIME נתמכים: $1",
+       "pagedata-bad-title": "כותרת בלתי־תקינה: $1."
 }
index 8fc3630..1dab1ea 100644 (file)
        "anontalk": "Razgovor",
        "navigation": "Orijentacija",
        "and": "&#32;i",
-       "qbfind": "Nađi",
-       "qbbrowse": "Pregledaj",
-       "qbedit": "Uredi",
-       "qbpageoptions": "Postavke stranice",
-       "qbmyoptions": "Moje stranice",
        "faq": "Najčešća pitanja",
-       "faqpage": "Project:FAQ",
        "actions": "Radnje",
        "namespaces": "Imenski prostori",
        "variants": "Inačice",
        "edit-local": "Uredi lokalni opis",
        "create": "Započni",
        "create-local": "dodaj lokalni opis",
-       "editthispage": "Uredi ovu stranicu",
-       "create-this-page": "Započni ovu stranicu",
        "delete": "Izbriši",
-       "deletethispage": "Izbriši ovu stranicu",
-       "undeletethispage": "Vrati ovu stranicu",
        "undelete_short": "Vrati {{PLURAL:$1|$1 uređivanje|$1 uređivanja}}",
        "viewdeleted_short": "Prikaži $1 {{PLURAL:$1|izbrisano uređivanje|izbrisana uređivanja|izbrisanih uređivanja}}",
        "protect": "Zaštiti",
        "protect_change": "promijeni",
-       "protectthispage": "Zaštiti ovu stranicu",
        "unprotect": "Promijeni zaštitu",
-       "unprotectthispage": "Promijeni zaštitu ove stranice",
        "newpage": "Nova stranica",
-       "talkpage": "Razgovor o ovoj stranici",
        "talkpagelinktext": "razgovor",
        "specialpage": "Posebna stranica",
        "personaltools": "Osobni alati",
-       "articlepage": "Vidi članak",
        "talk": "Razgovor",
        "views": "Pogledi",
        "toolbox": "Pomagala",
        "tool-link-userrights": "Promijeni {{GENDER:$1|suradnikovu|suradničinu}} pripadnost skupinama",
        "tool-link-userrights-readonly": "Vidi {{GENDER:$1|suradnikovu|suradničinu|suradničku}} pripadnost skupinama",
        "tool-link-emailuser": "Pošalji {{GENDER:$1|suradniku|suradnici}} e-poruku",
-       "userpage": "Vidi suradnikovu stranicu",
-       "projectpage": "Vidi stranicu o projektu",
        "imagepage": "Vidi stranicu datoteke",
        "mediawikipage": "Vidi stranicu za razgovor",
        "templatepage": "Vidi ovaj predložak",
        "prefs-help-email": "E-mail adresa nije obvezna, ali je potrebna za obnovu lozinke u slučaju da ju zaboravite.",
        "prefs-help-email-others": "Također možete odabrati da vas ostali kontaktiraju preko vaše suradničke ili stranice za razgovor bez javnog otkrivanja vašeg identiteta.",
        "prefs-help-email-required": "Potrebno je navesti adresu e-pošte (e-mail).",
-       "prefs-info": "Osnovni podaci",
+       "prefs-info": "Osnovni podatci",
        "prefs-i18n": "Internacionalizacija",
        "prefs-signature": "Potpis",
        "prefs-dateformat": "Format datuma",
        "editinguser": "Promjena suradničkih prava {{GENDER:$1|suradnika|suradnice}} <strong>[[User:$1|$1]]</strong> $2",
        "viewinguserrights": "Pregled suradničkih prava {{GENDER:$1|suradnika|suradnice}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Uređivanje {{GENDER:$1|suradnikove|suradničine}} pripadnosti skupinama",
-       "userrights-viewusergroup": "Vidi {{GENDER:$1|suradničke}} skupine",
+       "userrights-viewusergroup": "Vidi {{GENDER:$1|suradnikove|suradničine|suradničke}} skupine",
        "saveusergroups": "Spremi {{GENDER:$1|suradnikove|suradničine|suradničke}} skupine",
        "userrights-groupsmember": "{{GENDER:$2|Pripadnik|Pripadnica}} {{PLURAL:$1|skupine|skupinama|skupina}}:",
        "userrights-groupsmember-auto": "{{GENDER:$2|Pripadnik|Pripadnica}} {{PLURAL:$1|obuhvaćene skupine|obuhvaćenih skupina}}:",
        "mw-widgets-dateinput-placeholder-month": "GGGG-MM",
        "mw-widgets-titleinput-description-new-page": "stranica još ne postoji",
        "mw-widgets-titleinput-description-redirect": "preusmjeravanje na $1",
+       "date-range-from": "Od nadnevka:",
+       "date-range-to": "Do nadnevka:",
        "randomrootpage": "Slučajna korijenska stranica",
        "log-action-filter-block": "Vrsta blokiranja:",
        "log-action-filter-delete": "Vrsta brisanja:",
index 9cbe59e..826489b 100644 (file)
        "anontalk": "Քննարկում",
        "navigation": "Շրջել կայքում",
        "and": "&#32;և",
-       "qbfind": "Գտնել",
-       "qbbrowse": "Դիտարկել",
-       "qbedit": "Խմբագրել",
-       "qbpageoptions": "Այս էջը",
-       "qbmyoptions": "Իմ էջերը",
        "faq": "ՀՏՀ",
-       "faqpage": "Project:ՀՏՀ",
        "actions": "Գործողություններ",
        "namespaces": "Անվանատարածքներ",
        "variants": "Տարբերակներ",
        "edit-local": "Խմբագրել տեղային նկարագրությունը",
        "create": "Ստեղծել",
        "create-local": "Ավելացնել տեղային նկարագիր",
-       "editthispage": "Խմբագրել այս էջը",
-       "create-this-page": "Ստեղծել այս էջը",
        "delete": "Հեռացնել",
-       "deletethispage": "Ջնջել այս էջը",
-       "undeletethispage": "Վերականգնել այս էջը",
        "undelete_short": "Վերականգնել {{PLURAL:$1|մեկ խմբագրում|$1 խմբագրում}}",
        "viewdeleted_short": "Դիտել {{PLURAL:$1|ջնջված խմբագրում}}",
        "protect": "Պաշտպանել",
        "protect_change": "փոխել",
-       "protectthispage": "Պաշտպանել այս էջը",
        "unprotect": "Փոխել պաշտպանությունը",
-       "unprotectthispage": "Փոխել այս էջի պաշտպանությունը",
        "newpage": "Նոր էջ",
-       "talkpage": "Քննարկել այս էջը",
        "talkpagelinktext": "քննարկում",
        "specialpage": "Հատուկ էջ",
        "personaltools": "Անձնական գործիքներ",
-       "articlepage": "Դիտել էջի պարունակությունը",
        "talk": "Քննարկում",
        "views": "Դիտումները",
        "toolbox": "Գործիքներ",
        "tool-link-userrights": "Փոփոխել {{GENDER:$1|մասնակից}} խմբեր",
        "tool-link-userrights-readonly": "Տեսնել {{GENDER:$1|մասնակից}} խումբը",
        "tool-link-emailuser": "Ուղարկել էլ այս նամակ {{GENDER:$1|մասնակցին}}",
-       "userpage": "Դիտել մասնակցի էջը",
-       "projectpage": "Դիտել նախագծի էջը",
        "imagepage": "Դիտել նիշքի էջը",
        "mediawikipage": "Դիտել հաղորդագրության էջը",
        "templatepage": "Դիտել կաղապարի էջը",
        "prefs-files": "Նիշքեր",
        "prefs-custom-css": "Անհատական CSS",
        "prefs-custom-js": "Անհատական JS",
-       "prefs-reset-intro": "Այս էջում հնաարավոր է զրոյացնել ձեր բոլոր նախընրանքները, փոխելով դրանք իլռելայն նախընտրանքների։\nԳործողությունը հաստատելուց հետո, նածընտրանքները հնաարվոր չի լինելու հետ բերել։",
+       "prefs-reset-intro": "Այս էջում հնարավոր է զրոյացնել ձեր բոլոր նախընտրանքները, փոխելով դրանք ի լռելյայն նախընտրանքների։\nԳործողությունը հաստատելուց հետո նախընտրանքները հնարավոր չեն լինելու ետ բերել։",
        "prefs-emailconfirm-label": "Էլ-փոստի վավերացում․",
        "youremail": "Էլեկտրոնային փոստ.",
        "username": "{{GENDER:$1|Մասնակցի անուն}}՝",
index a1b852c..8cc7ac3 100644 (file)
        "anontalk": "Discussion",
        "navigation": "Navigation",
        "and": "&#32;e",
-       "qbfind": "Cercar",
-       "qbbrowse": "Foliar",
-       "qbedit": "Modificar",
-       "qbpageoptions": "Iste pagina",
-       "qbmyoptions": "Mi paginas",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Actiones",
        "namespaces": "Spatios de nomines",
        "variants": "Variantes",
        "edit-local": "Modificar description local",
        "create": "Crear",
        "create-local": "Adder description local",
-       "editthispage": "Modificar iste pagina",
-       "create-this-page": "Crear iste pagina",
        "delete": "Deler",
-       "deletethispage": "Deler iste pagina",
-       "undeletethispage": "Restaurar iste pagina",
        "undelete_short": "Restaurar {{PLURAL:$1|un modification|$1 modificationes}}",
        "viewdeleted_short": "Vider {{PLURAL:$1|un modification|$1 modificationes}} delite",
        "protect": "Proteger",
        "protect_change": "cambiar",
-       "protectthispage": "Proteger iste pagina",
        "unprotect": "Cambiar protection",
-       "unprotectthispage": "Cambiar le protection de iste pagina",
        "newpage": "Nove pagina",
-       "talkpage": "Discuter iste pagina",
        "talkpagelinktext": "Discussion",
        "specialpage": "Pagina special",
        "personaltools": "Instrumentos personal",
-       "articlepage": "Vider pagina de contento",
        "talk": "Discussion",
        "views": "Representationes",
        "toolbox": "Instrumentos",
        "tool-link-userrights": "Modificar le gruppos del {{GENDER:$1|usator|usatrice}}",
        "tool-link-userrights-readonly": "Vider gruppos de {{GENDER:$1|usator}}",
        "tool-link-emailuser": "Inviar e-mail a iste {{GENDER:$1|usator|usatrice}}",
-       "userpage": "Vider pagina del usator",
-       "projectpage": "Vider pagina de projecto",
        "imagepage": "Vider le pagina del file",
        "mediawikipage": "Vider pagina de message",
        "templatepage": "Vider pagina de patrono",
        "gotointerwiki-invalid": "Le titulo specificate non es valide.",
        "gotointerwiki-external": "Tu es sur le puncto de quitar {{SITENAME}} pro visitar [[$2]], un sito web separate.\n\n'''[$1 Continuar a $1]'''",
        "undelete-cantedit": "Tu non pote restaurar iste pagina perque tu non ha le permission de modificar iste pagina.",
-       "undelete-cantcreate": "Tu non pote restaurar iste pagina perque il non ha pagina existente con iste nomine e tu non ha le permission de crear lo."
+       "undelete-cantcreate": "Tu non pote restaurar iste pagina perque il non ha pagina existente con iste nomine e tu non ha le permission de crear lo.",
+       "pagedata-title": "Datos de pagina",
+       "pagedata-text": "Iste pagina forni un interfacie de datos a paginas. Forni le titulo del pagina in le URL, usante le syntaxe de subpaginas.\n* Le negotiation de contento depende del capite \"Accept\" de tu cliente. Isto significa que le datos del pagina essera fornite in le formato que tu cliente prefere.",
+       "pagedata-not-acceptable": "Nulle formato correspondente trovate. Typos MIME supportate: $1",
+       "pagedata-bad-title": "Titulo invalide: $1."
 }
index 0d90853..cfd6bdf 100644 (file)
        "anontalk": "Pembicaraan",
        "navigation": "Navigasi",
        "and": "&#32;dan",
-       "qbfind": "Pencarian",
-       "qbbrowse": "Navigasi",
-       "qbedit": "Sunting",
-       "qbpageoptions": "Halaman ini",
-       "qbmyoptions": "Halaman saya",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Tindakan",
        "namespaces": "Ruang nama",
        "variants": "Varian",
        "edit-local": "Sunting deskripsi lokal",
        "create": "Buat",
        "create-local": "Tambah deskripsi lokal",
-       "editthispage": "Sunting halaman ini",
-       "create-this-page": "Buat halaman ini",
        "delete": "Hapus",
-       "deletethispage": "Hapus halaman ini",
-       "undeletethispage": "Batalkan penghapusan",
        "undelete_short": "Batal hapus {{PLURAL:$1|$1 suntingan}}",
        "viewdeleted_short": "Lihat {{PLURAL:$1|$1 suntingan}} yang dihapus",
        "protect": "Lindungi",
        "protect_change": "ubah",
-       "protectthispage": "Lindungi halaman ini",
        "unprotect": "Ubah perlindungan",
-       "unprotectthispage": "Ubah perlindungan halaman ini",
        "newpage": "Halaman baru",
-       "talkpage": "Bicarakan halaman ini",
        "talkpagelinktext": "bicara",
        "specialpage": "Halaman istimewa",
        "personaltools": "Perkakas pribadi",
-       "articlepage": "Lihat halaman isi",
        "talk": "Pembicaraan",
        "views": "Tampilan",
        "toolbox": "Perkakas",
        "tool-link-userrights": "Simpan kelompok {{GENDER:$1|pengguna}}",
        "tool-link-userrights-readonly": "Lihat kelompok {{GENDER:$1|pengguna}}",
        "tool-link-emailuser": "Kirim surel ke {{GENDER:$1|pengguna}} ini",
-       "userpage": "Lihat halaman pengguna",
-       "projectpage": "Lihat halaman proyek",
        "imagepage": "Lihat halaman berkas",
        "mediawikipage": "Lihat halaman pesan sistem",
        "templatepage": "Lihat halaman templat",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (lihat pula [[Special:NewPages|daftar halaman baru]])",
        "recentchanges-submit": "Tampilkan",
        "rcfilters-activefilters": "Filter aktif",
-       "rcfilters-quickfilters": "Pranala cepat (pintas)",
+       "rcfilters-quickfilters": "Pengaturan filter tersimpan",
        "rcfilters-quickfilters-placeholder-title": "Tidak ada pranala tersimpan sekarang",
        "rcfilters-quickfilters-placeholder-description": "Untuk menyimpan pengaturan saringan dan menggunakannya kembali, klik ikon penanda halaman di area Penyaringan Aktif, di bawah.",
        "rcfilters-savedqueries-defaultlabel": "Saringan tersimpan",
        "rcfilters-savedqueries-unsetdefault": "Hapus sebagai baku",
        "rcfilters-savedqueries-remove": "Hapus",
        "rcfilters-savedqueries-new-name-label": "Nama",
-       "rcfilters-savedqueries-apply-label": "Buat pranala cepat",
+       "rcfilters-savedqueries-apply-label": "Simpan pengaturan",
        "rcfilters-savedqueries-cancel-label": "Batalkan",
-       "rcfilters-savedqueries-add-new-title": "Simpan penyaringan sebagai pranala cepat",
+       "rcfilters-savedqueries-add-new-title": "Simpan pengaturan filter ini",
        "rcfilters-restore-default-filters": "Kembalikan filter bawaan",
        "rcfilters-clear-all-filters": "Hapus semua penyaringan",
        "rcfilters-search-placeholder": "Filter perubahan terbaru (jelajahi atau masukan input)",
        "rcfilters-highlightmenu-help": "Pilihlah warna untuk menyorot atribut ini",
        "rcfilters-filterlist-noresults": "Tidak ada penyaring ditemukan",
        "rcfilters-noresults-conflict": "Hasil tidak ditemukan karena kriteria pencariannya bertentangan",
+       "rcfilters-state-message-subset": "Filter ini tidak akan berpengaruh karena hasilnya disertakan oleh {{PLURAL:$2|filter}} berikut yang lebih luas (coba soroti untuk membedakannya): $1",
        "rcfilters-filtergroup-registration": "Pendaftaran pengguna",
        "rcfilters-filter-registered-label": "Terdaftar",
        "rcfilters-filter-registered-description": "Penyunting masuk log",
        "rcfilters-filter-user-experience-level-newcomer-label": "Pendatang baru",
        "rcfilters-filter-user-experience-level-newcomer-description": "Kurang dari 10 suntingan dan aktivitas selama 4 hari.",
        "rcfilters-filter-user-experience-level-learner-label": "Pelajar",
+       "rcfilters-filter-user-experience-level-learner-description": "Lebih berpengalaman daripada \"Pendatang baru\" namun belum menjadi \"Pengguna berpengalaman\"",
        "rcfilters-filter-user-experience-level-experienced-label": "Pengguna berpengalaman",
+       "rcfilters-filter-user-experience-level-experienced-description": "Lebih dari 30 hari dan 500 suntingan.",
        "rcfilters-filtergroup-automated": "Kontribusi otomatis",
        "rcfilters-filter-bots-label": "Bot",
        "rcfilters-filter-bots-description": "Suntingan yang dibuat dengan perkakas terotomatisasi.",
        "upload-http-error": "Kesalahan HTTP terjadi: $1",
        "upload-copy-upload-invalid-domain": "Unggahan salinan tidak tersedia dari domain ini.",
        "upload-foreign-cant-upload": "Wiki ini tidak diatur untuk mengunggah berkas ke gudang penyimpangan asing.",
+       "upload-foreign-cant-load-config": "Gagal memuat konfigurasi untuk pengunggahan berkas ke repositori berkas eksternal",
        "upload-dialog-disabled": "Unggah berkas menggunakan dialog ini dinonaktifkan pada wiki ini.",
        "upload-dialog-title": "Unggah berkas",
        "upload-dialog-button-cancel": "Batalkan",
        "uploadstash-errclear": "Penghapusan berkas gagal.",
        "uploadstash-refresh": "Segarkan daftar berkas.",
        "uploadstash-thumbnail": "lihat miniatur",
+       "uploadstash-exception": "Tidak dapat menyimpan unggahan dalam simpanan ($1): \"$2\".",
        "invalid-chunk-offset": "Ofset potongan tidak valid",
        "img-auth-accessdenied": "Akses ditolak",
        "img-auth-nopathinfo": "PATH_INFO hilang.\nServer Anda tidak diatur untuk melewatkan informasi ini.\nServer tersebut mungkin berbasis CGI dan tidak dapat mendukung img_auth.\nLihat https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
        "filerevert-submit": "Batalkan",
        "filerevert-success": "'''[[Media:$1|$1]]''' telah dibatalkan ke versi [$4 pada $3, $2]",
        "filerevert-badversion": "Tidak ada versi lokal terdahulu dari berkas ini dengan stempel waktu yang dimaksud.",
+       "filerevert-identical": "Versi berkas sekarang telah identik dengan berkas yang terpilih.",
        "filedelete": "Menghapus $1",
        "filedelete-legend": "Menghapus berkas",
        "filedelete-intro": "Anda akan menghapus berkas '''[[Media:$1|$1]]''' berikut semua riwayatnya.",
        "emailccsubject": "Salinan pesan Anda untuk $1: $2",
        "emailsent": "Surel terkirim",
        "emailsenttext": "Surel Anda telah dikirimkan.",
-       "emailuserfooter": "Surel ini telah {{GENDER:$1|dikirim}} oleh $1 kepada {{GENDER:$2|$2}} dengan fungsi \"{{int:emailuser}}\" pada {{SITENAME}}. Surel {{GENDER:$2|Anda}} akan dikirim langsung kepada {{GENDER:$1|pengirim asal}}, dengan menampilkan alamat surel {{GENDER:$2|Anda}} kepada {{GENDER:$1|mereka}}.",
+       "emailuserfooter": "Surel ini telah {{GENDER:$1|dikirim}} oleh $1 kepada {{GENDER:$2|$2}} dengan fungsi \"{{int:emailuser}}\" pada {{SITENAME}}. Jika {{GENDER:$2|Anda}} membalas surel ini, surel {{GENDER:$2|Anda}} akan dikirim langsung kepada {{GENDER:$1|pengirim asal}}, dengan menampilkan alamat surel {{GENDER:$2|Anda}} kepada {{GENDER:$1|mereka}}.",
        "usermessage-summary": "Tinggalkan pesan sistem.",
        "usermessage-editor": "Penyampai pesan sistem",
        "usermessage-template": "MediaWiki:UserMessage",
        "watchnologin": "Belum masuk log",
        "addwatch": "Tambahkan ke daftar pantauan",
        "addedwatchtext": "\"[[:$1]]\" dan diskusinya telah ditambahkan ke [[Special:Watchlist|watchlist]] Anda.\nPerubahan-perubahan berikutnya pada halaman tersebut dan halaman pembicaraan terkaitnya akan tercantum di sini.",
+       "addedwatchtext-talk": "\"[[:$1]]\" dan halaman terkaitnya telah ditambahkan ke [[Special:Watchlist|daftar pantauan Anda]].",
        "addedwatchtext-short": "Halaman \"$1\" telah ditambahkan ke daftar pantauan Anda.",
        "removewatch": "Hapus dari daftar pantauan",
        "removedwatchtext": "\"[[:$1]]\" dan diskusinya telah dihapus dari [[Special:Watchlist|watchlist]] Anda.",
+       "removedwatchtext-talk": "\"[[:$1]]\" dan halaman terkaitnya telah dihapus dari [[Special:Watchlist|daftar pantauan Anda]].",
        "removedwatchtext-short": "Halaman \"$1\" telah dihapus dari daftar pantauan Anda.",
        "watch": "Pantau",
        "watchthispage": "Pantau halaman ini",
        "special-characters-group-thai": "Thai",
        "special-characters-group-lao": "Lao",
        "special-characters-group-khmer": "Khmer",
+       "special-characters-group-canadianaboriginal": "Aborigin Kanada",
        "special-characters-title-endash": "en dash",
        "special-characters-title-emdash": "em dash",
        "special-characters-title-minus": "tanda kurang",
        "revid": "revisi $1",
        "pageid": "ID halaman $1",
        "rawhtml-notallowed": "Tag &lt;html&gt; tidak dapat digunakan di luar halaman normal.",
-       "gotointerwiki-invalid": "Judul yang ditentukan tidak sah"
+       "gotointerwiki": "Meninggalkan {{SITENAME}}",
+       "gotointerwiki-invalid": "Judul yang ditentukan tidak sah",
+       "gotointerwiki-external": "Anda akan meninggalkan {{SITENAME}} untuk mengunjungi [[$2]], yang merupakan situs lain.\n\n'''[$1 Lanjut ke $1]'''",
+       "undelete-cantedit": "Anda tidak dapat membatalkan penghapusan halaman ini karena Anda tidak dapat menyunting halaman ini.",
+       "undelete-cantcreate": "Anda tidak dapat membatalkan penghapusan halaman ini karena tidak ada halaman yang memiliki judul ini dan Anda tidak diizinkan membuat halaman ini.",
+       "pagedata-title": "Data halaman",
+       "pagedata-text": "Halaman ini memberikan antarmuka data ke halaman. Silakan masukkan judul halaman di URL, menggunakan sintaks subhalaman.\n* Negosiasi konten diatur berdasarkan header \"Accept\" klien Anda. Ini berarti halaman data akan diformat berdasarkan format yang dimintai klien Anda.",
+       "pagedata-not-acceptable": "Tidak ditemukan format yang sesuai. Jenis MIME yang didukung: $1",
+       "pagedata-bad-title": "Judul tidak sah: $1"
 }
index a764e8b..6e180c5 100644 (file)
        "anontalk": "discussioni",
        "navigation": "Navigazione",
        "and": "&#32;e",
-       "qbfind": "Trova",
-       "qbbrowse": "Sfoglia",
-       "qbedit": "Modifica",
-       "qbpageoptions": "Opzioni pagina",
-       "qbmyoptions": "Le mie pagine",
        "faq": "Domande frequenti",
-       "faqpage": "Project:Domande frequenti",
        "actions": "Azioni",
        "namespaces": "Namespace",
        "variants": "Varianti",
        "edit-local": "Modifica descrizione locale",
        "create": "Crea",
        "create-local": "Aggiungi descrizione locale",
-       "editthispage": "Modifica questa pagina",
-       "create-this-page": "Crea questa pagina",
        "delete": "Cancella",
-       "deletethispage": "Cancella questa pagina",
-       "undeletethispage": "Recupera questa pagina",
        "undelete_short": "Recupera {{PLURAL:$1|una versione|$1 versioni}}",
        "viewdeleted_short": "Vedi {{PLURAL:$1|una modifica cancellata|$1 modifiche cancellate}}",
        "protect": "Proteggi",
        "protect_change": "cambia",
-       "protectthispage": "Proteggi questa pagina",
        "unprotect": "Cambia la protezione",
-       "unprotectthispage": "Modifica la protezione di questa pagina",
        "newpage": "Nuova pagina",
-       "talkpage": "Pagina di discussione",
        "talkpagelinktext": "Discussione",
        "specialpage": "Pagina speciale",
        "personaltools": "Strumenti personali",
-       "articlepage": "Visualizza la voce",
        "talk": "Discussione",
        "views": "Visite",
        "toolbox": "Strumenti",
        "tool-link-userrights": "Modifica gruppi {{GENDER:$1|utente}}",
        "tool-link-userrights-readonly": "Visualizza gruppi {{GENDER:$1|utente}}",
        "tool-link-emailuser": "Invia una email a questo {{GENDER:$1|utente}}",
-       "userpage": "Visualizza la pagina utente",
-       "projectpage": "Visualizza la pagina di servizio",
        "imagepage": "Visualizza la pagina del file",
        "mediawikipage": "Visualizza il messaggio",
        "templatepage": "Visualizza il template",
        "rcfilters-filter-lastrevision-label": "Ultima versione",
        "rcfilters-filter-lastrevision-description": "Le ultime modifiche ad una pagina.",
        "rcfilters-filter-previousrevision-label": "Versioni precedenti",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:non</strong> $1",
+       "rcfilters-view-tags": "Etichette",
        "rcnotefrom": "Di seguito {{PLURAL:$5|è elencata la modifica apportata|sono elencate le modifiche apportate}} a partire da <strong>$3, $4</strong> (mostrate fino a <strong>$1</strong>).",
        "rclistfrom": "Mostra le modifiche apportate a partire da $3 $2",
        "rcshowhideminor": "$1 le modifiche minori",
        "newimages-legend": "Filtra",
        "newimages-label": "Nome file (o una parte di esso):",
        "newimages-user": "Indirizzo IP o nome utente",
+       "newimages-newbies": "Mostra solo i contributi dei nuovi utenti",
        "newimages-showbots": "Mostra caricamenti di bot",
        "newimages-hidepatrolled": "Nascondi caricamenti verificati",
+       "newimages-mediatype": "Tipo di supporto:",
        "noimages": "Non c'è nulla da vedere.",
        "gallery-slideshow-toggle": "Alterna miniature",
        "ilsubmit": "Ricerca",
        "tags-create-reason": "Motivo:",
        "tags-create-submit": "Crea",
        "tags-create-no-name": "È necessario specificare un nome di tag.",
-       "tags-create-invalid-chars": "I nomi dei tag non devono contenere virgole (<code>,</code>) o barre (<code>/</code>).",
+       "tags-create-invalid-chars": "I nomi dei tag non devono contenere virgole (<code>,</code>), barre verticali (<code>|</code>), o barre oblique (<code>/</code>).",
        "tags-create-invalid-title-chars": "I nomi dei tag non devono contenere caratteri che non possono essere utilizzati nei titoli delle pagine.",
        "tags-create-already-exists": "Il tag \"$1\" esiste già.",
        "tags-create-warnings-above": "{{PLURAl:$2|È stato rilevato il seguente pericolo|Sono stati rilevati i seguenti pericoli}} mentre si cercava di creare l'etichetta \"$1\":",
        "gotointerwiki-invalid": "Il titolo specificato non è valido.",
        "gotointerwiki-external": "Stai per lasciare {{SITENAME}} per visitare [[$2]], che è un sito web diverso.\n\n'''[$1 Continua su $1]'''",
        "undelete-cantedit": "Non puoi ripristinare questa pagina poiché non hai sufficienti permessi per modificarla.",
-       "undelete-cantcreate": "Non puoi ripristinare questa pagina poiché la pagina con questo nome non è ancora inesistente e non hai sufficienti permessi per crearla."
+       "undelete-cantcreate": "Non puoi ripristinare questa pagina poiché la pagina con questo nome non è ancora inesistente e non hai sufficienti permessi per crearla.",
+       "pagedata-not-acceptable": "Nessun formato corrispondente trovato. Tipi MIME supportati: $1",
+       "pagedata-bad-title": "Titolo non valido: $1."
 }
index 945cea3..21ea0bc 100644 (file)
        "anontalk": "トーク",
        "navigation": "案内",
        "and": "&#32;および",
-       "qbfind": "検索",
-       "qbbrowse": "閲覧",
-       "qbedit": "編集",
-       "qbpageoptions": "このページについて",
-       "qbmyoptions": "自分のページ",
        "faq": "よくある質問と回答",
-       "faqpage": "Project:よくある質問と回答",
        "actions": "操作",
        "namespaces": "名前空間",
        "variants": "変種",
        "edit-local": "ローカルの解説を編集",
        "create": "作成",
        "create-local": "ローカルの解説を作成",
-       "editthispage": "このページを編集",
-       "create-this-page": "このページを作成",
        "delete": "削除",
-       "deletethispage": "このページを削除",
-       "undeletethispage": "このページを復元",
        "undelete_short": "{{PLURAL:$1|$1 編集}}を復元",
        "viewdeleted_short": "{{PLURAL:$1|削除された $1 編集}}を閲覧",
        "protect": "保護",
        "protect_change": "設定変更",
-       "protectthispage": "このページを保護",
        "unprotect": "保護の設定変更",
-       "unprotectthispage": "このページの保護を変更",
        "newpage": "新規ページ",
-       "talkpage": "このページについて話し合う",
        "talkpagelinktext": "トーク",
        "specialpage": "特別ページ",
        "personaltools": "個人用ツール",
-       "articlepage": "本文を表示",
        "talk": "議論",
        "views": "表示",
        "toolbox": "ツール",
        "tool-link-userrights": "{{GENDER:$1|利用者}}グループの変更",
        "tool-link-userrights-readonly": "{{GENDER:$1|利用者}}グループの表示",
        "tool-link-emailuser": "この{{GENDER:$1|利用者}}にメールを送信",
-       "userpage": "利用者ページを表示",
-       "projectpage": "プロジェクトのページを表示",
        "imagepage": "ファイルのページを表示",
        "mediawikipage": "メッセージのページを表示",
        "templatepage": "テンプレートのページを表示",
        "createacct-email-ph": "メールアドレスを入力",
        "createacct-another-email-ph": "メールアドレスを入力",
        "createaccountmail": "無作為な仮パスワードを生成し、指定のメールアドレスに送信",
-       "createaccountmail-help": "パスワードを知ることなく他の人のためにアカウントを作成するために使用することが出来ます。",
+       "createaccountmail-help": "パスワードを知ることなく他人のアカウントを作成することができます。",
        "createacct-realname": "本名 (省略可能)",
        "createacct-reason": "理由",
        "createacct-reason-ph": "アカウントを作成する理由",
        "action-applychangetags": "自分の編集にタグを適用する",
        "action-changetags": "個々の版および記録項目への任意のタグの追加と除去",
        "action-deletechangetags": "データベースからタグの削除",
-       "action-purge": "ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92ã\83\91ã\83¼ã\82¸ã\81\99ã\82\8b",
+       "action-purge": "ã\82­ã\83£ã\83\83ã\82·ã\83¥ã\81®ç ´æ£\84",
        "nchanges": "$1 {{PLURAL:$1|回の変更}}",
        "enhancedrc-since-last-visit": "最終閲覧以降 $1 {{PLURAL:$1|件}}",
        "enhancedrc-history": "履歴",
        "recentchanges-submit": "表示",
        "rcfilters-activefilters": "絞り込み",
        "rcfilters-quickfilters": "フィルター設定を保存",
+       "rcfilters-quickfilters-placeholder-title": "リンクはまだ保存されていません",
+       "rcfilters-quickfilters-placeholder-description": "フィルターの設定を保存し、後で再び使用するためには、下のアクティブフィルター内のブックマークアイコンをクリックしてください。",
        "rcfilters-savedqueries-defaultlabel": "フィルターを保存",
+       "rcfilters-savedqueries-rename": "名称を変更",
        "rcfilters-savedqueries-setdefault": "デフォルトに設定",
+       "rcfilters-savedqueries-unsetdefault": "既定から削除",
+       "rcfilters-savedqueries-remove": "削除",
+       "rcfilters-savedqueries-new-name-label": "名称",
+       "rcfilters-savedqueries-apply-label": "設定を保存",
        "rcfilters-savedqueries-cancel-label": "キャンセル",
+       "rcfilters-savedqueries-add-new-title": "現在のフィルター設定を保存する",
        "rcfilters-restore-default-filters": "標準設定の絞り込み条件を適用",
        "rcfilters-clear-all-filters": "すべてのフィルターをクリア",
        "rcfilters-search-placeholder": "絞り込みを行う(一覧から選択、または検索)",
        "rcfilters-filter-registered-label": "登録済み",
        "rcfilters-filter-registered-description": "ログイン済みの編集者。",
        "rcfilters-filter-unregistered-label": "未登録",
-       "rcfilters-filter-unregistered-description": "ログインしていない編集者。",
+       "rcfilters-filter-unregistered-description": "ログインしていない利用者。",
        "rcfilters-filter-unregistered-conflicts-user-experience-level": "この項目は、登録済み利用者を編集回数別で絞り込む以下の{{PLURAL:$2|項目}}と競合しています :$1",
        "rcfilters-filtergroup-authorship": "自分の編集か他者の編集か",
        "rcfilters-filter-editsbyself-label": "自分の編集",
        "rcfilters-filtergroup-user-experience-level-conflicts-unregistered-global": "「未登録」の項目が登録済み利用者を絞り込む項目と競合しています。競合している項目は項目選択欄で強調表示されています。",
        "rcfilters-filter-user-experience-level-newcomer-label": "新規利用者",
        "rcfilters-filter-user-experience-level-newcomer-description": "登録から4日以内、かつ10編集以下の利用者",
-       "rcfilters-filter-user-experience-level-learner-label": "一般利用者",
-       "rcfilters-filter-user-experience-level-learner-description": "ã\80\8cæ\96°è¦\8få\8f\82å\8a è\80\85ã\80\8dã\82\88ã\82\8aã\82\82æ´»å\8b\95履歴ã\81\8cé\95·ã\81\8fã\80\81ã\80\8cå®\9aç\9d\80å\8f\82å\8a è\80\85ã\80\8dã\82\88ã\82\8aæ´»å\8b\95履歴ã\81\8cç\9f­い利用者",
-       "rcfilters-filter-user-experience-level-experienced-label": "定着利用者",
+       "rcfilters-filter-user-experience-level-learner-label": "初学者",
+       "rcfilters-filter-user-experience-level-learner-description": "ã\80\8cæ\96°è¦\8få\88©ç\94¨è\80\85ã\80\8dã\82\88ã\82\8aã\82\82ç·¨é\9b\86çµ\8cé¨\93ã\81\8cã\81\82ã\82\8aã\80\81ã\80\8cçµ\8cé¨\93è\80\85ã\80\8dã\82\88ã\82\8aç·¨é\9b\86çµ\8cé¨\93ã\81\8cå°\91ã\81ªい利用者",
+       "rcfilters-filter-user-experience-level-experienced-label": "経験者",
        "rcfilters-filter-user-experience-level-experienced-description": "30日以上、かつ500編集以上の活動履歴がある利用者",
        "rcfilters-filtergroup-automated": "自動編集",
        "rcfilters-filter-bots-label": "ボット",
        "rcfilters-filter-minor-description": "編集者が細部の編集とマークしたもの。",
        "rcfilters-filter-major-label": "細部でない編集",
        "rcfilters-filter-major-description": "細部とマークされていない編集。",
-       "rcfilters-filtergroup-watchlist": "ウォッチリストに追加されているページ",
-       "rcfilters-filter-watchlist-watched-label": "ウォッチリストに登録されたページ",
+       "rcfilters-filtergroup-watchlist": "ウォッチリストに登録されているページ",
+       "rcfilters-filter-watchlist-watched-label": "ウォッチリスト登録済",
        "rcfilters-filter-watchlist-watched-description": "ウォッチリストに登録されているページの変更",
-       "rcfilters-filter-watchlist-watchednew-label": "ウォッチリストのページの新しい変更",
-       "rcfilters-filter-watchlist-watchednew-description": "最終訪問後にウォッチリストに登録されたページに対して行われた変更",
-       "rcfilters-filter-watchlist-notwatched-label": "ウォッチリストに登録されていないページ",
+       "rcfilters-filter-watchlist-watchednew-label": "ウォッチリスト登録済(新しい変更)",
+       "rcfilters-filter-watchlist-watchednew-description": "ウォッチリストに登録されていて、前回訪れた後に更新があったページ。",
+       "rcfilters-filter-watchlist-notwatched-label": "ウォッチリスト登録外",
        "rcfilters-filter-watchlist-notwatched-description": "ウォッチリストに登録されているページ以外の全ての変更。",
        "rcfilters-filtergroup-changetype": "変更の種類",
        "rcfilters-filter-pageedits-label": "ページの編集",
        "rcshowhidemine": "自分の編集を$1",
        "rcshowhidemine-show": "表示する",
        "rcshowhidemine-hide": "非表示にする",
-       "rcshowhidecategorization": "ã\83\9aã\83¼ã\82¸ã\81®ã\82«ã\83\86ã\82´ã\83ªã\83¼è¿½å\8a ã\83»é\99¤å\8e»を$1",
+       "rcshowhidecategorization": "ã\83\9aã\83¼ã\82¸ã\81®ã\82«ã\83\86ã\82´ã\83ªã\83¼è¿½å\8a ã\83»é\99¤å¤\96を$1",
        "rcshowhidecategorization-show": "表示する",
        "rcshowhidecategorization-hide": "非表示にする",
        "rclinks": "最近 $2 日間の更新を最大 $1 件表示",
        "file-thumbnail-no": "ファイル名が <strong>$1</strong> で始まっています。\n他の画像から縮小されたもの <em>(サムネイル)</em> のようです。\nより高精細な画像をお持ちの場合はそれをアップロードしてください。お持ちではない場合はファイル名を変更してください。",
        "fileexists-forbidden": "この名前のファイルは既に存在しており、上書きできません。\nアップロードを継続したい場合は、前のページに戻り、別のファイル名を使用してください。\n[[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "この名前のファイルは共有ファイルリポジトリに既に存在しています。\nアップロードを継続したい場合は、前のページに戻り、別のファイル名を使用してください。\n[[File:$1|thumb|center|$1]]",
+       "fileexists-no-change": "アップロードされたものは<strong>[[:$1]]</strong>の現在のバージョンのものと全く同じです。",
+       "fileexists-duplicate-version": "アップロードされたものは<strong>[[:$1]]</strong>の{{PLURAL:$2|過去のバージョン}}と全く同じです。",
        "file-exists-duplicate": "このファイルは以下の{{PLURAL:$1|ファイル|ファイル群}}と重複しています:",
        "file-deleted-duplicate": "このファイル ([[:$1]]) と同一のファイルが以前に削除されています。\n再度アップロードをする前に、以前削除されたファイルの削除記録を確認してください。",
        "file-deleted-duplicate-notitle": "このファイルと同一のファイルが、以前に削除されページ名が秘匿されました。\n再度アップロードをする前に、秘匿されたファイルのデータを閲覧する権限を持った利用者に連絡して、状況を精査してもらってください。",
        "php-uploaddisabledtext": "ファイルのアップロードがPHPで無効化されています。\nfile_uploadsの設定を確認してください。",
        "uploadscripted": "このファイルは、ウェブブラウザーが誤って解釈してしまうおそれがあるHTMLまたはスクリプトコードを含んでいます。",
        "upload-scripted-pi-callback": "XMLスタイルシート処理命令を含むファイルをアップロードできません。",
+       "upload-scripted-dtd": "標準的でないDTD宣言を含むSVGファイルはアップロードできません。",
        "uploaded-script-svg": "アップロードされたSVGファイルにスクリプト可能な要素「$1」が見つかりました。",
        "uploaded-hostile-svg": "アップロードされたSVGファイルのスタイル要素に安全ではないCSSが見つかりました。",
        "uploaded-event-handler-on-svg": "イベントハンドラをセットする属性 <code>$1=\"$2\"</code> は、SVGファイルを許可されていません。",
        "uploadstash-errclear": "ファイルの消去に失敗しました。",
        "uploadstash-refresh": "ファイルの一覧を更新",
        "uploadstash-thumbnail": "サムネイルを表示",
+       "uploadstash-exception": "スタッシュにアップロードできませんでした ($1): \"$2\"",
        "invalid-chunk-offset": "無効なチャンクオフセット",
        "img-auth-accessdenied": "アクセスが拒否されました",
        "img-auth-nopathinfo": "PATH_INFO が見つかりません。\nサーバーが、この情報を渡すように構成されていません。\nCGI ベースであるため、img_auth に対応できない可能性もあります。\nhttps://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization をご覧ください。",
        "filerevert-submit": "差し戻す",
        "filerevert-success": "<strong>[[Media:$1|$1]]</strong>は[$4 $2$3の版]に差し戻されました。",
        "filerevert-badversion": "このファイルに指定された時刻印を持つ過去の版はありません。",
+       "filerevert-identical": "ファイルの現在のバージョンは選択されているものと同一です。",
        "filedelete": "$1の削除",
        "filedelete-legend": "ファイルの削除",
        "filedelete-intro": "<strong>[[Media:$1|$1]]</strong>をすべての履歴とともに削除しようとしています。",
        "apisandbox-sending-request": "API要求を送信中...",
        "apisandbox-loading-results": "API結果を受信中...",
        "apisandbox-results-error": "API 問い合わせの応答を読み込み中にエラーが発生しました: $1。",
+       "apisandbox-request-selectformat-label": "リクエストデータを次の形式で表示",
+       "apisandbox-request-format-url-label": "URLクエリ文字列",
        "apisandbox-request-url-label": "リクエスト URL:",
+       "apisandbox-request-json-label": "JSONリクエスト:",
        "apisandbox-request-time": "リクエスト時間: {{PLURAL:$1|$1ミリ秒}}",
        "apisandbox-results-fixtoken": "トークンを訂正して再送信",
        "apisandbox-results-fixtoken-fail": "\"$1\" トークンの取得に失敗しました。",
        "apisandbox-alert-field": "この欄の値が有効ではありません。",
        "apisandbox-continue": "続行",
        "apisandbox-continue-clear": "消去",
+       "apisandbox-param-limit": "最大限度を利用するには<kbd>max</kbd>と入力してください。",
+       "apisandbox-multivalue-all-namespaces": "$1 (全ての名前空間)",
+       "apisandbox-multivalue-all-values": "$1 (全ての値)",
        "booksources": "書籍情報源",
        "booksources-search-legend": "書籍情報源を検索",
        "booksources-isbn": "ISBN:",
        "booksources-search": "検索",
        "booksources-text": "お探しの書籍の新品/中古品を販売している外部サイトへのリンクを以下に列挙します。この書籍についてさらに詳しい情報があるかもしれません:",
        "booksources-invalid-isbn": "指定した ISBN は有効ではないようです。情報源から写し間違えていないか確認してください。",
-       "magiclink-tracking-isbn": "ISBNリンクを使用しているページ",
+       "magiclink-tracking-rfc": "RFCマジックリンクを使用しているページ",
+       "magiclink-tracking-rfc-desc": "このページはRFCマジックリンクを使用しています。移行方法について[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org]を参照してください。",
+       "magiclink-tracking-pmid": "PMIDマジックリンクを使用しているページ",
+       "magiclink-tracking-pmid-desc": "このページはPMIDマジックリンクを使用しています。移行方法について[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org]を参照してください。",
+       "magiclink-tracking-isbn": "ISBNマジックリンクを使用しているページ",
+       "magiclink-tracking-isbn-desc": "このページはISBNマジックリンクを使用しています。移行方法について[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org]を参照してください。",
        "specialloguserlabel": "実行者:",
        "speciallogtitlelabel": "対象 (ページ名または利用者の場合、{{ns:user}}:利用者名):",
        "log": "記録",
        "changecontentmodel-emptymodels-title": "利用可能なコンテンツ・モデルがありません",
        "changecontentmodel-emptymodels-text": "[[:$1]]のコンテンツはどの型にも変換できません。",
        "log-name-contentmodel": "コンテンツ・モデル変更記録",
-       "log-description-contentmodel": "ã\83\9aã\83¼ã\82¸ã\81®ã\82³ã\83³ã\83\86ã\83³ã\83\84ã\83»ã\83¢ã\83\87ã\83«ã\81«é\96¢é\80£ã\81\99ã\82\8bå\87ºæ\9d¥äº\8b",
+       "log-description-contentmodel": "ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¯ã\82³ã\83³ã\83\86ã\83³ã\83\84ã\83¢ã\83\87ã\83«ã\81®å¤\89æ\9b´ã\81\8cè¡\8cã\82\8fã\82\8cã\81\9fã\83\9aã\83¼ã\82¸ã\81¨è¦\8få®\9a以å¤\96ã\81®ã\82³ã\83³ã\83\86ã\83³ã\83\84ã\83¢ã\83\87ã\83«ã\81§ä½\9cæ\88\90ã\81\95ã\82\8cã\81\9fã\83\9aã\83¼ã\82¸ã\81®ä¸\80覧ã\81§ã\81\99ã\80\82",
        "logentry-contentmodel-new": "$1 が ページ $3 を既定でないコンテンツ・モデル「$5」で{{GENDER:$2|作成しました}}。",
        "logentry-contentmodel-change": "$1 がページ $3 のコンテンツ・モデルを \"$4\" から \"$5\" に{{GENDER:$2|変更しました}}",
        "logentry-contentmodel-change-revertlink": "差し戻し",
        "autoblocklist-submit": "検索",
        "autoblocklist-legend": "自動ブロックの一覧",
        "autoblocklist-localblocks": "ローカルの{{PLURAL:$1|自動ブロック|自動ブロック}}",
+       "autoblocklist-total-autoblocks": "自動ブロックの総数: $1",
        "autoblocklist-empty": "自動ブロック一覧は空です。",
        "autoblocklist-otherblocks": "他の{{PLURAL:$1|自動ブロック|自動ブロック}}",
        "ipblocklist": "ブロックされている利用者",
        "movelogpagetext": "以下はすべてのページ移動の一覧です。",
        "movesubpage": "{{PLURAL:$1|下位ページ}}",
        "movesubpagetext": "このページには、以下の $1 {{PLURAL:$1|下位ページ}}があります。",
+       "movesubpagetalktext": "対応するトークページには以下に表示する$1の{{PLURAL:$1|下位ページ}}があります。",
        "movenosubpage": "このページに下位ページはありません。",
        "movereason": "理由:",
        "revertmove": "差し戻し",
        "tooltip-pt-mycontris": "自分の投稿の一覧",
        "tooltip-pt-anoncontribs": "このIPアドレスからなされた編集の一覧",
        "tooltip-pt-login": "ログインすることを推奨します。ただし、必須ではありません。",
+       "tooltip-pt-login-private": "このウィキを利用するにはログインする必要があります",
        "tooltip-pt-logout": "ログアウト",
        "tooltip-pt-createaccount": "アカウントを作成してログインすることをお勧めしますが、必須ではありません",
        "tooltip-ca-talk": "本文ページについての議論",
        "confirmrecreate-noreason": "あなたが編集を開始した後、[[User:$1|$1]] ([[User talk:$1|トーク]]) がこのページを{{GENDER:$1|削除しました}}。このページを本当に再作成していいかご確認ください。",
        "recreate": "再作成する",
        "unit-pixel": "ピクセル",
+       "confirm-purge-title": "このページをパージする",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "このページのキャッシュを破棄しますか?",
-       "confirm-purge-bottom": "ã\83\9aã\83¼ã\82¸ã\81®ã\83\91ã\83¼ã\82¸ã\81«ã\82\88ã\82\8aã\82­ã\83£ã\83\83ã\82·ã\83¥ã\82\92ç ´æ£\84ã\81\97ã\80\81å¼·å\88¶ç\9a\84ã\81«æ\9c\80æ\96°ç\89\88ã\82\92表示ã\81\97ã\81¾ã\81\99ã\80\82",
+       "confirm-purge-bottom": "ページのキャッシュを破棄し、強制的に最新版を表示します。",
        "confirm-watch-button": "OK",
        "confirm-watch-top": "このページをウォッチリストに追加しますか?",
        "confirm-unwatch-button": "OK",
        "tag-filter-submit": "絞り込み",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|タグ}}]]: $2)",
        "tag-mw-contentmodelchange": "コンテンツ・モデルの変更",
+       "tag-mw-contentmodelchange-description": "ページの[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel コンテンツモデルを変更]する",
        "tags-title": "タグ",
        "tags-intro": "このページは、ソフトウェアが編集に対して付けるタグとその意味の一覧です。",
        "tags-tag": "タグ名",
        "htmlform-time-placeholder": "HH:MM:SS",
        "htmlform-datetime-placeholder": "YYYY-MM-DD HH:MM:SS",
        "htmlform-date-invalid": "あなたが入力した日付を識別できませんでした。YYYY-MM-DD形式で試してください。",
+       "htmlform-time-invalid": "入力された時刻を識別できませんでした。HH:MM:SS形式で試してください。",
+       "htmlform-datetime-invalid": "入力された日時を識別できませんでした。YYYY-MM-DD HH:MM:SS形式で試してください。",
+       "htmlform-date-toolow": "入力された日付は入力できる最も早い日付($1)よりも前です。",
+       "htmlform-date-toohigh": "入力された日付は入力できる最も遅い日付($1)よりも後です。",
+       "htmlform-time-toolow": "入力された時刻は入力できる最も早い時刻($1)よりも前です。",
+       "htmlform-time-toohigh": "入力された時刻は入力できる最も遅い時刻($1)よりも後です。",
+       "htmlform-datetime-toolow": "入力された日時は入力できる最も早い日時($1)よりも前です。",
+       "htmlform-datetime-toohigh": "入力された日時は入力できる最も遅い日時($1)よりも後です。",
        "htmlform-title-badnamespace": "[[:$1]]は、\"{{ns:$2}}\"名前空間にありません。",
        "htmlform-title-not-creatable": "\"$1\" は、作成可能なページ名では、ありません。",
        "htmlform-title-not-exists": "$1 は存在しません。",
        "pagelang-submit": "変更",
        "pagelang-nonexistent-page": "ページ $1 は存在しません。",
        "pagelang-unchanged-language": "ページ「$1」の言語は既に$2に設定されています。",
+       "pagelang-unchanged-language-default": "「$1」はすでにウィキの既定のコンテンツ言語に設定されています。",
+       "pagelang-db-failed": "データベースがページの言語を変更できませんでした。",
        "right-pagelang": "ページの言語を変更",
        "action-pagelang": "ページの言語の変更",
        "log-name-pagelang": "言語変更の記録",
        "special-characters-group-thai": "タイ文字",
        "special-characters-group-lao": "ラオス文字",
        "special-characters-group-khmer": "クメール文字",
+       "special-characters-group-canadianaboriginal": "カナダ先住民文字",
        "special-characters-title-endash": "en ダッシュ",
        "special-characters-title-emdash": "em ダッシュ",
        "special-characters-title-minus": "マイナス記号",
        "mw-widgets-dateinput-no-date": "選択されたデータ無し",
+       "mw-widgets-mediasearch-input-placeholder": "メディアを検索",
        "mw-widgets-mediasearch-noresults": "見つかりませんでした。",
        "mw-widgets-titleinput-description-new-page": "ページは存在しません",
        "mw-widgets-titleinput-description-redirect": "$1 へのリダイレクト",
        "mw-widgets-categoryselector-add-category-placeholder": "カテゴリを追加...",
+       "mw-widgets-usersmultiselect-placeholder": "さらに追加",
+       "date-range-from": "開始日:",
+       "date-range-to": "終了日:",
        "sessionmanager-tie": "複数の要求の認証方法を組み合わせることはできません: $1。",
        "sessionprovider-generic": "$1 セッション",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "クッキーベースのセッション",
        "sessionprovider-nocookies": "クッキーが無効になっている可能性があります。クッキーが有効になっていることを確認し、もう一度お試しください。",
        "randomrootpage": "おまかせルートページ",
        "log-action-filter-block": "ブロックの種類",
+       "log-action-filter-contentmodel": "コンテンツモデルの変更の種類",
        "log-action-filter-delete": "削除の種類:",
        "log-action-filter-import": "取り込みの種類:",
        "log-action-filter-managetags": "タグ管理の種類:",
        "log-action-filter-contentmodel-change": "コンテンツモデルの変更",
        "log-action-filter-contentmodel-new": "標準でないコンテンツ・モデルによるページの作成",
        "log-action-filter-delete-delete": "ページの削除",
+       "log-action-filter-delete-delete_redir": "リダイレクトを上書き",
        "log-action-filter-delete-restore": "ページの復帰",
        "log-action-filter-delete-event": "記録の削除",
        "log-action-filter-delete-revision": "版指定削除",
        "restrictionsfield-label": "許可する IP の範囲:",
        "restrictionsfield-help": "一行につき、単一の IP アドレス、もしくは CIDR による範囲。全帯域からの接続を許可する場合: <pre>0.0.0.0/0\n::/0</pre>",
        "revid": "版 $1",
+       "pageid": "ページID $1",
+       "rawhtml-notallowed": "&lt;html&gt;タグは通常ページ以外では使用できません。",
+       "gotointerwiki": "{{SITENAME}}を離れる",
+       "gotointerwiki-invalid": "指定したページは無効です。",
+       "gotointerwiki-external": "{{SITENAME}}を離れ、別のウェブサイトである[[$2]]を訪れようとしています。\n\n'''[$1 $1に行く]'''",
        "undelete-cantedit": "このページを編集する許可がないため復元できません。",
        "undelete-cantcreate": "同名のページが存在せず、このページを作成する許可がないため復元できません。"
 }
index c5a399a..bb330f4 100644 (file)
@@ -77,7 +77,7 @@
        "thursday": "Kemis",
        "friday": "Jumuwah",
        "saturday": "Setu",
-       "sun": "Min",
+       "sun": "Nga",
        "mon": "Sen",
        "tue": "Sel",
        "wed": "Reb",
        "aug": "Agu",
        "sep": "Sèp",
        "oct": "Okt",
-       "nov": "Nop",
+       "nov": "Nov",
        "dec": "Dhé",
        "january-date": "Januari $1",
        "february-date": "Fèbruari $1",
        "october-date": "Oktober $1",
        "november-date": "$1 Novèmber",
        "december-date": "$1 Dhésèmber",
-       "period-am": "Isuk-Awan",
-       "period-pm": "Soré-Wengi",
+       "period-am": "Rina",
+       "period-pm": "Ratri",
        "pagecategories": "{{PLURAL:$1|Kategori}}",
        "category_header": "Kaca sajeroning kategori \"$1\"",
        "subcategories": "Anak kategori",
        "anontalk": "Parembugan",
        "navigation": "Navigasi",
        "and": "&#32;lan",
-       "qbfind": "Golèk",
-       "qbbrowse": "Luru",
-       "qbedit": "Besut",
-       "qbpageoptions": "Kaca iki",
-       "qbmyoptions": "Kaca-kacaku",
        "faq": "Pitakon Kerep",
-       "faqpage": "Project:Pitakon Kerep",
        "actions": "Lelabuhan",
        "namespaces": "Mandala aran",
        "variants": "Varian",
        "history_short": "Sujarah",
        "history_small": "sujarah",
        "updatedmarker": "wis dianyari kawit tekaku mréné pungkasan",
-       "printableversion": "Vèrsi cithak",
+       "printableversion": "Vèrsi cap-capan",
        "permalink": "Pranala permanèn",
        "print": "Cithak",
        "view": "Deleng",
        "edit-local": "Besut andharan enggon-enggonan",
        "create": "Gawé",
        "create-local": "Tambah panyadra enggon-enggonan",
-       "editthispage": "Besut kaca iki",
-       "create-this-page": "Gawé kaca iki",
        "delete": "Busak",
-       "deletethispage": "Busak kaca iki",
-       "undeletethispage": "Wurung busak kaca iki",
        "undelete_short": "Wurung busak {{PLURAL:$1|sabesutan|$1 besutan}}",
        "viewdeleted_short": "Deleng {{PLURAL:$1|sabesutan kabusak|$1 besutan kabusak}}",
        "protect": "Reksa",
-       "protect_change": "owah",
-       "protectthispage": "Reksa kaca iki",
+       "protect_change": "owahi",
        "unprotect": "Owah rereksan",
-       "unprotectthispage": "Owah rereksan kaca iki",
        "newpage": "Kaca anyar",
-       "talkpage": "Rembug kaca iki",
        "talkpagelinktext": "rembugan",
        "specialpage": "Kaca mirunggan",
        "personaltools": "Piranti priangga",
-       "articlepage": "Deleng kaca isi",
        "talk": "Parembugan",
        "views": "Praèn",
        "toolbox": "Piranti",
        "tool-link-userrights": "Owahi golongan {{GENDER:$1|panganggo}}",
        "tool-link-userrights-readonly": "Deleng golongan {{GENDER:$1|panganggo}}",
        "tool-link-emailuser": "Kirimi {{GENDER:$1|panganggo}} iki layang-é",
-       "userpage": "Deleng kaca panganggo",
-       "projectpage": "Deleng kaca proyèk",
        "imagepage": "Deleng kaca barkas",
        "mediawikipage": "Deleng kaca layang",
        "templatepage": "Deleng kaca cithakan",
        "confirmable-confirm": "{{GENDER:$1|Panjenengan}} yakin?",
        "confirmable-yes": "Iya",
        "confirmable-no": "Ora",
-       "thisisdeleted": "Ndeleng utawa mbalèkaké $1?",
+       "thisisdeleted": "Deleng utawa pulihaké $1?",
        "viewdeleted": "Deleng $1?",
        "restorelink": "$1 {{PLURAL:$1|besutan}} sing wis dibusak",
        "feedlinks": "Asupan:",
        "nstab-help": "Kaca pitulung",
        "nstab-category": "Kategori",
        "mainpage-nstab": "Tepas",
-       "nosuchaction": "Ora ana lelakon mangkono",
+       "nosuchaction": "Ora ana tumindak mangkono",
        "nosuchactiontext": "Pratingkah sing dirinci déning URL ora sah.\nPanjenengan manawa salah ketik nalika ngisi URL, utawa salah ngisi pranala.\nIki manawa uga nuduhaké anané kesalahan ing piranti alus sing dipigunakaké déning {{SITENAME}}.",
        "nosuchspecialpage": "Ora ana kaca mirunggan mangkono",
        "nospecialpagetext": "Panjenengan nyuwun kaca astaméwa sing ora sah. Daftar kaca astaméwa sing sah bisa dipirsani ing [[Special:SpecialPages|daftar kaca astaméwa]].",
        "virus-badscanner": "Kasalahan konfigurasi: pamindai virus ora dikenal: ''$1''",
        "virus-scanfailed": "''Pemindaian'' utawa ''scan'' gagal (kode $1)",
        "virus-unknownscanner": "antivirus buhbuhan:",
-       "logouttext": "<strong>Panjenengan saiki wis metu log.</strong>\n\nTulung gatèkaké yèn sawenèh kaca bokmanawa bakal isih katon kaya déné yèn panjenengan isih mlebu log, mula busaken cache pangluruné panjenengan.",
+       "logouttext": "<strong>Panjenengan wis metu log.</strong>\n\nTulung gatèkaké yèn sawenèh kaca bokmanawa bakal isih katon kaya déné yèn panjenengan isih mlebu log, kajaba panjenengan mbusak ''cache'' pangluruné panjenengan.",
        "cannotlogoutnow-title": "Ora bisa metu saiki",
        "cannotlogoutnow-text": "Metu ora mungkin menawa nganggo $1.",
        "welcomeuser": "Sugeng Rawuh, $1!",
        "nosuchusershort": "Ora ana panganggo mawa asma \"$1\". Coba dipriksa manèh pasang aksarané (éjaané).",
        "nouserspecified": "Panjenengan kudu milih jeneng panganggo.",
        "login-userblocked": "Panganggo iki pinalangan. Ora kena mbelu.",
-       "wrongpassword": "Tembung sandhi sing dipilih salah. Mangga coba manèh.",
+       "wrongpassword": "Tembung wadi sing diisèkaké salah.\nMangga jajalen manèh.",
        "wrongpasswordempty": "Panjenengan ora milih tembung sandhi. Mangga dicoba manèh.",
        "passwordtooshort": "Tembung sesinglon paling sethithik cacahé {{PLURAL:$1|1 aksara|$1 aksara}}.",
        "passwordtoolong": "Tembung wadi ora kena munjuli {{PLURAL:$1|1 pralambang|$1 pralambang}}.",
        "mailmypassword": "Balèni gawé tembung wadi",
        "passwordremindertitle": "Pèngetan tembung sandhi saka {{SITENAME}}",
        "passwordremindertext": "Ana wong (mbokmanawa panjenengan dhéwé, saka alamat IP $1) nyuwun supaya dikirimi tembung sandhi anyar kanggo {{SITENAME}} ($4). Tembung sandi sawetara kanggo panganggo \"$2\" wis digawé lan saiki \"$3\". Yèn panjenengan pancèn nggayuh iki, mangga énggal mlebu log lan ngganti tembung sandi saiki.\nTembung sandi sawetara mau bakal kadaluwarsa ing {{PLURAL:$5|sadina|$5 dina}}.\nYèn wong liya sing nglakoni panyuwunan iki, utawa panjenengan éling tembung sandi panjenengan, lan ora kepéngin ngowahi, panjenengan ora usah nggubris pesen iki lan bisa tetep nganggo tembung sandi lawas.",
-       "noemail": "Ora ana alamat layang e-mail sing kacathet kanggo panganggo \"$1\".",
+       "noemail": "Ora ana alamat layang-èl sing kacathet tumrap ing panganggo \"$1\".",
        "noemailcreate": "Panjenengan kudu maringi alamat e-mail sing absah",
        "passwordsent": "Tembung sandi anyar wis dikirim menyang alamat layang èlèktronik tumrap \"$1\". \nMangga mlebu log manèh sawisé panjenengan nampa iku.",
        "blocked-mailpassword": "Alamat IP-né panjenengan diblokir saka mbesut. Kanggo ngéndhani tumindak salah-guna, ora diparengaké nganggo pamulihan tembung wadi saka alamat IP iki.",
        "passwordreset-domain": "Domain:",
        "passwordreset-email": "Alamat layang-èl:",
        "passwordreset-emailtitle": "Rerincèné akun ing {{SITENAME}}",
-       "passwordreset-emailtext-ip": "Ana uwong (mbok menawa Sampéyan, mawa angka IP $1) njaluk ganti tembung sandhiné Sampéyan ana ing {{SITENAME}} ($4). {{PLURAL:$3|Rèkèning|Rèkèning-rèkèning}} ngisor iki magepokan karo padunungané layang èlèktronik iki:\n\n$2\n\n{{PLURAL:$3|Tembung sandhi sawetara iki}} bakal kedaluwarsa ing {{PLURAL:$5|sak dina|$5 dina}}.\nSampéyan kudu mlebu log lan milih siji tembung sandhi anyar saiki. Yèn wong liya sing njaluk iki, utawa yèn Sampéyan jebul wis kèlingan tembung sandhiné sing lawas saéngga ora ana niyat kanggo ngganti, Sampéyan bisa ngejaraké wara-wara iki lan bacutaké nganggo tembung sandhiné lawas Sampéyan.",
+       "passwordreset-emailtext-ip": "Ana wong (bokmanawa panjenengan, saka alamat IP $1) nyuwun tembung wadiné panjenengan disetèl ulang mungguh ing {{SITENAME}} ($4). {{PLURAL:$3|Akun}} ing ngisor iki ana gayutané karo layang-èl iki:\n\n$2\n\n{{PLURAL:$3|Tembung wadi sauntara iki}} bakal kadaluwarsa sawisé {{PLURAL:$5|sadina|$5 dina}}.\nPanjenengan kudu mlebu log lan milih tembung wadi anyar saiki. Yèn wong liya sing nyuwun iki, utawa yèn panjenengan pranyata wis kèlingan tembung wadiné panjenengan sing lawas banjur panjenengan ora nedya ngganti, panjenengan bisa nglirwakaké layang iki lan mbanjuraké nganggo tembung wadiné panjenengan sing lawas.",
        "passwordreset-emailtext-user": "Panganggo $1 seka {{SITENAME}} njaluk ganti tembung sandhiné Sampéyan ana ing {{SITENAME}} ($4). {{PLURAL:$3|Rèkèning|Rèkèning-rèkèning}} ngisor iki magepokan karo padunungané layang èlèktronik iki:\n\n$2\n\n{{PLURAL:$3|Tembung sandhi sawetara iki}} bakal kedaluwarsa ing {{PLURAL:$5|sak dina|$5 dina}}.\nSampéyan kudu mlebu log lan milih siji tembung sandhi anyar saiki. Yèn wong liya sing njaluk iki, utawa yèn Sampéyan jebul wis kèlingan tembung sandhiné sing lawas saéngga ora ana niyat kanggo ngganti, Sampéyan bisa ngejaraké wara-wara iki lan bacutaké nganggo tembung sandhiné lawas Sampéyan.",
        "passwordreset-emailelement": "Jeneng panganggo: \n$1\n\nTembung wadi sauntara: \n$2",
        "passwordreset-emailsentemail": "Yèn layang èlèktronik iki nggayut akuning sampéyan, layang kanggo salin tembung wadi bakal dikirim.",
+       "passwordreset-emailsentusername": "Manawa ana alamat layang-èl sing ana gayutané karo jeneng panganggo iki, layang-èl kanggo nyetèl ulang tembung wadi bakal dikirim.",
        "changeemail": "Owah utawa busak alamat layang-èl",
-       "changeemail-header": "Isinen formulir iki saperlu salin alamat layang-èlé panjenengan. Manawa panjenengan péngin ngilangi gegayutané alamat layang-èl saka akuné panjenengan, jaraké kosong babagan layang-èl anyar nalika ngirim formuliré.",
+       "changeemail-header": "Isinen formulir iki saperlu salin alamat layang-èlé panjenengan. Manawa panjenengan péngin ngilangi gegayutané alamat layang-èl saka akuné panjenengan, kosongaké waé babagan layang-èl anyar nalika ngirim formuliré.",
        "changeemail-no-info": "Sampéyan kudu mlebu log kanggo ngaksès kaca iki langsung.",
        "changeemail-oldemail": "Alamat layang-èl saiki:",
        "changeemail-newemail": "Alamat layang-èl anyar:",
        "changeemail-none": "(ora ana)",
        "changeemail-password": "Sandi {{SITENAME}} panjenengan:",
        "changeemail-submit": "Ganti layang-èl",
+       "changeemail-nochange": "Mangga isinen mawa alamat layang-èl sing anyar tur béda.",
        "resettokens": "Reset token",
        "resettokens-text": "Anda dapat me-reset Token yang memungkinkan akses ke data pribadi tertentu yang terkait dengan akun Anda di sini.\n\nAnda harus melakukannya jika Anda secara tidak sengaja berbagi dengan seseorang atau jika akun Anda telah disusupi.",
        "resettokens-no-tokens": "Ora ana token sing bisa direset.",
        "noarticletext-nopermission": "Saiki lagi ora ana tèks ing kaca iki. \nPanjenengan bisa [[Special:Search/{{PAGENAME}}|nggolèk sesirah kaca iki]] ing kaca liyané, \nutawa <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{urlencode:{{FULLPAGENAME}}}}}} nggolèk ing log sing gegayutan]</span>, nanging panjenengan ora kawogan nggawé kaca iki.",
        "missing-revision": "Révisi #$1 saka kaca ajeneng \"{{FULLPAGENAME}}\" ora ana.\n\nIki biyasané kasababaké awit nututi pranala sujarah sing wis lawas saka sawijiné kaca sing wis dibusak.\nRerincèné bisa digolèki ing [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log busak].",
        "userpage-userdoesnotexist": "Akun panganggo \"$1\" ora kadhaftar.\nMangga pesthèkaké dhisik yèn panjenengan péngin nggawé/mbesut kaca iki.",
-       "userpage-userdoesnotexist-view": "Panganggo \"$1\" ora kadhaptar.",
+       "userpage-userdoesnotexist-view": "Akun panganggo \"$1\" ora kadhaftar.",
        "blocked-notice-logextract": "Panganggo iki saiki lagi diblokir.\nLog pamblokiran pungkasan dituduhaké ing ngisor iki minangka bahan rujukan:",
        "clearyourcache": "<strong>Cathetan:</strong> Nalika rampung nyimpen, panjenengan kudu mbusak cache-né pangluruné panjenengan supaya owahané ketara.\n* <strong>Firefox / Safari:</strong> Pencèt <em>Shift</em> nalika ngeklik <em>Reload</em>, utawa pencèt <em>Ctrl-F5</em> utawa <em>Ctrl-R</em> (<em>⌘-R</em> ing Mac)\n* <strong>Google Chrome:</strong> Pencèt <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> ing Mac)\n* <strong>Internet Explorer:</strong> Pencèt <em>Ctrl</em> nalika ngeklik <em>Refresh</em>, utawa pencèt <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Nyang <em>Menu → Settings</em> (<em>Opera → Preferences</em> ing Mac) nuli nyang <em>Privacy & security → Clear browsing data → Cached images and files</em>.",
        "usercssyoucanpreview": "'''Tips:''' Gunakna tombol \"{{int:showpreview}}\" kanggo ngetès CSS anyar panjenengan sadurungé disimpen.",
        "previewnote": "<strong>Élinga yèn iki mung pratuduh.</strong>\nOwahanmu durung kasimpen!",
        "continue-editing": "Menyang pambesutan",
        "previewconflict": "Pratuduh iki nuduhaké tèksé ing pérangan ndhuwur kothak besutan tèks lan nuduhaké wujudé kaya déné yèn wis disimpen.",
-       "session_fail_preview": "Ngapunten! Kita ora bisa mrosès besutan panjenengan amarga ilangé sèsi data.\n\nPanjenengan bokmanawa wis metu log. <strong>Mangga vèrifikasi manawa panjenengan isih mlebu log lan jajala manèh</strong>.\nManawa isih durung kena, jajala [[Special:UserLogout|metu log]] lan mlebu log manèh, banjur priksaa apa browser panjenengan ngidinaké kuki saka situs iki.",
+       "session_fail_preview": "Ngapunten! Kita ora bisa ngayahi besutané panjenengan amarga ilangé sèsi dhata.\n\nPanjenengan bokmanawa wis metu log. <strong>Mangga vèrifikasi manawa panjenengan isih mlebu log lan jajalen manèh</strong>.\nManawa isih durung kena, jajalen [[Special:UserLogout|metu log]] lan mlebu log manèh, banjur priksanen apa pangluruné panjenengan ngidinaké kuki saka situs iki.",
        "session_fail_preview_html": "'''Nuwun sèwu! Kita ora bisa prosès suntingan panjenengan amerga data sési ilang.'''\n\n''Amerga wiki iki ngidinaké panrapan HTML mentah, pratayang didelikaké minangka penggakan marang serangan Javascript.''\n\n'''Yèn iki sawijining upaya suntingan sing absah, mangga dicoba manèh. Yèn isih tetep ora kasil, cobanen metu log utawa oncat lan mlebua manèh.'''",
        "token_suffix_mismatch": "<strong>Besutané panjenengan ditulak amarga aplikasi klièné panjenengan ngowahi karakter tandha waca ing token besutané.</strong>\nBesutané wis ditulak kanggo nyegah rusaké tèks kaca.\nSing kaya mangkono biyasané kadadéan nalika panjenengan nganggo paladenan proksi anonim sing lelandhesan jaringan.",
        "edit_form_incomplete": "<strong>Sawenèh pérangan formulir besut ora nyandhak paladèné; priksanen manèh yèn besutané panjenengan isih wutuh banjur jajalen manèh.</strong>",
        "editingcomment": "Mbesut $1 (pérangan anyar)",
        "editconflict": "Cengkah besutan: $1",
        "explainconflict": "Wong liya wis nyunting kaca iki wiwit panjenengan mau nyunting.\nBagian dhuwur tèks iki ngamot tèks kaca vèrsi saiki.\nPangowahan sing panjenengan lakoni dituduhaké ing bagian ngisor tèks.\nPanjenengan namung prelu nggabungaké pangowahan panjenengan karo tèks sing wis ana.\n'''Namung''' tèks ing bagian dhuwur kaca sing bakal kasimpen menawa panjenengan mencèt \"$1\".",
-       "yourtext": "Tulisan panjenengan",
+       "yourtext": "Tèksé panjenengan",
        "storedversion": "Owahan kasimpen",
        "nonunicodebrowser": "'''PÈNGET: Panjlajah wèb panjenengan ora ndhukung Unicode, mangga gantènana panjlajah wèb panjenengan sadurungé nyunting artikel.'''",
        "editingold": "'''PÈNGET:''' Panjenengan nyunting revisi lawas sawijining kaca. Yèn versi iki panjenengan simpen, mengko pangowahan-pangowahan sing wis digawé wiwit revisi iki bakal ilang.",
-       "yourdiff": "Prabédan",
+       "yourdiff": "Béda",
        "copyrightwarning": "Tulung dipun-gatèkaké menawa kabèh sumbangsih utawa kontribusi kanggo {{SITENAME}} iku dianggep wis diluncuraké miturut $2 GNU (mangga priksanen $1 kanggo ditèlé).\nMenawa panjenengan ora kersa menawa tulisan panjenengan bakal disunting karo disebar, aja didokok ing kéné.<br />\nPanjenengan uga janji menawa apa-apa sing katulis ing kéné, iku karyané panjenengan dhéwé, utawa disalin saka sumber bébas. '''AJA NDOKOK KARYA SING DIREKSA DÉNING UNDHANG-UNDHANG HAK CIPTA TANPA IDIN!'''",
        "copyrightwarning2": "Mangga digatèkaké yèn kabèh kontribusi marang  {{SITENAME}} bisa disunting, diowahi, utawa dibusak déning penyumbang liyané. Yèn panjenengan ora kersa yèn tulisan panjenengan bisa disunting wong liya, aja ngirim artikel panjenengan ing kéné.<br />Panjenengan uga janji yèn tulisan panjenengan iku kasil karya panjenengan dhéwé, utawa disalin saka sumber umum utawa sumber bébas liyané (mangga delengen $1 kanggo informasi sabanjuré). '''AJA NGIRIM KARYA SING DIREKSA DÉNING UNDHANG-UNDHANG HAK CIPTA TANPA IDIN!'''",
        "longpageerror": "'''Kasalahan: Tèks sing Sampéyan lebokaké dawané {{PLURAL:$1|sak kilobita|$1 kilobita}}, luwih dawa saka maksimal {{PLURAL:$2|sak kilobita|$2 kilobita}}.'''\nKuwi ora bisa disimpen.",
        "readonlywarning": "'''PÈNGET: Basis data lagi dikunci amerga ana pangopènan, dadi saiki panjenengan ora bisa nyimpen kasil panyuntingan panjenengan. Panjenengan mbokmenawa prelu mindhahaké kasil panyuntingan panjenengan iki menyang panggonan liya kanggo disimpen bésuk.'''\n\nPangurus sing ngunci basis data mènèhi katrangan kaya mengkéné: $1",
        "protectedpagewarning": "<strong>Pélik: Kaca iki wis direksa, mula mung panganggo mawa hak mirunggan pangurus sing bisa mbesut.</strong>\nÈntri log sing pungkasan ana ing ngisor iki minangka rujukan:",
-       "semiprotectedpagewarning": "'''Cathetan:''' Kaca iki lagi pinuju direksa, dadi namung panganggo kadaftar sing bisa nyunting.\nEntri cathetan pungkasan disadiakake ing ngisor kanggo referensi:",
+       "semiprotectedpagewarning": "<strong>Cathetan:</strong> Kaca iki pinuju direksa, mula mung panganggo sing kadhaftar sing bisa mbesut.\nÈntri log pungkasan cumepak ana ing ngisor kanggo rujukan:",
        "cascadeprotectedwarning": "<strong>Pènget:</strong> Kaca iki wis direksa saéngga mung panganggo kanthi hak pangurus waé sing bisa mbesut amarga kaca iki katranklusi ing {{PLURAL:$1|kaca|kaca-kaca}} sing kareksa runut ngisor iki:",
        "titleprotectedwarning": "'''Pènget: Kaca iki wis dikunci saéngga perlu [[Special:ListGroupRights|hak mligi]] kanggo gawéné.'''\nEntri cathetan pungkasan disadiakake ing ngisor kanggo referensi:",
        "templatesused": "{{PLURAL:$1|Cithakan|Cithakan}} sing dienggo ing kaca iki:",
-       "templatesusedpreview": "{{PLURAL:$1|Cithakan|Cithakan-cithakan}} sing dienggo ing pratilik iki:",
+       "templatesusedpreview": "{{PLURAL:$1|Cithakan}} sing dienggo ing pratuduh iki:",
        "templatesusedsection": "{{PLURAL:$1|Cithakan}} sing dienggo ding bagian iki:",
        "template-protected": "(kareksa)",
        "template-semiprotected": "(semu kareksa)",
        "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.\nCathetan busakan lan lih-lihan kaca ana ing ngisor minangka rujukan.",
+       "moveddeleted-notice": "Kaca iki wis dibusak.\nLog busak lan alih ngenani kacané cumepak ing ngisor kanggo 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.",
        "revdelete-reason-dropdown": "*Alasan penghapusan yang umum\n** Pelanggaran hak cipta\n** Komentar atau informasi pribadi yang tidak pantas\n** Nama pengguna yang tidak pantas\n** Berpotensi mencemarkan nama baik",
        "revdelete-otherreason": "Alesan liya/tambahan:",
        "revdelete-reasonotherlist": "Alesan liya",
-       "revdelete-edit-reasonlist": "Besut jalaraning pambusak",
+       "revdelete-edit-reasonlist": "Besut alesané pambusak",
        "revdelete-offender": "Juru pangriptaning owahan:",
        "suppressionlog": "Log barang-barang sing didelikaké (''oversight'')",
        "suppressionlogtext": "Ngisor iki daptar apa-apa waé sing wis dibusak lan diblokir kalebu kontèn sing didhelikaké saka para pangurus.\nDelok [[Special:BlockList|daptar blokiran]] sing isiné daptar apa-apa waé sing lagi dilarang lan diblokir.",
        "mergehistory-invalid-destination": "Kaca tujuan kudu asesirah sing sah.",
        "mergehistory-autocomment": "Nggabung [[:$1]] menyang [[:$2]]",
        "mergehistory-comment": "Nggabung [[:$1]] menyang [[:$2]]: $3",
-       "mergehistory-same-destination": "Jeneng kaca sumber lan tujuan ora kena padha",
+       "mergehistory-same-destination": "Kaca sumber lan tujuan ora kena padha",
        "mergehistory-reason": "Alesan:",
        "mergelog": "Gabung log",
        "revertmerge": "Wurung gabung",
        "searchdisabled": "Sawetara wektu iki panjenengan ora bisa nggolèk mawa fungsi golèk {{SITENAME}}. Kanggo saiki mangga panjenengan bisa golèk nganggo Google. Nanging isi indèks Google kanggo {{SITENAME}} bisa waé lawas lan durung dianyari.",
        "search-error": "Ana masalah nalika nggoleki: $1",
        "search-warning": "Ana pepélik nalika nggolèk: $1",
-       "preferences": "Pilihan",
-       "mypreferences": "Pilihan",
+       "preferences": "Pilalan",
+       "mypreferences": "Pilalan",
        "prefs-edits": "Gunggung besutan:",
        "prefsnologintext2": "Mangga mlebua log saperlu ngowahi pilalané panjenengan.",
        "prefs-skin": "Ules",
        "timezoneregion-pacific": "Samodra Pasifik",
        "allowemail": "Idinaké panganggo liyané ngirimi layang-èl",
        "prefs-searchoptions": "Golèk",
-       "prefs-namespaces": "Ruang jeneng / Bilik jeneng",
+       "prefs-namespaces": "Mandala aran",
        "default": "baku",
        "prefs-files": "Barkas",
        "prefs-custom-css": "CSS priangga",
        "grouppage-sysop": "{{ns:project}}:Pangurus",
        "grouppage-bureaucrat": "{{ns:project}}:Birokrat",
        "grouppage-suppress": "{{ns:project}}:Oversight",
-       "right-read": "Maca kaca-kaca",
+       "right-read": "Waca kaca",
        "right-edit": "Besut kaca",
        "right-createpage": "Gawé kaca (sing dudu kaca parembugan)",
        "right-createtalk": "Gawé kaca parembugan",
        "right-move-subpages": "Pindhahaké kaca lan kabèh anak-kacané",
        "right-move-rootuserpages": "Ngalih kaca panganggo oyod",
        "right-move-categorypages": "Lih kaca kategori",
-       "right-movefile": "Mindhah berkas",
+       "right-movefile": "Lih barkas",
        "right-suppressredirect": "Aja nggawé pangalihan saka kaca sing lawas yèn mindhah sawijining kaca",
        "right-upload": "Unggah barkas",
        "right-reupload": "Tindhihana sawijining berkas sing wis ana",
        "right-nominornewtalk": "Suntingan sithik (''minor'') ora ngwetokaké prompt pesen anyar",
        "right-apihighlimits": "Nganggo wates sing luwih dhuwur ing kwéri API",
        "right-writeapi": "Nganggo API tulis",
-       "right-delete": "Busak kaca-kaca",
+       "right-delete": "Busak kaca",
        "right-bigdelete": "Busak kaca-kaca mawa sajarah panyuntingan sing gedhé",
        "right-deletelogentry": "Busak lan wurung busak èntri log tartamtu",
        "right-deleterevision": "Busak lan wurung busak owahan tinamtuné kaca",
        "right-deletedhistory": "Ndeleng sajarah èntri-èntri kabusak, tanpa bisa ndeleng apa sing dibusak",
-       "right-deletedtext": "Delok tèks kabusak lan panggantèn antara rèpisi kabusak",
+       "right-deletedtext": "Deleng tèks sing dibusak lan owah-owahan antarané révisi sing dibusak",
        "right-browsearchive": "Golèk kaca-kaca sing wis dibusak",
        "right-undelete": "Wurung busak kaca",
        "right-suppressrevision": "Deleng, dhelikaké, lan wurung dhelikaké owahan tinamtu kaca-kacané panganggo sembarang",
        "right-viewsuppressed": "Deleng owahan sing didhelikaké saka panganggo sembarang",
-       "right-suppressionlog": "Ndeleng log-log pribadi",
+       "right-suppressionlog": "Deleng log priangga",
        "right-block": "Blokir panganggo-panganggo liya saka panyuntingan",
        "right-blockemail": "Blokir sawijining panganggo saka ngirim e-mail",
        "right-hideuser": "Blokir jeneng panganggo, lan delikna saka umum",
        "right-ipblock-exempt": "Bypass pamblokiran IP, pamblokiran otomatis lan pamblokiran rangkéan",
        "right-unblockself": "Bukak blokirané dhéwéké",
-       "right-protect": "Ganti undhaking pangreksan lan owah kaca-kaca sing direksa",
-       "right-editprotected": "Owah kaca-kaca sing direksa (tanpa pangreksan runtun)",
+       "right-protect": "Owahi tataran rereksan lan besut kaca sing direksa-runtun",
+       "right-editprotected": "Besut kaca sing direksa kanthi \"{{int:protect-level-sysop}}\"",
        "right-editsemiprotected": "Owah kaca-kaca sing direksa dadi \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Besut modhèl kontèn kaca",
        "right-editinterface": "Besut antarmuka panganggo",
        "right-autopatrol": "Gawé supaya suntingan-suntingan ditandhani minangka wis dipatroli",
        "right-patrolmarks": "Ndeleng tandha-tandha patroli owah-owahan anyar",
        "right-unwatchedpages": "Tuduhna daftar kaca-kaca sing ora diawasi",
-       "right-mergehistory": "Gabungna sajarah kaca-kaca",
+       "right-mergehistory": "Gabung sujarah kaca",
        "right-userrights": "Besut kabèh hak panganggo",
        "right-userrights-interwiki": "Besut hak-haking panganggo asal wiki jaba",
        "right-siteadmin": "Kunci lan buka kunci basis data",
        "action-suppressrevision": "tinjo lan balèkaké révisi sing didhelikaké",
        "action-suppressionlog": "mirsani log pribadi iki",
        "action-block": "malang panganggo iki mbesut",
-       "action-protect": "owahi tataran pangreksan kaca iki",
+       "action-protect": "owahi tataran rereksané kaca iki",
        "action-rollback": "gelis mbalèkaké suntingané panganggo pungkasan nèng sawijining saca",
-       "action-import": "impor kaca iki saka wiki liya",
+       "action-import": "impor kaca saka wiki liyané",
        "action-importupload": "impor kaca iki saka pamunggahan berkas",
        "action-patrol": "nandhani besutan wong liya yèn wis kapriksa",
        "action-autopatrol": "nandhani besutané panjenengan dhéwé yèn wis kapriksa",
        "action-unwatchedpages": "deleng pratélan kaca sing ingawasan",
        "action-mergehistory": "nggabungaké sajarah kaca iki",
        "action-userrights": "besut kabèh hak panganggo",
-       "action-userrights-interwiki": "ngowahi hak aksès saka panganggo ing wiki liya",
+       "action-userrights-interwiki": "besut hak aksès panganggo ing wiki liyané",
        "action-siteadmin": "ngunci utawa mbukak kunci basis data",
        "action-sendemail": "kirim layang-èl",
        "action-editmyoptions": "besut pilalané panjenengan",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (uga delengen [[Special:NewPages|pratélané kaca-kaca anyar]])",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Tuduhaké",
-       "rcfilters-activefilters": "Saringan sing murub",
+       "rcfilters-activefilters": "Saringan murub",
        "rcfilters-quickfilters": "Pranala rikat",
+       "rcfilters-quickfilters-placeholder-title": "Durung ana pranala sing disimpen",
+       "rcfilters-quickfilters-placeholder-description": "Saperlu nyimpen setèlan saringané panjenengan lan nganggo iku manèh ing tembé, kliken ikon markah bukuné ing babagan Saringan Murub ing ngisor.",
        "rcfilters-savedqueries-defaultlabel": "Saringan sumimpen",
        "rcfilters-savedqueries-rename": "Ganti jeneng",
        "rcfilters-savedqueries-setdefault": "Dadèkaké baku",
        "rcfilters-noresults-conflict": "Ora ana kasil amarga wewatoné kanggo nggolèk ana masalah",
        "rcfilters-filtergroup-registration": "Pandhaftaran panganggo",
        "rcfilters-filter-registered-label": "Kadhaftar",
-       "rcfilters-filter-registered-description": "Pambesut njeron log.",
+       "rcfilters-filter-registered-description": "Pambesut sing mlebu log.",
        "rcfilters-filter-unregistered-label": "Ora kadhaftar",
-       "rcfilters-filter-unregistered-description": "Juru besut sing ora mlebu log.",
+       "rcfilters-filter-unregistered-description": "Pambesut sing ora mlebu log.",
        "rcfilters-filtergroup-authorship": "Pangripta besutan",
        "rcfilters-filter-editsbyself-label": "Owah-owahané panjenengan",
        "rcfilters-filter-editsbyself-description": "Sumbangané panjenengan dhéwé.",
        "recentchanges-page-removed-from-category-bundled": "[[:$1]] dibusak saka kategori, [[Special:WhatLinksHere/$1|kaca iki kalebu ing njeroné kaca liyané]]",
        "autochange-username": "Salin otomatis MediaWiki",
        "upload": "Unggah barkas",
-       "uploadbtn": "Unggahna berkas",
-       "reuploaddesc": "Bali ing formulir pamotan",
+       "uploadbtn": "Unggah barkas",
+       "reuploaddesc": "Wurung ngunggah lan bali nyang formulir unggahan",
        "upload-tryagain": "Kirim déskripsi berkas sing wis diowah",
        "uploadnologin": "Durung mlebu log",
        "uploadnologintext": "Mangga $1 saperlu ngunggah barkas.",
        "upload_directory_read_only": "Dhirèktori pangunggahan ($1) ora bisa ditulis déning paladèn jaringan.",
        "uploaderror": "Kaluputan pangunggahan berkas",
        "upload-recreate-warning": "'''Pèngetan: Berkas mawa jeneng kuwi wis dibusak utawa disingkiraké.'''\n\nLog pambusakan lan panyingkiran saka kaca iki sumadhiya nèng kéné:",
-       "uploadtext": "Anggé formulir ing ngandhap punika kanggé nginggahaké gambar.\nKanggé mirsani utawi madosi gambar ingkang sampun dipununggah sakdèrèngipun pigunakaken [[Special:FileList|dhaftar berkas sing wis diunggah]], gambar ingkang dipununggah ulang ugi kadhaftar ing [[Special:Log/upload|log pangunggahan]], pambusakan ing [[Special:Log/delete|Log pambusakan]].\n\nKanggé nyertakaken gambar ing satunggiling kaca, pigunakaken pranala salah setunggal saking format ing ngandhap punika:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Berkas.jpg]]</nowiki></code>''' kanggé migunakaken versi pepak gambar\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Berkas.png|200px|thumb|left|tèks alt]]</nowiki></code>''' kanggé migunakaken gambar wiyaripun 200 piksel ing kothak ing sisih kiwa kanthi 'tèks alt' minangka panjelasan\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Berkas.ogg]]</nowiki></code>''' kanggé nggandhèng langsung dhumateng gambar tanpi nampilaké gambar",
+       "uploadtext": "Anggonen formulir ngisor iki saperlu ngunggah barkas.\nKanggo ndeleng utawa nggolèki barkas sing wis diunggah sadurungé, panjenengan menyanga [[Special:FileList|pratélan barkas unggahan]]. Barkas unggahan ulang uga kacathet ing [[Special:Log/upload|log unggah]], déné barkas busakan ing [[Special:Log/delete|log busak]].\n\nKanggo muwuhi barkas ing kaca, anggonen pranala kanthi formulir ing ngisor iki, pilih salah siji:\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code></strong> saperlu nganggo barkasé kanthi vèrsi sing wutuh\n* <strong><code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code></strong> saperlu nganggo barkasé kanthi amba 200 piksel déné ana ing njeron kothak lan kapacak ing sisih kiwané kaca mawa \"alt text\" minangka katerangané\n* <strong><code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code></strong> saperlu nggayutaké langsung barkasé tanpa mitontonaké barkasé dhéwé",
        "upload-permitted": "{{PLURAL:$2|Jinis}} barkas sing diidinaké: $1.",
        "upload-preferred": "{{PLURAL:$2|Jinis}} barkas sing diprayogakaké: $1.",
        "upload-prohibited": "{{PLURAL:$2|Jinis}} barkas sing dilarang: $1.",
        "filetype-badmime": "Berkas mawa tipe MIME \"$1\" ora pareng diunggahaké.",
        "filetype-bad-ie-mime": "Ora bisa ngunggahaké berkas iki amarga Internet Explorer ndhétèksi minangka \"$1\", sing ora diidinaké lan minangka tipe berkas sing nduwèni potènsi mbebayani.",
        "filetype-unwanted-type": "'''\".$1\"''' klebu jenis berkas sing ora diidinaké.\nLuwih becik {{PLURAL:$3|jinis berkas|Jinis-jinis berkas}} $2.",
-       "filetype-banned-type": "'''\".$1\"''' {{PLURAL:$4|dudu jinis berkas sing dililakaké|dudu jinis berkas sing dililakaké}}.\n{{PLURAL:$3|Berkas|Berkas}} sing dililakaké $2.",
+       "filetype-banned-type": "<strong>\".$1\"</strong> {{PLURAL:$4|dudu jinis barkas sing diidinaké}}.\n{{PLURAL:$3|Jinis barkas}} sing diidinaké $2.",
        "filetype-missing": "Berkas ini ora duwé ekstènsi (contoné \".jpg\").",
        "empty-file": "Barkas sing panjenengan kirim kosong.",
        "file-too-large": "Barkas sing panjenengan kirim kagedhèn.",
-       "filename-tooshort": "Jeneng berkas kacendhèken.",
+       "filename-tooshort": "Jeneng barkas kecendhèken.",
        "filetype-banned": "Jinis berkas iki dilarang.",
        "verification-error": "Berkas iki ora lulus pangesahan.",
        "hookaborted": "Owahan sing panjenengan ayahi diwurungaké déning èkstènsi.",
-       "illegal-filename": "Jeneng berkas ora dililakaké.",
+       "illegal-filename": "Jeneng barkas ora diidinaké.",
        "overwrite": "Nibani berkas sing wis ana ora dililakaké.",
        "unknown-error": "Ana masalah sing ora dingertèni.",
        "tmp-create-error": "Ora bisa nggawé berkas sawetara.",
        "file-thumbnail-no": "Jeneng berkas diwiwiti kanthi <strong>$1</strong>. Katoné berkas iki sawijining gambar mawa ukuran sing dicilikaké <em>(thumbnail)</em>.\nYèn panjenengan kagungan vèrsi mawa résolusi kebak saka gambar iki, mangga diunggahaké. Yèn ora, tulung jeneng berkas diganti.",
        "fileexists-forbidden": "Sawijining berkas mawa jeneng iki wis ana, lan ora bisa ditindhes.\nYèn panjenengan isih arep ngunggahaké berkas panjenengan, supaya\nmbalik lan gunakna jeneng liya.\n[[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "Wis ana berkas liyané mawa jeneng sing padha ing gudhang berkas sing dianggo bebarengan.\nYèn isih ngersakaké ngunggahaké, mangga berkas diunggahaké manèh mawa jeneng liya. [[File:$1|thumb|center|$1]]",
-       "file-exists-duplicate": "Berkas iki duplikat utawa padha karo {{PLURAL:$1|berkas|berkas-berkas}} ing ngisor:",
+       "file-exists-duplicate": "Barkas iki dhuplikaté {{PLURAL:$1|barkas}} iki:",
        "file-deleted-duplicate": "Sawijining berkas persis berkas iki ([[:$1]]) wis tau dibusak. Mangga panjenengan priksani sajarah pambusakan berkas kasebut sadurungé nerusaké ngunggahaké berkas kuwi manèh.",
        "uploadwarning": "Pèngetan pangunggahan berkas",
        "uploadwarning-text": "Mangga owah katrangan berkas nèng ngisor lan coba manèh.",
        "php-uploaddisabledtext": "Pangunggahan berkas dipatèni ing PHP.\nMangga priksa panyetèlan pangunggahan berkas.",
        "uploadscripted": "Berkas iki ngandhut HTML utawa kode sing bisa diinterpretasi salah déning panjlajah wèb.",
        "uploadvirus": "Berkas iki ngamot virus! Détil: $1",
-       "uploadjava": "Berkas kuwi berkas ZIP sing kaisi berkas .class Java.\nNgungga berkas Java ora dililakaké amarga bisa nyebabaké ngluwèhaké wates kamanan.",
+       "uploadjava": "Barkasé barkas ZIP sing ngemu barkas .class Java.\nNgunggah barkas Java ora diidinaké amarga bisa njalari dilanggaré watesan kaamanan.",
        "upload-source": "Barkas sumber",
-       "sourcefilename": "Jeneng berkas sumber:",
+       "sourcefilename": "Jeneng barkas sumber:",
        "sourceurl": "URL sumber:",
-       "destfilename": "Jeneng berkas sing dituju",
+       "destfilename": "Jeneng barkas tujuan:",
        "upload-maxfilesize": "Ukuran maksimal berkas: $1",
-       "upload-description": "Katrangan berkas",
+       "upload-description": "Katerangan barkas",
        "upload-options": "Opsi pangundhuhan",
        "watchthisupload": "Awasana berkas iki",
        "filewasdeleted": "Sawijining berkas mawa jeneng iki wis tau diunggahaké lan sawisé dibusak.\nMangga priksanen $1 sadurungé ngunggahaké berkas iku manèh.",
        "upload-form-label-infoform-date": "Tanggal",
        "backend-fail-stream": "Ora bisa milikaké berkas \"$1\".",
        "backend-fail-backup": "Ora bisa nyadangaké berkas \"$1\".",
-       "backend-fail-notexists": "Berkas $1 ora ana.",
+       "backend-fail-notexists": "Barkas $1 ora ana.",
        "backend-fail-hashes": "Ora bisa ngéntukaké has berkas kanggo mbandingaké.",
        "backend-fail-notsame": "Berkas nonidèntik wis ana nèng \"$1\".",
        "backend-fail-invalidpath": "\"$1\" dudu jurusan nyimpen sing sah.",
        "lockmanager-fail-svr-acquire": "Ora bisa ngentokaké gembok nèng sasana $1.",
        "lockmanager-fail-svr-release": "Ora bisa nguculaké gembok neng sasana $1.",
        "zip-file-open-error": "Ana masalah nalika mbukak barkas kanggo pamriksan ZIP.",
-       "zip-wrong-format": "Berkas sing diawèhaké dudu berkas ZIP.",
+       "zip-wrong-format": "Barkas sing diisèkaké dudu barkas ZIP.",
        "zip-bad": "Berkas rusak utawa berkas ZIP sing ora bisa diwaca.\nKuwi ora bisa kapriksa kanthi patut kanggo kamanan.",
        "zip-unsupported": "Berkasé kuwi berkas ZIP sing nganggo piranti ZIP sing ora kasengkuyung déning MediaWiki.\nKuwi ora bisa kapriksa kanthi patut kanggo kamanan.",
        "uploadstash": "Unggah pandhelikan",
        "filehist-nothumb": "Ora ana miniatur",
        "filehist-user": "Panganggo",
        "filehist-dimensions": "Alang ujur",
-       "filehist-filesize": "Gedhené berkas",
+       "filehist-filesize": "Gedhené barkas",
        "filehist-comment": "Tanggapan",
-       "imagelinks": "Panganggoning barkas",
+       "imagelinks": "Panggunané barkas",
        "linkstoimage": "{{PLURAL:$1|Kaca|$1 kaca}} ngisor iki nggayut barkas iki:",
        "linkstoimage-more": "Luwih saka $1 {{PLURAL:$1|kaca|kaca-kaca}} nduwèni pranala menyang berkas iki.\nDhaftar ing ngisor nuduhaké {{PLURAL:$1|kaca pisanan kanthi pranala langsung|$1 kaca kanthi pranala langsung}} menyang berkas iki.\n[[Special:WhatLinksHere/$2|dhaftar pepak]] uga ana.",
        "nolinkstoimage": "Ora ana kaca sing nggayut menyang barkas iki.",
        "morelinkstoimage": "Ndeleng [[Special:WhatLinksHere/$1|luwih akèh pranala]] menyang berkas iki.",
-       "linkstoimage-redirect": "$1 (alihan berkas) $2",
+       "linkstoimage-redirect": "$1 (alihan barkas) $2",
        "duplicatesoffile": "{{PLURAL:$1|berkas ing ngisor arupa duplikat|$1 berkas ing ngisor arupa duplikat}} saka berkas iki ([[Special:FileDuplicateSearch/$2|luwih rinci]]):",
        "sharedupload": "Barkas iki saka $1 lan bisa kanggo proyèk-proyèk liyané.",
        "sharedupload-desc-there": "Berkas iki asal saka $1 lan bisa dipigunakaké déning proyèk liya.\nMangga pirsani [$2 kaca dhèskripsi berkas] kanggo informasi sabanjuré.",
        "sharedupload-desc-here": "Barkas iki saka $1 lan kena kanggo proyèk liya.\nPanyandraning [$2 kaca panyandra barkas]é kapacak ing ngisor.",
        "sharedupload-desc-edit": "Berkas iki saka $1 lan mungkin dianggo nèng proyèk liya.\nMungkin Sampéyan pingin nyunting katrangan nèng [$2 kaca katrangan berkasé] nèng kono.",
        "sharedupload-desc-create": "Berkas iki saka $1 lan mungkin dianggo nèng proyèk liya.\nMungkin Sampéyan pingin nyunting katrangan nèng [$2 kaca katrangan berkasé] nèng kono.",
-       "filepage-nofile": "Ora ana berkas nganggo jeneng iki.",
+       "filepage-nofile": "Ora ana barkas kanthi jeneng kaya mangkéné.",
        "filepage-nofile-link": "Ora ana berkas nganggo jeneng iki, nanging panjenengan bisa [$1 ngunggahaké].",
        "uploadnewversion-linktext": "Unggahna vèrsi sing luwih anyar tinimbang gambar iki",
        "shared-repo-from": "saka $1",
        "shared-repo": "sawijining panyimpenan kanggo bebarengan",
        "upload-disallowed-here": "Sampéyan ora kena ngeblegi barkas iki.",
        "filerevert": "Balèkna $1",
-       "filerevert-legend": "Balèkna berkas",
+       "filerevert-legend": "Pulihaké barkas",
        "filerevert-intro": "Panjenengan mbalèkaké '''[[Media:$1|$1]]''' menyang [vèrsi $4 ing $3, $2].",
        "filerevert-comment": "Alesan:",
        "filerevert-defaultcomment": "Dibalèkaké menyang vèrsi ing $2, $1 ($3)",
        "filerevert-badversion": "Ora ana vèrsi lokal sadurungé saka berkas iki mawa stèmpel wektu sing dikarepaké.",
        "filerevert-identical": "Vèrsi barkasé sing saiki padha plek karo sing dipilih.",
        "filedelete": "Mbusak $1",
-       "filedelete-legend": "Mbusak berkas",
+       "filedelete-legend": "Busak barkas",
        "filedelete-intro": "Panjenengan bakal mbusak berkas '''[[Media:$1|$1]]''' sekaliyan kabèh riwayaté.",
        "filedelete-intro-old": "Panjenengan mbusak vèrsi '''[[Media:$1|$1]]''' per [$4 $3, $2].",
        "filedelete-comment": "Alesan:",
        "filedelete-otherreason": "Alesan tambahan/liya:",
        "filedelete-reason-otherlist": "Alesan liya",
        "filedelete-reason-dropdown": "*Alesan pambusakan\n** Nglanggar hak cipta\n** Berkas duplikat",
-       "filedelete-edit-reasonlist": "Busak jalaraning pambusak",
+       "filedelete-edit-reasonlist": "Besut alesané mbusak",
        "filedelete-maintenance": "Pambusakan lan pambalikan berkas kanggo sawetara dipatèni salawas ana pangruwatan.",
-       "filedelete-maintenance-title": "Ora bisa mbusak berkas",
+       "filedelete-maintenance-title": "Ora bisa mbusak barkas",
        "mimesearch": "Panggolèkan MIME",
        "mimesearch-summary": "Kaca iki nyedyaké fasilitas nyaring berkas miturut tipe MIME-né. Lebokna: contenttype/subtype, contoné <code>image/jpeg</code>.",
        "mimetype": "Tipe MIME:",
        "statistics-header-edits": "Pétungan besutan",
        "statistics-header-users": "Statistik panganggo",
        "statistics-header-hooks": "Statistik liya",
-       "statistics-articles": "Kaca-kaca isi",
+       "statistics-articles": "Kaca isi",
        "statistics-pages": "Gunggung kaca",
        "statistics-pages-desc": "Kabèh kaca ing wiki iki, kalebu kaca parembugan, alihan, lsp.",
        "statistics-files": "Berkas sing diunggahaké",
        "statistics-edits": "Gunggung suntingan wiwit {{SITENAME}} diwiwiti",
        "statistics-edits-average": "Rata-rata suntingan saben kaca",
-       "statistics-users": "Gunggung [[Special:ListUsers|panganggo kadaftar]]",
+       "statistics-users": "[[Special:ListUsers|Panganggo]] kadhaftar",
        "statistics-users-active": "Para panganggo aktif",
        "statistics-users-active-desc": "Panganggo sing ngayahi aktivitas jroning {{PLURAL:$1|dia|$1 dina}} pungkasan",
-       "pageswithprop": "Kaca-kaca mawa ubarampé",
-       "pageswithprop-legend": "Kaca-kaca mawa ubarampé",
-       "pageswithprop-text": "Kaca iki mratélakaké kaca-kaca sing nganggo deduwèkaning kaca tinamtu.",
+       "pageswithprop": "Kaca mawa properti kaca",
+       "pageswithprop-legend": "Kaca mawa properti kaca",
+       "pageswithprop-text": "Kaca iki mratélakaké kaca-kaca sing nganggo properti kaca mirunggan.",
        "pageswithprop-prop": "Arané ubarampé:",
        "pageswithprop-submit": "Nuju",
        "pageswithprop-prophidden-long": "nilai properti teks dawa didhelikake ($1 kilobita)",
        "deadendpages": "Kaca-kaca buntu (tanpa pranala)",
        "deadendpagestext": "Kaca-kaca ing ngisor iki ora nggayut nyang kaca liya ing {{SITENAME}}.",
        "protectedpages": "Kaca sing direksa",
-       "protectedpages-indef": "Namung pangreksan ora langgeng waé",
+       "protectedpages-indef": "Namung rereksan tanpa watesan wektu",
        "protectedpages-cascade": "Amung kaca rineksan kang runtut",
        "protectedpages-noredirect": "Dhelikna alihan",
        "protectedpagesempty": "Saat ini tidak ada halaman yang sedang dilindungi.",
        "allpages": "Kabèh kaca",
        "nextpage": "Kaca sabanjuré ($1)",
        "prevpage": "Kaca sadurungé ($1)",
-       "allpagesfrom": "Kaca-kaca kawiwitan kanthi:",
+       "allpagesfrom": "Pitontonaké kaca sing diwiwiti:",
        "allpagesto": "Tampilaké kaca dipungkasi ing:",
        "allarticles": "Kabèh kaca",
        "allinnamespace": "Kabèh kaca (mandala aran $1)",
        "categories-submit": "Tuduhaké",
        "categoriespagetext": "{{PLURAL:$1|kategori ing ngisor iki ngandhut|kategori ing ngisor iki ngandhut}} kaca utawa media.\n[[Special:UnusedCategories|Kategori sing ora dianggo]] ora ditampilaké ing kéné.\nDeleng uga [[Special:WantedCategories|kategori sing diperlokaké]].",
        "categoriesfrom": "Tuduhaké kategori-kategori sing diwiwiti:",
-       "deletedcontributions": "Sumbangan panganggo sing dibusak",
-       "deletedcontributions-title": "Sumbanganing panganggo sing dibusak",
+       "deletedcontributions": "Sumbangané panganggo sing dibusak",
+       "deletedcontributions-title": "Sumbangané panganggo sing dibusak",
        "sp-deletedcontributions-contribs": "sumbangan",
        "linksearch": "Golèkan pranala njaba",
        "linksearch-pat": "Pola panggolèkan:",
        "wlheader-enotif": "Wara-wara layang-èl diurubaké.",
        "wlheader-showupdated": "Kaca-kaca sing wis owah wiwit ditiliki panjenengan kaping pungkasan, dituduhaké mawa '''aksara kandel'''",
        "wlnote": "Ngisor iki {{PLURAL:$1|owahan pungkasan|'''$1''' owahan pungkasan}} {{PLURAL:$2|jam|'''$2''' jam}} kapungkur, per $3, $4.",
-       "wlshowlast": "Tuduhna $1 jam $2 dina  pungkasan",
+       "wlshowlast": "Tuduhaké $1 jam $2 dina pungkasan",
        "watchlist-hide": "Dhelikaké",
        "watchlist-submit": "Tuduhaké",
        "wlshowtime": "Kala mangsa kanggo dituduhaké:",
        "deletepage": "Busak kaca",
        "confirm": "Dhedhes (konfirmasi)",
        "excontent": "isi sadurungé: '$1'",
-       "excontentauthor": "isiné mung arupa: '$1' (lan siji-sijiné sing nyumbang yaiku '$2')",
+       "excontentauthor": "isiné: \"$1\", lan sing nyumbang mung \"[[Special:Contributions/$2|$2]]\" ([[User talk:$2|parembugan]])",
        "exbeforeblank": "isi sadurungé dikosongaké: '$1'",
        "delete-confirm": "Busak \"$1\"",
        "delete-legend": "Busak",
        "historywarning": "'''Pènget''': Kaca sing bakal panjenengan busak ana sajarahé kanthi $1 {{PLURAL:$1|révisi|révisi}}:",
        "historyaction-submit": "Tuduhaké",
-       "confirmdeletetext": "Panjenengan bakal mbusak kaca utawa berkas iki minangka permanèn karo kabèh sajarahé saka basis data. Pastèkna dhisik menawa panjenengan pancèn nggayuh iki, ngerti kabèh akibat lan konsekwènsiné, lan apa sing bakal panjenengan tumindak iku cocog karo [[{{MediaWiki:Policy-url}}|kawicaksanan {{SITENAME}}]].",
+       "confirmdeletetext": "Panjenengan nedya mbusak kaca dalah kabèh sujarahé.\nMangga konfirmasi yèn panjenengan pancèn nedya ngayahi iki, ngerti kabèh temahané, lan tumindaké panjenengan miturut [[{{MediaWiki:Policy-url}}|pranatan]].",
        "actioncomplete": "Kasil diayahi",
        "actionfailed": "Tindakan gagal",
        "deletedtext": "\"$1\" wis dibusak. \nDelenga $2 minangka cathetan ngenani sing pungkasan kabusak.",
        "deleteotherreason": "Alesan liya utawa tambahan:",
        "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 jalaraning pambusak",
+       "delete-edit-reasonlist": "Besut alesané pambusak",
        "delete-toobig": "Kaca iki darbé sujarah 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-warning-toobig": "Kaca iki duwé sujarah 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.",
        "protectlogpage": "Log reksa",
        "protectlogtext": "Ngisor iki daptar owahan saka panjagan kaca.\nDelok [[Special:ProtectedPages|daptar kaca sing dijaga]] kanggo daptar panjagan kaca paling anyar.",
        "protectedarticle": "ngreksa \"[[$1]]\"",
-       "modifiedarticleprotection": "ngowahi tingkat pangreksan \"[[$1]]\"",
+       "modifiedarticleprotection": "ngowahi tataran rereksané \"[[$1]]\"",
        "unprotectedarticle": "nyingkiraké panjagan saka \"[[$1]]\"",
        "movedarticleprotection": "ngalih setèlan rereksan saka \"[[$2]]\" nyang \"[[$1]]\"",
        "protectedarticle-comment": "{{GENDER:$2|Ngreksa}} \"[[$1]]\"",
        "modifiedarticleprotection-comment": "{{GENDER:$2|Ngowahi tataran rereksan}} tumrap \"[[$1]]\"",
        "unprotectedarticle-comment": "{{GENDER:$2|Nyopot rereksan}} saka \"[[$1]]\"",
-       "protect-title": "Ngowahi tingkatan pangreksan kanggo \"$1\"",
+       "protect-title": "Owahi tataran rereksané \"$1\"",
        "protect-title-notallowed": "Deleng tataran rereksan saka \"$1\"",
        "prot_1movedto2": "$1 dialihaké menyang $2",
        "protect-badnamespace-title": "Bilik jeneng sing ora bisa dijagani",
        "protect-badnamespace-text": "Kaca nèng bilik jeneng iki ora bisa dijagani.",
        "protect-norestrictiontypes-text": "Kaca iki ora isa diproteksi.",
        "protect-norestrictiontypes-title": "Kaca sing ora bisa diproteksi",
-       "protect-legend": "Konfirmasi pangreksan",
+       "protect-legend": "Konfirmasi rereksan",
        "protectcomment": "Alesan:",
        "protectexpiry": "Kadaluwarsa:",
        "protect_expiry_invalid": "Wektu kadaluwarsa ora sah.",
        "protect_expiry_old": "Wektu kadaluwarsané kuwi ana ing jaman biyèn.",
-       "protect-unchain-permissions": "Urubaké pilihan panjagan sabanjuré",
+       "protect-unchain-permissions": "Urubaké opsi rereksan lanjutan",
        "protect-text": "Ing kéné, sampéyan bisa ndeleng lan ngganti tataran kareksan tumrap kaca <strong>$1</strong>.",
-       "protect-locked-blocked": "Panjenengan ora bisa ngganti tingkat pangreksan yèn lagi diblokir.\nIng ngisor iki kapacak konfigurasi saiki iki kanggo kaca '''$1''':",
-       "protect-locked-dblock": "Tingkat pangreksan ora bisa diganti amerga anané panguncèn aktif basis data.\nIng ngisor iki kapacak konfigurasi kanggo kaca '''$1''':",
-       "protect-locked-access": "Akun utawa rékening panjenengan ora awèh idin kanggo ngganti tingkat pangreksan kaca. Ing ngisor iki kapacak konfigurasi saiki iki kanggo kaca '''$1''':",
+       "protect-locked-blocked": "Panjenengan ora bisa ngowahi tataran rereksan nalika diblokir.\nMangkéné setèlan saiki tumrap kaca <strong>$1</strong>:",
+       "protect-locked-dblock": "Tataran rereksan ora bisa diowahi amarga sasana dhatané digembok.\nMangkéné setèlan saiki tumrap kaca <strong>$1</strong>:",
+       "protect-locked-access": "Akuné panjenengan ora kawogan ngowahi tataran rereksan kaca.\nMangkéné setèlan saiki tumrap kaca <strong>$1</strong>:",
        "protect-cascadeon": "Kaca iki lagi direksa amerga disertakaké ing {{PLURAL:$1|kaca|kaca-kaca}} sing wis direksa mawa pilihan pangreksan runtun diaktifaké. Panjenengan bisa ngganti tingkat pangreksan kanggo kaca iki, nanging perkara iku ora awèh pengaruh pangreksan runtun.",
        "protect-default": "Idinaké kabèh panganggo",
        "protect-fallback": "Perlu idin hak aksès \"$1\"",
-       "protect-level-autoconfirmed": "Blokir panganggo anyar lan ora kadhaptar",
+       "protect-level-autoconfirmed": "Mung idinaké panganggo sing otomatis kadhaftar",
        "protect-level-sysop": "Namung opsis (operator sistem)",
        "protect-summary-cascade": "runtun",
        "protect-expiring": "kadaluwarsa $1 (UTC)",
        "protect-expiring-local": "kedaluwarsa $1",
        "protect-expiry-indefinite": "salawasé",
-       "protect-cascade": "Reksanen kabèh kaca sing kalebu ing kaca iki (pangreksan runtun).",
-       "protect-cantedit": "Panjenengan ora pareng ngowahi tingkatan pangreksan kaca iki amerga panjenengan ora kagungan idin nyunting kaca iki.",
-       "protect-othertime": "Wektu liya:",
-       "protect-othertime-op": "wektu liya",
+       "protect-cascade": "Reksa kaca sing kalebu ing kaca iki (rereksan runtun).",
+       "protect-cantedit": "Panjenengan ora bisa ngowahi tataran rereksan kaca iki amarga panjenengan ora kawogan mbesut.",
+       "protect-othertime": "Wektu liya:",
+       "protect-othertime-op": "wektu liya",
        "protect-existing-expiry": "Wektu kadaluwarsa saiki: $3, $2",
-       "protect-otherreason": "Alesan liya/tambahan:",
-       "protect-otherreason-op": "Alesan liya",
+       "protect-otherreason": "Alesan tambahan/liyané:",
+       "protect-otherreason-op": "Alesan liya",
        "protect-dropdown": "*Alesan umum pangreksa\n** Vandalisme makaping-kaping\n** Spam makaping-kaping\n** Perang besutan ora prodhuktif\n** Kaca sing dhuwur trafiké",
-       "protect-edit-reasonlist": "Mbesut jalaraning pangreksa",
+       "protect-edit-reasonlist": "Besut alesané ngreksa",
        "protect-expiry-options": "1 jam:1 hour,1 dina:1 day,1 minggu:1 week,2 minggu:2 weeks,1 wulan:1 month,3 wulan:3 months,6 wulan:6 months,1 taun:1 year,tanpa wates:infinite",
-       "restriction-type": "Pangreksan:",
+       "restriction-type": "Palilah:",
        "restriction-level": "Tingkatan pambatesan:",
        "minimum-size": "Ukuran minimum",
        "maximum-size": "Ukuran maksimum:",
        "pagesize": "(bita)",
        "restriction-edit": "Besut",
-       "restriction-move": "Pamindhahan",
+       "restriction-move": "Lih",
        "restriction-create": "Gawé",
        "restriction-upload": "Unggah",
-       "restriction-level-sysop": "pangreksan kebak",
-       "restriction-level-autoconfirmed": "pangreksan sémi",
+       "restriction-level-sysop": "kareksa sawutuhé",
+       "restriction-level-autoconfirmed": "semu kareksa",
        "restriction-level-all": "kabèh tingkatan",
        "undelete": "Kembalikan halaman yang telah dihapus",
        "undeletepage": "Deleng lan pulihaké kaca kabusak",
        "namespace_association": "Mandala aran magepokan",
        "tooltip-namespace_association": "Centhang kothak iki kanggo nglebokaké uga bilik jeneng gumenan utawa subyèk sing kakait karo bilik jeneng kapilih",
        "blanknamespace": "(Pokok)",
-       "contributions": "Sumbangan {{GENDER:$1|panganggo}}",
-       "contributions-title": "Sumbangan panganggo $1",
+       "contributions": "Sumbangané {{GENDER:$1|panganggo}}",
+       "contributions-title": "Sumbangané panganggo $1",
        "mycontris": "Sumbangan",
        "anoncontribs": "Sumbangan",
        "contribsub2": "Kanggo {{GENDER:$3|$1}} ($2)",
        "uctop": "(saiki)",
        "month": "Saka wulan (lan sadurungé):",
        "year": "Wiwit taun (lan sadurungé):",
-       "sp-contributions-newbies": "Namung panganggo-panganggo anyar",
+       "sp-contributions-newbies": "Tuduhaké mung sumbangané akun-akun anyar waé",
        "sp-contributions-newbies-sub": "Kanggo panganggo anyar",
-       "sp-contributions-newbies-title": "Sumbanganing para panganggo anyar",
-       "sp-contributions-blocklog": "Log blokir",
-       "sp-contributions-deleted": "sumbanganing panganggo sing dibusak",
+       "sp-contributions-newbies-title": "Sumbangané panganggo anyar",
+       "sp-contributions-blocklog": "log blokir",
+       "sp-contributions-deleted": "sumbangané {{GENDER:$1|panganggo}} sing dibusak",
        "sp-contributions-uploads": "unggahan",
        "sp-contributions-logs": "log",
        "sp-contributions-talk": "rembug",
        "nolinkshere": "Ora ana kaca sing nduwé pranala menyang '''[[:$1]]'''.",
        "nolinkshere-ns": " Ora ana kaca sing nduwé pranala menyang '''[[:$1]]''' ing bilik jeneng sing kapilih.",
        "isredirect": "kaca lih-lihan",
-       "istemplate": "karo cithakan",
+       "istemplate": "tranklusi",
        "isimage": "pranala barkas",
        "whatlinkshere-prev": "{{PLURAL:$1|sadurungé|$1 sadurungé}}",
        "whatlinkshere-next": "{{PLURAL:$1|sabanjuré|$1 sabanjuré}}",
        "unblock": "Uculaké blokirané panganggo",
        "blockip": "Palang {{GENDER:$1|panganggo}}",
        "blockip-legend": "Blokir panganggo",
-       "blockiptext": "Enggonen formulir ing ngisor iki kanggo mblokir sawijining alamat IP utawa panganggo supaya ora bisa nyunting kaca.\nPrekara iki perlu dilakoni kanggo menggak vandalisme, lan miturut [[{{MediaWiki:Policy-url}}|kawicaksanan {{SITENAME}}]].\nLebokna alesan panjenengan ing ngisor iki (contoné njupuk conto kaca sing wis tau dirusak).",
+       "blockiptext": "Enggonen formulir ing ngisor iki saperlu mblokir aksès nulis lumantar alamat IP utawa panganggo mirunggan.\nIki kudu diayahi kanggo ngéndhani vandhalisme, lan minangkani [[{{MediaWiki:Policy-url}}|pranatan]].\nIsinen alesan sing mirunggan ing ngisor iki (contoné, nyitir kaca mirunggan sing dirusak).\nPanjenengan bisa mblokir saprangkat alamat IP lumantar sintaksis [https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing CIDR]; kèhé prangkat sing diidinaké ya iku /$1 kanggo IPv4 lan /$2 kanggo IPv6.",
        "ipaddressorusername": "Alamat IP utawa jeneng panganggo",
        "ipbexpiry": "Kadaluwarsa",
        "ipbreason": "Alesan:",
        "ipbreason-dropdown": "*Alesan umum mblokir\n** Mènèhi informasi palsu\n** Mbusak isi kaca\n** Spam pranala menyang situs njaba\n** Nglebokaké tulisan ngawur ing kaca\n** Tumindak nglècèhaké\n** Ngujar-ujari sawenèh akun\n** Jeneng panganggo ora patut",
-       "ipb-hardblock": "Alangi panganggo sing wis mlebu log nyunting saka alamat IP iki",
+       "ipb-hardblock": "Wurungaké panganggo sing wis mlebu log mbesut saka alamat IP iki",
        "ipbcreateaccount": "Penggak panggawéné akun",
        "ipbemailban": "Penggak panganggo saka ngirim layang-èl",
        "ipbenableautoblock": "Blokir alamat IP pungkasan sing dienggo déning pengguna iki sacara otomatis, lan kabèh alamat sabanjuré sing dicoba arep dienggo nyunting.",
-       "ipbsubmit": "Kirimna",
+       "ipbsubmit": "Blokir panganggo iki",
        "ipbother": "Wektu liya",
        "ipboptions": "2 jam:2 hours,1 dina:1 day,3 dina:3 days,1 minggu:1 week,2 minggu:2 weeks,1 wulan:1 month,3 wulan:3 months,6 wulan:6 months,1 taun:1 year,tanpa wates:infinite",
        "ipbhidename": "Delikna jeneng panganggo saka suntingan lan pratélan",
-       "ipbwatchuser": "Wasi kaca panganggoning lan kaca gegunemaning panganggo iki",
-       "ipb-disableusertalk": "Alangi panganggo iki nyunting kaca gunemané nalika diblokir",
+       "ipbwatchuser": "Wasi kaca panganggo lan kaca parembugané panganggo iki",
+       "ipb-disableusertalk": "Wurungaké panganggo iki mbesut kaca parembugané dhéwé nalika diblokir",
        "ipb-change-block": "Blokir manèh panganggo kanthi sèting iki",
-       "ipb-confirm": "Pesthèkaké blokir",
+       "ipb-confirm": "Konfirmasi blokiran",
        "badipaddress": "Alamat IP klèntu",
-       "blockipsuccesssub": "Pemblokiran suksès",
-       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] wis diblokir.<br />\nDelok [[Special:BlockList|daptar blokir]] kanggo ninjo blokiran.",
+       "blockipsuccesssub": "Suksès mblokir",
+       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] wis diblokir.<br />\nDeleng [[Special:BlockList|pratélan blokir]] saperlu mriksa blokiran.",
        "ipb-blockingself": "Panjenengan arep mblokir panjenengan dhéwé! Panjenengan yakin arep nglakoni kuwi?",
        "ipb-confirmhideuser": "Sampéyan arep mblokir panganggo mawa piranti \"dhelikaké panganggo\" isih murub. Iki bakal nyegah jeneng panganggo ana ing kabèh daptar lan èntri log. Sampéyan yakin arep nglakoni kuwi?",
-       "ipb-edit-dropdown": "Besut jalaraning pamalang",
-       "ipb-unblock-addr": "Ilangna blokir $1",
-       "ipb-unblock": "Ilangna blokir sawijining panganggo utawa alamat IP",
-       "ipb-blocklist": "Ndeleng blokir sing lagi ditrapaké",
+       "ipb-edit-dropdown": "Besut alesané mblokir",
+       "ipb-unblock-addr": "Copot blokiran tumrap $1",
+       "ipb-unblock": "Copot blokiran tumrap jeneng panganggo utawa alamat IP",
+       "ipb-blocklist": "Deleng blokiran sing ana",
        "ipb-blocklist-contribs": "Kontribusi kanggo $1",
        "ipb-blocklist-duration-left": "Kari $1",
-       "unblockip": "Jabel blokir marang alamat IP utawa panganggo",
+       "unblockip": "Copot blokiran panganggo",
        "unblockiptext": "Nggonen formulir ing ngisor iki kanggo mbalèkaké aksès nulis sawijining alamt IP utawa panganggo sing sadurungé diblokir.",
-       "ipusubmit": "Ilangna blokir iki",
+       "ipusubmit": "Copot blokiran iki",
        "unblocked": "Blokir marang [[User:$1|$1]] wis dijabel",
        "unblocked-range": "$1 ora diblokir manèh",
        "unblocked-id": "Blokir $1 wis dijabel",
        "ipblocklist-empty": "Pratélan blokir kosong.",
        "ipblocklist-no-results": "alamat IP utawa panganggo sing disuwun ora diblokir.",
        "blocklink": "palang",
-       "unblocklink": "jabel blokir",
-       "change-blocklink": "owahi blokir",
+       "unblocklink": "copot blokiran",
+       "change-blocklink": "owahi blokiran",
        "contribslink": "sumbangan",
        "emaillink": "kirim layang-èl",
        "autoblocker": "Panjenengan otomatis dipun-blok amargi nganggé alamat protokol internet (IP) ingkang sami kaliyan \"[[User:$1|$1]]\". Alesanipun $1 dipun blok inggih punika \"'''$2'''\"",
        "revertmove": "balèkaké",
        "delete_and_move_text": "Kaca jujugan \"[[:$1]]\" wis ana.\nApa sampéyan kersa mbusak iku supaya kacané bisa dilih?",
        "delete_and_move_confirm": "Ya, busak kaca iku.",
-       "delete_and_move_reason": "Dibusak kanggo jaga-jaga ananing pamindhahan saka \"[[$1]]\"",
+       "delete_and_move_reason": "Dibusak kanggo sarana ngalihaké saka \"[[$1]]\"",
        "selfmove": "Sesirah sumber lan tujuan padha;\nora bisa ngalih nyang tujuan sing padha.",
        "immobile-source-namespace": "Ora bisa mindhahaké kaca jroning bilik jeneng \"$1\"",
        "immobile-target-namespace": "Ora bisa mindhahaké kaca menyang bilik jeneng \"$1\"",
-       "immobile-target-namespace-iw": "Pranala interwiki dudu target sing sah kanggo pamindhahan kaca.",
+       "immobile-target-namespace-iw": "Pranala interwiki dudu tujuan sing trep tumrap pangalihé kaca.",
        "immobile-source-page": "Kaca iki ora bisa dilih-lih.",
        "immobile-target-page": "Ora bisa mindhahaké menyang irah-irahan tujuan kasebut.",
        "bad-target-model": "Tujuan sing diarepaké nganggo gagrag isi sing béda. Ora bisa ngganti $1 dadi $2.",
        "imagenocrossnamespace": "Ora bisa mindhahaké gambar menyang bilik nama non-gambar",
-       "nonfile-cannot-move-to-file": "Ora bisa mindhahaké non-berkas nèng bilik jeneng berkas",
+       "nonfile-cannot-move-to-file": "Ora bisa ngalih non-barkas nyang mandala aran barkas.",
        "imagetypemismatch": "Èkstènsi anyar berkas ora cocog karo jenisé",
-       "imageinvalidfilename": "Jeneng berkas tujuan ora sah",
+       "imageinvalidfilename": "Jeneng barkas tujuan ora trep.",
        "fix-double-redirects": "Dandani kabèh pangalihan gandha sing tumuju marang irah-irahan asli",
        "move-leave-redirect": "Ungkur kaca alihan",
        "protectedpagemovewarning": "'''Pènget:''' Kaca iki wis dikunci dadi mung panganggo sing nduwé hak aksès pangurus baé sing bisa mindhahaké.\nCathetan entri pungkasan disadiakaké ing ngisor kanggo referensi:",
-       "semiprotectedpagemovewarning": "'''Cathetan:''' Kaca iki wis direksa saéngga mung panganggo kadhaptar sing bisa mindhahaké.\nEntri cathetan pungkasan disadiakake ing ngisor kanggo referensi:",
+       "semiprotectedpagemovewarning": "<strong>Cathetan:</strong> Kaca iki wis direksa saéngga mung panganggo kadhaftar sing bisa ngalihaké.\nÈntri log pungkasan cumepak ing ngisor kanggo rujukan:",
        "move-over-sharedrepo": "[[:$1]] ana ing panyimpenan barengan. Ngalih barkas mawa sesirah iki bakal ngamblegi barkas barengan iku.",
        "file-exists-sharedrepo": "Jeneng berkas kapilih wis ana kanggo nèng panyimpenan bebarengan.\nMangga pilih jeneng liya.",
        "export": "Ekspor kaca",
        "export-addnstext": "Nambahaké kaca saka bilik jeneng:",
        "export-addns": "Tambah",
        "export-download": "Simpen minangka berkas",
-       "export-templates": "Kalebu cithakan-cithakan",
+       "export-templates": "Lebokaké cithakan",
        "export-pagelinks": "Lebokaké kaca sing kagayut nyang jeroning:",
        "export-manual": "Tambah kaca kanthi manual:",
        "allmessages": "Layang sistem",
        "importunknownsource": "Sumber impor ora ditepungi",
        "importcantopen": "Berkas impor ora bisa dibukak",
        "importbadinterwiki": "Pranala interwiki rusak",
-       "importsuccess": "Impor suksès!",
+       "importsuccess": "Ngimpor rampung!",
        "importnosources": "Ora ana sumber impor transwiki sing wis digawé lan pangunggahan sajarah sacara langsung wis dinon-aktifaké.",
        "importnofile": "Ora ana berkas sumber impor sing wis diunggahaké.",
        "importuploaderrorsize": "Pangunggahan berkas impor gagal. Ukuran berkas ngluwihi ukuran sing diidinaké.",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|révisi}} diimpor saka $2",
        "javascripttest": "Panjajalan JavaScript",
        "javascripttest-pagetext-unknownaction": "Tumindak ora dingertèni: $1",
-       "javascripttest-qunit-intro": "Delok [dhokumèntasi panjajalan $1] nèng mediawiki.org.",
-       "tooltip-pt-userpage": "Kaca {{GENDER:|panganggoning sampéyan}}",
+       "javascripttest-qunit-intro": "Deleng [$1 dhokumèntasi uji-coba] ing mediawiki.org.",
+       "tooltip-pt-userpage": "Kaca {{GENDER:|panganggoné panjenengan}}",
        "tooltip-pt-anonuserpage": "Kaca panganggo IP panjenengan",
        "tooltip-pt-mytalk": "Kaca gegunemaning {{GENDER:|sampéyan}}",
        "tooltip-pt-anontalk": "Parembug ing besutan-besutan saka alamat IP iki",
        "tooltip-pt-preferences": "Pilih-pilihaning {{GENDER:|sampéyan}}",
        "tooltip-pt-watchlist": "Pratélaning kaca sing sampéyan awasi owah-owahané",
-       "tooltip-pt-mycontris": "Pratélaning sumbanganing {{GENDER:|sampéyan}}",
+       "tooltip-pt-mycontris": "Pratélané sumbangané {{GENDER:|panjenengan}}",
        "tooltip-pt-anoncontribs": "Pratélan besutané alamat IP iki",
        "tooltip-pt-login": "Panjenengan prayogané mlebu log, sanadyan ora kudu",
        "tooltip-pt-login-private": "Panjenengan kudu mlebu log supaya bisa nganggo wiki iki",
        "tooltip-t-recentchangeslinked": "Owah-owahan anyar saka kaca-kaca sing nggayut kaca iki",
        "tooltip-feed-rss": "''RSS feed'' kanggo kaca iki",
        "tooltip-feed-atom": "''Atom feed'' kanggo kaca iki",
-       "tooltip-t-contributions": "Pratélaning sumbangan {{GENDER:$1|panganggo iki}}",
+       "tooltip-t-contributions": "Pratélané sumbangané {{GENDER:$1|panganggo iki}}",
        "tooltip-t-emailuser": "Kirimi layang-èl nyang {{GENDER:$1|panganggo iki}}",
        "tooltip-t-info": "Katerangan liyané ngenani kaca iki",
        "tooltip-t-upload": "Unggah barkas",
        "tooltip-t-permalink": "Pranala permanèn saka owahan iki",
        "tooltip-ca-nstab-main": "Deleng kaca isi",
        "tooltip-ca-nstab-user": "Deleng kaca panganggo",
-       "tooltip-ca-nstab-media": "Ndeleng kaca média",
+       "tooltip-ca-nstab-media": "Deleng kaca médhia",
        "tooltip-ca-nstab-special": "Iki kaca mirunggan lan ora bisa dibesut",
        "tooltip-ca-nstab-project": "Deleng kaca proyèk",
        "tooltip-ca-nstab-image": "Deleng kaca barkas",
-       "tooltip-ca-nstab-mediawiki": "Ndeleng pesenan sistém",
+       "tooltip-ca-nstab-mediawiki": "Deleng layang sistem",
        "tooltip-ca-nstab-template": "Deleng cithakan",
        "tooltip-ca-nstab-help": "Mirsani kaca pitulung",
        "tooltip-ca-nstab-category": "Deleng kaca kategori",
        "imagelisttext": "Ing ngisor iki kapacak daftar '''$1''' {{PLURAL:$1|berkas|berkas}} sing diurutaké $2.",
        "newimages-summary": "Kaca astaméwa utawa kusus iki nuduhaké daftar berkas anyar dhéwé sing diunggahaké.",
        "newimages-legend": "Filter",
-       "newimages-label": "Jeneng berkas (utawa sapérangan seka jeneng berkas):",
+       "newimages-label": "Jeneng barkas (utawa pérangané):",
        "noimages": "Ora ana sing dideleng.",
        "ilsubmit": "Golek",
        "bydate": "miturut tanggal",
        "exif-gpsdifferential": "Korèksi diférènsial GPS",
        "exif-jpegfilecomment": "Tanggepan berkas JPEG",
        "exif-keywords": "Tembung kunci",
-       "exif-worldregioncreated": "Dhaèrahing donya ing endi gambar dijupuk",
-       "exif-countrycreated": "Nagara ing endi gambar dijupuk",
-       "exif-countrycodecreated": "Kodhe kanggo nagara ing endi gambar dijupuk",
+       "exif-worldregioncreated": "Tlatah ing donya anggoné gambaré dijupuk",
+       "exif-countrycreated": "Nagara anggoné gambaré dijupuk",
+       "exif-countrycodecreated": "Kodhe nagara anggoné gambaré dijupuk",
        "exif-provinceorstatecreated": "Propinsi utawa nagara bagéyan ing endi gambar dujupuk",
-       "exif-citycreated": "Kutha ing endi gambar dijupuk",
-       "exif-sublocationcreated": "Dhaérahing kutha ing endi gambar dijupuk",
+       "exif-citycreated": "Kutha anggoné gambaré dijupuk",
+       "exif-sublocationcreated": "Laladan ing kutha anggoné gambaré dijupuk",
        "exif-worldregiondest": "Wewengkon dunya katampilaké",
        "exif-countrydest": "Nagara katampilaké",
        "exif-countrycodedest": "Kodhe nagara katampilaké",
        "confirmemail_success": "Alamat e-mail panjenengan wis dikonfirmasi.\nSaiki panjenengan bisa log mlebu lan wiwit nganggo wiki.",
        "confirmemail_loggedin": "Alamat e-mail panjenengan wis dikonfirmasi.",
        "confirmemail_subject": "Konfirmasi alamat e-mail {{SITENAME}}",
-       "confirmemail_body": "Sawijining wong, mbokmenawa panjenengan dhéwé, saka alamat IP $1, wis ndaftaraké akun \"$2\" mawa alamat e-mail iki ing {{SITENAME}}. Bukaka pranala iki ing panjlajah wèb panjenengan.\n\n$3\n\nYèn panjenengan *ora tau* ndaftar akun iki, tutna pranala ing ngisor iki kanggo mbatalaké konfirmasi alamat e-mail:\n\n$5\n\nKonfirmasi iki bakal kadaluwarsa ing $4.",
-       "confirmemail_body_changed": "Sawijining wong, mbokmenawa panjenengan dhéwé, saka alamat IP $1, wis ndaftaraké akun \"$2\" mawa alamat e-mail iki ing {{SITENAME}}. Bukaka pranala iki ing panjlajah wèb panjenengan.\n\n$3\n\nYèn panjenengan *ora tau* ndaftar akun iki, tutna pranala ing ngisor iki kanggo mbatalaké konfirmasi alamat e-mail:\n\n$5\n\nKonfirmasi iki bakal kadaluwarsa ing $4.",
+       "confirmemail_body": "Ana wong, bokmanawa panjenengan, saka alamat IP $1, wis ndhaftar kanthi akun \"$2\" mawa alamat layang-èl iki ing {{SITENAME}}.\n\nSaperlu ngonfirmasi yèn akun iki temenan duwèké panjenengan lan ngaktivasi fitur layang-èl ing {{SITENAME}}, bukaken pranala iki ing pangluruné panjenengan:\n\n$3\n\nYèn panjenengan *ora tau* ndhaftar mawa akun iki, turuten pranala ngisor iki saperlu murungaké konfirmasi lumantar alamat layang-èl iki:\n\n$5\n\nKodhe konfirmasi iki bakal kadaluwarsa nalika $4.",
+       "confirmemail_body_changed": "Ana wong, bokmanawa panjenengan, saka alamat IP $1, wis ngganti alamat layang-èl ing akun \"$2\" dadi nganggo alamat iki ing {{SITENAME}}. \n\nSaperlu ngonfirmasi yèn akun iki temenan duwèké panjenengan, bukaken pranala iki ing pangluruné panjenengan:\n\n$3\n\nYèn akun iku *dudu* duwèké panjenengan, turuten pranala iki saperlu murungaké konfirmasi lumantar alamat layang-èl iki:\n\n$5\n\nKodhe konfirmasi iki bakal kadaluwarsa nalika $4.",
        "confirmemail_body_set": "Sawijining wong, mbokmenawa panjenengan dhéwé, saka alamat IP $1, wis ndaftaraké akun \"$2\" mawa alamat e-mail iki ing {{SITENAME}}. Bukaka pranala iki ing panjlajah wèb panjenengan.\n\n$3\n\nYèn panjenengan *ora tau* ndaftar akun iki, tutna pranala ing ngisor iki kanggo mbatalaké konfirmasi alamat e-mail:\n\n$5\n\nKonfirmasi iki bakal kadaluwarsa ing $4.",
        "confirmemail_invalidated": "Konfirmasi alamat layang-èl wurung",
        "invalidateemail": "Wurung konfirmasi layang-èl",
        "imgmultigo": "Golèk!",
        "imgmultigoto": "Lungaa menyang kaca $1",
        "img-lang-default": "(basa gawan)",
-       "img-lang-info": "Dadekna gambar iki ing $1, $2",
-       "img-lang-go": "Nuju",
+       "img-lang-info": "Olah gambar iki ing $1. $2",
+       "img-lang-go": "Mangkat",
        "ascending_abbrev": "unggah",
        "descending_abbrev": "mudhun",
        "table_pager_next": "Kaca sabanjuré",
        "version": "Versi",
        "version-extensions": "Èkstènsi sing wis diinstalasi",
        "version-skins": "Ules sing dipasang",
-       "version-specialpages": "Kaca astaméwa (kaca kusus)",
+       "version-specialpages": "Kaca mirunggan",
        "version-parserhooks": "Canthèlan parser",
        "version-variables": "Variabel",
        "version-antispam": "Pambendhung spam",
        "redirect-not-exists": "Nilai ora ditemokaké",
        "fileduplicatesearch": "Golèk berkas duplikat",
        "fileduplicatesearch-summary": "Golèk duplikat berkas adhedhasar biji hash-é.",
-       "fileduplicatesearch-filename": "Jeneng berkas:",
+       "fileduplicatesearch-filename": "Jeneng barkas:",
        "fileduplicatesearch-submit": "Golèk",
        "fileduplicatesearch-info": "$1 × $2 piksel<br />Ukuran berkas: $3<br />Tipe MIME: $4",
        "fileduplicatesearch-result-1": "Berkas \"$1\" ora duwé duplikat idèntik.",
        "fileduplicatesearch-result-n": "Berkas \"$1\" ora ndarbèni {{PLURAL:$2|1 duplikat idèntik|$2 duplikat idèntik}}.",
-       "fileduplicatesearch-noresults": "Ora ana berkas mawa jeneng \"$1\" ditemokaké.",
+       "fileduplicatesearch-noresults": "Ora tinemu barkas kanthi jeneng \"$1\".",
        "specialpages": "Kaca mirunggan",
        "specialpages-note-top": "Katrangan",
        "specialpages-note": "* Kaca mirunggan sedhengan.\n* <span class=\"mw-specialpagerestricted\">Kaca mirunggan winatesan.</span>",
        "specialpages-group-maintenance": "Lapuran pangopènan",
-       "specialpages-group-other": "Kaca-kaca astaméwa liyané",
+       "specialpages-group-other": "Kaca mirunggan liyané",
        "specialpages-group-login": "Mlebu log / nggawé akun",
        "specialpages-group-changes": "Owah-owahan pungkasan lan log",
        "specialpages-group-media": "Lapuran média lan pangunggahan",
        "revdelete-content-unhid": "kontèn dituduhaké",
        "revdelete-summary-unhid": "tingkesaning besutan ora kadhelikaké",
        "revdelete-uname-unhid": "jeneng panganggo dituduhaké",
-       "revdelete-restricted": "rèstriksi ditrapaké marang para opsis",
+       "revdelete-restricted": "watesan sing dicakaké marang pangurus",
        "revdelete-unrestricted": "rèstriksi marang para opsis dijabel",
        "logentry-block-block": "$1 {{GENDER:$2|mblokir}} {{GENDER:$4|$3}} kanthi wektu kadaluwarsa $5 $6",
        "logentry-block-unblock": "$1 {{GENDER:$2|nyopot blokirané}} {{GENDER:$4|$3}}",
index ba52881..7dc5060 100644 (file)
        "anontalk": "განხილვა",
        "navigation": "ნავიგაცია",
        "and": "&#32;და",
-       "qbfind": "მოძებნე",
-       "qbbrowse": "გადახედე",
-       "qbedit": "რედაქტირება",
-       "qbpageoptions": "ეს გვერდი",
-       "qbmyoptions": "ჩემი გვერდები",
        "faq": "ხშირი შეკითხვები",
-       "faqpage": "Project:ხშირი შეკითხვები",
        "actions": "მოქმედებები",
        "namespaces": "სახელთა სივრცე",
        "variants": "ვარიანტები",
        "edit-local": "ლოკალური აღწერის რედაქტირება",
        "create": "შექმნა",
        "create-local": "ლოკალური აღწერის დამატება",
-       "editthispage": "გვერდის რედაქტირება",
-       "create-this-page": "ამ გვერდის შექმნა",
        "delete": "წაშლა",
-       "deletethispage": "გვერდის წაშლა",
-       "undeletethispage": "ამ გვერდის აღდგენა",
        "undelete_short": "გააუქმე წაშლა {{PLURAL:$1|ერთი რედაქტირება|$1 რედაქტირება}}",
        "viewdeleted_short": "{{PLURAL:$1|წაშლილი რედაქტირების|$1 წაშლილი რედაქტირებების}} ხილვა",
        "protect": "დაბლოკე",
        "protect_change": "შეცვლა",
-       "protectthispage": "დაბლოკე ეს გვერდი",
        "unprotect": "დაცვის შეცვლა",
-       "unprotectthispage": "შეცვალე ამ გვერდის დაცვის დონე",
        "newpage": "ახალი გვერდი",
-       "talkpage": "მოცემული გვერდის განხილვა",
        "talkpagelinktext": "განხილვა",
        "specialpage": "სპეციალური გვერდი",
        "personaltools": "პირადი ხელსაწყოები",
-       "articlepage": "სტატიის ნახვა",
        "talk": "განხილვა",
        "views": "გადახედვა",
        "toolbox": "ხელსაწყოები",
        "tool-link-userrights": "{{GENDER:$1|მომხმარებლის}} ჯგუფების შეცვლა",
        "tool-link-userrights-readonly": "{{GENDER:$1|მომხმარებლის}} ჯგუფების ხილვა",
        "tool-link-emailuser": "{{GENDER:$1|მომხმარებლისთვის}} ი-მეილის მიწერა",
-       "userpage": "გადახედე მომხმარებლის გვერდს",
-       "projectpage": "დაათვალიერე პროექტის გვერდი",
        "imagepage": "ფაილის გვერდის ნახვა",
        "mediawikipage": "გადახედე შეტყობინების გვერდს",
        "templatepage": "გადახედე თარგის გვერდს",
        "createacct-another-submit": "ანგარიშის შექმნა",
        "createacct-continue-submit": "განაგრძე ანგარიშის შექმნა",
        "createacct-another-continue-submit": "განაგრძე ანგარიშის შექმნა",
-       "createacct-benefit-heading": "{{SITENAME}} შექმნილია თქვენნაირი ადამიანების მიერ.",
+       "createacct-benefit-heading": "{{SITENAME}} შექმნილია თქვენნაირი ადამიანების მიერ",
        "createacct-benefit-body1": "{{PLURAL:$1|რედაქტირება|რედაქტირება}}",
        "createacct-benefit-body2": "{{PLURAL:$1|გვერდი|გვერდი}}",
        "createacct-benefit-body3": "ბოლო {{PLURAL:$1|რედაქტორი|რედაქტორი}}",
        "mw-widgets-titleinput-description-redirect": "გადამისამართება $1-ზე",
        "mw-widgets-categoryselector-add-category-placeholder": "კატეგორიის დამატება...",
        "mw-widgets-usersmultiselect-placeholder": "კიდევ დამატება...",
+       "date-range-from": "თარიღიდან:",
+       "date-range-to": "თარიღით:",
        "sessionmanager-tie": "შეუძლებელია მრავალი მოთხოვნის ავთენთიფიკაციის ტიპების გაერთიანება: $1.",
        "sessionprovider-generic": "$1 სესიები",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "cookie-სთან დაკავშირებული სესიები",
index 1ef84c4..9522e03 100644 (file)
@@ -58,7 +58,7 @@
        "tog-ccmeonemails": "ផ្ញើច្បាប់ចម្លង​អ៊ីមែលដែលខ្ញុំផ្ញើទៅកាន់អ្នកប្រើប្រាស់ផ្សេងទៀតមកខ្ញុំខ្លួនឯងផងដែរ",
        "tog-diffonly": "កុំបង្ហាញខ្លឹមសារទំព័រនៅពីក្រោមតារាងប្រៀបធៀបចំណុចខុសគ្នា",
        "tog-showhiddencats": "បង្ហាញចំណាត់ថ្នាក់ក្រុមដែលត្រូវបានលាក់",
-       "tog-norollbackdiff": "á\9e\94á\9f\86á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85â\80\8bá\9e\97á\9e¶á\9e\96â\80\8bខុស​គ្នា​បន្ទាប់​ពី​អនុវត្តការ​ស្ដារវិញ",
+       "tog-norollbackdiff": "á\9e\80á\9e»á\9f\86á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e\97á\9e¶á\9e\96ខុស​គ្នា​បន្ទាប់​ពី​អនុវត្តការ​ស្ដារវិញ",
        "tog-useeditwarning": "សូមព្រមាន​ខ្ញុំ​ ពេលដែលខ្ញុំ​ចាកចេញ​ពី​ទំព័រ​កែប្រែដោយមិន​បានរក្សា​ទុកបន្លាស់ប្ដូរ​នានា​",
        "tog-prefershttps": "ប្រើប្រាស់ការតភ្ជាប់ដែលមានសុវត្ថិភាពជានិច្ចពេលកត់ឈ្មោះចូល",
        "underline-always": "ជានិច្ច",
        "anontalk": "ការ​ពិភាក្សា",
        "navigation": "ការណែនាំ",
        "and": "&#32;និង",
-       "qbfind": "ស្វែងរក",
-       "qbbrowse": "រាវរក",
-       "qbedit": "កែប្រែ",
-       "qbpageoptions": "ទំព័រនេះ",
-       "qbmyoptions": "ទំព័ររបស់ខ្ញុំ",
        "faq": "សំណួរដែលសួរញឹកញាប់",
-       "faqpage": "Project:សំណួរដែលសួរញឹកញាប់",
        "actions": "សកម្មភាព​",
        "namespaces": "លំហឈ្មោះ",
        "variants": "សណ្ដាន",
        "edit-local": "កែប្រែចំណារពន្យល់ដើម",
        "create": "បង្កើត",
        "create-local": "ចំណារពន្យល់ដើម",
-       "editthispage": "កែប្រែទំព័រនេះ",
-       "create-this-page": "បង្កើតទំព័រនេះ",
        "delete": "លុបចោល",
-       "deletethispage": "លុបទំព័រនេះចោល",
-       "undeletethispage": "ឈប់លុបទំព័រនេះ",
        "undelete_short": "ឈប់លុប{{PLURAL:$1|កំណែប្រែមួយ|កំណែប្រែចំនួន$1}}វិញ",
        "viewdeleted_short": "មើល{{PLURAL:$1|កំណែប្រែមួយដែលត្រូវបានលុបចោល|កំណែប្រែចំនួន $1 ដែលត្រូវបានលុបចោល}}",
        "protect": "ការពារ",
        "protect_change": "ផ្លាស់ប្តូរ",
-       "protectthispage": "ការពារទំព័រនេះ",
        "unprotect": "ប្ដូរការការពារ",
-       "unprotectthispage": "ផ្លាស់ប្ដូរការការពារទំព័រនេះ",
        "newpage": "ទំព័រថ្មី",
-       "talkpage": "ពិភាក្សាទំព័រនេះ",
        "talkpagelinktext": "ការពិភាក្សា",
        "specialpage": "ទំព័រពិសេស",
        "personaltools": "ឧបករណ៍ផ្ទាល់ខ្លួន",
-       "articlepage": "មើលខ្លឹមសារទំព័រ​",
        "talk": "ការពិភាក្សា",
        "views": "គំហើញ",
        "toolbox": "​ឧបករណ៍",
-       "userpage": "មើលទំព័រអ្នកប្រើប្រាស់",
-       "projectpage": "មើល​ទំព័រគម្រោង",
        "imagepage": "មើល​ទំព័រ​ឯកសារ",
        "mediawikipage": "មើល​ទំព័រសារ",
        "templatepage": "មើលទំព័រគំរូ",
        "createaccount-title": "ការបង្កើតគណនីសម្រាប់{{SITENAME}}",
        "createaccount-text": "មានអ្នកផ្សេងបានបង្កើតគណនីជាឈ្មោះ \"$2\" លើ{{SITENAME}}($4) ព្រមទាំងពាក្យសំងាត់ \"$3\" ដោយប្រើអាសយដ្ឋានអ៊ីមែលរបស់អ្នកហើយ។\n\nអ្នកគួរតែកត់ឈ្មោះចូលហើយផ្លាស់ប្តូរពាក្យសំងាត់របស់អ្នកនៅពេលនេះ។\n\nអ្នកអាចបំភ្លេចពីសារនេះ ប្រសិនបើ​គណនីនេះត្រូវបានបង្កើតដោយមានបញ្ហា។",
        "login-throttled": "អ្នកបានកត់ឈ្មោះចូលមិនបានសម្រេចច្រើនដងពេកហើយ។​\n\nសូមរងចាំរយៈពេល$1 មុនពេលសាកល្បងម្ដងទៀត។",
-       "login-abort-generic": "á\9e¢á\9f\92á\9e\93á\9e\80á\9e\85á\9e»á\9f\87á\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bá\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\98á\9f\92á\9e\9aá\9f\81á\9e\85á\9e\91á\9f\81á\9f\94 á\9e\80á\9e¶á\9e\9aá\9e\85á\9e»á\9f\87ឈ្មោះចូលត្រូវបានបោះបង់។",
+       "login-abort-generic": "á\9e¢á\9f\92á\9e\93á\9e\80á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bá\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\98á\9f\92á\9e\9aá\9f\81á\9e\85á\9e\91á\9f\81á\9f\94 á\9e\80á\9e¶á\9e\9aá\9e\80á\9e\8fá\9f\8bឈ្មោះចូលត្រូវបានបោះបង់។",
        "login-migrated-generic": "គណនីរបស់អ្នកត្រូវបានផ្ទេរចេញហើយ ហើយអត្តនាមរបស់អ្នកក៏គ្មាននៅក្នុងវិគីនេះតទៅទៀតដែរ។",
        "loginlanguagelabel": "ភាសា៖ $1",
        "createacct-another-realname-tip": "អ្នកអាចផ្ដល់ឈ្មោះពិតរបស់អ្នកក៏បានមិនផ្ដល់ក៏បាន។ បើអ្នកផ្ដល់ឱ្យ វានឹងត្រូវបានប្រើប្រាស់់ដើម្បីបញ្ជាក់ភាពជាម្ចាស់​លើការរួមចំណែក​នានា​របស់អ្នក។",
        "selfredirect": "<strong>ប្រយ័ត្ន៖</strong> អ្នកកំពុងតែបញ្ជូនបន្តទំព័រនេះទៅកាន់ទំព័រខ្លួនឯង។\n\nប្រហែលជាអ្នកបានផ្ដល់ទំព័រគោលដៅសម្រាប់បញ្ជូនបន្តខុខ ឬប្រហែលជាអ្នកកំពុងកែប្រែទំព័រខុស។\nបើសិនជាអ្នកចុច \"$1\" ម្ដងទៀត តំណភ្ជាប់បញ្ជូនបន្តនឹងត្រូវបង្កើតឡើងបែបនេះ។",
        "missingcommenttext": "សូមវាយបញ្ចូលយោបល់មួយនៅខាងក្រោម។",
        "missingcommentheader": "'''រំលឹក៖''' អ្នកមិនទាន់បានផ្ដល់ប្រធានបទរបស់មតិយោបល់នេះទេ។\nបើសិនជាអ្នកចុច \"$1\" ម្ដងទៀត នោះកំណែប្រែរបស់អ្នកនឹងត្រូវរក្សាទុកដោយគ្មានវា។",
-       "summary-preview": "ការមើលជាមុនរបស់ចំណារពន្យល់:",
+       "summary-preview": "ការមើលជាមុនរបស់ចំណារពន្យល់",
        "subject-preview": "ការមើលជាមុនរបស់ប្រធានបទ៖",
        "previewerrortext": "មានបញ្ហាកើតឡើងពេលព្យាយាមើលជាមុនបន្លាស់ប្ដូររបស់អ្នក។",
        "blockedtitle": "អ្នកប្រើនេះត្រូវបានហាមឃាត់ហើយ",
        "searchprofile-advanced-tooltip": "ស្វែងរកក្នុងប្រភេទកំណត់ដោយអ្នកប្រើប្រាស់",
        "search-result-size": "$1({{PLURAL:$2|១ពាក្យ|$2ពាក្យ}})",
        "search-result-category-size": "{{PLURAL:$1|សមាជិកម្នាក់|សមាជិក$1នាក់}} ({{PLURAL:$2|កូនចំណាត់ថ្នាក់ក្រុម១|$2 កូនចំណាត់ថ្នាក់ក្រុម}}, {{PLURAL:$3|1 ឯកសារ|$3 ឯកសារ}})",
-       "search-redirect": "(បញ្ជូនបន្ត $1)",
+       "search-redirect": "(បញ្ជូនបន្តពី $1)",
        "search-section": "(ផ្នែក $1)",
        "search-category": "(ចំណាត់ថ្នាក់ក្រុម $1)",
        "search-file-match": "(ខ្លឹមសារឯកសារត្រូវគ្នា)",
        "search-suggest": "ប្រហែលជាអ្នកចង់រក៖ $1",
        "search-rewritten": "បង្ហាញលទ្ធផលពីការស្វែងរក $1។ ស្វែងរក $2 ជំនួសវិញ។",
-       "search-interwiki-caption": "គម្រោងជាបងប្អូន",
+       "search-interwiki-caption": "á\9e\9bá\9e\91á\9f\92á\9e\92á\9e\95á\9e\9bá\9e\9fá\9f\92á\9e\9cá\9f\82á\9e\84á\9e\9aá\9e\80á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\82á\9e\98á\9f\92á\9e\9aá\9f\84á\9e\84á\9e\87á\9e¶á\9e\94á\9e\84á\9e\94á\9f\92á\9e¢á\9e¼á\9e\93",
        "search-interwiki-default": "លទ្ធផលពី$1៖",
        "search-interwiki-more": "(បន្ថែមទៀត)",
        "search-relatedarticle": "ទាក់ទិន",
        "prefs-diffs": "ភាពខុសគ្នា",
        "prefs-help-prefershttps": "ចំណង់ចំណូលចិត្តនេះនឹងមានប្រសិទ្ធិភាពពេលអ្នកកត់ឈ្មោះចូលលើកក្រោយ។",
        "prefswarning-warning": "អ្នកបានកែប្រែចំណង់ចំណូលចិត្តតែមិនទាន់បានរក្សាទុកទេ។ បើសិនជាអ្នកចាកចេញពីទំព័រនេះដោយមិនបានចុច \"$1\" ទេនោះចំណង់ចំណូលចិត្តរបស់អ្នកនឹងមិនត្រូវបន្ទាន់សម័យទេ។",
-       "userrights": "á\9e\80á\9e¶á\9e\9aá\9e\82á\9f\92á\9e\9aá\9e\94á\9f\8bá\9e\82á\9f\92á\9e\9aá\9e\84á\9e\9fá\9e·á\9e\91á\9f\92á\9e\92á\9e·á\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8b",
-       "userrights-lookup-user": "á\9e\82á\9f\92á\9e\9aá\9e\94á\9f\8bá\9e\82á\9f\92á\9e\9aá\9e\84á\9e\80á\9f\92á\9e\9aá\9e»á\9e\98អ្នកប្រើប្រាស់",
+       "userrights": "សិទ្ធិអ្នកប្រើប្រាស់",
+       "userrights-lookup-user": "á\9e\87á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\9aá\9e¾á\9e\9fអ្នកប្រើប្រាស់",
        "userrights-user-editname": "បញ្ចូលអត្តនាម៖",
-       "editusergroup": "á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82ក្រុមអ្នកប្រើប្រាស់",
+       "editusergroup": "á\9e\95á\9f\92á\9e\91á\9e»á\9e\80ក្រុមអ្នកប្រើប្រាស់",
        "editinguser": "ប្ដូរសិទ្ធិរបស់{{GENDER:$1|អ្នកប្រើប្រាស់}} <strong>[[User:$1|$1]]</strong> $2",
-       "userrights-editusergroup": "កែប្រែក្រុមអ្នកប្រើប្រាស់",
-       "saveusergroups": "រក្សាក្រុមអ្នកប្រើប្រាស់ទុក",
+       "userrights-editusergroup": "កែប្រែក្រុម{{GENDER:$1|អ្នកប្រើប្រាស់}}",
+       "saveusergroups": "រក្សាក្រុម{{GENDER:$1|អ្នកប្រើប្រាស់}}ទុក",
        "userrights-groupsmember": "ក្រុមសមាជិកភាព៖",
        "userrights-groupsmember-auto": "សមាជិកស្វ័យប្រវត្តិរបស់៖",
        "userrights-groups-help": "អ្នកអាចប្ដូរក្រុមនានាដែលអ្នកប្រើប្រាស់នេះនៅ៖\n* ប្រអប់ដែលមានគូសធីកមានន័យថាអ្នកប្រើប្រាស់នេះស្ថិតនៅក្នុងនោះរួចហើយ\n* ប្រអប់ដែលគ្មានគូសធីកមានន័យថាអ្នកប្រើប្រាស់នេះមិនស្ថិតនៅក្នុងនោះទេ\n* សញ្ញា * បញ្ជាក់ថាអ្នកមិនអាចប្ដូរក្រុមនោះចេញទេពេលដែលអ្នកបាន​បន្ថែមវាហើយ។",
        "action-deleterevision": "លុបកំណែប្រែនេះចោល",
        "action-deletedhistory": "មើលប្រវត្តិលុបចោលរបស់ទំព័រនេះ",
        "action-browsearchive": "ស្វែងរកទំព័រដែលត្រូវបានលុបចោល",
-       "action-undelete": "ឈប់លុបទំព័រនេះ",
+       "action-undelete": "ឈប់លុបទំព័រ",
        "action-suppressrevision": "ត្រួតពិនិត្យ​និង​ស្ដារ​​កំណែ​ប្រែដែល​លាក់​បាំង",
        "action-suppressionlog": "មើលកំណត់ហេតុឯកជននេះ",
        "action-block": "ហាមឃាត់អ្នកប្រើប្រាស់នេះមិនឱ្យធ្វើការកែប្រែ",
        "importlogpage": "កំណត់ហេតុនៃការនាំចូល",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|កំណែ}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|កំណែ}} ពី $2",
-       "tooltip-pt-userpage": "ទំព័រអ្នកប្រើប្រាស់​របស់អ្នក​",
+       "tooltip-pt-userpage": "ទំព័រ​{{GENDER:|អ្នកប្រើប្រាស់​របស់អ្នក}}",
        "tooltip-pt-mytalk": "ទំព័រពិភាក្សា​របស់អ្នក​",
        "tooltip-pt-anontalk": "ការពិភាក្សាអំពីកំណែប្រែដែល​ធ្វើ​ឡើង​ចេញ​ពីអាសយដ្ឋាន IP នេះ",
        "tooltip-pt-preferences": "ចំណង់ចំណូលចិត្ត",
        "watchlistedit-raw-done": "បញ្ជីតាមដានរបស់អ្នកត្រូវបានធ្វើឱ្យទាន់សម័យហើយ។",
        "watchlistedit-raw-added": "{{PLURAL:$1| ចំណងជើង១បានត្រូវ|$1 ចំណងជើងបានត្រូវ}}ដាក់បន្ថែម៖",
        "watchlistedit-raw-removed": "{{PLURAL:$1|១ចំណងជើងបានត្រូវ|$1ចំណងជើងបានត្រូវ}}ដកចេញ៖",
-       "watchlistedit-clear-title": "á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\98á\9f\92á\9e¢á\9e¶á\9e\8fá\9e\94á\9e\89á\9f\92á\9e\85á\9e¸á\9e\8fá\9e¶á\9e\98á\9e\8aá\9e¶á\9e\93",
+       "watchlistedit-clear-title": "សម្អាតបញ្ចីតាមដាន",
        "watchlistedit-clear-legend": "សម្អាតបញ្ជីតាមដាន",
        "watchlistedit-clear-explain": "ចំណងជើងទាំងអស់នេះនឹងត្រូវលុបចេញពីបញ្ជីតាមដានរបស់អ្នក",
        "watchlistedit-clear-titles": "ចំណងជើង៖",
        "feedback-submit": "ដាក់ស្នើ",
        "feedback-thanks": "សូមអរគុណ! មតិយោបល់របស់អ្នកត្រូវបានដាក់ផ្សាយនៅលើទំព័រ \"[$2 $1]\"។",
        "feedback-thanks-title": "សូមអរគុណ!",
-       "searchsuggest-search": "ស្វែងរក​",
+       "searchsuggest-search": "ស្វែងរក​ក្នុង{{SITENAME}}",
        "searchsuggest-containing": "ដែលមានពាក្យ...",
        "api-error-emptypage": "ការអនុញ្ញាតអោយបង្កើតទំព័រថ្មីដែលគ្មានសរសេរអ្វីទេ",
        "api-error-unknown-warning": "ការព្រមានមិនស្គាល់៖ \"$1 ។",
        "expand_templates_ok": "យល់ព្រម",
        "expand_templates_remove_comments": "ដកចេញ វិចារនានា",
        "expand_templates_preview": "បង្ហាញការមើលជាមុន",
-       "pagelanguage": "á\9e§á\9e\94á\9e\80á\9e\9aá\9e\8eá\9f\8dá\9e\87á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\9aá\9e¾á\9e\9fភាសាទំព័រ",
+       "pagelanguage": "á\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aភាសាទំព័រ",
        "pagelang-language": "ភាសា",
        "pagelang-use-default": "ប្រើភាសាតាមលំនាំដើម",
        "right-pagelang": "ប្ដូរភាសាទំព័រ",
index 969b2e0..53d0098 100644 (file)
        "anontalk": "토론",
        "navigation": "둘러보기",
        "and": ",",
-       "qbfind": "찾기",
-       "qbbrowse": "찾아보기",
-       "qbedit": "편집",
-       "qbpageoptions": "문서 기능",
-       "qbmyoptions": "내 사용자 문서",
        "faq": "자주 묻는 질문",
-       "faqpage": "Project:FAQ",
        "actions": "행위",
        "namespaces": "이름공간",
        "variants": "변수",
        "edit-local": "로컬 설명 편집",
        "create": "만들기",
        "create-local": "로컬 설명 추가",
-       "editthispage": "이 문서 편집하기",
-       "create-this-page": "이 문서 만들기",
        "delete": "삭제",
-       "deletethispage": "이 문서 삭제하기",
-       "undeletethispage": "이 문서를 되살리기",
        "undelete_short": "{{PLURAL:$1|편집 한 개|편집 $1개}} 되살리기",
        "viewdeleted_short": "{{PLURAL:$1|삭제된 편집 한 개|삭제된 편집 $1개}} 보기",
        "protect": "보호",
        "protect_change": "바꾸기",
-       "protectthispage": "이 문서 보호하기",
        "unprotect": "보호 설정 바꾸기",
-       "unprotectthispage": "이 문서의 보호 설정을 바꾸기",
        "newpage": "새 문서",
-       "talkpage": "토론 문서",
        "talkpagelinktext": "토론",
        "specialpage": "특수 문서",
        "personaltools": "개인 도구",
-       "articlepage": "문서 보기",
        "talk": "토론",
        "views": "보기",
        "toolbox": "도구",
        "tool-link-userrights": "{{GENDER:$1|사용자}} 그룹 변경",
        "tool-link-userrights-readonly": "{{GENDER:$1|사용자}} 그룹을 보기",
        "tool-link-emailuser": "이 {{GENDER:$1|사용자}}에게 이메일 보내기",
-       "userpage": "사용자 문서 보기",
-       "projectpage": "프로젝트 문서 보기",
        "imagepage": "파일 문서 보기",
        "mediawikipage": "메시지 문서 보기",
        "templatepage": "틀 문서 보기",
        "rcfilters-filter-watchlist-watched-label": "주시문서 목록에서",
        "rcfilters-filter-watchlist-watched-description": "주시문서 목록의 문서의 변경사항입니다.",
        "rcfilters-filter-watchlist-watchednew-label": "새로운 주시문서 목록 변경사항",
+       "rcfilters-filter-watchlist-watchednew-description": "변경사항이 발생한 이후로 방문한 적이 없는 주시 중인 문서의 변경사항입니다.",
        "rcfilters-filter-watchlist-notwatched-label": "주시문서 목록에서가 아닌",
        "rcfilters-filter-watchlist-notwatched-description": "주시 중인 문서의 변경사항을 제외한 모든 사항입니다.",
        "rcfilters-filtergroup-changetype": "차이 종류",
        "rcfilters-filter-lastrevision-label": "마지막 판",
        "rcfilters-filter-lastrevision-description": "문서의 최근 변경사항입니다.",
        "rcfilters-filter-previousrevision-label": "이전 판",
+       "rcfilters-filter-previousrevision-description": "문서에 대한 최근 변경사항이 아닌 모든 변경사항입니다.",
+       "rcfilters-filter-excluded": "제외됨",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:아님</strong> $1",
+       "rcfilters-view-tags": "태그",
        "rcnotefrom": "아래는 <strong>$3, $4</strong>부터 시작하는 {{PLURAL:$5|바뀜이 있습니다}}. (최대 <strong>$1</strong>개가 표시됨)",
        "rclistfromreset": "날짜 선택 초기화",
        "rclistfrom": "$3 $2부터 시작하는 새로 바뀐 문서 보기",
        "newimages-legend": "필터",
        "newimages-label": "파일 이름 (또는 그 일부분):",
        "newimages-user": "IP 주소 또는 사용자 이름",
+       "newimages-newbies": "새 사용자의 기여만 보기",
        "newimages-showbots": "봇이 올린 것 보기",
        "newimages-hidepatrolled": "점검한 업로드 숨기기",
+       "newimages-mediatype": "미디어 유형:",
        "noimages": "그림이 없습니다.",
        "gallery-slideshow-toggle": "섬네일 토글",
        "ilsubmit": "검색",
        "tags-create-reason": "이유:",
        "tags-create-submit": "만들기",
        "tags-create-no-name": "태그 이름을 지정해야 합니다.",
-       "tags-create-invalid-chars": "í\83\9cê·¸ ì\9d´ë¦\84ì\9d\80 ì½¤ë§\88 (<code>,</code>)ë\82\98 ì\8a¬ë\9e\98ì\8b\9c (<code>/</code>)를 포함할 수 없습니다.",
+       "tags-create-invalid-chars": "í\83\9cê·¸ ì\9d´ë¦\84ì\9d\80 ì\89¼í\91\9c(<code>,</code>), í\8c\8cì\9d´í\94\84(<code>|</code>) ë\98\90ë\8a\94 ì\8a¬ë\9e\98ì\8b\9c(<code>/</code>)를 포함할 수 없습니다.",
        "tags-create-invalid-title-chars": "태그 이름은 문서 제목에 사용할 수 없는 이름으로는 쓸 수 없습니다.",
        "tags-create-already-exists": "\"$1\" 태그가 이미 존재합니다.",
        "tags-create-warnings-above": "태그 \"$1\"을 생성하려고 하였으나 {{PLURAL:$2|오류}}가 발생하였습니다.",
        "gotointerwiki-invalid": "지정된 제목이 올바르지 않습니다.",
        "gotointerwiki-external": "다른 웹사이트 [[$2]]을(를) 방문하기 위해, {{SITENAME}}을(를) 떠나려고 합니다.\n\n'''[$1 $1(으)로 계속 진행]'''",
        "undelete-cantedit": "이 문서를 편집할 권한이 없으므로 이 문서를 복구할 수 없습니다.",
-       "undelete-cantcreate": "이 이름으로 된 문서가 없고 이 문서를 만들 권한이 없으므로 이 문서를 복구할 수 없습니다."
+       "undelete-cantcreate": "이 이름으로 된 문서가 없고 이 문서를 만들 권한이 없으므로 이 문서를 복구할 수 없습니다.",
+       "pagedata-title": "문서 데이터",
+       "pagedata-text": "이 문서는 문서에 대한 데이터 인터페이스를 제공합니다. 하위 문서 문법을 사용하여 URL에 문서 제목을 지정해 주십시오.\n* 클라이언트의 Accept 헤더에 기반하여 내용이 절충됩니다. 즉, 문서 데이터는 클라이언트가 선호하는 형식으로 제공됩니다.",
+       "pagedata-not-acceptable": "일치하는 형식을 찾을 수 없습니다. 지원하는 MIME 형식: $1",
+       "pagedata-bad-title": "유효하지 않은 제목: $1."
 }
index 44653cd..d9c56ca 100644 (file)
        "anontalk": "Diskussioun",
        "navigation": "Navigatioun",
        "and": "&#32;a(n)",
-       "qbfind": "Fannen",
-       "qbbrowse": "Duerchsichen",
-       "qbedit": "Änneren",
-       "qbpageoptions": "Säitenoptiounen",
-       "qbmyoptions": "Meng Säiten",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Aktiounen",
        "namespaces": "Nummraim",
        "variants": "Varianten",
        "edit-local": "Lokal Beschreiwung änneren",
        "create": "Uleeën",
        "create-local": "Lokal Beschreiwung derbäisetzen",
-       "editthispage": "Dës Säit änneren",
-       "create-this-page": "Dës Säit uleeën",
        "delete": "Läschen",
-       "deletethispage": "Dës Säit läschen",
-       "undeletethispage": "Dës Säit restauréieren",
        "undelete_short": "$1 {{PLURAL:$1|Versioun|Versioune}} restauréieren",
        "viewdeleted_short": "{{PLURAL:$1|Eng geläschte Versioun|$1 geläscht Versioune}} weisen",
        "protect": "Spären",
        "protect_change": "änneren",
-       "protectthispage": "Dës Säit schützen",
        "unprotect": "Spär änneren",
-       "unprotectthispage": "D'Spär vun dëser Säit änneren",
        "newpage": "Nei Säit",
-       "talkpage": "Diskussioun",
        "talkpagelinktext": "Diskussioun",
        "specialpage": "Spezialsäit",
        "personaltools": "Perséinlech Tools",
-       "articlepage": "Säit",
        "talk": "Diskussioun",
        "views": "Affichagen",
        "toolbox": "Geschirkëscht",
        "tool-link-userrights": "{{GENDER:$1|Benotzer}}gruppen änneren",
        "tool-link-userrights-readonly": "{{GENDER:$1|Benotzer}}gruppe weisen",
        "tool-link-emailuser": "{{GENDER:$1|Dëser Benotzerin|Dësem Benotzer}} eng Mail schécken",
-       "userpage": "Benotzersäit",
-       "projectpage": "Meta-Text",
        "imagepage": "Billersäit kucken",
        "mediawikipage": "Säit mat de Message weisen",
        "templatepage": "Schabloune(säit) weisen",
        "rcfilters-activefilters": "Aktiv Filteren",
        "rcfilters-quickfilters": "Gespäichert Filter-Astellungen",
        "rcfilters-quickfilters-placeholder-title": "Nach keng Linke gespäichert",
+       "rcfilters-quickfilters-placeholder-description": "Fir Är Filterastellungen z'änneren a méi spéit nees ze benotzen, klickt op d'Zeeche  fir Lieszeechen (bookmark) am Beräich vun den Aktive Filteren hei drënner.",
        "rcfilters-savedqueries-defaultlabel": "Gespäichert Filteren",
        "rcfilters-savedqueries-rename": "Ëmbenennen",
        "rcfilters-savedqueries-setdefault": "Als Standard festleeën",
        "rcfilters-filter-user-experience-level-experienced-label": "Erfuere Benotzer.",
        "rcfilters-filter-user-experience-level-experienced-description": "Méi wéi 30 Deeg Aktivitéit a méi wéi 500 Ännerungen.",
        "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-bots-description": "Ännerungen déi automatiséiert gemaacht goufen.",
        "rcfilters-filter-humans-label": "Mënsch (kee Bot)",
        "rcfilters-filtergroup-reviewstatus": "Status nokucken",
        "rcfilters-filter-patrolled-label": "Nogekuckt",
        "rcfilters-filter-watchlist-notwatched-label": "Net op der Iwwerwaachungslëscht",
        "rcfilters-filter-watchlist-notwatched-description": "Alles ausser Ännerungen op de Säite vun Ärer Iwwerwaachungslëscht.",
        "rcfilters-filter-pageedits-label": "Säitenännerungen",
+       "rcfilters-filter-pageedits-description": "Ännerungen um Wikiinhalt, an Diskussiounen, a Beschreiwunge vu Kategorien, ...",
        "rcfilters-filter-newpages-label": "Ugeluechte Säiten",
+       "rcfilters-filter-newpages-description": "Ännerunge mat deene nei Säiten ugeluecht ginn.",
        "rcfilters-filter-categorization-label": "Ännerunge vun de Kategorien:",
        "rcfilters-filter-logactions-label": "Protokolléiert Aktiounen",
+       "rcfilters-filter-logactions-description": "Administrativ Aktiounen, Uleeë vu Benotzerkonten, Läsche vu Säiten, Eropgeluede Fichieren, ...",
+       "rcfilters-hideminor-conflicts-typeofchange": "Verschidden Type vu Ännerunge kënnen net als \"kleng\" markéiert ginn, dofir ass dëse Filter a Konflikt mat dësem Typ vun Ännerungsfilteren: $1",
        "rcfilters-filtergroup-lastRevision": "Lescht Versioun",
        "rcfilters-filter-lastrevision-label": "Lescht Versioun",
        "rcfilters-filter-lastrevision-description": "Déi lescht Ännerung op enger Säit",
        "rcfilters-filter-previousrevision-label": "Méi fréi Versiounen",
        "rcfilters-filter-previousrevision-description": "All Ännerungen, déi net déi rezenst Ännerung vun enger Säit sinn.",
+       "rcfilters-filter-excluded": "Ausgeschloss",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:net</strong> $1",
+       "rcfilters-view-tags": "Markéierungen",
        "rcnotefrom": "Hei drënner {{PLURAL:$5|gëtt d'Ännerung|ginn d'Ännerungen}} zanter <strong>$3, $4</strong> (maximal <strong>$1</strong> Ännerunge gi gewisen).",
        "rclistfrom": "Nei Ännerunge vum $3 $2 u weisen",
        "rcshowhideminor": "Kleng Ännerunge $1",
        "tags-create-reason": "Grond:",
        "tags-create-submit": "Uleeën",
        "tags-create-no-name": "Dir musst den Numm vun enger Markéierung (tag) uginn.",
-       "tags-create-invalid-chars": "An den Nimm vun de Markéierungen däerfe keng Kommaen (<code>,</code>) oder schif Strécher (<code>/</code>) sinn.",
+       "tags-create-invalid-chars": "An den Nimm vun de Markéierungen däerfe keng Kommaen (<code>,</code>), riicht Stricher (<code>|</code>), oder schif Strécher (<code>/</code>) sinn.",
        "tags-create-already-exists": "D'Markéierung (tag) ''$1'' gëtt et schonn.",
        "tags-create-warnings-above": "Dës {{PLURAL:$2|Warnung ass|Warnunge si}} beim Versuch d'Markéierung (tag) \"$1\" unzeleeën.",
        "tags-delete-title": "Markéierung (tag) läSchen",
index d0ef772..f829501 100644 (file)
        "anontalk": "Discuscion pe questo addresso IP",
        "navigation": "Navegaçión",
        "and": "&#32;e",
-       "qbfind": "Attrêuva",
-       "qbbrowse": "Navvega",
-       "qbedit": "Cangia",
-       "qbpageoptions": "Opsioîn de 'sta paggina",
-       "qbmyoptions": "E mæ paggine",
        "faq": "Domande frequenti",
-       "faqpage": "Project:Domande frequente",
        "actions": "Açioìn",
        "namespaces": "Namespaces",
        "variants": "Diferense",
        "edit-local": "Modifica descrission locale",
        "create": "Crea",
        "create-local": "Azonzi descrission locale",
-       "editthispage": "Modificâ 'sta pagina",
-       "create-this-page": "Crea 'sta paggina",
        "delete": "Scancella",
-       "deletethispage": "Scassa 'sta paggina",
-       "undeletethispage": "Recuppera sta paggina",
        "undelete_short": "Recuppera {{PLURAL:$1|una revixon|$1 revixoin}}",
        "viewdeleted_short": "{{PLURAL:$1|una modiffica cançelâ|$1 modiffiche cançelæ}}",
        "protect": "Protezi",
        "protect_change": "cangia",
-       "protectthispage": "Proteze 'sta paggina.",
        "unprotect": "Càngia proteçión",
-       "unprotectthispage": "Càngia a proteçión de sta paggina",
        "newpage": "Nêuva pàgina",
-       "talkpage": "Paggina de discuscion",
        "talkpagelinktext": "Ciæti",
        "specialpage": "Pagina speçiâ",
        "personaltools": "Strumenti personâli",
-       "articlepage": "Veddi a voxe",
        "talk": "Discuscion",
        "views": "Vìxite",
        "toolbox": "Arneixi",
        "tool-link-userrights": "Modiffica groppi {{GENDER:$1|utente}}",
        "tool-link-userrights-readonly": "Vixualizza groppi {{GENDER:$1|utente}}",
        "tool-link-emailuser": "Manda un'e-mail a questo {{GENDER:$1|utente}}",
-       "userpage": "Veddi a paggina utente",
-       "projectpage": "Amia a paggina de serviççio",
        "imagepage": "Vizualizza a paggina do file",
        "mediawikipage": "Vizualizza o messaggio",
        "templatepage": "Vizualizza o modello",
        "htmlform-user-not-exists": "'''$1''' o no l'existe.",
        "htmlform-user-not-valid": "<strong>$1</strong> o no l'è un nomme utente vallido.",
        "logentry-delete-delete": "$1 {{GENDER:$2|o l'ha scassou}} a paggina $3",
-       "logentry-delete-restore": "$1 {{GENDER:$2|o|a}} l'ha ripristinou a paggina $3",
+       "logentry-delete-restore": "$1 {{GENDER:$2|o|a}} l'ha ripristinou a paggina $3 ($4)",
        "logentry-delete-event": "$1 {{GENDER:$2|o|a}} l'ha modificou a vixibilitæ de {{PLURAL:$5|un'açion do registro|$5 açioin do registro}} de \"$3\": $4",
        "logentry-delete-revision": "$1 {{GENDER:$2|o l'ha modificou}} a vixibilitæ pe {{PLURAL:$5|una verscion|$5 verscioin}} da paggina $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2|o l'ha modificou}} a vixibilitæ de quarche açion do registro de $3",
index aefa164..bb0588a 100644 (file)
        "anontalk": "Aptarimas",
        "navigation": "Naršymas",
        "and": "&#32;ir",
-       "qbfind": "Paieška",
-       "qbbrowse": "Naršymas",
-       "qbedit": "Taisyti",
-       "qbpageoptions": "Šis puslapis",
-       "qbmyoptions": "Mano puslapiai",
        "faq": "DUK",
-       "faqpage": "Project:DUK",
        "actions": "Veiksmai",
        "namespaces": "Vardų sritys",
        "variants": "Variantai",
        "searcharticle": "Rodyti",
        "history": "Puslapio istorija",
        "history_short": "Istorija",
+       "history_small": "istorija",
        "updatedmarker": "atnaujinta nuo paskutinio mano apsilankymo",
        "printableversion": "Versija spausdinimui",
        "permalink": "Nuolatinė nuoroda",
        "edit-local": "Redaguoti vietos aprašymą",
        "create": "Sukurti",
        "create-local": "Pridėti vietos aprašymą",
-       "editthispage": "Redaguoti šį puslapį",
-       "create-this-page": "Sukurti šį puslapį",
        "delete": "Trinti",
-       "deletethispage": "Ištrinti šį puslapį",
-       "undeletethispage": "Atkurti šį puslapį",
        "undelete_short": "Atkurti $1 {{PLURAL:$1:redagavimą|redagavimus|redagavimų}}",
        "viewdeleted_short": "Peržiūrėti $1 {{PLURAL:$1|ištrintą keitimą|ištrintus keitimus|ištrintų keitimų}}",
        "protect": "Užrakinti",
        "protect_change": "keisti",
-       "protectthispage": "Rakinti šį puslapį",
        "unprotect": "Keisti apsaugą",
-       "unprotectthispage": "Keisti šio puslapio apsaugą",
        "newpage": "Naujas puslapis",
-       "talkpage": "Aptarti šį puslapį",
        "talkpagelinktext": "Aptarimas",
        "specialpage": "Specialusis puslapis",
        "personaltools": "Asmeniniai įrankiai",
-       "articlepage": "Rodyti turinio puslapį",
        "talk": "Aptarimas",
        "views": "Peržiūros",
        "toolbox": "Įrankiai",
        "tool-link-userrights": "Keisti {{GENDER:$1|naudotojo|naudotojos}} grupes",
        "tool-link-userrights-readonly": "Žiūrėti {{GENDER:$1|vartotojo|vartotojos}} grupes",
        "tool-link-emailuser": "Siųsti {{GENDER:$1|šiam naudotojui|šiai naudotojai}} el. laišką",
-       "userpage": "Rodyti naudotojo puslapį",
-       "projectpage": "Rodyti projekto puslapį",
        "imagepage": "Žiūrėti failo puslapį",
        "mediawikipage": "Rodyti pranešimo puslapį",
        "templatepage": "Rodyti šablono puslapį",
        "selfredirect": "<strong>Dėmesio:</strong> Jūs nukreipiate puslapį atgal į jį patį. Galbūt parinkote netinkamą nukreipimo kreipinį arba taisote ne tą straipsnį. \nJei vėl paspausite \"$1\", šis nukreipimas vis vien bus sukurtas.",
        "missingcommenttext": "Prašome įvesti komentarą.",
        "missingcommentheader": "<strong>Priminimas:</strong> Jūs nenurodėte šio komentaro antraštės.\nJei vėl paspausite „$1“, jūsų keitimas bus įrašytas be jo.",
-       "summary-preview": "Komentaro peržiūra:",
+       "summary-preview": "Keitimo santraukos peržiūra:",
        "subject-preview": "Temos peržiūra:",
        "previewerrortext": "Įvyko klaida bandant peržiūrėti jūsų pakeitimus.",
        "blockedtitle": "Naudotojas yra užblokuotas",
        "search-file-match": "(atitinka rinkmenos turinį)",
        "search-suggest": "Galbūt norėjote $1",
        "search-rewritten": "Rodomi $1 rezultatai. Vietoje to ieškoti $2.",
-       "search-interwiki-caption": "Dukteriniai projektai",
+       "search-interwiki-caption": "Dukterinių projektų rezultatai",
        "search-interwiki-default": "Rezultatai iš $1:",
        "search-interwiki-more": "(daugiau)",
+       "search-interwiki-more-results": "daugiau rezultatų",
        "search-relatedarticle": "Susiję",
        "searchrelated": "susiję",
        "searchall": "visi",
        "youremail": "El. paštas:",
        "username": "{{GENDER:$1|Naudotojo vardas}}:",
        "prefs-memberingroups": "{{PLURAL:$1|Grupės|Grupių}} {{GENDER:$2|narys|narė}}:",
+       "group-membership-link-with-expiry": "$1 (iki $2)",
        "prefs-registration": "Registravimosi laikas:",
        "yourrealname": "Tikrasis vardas:",
        "yourlanguage": "Sąsajos kalba:",
        "prefs-help-prefershttps": "Šis nustatymas suveiks kitą kartą prisijungiant.",
        "prefswarning-warning": "Jūs atlikote savo nustatymų pakeitimus, kurie dar nebuvo išsaugoti.\nJei paliksite puslapį nepaspaudę \"$1\", jūsų nustatymai nebus atnaujinti.",
        "prefs-tabs-navigation-hint": "Patarimas: galite naudoti kairės ir dešinės rodyklių ženkliukus, kad skirtukų sąraše judėtumėte tarp skirtukų.",
-       "userrights": "Naudotojų teisių valdymas",
-       "userrights-lookup-user": "Tvarkyti naudotojo grupes",
+       "userrights": "Naudotojų teisės",
+       "userrights-lookup-user": "Pasirinkti vartotoją",
        "userrights-user-editname": "Įveskite naudotojo vardą:",
-       "editusergroup": "Redaguoti {{GENDER:$1|naudotojo}} grupes",
+       "editusergroup": "Įkelti vartotojo grupes",
        "editinguser": "Redaguojamos {{GENDER:$1|naudotojo}} <strong>[[User:$1|$1]]</strong> $2 teisės",
-       "userrights-editusergroup": "Redaguoti naudotojų grupes",
-       "userrights-viewusergroup": "Žiūrėti naudotojo grupes",
+       "viewinguserrights": "Peržiūrimos {{GENDER:$1|naudotojo|naudotojos}} <strong>[[User:$1|$1]]</strong> $2 teisės",
+       "userrights-editusergroup": "Redaguoti {{GENDER:$1|naudotojo|naudotojos}} grupes",
+       "userrights-viewusergroup": "Žiūrėti {{GENDER:$1|naudotojo|naudotojos}} grupes",
        "saveusergroups": "Saugoti {{GENDER:$1|naudotojo}} grupes",
        "userrights-groupsmember": "Narys:",
        "userrights-groupsmember-auto": "Narys automatiškai:",
        "userrights-expiry-current": "Baigiasi $1",
        "userrights-expiry-none": "Nesibaigia",
        "userrights-expiry": "Baigiasi:",
+       "userrights-expiry-existing": "Egzistuojantis galiojimo laikas: $3, $2",
        "userrights-expiry-othertime": "Kitas laikas:",
+       "userrights-expiry-options": "1 diena:1 day,1 savaitė:1 week,1 mėnuo:1 month,3 mėnesiai:3 months,6 mėnesiai:6 months,1 metai:1 year",
+       "userrights-invalid-expiry": "„$1“ grupės galiojimo laikas negalimas.",
+       "userrights-expiry-in-past": "„$1“ grupės galiojimo laikas yra praeityje.",
        "userrights-conflict": "Naudotojo teisių konfliktas! Prašome dar kartą taikyti savo keitimus.",
        "group": "Grupė:",
        "group-user": "Naudotojai",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (taip pat žiūrėkite [[Special:NewPages|naujausių straipsnių sąrašą]])",
        "recentchanges-submit": "Rodyti",
        "rcfilters-activefilters": "Aktyvūs filtrai",
+       "rcfilters-quickfilters": "Išsaugoti filtro nustatymai",
+       "rcfilters-quickfilters-placeholder-title": "Nėra išsaugotų nuorodų",
+       "rcfilters-savedqueries-defaultlabel": "Išsaugoti filtrai",
+       "rcfilters-savedqueries-rename": "Pervadinti",
+       "rcfilters-savedqueries-setdefault": "Nustatyti kaip numatytą",
+       "rcfilters-savedqueries-unsetdefault": "Pašalinti kaip numatytą",
+       "rcfilters-savedqueries-remove": "Pašalinti",
+       "rcfilters-savedqueries-new-name-label": "Pavadinimas",
+       "rcfilters-savedqueries-apply-label": "Išsaugoti nustatymus",
+       "rcfilters-savedqueries-cancel-label": "Atšaukti",
+       "rcfilters-savedqueries-add-new-title": "Išsaugoti dabartinius filtro nustatymus",
+       "rcfilters-restore-default-filters": "Atstatyti numatytuosius filtrus",
        "rcfilters-clear-all-filters": "Valyti visus filtrus",
+       "rcfilters-search-placeholder": "Filtruoti naujausius pakeitimus (naršykite arba pradėkite rašyti)",
        "rcfilters-invalid-filter": "Negalimas filtras",
+       "rcfilters-empty-filter": "Nėra aktyvių filtrų. Rodomi visi indeliai.",
        "rcfilters-filterlist-title": "Filtrai",
        "rcfilters-filterlist-whatsthis": "Kas tai?",
+       "rcfilters-filterlist-feedbacklink": "Pateikite atsiliepimą apie naujus (beta) filtrus",
+       "rcfilters-highlightbutton-title": "Paryškinti rezultatus",
        "rcfilters-highlightmenu-title": "Pasirinkite spalvą",
+       "rcfilters-highlightmenu-help": "Pasirinkite spalvą šio elemento paryškinimui",
        "rcfilters-filterlist-noresults": "Nerastas toks filtras",
+       "rcfilters-noresults-conflict": "Nerasta jokių rezultatų, nes paieškos kriterijai konfliktuoja",
        "rcfilters-filtergroup-registration": "Vartotojo registracija",
        "rcfilters-filter-registered-label": "Registruoti",
+       "rcfilters-filter-registered-description": "Prisijungę redaktoriai.",
        "rcfilters-filter-unregistered-label": "Neregistruoti",
        "rcfilters-filter-unregistered-description": "Redaktoriai, kurie nėra prisijungę.",
        "rcfilters-filter-editsbyself-label": "Jūsų keitimai",
        "rcfilters-filter-editsbyself-description": "Jūsų keitimai.",
        "rcfilters-filter-editsbyother-label": "Kitų keitimai",
-       "rcfilters-filter-editsbyother-description": "Kaitimai sukurti kitų vartotojų (ne jūsų).",
+       "rcfilters-filter-editsbyother-description": "Visi keitimai, išskyrus jūsų.",
        "rcfilters-filtergroup-userExpLevel": "Patirties lygis (tik registruotiems vartotojams)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Naujokai",
+       "rcfilters-filter-user-experience-level-newcomer-description": "Mažiau nei 10 keitimų ir 4 dienų aktyvumo.",
        "rcfilters-filter-user-experience-level-learner-label": "Mokiniai",
        "rcfilters-filter-user-experience-level-experienced-label": "Patyrę vartotojai",
        "rcfilters-filter-user-experience-level-experienced-description": "Daugiau nei 30 dienų veiklos ir 500 keitimų.",
+       "rcfilters-filtergroup-automated": "Automatiniai indeliai",
        "rcfilters-filter-bots-label": "Robotas",
        "rcfilters-filter-bots-description": "Keitimai, atlikti automatinių įrankių.",
        "rcfilters-filter-humans-label": "Žmogaus (ne roboto)",
        "rcfilters-filter-minor-description": "Keitimai, kuriuos autorius pažymėjo kaip mažus.",
        "rcfilters-filter-major-label": "Nesmulkūs pakeitimai",
        "rcfilters-filter-major-description": "Keitimai, nepažymėti kaip smulkūs.",
+       "rcfilters-filtergroup-watchlist": "Puslapiai, įtraukti į stebimų sąrašą",
+       "rcfilters-filter-watchlist-watched-label": "Stebimų sąraše",
+       "rcfilters-filter-watchlist-watched-description": "Pakeitimai puslapiuose, jūsų Stebimųjų sąraše.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nauji Stebimųjų sąrašo pakeitimai",
+       "rcfilters-filter-watchlist-notwatched-label": "Nėra Stebimųjų sąraše",
        "rcfilters-filtergroup-changetype": "Pakeitimo tipas",
        "rcfilters-filter-pageedits-label": "Puslapių keitimai",
        "rcfilters-filter-newpages-label": "Puslapių sukūrimai",
        "rcfilters-filter-newpages-description": "Keitimai, kurie sukuria naujus puslapius.",
        "rcfilters-filter-categorization-label": "Kategorijų pakeitimai",
        "rcfilters-filter-categorization-description": "Įrašai puslapių, kurie yra pridedami ar pašalinami iš kategorijų.",
+       "rcfilters-filter-logactions-label": "Įrašyti veiksmai",
+       "rcfilters-filter-lastrevision-description": "Naujausias puslapio keitimas.",
+       "rcfilters-filter-previousrevision-description": "Visi keitimai, kurie nėra naujausi puslapio keitimai.",
        "rcnotefrom": "Žemiau yra {{PLURAL:$5|pakeitimas|pakeitimai}} pradedant <strong>$3, $4</strong> (rodoma iki <strong>$1</strong> pakeitimų).",
+       "rclistfromreset": "Nustatyti duomenų pasirinkimą iš naujo",
        "rclistfrom": "Rodyti naujus pakeitimus pradedant $3 $2",
        "rcshowhideminor": "$1 smulkius keitimus",
        "rcshowhideminor-show": "Rodyti",
        "unblocked-id": "Blokavimas $1 buvo pašalintas",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] buvo atblokuotas.",
        "blocklist": "Blokuoti naudotojai",
+       "autoblocklist-submit": "Ieškoti",
        "ipblocklist": "Blokuoti naudotojai",
        "ipblocklist-legend": "Rasti užblokuotą naudotoją",
        "blocklist-userblocks": "Slėpti paskyrų blokavimus",
        "api-error-emptypage": "Kurti naujus, tuščius puslapius neleidžiama.",
        "api-error-publishfailed": "Vidinė klaida: serveriui nepavyko paskelbti laikino failo.",
        "api-error-stashfailed": "Vidinė klaida: serveriui nepavyko išsaugoti laikinąjį failą.",
-       "api-error-unknown-warning": "Nežinomas įspėjimas: $1",
+       "api-error-unknown-warning": "Nežinomas įspėjimas: „$1“.",
        "api-error-unknownerror": "Nežinoma klaida: \"$1\"",
        "duration-seconds": "$1 {{PLURAL:$1|sekundė|sekundės|sekundžių}}",
        "duration-minutes": "$1 {{PLURAL:$1|minutė|minutės|minučių}}",
        "pagelang-reason": "Priežastis",
        "pagelang-submit": "Pateikti",
        "pagelang-nonexistent-page": "Puslapis $1 neegzistuoja.",
+       "pagelang-unchanged-language": "Puslapis $1 jau yra $2 kalba.",
+       "pagelang-unchanged-language-default": "$1 puslapis jau yra viki turinio numatyta kalba.",
        "pagelang-db-failed": "Duomenų bazei nepavyko pakeisti puslapio kalbos.",
        "right-pagelang": "Keisti puslapio kalbą",
        "action-pagelang": "keisti puslapio kalbą",
        "mw-widgets-titleinput-description-new-page": "puslapis dar neegzistuoja",
        "mw-widgets-titleinput-description-redirect": "nukreipti į $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Pridėti kategoriją...",
+       "mw-widgets-usersmultiselect-placeholder": "Pridėti daugiau...",
+       "date-range-from": "Nuo datos:",
+       "date-range-to": "Iki datos:",
        "sessionmanager-tie": "Negalima kombinuoti kelių užklausų autentikacijos tipų: $1.",
        "sessionprovider-generic": "$1 sesijos",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sesijos su slapukais",
index 6e1fd5a..7dba2f2 100644 (file)
        "anontalk": "Diskusijas",
        "navigation": "Navigācija",
        "and": "&#32;un",
-       "qbfind": "Meklēšana",
-       "qbbrowse": "Navigācija",
-       "qbedit": "Labošana",
-       "qbpageoptions": "Šī lapa",
-       "qbmyoptions": "Manas lapas",
        "faq": "BUJ",
-       "faqpage": "Project:BUJ",
        "actions": "Darbības",
        "namespaces": "Vārdtelpas",
        "variants": "Varianti",
        "edit-local": "Labot vietējo aprakstu",
        "create": "Izveidot",
        "create-local": "Pievienot vietējo aprakstu",
-       "editthispage": "Izmainīt šo lapu",
-       "create-this-page": "Izveidot šo lapu",
        "delete": "Dzēst",
-       "deletethispage": "Dzēst šo lapu",
-       "undeletethispage": "Atjaunot šo lapu",
        "undelete_short": "Atjaunot $1 {{PLURAL:$1|versijas|versiju|versijas}}",
        "viewdeleted_short": "Apskatīt {{PLURAL:$1|$1 dzēstus labojumus|$1 dzēstu labojumu|$1 dzēstus labojumus}}",
        "protect": "Aizsargāt",
        "protect_change": "izmainīt",
-       "protectthispage": "Aizsargāt šo lapu",
        "unprotect": "Mainīt aizsardzību",
-       "unprotectthispage": "Mainīt šīs lapas aizsardzību",
        "newpage": "Jauna lapa",
-       "talkpage": "Diskusija par šo lapu",
        "talkpagelinktext": "Diskusija",
        "specialpage": "Īpašā Lapa",
        "personaltools": "Dalībnieka rīki",
-       "articlepage": "Apskatīt rakstu",
        "talk": "Diskusija",
        "views": "Apskates",
        "toolbox": "Rīki",
        "tool-link-userrights": "Mainīt {{GENDER:$1|dalībnieka|dalībnieces}} grupas",
        "tool-link-userrights-readonly": "Apskatīt {{GENDER:$1|dalībnieka|dalībnieces}} grupas",
        "tool-link-emailuser": "Nosūtīt e-pastu {{GENDER:$1|šim dalībniekam|šai dalībniecei}}",
-       "userpage": "Skatīt dalībnieka lapu",
-       "projectpage": "Skatīt projekta lapu",
        "imagepage": "Skatīt faila lapu",
        "mediawikipage": "Skatīt paziņojuma lapu",
        "templatepage": "Skatīt veidnes lapu",
        "rcfilters-filter-categorization-description": "Ieraksti par lapu pievienošanu vai noņemšanu no kategorijām.",
        "rcfilters-filter-logactions-label": "Reģistrētās darbības",
        "rcfilters-filter-logactions-description": "Administratīvās darbības, kontu veidošana, lapu dzēšana, augšupielādes...",
+       "rcfilters-view-tags": "Iezīmes",
        "rcnotefrom": "Šobrīd redzamas izmaiņas kopš '''$2''' (parādītas ne vairāk par '''$1''').",
        "rclistfromreset": "Atiestatīt datuma izvēli",
        "rclistfrom": "Parādīt jaunas izmaiņas kopš $3 $2",
index 1df2f84..a0f331d 100644 (file)
        "anontalk": "議",
        "navigation": "導",
        "and": "與",
-       "qbfind": "尋",
-       "qbbrowse": "覽",
-       "qbedit": "纂",
-       "qbpageoptions": "此頁",
-       "qbmyoptions": "吾好",
        "faq": "頻答問",
-       "faqpage": "Project:頻答問",
        "actions": "動",
        "namespaces": "名集",
        "variants": "變字",
        "history": "誌",
        "history_short": "誌",
        "updatedmarker": "新也",
-       "printableversion": "印本",
+       "printableversion": "付梓",
        "permalink": "恆通",
        "print": "印",
        "view": "察",
        "edit-local": "纂地言",
        "create": "立",
        "create-local": "增地言",
-       "editthispage": "纂",
-       "create-this-page": "立",
        "delete": "刪",
-       "deletethispage": "刪是頁",
-       "undeletethispage": "反刪此頁",
        "undelete_short": "還$1已刪",
        "viewdeleted_short": "察$1已刪",
        "protect": "緘",
        "protect_change": "易",
-       "protectthispage": "緘封",
        "unprotect": "啟",
-       "unprotectthispage": "啟函",
        "newpage": "新頁",
-       "talkpage": "參議此文",
        "talkpagelinktext": "議",
        "specialpage": "特查",
        "personaltools": "家私",
-       "articlepage": "閱內文",
        "talk": "議",
        "views": "覽",
        "toolbox": "多寶",
-       "userpage": "簿",
-       "projectpage": "計畫",
        "imagepage": "述",
        "mediawikipage": "觀訊",
        "templatepage": "鑄模",
        "virus-badscanner": "壞設:不明之病掃:''$1''",
        "virus-scanfailed": "敗掃(碼$1)",
        "virus-unknownscanner": "不明之反毒:",
-       "logouttext": "'''子去簿矣'''\n\n子可匿名還覽{{SITENAME}},或<span class='plainlinks'>[$1 復登]</span>同簿、異簿。\n未清謄本,覽器文舊,且慎之。",
+       "logouttext": "<strong>業已出籍</strong>\n\n如見籍名未除,請清舊錄。",
        "welcomeuser": "$1居,惠迎!",
        "welcomecreation-msg": "汝簿建矣。\n\n請更汝「{{SITENAME}}」[[Special:Preferences|焉]]。",
        "yourname": "名",
        "yourpasswordagain": "復核節",
        "createacct-yourpasswordagain": "訂子符節",
        "createacct-yourpasswordagain-ph": "復告符節",
-       "userlogin-remembermypassword": "保我簿登",
+       "userlogin-remembermypassword": "籍記不除",
        "userlogin-signwithsecure": "以安全伺服登簿",
        "yourdomainname": "汝之網域",
        "password-change-forbidden": "符節不能改乎此維基也。",
        "externaldberror": "認庫之錯,或禁更汝之外簿。",
-       "login": "ç\99»ç°¿",
+       "login": "ç±\8då\90\8d",
        "nav-login-createaccount": "登簿、增簿",
-       "logout": "å\8e»ç°¿",
-       "userlogout": "å\8e»ç°¿",
+       "logout": "å\87ºç±\8d",
+       "userlogout": "å\87ºç±\8d",
        "notloggedin": "尚未登簿",
        "userlogin-noaccount": "尚無簿乎?",
        "userlogin-joinproject": "入{{SITENAME}}",
        "createaccount": "增簿",
        "userlogin-resetpassword-link": "亡子符節?",
-       "userlogin-helplink2": "å\8a©ä»¥ç\99»ç°¿",
+       "userlogin-helplink2": "å\8d\94å\8a©",
        "userlogin-createanother": "增另一簿",
        "createacct-emailrequired": "電郵",
        "createacct-emailoptional": "電郵(可選)",
        "createacct-benefit-body3": "是月纂者",
        "badretype": "符節不合也。",
        "userexists": "簿名見用矣,惠更之。",
-       "loginerror": "ç\99»ç°¿ç\94\9f誤",
+       "loginerror": "ç±\8då\90\8dè¦\8b誤",
        "createacct-error": "建簿未成",
        "createaccounterror": "無增簿:$1",
        "nocookiesnew": "{{SITENAME}}簿增而未登,惠准存 cookies ,方可登之。",
-       "nocookieslogin": "欲登簿{{SITENAME}},需允 cookies 之存,惠准後方可登。",
+       "nocookieslogin": "無簿冊(cookies),無以籍名於{{SITENAME}}。\n請予簿冊,復行籍記。",
        "nocookiesfornew": "簿未建,眾乃未定源之。\n汝其啟之,重載,繼而予一試。",
        "noname": "缺簿名,或不格也。",
        "loginsuccesstitle": "登簿成矣",
        "login-abort-generic": "登簿未成——棄",
        "loginlanguagelabel": "語:$1",
        "suspicious-userlogout": "爾欲無離也,可由壞瀏覽器或快枝代理呈送之。",
-       "pt-login": "ç\99»ç°¿",
+       "pt-login": "ç±\8då\90\8d",
        "pt-login-button": "登簿",
        "pt-createaccount": "增簿",
-       "pt-userlogout": "å\8e»ç°¿",
+       "pt-userlogout": "å\87ºç±\8d",
        "php-mail-error-unknown": "於 PHP mail() 參數現錯",
        "user-mail-no-addy": "遣函豈能無址?",
        "user-mail-no-body": "試遞一空或過短郵",
        "confirmedittext": "驛證方可纂文。惠見[[Special:Preferences|簿註]]。",
        "nosuchsectiontitle": "無尋節",
        "nosuchsectiontext": "爾纂之節無存也。\n機以察時遷或刪之。",
-       "loginreqtitle": "須登簿",
+       "loginreqtitle": "務須籍名",
        "loginreqlink": "登簿",
        "loginreqpagetext": "$1以覽它頁。",
        "accmailtitle": "符節傳矣",
-       "accmailtext": "\"$1\"之新符節至$2矣\n\n此符節可於登簿後改",
+       "accmailtext": "為[[User talk:$1|$1]]所新造符節,已予$2。籍名以後,可更易於<em>[[Special:ChangePassword|change password]]</em>。",
        "newarticle": "撰",
        "newarticletext": "此頁尚缺。欲補,撰於下,有惑見[$1 助]。\n誤入者,返前即可。",
        "anontalkpagetext": "----\n<em>此匿論也,為未簿或不簿者設。</em>IP俱錄以辨人焉。然IP不獨,恐生亂象,不喜惠[[Special:CreateAccount|增]][[Special:UserLogin|登簿]]遠之。",
        "longpageerror": "'''警示:文長$1仟位元組,越幅$2,未能儲焉。'''",
        "readonlywarning": "'''警示:修庫藏,存儲謝焉。惠謄文備用之。'''\n\n鎖者曰:「$1」",
        "protectedpagewarning": "'''警示:庫藏錮矣,惟有秩纂之。'''\n近誌下曰參詳之:",
-       "semiprotectedpagewarning": "'''註記'''庫藏錮矣,惟登簿纂之。\n近誌下曰參詳之:",
+       "semiprotectedpagewarning": "'''註記'''庫藏錮矣,籍名以纂。\n近誌如下,以供參考:",
        "cascadeprotectedwarning": "'''警示:'''此頁錮矣,唯有秩纂之,乃因{{PLURAL:$1|一|多}}頁連誅之:",
        "titleprotectedwarning": "'''警告:此頁錮矣,乃需[[Special:ListGroupRights|權]]用之。'''\n近誌下曰參詳之:",
        "templatesused": "此文用{{PLURAL:$1|模|模}} :",
        "watchlistfor2": "$1之哨 $2",
        "nowatchlist": "無哨",
        "watchlistanontext": "登簿以治哨",
-       "watchnologin": "æ\9cªç\99»ç°¿",
+       "watchnologin": "æ\9c\89å¾\85ç±\8då\90\8d",
        "addwatch": "增至哨站",
        "addedwatchtext": "\"[[:$1]]\"哨派矣。後有易、議者可見於[[Special:Watchlist|哨站]],且'''粗體'''列於[[Special:RecentChanges|近易]]。",
        "removedwatchtext": "\"[[:$1]]\"[[Special:Watchlist|哨]]撤矣。",
        "revertpage-nouser": "去(刪簿)之作為[[User:$1|$1]]之本耳",
        "rollback-success": "去$1之作,復為$2之本耳。",
        "sessionfailure-title": "登段敗也",
-       "sessionfailure": "ç\99»ç°¿æ\9c\89è®\8aã\80\82ç\82ºé\98²ç\9b\9cç°¿ï¼\8cè¿\94å\89\8dé\87\8då\8f\96å\86\8dç\82ºä¹\8b。",
+       "sessionfailure": "ç°¿ç±\8dæ\9c\89ç\95°ï¼\8cç\82ºé\98²ç\9b\9cç\94¨ï¼\8cæ\9a«ä¸\8då\87\86è¡\8cã\80\82è«\8b復è¿\94å\86\8d試。",
        "protectlogpage": "誌緘",
        "protectlogtext": "誌緘如下;近緘見[[Special:ProtectedPages|此]] 。",
        "protectedarticle": "緘焉\"[[$1]]\"",
        "movepagetext": "函下遷頁,誌隨新往、舊題作渡、取佐欲移。保佐正,[[Special:DoubleRedirects|防窮]]、[[Special:BrokenRedirects|斷渡]]。\n\n囑之者,新題若非空、渡、缺誌,則舊'''不遷'''焉。存頁勿覆,而誤遷可悔也。\n\n'''警示!'''\n膾炙遷焉,禍生不測;戒慎行之。",
        "movepagetext-noredirectfixer": "函下遷頁,誌隨新往、舊題作渡、取佐欲移。欲查[[Special:DoubleRedirects|防窮]]、[[Special:BrokenRedirects|斷渡]]之。\n\n囑之者,新題若非空、渡、缺誌,則舊'''不遷'''焉。存頁勿覆,而誤遷可悔也。\n\n'''警示!'''\n膾炙遷焉,禍生不測;戒慎行之。",
        "moveuserpage-warning": "'''警:'''爾將遷頁齋。注之遷齋後之簿名乃為''無''變也。",
-       "movenologintext": "遷文須[[Special:UserLogin|登簿]]。",
+       "movenologintext": "先[[Special:UserLogin|籍名]],後可遷。",
        "movenotallowed": "無准遷檔也。",
        "cant-move-user-page": "無動自齋(除字頁)。",
        "cant-move-to-user-page": "無動至齋(除字頁)。",
index a57b00d..35a7e31 100644 (file)
        "anontalk": "Pejin-dresaka",
        "navigation": "Fikarohana",
        "and": "&#32;sy",
-       "qbfind": "Tadiavina",
-       "qbbrowse": "Tadiavina",
-       "qbedit": "Hanova",
-       "qbpageoptions": "Ity pejy ity",
-       "qbmyoptions": "Ny pejiko",
        "faq": "FMM",
-       "faqpage": "Project:FMM",
        "actions": "Tao",
        "namespaces": "Valam-pejy",
        "variants": "Ny ''skin'' Voasintona",
        "edit-local": "Hanova ny famisavisana eo an-toerana",
        "create": "Amboarina",
        "create-local": "Hanampy famisavisana eo an-toerana",
-       "editthispage": "Hanova ity pejy ity",
-       "create-this-page": "Forony ity pejy ity",
        "delete": "Hamafa",
-       "deletethispage": "Fafao ity pejy ity",
-       "undeletethispage": "Hamerina ity pejy ity",
        "undelete_short": "Famerenana fanovana {{PLURAL:$1|$1|$1}}",
        "viewdeleted_short": "Hijery fanovana voafafa {{PLURAL:$1|tokana|$1}}",
        "protect": "Hiaro",
        "protect_change": "ovaina",
-       "protectthispage": "Hiaro an'ity pejy ity",
        "unprotect": "Hanala ny fiarovana",
-       "unprotectthispage": "Hanala idy an'ity pejy ity",
        "newpage": "Pejy vaovao",
-       "talkpage": "Dinidinika momba ity pejy ity",
        "talkpagelinktext": "Dinika",
        "specialpage": "Pejy manokana",
        "personaltools": "Fitaovana manokana",
-       "articlepage": "Hijery ny votoatin'ny pejy",
        "talk": "dinika",
        "views": "Fijerena",
        "toolbox": "Fitaovana",
        "tool-link-userrights": "Hanova ny vondron'i {{GENDER:$1|}}mpikambana",
        "tool-link-userrights-readonly": "Hijery ny vondron'ny mpikambana{{GENDER:$1|}}",
        "tool-link-emailuser": "Handefa mailaka an'ity mpikambana ity{{GENDER:$1|}}",
-       "userpage": "Hijery ny pejy manokan'ny mpikambana",
-       "projectpage": "Pejy meta",
        "imagepage": "Jereo ny pejin'ny sary",
        "mediawikipage": "Hijery ny pejy misy io hafatra io",
        "templatepage": "Jereo ny pejin'ny endrika",
        "pageinfo-header-restrictions": "Fiarovana an'ilay pejy",
        "pageinfo-header-properties": "Tondron'ilay pejy",
        "pageinfo-display-title": "Lohateny aseho",
+       "pageinfo-default-sort": "Lakilem-pampirimana raha tsy misy",
        "pageinfo-length": "Halavam-pejy (oktety)",
        "pageinfo-article-id": "Laharam-pejy",
        "pageinfo-language": "Tenin'ny votoatiny",
        "pageinfo-authors": "Isa manontolon'ny mpandray anjara",
        "pageinfo-recent-edits": "Fanovana vao haingana (natao tanatin'ny $1)",
        "pageinfo-recent-authors": "Isa vao haingan'ny mpanoratra misongadina",
+       "pageinfo-magic-words": "Teny majika{{PLURAL:$1|}} ($1)",
        "pageinfo-hidden-categories": "Sokajy nafenina{{PLURAL:$1}} ($1)",
        "pageinfo-templates": "Endrika natsofoka{{PLURAL:$1}} ($1)",
        "pageinfo-transclusions": "Pejy natsofoka tanatin'i ($1){{PLURAL:}}",
        "watchlistedit-clear-legend": "Handio ny lisitra arahanao",
        "watchlistedit-clear-explain": "Ho esorina amin'ny lisitry ny pejy arahanao ny lohateny rehetra",
        "watchlistedit-clear-titles": "Lohateny:",
+       "watchlisttools-clear": "Handio ny lisitra arahanao",
        "watchlisttools-view": "pejy arahako maso",
        "watchlisttools-edit": "Jereo sy ovao ny lisitra ny pejy fanaraha-maso",
        "watchlisttools-raw": "Ovay ilay pejy arahako maso amizao",
        "mw-widgets-titleinput-description-new-page": "Tsy mbola misy ilay pejy",
        "mw-widgets-usersmultiselect-placeholder": "Hanampy be kokoa",
        "sessionmanager-tie": "Tsy afaka mampikambana karazan-kataka fampamantarana maromaro: $1.",
+       "randomrootpage": "Foto-pejy kisendra",
        "log-action-filter-all": "Manontolo",
        "log-action-filter-block-block": "Bolongana",
        "log-action-filter-protect-protect": "Fiarovana",
index ea525d3..f26577c 100644 (file)
        "anontalk": "Разговор",
        "navigation": "Прегледник",
        "and": "&#32;и",
-       "qbfind": "Најди",
-       "qbbrowse": "Прелистај",
-       "qbedit": "Уреди",
-       "qbpageoptions": "Оваа страница",
-       "qbmyoptions": "Мои страници",
        "faq": "ЧПП",
-       "faqpage": "Project:ЧПП",
        "actions": "Дејства",
        "namespaces": "Именски простори",
        "variants": "Варијанти",
        "edit-local": "Уреди месен опис",
        "create": "Создај",
        "create-local": "Додај месен опис",
-       "editthispage": "Уреди ја страницава",
-       "create-this-page": "Создај ја страницава",
        "delete": "Избриши",
-       "deletethispage": "Избриши ја страницава",
-       "undeletethispage": "обнови ја страницава",
        "undelete_short": "Врати {{PLURAL:$1|едно уредување|$1 уредувања}}",
        "viewdeleted_short": "Преглед на {{PLURAL:$1|едно избришано уредување|$1 избришани уредувања}}",
        "protect": "Заштити",
        "protect_change": "промена",
-       "protectthispage": "Заштити ја страницава",
        "unprotect": "Измени заштита",
-       "unprotectthispage": "Измена на заштитата на страницава",
        "newpage": "Нова страница",
-       "talkpage": "Разговор",
        "talkpagelinktext": "разговор",
        "specialpage": "Службена страница",
        "personaltools": "Лични алатки",
-       "articlepage": "Преглед на содржината",
        "talk": "Разговор",
        "views": "Посети",
        "toolbox": "Алатки",
        "tool-link-userrights": "Смени ги {{GENDER:$1|корисничките}} групи",
        "tool-link-userrights-readonly": "Погл. {{GENDER:$1|кориснички}} групи",
        "tool-link-emailuser": "Испрати е-пошта на {{GENDER:$1|корисников}}",
-       "userpage": "Преглед на корисничката страница",
-       "projectpage": "Преглед на проектната страница",
        "imagepage": "Преглед на страницата на податотеката",
        "mediawikipage": "Преглед на пораката",
        "templatepage": "Преглед на шаблонот",
        "savearticle": "Зачувај",
        "savechanges": "Зачувај промени",
        "publishpage": "Објави ја страницата",
-       "publishchanges": "Ð\9eбÑ\98ави Ð³Ð¸ Ð¿Ñ\80омениÑ\82е",
+       "publishchanges": "Ð\9eбÑ\98ави Ð¿Ñ\80омени",
        "preview": "Преглед",
        "showpreview": "Преглед",
        "showdiff": "Прикажи промени",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Прикажи",
        "rcfilters-activefilters": "Активни филтри",
-       "rcfilters-quickfilters": "Ð\91Ñ\80зи Ð²Ñ\80Ñ\81ки",
+       "rcfilters-quickfilters": "Ð\97аÑ\87Ñ\83вани Ñ\84илÑ\82еÑ\80Ñ\81ки Ð¿Ð¾Ñ\81Ñ\82авки",
        "rcfilters-quickfilters-placeholder-title": "Засега нема зачувани врски",
        "rcfilters-quickfilters-placeholder-description": "За да ги зачувате вашите филтерски псотавки за да ги употребите другпат, стиснете на иконката за бележник во подрачјето „Активен филтер“ подолу.",
        "rcfilters-savedqueries-defaultlabel": "Зачувани филтри",
        "rcfilters-savedqueries-unsetdefault": "Отстрани од основно",
        "rcfilters-savedqueries-remove": "Отстрани",
        "rcfilters-savedqueries-new-name-label": "Назив",
-       "rcfilters-savedqueries-apply-label": "Ð\9dапÑ\80ави Ð±Ñ\80за Ð²Ñ\80Ñ\81ка",
+       "rcfilters-savedqueries-apply-label": "Ð\97аÑ\87Ñ\83ваÑ\98 Ð¿Ð¾Ñ\81Ñ\82авки",
        "rcfilters-savedqueries-cancel-label": "Откажи",
-       "rcfilters-savedqueries-add-new-title": "Ð\97аÑ\87Ñ\83ваÑ\98 Ñ\84илÑ\82Ñ\80и ÐºÐ°ÐºÐ¾ Ð±Ñ\80за Ð²Ñ\80Ñ\81ка",
+       "rcfilters-savedqueries-add-new-title": "Ð\97аÑ\87Ñ\83ваÑ\98 Ñ\82ековни Ñ\84илÑ\82еÑ\80Ñ\81ки Ð¿Ð¾Ñ\81Ñ\82авки",
        "rcfilters-restore-default-filters": "Поврати основни филтри",
        "rcfilters-clear-all-filters": "Тргни ги сите филтри",
        "rcfilters-search-placeholder": "Филтрирај скорешни промени (прелстајте или почнете да пишувате)",
        "rcfilters-filter-lastrevision-description": "Најнови преработки на страница.",
        "rcfilters-filter-previousrevision-label": "Претходни преработки",
        "rcfilters-filter-previousrevision-description": "Сите промени кои не се најнови преработки на страницата.",
+       "rcfilters-filter-excluded": "Исклучени",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:не</strong> $1",
+       "rcfilters-view-tags": "Ознаки",
        "rcnotefrom": "Подолу {{PLURAL:$5|е прикажана промената|се прикажани промените}} почнувајќи од <strong>$3, $4</strong>  (се прикажуваат до <b>$1</b>).",
        "rclistfromreset": "Нов избор на датуми",
        "rclistfrom": "Прикажи нови промени почнувајќи од $3 $2",
        "tooltip-ca-viewsource": "Оваа страница е заштитена. Можете да го видите изворниот код.",
        "tooltip-ca-history": "Претходни верзии на оваа страница.",
        "tooltip-ca-protect": "Заштити ја страницава",
-       "tooltip-ca-unprotect": "Измени заштита страницава",
+       "tooltip-ca-unprotect": "Измени заштита на страницава",
        "tooltip-ca-delete": "Избриши ја страницава",
        "tooltip-ca-undelete": "Обнови ги уредувањата направени на оваа страница пред да биде избришана",
        "tooltip-ca-move": "Премести ја страницава",
        "newimages-legend": "Филтрирај",
        "newimages-label": "Име на податотека (или дел од името):",
        "newimages-user": "IP-адреса или корисничко име",
+       "newimages-newbies": "Прикажи само придонеси на нови корисници",
        "newimages-showbots": "Прикажувај подигања од ботови",
        "newimages-hidepatrolled": "Сокриј испатролриани подигања",
+       "newimages-mediatype": "Тип на медиум:",
        "noimages": "Нема ништо.",
        "gallery-slideshow-toggle": "Преод на минијатури",
        "ilsubmit": "Барај",
        "tags-create-reason": "Причина:",
        "tags-create-submit": "Создај",
        "tags-create-no-name": "Мора да укажете име на ознаката.",
-       "tags-create-invalid-chars": "Ознаката не смее да содржи запирки (<code>,</code>) и надесни коси црти (<code>/</code>).",
+       "tags-create-invalid-chars": "Ознаката не смее да содржи запирки (<code>,</code>), прави црти (<code>|</code>) и надесни коси црти (<code>/</code>).",
        "tags-create-invalid-title-chars": "Имињата на ознаките не смеат да содржат знаци што не може да се користат во наслови на страници.",
        "tags-create-already-exists": "Ознаката „$1“ веќе постои.",
        "tags-create-warnings-above": "Во обидот да ја создадам ознаката „$1“ наидов на {{PLURAL:$2|следново предупредување|следниве предупредувања}}:",
        "gotointerwiki-invalid": "Укажаниот наслов е неважечки.",
        "gotointerwiki-external": "Го напуштате {{SITENAME}} упатени кон [[$2]], кое е посебно мрежно место.\n\n'''[$1 Продолжете кон $1]'''",
        "undelete-cantedit": "Не можете да ја вратите избришаната страница бидејќи уредувањето на страницава не ви е дозволено.",
-       "undelete-cantcreate": "Не можете да ја вратите страницава бидејќи не постои страница со таков назив и не ви е дозволено да ја создадете."
+       "undelete-cantcreate": "Не можете да ја вратите страницава бидејќи не постои страница со таков назив и не ви е дозволено да ја создадете.",
+       "pagedata-title": "Податоци за страницата",
+       "pagedata-text": "Страницава дава посредник за податоци за страниците. Укажете го насловот на страницата во URL-то, користејќи ја синтаксата за потстраници.\n* Префрлањето на содржината се заснова на заглавието Прифати на вашиот клиент. Ова значи дека податоците за страницата ќе бидат ставени во форматот кој го претпочита вашиот клиент.",
+       "pagedata-not-acceptable": "Не најдов соодветен формат. Поддржани MIME-типови: $1",
+       "pagedata-bad-title": "Нважечки наслов: $1."
 }
index 79281bf..07bf86a 100644 (file)
        "anontalk": "चर्चा पान",
        "navigation": "सुचालन",
        "and": "&#32;आणि",
-       "qbfind": "शोधा",
-       "qbbrowse": "न्याहाळा",
-       "qbedit": "संपादन",
-       "qbpageoptions": "हे पान",
-       "qbmyoptions": "माझी पाने",
        "faq": "नेहमी विचारण्यात येणारे प्रश्न",
-       "faqpage": "Project:प्रश्नावली",
        "actions": "क्रिया",
        "namespaces": "नामविश्वे",
        "variants": "चले(व्हेरियंट्स)",
        "edit-local": "स्थानिक वर्णन संपादा",
        "create": "तयार करा",
        "create-local": "स्थानिक वर्णन जोडा",
-       "editthispage": "हे पृष्ठ संपादित करा",
-       "create-this-page": "हे पान तयार करा",
        "delete": "वगळा",
-       "deletethispage": "हे पान काढून टाका",
-       "undeletethispage": "गाळलेला लेख पुर्ववत् करा",
        "undelete_short": "पुनर्स्थापन {{PLURAL:$1|एक संपादन|$1 संपादने}}",
        "viewdeleted_short": "{{PLURAL:$1|एक वगळलेले संपादन|$1 वगळलेली संपादने}}  पहा.",
        "protect": "सुरक्षित करा",
        "protect_change": "बदला",
-       "protectthispage": "हे पान सुरक्षित करा",
        "unprotect": "सुरक्षितता बदला",
-       "unprotectthispage": "या पानाची सुरक्षितता बदला",
        "newpage": "नवीन पृष्ठ",
-       "talkpage": "या पानाबद्दल चर्चा करा",
        "talkpagelinktext": "चर्चा",
        "specialpage": "विशेष पृष्ठ",
        "personaltools": "वैयक्तिक साधने",
-       "articlepage": "लेख पृष्ठ",
        "talk": "चर्चा",
        "views": "दृष्ये",
        "toolbox": "साधने",
        "tool-link-userrights": "{{GENDER:$1|वापरकर्ता}} गट बदला",
        "tool-link-emailuser": "{{GENDER:$1|सदस्याला}} विपत्र पाठवा",
-       "userpage": "सदस्य पृष्ठ",
-       "projectpage": "प्रकल्प पान पहा",
        "imagepage": "संचिका पृष्ठ पहा",
        "mediawikipage": "संदेश पान पहा",
        "templatepage": "साच्याचे पृष्ठ पहा.",
        "post-expand-template-argument-warning": "<strong>ईशारा:</strong> या पानावर असा एकतरी साचा आहे जो वाढविल्यास खूप मोठा होईल.\nअसे साचे वगळण्यात आलेले आहेत.",
        "post-expand-template-argument-category": "अशी पाने ज्यांच्यामध्ये साचे वगळलेले आहेत",
        "parser-template-loop-warning": "साचा चक्र मिळाले: [[$1]]",
+       "template-loop-category-desc": "या पानात एक साचा वलय आहे, म्हणजे, तो साचा जो स्वतःसच वारंवार हाक देतो.",
        "parser-template-recursion-depth-warning": "साचा पुनरावर्तन खोली मर्यादा ओलांडली ($1)",
        "language-converter-depth-warning": "भाषा रुपांतरण खोली मर्यादा ओलांडली ($1)",
        "node-count-exceeded-category": "लेख जेथे निस्पंद-गणना(नोड-काऊंट) पार केल्या गेला",
index f10cdb6..fb9de03 100644 (file)
        "anontalk": "ဆွေးနွေးရန်",
        "navigation": "အ​ညွှန်း​",
        "and": "&#32;နှင့်",
-       "qbfind": "ရှာပါ",
-       "qbbrowse": "ရှာဖွေလှန်လှောရန်",
-       "qbedit": "ပြင်ဆင်ရန်",
-       "qbpageoptions": "ဤစာမျက်နှာ",
-       "qbmyoptions": "ကျွန်ုပ် စာမျက်နှာများ",
        "faq": "မေးလေ့ရှိကြသည်များ",
-       "faqpage": "Project:မေးလေ့ရှိကြသည်များ",
        "actions": "ဆောင်ရွက်ချက်များ",
        "namespaces": "အမည်ညွှန်းများ",
        "variants": "အမျိုးမျိုးအပြားပြား",
        "edit-local": "ဒေသတွင်း ဖော်ပြချက် ပြင်ဆင်ရန်",
        "create": "စတင်ရေးသားရန်",
        "create-local": "ဒေသတွင်း ဖော်ပြချက် ထည့်ရန်",
-       "editthispage": "ဤစာမျက်နှာကို ပြင်ရန်",
-       "create-this-page": "ဤစာမျက်နှာကို စတင်ရေးသားရန်",
        "delete": "ဖျက်​ပါ​",
-       "deletethispage": "ဤစာမျက်နှာဖျက်ပါ",
-       "undeletethispage": "ဤစာမျက်နှာကို မဖျက်တော့ရန်",
        "undelete_short": "{{PLURAL:$1|တည်းဖြတ်မှုတစ်ခု|တည်းဖြတ်မှု $1 ခုတို့}}ကို မဖျက်တော့ရန်",
        "viewdeleted_short": "{{PLURAL:$1|ဖျက်လိုက်သည့်တည်းဖြတ်မှုတစ်ခု|ဖျက်လိုက်သည့် တည်းဖြတ်မှု $1 ခု}}ကို ကြည့်ရန်",
        "protect": "ကာကွယ်ပါ",
        "protect_change": "ပြောင်းလဲရန်",
-       "protectthispage": "ဤစာမျက်နှာကို ကာကွယ်ရန်",
        "unprotect": "ကာကွယ်ခြင်းကို ပြောင်းလဲရန်",
-       "unprotectthispage": "စာမျက်နှာ ကာကွယ်ခြင်းကို ပြောင်းလဲရန်",
        "newpage": "စာမျက်နှာအသစ်",
-       "talkpage": "ဆွေးနွေးရန်",
        "talkpagelinktext": "ဆွေးနွေး",
        "specialpage": "အထူး စာမျက်နှာ",
        "personaltools": "ကိုယ်ပိုင် ကိရိယာများ",
-       "articlepage": "မာတိကာ ကြည့်ရန်",
        "talk": "ဆွေးနွေးချက်",
        "views": "အမြင်ပုံစံများ",
        "toolbox": "ကိရိယာများ",
        "tool-link-userrights": "{{GENDER:$1|အသုံးပြုသူ}}အုပ်စုများကို ပြောင်းလဲရန်",
        "tool-link-userrights-readonly": "{{GENDER:$1|အသုံးပြုသူ}}အုပ်စုများကို ကြည့်ရန်",
        "tool-link-emailuser": "ဤ{{GENDER:$1|အသုံးပြုသူ}}ကို အီးမေးပို့ရန်",
-       "userpage": "အသုံးပြုသူ၏ စာမျက်နှာကို ကြည့်ရန်",
-       "projectpage": "ပရောဂျက်စာမျက်နှာကို ကြည့်ရန်",
        "imagepage": "ဖိုင်စာမျက်နှာကိုကြည့်ရန်",
        "mediawikipage": "စာတိုစာမျက်နှာ ကြည့်ရန်",
        "templatepage": "တမ်းပလိတ်စာမျက်နှာကို ကြည့်ရန်",
        "pageinfo-toolboxlink": "စာမျက်နှာ အချက်အလက်များ",
        "markaspatrolleddiff": "စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားရန်",
        "markaspatrolledtext": "ဤစာမျက်နှာအား စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားရန်",
+       "markedaspatrolled": "စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားပြီး",
+       "markedaspatrolledtext": "[[:$1]] ၏ ရွေးချယ်ထားသော တည်းဖြတ်မူကို စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားပြီးပါပြီ။",
+       "markedaspatrollednotify": "$1 သို့ ဤပြောင်းလဲမှုအား စောင့်ကြပ်စစ်ဆေးပြီးကြောင်း မှတ်သားပြီးပါပြီ။",
        "filedeleteerror-short": "ဖိုင်ဖျက်ရာတွင် အမှားအယွင်း - $1",
        "previousdiff": "← တည်းဖြတ်မူ အဟောင်း",
        "nextdiff": "ပိုသစ်သော တည်းဖြတ်မှု",
index 3ebaae2..ed1ed8e 100644 (file)
        "anontalk": "Thó-lūn",
        "navigation": "Se̍h chām",
        "and": "&#32;kap",
-       "qbfind": "Chhōe",
-       "qbbrowse": "Liū-lám",
-       "qbedit": "Siu-kái",
-       "qbpageoptions": "Chit ia̍h",
-       "qbmyoptions": "Goá ê ia̍h",
        "faq": "Būn-tah",
-       "faqpage": "Project:Būn-tah",
        "actions": "Tōng-chok",
        "namespaces": "Miâ-khong-kan",
        "variants": "piàn-thé",
        "edit-local": "改這位的說明",
        "create": "Khai-sí siá",
        "create-local": "ka chhit-tah--ê soat-bêng",
-       "editthispage": "Siu-kái chit ia̍h",
-       "create-this-page": "Khai-sí siá chit ia̍h",
        "delete": "Thâi",
-       "deletethispage": "Thâi chit ia̍h",
-       "undeletethispage": "取消刣掉這頁",
        "undelete_short": "Kiù {{PLURAL:$1|$1|$1}} ê thâi-tiāu ê",
        "viewdeleted_short": "Khoàⁿ {{PLURAL:$1|chi̍t-ê thâi tiàu--ê pian-chi̍p|$1 ê thâi tiàu--ê pian-chi̍p}}",
        "protect": "Pó-hō·",
        "protect_change": "kái-piàn",
-       "protectthispage": "Pó-hō· chit ia̍h",
        "unprotect": "kái pó-hō·",
-       "unprotectthispage": "kái chit ia̍h ê pó-hō͘",
        "newpage": "Sin ia̍h",
-       "talkpage": "Thó-lūn chit ia̍h",
        "talkpagelinktext": "thó-lūn",
        "specialpage": "Te̍k-sû-ia̍h",
        "personaltools": "Kò-jîn kang-khū",
-       "articlepage": "Khoàⁿ loē-iông ia̍h",
        "talk": "Thó-lūn",
        "views": "Khoàⁿ",
        "toolbox": "Ke-si",
        "tool-link-userrights": "Piàn-keng {{GENDER:$1|iōng-chiá}} hun-cho͘",
        "tool-link-userrights-readonly": "Khòaⁿ {{GENDER:$1|iōng-chiá}} hun-cho͘",
        "tool-link-emailuser": "Email hō͘ chit ūi {{GENDER:$1|iōng-chiá}}",
-       "userpage": "Khoàⁿ iōng-chiá ê Ia̍h",
-       "projectpage": "Khoàⁿ sū-kang ia̍h",
        "imagepage": "Khoàⁿ tóng-àn ia̍h",
        "mediawikipage": "Khoàⁿ sìn-sit ia̍h",
        "templatepage": "Khoàⁿ pang-bô͘ ia̍h",
        "confirmemail_body": "Ū lâng (IP $1, tāi-khài sī lí pún-lâng) tī {{SITENAME}} ēng chit-ê e-mail chū-chí chù-chheh 1 ê kháu-chō \"$2\".\n\nChhiáⁿ khui ē-kha chit-ê liân-kiat, thang khak-jīn chit-ê kháu-chō si̍t-chāi sī lí ê:\n\n$3\n\nNā-chún *m̄-sī* lí, chhiáⁿ mài tòe liân-kiat khì.  Chit tiuⁿ phoe ê khak-jīn-bé ē chū-tōng tī $4 kòe-kî.",
        "confirmemail_body_changed": "Ū lâng (IP $1, tāi-khài sī lí pún-lâng) tī {{SITENAME}} ēng chit-ê e-mail chū-chí chù-chheh 1 ê kháu-chō \"$2\".\n\nChhiáⁿ khui ē-kha chit-ê liân-kiat, thang khak-jīn chit-ê kháu-chō si̍t-chāi sī lí ê:\n\n$3\n\nNā-chún *m̄-sī* lí, chhiáⁿ khui ē-kha chit-ê liân-kiat,  chhú-siau khak-jīn ê e-mail.\n\n$5\n\nChit tiuⁿ phoe ê khak-jīn-bé ē chū-tōng tī $4 kòe-kî.",
        "confirmemail_body_set": "Ū lâng (IP $1, tāi-khài sī lí pún-lâng) tī {{SITENAME}} ēng chit-ê e-mail chū-chí chù-chheh 1 ê kháu-chō \"$2\".\n\nChhiáⁿ khui ē-kha chit-ê liân-kiat, thang khak-jīn chit-ê kháu-chō si̍t-chāi sī lí ê:\n\n$3\n\nNā-chún *m̄-sī* lí, chhiáⁿ khui ē-kha chit-ê liân-kiat,  chhú-siau khak-jīn ê e-mail.\n\n$5\n\nChit tiuⁿ phoe ê khak-jīn-bé ē chū-tōng tī $4 kòe-kî.",
+       "confirm-purge-title": "Ōaⁿ-sin chit ia̍h",
        "confirm-purge-top": "Kā chit ia̍h ê cache piàⁿ tiāu?",
+       "comma-separator": ",&#32;",
        "colon-separator": ":&#32;",
        "table_pager_next": "Aū-chi̍t-ia̍h",
        "table_pager_prev": "Téng-chi̍t-ia̍h",
index 0a8881c..04dd25d 100644 (file)
        "anontalk": "Brukerdiskusjon",
        "navigation": "Navigasjon",
        "and": "&#32;og",
-       "qbfind": "Finn",
-       "qbbrowse": "Bla gjennom",
-       "qbedit": "Rediger",
-       "qbpageoptions": "Sideinnstillinger",
-       "qbmyoptions": "Egne innstillinger",
        "faq": "Ofte stilte spørsmål",
-       "faqpage": "Project:Ofte stilte spørsmål",
        "actions": "Handlinger",
        "namespaces": "Navnerom",
        "variants": "Varianter",
        "edit-local": "Rediger lokal beskrivelse",
        "create": "Opprett",
        "create-local": "Opprett lokal beskrivelse",
-       "editthispage": "Rediger siden",
-       "create-this-page": "Opprett denne siden",
        "delete": "Slett",
-       "deletethispage": "Slett denne siden",
-       "undeletethispage": "Legg tilbake siden",
        "undelete_short": "Gjenopprett {{PLURAL:$1|én revisjon|$1 revisjoner}}",
        "viewdeleted_short": "Vis {{PLURAL:$1|én slettet redigering|$1 slettede redigeringer}}",
        "protect": "Beskytt",
        "protect_change": "endre",
-       "protectthispage": "Lås siden",
        "unprotect": "Endre beskyttelse",
-       "unprotectthispage": "Endre beskyttelsen av denne siden",
        "newpage": "Ny side",
-       "talkpage": "Diskuter denne siden",
        "talkpagelinktext": "diskusjon",
        "specialpage": "Spesialside",
        "personaltools": "Personlige verktøy",
-       "articlepage": "Vis innholdsside",
        "talk": "Diskusjon",
        "views": "Visninger",
        "toolbox": "Verktøy",
        "tool-link-userrights": "Endre {{GENDER:$1|brukergrupper}}",
        "tool-link-userrights-readonly": "Vis {{GENDER:$1|brukergrupper}}",
        "tool-link-emailuser": "Send {{GENDER:$1|brukeren}} en e-post",
-       "userpage": "Vis brukerside",
-       "projectpage": "Vis prosjektside",
        "imagepage": "Vis filside",
        "mediawikipage": "Vis beskjedside",
        "templatepage": "Vis malside",
        "recentchanges-legend-plusminus": "«(±123)»",
        "recentchanges-submit": "Vis",
        "rcfilters-activefilters": "Aktive filtre",
-       "rcfilters-quickfilters": "Raske lenker",
+       "rcfilters-quickfilters": "Lagrede filterinnstillinger",
        "rcfilters-quickfilters-placeholder-title": "Ingen lenker lagret enda",
        "rcfilters-quickfilters-placeholder-description": "For å lagre filterinnstillingene og gjenbruk dem senere, klikk på bokmerkeikonet i området Aktive Filtre under.",
        "rcfilters-savedqueries-defaultlabel": "Lagrede filtre",
        "rcfilters-savedqueries-unsetdefault": "Fjern som standard",
        "rcfilters-savedqueries-remove": "Fjern",
        "rcfilters-savedqueries-new-name-label": "Navn",
-       "rcfilters-savedqueries-apply-label": "Opprett rask lenke",
+       "rcfilters-savedqueries-apply-label": "Lagre innstillinger",
        "rcfilters-savedqueries-cancel-label": "Avbryt",
-       "rcfilters-savedqueries-add-new-title": "Lagre filtre som en rask lenke",
+       "rcfilters-savedqueries-add-new-title": "Lagre de gjeldende filterinnstillingene",
        "rcfilters-restore-default-filters": "Gjenopprett standardfiltre",
        "rcfilters-clear-all-filters": "Nullstill alle filtre",
        "rcfilters-search-placeholder": "Filtrer siste endringer (søk eller begyn å skrive)",
        "rcfilters-filter-lastrevision-description": "Den nyeste endringen av en side.",
        "rcfilters-filter-previousrevision-label": "Tidligere revisjoner",
        "rcfilters-filter-previousrevision-description": "Alle endringer som ikke er den nyeste endringen av en side.",
+       "rcfilters-filter-excluded": "Ekskludert",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
+       "rcfilters-view-tags": "Tagger",
        "rcnotefrom": "Nedenfor er vist {{PLURAL:$5|endringen|endringene}} som er gjort siden <strong>$3, $4</strong> (frem til <strong>$1</strong>).",
        "rclistfromreset": "Nullstill datovalg",
        "rclistfrom": "Vis nye endringer fra og med $3 $2",
        "newimages-legend": "Filnavn",
        "newimages-label": "Filnavn (helt eller delvis):",
        "newimages-user": "IP-adresse eller brukernavn",
+       "newimages-newbies": "Vis kun bidrag fra nye kontoer",
        "newimages-showbots": "Vis opplastinger av botter",
        "newimages-hidepatrolled": "Skjul patruljerte opplastinger",
+       "newimages-mediatype": "Medietype:",
        "noimages": "Ingenting å se.",
        "gallery-slideshow-toggle": "Skift miniatyrbilder",
        "ilsubmit": "Søk",
        "tags-create-reason": "Årsak:",
        "tags-create-submit": "Opprett",
        "tags-create-no-name": "Du må oppgi et taggnavn.",
-       "tags-create-invalid-chars": "Taggnavn kan ikke inneholde kommaer (<code>,</code>) eller skråstreker (<code>/</code>).",
+       "tags-create-invalid-chars": "Taggnavn kan ikke inneholde kommaer (<code>,</code>), vertikalstreker (<code>|</code>) eller skråstreker (<code>/</code>).",
        "tags-create-invalid-title-chars": "Taggnavn kan ikke inneholde tegn som ikke kan brukes i sidetitler.",
        "tags-create-already-exists": "Taggen «$1» finnes fra før.",
        "tags-create-warnings-above": "Vi fikk følgende {{PLURAL:$2|advarsel|advarsler}} da vi prøvde å opprette taggen «$1»:",
        "gotointerwiki-invalid": "Den gitte tittelen er ugyldig.",
        "gotointerwiki-external": "Du er i ferd med å forlate {{SITENAME}} for å besøke [[$2]], som er et annet nettsted.\n\n'''[$1 Fortsett til $1]'''",
        "undelete-cantedit": "Du kan ikke gjenopprette denne siden fordi du ikke har tillatelse til å redigere den.",
-       "undelete-cantcreate": "Du kan ikke gjenopprette denne siden fordi det ikke er noen eksisterende side med dette navnet, og du ikke har tillatelse til å opprette siden."
+       "undelete-cantcreate": "Du kan ikke gjenopprette denne siden fordi det ikke er noen eksisterende side med dette navnet, og du ikke har tillatelse til å opprette siden.",
+       "pagedata-title": "Sidedata",
+       "pagedata-text": "Denne siden gir et datagrensesnitt til sidene. Oppgi en sidetittel i URL-en, med undersidesyntaks.\n* Innholdsforhandling gjelder basert på din klients Accept-header. Dette betyr at sidedataene vil bli gitt i det formatet som foretrekkes av klienten din.",
+       "pagedata-not-acceptable": "Ingen passende format funnet. Støttede MIME-typer: $1",
+       "pagedata-bad-title": "Ugyldig tittel: $1."
 }
index a987d6f..af8796e 100644 (file)
        "anontalk": "Overleg",
        "navigation": "Navigasie",
        "and": "&#32;en",
-       "qbfind": "Zeuken",
-       "qbbrowse": "Blaojen",
-       "qbedit": "Bewark",
-       "qbpageoptions": "Disse zied",
-       "qbmyoptions": "Veurkeuren",
        "faq": "Vragen die vake esteld wörden",
-       "faqpage": "Project:Vragen die vake esteld wörden",
        "actions": "Haandeling",
        "namespaces": "Naamruumtes",
        "variants": "Variaanten",
        "edit-local": "Lokale beschrieving bewarken",
        "create": "Anmaken",
        "create-local": "Lokale beschrieving derbie doon",
-       "editthispage": "Disse zied bewarken",
-       "create-this-page": "Disse zied anmaken",
        "delete": "Vortdoon",
-       "deletethispage": "Disse zied vortdoon",
-       "undeletethispage": "Zied weerummeplaotsen",
        "undelete_short": "$1 {{PLURAL:$1|versie|versies}} weerummeplaotsen",
        "viewdeleted_short": "{{PLURAL:$1|Eén versie die vortedaon is|$1 versies die vortedaon bin}} bekieken",
        "protect": "Beveiligen",
        "protect_change": "wiezigen",
-       "protectthispage": "Beveiligen",
        "unprotect": "Beveiliging wiezigen",
-       "unprotectthispage": "Beveiliging van disse zied wiezigen",
        "newpage": "Nieje zied",
-       "talkpage": "Overlegzied",
        "talkpagelinktext": "Overleg",
        "specialpage": "Spesiale zied",
        "personaltools": "Persoonlike instellingen",
-       "articlepage": "Artikel",
        "talk": "Overleg",
        "views": "Weergaven",
        "toolbox": "Hulpmiddels",
-       "userpage": "gebrukerszied",
-       "projectpage": "Bekiek projektzied",
        "imagepage": "Bestaandszied bekieken",
        "mediawikipage": "Tiejige bekieken",
        "templatepage": "Mal bekieken",
        "recentchanges-legend-heading": "<strong>Legenda:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (zie oek de [[Special:NewPages|lieste mit nieje ziejen]])",
        "recentchanges-submit": "Bekiek",
+       "rcfilters-activefilters": "Aktieve filters",
+       "rcfilters-quickfilters": "Op-esleugen filterinstellingen",
+       "rcfilters-quickfilters-placeholder-title": "Nog gien verwiezingen op-esleugen",
+       "rcfilters-quickfilters-placeholder-description": "Um joew filterinstellingen op te slaon en t laoter te gebruken, klik op t bladwiezerikoon onderan bie \"Aktieve filter\".",
+       "rcfilters-savedqueries-apply-label": "Instellingen opslaon",
+       "rcfilters-savedqueries-cancel-label": "Aofbreken",
+       "rcfilters-savedqueries-add-new-title": "Filterinstellingen opslaon",
+       "rcfilters-restore-default-filters": "Standardfilters weerummezetten",
+       "rcfilters-clear-all-filters": "Alle filters vortdoon",
+       "rcfilters-search-placeholder": "Filter leste wiezigingen (blaojer of begin mit intypen)",
+       "rcfilters-filterlist-feedbacklink": "Geef kommentaar op de nieje (bèta)filters",
+       "rcfilters-highlightbutton-title": "Resultaoten markeren",
+       "rcfilters-highlightmenu-title": "Kies n kleur",
+       "rcfilters-filter-bots-label": "Bot",
+       "rcfilters-filter-humans-label": "Meenselik (gien bot)",
+       "rcfilters-filter-humans-description": "Bewarkingen deur meenselike bewarkers.",
+       "rcfilters-filtergroup-reviewstatus": "Beoordelingsstaotus",
+       "rcfilters-filter-patrolled-label": "Nao-ekeken",
+       "rcfilters-filter-unpatrolled-label": "Niet nao-ekeken",
+       "rcfilters-filtergroup-significance": "Petansie",
+       "rcfilters-filter-minor-label": "Kleine bewarkingen",
+       "rcfilters-filter-major-label": "Gien kleine bewarking",
+       "rcfilters-filter-major-description": "Bewarkingen niet emarkeerd as klein.",
+       "rcfilters-filtergroup-watchlist": "Evolgde ziejen",
+       "rcfilters-filter-watchlist-watched-label": "Op de volglieste",
+       "rcfilters-filter-watchlist-watched-description": "Wiezigingen an ziejen op joew volglieste.",
+       "rcfilters-filter-watchlist-watchednew-label": "Nieje volgliestwiezigingen",
+       "rcfilters-filter-watchlist-notwatched-label": "Niet op de volglieste",
+       "rcfilters-filter-watchlist-notwatched-description": "Alles behalve wiezigingen an ziejen die op joew volglieste staon.",
+       "rcfilters-filter-pageedits-label": "Ziedbewarkingen",
+       "rcfilters-filter-newpages-label": "Nieje ziejen",
+       "rcfilters-filter-newpages-description": "Bewarkingen waormee'j een nieje zied anmaken.",
+       "rcfilters-filter-categorization-label": "Kategoriewiezigingen",
+       "rcfilters-filter-logactions-label": "Eregistreerden aksies",
+       "rcfilters-filtergroup-lastRevision": "Leste versie",
+       "rcfilters-filter-lastrevision-label": "Leste versie",
+       "rcfilters-filter-previousrevision-label": "Eerdere versies",
        "rcnotefrom": "Dit bin de wiezigingen sinds <strong>$2</strong> (maximum van <strong>$1</strong> wiezigingen).",
        "rclistfrom": "Bekiek wiezigingen vanaof $3 $2",
        "rcshowhideminor": "$1 kleine wiezigingen",
        "upload-too-many-redirects": "Der zatten te veule deurverwiezingen in de URL.",
        "upload-http-error": "Der is n HTTP-fout op-etrejen: $1",
        "upload-copy-upload-invalid-domain": "Bestaanden per kopie opsturen is niet beschikbaor vanuut dit domein.",
+       "upload-dialog-button-cancel": "Aofbreken",
+       "upload-dialog-button-back": "Weerumme",
+       "upload-dialog-button-done": "Ree",
+       "upload-dialog-button-save": "Opslaon",
+       "upload-dialog-button-upload": "Bestaand opsturen",
+       "upload-form-label-infoform-title": "Details",
+       "upload-form-label-infoform-name": "Naam",
+       "upload-form-label-infoform-description": "Beschrieving",
+       "upload-form-label-usage-title": "Gebruuk",
+       "upload-form-label-usage-filename": "Bestaandsnaam",
+       "upload-form-label-infoform-categories": "Kategorieën",
+       "upload-form-label-infoform-date": "Daotum",
        "backend-fail-stream": "t Was niet meugelik t bestaand $1 te streumen.",
        "backend-fail-backup": "t Was niet meugelik n reservekopie van t bestaand $1 te maken.",
        "backend-fail-notexists": "t Bestaand $1 besteet niet.",
        "wlnote": "Hieronder {{PLURAL:$1|steet de leste wieziging|staon de leste $1 wiezigingen}} in {{PLURAL:$2|t aofgeleupen ure|de leste $2 uren}} vanaof $3 um $4.",
        "wlshowlast": "Laot de veurbieje $1 uur $2 dagen  zien",
        "watchlist-submit": "Bekiek",
+       "wlshowhideminor": "kleine bewarkingen",
        "watchlist-options": "Opsies veur de volglieste",
        "watching": "Volg...",
        "unwatching": "Niet volgen...",
index 85ea31a..893deaa 100644 (file)
        "anontalk": "Overleg",
        "navigation": "Navigatie",
        "and": "&#32;en",
-       "qbfind": "Zoeken",
-       "qbbrowse": "Bladeren",
-       "qbedit": "Bewerken",
-       "qbpageoptions": "Deze pagina",
-       "qbmyoptions": "Mijn pagina's",
        "faq": "Veelgestelde vragen",
-       "faqpage": "Project:Veelgestelde vragen",
        "actions": "Handelingen",
        "namespaces": "Naamruimten",
        "variants": "Varianten",
        "edit-local": "Lokale beschrijving bewerken",
        "create": "Aanmaken",
        "create-local": "Lokale beschrijving toevoegen",
-       "editthispage": "Deze pagina bewerken",
-       "create-this-page": "Deze pagina aanmaken",
        "delete": "Verwijderen",
-       "deletethispage": "Deze pagina verwijderen",
-       "undeletethispage": "Pagina terugplaatsen",
        "undelete_short": "{{PLURAL:$1|één bewerking|$1 bewerkingen}} terugplaatsen",
        "viewdeleted_short": "{{PLURAL:$1|Eén geschrapte bewerking |$1 geschrapte bewerkingen}} bekijken",
        "protect": "Beveiligen",
        "protect_change": "wijzigen",
-       "protectthispage": "Deze pagina beveiligen",
        "unprotect": "Beveiliging wijzigen",
-       "unprotectthispage": "Beveiliging van deze pagina wijzigen",
        "newpage": "Nieuwe pagina",
-       "talkpage": "Overlegpagina",
        "talkpagelinktext": "overleg",
        "specialpage": "Speciale pagina",
        "personaltools": "Persoonlijke instellingen",
-       "articlepage": "Pagina bekijken",
        "talk": "Overleg",
        "views": "Weergaven",
        "toolbox": "Hulpmiddelen",
        "tool-link-userrights": "{{GENDER:$1|Gebruikersgroepen}} wijzigen",
        "tool-link-userrights-readonly": "{{GENDER:$1|Gebruikers}}groepen weergeven",
        "tool-link-emailuser": "Deze {{GENDER:$1|gebruiker}} e-mailen",
-       "userpage": "Gebruikerspagina bekijken",
-       "projectpage": "Projectpagina bekijken",
        "imagepage": "Bestandspagina bekijken",
        "mediawikipage": "Berichtpagina bekijken",
        "templatepage": "Sjabloonpagina bekijken",
        "rcfilters-noresults-conflict": "Geen resultaten gevonden omdat de zoekcriteria met elkaar conflicteren",
        "rcfilters-state-message-subset": "Dit filter heeft geen effect omdat de resultaten ook worden gefilterd door {{PLURAL:$2|het|de}} bredere {{PLURAL:$2|filter|filters}} (probeer ze te markeren om ze te onderscheiden): $1",
        "rcfilters-state-message-fullcoverage": "Het selecteren van alle filters in deze groep is hetzelfde als geen filter selecteren, waardoor dit filter geen effect heeft. De groep bevat: $1",
-       "rcfilters-filtergroup-registration": "Gebruikers-registratie",
+       "rcfilters-filtergroup-registration": "Gebruikersregistratie",
        "rcfilters-filter-registered-label": "Geregistreerd",
        "rcfilters-filter-registered-description": "Ingelogde gebruikers.",
        "rcfilters-filter-unregistered-label": "Niet-geregistreerd",
        "rcfilters-filter-editsbyself-description": "Uw eigen bijdragen.",
        "rcfilters-filter-editsbyother-label": "Wijzigingen door anderen",
        "rcfilters-filter-editsbyother-description": "Alle wijzigingen behalve die door u gemaakt zijn.",
-       "rcfilters-filtergroup-userExpLevel": "Gebruikerservarings niveau (alleen voor geregistreerde gebruikers)",
+       "rcfilters-filtergroup-userExpLevel": "Ervaringsniveau (alleen voor geregistreerde gebruikers)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Nieuwkomers",
        "rcfilters-filter-user-experience-level-newcomer-description": "Minder dan 10 bewerkingen en 4 dagen van activiteit.",
        "rcfilters-filter-user-experience-level-learner-label": "Leerlingen",
        "rcfilters-filter-watchlist-watchednew-label": "Nieuwe volglijstwijzigingen",
        "rcfilters-filter-watchlist-watchednew-description": "Wijzigingen aan pagina's die op uw volglijst staan, die u nog niet hebt bezocht sinds de wijziging.",
        "rcfilters-filter-watchlist-notwatched-label": "Niet op de volglijst",
-       "rcfilters-filter-watchlist-notwatched-description": "Alles behalve wijzigingen op pagina's die op uw Volglijst staan.",
+       "rcfilters-filter-watchlist-notwatched-description": "Alles behalve wijzigingen aan pagina's die op uw volglijst staan.",
        "rcfilters-filtergroup-changetype": "Soort wijziging",
        "rcfilters-filter-pageedits-label": "Paginabewerkingen",
-       "rcfilters-filter-pageedits-description": "Wijzigingen aan de wiki inhoud, discussies, categorie beschrijvingen....",
+       "rcfilters-filter-pageedits-description": "Wijzigingen aan de wiki inhoud, discussies, categorie beschrijvingen",
        "rcfilters-filter-newpages-label": "Nieuwe pagina's",
        "rcfilters-filter-newpages-description": "Bewerkingen die een nieuwe pagina aanmaken.",
-       "rcfilters-filter-categorization-label": "Categorie wijzigingen",
-       "rcfilters-filter-categorization-description": "Categorisatie van pagina's tonen",
+       "rcfilters-filter-categorization-label": "Categoriewijzigingen",
+       "rcfilters-filter-categorization-description": "Categorisatie van pagina's tonen.",
        "rcfilters-filter-logactions-label": "Geregistreerde acties",
-       "rcfilters-filter-logactions-description": "Administratieve handelingen, account creaties, pagina verwijderingen, uploads....",
+       "rcfilters-filter-logactions-description": "Administratieve handelingen, account creaties, pagina verwijderingen, uploads",
        "rcfilters-hideminor-conflicts-typeofchange": "Bepaalde soorten wijzigingen kunnen niet worden aangemerkt als \"klein\", dus dit filter is in conflict met de volgende soorten wijzigingenfilters: $1",
        "rcfilters-filtergroup-lastRevision": "Laatste versie",
        "rcfilters-filter-lastrevision-label": "Laatste versie",
        "rcfilters-filter-lastrevision-description": "De meest recente wijziging aan de pagina.",
        "rcfilters-filter-previousrevision-label": "Eerdere versies",
        "rcfilters-filter-previousrevision-description": "Alle wijzigingen die niet de meest recente wijziging op de pagina zijn.",
+       "rcfilters-filter-excluded": "Uitgesloten",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:niet</strong> $1",
+       "rcfilters-view-tags": "Labels",
        "rcnotefrom": "Wijzigingen sinds <strong>$3 om $4</strong> (maximaal <strong>$1</strong> {{PLURAL:$1|wijziging|wijzigingen}}).",
        "rclistfromreset": "Datum selectie opnieuw instellen",
        "rclistfrom": "Wijzigingen bekijken vanaf $3 $2",
        "newimages-legend": "Bestandsnaam",
        "newimages-label": "Bestandsnaam (of deel daarvan):",
        "newimages-user": "IP-adres of gebruikersnaam",
+       "newimages-newbies": "Alleen de bijdragen van nieuwe gebruikers bekijken",
        "newimages-showbots": "Uploads door bots weergeven",
        "newimages-hidepatrolled": "Gecontroleerde uploads verbergen",
+       "newimages-mediatype": "Mediatype:",
        "noimages": "Er is niets te zien.",
        "gallery-slideshow-toggle": "Miniaturen schakelen",
        "ilsubmit": "Zoeken",
        "tags-create-reason": "Reden:",
        "tags-create-submit": "Aanmaken",
        "tags-create-no-name": "U moet een labelnaam opgeven.",
-       "tags-create-invalid-chars": "Labelnamen mogen geen komma's (<code>,</code>) of slashes (<code>/</code>) bevatten.",
+       "tags-create-invalid-chars": "Labelnamen mogen geen komma's (<code>,</code>), sluistekens (<code>|</code>), of slashes (<code>/</code>) bevatten.",
        "tags-create-invalid-title-chars": "Labelnamen mogen geen tekens bevatten die niet gebruikt kunnen worden in paginanamen.",
        "tags-create-already-exists": "Het label \"$1\" bestaat al.",
        "tags-create-warnings-above": "De volgende {{PLURAL:$2|waarschuwing is|waarschuwningen zijn}} opgetreden tijdens het aanmaken van het label \"$1\":",
        "gotointerwiki-invalid": "De opgegeven titel is ongeldig.",
        "gotointerwiki-external": "U staat op het punt om {{SITENAME}} te verlaten en [[$2]] te bezoeken. [[$2]] is een aparte website.\n\n'''[$1 Doorgaan naar $1]'''",
        "undelete-cantedit": "U kunt deze pagina niet terug plaatsen omdat u niet het recht hebt om deze pagina te bewerken.",
-       "undelete-cantcreate": "U kunt deze pagina niet terugplaatsen omdat er geen bestaande pagina met deze naam is en u geen toestemming hebt om deze pagina aan te maken."
+       "undelete-cantcreate": "U kunt deze pagina niet terugplaatsen omdat er geen bestaande pagina met deze naam is en u geen toestemming hebt om deze pagina aan te maken.",
+       "pagedata-not-acceptable": "Er is geen overeenkomende indeling gevonden. Ondersteunde MIME-typen: $1",
+       "pagedata-bad-title": "Ongeldige titel: $1."
 }
index b6e7ab4..0ff5edb 100644 (file)
        "anontalk": "Diskusjon",
        "navigation": "Navigering",
        "and": "&#32;og",
-       "qbfind": "Finn",
-       "qbbrowse": "Bla gjennom",
-       "qbedit": "Endre",
-       "qbpageoptions": "Denne sida",
-       "qbmyoptions": "Sidene mine",
        "faq": "OSS",
-       "faqpage": "Project:OSS",
        "actions": "Handlingar",
        "namespaces": "Namnerom",
        "variants": "Variantar",
        "edit-local": "Endre lokal skildring",
        "create": "Opprett",
        "create-local": "Legg til lokal skildring",
-       "editthispage": "Endre sida",
-       "create-this-page": "Opprett sida",
        "delete": "Slett",
-       "deletethispage": "Slett denne sida",
-       "undeletethispage": "Attopprett sida",
        "undelete_short": "Attopprett {{PLURAL:$1|éin versjon|$1 versjonar}}",
        "viewdeleted_short": "Vis {{PLURAL:$1|éin sletta versjon|$1 sletta versjonar}}",
        "protect": "Vern",
        "protect_change": "endre",
-       "protectthispage": "Vern denne sida",
        "unprotect": "Endra vern",
-       "unprotectthispage": "Endra vernet av sida",
        "newpage": "Ny side",
-       "talkpage": "Diskuter sida",
        "talkpagelinktext": "Diskusjon",
        "specialpage": "Spesialside",
        "personaltools": "Personlege verktøy",
-       "articlepage": "Vis innhaldsside",
        "talk": "Diskusjon",
        "views": "Visningar",
        "toolbox": "Verktøy",
        "tool-link-userrights": "Endra {{GENDER:$1|brukargrupper}}",
        "tool-link-userrights-readonly": "Syn {{GENDER:$1|brukar}}grupper",
        "tool-link-emailuser": "Send e-post til {{GENDER:$1|brukaren}}",
-       "userpage": "Vis brukarside",
-       "projectpage": "Sjå prosjektsida",
        "imagepage": "Vis filside",
        "mediawikipage": "Vis systemmeldingsside",
        "templatepage": "Vis malside",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (sjå dessutan [[Special:NewPages|lista over nye sider]])",
        "recentchanges-submit": "Vis",
        "rcfilters-activefilters": "Aktive filter",
+       "rcfilters-quickfilters": "Lagra filterinnstillingar",
+       "rcfilters-quickfilters-placeholder-title": "Ingen lenkjer er lagra enno",
+       "rcfilters-quickfilters-placeholder-description": "For å lagra filterinnstillingane dine og bruka dei på nytt seinare, klikk på bokmerkeikonet i området for aktive filter under.",
        "rcfilters-savedqueries-defaultlabel": "Lagra filter",
+       "rcfilters-savedqueries-rename": "Gje nytt namn",
+       "rcfilters-savedqueries-new-name-label": "Namn",
+       "rcfilters-savedqueries-apply-label": "Lagra innstillingar",
+       "rcfilters-savedqueries-add-new-title": "Lagra gjeldande filterinnstillingar",
        "rcfilters-clear-all-filters": "Fjern alle filter",
        "rcfilters-search-placeholder": "Filtrer siste endringar (gå gjennom liste eller skriv filternamn)",
+       "rcfilters-invalid-filter": "Ugyldig filter",
        "rcfilters-empty-filter": "Ingen aktive filter. Alle bidrag er viste.",
        "rcfilters-filterlist-title": "Filter",
        "rcfilters-filterlist-feedbacklink": "Gje attendemelding på dei nye (beta)filtera",
        "rcshowhidemine-hide": "Gøym",
        "rcshowhidecategorization": "$1 kategorisering av sider",
        "rcshowhidecategorization-show": "Vis",
+       "rcshowhidecategorization-hide": "Gøym",
        "rclinks": "Vis dei siste $1 endringane dei siste $2 dagane",
        "diff": "skil",
        "hist": "hist",
        "upload-http-error": "Ein HTTP-feil oppstod: $1",
        "upload-copy-upload-invalid-domain": "Kopiopplastingar er ikkje tilgjengelege frå dette domenet.",
        "upload-dialog-button-cancel": "Bryt av",
+       "upload-form-label-infoform-name": "Namn",
+       "upload-form-label-usage-filename": "Filnamn",
        "backend-fail-stream": "Kunne ikkje strøyma fila «$1».",
        "backend-fail-backup": "Kunne ikkje tryggingskopiera fila «$1».",
        "backend-fail-notexists": "Fila $1 finst ikkje.",
        "apisandbox-submit": "Gjer førespurnad",
        "apisandbox-reset": "Tøm",
        "apisandbox-examples": "Døme",
+       "apisandbox-dynamic-parameters-add-placeholder": "Parameternamn",
        "apisandbox-results": "Utfall",
        "apisandbox-request-url-label": "Førespurd URL:",
        "apisandbox-request-time": "Førespurnadstid: $1",
        "sp-contributions-username": "IP-adresse eller brukarnamn:",
        "sp-contributions-toponly": "Vis berre endringar som er gjeldande versjonar",
        "sp-contributions-newonly": "Berre vis endringar som oppretta ei side",
+       "sp-contributions-hideminor": "Gøym småplukk",
        "sp-contributions-submit": "Søk",
        "whatlinkshere": "Lenkjer hit",
        "whatlinkshere-title": "Sider som har lenkje til «$1»",
        "confirmrecreate": "Brukaren «[[User:$1|$1]]» ([[User talk:$1|brukardiskusjon]]) sletta denne sida medan du endra henne, og gav denne grunnen: ''$2''\n\nDu må stadfeste at du verkeleg vil nyopprette denne sida.",
        "confirmrecreate-noreason": "Brukaren [[User:$1|$1]] ([[User talk:$1|diskusjon]]) sletta sida etter at du byrja å endra henne. Stadfest at du verkeleg ynskjer å oppretta sida på nytt.",
        "recreate": "Attopprett",
+       "confirm-purge-title": "Slett mellomlagring av sida",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Vil du slette tenarane sin mellomlagra versjon av denne sida?",
        "confirm-purge-bottom": "Reinsing av ei side slettar mellomlageret og tvingar fram den nyaste versjonen.",
        "logentry-newusers-create2": "Brukarkontoen $3 vart {{GENDER:$2|oppretta}} av $1",
        "logentry-newusers-byemail": "Brukarkontoen $3 vart {{GENDER:$2|oppretta}} av $1 og passord vart sendt med e-post",
        "logentry-newusers-autocreate": "Brukarkontoen $1 vart {{GENDER:$2|oppretta}} av seg sjølv",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|flytte}} verneinnstillingar frå $4 til $3",
        "logentry-protect-unprotect": "$1 {{GENDER:$2|fjerna}} vern av $3",
        "logentry-protect-protect": "$1 {{GENDER:$2|verna}} $3 $4",
        "logentry-rights-rights": "$1 {{GENDER:$2|endra}} gruppemedlemskap for $3 frå $4 til $5",
        "special-characters-group-telugu": "Telugu",
        "special-characters-group-sinhala": "Singalesisk",
        "special-characters-group-gujarati": "Gujarati",
+       "mw-widgets-dateinput-no-date": "Ingen dato er vald",
        "mw-widgets-dateinput-placeholder-day": "ÅÅÅÅ-MM-DD",
        "mw-widgets-dateinput-placeholder-month": "ÅÅÅÅ-MM",
        "mw-widgets-titleinput-description-new-page": "sida finst ikkje enno",
        "mw-widgets-titleinput-description-redirect": "omdiriger til $1",
+       "date-range-from": "Frå dato:",
+       "date-range-to": "Til dato:",
        "randomrootpage": "Tilfeldig rotsida",
        "log-action-filter-rights": "Type endring av rettar:",
        "authmanager-userdoesnotexist": "Brukarkontoen «$1» er ikkje oppretta.",
index 3527801..8f7e95f 100644 (file)
        "anontalk": "Dyskusja",
        "navigation": "Nawigacja",
        "and": "&#32;oraz",
-       "qbfind": "Znajdź",
-       "qbbrowse": "Przeglądanie",
-       "qbedit": "Edycja",
-       "qbpageoptions": "Ta strona",
-       "qbmyoptions": "Moje strony",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Akcje",
        "namespaces": "Przestrzenie nazw",
        "variants": "Warianty",
        "edit-local": "Edytuj lokalny opis",
        "create": "Utwórz",
        "create-local": "Dodaj lokalny opis",
-       "editthispage": "Edytuj tę stronę",
-       "create-this-page": "Utwórz tę stronę",
        "delete": "Usuń",
-       "deletethispage": "Usuń tę stronę",
-       "undeletethispage": "Przywróć tę stronę",
        "undelete_short": "odtwórz {{PLURAL:$1|1 wersję|$1 wersje|$1 wersji}}",
        "viewdeleted_short": "Podgląd {{PLURAL:$1|usuniętej|$1 usuniętych}} wersji",
        "protect": "Zabezpiecz",
        "protect_change": "zmień",
-       "protectthispage": "Zabezpiecz tę stronę",
        "unprotect": "Zmień zabezpieczenie",
-       "unprotectthispage": "Zmień zabezpieczenie strony",
        "newpage": "Nowa strona",
-       "talkpage": "Dyskusja",
        "talkpagelinktext": "dyskusja",
        "specialpage": "Strona specjalna",
        "personaltools": "Narzędzia osobiste",
-       "articlepage": "Pokaż zawartość strony",
        "talk": "Dyskusja",
        "views": "Widok",
        "toolbox": "Narzędzia",
        "tool-link-userrights": "Zmiana grup {{GENDER:$1|użytkownika|użytkowniczki}}",
        "tool-link-userrights-readonly": "Zobacz grupy {{GENDER:$1|użytkownika|użytkowniczki}}",
        "tool-link-emailuser": "Wyślij e-mail do {{GENDER:$1|tego użytkownika|tej użytkowniczki}}",
-       "userpage": "Pokaż stronę użytkownika",
-       "projectpage": "Pokaż stronę projektu",
        "imagepage": "Pokaż stronę pliku",
        "mediawikipage": "Strona komunikatu",
        "templatepage": "Strona szablonu",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Pokaż",
        "rcfilters-activefilters": "Aktywne filtry",
-       "rcfilters-quickfilters": "Szybkie linki",
+       "rcfilters-quickfilters": "Zapisane ustawienia filtrów",
        "rcfilters-quickfilters-placeholder-title": "Nie masz jeszcze zapisanych linków",
        "rcfilters-quickfilters-placeholder-description": "Aby zapisać ustawienia filtrów i używać ich później, kliknij ikonkę zakładki w polu aktywnych filtrów znajdującym się niżej.",
        "rcfilters-savedqueries-defaultlabel": "Zapisane filtry",
        "rcfilters-savedqueries-new-name-label": "Nazwa",
        "rcfilters-savedqueries-apply-label": "Zapisz ustawienia",
        "rcfilters-savedqueries-cancel-label": "Anuluj",
-       "rcfilters-savedqueries-add-new-title": "Zapisz szybki link do filtrów",
+       "rcfilters-savedqueries-add-new-title": "Zapisz bieżące ustawienia filtrów",
        "rcfilters-restore-default-filters": "Przywróć domyślne filtry",
        "rcfilters-clear-all-filters": "Wyczyść filtry",
        "rcfilters-search-placeholder": "Filtruj ostatnie zmiany (przeglądaj lub zacznij wpisywać)",
        "rcfilters-filter-watchlist-notwatched-description": "Wszystko oprócz zmian na obserwowanych przez ciebie stronach.",
        "rcfilters-filtergroup-changetype": "Rodzaj zmiany",
        "rcfilters-filter-pageedits-label": "Edycje strony",
-       "rcfilters-filter-pageedits-description": "Edycje treści, stron dyskusji, opisów kategorii...",
+       "rcfilters-filter-pageedits-description": "Edycje treści, stron dyskusji, opisów kategorii",
        "rcfilters-filter-newpages-label": "Tworzenie stron",
        "rcfilters-filter-newpages-description": "Zmiany prowadzące do utworzenia nowych stron.",
        "rcfilters-filter-categorization-label": "Zmiany kategorii",
        "rcfilters-filter-categorization-description": "Dodanie lub usunięcie strony z kategorii",
        "rcfilters-filter-logactions-label": "Działania rejestrowane",
-       "rcfilters-filter-logactions-description": "Działania administracyjne, tworzenie kont, usuwanie stron, przesyłanie plików...",
+       "rcfilters-filter-logactions-description": "Działania administracyjne, tworzenie kont, usuwanie stron, przesyłanie plików",
        "rcfilters-hideminor-conflicts-typeofchange-global": "Filtr „Drobne zmiany” koliduje z jednym lub wieloma filtrami Rodzaju zmian, ponieważ niektóre rodzaje zmian nie mogą być uznawane za  „drobne”. Kolidujące filtry zostały powyżej odpowiednio zaznaczone na pasku aktywnych filtrów.",
        "rcfilters-hideminor-conflicts-typeofchange": "Niektóre rodzaje zmian nie mogą być uznawane za „drobne”, dlatego ten filtr koliduje z następującymi filtrami Rodzaju zmian: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Ten filtr Rodzaju zmian koliduje z filtrem „Drobne zmiany”. Nie wszystkie zmiany mogą być uznawane za „drobne”.",
index ada8c0d..7fac425 100644 (file)
        "anontalk": "Discussão",
        "navigation": "Navegação",
        "and": "&#32;e",
-       "qbfind": "Procurar",
-       "qbbrowse": "Navegar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta página",
-       "qbmyoptions": "Minhas páginas",
        "faq": "Perguntas frequentes",
-       "faqpage": "Project:Perguntas frequentes",
        "actions": "Ações",
        "namespaces": "Domínios",
        "variants": "Variantes",
        "edit-local": "Editar descrição local",
        "create": "Criar",
        "create-local": "Adicionar descrição local",
-       "editthispage": "Editar esta página",
-       "create-this-page": "Iniciar esta página",
        "delete": "Eliminar",
-       "deletethispage": "Eliminar esta página",
-       "undeletethispage": "Restaurar esta página",
        "undelete_short": "Restaurar {{PLURAL:$1|uma edição|$1 edições}}",
        "viewdeleted_short": "Ver {{PLURAL:$1|uma edição eliminada|$1 edições eliminadas}}",
        "protect": "Proteger",
        "protect_change": "alterar",
-       "protectthispage": "Proteger esta página",
        "unprotect": "Alterar a proteção",
-       "unprotectthispage": "Alterar a proteção desta página",
        "newpage": "Página nova",
-       "talkpage": "Discutir sobre esta página",
        "talkpagelinktext": "discussão",
        "specialpage": "Página especial",
        "personaltools": "Ferramentas pessoais",
-       "articlepage": "Ver página de conteúdo",
        "talk": "Discussão",
        "views": "Visualizações",
        "toolbox": "Ferramentas",
        "tool-link-userrights": "Editar grupos {{GENDER:$1|do usuário|da usuária|do(a) usuário(a)}}",
        "tool-link-userrights-readonly": "Ver grupos {{GENDER:$1|do usuário|da usuária}}",
        "tool-link-emailuser": "Enviar e-mail a {{GENDER:$1|este usuário|esta usuária|este(a) usuário(a)}}",
-       "userpage": "Ver página de usuário",
-       "projectpage": "Ver página de projeto",
        "imagepage": "Ver página do arquivo",
        "mediawikipage": "Ver página de mensagens",
        "templatepage": "Ver página de predefinições",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Exibir",
        "rcfilters-activefilters": "Filtros ativos",
-       "rcfilters-quickfilters": "Links Rápidos",
+       "rcfilters-quickfilters": "Configurações de filtros gravadas",
        "rcfilters-quickfilters-placeholder-title": "Ainda não foi gravado nenhum link",
        "rcfilters-quickfilters-placeholder-description": "Para gravar as suas configurações dos filtros e reutilizá-las mais tarde, clique o ícone do marcador de página, na área Filtro Ativo abaixo.",
        "rcfilters-savedqueries-defaultlabel": "Filtros salvos",
        "rcfilters-savedqueries-unsetdefault": "Remover como padrão",
        "rcfilters-savedqueries-remove": "Remover",
        "rcfilters-savedqueries-new-name-label": "Nome",
-       "rcfilters-savedqueries-apply-label": "Criar link rápido",
+       "rcfilters-savedqueries-apply-label": "Salvar configurações",
        "rcfilters-savedqueries-cancel-label": "Cancelar",
-       "rcfilters-savedqueries-add-new-title": "Salvar filtros como um link rápido",
+       "rcfilters-savedqueries-add-new-title": "Gravar configurações atuais de filtros",
        "rcfilters-restore-default-filters": "Restaurar filtros padrão",
        "rcfilters-clear-all-filters": "Limpar todos os filtros",
        "rcfilters-search-placeholder": "Filtrar mudanças recentes (procurar ou começar a digitar)",
        "rcfilters-filter-watchlist-notwatched-description": "Tudo menos modificações das suas páginas vigiadas.",
        "rcfilters-filtergroup-changetype": "Tipo de mudança",
        "rcfilters-filter-pageedits-label": "Edições da página",
-       "rcfilters-filter-pageedits-description": "Edições para conteúdo wiki, discussões, descrições de categorias ....",
+       "rcfilters-filter-pageedits-description": "Edições para conteúdo wiki, discussões, descrições de categorias...",
        "rcfilters-filter-newpages-label": "Criações de páginas",
        "rcfilters-filter-newpages-description": "Edições que fazem novas páginas.",
        "rcfilters-filter-categorization-label": "Mudanças de categoria",
        "rcfilters-filter-categorization-description": "Registros de páginas que estão sendo adicionadas ou removidas de categorias.",
        "rcfilters-filter-logactions-label": "Acções registadas",
-       "rcfilters-filter-logactions-description": "Ações administrativas, criação de contas, eliminação de páginas, carregamentos ...",
+       "rcfilters-filter-logactions-description": "Ações administrativas, criação de contas, eliminação de páginas, carregamentos...",
        "rcfilters-hideminor-conflicts-typeofchange-global": "O filtro \"Edições menores\" conflita com um ou mais filtros de Tipo de Alteração, porque certos tipos de alteração não podem ser designadas como \"menores\". Os filtros em conflito estão marcados na área Filtros Ativos, acima.",
        "rcfilters-hideminor-conflicts-typeofchange": "Determinados tipos de alteração não podem ser designados como \"menor\", portanto, este filtro entra em conflito com os seguintes filtros de Tipo de Alteração: $1",
        "rcfilters-typeofchange-conflicts-hideminor": "Este filtro de Tipo de Alteração entra em conflito com o filtro \"Edições menores\". Certos tipos de mudança não podem ser designadas como \"menores\".",
        "rcfilters-filter-lastrevision-description": "A alteração mais recente para uma página.",
        "rcfilters-filter-previousrevision-label": "Revisões anteriores",
        "rcfilters-filter-previousrevision-description": "Todas as alterações que não são a alteração mais recente para uma página.",
+       "rcfilters-filter-excluded": "Excluído",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:não</strong> $1",
+       "rcfilters-view-tags": "Etiquetas",
        "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",
        "autoblocklist-submit": "Pesquisar",
        "autoblocklist-legend": "Listar bloqueios automáticos",
        "autoblocklist-localblocks": "{{PLURAL:$1|Bloqueio automático local|Bloqueios automáticos locais}}",
+       "autoblocklist-total-autoblocks": "Número total de bloqueios automáticos: $1",
        "autoblocklist-empty": "A lista de bloqueios automáticos está vazia.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Outro bloqueio automático|Outros bloqueios automáticos}}",
        "ipblocklist": "Usuários bloqueados",
        "newimages-legend": "Filtrar",
        "newimages-label": "Nome de arquivo (ou parte dele):",
        "newimages-user": "Endereço IP ou nome do usuário:",
+       "newimages-newbies": "Mostrar apenas as contribuições das novas contas",
        "newimages-showbots": "Mostrar uploads realizados por robôs",
        "newimages-hidepatrolled": "Ocultar os carregamentos patrulhados.",
+       "newimages-mediatype": "Tipo de mídia:",
        "noimages": "Nada para ver.",
        "gallery-slideshow-toggle": "Alternar miniaturas",
        "ilsubmit": "Pesquisar",
        "tags-create-reason": "Razão:",
        "tags-create-submit": "Criar",
        "tags-create-no-name": "Você deve especificar um nome de etiqueta",
-       "tags-create-invalid-chars": "Nomes de etiquetas não devem conter vírgulas (<code>,</code>) ou barras (<code>/</code>).",
+       "tags-create-invalid-chars": "Os nomes das etiquetas não podem conter vírgulas (<code>,</code>), barras verticais (<code>|</code>) ou barras (<code>/</code>).",
        "tags-create-invalid-title-chars": "Nomes de etiqueta não devem conter caracteres que não possam ser utilizados em títulos de páginas.",
        "tags-create-already-exists": "A etiqueta \"$1\" já existe.",
        "tags-create-warnings-above": "O(s) seguinte(s) {{PLURAL:$2|aviso foi|avisos foram}} encontrado(s) ao tentar criar a etiqueta \"$1\":",
        "gotointerwiki-invalid": "O título especificado é inválido.",
        "gotointerwiki-external": "Você está prestes a sair {{SITENAME}} para visitar [[$2]] que é um website separado.\n\n[$1 Continuar para $1].",
        "undelete-cantedit": "Você não pode restaurar esta página, porque você não está autorizado a editar esta página.",
-       "undelete-cantcreate": "Você não pode restaurar esta página, pois não há uma página com este nome e você não está autorizado a criar esta página."
+       "undelete-cantcreate": "Você não pode restaurar esta página, pois não há uma página com este nome e você não está autorizado a criar esta página.",
+       "pagedata-title": "Dados de página",
+       "pagedata-text": "Esta página fornece uma interface de dados para páginas. Forneça o título da página no URL, usando a sintaxe de subpáginas, por favor.\n* Aplica-se a negociação de conteúdo com base no cabeçalho Accept do seu cliente. Isto significa que os dados da página serão fornecidos no formato preferido do seu cliente.",
+       "pagedata-not-acceptable": "Nenhum formato correspondente encontrado. Tipos MIME suportados: $1",
+       "pagedata-bad-title": "Título inválido: $1."
 }
index 18c52c1..9d369f7 100644 (file)
        "anontalk": "Discussão",
        "navigation": "Navegação",
        "and": "&#32;e",
-       "qbfind": "Procurar",
-       "qbbrowse": "Navegar",
-       "qbedit": "Editar",
-       "qbpageoptions": "Esta página",
-       "qbmyoptions": "As minhas páginas",
        "faq": "Perguntas frequentes",
-       "faqpage": "Project:FAQ",
        "actions": "Ações",
        "namespaces": "Domínios",
        "variants": "Variantes",
        "edit-local": "Editar descrição local",
        "create": "Criar",
        "create-local": "Adicionar descrição local",
-       "editthispage": "Editar esta página",
-       "create-this-page": "Criar esta página",
        "delete": "Eliminar",
-       "deletethispage": "Eliminar esta página",
-       "undeletethispage": "Restaurar esta página",
        "undelete_short": "Restaurar {{PLURAL:$1|uma edição|$1 edições}}",
        "viewdeleted_short": "Ver {{PLURAL:$1|uma edição eliminada|$1 edições eliminadas}}",
        "protect": "Proteger",
        "protect_change": "alterar",
-       "protectthispage": "Proteger esta página",
        "unprotect": "Alterar proteção",
-       "unprotectthispage": "Alterar a proteção desta página",
        "newpage": "Página nova",
-       "talkpage": "Discutir esta página",
        "talkpagelinktext": "Discussão",
        "specialpage": "Página especial",
        "personaltools": "Ferramentas pessoais",
-       "articlepage": "Ver página de conteúdo",
        "talk": "Discussão",
        "views": "Vistas",
        "toolbox": "Ferramentas",
        "tool-link-userrights": "Alterar grupos {{GENDER:$1|do utilizador|da utilizadora}}",
        "tool-link-userrights-readonly": "Ver grupos {{GENDER:$1|do utilizador|da utilizadora}}",
        "tool-link-emailuser": "Enviar correio eletrónico a {{GENDER:$1|este utilizador|esta utilizadora|este(a) utilizador(a)}}",
-       "userpage": "Ver página de utilizador",
-       "projectpage": "Ver página de projeto",
        "imagepage": "Ver página de ficheiro",
        "mediawikipage": "Ver página de mensagem",
        "templatepage": "Ver página de predefinição",
        "jumptonavigation": "navegação",
        "jumptosearch": "pesquisa",
        "view-pool-error": "Desculpe, mas de momento os servidores estão sobrecarregados.\nHá demasiados utilizadores a tentar visualizar esta página.\nEspere um pouco antes de tentar aceder à página novamente, por favor.\n\n$1",
-       "generic-pool-error": "Desculpe, os servidores estão sobrecarregados nesse momento.\nDemasiados utilizadores estão tentando visualizar este recurso.\nPor favor, espere um pouco antes de tentar aceder a este recurso novamente.",
+       "generic-pool-error": "Desculpe, neste momento os servidores estão sobrecarregados.\nHá demasiados utilizadores a tentar ver este recurso.\nEspere um pouco antes de tentar aceder a este recurso novamente, por favor.",
        "pool-timeout": "Tempo limite de espera para o bloqueio excedido",
        "pool-queuefull": "A fila de processos está cheia",
        "pool-errorunknown": "Erro desconhecido",
        "passwordreset-invalidemail": "Correio eletrónico inválido",
        "passwordreset-nodata": "Não foram fornecidos nome de utilizador(a) nem endereço de correio eletrónico",
        "changeemail": "Alterar ou remover o endereço de correio eletrónico",
-       "changeemail-header": "Complete este formulário para alterar o seu endereço de correio eletrónico. Se quer eliminar a associação de qualquer endereço de correio eletrónico com a sua conta, deixe em branco o novo endereço de correio eletrónico ao submeter o formulário.",
+       "changeemail-header": "Complete este formulário para alterar o seu endereço de correio eletrónico. Se quer eliminar a associação de qualquer endereço de correio eletrónico à sua conta, deixe em branco o novo endereço de correio eletrónico ao enviar o formulário.",
        "changeemail-no-info": "Precisa de iniciar sessão para aceder diretamente a esta página.",
        "changeemail-oldemail": "Correio eletrónico atual:",
        "changeemail-newemail": "Novo endereço de correio eletrónico:",
        "blockedtitle": "O utilizador está bloqueado",
        "blockedtext": "<strong>O seu nome de utilizador ou endereço IP foram bloqueados.</strong>\n\nO bloqueio foi realizado por $1.\nO motivo apresentado foi <em>$2</em>.\n\n* Início do bloqueio: $8\n* Expiração do bloqueio: $6\n* Destinatário do bloqueio: $7\n\nPode contactar $1 ou outro [[{{MediaWiki:Grouppage-sysop}}|administrador]] para discutir o bloqueio.\nNote que para utilizar a funcionalidade \"Contactar utilizador\" precisa de ter um endereço de correio eletrónico válido nas suas [[Special:Preferences|preferências]] e de não lhe ter sido bloqueado o uso desta funcionalidade.\nO seu endereço IP neste momento é $3 e a identificação (ID) do bloqueio é #$5.\nInclua todos os detalhes acima em quaisquer contactos relacionados com este bloqueio, por favor.",
        "autoblockedtext": "O seu endereço IP foi bloqueado de forma automática porque foi utilizado recentemente por outro utilizador, o qual foi bloqueado por $1.\nO motivo apresentado foi:\n\n:<em>$2</em>\n\n* Início do bloqueio: $8\n* Expiração do bloqueio: $6\n* Destinatário do bloqueio: $7\n\nPode contactar $1 ou outro [[{{MediaWiki:Grouppage-sysop}}|administrador]] para discutir o bloqueio.\n\nNote que para utilizar a funcionalidade \"Contactar utilizador\" precisa de ter um endereço de correio eletrónico válido nas suas [[Special:Preferences|preferências]] e de não lhe ter sido bloqueado o uso desta funcionalidade.\n\nO seu endereço IP neste momento é $3 e a identificação (ID) do bloqueio é #$5.\nInclua todos os detalhes acima em quaisquer contactos relacionados com este bloqueio, por favor.",
-       "systemblockedtext": "O seu nome de utilizador ou endereço IP foram bloqueados automaticamente pelo MediaWiki.\nO motivo fornecido é:\n\n:<em>$2</em>\n\n* Início do bloqueio: $8\n* Expiração do bloqueio: $6\n* Destinatário do bloqueio: $7\n\nO seu endereço IP atual é $3.\nInclua todos os detalhes acima em quaisquer contatos sobre este assunto, por favor.",
+       "systemblockedtext": "O seu nome de utilizador ou endereço IP foram bloqueados automaticamente pelo MediaWiki.\nO motivo fornecido é:\n\n:<em>$2</em>\n\n* Início do bloqueio: $8\n* Expiração do bloqueio: $6\n* Destinatário do bloqueio: $7\n\nO seu endereço IP atual é $3.\nInclua todos os detalhes acima em quaisquer contactos sobre este assunto, por favor.",
        "blockednoreason": "sem motivo especificado",
        "whitelistedittext": "Precisa de $1 para poder editar páginas.",
        "confirmedittext": "Precisa de confirmar o seu endereço de correio eletrónico antes de começar a editar páginas.\nIntroduza e valide o endereço através das [[Special:Preferences|preferências do utilizador]], por favor.",
        "expansion-depth-exceeded-category": "Páginas em que a profundidade de expansão é excedida",
        "expansion-depth-exceeded-category-desc": "A página excede a profundidade de expansão permitida.",
        "expansion-depth-exceeded-warning": "A página excedeu a profundidade de expansão",
-       "parser-unstrip-loop-warning": "Foi detectado um ciclo infinito unstrip",
+       "parser-unstrip-loop-warning": "Foi detetado um ciclo infinito unstrip",
        "parser-unstrip-recursion-limit": "Limite de recursão do unstrip excedido ($1)",
        "converter-manual-rule-error": "Erro detetado na regra de conversão de língua manual",
        "undo-success": "É possível desfazer a edição.\nVerifique a comparação abaixo, para se certificar que corresponde ao que pretende fazer.\nDepois grave as alterações, para finalizar e desfazer a edição.",
        "grant-group-email": "Enviar correio electrónico",
        "grant-group-high-volume": "Realizar atividades em grande quantidade",
        "grant-group-customization": "Personalização e preferências",
-       "grant-group-administration": "Executar acções administrativas",
+       "grant-group-administration": "Executar ações administrativas",
        "grant-group-private-information": "Aceder aos seus dados privados",
        "grant-group-other": "Atividades diversas",
        "grant-blockusers": "Bloquear e desbloquear utilizadores",
        "rcfilters-filter-watchlist-notwatched-label": "Ausente da lista de páginas vigiadas",
        "rcfilters-filter-watchlist-notwatched-description": "Tudo menos modificações das suas páginas vigiadas.",
        "rcfilters-filtergroup-changetype": "Tipo de alteração",
-       "rcfilters-filter-pageedits-label": "Edições da página",
+       "rcfilters-filter-pageedits-label": "Edições de páginas",
        "rcfilters-filter-pageedits-description": "Edições do conteúdo da wiki, de discussões, de descrições de categorias…",
        "rcfilters-filter-newpages-label": "Criações de páginas",
        "rcfilters-filter-newpages-description": "Edições que criam novas páginas.",
        "rcfilters-filter-lastrevision-description": "A modificação mais recente de uma página.",
        "rcfilters-filter-previousrevision-label": "Revisões anteriores",
        "rcfilters-filter-previousrevision-description": "Todas as modificações que não sejam a modificação mais recente de uma página.",
+       "rcfilters-filter-excluded": "Excluído",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:não</strong> $1",
+       "rcfilters-view-tags": "Etiquetas",
        "rcnotefrom": "Abaixo {{PLURAL:$5|está a mudança|estão as mudanças}} desde <strong>$2</strong> (mostradas até <strong>$1</strong>).",
        "rclistfromreset": "Reiniciar a seleção da data",
        "rclistfrom": "Mostrar as novas mudanças a partir das $2 de $3",
        "uploaded-remote-url-svg": "A configuração de qualquer atributo de estilo com um URL remoto em ficheiros SVG está bloqueada. Foi detetado <code>$1=\"$2\"</code> no ficheiro SVG carregado.",
        "uploaded-image-filter-svg": "Foi encontrado um filtro de imagem com o URL: <code>&lt;$1 $2=\"$3\"&gt;</code> no ficheiro SVG carregado.",
        "uploadscriptednamespace": "Este ficheiro SVG contém um domínio que não é permitido \"<nowiki>$1</nowiki>\".",
-       "uploadinvalidxml": "Erro detectado na análise do XML do ficheiro carregado.",
+       "uploadinvalidxml": "Não foi possível analisar o XML do ficheiro carregado.",
        "uploadvirus": "O ficheiro contém um vírus! \nDetalhes: $1",
        "uploadjava": "Este é um ficheiro ZIP que contém um ficheiro .class de Java.\nNão é permitido o carregamento de ficheiros Java, porque estes podem contornar as restrições de segurança.",
        "upload-source": "Ficheiro de origem",
        "rollback-success": "Foram revertidas as edições de {{GENDER:$3|$1}}; reposta a última edição de {{GENDER:$4|$2}}.",
        "rollback-success-notify": "Revertidas as edições de $1;\nMudança para a última revisão de $2. [$3 Mostrar alterações]",
        "sessionfailure-title": "Erro de sessão",
-       "sessionfailure": "Foram detectados problemas com a sua sessão;\na operação foi cancelada como medida de proteção contra a interceptação de sessões.\nVolte à página anterior, recarregue-a e tente novamente.",
+       "sessionfailure": "Foram detetados problemas com a sua sessão;\na operação foi cancelada como medida de proteção contra a intercetação de sessões.\nVolte à página anterior, recarregue-a e tente novamente.",
        "changecontentmodel": "Alterar modelo de conteúdo de uma página",
        "changecontentmodel-legend": "Editar modelo de contéudo",
        "changecontentmodel-title-label": "Título da página",
        "pageinfo-default-sort": "Chave de classificação padrão",
        "pageinfo-length": "Tamanho da página (em bytes)",
        "pageinfo-article-id": "ID da página",
-       "pageinfo-language": "Idioma do conteúdo da página",
+       "pageinfo-language": "Língua do conteúdo da página",
        "pageinfo-language-change": "alterar",
        "pageinfo-content-model": "Modelo de conteúdo de página",
        "pageinfo-content-model-change": "alterar",
        "newimages-legend": "Filtrar",
        "newimages-label": "Nome de ficheiro (ou parte dele):",
        "newimages-user": "Endereço IP ou nome do utilizador",
+       "newimages-newbies": "Mostrar só as contribuições de contas recentes",
        "newimages-showbots": "Mostrar carregamentos feitos por robôs",
        "newimages-hidepatrolled": "Ocultar carregamentos patrulhados",
+       "newimages-mediatype": "Tipo de multimédia:",
        "noimages": "Nada para ver.",
        "gallery-slideshow-toggle": "Alternar miniaturas",
        "ilsubmit": "Pesquisar",
        "exif-flash-fired-0": "Flash não disparou",
        "exif-flash-fired-1": "Flash disparado",
        "exif-flash-return-0": "nenhuma função de detecção de luz de retorno",
-       "exif-flash-return-2": "luz de retorno não detectada",
-       "exif-flash-return-3": "luz de retorno detectada",
+       "exif-flash-return-2": "luz de retorno não detetada",
+       "exif-flash-return-3": "luz de retorno detetada",
        "exif-flash-mode-1": "disparo de flash forçado",
        "exif-flash-mode-2": "disparo de flash suprimido",
        "exif-flash-mode-3": "modo auto",
        "tags-create-reason": "Motivo:",
        "tags-create-submit": "Criar",
        "tags-create-no-name": "Deve especificar um nome para a etiqueta.",
-       "tags-create-invalid-chars": "Os nomes das etiquetas não devem conter vírgulas (<code>,</code>) ou barras (<code>/</code>).",
+       "tags-create-invalid-chars": "Os nomes das etiquetas não podem conter vírgulas (<code>,</code>), barras verticais (<code>|</code>) ou barras (<code>/</code>).",
        "tags-create-invalid-title-chars": "Os nomes das etiquetas não devem conter caracteres que não podem ser usados em títulos de página.",
        "tags-create-already-exists": "A etiqueta \"$1\" já existe.",
        "tags-create-warnings-above": "{{PLURAL:$2|O seguinte aviso foi encontrado|Os seguintes avisos foram encontrados}} ao tentar criar a etiqueta \"$1\":",
        "expand_templates_preview_fail_html": "<em>Porque a wiki {{SITENAME}} permite código HTML puro e ocorreu uma perda de dados da sessão, a antevisão ficará ocultada como precaução contra ataques por JavaScript.</em>\n\n<strong>Se esta é uma tentativa legítima de visionamento, por favor tente novamente.</strong>\nCaso continue a não funcionar, tente [[Special:UserLogout|sair]] e voltar a entrar na sua conta, e verifique se o seu navegador permite que este site crie ''cookies''.",
        "expand_templates_preview_fail_html_anon": "<em>Porque a wiki {{SITENAME}} permite código HTML puro e não iniciou uma sessão, a antevisão ficará ocultada como precaução contra ataques por JavaScript.</em>\n\n<strong>Se esta é uma tentativa legítima de visionamento, por favor [[Special:UserLogin|inicie uma sessão]] e tente novamente.</strong>",
        "expand_templates_input_missing": "Necessita de fornecer pelo menos algum texto de entrada.",
-       "pagelanguage": "Alterar idioma da página",
+       "pagelanguage": "Alterar a língua da página",
        "pagelang-name": "Página",
        "pagelang-language": "Língua",
-       "pagelang-use-default": "Usar idioma pré-definido",
-       "pagelang-select-lang": "Escolher o idioma",
+       "pagelang-use-default": "Usar a língua predefinida",
+       "pagelang-select-lang": "Escolher a língua",
        "pagelang-reason": "Motivo",
-       "pagelang-submit": "Submeter",
+       "pagelang-submit": "Enviar",
        "pagelang-nonexistent-page": "A página $1 não existe.",
        "pagelang-unchanged-language": "A pagina $1 já está na língua $2.",
        "pagelang-unchanged-language-default": "A pagina $1 já está na língua de conteúdo padrão da wiki.",
        "pagelang-db-failed": "A base de dados não conseguiu alterar a língua da página.",
-       "right-pagelang": "Alterar o idioma da página",
-       "action-pagelang": "alterar o idioma da página",
-       "log-name-pagelang": "Registo de alteração de idioma",
+       "right-pagelang": "Alterar a língua da página",
+       "action-pagelang": "alterar a língua da página",
+       "log-name-pagelang": "Registo de alteração de língua",
        "log-description-pagelang": "Este é um registo de alterações aos idiomas das páginas.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|alterou}} o idioma da página $3 de $4 para $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|alterou}} a língua da página $3 de $4 para $5.",
        "default-skin-not-found": "O tema padrão da sua wiki definido em <code dir=\"ltr\">$wgDefaultSkin</code>, <code>$1</code>, não está disponível.\n\nA instalação parece incluir {{PLURAL:$4|o seguinte tema|os seguintes temas}}. Consulte [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Configuração de Temas] para saber como {{PLURAL:$4|ativá-lo|ativá-los e escolher o tema padrão}}.\n\n$2\n\n; Se acabou de instalar o MediaWiki:\n: Provavelmente instalou-o a partir do git, ou diretamente do código fonte usando outro método. O comportamento é o esperado. Tente instalar temas a partir do [https://www.mediawiki.org/wiki/Category:All_skins diretório de temas da mediawiki.org], assim:\n:* Descarregue o  [https://www.mediawiki.org/wiki/Download tarball de instalação], que contém vários temas e extensões. Pode copiar o diretório <code>skins/</code> nele incluído.\n:* Descarregue tarballs de temas individuais, da [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Use o Git para descarregar temas].\n: Se é programador(a) do MediaWiki, isto não deverá interferir com o seu repositório git.\n\n; Se fez uma atualização do MediaWiki:\n: O MediaWiki 1.24 e versões mais recentes não ativam automaticamente os temas instalados (consulte [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Autodescoberta do Tema]). Pode copiar {{PLURAL:$5|a linha seguinte|as linhas seguintes}} para o ficheiro <code>LocalSettings.php</code> para ativar {{PLURAL:$5|o tema instalado|os temas instalados}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Se acabou de modificar o <code>LocalSettings.php</code>:\n: Verifique cuidadosamente se o nome de cada tema está bem soletrado.",
        "default-skin-not-found-no-skins": "O tema padrão da sua wiki definido em <code dir=\"ltr\">$wgDefaultSkin</code>, <code>$1</code>, não está disponível.\n\nNão tem nenhum tema instalado.\n\n; Se acabou de instalar ou atualizar o MediaWiki:\n: Provavelmente instalou-o a partir do git, ou diretamente do código fonte usando outro método. O comportamento é o esperado. O MediaWiki 1.24 e versões mais recentes não incluem qualquer tema no repositório principal. Tente instalar temas a partir do [https://www.mediawiki.org/wiki/Category:All_skins diretório de temas da mediawiki.org], assim:\n:* Descarregue o  [https://www.mediawiki.org/wiki/Download tarball de instalação], que contém vários temas e extensões. Pode copiar o diretório <code>skins/</code> nele incluído.\n:* Descarregue tarballs de temas individuais, da [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Use o Git para descarregar temas].\n: Se é programador(a) do MediaWiki, isto não deverá interferir com o seu repositório git. Consulte [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Configuração de Temas] para saber como ativar temas e escolher o tema padrão.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (ativado)",
        "gotointerwiki-invalid": "O título especificado é inválido.",
        "gotointerwiki-external": "Está prestes a sair da wiki {{SITENAME}} para visitar [[$2]], que é um site externo.\n\n'''[$1 Continuar para $1]'''",
        "undelete-cantedit": "Não pode restaurar esta página, porque não tem privilégios para editar esta página.",
-       "undelete-cantcreate": "Não pode restaurar esta página, porque não existe nenhuma página com este nome e não tem privilégios para criar esta página."
+       "undelete-cantcreate": "Não pode restaurar esta página, porque não existe nenhuma página com este nome e não tem privilégios para criar esta página.",
+       "pagedata-title": "Dados de página",
+       "pagedata-text": "Esta página fornece uma interface de dados para páginas. Forneça o título da página no URL, usando a sintaxe de subpáginas, por favor.\n* Aplica-se a negociação de conteúdo com base no cabeçalho Accept do seu cliente. Isto significa que os dados da página serão fornecidos no formato preferido do seu cliente.",
+       "pagedata-not-acceptable": "Não foi encontrado nenhum formato correspondente. Tipos MIME suportados: $1",
+       "pagedata-bad-title": "Título inválido: $1."
 }
index 4d46e6f..73033d6 100644 (file)
        "anontalk": "Same as {{msg-mw|mytalk}} but used for non-logged-in users.\n{{Identical|Talk}}\n\nSee also:\n* {{msg-mw|Accesskey-pt-anontalk}}\n* {{msg-mw|Tooltip-pt-anontalk}}",
        "navigation": "This is shown as a section header in the sidebar of most skins.\n\n{{Identical|Navigation}}",
        "and": "The translation for \"and\" appears in the [[Special:Version]] page, between the last two items of a list. If a comma is needed, add it at the beginning without a gap between it and the \"&\". &amp;#32; is a blank space, one character long. Please leave it as it is.\n\nThis can also appear in the credits page if the credits feature is enabled,for example [{{canonicalurl:Support|action=credits}} the credits of the support page]. (To view any credits page type <nowiki>&action=credits</nowiki> at the end of any URL in the address bar.)\n{{Identical|And}}",
-       "qbfind": "Alternative for \"search\" as used in Cologne Blue skin.\n{{Identical|Find}}",
-       "qbbrowse": "Heading in sidebar menu in CologneBlue skin as seen in [[File:CologneBlue sidebar qqx.png]]\n{{Identical|Browse}}",
-       "qbedit": "Heading in sidebar menu in CologneBlue skin as seen in http://i.imgur.com/I08Y3jW.png\n{{Identical|Edit}}",
-       "qbpageoptions": "Heading in sidebar menu in CologneBlue skin as seen in http://i.imgur.com/I08Y3jW.png\n{{Identical|This page}}",
-       "qbmyoptions": "Heading in the Cologne Blue skin user menu containing links to user (talk) page, preferences, watchlist, etc.\n{{Identical|My pages}}",
        "faq": "FAQ is short for ''frequently asked questions''.\n{{Identical|FAQ}}",
-       "faqpage": "{{doc-important|Do not translate <code>Project:</code> part.}}\n\"FAQ\" is short for \"frequently asked questions\".\n\nThis page is only linked in CologneBlue (an old skin), not in Monobook or Vector.",
        "sitetitle": "{{Ignore}}",
        "sitesubtitle": "{{Ignore}}",
        "actions": "{{Identical|Action}}",
        "edit-local": "The text on the tab going to the edit form for the local description page of a file from a foreign file repository (e.g. Wikimedia Commons). Should be in the infinitive mood.\n\nSee also:\n* {{msg-mw|Edit}}\n* {{msg-mw|Create-local}}",
        "create": "The text on the tab of the edit form on unexisting pages starts editing them. Should be in the infinitive mood.\n\n{{Identical|Create}}",
        "create-local": "The text on the tab going to the creation form for the (not yet existing) local description page of a file from a foreign file repository (e.g. Wikimedia Commons). Should be in the infinitive mood.\n\nSee also:\n* {{msg-mw|Create}}\n* {{msg-mw|Edit-local}}",
-       "editthispage": "This is the \"edit\" link as used in the Cologne Blue skin, at the bottom of the page.\n\nSee {{msg-mw|Create-this-page}} for when the page does not exist.\n{{Identical|Edit this page}}",
-       "create-this-page": "In the Cologne Blue skin this is the text for the link leading to the edit form on pages that have not yet been created, at the bottom of the page. See {{msg-mw|editthispage}} for when the page already exists.\n{{Identical|Createpage}}",
        "delete": "Name of the Delete tab shown for admins. Should be in the infinitive mood.\n\nSee also:\n* {{msg-mw|Delete}}\n* {{msg-mw|Accesskey-ca-delete}}\n* {{msg-mw|Tooltip-ca-delete}}\n{{Identical|Delete}}",
-       "deletethispage": "In the Cologne Blue skin this is the text for link to delete the page in admin view, at the bottom of the page.\n{{Identical|Delete this page}}",
-       "undeletethispage": "In the Cologne Blue skin this is the text for link to undelete the page in admin view, at the bottom of the page.",
        "undelete_short": "It is tab label. It's really can be named ''nstab-undelete''. Parameters:\n* $1 - number of edits",
        "viewdeleted_short": "Tab label for the undelete button when the user has permission to view the deleted history but not undelete.\n\nParameters:\n* $1 - number of edits",
        "protect": "Name of protect tab displayed for admins. Should be in the infinitive mood.\n\nSee also:\n* {{msg-mw|Protect}}\n* {{msg-mw|Accesskey-ca-protect}}\n* {{msg-mw|Tooltip-ca-protect}}\n{{Identical|Protect}}",
        "protect_change": "Text on links for each entry in [[Special:ProtectedPages]] to change the protection of pages (only displayed to admins).\n{{Identical|Change}}",
-       "protectthispage": "In this Cologne Blue skin this is the text for link to protect the page in admin view, at the bottom of the page.\n{{Identical|Protect this page}}",
        "unprotect": "Name of unprotect tab displayed for admins\n\nSee also:\n* {{msg-mw|Unprotect}}\n* {{msg-mw|Accesskey-ca-unprotect}}\n* {{msg-mw|Tooltip-ca-unprotect}}\n{{Identical|Change protection}}",
-       "unprotectthispage": "In this Cologne Blue skin this is the anchor text for the link to unprotect the page in admin view, at the bottom of the page.\n{{Identical|Unprotect this page}}",
        "newpage": "{{Identical|New page}}",
-       "talkpage": "In the Cologne Blue skin this is the text for link to discuss the page, at the bottom of the page.",
        "talkpagelinktext": "Used as name of links going to talk page in some places, like in [[Special:RecentChanges]], [[Special:Allmessages]], [[Special:Logs]], and [[Special:Watchlist/edit]].\n\n{{Identical|Talk}}",
        "specialpage": "{{Identical|Special page}}",
        "personaltools": "Heading for a group of links to your user page, talk page, preferences, watchlist, and contributions. This heading is visible in the sidebar in some skins. For an example, see [{{canonicalurl:Main_Page|useskin=simple}} Main Page using simple skin].",
        "addsection": "{{notranslate}}\nText of the new section tab (the one next to the \"edit\" tab on non-Vector skins).\n\nSee also:\n* {{msg-mw|Addsection}}\n* {{msg-mw|Accesskey-ca-addsection}}\n* {{msg-mw|Tooltip-ca-addsection}}",
-       "articlepage": "'Content page' is used for NS_MAIN and any other non-standard namespaces. Only used in the Cologne Blue skin in the bottomLinks part.\n\n{{Identical|Content page}}",
        "talk": "Used as display name for the tab to all {{msg-mw|Talk}} pages. These pages accompany all content pages and can be used for discussing the content page. Example: [[Talk:Example]].\n\nSee also:\n* {{msg-mw|Talk}}\n* {{msg-mw|Accesskey-ca-talk}}\n* {{msg-mw|Tooltip-ca-talk}}\n{{Identical|Discussion}}",
        "views": "Subtitle for the list of available views, for the current page. In \"monobook\" skin the list of views are shown as tabs, so this sub-title is not shown. For an example, see [{{canonicalurl:Main_Page|useskin=simple}} Main Page using simple skin].\n\n'''Note:''' This is \"views\" as in \"appearances\"/\"representations\", '''not''' as in \"visits\"/\"accesses\".\n{{Identical|View}}",
        "toolbox": "The title of the toolbox below the search menu.\n{{Identical|Tool}}",
        "tool-link-userrights": "Link to [[Special:UserRights]] (user rights management) in the sidebar toolbox, shown if the current user is allowed to change given user's groups.\n\nParameters:\n* $1 - Name of user for the user group management (usable for GENDER)",
        "tool-link-userrights-readonly": "Link to [[Special:UserRights]] (user rights management) in the sidebar toolbox, shown if the current user is '''not''' allowed to change given user's groups.\n\nParameters:\n* $1 - Name of user for the user group management (usable for GENDER)",
        "tool-link-emailuser": "Link to [[Special:EmailUser]] (email user tool) in the sidebar toolbox.\n\nParameters:\n* $1 - Name of user who would receive the email\n\nSee also:\n* {{msg-mw|Emailuser-title-target}}",
-       "userpage": "Used in user talk pages as the text of the link to the user page, with the Cologne Blue skin.",
-       "projectpage": "Used as link text in Talk page of project page with the Cologne Blue skin.",
        "imagepage": "Used as link text in Talk page of file page.",
        "mediawikipage": "Used as link text in Talk page of MediaWiki message page.",
        "templatepage": "Used as link text in Talk page of template page.",
        "rcfilters-filter-lastrevision-description": "Description for the filter for showing changes on last revision of a page.",
        "rcfilters-filter-previousrevision-label": "Title for the filter for showing changes on previous revisions of a page.",
        "rcfilters-filter-previousrevision-description": "Description for the filter for showing changes on previous revisions of a page.",
+       "rcfilters-filter-excluded": "Label for a menu item in [[Special:RecentChanges]] noting that the item is being excluded from the results.",
+       "rcfilters-tag-prefix-namespace": "Prefix for the namespace tags in [[Special:RecentChanges]]. Namespace tags use a colon (:) as prefix. Please keep this format.\n\nParameters:\n* $1 - Filter name.",
+       "rcfilters-tag-prefix-namespace-inverted": "Prefix for the namespace inverted tags in [[Special:RecentChanges]]. Namespace tags use a colon (:) as prefix. Please keep this format.\n\nParameters:\n* $1 - Filter name.",
+       "rcfilters-tag-prefix-tags": "Prefix for the edit tags in [[Special:RecentChanges]]. Edit tags use a hash (#) as prefix. Please keep this format.\n\nParameters:\n* $1 - Tag display name.",
+       "rcfilters-view-tags": "Title for the tags view in [[Special:RecentChanges]]",
        "rcnotefrom": "This message is displayed at [[Special:RecentChanges]] when viewing recentchanges from some specific time.\n\nThe corresponding message is {{msg-mw|Rclistfrom}}.\n\nParameters:\n* $1 - the maximum number of changes that are displayed\n* $2 - (Optional) a date and time\n* $3 - a date\n* $4 - a time\n* $5 - Number of changes are displayed, for use with PLURAL",
        "rclistfromreset": "Used on [[Special:RecentChanges]] to reset a selection of a certain date range.",
        "rclistfrom": "Used on [[Special:RecentChanges]]. Parameters:\n* $1 - (Currently not use) date and time. The date and the time adds to the rclistfrom description.\n* $2 - time. The time adds to the rclistfrom link description (with split of date and time).\n* $3 - date. The date adds to the rclistfrom link description (with split of date and time).\n\nThe corresponding message is {{msg-mw|Rcnotefrom}}.",
        "newimages-legend": "Caption of the fieldset for the filter on [[Special:NewImages]]\n\n{{Identical|Filter}}",
        "newimages-label": "Caption of the filter editbox on [[Special:NewImages]]",
        "newimages-user": "Caption of the username/IP address editbox on [[Special:NewImages]]",
+       "newimages-newbies": "Used as label for a checkbox. When checked, [[Special:NewImages]] will only display uploads by new users.",
        "newimages-showbots": "Used as label for a checkbox. When checked, [[Special:NewImages]] will also display uploads by users in the bots group.",
        "newimages-hidepatrolled": "Used as label for a checkbox. When checked, [[Special:NewImages]] will not display patrolled uploads.\n\nCf. {{msg-mw|tog-hidepatrolled}} and {{msg-mw|apihelp-feedrecentchanges-param-hidepatrolled}}.",
+       "newimages-mediatype": "Used as label for a multiselect where users can select the media types to display.",
        "noimages": "This is shown on the special page [[Special:NewImages]], when there aren't any recently uploaded files.",
        "gallery-slideshow-toggle": "Tooltip for the icon that toggles thumbnails on a slideshow  gallery.",
        "ilsubmit": "Search button in [[Special:MIMESearch]].\n\nStrings on the page:\n* {{msg-mw|Mimesearch|page title, legend of input form, link in special pages}}\n* {{msg-mw|Mimesearch-summary|page summary}}\n* {{msg-mw|Mimetype|label for input box}}\n* {{msg-mw|Ilsubmit|search button}}\n\nCheck [[mw:Manual:MIME_type_detection]] for MIME types.\n\n{{Identical|Search}}",
        "gotointerwiki-invalid": "Message shown on Special:GoToInterwiki if given an invalid title.",
        "gotointerwiki-external": "Message shown on Special:GoToInterwiki if given a external interwiki link (e.g. [[Special:GoToInterwiki/Google:Foo]]). $1 is the full url the user is trying to get to. $2 is the text of the interwiki link (e.g. \"Google:foo\").",
        "undelete-cantedit": "Shown if the user tries to undelete a page that they cannot edit",
-       "undelete-cantcreate": "Shown if the user tries to undelete a page which currently does not exist, and they are not allowed to create it. This could for example happen on a wiki with custom protection levels where the page name has been create-protected and the user has the right to undelete but not the right to edit protected pages."
+       "undelete-cantcreate": "Shown if the user tries to undelete a page which currently does not exist, and they are not allowed to create it. This could for example happen on a wiki with custom protection levels where the page name has been create-protected and the user has the right to undelete but not the right to edit protected pages.",
+       "pagedata-title": "Title shown on the special page when a form or text is presented",
+       "pagedata-text": "Error shown when none of the formats acceptable to the client is supported (HTTP error 406). Parameters:\n* $1 - the list of supported MIME types",
+       "pagedata-not-acceptable": "No matching format found. Supported MIME types: $1",
+       "pagedata-bad-title": "Error shown when the requested title is invalid. Parameters:\n* $1: the malformed ID"
 }
index 98a1316..7774735 100644 (file)
        "anontalk": "Discuții",
        "navigation": "Navigare",
        "and": "&#32;și",
-       "qbfind": "Găsește",
-       "qbbrowse": "Răsfoiește",
-       "qbedit": "Modificare",
-       "qbpageoptions": "Această pagină",
-       "qbmyoptions": "Paginile mele",
        "faq": "Întrebări frecvente",
-       "faqpage": "Project:Întrebări frecvente",
        "actions": "Acțiuni",
        "namespaces": "Spații de nume",
        "variants": "Variante",
        "edit-local": "Modificare descriere locală",
        "create": "Creare",
        "create-local": "Adăugare descriere locală",
-       "editthispage": "Modificați pagina",
-       "create-this-page": "Creați această pagină",
        "delete": "Ștergere",
-       "deletethispage": "Șterge această pagină",
-       "undeletethispage": "Recuperează această pagină",
        "undelete_short": "Recuperarea {{PLURAL:$1|unei modificări|a $1 modificări|a $1 de modificări}}",
        "viewdeleted_short": "Vizualizați {{PLURAL:$1|o modificare ștearsă|$1 modificări șterse|$1 de modificări șterse}}",
        "protect": "Protejare",
        "protect_change": "schimbă protecția",
-       "protectthispage": "Protejați această pagină",
        "unprotect": "Modificare protecție",
-       "unprotectthispage": "Schimbă nivelul de protejare al acestei pagini",
        "newpage": "Pagină nouă",
-       "talkpage": "Discutați despre această pagină",
        "talkpagelinktext": "Discuție",
        "specialpage": "Pagină specială",
        "personaltools": "Unelte personale",
-       "articlepage": "Vizualizați conținutul paginii",
        "talk": "Discuție",
        "views": "Vizualizări",
        "toolbox": "Unelte",
        "tool-link-userrights": "Schimbă grupurile {{GENDER:$1|utilizatorului|utilizatoarei}}",
        "tool-link-userrights-readonly": "Vezi grupurile {{GENDER:$1|utilizatorului|utilizatoarei}}",
        "tool-link-emailuser": "Trimiteți un mesaj {{GENDER:$1|acestui utilizator|acestei utilizatoare}}",
-       "userpage": "Vizualizați pagina utilizatorului",
-       "projectpage": "Vizualizați pagina proiectului",
        "imagepage": "Vizualizați pagina fișierului",
        "mediawikipage": "Vizualizați pagina mesajului",
        "templatepage": "Vizualizați pagina formatului",
        "post-expand-template-argument-warning": "Atenție: Această pagină conține cel puțin un argument al unui format care are o mărime prea mare atunci când este expandat.\nAcsete argumente au fost omise.",
        "post-expand-template-argument-category": "Pagini care conțin formate cu argumente omise",
        "parser-template-loop-warning": "Buclă de formate detectată: [[$1]]",
-       "template-loop-category": "Pagini cu bucle de șabloane",
+       "template-loop-category": "Pagini cu bucle de formate",
        "template-loop-category-desc": "Pagina conține o buclă de șabloane, adică un șablon care se autoapelează recursiv.",
        "parser-template-recursion-depth-warning": "Limită de adâncime a recursiei depășită ($1)",
        "language-converter-depth-warning": "Limita adâncimii convertorului de limbă a fost depășită ($1)",
        "recentchanges-submit": "Afișează",
        "rcfilters-activefilters": "Filtre active",
        "rcfilters-quickfilters": "Legături rapide",
-       "rcfilters-quickfilters-placeholder": "Salvați setările de instrumente preferate pentru a le reutiliza mai târziu.",
        "rcfilters-savedqueries-defaultlabel": "Filtre salvate",
        "rcfilters-savedqueries-rename": "Redenumește",
        "rcfilters-savedqueries-setdefault": "Setează ca predefinit",
        "booksources-search": "Caută",
        "booksources-text": "Mai jos se află o listă de legături înspre alte situri care vând cărți noi sau vechi și care pot oferi informații suplimentare despre cărțile pe care le căutați:",
        "booksources-invalid-isbn": "Codul ISBN oferit nu este valid; verificați dacă a fost copiat corect de la sursa originală.",
+       "magiclink-tracking-rfc": "Pagini ce folosesc legături automate către RFC",
+       "magiclink-tracking-pmid": "Pagini ce folosesc legături automate către PMID",
+       "magiclink-tracking-isbn": "Pagini ce folosesc legături automate către ISBN",
        "specialloguserlabel": "Executant:",
        "speciallogtitlelabel": "Destinație (titlu sau {{ns:user}}:numeutilizator pentru utilizator):",
        "log": "Jurnale",
index 1cd1b39..b4b7bc6 100644 (file)
        "anontalk": "Обсуждение",
        "navigation": "Навигация",
        "and": "&#32;и",
-       "qbfind": "Поиск",
-       "qbbrowse": "Просмотреть",
-       "qbedit": "Править",
-       "qbpageoptions": "Настройки страницы",
-       "qbmyoptions": "Ваши настройки",
        "faq": "ЧаВО",
-       "faqpage": "Project:ЧаВО",
        "actions": "Действия",
        "namespaces": "Пространства имён",
        "variants": "Варианты",
        "edit-local": "Редактировать локальное описание",
        "create": "Создать",
        "create-local": "Создать локально",
-       "editthispage": "Править эту страницу",
-       "create-this-page": "Создать эту страницу",
        "delete": "Удалить",
-       "deletethispage": "Удалить эту страницу",
-       "undeletethispage": "Восстановить эту страницу",
        "undelete_short": "Восстановить {{PLURAL:$1|1=$1 правку|$1 правки|$1 правок|1=правку}}",
        "viewdeleted_short": "Просмотр {{PLURAL:$1|1=$1 удалённой правки|удалённой правки|$1 удалённых правок}}",
        "protect": "Защитить",
        "protect_change": "изменить",
-       "protectthispage": "Защитить эту страницу",
        "unprotect": "Изменить защиту",
-       "unprotectthispage": "Изменить защиту этой страницы",
        "newpage": "Новая страница",
-       "talkpage": "Обсудить эту страницу",
        "talkpagelinktext": "обсуждение",
        "specialpage": "Служебная страница",
        "personaltools": "Персональные инструменты",
-       "articlepage": "Просмотреть статью",
        "talk": "Обсуждение",
        "views": "Просмотры",
        "toolbox": "Инструменты",
        "tool-link-userrights": "Изменить группы {{GENDER:$1|участника|участницы}}",
        "tool-link-userrights-readonly": "Смотреть группы {{GENDER:$1|участника|участницы}}",
        "tool-link-emailuser": "Написать письмо {{GENDER:$1|участнику|участнице}}",
-       "userpage": "Просмотреть страницу участника",
-       "projectpage": "Просмотреть страницу проекта",
        "imagepage": "Просмотреть страницу файла",
        "mediawikipage": "Показать страницу сообщения",
        "templatepage": "Просмотреть страницу шаблона",
        "search-file-match": "(совпадает с содержимым файла)",
        "search-suggest": "Возможно, вы имели в виду «$1».",
        "search-rewritten": "Показаны результаты для $1. Искать вместо этого $2.",
-       "search-interwiki-caption": "Результаты родственных проектов",
+       "search-interwiki-caption": "Результаты братских проектов",
        "search-interwiki-default": "Результаты из $1:",
        "search-interwiki-more": "(ещё)",
        "search-interwiki-more-results": "ещё результаты",
        "rcfilters-filter-lastrevision-description": "Самое последнее изменение на странице.",
        "rcfilters-filter-previousrevision-label": "Более ранние версии",
        "rcfilters-filter-previousrevision-description": "Все правки, не являющиеся самыми последними на странице.",
+       "rcfilters-filter-excluded": "Исключено",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:not</strong> $1",
+       "rcfilters-view-tags": "Метки",
        "rcnotefrom": "Ниже {{PLURAL:$5|указано изменение|перечислены изменения}} с <strong>$3, $4</strong> (показано не более <strong>$1</strong>).",
        "rclistfromreset": "Сбросить выбор даты",
        "rclistfrom": "Показать изменения с $3 $2.",
        "newimages-legend": "Фильтр",
        "newimages-label": "Имя файла (или его часть):",
        "newimages-user": "IP-адрес или имя участника",
+       "newimages-newbies": "Показать только вклад, сделанный с новых учётных записей",
        "newimages-showbots": "Показать загрузки ботов",
        "newimages-hidepatrolled": "Скрыть отпатрулированные загрузки",
+       "newimages-mediatype": "Медиа тип:",
        "noimages": "Изображения отсутствуют.",
        "gallery-slideshow-toggle": "Переключить миниатюры",
        "ilsubmit": "Найти",
        "tags-create-reason": "Причина:",
        "tags-create-submit": "Создать",
        "tags-create-no-name": "Вы должны указать имя метки.",
-       "tags-create-invalid-chars": "Имена меток не должны содержать запятые (<code>,</code>) или символы косой черты (<code>/</code>).",
+       "tags-create-invalid-chars": "Имена меток не должны содержать запятые (<code>,</code>), пайпы (<code>|</code>) или символы косой черты (<code>/</code>).",
        "tags-create-invalid-title-chars": "Имена меток не должны содержать символы, которые не могут быть использованы в заголовках страниц.",
        "tags-create-already-exists": "Метка «$1» уже существует.",
        "tags-create-warnings-above": "При попытке создать метку «$1» обнаружен{{PLURAL:$2|о следующее предупреждение|ы следующие предупреждения}}:",
        "logentry-move-move_redir": "$1 {{GENDER:$2|переименовал|переименовала}} страницу $3 в $4 поверх перенаправления",
        "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|переименовал|переименовала}} страницу $3 в $4 поверх перенаправления и без оставления перенаправления",
        "logentry-patrol-patrol": "$1 {{GENDER:$2|отпатрулировал|отпатрулировала}} версию $4 страницы $3",
-       "logentry-patrol-patrol-auto": "$1 автоматически {{GENDER:$2|отпатрулировал|отпатрулировала}} «старым патрулированием» версию $4 страницы $3",
+       "logentry-patrol-patrol-auto": "$1 автоматически {{GENDER:$2|отпатрулировал|отпатрулировала}} версию $4 страницы $3",
        "logentry-newusers-newusers": "{{GENDER:$2|Участник создал|Участница создала}} учётную запись $1",
        "logentry-newusers-create": "{{GENDER:$2|Участник создал|Участница создала}} учётную запись $1",
        "logentry-newusers-create2": "$1 {{GENDER:$2|создал|создала}} учётную запись $3",
        "gotointerwiki-invalid": "Указан некорректный заголовок.",
        "gotointerwiki-external": "Вы покидаете {{grammar:accusative|{{SITENAME}}}} для посещения стороннего сайта [[$2]].\n\n'''[$1 Перейти на $1]'''",
        "undelete-cantedit": "Вы не можете восстановить эту страницу, поскольку у вас недостаточно прав для ее редактирования.",
-       "undelete-cantcreate": "Вы не можете восстановить эту страницу, поскольку она не существует, а у вас недостаточно прав для ее создания."
+       "undelete-cantcreate": "Вы не можете восстановить эту страницу, поскольку она не существует, а у вас недостаточно прав для ее создания.",
+       "pagedata-title": "Данные страницы",
+       "pagedata-text": "Эта страница предоставляет интерфейс к данным страниц. Пожалуйста, введите заголовок страницы в URL, используя синтаксис подстраниц.\n* Согласование содержимого применяется основываясь на заголовке Accept вашего клиента. Это означает, что данные страницы будут предоставлены в формате, предпочитаемом вашим клиентом.",
+       "pagedata-not-acceptable": "Соответствующий формат не найден. Поддерживаемые MIME-типы: $1",
+       "pagedata-bad-title": "Некорректный заголовок: $1."
 }
index 322d0f1..a55e772 100644 (file)
@@ -12,7 +12,8 @@
                        "Dicto23456",
                        "Macofe",
                        "Matma Rex",
-                       "KHMELNYTSKYIA"
+                       "KHMELNYTSKYIA",
+                       "Igor Kercsa"
                ]
        },
        "tog-underline": "Підкреслёвати одказы:",
        "anontalk": "Діскузія к тїй IP-адресї",
        "navigation": "Навіґація",
        "and": "&#32;і",
-       "qbfind": "Найти",
-       "qbbrowse": "Переглядати",
-       "qbedit": "Едітовати",
-       "qbpageoptions": "Тота сторінка",
-       "qbmyoptions": "Мої сторінкы",
        "faq": "Часты звідованя",
-       "faqpage": "Project:Часты звідованя",
        "actions": "Дїї",
        "namespaces": "Просторы назв",
        "variants": "Варіанты",
        "view": "Видіти",
        "edit": "Едітовати",
        "create": "Створити",
-       "editthispage": "Едітовату тоту сторінку",
-       "create-this-page": "Створити тоту сторінку",
        "delete": "Вымазати",
-       "deletethispage": "Змазати тоту сторінку",
-       "undeletethispage": "Обновити тоту сторінку",
        "undelete_short": "Обновити $1 {{PLURAL:$1|верзію|верзії|верзії}}",
        "viewdeleted_short": "Видїти {{PLURAL:$1|змазанов едітаціёв|$1 змазаны едітації|$1 змазаных едітацій}}",
        "protect": "Всокотити",
        "protect_change": "змінити",
-       "protectthispage": "Сокотити тоту сторінку",
        "unprotect": "Змінити замок",
-       "unprotectthispage": "Змінити замок той сторінкы",
        "newpage": "Нова сторінка",
-       "talkpage": "Діскутовати тоту сторінку",
        "talkpagelinktext": "діскузія",
        "specialpage": "Шпеціална сторінка",
        "personaltools": "Особны інштрументы",
-       "articlepage": "Посмотрити сторінку",
        "talk": "Діскузія",
        "views": "Перегляды",
        "toolbox": "Інштрументы",
-       "userpage": "Посмотрити сторінку хоснователя",
-       "projectpage": "Посмотрити сторінку проєкту",
        "imagepage": "Посмотрити сторінку файлу",
        "mediawikipage": "Посмотрити сторінку повідомлїнь",
        "templatepage": "Посмотрити шаблону",
        "nstab-mediawiki": "Повідомлїня",
        "nstab-template": "Шаблона",
        "nstab-help": "Сторінка помочі",
-       "nstab-category": "Категорѣя",
+       "nstab-category": "Катеґорія",
        "mainpage-nstab": "Головна сторінка",
        "nosuchaction": "Такой дїї не має",
        "nosuchactiontext": "Дїя, уведжена в URL, неправилна.\nМогли сьте неправилно написати URL або перейти через некоректный одказ .\nМоже тыж значіти ґанч в проґрамовім забеспечіню {{GRAMMAR:genitive|{{SITENAME}}}}.",
index 35c30f6..6d4e185 100644 (file)
        "anontalk": "Ырытыы",
        "navigation": "Навигация",
        "and": "&#32;уонна",
-       "qbfind": "Бул",
-       "qbbrowse": "Көр",
-       "qbedit": "Уларыт",
-       "qbpageoptions": "Бу сирэй",
-       "qbmyoptions": "Мин сирэйдэрим",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Дьайыылар",
        "namespaces": "Аат даллара",
        "variants": "Барыллар",
        "edit-local": "Олохтоох ойуулааһынын уларытыы",
        "create": "Саҥаны айыы",
        "create-local": "Бу туһунан суруйуу",
-       "editthispage": "Бу сирэйи уларыт",
-       "create-this-page": "Бу сирэйи ай",
        "delete": "Соттор",
-       "deletethispage": "Бу сирэйи соттор",
-       "undeletethispage": "Бу сирэйи сөргүт",
        "undelete_short": "{{PLURAL:$1|Биир уларытыыны|$1 уларытыыны}} сөргүт",
        "viewdeleted_short": "{{PLURAL:$1|Соҕотох сотторуллубут көннөрүүнү|$1 сотторуллубут көннөрүүнү}} көрүү",
        "protect": "Уларыппат гын",
        "protect_change": "уларытыы",
-       "protectthispage": "Бу сирэйи уларыппат гын",
        "unprotect": "Көмүскэлин уларыт",
-       "unprotectthispage": "Бу сирэй көмүскэлин уларыт",
        "newpage": "Саҥа сирэй",
-       "talkpage": "Бу сирэйи ырыт",
        "talkpagelinktext": "ырытыы",
        "specialpage": "Анал сирэй",
        "personaltools": "Тус бэйэ туттар тэриллэрэ",
-       "articlepage": "Ыстатыйаны көр",
        "talk": "Ырытыы",
        "views": "Көрүү",
        "toolbox": "Сэп-сэбиргэл",
        "tool-link-userrights": "{{GENDER:$1|Кыттааччы}} бөлөҕүн уларыт",
        "tool-link-userrights-readonly": "{{GENDER:$1|Кыттааччы}} бөлөхтөрүн көр",
        "tool-link-emailuser": "{{GENDER:$1|Кыттааччыга}} сурук суруйуу",
-       "userpage": "Кыттааччы туһунан сирэй",
-       "projectpage": "Бырайыак сирэйэ",
        "imagepage": "Билэ сирэйин көрүү",
        "mediawikipage": "Сурук сирэйэ",
        "templatepage": "Халыып сирэйэ",
        "rcfilters-activefilters": "Холбоммут сиидэлэр",
        "rcfilters-quickfilters": "Сиидэ бигэргэммит туруоруулара",
        "rcfilters-quickfilters-placeholder-title": "Бигэргэммит сигэ билигин суох",
+       "rcfilters-quickfilters-placeholder-description": "Сиидэ туруорууларын кэлин туһанарга, \"Холбоммут сиидэ\" хонуутугар кыбытык ойуутун баттаа.",
        "rcfilters-savedqueries-defaultlabel": "Бигэргэммит сиидэлэр",
        "rcfilters-savedqueries-rename": "Аатын уларыт",
        "rcfilters-savedqueries-setdefault": "Уларыппаккаҕын хааллар",
        "rcfilters-savedqueries-unsetdefault": "Эбии этиллибэтэҕинэ талыллары суох гын",
        "rcfilters-savedqueries-remove": "Сот",
        "rcfilters-savedqueries-new-name-label": "Аата",
-       "rcfilters-savedqueries-apply-label": "Түргэн сигэни оҥоруу",
+       "rcfilters-savedqueries-apply-label": "Туруоруулары өйдөөн хаалыы",
        "rcfilters-savedqueries-cancel-label": "Салҕаама",
-       "rcfilters-savedqueries-add-new-title": "Сиидэлэри түргэн сигэ курдук бигэргэт",
+       "rcfilters-savedqueries-add-new-title": "Сиидэлэ билиҥҥи туруорууларын хааллар",
        "rcfilters-restore-default-filters": "Анаан этиллибэтэҕинэ турар сиидэлэри холбоо",
        "rcfilters-clear-all-filters": "Сиидэлэри барытын суох гын",
        "rcfilters-search-placeholder": "Сиидэлэри кэнники уларытыы (көр биитэр киллэр)",
        "uncategorizedcategories": "Ханнык да категорияҕа киирбэтэх категориялар",
        "uncategorizedimages": "Ханнык да категорияҕа киирбэтэх ойуулар",
        "uncategorizedtemplates": "Ханнык да категорияҕа киирбэтэх халыыптар",
+       "uncategorized-categories-exceptionlist": "# Манна Special:UncategorizedCategories ахтыллыа суохтаах категориялар испииһэктэрэ. Устуруока аайы биирдии, «*» бэлиэттэн саҕаланар. Атын бэлиэттэн саҕаланар устуруокалар (арыттан саҕаланар эмиэ) аахсыллыбаттар. Быһаарыы суруйарга «#» бэлиэни тутун.",
        "unusedcategories": "Туттуллубатах категориялар",
        "unusedimages": "Туттулубатах билэлэр",
        "wantedcategories": "Көрдөнүллэр категориялар",
        "sp-contributions-uploads": "киллэриилэр",
        "sp-contributions-logs": "сурунааллар",
        "sp-contributions-talk": "ырытыы",
-       "sp-contributions-userrights": "кыттааччылар бырааптарын салайыы",
+       "sp-contributions-userrights": "{{GENDER:$1|кыттааччы}} быраабын салайыы",
        "sp-contributions-blocked-notice": "Бу кыттааччы бырайыакка кыттара билигин бобуллубут. Хааччах сурунаалыгар ол туһунан бүтэһик сурук:",
        "sp-contributions-blocked-notice-anon": "Бу IP бырайыакка кыттара билигин бобуллубут.\nХааччах сурунаалыгар ол туһунан бүтэһик сурук:",
        "sp-contributions-search": "Кыттааччы оҥорбут уларытыыларын көрдөөһүн",
        "autoblocklist": "Аптамаатынан хааччах",
        "autoblocklist-submit": "Бул",
        "autoblocklist-legend": "Аптамаатынан хааччах испииһэгэ",
+       "autoblocklist-localblocks": "Олохтоох аптамаатынан {{PLURAL:$1|хааччахтааһын|хааччахтааһыннар}}",
        "autoblocklist-total-autoblocks": "Аптамаатынан хааччах ахсаана: $1",
        "autoblocklist-empty": "Аптамаатынан хааччах испииһэгэ кураанах.",
        "autoblocklist-otherblocks": "Атын {{PLURAL:$1|хааччахтааһын|хааччахтааһыннар}}",
        "pagelang-reason": "Төрүөтэ",
        "pagelang-submit": "Ыытарга",
        "pagelang-nonexistent-page": "Маннык $1 сирэй суох эбит.",
+       "pagelang-unchanged-language": "$1 сирэйгэ хайыы үйэ $2 тыла туруоруллубут.",
+       "pagelang-unchanged-language-default": "$1 сирэйгэ биики тыла туруоруллубут.",
+       "pagelang-db-failed": "Билии олоҕо сирэй тылын кыайан уларыппата.",
        "right-pagelang": "Сирэй тылын уларыт",
        "action-pagelang": "сирэй тылын уларытар буол",
        "log-name-pagelang": "Тылы уларытыы сурунаала",
        "authpage-cannot-link-continue": "Ситимниир кыах суох. Сиэссийэттэн тахсан хаалбыккын быһыылаах.",
        "cannotauth-not-allowed-title": "Киирэр көҥүллэммэт",
        "cannotauth-not-allowed": "Бу сирэйи туһанарыҥ сатаммат эбит",
+       "removecredentials": "Бэлиэ-ааты сот",
+       "removecredentials-submit": "Бэлиэ-ааты сот",
+       "removecredentials-invalidsubpage": "$1 бэлиэтэнии сатаммат көрүҥэ эбит.",
+       "removecredentials-success": "Бэлиэтэнии сотулунна.",
        "credentialsform-provider": "Учуоттуур дааннай көрүҥэ:",
        "credentialsform-account": "Бэлиэ-аат:",
        "cannotlink-no-provider-title": "Бэлиэ-ааттар суохтар",
        "userjsispublic": "Болҕой: JavaScript сирэйигэр кистэлэҥ сибидиэнньэ суох буолуохтаах, тоҕо диэтэххэ ону атын кыттааччылар хааччаҕа суох көрөр кыахтаахтар.",
        "usercssispublic": "Болҕой: CSS  сирэйигэр кистэлэҥ сибидиэнньэ суох буолуохтаах, тоҕо диэтэххэ ону атын кыттааччылар хааччаҕа суох көрөр кыахтаахтар.",
        "restrictionsfield-badip": "IP эбэтэр IP-лар диапазоннара сатаммат: $1",
-       "restrictionsfield-label": "Көҥүллэммит IP диапазона:"
+       "restrictionsfield-label": "Көҥүллэммит IP диапазона:",
+       "revid": "$1 торум",
+       "pageid": "$1 сирэй нүөмэрэ",
+       "gotointerwiki": "{{SITENAME}} сиртэн тахсарга",
+       "gotointerwiki-invalid": "Аат алҕастаах.",
+       "gotointerwiki-external": "[[$2]] диэн сиргэ бараары {{SITENAME}} сиртэн тахсан эрэҕин.\n\n'''[$1 Манна $1 көс]'''"
 }
index 5dd3079..1f5b5f9 100644 (file)
@@ -7,7 +7,8 @@
                        "Zordsdavini",
                        "לערי ריינהארט",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Fitoschido"
                ]
        },
        "tog-underline": "Pabriežtė nūruodas:",
        "anontalk": "Aptarėms",
        "navigation": "Naršīms",
        "and": "&#32;ėr",
-       "qbfind": "Ėiškuotė",
-       "qbbrowse": "Naršītė",
-       "qbedit": "Taisītė",
-       "qbpageoptions": "Tas poslapis",
-       "qbmyoptions": "Mona poslapē",
        "faq": "TKK",
-       "faqpage": "Project:DOK",
        "actions": "Vēksmā",
        "namespaces": "Vardū srėtis",
        "variants": "Atmainā",
        "edit-local": "Taisītė vėitėni aprašīma",
        "create": "Padėrbtė",
        "create-local": "Prėkergtė vėitėni aprašīma",
-       "editthispage": "Taisītė ton poslapi",
-       "create-this-page": "Dėrbtė ton poslapi",
        "delete": "Trintė",
-       "deletethispage": "Trintė ton poslapi",
-       "undeletethispage": "Ton poslapi padėrbtė apent",
        "undelete_short": "Dėrbtė apent $1 {{PLURAL:$1:pakeitėma|pakeitėmus|pakeitėmu}}",
        "viewdeleted_short": "Veizietė $1 {{PLURAL:$1|ėštrinta keitėma|ėštrintus keitėmus|ėštrintū keitėmu}}",
        "protect": "Apsergietė",
        "protect_change": "pakeistė",
-       "protectthispage": "Apsergietė ton poslapi",
        "unprotect": "Keistė apsarga",
-       "unprotectthispage": "Keistė ton poslapė apsarga",
        "newpage": "Naus poslapis",
-       "talkpage": "Aptartė ton poslapi",
        "talkpagelinktext": "Aptarėms",
        "specialpage": "Specēlos poslapis",
        "personaltools": "Asabėnē rakondā",
-       "articlepage": "Veizietė straipsnė",
        "talk": "Aptarėms",
        "views": "Parveizė̄jėmā",
        "toolbox": "Rakondā",
        "tool-link-userrights": "Mainītė {{GENDER:$1|nauduotuoja|nauduotuojės}} gropės",
        "tool-link-emailuser": "Rašītė gromata {{GENDER:$1|tamou nauduotuojou}}",
-       "userpage": "Ruodītė nauduotuojė poslapi",
-       "projectpage": "Ruodītė pruojekta poslapi",
        "imagepage": "Veizietė abruozdielė poslapi",
        "mediawikipage": "Ruodītė pranešėma poslapi",
        "templatepage": "Ruodītė šabluona poslapi",
        "search-suggest": "Mažnē mīslėjėt ka $1",
        "search-rewritten": "Ruod kas ī soėiškuota pavadėnėmo „$1“. Mažnē geriau ėiškuotė „$2“?",
        "search-interwiki-caption": "Dokterėnē pruojektā",
-       "search-interwiki-default": "Soėiškuota nug $1ː",
+       "search-interwiki-default": "Soėiškuota nug $1:",
        "search-interwiki-more": "(daugiau)",
        "search-relatedarticle": "Sosėjė̄",
        "searchrelated": "sosėjė̄",
index da2d369..9daccbb 100644 (file)
        "anontalk": "Diskusia",
        "navigation": "Navigácia",
        "and": "&#32;a",
-       "qbfind": "Hľadať",
-       "qbbrowse": "Prehliadať",
-       "qbedit": "Upraviť",
-       "qbpageoptions": "Táto stránka",
-       "qbmyoptions": "Moje stránky",
        "faq": "Často kladené otázky",
-       "faqpage": "Project:Často kladené otázky",
        "actions": "Operácie",
        "namespaces": "Menné priestory",
        "variants": "Varianty",
        "edit-local": "Upraviť miestny popis",
        "create": "Vytvoriť",
        "create-local": "Pridať miestny popis",
-       "editthispage": "Upraviť túto stránku",
-       "create-this-page": "Vytvoriť túto stránku",
        "delete": "Vymazať",
-       "deletethispage": "Vymazať túto stránku",
-       "undeletethispage": "Obnoviť túto stránku",
        "undelete_short": "Obnoviť {{PLURAL:$1|jednu úpravu|$1 úpravy|$1 úprav}}",
        "viewdeleted_short": "Zobraziť {{PLURAL:$1|jednu zmazanú úpravu|$1 zmazané úpravy|$1 zmazaných úprav}}",
        "protect": "Zamknúť",
        "protect_change": "Zmeniť",
-       "protectthispage": "Zamknúť túto stránku",
        "unprotect": "Zmeniť stav ochrany",
-       "unprotectthispage": "Zmeniť stav ochrany tejto stránky",
        "newpage": "Nová stránka",
-       "talkpage": "Diskusia k stránke",
        "talkpagelinktext": "diskusia",
        "specialpage": "Špeciálna stránka",
        "personaltools": "Osobné nástroje",
-       "articlepage": "Zobraziť stránku",
        "talk": "Diskusia",
        "views": "Zobrazenia",
        "toolbox": "Nástroje",
        "tool-link-userrights": "Zmeniť používateľské skupiny {{GENDER:$1|tohoto použivateľa|tejto používateľky}}",
        "tool-link-userrights-readonly": "Zobraziť {{GENDER:$1|používateľské}} skupiny",
        "tool-link-emailuser": "Poslať e-mail {{GENDER:$1|tomuto používateľovi|tejto používateľke}}",
-       "userpage": "Zobraziť stránku používateľa",
-       "projectpage": "Zobraziť projektovú stránku",
        "imagepage": "Zobraziť stránku súboru",
        "mediawikipage": "Zobraziť stránku so správou",
        "templatepage": "Zobraziť stránku šablóny",
        "mw-widgets-mediasearch-noresults": "Neboli nájdené žiadne výsledky.",
        "mw-widgets-titleinput-description-new-page": "stránka zatiaľ neexistuje",
        "mw-widgets-titleinput-description-redirect": "presmerovanie na $1",
+       "date-range-from": "Od dátumu:",
+       "date-range-to": "Po dátum:",
        "randomrootpage": "Náhodná koreňová stránka",
        "changecredentials": "Zmena prihlasovacích údajov",
        "removecredentials": "Odstránenie prihlasovacích údajov"
index 8d1c37c..217f318 100644 (file)
        "anontalk": "Pogovorna stran",
        "navigation": "Navigacija",
        "and": "&#32;in",
-       "qbfind": "Poišči",
-       "qbbrowse": "Prebrskaj",
-       "qbedit": "Uredi",
-       "qbpageoptions": "Možnosti strani",
-       "qbmyoptions": "Moje strani",
        "faq": "Najpogostejša vprašanja",
-       "faqpage": "Project:Najpogostejša vprašanja",
        "actions": "Dejanja",
        "namespaces": "Imenski prostori",
        "variants": "Različice",
        "edit-local": "Uredi lokalni opis",
        "create": "Ustvari",
        "create-local": "Dodaj lokalni opis",
-       "editthispage": "Uredi stran",
-       "create-this-page": "Ustvari stran",
        "delete": "Briši",
-       "deletethispage": "Briši stran",
-       "undeletethispage": "Obnovi stran",
        "undelete_short": "Vrni $1 {{PLURAL:$1|izbrisano urejanje|izbrisani urejanji|izbrisana urejanja|izbrisanih urejanj|izbrisanih urejanj}}",
        "viewdeleted_short": "Ogled {{PLURAL:$1|enega izbrisanega urejanja|$1 izbrisanih urejanj}}",
        "protect": "Zaščiti",
        "protect_change": "spremeni zaščito",
-       "protectthispage": "Zaščiti stran",
        "unprotect": "Spremeni zaščito",
-       "unprotectthispage": "Spremeni zaščito strani",
        "newpage": "Nova stran",
-       "talkpage": "Pogovorite se o strani",
        "talkpagelinktext": "pogovor",
        "specialpage": "Posebna stran",
        "personaltools": "Osebna orodja",
-       "articlepage": "Prikaže članek",
        "talk": "Pogovor",
        "views": "Pogled",
        "toolbox": "Orodja",
        "tool-link-userrights": "Spremeni {{GENDER:$1|uporabnikove|uporabničine}} skupine",
        "tool-link-userrights-readonly": "Ogled {{GENDER:$1|uporabnikovih|uporabničinih}} skupin",
        "tool-link-emailuser": "Pošlji e-pošto {{GENDER:$1|uporabniku|uporabnici}}",
-       "userpage": "Prikaži uporabnikovo stran",
-       "projectpage": "Prikaži projektno stran",
        "imagepage": "Pokaži stran z datoteko",
        "mediawikipage": "Poglej stran s sporočilom",
        "templatepage": "Poglej stran s predlogo",
        "rcfilters-filter-lastrevision-description": "Najnovejša sprememba strani.",
        "rcfilters-filter-previousrevision-label": "Zgodnejše redakcije",
        "rcfilters-filter-previousrevision-description": "Vse spremembe, ki niso najnovejša sprememba strani.",
+       "rcfilters-filter-excluded": "Izključeno",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:ne</strong> $1",
+       "rcfilters-view-tags": "Oznake",
        "rcnotefrom": "{{PLURAL:$5|Navedena je sprememba|Navedeni sta spremembi|Navedene so spremembe}} od <strong>$3 $4</strong> dalje (prikazujem jih do <strong>$1</strong>).",
        "rclistfromreset": "Ponastavi izbiro datuma",
        "rclistfrom": "Prikaži spremembe od $3 $2 naprej",
        "newimages-legend": "Filter",
        "newimages-label": "Ime datoteke (ali njen del):",
        "newimages-user": "IP-naslov ali uporabniško ime",
+       "newimages-newbies": "Prikaži samo prispevke novih računov",
        "newimages-showbots": "Prikaži nalaganja botov",
        "newimages-hidepatrolled": "Skrij nadzorovana nalaganja",
+       "newimages-mediatype": "Vrsta predstavnosti:",
        "noimages": "Nič ni videti.",
        "gallery-slideshow-toggle": "Preklopi sličice",
        "ilsubmit": "Išči",
        "tags-create-reason": "Razlog:",
        "tags-create-submit": "Ustvari",
        "tags-create-no-name": "Določiti morate ime oznake.",
-       "tags-create-invalid-chars": "Imena oznak ne smejo vsebovati vejic (<code>,</code>) ali desnih poševnic (<code>/</code>).",
+       "tags-create-invalid-chars": "Imena oznak ne smejo vsebovati vejic (<code>,</code>), navpičnic (<code>|</code>) ali desnih poševnic (<code>/</code>).",
        "tags-create-invalid-title-chars": "Imena oznak ne smejo vsebovati znakov, ki jih ni mogoče uporabiti v naslovih strani.",
        "tags-create-already-exists": "Oznaka »$1« že obstaja.",
        "tags-create-warnings-above": "Pri poskusu ustvarjanja oznake »$1« smo naleteli na {{PLURAL:$2|naslednje opozorilo|naslednji opozorili|naslednja opozorila}}:",
        "gotointerwiki-invalid": "Naveden naslov je neveljaven.",
        "gotointerwiki-external": "Zapuščate {{GRAMMAR:tožilnik|{{SITENAME}}}}, da obiščete [[$2]], ki je ločena spletna stran.\n\n'''[$1 Nadaljujte na $1]'''",
        "undelete-cantedit": "Strani ne morete obnoviti, saj vam ni dovoljeno, da jo urejate.",
-       "undelete-cantcreate": "Strani ne morete obnoviti, saj stran s tem imenom ne obstaja in je nimate dovoljenja ustvariti."
+       "undelete-cantcreate": "Strani ne morete obnoviti, saj stran s tem imenom ne obstaja in je nimate dovoljenja ustvariti.",
+       "pagedata-title": "Podatki strani",
+       "pagedata-text": "Ta stran nudi podatkovni vmesnik do strani. Prosimo, navedite naslov strani v URL-ju z uporabo skladnje podstrani.\n* Pogajanje o vsebini se nanaša na glavo Accept vašega odjemalca. To pomeni, da bomo podatke strani posredovali v obliki, ki vašemu odjemalcu bolj ustreza.",
+       "pagedata-not-acceptable": "Nismo našli ujemajoče oblike. Podprte vrste MIME: $1",
+       "pagedata-bad-title": "Neveljaven naslov: $1."
 }
index 8b091e0..c23b14b 100644 (file)
        "anontalk": "Diskutimi",
        "navigation": "Navigimi",
        "and": "&#32;dhe",
-       "qbfind": "Gjeni",
-       "qbbrowse": "Shfletoni",
-       "qbedit": "Redakto",
-       "qbpageoptions": "Kjo faqe",
-       "qbmyoptions": "Faqet e mia",
        "faq": "Pyetje të shpeshta",
-       "faqpage": "Project: Pyetje të shpeshta",
        "actions": "Veprimet",
        "namespaces": "Hapsirat e emrit",
        "variants": "Variantat",
        "edit-local": "Redakto përshkrimin lokal",
        "create": "Krijo",
        "create-local": "Shtonipërshkrimin lokal",
-       "editthispage": "Redakto këtë faqe",
-       "create-this-page": "Krijo këtë faqe",
        "delete": "Fshi",
-       "deletethispage": "Grise këtë faqe",
-       "undeletethispage": "Rikthe faqen",
        "undelete_short": "Anullo fshirjen {{PLURAL:$1|një redaktim|$1 redaktime}}",
        "viewdeleted_short": "Shiko {{PLURAL:$1|një redaktim të fshirë|$1 redaktime të fshira}}",
        "protect": "Mbroje",
        "protect_change": "ndrysho",
-       "protectthispage": "Mbroje këtë faqe",
        "unprotect": "Ndrysho mbrojtjen",
-       "unprotectthispage": "Ndrysho mbrojtjen e kësaj faqeje",
        "newpage": "Faqe e re",
-       "talkpage": "Diskuto rreth kësaj faqeje",
        "talkpagelinktext": "Diskuto",
        "specialpage": "Faqe speciale",
        "personaltools": "Mjetet e mia",
-       "articlepage": "Shiko faqen me përmbajtje",
        "talk": "Diskutimet",
        "views": "Shikime",
        "toolbox": "Mjete",
        "tool-link-userrights": "Ndrysho grupet e {{GENDER:$1|përdoruesit}}",
        "tool-link-userrights-readonly": "Shiko grupet e {{GENDER:$1|përdoruesit}}",
        "tool-link-emailuser": "Dërgo email {{GENDER:$1|user}}",
-       "userpage": "Shfaq faqen e përdoruesit",
-       "projectpage": "Shfaq faqen e projektit",
        "imagepage": "Shfaq faqen e skedës",
        "mediawikipage": "Shiko faqen e mesazhit",
        "templatepage": "Shiko faqen e shabllonit",
        "uploaddisabledtext": "Ngarkimi i skedave është i ndaluar.",
        "php-uploaddisabledtext": "Ngarkimet e skedave në PHP janë të çaktivizuara.\nJu lutemi kontrolloni parametrat e ngarkimeve të skedave.",
        "uploadscripted": "Skeda përmban HTML ose kode të tjera që mund të interpretohen gabimisht nga një shfletues.",
+       "uploadinvalidxml": "XML në skedarin e ngarkuar nuk mund të kontrollohej.",
        "uploadvirus": "Skeda përmban një virus! Detaje: $1",
        "uploadjava": "Dokumenti është në formatin ZIP i cili përmban Java. class dokumente.\nNgarkimi i Java dokumenteve nuk është i lejuar, sepse ato mund të shkaktojnë kufizime të sigurisë për ti anashkaluar.",
        "upload-source": "Burimi i skedës",
        "upload-too-many-redirects": "Adresa URL përmbante shumë përcjellime.",
        "upload-http-error": "Ndodhi një gabim HTTP: $1",
        "upload-copy-upload-invalid-domain": "Ngarkesat e kopjimit nuk janë në dispozicion nga ky domein.",
+       "upload-dialog-disabled": "Ngarkimet e skedarëve që përdorin këtë dialog janë çaktivizuar në këtë wiki.",
        "upload-dialog-title": "Ngarko skedën",
        "upload-dialog-button-cancel": "Anulo",
        "upload-dialog-button-back": "Prapa",
        "apisandbox-submit": "Bëj kërkesë",
        "apisandbox-reset": "Pastro",
        "apisandbox-retry": "Riprovo",
+       "apisandbox-no-parameters": "Moduli API nuk ka parametra.",
        "apisandbox-helpurls": "Lidhje të ndihmës",
        "apisandbox-examples": "Shembuj",
        "apisandbox-dynamic-parameters": "Parametra shtesë",
        "apisandbox-dynamic-parameters-add-label": "Shto parametër:",
        "apisandbox-dynamic-parameters-add-placeholder": "Emri i parametrit",
        "apisandbox-dynamic-error-exists": "Një parametër i quajtur \"$1\" tashmë ekziston.",
+       "apisandbox-deprecated-parameters": "Parametra të nxjerrë nga funksioni",
+       "apisandbox-fetch-token": "Vet-mbush tokenin",
        "apisandbox-submit-invalid-fields-title": "Disa fusha janë të pavlefshme",
        "apisandbox-submit-invalid-fields-message": "Ju lutem korrigjoni fushat e shënuara dhe provoni prap.",
        "apisandbox-results": "Rezultatet",
        "apisandbox-sending-request": "Po dërgohen kërkesat API...",
        "apisandbox-loading-results": "Po pranohen rezultatet API...",
+       "apisandbox-results-error": "Ndodhi një gabim gjatë ngarkimit të përgjigjes në kërkesën API: $1",
+       "apisandbox-request-selectformat-label": "Trego të dhënat e kërkuara si:",
        "apisandbox-request-url-label": "URL e kërkesës:",
        "apisandbox-request-json-label": "Kërko JSON:",
        "apisandbox-request-time": "Koha e kërkesës: {{PLURAL:$1|$1 ms}}",
        "expand_templates_ok": "Shko",
        "expand_templates_remove_comments": "Hiq komentet",
        "expand_templates_preview": "Parapamje",
+       "expand_templates_input_missing": "Duhet të jepni së paku pak tekst.",
        "pagelanguage": "Ndrysho gjuhën e faqës",
        "pagelang-name": "Faqja",
        "pagelang-language": "Gjuha",
        "pagelang-reason": "Arsyeja",
        "pagelang-submit": "Dërgo",
        "pagelang-nonexistent-page": "Faqja $1 nuk ekziston.",
+       "pagelang-unchanged-language": "Faqja $1 veç është vendosur në gjuhën $2",
+       "pagelang-unchanged-language-default": "Faqja $1 veç është vendosur në gjuhën e parazgjedhur e wikit.",
+       "pagelang-db-failed": "Baza e të dhënave nuk mundi të ndryshoi gjuhën e faqes.",
        "right-pagelang": "Ndrysho gjuhën e faqës",
        "action-pagelang": "ndrysho gjuhën e faqës",
+       "log-name-pagelang": "Regjistri i ndryshimit të gjuhës",
+       "log-description-pagelang": "Ky është regjistri i ndryshimeve në gjuhët e faqes.",
        "mediastatistics-table-mimetype": "Lloji MIME",
        "mediastatistics-table-extensions": "Shtojcat e mundshme",
        "mediastatistics-table-count": "Numri i skedave",
index 562d68f..e0e62fc 100644 (file)
@@ -76,7 +76,8 @@
                        "Rockyfelle",
                        "Johan",
                        "Martin Wiss",
-                       "Mdjarv"
+                       "Mdjarv",
+                       "Frisko"
                ]
        },
        "tog-underline": "Stryk under länkar:",
        "anontalk": "Diskussion",
        "navigation": "Navigering",
        "and": "&#32;och",
-       "qbfind": "Hitta",
-       "qbbrowse": "Bläddra igenom",
-       "qbedit": "Redigera",
-       "qbpageoptions": "Denna sida",
-       "qbmyoptions": "Mina sidor",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Åtgärder",
        "namespaces": "Namnrymder",
        "variants": "Varianter",
        "edit-local": "Redigera lokal beskrivning",
        "create": "Skapa",
        "create-local": "Lägg till en lokal beskrivning",
-       "editthispage": "Redigera denna sida",
-       "create-this-page": "Skapa denna sida",
        "delete": "Radera",
-       "deletethispage": "Radera denna sida",
-       "undeletethispage": "Återställ denna sida",
        "undelete_short": "Återställ {{PLURAL:$1|en version|$1 versioner}}",
        "viewdeleted_short": "Visa {{PLURAL:$1|en raderad redigering|$1 raderade redigeringar}}",
        "protect": "Skrivskydda",
        "protect_change": "ändra",
-       "protectthispage": "Skrivskydda denna sida",
        "unprotect": "Ändra skydd",
-       "unprotectthispage": "Ändra skyddet på denna sidan",
        "newpage": "Ny sida",
-       "talkpage": "Diskutera denna sida",
        "talkpagelinktext": "Diskussion",
        "specialpage": "Specialsida",
        "personaltools": "Personliga verktyg",
-       "articlepage": "Visa innehållssida",
        "talk": "Diskussion",
        "views": "Visningar",
        "toolbox": "Verktyg",
        "tool-link-userrights": "Ändra {{GENDER:$1|användargrupper}}",
        "tool-link-userrights-readonly": "Visa {{GENDER:$1|användargrupper}}",
        "tool-link-emailuser": "Skicka e-post till denna {{GENDER:$1|användare}}",
-       "userpage": "Visa användarsida",
-       "projectpage": "Visa projektsida",
        "imagepage": "Visa filsida",
        "mediawikipage": "Visa meddelandesida",
        "templatepage": "Visa mallsida",
        "mw-widgets-titleinput-description-redirect": "omdirigerar till $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Lägg till en kategori...",
        "mw-widgets-usersmultiselect-placeholder": "Lägg till fler...",
-       "date-range-from": "From. den",
+       "date-range-from": "Från datum:",
        "date-range-to": "Till datum:",
        "sessionmanager-tie": "Kan inte kombinera flera begäransautentiseringstyper: $1.",
        "sessionprovider-generic": "$1-sessioner",
        "gotointerwiki-invalid": "Den angivna titeln är ogiltig.",
        "gotointerwiki-external": "Du håller på att lämna {{SITENAME}} för att besöka [[$2]] som är en separat webbplats.\n\n'''[$1 Fortsätt till $1]'''",
        "undelete-cantedit": "Du kan inte återställa denna sida eftersom du är inte tillåten att redigera denna sida.",
-       "undelete-cantcreate": "Du kan inte återställa denna sida eftersom det inte finns någon befintlig sida med detta namn och du tillåts inte att skapa denna sida."
+       "undelete-cantcreate": "Du kan inte återställa denna sida eftersom det inte finns någon befintlig sida med detta namn och du tillåts inte att skapa denna sida.",
+       "pagedata-title": "Siddata",
+       "pagedata-text": "Denna sida tillhandahåller ett datagränssnitt till sidor. Ange sidans titel i webbadressen med hjälp av undersidesyntax.\n* Innehållsförhandling gäller baserat på att din klients Accept-header. Detta innebär att siddatan kommer att tillhandahållas i det format som din klient föredrar.",
+       "pagedata-not-acceptable": "Inga matchande format finns. MIME-typer som stöds:$1",
+       "pagedata-bad-title": "Ogiltig titel: $1."
 }
index 196c581..0a2442b 100644 (file)
@@ -10,7 +10,8 @@
                        "Soundarya shetty s",
                        "రహ్మానుద్దీన్",
                        "BHARATHESHA ALASANDEMAJALU",
-                       "Lokesha kunchadka"
+                       "Lokesha kunchadka",
+                       "Kiranpoojary"
                ]
        },
        "tog-underline": "ಲಿಂಕ್‍ಲೆದ ತಿರ್ತ್ ಗೆರೆ(ಅಂಡರ್ ಲೈನ್) ಪಾಡ್‍ಲೆ",
@@ -38,8 +39,8 @@
        "tog-enotifminoredits": "ಎಲ್ಯೆಲ್ಯ ಬದಲಾವನೆ ಆಂಡಲ ಎಂಕ್ ಇ-ಅಂಚೆ ಕಡಪುಡ್ಲೆ",
        "tog-enotifrevealaddr": "ಪ್ರಕಟಣೆ ಇ-ಮೇಲ್‍ಡ್ ಎನ್ನ ಇ-ಮೇಲ್ ವಿಳಾಸನ್ ತೊಜ್ಪಾಲೆ",
        "tog-shownumberswatching": "ಪುಟೊನು ತೂವೊಂದುಪ್ಪುನಂಚಿನ ಸದಸ್ಯೆರ್‍ನ ಸಂಖ್ಯೆನ್ ತೊಜ್ಪಾಲೆ",
-       "tog-oldsig": "ಇತ್ತೆದ ಸೈನ್.",
-       "tog-fancysig": "ವಿà²\95ಿà²\9fà³\86à²\95à³\8dಸà³\8dâ\80\8cà²\9fà³\8dâ\80\8dà²\97à³\8d à²¦à²¸à³\8dà²\95ತà³\8dತà³\8dâ\80\8cದ à²\89ಪà²\9aಾರà³\8a(ಸà³\8dವà²\82ತà³\8a à²\9aಾಲನà³\86ದ à²\95à³\8aà²\82ಡಿ à²\87ದà³\8dಯà²\82ದಿಲà³\86à²\95)",
+       "tog-oldsig": "ಇತ್ತೆ ಉಪ್ಪುನ ದಸ್ಕತ್ತ್",
+       "tog-fancysig": "ದಸà³\8dà²\95ತà³\8dತà³\8dâ\80\8cನà³\8d à²µà²¿à²\95ಿà²\9fà³\86à²\95à³\8dಷà³\8dà²\9fà³\8d à²\86ದà³\8d à²¦à³\86ತà³\8dತà³\8aನà³\81 (ಸà³\8dವಯà²\82 à²\95à³\8aà²\82ಡಿ à²¦à²¾à²\82ತà³\86)",
        "tog-uselivepreview": "ನೇರೊ ಮುನ್ನೋಟೊನು ಉಪಯೋಗ ಮಲ್ಪುಲೆ",
        "tog-forceeditsummary": "ಸಂಪಾದನೆ ಸಾರಾಂಸೊನು ಕಾಲಿ ಬುಡ್‍ಂದ್ ಎಂಕ್ ನೆನಪು ಮಲ್ಪುಲೆ",
        "tog-watchlisthideown": "ವೀಕ್ಷಣಾಪಟ್ಟಿಡ್ ಎನ್ನ ಸಂಪಾದನೆಲೆನ್ ತೊಜ್‍ಪಾವೊಡ್ಚಿ",
@@ -53,7 +54,7 @@
        "tog-diffonly": "ವ್ಯತ್ಯಾಸದ ತಿರ್ತುಪ್ಪುನಂಚಿನ ಪುಟೊತ ವಿವರೊಲೆನ್ ತೊಜ್’ಪಾವೊಚಿ",
        "tog-showhiddencats": "ದೆಂಗಾದಿನ ವರ್ಗೊಲೆನ್ ತೊಜ್ಪಾಲೆ",
        "tog-norollbackdiff": "ದೆತ್ತ್‌ ಪಾಡ್‍ನೆಡ್‍ದ್ ಬುಕ್ಕೊ ವ್ಯತ್ಯಾಸೊನು ಬುಡ್‍ಲೆ",
-       "tog-useeditwarning": "ಸà²\82ಪà³\8aಲಿತà³\8dâ\80\8dನà³\86ನà³\8d à²\92ರಿಪಾವà²\82ದà³\86 à²ªà²¿à²¦à²¡à³\8dà²\82ಡ à²\8eನನà³\8d à²\8eà²\9aà³\8dà²\9aರಿಸಲೆ",
+       "tog-useeditwarning": "ಸà²\82ಪà³\8aಲಿತà³\8dâ\80\8dನà³\86ನà³\8d à²\92ರಿಪಾವà²\82ದà³\86 à²ªà²¿à²¦à²¡à³\8dà²\82ಡ à²\8eನನà³\8d à²\8eà²\9aà³\8dà²\9aರಿಪà³\81ಲೆ",
        "tog-prefershttps": "ಏಪೊಗುಲ ಲಾಗಿನ್ ಆಯಿನ ಬುಕ್ಕೊ ಜಾಗ್ರತೆದ ಸಂಪರ್ಕೊನು  ಬಳಕೆ ಮಲ್ಪುಲೆ",
        "underline-always": "ಯಾಪಲ",
        "underline-never": "ಯಾಪಗ್ಲಾ ಇಜ್ಜಿ",
        "june": "ಜೂನ್",
        "july": "ಜುಲಾಯಿ",
        "august": "ಆಗೋಸ್ಟು",
-       "september": "ಸಪ್ಟಂಬರ",
-       "october": "ಅಕ್ಟೋಬರ",
-       "november": "ನವà²\82ಬರà³\8a",
-       "december": "ದಸà²\82ಬರà³\8a",
+       "september": "ಸಪ್ಟಂಬರ",
+       "october": "ಅಕ್ಟೋಬರ",
+       "november": "ನವà²\82ಬರà³\8d",
+       "december": "ದಸà²\82ಬರà³\8d",
        "january-gen": "ಜನವರಿ",
        "february-gen": "ಪೆಬ್ರವರಿ",
        "march-gen": "ಮಾರ್ಚಿ",
        "jun": "ಜೂನ್",
        "jul": "ಜುಲಾಯಿ",
        "aug": "ಅಗೋಸ್ಟು",
-       "sep": "ಸಪ್ಟಂಬರ",
-       "oct": "ಅಕ್ಟೋಬರ",
-       "nov": "ನವà²\82ಬರà³\8a",
-       "dec": "ದಸà²\82ಬರà³\8a",
+       "sep": "ಸಪ್ಟಂಬರ",
+       "oct": "ಅಕ್ಟೋಬರ",
+       "nov": "ನವà²\82ಬರà³\8d",
+       "dec": "ದಸà²\82ಬರà³\8d",
        "january-date": "ಜನವರಿ $1",
        "february-date": "ಪೆಬ್ರುವರಿ $1",
        "march-date": "ಮಾರ್ಚಿ $1",
        "category_header": "\"$1\" ವರ್ಗಡುಪ್ಪುನಂಚಿನ ಲೇಕನೊಲು",
        "subcategories": "ಉಪ ವರ್ಗೊಲು",
        "category-media-header": "\"$1\" ವರ್ಗಡುಪ್ಪುನಂಚಿನ ಚಿತ್ರೊ/ಶಬ್ಧೊ ಫೈಲ್‍ಲು",
-       "category-empty": "''à²\88 à²µà²°à³\8dà²\97à³\8aಡà³\81 à²¸à²¦à³\8dಯà²\97à³\8d à²\93ವà³\81ಲ à²ªà³\81à²\9fà³\8aಲಾವಡà³\8d à²\85ತà³\8dತà³\8dâ\80\99ನà³\8dಡ ಚಿತ್ರೊಲಾವಡ್ ಇಜ್ಜಿ.''",
-       "hidden-categories": "{{PLURAL:$1|Hidden category|ದà³\86à²\82à²\97ಾದà³\8d à²¦à³\80ಡà³\8dâ\80\8dನ ವರ್ಗೊಲು}}",
+       "category-empty": "''à²\88 à²µà²°à³\8dà²\97à³\8aಡà³\81 à²¸à²¦à³\8dಯà²\97à³\8d à²\93ವà³\81ಲ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲಾವಡà³\8d à²\85ತà³\8dತà²\82ಡ ಚಿತ್ರೊಲಾವಡ್ ಇಜ್ಜಿ.''",
+       "hidden-categories": "{{PLURAL:$1|Hidden category|ದà³\86à²\82à²\97ಾದà³\8d à²¦à³\80ತಿನ ವರ್ಗೊಲು}}",
        "hidden-category-category": "ದೆಂಗಾದ್ ದೀತಿನ ವರ್ಗೊಲು",
        "category-subcat-count": "{{PLURAL:$2|This category has only the following subcategory.|ಈ ವರ್ಗೊಡು ಈ ತಿರ್ತ್‍ದ {{PLURAL:$1|subcategory|$1 ಉಪವರ್ಗೊಲೆನ್}} ಸೇರಾದ್, ಒಟ್ಟಿಗೆ $2 ಉಂಡು.}}",
        "category-subcat-count-limited": "ಈ ವರ್ಗೊಡು ತಿರ್ತ್ ತೊಜ್ಪಾದಿನ {{PLURAL:$1|ಉಪವರ್ಗ|$1 ಉಪವರ್ಗೊಲು}} ಉಂಡು.",
-       "category-article-count": "{{PLURAL:$2|This category contains only the following page.|ಈ ವರ್ಗೊಡು ಈ ತಿರ್ತ್‍ದ {{PLURAL:$1|page is|$1 ಪುಟೊಲೆನ್}} ಸೇರ್ಪಾದ್, ಒಟ್ಟಿಗೆ $2 ಪುಟೊಲು ಉಂಡು.}}",
+       "category-article-count": "{{PLURAL:$2|ಈ ವರ್ಗೊಡು ತಿರ್ತ್ ಉಪ್ಪುನ ಒಂಜಿ ಪುಟೊ ಮಾತ್ರ ಉಂಡು|ಒಟ್ಟು $2 ಪುಟೊಕುಲೆಡ್ ತಿರ್ತ್ ಉಪ್ಪುನ {{PLURAL:$1|ಪುಟೊ|$1 ಪುಟೊಕುಲು}} ಈ ವರ್ಗೊಡು ಉಂಡು.}}",
        "category-article-count-limited": "ಪ್ರಸಕ್ತ ವರ್ಗೊಡು ಈ ತಿರ್ತ್’ದ {{PLURAL:$1|ಪುಟ ಉಂಡು|$1 ಪುಟೊಲು ಉಂಡು}}.",
        "category-file-count": "{{PLURAL:$2|ಈ ವರ್ಗೊಡು ಈ ತಿರ್ತ್‍ದ ಕಾಲಿ ಒಂಜಿ ಫೈಲ್ ಉಂಡು.|ಈ ವರ್ಗೊಡು ಈ ತಿರ್ತ್‍ದ {{PLURAL:$1| ಫೈಲ್‍ನ್|$1  ಫೈಲ್‍ನ್}} ಸೇರ್ಪಾದ್, ಒಟ್ಟಿಗೆ $2 ಉಂಡು.}}",
        "category-file-count-limited": "ಪ್ರಸಕ್ತ ವರ್ಗೊಡು ಈ ತಿರ್ತ್’ದ {{PLURAL:$1|ಫೈಲ್ ಉಂಡು|$1 ಫೈಲ್’ಲು ಉಂಡು}}.",
        "listingcontinuesabbrev": "ದುಂಬು.",
        "index-category": "ವಿಷಯ ಸೂಚಿ ಪುಟಕ್‘ಲು",
-       "noindex-category": "ವಿಷಯಸà³\82à²\9aಿ à²\87à²\9cà³\8dà²\9cಾà²\82ದಿನ à²ªà³\81à²\9fà²\95à³\8dâ\80\98ಲು",
+       "noindex-category": "ವಿಷಯಸà³\82à²\9aಿ à²\87à²\9cà³\8dà²\9cಾà²\82ದಿನ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲು",
        "broken-file-category": "ಪುಟಡ್ ಇಜ್ಜಂದಿನ ಕಡತದ ಕೊಂಡಿಲು",
        "about": "ಎಂಕ್ಲೆನ ಬಗ್ಗೆ",
        "article": "ಲೇಖನ ಪುಟ",
        "anontalk": "ಪಾತೆರ್ಲೆ",
        "navigation": "ಸಂಚಾರೊ",
        "and": "&#32;ಬೊಕ್ಕ",
-       "qbfind": "ನಾಡ್’ಲೆ",
-       "qbbrowse": "ಬ್ರೌಸ್",
-       "qbedit": "ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ",
-       "qbpageoptions": "ಈ ಪುಟ",
-       "qbmyoptions": "ಎನ್ನ ಪುಟೊಲು",
        "faq": "ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು",
-       "faqpage": "Project:ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು",
        "actions": "ಕ್ರಿಯೆಕ್ಕುಲು",
        "namespaces": "ಪುದರ್‍ದ ವರ್ಗೊಲು",
        "variants": "ದಿಂಜ",
        "edit-local": "ಸ್ಥಳೀಯ ವಿವರಣೆನ್ ಸೇರಾಲೆ",
        "create": "ಸೃಷ್ಟಿಸಾಲೆ",
        "create-local": "ಸ್ಥಳೀಯ ವಿವರಣೆನ್ ಸೇರಾಲೆ",
-       "editthispage": "ಈ ಪುಟೊನು ಬದಲಾಯಿಸಾಲೆ",
-       "create-this-page": "ಈ ಪುಟೊನು ಸೃಷ್ಟಿಸಾಲೆ",
-       "delete": "ದೆತ್ತ್ ಪಾಡ್ಲೆ",
-       "deletethispage": "ಈ ಪುಟೊನು ದೆತ್ತ್ ಪಾಡ್ಲೆ",
-       "undeletethispage": "ಈ ಪುಟೊ ದೆತ್ತ್‌ ಪಾಡುನವು ರದ್ದಾತ್ಂಡ್",
+       "delete": "ಮಾಜಾಲೆ",
        "undelete_short": "ಪಿರ ಪಾಡ್ಲೆ {{PLURAL:$1|ಒ೦ಜಿ ಬದಲಾವಣೆ|$1 ಬದಲಾವಣೆಲು}}",
        "viewdeleted_short": "ನೋಟ{{PLURAL:$1|1 ಡಿಲೀಟ್ ಆತಿನ ಸಂಪಾದನೆ|$1 ಡಿಲೀಟ್ ಆತಿನ ಸಂಪಾದನೆಲು}}",
        "protect": "ಸ೦ರಕ್ಷಿಸಾಲೆ",
        "protect_change": "ಬದಲಾಲೆ",
-       "protectthispage": "ಈ ಪುಟೊನು ಸ೦ರಕ್ಷಿಸಾಲೆ",
        "unprotect": "ರಕ್ಷಣೆನ್ ಬದಲ್‍ಪುಲೆ",
-       "unprotectthispage": "ಈ ಪುಟೊತ ರಕ್ಷಣೆನ್ ಬದಲ್‍ಪುಲೆ",
        "newpage": "ಪೊಸ ಪುಟೊ",
-       "talkpage": "ಪುಟದ ಬಗ್ಗೆ ಚರ್ಚೆ ಮನ್ಪುಲೆ",
        "talkpagelinktext": "ಪಾತೆರ",
        "specialpage": "ವಿಶೇಷ ಪುಟ",
        "personaltools": "ಸ್ವಂತೊ ಉಪಕರಣೊಲು",
-       "articlepage": "ಲೇಖನ ಪುಟೊನು ತೂಲೆ",
        "talk": "ಚರ್ಚೆ",
        "views": "ಅಬಿಪ್ರಾಯೊಲು",
        "toolbox": "ಉಪಕರಣೊಲು",
-       "userpage": "ಸದಸ್ಯೆರ್ನ ಪುಟೊನು ತೂಲೆ",
-       "projectpage": "ಪ್ರೊಜೆಕ್ಟ್ ಪುಟೊನು ತೂಲೆ",
        "imagepage": "ಫೈಲ್‍ದ ಪುಟೊನು ತೂಲೆ",
        "mediawikipage": "ಸಂದೇಶ ಪುಟೊನು ತೂಲೆ",
        "templatepage": "ಟೆಂಪ್ಲೇಟ್ ಪುಟೊನು ತೂಲೆ",
        "viewtalkpage": "ಚರ್ಚೆನ್ ತೂಲೆ",
        "otherlanguages": "ಬೇತೆ ಬಾಸೆಲೆಡ್",
        "redirectedfrom": "($1 ರ್ದ್ ಪಿರ ನಿರ್ದೇಸನೊದ)",
-       "redirectpagesub": "ಪà³\81ನರà³\8dನಿರà³\8dದà³\87ಶನ à²ªà³\81à²\9f",
+       "redirectpagesub": "ಪಿರ à²¨à²¿à²°à³\8dದà³\87ಶನà³\8aದ à²ªà³\81à²\9fà³\8a",
        "redirectto": "ಪಿರ ಕಡಪುಡ್ಲೆ:",
        "lastmodifiedat": "ಈ ಪುಟೊ ಇಂದೆತ ದುಂಬು $2, $1 ಗ್ ಬದಲಾತ್ಂಡ್.",
        "viewcount": "ಈ ಪುಟೊನು {{PLURAL:$1|1 ಸರಿ|$1 ಸರಿ}} ತೂತೆರ್.",
        "ok": "ಸರಿ",
        "retrievedfrom": "\"$1\"ರ್ದ್ ದೆತೊನ್ನಂಚಿನ",
        "youhavenewmessages": "ಇರೆಗ್ $1 ಉಂಡು ($2).",
-       "youhavenewmessagesfromusers": "{{PLURAL:$4|ನಿà²\95à³\8dà²\95à³\8d}} {{PLURAL:$3|ನಾನ à²\92ರಿ à²¸à²¦à²¸à³\8dಯಡà³\8dದà³\8d|$3 à²¸à²¦à²¸à³\8dಯà³\86ರà³\86à²\97್}} $1 ಉಂಡು. ($2)",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|à²\88ರà³\86à²\97à³\8d}} {{PLURAL:$3|ನನà³\8aರಿ à²¸à²¦à²¸à³\8dಯà³\86ಡà³\8dದà³\8d|$3 à²¸à²¦à²¸à³\8dಯà³\86ರà³\86ಡà³\8dದ್}} $1 ಉಂಡು. ($2)",
        "youhavenewmessagesmanyusers": " ನಿಕ್ಲೆಗ್ ದಿಂಜ ಸದಸ್ಯೆರೆಡ್ದ್ $1 ಉಂಡು ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|ಒಂಜಿ ಪೊಸ ಸಂದೇಸೊ|999=ಪೊಸ ಸಂದೇಸೊಲು}}",
-       "newmessagesdifflinkplural": "ಇಂಚಿಪದೊದ{{PLURAL:$1|ಬದಲಾವಣೆ|999=ಬದಲಾವಣೆಲು}}",
+       "newmessagesdifflinkplural": "ಇಂಚಿಪದ {{PLURAL:$1|ಬದಲಾವಣೆ|999=ಬದಲಾವಣೆಲು}}",
        "youhavenewmessagesmulti": "$1 ಡ್ ಇರೆಗ್ ಪೊಸ ಸಂದೇಶೊಲು ಉಂಡು",
        "editsection": "ಸಂಪೊಲಿಪುಲೆ",
        "editold": "ಸಂಪೊಲಿಪುಲೆ",
        "yourpassword": "ಪಾಸ್-ವರ್ಡ್:",
        "userlogin-yourpassword": "ಪ್ರವೇಸೊಪದೊ",
        "userlogin-yourpassword-ph": "ಪ್ರವೇಸೊ ಪದೊನ್ ನಮೂದಿಸಲೆ",
-       "createacct-yourpassword-ph": "ಪà³\8dರವà³\87ಸà³\8a à²ªà²¦à³\8aನà³\8d à²¨à²®à³\82ದಿಸಲೆ",
+       "createacct-yourpassword-ph": "ಪà³\8dರವà³\87ಸà³\8a à²ªà²¦à³\8aನà³\8d à²ªà²¾à²¡à³\8dâ\80\8cಲೆ",
        "yourpasswordagain": "ಪಾಸ್ವರ್ಡ್ ಪಿರ ಟೈಪ್ ಮಲ್ಪುಲೆ",
        "createacct-yourpasswordagain": "ಪ್ರವೇಸೊ ಪದೊನು ದೃಡೊ ಮಲ್ಪುಲೆ",
-       "createacct-yourpasswordagain-ph": "ಪ್ರವೇಸೊ ಪದೊನು ನನ ಒರ ನಮೂದಿಸಲೆ",
-       "userlogin-remembermypassword": "à²\8eನನà³\8d à²²à²¾à²\97ಿನà³\8d à²\86ತà³\87 à²¦à³\80ಡà³\8dಲà³\86",
+       "createacct-yourpasswordagain-ph": "ಪ್ರವೇಸೊ ಪದೊನು ನನೊರ ಪಾಡ್‍ಲೆ",
+       "userlogin-remembermypassword": "ಎನನ್ ಲಾಗಿನ್ ಆತೇ ದೀಲೆ",
        "userlogin-signwithsecure": "ರಕ್ಷಣೆದ ಕನೆಕ್ಷನ್ ಉಪಯೋಗಿಸಲೆ.",
        "cannotlogin-title": "ಇತ್ತೆ ಉಲಾಯಿ ಪೋಯರ್ ಸಾದ್ಯೊ ಅವೊಂತಿಜ್ಜಿ",
        "cannotloginnow-title": "ಇತ್ತೆ ಉಲಾಯಿ ಪೋಯರ್ ಸಾದ್ಯೊ ಇದ್ದಿ",
        "notloggedin": "ಲಾಗಿನ್ ಆತ್‘ಜ್ಜರ್",
        "userlogin-noaccount": "ಈರೆನ ಖಾತೆ ಇಜ್ಜೇ?",
        "userlogin-joinproject": "{{SITENAME}}ಗ್ ಸೇರ್ಲೆ",
-       "createaccount": "ಪà³\8aಸ à²\85à²\95à³\8dà²\95à³\8cà²\82à²\9fà³\8d ಸುರು ಮಲ್ಪುಲೆ",
+       "createaccount": "ಪà³\8aಸ à²\96ಾತà³\86 ಸುರು ಮಲ್ಪುಲೆ",
        "userlogin-resetpassword-link": "ಈರೆನೆ ಪ್ರವೇಸೊ ಪದೊ ಮರತ್ತ್‌ಂಡಾ?",
        "userlogin-helplink2": "ಲಾಗಿನ್ ಆಯರ ಸಹಾಯೊ",
        "userlogin-createanother": "ಪೊಸ ಕಾತೆ ಸುರು ಮಲ್ಪುಲೆ",
        "createacct-reason-ph": "ಈರ್ ದಾಯೆ ನಾನಲ ಒಂಜಿ ಕಾತೆ ದೆತ್ತೊಂದುಲ್ಲರ್?",
        "createacct-submit": "ಪೊಸ ಕಾತೆ ಸುರು ಮಲ್ಪುಲೆ",
        "createacct-another-submit": "ಪೊಸ ಕಾತೆ ಸುರು ಮಲ್ಪುಲೆ",
-       "createacct-benefit-heading": "{{SITENAME}}ಉಂಡ್ ನಿಕ್ಲೆನಂಚಿತ್ತಿನ ಎಡ್ದೆನ್ತಂಕ್ಲೆಡ್ದ್ ಉಂಡಾತುಂಡ್.",
+       "createacct-benefit-heading": "{{SITENAME}} ನಿಕ್ಲೆನಂಚಿತ್ತಿನ ಎಡ್ದೆಂತಿನಕ್ಲೆಡ್ದ್ ಉಂಡಾತ್‍ಂಡ್.",
        "createacct-benefit-body1": "{{PLURAL:$1|edit|ಸಂಪದೊನೆಲು}}",
        "createacct-benefit-body2": "{{PLURAL:$1|page|ಪುಟೊಕ್ಕುಲು}}",
        "createacct-benefit-body3": "ಇಂಚಿಪೊ{{PLURAL:$1|contributor|ಕಾಣಿಕೆ ಕೊರ್ನರ್}}",
        "noemailcreate": "ಈರ್ ಇತ್ತೆ ಉಪ್ಪುನ ಇ-ಅಂಚೆ ವಿಳಾಸ ಕೊರೊಡ್",
        "passwordsent": "\"$1\" ಇಂಬೆರೆನ ಪುದರ್‘ಡ್ ದಾಖಲಾತ್‘ನ ಇ-ಅಂಚೆ ವಿಳಾಸೊಗ್ ಪೊಸ ಪ್ರವೇಶಪದ ಕಡಪುಡ್‘ದುಂಡು.ಐನ್ ತೂದು ಬೊಕ್ಕ ಕುಡ ಲಾಗಿನ್ ಇನ್ ಆಲೆ.",
        "mailerror": "ಅಂಚೆ ಕಡಪುಡುನೆಡ್ ದೋಸೊ: $1",
+       "emailauthenticated": "ಇರೆನ ಈ-ಮೈಲ್ ವಿಲಾಸೊ $2 ತಾನಿ $3 ಕ್ಕ್ ಒಪ್ಪಿಗೆ ಆತ್ಂಡ್.",
        "noemailprefs": "ಈ ಸೌಲಭ್ಯೊಲ್ ಕೆಲಸ ಮಲ್ಪರೆ ಒಂಜಿ ಇ-ಅಂಚೆ ವಿಳಾಸೊನ್ ನಮೂದು ಮಲ್ಪುಲೆ.",
        "emailconfirmlink": "ಇರೆನ ಇ-ಅಂಚೆ ವಿಳಾಸೊನ್ ದೃಡೀಕರಣ ಮಲ್ಪುಲೆ.",
        "emaildisabled": "ಈ ಜಾಲತಾಣಡ್‍ದ್ ಮಿಂಚಂಚೆ ಕಡಪುಡರ ಆಪುಜ್ಜಿ",
        "accmailtitle": "ಪ್ರವೇಶಪದ ಕಡಪುಡ್‘ದುಂಡು",
        "newarticle": "(ಪೊಸತ್)",
        "newarticletext": "ನನಲ ಅಸ್ಥಿತ್ವಡ್ ಉಪ್ಪಂದಿನ ಪುಟೊಗು ಈರ್ ಬೈದರ್.\nಈ ಪುಟೊನು ಸ್ರಿಸ್ಟಿ ಮಲ್ಪೆರೆ ತಿರ್ತ್‍ದ ಚೌಕೊಡು ಬರೆಯೆರೆ ಸುರು ಮಲ್ಪುಲೆ.\n(ಜಾಸ್ತಿ ಮಾಹಿತಿಗ್ [$1 ಸಹಾಯ ಪುಟೊನು] ತೂಲೆ).\nಈ ಪುಟೊಕು ಈರ್ ತಪ್ಪಾದ್ ಬತ್ತಿತ್ತ್ಂಡ ಇರೆನ ಬ್ರೌಸರ್‍ದ '''back''' ಬಟನ್’ನ್ ಒತ್ತ್’ಲೆ.",
-       "noarticletext": "à²\88 à²ªà³\81à²\9fà³\8aಡà³\8d à²¸à²¦à³\8dಯà²\97à³\8d à²\92ವà³\8dವà³\87 à²¬à²°à²µà³\81ಲಾ à²\87à²\9cà³\8dà²\9cಿ, à²\88ರà³\8d à²¬à³\87ತà³\86 à²ªà³\81à²\9fà³\8aಡà³\8d [[Special:Search/{{PAGENAME}}|ಈ ಲೇಕನೊನು ನಾಡೊಲಿ]] <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ಸಂಬಂದೊ ಇತ್ತಿನ ದಾಕಲೆನ್ ನಾಡ್‍ಲೆ], ಅತ್ತಾಂಡ  [{{fullurl:{{FULLPAGENAME}}|action=edit}} ಈ ಪುಟೊನು ಸಂಪೊಲಿಪೊಲಿ]</span>.",
+       "noarticletext": "à²\88 à²ªà³\81à²\9fà³\8aà²\9fà³\81 à²¸à²¦à³\8dಯà²\97à³\8d à²\92ವà³\8dವà³\87 à²¬à²°à²µà³\81ಲಾ à²\87à²\9cà³\8dà²\9cಿ, à²\88ರà³\8d à²¬à³\87ತà³\86 à²ªà³\81à²\9fà³\8aà²\9fà³\81 [[Special:Search/{{PAGENAME}}|ಈ ಲೇಕನೊನು ನಾಡೊಲಿ]] <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ಸಂಬಂದೊ ಇತ್ತಿನ ದಾಕಲೆನ್ ನಾಡ್‍ಲೆ], ಅತ್ತಾಂಡ  [{{fullurl:{{FULLPAGENAME}}|action=edit}} ಈ ಪುಟೊನು ಸಂಪೊಲಿಪೊಲಿ]</span>.",
        "noarticletext-nopermission": "ಈ ಪುಟೊಡ್ ಸದ್ಯಗ್ ಒವ್ವೇ ಬರವುಲಾ ಇಜ್ಜಿ, ಈರ್ ಬೇತೆ ಪುಟೊಡ್ [[Special:Search/{{PAGENAME}}|ಈ ಲೇಕನೊನು ನಾಡೊಲಿ]] <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ಸಂಬಂದೊ ಇತ್ತ್‌ನ ಲಾಗ್‌ನ್ ನಾಡ್‍ಲೆ],[{{fullurl:{{FULLPAGENAME}}|action=edit}} ಅಂಡ ಇರೆಗ್ ಈ ಪುಟೊನು ಸಂಪೊಲಿಪೊಲಿಪುನೆಗ್ ಒಪ್ಪಿಗೆ ಇಜ್ಜಿ]</span>.",
        "userpage-userdoesnotexist": "ಬಳಕೆದಾರ ಖಾತೆ \"<nowiki>$1</nowiki>\" ದಾಖಲಾತ್‘ಜ್ಜಿ. ಈರ್ ಉಂದುವೇ ಪುಟನ್ ಸಂಪಾದನೆ ಮಲ್ಪರ ಉಂಡಾಂದ್ ಖಾತ್ರಿ ಮಲ್ತೊನಿ.",
-       "previewnote": "'''ಉಂದು ಕೇವಲ ಮುನ್ನೋಟ; ಪುಟೊನು ನನಲ ಒರಿಪಾದಿಜಿ ಪನ್ಪುನೇನ್ ಮರಪೊರ್ಚಿ!'''",
+       "userpage-userdoesnotexist-view": "ಸದಸ್ಯೆರೆ ಖಾತೆ \"$1\" ನೋಂದಣಿ ಆಯಿಜಿ.",
+       "previewnote": "'''ಉಂದು ಕೇವಲ ಮುನ್ನೋಟ; ಪುಟೊನು ನನಲ ಒರಿಪಾದಿಜಿ ಪನ್ಪುನೇನ್ ಮರಪಡೆ!'''",
        "editing": "$1 ಲೇಕನೊನು ಈರ್ ಸಂಪಾದನೆ ಮಲ್ತೊಂದುಲ್ಲರ್",
        "creating": "$1 ನ್ನು ಸ್ರಿಸ್ಟಿಸವೊಂದುಂಡು",
        "editingsection": "$1(ವಿಬಾಗೊನು) ಸಂಪದನೆ ಮಲ್ತೊಂದುಲ್ಲರ್",
        "template-semiprotected": "(ಅರೆ-ಸಂರಕ್ಷಿತೊ)",
        "hiddencategories": "ಈ ಪುಟೊನ್ {{PLURAL:$1|1 hidden category|$1 ಗುಪ್ತ ವರ್ಗೊಲೆಗ್}} ಸೇರ್ದ್‍ನ್ಡ್:",
        "permissionserrors": "ಅನುಮತಿ ದೋಷ",
-       "permissionserrorstext-withaction": "$2 à²\97à³\8d à²\87ರà³\86à²\97à³\8d à²\85ನà³\81ಮತಿ à²\87ದà³\8dದಿ, à²\85ಯಿà²\95à³\8d {{PLURAL:$1||reason|ಕಾರಣೊಲು}}:",
-       "moveddeleted-notice": "à²\88 à²ªà³\81à²\9fà³\8a à²\85ಸà³\8dತಿತà³\8dವà³\8aಡà³\8d à²\87ದà³\8dದಿ.\nಪà³\81à²\9fà³\8aದ à²¡à²¿à²²à³\80ಶನà³\8d à²\85ತà³\8dತà³\8dà²\82ಡà³\8d à²\95ಡಪà³\8dಪà³\81ಡà³\81ನà³\86 à²²à²¾à²\97à³\8dâ\80\8dನà³\8d à²¤à³\82ಯರೆ ತಿರ್ತ್ ಕೊರ್ತ್ಂಡ್.",
+       "permissionserrorstext-withaction": "$2 à²\95à³\8dà²\95à³\8d à²\87ರà³\86à²\97à³\8d à²\85ನà³\81ಮತಿ à²\87à²\9cà³\8dà²\9cಿ. à²¨à³\86à²\95à³\8dà²\95à³\8d {{PLURAL:$1|à²\95ಾರಣà³\8a|ಕಾರಣೊಲು}}:",
+       "moveddeleted-notice": "à²\88 à²ªà³\81à²\9fà³\8a à²¨à²¾à²¶à³\8a à²\86ತà³\8dâ\80\8dà²\82ಡà³\8d. \nಪà³\81à²\9fà³\8aತ à²¨à²¾à²¶à³\8aದ à²\85ತà³\8dತà³\8dà²\82ಡà³\8d à²µà²°à³\8dà²\97ಾವಣà³\86ದ à²¦à²¾à²\95ಲà³\86ನà³\8d à²¤à³\82ಯà³\86ರೆ ತಿರ್ತ್ ಕೊರ್ತ್ಂಡ್.",
        "postedit-confirmation-created": "ಈ ಪುಟೋನು ಉಂಡು ಮಾನ್ತುಂಡು.",
        "postedit-confirmation-saved": "ಇರೇನಾ ಸಂಪಾದನೆನ್ ಒರಿಪಾತುಂಡು.",
        "edit-already-exists": "ಪೊಸ ಪುಟೋನು ಉಂಡು ಮಲ್ಪರೆ ಅಯಿಜಿ. ಅವ್ವು ದುಂಬೇ ಉಂಡು.",
        "currentrevisionlink": "ಇತ್ತೆದ ತಿದ್ದುಪಡಿ",
        "cur": "ಸದ್ಯೊ",
        "next": "ಬೊಕ್ಕದ",
-       "last": "ಪಿರವà³\81",
+       "last": "ದà³\81à²\82ಬà³\81ದ",
        "page_first": "ಸುರುತ",
        "page_last": "ಕಡೆತ",
+       "histlegend": "ವ್ಯತ್ಯಾಸೊದ ಆಯ್ಕೆ: ತುಲನೆ ಮಲ್ಪೆರಿತ್ತಿನ ಪರಿಷ್ಕರಣೆಲೆನ ಬರಿಟುಪ್ಪುನ ಗುಬ್ಬಿಲೆನ್ ಗುರ್ತ ಮಲ್ತ್‌ದ್ ಎಂಟರ್‍ನ್ ಒತ್ತುಲೆ ಅತ್ತಂಡ ತಿರ್ತ್‌ಡುಪ್ಪುನ ಗುಬ್ಬಿನ್ ಒತ್ತುಲೆ.<br /> \nLegend: <strong>({{int:cur}})</strong> = ಇಂಚಿಪದ ಪರಿಷ್ಕರಣೆಲೆಡ್ ವ್ಯತ್ಯಾಸೊ, <strong>({{int:last}})</strong> = ದುಂಬುದ ಪರಿಷ್ಕರಣೆಲೆಡ್ ವ್ಯತ್ಯಾಸೊ, <strong>{{int:minoreditletter}}</strong> = ಕಿಞ್ಞ ಬದಲಾವಣೆ.",
        "history-fieldset-title": "ಇತಿಹಾಸಡ್ ನಾಡ್ಲೆ",
        "history-show-deleted": "ದೆತ್ತ್ ಪಾಡಿನ",
        "histfirst": "ಪರ",
        "historyempty": "(ಖಾಲಿ)",
        "history-feed-title": "ಬದಲಾವಣೆಲೆನ ಇತಿಹಾಸೊ",
        "history-feed-description": "ವಿಕಿದ ಈ ಪುಟೊತ ಬದಲಾವಣೆಲೆ ಇತಿಹಾಸೊ",
-       "history-feed-item-nocomment": "$1 $2 à²\85ಲà³\8dಪ",
+       "history-feed-item-nocomment": "$1 $2 à²\9fà³\8d",
        "rev-delundel": "ತೋಜುನೆನ್ ದೆಂಗಲ",
        "rev-showdeleted": "ತೊಜಾವು",
        "revisiondelete": "ಮಾಜಾಯಿನ/ಮಾಜಾವಂದಿನ ಬದಲಾವಣೆಲು",
        "revdelete-offender": "ಬದಲಾವಣೆದ ಸಂಪಾದಕೆ",
        "mergehistory-from": "ಮೂಲ ಪುಟ",
        "mergehistory-reason": "ಕಾರಣ:",
+       "mergelog": "ಸೇರ್ಗೆದ ದಾಕಲೆ",
        "revertmerge": "ಅನ್-ಮರ್ಜ್ ಮಲ್ಪುಲೆ",
        "history-title": "\"$1\" ಪುಟೊತ ಆವೃತ್ತಿ ಇತಿಹಾಸೊ",
        "difference-title": "ಪಿರ ಪರಿಸೀಲನೆದ ನಡುತ ವ್ಯತ್ಯಾಸೊ \"$1\"",
        "compareselectedversions": "ಆಯ್ಕೆ ಮಲ್ತಿನ ಆವೃತ್ತಿಲೆನ್ ಹೊಂದಾಣಿಕೆ ಮಲ್ತ್ ತೂಲೆ",
        "editundo": "ದುಂಬುದಲೆಕೊ",
        "diff-multi-sameuser": "({{PLURAL:$1|One intermediate revision|$1 ಮದ್ಯಂತರೊ ಪರಿಸ್ಕರಣೆ}} ಅವ್ವೇ ಬಳಕೆದಾರೆರೆನ್ ತೋಜಾದ್‍ಜಿ)",
-       "searchresults": "ನಾಡà³\8dâ\80\8dಪತà³\8dತà³\8dâ\80\8cನà³\86ದ ಪಲಿತಾಂಸೊಲು",
-       "searchresults-title": "\"$1\"à²\95à³\8d à²¨à²¾à²¡à³\8dâ\80\8dಪತà³\8dತà³\8dâ\80\8cನà³\86ದ ಪಲಿತಾಂಸೊಲು",
+       "searchresults": "ನಾಡà³\8dâ\80\8dಪತà³\8dತà³\8dâ\80\8cನà³\86ತ ಪಲಿತಾಂಸೊಲು",
+       "searchresults-title": "\"$1\"à²\95à³\8d à²¨à²¾à²¡à³\8dâ\80\8dಪತà³\8dತà³\8dâ\80\8cನà³\86ತ ಪಲಿತಾಂಸೊಲು",
        "notextmatches": "ವಾ ಪುಟೊತ ಪಠ್ಯೊಡುಲಾ ಹೋಲಿಕೆ ಇಜ್ಜಿ",
        "prevn": "ದುಂಬುತ್ತ {{PLURAL:$1|$1}}",
-       "nextn": "ಬà³\8aà²\95à³\8dà²\95à³\8a {{PLURAL:$1|$1}}",
+       "nextn": "ಬà³\8aà²\95à³\8dà²\95ದ {{PLURAL:$1|$1}}",
        "prev-page": "ದುಂಬುತ ಪುಟೊ",
        "next-page": "ನನತಾ ಪುಟ",
        "nextn-title": "ದುಂಬುದ $1 {{PLURAL:$1|result|ಪಲಿತಾಂಸೊಲು}}",
-       "shown-title": "ಪà³\8dರತಿ à²ªà³\81à²\9fà³\8aಡà³\81ಲಾ $1 {{PLURAL:$1|result|ಪಲಿತಾà²\82ಸà³\8a}} à²¤à³\8bà²\9cಿಪಾವà³\81",
+       "shown-title": "ಪ್ರತಿ ಪುಟೊಡುಲಾ $1 {{PLURAL:$1|result|ಪಲಿತಾಂಸೊ}} ತೋಜಪಾವು",
        "viewprevnext": "ತೂಲೆ ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchmenu-exists": "<strong>ಈ ವಿಕಿಟ್ \"[[:$1]]\" ಪುದರ್ದ ಪುಟೊ ಉಂಡು.</strong> {{PLURAL:$2|0=|ನಾಡಿನ ಪುದರ್ಗ್ ತಿಕ್ಕಿನ ಬೇತೆ ಫಲಿತಾಶೊಲೆನ್ಲಾ ತೂಲೆ.}}",
        "searchmenu-new": "<strong>ಈ ಪುಟೊನು ರಚಿಸಲೆ \"[[:$1]]\" ಈ ವಿಕಿಡ್!</strong> {{PLURAL:$2|0=|See also the page found with your search.|ನಾಡ್‍ನಗ ತೋಜಿದ್ ಬರ್ಪುನ ಪಲಿತಾಂಸೊನು ತೂಲೆ.}}",
        "searchprofile-articles": "ಲೇಕನೊ ಪುಟೊ",
        "searchprofile-images": "ಮಲ್ಟಿಮೀಡಿಯೊ",
        "searchprofile-everything-tooltip": "ಮಾತ ಮಾಹಿತಿಲೆನ್ ನಾಡ್‍ಲೆ (ಪಾತೆರದ ಪುಟೊಲ ಸೇರ್ದ್)",
        "searchprofile-advanced-tooltip": "ಬಳಕೆದ ನಾಮೊವರ್ಗೊಡು ನಾಡ್‍ಲೆ",
        "search-result-size": "$1 ({{PLURAL:$2|೧ ಪದೊ|$2 ಪದೊಕುಲು}})",
+       "search-result-category-size": "{{PLURAL:$1|1 ಸದಸ್ಯೆರ್|$1 ಸದಸ್ಯೆರ್ಲು}} ({{PLURAL:$2|1 ಉಪವರ್ಗೊ|$2 ಉಪವರ್ಗೊಲು}}, {{PLURAL:$3|1 ಫೈಲ್|$3 ಫೈಲ್‍ಲು}})",
        "search-redirect": "($1 ಡ್ದ್ ಪಿರ ನಿರ್ದೇಸನೊ)",
        "search-section": "(ವಿಬಾಗೊ $1)",
+       "search-file-match": "ಫೈಲ್‍ಡಿತ್ತಿ ವಿಸಯೊಗು ಒಂಬುಂಡು",
        "search-suggest": "ಇಂದೆನ್ ನಾಡೊಂದುಲ್ಲರೆ: $1",
        "search-interwiki-caption": "ಬಳಗದ ಇತರ ಯೋಜನೆಲು",
        "search-interwiki-default": "$1 ಫಲಿತಾಂಶೊಲು:",
        "searchrelated": "ಸ೦ಬ೦ಧ ಇತ್ತಿನ",
        "searchall": "ಮಾತ",
        "search-showingresults": "{{PLURAL:$4|ಫಲಿತಾಂಸೊ<strong>$1</strong> of <strong>$3</strong>|ಫಲಿತಾಂಸೊ <strong>$1 - $2</strong> of <strong>$3</strong>}}",
-       "search-nonefound": "à²\88ರà³\86ನ à²µà²¿à²\9aಾರಣà³\86à²\97à³\8d à²¤à²\95à³\8dà²\95à²\82ದಿನ à²ªà²²à²¿à²¤à²¾à²\82ಸà³\8aಲà³\81 à²\87ದà³\8dದಿ.",
+       "search-nonefound": "à²\88ರà³\86ನ à²µà²¿à²\9aಾರಣà³\86à²\97à³\8d à²¤à²\95à³\8dà²\95à²\82ದಿನ à²ªà²²à²¿à²¤à²¾à²\82ಸà³\8aಲà³\81 à²\87à²\9cà³\8dà²\9cಿ.",
        "search-nonefound-thiswiki": "ಈ ಸೈಟ್‍ಡ್ ಪ್ರಸ್ನೆನೆದ ಪಲಿತಾಂಸೊ ಕೂಡೊಂದಿಜ್ಜಿ",
        "powersearch-legend": "ಅಡ್ವಾನ್ಸ್’ಡ್ ಸರ್ಚ್",
        "powersearch-ns": "ನೇಮ್-ಸ್ಪೇಸ್’ಲೆಡ್ ನಾಡ್ಲೆ",
        "search-external": "ಬಾಹ್ಯೊ ಹುಡುಕಾಟೊ",
        "preferences": "ಪ್ರಾಶಸ್ತ್ಯೊಲು",
        "mypreferences": "ಪ್ರಾಸಸ್ತ್ಯೊಲು",
+       "prefs-edits": "ಸಂಪಾದನೆಲೆನ ಸಂಕೆ:",
        "prefs-skin": "ಸ್ಕಿನ್",
        "skin-preview": "ಮುನ್ನೋಟೊ",
        "datedefault": "ಒವ್ವೇ ಪ್ರಾಸಸ್ತ್ಯೊ ಇದ್ದಿ",
        "prefs-user-pages": "ಸದಸ್ಯೆರೆನ ಪುಟೊ",
+       "prefs-personal": "ಸದಸ್ಯೆರ್ನ ಬಗ್ಗೆ",
        "prefs-rc": "ಇಂಚಿಪದ ಬದಲಾವಣೆಲು",
        "prefs-watchlist": "ವೀಕ್ಷಣಾಪಟ್ಟಿ",
        "prefs-resetpass": "ಪ್ರವೇಶಪದೊನ್ ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ",
        "prefs-changeemail": "ಇ-ಅಂಚೆ ವಿಳಾಸೊನು ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ ಅತ್ತಂಡ ದೆಪ್ಪುಲೆ",
        "prefs-setemail": "ಇ-ಅಂಚೆ ವಿಳಾಸೊನು ಸ್ತಾಪನೆ ಮಲ್ಪು",
-       "prefs-email": "à²\87-à²\85à²\82à²\9aà³\86 à²\87à²\9aà³\8dà²\9bೆಲು",
+       "prefs-email": "à²\87-ಮà³\88ಲà³\8d à²\86ಯà³\8dà²\95ೆಲು",
        "prefs-rendering": "ಗೋಚರೊ",
        "saveprefs": "ಒರಿಪಾಲೆ",
        "prefs-editing": "ಸಂಪೊಲಿಪು",
        "prefs-files": "ಕಡತೊಲು",
        "prefs-custom-css": "ಕಸ್ಟಮ್ ಸಿಎಸ್ಎಸ್",
        "prefs-custom-js": "ಕಸ್ಟಮ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್",
-       "prefs-emailconfirm-label": "à²\87-ಮೈಲ್‍ದ ಒಪ್ಪಿಗೆ:",
-       "youremail": "à²\87-à²\85à²\82à²\9aà³\86",
+       "prefs-emailconfirm-label": "à²\88-ಮೈಲ್‍ದ ಒಪ್ಪಿಗೆ:",
+       "youremail": "à²\87-ಮà³\88ಲà³\8d",
        "username": "{{GENDER:$1|ಸದಸ್ಯತ್ವೊದ ಪುದರ್}}:",
+       "prefs-memberingroups": "{{GENDER:$2|ಸದಸ್ಯೆರ್}} ಆದುಪ್ಪುನ {{PLURAL:$1|ಗುಂಪು|ಗುಂಪುಲು}}:",
        "prefs-registration": "ನೋಂದಣಿದ ಸಮಯ:",
        "yourrealname": "ನಿಜವಾಯಿನ ಪುದರ್",
-       "yourlanguage": "ಭಾಷೆ:",
-       "yournick": "ಪà³\8aಸ à²¸à²¹à²¿",
+       "yourlanguage": "ಬಾಸೆ:",
+       "yournick": "ಪà³\8aಸ à²¦à²¸à³\8dà²\95ತà³\8dತà³\8d",
        "badsiglength": "ಇರೆನ ಸಹಿ ಭಾರೀ ಉದ್ದ ಆಂಡ್.  ಉಂದು ಮಸ್ತ್ ಉದ್ದೊ ಆಯೆರೆ ಬಲ್ಲಿ{{PLURAL:$1|character|characters}}.",
-       "yourgender": "ಲಿಂಗೊ",
+       "yourgender": "ಇರೆನ್ ಈರ್ ಎಂಚ ವರ್ಣನೆ ಮಲ್ಪೊಡು ಪಂದ್ ಬಯಕುವರ್?",
+       "gender-unknown": "ಇರೆನ್ ಪ್ರಸ್ತಾಪ ಮಲ್ಪುನಗ, ಸಾಫ್ಟ್‌ವೇರ್ ಸಾದ್ಯ ಆಯಿನಾತ್ ಮಟ್ಟ್‌ಗ್ ಲಿಂಗ ತಟಸ್ಥ ಪದೊಕುಲೆನ್ ಗಲಸುಂಡು.",
        "gender-male": "ಆಯೆ ವಿಕಿ ಪುಟೊನು ಸಂಪೊಲಿಪುವೆ",
        "gender-female": "ಆಲ್ ವಿಕಿ ಪುಟೊನು ಸಂಪೊಲಿಪುವಲ್",
        "email": "ಇ-ಅಂಚೆ",
-       "prefs-help-email": "ಇ-ಮೈಲ್ ಎಡ್ರಾಸ್ ಕಡ್ಡಾಯೊ ಅತ್ತ್, ಆಂಡ ನಿಕುಲು ಅಯಿನ್ ಕೊರ್ಂಡ ಈರ್ ನಿಕ್ಲೆನ ಪ್ರವೇಸೊ ಪದೊನು ಮರತ್ಂಡ ಅಯಿನ್ ಈರೆಗ್ ಇ-ಮೈಲ್‍ಡ್ದ್ ಕಡಪುಡೊಲಿ.",
+       "prefs-help-realname": "ನಿಜ ಪುದರ್ ಕೊರ್ಪಿನವು ಕಡ್ಡಾಯ ಅತ್ತ್. ಒಂಜೇಲೆ ಕೊರ್ಂಡ, ಇರೆನ ಬೇಲೆಗ್ ಮನ್ನಣೆ ಕೊರಿಯೆರೆ ಉಪಯೋಗ ಆಪುಂಡು.",
+       "prefs-help-email": "ಇ-ಮೈಲ್ ವಿಲಾಸೊ ಕಡ್ಡಾಯೊ ಅತ್ತ್, ಆಂಡ ಈರ್ ಪ್ರವೇಸೊ ಪದೊನು ಮರತ್ಂಡ ಅವೆನ್ ಇರೆಗ್ ಇ-ಮೈಲ್‍ಡ್ದ್ ಕಡಪುಡೆರೆ ಬೋಡಾಪುಂಡು.",
+       "prefs-help-email-others": "ಅಂಚೆನೆ ಬೇತಕ್ಲೆಗ್ ಇರೆನ್ ಸಂಪರ್ಕ ಆಯೆರೆ, ಇರೆನ ಖಾತೆಡ್ ಅತ್ತಂಡ ಪಾತೆರ ಪುಟೊಟು ಉಪ್ಪುನ ಒಂಜಿ ಕೊಂಡಿದ ಮೂಲಕ ಇರೆಗ್ ಈ-ಮೈಲ್ ಕಡುಪುಡೆರೆ ಅವಕಾಶ ಮಲ್ತ್‌ದ್‍‌ಲಾ ಕೊರೊಲಿ. ಇರೆನ ಈ-ಮೈಲ್ ವಿಲಾಸೊ ಏರೆಗ್ಲಾ ಗೊತ್ತಾಪುಜಿ.",
        "prefs-help-email-required": "ಇ-ಮೈಲ್ ಎಡ್ರಾಸ್ ಬೋಡಾತ್ಂಡ್.",
        "prefs-info": "ಬುಡೊತ ಮಾಹಿತಿ",
        "prefs-i18n": "ಅಂತರರಾಷ್ಟ್ರೀಕರಣ",
-       "prefs-signature": "ಸಹಿ",
+       "prefs-signature": "ದಸà³\8dà²\95ತà³\8dತà³\8d",
        "prefs-dateformat": "ತಾರೋಕ್‍ದ ಸೈಲಿ",
        "prefs-advancedediting": "ಸಾಮಾನ್ಯೊ ಆಯ್ಕೆಲು",
        "prefs-editor": "ಸಂಪಾದಕೆ",
        "action-edit": "ಈ ಪುಟೊನು ಎಡಿಟ್ ಮಲ್ಪುಲೆ",
        "action-createpage": "ಈ ಪುಟೊನು ಸೃಷ್ಟಿಸಾಲೆ",
        "action-createtalk": "ಚರ್ಚಾ ಪುಟೊನ್ ಸೃಷ್ಟಿಸಾಲೆ",
-       "action-createaccount": "à²\88 à²¸à²¦à²¸à³\8dಯà³\86ರನ à²\96ಾತà³\86ನà³\8d à²¸à³\83ಷà³\8dà²\9fಿ ಮಲ್ಪುಲೆ",
+       "action-createaccount": "à²\88 à²¸à²¦à²¸à³\8dಯà³\86ರನ à²\96ಾತà³\86ನà³\8d à²\89à²\82ಡà³\81 ಮಲ್ಪುಲೆ",
        "action-minoredit": "ಉದೊಂಜಿ ಎಲ್ಯ  ಬದಲಾವಣೆ",
        "action-move": "ಈ ಪೂಟೊನು ಮೂವ್(ಸ್ಥಳಾಂತರ) ಮಲ್ಪುಲೆ",
        "action-movefile": "ಈ ಫೈಲ್‘ನ್ ಸ್ಥಳಾಂತರ ಮಲ್ಪುಲೆ",
        "recentchanges-summary": "ಈ ವಿಕಿಟ್ ಇಂಚಿಪ್ಪ ಮಲ್ತ್‌ನ ಬದಲಾವಣೆನ್ ಈ ಪುಟೊಡು ಈರ್ ತೂವೊಲಿ",
        "recentchanges-feed-description": "ಈ ಫೀಡ್’ಡ್ ವಿಕಿಕ್ ಇಂಚಿಪ್ಪ ಆತಿನಂಚಿನ ಬದಲಾವಣೆಲೆನ್ ಟ್ರ್ಯಾಕ್ ಮಲ್ಪುಲೆ.",
        "recentchanges-label-newpage": "ಇರ್ನ ಈ ಬದಲಾವಣೆ ಪೊಸ ಪುಟೊನು ಸುರು ಮಲ್ಪುಂಡು",
-       "recentchanges-label-minor": "à²\89à²\82ದà³\81 à²\8eಲà³\8dಯ ಬದಲಾವಣೆ",
+       "recentchanges-label-minor": "à²\89à²\82ದà³\81 à²\95ಿà²\9eà³\8dà²\9e ಬದಲಾವಣೆ",
        "recentchanges-label-bot": "ಈ ಸಂಪದನೆ ಒಂಜಿ ಬಾಟ್‍ಡ್ ಆತ್ಂಡ್",
        "recentchanges-label-unpatrolled": "ಈ ಸಂಪಾದನೆನ್ ನನಲಾ ಪರೀಕ್ಷೆ ಮಲ್ತ್‌ಜಿ.",
-       "recentchanges-label-plusminus": "ಬà³\88à²\9fà³\8dಸà³\8dâ\80\8cದ à²²à³\86à²\95à³\8dà²\95à³\8aಡà³\81 à²\88 à²ªà²¾à²²à³\86ದ ಗಾತ್ರೊ ಬದಲಾತ್ಂಡ್",
+       "recentchanges-label-plusminus": "ಬà³\88à²\9fà³\8dಸà³\8dâ\80\8cದ à²²à³\86à²\95à³\8dà²\95à³\8aಡà³\81 à²\88 à²ªà³\81à²\9fà³\8aತà³\8dತ ಗಾತ್ರೊ ಬದಲಾತ್ಂಡ್",
        "recentchanges-legend-heading": "<strong>ಪರಿವಿಡಿ:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ಬೊಕ್ಕೊಲಾ ತೂಲೆ [[Special:NewPages|ಪೊಸ ಪುಟೊದ ಪಟ್ಟಿ]])",
        "recentchanges-submit": "ತೋಜಾಲೆ",
        "rcfilters-filterlist-whatsthis": "ಉಂದು ದಾದಾ?",
        "rcfilters-filter-user-experience-level-learner-label": "ಕಲ್ಪುನರ್",
-       "rclistfrom": "$3 $2 ರ್ದ್ ಸುರುವಾತಿನ ಪೊಸ ಬದಲಾವಣೆಲೆನ್ ತೊಜ್ಪಾವು",
+       "rcnotefrom": "<strong>$3, $4</strong> ಡ್ದ್ ಆತಿನ {{PLURAL:$5|ಬದಲಾವಣೆ|ಬದಲಾವಣೆಲು}} ತಿರ್ತ್ ಉಂಡು (ಒಟ್ಟುಗು <strong>$1</strong>  ತೋಜೊಂದುಂಡು).",
+       "rclistfrom": "$2, $3 ಡ್ದ್ ಸುರುವಾತಿನ ಪೊಸ ಬದಲಾವಣೆಲೆನ್ ತೊಜ್ಪಾವು",
        "rcshowhideminor": "$1 ಎಲ್ಯೆಲ್ಯ ಬದಲಾವಣೆಲು",
        "rcshowhideminor-show": "ತೋಜಾಲೆ",
        "rcshowhideminor-hide": "ಅಡೆಂಗಾವು",
        "rcshowhideliu": "ನೋಂದವಣೆ ಆತಿನಂಚಿನ ಸದಸ್ಯೆರ್ $1",
        "rcshowhideliu-show": "ತೋಜಾಲೆ",
        "rcshowhideliu-hide": "ಅಡೆಂಗಾವು",
-       "rcshowhideanons": "ಪà³\81ದರà³\8d à²\87ದà³\8dಯಾà²\82ದಿನ ಸದಸ್ಯೆರ್ $1",
+       "rcshowhideanons": "ಪà³\81ದರà³\8d à²¦à²¾à²\82ತಿ ಸದಸ್ಯೆರ್ $1",
        "rcshowhideanons-show": "ತೋಜಾಲೆ",
        "rcshowhideanons-hide": "ಅಡೆಂಗಾವು",
        "rcshowhidepatr": "$1 ಪರೀಕ್ಷಿಸಾದಿನ ಸಂಪಾದನೆಲು",
        "rcshowhidemine-hide": "ಅಡೆಂಗಾವು",
        "rcshowhidecategorization-show": "ತೋಜಾಲೆ",
        "rcshowhidecategorization-hide": "ಅಡೆಂಗಾವು",
-       "rclinks": "ದà³\81à²\82ಬà³\81ದ $2 à²¦à²¿à²¨à³\8aಲà³\86ಡà³\8d à²®à²²à³\8dತಿನ $1 à²ªà²¿à²°à²µà³\81ದ ಬದಲಾವಣೆಲೆನ್ ತೂಲೆ",
+       "rclinks": "à²\95ರಿನ $2 à²¦à²¿à²¨à³\8aಲà³\86ಡà³\8d à²®à²²à³\8dತಿನ à²\95ಡà³\86ತà³\8dತ $1 ಬದಲಾವಣೆಲೆನ್ ತೂಲೆ",
        "diff": "ವ್ಯತ್ಯಾಸೊ",
        "hist": "ಇತಿಹಾಸೊ",
        "hide": "ಅಡೆಂಗಾವು",
        "show": "ತೋಜಾವು",
-       "minoreditletter": "à²\9aà³\81",
+       "minoreditletter": "à²\95ಿ",
        "newpageletter": "ಪೊ",
        "boteditletter": "ಬಾ",
        "rc_categories_any": "ಒವ್ವೇ",
        "recentchangeslinked-feed": "ಸಂಬಂಧ ಉಪ್ಪುನಂಚಿನ ಬದಲಾವಣೆಲು",
        "recentchangeslinked-toolbox": "ಸಂಬಂದೊ ಉಪ್ಪುನಂಚಿನ ಬದಲಾವಣೆಲು",
        "recentchangeslinked-title": "\"$1\" ಪುಟೊಟು ಆಯಿನ ಬದಲಾವಣೆಗ್ ಸಂಬಂದಿಸದ್",
-       "recentchangeslinked-summary": "ಒಂಜಿ ನಿರ್ದಿಸ್ಟೊ ಪುಟೊರ್ದು (ಅತ್ತ್’ನ್ಡ ನಿರ್ದಿಸ್ಟೊ ವರ್ಗೊಗು ಸೇರ್ದಿನ ಪುಟೊಲೆರ್ದ್) ಸಂಪರ್ಕೊ ಉಪ್ಪುನ ಪುಟೊಲೆಡ್ ಇಂಚಿಪ ಮಲ್ತಿನಂಚಿನ ಬದಲಾವಣೆಲೆನ್ ತಿರ್ತ್ ಪಟ್ಟಿ ಮಲ್ಪೆರಾತ್ಂಡ್.\n[[Special:Watchlist|ಇರೆನ ವೀಕ್ಷಣೆ ಪಟ್ಟಿಡ್]] ಉಪ್ಪುನ ಪುಟೊಲು '''ದಪ್ಪ ಅಕ್ಷರೊಡು''' ಉಂಡು.",
+       "recentchangeslinked-summary": "ಒಂಜಿ ನಿರ್ದಿಸ್ಟೊ ಪುಟೊರ್ದು ಸಂಪರ್ಕೊ ಉಪ್ಪುನ ಪುಟೊಕುಲೆಗ್ (ಅತ್ತಂಡ ನಿರ್ದಿಸ್ಟೊ ವರ್ಗೊಗು ಸೇರ್ದಿನ ಸದಸ್ಯೆರೆಗ್) ಇಂಚಿಪ ಮಲ್ತಿನಂಚಿನ ಬದಲಾವಣೆಲೆನ್ ತಿರ್ತ್ ಪಟ್ಟಿ ಮಲ್ತ್‌ದ್ಂಡ್.\n[[Special:Watchlist|ಇರೆನ ವೀಕ್ಷಣೆ ಪಟ್ಟಿಡ್]] ಉಪ್ಪುನ ಪುಟೊಕುಲು ''ದಪ್ಪ ಅಕ್ಷರೊಡು\" ಉಂಡು.",
        "recentchangeslinked-page": "ಪುಟೊತ ಪುದರ್:",
        "recentchangeslinked-to": "ಇಂದೆತ ಬದಲ್‍ಗ್ ಕೊರ್ತ್‍ನ ಪುಟೊಗು ಕೊಂಡಿ ಉಪ್ಪುನಂಚಿನ ಪುಟೊಲೆದ ಬದಲಾವಣೆಲೆನ್ ತೋಜಾವು",
        "upload": "ಫೈಲ್’ನ್ ಅಪ್ಲೋಡ್ ಮಲ್ಪುಲೆ",
        "uploadbtn": "ಫೈಲ್’ನ್ ಅಪ್ಲೋಡ್ ಮಲ್ಪುಲೆ",
        "uploadnologin": "ಲಾಗಿನ್ ಆತ್‘ಜ್ಜರ್",
-       "uploadlogpage": "à²\85ಪà³\8dಲà³\8bಡà³\8d à²¦à²¾à²\96ಲೆ",
+       "uploadlogpage": "ದಾà²\96ಲà³\86 à²\85ಪà³\8dಲà³\8bಡà³\8d à²®à²²à³\8dಪà³\81ಲೆ",
        "filename": "ಕಡತದ ಪುದರ್",
        "filedesc": "ಸಾರಾಂಸೊ",
        "fileuploadsummary": "ಸಾರಾಂಸೊ:",
        "filehist-dimensions": "ಆಯಾಮೊಲು",
        "filehist-filesize": "ಫೈಲ್’ದ ಗಾತ್ರ",
        "filehist-comment": "ಅಬಿಪ್ರಾಯೊ",
-       "imagelinks": "ಫà³\88ಲà³\8dâ\80\8dದ à²¬à²³à²\95à³\86",
+       "imagelinks": "ಫà³\88ಲà³\8dâ\80\8dದ à²\89ಪಯà³\8bà²\97",
        "linkstoimage": "ಈ ತಿರ್ತ್‍ದ {{PLURAL:$1|page links|$1 ಪುಟೊಲೆ ಕೊಂಡಿ}}ಈ ಫೈಲ್‍ಗ್ ಕೊನಪೋಪುಂಡು.",
        "nolinkstoimage": "ಈ ಫೈಲ್‍ಗ್ ಸಂಪರ್ಕೊ ಉಪ್ಪುನ ವಾ ಪುಟೊಲಾ ಇದ್ದಿ.",
        "sharedupload": "ಈ ಫೈಲ್’ನ್ ಮಸ್ತ್ ಜನ ಪಟ್ಟ್’ದುಲ್ಲೆರ್ ಅಂಚೆನೆ ಉಂದು ಮಸ್ತ್ ಪ್ರೊಜೆಕ್ಟ್’ಲೆಡ್ ಉಪಯೋಗಿಸೊಲಿ",
-       "sharedupload-desc-here": "à²\88 à²ªà³\81à²\9fà³\8a $1ಡà³\8dದà³\8d à²¬à³\8aà²\95à³\8dà²\95 à²¬à³\87ತà³\86 à²¯à³\8bà²\9cನà³\86ಡà³\8dದà³\8d à²\97ಳಸೊಲಿ.\nಈ ಪುಟೊತ ವಿವರೊ [$2 ಪುಟೊತ ವಿವರೊ] ತಿರ್ತ ಸಾಲ್‍ಡ್ ತೋಜಾದ್ಂಡ್",
+       "sharedupload-desc-here": "à²\88 à²ªà³\81à²\9fà³\8a $1ಡà³\8dದà³\8d à²¬à³\8aà²\95à³\8dà²\95 à²¬à³\87ತà³\86 à²¯à³\8bà²\9cನà³\86ಡà³\8dದà³\8d à²\97ಲಸೊಲಿ.\nಈ ಪುಟೊತ ವಿವರೊ [$2 ಪುಟೊತ ವಿವರೊ] ತಿರ್ತ ಸಾಲ್‍ಡ್ ತೋಜಾದ್ಂಡ್",
        "upload-disallowed-here": "ಈರ್ ಈ ಫೈಲ್‍ನ್ ಕುಡೊರೊ ಬರೆವರೆ ಸಾದ್ಯೊ ಇದ್ದಿ.",
        "filerevert-comment": "ಕಾರಣ:",
        "filerevert-submit": "ದುಂಬುದ ಲೆಕ ಮಲ್ಪುಲೆ",
        "nbytes": "$1 {{PLURAL:$1|byte|ಬೈಟ್‍ಲು}}",
        "nmembers": "$1 {{PLURAL:$1|member|ಸದಸ್ಯೆರ್}}",
        "wantedfiles": "ಬೋಡಾಯಿನ ಕಡತೊಲು",
-       "prefixindex": "ಪೂರ್ವನಾಮೊಲ್ದ ಸೂಚಿಕೆ",
+       "prefixindex": "ಪೂರ್ವನಾಮ ಇತ್ತಿನ ಮಾತಾ ಪುಟೊಕುಲು",
        "prefixindex-submit": "ತೋಜಾಲೆ",
        "shortpages": "ಎಲ್ಯ ಪುಟೊಕುಲು",
        "longpages": "ಉದ್ದ ಪುಟೊಕುಲು",
        "protectedpages-unknown-timestamp": "ಗೊತ್ತಿಜ್ಜಾಂದಿನ",
        "protectedpages-unknown-performer": "ಅಜ್ಞಾತ ಬಳಕೆದಾರೆ",
        "protectedtitles": "ಸಂರಕ್ಷಿತ ಶೀರ್ಷಿಕೆಲು",
-       "listusers": "ಬಳà²\95à³\86ದಾರರà³\86ನ à²¤à²\96à³\8dತà³\86",
-       "newpages": "ಪೊಸ ಪುಟೊಲು",
+       "listusers": "ಸದಸà³\8dಯà³\86ರà³\8dನ à²ªà²\9fà³\8dà²\9fಿ",
+       "newpages": "ಪà³\8aಸ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\81",
        "newpages-submit": "ತೋಜಾಲೆ",
        "newpages-username": "ಸದಸ್ಯೆರ್ನ ಪುದರ್:",
-       "move": "ಮà³\82ವà³\8d(ಸà³\8dಥಳಾà²\82ತರ) ಮಲ್ಪುಲೆ",
+       "move": "ಸà³\8dಥಳಾà²\82ತರ ಮಲ್ಪುಲೆ",
        "movethispage": "ಈ ಪುಟೊನು ಮೂವ್ ಮಲ್ಪುಲೆ",
        "pager-newer-n": "{{PLURAL:$1|ಪೊಸ ೧|ಪೊಸ $1}}",
        "pager-older-n": "{{PLURAL:$1|older 1|ಪರತ್ತ್ $1}}",
        "booksources": "ಬೂಕುದ ಮೂಲೊ",
        "booksources-search-legend": "ಬೂಕುದ ಮೂಲೊನು ನಾಡ್‍ಲೆ",
        "booksources-search": "ನಾಡ್‍ಲೆ",
+       "specialloguserlabel": "ಸಾಧಕೆರ್:",
        "log": "ದಾಕಲೆಲು",
        "logeventslist-submit": "ತೋಜಾಲೆ",
+       "all-logs-page": "ಮಾತಾ ಸಾರ್ವಜನಿಕ ದಾಕಲೆ",
        "checkbox-all": "ಮಾತಾ",
        "checkbox-none": "ಒವ್ವುಲಾ ಇಜ್ಜಿ",
-       "allpages": "ಪೂರಾ ಪೂಟೊಲು",
+       "allpages": "ಪà³\82ರಾ à²ªà³\82à²\9fà³\8aà²\95à³\81ಲà³\81",
        "allpagesfrom": "ಇಂದೆರ್ದ್ ಶುರುವಾಪುನ ಪುಟೊಲೆನ್ ತೊಜ್ಪಾವು:",
        "allpagesto": "ಇಂದೆರ್ದ್ ಅಂತ್ಯ ಆಪುನ ಪುಟೊಲೆನ್ ತೊಜ್ಪಾವು:",
-       "allarticles": "ಮಾತ ಪುಟೊಲು",
+       "allarticles": "ಮಾತ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\81",
        "allpagessubmit": "ಪೋಲೆ",
        "categories": "ವರ್ಗೊಲು",
        "categories-submit": "ತೋಜಾಲೆ",
        "emailsend": "ಕಡಪುಡುಲೆ",
        "watchlist": "ವೀಕ್ಷಣಾ ಪಟ್ಟಿ",
        "mywatchlist": "ಎನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿ",
+       "watchlistfor2": "$1 ಗ್ ($2)",
        "watchnologin": "ಲಾಗಿನ್ ಆತ್‍ಜರ್",
        "watch": "ತೂಲೆ",
        "watchthispage": "ಈ ಪುಟೊನು ತೂಲೆ",
        "unwatch": "ವೀಕ್ಷಣಾಪಟ್ಟಿರ್ದ್ ದೆಪ್ಪು",
-       "watchlist-hide": "ಅಡೆಂಗಾವು",
+       "watchlist-details": "ಪಾತೆರ ಪುಟೊಕುಲು ಸೇರ್ದ್ ಒಟ್ಟು {{PLURAL:$1|$1 ಪುಟೊ|$1 ಪುಟೊಕುಲು}} ಇರೆನ ವೀಕ್ಷಣಾಪಟ್ಟಿಡ್ ಉಂಡು.",
+       "wlheader-enotif": "ಈ-ಮೈಲ್ ಸೂಚನೆ ಸಕ್ರಿಯ ಆತ್ಂಡ್.",
+       "wlheader-showupdated": "ಈರ್ ಅಕೇರಿಗ್ ಭೇಟಿ ಕೊರಿ ಬೊಕ್ಕ ಬದಲಾವಣೆ ಆಯಿನ ಪುಟೊಕುಲೆನ್ '''ದಪ್ಪ ಅಕ್ಷರೊಲೆಡ್''' ತೋಜಾದ್ಂಡ್.",
+       "wlnote": "Below {{PLURAL:$1|is the last change|are the last <strong>$1</strong> changes}} in the last {{PLURAL:$2|hour|<strong>$2</strong> hours}}, as of $3, $4.\n\n$3, $4 ದ ಪ್ರಕಾರ ಕರಿನ {{PLURAL:$2|ಗಂಟೆಡ್|<strong>$2</strong> ಗಂಟೆಲೆಡ್}} ಆಯಿನ ಅಕೇರಿದ {{PLURAL:$1|ಬದಲಾವಣೆನ್|<strong>$1</strong> ಬದಲಾವಣೆಲೆನ್}} ತಿರ್ತ್ ತೋಜಾದ್ಂಡ್.",
+       "watchlist-hide": "ದೆಂಗಾವು",
        "watchlist-submit": "ತೋಜಾವು",
-       "wlshowhideminor": "ಎಲ್ಯೆಲ್ಯ ಬದಲಾವಣೆಲು",
+       "wlshowtime": "ತೋಜಾವೊಡಾಯಿನ ಪೊರ್ತುದ ಅವಧಿ:",
+       "wlshowhideminor": "ಕಿಞ್ಞ ಬದಲಾವಣೆಲು",
        "wlshowhideliu": "ನೋಂದವಣೆ ಆತಿನಂಚಿನ ಸದಸ್ಯೆರ್",
-       "wlshowhideanons": "ಪುದರ್ ಇದ್ಯಾಂದಿನ ಸದಸ್ಯೆರ್",
+       "wlshowhideanons": "ಪುದರ್ ದಾಂತಿನ ಸದಸ್ಯೆರ್",
+       "wlshowhidemine": "ಎನ್ನ ಸಂಪಾದನೆಲು",
        "watchlist-options": "ವೀಕ್ಷಣಾಪಟ್ಟಿ ಆಯ್ಕೆಲು",
        "watching": "ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೇರ್ಪಾವೊಂದುಂಡು...",
        "unwatching": "ವೀಕ್ಷಣಾಪಟ್ಟಿರ್ದ್ ದೆತ್ತೊಂದುಂಡು...",
+       "enotif_reset": "ಭೇಟಿ ಕೊರಿನ ಮಾತಾ ಪುಟೊಕುಲೆನ್ ಗುರ್ತ ಮಲ್ಪುಲೆ",
        "deletepage": "ಪುಟೊಕುಲೆನ್ ಮಾಜಾಲೆ",
        "confirm": "ಗಟ್ಟಿಮಲ್ಪುಲೆ",
        "delete-legend": "ಮಾಜಾಲೆ",
        "protectedarticle": "\"[[$1]]\" ಸಂರಕ್ಷಿತವಾದುಂಡು.",
        "modifiedarticleprotection": "\"[[$1]]\" ಪುಟೊತ ಸಂರಕ್ಷಣೆ ಮಟ್ಟ ಬದಲಾಂಡ್",
        "protectcomment": "ಕಾರಣೊ:",
+       "protect-default": "ಮಾತ ಸದಸ್ಯೆರೆಗ್ಲಾ ಅನುಮತಿ ಕೊರ್ಲೆ",
        "protect-otherreason-op": "ಬೇತೆ ಕಾರಣ",
        "restriction-type": "ಒಪ್ಪುಗೆ:",
        "restriction-edit": "ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ",
        "undeletecomment": "ಕಾರಣೊ:",
        "undelete-search-submit": "ನಾಡ್‍ಲೆ",
        "undelete-show-file-submit": "ಅಂದ್",
-       "namespace": "ಪುದರ್‍ದ ಬಗೆ:",
+       "namespace": "ಪುದರ್-ಜಾಗೆ:",
        "invert": "ಆಯ್ಕೆನ್ ತಿರ್ಗಾಲೆ",
-       "tooltip-invert": "à²\88 à²\9aà³\8cà²\95à³\8aದà³\81ಲಯಿಡà³\8d à²\85ಡà³\86à²\82à²\97ಿನ à²ªà³\81ದರà³\8dâ\80\8dನà³\8d à²\88 à²\9aà³\8cà²\95à³\8aಡà³\86 à²ªà²°à³\80à²\95à³\8dಷಿಸಲà³\86ಲà³\86(ಬà³\8aà²\95à³\8dà²\95à³\8a à²\92à²\9fà³\8dà²\9fà³\81à²\97ಿತà³\8dತಿನ à²ªà³\81ದರà³\8dâ\80\8dನà³\8dಲಾ à²ªà²°à³\80à²\95à³\8dಷಿಸವà³\8aಲಿ)",
-       "namespace_association": "à²\9cತà³\86à²\9fಿತà³\8dತಿನ à²ªà³\81ದರà³\8d",
-       "tooltip-namespace_association": "à²\88 à²\9aà³\8cà²\95à³\8aನà³\81 à²\9aರà³\8dà²\9aà³\86ನà³\8d à²¸à³\87ರಾದà³\8d à²ªà²°à³\80à²\95à³\8dಷಿಸಲà³\86 à²\85ತà³\8dತà³\8dà²\82ಡ à²µà²¿à²¸à²¯à³\8aà²\97à³\81 à²¸à²°à²¿à²¯à²¾à²¯à²¿à²¨ à²ªà³\81ದರà³\8dದ à²\9cತà³\86à²\9fà³\8d à²¸à³\87ರಾಲೆ",
+       "tooltip-invert": "à²\86ಯà³\8dತಿ à²ªà³\81ದರà³\8d-à²\9cಾà²\97à³\86ದà³\81ಲಯಿದ (ಬà³\8aà²\95à³\8dà²\95 à²\86ಯà³\8dತಿತà³\8dತà³\8dà²\82ಡ, à²¸à²\82ಬà²\82ಧ à²ªà²\9fà³\8dà²\9fಿನ à²ªà³\81ದರà³\8d-à²\9cಾà²\97à³\86ದಲಾ) à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\86ನ à²¬à²¦à²²à²¾à²µà²£à³\86ನà³\8d à²¦à³\86à²\82à²\97ಾಯà³\86ರà³\86 à²\88 à²ªà³\86à²\9fà³\8dà²\9fಿà²\97à³\86ನà³\8d à²\86ಯà³\8dಪà³\81ಲà³\86",
+       "namespace_association": "ಸà²\82ಬà²\82ದà³\8a à²ªà²\9fà³\8dà²\9fಿನ à²ªà³\81ದರà³\8d-à²\9cಾà²\97à³\86",
+       "tooltip-namespace_association": "à²\86ಯà³\8dತಿ à²ªà³\81ದರà³\8d-à²\9cಾà²\97à³\86à²\97à³\8d à²¸à²\82ಬà²\82ಧ à²ªà²\9fà³\8dà²\9fಿನ à²ªà²¾à²¤à³\86ರ à²\85ತà³\8dತಾà²\82ಡ à²µà²¿à²¸à²¯à²¦ à²ªà³\81ದರà³\8d-à²\9cಾà²\97à³\86ನà³\8dಲಾ à²\92à²\9fà³\8dà²\9fà³\81à²\97à³\81 à²¸à³\87ರಾಯà³\86ರà³\86 à²\88 à²ªà³\86à²\9fà³\8dà²\9fಿà²\97à³\86ನà³\8d à²\86ಯà³\8dಪà³\81ಲೆ",
        "blanknamespace": "(ಮುಖ್ಯ)",
        "contributions": "{{GENDER:$1|ಸದಸ್ಯೆರ್ನ}} ಕಾಣಿಕೆಲು",
        "contributions-title": "$1 ಗ್ ಸದಸ್ಯೆರ್ನ ಕಾಣಿಕೆ",
        "mycontris": "ಎನ್ನ ಕಾನಿಕೆಲು",
        "anoncontribs": "ಕಾನಿಕೆಲು",
-       "contribsub2": "$1 ($2) ಗ್",
-       "uctop": " (ಮಿತ್ತ್)",
+       "contribsub2": "{{GENDER:$3|$1}} ($2)",
+       "uctop": "(ಇತ್ತೆದ)",
        "month": "ಈ ತಿಂಗೊಲುರ್ದ್ (ಬೊಕ್ಕ ದುಂಬುದ):",
        "year": "ಈ ಒರ್ಸೊರ್ದು(ಬೊಕ್ಕ ದುಂಬುದ):",
        "sp-contributions-newbies": "ಪೊಸ ಖಾತೆಲೆದ ಕಾಣಿಕೆಲೆನ್ ಮಾತ್ರ ತೊಜ್ಪಾವು",
        "sp-contributions-blocklog": "ತಡೆಪತ್ತುನ ದಾಖಲೆ",
+       "sp-contributions-uploads": "ಅಪ್ಲೋಡ್ಲು",
        "sp-contributions-logs": "ದಾಖಲೆಲು",
        "sp-contributions-talk": "ಪಾತೆರ",
        "sp-contributions-search": "ಕಾಣಿಕೆಲೆನ್ ನಾಡ್ಲೆ",
-       "sp-contributions-username": "ಐ.ಪಿ ವಿಳಾಸ ಅತ್ತ್’ನ್ಡ ಬಳಕೆದ ಪುದರ್:",
+       "sp-contributions-username": "ಐ.ಪಿ ವಿಳಾಸ ಅತ್ತಂಡ ಸದಸ್ಯೆರ್ನ ಪುದರ್:",
+       "sp-contributions-toponly": "ಇಂಚಿಪದ ಪರಿಷ್ಕರಣೆದ ಸಂಪಾದನೆಲೆನ್ ಮಾತ್ರ ತೋಜಾವು",
+       "sp-contributions-newonly": "ಪುಟೊನು ಉಂಡು ಮಲ್ತಿನ ಸಪಾದನೆಲೆನ್ ಮಾತ್ರ ತೋಜಾವು",
        "sp-contributions-submit": "ನಾಡ್",
        "whatlinkshere": "ಇಡೆ ವಾ ಪುಟೊ ಕೊಂಡಿ ಕೊರ್ಪುಂಡು",
-       "whatlinkshere-title": "\"$1\" à²ªà³\81à²\9fà³\8aà²\97à³\81 à²\95à³\8aà²\82ಡಿ à²\95à³\8aರà³\8dಪà³\81ನ à²ªà³\81à²\9fà³\8aಲು",
+       "whatlinkshere-title": "\"$1\" à²\95à³\8dà²\95à³\8d à²¸à²\82ಪರà³\8dà²\95 à²\95à³\8aರà³\8dಪಿನ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲು",
        "whatlinkshere-page": "ಪುಟೊ:",
        "linkshere": "</strong>[[:$1]]<strong>ಗ್ ಈ ತಿರ್ತ್‍ದ ಪುಟೊಗು ಕೊಂಡಿ ಕೊರ್ಪುಂಡು.",
-       "nolinkshere": "'''[[:$1]]''' à²\97à³\8d à²µà²¾ à²ªà³\81à²\9fà³\8aಲà³\81ಲಾ à²²à²¿à²\82à²\95à³\8d à²\95à³\8aರà³\8dಪà³\81ಜಿ.",
+       "nolinkshere": "'''[[:$1]]''' à²\97à³\8d à²µà²¾ à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\86ಡà³\8dಲಾ à²²à²¿à²\82à²\95à³\8d à²\87à²\9cà³\8dಜಿ.",
        "isredirect": "ಪಿರ ನಿರ್ದೇಶನೊದ ಪುಟೊ",
        "istemplate": "ಸೇರಾವುನೆ",
        "isimage": "ಫೈಲ್‍ದ ಕೊಂಡಿ",
        "whatlinkshere-links": "← ಕೊಂಡಿಲು",
        "whatlinkshere-hideredirs": "$1 ಪಿರನಿರ್ದೇಶನೊಲು",
        "whatlinkshere-hidetrans": "$1 ಸೇರಾವುನವು",
-       "whatlinkshere-hidelinks": "$1 à²\95à³\8aà²\82ಡಿà²\95à³\81ಲà³\81",
+       "whatlinkshere-hidelinks": "$1 ಕೊಂಡಿಲು",
        "whatlinkshere-filters": "ಅರಿಪೆಲು",
        "whatlinkshere-submit": "ಪೋಲೆ",
        "blockip": "ಈ ಸದಸ್ಯೆರೆನ್ ಬ್ಲಾಕ್ ಮಲ್ಪುಲೆ",
        "change-blocklink": "ಬ್ಲಾಕ್’ನ್ ಬದಲಾಲೆ",
        "contribslink": "ಕಾಣಿಕೆಲು",
        "emaillink": "ಇ-ಅಂಚೆ ಕಡಪುಡುಲೆ",
-       "blocklogpage": "ತಡೆಪತ್ತ್’ದ್’ನ ಸದಸ್ಯೆರ್ನ ದಿನಚರಿ",
-       "blocklogentry": "[[$1]] ಖಾತೆನ್ $2 $3 ಮುಟ್ಟ ತಡೆಪತ್ತ್’ದ್’ನ್ಡ್",
+       "blocklogpage": "ತಡೆ ಆತಿನ ಸದಸ್ಯೆರ್ನ ದಾಕಲೆ",
+       "blocklogentry": "[[$1]] ಖಾತೆ $2 $3 ಮುಟ್ಟ ತಡೆ ಆತ್ಂಡ್",
        "unblocklogentry": "$1 ಖಾತೆನ್ ಅನ್-ಬ್ಲಾಕ್ ಮಲ್ತ್’ನ್ಡ್",
-       "block-log-flags-nocreate": "à²\96ಾತà³\86 à²¸à³\83ಷà³\8dà²\9fಿನà³\8d à²¤à²¡à³\86ಪತà³\8dತà³\8dâ\80\99ದà³\8dâ\80\99ನà³\8dಡ್",
+       "block-log-flags-nocreate": "à²\96ಾತà³\86 à²\89à²\82ಡà³\81 à²®à²²à³\8dಪà³\81ನà³\87ನà³\8d à²¤à²¡à³\86ಪತà³\8dತà³\8d'ದà³\8dà²\82ಡ್",
        "movelogpage": "ಸ್ತಲಾಂತರೊದ ದಾಕಲೆ",
        "movereason": "ಕಾರಣೊ:",
        "revertmove": "ದುಂಬುದ ಲೆಕೆ ಮಲ್ಪುಲೆ",
        "allmessages-language": "ಬಾಸೆ:",
        "allmessages-filter-submit": "ಪೋ",
        "allmessages-filter-translate": "ಭಾಷಾಂತರ ಮಲ್ಪುಲೆ",
-       "thumbnail-more": "ಮಲ್ಲ ಮಲ್ಪುಲೆ",
+       "thumbnail-more": "ಮಲ್ಲ ಮಲ್ಪುಲೆ",
        "thumbnail_error": "ಮುನ್ನೋಟ ಚಿತ್ರೊನು ಸೃಷ್ಟಿ ಮನ್ಪುನಗ ದೋಷ: $1",
        "import": "ಪುಟೊಲೆನ್ ಕಡಪುಡ್ಲೆ",
        "import-interwiki-sourcepage": "ಮೂಲ ಪುಟ",
        "tooltip-pt-mycontris": "{{GENDER:|ಎನ್ನ}} ಕಾನಿಕೆಲೆನ ಪಟ್ಟಿ",
        "tooltip-pt-login": "ಈರ್ ಲಾಗಿನ್ ಆವೊಡುಂದು ಕೇನೊಂದುಲ್ಲೊ, ಆಂಡ ಉಂದು ದಾಲ ಕಡ್ಡಾಯ ಅತ್ತ್.",
        "tooltip-pt-logout": "ಲಾಗ್ ಔಟ್",
-       "tooltip-pt-createaccount": "à²\87ರà³\8d  à²ªà³\8bಸ à²\96ಾತà³\86 à²¸à³\81ರà³\81ಮಾà²\82ತà³\8dâ\80\8dದà³\8d, ಲಾಗಿನ್ ಆಪುನೈನ್ ಬೆರಿ ಬೊಟ್ಟುಪೋ, ಆಂಡ ಉಂದು ಕಡ್ಡಾಯ ಅತ್ತ್.",
+       "tooltip-pt-createaccount": "à²\88ರà³\8d à²ªà³\8aಸ à²\96ಾತà³\86 à²¸à³\81ರà³\81ಮಲà³\8dತà³\8d ಲಾಗಿನ್ ಆಪುನೈನ್ ಬೆರಿ ಬೊಟ್ಟುಪೋ, ಆಂಡ ಉಂದು ಕಡ್ಡಾಯ ಅತ್ತ್.",
        "tooltip-ca-talk": "ಮಾಹಿತಿ ಪುಟೊತ ಬಗೆಟ್ ಚರ್ಚೆ",
        "tooltip-ca-edit": "ಈ ಪುಟೊನ್ ಸಂಪೊಲಿಪುಲೆ",
        "tooltip-ca-addsection": "ಪೊಸ ವಿಬಾಗೊನು ಸುರು ಮಲ್ಪುಲೆ",
        "tooltip-ca-viewsource": "ಉಂದೊಂಜಿ ಸಂರಕ್ಷಿತ ಪುಟೊ.\nಇಂದೆತ ಮೂಲೊನು ಈರ್ ತೂವೊಲಿ.",
        "tooltip-ca-history": "ಈ ಪುಟೊದ ಪರತ್ತ್ ಆವೃತ್ತಿಲು",
        "tooltip-ca-protect": "ಈ ಪುಟೊನು ಸಂರಕ್ಷಣೆ ಮಲ್ಪುಲೆ",
-       "tooltip-ca-delete": "à²\88 à²ªà³\81à²\9fà³\8aನà³\81 à²¡à²¿à²²à³\80à²\9fà³\8d ಮಲ್ಪುಲೆ",
+       "tooltip-ca-delete": "à²\88 à²ªà³\81à²\9fà³\8aನà³\81 à²¨à²¾à²¶ ಮಲ್ಪುಲೆ",
        "tooltip-ca-move": "ಈ ಪೂಟೊನು ಬೇತೆ ಕಡೆಕ್ ಪಾಡ್ಲೆ",
        "tooltip-ca-watch": "ಈ ಪುಟೊನು ಈರೆನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗ್ ಸೆರ್ಪಾಲೆ",
        "tooltip-ca-unwatch": "ಈ ಪುಟೊನು ಇರೆನ ವೀಕ್ಷಣಾ ಪಟ್ಟಿರ್ದ್ ದೆಪ್ಪುಲೆ",
        "tooltip-search": "{{SITENAME}}ನ್ ನಾಡ್‍ಲೆ",
-       "tooltip-search-go": "à²\89à²\82ದà³\81ವà³\87 à²ªà³\81ದರà³\8dದ à²ªà³\81à²\9fà³\8a à²\87ತà³\8dತà³\8dâ\80\8cà²\82ಡ à²\86ಡೆ ಪೋಲೆ",
+       "tooltip-search-go": "à²\89à²\82ದà³\81ವà³\87 à²ªà³\81ದರà³\8dದ à²ªà³\81à²\9fà³\8a à²\87ತà³\8dತà³\8dâ\80\8cà²\82ಡ à²\85ಡೆ ಪೋಲೆ",
        "tooltip-search-fulltext": "ಈ ಪಟ್ಯೊಡ್ ಉಪ್ಪುನಂಚಿನ ಪುಟೊಲೆನ್ ನಾಡ್‌ಲೆ",
-       "tooltip-p-logo": "ಮà³\81à²\96à³\8dಯ à²ªà³\81à²\9fà²\97್ ಪೋಲೆ",
+       "tooltip-p-logo": "ಮà³\81à²\96à³\8dಯ à²ªà³\81à²\9fà²\95್ ಪೋಲೆ",
        "tooltip-n-mainpage": "ಮುಖ್ಯಪುಟನ್ ತೂಲೆ",
        "tooltip-n-mainpage-description": "ಮುಕ್ಯೊ ಪುಟೊನ್ ತೂಲೆ",
        "tooltip-n-portal": "ಯೋಜನೆದ ಬಗೆಟ್, ಈರ್ ದಾದ ಮಲ್ಪೊಲಿ, ಓಲು ಇಂದೆತ ಬಗೆಟ್ ತೆರಿಯೊನೊಲಿ",
        "tooltip-n-randompage": "ಇಚ್ಚೆದ ಪುಟೊ ಒಂಜೆನ್ ತೋಜಾವು",
        "tooltip-n-help": "ಇಂದೆತ ಬಗೆಟ್ ತೆರೆಯೊನುನ ಜಾಗೆ",
        "tooltip-t-whatlinkshere": "ಇಡೆಗ್ ಕೊಂಡಿ ಕೊರ್ಪುನಂಚಿನ ಪೂರ ವಿಕಿ ಪುಟೊಲೆನ ಪಟ್ಟಿ",
-       "tooltip-t-recentchangeslinked": "à²\88 à²ªà³\81à²\9fà³\8aಡà³\8dದà³\8d à²¸à²\82ಪರà³\8dà²\95à³\8a à²\89ಪà³\8dಪà³\81ನà²\82à²\9aಿನ à²ªà³\81à²\9fà³\8aಡà³\8d ಇಂಚಿಪೊದ ಬದಲಾವಣೆಲು",
+       "tooltip-t-recentchangeslinked": "à²\88 à²ªà³\81à²\9fà³\8aಡà³\8dದà³\8d à²¸à²\82ಪರà³\8dà²\95à³\8a à²\89ಪà³\8dಪà³\81ನà²\82à²\9aಿನ à²ªà³\81à²\9fà³\8aà²\9fà³\81 ಇಂಚಿಪೊದ ಬದಲಾವಣೆಲು",
        "tooltip-feed-rss": "ಈ ಪುಟೊಗು ಆರ್.ಎಸ್.ಎಸ್ ಫೀಡ್",
-       "tooltip-feed-atom": "à²\88 à²ªà³\81à²\9fà³\8aà²\97ು ಆಟಮ್ ಫೀಡ್ ಮಲ್ಪುಲೆ",
+       "tooltip-feed-atom": "à²\88 à²ªà³\81à²\9fà³\8aà²\95ು ಆಟಮ್ ಫೀಡ್ ಮಲ್ಪುಲೆ",
        "tooltip-t-contributions": "{{GENDER:$1|ಈ ಸದಸ್ಯೆರ್ನ}} ಕಾಣಿಕೆದ ಪಟ್ಟಿನ್ ತೋಜಾವು",
-       "tooltip-t-emailuser": "ಈ ಸದಸ್ಯೆರೆಗ್ ಇ-ಮೇಲ್ ಕಡಪುಡ್ಲೆ",
-       "tooltip-t-upload": "ಫೈಲನ್ ಅಪ್ಲೋಡ್ ಮಲ್ಪುಲೆ",
+       "tooltip-t-emailuser": "{{GENDER:$1|ಈ ಸದಸ್ಯೆರೆಗ್}} ಇ-ಮೇಲ್ ಕಡಪುಡ್ಲೆ",
+       "tooltip-t-upload": "ಫà³\88ಲà³\8dâ\80\99ನà³\8d à²\85ಪà³\8dಲà³\8bಡà³\8d à²®à²²à³\8dಪà³\81ಲà³\86",
        "tooltip-t-specialpages": "ಪೂರ  ವಿಸೇಸೊ ಪುಟೊಲೆನ ಪಟ್ಟಿ",
-       "tooltip-t-print": "à²\88 à²ªà³\81à²\9fà³\8aದ ಮುದ್ರಣೊ ಮಲ್ಪುನ ಆವೃತ್ತಿ",
-       "tooltip-t-permalink": "ಪà³\81à²\9fà³\8aದ ಈ ಆವೃತ್ತಿಗ್ ಸಾಸಿತೊ ಕೊಂಡಿ",
+       "tooltip-t-print": "à²\88 à²ªà³\81à²\9fà³\8aತ ಮುದ್ರಣೊ ಮಲ್ಪುನ ಆವೃತ್ತಿ",
+       "tooltip-t-permalink": "ಪà³\81à²\9fà³\8aತ ಈ ಆವೃತ್ತಿಗ್ ಸಾಸಿತೊ ಕೊಂಡಿ",
        "tooltip-ca-nstab-main": "ಮಾಹಿತಿ ಪುಟೊನ್ ತೂಲೆ",
        "tooltip-ca-nstab-user": "ಸದಸ್ಯೆರ್ನ ಪುಟೊನು ತೂಲೆ",
        "tooltip-ca-nstab-special": "ಉಂದೊಂಜಿ ವಿಸೇಸ ಪುಟೊ, ಇಂದೆನ್ ಈರ್ ಸಂಪೊಲಿಪೆರೆ ಆಪುಜಿ",
        "tooltip-ca-nstab-project": "ಮಾಹಿತಿ ಪುಟೊನು ತೂಲೆ",
        "tooltip-ca-nstab-image": "ಫೈಲ್‍ದ ಪುಟೊನು ತೂಲೆ",
+       "tooltip-ca-nstab-mediawiki": "ಸಿಸ್ಟಮ್ ಸಂದೇಶೊನು ತೂಲೆ",
        "tooltip-ca-nstab-template": "ಟೆಂಪ್ಲೇಟ್‍ನ್ ತೂಲೆ",
        "tooltip-ca-nstab-category": "ವರ್ಗೊದ ಪುಟೊನು ತೂಲೆ",
        "tooltip-minoredit": "ಇಂದೆನ್ ಎಲ್ಯ ಬದಲಾವಣೆ ಪಂಡ್ದ್ ಗುರ್ತ ಮಲ್ಪುಲೆ",
        "tooltip-undo": "\"ವಜಾ ಮಲ್ಪುಲೆ\" ಈ ಬದಲಾವಣೆನ್ ದೆತೊನುಜಿ ಬುಕ್ಕೊ ಪ್ರಿವ್ಯೂ ಮೋಡ್‍ಡ್ ಬದಲಾವಣೆ ಮಲ್ಪೆರ್ ಕೊನೊಪು೦ಡು. ಅ೦ಚೆನೆ ಸಾರಾಂಸೊಡು ಬದಲಾವಣೆಗ್ ಕಾರಣ ಸೇರಾಯರ ಆಪು೦ಡು.",
        "tooltip-summary": "ಒಂಜಿ ಎಲ್ಯ ಸಾರಾಂಸೊ ಕೊರ್ಲೆ",
        "simpleantispam-label": "ಯಾಂಟಿ-ಸ್ಪಾಮ್ ಚೆಕ್.\nಮುಲ್ಪ <strong>ದಿಂಜಾವೊಡ್ಚಿ</strong>",
+       "pageinfo-title": "\"$1\" ಕ್ ಮಾಹಿತಿ",
+       "pageinfo-header-basic": "ಮೂಲ ಮಾಹಿತಿ",
+       "pageinfo-header-edits": "ಸಂಪೊಲಿತಿನ ಇತಿಹಾಸೊ",
+       "pageinfo-header-restrictions": "ಪುಟ ರಕ್ಷಣೆ",
+       "pageinfo-header-properties": "ಪುಟೊತ್ತ ಗುಣಲಕ್ಷಣೊಲು",
+       "pageinfo-display-title": "ತೋಜುನ ಪುದರ್",
+       "pageinfo-length": "ಪುಟೊತ್ತ ಉದ್ದ (ಬೈಟ್ಸ್)",
        "pageinfo-article-id": "ಪುಟೊದ ಐಡಿ",
+       "pageinfo-language": "ಪುಟೊಟಿತ್ತಿ ವಿಸಯೊದ ಬಾಸೆ",
+       "pageinfo-content-model": "ಪುಟೊಟಿತ್ತಿ ವಿಸಯೊದ ಮಾದರಿ",
        "pageinfo-content-model-change": "ಬದಲಾವಣೆಲು",
+       "pageinfo-robot-index": "ಅನುಮತಿ ಉಂಡು",
+       "pageinfo-watchers": "ಪುಟೊತ್ತ ವೀಕ್ಷಕೆರ್ನ ಸಂಕೆ",
+       "pageinfo-few-watchers": "$1 ಡ್ದ್ ಕಮ್ಮಿ {{PLURAL:$1|ವೀಕ್ಷಕೆರ್|ವೀಕ್ಷಕೆರ್ಲು}}",
+       "pageinfo-redirects-name": "ಈ ಪುಟೊಕಿತ್ತಿ ರೀಡೈರೆಕ್ಟ್‌ಲೆನ ಸಂಕೆ",
+       "pageinfo-firstuser": "ಪುಟೊನು ಉಂಡು ಮಲ್ತಿನಾರ್",
+       "pageinfo-firsttime": "ಪುಟೊನು ಉಂಡು ಮಲ್ತಿನ ತಾರಿಕ್",
+       "pageinfo-lastuser": "ಇಂಚಿಪ್ಪೊದ ಸಂಪಾದಕೆರ್",
+       "pageinfo-lasttime": "ಇಂಚಿಪೊಗು ಸಂಪೊಲಿತಿನ ತಾರಿಕ್",
+       "pageinfo-edits": "ಒಟ್ಟು ಸಂಪಾದನೆಲೆನ ಸಂಕೆ",
        "pageinfo-toolboxlink": "ಪುಟೊದ ಮಾಹಿತಿ",
+       "pageinfo-contentpage": "ವಿಸಯೊ ಇತ್ತಿ ಪುಟೊ ಪಂದ್ ಲೆಕ್ಕೊಗು ಪತ್ತ್‌ದ್ಂಡ್",
        "pageinfo-contentpage-yes": "ಅಂದ್",
        "pageinfo-protect-cascading-yes": "ಅಂದ್",
        "pageinfo-category-pages": "ಪುಟೊಕುಲೆ ಸಂಕ್ಯೆ",
        "nextdiff": "ಬುಕ್ಕೊದ ಸಂಪದನೆ →",
        "thumbsize": "ಕಿರುನೋಟದ ಗಾತ್ರೊ:",
        "file-info-size": "$1 × $2 ಚಿತ್ರಬಿಂದುಲು, ಫೈಲ್‍ದ ಗಾತ್ರೊ: $3, MIME ಪ್ರಕಾರೊ: $4",
-       "file-nohires": "à²\87à²\82ದà³\86ರà³\8dದà³\8d à²\9cಾಸà³\8dತಿ à²°à³\86ಸಲà³\8dಯà³\82ಶನà³\8d à²\87ದà³\8dದಿ,",
+       "file-nohires": "à²\87à²\82ದà³\86ರà³\8dದà³\8d à²\9cಾಸà³\8dತಿ à²°à³\86ಸಲà³\8dಯà³\82ಶನà³\8d à²\87à²\9cà³\8dà²\9cಿ.",
        "svg-long-desc": "ಎಸ್.ವಿ.ಜಿ ಫೈಲ್, ಸುಮಾರಾದ್ $1 × $2 ಚಿತ್ರೊಬಿಂದು, ಫೈಲ್‍ದ ಗಾತ್ರ: $3",
        "show-big-image": "ಮೂಲೊ ಫೈಲ್",
-       "show-big-image-preview": "ಪಿರವà³\81ದ à²ªà³\81à²\9fà³\8aದ ಗಾತ್ರೊ: $1.",
+       "show-big-image-preview": "ಪಿರವà³\81ದ à²ªà³\81à²\9fà³\8aತ ಗಾತ್ರೊ: $1.",
        "show-big-image-other": "ಬೇತೆ{{PLURAL:$2|resolution|ಪಟೊತ್ತ ಗಾತ್ರೊ }}: $1.",
        "show-big-image-size": "$1 × $2 ಚಿತ್ರೊ ಬಿಂದುಲು",
        "newimages-legend": "ಅರಿಪೆ",
        "ilsubmit": "ನಾಡ್‍ಲೆ",
+       "hours": "{{PLURAL:$1|$1 ಗಂಟೆ|$1 ಗಂಟೆಲು}}",
+       "days": "{{PLURAL:$1|$1 ದಿನೊ|$1 ದಿನೊಕುಲು}}",
        "bad_image_list": "ವ್ಯವಸ್ಥೆದ ಆಕಾರ ಈ ರೀತಿ ಉಂಡು:\n\nಪಟ್ಟಿಡುಪ್ಪುನಂಚಿನ ದಾಖಲೆಲೆನ್ (* ರ್ದ್ ಶುರು ಆಪುನ ಸಾಲ್’ಲು) ಮಾತ್ರ ಪರಿಗಣನೆಗ್ ದೆತೊನೆರಾಪುಂಡು.\nಪ್ರತಿ ಸಾಲ್’ದ ಶುರುತ ಲಿಂಕ್ ಒಂಜಿ ದೋಷ ಉಪ್ಪುನಂಚಿನ ಫೈಲ್’ಗ್ ಲಿಂಕಾದುಪ್ಪೊಡು.\nಅವ್ವೇ ಸಾಲ್’ದ ಶುರುತ ಪೂರಾ ಲಿಂಕ್’ಲೆನ್ ಪರಿಗನೆರ್ದ್ ದೆಪ್ಪೆರಾಪುಂಡು, ಪಂಡ ಓವು ಪುಟೊಲೆಡ್ ಫೈಲ್’ದ ಬಗ್ಗೆ ಬರ್ಪುಂಡೋ ಔಲು.",
        "metadata": "ಮೆಟಾಡೇಟಾ",
-       "metadata-help": "à²\88 à²ªà³\88ಲà³\8dâ\80\8dಡà³\8d à²\9cಾಸà³\8dತಿ à²®à²¾à²¹à²¿à²¤à²¿ à²\89à²\82ಡà³\81. à²¹à³\86à²\9aà³\8dà²\9aಿನà²\82ಸà³\8a à²ªà³\88ಲà³\8dâ\80\8dನà³\8d à²\89à²\82ಡà³\81 à²®à²²à³\8dಪà³\86ರà³\86 à²\89ಪಯà³\8bà²\97 à²®à²²à³\8dತಿನ à²¡à²¿à²\9cಿà²\9fಲà³\8d à²\95à³\8dಯಾಮà³\86ರರà³\8dದà³\8d à²\85ತà³\8dತà³\8dà²\82ಡ à²¸à³\8dà²\95à³\8dಯಾನರà³\8dâ\80\8cರà³\8dದà³\8d à²\88 à²®à²¾à²¹à²¿à²¤à²¿ à²¬à²¤à³\8dತà³\8dà²\82ಡà³\8d.\nಮà³\82ಲಪà³\8dರತಿರà³\8dದà³\8d à²\88 à²ªà³\88ಲà³\8d à²¬à²¦à²²à²¾à²¦à²¿à²¤à³\8dತà³\8dà²\82ಡà³\8d, à²\88 ಮಾಹಿತಿ ಬದಲಾತಿನ ಪೈಲ್‍ದ ವಿವರೊಲೆಗ್ ಸರಿಯಾದ್ ಹೊಂದಂದೆ ಉಪ್ಪು.",
+       "metadata-help": "à²\88 à²ªà³\88ಲà³\8dâ\80\8dಡà³\8d à²\9cಾಸà³\8dತಿ à²®à²¾à²¹à²¿à²¤à²¿ à²\89à²\82ಡà³\81. à²¹à³\86à²\9aà³\8dà²\9aಿನà²\82ಸà³\8a à²ªà³\88ಲà³\8dâ\80\8dನà³\8d à²\89à²\82ಡà³\81 à²®à²²à³\8dಪà³\86ರà³\86 à²\89ಪಯà³\8bà²\97 à²®à²²à³\8dತಿನ à²¡à²¿à²\9cಿà²\9fಲà³\8d à²\95à³\8dಯಾಮà³\86ರರà³\8dದà³\8d à²\85ತà³\8dತà³\8dà²\82ಡ à²¸à³\8dà²\95à³\8dಯಾನರà³\8dâ\80\8cರà³\8dದà³\8d à²\88 à²®à²¾à²¹à²¿à²¤à²¿ à²¬à³\88ದà³\8dà²\82ಡà³\8d.\nಮà³\82ಲಪà³\8dರತಿರà³\8dದà³\8d à²\88 à²ªà³\88ಲà³\8d à²¬à²¦à²²à²¾à²¦à²¿à²¤à³\8dತà³\8dà²\82ಡ, à²\95à³\86ಲವà³\81 ಮಾಹಿತಿ ಬದಲಾತಿನ ಪೈಲ್‍ದ ವಿವರೊಲೆಗ್ ಸರಿಯಾದ್ ಹೊಂದಂದೆ ಉಪ್ಪು.",
        "metadata-expand": "ವಿಸ್ತಾರವಾಯಿನ ವಿವರೊಲೆನ್ ತೊಜ್ಪಾವು",
        "metadata-collapse": "ವಿಸ್ತಾರವಾಯಿನ ವಿವರೊಲೆನ್ ದೆಂಗಾವು",
        "metadata-fields": "ಈ ಸಂದೇಸೊಡು ಪಟ್ಟಿ ಮಲ್ತಿನಂಚಿನ EXIF ಮಿತ್ತ ದರ್ಜೆದ ಮಾಹಿತಿನ್ ಚಿತ್ರೊ ಪುಟೊಕು ಸೇರ್ಪಾಯೆರೆ ಆವೊಂದುಂಡು. ಪುಟೊಟು ಮಿತ್ತ ದರ್ಜೆ ಮಾಹಿತಿದ ಪಟ್ಟಿನ್ ದೆಪ್ಪುನಗ ಉಂದು ತೋಜುಂಡು.\nಒರಿದನವು ಮೂಲೊ ಸ್ಥಿತಿಟ್ ಅಡೆಂಗ್‍ದುಂಡು.\n*ಮಲ್ಪುಲೆ\n*ಮಾದರಿ\n*ದಿನೊ ಪೊರ್ತು ಮೂಲೊ\n*ಮಾನಾದಿಗೆದ ಸಮಯೊ\n*ಫ್‍ಸಂಖ್ಯೆ\n*ಐಎಸ್ಒ ವೇಗೊದ ರೇಟಿಂಗ್\n*ತೂಪಿನ ಜಾಗೆದ ದೂರ\n*ಕಲಾವಿದೆ\n*ಕೃತಿಸ್ವಾಮ್ಯೊ\n*ಚಿತ್ರೊ ವಿವರಣೆ\n*ಜಿಪಿಎಸ್ ಅಕ್ಷಾಂಸೊ\n*ಜಿಪಿಎಸ್ ರೇಖಾಂಸೊ\n*ಜಿಪಿಎಸ್ ಎತ್ತರೊ",
        "confirm-watch-button": "ಸರಿ",
        "confirm-unwatch-button": "ಸರಿ",
        "confirm-rollback-button": "ಸರಿ",
+       "word-separator": "&#32;",
        "quotation-marks": "\"$1\"",
        "imgmultipageprev": "← ದುಂಬುತ ಪುಟೊ",
-       "imgmultipagenext": "ನನತ ಪುಟ →",
+       "imgmultipagenext": "ನನತ ಪುಟ →",
        "img-lang-go": "ಪೋಲೆ",
        "table_pager_next": "ನನತಾ ಪುಟ",
        "table_pager_prev": "ದುಂಬುತ ಪುಟೊ",
        "watchlistedit-clear-title": "ತುಯಿನೇನ್ ಮಾಜಾಲೇ",
        "watchlistedit-clear-legend": "ತುಯಿನೇನ್ ಮಾಜಾಲೇ",
        "watchlistedit-clear-titles": "ತರೆಬರವು:",
+       "watchlisttools-clear": "ವೀಕ್ಷಣಾಪಟ್ಟಿನ್ ಖಾಲಿ ಮಲ್ಪುಲೆ",
        "watchlisttools-view": "ಪ್ರಸ್ತುತ ಬದಲಾವಣೆಲ್ ತೋಜಾಲೆ",
        "watchlisttools-edit": "ವೀಕ್ಷಣಾಪಟ್ಟಿನ್ ತೂಲೆ ಬೊಕ್ಕ ಎಡಿಟ್ ಮಲ್ಪುಲೆ",
+       "watchlisttools-raw": "ಮೂಲ ವೀಕ್ಷಣಾಪಟ್ಟಿನ್ ಎಡಿಟ್ ಮಲ್ಪುಲೆ",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|ಪಾತೆರ್ಲೆ]])",
        "version": "ಆವೃತ್ತಿ",
        "version-specialpages": "ವಿಸೇಸೊ ಪುಟೊಲು",
        "version-libraries-description": "ವಿವರಣೆ",
        "version-libraries-authors": "ಲೇಖಕೆರ್",
        "redirect-submit": "ಪೋಲೆ",
-       "redirect-value": "ಮà³\8cಲà³\8dಯ:",
-       "redirect-user": "ಬಳà²\95à³\86ದಾರà³\86ರ ID",
-       "redirect-page": "ಪà³\81à²\9fà³\8aದ ಐಡಿ",
+       "redirect-value": "ಬಿಲà³\86:",
+       "redirect-user": "ಸದಸà³\8dಯà³\86ರà³\8dನ ID",
+       "redirect-page": "ಪà³\81à²\9fà³\8aತ ಐಡಿ",
        "redirect-file": "ಕಡತದ ಪುದರ್",
        "fileduplicatesearch-filename": "ಕಡತದ ಪುದರ್:",
        "fileduplicatesearch-submit": "ನಾಡ್‍ಲೆ",
-       "specialpages": "ವಿಸೇಸೊ ಪುಟೊಲು",
+       "specialpages": "ವಿಸà³\87ಸà³\8a à²ªà³\81à²\9fà³\8aà²\95à³\81ಲà³\81",
        "blankpage": "ಖಾಲಿ ಪುಟ",
        "tag-filter": "[[Special:Tags|ಟ್ಯಾಗ್]]ಅರಿಪೆ:",
        "tag-filter-submit": "ಅರಿಪೆ",
        "tags-active-no": "ಅತ್ತ್",
        "tags-edit": "ಸಂಪೊಲಿಪುಲೆ",
        "tags-delete": "ಮಾಜಾಲೆ",
+       "tags-hitcount": "$1 {{PLURAL:$1|ಬದಲಾವಣೆ|ಬದಲಾವಣೆಲು}}",
        "tags-create-reason": "ಕಾರಣ:",
        "tags-create-submit": "ಸೃಷ್ಟಿಸಾಲೆ",
        "tags-delete-reason": "ಕಾರಣ:",
        "logentry-delete-delete": "$1{{GENDER:$2|ಮಾಜಾತುಂಡ್}}ಪುಟೊ $3",
        "logentry-delete-restore": "$1 {{GENDER:$2|restored}} ಪುಟೊ $3 ($4)",
        "restore-count-files": "{{PLURAL:$1|1 file|$1 ವಿಸಯೊಲು}}",
+       "revdelete-content-hid": "ವಿಸಯ ದೆಂಗ್‍ದ್ಂಡ್",
        "logentry-move-move": "$1 {{GENDER:$2|ಜಾರಲೆ}} ಪುಟೊ $3 ಡ್ದ್ $4",
+       "logentry-move-move-noredirect": "$1 ಪುಟೊ $3 ನ್ ಪುಟೊ $4 ಕ್ ರೀಡೈರೆಕ್ಟ್ ಕೊರಂದೆ {{GENDER:$2|ವರ್ಗಾವಣೆ ಮಲ್ತೆರ್}}",
+       "logentry-move-move_redir": "$1 ಪುಟೊ $3 ನ್ ಪುಟೊ $4 ಕ್ ರೀಡೈರೆಕ್ಟ್ ಕೊರ್ದು {{GENDER:$2|ವರ್ಗಾವಣೆ ಮಲ್ತೆರ್}}",
        "logentry-newusers-create": "ಬಳಕೆದಾರೆರೆ ಕಾತೆ $1 ನ್ {{GENDER:$2|ಸ್ರಿಸ್ಟಿ ಮಲ್ತಾಂಡ್}}",
+       "logentry-newusers-autocreate": "ಸದಸ್ಯೆರೆ ಖಾತೆ $1 ತನ್ನಾತೆಗ್ {{GENDER:$2|ಉಂಡಾತ್ಂಡ್}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|ಅಪ್ಲೋಡ್ ಮಲ್ತ್‌ದೆರ್}} $3",
        "searchsuggest-search": "{{SITENAME}}ನ್ ನಾಡ್‍ಲೆ",
+       "duration-days": "$1 {{PLURAL:$1|ದಿನೊ|ದಿನೊಕುಲು}}",
        "pagelang-reason": "ಕಾರಣೊ",
        "mw-widgets-usersmultiselect-placeholder": "ನನಾತ್ ಸೇರಲೇ..."
 }
index a2114de..05cf315 100644 (file)
        },
        "tog-underline": "Subliña ligasaun sira:",
        "tog-hideminor": "Lá'os hatudu muda ki-ki'ik iha mudansa foufoun sira",
-       "tog-usenewrc": "Iha lista \"mudansa foufoun sira\" no \"lista hateke\": Hatudu mudansa iha grupu sira - grupu ida ba pájina ida (presiza JavaScript)",
-       "tog-showtoolbar": "Hatudu kaixa edita (presiza JavaScript)",
+       "tog-usenewrc": "Iha lista \"mudansa foufoun sira\" no \"lista hateke\": Hatudu mudansa iha grupu sira - grupu ida ba pájina ida",
+       "tog-showtoolbar": "Hatudu kaixa edita",
        "tog-watchcreations": "Hateke pájina no imajen sira-ne'ebé ha'u kria/tau iha arkivu laran",
        "tog-watchdefault": "Hateke pájina sira-ne'ebé ha'u edita",
        "tog-watchmoves": "Hateke pájina sira-ne'ebé ha'u book",
        "tog-watchdeletion": "Hateke pájina sira-ne'ebé ha'u halakon",
        "tog-minordefault": "Edita hotu-hotu \"ki'ik\"",
-       "tog-oldsig": "Asinatura atuál",
+       "tog-oldsig": "Asinatura atuál:",
        "tog-watchlisthideown": "La hatudu ha'u-nia edita iha lista hateke",
        "tog-watchlisthidebots": "Hamsumik bot iha lista hateke",
        "tog-watchlisthideminor": "Hamsumik muda ki-ki'ik iha lista hateke",
        "oct": "Out.",
        "nov": "Nov.",
        "dec": "Dez.",
+       "january-date": "$1 Janeiru",
+       "february-date": "$1 Fevereiru",
+       "march-date": "$1 Marsu",
+       "april-date": "$1 Abríl",
+       "may-date": "$1 Maiu",
+       "june-date": "$1 Juñu",
+       "july-date": "$1 Jullu",
+       "august-date": "$1 Agostu",
+       "september-date": "$1 Setembru",
+       "october-date": "$1 Outubru",
+       "november-date": "$1 Novembru",
+       "december-date": "$1 Dezembru",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|Kategoria|Kategoria}}",
        "category_header": "Artigu iha kategoría \"$1\"",
        "subcategories": "Sub-kategoria sira",
        "moredotdotdot": "Barak liu...",
        "mypage": "Ha'u-nia pájina",
        "mytalk": "Diskusaun",
-       "anontalk": "Diskusaun ba IP ne'e",
+       "anontalk": "Diskusaun",
        "navigation": "Hatudu-dalan",
        "and": "&#32;ho",
-       "qbfind": "Hetan",
-       "qbedit": "Edita",
-       "qbpageoptions": "Pájina ne'e",
-       "qbmyoptions": "Ha'u-nia pájina sira",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "Aksaun sira",
+       "namespaces": "Espasu pájina nian",
        "errorpagetitle": "Sala",
        "returnto": "Fali ba $1.",
        "tagline": "Husi {{SITENAME}}",
        "view": "Lee",
        "edit": "Edita",
        "create": "Kria",
-       "editthispage": "Edita pájina ne'e",
-       "create-this-page": "Kria pájina ne'e",
        "delete": "Halakon",
-       "deletethispage": "Halakon pájina ne'e",
        "undelete_short": "Restaurar {{PLURAL:$1|versaun ida|versaun $1}}",
        "protect": "Proteje",
        "protect_change": "muda",
-       "protectthispage": "Proteje pájina ne'e",
        "unprotect": "Muda protesaun",
-       "unprotectthispage": "Muda protesaun pájina ne'e nian",
        "newpage": "Pájina foun",
-       "talkpage": "Diskusaun kona-ba pájina ne'e",
        "talkpagelinktext": "Diskusaun",
        "specialpage": "Pájina espesiál",
        "talk": "Diskusaun",
        "toolbox": "Kaixa besi nian",
-       "userpage": "Haree pájina uza-na'in",
-       "projectpage": "Haree pájina projetu nian",
+       "tool-link-userrights": "Muda grupu {{GENDER:$1|uza-na'in}} nian",
+       "tool-link-userrights-readonly": "Haree grupu {{GENDER:$1|uza-na'in}} nian",
        "imagepage": "Haree pájina imajen nian",
        "mediawikipage": "Haree pájina mensajen nian",
        "viewhelppage": "Haree pájina ajuda",
        "viewsourcetext": "Ó bele lee no kopia testu pájina nian:",
        "namespaceprotected": "Ó la iha priviléjiu ba edita pájina sira iha espasu '''$1'''.",
        "ns-specialprotected": "La ema ida bele edita pájina espesiál sira.",
+       "welcomeuser": "Benvindu, $1!",
        "yourname": "Naran uza-na'in:",
+       "userlogin-yourname": "Naran uza-na'in",
        "login": "Log in",
        "nav-login-createaccount": "Log in / kriar konta ida",
        "logout": "Husik",
index 101771d..aedf0b1 100644 (file)
        "anontalk": "พูดคุย",
        "navigation": "การนำทาง",
        "and": "&#32;และ",
-       "qbfind": "ค้นหา",
-       "qbbrowse": "สืบค้น",
-       "qbedit": "แก้ไข",
-       "qbpageoptions": "หน้านี้",
-       "qbmyoptions": "หน้าของฉัน",
        "faq": "คำถามที่พบบ่อย",
-       "faqpage": "Project:คำถามที่พบบ่อย",
        "actions": "ปฏิบัติการ",
        "namespaces": "เนมสเปซ",
        "variants": "สิ่งที่แตกต่าง",
        "edit-local": "แก้ไขคำอธิบายท้องถิ่น",
        "create": "สร้าง",
        "create-local": "เพิ่มคำอธิบายท้องถิ่น",
-       "editthispage": "แก้ไขหน้านี้",
-       "create-this-page": "สร้างหน้านี้",
        "delete": "ลบ",
-       "deletethispage": "ลบหน้านี้",
-       "undeletethispage": "กู้คืนหน้านี้",
        "undelete_short": "กู้คืนการแก้ไข $1 ครั้ง",
        "viewdeleted_short": "ดู $1 การแก้ไขที่ถูกลบ",
        "protect": "ล็อก",
        "protect_change": "เปลี่ยน",
-       "protectthispage": "ล็อกหน้านี้",
        "unprotect": "เปลี่ยนการล็อก",
-       "unprotectthispage": "เปลี่ยนการล็อกหน้านี้",
        "newpage": "หน้าใหม่",
-       "talkpage": "อภิปรายหน้านี้",
        "talkpagelinktext": "พูดคุย",
        "specialpage": "หน้าพิเศษ",
        "personaltools": "เครื่องมือส่วนตัว",
-       "articlepage": "ดูหน้าเนื้อหา",
        "talk": "อภิปราย",
        "views": "ดู",
        "toolbox": "เครื่องมือ",
        "tool-link-userrights": "เปลี่ยนกลุ่ม{{GENDER:$1|ผู้ใช้}}",
        "tool-link-userrights-readonly": "ดูกลุ่ม{{GENDER:$1|ผู้ใช้}}",
        "tool-link-emailuser": "ส่งอีเมลหา{{GENDER:$1|ผู้ใช้}}นี้",
-       "userpage": "ดูหน้าผู้ใช้",
-       "projectpage": "ดูหน้าโครงการ",
        "imagepage": "ดูหน้าไฟล์",
        "mediawikipage": "ดูหน้าข้อความ",
        "templatepage": "ดูหน้าแม่แบบ",
index 6b8aeed..e771d78 100644 (file)
        "anontalk": "Бәхәс",
        "navigation": "Навигация",
        "and": "&#32;һәм",
-       "qbfind": "Эзләү",
-       "qbbrowse": "Карау",
-       "qbedit": "Үзгәртү",
-       "qbpageoptions": "Бу бит",
-       "qbmyoptions": "Битләрем",
        "faq": "ЕБС",
-       "faqpage": "Project:ЕБС",
        "actions": "Гамәлләр",
        "namespaces": "Исемнәр мәйданы",
        "variants": "Вариантлар",
        "edit-local": "Локаль тасвирламаны үзгәртү",
        "create": "Төзү",
        "create-local": "Локаль тасвирлама өстәү",
-       "editthispage": "Бу битне үзгәртү",
-       "create-this-page": "Бу битне төзү",
        "delete": "Бетерү",
-       "deletethispage": "Бу битне бетерү",
-       "undeletethispage": "Бу битне кайтару",
        "undelete_short": "$1 {{PLURAL:$1|төзәтмәне|$1 төзәтмә}} торгызу",
        "viewdeleted_short": "{{PLURAL:$1|1=1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}} карау\n{{PLURAL:$1|бетерелгән төзәтмәне|$1 бетерелгән төзәтмәне}} карау",
        "protect": "Яклау",
        "protect_change": "үзгәртү",
-       "protectthispage": "Бу битне яклау",
        "unprotect": "Яклауны үзгәртү",
-       "unprotectthispage": "Бу битнең яклауын үзгәртү",
        "newpage": "Яңа бит",
-       "talkpage": "Бит турында фикер алышу",
        "talkpagelinktext": "бәхәс",
        "specialpage": "Махсус бит",
        "personaltools": "Шәхси кораллар",
-       "articlepage": "Мәкаләне карау",
        "talk": "Бәхәс",
        "views": "Караулар",
        "toolbox": "Кораллар",
        "tool-link-userrights": "{{GENDER:$1|Кулланучының}} төркемнәрен алмаштыру",
        "tool-link-userrights-readonly": "{{GENDER:$1|Кулланучының}} төркемнәрен карау",
        "tool-link-emailuser": "{{GENDER:$1|Кулланучыга}} хат язу",
-       "userpage": "Кулланучы битен карау",
-       "projectpage": "Проект битен карау",
        "imagepage": "Файл битен карау",
        "mediawikipage": "Хәбәр битен карау",
        "templatepage": "Үрнәк битен карау",
        "recentchanges-legend-heading": "<strong>Аңлатма:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (шулай ук [[Special:NewPages|яңа битләр исемлеген]] карагыз)",
        "recentchanges-submit": "Күрсәт",
+       "rcfilters-quickfilters": "Сакланган филтр көйләнмәләре",
        "rcfilters-clear-all-filters": "Барлык филтерләрне чистарту",
        "rcfilters-filter-registered-label": "Теркәлгән",
        "rcfilters-filter-registered-description": "Теркәлгән мөхәррирләр.",
        "rcfilters-filter-minor-description": "«Кече үзгәртү» дип тамгаланган үзгәртүләр",
        "rcfilters-filter-pageedits-label": "Бит үзгәртүләре",
        "rcfilters-filter-newpages-label": "Бит төзүләре",
-       "rcfilters-filter-logactions-label": "Беркетмәләнә торган гамәлләр",
+       "rcfilters-filter-logactions-label": "Беркетмәләнүче гамәлләр",
        "rcfilters-filter-logactions-description": "Административ гамәлләр, хисап язмасын төзүләр, битне бетерүләр, файл йөкләүләр...",
        "rcnotefrom": "Астарак <strong>$3, $4</strong> өчен {{PLURAL:$5|үзгәртүләр күрсәтелгән}} (<strong>$1</strong> артык түгел).",
        "rclistfrom": "$3 $2 башлап яңа үзгәртүләрне күрсәт",
index 077becc..48c45f9 100644 (file)
        "anontalk": "Обговорення",
        "navigation": "Навігація",
        "and": "&#32;і",
-       "qbfind": "Знайти",
-       "qbbrowse": "Переглянути",
-       "qbedit": "Редагувати",
-       "qbpageoptions": "Налаштування сторінки",
-       "qbmyoptions": "Мої налаштування",
        "faq": "Часті питання",
-       "faqpage": "Project:Часті питання",
        "actions": "Дії",
        "namespaces": "Простори назв",
        "variants": "Варіанти",
        "edit-local": "Редагувати локальний опис",
        "create": "Створити",
        "create-local": "Додати локальний опис",
-       "editthispage": "Редагувати цю сторінку",
-       "create-this-page": "Створити цю сторінку",
        "delete": "Вилучити",
-       "deletethispage": "Вилучити цю сторінку",
-       "undeletethispage": "Відновити цю сторінку",
        "undelete_short": "Відновити $1 {{PLURAL:$1|редагування|редагування|редагувань}}",
        "viewdeleted_short": "Переглянути {{PLURAL:$1|одне вилучене редагування|$1 вилучені редагування|$1 вилучених редагувань}}",
        "protect": "Захистити",
        "protect_change": "змінити",
-       "protectthispage": "Захистити цю сторінку",
        "unprotect": "Змінити захист",
-       "unprotectthispage": "Змінити захист цієї сторінки",
        "newpage": "Нова сторінка",
-       "talkpage": "Обговорити цю сторінку",
        "talkpagelinktext": "обговорення",
        "specialpage": "Спеціальна сторінка",
        "personaltools": "Особисті інструменти",
-       "articlepage": "Переглянути статтю",
        "talk": "Обговорення",
        "views": "Перегляди",
        "toolbox": "Інструменти",
        "tool-link-userrights": "Змінити групи {{GENDER:$1|користувача|користувачки}}",
        "tool-link-userrights-readonly": "Перегляд груп {{GENDER:$1|користувача|користувачки}}",
        "tool-link-emailuser": "Лист {{GENDER:$1|користувачеві|користувачці}}",
-       "userpage": "Переглянути сторінку користувача",
-       "projectpage": "Переглянути сторінку проекту",
        "imagepage": "Переглянути сторінку файлу",
        "mediawikipage": "Переглянути сторінку повідомлення",
        "templatepage": "Переглянути сторінку шаблону",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Показати",
        "rcfilters-activefilters": "Активні фільтри",
-       "rcfilters-quickfilters": "Швидкі посилання",
+       "rcfilters-quickfilters": "Збережені налаштування фільтрів",
+       "rcfilters-quickfilters-placeholder-title": "Ще немає збережених посилань",
+       "rcfilters-quickfilters-placeholder-description": "Щоб зберегти Ваші налаштування фільтрів та використати їх пізніше, клацніть на іконку закладки в ділянці активних фільтрів нижче.",
        "rcfilters-savedqueries-defaultlabel": "Збережені фільтри",
        "rcfilters-savedqueries-rename": "Перейменувати",
        "rcfilters-savedqueries-setdefault": "Зробити стандартним",
        "rcfilters-savedqueries-unsetdefault": "Прибрати зі стандартних",
        "rcfilters-savedqueries-remove": "Вилучити",
        "rcfilters-savedqueries-new-name-label": "Назва",
-       "rcfilters-savedqueries-apply-label": "СÑ\82воÑ\80иÑ\82и Ñ\88видке Ð¿Ð¾Ñ\81илання",
+       "rcfilters-savedqueries-apply-label": "Ð\97беÑ\80егÑ\82и Ð½Ð°Ð»Ð°Ñ\88Ñ\82Ñ\83вання",
        "rcfilters-savedqueries-cancel-label": "Скасувати",
-       "rcfilters-savedqueries-add-new-title": "Зберегти фільтри як швидке посилання",
+       "rcfilters-savedqueries-add-new-title": "Зберегти поточні налаштування фільтрів",
        "rcfilters-restore-default-filters": "Відновити стандартні фільтри",
        "rcfilters-clear-all-filters": "Очистити фільтри",
        "rcfilters-search-placeholder": "Фільтруйте нові редагування (переглядайте або почніть вводити)",
        "autoblocklist-submit": "Пошук",
        "autoblocklist-legend": "Вивести список автоблокувань",
        "autoblocklist-localblocks": "{{PLURAL:$1|Локальне|Локальні}} автоблокування",
+       "autoblocklist-total-autoblocks": "Загальна кількість автоблокувань: $1",
        "autoblocklist-empty": "Список автоблокувань порожній.",
        "autoblocklist-otherblocks": "{{PLURAL:$1|Інше|Інші}} автоблокування",
        "ipblocklist": "Список заблокованих адрес та користувачів",
        "rawhtml-notallowed": "Теги &lt;html&gt; не можна використовувати за межами звичайних сторінок.",
        "gotointerwiki": "Ви покидаєте сайт {{SITENAME}}",
        "gotointerwiki-invalid": "Вказана назва неприпустима.",
-       "gotointerwiki-external": "Ви збираєтесь покинути сайт {{SITENAME}}, щоб відвідати проект [[$2]], який є окремим веб-сайтом.\n\n[$1 Клацніть тут, щоб продовжити, перейшовши до $1].",
+       "gotointerwiki-external": "Ви збираєтесь покинути сайт {{SITENAME}}, щоб відвідати проект [[$2]], який є окремим веб-сайтом.\n\n'''[$1 Продовжити, перейшовши до $1]'''",
        "undelete-cantedit": "Ви не можете відновити цю сторінку, оскільки Ви не маєте прав на редагування цієї сторінки.",
-       "undelete-cantcreate": "Ви не можете відновити цю сторінку, оскільки сторінка з такою назвою не існує, і Ви не маєте прав на створення цієї сторінки."
+       "undelete-cantcreate": "Ви не можете відновити цю сторінку, оскільки сторінка з такою назвою не існує, і Ви не маєте прав на створення цієї сторінки.",
+       "pagedata-title": "Дані сторінки",
+       "pagedata-text": "Ця сторінка надає сторінкам інтерфейс даних. Будь ласка, вкажіть назву сторінки в URL-адресі, скориставшись синтаксисом підсторінок.\n* Переговори щодо контенту застосовуються на основі прийнятних форматів Вашого клієнта. Це означає, що дані сторінки будуть надані в тому форматі, якому віддає перевагу Ваш клієнт.",
+       "pagedata-not-acceptable": "Не знайдено підхожого формату. Підтримувані MIME-типи: $1",
+       "pagedata-bad-title": "Недійсна назва: $1."
 }
index 47c67ca..1ac6e04 100644 (file)
        "anontalk": "اس آئی پی پتہ کا تبادلۂ خیال",
        "navigation": "رہنمائی",
        "and": "&#32;اور",
-       "qbfind": "تلاش",
-       "qbbrowse": "مطالعہ",
-       "qbedit": "ترمیم",
-       "qbpageoptions": "یہ صفحہ",
-       "qbmyoptions": "میرے صفحات",
        "faq": "عام طور پر پوچھے جانے والے سوالات",
-       "faqpage": "Project:عمومی سوالات",
        "actions": "اقدامات",
        "namespaces": "نام فضا",
        "variants": "متغیرات",
        "edit-local": "مقامی وضاحت کی ترمیم",
        "create": "تخلیق",
        "create-local": "مقامی وضاحت کا اندراج",
-       "editthispage": "اس صفحہ میں ترمیم کریں",
-       "create-this-page": "اس صفحہ کو تخلیق کریں",
        "delete": "حذف",
-       "deletethispage": "یہ صفحہ حذف کریں",
-       "undeletethispage": "یہ صفحہ بحال کریں",
        "undelete_short": "بحال {{PLURAL:$1|ایک ترمیم|$1 ترامیم}}",
        "viewdeleted_short": "{{PLURAL:$1|ایک ترمیم حذف ہو چکی|$1 ترامیم حذف ہو چکیں}} دیکھیں",
        "protect": "محفوظ",
        "protect_change": "تبدیل کریں",
-       "protectthispage": "اس صفحے کو محفوظ کریں",
        "unprotect": "حفاظت میں تبدیلی",
-       "unprotectthispage": "اِسے صفحے کی حفاظت بدلیں",
        "newpage": "نیا صفحہ",
-       "talkpage": "اس صفحہ پر تبادلۂ خیال کریں",
        "talkpagelinktext": "تبادلۂ خیال",
        "specialpage": "خصوصی صفحہ",
        "personaltools": "ذاتی آلات",
-       "articlepage": "مندرجاتی صفحہ دیکھیے",
        "talk": "تبادلہٴ خیال",
        "views": "مشاہدات",
        "toolbox": "آلات",
        "tool-link-userrights": "حلقہ ہائے {{GENDER:$1|صارف}} میں تبدیلی",
        "tool-link-userrights-readonly": "حلقے{{GENDER:$1|}}دیکھیں",
        "tool-link-emailuser": "اس {{GENDER:$1|صارف}} کو برقی خط لکھیں",
-       "userpage": "صارف کا صفحہ دیکھیے",
-       "projectpage": "منصوبہ کا صفحہ دیکھیے",
        "imagepage": "فائل کا صفحہ دیکھیے",
        "mediawikipage": "پیغام کا صفحہ دیکھیے",
        "templatepage": "سانچہ کا صفحہ دیکھیے",
        "confirmrecreate": "آپ کی ترمیم شروع ہونے کے بعد صارف [[User:$1|$1]] ([[User talk:$1|talk]]) نے اس صفحہ کو {{GENDER:$1|حذف کر دیا}}، اس کی وجہ حسب ذیل ہے:\n: <em>$2</em>\nبراہ کرم اس بات کی تصدیق کر لیں کہ آیا آپ واقعی اس صفحہ کو دوبارہ تخلیق کرنا چاہتے ہیں یا نہیں۔",
        "confirmrecreate-noreason": "آپ کی ترمیم شروع ہونے کے بعد صارف [[User:$1|$1]] ([[User talk:$1|talk]]) نے اس صفحہ کو {{GENDER:$1|حذف کر دیا}}۔\nبراہ کرم اس بات کی تصدیق کر لیں کہ آیا آپ واقعی اس صفحہ کو دوبارہ تخلیق کرنا چاہتے ہیں یا نہیں۔",
        "recreate": "دوبارہ تخلیق کریں",
+       "confirm-purge-title": "اس صفحہ کا کیشے خالی کریں",
        "confirm_purge_button": "جی!",
        "confirm-purge-top": "اس صفحہ کا کیشے صاف کریں؟",
        "confirm-purge-bottom": "صفحہ کا کیشے صارف کرنے پر تازہ ترین نسخہ نظر آئے گا۔",
index d673d2f..744918b 100644 (file)
        "anontalk": "Thảo luận",
        "navigation": "Xem nhanh",
        "and": "&#32;và",
-       "qbfind": "Tìm kiếm",
-       "qbbrowse": "Duyệt",
-       "qbedit": "Sửa đổi",
-       "qbpageoptions": "Trang này",
-       "qbmyoptions": "Trang cá nhân",
        "faq": "Câu hỏi thường gặp",
-       "faqpage": "Project:Các câu hỏi thường gặp",
        "actions": "Tác vụ",
        "namespaces": "Không gian tên",
        "variants": "Biến thể",
        "edit-local": "Sửa miêu tả địa phương",
        "create": "Tạo",
        "create-local": "Thêm miêu tả địa phương",
-       "editthispage": "Sửa đổi trang này",
-       "create-this-page": "Tạo trang này",
        "delete": "Xóa",
-       "deletethispage": "Xóa trang này",
-       "undeletethispage": "Phục hồi trang này",
        "undelete_short": "Phục hồi {{PLURAL:$1|một sửa đổi|$1 sửa đổi}}",
        "viewdeleted_short": "Xem {{PLURAL:$1|sửa đổi|$1 sửa đổi}} đã xóa",
        "protect": "Khóa",
        "protect_change": "thay đổi",
-       "protectthispage": "Khóa trang này",
        "unprotect": "Đổi mức khóa",
-       "unprotectthispage": "Thay đổi mức khóa của trang này",
        "newpage": "Trang mới",
-       "talkpage": "Thảo luận về trang này",
        "talkpagelinktext": "Thảo luận",
        "specialpage": "Trang đặc biệt",
        "personaltools": "Công cụ cá nhân",
-       "articlepage": "Xem trang nội dung",
        "talk": "Thảo luận",
        "views": "Các hiển thị",
        "toolbox": "Công cụ",
        "tool-link-userrights": "Thay đổi nhóm {{GENDER:$1}}người dùng",
        "tool-link-userrights-readonly": "Xem {{GENDER:$1}}nhóm người dùng",
        "tool-link-emailuser": "Gửi thư cho {{GENDER:$1}}người dùng này",
-       "userpage": "Xem trang thành viên",
-       "projectpage": "Xem trang dự án",
        "imagepage": "Xem trang tập tin",
        "mediawikipage": "Thông điệp giao diện",
        "templatepage": "Xem trang bản mẫu",
        "selfredirect": "<strong>Cảnh báo:</strong> Bạn sắp đổi hướng trang này đến chính trang này.\nCó lẽ bạn đã định rõ mục tiêu sai hoặc bạn đang sửa trang sai.\nNếu bạn bấm “$1” lần nữa, trang đổi hướng sẽ được tạo ra.",
        "missingcommenttext": "Xin hãy gõ vào lời bàn luận ở dưới.",
        "missingcommentheader": "<strong>Nhắc nhở:</strong> Bạn chưa ghi chủ đề/tiêu đề cho bàn luận này.\nNếu bạn nhấn nút “$1” lần nữa, sửa đổi của bạn sẽ được lưu mà không có đề mục.",
-       "summary-preview": "Xem trước dòng tóm lược:",
+       "summary-preview": "Xem trước dòng tóm lược sửa đổi:",
        "subject-preview": "Xem trước đề mục:",
        "previewerrortext": "Có lỗi xảy ra khi xem trước những thay đổi của bạn.",
        "blockedtitle": "Thành viên bị cấm",
        "readonlywarning": "<strong>CẢNH BÁO: Cơ sở dữ liệu đã bị khóa để bảo dưỡng, do đó bạn không thể lưu các sửa đổi của mình. Bạn nên cắt-dán đoạn bạn vừa sửa vào một tập tin và lưu nó lại để sửa đổi sau này.</strong>\n\nQuản trị viên hệ thống khi khóa dữ liệu đã đưa ra lý do: $1",
        "protectedpagewarning": "'''Cảnh báo: Trang này đã bị khóa và chỉ có các thành viên có quyền quản lý mới có thể sửa được.'''\nThông tin mới nhất trong nhật trình được ghi dưới đây để tiện theo dõi:",
        "semiprotectedpagewarning": "'''Lưu ý:''' Trang này đã bị khóa nên chỉ có các thành viên có tài khoản mới có thể sửa đổi được.\nThông tin mới nhất trong nhật trình được ghi dưới đây để tiện theo dõi:",
-       "cascadeprotectedwarning": "'''Cảnh báo:''' Trang này đã bị khóa, chỉ có thành viên có quyền quản lý mới có thể sửa đổi được, vì nó được nhúng vào {{PLURAL:$1|trang|những trang}} bị khóa theo tầng sau:",
+       "cascadeprotectedwarning": "'''Cảnh báo:''' Trang này đã bị khóa, chỉ có thành viên có [[Special:ListGroupRights|quyền quản lý]] mới có thể sửa đổi, vì nó được nhúng vào {{PLURAL:$1|trang|những trang}} bị khóa theo tầng sau:",
        "titleprotectedwarning": "'''Cảnh báo:  Trang này đã bị khóa và bạn phải có một số [[Special:ListGroupRights|quyền nhất định]] mới có thể tạo trang.'''\nThông tin mới nhất trong nhật trình được ghi dưới đây để tiện theo dõi:",
        "templatesused": "{{PLURAL:$1|Bản mẫu|Các bản mẫu}} dùng trong trang này:",
        "templatesusedpreview": "{{PLURAL:$1|Bản mẫu|Các bản mẫu}} sẽ được dùng trong trang này:",
        "post-expand-template-argument-warning": "Cảnh báo: Trang này có chứa ít nhất một tham số bản mẫu có kích thước bung ra quá lớn.\nNhững tham số này sẽ bị bỏ đi.",
        "post-expand-template-argument-category": "Trang có chứa tham số bản mẫu bị loại bỏ",
        "parser-template-loop-warning": "Phát hiện bản mẫu lặp vòng: [[$1]]",
+       "template-loop-category": "Trang có bản mẫu lặp vòng",
+       "template-loop-category-desc": "Trang chứa một hoặc nhiều bản mẫu lặp vòng, tức là những bản mẫu tự gọi đệ quy chính nó.",
        "parser-template-recursion-depth-warning": "Bản mẫu đã vượt quá giới hạn về độ sâu đệ quy ($1)",
        "language-converter-depth-warning": "Đã vượt quá giới hạn độ sâu của bộ chuyển đổi ngôn ngữ ($1)",
        "node-count-exceeded-category": "Trang có số nốt vượt quá giới hạn cho phép",
        "page_first": "đầu",
        "page_last": "cuối",
        "histlegend": "Chọn so sánh: Đánh dấu để chọn các phiên bản để so sánh rồi nhấn Enter hoặc nút ở dưới.<br />\nChú giải: '''({{int:cur}})''' = khác với phiên bản hiện hành, '''({{int:last}})''' = khác với phiên bản trước, '''{{int:minoreditletter}}''' = sửa đổi nhỏ.",
-       "history-fieldset-title": "Tìm trong lịch sử",
-       "history-show-deleted": "Chỉ bị xóa",
+       "history-fieldset-title": "Tìm trong lịch sử trang",
+       "history-show-deleted": "Chỉ những sửa đổi bị xóa",
        "histfirst": "cũ nhất",
        "histlast": "mới nhất",
        "historysize": "({{PLURAL:$1|1 byte|$1 byte}})",
        "search-file-match": "(khớp nội dung tập tin)",
        "search-suggest": "Có phải bạn muốn tìm: $1",
        "search-rewritten": "Đang xem các kết quả cho $1. Tìm kiếm cho $2 thay thế.",
-       "search-interwiki-caption": "Các dự án liên quan",
+       "search-interwiki-caption": "Kết quả từ các dự án liên quan",
        "search-interwiki-default": "Kết quả từ $1:",
        "search-interwiki-more": "(thêm)",
        "search-interwiki-more-results": "thêm kết quả",
        "saveusergroups": "Lưu nhóm {{GENDER:$1}}người dùng",
        "userrights-groupsmember": "Thuộc nhóm:",
        "userrights-groupsmember-auto": "Ngầm thuộc nhóm:",
-       "userrights-groups-help": "Bạn có thể xếp thành viên này vào nhóm khác:\n* Hộp kiểm được đánh dấu có nghĩa rằng thành viên thuộc về nhóm đó.\n* Hộp không được đánh dấu có nghĩa rằng thành viên không thuộc về nhóm đó.\n* Dấu * có nghĩa là bạn sẽ không thể loại thành viên ra khỏi nhóm một khi bạn đã đưa thành viên vào, hoặc ngược lại.\n* Dấu # có nghĩa là bạn chỉ có thể trì hoãn thời hạn của nhóm này; bạn không thể đẩy sớm thời hạn.",
+       "userrights-groups-help": "Bạn có thể thay đổi các nhóm người dùng của thành viên này:\n* Hộp kiểm được đánh dấu có nghĩa rằng thành viên thuộc về nhóm đó.\n* Hộp không được đánh dấu có nghĩa rằng thành viên không thuộc về nhóm đó.\n* Dấu * có nghĩa là bạn sẽ không thể xoá thành viên ra khỏi nhóm này một khi bạn đã thêm họ vào, hoặc ngược lại.\n* Dấu # có nghĩa là bạn chỉ có thể giảm thời hạn thành viên được ở trong nhóm này; bạn không thể tăng thời hạn đó lên được.",
        "userrights-reason": "Lý do:",
        "userrights-no-interwiki": "Bạn không có quyền thay đổi quyền hạn của thành viên tại các wiki khác.",
        "userrights-nodatabase": "Cơ sở dữ liệu $1 không tồn tại hoặc nằm ở bên ngoài.",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "Xem",
        "rcfilters-activefilters": "Bộ lọc hiện hành",
+       "rcfilters-savedqueries-setdefault": "Đặt làm mặc định",
+       "rcfilters-savedqueries-unsetdefault": "Loại bỏ mặc định",
        "rcfilters-restore-default-filters": "Mặc định lại các bộ lọc",
        "rcfilters-clear-all-filters": "Xóa sạch các bộ lọc",
        "rcfilters-search-placeholder": "Lọc các thay đổi gần đây (duyệt hoặc bắt đầu đánh chữ)",
        "rcfilters-invalid-filter": "Bộ lọc không hợp lệ",
        "rcfilters-empty-filter": "Không có bộ lọc hiện hành. Tất cả các đóng góp được hiển thị.",
        "rcfilters-filterlist-title": "Bộ lọc",
+       "rcfilters-highlightbutton-title": "Làm nổi bật kết quả",
+       "rcfilters-highlightmenu-title": "Chọn màu",
+       "rcfilters-highlightmenu-help": "Chọn màu để làm nổi bật thuộc tính này",
        "rcfilters-filterlist-noresults": "Không tìm thấy bộ lọc",
+       "rcfilters-noresults-conflict": "Không tìm thấy kết quả nào do tiêu chí tìm kiếm đang bị mâu thuẫn",
        "rcfilters-filtergroup-registration": "Trạng thái đăng ký thành viên",
        "rcfilters-filter-registered-label": "Đã đăng ký",
        "rcfilters-filter-registered-description": "Người dùng đã đăng nhập.",
        "rcfilters-filter-unregistered-label": "Vô danh",
        "rcfilters-filter-unregistered-description": "Người dùng chưa đăng nhập.",
        "rcfilters-filtergroup-authorship": "Người sửa đổi",
-       "rcfilters-filter-editsbyself-label": "Bạn",
-       "rcfilters-filter-editsbyself-description": "Các sửa đổi của bạn.",
-       "rcfilters-filter-editsbyother-label": "Người khác",
+       "rcfilters-filter-editsbyself-label": "Sửa đổi của bạn",
+       "rcfilters-filter-editsbyself-description": "Các sửa đổi do bạn tạo ra.",
+       "rcfilters-filter-editsbyother-label": "Sửa đổi của người khác",
        "rcfilters-filter-editsbyother-description": "Các sửa đổi của người khác.",
        "rcfilters-filtergroup-userExpLevel": "Trình độ (chỉ người dùng đã đăng ký)",
        "rcfilters-filter-user-experience-level-newcomer-label": "Người mới đến",
        "rcfilters-filter-bots-description": "Các sửa đổi của công cụ tự động.",
        "rcfilters-filter-humans-label": "Con người (không phải bot)",
        "rcfilters-filter-humans-description": "Các sửa đổi của người thật.",
+       "rcfilters-filtergroup-reviewstatus": "Tình trạng tuần tra",
+       "rcfilters-filter-patrolled-label": "Đã được tuần tra",
+       "rcfilters-filter-patrolled-description": "Các sửa đổi đã được đánh dấu tuần tra.",
+       "rcfilters-filter-unpatrolled-label": "Chưa được tuần tra",
+       "rcfilters-filter-unpatrolled-description": "Các sửa đổi chưa được đánh dấu tuần tra.",
        "rcfilters-filtergroup-significance": "Sự quan trọng",
        "rcfilters-filter-minor-label": "Sửa đổi nhỏ",
        "rcfilters-filter-minor-description": "Các sửa đổi được tác giả đánh dấu là nhỏ.",
        "rcfilters-filter-major-label": "Sửa đổi không nhỏ",
        "rcfilters-filter-major-description": "Các sửa đổi không được tác giả đánh dấu là nhỏ.",
+       "rcfilters-filtergroup-watchlist": "Các trang theo dõi",
+       "rcfilters-filter-watchlist-watched-label": "Nằm trong danh sách theo dõi",
+       "rcfilters-filter-watchlist-watched-description": "Thay đổi trên các trang nằm trong danh sách theo dõi của bạn.",
+       "rcfilters-filter-watchlist-watchednew-label": "Các sửa đổi mới trong danh sách theo dõi",
+       "rcfilters-filter-watchlist-watchednew-description": "Thay đổi mới trên các trang nằm trong danh sách theo dõi kể từ lần cuối bạn xem trang đó.",
+       "rcfilters-filter-watchlist-notwatched-label": "Không trong danh sách theo dõi",
+       "rcfilters-filter-watchlist-notwatched-description": "Sửa đổi trên các trang không nằm trong danh sách theo dõi của bạn.",
        "rcfilters-filtergroup-changetype": "Kiểu thay đổi",
        "rcfilters-filter-pageedits-label": "Sửa đổi trang",
-       "rcfilters-filter-pageedits-description": "Các sửa đổi đối với nội dung, thảo luận, miêu tả thể loại, …",
+       "rcfilters-filter-pageedits-description": "Các sửa đổi đối với nội dung wiki, các trang thảo luận, các miêu tả thể loại…",
        "rcfilters-filter-newpages-label": "Tạo trang",
        "rcfilters-filter-newpages-description": "Các sửa đổi tạo trang mới.",
        "rcfilters-filter-categorization-label": "Thay đổi thể loại",
        "rcfilters-filter-categorization-description": "Các tác vụ xếp trang vào thể loại hoặc gỡ trang khỏi thể loại.",
        "rcfilters-filter-logactions-label": "Tác vụ được ghi trong nhật trình",
-       "rcfilters-filter-logactions-description": "Các tác vụ bảo quản, mở tài khoản, xóa trang, tải lên, …",
+       "rcfilters-filter-logactions-description": "Các tác vụ bảo quản, mở tài khoản, xóa trang, tải lên…",
+       "rcfilters-hideminor-conflicts-typeofchange-global": "Bộ lọc \"Các sửa đổi nhỏ\" mâu thuẫn với một hoặc nhiều bộ lọc Loại sửa đổi, bởi có một số loại sửa đổi không thể được đánh dấu là \"nhỏ\". Các bộ lọc mâu thuẫn với nhau được đánh dấu trong mục Bộ lọc hiện hành ở trên.",
+       "rcfilters-hideminor-conflicts-typeofchange": "Một số loại sửa đổi không thể được đánh dấu là \"nhỏ\", do đó bộ lọc này mâu thuẫn với các bộ lọc Loại sửa đổi dưới đây: $1",
+       "rcfilters-typeofchange-conflicts-hideminor": "Bộ lọc Loại sửa đổi này mâu thuẫn với bộ lọc \"Các sửa đổi nhỏ\". Có một số loại sửa đổi không thể được đánh dấu là \"nhỏ\".",
+       "rcfilters-filtergroup-lastRevision": "Phiên bản mới nhất",
+       "rcfilters-filter-lastrevision-label": "Phiên bản mới nhất",
+       "rcfilters-filter-lastrevision-description": "Sửa đổi mới nhất trên một trang.",
+       "rcfilters-filter-previousrevision-label": "Các sửa đổi trước",
+       "rcfilters-filter-previousrevision-description": "Tất cả các sửa đổi không phải là sửa đổi mới nhất của trang.",
        "rcnotefrom": "Dưới đây là {{PLURAL:$5|thay đổi duy nhất|các thay đổi}} từ <strong>$3 $4</strong> (hiển thị tối đa <strong>$1</strong> thay đổi).",
+       "rclistfromreset": "Đặt lại lựa chọn ngày",
        "rclistfrom": "Xem các thay đổi từ $2 $3 trở về sau",
        "rcshowhideminor": "$1 sửa đổi nhỏ",
        "rcshowhideminor-show": "Hiện",
        "php-uploaddisabledtext": "Việc tải tập tin trong PHP đã bị tắt. Xin hãy kiểm tra lại thiết lập file_uploads.",
        "uploadscripted": "Tập tin này có chứa mã HTML hoặc kịch bản có thể khiến trình duyệt web thông dịch sai.",
        "upload-scripted-pi-callback": "Không thể tải lên một tập tin có chứa lệnh xử lý xml-stylesheet.",
+       "upload-scripted-dtd": "Không thể tải lên các tập tin SVG chứa khai báo DTD không đúng chuẩn.",
        "uploaded-script-svg": "Tìm thấy phần tử “$1” có khả năng chạy kịch bản trong tập tin SVG được tải lên.",
        "uploaded-hostile-svg": "Tìm thấy CSS nguy hiểm trong phần tử style của tập tin SVG được tải lên.",
        "uploaded-event-handler-on-svg": "Không cho phép đặt thuộc tính xử lý sự kiện <code>$1=\"$2\"</code> trong tập tin SVG.",
        "unblocked-id": "$1 đã hết bị cấm",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] đã được bỏ cấm.",
        "blocklist": "Người dùng bị cấm",
+       "autoblocklist": "Các lệnh cấm tự động",
+       "autoblocklist-submit": "Tìm kiếm",
        "ipblocklist": "Người dùng bị cấm",
        "ipblocklist-legend": "Tìm một thành viên bị cấm",
        "blocklist-userblocks": "Ẩn tác vụ cấm tài khoản",
        "confirmrecreate-noreason": "Người dùng [[User:$1|$1]] ([[User talk:$1|talk]]) xóa trang này sau khi bạn bắt đầu sửa đổi nó. Bạn có chắc chắn muốn tạo lại trang này không?",
        "recreate": "Tạo ra lại",
        "unit-pixel": "điểm ảnh",
+       "confirm-purge-title": "Làm mới trang này",
        "confirm_purge_button": "Làm tươi",
        "confirm-purge-top": "Làm sạch vùng nhớ đệm của trang này?",
        "confirm-purge-bottom": "Làm mới một trang sẽ giúp xóa bộ đệm và buộc hiển thị phiên bản gần nhất.",
        "htmlform-user-not-valid": "<strong>$1</strong> không phải là tên người dùng.",
        "logentry-delete-delete": "$1 {{GENDER:$2}}đã xóa trang “$3”",
        "logentry-delete-delete_redir": "$1 {{GENDER:$2}}đã xóa trang đổi hướng $3 bằng cách ghi đè",
-       "logentry-delete-restore": "$1 {{GENDER:$2}}đã phục hồi trang “$3”",
+       "logentry-delete-restore": "$1 {{GENDER:$2}}đã phục hồi trang $3 ($4)",
        "logentry-delete-event": "$1 {{GENDER:$2}}đã thay đổi mức hiển thị của {{PLURAL:$5|một mục nhật trình|$5 mục nhật trình}} về $3: $4",
        "logentry-delete-revision": "$1 {{GENDER:$2}}đã thay đổi mức hiển thị của {{PLURAL:$5|một phiên bản|$5 phiên bản}} trang $3: $4",
        "logentry-delete-event-legacy": "$1 {{GENDER:$2}}đã thay đổi mức hiển thị của các mục nhật trình về $3",
        "mw-widgets-titleinput-description-redirect": "đổi hướng đến $1",
        "mw-widgets-categoryselector-add-category-placeholder": "Thêm thể loại…",
        "mw-widgets-usersmultiselect-placeholder": "Thêm nữa…",
+       "date-range-from": "Từ ngày:",
+       "date-range-to": "Đến ngày:",
        "sessionmanager-tie": "Không thể kết hợp nhiều yêu cầu xác thực loại: $1.",
        "sessionprovider-generic": "phiên $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "phiên dựa trên cookie",
        "restrictionsfield-label": "Các dải IP được cho phép:",
        "restrictionsfield-help": "Mỗi dòng một địa chỉ IP hoặc dải CIDR. Để kích hoạt tất cả mọi địa chỉ IP, sử dụng:<pre>0.0.0.0/0\n::/0</pre>",
        "revid": "phiên bản $1",
-       "pageid": "số trang $1"
+       "pageid": "số trang $1",
+       "gotointerwiki": "Rời khỏi {{SITENAME}}",
+       "gotointerwiki-invalid": "Tên trang chỉ định không hợp lệ.",
+       "pagedata-title": "Dữ liệu về trang",
+       "pagedata-not-acceptable": "Không tìm thấy định dạng phù hợp. Các kiểu MIME được hỗ trợ: $1",
+       "pagedata-bad-title": "Tiêu đề không hợp lệ: $1."
 }
index 8457f35..afa9d5c 100644 (file)
        "anontalk": "שמועס",
        "navigation": "נאַוויגאַציע",
        "and": "&#32;און",
-       "qbfind": "טרעף",
-       "qbbrowse": "בלעטערן",
-       "qbedit": "ענדערן",
-       "qbpageoptions": "דער בלאט",
-       "qbmyoptions": "מיינע בלעטער",
        "faq": "מערסטע געפרעגטע פראגעס",
-       "faqpage": "Project:מערסטע געפרעגט פראגעס",
        "actions": "אַקציעס",
        "namespaces": "נאָמענטיילן",
        "variants": "װאַריאַנטן",
        "edit-local": "רעדאקטירן לאקאלע באשרײַבונג",
        "create": "שאַפֿן",
        "create-local": "צולייגן לאקאלע באשרײַבונג",
-       "editthispage": "ענדערן דעם בלאט",
-       "create-this-page": "שאַפֿן דעם בלאַט",
        "delete": "אויסמעקן",
-       "deletethispage": "אויסמעקן דעם בלאַט",
-       "undeletethispage": "צוריקשטעלן דעם בלאט",
        "undelete_short": "צוריקשטעלן {{PLURAL:$1|איין רעדאַקטירונג|$1 רעדאַקטירונגען}}",
        "viewdeleted_short": "באַקוקן {{PLURAL:$1|איין געמעקטע ענדערונג|$1 געמעקטע ענדערונגען}}",
        "protect": "באשיצן",
        "protect_change": "טוישן",
-       "protectthispage": "באשיץ דעם בלאט",
        "unprotect": "ענדערונג באַשיצונג",
-       "unprotectthispage": "ענדערן באַשיצונג פון דעם בלאַט",
        "newpage": "נייער בלאַט",
-       "talkpage": "שמועסט איבער דעם בלאט",
        "talkpagelinktext": "שמועס",
        "specialpage": "ספעציעלער בלאט",
        "personaltools": "פערזענלעכע געצייג",
-       "articlepage": "זען אינהאַלט בלאַט",
        "talk": "שמועס",
        "views": "קוקן",
        "toolbox": "געצייג",
        "tool-link-userrights": "ענדערן {{GENDER:$1|באַניצער}} גרופעס",
        "tool-link-userrights-readonly": "באקוקן {{GENDER:$1|באַניצער}} גרופעס",
        "tool-link-emailuser": "שיקן {{GENDER:$1|דעם באניצער|די באניצערין}} ע־פאסט",
-       "userpage": "זען באַניצער בלאַט",
-       "projectpage": "זען פראיעקט בלאַט",
        "imagepage": "זען טעקע בלאט",
        "mediawikipage": "זען מעלדונג בלאַט",
        "templatepage": "זעט מוסטער בלאט",
        "page-atom-feed": "Atom פֿון $1",
        "feed-atom": "אטאם",
        "feed-rss": "אר.עס.עס.",
-       "red-link-title": "$1 (בלאט טוט נאָך נישט עקזיסטירן)",
+       "red-link-title": "$1 (בלאַט עקזיסטירט נאָך נישט)",
        "sort-descending": "סארטירן אַראָפ",
        "sort-ascending": "סארטירן אַרויף",
        "nstab-main": "בלאַט",
        "passwordreset-nocaller": "מען דארף פֿארזארגן א רופֿער",
        "passwordreset-nosuchcaller": "רופֿער איז נישט פֿאראן: $1",
        "passwordreset-invalidemail": "אומגילטיקער ע־פאסט אדרעס",
+       "passwordreset-nodata": "מ׳האט נישט פֿארזארגט נישט קיין באניצער־נאמען און נישט קיין ע־פאסט אדרעס",
        "changeemail": "ענדערן אדער אראפנעמען ע-פּאָסט אַדרעס",
        "changeemail-header": "דערגאַנצט די פֿאָרעם צו ענדערן אייער ע-פּאָסט אַדרעס .\nטאמער ווילט איר אראפנעמען די צוארדנונג פון איינעם פון אייערע ע־פאסט אדרעסן פו אייער קאנטע, לאזט ליידיג דעם נייעם ע־פאסט אדרעס ווען איר גיט איין די פֿארעם.",
        "changeemail-no-info": "איר דאַרפֿט זיין אַרײַנלאגירט צוצוקומען גלײַך צו דעם דאָזיגן בלאַט.",
        "right-createpage": "שאַפֿן בלעטער (וואָס זענען נישט שמועס בלעטער)",
        "right-createtalk": "שאַפֿן שמועס בלעטער",
        "right-createaccount": "שאַפֿן נײַע באַניצער קאנטעס",
+       "right-autocreateaccount": "אריינלאגירן אויטאמאטיש מיט א דרויסנדיקער באניצער־קאנטע",
        "right-minoredit": "צייכן רעדאקטירונגען אלס  מינערדיק",
        "right-move": "באוועג בלעטער",
        "right-move-subpages": "באַוועגן בלעטער מיט זייערע אונטערבלעטער",
        "recentchanges-legend-plusminus": "(''±123'')",
        "recentchanges-submit": "ווייזן",
        "rcfilters-activefilters": "אַקטיווע פילטערס",
+       "rcfilters-quickfilters": "אויפֿגעהיטענע פֿילטער־שטעלונגען",
+       "rcfilters-quickfilters-placeholder-title": "קיין לינקען נאך נישט אויפֿגעהיטן",
+       "rcfilters-savedqueries-defaultlabel": "אױפֿגעהיטענע פֿילטערס",
        "rcfilters-savedqueries-rename": "ענדערן נאמען",
        "rcfilters-savedqueries-setdefault": "האלטן ווי גרונט",
        "rcfilters-savedqueries-remove": "אראפנעמען",
        "rcfilters-savedqueries-new-name-label": "נאָמען",
        "rcfilters-savedqueries-cancel-label": "אַנולירן",
+       "rcfilters-search-placeholder": "פֿילטערן לעצטיקע ענדערונגען (דורכקוקן אדער אָנהייבן אַריינקלאַפן)",
        "rcfilters-invalid-filter": "אומגילטיגער פֿילטער",
        "rcfilters-empty-filter": "קיין אַקטיווע פילטערס. אלע ביישטייערונגען געוויזן.",
        "rcfilters-filterlist-title": "פֿילטערס",
        "rcfilters-filterlist-whatsthis": "וואס איז דאס?",
        "rcfilters-filterlist-noresults": "קיין פֿילטערס נישט געטראפֿן",
+       "rcfilters-filter-registered-label": "אײַנגעשריבן",
+       "rcfilters-filter-editsbyself-label": "ענדערונגען פון אייך",
+       "rcfilters-filter-editsbyself-description": "אייערע אייגענע בײשטײערונגען.",
+       "rcfilters-filter-editsbyother-label": "ענדערונגען פֿון אנדערע",
+       "rcfilters-filter-editsbyother-description": "אלע ענדערונגען אחוץ אייערע אייגענע.",
+       "rcfilters-filter-user-experience-level-learner-label": "לערנער",
        "rcfilters-filter-bots-label": "באט",
+       "rcfilters-filter-humans-label": "מענטש (נישט קיין באט)",
+       "rcfilters-filter-humans-description": "רעדאקטירונגען געמאכט פון מענטשן רעדאקטארן.",
+       "rcfilters-filtergroup-reviewstatus": "רעצענזירונג־סטאטוס",
+       "rcfilters-filter-patrolled-label": "פאטראלירט",
        "rcfilters-filter-newpages-label": "בלאַט־שאַפֿונגען",
+       "rcfilters-filtergroup-lastRevision": "לעצטע ווערסיע",
+       "rcfilters-filter-lastrevision-label": "לעצטע ווערסיע",
        "rcnotefrom": "פֿאלגנד {{PLURAL:$5|איז די ענדערונג| זענען די ענדערונגען}} זײַט <strong>$3, $4</strong> (ביז <strong>$1</strong>).",
        "rclistfrom": "װײַזן נײַע ענדערונגען פֿון $3 $2",
        "rcshowhideminor": "$1 מינערדיגע ענדערונגען",
        "uploadstash-nofiles": "איר האט נישט קיין טעקעס אין זאפאס.",
        "uploadstash-errclear": "אוועקנעמען די טעקעס דורכגעפאלן.",
        "uploadstash-refresh": "דערפֿרישן די רשימה פון טעקעס",
+       "uploadstash-thumbnail": "באקוקן קליינבילד",
        "invalid-chunk-offset": "אומגילטיקער סטארטפונקט",
        "img-auth-accessdenied": "צוטריט אָפגעזאָגט",
        "img-auth-notindir": "געשיכטעס שטעג איז נישט אין דער קאנפיגורטער ארויפלאד־דירעקטאריע.",
        "tooltip-pt-mytalk": "{{GENDER:|אייער}} שמועס בלאט",
        "tooltip-pt-anontalk": "שמועס איבער באטייליגען פון די איי.פי.",
        "tooltip-pt-preferences": "{{GENDER:|אייערע}} פרעפערענצן",
-       "tooltip-pt-watchlist": "ליסטע פון בלעטער וואס איר טוט אויפפאסן נאך ענדערונגן",
+       "tooltip-pt-watchlist": "ליסטע פון בלעטער וואס איר טוט אויפפאסן נאָך ענדערונגען",
        "tooltip-pt-mycontris": "ליסטע פון {{GENDER:|אייערע}} ביישטייערונגען",
        "tooltip-pt-login": "עס איז רעקאָמענדירט זיך אײַנשרײַבן; ס'איז אבער נישט קיין פֿליכט",
        "tooltip-pt-logout": "ארויסלאגירן",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|האט געביטן}} גרופע מיטגלידערשאפט פאר $3",
        "logentry-rights-autopromote": "$1 אויטאמאטיש  {{GENDER:$2|פראמאווירט}} פון $4 צו $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|האט ארויפגעלאדן}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|האט ארויפֿגעלאדן}} א נייע ווערסיע פֿון $3",
        "rightsnone": "(גארנישט)",
        "feedback-adding": "צולייגן פֿידבעק צו בלאַט...",
        "feedback-bugcheck": "געוואלדיק! אבער זייט בודק אז עס איז נישט איינער פון די [$1 באוואוסטע באגן].",
        "special-characters-title-endash": "ען טירע",
        "special-characters-title-emdash": "עם טירע",
        "special-characters-title-minus": "מינוס",
-       "mw-widgets-titleinput-description-new-page": "דער בלאט עקזיסטירט נאך נישט",
+       "mw-widgets-titleinput-description-new-page": "דער בלאַט עקזיסטירט נאך נישט",
        "date-range-from": "פֿון דאטע",
        "date-range-to": "ביז דאטע:",
+       "randomrootpage": "צופֿעליגער שטאם־בלאט",
        "log-action-filter-upload": "טיפ ארויפֿלאד:",
        "log-action-filter-all": "אַלע",
        "log-action-filter-delete-delete": "אויסמעקן בלאט",
index 2774757..8902585 100644 (file)
        "anontalk": "傾偈",
        "navigation": "導覽",
        "and": "同埋",
-       "qbfind": "搵嘢",
-       "qbbrowse": "瀏覽",
-       "qbedit": "編輯",
-       "qbpageoptions": "呢一頁",
-       "qbmyoptions": "我嘅選項",
        "faq": "FAQ",
-       "faqpage": "Project:FAQ",
        "actions": "動作",
        "namespaces": "空間名",
        "variants": "變換",
        "edit-local": "改本地說明",
        "create": "開",
        "create-local": "加本地說明",
-       "editthispage": "改呢版",
-       "create-this-page": "建立呢頁",
        "delete": "剷走",
-       "deletethispage": "剷走呢版",
-       "undeletethispage": "反刪呢一版",
        "undelete_short": "取消剷走$1次修改",
        "viewdeleted_short": "去睇$1次刪除咗嘅修改",
        "protect": "保護",
        "protect_change": "改",
-       "protectthispage": "保護呢頁",
        "unprotect": "改保護",
-       "unprotectthispage": "改呢版保護",
        "newpage": "開新頁",
-       "talkpage": "討論呢版",
        "talkpagelinktext": "傾偈",
        "specialpage": "特別頁",
        "personaltools": "個人工具",
-       "articlepage": "睇目錄",
        "talk": "討論",
        "views": "去睇",
        "toolbox": "架撐",
        "tool-link-userrights": "改{{GENDER:$1|用戶}}組",
        "tool-link-userrights-readonly": "睇{{GENDER:$1|用戶}}組",
        "tool-link-emailuser": "電郵畀呢個{{GENDER:$1|用戶}}",
-       "userpage": "去睇用戶頁",
-       "projectpage": "去睇專題頁",
        "imagepage": "去睇檔案頁",
        "mediawikipage": "去睇信息頁",
        "templatepage": "去睇模頁",
        "changepassword-throttled": "你已經試咗太多次簽到動作。\n請等$1再試過。",
        "botpasswords": "機械人密碼",
        "botpasswords-disabled": "唔俾用機械人密碼。",
+       "botpasswords-no-central-id": "要用機械人密碼,你一定要簽到集中戶口。",
        "botpasswords-existing": "而家已經有嘅機械人密碼",
        "botpasswords-createnew": "整一個新嘅機械人密碼",
+       "botpasswords-editexisting": "改已經有嘅機械人密碼",
+       "botpasswords-label-appid": "機械人名:",
        "botpasswords-label-create": "創造",
        "botpasswords-label-update": "上載",
        "botpasswords-label-cancel": "取消",
        "botpasswords-label-delete": "刪除",
        "botpasswords-label-resetpassword": "改過個個密碼",
+       "botpasswords-label-grants": "啱用嘅授權:",
+       "botpasswords-label-grants-column": "授咗權",
+       "botpasswords-bad-appid": "機械人名 \"$1\" 無效。",
+       "botpasswords-insert-failed": "加機械人名 \"$1\" 衰咗。係咪之前已經加咗?",
+       "botpasswords-update-failed": "更新機械人名 \"$1\" 衰咗。係咪之前已經剷走咗?",
        "botpasswords-created-title": "生成咗機械人密碼",
+       "botpasswords-created-body": "用戶 \"$2\" 嘅機械人 \"$1\" 嘅密碼已經開咗。",
        "botpasswords-updated-title": "改咗機械人密碿",
+       "botpasswords-updated-body": "用戶 \"$2\" 嘅機械人 \"$1\" 嘅密碼已經更新咗。",
        "botpasswords-deleted-title": "鏟咗機械人密碼",
+       "botpasswords-deleted-body": "用戶 \"$2\" 嘅機械人 \"$1\" 嘅密碼已經剷走咗。",
        "botpasswords-restriction-failed": "機械人密碼限制令到呢次簽到失敗。",
        "botpasswords-invalid-name": "呢個用戶名無機械人密碼分隔字(「$1」)",
        "resetpass_forbidden": "唔可以更改密碼",
        "passwordreset-emailtext-user": "{{SITENAME}}用戶$1請求更改閣下喺{{SITENAME}}道嘅密碼$4。同爾個電子郵件有關聯嘅用戶包括:\n\n$2\n\n{{PLURAL:$3|爾個|爾啲}}臨時密碼會喺{{$5}}日之後失效。\n\n如果係閣下自己請求改密碼嘅,請馬上登錄{{SITENAME}}並且更改密碼。如果閣下諗返起自己個密碼,或者根本無申請過改密碼嘅話,請忽略爾條訊息,繼續用返舊密碼。",
        "passwordreset-emailelement": "用戶名:\n$1\n\n臨時密碼:\n$2",
        "passwordreset-emailsentemail": "若果你個戶口有登記電郵,密碼重設電郵經已送出。",
+       "passwordreset-invalidemail": "無效嘅電郵地址",
+       "passwordreset-nodata": "漏咗畀用戶名同電郵地址",
        "changeemail": "改或者剷走電郵地址",
        "changeemail-header": "填好呢份表去改戶口電郵地址。若果你想剷走你戶口個電郵地址,填表時請將電郵地址欄留空。",
        "changeemail-no-info": "你一定要簽到咗去直接入來呢一版。",
        "preview": "預覽",
        "showpreview": "顯示預覽",
        "showdiff": "顯示差異",
-       "blankarticle": "<strong>警告</strong>:閣下開緊爾版係空白嘅撳多次「$1」就會開一個乜都無嘅版(可能被視為破壞)。",
+       "blankarticle": "<strong>警告</strong>:閣下開緊爾版係空白嘅。\n撳多次「$1」就會開一個乜都無嘅版(可能被視為破壞)。",
        "anoneditwarning": "'''警告:'''閣下重未登入。閣下嘅 IP 地址會喺爾一版嘅修訂歷史裡邊記錄落嚟。",
        "anonpreviewwarning": "''你重未登入,你嘅 IP 位址會喺呢個頁面嘅修訂歷史中記錄落嚟。''",
        "missingsummary": "'''提醒:''' 你未提供編輯摘要。如果你再撳多一下「$1」嘅話,咁你儲存嘅編輯就會無摘要。",
        "accmailtext": "「[[User talk:$1|$1]]」嘅隨機產生密碼已經寄咗去 $2。\n\n呢個密碼可以響簽到咗之後嘅<em>[[Special:ChangePassword|改密碼]]</em> 版度改佢。",
        "newarticle": "(新)",
        "newarticletext": "你連連過嚟嘅頁面重未存在。\n要起版新嘅,請你喺下面嗰格度輸入。(睇睇[$1 自助版]拎多啲資料。)\n如果你係唔覺意嚟到呢度,撳一次你個瀏覽器'''返轉頭'''個掣。",
-       "anontalkpagetext": "----''呢度係匿名用戶嘅討論頁,佢可能係重未開戶口,或者佢重唔識開戶口。我哋會用數字表示嘅IP地址嚟代表佢。一個IP地址係可以由幾個用戶夾來用。如果你係匿名用戶,同覺得呢啲留言係同你冇關係嘅話,唔該去[[Special:CreateAccount|開一個新戶口]]或[[Special:UserLogin|登入]],避免喺以後嘅留言會同埋其它用戶混淆。''",
+       "anontalkpagetext": "----\n<em>呢度係匿名用戶嘅討論頁,佢可能係重未開戶口,或者佢重唔識開戶口。</em>\n我哋會用數字表示嘅IP地址嚟代表佢。\n一個IP地址係可以由幾個用戶夾來用。\n如果你係匿名用戶,同覺得呢啲留言係同你冇關係嘅話,唔該去[[Special:CreateAccount|開一個新戶口]]或[[Special:UserLogin|登入]],避免喺以後嘅留言會同埋其它用戶混淆。",
        "noarticletext": "喺呢一頁而家並冇任何嘅文字,你可以喺其它嘅頁面中[[Special:Search/{{PAGENAME}}|搵呢一頁嘅標題]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搵有關嘅日誌],\n或者[{{fullurl:{{FULLPAGENAME}}|action=edit}} 編輯呢一版]</span>。",
        "noarticletext-nopermission": "呢一頁而家冇任何文字,你可以喺其它嘅頁面中[[Special:Search/{{PAGENAME}}|搵呢一頁嘅標題]],或者<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搵有關嘅日誌]</span>。",
        "missing-revision": "The revision #$1 of the page named \"{{FULLPAGENAME}}\" does not exist.\n\nThis is usually caused by following an outdated history link to a page that has been deleted.\nDetails can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log].\n\n《{{FULLPAGENAME}}》嘅編輯#$1唔存在。\n\n恁通常係因為一條過徂時嘅鏈接帶徂閣下去一個已經刪除徂嘅版。\n詳情請查閱[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪文紀錄]。",
        "userpage-userdoesnotexist": "用戶戶口\"<nowiki>$1</nowiki>\"重未開。請響䦒/編輯呢版之前先檢查一下。",
        "userpage-userdoesnotexist-view": "用戶戶口\"$1\"重未開。",
        "blocked-notice-logextract": "呢位用戶而家被封鎖緊。\n下面有最近嘅封鎖紀錄以供參考:",
-       "clearyourcache": "<strong>注意</strong>:喺儲存之後,你可能要先略過你嘅瀏覽器快取去睇到更改。\n*<strong>Firefox / Safari:</strong> 㩒住<em>Shift<em>掣再撳<em>重新載入</em>,又或者㩒<em>Ctrl-F5</em>或者<em>Ctrl-R</em>(喺Mac㩒<em>Command-R</em>掣);\n*<strong>Google Chrome:</strong> 㩒<em>Ctrl-Shift-R</em>(喺Mac㩒<em>Command-R</em>掣);\n*<strong>Internet Explorer:</strong> 㩒住<em>Ctrl</em>掣再撳<em>重新整理</em>,又或者㩒<em>Ctrl-F5</em>掣;\n*<strong>Opera:</strong>喺<em>工具→喜好設定</em>之中清佢哋嘅快取。",
+       "clearyourcache": "<strong>注意</strong>:喺儲存之後,你可能要先略過你嘅瀏覽器快取去睇到更改。\n*<strong>Firefox / Safari:</strong> 㩒住<em>Shift<em>掣再撳<em>重新載入</em>,又或者㩒<em>Ctrl-F5</em>或者<em>Ctrl-R</em>(喺Mac㩒<em>Command-R</em>掣);\n*<strong>Google Chrome:</strong> 㩒<em>Ctrl-Shift-R</em>(喺Mac㩒<em>Command-R</em>掣);\n*<strong>Internet Explorer:</strong> 㩒住<em>Ctrl</em>掣再撳<em>重新整理</em>,又或者㩒<em>Ctrl-F5</em>掣;\n*<strong>Opera:</strong> 去 <em>選單 → 設定</em> (喺 Mac 係 <em>Opera → 偏好設定</em>) 跟住再到 <em>隱私 & 安全性 → 清除瀏覽資料 → 已快取的圖片與檔案</em>。",
        "usercssyoucanpreview": "'''提示:'''響儲存前,用「{{int:showpreview}}」個掣嚟測試你嘅新CSS。",
        "userjsyoucanpreview": "'''提示:'''響儲存前,用「{{int:showpreview}}」個掣嚟測試你嘅新JavaScript。",
        "usercsspreview": "'''記住你而家只係預覽緊你嘅用戶CSS樣式表。'''\n'''佢嘅內容重未儲存!'''",
        "previewnote": "'''請記住呢個只係預覽。'''\n更改嘅内容重未儲存!",
        "continue-editing": "去編輯區",
        "previewconflict": "呢個預覽係反映如果你選擇儲存嘅話,嘅上面嘅文字編輯區裏面嘅字會儲存落嚟。",
-       "session_fail_preview": "'''對唔住!由於小節嘅資料唔見咗,我哋唔能夠處理你嘅編輯。'''\n請再試過喇。如果仍然唔得嘅話,試下[[Special:UserLogout|登出]],然後重新登入。",
-       "session_fail_preview_html": "'''對唔住!有關嘅程序資料已經遺失,我哋唔能夠處理你嘅編輯。'''\n\n''由於{{SITENAME}}已經開放咗原 HTML 碼,預覽已經隱藏落嚟以預防 JavaScript 嘅攻擊。''\n\n'''如果呢個係正當嘅編輯嘗試,請再試過。'''如果重係唔得嘅話,請先[[Special:UserLogout|登出]]然後再登入。",
+       "session_fail_preview": "對唔住!由於小節嘅資料唔見咗,我哋唔能夠處理你嘅編輯。\n\n你可能簽退咗。<strong>請你檢查下係咪重係簽到緊,之後再試過</strong>。\n如果仍然唔得嘅話,試下[[Special:UserLogout|簽退]]後再簽到,同埋檢查個瀏覽器係受呢個站嘅曲奇。",
+       "session_fail_preview_html": "對唔住!有關嘅程序資料已經遺失,我哋唔能夠處理你嘅編輯。\n\n<em>由於{{SITENAME}}已經開放咗原 HTML 碼,預覽已經隱藏落嚟以預防 JavaScript 嘅攻擊。</em>\n<strong>如果呢個係正當嘅編輯嘗試,請再試過。</strong>\n如果重係唔得嘅話,請先[[Special:UserLogout|簽退]]後再簽到。",
        "token_suffix_mismatch": "'''因為你嘅用戶端度嘅編輯幣整壞咗一啲標點符號字元,你嘅編輯已經拒絕咗。'''個編輯已經拒絕,以防止嗰版嘅文字損毀。\n當你響度用緊一啲好多臭蟲,以網絡為主嘅匿名代理服務。",
        "edit_form_incomplete": "'''編輯表格嘅某個部份同server唔夾,請檢查多次你嘅編輯同埋再試多次。'''",
        "editing": "而家喺度編輯$1",
        "copyrightwarning2": "請留意喺{{SITENAME}}度,所有嘅貢獻可能會被其他嘅貢獻者編輯、修改,或者刪除。如果你係唔想你編輯嘅文字無喇喇咁被編輯,咁就唔好喺呢度遞交。\n\n你亦都要同我哋保證啲文字係你自己寫嘅,或者係由公有領域或相似嘅自由資源複製落嚟(睇$1有更詳細嘅資訊)。\n'''喺未有任何許可嘅情況之下千祈唔好遞交有版權嘅作品!'''",
        "editpage-cannot-use-custom-model": "呢頁嘅目錄模型唔改得",
        "longpageerror": "<strong>出錯:你所遞交嘅文字係有 {{PLURAL:$1|1 KB|$1 KB}} 咁長,長過最大嘅 {{PLURAL:$2|1 KB|$2 KB}}。</strong>\n儲唔到你遞交嘅文字。",
-       "readonlywarning": "<strong>警告:資料庫已經鎖住咗去做定期保養。而家你唔可以儲起你嘅編輯。</strong>\n\n你可以儲啲文字落一份文字檔先。\n\n管理員嘅解釋: $1",
+       "readonlywarning": "<strong>警告:資料庫已經鎖住咗去做定期保養。而家你唔可以儲起你嘅編輯。</strong>\n你可以儲啲文字落一份文字檔先。\n\n鎖資料庫嘅系統管理員畀嘅解釋: $1",
        "protectedpagewarning": "'''警告:呢版已經受到保護,只有管理員權限嘅用戶先至可以改。'''\n最近嘅日誌響下面提供以便參考:",
        "semiprotectedpagewarning": "'''注意:'''呢一頁已經保護咗,只有已經註冊嘅用戶先至可以改。\n最近嘅日誌響下面提供以便參考:",
-       "cascadeprotectedwarning": "'''警告:'''呢一頁已經保護咗,凈得管理員權限嘅用戶先至可以改,因為佢係響以下連串保護嘅{{PLURAL:$1|一|幾}}頁度包含咗:",
+       "cascadeprotectedwarning": "<strong>警告:</strong>呢一頁已經保護咗,凈得[[Special:ListGroupRights|有指定權限]]嘅用戶先至可以改,因為佢係響以下連串保護嘅{{PLURAL:$1|一|幾}}頁度包含咗:",
        "titleprotectedwarning": "'''警告:呢一版已經保護咗,需要一啲[[Special:ListGroupRights|指定權限]]先至可以開到。'''\n最近嘅日誌響下面提供以便參考:",
        "templatesused": "呢版用嘅{{PLURAL:$1|模}}:",
        "templatesusedpreview": "呢一次預覽裏面,用咗下面呢啲{{PLURAL:$1|模|模}}:",
        "permissionserrors": "權限出錯",
        "permissionserrorstext": "根據下面嘅{{PLURAL:$1|原因|原因}},你並無權限去做呢樣嘢:",
        "permissionserrorstext-withaction": "根據下面嘅{{PLURAL:$1|原因|原因}},你並無權限去做$2:",
-       "contentmodelediterror": "你唔改得呢版修訂,因為呢個修訂嘅內容模型係 <code>$1</code> ,而家嘅內容模型係 <code>$2</code>。",
+       "contentmodelediterror": "你唔改得呢版修訂,因為呢個修訂嘅內容模型係 <code>$1</code> ,同而家嘅內容模型 <code>$2</code> 有分別。",
        "recreate-moveddeleted-warn": "'''警告: 你而家重開一版係先前曾經刪除過嘅。'''\n\n你應該要考慮吓繼續編輯呢一版係唔係適合嘅。\n為咗方便起見,呢一版嘅刪除同搬版記錄已經響下面提供:",
        "moveddeleted-notice": "呢一版已經刪咗。\n呢版嘅刪除同搬版日誌響下面提供咗以便參考。",
        "moveddeleted-notice-recent": "唔好意思,呢版啱啱刪走咗(最近24個鐘內)。\n呢版刪版同搬版紀錄喺下低做參考。",
        "invalid-content-data": "無效嘅內容資料",
        "content-not-allowed-here": "「$1」唔可以輸入[[$2]]。",
        "editwarning-warning": "離開爾一版會令到閣下嘅修改唔見咗。\n閣下可以喺喜好設定嘅\"{{int:prefs-editing}}\"小節度停用爾個警告。",
+       "editpage-invalidcontentmodel-title": "唔支援爾種內容模型。",
+       "editpage-invalidcontentmodel-text": "內容模型 \"$1\" 唔支援。",
        "editpage-notsupportedcontentformat-title": "唔支持爾種內容格式。",
        "editpage-notsupportedcontentformat-text": "指定嘅目錄類$1同$2唔兼容",
        "content-model-wikitext": "維基文字",
        "page_first": "最頭",
        "page_last": "最尾",
        "histlegend": "選擇唔同版本:響兩個唔同版本嘅圓框分別撳一下,再撳最底的「比較被選修訂」掣以作比較。<br />\n說明:'''({{int:cur}})'''= 同最新修訂版本嘅差別,'''({{int:last}})'''= 同前一個修訂版本嘅差別,'''{{int:minoreditletter}}''' = 小修改。",
-       "history-fieldset-title": "瀏覽歷史",
-       "history-show-deleted": "只顯示刪除咗嘅",
+       "history-fieldset-title": "搵編輯紀錄",
+       "history-show-deleted": "只顯示刪除咗嘅修訂",
        "histfirst": "最舊",
        "histlast": "最新",
        "historysize": "($1 {{PLURAL:$1|byte|bytes}})",
        "revdelete-unsuppress": "響已經恢復咗嘅修訂度移除限制",
        "revdelete-log": "原因:",
        "revdelete-submit": "應用到已經選取嘅{{PLURAL:$1|修訂}}",
-       "revdelete-success": "'''已經成功設定修訂嘅可見性。'''",
+       "revdelete-success": "已經更新咗修訂嘅可見性。",
        "revdelete-failure": "'''修訂可見性更新唔到:'''\n$1",
-       "logdelete-success": "'''事件可見性已經成功噉更新。'''",
+       "logdelete-success": "事件可見性已經設好咗。",
        "logdelete-failure": "'''事件可見性唔能夠更新:'''\n$1",
        "revdel-restore": "改可見性",
        "pagehist": "頁面歷史",
        "mergehistory-empty": "無修訂可以合併",
        "mergehistory-done": "$1嘅$3次修訂已經成功噉合併到[[:$2]]。",
        "mergehistory-fail": "歷史合併唔到,請重新檢查嗰一版同埋時間參數。",
+       "mergehistory-fail-bad-timestamp": "時間值無效。",
+       "mergehistory-fail-invalid-source": "來源版無效。",
+       "mergehistory-fail-invalid-dest": "目標版無效。",
+       "mergehistory-fail-permission": "唔夠權限去合併歷史。",
+       "mergehistory-fail-self-merge": "來源版同目標版一樣。",
        "mergehistory-fail-toobig": "唔能夠合併編輯紀錄,因為入面超過咗$1個版本嘅上限。",
        "mergehistory-no-source": "來源頁$1唔存在。",
        "mergehistory-no-destination": "目的頁$1唔存在。",
        "search-file-match": "(夾啱樓案内容)",
        "search-suggest": "你係唔係搵: $1",
        "search-rewritten": "顯示緊 $1 嘅搵嘢結果,而唔係 $2 嘅。",
-       "search-interwiki-caption": "å§\8a妹è¨\88å\8a\83",
+       "search-interwiki-caption": "å\85\84å¼\9fè¨\88å\8a\83å\98\85çµ\90æ\9e\9c",
        "search-interwiki-default": "嚟自$1嘅結果:",
        "search-interwiki-more": "(更多)",
+       "search-interwiki-more-results": "多啲結果",
        "search-relatedarticle": "有關",
        "searchrelated": "有關",
        "searchall": "全部",
        "prefs-help-recentchangescount": "呢個包埋最近修改、頁歷史同埋日誌紀錄。",
        "prefs-help-watchlist-token2": "呢個係網上訂閱你個監視清單嘅密匙。\n任何人只要知道個密匙,就會睇到你個監視清單,所以唔好畀人知。\n如果有需要嘅話,[[Special:ResetTokens|你可以重設佢]]。",
        "savedprefs": "你嘅喜好設定已經儲存。",
-       "savedrights": "儲存咗 {{GENDER:$1|$1}} 嘅用戶權限。",
+       "savedrights": "儲存咗 {{GENDER:$1|$1}} 嘅用戶群組。",
        "timezonelegend": "時區:",
        "localtime": "本地時間:",
        "timezoneuseserverdefault": "用維基預設值($1)",
        "youremail": "電郵:",
        "username": "{{GENDER:$1|用戶名}}:",
        "prefs-memberingroups": "{{PLURAL:$1|組}}嘅{{GENDER:$2|成員}}:",
+       "group-membership-link-with-expiry": "$1 (直到 $2)",
        "prefs-registration": "註冊時間:",
        "yourrealname": "真名:",
        "yourlanguage": "話:",
        "userrights": "用戶嘅權限",
        "userrights-lookup-user": "揀一個用戶",
        "userrights-user-editname": "輸入一個用戶名:",
-       "editusergroup": "編輯用戶組",
+       "editusergroup": "載入用戶組",
        "editinguser": "改緊<strong>[[User:$1|$1]]</strong>嘅用戶權限 $2",
-       "userrights-editusergroup": "編輯用戶組",
+       "viewinguserrights": "睇緊<strong>[[User:$1|$1]]</strong>嘅{{GENDER:$1|用戶}}權限 $2",
+       "userrights-editusergroup": "編輯{{GENDER:$1|用戶}}組",
+       "userrights-viewusergroup": "睇{{GENDER:$1|用戶}}組",
        "saveusergroups": "儲存{{GENDER:$1|用戶}}組",
        "userrights-groupsmember": "屬於:",
        "userrights-groupsmember-auto": "固有屬於:",
-       "userrights-groups-help": "你可以改呢位用戶所屬嘅組:\n* 剔咗嘅盒代表個用戶係屬於嗰組。\n* 未剔嘅盒代表個用戶唔係屬於嗰組。\n* 一個 * 表示你加入咗佢之後唔可以拎走,反之亦然。\n* 一個 # 表示你只可以推遲嗰組嘅失效日期,唔可以提早。",
+       "userrights-groups-help": "你可以改呢位用戶所屬嘅組:\n* 剔咗嘅盒代表個用戶係屬於嗰組。\n* 未剔嘅盒代表個用戶唔係屬於嗰組。\n* 一個 * 表示你加入咗佢之後唔可以拎走,反之亦然。\n* 一個 # 表示你只可以推遲嗰組資格嘅失效日期,唔可以提早。",
        "userrights-reason": "原因:",
        "userrights-no-interwiki": "你並無權限去編輯響其它wiki嘅用戶權限。",
        "userrights-nodatabase": "資料庫$1唔存在或者唔係本地嘅。",
        "userrights-expiry": "到期:",
        "userrights-expiry-existing": "現時到期嘅時間: $2 $3",
        "userrights-expiry-othertime": "其它時間:",
+       "userrights-expiry-options": "1日:1 day,1個禮拜:1 week,1個月:1 month,3個月:3 months,6個月:6 months,1年:1 year",
        "userrights-invalid-expiry": "組\"$1\"嘅過期時間冇效",
+       "userrights-expiry-in-past": "組\"$1\"嘅過期時間係過咗嘅時間。",
        "userrights-conflict": "用戶權限更改有衝突!請再睇過同確認你嘅改動。",
        "group": "組:",
        "group-user": "用戶",
        "right-siteadmin": "鎖同解鎖資料庫",
        "right-override-export-depth": "倒出包含有五層深連版嘅頁面",
        "right-sendemail": "寄電郵畀其他用戶",
-       "right-managechangetags": "從數據庫度開或刪走[[Special:Tags|tags]]",
+       "right-managechangetags": "開同(取消)啟用[[Special:Tags|標籤]]",
        "right-applychangetags": "套用[[Special:Tags|標籤]]到某個人嘅改動",
+       "grant-group-page-interaction": "同版面互動",
+       "grant-group-file-interaction": "同傳媒互動",
+       "grant-group-watchlist-interaction": "同監視清單互動",
+       "grant-group-email": "送電郵",
+       "grant-group-customization": "自訂同設定",
+       "grant-group-administration": "做管理行動",
+       "grant-group-private-information": "存取你嘅私隱資料",
+       "grant-group-other": "垃雜活動",
+       "grant-blockusers": "封同解封用戶",
+       "grant-createaccount": "開戶口",
+       "grant-createeditmovepage": "開版、改版同搬版",
+       "grant-delete": "刪版、修訂同日誌紀錄",
+       "grant-editinterface": "改 MediaWiki 名空間同用戶 CSS/JavaScript",
+       "grant-editmycssjs": "改你嘅用戶 CSS/JavaScript",
+       "grant-editmyoptions": "改你嘅用戶設定",
+       "grant-editmywatchlist": "改你嘅監視清單",
+       "grant-editpage": "改已經有嘅版",
+       "grant-editprotected": "改保護咗嘅版",
        "newuserlogpage": "使用者開戶記錄",
        "newuserlogpagetext": "呢個係一個使用者開戶嘅日誌",
        "rightslog": "用戶權限日誌",
        "tooltip-feed-rss": "呢一頁嘅RSS集合",
        "tooltip-feed-atom": "呢一頁嘅Atom集合",
        "tooltip-t-contributions": "{{GENDER:$1|呢個用戶}}嘅貢獻一覽",
-       "tooltip-t-emailuser": "寄封電子郵件畀呢一位用戶",
+       "tooltip-t-emailuser": "寄封電子郵件畀{{GENDER:$1|呢一位用戶}}",
        "tooltip-t-info": "更多關於呢版嘅資料",
        "tooltip-t-upload": "上載檔案",
        "tooltip-t-specialpages": "所有特別頁嘅一覽",
        "version-libraries-license": "牌照",
        "version-libraries-description": "敘述",
        "version-libraries-authors": "作者",
+       "redirect": "跟檔案、用戶、版面、修訂或者日誌 ID 去跳轉",
+       "redirect-summary": "呢個特別版可以跳轉到一個檔案(指定檔名稱)、一個版面(指定修訂 ID 或版 ID)、一個用戶版(指定用戶 ID)或者一個日誌項目(指定日誌 ID)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/page/64308]]、[[{{#Special:Redirect}}/revision/328429]]、[[{{#Special:Redirect}}/user/101]] 或者 [[{{#Special:Redirect}}/logid/186]]。",
        "redirect-submit": "去",
+       "redirect-lookup": "搵:",
        "redirect-value": "值:",
        "redirect-user": "用戶ID",
        "redirect-page": "頁ID",
        "htmlform-cloner-create": "加多啲",
        "htmlform-cloner-delete": "拎走",
        "logentry-delete-delete": "$1 刪咗頁 $3",
+       "logentry-delete-restore": "$1{{GENDER:$2|還原咗}}版面 $3($4)",
+       "logentry-delete-revision": "$1 {{GENDER:$2|改咗}}版 $3 入面 {{PLURAL:$5|1 筆修訂|$5 筆修訂}}嘅可見性:$4",
+       "revdelete-content-hid": "內容隱藏咗",
        "revdelete-restricted": "已經應用限制到操作員",
        "revdelete-unrestricted": "已經拎走對於操作員嘅限制",
        "logentry-move-move": "$1 {{GENDER:$2|搬咗}}頁面 $3 去到 $4",
+       "logentry-move-move-noredirect": "$1 {{GENDER:$2|搬}}版 $3 到 $4,唔留跳轉",
+       "logentry-move-move_redir": "$1 已經搬版 $3 到 $4 ,衾咗原先個跳轉",
+       "logentry-patrol-patrol-auto": "$1 自動{{GENDER:$2|標記低}}版 $3 嘅修訂 $4 係巡查咗",
        "logentry-newusers-create": "戶口$1經已{{GENDER:$2|開咗}}",
+       "logentry-newusers-autocreate": "戶口 $1 已經自動{{GENDER:$2|開咗}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|上傳咗}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|上載咗}}新版本嘅 $3",
        "rightsnone": "(冇)",
        "feedback-back": "返轉頭",
        "feedback-cancel": "取消",
        "special-characters-title-minus": "減號",
        "mw-widgets-titleinput-description-new-page": "冇呢頁",
        "mw-widgets-titleinput-description-redirect": "跳轉到$1",
+       "randomrootpage": "是但一版根版",
        "authmanager-authplugin-setpass-failed-title": "改唔到密碼"
 }
index 31e3ae9..1c4d694 100644 (file)
        "anontalk": "讨论",
        "navigation": "导航",
        "and": "和",
-       "qbfind": "查找",
-       "qbbrowse": "浏览",
-       "qbedit": "编辑",
-       "qbpageoptions": "该页面",
-       "qbmyoptions": "我的页面",
        "faq": "常见问题",
-       "faqpage": "Project:常见问题",
        "actions": "操作",
        "namespaces": "命名空间",
        "variants": "变种",
        "edit-local": "编辑本地说明",
        "create": "创建",
        "create-local": "添加本地说明",
-       "editthispage": "编辑本页",
-       "create-this-page": "创建本页",
        "delete": "删除",
-       "deletethispage": "删除本页",
-       "undeletethispage": "还原本页",
        "undelete_short": "还原$1次编辑",
        "viewdeleted_short": "查看{{PLURAL:$1|$1个被删除的编辑}}",
        "protect": "保护",
        "protect_change": "更改",
-       "protectthispage": "保护本页",
        "unprotect": "更改保护",
-       "unprotectthispage": "更改本页的保护",
        "newpage": "新页面",
-       "talkpage": "讨论本页",
        "talkpagelinktext": "讨论",
        "specialpage": "特殊页面",
        "personaltools": "个人工具",
-       "articlepage": "查看内容页面",
        "talk": "讨论",
        "views": "视图",
        "toolbox": "工具",
        "tool-link-userrights": "更改{{GENDER:$1|用户}}组",
        "tool-link-userrights-readonly": "查看{{GENDER:$1|用户}}组",
        "tool-link-emailuser": "电邮联系该{{GENDER:$1|用户}}",
-       "userpage": "查看用户页面",
-       "projectpage": "查看项目页面",
        "imagepage": "查看文件页面",
        "mediawikipage": "查看信息页面",
        "templatepage": "查看模板页面",
        "rcfilters-filter-lastrevision-description": "对页面的最近更改。",
        "rcfilters-filter-previousrevision-label": "早期版本",
        "rcfilters-filter-previousrevision-description": "除最近更改外,所有对某一页面的更改。",
+       "rcfilters-filter-excluded": "已排除",
+       "rcfilters-tag-prefix-namespace-inverted": "<strong>:不是</strong>$1",
+       "rcfilters-view-tags": "标签",
        "rcnotefrom": "下面{{PLURAL:$5|是}}<strong>$3 $4</strong>之后的更改(最多显示<strong>$1</strong>个)。",
        "rclistfromreset": "重置时间选择",
        "rclistfrom": "显示$3 $2之后的新更改",
        "ipb_expiry_invalid": "无效的终止时间。",
        "ipb_expiry_old": "终止时间已过去。",
        "ipb_expiry_temp": "隐藏用户名的封禁必须是永久性的。",
-       "ipb_hide_invalid": "无法封禁此账户;它拥有多于$1次编辑。",
+       "ipb_hide_invalid": "无法隐藏此用户名;它拥有多于$1次编辑。",
        "ipb_already_blocked": "“$1”已被封禁。",
        "ipb-needreblock": "$1已被封禁。您是否想更改封禁设置?",
        "ipb-otherblocks-header": "其他{{PLURAL:$1|封禁}}",
        "newimages-legend": "过滤",
        "newimages-label": "文件名(或它的一部份):",
        "newimages-user": "IP地址或用户名",
+       "newimages-newbies": "只显示新账户的贡献",
        "newimages-showbots": "显示机器人上传",
        "newimages-hidepatrolled": "隐藏已巡查的上传",
+       "newimages-mediatype": "媒体类型:",
        "noimages": "无可查看文件。",
        "gallery-slideshow-toggle": "开启/关闭缩略图",
        "ilsubmit": "搜索",
        "tags-create-reason": "原因:",
        "tags-create-submit": "创建",
        "tags-create-no-name": "您必须指定一个标签名称。",
-       "tags-create-invalid-chars": "标签名称必须不包含逗号(<code>,</code>)或正斜线(<code>/</code>)。",
+       "tags-create-invalid-chars": "标签名称必须不包含逗号(<code>,</code>)、竖线(<code>|</code>)或正斜线(<code>/</code>)。",
        "tags-create-invalid-title-chars": "标签名称不得含有无法在网页标题中使用的字符。",
        "tags-create-already-exists": "“$1”标签已存在。",
        "tags-create-warnings-above": "下列{{PLURAL:$2|警告}}是尝试创建“$1”标签时遇到的:",
        "gotointerwiki-invalid": "指定的标题无效。",
        "gotointerwiki-external": "您将要离开{{SITENAME}}来访问[[$2]],这是一个独立网站。\n\n'''[$1 继续访问$1]'''",
        "undelete-cantedit": "您不能还原该页面,因为您未被允许编辑该页面。",
-       "undelete-cantcreate": "您不能还原该页面,因为没有使用该页面名称的现有页面,并且您未被允许编辑该页面。"
+       "undelete-cantcreate": "您不能还原该页面,因为没有使用该页面名称的现有页面,并且您未被允许编辑该页面。",
+       "pagedata-title": "页面数据",
+       "pagedata-text": "此页面提供相关页面的数据界面。请在URL中,使用子页面语法提供页面标题。\n* 内容协商基于您客户端的接受标头应用。这意味着页面数据将以您客户端首选的格式提供。",
+       "pagedata-not-acceptable": "没有找到匹配的格式。支持的MIME类型:$1",
+       "pagedata-bad-title": "无效标题:$1。"
 }
index 1f5f78e..cb9b5ca 100644 (file)
        "anontalk": "對話",
        "navigation": "導覽",
        "and": "&#32;和&#32;",
-       "qbfind": "尋找",
-       "qbbrowse": "瀏覽",
-       "qbedit": "編輯",
-       "qbpageoptions": "此頁面",
-       "qbmyoptions": "我的頁面",
        "faq": "常見問題",
-       "faqpage": "Project:FAQ",
        "actions": "動作",
        "namespaces": "命名空間",
        "variants": "變體",
        "edit-local": "編輯本地說明",
        "create": "建立",
        "create-local": "新增本地說明",
-       "editthispage": "編輯本頁",
-       "create-this-page": "建立本頁",
        "delete": "刪除",
-       "deletethispage": "刪除此頁",
-       "undeletethispage": "取消刪除此頁",
        "undelete_short": "取消刪除 $1 項修訂",
        "viewdeleted_short": "檢視 {{PLURAL:$1|1 項已刪除的修訂|$1 項已刪除的修訂}}",
        "protect": "保護",
        "protect_change": "變更",
-       "protectthispage": "保護此頁面",
        "unprotect": "變更保護",
-       "unprotectthispage": "變更此頁的保護",
        "newpage": "新頁面",
-       "talkpage": "討論此頁面",
        "talkpagelinktext": "對話",
        "specialpage": "特殊頁面",
        "personaltools": "個人工具",
-       "articlepage": "檢視內容頁面",
        "talk": "討論",
        "views": "檢視",
        "toolbox": "工具",
        "tool-link-userrights": "變更{{GENDER:$1|使用者}}群組",
        "tool-link-userrights-readonly": "檢視{{GENDER:$1|使用者}}群組",
        "tool-link-emailuser": "寄信給這位{{GENDER:$1|使用者}}",
-       "userpage": "檢視使用者頁面",
-       "projectpage": "檢視專案頁面",
        "imagepage": "檢視檔案頁面",
        "mediawikipage": "檢視訊息頁面",
        "templatepage": "檢視模板頁面",
        "revdelete-reasonotherlist": "其它原因",
        "revdelete-edit-reasonlist": "編輯刪除原因",
        "revdelete-offender": "修訂作者:",
-       "suppressionlog": "ç¦\81止顯示日誌",
+       "suppressionlog": "ç\9b£ç\9d£日誌",
        "suppressionlogtext": "以下清單為管理員透過刪除或封鎖所隱藏的內容。\n請至 [[Special:BlockList|封鎖清單]] 取得目前已封鎖的清單。",
        "mergehistory": "合併頁面歷史",
        "mergehistory-header": "這頁可以讓您合併一個來源頁面的歷史到另一個新頁面中。\n請確認這次更改能夠繼續保留該頁面先前歷史版本的連續性。",
        "undeleteextrahelp": "若要還原所有的頁面歷史,請取消勾選所有核選方塊並點選 <strong><em>{{int:undeletebtn}}</em></strong>。\n若要還原指定的頁面歷史,請勾選要還原的修訂核選方塊並點選 <strong><em>{{int:undeletebtn}}</em></strong>。",
        "undeleterevisions": "已刪除 $1 個修訂",
        "undeletehistory": "若您還原該頁面,所有的修訂歷史也會一併還原。\n若刪除之後已有使用相同名稱建立的新頁面,還原的修訂歷史會出現在此頁面之前的歷史中。",
-       "undeleterevdel": "若最新頁面或檔案修訂被部份刪除,將無法執行取消刪除的動作。\n這種情況您必須取勾選或取消隱藏已刪除的最新修訂。",
+       "undeleterevdel": "若最新頁面或檔案修訂被部份刪除,將無法執行取消刪除的動作。\n這種情況您必須取勾選或取消隱藏已刪除的最新修訂。",
        "undeletehistorynoadmin": "已刪除此頁面。\n以下摘要顯示刪除原因與刪除前所有編輯過此頁面的使用者詳細資料。\n這些已刪除的實際文字修訂僅對管理員可用。",
        "undelete-revision": "被 $3 刪除的 $1 (於 $4 $5) 修訂:",
        "undeleterevision-missing": "無效或遺失的修訂。\n您可能使用了錯誤的連結,或該修訂已從封存中還原或刪除。",
index 795d706..e2845a5 100644 (file)
@@ -234,6 +234,7 @@ $magicWords = [
        'stylepath'                 => [ '0', 'مسار_الهيئة', 'STYLEPATH' ],
        'grammar'                   => [ '0', 'قواعد_اللغة:', 'GRAMMAR:' ],
        'gender'                    => [ '0', 'نوع:', 'GENDER:' ],
+       'bidi'                      => [ '0', 'ثا:', 'BIDI:' ],
        'notitleconvert'            => [ '0', '__لاتحويل_عنوان__', '__لاتع__', '__NOTITLECONVERT__', '__NOTC__' ],
        'nocontentconvert'          => [ '0', '__لاتحويل_محتوى__', '__لاتم__', '__NOCONTENTCONVERT__', '__NOCC__' ],
        'currentweek'               => [ '1', 'أسبوع_حالي', 'CURRENTWEEK' ],
@@ -290,6 +291,7 @@ $magicWords = [
        'numberingroup'             => [ '1', 'عدد_في_المجموعة', 'عدد_في_مجموعة', 'NUMBERINGROUP', 'NUMINGROUP' ],
        'staticredirect'            => [ '1', '__تحويلة_إستاتيكية__', '__تحويلة_ساكنة__', '__STATICREDIRECT__' ],
        'protectionlevel'           => [ '1', 'مستوى_الحماية', 'PROTECTIONLEVEL' ],
+       'protectionexpiry'          => [ '1', 'انتهاء_الحماية', 'PROTECTIONEXPIRY' ],
        'cascadingsources'          => [ '1', 'مصادر_مضمنة', 'CASCADINGSOURCES' ],
        'formatdate'                => [ '0', 'تهيئة_التاريخ', 'تهيئة_تاريخ', 'formatdate', 'dateformat' ],
        'url_path'                  => [ '0', 'مسار', 'PATH' ],
@@ -311,13 +313,17 @@ $specialPageAliases = [
        'AllMyUploads'              => [ 'كل_ملفاتي' ],
        'Allpages'                  => [ 'كل_الصفحات' ],
        'ApiHelp'                   => [ 'مساعدة_إيه_بي_آي' ],
+       'ApiSandbox'                => [ 'ملعب_إيه_بي_آي' ],
        'Ancientpages'              => [ 'صفحات_قديمة' ],
        'Badtitle'                  => [ 'عنوان_سيئ' ],
        'Blankpage'                 => [ 'صفحة_فارغة' ],
        'Block'                     => [ 'منع', 'منع_أيبي', 'منع_مستخدم' ],
        'Booksources'               => [ 'مصادر_كتاب' ],
+       'BotPasswords'              => [ 'كلمات_سر_البوت' ],
        'BrokenRedirects'           => [ 'تحويلات_مكسورة' ],
        'Categories'                => [ 'تصنيفات' ],
+       'ChangeContentModel'        => [ 'تغيير_موديل_المحتوى' ],
+       'ChangeCredentials'         => [ 'تغيير_الاعتمادات' ],
        'ChangeEmail'               => [ 'تغيير_البريد' ],
        'ChangePassword'            => [ 'تغيير_كلمة_السر', 'ضبط_كلمة_السر' ],
        'ComparePages'              => [ 'مقارنة_الصفحات' ],
@@ -328,6 +334,7 @@ $specialPageAliases = [
        'DeletedContributions'      => [ 'مساهمات_محذوفة' ],
        'Diff'                      => [ 'فرق' ],
        'DoubleRedirects'           => [ 'تحويلات_مزدوجة' ],
+       'EditTags'                  => [ 'تعديل_الوسوم' ],
        'EditWatchlist'             => [ 'تعديل_قائمة_المراقبة' ],
        'Emailuser'                 => [ 'مراسلة_المستخدم' ],
        'ExpandTemplates'           => [ 'فرد_القوالب' ],
@@ -340,10 +347,12 @@ $specialPageAliases = [
        'JavaScriptTest'            => [ 'اختبار_جافا_سكريبت' ],
        'BlockList'                 => [ 'قائمة_المنع', 'عرض_المنع', 'قائمة_منع_أيبي' ],
        'LinkSearch'                => [ 'بحث_الوصلات' ],
+       'LinkAccounts'              => [ 'وصل_الحسابات' ],
        'Listadmins'                => [ 'عرض_الإداريين' ],
        'Listbots'                  => [ 'عرض_البوتات' ],
        'Listfiles'                 => [ 'عرض_الملفات', 'قائمة_الملفات', 'قائمة_الصور' ],
        'Listgrouprights'           => [ 'عرض_صلاحيات_المجموعات', 'صلاحيات_مجموعات_المستخدمين' ],
+       'Listgrants'                => [ 'عرض_المنح' ],
        'Listredirects'             => [ 'عرض_التحويلات' ],
        'ListDuplicatedFiles'       => [ 'عرض_الملفات_المكررة', 'عرض_تكرار_الملفات' ],
        'Listusers'                 => [ 'عرض_المستخدمين', 'قائمة_المستخدمين' ],
@@ -384,6 +393,7 @@ $specialPageAliases = [
        'Recentchanges'             => [ 'أحدث_التغييرات' ],
        'Recentchangeslinked'       => [ 'أحدث_التغييرات_الموصولة', 'تغييرات_مرتبطة' ],
        'Redirect'                  => [ 'تحويل' ],
+       'RemoveCredentials'         => [ 'إزالة_الاعتمادات' ],
        'ResetTokens'               => [ 'إعادة_ضبط_المفاتيح' ],
        'Revisiondelete'            => [ 'حذف_مراجعة', 'حذف_نسخة' ],
        'RunJobs'                   => [ 'تشغيل_الوظائف' ],
@@ -399,6 +409,7 @@ $specialPageAliases = [
        'Uncategorizedpages'        => [ 'صفحات_غير_مصنفة' ],
        'Uncategorizedtemplates'    => [ 'قوالب_غير_مصنفة' ],
        'Undelete'                  => [ 'استرجاع' ],
+       'UnlinkAccounts'            => [ 'فك_الحسابات' ],
        'Unlockdb'                  => [ 'فتح_قب' ],
        'Unusedcategories'          => [ 'تصنيفات_غير_مستخدمة' ],
        'Unusedimages'              => [ 'ملفات_غير_مستخدمة', 'صور_غير_مستخدمة' ],
index 8a43998..bb99553 100644 (file)
@@ -42,13 +42,18 @@ $specialPageAliases = [
        'Allmessages'               => [ 'كل_الرسايل' ],
        'AllMyUploads'              => [ 'كل_مرفوعاتى', 'كل_فايلاتى' ],
        'Allpages'                  => [ 'كل_الصفح' ],
+       'ApiHelp'                   => [ 'مساعده_Api' ],
+       'ApiSandbox'                => [ 'ملعب_Api' ],
        'Ancientpages'              => [ 'صفح_قديمه' ],
        'Badtitle'                  => [ 'عنوان_وحش' ],
        'Blankpage'                 => [ 'صفحه_فارضيه' ],
        'Block'                     => [ 'بلوك', 'بلوك_IP', 'بلوك_يوزر' ],
        'Booksources'               => [ 'مصادر_كتاب' ],
+       'BotPasswords'              => [ 'باسووردات_البوت' ],
        'BrokenRedirects'           => [ 'تحويلات_مكسوره' ],
        'Categories'                => [ 'تصانيف' ],
+       'ChangeContentModel'        => [ 'تغيير_موديل_المحتوى' ],
+       'ChangeCredentials'         => [ 'تغيير_الكريدينشيال' ],
        'ChangeEmail'               => [ 'تغيير_الميل' ],
        'ChangePassword'            => [ 'تغيير_الپاسوورد', 'ظبط_الپاسوورد' ],
        'ComparePages'              => [ 'مقارنه_الصفحات' ],
@@ -59,6 +64,7 @@ $specialPageAliases = [
        'DeletedContributions'      => [ 'مساهمات_ممسوحه' ],
        'Diff'                      => [ 'فرق' ],
        'DoubleRedirects'           => [ 'تحويلات_دوبل' ],
+       'EditTags'                  => [ 'تغيير_التاجز' ],
        'EditWatchlist'             => [ 'تغيير_قايمه_المراقبه' ],
        'Emailuser'                 => [ 'ابعت_ايميل_لليوزر' ],
        'ExpandTemplates'           => [ 'فرد-القوالب' ],
@@ -71,16 +77,20 @@ $specialPageAliases = [
        'JavaScriptTest'            => [ 'تجربه_جافا_سكريبت' ],
        'BlockList'                 => [ 'ليستة_البلوك', 'بيّن_البلوك', 'ليستة_بلوك_IP' ],
        'LinkSearch'                => [ 'تدوير_اللينكات' ],
+       'LinkAccounts'              => [ 'توصيل_الحسابات' ],
        'Listadmins'                => [ 'عرض_الاداريين' ],
        'Listbots'                  => [ 'عرض_البوتات' ],
        'Listfiles'                 => [ 'عرض_الفايلات', 'ليستة_الفايلات', 'ليستة_الصور' ],
        'Listgrouprights'           => [ 'عرض_حقوق_الجروپات' ],
+       'Listgrants'                => [ 'عرض_المنح' ],
        'Listredirects'             => [ 'عرض_التحويلات' ],
+       'ListDuplicatedFiles'       => [ 'عرض_الفايلات_المتكرره' ],
        'Listusers'                 => [ 'عرض_اليوزرات', 'ليستة_اليوزرات' ],
        'Lockdb'                    => [ 'قفل_قب' ],
        'Log'                       => [ 'سجل', 'سجلات' ],
        'Lonelypages'               => [ 'صفح_وحدانيه', 'صفح_يتيمه' ],
        'Longpages'                 => [ 'صفح_طويله' ],
+       'MediaStatistics'           => [ 'احصائيات_الميديا' ],
        'MergeHistory'              => [ 'دمج_التاريخ' ],
        'MIMEsearch'                => [ 'تدوير_MIME' ],
        'Mostcategories'            => [ 'اكتر_تصانيف' ],
@@ -113,6 +123,7 @@ $specialPageAliases = [
        'Recentchanges'             => [ 'اخر_تعديلات' ],
        'Recentchangeslinked'       => [ 'اجدد_التغييرات_اللى_معمول_ليها_لينك', 'تغييرات_مرتبطه' ],
        'Redirect'                  => [ 'تحويل' ],
+       'RemoveCredentials'         => [ 'مسح_الكريدينشيال' ],
        'ResetTokens'               => [ 'ضبط_المفاتيح' ],
        'Revisiondelete'            => [ 'مسح_نسخه' ],
        'RunJobs'                   => [ 'تشغيل_الوظايف' ],
@@ -128,6 +139,7 @@ $specialPageAliases = [
        'Uncategorizedpages'        => [ 'صفح_مش_متصنفه' ],
        'Uncategorizedtemplates'    => [ 'قوالب_مش_متصنفه' ],
        'Undelete'                  => [ 'استرجاع' ],
+       'UnlinkAccounts'            => [ 'فك_الحسابات' ],
        'Unlockdb'                  => [ 'فتح_قب' ],
        'Unusedcategories'          => [ 'تصانيف_مش_مستعمله' ],
        'Unusedimages'              => [ 'فايلات_مش_مستعمله', 'صور_مش_مستعمله' ],
index 69bcaa5..1e986ff 100644 (file)
@@ -9,3 +9,22 @@
  */
 
 $fallback = 'fr';
+
+$namespaceNames = [
+       NS_MEDIA            => 'Tipatcimoctakewin',
+       NS_SPECIAL          => 'Kotakahi',
+       NS_TALK             => 'Ke_ici_aimihitonaniwok',
+       NS_USER             => 'Ka_notcitatc',
+       NS_USER_TALK        => 'Ke_ici_aimihitonaniwok_notcita_iriniw',
+       NS_PROJECT_TALK     => 'Ke_ici_aimihitonaniwok_$1',
+       NS_FILE             => 'Natisinahikaniwoc',
+       NS_FILE_TALK        => 'Ke_ici_aimihitonaniwok_natisinihikaniwoc',
+       NS_MEDIAWIKI        => 'MediaWiki',
+       NS_MEDIAWIKI_TALK   => 'Ke_ici_aimihitonaniwok_MediaWiki',
+       NS_TEMPLATE         => 'Tapapitcikesinihikan',
+       NS_TEMPLATE_TALK    => 'Ke_ici_arimotcikatek_tapapitcikesinihikan',
+       NS_HELP             => 'Witcihikoiin',
+       NS_HELP_TALK        => 'Ke_ici_aimihitonaniwok_witcihewinik',
+       NS_CATEGORY         => 'Tipanictawin',
+       NS_CATEGORY_TALK    => 'Ke_ici_aimihitonaniwok_tipanictawin',
+];
index ac9f1b7..17b00b7 100644 (file)
@@ -466,6 +466,7 @@ $specialPageAliases = [
        'Newimages'                 => [ 'NewFiles', 'NewImages' ],
        'Newpages'                  => [ 'NewPages' ],
        'PagesWithProp'             => [ 'PagesWithProp', 'Pageswithprop', 'PagesByProp', 'Pagesbyprop' ],
+       'PageData'                  => [ 'Pagedata' ],
        'PageLanguage'              => [ 'PageLanguage' ],
        'PasswordReset'             => [ 'PasswordReset' ],
        'PermanentLink'             => [ 'PermanentLink', 'PermaLink' ],
index 6717a8e..802619e 100644 (file)
@@ -80,6 +80,7 @@ TEXT
                        'Disable link table updates. Is faster but leaves the wiki in an inconsistent state'
                );
                $this->addOption( 'image-base-path', 'Import files from a specified path', false, true );
+               $this->addOption( 'skip-to', 'Start from nth page by skipping first n-1 pages', false, true );
                $this->addArg( 'file', 'Dump file to import [else use stdin]', false );
        }
 
@@ -301,6 +302,11 @@ TEXT
                                return false;
                        }
                }
+               if ( $this->hasOption( 'skip-to' ) ) {
+                       $nthPage = (int)$this->getOption( 'skip-to' );
+                       $importer->setPageOffset( $nthPage );
+                       $this->pageCount = $nthPage - 1;
+               }
                $importer->setPageCallback( [ $this, 'reportPage' ] );
                $this->importCallback = $importer->setRevisionCallback(
                        [ $this, 'handleRevision' ] );
index d396703..b3866c1 100644 (file)
@@ -309,9 +309,7 @@ class ImportImages extends Maintenance {
                                        if ( $handler ) {
                                                $metadata = MediaWiki\quietCall( 'unserialize', $props['metadata'] );
 
-                                               $publishOptions['headers'] = $handler->getContentHeaders(
-                                                       $metadata, $props['width'], $props['height']
-                                               );
+                                               $publishOptions['headers'] = $handler->getContentHeaders( $metadata );
                                        } else {
                                                $publishOptions['headers'] = [];
                                        }
index 7c0e4af..575ff5a 100644 (file)
@@ -1058,7 +1058,9 @@ return [
                'targets' => [ 'desktop', 'mobile' ],
        ],
        'mediawiki.hlist' => [
-               'styles' => 'resources/src/mediawiki/mediawiki.hlist.css',
+               'skinStyles' => [
+                       'default' => 'resources/src/mediawiki/mediawiki.hlist.css',
+               ],
        ],
        'mediawiki.htmlform' => [
                'scripts' => [
@@ -1749,6 +1751,7 @@ return [
                        'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.SavedQueriesModel.js',
                        'resources/src/mediawiki.rcfilters/dm/mw.rcfilters.dm.ChangesListViewModel.js',
                        'resources/src/mediawiki.rcfilters/mw.rcfilters.Controller.js',
+                       'resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js',
                ],
                'dependencies' => [
                        'oojs',
@@ -1834,6 +1837,14 @@ return [
                        'rcfilters-noresults-conflict',
                        'rcfilters-state-message-subset',
                        'rcfilters-state-message-fullcoverage',
+                       'rcfilters-filter-excluded',
+                       'rcfilters-tag-prefix-namespace',
+                       'rcfilters-tag-prefix-namespace-inverted',
+                       'rcfilters-tag-prefix-tags',
+                       'rcfilters-view-tags',
+                       'blanknamespace',
+                       'namespaces',
+                       'invert',
                        'recentchanges-noresult',
                        'quotation-marks',
                ],
@@ -1847,6 +1858,7 @@ return [
                        'oojs-ui.styles.icons-editing-core',
                        'oojs-ui.styles.icons-editing-styling',
                        'oojs-ui.styles.icons-interactions',
+                       'oojs-ui.styles.icons-content',
                ],
        ],
        'mediawiki.special' => [
index 59c0a19..bec40b4 100644 (file)
@@ -9,11 +9,16 @@
         * @param {string} name Group name
         * @param {Object} [config] Configuration options
         * @cfg {string} [type='send_unselected_if_any'] Group type
+        * @cfg {string} [view='default'] Name of the display group this group
+        *  is a part of.
         * @cfg {string} [title] Group title
         * @cfg {string} [separator='|'] Value separator for 'string_options' groups
         * @cfg {boolean} [active] Group is active
         * @cfg {boolean} [fullCoverage] This filters in this group collectively cover all results
         * @cfg {Object} [conflicts] Defines the conflicts for this filter group
+        * @cfg {string|Object} [labelPrefixKey] An i18n key defining the prefix label for this
+        *  group. If the prefix has 'invert' state, the parameter is expected to be an object
+        *  with 'default' and 'inverted' as keys.
         * @cfg {Object} [whatsThis] Defines the messages that should appear for the 'what's this' popup
         * @cfg {string} [whatsThis.header] The header of the whatsThis popup message
         * @cfg {string} [whatsThis.body] The body of the whatsThis popup message
 
                this.name = name;
                this.type = config.type || 'send_unselected_if_any';
+               this.view = config.view || 'default';
                this.title = config.title;
                this.separator = config.separator || '|';
+               this.labelPrefixKey = config.labelPrefixKey;
 
                this.active = !!config.active;
                this.fullCoverage = !!config.fullCoverage;
                        var subsetNames = [],
                                filterItem = new mw.rcfilters.dm.FilterItem( filter.name, model, {
                                        group: model.getName(),
-                                       label: mw.msg( filter.label ),
-                                       description: mw.msg( filter.description ),
-                                       cssClass: filter.cssClass
+                                       label: filter.label || filter.name,
+                                       description: filter.description || '',
+                                       labelPrefixKey: model.labelPrefixKey,
+                                       cssClass: filter.cssClass,
+                                       identifiers: filter.identifiers
                                } );
 
                        filter.subset = filter.subset || [];
                return this.type;
        };
 
+       /**
+        * Get display group
+        *
+        * @return {string} Display group
+        */
+       mw.rcfilters.dm.FilterGroup.prototype.getView = function () {
+               return this.view;
+       };
+
        /**
         * Get the prefix used for the filter names inside this group.
         *
index 3c2f8d7..ebffaa0 100644 (file)
                this.defaultParams = {};
                this.defaultFiltersEmpty = null;
                this.highlightEnabled = false;
+               this.invertedNamespaces = false;
                this.parameterMap = {};
 
+               this.views = {};
+               this.currentView = null;
+
                // Events
                this.aggregate( { update: 'filterItemUpdate' } );
                this.connect( this, { filterItemUpdate: [ 'emit', 'itemUpdate' ] } );
         * Filter list is initialized
         */
 
+       /**
+        * @event update
+        *
+        * Model has been updated
+        */
+
        /**
         * @event itemUpdate
         * @param {mw.rcfilters.dm.FilterItem} item Filter item updated
         * Highlight feature has been toggled enabled or disabled
         */
 
+       /**
+        * @event invertChange
+        * @param {boolean} isInverted Namespace selected is inverted
+        *
+        * Namespace selection is inverted or straight forward
+        */
+
        /* Methods */
 
        /**
         * the definition given by an object
         *
         * @param {Array} filters Filter group definition
+        * @param {Object} [namespaces] Namespace definition
+        * @param {Object[]} [tags] Tag array definition
         */
-       mw.rcfilters.dm.FiltersViewModel.prototype.initializeFilters = function ( filters ) {
+       mw.rcfilters.dm.FiltersViewModel.prototype.initializeFilters = function ( filters, namespaces, tags ) {
                var filterItem, filterConflictResult, groupConflictResult,
                        model = this,
                        items = [],
+                       namespaceDefinition = [],
                        groupConflictMap = {},
                        filterConflictMap = {},
                        /*!
                // Reset
                this.clearItems();
                this.groups = {};
+               this.views = {};
 
+               // Filters
+               this.views.default = { name: 'default', label: mw.msg( 'rcfilters-filterlist-title' ) };
                filters.forEach( function ( data ) {
                        var i,
                                group = data.name;
                        if ( !model.groups[ group ] ) {
                                model.groups[ group ] = new mw.rcfilters.dm.FilterGroup( group, {
                                        type: data.type,
-                                       title: mw.msg( data.title ),
+                                       title: data.title ? mw.msg( data.title ) : group,
                                        separator: data.separator,
                                        fullCoverage: !!data.fullCoverage,
                                        whatsThis: {
                                        }
                                } );
                        }
+
+                       // Filters are given to us with msg-keys, we need
+                       // to translate those before we hand them off
+                       for ( i = 0; i < data.filters.length; i++ ) {
+                               data.filters[ i ].label = data.filters[ i ].label ? mw.msg( data.filters[ i ].label ) : data.filters[ i ].name;
+                               data.filters[ i ].description = data.filters[ i ].description ? mw.msg( data.filters[ i ].description ) : '';
+                       }
+
                        model.groups[ group ].initializeFilters( data.filters, data.default );
                        items = items.concat( model.groups[ group ].getItems() );
 
                        }
                } );
 
+               namespaces = namespaces || {};
+               if (
+                       mw.config.get( 'wgStructuredChangeFiltersEnableExperimentalViews' ) &&
+                       !$.isEmptyObject( namespaces )
+               ) {
+                       // Namespaces group
+                       this.views.namespaces = { name: 'namespaces', label: mw.msg( 'namespaces' ), trigger: ':' };
+                       $.each( namespaces, function ( namespaceID, label ) {
+                               // Build and clean up the definition
+                               namespaceDefinition.push( {
+                                       name: namespaceID,
+                                       label: label || mw.msg( 'blanknamespace' ),
+                                       description: '',
+                                       identifiers: [
+                                               ( namespaceID < 0 || namespaceID % 2 === 0 ) ?
+                                                       'subject' : 'talk'
+                                       ],
+                                       cssClass: 'mw-changeslist-ns-' + namespaceID
+                               } );
+                       } );
+
+                       // Add the group
+                       model.groups.namespace = new mw.rcfilters.dm.FilterGroup(
+                               'namespace', // Parameter name is singular
+                               {
+                                       type: 'string_options',
+                                       view: 'namespaces',
+                                       title: 'namespaces', // Message key
+                                       separator: ';',
+                                       labelPrefixKey: { 'default': 'rcfilters-tag-prefix-namespace', inverted: 'rcfilters-tag-prefix-namespace-inverted' },
+                                       fullCoverage: true
+                               }
+                       );
+                       // Add namespace items to group
+                       model.groups.namespace.initializeFilters( namespaceDefinition );
+                       items = items.concat( model.groups.namespace.getItems() );
+               }
+
+               tags = tags || [];
+               if (
+                       mw.config.get( 'wgStructuredChangeFiltersEnableExperimentalViews' ) &&
+                       tags.length > 0
+               ) {
+                       // Define view
+                       this.views.tags = { name: 'tags', label: mw.msg( 'rcfilters-view-tags' ), trigger: '#' };
+
+                       // Add the group
+                       model.groups.tags = new mw.rcfilters.dm.FilterGroup(
+                               'tags',
+                               {
+                                       type: 'string_options',
+                                       view: 'tags',
+                                       title: 'rcfilters-view-tags', // Message key
+                                       labelPrefixKey: 'rcfilters-tag-prefix-tags',
+                                       separator: '|',
+                                       fullCoverage: false
+                               }
+                       );
+
+                       // Add tag items to group
+                       model.groups.tags.initializeFilters( tags );
+
+                       // Add item references to the model, for lookup
+                       items = items.concat( model.groups.tags.getItems() );
+               }
+
                // Add item references to the model, for lookup
                this.addItems( items );
 
                        }
                } );
 
+               this.currentView = 'default';
+
                // Finish initialization
                this.emit( 'initialize' );
        };
                return this.groups;
        };
 
+       /**
+        * Get the object that defines groups that match a certain view by their name.
+        *
+        * @param {string} [view] Requested view. If not given, uses current view
+        * @return {Object} Filter groups matching a display group
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getFilterGroupsByView = function ( view ) {
+               var result = {};
+
+               view = view || this.getCurrentView();
+
+               $.each( this.groups, function ( groupName, groupModel ) {
+                       if ( groupModel.getView() === view ) {
+                               result[ groupName ] = groupModel;
+                       }
+               } );
+
+               return result;
+       };
+
+       /**
+        * Get an array of filters matching the given display group.
+        *
+        * @param {string} [view] Requested view. If not given, uses current view
+        * @return {mw.rcfilters.dm.FilterItem} Filter items matching the group
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getFiltersByView = function ( view ) {
+               var groups,
+                       result = [];
+
+               view = view || this.getCurrentView();
+
+               groups = this.getFilterGroupsByView( view );
+
+               $.each( groups, function ( groupName, groupModel ) {
+                       result = result.concat( groupModel.getItems() );
+               } );
+
+               return result;
+       };
+
+       /**
+        * Get the trigger for the requested view.
+        *
+        * @param {string} view View name
+        * @return {string} View trigger, if exists
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getViewTrigger = function ( view ) {
+               return this.views[ view ] && this.views[ view ].trigger;
+       };
        /**
         * Get the value of a specific parameter
         *
 
                // Get default filter state
                $.each( this.groups, function ( name, model ) {
-                       result = $.extend( true, {}, result, model.getDefaultParams() );
+                       $.extend( true, result, model.getDefaultParams() );
                } );
 
-               // Get default highlight state
-               result = $.extend( true, {}, result, this.getHighlightParameters() );
-
                return result;
        };
 
         *  arranged by their group names
         */
        mw.rcfilters.dm.FiltersViewModel.prototype.findMatches = function ( query, returnFlat ) {
-               var i,
+               var i, searchIsEmpty,
                        groupTitle,
                        result = {},
                        flatResult = [],
-                       items = this.getItems();
+                       view = this.getViewByTrigger( query.substr( 0, 1 ) ),
+                       items = this.getFiltersByView( view );
 
-               // Normalize so we can search strings regardless of case
+               // Normalize so we can search strings regardless of case and view
                query = query.toLowerCase();
+               if ( view !== 'default' ) {
+                       query = query.substr( 1 );
+               }
+
+               // Check if the search if actually empty; this can be a problem when
+               // we use prefixes to denote different views
+               searchIsEmpty = query.length === 0;
 
                // item label starting with the query string
                for ( i = 0; i < items.length; i++ ) {
-                       if ( items[ i ].getLabel().toLowerCase().indexOf( query ) === 0 ) {
+                       if (
+                               searchIsEmpty ||
+                               items[ i ].getLabel().toLowerCase().indexOf( query ) === 0 ||
+                               (
+                                       // For tags, we want the parameter name to be included in the search
+                                       view === 'tags' &&
+                                       items[ i ].getParamName().toLowerCase().indexOf( query ) > -1
+                               )
+                       ) {
                                result[ items[ i ].getGroupName() ] = result[ items[ i ].getGroupName() ] || [];
                                result[ items[ i ].getGroupName() ].push( items[ i ] );
                                flatResult.push( items[ i ] );
                        for ( i = 0; i < items.length; i++ ) {
                                groupTitle = items[ i ].getGroupModel().getTitle();
                                if (
+                                       searchIsEmpty ||
                                        items[ i ].getLabel().toLowerCase().indexOf( query ) > -1 ||
                                        items[ i ].getDescription().toLowerCase().indexOf( query ) > -1 ||
-                                       groupTitle.toLowerCase().indexOf( query ) > -1
+                                       groupTitle.toLowerCase().indexOf( query ) > -1 ||
+                                       (
+                                               // For tags, we want the parameter name to be included in the search
+                                               view === 'tags' &&
+                                               items[ i ].getParamName().toLowerCase().indexOf( query ) > -1
+                                       )
                                ) {
                                        result[ items[ i ].getGroupName() ] = result[ items[ i ].getGroupName() ] || [];
                                        result[ items[ i ].getGroupName() ].push( items[ i ] );
                } );
        };
 
+       /**
+        * Switch the current view
+        *
+        * @param {string} view View name
+        * @fires update
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.switchView = function ( view ) {
+               if ( this.views[ view ] && this.currentView !== view ) {
+                       this.currentView = view;
+                       this.emit( 'update' );
+               }
+       };
+
+       /**
+        * Get the current view
+        *
+        * @return {string} Current view
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getCurrentView = function () {
+               return this.currentView;
+       };
+
+       /**
+        * Get the label for the current view
+        *
+        * @return {string} Label for the current view
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getCurrentViewLabel = function () {
+               return this.views[ this.getCurrentView() ].label;
+       };
+
+       /**
+        * Get an array of all available view names
+        *
+        * @return {string} Available view names
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getAvailableViews = function () {
+               return Object.keys( this.views );
+       };
+
+       /**
+        * Get the view that fits the given trigger
+        *
+        * @param {string} trigger Trigger
+        * @return {string} Name of view
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.getViewByTrigger = function ( trigger ) {
+               var result = 'default';
+
+               $.each( this.views, function ( name, data ) {
+                       if ( data.trigger === trigger ) {
+                               result = name;
+                       }
+               } );
+
+               return result;
+       };
+
        /**
         * Toggle the highlight feature on and off.
         * Propagate the change to filter items.
                return !!this.highlightEnabled;
        };
 
+       /**
+        * Toggle the inverted namespaces property on and off.
+        * Propagate the change to namespace filter items.
+        *
+        * @param {boolean} enable Inverted property is enabled
+        * @fires invertChange
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.toggleInvertedNamespaces = function ( enable ) {
+               enable = enable === undefined ? !this.invertedNamespaces : enable;
+
+               if ( this.invertedNamespaces !== enable ) {
+                       this.invertedNamespaces = enable;
+
+                       this.getFiltersByView( 'namespaces' ).forEach( function ( filterItem ) {
+                               filterItem.toggleInverted( this.invertedNamespaces );
+                       }.bind( this ) );
+
+                       this.emit( 'invertChange', this.invertedNamespaces );
+               }
+       };
+
+       /**
+        * Check if the namespaces selection is set to be inverted
+        * @return {boolean}
+        */
+       mw.rcfilters.dm.FiltersViewModel.prototype.areNamespacesInverted = function () {
+               return !!this.invertedNamespaces;
+       };
+
        /**
         * Set highlight color for a specific filter item
         *
index 675fcc7..aa82e21 100644 (file)
@@ -9,6 +9,9 @@
         * @param {Object} config Configuration object
         * @cfg {string} [label] The label for the filter
         * @cfg {string} [description] The description of the filter
+        * @cfg {string|Object} [labelPrefixKey] An i18n key defining the prefix label for this
+        *  group. If the prefix has 'invert' state, the parameter is expected to be an object
+        *  with 'default' and 'inverted' as keys.
         * @cfg {boolean} [active=true] The filter is active and affecting the result
         * @cfg {boolean} [selected] The item is selected
         * @cfg {boolean} [inverted] The item is inverted, meaning the search is excluding
@@ -16,6 +19,8 @@
         * @cfg {string} [namePrefix='item_'] A prefix to add to the param name to act as a unique
         *  identifier
         * @cfg {string} [cssClass] The class identifying the results that match this filter
+        * @cfg {string[]} [identifiers] An array of identifiers for this item. They will be
+        *  added and considered in the view.
         */
        mw.rcfilters.dm.ItemModel = function MwRcfiltersDmItemModel( param, config ) {
                config = config || {};
                this.name = this.namePrefix + param;
 
                this.label = config.label || this.name;
-               this.description = config.description;
+               this.labelPrefixKey = config.labelPrefixKey;
+               this.description = config.description || '';
                this.selected = !!config.selected;
 
                this.inverted = !!config.inverted;
+               this.identifiers = config.identifiers || [];
 
                // Highlight
                this.cssClass = config.cssClass;
                return this.name;
        };
 
+       /**
+        * Get a prefixed label
+        *
+        * @return {string} Prefixed label
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getPrefixedLabel = function () {
+               if ( this.labelPrefixKey ) {
+                       if ( typeof this.labelPrefixKey === 'string' ) {
+                               return mw.message( this.labelPrefixKey, this.getLabel() ).parse();
+                       } else {
+                               return mw.message(
+                                       this.labelPrefixKey[
+                                               // Only use inverted-prefix if the item is selected
+                                               // Highlight-only an inverted item makes no sense
+                                               this.isInverted() && this.isSelected() ?
+                                                       'inverted' : 'default'
+                                       ],
+                                       this.getLabel()
+                               ).parse();
+                       }
+               } else {
+                       return this.getLabel();
+               }
+       };
+
        /**
         * Get the param name or value of this filter
         *
                return this.cssClass;
        };
 
+       /**
+        * Get the item's identifiers
+        *
+        * @return {string[]}
+        */
+       mw.rcfilters.dm.ItemModel.prototype.getIdentifiers = function () {
+               return this.identifiers;
+       };
+
        /**
         * Toggle the highlight feature on and off for this filter.
         * It only works if highlight is supported for this filter.
index b7b46f6..95e11d5 100644 (file)
@@ -13,7 +13,7 @@
                this.savedQueriesModel = savedQueriesModel;
                this.requestCounter = 0;
                this.baseFilterState = {};
-               this.emptyParameterState = {};
+               this.uriProcessor = null;
                this.initializing = false;
        };
 
         * Initialize the filter and parameter states
         *
         * @param {Array} filterStructure Filter definition and structure for the model
+        * @param {Object} [namespaceStructure] Namespace definition
+        * @param {Object} [tagList] Tag definition
         */
-       mw.rcfilters.Controller.prototype.initialize = function ( filterStructure ) {
-               var parsedSavedQueries, validParameterNames,
+       mw.rcfilters.Controller.prototype.initialize = function ( filterStructure, namespaceStructure, tagList ) {
+               var parsedSavedQueries,
                        uri = new mw.Uri(),
                        $changesList = $( '.mw-changeslist' ).first().contents();
 
                // Initialize the model
-               this.filtersModel.initializeFilters( filterStructure );
+               this.filtersModel.initializeFilters( filterStructure, namespaceStructure, tagList );
 
                this._buildBaseFilterState();
-               this._buildEmptyParameterState();
-               validParameterNames = Object.keys( this._getEmptyParameterState() )
-                       .filter( function ( param ) {
-                               // Remove 'highlight' parameter from this check;
-                               // if it's the only parameter in the URL we still
-                               // want to consider the URL 'empty' for defaults to load
-                               return param !== 'highlight';
-                       } );
+
+               this.uriProcessor = new mw.rcfilters.UriProcessor(
+                       this.filtersModel
+               );
 
                try {
                        parsedSavedQueries = JSON.parse( mw.user.options.get( 'rcfilters-saved-queries' ) || '{}' );
                // the user loads the base-page and we load defaults.
                // Defaults should only be applied on load (if necessary)
                // or on request
+               this.initializing = true;
                if (
-                       Object.keys( uri.query ).some( function ( parameter ) {
-                               return validParameterNames.indexOf( parameter ) > -1;
-                       } )
+                       this.savedQueriesModel.getDefault() &&
+                       !this.uriProcessor.doesQueryContainRecognizedParams( uri.query )
                ) {
-                       // There are parameters in the url, update model state
-                       this.updateStateBasedOnUrl();
+                       // We have defaults from a saved query.
+                       // We will load them straight-forward (as if
+                       // they were clicked in the menu) so we trigger
+                       // a full ajax request and change of URL
+                       this.applySavedQuery( this.savedQueriesModel.getDefault() );
                } else {
-                       this.initializing = true;
-                       // No valid parameters are given, load defaults
-                       this._updateModelState(
-                               $.extend(
-                                       true,
-                                       // We've ignored the highlight parameter for the sake
-                                       // of seeing whether we need to apply defaults - but
-                                       // while we do load the defaults, we still want to retain
-                                       // the actual value given in the URL for it on top of the
-                                       // defaults
-                                       { highlight: String( Number( uri.query.highlight ) ) },
-                                       this._getDefaultParams()
-                               )
+                       // There are either recognized parameters in the URL
+                       // or there are none, but there is also no default
+                       // saved query (so defaults are from the backend)
+                       // We want to update the state but not fetch results
+                       // again
+                       this.updateStateFromUrl( false );
+
+                       // Update the changes list with the existing data
+                       // so it gets processed
+                       this.changesListModel.update(
+                               $changesList.length ? $changesList : 'NO_RESULTS',
+                               $( 'fieldset.rcoptions' ).first()
                        );
-                       this.updateChangesList();
-                       this.initializing = false;
                }
 
-               // Update the changes list with the existing data
-               // so it gets processed
-               this.changesListModel.update(
-                       $changesList.length ? $changesList : 'NO_RESULTS',
-                       $( 'fieldset.rcoptions' ).first()
-               );
+               this.initializing = false;
+               this.switchView( 'default' );
+       };
+
+       /**
+        * Switch the view of the filters model
+        *
+        * @param {string} view Requested view
+        */
+       mw.rcfilters.Controller.prototype.switchView = function ( view ) {
+               this.filtersModel.switchView( view );
        };
 
        /**
         * Reset to default filters
         */
        mw.rcfilters.Controller.prototype.resetToDefaults = function () {
-               this._updateModelState( $.extend( true, { highlight: '0' }, this._getDefaultParams() ) );
+               this.uriProcessor.updateModelBasedOnQuery( this._getDefaultParams() );
                this.updateChangesList();
        };
 
                }
        };
 
+       /**
+        * Toggle the namespaces inverted feature on and off
+        */
+       mw.rcfilters.Controller.prototype.toggleInvertedNamespaces = function () {
+               this.filtersModel.toggleInvertedNamespaces();
+               this.updateChangesList();
+       };
+
        /**
         * Set the highlight color for a filter item
         *
                        label || mw.msg( 'rcfilters-savedqueries-defaultlabel' ),
                        {
                                filters: this.filtersModel.getSelectedState(),
-                               highlights: highlightedItems
+                               highlights: highlightedItems,
+                               invert: this.filtersModel.areNamespacesInverted()
                        }
                );
 
                        // Update model state from filters
                        this.filtersModel.toggleFiltersSelected( data.filters );
 
+                       // Update namespace inverted property
+                       this.filtersModel.toggleInvertedNamespaces( !!Number( data.invert ) );
+
                        // Update highlight state
                        this.filtersModel.toggleHighlight( !!Number( highlights.highlight ) );
                        this.filtersModel.getItems().forEach( function ( filterItem ) {
                return this.savedQueriesModel.findMatchingQuery(
                        {
                                filters: this.filtersModel.getSelectedState(),
-                               highlights: highlightedItems
+                               highlights: highlightedItems,
+                               invert: this.filtersModel.areNamespacesInverted()
                        }
                );
        };
 
                this.baseFilterState = {
                        filters: this.filtersModel.getFiltersFromParameters( defaultParams ),
-                       highlights: highlightedItems
+                       highlights: highlightedItems,
+                       invert: false
                };
        };
 
-       /**
-        * Build an empty representation of the parameters, where all parameters
-        * are either set to '0' or '' depending on their type.
-        * This must run during initialization, before highlights are set.
-        */
-       mw.rcfilters.Controller.prototype._buildEmptyParameterState = function () {
-               var emptyParams = this.filtersModel.getParametersFromFilters( {} ),
-                       emptyHighlights = this.filtersModel.getHighlightParameters();
-
-               this.emptyParameterState = $.extend(
-                       true,
-                       {},
-                       emptyParams,
-                       emptyHighlights,
-                       { highlight: '0' }
-               );
-       };
-
        /**
         * Get an object representing the base filter state of both
         * filters and highlights. The structure is similar to what we use
                return this.baseFilterState;
        };
 
-       /**
-        * Get an object representing the base state of parameters
-        * and highlights. The structure is similar to what we use
-        * to store each query in the saved queries object:
-        * {
-        *    param1: "value",
-        *    param2: "value1|value2"
-        * }
-        *
-        * @return {Object} Object representing the base state of
-        *  parameters and highlights
-        */
-       mw.rcfilters.Controller.prototype._getEmptyParameterState = function () {
-               return this.emptyParameterState;
-       };
-
        /**
         * Get an object that holds only the parameters and highlights that have
         * values different than the base default value.
         * without adding an history entry.
         */
        mw.rcfilters.Controller.prototype.replaceUrl = function () {
-               window.history.replaceState(
-                       { tag: 'rcfilters' },
-                       document.title,
-                       this._getUpdatedUri().toString()
-               );
+               mw.rcfilters.UriProcessor.static.replaceState( this._getUpdatedUri() );
        };
 
        /**
         * Update filter state (selection and highlighting) based
         * on current URL values.
+        *
+        * @param {boolean} [fetchChangesList=true] Fetch new results into the changes
+        *  list based on the updated model.
         */
-       mw.rcfilters.Controller.prototype.updateStateBasedOnUrl = function () {
-               var uri = new mw.Uri();
+       mw.rcfilters.Controller.prototype.updateStateFromUrl = function ( fetchChangesList ) {
+               fetchChangesList = fetchChangesList === undefined ? true : !!fetchChangesList;
 
-               this._updateModelState( uri.query );
-               this.updateChangesList();
+               this.uriProcessor.updateModelBasedOnQuery( new mw.Uri().query );
+
+               // Only update and fetch new results if it is requested
+               if ( fetchChangesList ) {
+                       this.updateChangesList();
+               }
        };
 
        /**
        };
 
        /**
-        * Update the model state from given the given parameters.
-        *
-        * This is an internal method, and should only be used from inside
-        * the controller.
+        * Get an object representing the default parameter state, whether
+        * it is from the model defaults or from the saved queries.
         *
-        * @param {Object} parameters Object representing the parameters for
-        *  filters and highlights
+        * @return {Object} Default parameters
         */
-       mw.rcfilters.Controller.prototype._updateModelState = function ( parameters ) {
-               // Update filter states
-               this.filtersModel.toggleFiltersSelected(
-                       this.filtersModel.getFiltersFromParameters(
-                               parameters
-                       )
-               );
+       mw.rcfilters.Controller.prototype._getDefaultParams = function () {
+               var data, queryHighlights,
+                       savedParams = {},
+                       savedHighlights = {},
+                       defaultSavedQueryItem = this.savedQueriesModel.getItemByID( this.savedQueriesModel.getDefault() );
 
-               // Update highlight state
-               this.filtersModel.toggleHighlight( !!Number( parameters.highlight ) );
-               this.filtersModel.getItems().forEach( function ( filterItem ) {
-                       var color = parameters[ filterItem.getName() + '_color' ];
-                       if ( color ) {
-                               filterItem.setHighlightColor( color );
-                       } else {
-                               filterItem.clearHighlightColor();
-                       }
-               } );
+               if ( mw.config.get( 'wgStructuredChangeFiltersEnableSaving' ) &&
+                       defaultSavedQueryItem ) {
 
-               // Check all filter interactions
-               this.filtersModel.reassessFilterInteractions();
+                       data = defaultSavedQueryItem.getData();
+
+                       queryHighlights = data.highlights || {};
+                       savedParams = this.filtersModel.getParametersFromFilters( data.filters || {} );
+
+                       // Translate highlights to parameters
+                       savedHighlights.highlight = String( Number( queryHighlights.highlight ) );
+                       $.each( queryHighlights, function ( filterName, color ) {
+                               if ( filterName !== 'highlights' ) {
+                                       savedHighlights[ filterName + '_color' ] = color;
+                               }
+                       } );
+
+                       return $.extend( true, {}, savedParams, savedHighlights, { invert: data.invert } );
+               }
+
+               return $.extend(
+                       { highlight: '0' },
+                       this.filtersModel.getDefaultParams()
+               );
        };
 
        /**
         * @param {Object} [params] Extra parameters to add to the API call
         */
        mw.rcfilters.Controller.prototype._updateURL = function ( params ) {
-               var currentFilterState, updatedFilterState, updatedUri,
-                       uri = new mw.Uri(),
-                       notEquivalent = function ( obj1, obj2 ) {
-                               var keys = Object.keys( obj1 ).concat( Object.keys( obj2 ) );
-                               return keys.some( function ( key ) {
-                                       return obj1[ key ] != obj2[ key ]; // eslint-disable-line eqeqeq
-                               } );
-                       };
-
-               params = params || {};
-
-               updatedUri = this._getUpdatedUri();
-               updatedUri.extend( params );
-
-               // Compare states instead of parameters
-               // This will allow us to always have a proper check of whether
-               // the requested new url is one to change or not, regardless of
-               // actual parameter visibility/representation in the URL
-               currentFilterState = this.filtersModel.getFiltersFromParameters( uri.query );
-               updatedFilterState = this.filtersModel.getFiltersFromParameters( updatedUri.query );
-
-               // Include highlight states
-               $.extend( true,
-                       currentFilterState,
-                       this.filtersModel.extractHighlightValues( uri.query ),
-                       { highlight: !!Number( uri.query.highlight ) }
-               );
-               $.extend( true,
-                       updatedFilterState,
-                       this.filtersModel.extractHighlightValues( updatedUri.query ),
-                       { highlight: !!Number( updatedUri.query.highlight ) }
-               );
+               var currentUri = new mw.Uri(),
+                       updatedUri = this._getUpdatedUri();
 
-               if ( notEquivalent( currentFilterState, updatedFilterState ) ) {
-                       if ( this.initializing ) {
-                               // Initially, when we just build the first page load
-                               // out of defaults, we want to replace the history
-                               window.history.replaceState( { tag: 'rcfilters' }, document.title, updatedUri.toString() );
-                       } else {
-                               window.history.pushState( { tag: 'rcfilters' }, document.title, updatedUri.toString() );
-                       }
+               updatedUri.extend( params || {} );
+
+               if (
+                       this.uriProcessor.getVersion( currentUri.query ) !== 2 ||
+                       this.uriProcessor.isNewState( currentUri.query, updatedUri.query )
+               ) {
+                       mw.rcfilters.UriProcessor.static.replaceState( updatedUri );
                }
        };
 
         * @return {mw.Uri} Updated Uri
         */
        mw.rcfilters.Controller.prototype._getUpdatedUri = function () {
-               var uri = new mw.Uri(),
-                       highlightParams = this.filtersModel.getHighlightParameters(),
-                       modelParameters = this.filtersModel.getParametersFromFilters(),
-                       baseParams = this._getEmptyParameterState();
-
-               // Minimize values of the model parameters; show only the values that
-               // are non-zero. We assume that all parameters that are not literally
-               // showing in the URL are set to zero or empty
-               $.each( modelParameters, function ( paramName, value ) {
-                       if ( baseParams[ paramName ] !== value ) {
-                               uri.query[ paramName ] = value;
-                       } else {
-                               // We need to remove this value from the url
-                               delete uri.query[ paramName ];
-                       }
-               } );
+               var uri = new mw.Uri();
 
-               // highlight params
-               if ( this.filtersModel.isHighlightEnabled() ) {
-                       uri.query.highlight = Number( this.filtersModel.isHighlightEnabled() );
-               } else {
-                       delete uri.query.highlight;
-               }
-               $.each( highlightParams, function ( paramName, value ) {
-                       // Only output if it is different than the base parameters
-                       if ( baseParams[ paramName ] !== value ) {
-                               uri.query[ paramName ] = value;
-                       } else {
-                               delete uri.query[ paramName ];
-                       }
-               } );
+               // Minimize url
+               uri.query = this.uriProcessor.minimizeQuery(
+                       $.extend(
+                               true,
+                               {},
+                               // We want to retain unrecognized params
+                               // The uri params from model will override
+                               // any recognized value in the current uri
+                               // query, retain unrecognized params, and
+                               // the result will then be minimized
+                               uri.query,
+                               this.uriProcessor.getUriParametersFromModel(),
+                               { urlversion: '2' }
+                       )
+               );
 
                return uri;
        };
diff --git a/resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js b/resources/src/mediawiki.rcfilters/mw.rcfilters.UriProcessor.js
new file mode 100644 (file)
index 0000000..b7852d0
--- /dev/null
@@ -0,0 +1,275 @@
+( function ( mw, $ ) {
+       /* eslint no-underscore-dangle: "off" */
+       /**
+        * URI Processor for RCFilters
+        *
+        * @param {mw.rcfilters.dm.FiltersViewModel} filtersModel Filters view model
+        */
+       mw.rcfilters.UriProcessor = function MwRcfiltersController( filtersModel ) {
+               this.emptyParameterState = {};
+               this.filtersModel = filtersModel;
+
+               // Initialize
+               this._buildEmptyParameterState();
+       };
+
+       /* Initialization */
+       OO.initClass( mw.rcfilters.UriProcessor );
+
+       /* Static methods */
+
+       /**
+        * Replace the url history through replaceState
+        *
+        * @param {mw.Uri} newUri New URI to replace
+        */
+       mw.rcfilters.UriProcessor.static.replaceState = function ( newUri ) {
+               window.history.replaceState(
+                       { tag: 'rcfilters' },
+                       document.title,
+                       newUri.toString()
+               );
+       };
+
+       /**
+        * Push the url to history through pushState
+        *
+        * @param {mw.Uri} newUri New URI to push
+        */
+       mw.rcfilters.UriProcessor.static.pushState = function ( newUri ) {
+               window.history.pushState(
+                       { tag: 'rcfilters' },
+                       document.title,
+                       newUri.toString()
+               );
+       };
+
+       /* Methods */
+
+       /**
+        * Get the version that this URL query is tagged with.
+        *
+        * @param {Object} [uriQuery] URI query
+        * @return {number} URL version
+        */
+       mw.rcfilters.UriProcessor.prototype.getVersion = function ( uriQuery ) {
+               uriQuery = uriQuery || new mw.Uri().query;
+
+               return Number( uriQuery.urlversion || 1 );
+       };
+
+       /**
+        * Update the filters model based on the URI query
+        * This happens on initialization, and from this moment on,
+        * we consider the system synchronized, and the model serves
+        * as the source of truth for the URL.
+        *
+        * This methods should only be called once on initialiation.
+        * After initialization, the model updates the URL, not the
+        * other way around.
+        *
+        * @param {Object} [uriQuery] URI query
+        */
+       mw.rcfilters.UriProcessor.prototype.updateModelBasedOnQuery = function ( uriQuery ) {
+               var parameters = this._getNormalizedQueryParams( uriQuery || new mw.Uri().query );
+
+               // Update filter states
+               this.filtersModel.toggleFiltersSelected(
+                       this.filtersModel.getFiltersFromParameters(
+                               parameters
+                       )
+               );
+
+               this.filtersModel.toggleInvertedNamespaces( !!Number( parameters.invert ) );
+
+               // Update highlight state
+               this.filtersModel.toggleHighlight( !!Number( parameters.highlight ) );
+               this.filtersModel.getItems().forEach( function ( filterItem ) {
+                       var color = parameters[ filterItem.getName() + '_color' ];
+                       if ( color ) {
+                               filterItem.setHighlightColor( color );
+                       } else {
+                               filterItem.clearHighlightColor();
+                       }
+               } );
+
+               // Check all filter interactions
+               this.filtersModel.reassessFilterInteractions();
+       };
+
+       /**
+        * Get parameters representing the current state of the model
+        *
+        * @return {Object} Uri query parameters
+        */
+       mw.rcfilters.UriProcessor.prototype.getUriParametersFromModel = function () {
+               return $.extend(
+                       true,
+                       {},
+                       this.filtersModel.getParametersFromFilters(),
+                       this.filtersModel.getHighlightParameters(),
+                       {
+                               highlight: String( Number( this.filtersModel.isHighlightEnabled() ) ),
+                               invert: String( Number( this.filtersModel.areNamespacesInverted() ) )
+                       }
+               );
+       };
+
+       /**
+        * Build the full parameter representation based on given query parameters
+        *
+        * @private
+        * @param {Object} uriQuery Given URI query
+        * @return {Object} Full parameter state representing the URI query
+        */
+       mw.rcfilters.UriProcessor.prototype._expandModelParameters = function ( uriQuery ) {
+               var filterRepresentation = this.filtersModel.getFiltersFromParameters( uriQuery );
+
+               return $.extend( true,
+                       {},
+                       uriQuery,
+                       this.filtersModel.getParametersFromFilters( filterRepresentation ),
+                       this.filtersModel.extractHighlightValues( uriQuery ),
+                       {
+                               highlight: String( Number( uriQuery.highlight ) ),
+                               invert: String( Number( uriQuery.invert ) )
+                       }
+               );
+       };
+
+       /**
+        * Compare two URI queries to decide whether they are different
+        * enough to represent a new state.
+        *
+        * @param {Object} currentUriQuery Current Uri query
+        * @param {Object} updatedUriQuery Updated Uri query
+        * @return {boolean} This is a new state
+        */
+       mw.rcfilters.UriProcessor.prototype.isNewState = function ( currentUriQuery, updatedUriQuery ) {
+               var currentParamState, updatedParamState,
+                       notEquivalent = function ( obj1, obj2 ) {
+                               var keys = Object.keys( obj1 ).concat( Object.keys( obj2 ) );
+                               return keys.some( function ( key ) {
+                                       return obj1[ key ] != obj2[ key ]; // eslint-disable-line eqeqeq
+                               } );
+                       };
+
+               // Compare states instead of parameters
+               // This will allow us to always have a proper check of whether
+               // the requested new url is one to change or not, regardless of
+               // actual parameter visibility/representation in the URL
+               currentParamState = this._expandModelParameters( currentUriQuery );
+               updatedParamState = this._expandModelParameters( updatedUriQuery );
+
+               return notEquivalent( currentParamState, updatedParamState );
+       };
+
+       /**
+        * Check whether the given query has parameters that are
+        * recognized as parameters we should load the system with
+        *
+        * @param {mw.Uri} [uriQuery] Given URI query
+        * @return {boolean} Query contains valid recognized parameters
+        */
+       mw.rcfilters.UriProcessor.prototype.doesQueryContainRecognizedParams = function ( uriQuery ) {
+               var anyValidInUrl,
+                       validParameterNames = Object.keys( this._getEmptyParameterState() )
+                               .filter( function ( param ) {
+                                       // Remove 'highlight' parameter from this check;
+                                       // if it's the only parameter in the URL we still
+                                       // want to consider the URL 'empty' for defaults to load
+                                       return param !== 'highlight';
+                               } );
+
+               uriQuery = uriQuery || new mw.Uri().query;
+
+               anyValidInUrl = Object.keys( uriQuery ).some( function ( parameter ) {
+                       return validParameterNames.indexOf( parameter ) > -1;
+               } );
+
+               // URL version 2 is allowed to be empty or within nonrecognized params
+               return anyValidInUrl || this.getVersion( uriQuery ) === 2;
+       };
+
+       /**
+        * Remove all parameters that have the same value as the base state
+        * This method expects uri queries of the urlversion=2 format
+        *
+        * @private
+        * @param {Object} uriQuery Current uri query
+        * @return {Object} Minimized query
+        */
+       mw.rcfilters.UriProcessor.prototype.minimizeQuery = function ( uriQuery ) {
+               var baseParams = this._getEmptyParameterState(),
+                       uriResult = $.extend( true, {}, uriQuery );
+
+               $.each( uriResult, function ( paramName, paramValue ) {
+                       if (
+                               baseParams[ paramName ] !== undefined &&
+                               baseParams[ paramName ] === paramValue
+                       ) {
+                               // Remove parameter from query
+                               delete uriResult[ paramName ];
+                       }
+               } );
+
+               return uriResult;
+       };
+
+       /**
+        * Get the adjusted URI params based on the url version
+        * If the urlversion is not 2, the parameters are merged with
+        * the model's defaults.
+        *
+        * @private
+        * @param {Object} uriQuery Current URI query
+        * @return {Object} Normalized parameters
+        */
+       mw.rcfilters.UriProcessor.prototype._getNormalizedQueryParams = function ( uriQuery ) {
+               // Check whether we are dealing with urlversion=2
+               // If we are, we do not merge the initial request with
+               // defaults. Not having urlversion=2 means we need to
+               // reproduce the server-side request and merge the
+               // requested parameters (or starting state) with the
+               // wiki default.
+               // Any subsequent change of the URL through the RCFilters
+               // system will receive 'urlversion=2'
+               var base = this.getVersion( uriQuery ) === 2 ?
+                       {} :
+                       this.filtersModel.getDefaultParams();
+
+               return this.minimizeQuery(
+                       $.extend( true, {}, base, uriQuery, { urlversion: '2' } )
+               );
+       };
+
+       /**
+        * Get the representation of an empty parameter state
+        *
+        * @private
+        * @return {Object} Empty parameter state
+        */
+       mw.rcfilters.UriProcessor.prototype._getEmptyParameterState = function () {
+               return this.emptyParameterState;
+       };
+
+       /**
+        * Build an empty representation of the parameters, where all parameters
+        * are either set to '0' or '' depending on their type.
+        * This must run during initialization, before highlights are set.
+        *
+        * @private
+        */
+       mw.rcfilters.UriProcessor.prototype._buildEmptyParameterState = function () {
+               var emptyParams = this.filtersModel.getParametersFromFilters( {} ),
+                       emptyHighlights = this.filtersModel.getHighlightParameters();
+
+               this.emptyParameterState = $.extend(
+                       true,
+                       {},
+                       emptyParams,
+                       emptyHighlights,
+                       { highlight: '0', invert: '0' }
+               );
+       };
+}( mediaWiki, jQuery ) );
index dd8fae0..6cd2d0b 100644 (file)
                        new mw.rcfilters.ui.ChangesListWrapperWidget(
                                filtersModel, changesListModel, $( '.mw-changeslist, .mw-changeslist-empty' ) );
 
-                       controller.initialize( mw.config.get( 'wgStructuredChangeFilters' ) );
+                       controller.initialize(
+                               mw.config.get( 'wgStructuredChangeFilters' ),
+                               mw.config.get( 'wgFormattedNamespaces' ),
+                               mw.config.get( 'wgRCFiltersChangeTags' )
+                       );
 
                        // eslint-disable-next-line no-new
                        new mw.rcfilters.ui.FormWrapperWidget(
                        // Set as ready
                        $( '.rcfilters-head' ).addClass( 'mw-rcfilters-ui-ready' );
 
-                       window.addEventListener( 'popstate', function () {
-                               controller.updateStateBasedOnUrl();
-                               controller.updateChangesList();
-                       } );
-
                        $( 'a.mw-helplink' ).attr(
                                'href',
                                'https://www.mediawiki.org/wiki/Special:MyLanguage/Help:New_filters_for_edit_review'
index 4914dd9..24907b9 100644 (file)
@@ -12,6 +12,7 @@
                border-bottom: 1px solid #c8ccd1;
                background: #f8f9fa;
 
+               &-invert,
                &-highlight {
                        width: 1em;
                        vertical-align: middle;
index 1029d54..1a29459 100644 (file)
@@ -3,4 +3,8 @@
        width: 100%;
        // Make sure this uses the interface direction, not the content direction
        direction: ltr;
+
+       &-viewToggleButtons {
+               margin-top: 1em;
+       }
 }
index 44c5529..86bfafb 100644 (file)
@@ -1,6 +1,7 @@
 @import 'mediawiki.mixins';
 
 .mw-rcfilters-ui-itemMenuOptionWidget {
+       min-height: 3.5em;
        padding: 0 0.5em;
        .box-sizing( border-box );
 
@@ -8,6 +9,15 @@
                border-bottom: solid 1px #eaecf0; // Base 80 AAA
        }
 
+       &-view-namespaces {
+               border-top: 5px solid #ccc;
+
+               &:first-child,
+               &.mw-rcfilters-ui-itemMenuOptionWidget-identifier-subject + &.mw-rcfilters-ui-itemMenuOptionWidget-identifier-talk {
+                       border-top: 0;
+               }
+       }
+
        &:hover {
                background-color: #fbfbfb;
        }
                }
        }
 
+       .mw-rcfilters-ui-cell {
+               vertical-align: middle;
+       }
+
+       &-excludeLabel {
+               width: 5em;
+               padding-left: 1em;
+               color: #54595d; // Base20 AAA
+       }
+
        &-highlightButton {
                width: 4em;
                padding-left: 1em;
index 15e7eee..b8b68a7 100644 (file)
                        classes: [ 'mw-rcfilters-ui-filterMenuHeaderWidget-hightlightButton' ]
                } );
 
+               // Invert namespaces button
+               this.invertNamespacesButton = new OO.ui.ToggleButtonWidget( {
+                       icon: '',
+                       label: mw.msg( 'invert' ),
+                       classes: [ 'mw-rcfilters-ui-filterMenuHeaderWidget-invertNamespacesButton' ]
+               } );
+               this.invertNamespacesButton.toggle( this.model.getCurrentView() === 'namespaces' );
+
                // Events
                this.highlightButton
                        .connect( this, { click: 'onHighlightButtonClick' } );
-               this.model.connect( this, { highlightChange: 'onModelHighlightChange' } );
+               this.invertNamespacesButton
+                       .connect( this, { click: 'onInvertNamespacesButtonClick' } );
+               this.model.connect( this, {
+                       highlightChange: 'onModelHighlightChange',
+                       invertChange: 'onModelInvertChange',
+                       update: 'onModelUpdate'
+               } );
 
                // Initialize
                this.$element
                                                                        .addClass( 'mw-rcfilters-ui-cell' )
                                                                        .addClass( 'mw-rcfilters-ui-filterMenuHeaderWidget-header-title' )
                                                                        .append( this.$label ),
+                                                               $( '<div>' )
+                                                                       .addClass( 'mw-rcfilters-ui-cell' )
+                                                                       .addClass( 'mw-rcfilters-ui-filterMenuHeaderWidget-header-invert' )
+                                                                       .append( this.invertNamespacesButton.$element ),
                                                                $( '<div>' )
                                                                        .addClass( 'mw-rcfilters-ui-cell' )
                                                                        .addClass( 'mw-rcfilters-ui-filterMenuHeaderWidget-header-highlight' )
 
        /* Methods */
 
+       /**
+        * Respond to model update event
+        */
+       mw.rcfilters.ui.FilterMenuHeaderWidget.prototype.onModelUpdate = function () {
+               this.setLabel( this.model.getCurrentViewLabel() );
+
+               this.invertNamespacesButton.toggle( this.model.getCurrentView() === 'namespaces' );
+       };
+
        /**
         * Respond to model highlight change event
         *
                this.highlightButton.setActive( highlightEnabled );
        };
 
+       /**
+        * Respond to model invert change event
+        *
+        * @param {boolean} isInverted Namespaces selection is inverted
+        */
+       mw.rcfilters.ui.FilterMenuHeaderWidget.prototype.onModelInvertChange = function ( isInverted ) {
+               this.invertNamespacesButton.setActive( isInverted );
+       };
+
        /**
         * Respond to highlight button click
         */
        mw.rcfilters.ui.FilterMenuHeaderWidget.prototype.onHighlightButtonClick = function () {
                this.controller.toggleHighlight();
        };
+
+       /**
+        * Respond to highlight button click
+        */
+       mw.rcfilters.ui.FilterMenuHeaderWidget.prototype.onInvertNamespacesButtonClick = function () {
+               this.controller.toggleInvertedNamespaces();
+       };
 }( mediaWiki, jQuery ) );
index e14c1fa..268138f 100644 (file)
                this.resetButton.$element.on( 'mousedown', function ( e ) { e.stopPropagation(); } );
                this.model.connect( this, {
                        initialize: 'onModelInitialize',
+                       update: 'onModelUpdate',
                        itemUpdate: 'onModelItemUpdate',
                        highlightChange: 'onModelHighlightChange'
                } );
+               this.input.connect( this, { change: 'onInputChange' } );
                this.queriesModel.connect( this, { itemUpdate: 'onSavedQueriesItemUpdate' } );
 
                // The filter list and button should appear side by side regardless of how
                this.$element
                        .addClass( 'mw-rcfilters-ui-filterTagMultiselectWidget' );
 
-               this.populateFromModel();
                this.reevaluateResetRestoreState();
        };
 
 
        /* Methods */
 
+       /**
+        * Respond to input change event
+        *
+        * @param {string} value Value of the input
+        */
+       mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onInputChange = function ( value ) {
+               var view = this.model.getViewByTrigger( value.substr( 0, 1 ) );
+
+               this.controller.switchView( view );
+       };
        /**
         * Respond to query button click
         */
                } else {
                        // Clear selection
                        this.selectTag( null );
+
+                       // Clear input if the only thing in the input is the prefix
+                       if (
+                               this.input.getValue() === this.model.getViewTrigger( this.model.getCurrentView() )
+                       ) {
+                               // Clear the input
+                               this.input.setValue( '' );
+                       }
                }
        };
 
         * Respond to model initialize event
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onModelInitialize = function () {
-               this.populateFromModel();
-
                this.setSavedQueryVisibility();
        };
 
+       /**
+        * Respond to model update event
+        */
+       mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onModelUpdate = function () {
+               this.updateElementsForView();
+       };
+
+       /**
+        * Update the elements in the widget to the current view
+        */
+       mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.updateElementsForView = function () {
+               var view = this.model.getCurrentView(),
+                       inputValue = this.input.getValue(),
+                       inputView = this.model.getViewByTrigger( inputValue.substr( 0, 1 ) );
+
+               if ( inputView !== 'default' ) {
+                       // We have a prefix already, remove it
+                       inputValue = inputValue.substr( 1 );
+               }
+
+               if ( inputView !== view ) {
+                       // Add the correct prefix
+                       inputValue = this.model.getViewTrigger( view ) + inputValue;
+               }
+
+               // Update input
+               this.input.setValue( inputValue );
+       };
+
        /**
         * Set the visibility of the saved query button
         */
                        );
                }
        };
+
        /**
         * Respond to model itemUpdate event
         *
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.isAllowedData = function ( data ) {
                return (
-                       this.menu.getItemFromData( data ) &&
+                       this.model.getItemByName( data ) &&
                        !this.isDuplicateData( data )
                );
        };
         */
        mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.onTagSelect = function ( tagItem ) {
                var widget = this,
-                       menuOption = this.menu.getItemFromData( tagItem.getData() ),
+                       menuOption = this.menu.getItemFromModel( tagItem.getModel() ),
                        oldInputValue = this.input.getValue();
 
                // Reset input
                this.input.setValue( '' );
 
+               // Switch view
+               this.controller.switchView( tagItem.getView() );
+
                // Parent method
                mw.rcfilters.ui.FilterTagMultiselectWidget.parent.prototype.onTagSelect.call( this, tagItem );
 
                );
        };
 
-       /**
-        * Populate the menu from the model
-        */
-       mw.rcfilters.ui.FilterTagMultiselectWidget.prototype.populateFromModel = function () {
-               var widget = this,
-                       items = [];
-
-               // Reset
-               this.getMenu().clearItems();
-
-               $.each( this.model.getFilterGroups(), function ( groupName, groupModel ) {
-                       items.push(
-                               // Group section
-                               new mw.rcfilters.ui.FilterMenuSectionOptionWidget(
-                                       widget.controller,
-                                       groupModel,
-                                       {
-                                               $overlay: widget.$overlay
-                                       }
-                               )
-                       );
-
-                       // Add items
-                       widget.model.getGroupFilters( groupName ).forEach( function ( filterItem ) {
-                               items.push(
-                                       new mw.rcfilters.ui.FilterMenuOptionWidget(
-                                               widget.controller,
-                                               filterItem,
-                                               {
-                                                       $overlay: widget.$overlay
-                                               }
-                                       )
-                               );
-                       } );
-               } );
-
-               // Add all items to the menu
-               this.getMenu().addItems( items );
-       };
-
        /**
         * @inheritdoc
         */
index ebef62f..4626514 100644 (file)
                        { $overlay: this.$overlay }
                );
 
+               this.viewToggle = new OO.ui.ButtonSelectWidget( {
+                       classes: [ 'mw-rcfilters-ui-filterWrapperWidget-viewToggleButtons' ],
+                       items: [
+                               new OO.ui.ButtonOptionWidget( {
+                                       data: 'namespaces',
+                                       label: mw.msg( 'namespaces' ),
+                                       icon: 'article',
+                                       classes: [ 'mw-rcfilters-ui-filterWrapperWidget-viewToggleButtons-namespaces' ]
+                               } ),
+                               new OO.ui.ButtonOptionWidget( {
+                                       data: 'tags',
+                                       label: mw.msg( 'rcfilters-view-tags' ),
+                                       icon: 'tag',
+                                       classes: [ 'mw-rcfilters-ui-filterWrapperWidget-viewToggleButtons-tags' ]
+                               } )
+                       ]
+               } );
+
+               // Events
+               this.model.connect( this, { update: 'onModelUpdate' } );
+               this.viewToggle.connect( this, { select: 'onViewToggleSelect' } );
+
                // Initialize
                this.$element
                        .addClass( 'mw-rcfilters-ui-filterWrapperWidget' );
                }
 
                this.$element.append(
-                       this.filterTagWidget.$element
+                       this.filterTagWidget.$element,
+                       this.viewToggle.$element
                );
+               this.viewToggle.toggle( !!mw.config.get( 'wgStructuredChangeFiltersEnableExperimentalViews' ) );
        };
 
        /* Initialization */
 
        OO.inheritClass( mw.rcfilters.ui.FilterWrapperWidget, OO.ui.Widget );
        OO.mixinClass( mw.rcfilters.ui.FilterWrapperWidget, OO.ui.mixin.PendingElement );
+
+       /* Methods */
+
+       /**
+        * Respond to model update event
+        */
+       mw.rcfilters.ui.FilterWrapperWidget.prototype.onModelUpdate = function () {
+               // Synchronize the state of the toggle buttons with the current view
+               this.viewToggle.selectItemByData( this.model.getCurrentView() );
+       };
+
+       /**
+        * Respond to namespace toggle button click
+        *
+        * @param {OO.ui.ButtonWidget} buttonWidget The button that was clicked
+        */
+       mw.rcfilters.ui.FilterWrapperWidget.prototype.onViewToggleSelect = function ( buttonWidget ) {
+               if ( buttonWidget ) {
+                       this.controller.switchView( buttonWidget.getData() );
+                       this.filterTagWidget.focus();
+               }
+       };
+
 }( mediaWiki ) );
index d17ffff..4e1ae97 100644 (file)
 
                // Collect all data from form
                $( e.target ).find( 'input:not([type="hidden"],[type="submit"]), select' ).each( function () {
+                       var value = '';
+
                        if ( !$( this ).is( ':checkbox' ) || $( this ).is( ':checked' ) ) {
-                               data[ $( this ).prop( 'name' ) ] = $( this ).val();
+                               value = $( this ).val();
                        }
+
+                       data[ $( this ).prop( 'name' ) ] = value;
                } );
 
                this.controller.updateChangesList( data );
         */
        mw.rcfilters.ui.FormWrapperWidget.prototype.cleanUpFieldset = function () {
                var $namespaceSelect = this.$element.find( '#namespace' ),
-                       $namespaceCheckboxes = this.$element.find( '#nsassociated, #nsinvert' ),
                        collapseCookieName = 'changeslist-state';
 
                this.$element.find( '.rcshowhideoption[data-feature-in-structured-ui=1]' ).each( function () {
                        this.parentNode.removeChild( this );
                } );
 
-               // Bind namespace select to change event
-               // see resources/src/mediawiki.special/mediawiki.special.recentchanges.js
-               $namespaceCheckboxes.prop( 'disabled', $namespaceSelect.val() === '' );
-               $namespaceSelect.on( 'change', function () {
-                       $namespaceCheckboxes.prop( 'disabled', $( this ).val() === '' );
-               } );
+               // Hide namespaces and tags
+               if ( mw.config.get( 'wgStructuredChangeFiltersEnableExperimentalViews' ) ) {
+                       $namespaceSelect.closest( 'tr' ).detach();
+                       this.$element.find( '.mw-tagfilter-label' ).closest( 'tr' ).detach();
+               }
 
                // Collapse legend
                // see resources/src/mediawiki.special/mediawiki.special.changelist.legend.js
index a88d119..f2e9b1d 100644 (file)
@@ -11,6 +11,7 @@
         */
        mw.rcfilters.ui.ItemMenuOptionWidget = function MwRcfiltersUiItemMenuOptionWidget( controller, model, config ) {
                var layout,
+                       classes = [],
                        $label = $( '<div>' )
                                .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget-label' );
 
                );
                this.highlightButton.toggle( this.model.isHighlightEnabled() );
 
+               this.excludeLabel = new OO.ui.LabelWidget( {
+                       label: mw.msg( 'rcfilters-filter-excluded' )
+               } );
+               this.excludeLabel.toggle( this.model.isSelected() && this.model.isInverted() );
+
                layout = new OO.ui.FieldLayout( this.checkboxWidget, {
                        label: $label,
                        align: 'inline'
@@ -71,6 +77,7 @@
 
                this.$element
                        .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget' )
+                       .addClass( 'mw-rcfilters-ui-itemMenuOptionWidget-view-' + this.model.getGroupModel().getView() )
                        .append(
                                $( '<div>' )
                                        .addClass( 'mw-rcfilters-ui-table' )
                                                                $( '<div>' )
                                                                        .addClass( 'mw-rcfilters-ui-cell mw-rcfilters-ui-itemMenuOptionWidget-itemCheckbox' )
                                                                        .append( layout.$element ),
+                                                               $( '<div>' )
+                                                                       .addClass( 'mw-rcfilters-ui-cell mw-rcfilters-ui-itemMenuOptionWidget-excludeLabel' )
+                                                                       .append( this.excludeLabel.$element ),
                                                                $( '<div>' )
                                                                        .addClass( 'mw-rcfilters-ui-cell mw-rcfilters-ui-itemMenuOptionWidget-highlightButton' )
                                                                        .append( this.highlightButton.$element )
                                                        )
                                        )
                        );
+
+               if ( this.model.getIdentifiers() ) {
+                       this.model.getIdentifiers().forEach( function ( ident ) {
+                               classes.push( 'mw-rcfilters-ui-itemMenuOptionWidget-identifier-' + ident );
+                       } );
+
+                       this.$element.addClass( classes.join( ' ' ) );
+               }
        };
 
        /* Initialization */
                this.checkboxWidget.setSelected( this.model.isSelected() );
 
                this.highlightButton.toggle( this.model.isHighlightEnabled() );
+               this.excludeLabel.toggle( this.model.isSelected() && this.model.isInverted() );
        };
 
        /**
index 91de969..d971faf 100644 (file)
@@ -18,6 +18,8 @@
 
                this.controller = controller;
                this.model = model;
+               this.currentView = '';
+               this.views = {};
 
                this.inputValue = '';
                this.$overlay = config.$overlay || this.$element;
                        classes: [ 'mw-rcfilters-ui-menuSelectWidget-noresults' ]
                } );
 
+               // Events
+               this.model.connect( this, {
+                       update: 'onModelUpdate',
+                       initialize: 'onModelInitialize'
+               } );
+
+               // Initialization
                this.$element
                        .addClass( 'mw-rcfilters-ui-menuSelectWidget' )
                        .append( header.$element )
@@ -64,6 +73,7 @@
                                        .addClass( 'mw-rcfilters-ui-menuSelectWidget-footer' )
                        );
                }
+               this.switchView( this.model.getCurrentView() );
        };
 
        /* Initialize */
 
        /* Methods */
 
+       /**
+        * Respond to model update event
+        */
+       mw.rcfilters.ui.MenuSelectWidget.prototype.onModelUpdate = function () {
+               // Change view
+               this.switchView( this.model.getCurrentView() );
+       };
+
+       /**
+        * Respond to model initialize event. Populate the menu from the model
+        */
+       mw.rcfilters.ui.MenuSelectWidget.prototype.onModelInitialize = function () {
+               var widget = this,
+                       viewGroupCount = {},
+                       groups = this.model.getFilterGroups();
+
+               // Reset
+               this.clearItems();
+
+               // Count groups per view
+               $.each( groups, function ( groupName, groupModel ) {
+                       viewGroupCount[ groupModel.getView() ] = viewGroupCount[ groupModel.getView() ] || 0;
+                       viewGroupCount[ groupModel.getView() ]++;
+               } );
+
+               $.each( groups, function ( groupName, groupModel ) {
+                       var currentItems = [],
+                               view = groupModel.getView();
+
+                       if ( viewGroupCount[ view ] > 1 ) {
+                               // Only add a section header if there is more than
+                               // one group
+                               currentItems.push(
+                                       // Group section
+                                       new mw.rcfilters.ui.FilterMenuSectionOptionWidget(
+                                               widget.controller,
+                                               groupModel,
+                                               {
+                                                       $overlay: widget.$overlay
+                                               }
+                                       )
+                               );
+                       }
+
+                       // Add items
+                       widget.model.getGroupFilters( groupName ).forEach( function ( filterItem ) {
+                               currentItems.push(
+                                       new mw.rcfilters.ui.FilterMenuOptionWidget(
+                                               widget.controller,
+                                               filterItem,
+                                               {
+                                                       $overlay: widget.$overlay
+                                               }
+                                       )
+                               );
+                       } );
+
+                       // Cache the items per view, so we can switch between them
+                       // without rebuilding the widgets each time
+                       widget.views[ view ] = widget.views[ view ] || [];
+                       widget.views[ view ] = widget.views[ view ].concat( currentItems );
+               } );
+
+               this.switchView( this.model.getCurrentView() );
+       };
+
+       /**
+        * Switch view
+        *
+        * @param {string} [viewName] View name. If not given, default is used.
+        */
+       mw.rcfilters.ui.MenuSelectWidget.prototype.switchView = function ( viewName ) {
+               viewName = viewName || 'default';
+
+               if ( this.views[ viewName ] && this.currentView !== viewName ) {
+                       this.clearItems();
+                       this.addItems( this.views[ viewName ] );
+
+                       this.$element
+                               .data( 'view', viewName )
+                               .removeClass( 'mw-rcfilters-ui-menuSelectWidget-view-' + this.currentView )
+                               .addClass( 'mw-rcfilters-ui-menuSelectWidget-view-' + viewName );
+
+                       this.currentView = viewName;
+               }
+       };
+
        /**
         * @fires itemVisibilityChange
         * @inheritdoc
                }
        };
 
+       /**
+        * Get the option widget that matches the model given
+        *
+        * @param {mw.rcfilters.dm.ItemModel} model Item model
+        * @return {mw.rcfilters.ui.ItemMenuOptionWidget} Option widget
+        */
+       mw.rcfilters.ui.MenuSelectWidget.prototype.getItemFromModel = function ( model ) {
+               return this.views[ model.getGroupModel().getView() ].filter( function ( item ) {
+                       return item.getName() === model.getName();
+               } )[ 0 ];
+       };
+
        /**
         * Override the item matcher to use the model's match process
         *
index 637dbdc..886f6d4 100644 (file)
@@ -22,7 +22,7 @@
 
                mw.rcfilters.ui.TagItemWidget.parent.call( this, $.extend( {
                        data: this.model.getName(),
-                       label: this.model.getLabel()
+                       label: $( '<div>' ).html( this.model.getPrefixedLabel() ).contents()
                }, config ) );
 
                this.$overlay = config.$overlay || this.$element;
@@ -78,6 +78,9 @@
        mw.rcfilters.ui.TagItemWidget.prototype.onModelUpdate = function () {
                this.setCurrentMuteState();
 
+               // Update label if needed
+               this.setLabel( $( '<div>' ).html( this.model.getPrefixedLabel() ).contents() );
+
                this.setHighlightColor();
        };
 
                return this.model.getName();
        };
 
+       /**
+        * Get item model
+        *
+        * @return {string} Filter model
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.getModel = function () {
+               return this.model;
+       };
+
+       /**
+        * Get item view
+        *
+        * @return {string} Filter view
+        */
+       mw.rcfilters.ui.TagItemWidget.prototype.getView = function () {
+               return this.model.getGroupModel().getView();
+       };
+
        /**
         * Remove and destroy external elements of this widget
         */
index 92e3e1c..992ce99 100644 (file)
                #mw-interwiki-results {
                        width: 30%;
                        display: inline-block; /* used to align interwiki sidebar with the top of the main search results */
-                       margin-left: 10%;
+                       margin-left: 8%; /* since inline-block causes whitespace issues, this is 8 instead of 10% */
                }
                .mw-search-createlink,
                .mw-search-nonefound,
index 95c77f8..84e146a 100644 (file)
@@ -32,7 +32,8 @@
         * Retrieve value from device storage.
         *
         * @param {string} key Key of item to retrieve
-        * @return {string|boolean} False when localStorage not available, otherwise string
+        * @return {string|null|boolean} String value, null if no value exists, or false
+        *  if localStorage is not available.
         */
        SafeStorage.prototype.get = function ( key ) {
                try {
index 9ef6c43..53e8d93 100644 (file)
@@ -6,9 +6,7 @@
                $content.find( '.toc' ).addBack( '.toc' ).each( function () {
                        var hideToc,
                                $this = $( this ),
-                               // .toctitle is new so may not exist in HTML caches for a few weeks,
-                               // so keep checking for #toctitle for now
-                               $tocTitle = $this.find( '.toctitle, #toctitle' ),
+                               $tocTitle = $this.find( '.toctitle' ),
                                $tocToggleLink = $this.find( '.togglelink' ),
                                $tocList = $this.find( 'ul' ).eq( 0 );
 
index 69fee30..44bcdff 100644 (file)
@@ -8301,6 +8301,21 @@ subpage
 <p><a rel="mw:WikiLink" href="./User:Test/123#a" data-parsoid='{"stx":"piped","a":{"href":"./User:Test/123#a"},"sa":{"href":"#a"}}'>b</a></p>
 !! end
 
+!! test
+Serialization of purely hash wikilink
+!! options
+title=[[User:Test/123]]
+subpage
+parsoid=html2wt
+!! html/parsoid
+<p><a href="#a">[[</a></p>
+!! wikitext
+[[#a|<nowiki>[[</nowiki>]]
+!! html/php
+<p><a href="#a">[[</a>
+</p>
+!! end
+
 !! test
 1. Interaction of linktrail and template encapsulation
 !! wikitext
@@ -15937,7 +15952,7 @@ Section headings with TOC
 Some text
 ===Another headline===
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Headline_1"><span class="tocnumber">1</span> <span class="toctext">Headline 1</span></a>
 <ul>
@@ -15980,7 +15995,7 @@ __FORCETOC__
 == Headline 2 ==
 == Headline ==
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Headline_2"><span class="tocnumber">1</span> <span class="toctext">Headline 2</span></a></li>
 <li class="toclevel-1 tocsection-2"><a href="#Headline"><span class="tocnumber">2</span> <span class="toctext">Headline</span></a></li>
@@ -16011,7 +16026,7 @@ Handling of sections up to level 6 and beyond
 ========= Level 9 Heading=========
 ========== Level 10 Heading==========
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Level_1_Heading"><span class="tocnumber">1</span> <span class="toctext">Level 1 Heading</span></a>
 <ul>
@@ -16064,7 +16079,7 @@ TOC regression (T11764)
 == title 2 ==
 === title 2.1 ===
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
 <ul>
@@ -16099,7 +16114,7 @@ TOC for heading containing <span id="..."></span> (T96153)
 __FORCETOC__
 ==<span id="old-anchor"></span>New title==
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#New_title"><span class="tocnumber">1</span> <span class="toctext">New title</span></a></li>
 </ul>
@@ -16121,7 +16136,7 @@ wgMaxTocLevel=3
 == title 2 ==
 === title 2.1 ===
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
 <ul>
@@ -16157,7 +16172,7 @@ wgMaxTocLevel=3
 ====Section 1.1.1.1====
 ==Section 2==
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Section_1"><span class="tocnumber">1</span> <span class="toctext">Section 1</span></a>
 <ul>
@@ -16250,7 +16265,7 @@ __TOC__
 === title 1.1 ===
 == title 2 ==
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#title_1"><span class="tocnumber">1</span> <span class="toctext">title 1</span></a>
 <ul>
@@ -16317,7 +16332,7 @@ section 5
 !! html
 <p>The tooltips shall not show entities to the user (ie. be double escaped)
 </p>
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#text_.3E_text"><span class="tocnumber">1</span> <span class="toctext">text &gt; text</span></a></li>
 <li class="toclevel-1 tocsection-2"><a href="#text_.3C_text"><span class="tocnumber">2</span> <span class="toctext">text &lt; text</span></a></li>
@@ -16376,7 +16391,7 @@ section 6
 !! html
 <p>Id should not contain + for spaces
 </p>
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Space_between_Text"><span class="tocnumber">1</span> <span class="toctext">Space between Text</span></a></li>
 <li class="toclevel-1 tocsection-2"><a href="#Space-Entity_between_Text"><span class="tocnumber">2</span> <span class="toctext">Space-Entity&#32;between&#32;Text</span></a></li>
@@ -16422,7 +16437,7 @@ Headers with excess '=' characters
 =''italic'' heading==
 ==''italic'' heading=
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#foo.3D"><span class="tocnumber">1</span> <span class="toctext">foo=</span></a></li>
 <li class="toclevel-1 tocsection-2"><a href="#.3Dfoo"><span class="tocnumber">2</span> <span class="toctext">=foo</span></a></li>
@@ -16452,7 +16467,7 @@ HTML headers vs TOC (T25393)
 == Header 2.2 ==
 __NOEDITSECTION__
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1"><a href="#Header_1"><span class="tocnumber">1</span> <span class="toctext">Header 1</span></a>
 <ul>
@@ -17895,6 +17910,19 @@ Sanitizer: Validating that <meta> and <link> work, but only for Microdata
 
 !! end
 
+!! test
+Sanitizer: Strip comments from CSS attributes
+!! options
+parsoid=wt2html,wt2wt
+!! wikitext
+<span style="margin:/*negate mbox-text padding */-0.125em -0.45em; /*rainbow*/rgba(255, 0, 0, 0.3)">2013</span>
+!! html/php
+<p><span style="margin: -0.125em -0.45em;  rgba(255, 0, 0, 0.3)">2013</span>
+</p>
+!! html/parsoid
+<p><span style="margin: -0.125em -0.45em;  rgba(255, 0, 0, 0.3)">2013</span></p>
+!! end
+
 !! test
 Language converter: output gets cut off unexpectedly (T7757)
 !! options
@@ -18240,7 +18268,7 @@ Fuzz testing: Parser14
 http://__TOC__
 !! html
 <h2><span class="mw-headline" id="onmouseover.3D">onmouseover=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: onmouseover=">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
-http://<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+http://<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#onmouseover.3D"><span class="tocnumber">1</span> <span class="toctext">onmouseover=</span></a></li>
 </ul>
@@ -18251,7 +18279,7 @@ http://<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Content
 <h2><span class="mw-headline" id="onmouseover.3D">onmouseover=</span><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Edit section: onmouseover=">edit</a><span class="mw-editsection-bracket">]</span></span></h2>
 <p>http://</p>
 <div id="toc" class="toc">
-<div id="toctitle" class="toctitle">
+<div class="toctitle">
 <h2>Contents</h2>
 </div>
 <ul>
@@ -20733,7 +20761,7 @@ Out-of-order TOC heading levels
 =====5=====
 ==2==
 !! html
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#2"><span class="tocnumber">1</span> <span class="toctext">2</span></a>
 <ul>
@@ -22753,7 +22781,7 @@ title=[[Main Page]]
 __TOC__
 == ''Lost'' episodes ==
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Lost_episodes"><span class="tocnumber">1</span> <span class="toctext"><i>Lost</i> episodes</span></a></li>
 </ul>
@@ -22774,7 +22802,7 @@ title=[[Main Page]]
 __TOC__
 == '''should be bold''' then normal text ==
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#should_be_bold_then_normal_text"><span class="tocnumber">1</span> <span class="toctext"><b>should be bold</b> then normal text</span></a></li>
 </ul>
@@ -22795,7 +22823,7 @@ title=[[Main Page]]
 __TOC__
 == Image [[Image:foobar.jpg]] ==
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Image"><span class="tocnumber">1</span> <span class="toctext">Image</span></a></li>
 </ul>
@@ -22816,7 +22844,7 @@ title=[[Main Page]]
 __TOC__
 == <blockquote>Quote</blockquote> ==
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Quote"><span class="tocnumber">1</span> <span class="toctext">Quote</span></a></li>
 </ul>
@@ -22827,7 +22855,7 @@ __TOC__
 !! html/php+tidy
 <p></p>
 <div id="toc" class="toc">
-<div id="toctitle" class="toctitle">
+<div class="toctitle">
 <h2>Contents</h2>
 </div>
 <ul>
@@ -22855,7 +22883,7 @@ __TOC__
 <small>Hanc marginis exiguitas non caperet.</small>
 QED
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Proof:_2_.3C_3"><span class="tocnumber">1</span> <span class="toctext">Proof: 2 &lt; 3</span></a></li>
 </ul>
@@ -22880,7 +22908,7 @@ __TOC__
 
 == <i>Foo</i> <blockquote>Bar</blockquote> ==
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Foo_Bar"><span class="tocnumber">1</span> <span class="toctext"><i>Foo</i> <b>Bar</b></span></a></li>
 <li class="toclevel-1 tocsection-2"><a href="#Foo_Bar_2"><span class="tocnumber">2</span> <span class="toctext"><i>Foo</i> Bar</span></a></li>
@@ -22893,7 +22921,7 @@ __TOC__
 !! html/php+tidy
 <p></p>
 <div id="toc" class="toc">
-<div id="toctitle" class="toctitle">
+<div class="toctitle">
 <h2>Contents</h2>
 </div>
 <ul>
@@ -22926,7 +22954,7 @@ __TOC__
 
 == <sup class="a > b">Evilbye</sup> ==
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#Hello"><span class="tocnumber">1</span> <span class="toctext"><sup>Hello</sup></span></a></li>
 <li class="toclevel-1 tocsection-2"><a href="#b.22.3EEvilbye"><span class="tocnumber">2</span> <span class="toctext"><sup> b"&gt;Evilbye</sup></span></a></li>
@@ -22957,7 +22985,7 @@ __TOC__
 
 == <span dir="ltr" style="font-style: italic">Attributes after dir on these span tags must be deleted from the TOC</span> ==
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#C.2B.2B"><span class="tocnumber">1</span> <span class="toctext"><span dir="ltr">C++</span></span></a></li>
 <li class="toclevel-1 tocsection-2"><a href="#.D7.96.D7.91.D7.A0.D7.92.21"><span class="tocnumber">2</span> <span class="toctext"><span dir="rtl">זבנג!</span></span></a></li>
@@ -22988,7 +23016,7 @@ T74884: bdi element in ToC
 __TOC__
 == <bdi>test</bdi> ==
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#test"><span class="tocnumber">1</span> <span class="toctext"><bdi>test</bdi></span></a></li>
 </ul>
@@ -23007,7 +23035,7 @@ T35715: s/strike element in ToC
 __TOC__
 == <s>test</s> test <strike>test</strike> ==
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#test_test_test"><span class="tocnumber">1</span> <span class="toctext"><s>test</s> test <strike>test</strike></span></a></li>
 </ul>
@@ -23029,7 +23057,7 @@ Empty <p> tag in TOC, removed by Sanitizer (T92892)
 __TOC__
 == x ==
 !! html/php
-<div id="toc" class="toc"><div id="toctitle" class="toctitle"><h2>Contents</h2></div>
+<div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
 <ul>
 <li class="toclevel-1 tocsection-1"><a href="#x"><span class="tocnumber">1</span> <span class="toctext">x</span></a></li>
 </ul>
@@ -23040,7 +23068,7 @@ __TOC__
 !! html/php+tidy
 <p></p>
 <div id="toc" class="toc">
-<div id="toctitle" class="toctitle">
+<div class="toctitle">
 <h2>Contents</h2>
 </div>
 <ul>
@@ -23420,26 +23448,26 @@ parsoid={
 <meta typeof="mw:Extension/LabeledSectionTransclusion/end" content="2014-04-10 (MW 1.23wmf22)"/></p>
 !! end
 
-## The unconventional output is the result of `usePHPPreProcessor` being
-## disabled in parserTests.js.  This test is mainly just to show <section> is
-## recognized as an extension tag w/o a native handler.
 !! test
 LST Sections: Newfangled approach
 !! wikitext
 <section begin="2011-05-16" />
 <section end="2014-04-10 (MW 1.23wmf22)" />
 !! html/parsoid
-<p><span typeof="mw:Error mw:Extension/section" about="#mwt1" data-mw='{"name":"section","attrs":{"begin":"2011-05-16"},"body":null,"errors":[{"key":"mw-api-extexpand-error","message":"Could not expand extension source."}]}'>&lt;section begin="2011-05-16" /></span>
-<span typeof="mw:Error mw:Extension/section" about="#mwt2" data-mw='{"name":"section","attrs":{"end":"2014-04-10 (MW 1.23wmf22)"},"body":null,"errors":[{"key":"mw-api-extexpand-error","message":"Could not expand extension source."}]}'>&lt;section end="2014-04-10 (MW 1.23wmf22)" /></span></p>
+<p><span typeof="mw:Extension/section" about="#mwt4" data-mw='{"name":"section","attrs":{"begin":"2011-05-16"},"body":null}'>
+</span>
+<span typeof="mw:Extension/section" about="#mwt6" data-mw='{"name":"section","attrs":{"end":"2014-04-10 (MW 1.23wmf22)"},"body":null}'>
+</span></p>
 !! end
 
 #--------- Test stripping of empty nodes in template content ----------
-!!test
+
+!! test
 Empty LI and TR nodes should be stripped from template content
-!!wikitext
+!! wikitext
 {{EmptyLITest}}
 {{EmptyTRTest}}
-!!html/parsoid
+!! html/parsoid
 <ul about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"EmptyLITest","href":"./Template:EmptyLITest"},"params":{},"i":0}}]}'>
 <li>a</li>
 <li>b</li>
@@ -23454,11 +23482,11 @@ Empty LI and TR nodes should be stripped from template content
 </tr>
 </tbody>
 </table>
-!!end
+!! end
 
-!!test
+!! test
 Empty LI and TR nodes should not be stripped from top-level content
-!!wikitext
+!! wikitext
 * a
 *
 * b
@@ -23467,7 +23495,7 @@ Empty LI and TR nodes should not be stripped from top-level content
 |-
 |foo
 |}
-!!html/parsoid
+!! html/parsoid
 <ul>
 <li> a</li>
 <li></li>
@@ -23481,20 +23509,20 @@ Empty LI and TR nodes should not be stripped from top-level content
 </tr>
 </tbody>
 </table>
-!!end
+!! end
 
-!!test
+!! test
 Empty TR nodes should not be stripped if they have any attributes set
-!!wikitext
+!! wikitext
 {{EmptyTRWithHTMLAttrTest}}
-!!html/parsoid
+!! html/parsoid
 <table about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"EmptyTRWithHTMLAttrTest","href":"./Template:EmptyTRWithHTMLAttrTest"},"params":{},"i":0}}]}'>
 <tr align="center"></tr>
 <tr><td>foo</td></tr>
 <tr align="center"></tr>
 <tr><td>bar</td></tr>
 </table>
-!!end
+!! end
 
 #### ----------------------------------------------------------------
 #### The following section of tests are primarily to test
@@ -25911,6 +25939,41 @@ parsoid=html2wt
 [[Foo]]
 !! end
 
+!! test
+Parsoid should accept interwiki shortcuts
+!! options
+parsoid=html2wt
+!! html/parsoid
+<p><a rel='mw:WikiLink' href='./fr:Foo'>Foo</a>
+<a rel='mw:ExtLink' href='./fr:Foo'>Foo</a>
+<a href='./fr:Foo'>Foo</a></p>
+<p><a rel='mw:WikiLink' href='fr%3AFoo'>Foo</a>
+<a rel='mw:ExtLink' href='fr%3AFoo'>Foo</a>
+<a href='fr%3AFoo'>Foo</a></p>
+!! wikitext
+[[:fr:Foo|Foo]]
+[[:fr:Foo|Foo]]
+[[:fr:Foo|Foo]]
+
+[[:fr:Foo|Foo]]
+[[:fr:Foo|Foo]]
+[[:fr:Foo|Foo]]
+!! end
+
+!! test
+Parsoid should not accept invalid interwiki shortcuts
+!! options
+parsoid=html2wt
+!! html/parsoid
+<p><a rel='mw:WikiLink' href='news:Foo'>Foo</a>
+<a rel='mw:ExtLink' href='news:Foo'>Foo</a>
+<a href='news:Foo'>Foo</a></p>
+!! wikitext
+[news:Foo Foo]
+[news:Foo Foo]
+[news:Foo Foo]
+!! end
+
 # See T93839
 !! test
 New wikilinks should be serialized properly
@@ -28082,6 +28145,17 @@ dice
 <span name="foo"></span>
 !! end
 
+!! test
+New transclusion added after a list should be serialized after the list
+!! options
+parsoid=html2wt
+!! html/parsoid
+<ul><li>a</li></ul><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:echo"},"params":{"1":{"wt":"foo"}},"i":0}}]}'>foo</span>
+!! wikitext
+* a
+{{echo|foo}}
+!! end
+
 # -----------------------------------------------------------------
 # End of section for Parsoid-only html2wt tests for serialization
 # of new content
@@ -28241,3 +28315,20 @@ unclosed internal link XSS (T137264)
 !! html/parsoid
 <p>[[#%3Cscript%3Ealert(1)%3C/script%3E|</p>
 !! end
+
+!! test
+Validating that <style> isn't eaten by tidy (T167349)
+!! options
+# Use $wgRawHtml to inject a <style> tag, since you normally can't in wikitext
+wgRawHtml=1
+!! wikitext
+<div class="foo">
+<html><style>.foo::before { content: "<foo>"; }</style></html>
+<html><style data-mw-foobar="baz">.foo::after { content: "<bar>"; }</style></html>
+</div>
+!! html+tidy
+<div class="foo">
+<style>.foo::before { content: "<foo>"; }</style>
+<style data-mw-foobar="baz">.foo::after { content: "<bar>"; }</style>
+</div>
+!! end
diff --git a/tests/phpunit/includes/GlobalFunctions/wfArrayFilterTest.php b/tests/phpunit/includes/GlobalFunctions/wfArrayFilterTest.php
new file mode 100644 (file)
index 0000000..afd80ff
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+
+class WfArrayFilterTest extends \PHPUnit_Framework_TestCase {
+       public function testWfArrayFilter() {
+               $arr = [ 'a' => 1, 'b' => 2, 'c' => 3 ];
+               $filtered = wfArrayFilter( $arr, function( $val, $key ) {
+                       return $key !== 'b';
+               } );
+               $this->assertSame( [ 'a' => 1, 'c' => 3 ], $filtered );
+
+               $arr = [ 'a' => 1, 'b' => 2, 'c' => 3 ];
+               $filtered = wfArrayFilter( $arr, function( $val, $key ) {
+                       return $val !== 2;
+               } );
+               $this->assertSame( [ 'a' => 1, 'c' => 3 ], $filtered );
+
+               $arr = [ 'a', 'b', 'c' ];
+               $filtered = wfArrayFilter( $arr, function( $val, $key ) {
+                       return $key !== 0;
+               } );
+               $this->assertSame( [ 1 => 'b',  2 => 'c' ], $filtered );
+       }
+
+       public function testWfArrayFilterByKey() {
+               $arr = [ 'a' => 1, 'b' => 2, 'c' => 3 ];
+               $filtered = wfArrayFilterByKey( $arr, function( $key ) {
+                       return $key !== 'b';
+               } );
+               $this->assertSame( [ 'a' => 1, 'c' => 3 ], $filtered );
+
+               $arr = [ 'a', 'b', 'c' ];
+               $filtered = wfArrayFilterByKey( $arr, function( $key ) {
+                       return $key !== 0;
+               } );
+               $this->assertSame( [ 1 => 'b',  2 => 'c' ], $filtered );
+       }
+}
index 9c02bbd..b14424f 100644 (file)
@@ -1,7 +1,5 @@
 <?php
 
-use MediaWiki\MediaWikiServices;
-
 /**
  * @group Database
  *
index 862b7d0..c237c50 100644 (file)
@@ -362,4 +362,25 @@ class SanitizerTest extends MediaWikiTestCase {
                        [ '+1 +2', '+1', '+2' ],
                ];
        }
+
+       /**
+        * @dataProvider provideIsReservedDataAttribute
+        */
+       public function testIsReservedDataAttribute( $attr, $expected ) {
+               $this->assertSame( $expected, Sanitizer::isReservedDataAttribute( $attr ) );
+       }
+
+       public static function provideIsReservedDataAttribute() {
+               return [
+                       [ 'foo', false ],
+                       [ 'data', false ],
+                       [ 'data-foo', false ],
+                       [ 'data-mw', true ],
+                       [ 'data-ooui', true ],
+                       [ 'data-parsoid', true ],
+                       [ 'data-mw-foo', true ],
+                       [ 'data-ooui-foo', true ],
+                       [ 'data-mwfoo', true ], // could be false but this is how it's implemented currently
+               ];
+       }
 }
index 238b65f..6c44999 100644 (file)
@@ -716,28 +716,33 @@ class TitleTest extends MediaWikiTestCase {
                return [
                        // ns = 0
                        [
-                               Title::makeTitle( NS_MAIN, 'Foobar' ),
-                               'Foobar'
+                               Title::makeTitle( NS_MAIN, 'Foo bar' ),
+                               'Foo bar'
                        ],
                        // ns = 2
                        [
-                               Title::makeTitle( NS_USER, 'Foobar' ),
-                               'User:Foobar'
+                               Title::makeTitle( NS_USER, 'Foo bar' ),
+                               'User:Foo bar'
+                       ],
+                       // ns = 3
+                       [
+                               Title::makeTitle( NS_USER_TALK, 'Foo bar' ),
+                               'User talk:Foo bar'
                        ],
                        // fragment not included
                        [
-                               Title::makeTitle( NS_MAIN, 'Foobar', 'fragment' ),
-                               'Foobar'
+                               Title::makeTitle( NS_MAIN, 'Foo bar', 'fragment' ),
+                               'Foo bar'
                        ],
                        // ns = -2
                        [
-                               Title::makeTitle( NS_MEDIA, 'Foobar' ),
-                               'Media:Foobar'
+                               Title::makeTitle( NS_MEDIA, 'Foo bar' ),
+                               'Media:Foo bar'
                        ],
                        // non-existent namespace
                        [
-                               Title::makeTitle( 100000, 'Foobar' ),
-                               ':Foobar'
+                               Title::makeTitle( 100777, 'Foo bar' ),
+                               'Special:Badtitle/NS100777:Foo bar'
                        ],
                ];
        }
@@ -749,4 +754,47 @@ class TitleTest extends MediaWikiTestCase {
        public function testGetPrefixedText( Title $title, $expected ) {
                $this->assertEquals( $expected, $title->getPrefixedText() );
        }
+
+       public function provideGetPrefixedDBKey() {
+               return [
+                       // ns = 0
+                       [
+                               Title::makeTitle( NS_MAIN, 'Foo_bar' ),
+                               'Foo_bar'
+                       ],
+                       // ns = 2
+                       [
+                               Title::makeTitle( NS_USER, 'Foo_bar' ),
+                               'User:Foo_bar'
+                       ],
+                       // ns = 3
+                       [
+                               Title::makeTitle( NS_USER_TALK, 'Foo_bar' ),
+                               'User_talk:Foo_bar'
+                       ],
+                       // fragment not included
+                       [
+                               Title::makeTitle( NS_MAIN, 'Foo_bar', 'fragment' ),
+                               'Foo_bar'
+                       ],
+                       // ns = -2
+                       [
+                               Title::makeTitle( NS_MEDIA, 'Foo_bar' ),
+                               'Media:Foo_bar'
+                       ],
+                       // non-existent namespace
+                       [
+                               Title::makeTitle( 100777, 'Foo_bar' ),
+                               'Special:Badtitle/NS100777:Foo_bar'
+                       ],
+               ];
+       }
+
+       /**
+        * @covers Title::getPrefixedDBKey
+        * @dataProvider provideGetPrefixedDBKey
+        */
+       public function testGetPrefixedDBKey( Title $title, $expected ) {
+               $this->assertEquals( $expected, $title->getPrefixedDBkey() );
+       }
 }
index 253ac95..ee0ad94 100644 (file)
@@ -174,4 +174,43 @@ class ApiBaseTest extends ApiTestCase {
                ], $user ) );
        }
 
+       /**
+        * @covers ApiBase::dieStatus
+        */
+       public function testDieStatus() {
+               $mock = new MockApi();
+
+               $status = StatusValue::newGood();
+               $status->error( 'foo' );
+               $status->warning( 'bar' );
+               try {
+                       $mock->dieStatus( $status );
+                       $this->fail( 'Expected exception not thrown' );
+               } catch ( ApiUsageException $ex ) {
+                       $this->assertTrue( ApiTestCase::apiExceptionHasCode( $ex, 'foo' ), 'Exception has "foo"' );
+                       $this->assertFalse( ApiTestCase::apiExceptionHasCode( $ex, 'bar' ), 'Exception has "bar"' );
+               }
+
+               $status = StatusValue::newGood();
+               $status->warning( 'foo' );
+               $status->warning( 'bar' );
+               try {
+                       $mock->dieStatus( $status );
+                       $this->fail( 'Expected exception not thrown' );
+               } catch ( ApiUsageException $ex ) {
+                       $this->assertTrue( ApiTestCase::apiExceptionHasCode( $ex, 'foo' ), 'Exception has "foo"' );
+                       $this->assertTrue( ApiTestCase::apiExceptionHasCode( $ex, 'bar' ), 'Exception has "bar"' );
+               }
+
+               $status = StatusValue::newGood();
+               $status->setOk( false );
+               try {
+                       $mock->dieStatus( $status );
+                       $this->fail( 'Expected exception not thrown' );
+               } catch ( ApiUsageException $ex ) {
+                       $this->assertTrue( ApiTestCase::apiExceptionHasCode( $ex, 'unknownerror-nocode' ),
+                               'Exception has "unknownerror-nocode"' );
+               }
+       }
+
 }
index f01a670..028d3b4 100644 (file)
  */
 class ApiParseTest extends ApiTestCase {
 
-       protected function setUp() {
-               parent::setUp();
-               $this->doLogin();
+       protected static $pageId;
+       protected static $revIds = [];
+
+       public function addDBDataOnce() {
+               $user = static::getTestSysop()->getUser();
+               $title = Title::newFromText( __CLASS__ );
+               $page = WikiPage::factory( $title );
+
+               $status = $page->doEditContent(
+                       ContentHandler::makeContent( 'Test for revdel', $title, CONTENT_MODEL_WIKITEXT ),
+                       __METHOD__ . ' Test for revdel', 0, false, $user
+               );
+               if ( !$status->isOk() ) {
+                       $this->fail( "Failed to create $title: " . $status->getWikiText( false, false, 'en' ) );
+               }
+               self::$pageId = $status->value['revision']->getPage();
+               self::$revIds['revdel'] = $status->value['revision']->getId();
+
+               $status = $page->doEditContent(
+                       ContentHandler::makeContent( 'Test for oldid', $title, CONTENT_MODEL_WIKITEXT ),
+                       __METHOD__ . ' Test for oldid', 0, false, $user
+               );
+               if ( !$status->isOk() ) {
+                       $this->fail( "Failed to edit $title: " . $status->getWikiText( false, false, 'en' ) );
+               }
+               self::$revIds['oldid'] = $status->value['revision']->getId();
+
+               $status = $page->doEditContent(
+                       ContentHandler::makeContent( 'Test for latest', $title, CONTENT_MODEL_WIKITEXT ),
+                       __METHOD__ . ' Test for latest', 0, false, $user
+               );
+               if ( !$status->isOk() ) {
+                       $this->fail( "Failed to edit $title: " . $status->getWikiText( false, false, 'en' ) );
+               }
+               self::$revIds['latest'] = $status->value['revision']->getId();
+
+               RevisionDeleter::createList(
+                       'revision', RequestContext::getMain(), $title, [ self::$revIds['revdel'] ]
+               )->setVisibility( [
+                       'value' => [
+                               Revision::DELETED_TEXT => 1,
+                       ],
+                       'comment' => 'Test for revdel',
+               ] );
+
+               Title::clearCaches(); // Otherwise it has the wrong latest revision for some reason
        }
 
-       public function testParseNonexistentPage() {
-               $somePage = mt_rand();
+       public function testParseByName() {
+               $res = $this->doApiRequest( [
+                       'action' => 'parse',
+                       'page' => __CLASS__,
+               ] );
+               $this->assertContains( 'Test for latest', $res[0]['parse']['text'] );
+
+               $res = $this->doApiRequest( [
+                       'action' => 'parse',
+                       'page' => __CLASS__,
+                       'disablelimitreport' => 1,
+               ] );
+               $this->assertContains( 'Test for latest', $res[0]['parse']['text'] );
+       }
+
+       public function testParseById() {
+               $res = $this->doApiRequest( [
+                       'action' => 'parse',
+                       'pageid' => self::$pageId,
+               ] );
+               $this->assertContains( 'Test for latest', $res[0]['parse']['text'] );
+       }
+
+       public function testParseByOldId() {
+               $res = $this->doApiRequest( [
+                       'action' => 'parse',
+                       'oldid' => self::$revIds['oldid'],
+               ] );
+               $this->assertContains( 'Test for oldid', $res[0]['parse']['text'] );
+               $this->assertArrayNotHasKey( 'textdeleted', $res[0]['parse'] );
+               $this->assertArrayNotHasKey( 'textsuppressed', $res[0]['parse'] );
+       }
+
+       public function testParseRevDel() {
+               $user = static::getTestUser()->getUser();
+               $sysop = static::getTestSysop()->getUser();
 
                try {
                        $this->doApiRequest( [
                                'action' => 'parse',
-                               'page' => $somePage ] );
+                               'oldid' => self::$revIds['revdel'],
+                       ], null, null, $user );
+                       $this->fail( "API did not return an error as expected" );
+               } catch ( ApiUsageException $ex ) {
+                       $this->assertTrue( ApiTestCase::apiExceptionHasCode( $ex, 'permissiondenied' ),
+                               "API failed with error 'permissiondenied'" );
+               }
+
+               $res = $this->doApiRequest( [
+                       'action' => 'parse',
+                       'oldid' => self::$revIds['revdel'],
+               ], null, null, $sysop );
+               $this->assertContains( 'Test for revdel', $res[0]['parse']['text'] );
+               $this->assertArrayHasKey( 'textdeleted', $res[0]['parse'] );
+               $this->assertArrayNotHasKey( 'textsuppressed', $res[0]['parse'] );
+       }
+
+       public function testParseNonexistentPage() {
+               try {
+                       $this->doApiRequest( [
+                               'action' => 'parse',
+                               'page' => 'DoesNotExist',
+                       ] );
 
                        $this->fail( "API did not return an error when parsing a nonexistent page" );
                } catch ( ApiUsageException $ex ) {
index 015fb3e..a840599 100644 (file)
@@ -611,7 +611,7 @@ class AuthManagerTest extends \MediaWikiTestCase {
                $this->assertSame( 'de', $user->getOption( 'language' ) );
                $this->assertSame( 'zh', $user->getOption( 'variant' ) );
 
-               $this->setMwGlobals( 'wgContLang', \Language::factory( 'en' ) );
+               $this->setMwGlobals( 'wgContLang', \Language::factory( 'fr' ) );
 
                $user = \User::newFromName( self::usernameForCreation() );
                $user->addToDatabase();
index 308e6de..029d1fe 100644 (file)
@@ -98,6 +98,9 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                $recentChange = $this->getEditChange( '20131103092153' );
                $enhancedChangesList->recentChangesLine( $recentChange, false );
 
+               $html = $enhancedChangesList->endRecentChangesList();
+               $this->assertContains( 'data-mw-revid="5"', $html );
+
                $recentChange2 = $this->getEditChange( '20131103092253' );
                $enhancedChangesList->recentChangesLine( $recentChange2, false );
 
@@ -105,6 +108,13 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
 
                preg_match_all( '/td class="mw-enhanced-rc-nested"/', $html, $matches );
                $this->assertCount( 2, $matches[0] );
+
+               $recentChange3 = $this->getLogChange();
+               $enhancedChangesList->recentChangesLine( $recentChange3, false );
+
+               $html = $enhancedChangesList->endRecentChangesList();
+               $this->assertContains( 'data-mw-logaction="foo/bar"', $html );
+               $this->assertContains( 'data-mw-logid="25"', $html );
        }
 
        /**
@@ -129,6 +139,15 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                return $recentChange;
        }
 
+       private function getLogChange() {
+               $user = $this->getMutableTestUser()->getUser();
+               $recentChange = $this->testRecentChangesHelper->makeLogRecentChange( 'foo', 'bar', $user,
+                       'Title', '20131103092153', 0, 0
+               );
+
+               return $recentChange;
+       }
+
        /**
         * @return RecentChange
         */
index 51cfadc..f892eb7 100644 (file)
@@ -119,15 +119,17 @@ class OldChangesListTest extends MediaWikiLangTestCase {
                );
        }
 
-       public function testRecentChangesLine_Tags() {
+       public function testRecentChangesLine_Attribs() {
                $recentChange = $this->getEditChange();
                $recentChange->mAttribs['ts_tags'] = 'vandalism,newbie';
 
                $oldChangesList = $this->getOldChangesList();
                $line = $oldChangesList->recentChangesLine( $recentChange, false, 1 );
 
-               $this->assertRegExp( '/<li class="[\w\s-]*mw-tag-vandalism[\w\s-]*">/', $line );
-               $this->assertRegExp( '/<li class="[\w\s-]*mw-tag-newbie[\w\s-]*">/', $line );
+               $this->assertRegExp( '/<li data-mw-revid="\d+" class="[\w\s-]*mw-tag-vandalism[\w\s-]*">/',
+                       $line );
+               $this->assertRegExp( '/<li data-mw-revid="\d+" class="[\w\s-]*mw-tag-newbie[\w\s-]*">/',
+                       $line );
        }
 
        public function testRecentChangesLine_numberOfWatchingUsers() {
index b6088ff..206655c 100644 (file)
@@ -17,13 +17,13 @@ class DatabaseSQLTest extends MediaWikiTestCase {
 
        protected function assertLastSql( $sqlText ) {
                $this->assertEquals(
-                       $this->database->getLastSqls(),
-                       $sqlText
+                       $sqlText,
+                       $this->database->getLastSqls()
                );
        }
 
        protected function assertLastSqlDb( $sqlText, $db ) {
-               $this->assertEquals( $db->getLastSqls(), $sqlText );
+               $this->assertEquals( $sqlText, $db->getLastSqls() );
        }
 
        /**
@@ -365,7 +365,8 @@ class DatabaseSQLTest extends MediaWikiTestCase {
                        $sql['conds'],
                        __METHOD__,
                        isset( $sql['insertOptions'] ) ? $sql['insertOptions'] : [],
-                       isset( $sql['selectOptions'] ) ? $sql['selectOptions'] : []
+                       isset( $sql['selectOptions'] ) ? $sql['selectOptions'] : [],
+                       isset( $sql['selectJoinConds'] ) ? $sql['selectJoinConds'] : []
                );
                $this->assertLastSql( $sqlTextNative );
 
@@ -380,7 +381,8 @@ class DatabaseSQLTest extends MediaWikiTestCase {
                        $sql['conds'],
                        __METHOD__,
                        isset( $sql['insertOptions'] ) ? $sql['insertOptions'] : [],
-                       isset( $sql['selectOptions'] ) ? $sql['selectOptions'] : []
+                       isset( $sql['selectOptions'] ) ? $sql['selectOptions'] : [],
+                       isset( $sql['selectJoinConds'] ) ? $sql['selectJoinConds'] : []
                );
                $this->assertLastSqlDb( implode( '; ', [ $sqlSelect, $sqlInsert ] ), $dbWeb );
        }
@@ -397,7 +399,7 @@ class DatabaseSQLTest extends MediaWikiTestCase {
                                "INSERT INTO insert_table " .
                                        "(field_insert,field) " .
                                        "SELECT field_select,field2 " .
-                                       "FROM select_table",
+                                       "FROM select_table WHERE *",
                                "SELECT field_select AS field_insert,field2 AS field " .
                                "FROM select_table WHERE *   FOR UPDATE",
                                "INSERT INTO insert_table (field_insert,field) VALUES ('0','1')"
@@ -437,6 +439,28 @@ class DatabaseSQLTest extends MediaWikiTestCase {
                                "FROM select_table WHERE field = '2' ORDER BY field  FOR UPDATE",
                                "INSERT IGNORE INTO insert_table (field_insert,field) VALUES ('0','1')"
                        ],
+                       [
+                               [
+                                       'destTable' => 'insert_table',
+                                       'srcTable' => [ 'select_table1', 'select_table2' ],
+                                       'varMap' => [ 'field_insert' => 'field_select', 'field' => 'field2' ],
+                                       'conds' => [ 'field' => 2 ],
+                                       'selectOptions' => [ 'ORDER BY' => 'field', 'FORCE INDEX' => [ 'select_table1' => 'index1' ] ],
+                                       'selectJoinConds' => [
+                                               'select_table2' => [ 'LEFT JOIN', [ 'select_table1.foo = select_table2.bar' ] ],
+                                       ],
+                               ],
+                               "INSERT INTO insert_table " .
+                                       "(field_insert,field) " .
+                                       "SELECT field_select,field2 " .
+                                       "FROM select_table1 LEFT JOIN select_table2 ON ((select_table1.foo = select_table2.bar)) " .
+                                       "WHERE field = '2' " .
+                                       "ORDER BY field",
+                               "SELECT field_select AS field_insert,field2 AS field " .
+                               "FROM select_table1 LEFT JOIN select_table2 ON ((select_table1.foo = select_table2.bar)) " .
+                               "WHERE field = '2' ORDER BY field  FOR UPDATE",
+                               "INSERT INTO insert_table (field_insert,field) VALUES ('0','1')"
+                       ],
                ];
        }
 
diff --git a/tests/phpunit/includes/libs/http/HttpAcceptNegotiatorTest.php b/tests/phpunit/includes/libs/http/HttpAcceptNegotiatorTest.php
new file mode 100644 (file)
index 0000000..4415bc9
--- /dev/null
@@ -0,0 +1,151 @@
+<?php
+
+use Wikimedia\Http\HttpAcceptNegotiator;
+
+/**
+ * @covers Wikimedia\Http\HttpAcceptNegotiator
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ */
+class HttpAcceptNegotiatorTest extends \PHPUnit_Framework_TestCase {
+
+       public function provideGetFirstSupportedValue() {
+               return [
+                       [ // #0: empty
+                               [], // supported
+                               [], // accepted
+                               null, // default
+                               null,  // expected
+                       ],
+                       [ // #1: simple
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xzy', 'text/bar' ], // accepted
+                               null, // default
+                               'text/BAR',  // expected
+                       ],
+                       [ // #2: default
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xzy', 'text/xoo' ], // accepted
+                               'X', // default
+                               'X',  // expected
+                       ],
+                       [ // #3: preference
+                               [ 'text/foo', 'text/bar', 'application/zuul' ], // supported
+                               [ 'text/xoo', 'text/BAR', 'text/foo' ], // accepted
+                               null, // default
+                               'text/bar',  // expected
+                       ],
+                       [ // #4: * wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xoo', '*' ], // accepted
+                               null, // default
+                               'text/foo',  // expected
+                       ],
+                       [ // #5: */* wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xoo', '*/*' ], // accepted
+                               null, // default
+                               'text/foo',  // expected
+                       ],
+                       [ // #6: text/* wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'application/*', 'text/foo' ], // accepted
+                               null, // default
+                               'application/zuul',  // expected
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideGetFirstSupportedValue
+        */
+       public function testGetFirstSupportedValue( $supported, $accepted, $default, $expected ) {
+               $negotiator = new HttpAcceptNegotiator( $supported );
+               $actual = $negotiator->getFirstSupportedValue( $accepted, $default );
+
+               $this->assertEquals( $expected, $actual );
+       }
+
+       public function provideGetBestSupportedKey() {
+               return [
+                       [ // #0: empty
+                               [], // supported
+                               [], // accepted
+                               null, // default
+                               null,  // expected
+                       ],
+                       [ // #1: simple
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xzy' => 1, 'text/bar' => 0.5 ], // accepted
+                               null, // default
+                               'text/BAR',  // expected
+                       ],
+                       [ // #2: default
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xzy' => 1, 'text/xoo' => 0.5 ], // accepted
+                               'X', // default
+                               'X',  // expected
+                       ],
+                       [ // #3: weighted
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/foo' => 0.3, 'text/BAR' => 0.8, 'application/zuul' => 0.5 ], // accepted
+                               null, // default
+                               'text/BAR',  // expected
+                       ],
+                       [ // #4: zero weight
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/foo' => 0, 'text/xoo' => 1 ], // accepted
+                               null, // default
+                               null,  // expected
+                       ],
+                       [ // #5: * wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xoo' => 0.5, '*' => 0.1 ], // accepted
+                               null, // default
+                               'text/foo',  // expected
+                       ],
+                       [ // #6: */* wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/xoo' => 0.5, '*/*' => 0.1 ], // accepted
+                               null, // default
+                               'text/foo',  // expected
+                       ],
+                       [ // #7: text/* wildcard
+                               [ 'text/foo', 'text/BAR', 'application/zuul' ], // supported
+                               [ 'text/foo' => 0.3, 'application/*' => 0.8 ], // accepted
+                               null, // default
+                               'application/zuul',  // expected
+                       ],
+                       [ // #8: Test specific format preferred over wildcard (T133314)
+                               [ 'application/rdf+xml', 'text/json', 'text/html' ], // supported
+                               [ '*/*' => 1, 'text/html' => 1 ], // accepted
+                               null, // default
+                               'text/html',  // expected
+                       ],
+                       [ // #9: Test specific format preferred over range (T133314)
+                               [ 'application/rdf+xml', 'text/json', 'text/html' ], // supported
+                               [ 'text/*' => 1, 'text/html' => 1 ], // accepted
+                               null, // default
+                               'text/html',  // expected
+                       ],
+                       [ // #10: Test range preferred over wildcard (T133314)
+                               [ 'application/rdf+xml', 'text/html' ], // supported
+                               [ '*/*' => 1, 'text/*' => 1 ], // accepted
+                               null, // default
+                               'text/html',  // expected
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideGetBestSupportedKey
+        */
+       public function testGetBestSupportedKey( $supported, $accepted, $default, $expected ) {
+               $negotiator = new HttpAcceptNegotiator( $supported );
+               $actual = $negotiator->getBestSupportedKey( $accepted, $default );
+
+               $this->assertEquals( $expected, $actual );
+       }
+
+}
diff --git a/tests/phpunit/includes/libs/http/HttpAcceptParserTest.php b/tests/phpunit/includes/libs/http/HttpAcceptParserTest.php
new file mode 100644 (file)
index 0000000..5bd9425
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+
+use Wikimedia\Http\HttpAcceptParser;
+
+/**
+ * @covers Wikimedia\Http\HttpAcceptParser
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ */
+class HttpAcceptParserTest extends \PHPUnit_Framework_TestCase {
+
+       public function provideParseWeights() {
+               return [
+                       [ // #0
+                               '',
+                               []
+                       ],
+                       [ // #1
+                               'Foo/Bar',
+                               [ 'foo/bar' => 1 ]
+                       ],
+                       [ // #2
+                               'Accept: text/plain',
+                               [ 'text/plain' => 1 ]
+                       ],
+                       [ // #3
+                               'Accept: application/vnd.php.serialized, application/rdf+xml',
+                               [ 'application/vnd.php.serialized' => 1, 'application/rdf+xml' => 1 ]
+                       ],
+                       [ // #4
+                               'foo; q=0.2, xoo; q=0,text/n3',
+                               [ 'text/n3' => 1, 'foo' => 0.2 ]
+                       ],
+                       [ // #5
+                               '*; q=0.2, */*; q=0.1,text/*',
+                               [ 'text/*' => 1, '*' => 0.2, '*/*' => 0.1 ]
+                       ],
+                       // TODO: nicely ignore additional type paramerters
+                       //[ // #6
+                       //      'Foo; q=0.2, Xoo; level=3, Bar; charset=xyz; q=0.4',
+                       //      [ 'xoo' => 1, 'bar' => 0.4, 'foo' => 0.1 ]
+                       //],
+               ];
+       }
+
+       /**
+        * @dataProvider provideParseWeights
+        */
+       public function testParseWeights( $header, $expected ) {
+               $parser = new HttpAcceptParser();
+               $actual = $parser->parseWeights( $header );
+
+               $this->assertEquals( $expected, $actual ); // shouldn't be sensitive to order
+       }
+
+}
index 38d63e3..775709f 100644 (file)
@@ -98,4 +98,39 @@ class MultiWriteBagOStuffTest extends MediaWikiTestCase {
                // Set in tier 2
                $this->assertEquals( $value, $this->cache2->get( $key ), 'Written to tier 2' );
        }
+
+       /**
+        * @covers MultiWriteBagOStuff::makeKey
+        */
+       public function testMakeKey() {
+               $cache1 = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'makeKey' ] )->getMock();
+               $cache1->expects( $this->once() )->method( 'makeKey' )
+                       ->willReturn( 'special' );
+
+               $cache2 = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'makeKey' ] )->getMock();
+               $cache2->expects( $this->never() )->method( 'makeKey' );
+
+               $cache = new MultiWriteBagOStuff( [ 'caches' => [ $cache1, $cache2 ] ] );
+               $this->assertSame( 'special', $cache->makeKey( 'a', 'b' ) );
+       }
+
+       /**
+        * @covers MultiWriteBagOStuff::makeGlobalKey
+        */
+       public function testMakeGlobalKey() {
+               $cache1 = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'makeGlobalKey' ] )->getMock();
+               $cache1->expects( $this->once() )->method( 'makeGlobalKey' )
+                       ->willReturn( 'special' );
+
+               $cache2 = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'makeGlobalKey' ] )->getMock();
+               $cache2->expects( $this->never() )->method( 'makeGlobalKey' );
+
+               $cache = new MultiWriteBagOStuff( [ 'caches' => [ $cache1, $cache2 ] ] );
+
+               $this->assertSame( 'special', $cache->makeGlobalKey( 'a', 'b' ) );
+       }
 }
index 728e671..2b04366 100644 (file)
@@ -1191,4 +1191,40 @@ class WANObjectCacheTest extends PHPUnit_Framework_TestCase  {
                        [ null, 86400, 800, .2, 800 ]
                ];
        }
+
+       /**
+        * @covers WANObjectCache::makeKey
+        */
+       public function testMakeKey() {
+               $backend = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'makeKey' ] )->getMock();
+               $backend->expects( $this->once() )->method( 'makeKey' )
+                       ->willReturn( 'special' );
+
+               $wanCache = new WANObjectCache( [
+                       'cache' => $backend,
+                       'pool' => 'testcache-hash',
+                       'relayer' => new EventRelayerNull( [] )
+               ] );
+
+               $this->assertSame( 'special', $wanCache->makeKey( 'a', 'b' ) );
+       }
+
+       /**
+        * @covers WANObjectCache::makeGlobalKey
+        */
+       public function testMakeGlobalKey() {
+               $backend = $this->getMockBuilder( HashBagOStuff::class )
+                       ->setMethods( [ 'makeGlobalKey' ] )->getMock();
+               $backend->expects( $this->once() )->method( 'makeGlobalKey' )
+                       ->willReturn( 'special' );
+
+               $wanCache = new WANObjectCache( [
+                       'cache' => $backend,
+                       'pool' => 'testcache-hash',
+                       'relayer' => new EventRelayerNull( [] )
+               ] );
+
+               $this->assertSame( 'special', $wanCache->makeGlobalKey( 'a', 'b' ) );
+       }
 }
diff --git a/tests/phpunit/includes/linkeddata/PageDataRequestHandlerTest.php b/tests/phpunit/includes/linkeddata/PageDataRequestHandlerTest.php
new file mode 100644 (file)
index 0000000..666dcf2
--- /dev/null
@@ -0,0 +1,288 @@
+<?php
+
+/**
+ * @covers PageDataRequestHandler
+ *
+ * @group PageData
+ *
+ * @license GPL-2.0+
+ */
+class PageDataRequestHandlerTest extends \MediaWikiTestCase {
+
+       /**
+        * @var Title
+        */
+       private $interfaceTitle;
+
+       /**
+        * @var int
+        */
+       private $obLevel;
+
+       protected function setUp() {
+               parent::setUp();
+
+               $this->interfaceTitle = Title::newFromText( "Special:PageDataRequestHandlerTest" );
+
+               $this->obLevel = ob_get_level();
+       }
+
+       protected function tearDown() {
+               $obLevel = ob_get_level();
+
+               while ( ob_get_level() > $this->obLevel ) {
+                       ob_end_clean();
+               }
+
+               if ( $obLevel !== $this->obLevel ) {
+                       $this->fail( "Test changed output buffer level: was {$this->obLevel}" .
+                               "before test, but $obLevel after test."
+                       );
+               }
+
+               parent::tearDown();
+       }
+
+       /**
+        * @return PageDataRequestHandler
+        */
+       protected function newHandler() {
+               return new PageDataRequestHandler( 'json' );
+       }
+
+       /**
+        * @param array $params
+        * @param string[] $headers
+        *
+        * @return OutputPage
+        */
+       protected function makeOutputPage( array $params, array $headers ) {
+               // construct request
+               $request = new FauxRequest( $params );
+               $request->response()->header( 'Status: 200 OK', true, 200 ); // init/reset
+
+               foreach ( $headers as $name => $value ) {
+                       $request->setHeader( strtoupper( $name ), $value );
+               }
+
+               // construct Context and OutputPage
+               $context = new DerivativeContext( RequestContext::getMain() );
+               $context->setRequest( $request );
+
+               $output = new OutputPage( $context );
+               $output->setTitle( $this->interfaceTitle );
+               $context->setOutput( $output );
+
+               return $output;
+       }
+
+       public function handleRequestProvider() {
+
+               $cases = [];
+
+               $cases[] = [ '', [], [], '!!', 400 ];
+
+               $cases[] = [ '', [ 'target' => 'Helsinki' ], [], '!!', 303,  [ 'Location' => '!.+!' ] ];
+
+               $subpageCases = [];
+               foreach ( $cases as $c ) {
+                       $case = $c;
+                       $case[0] = 'main/';
+
+                       if ( isset( $case[1]['target'] ) ) {
+                               $case[0] .= $case[1]['target'];
+                               unset( $case[1]['target'] );
+                       }
+
+                       $subpageCases[] = $case;
+               }
+
+               $cases = array_merge( $cases, $subpageCases );
+
+               $cases[] = [
+                       '',
+                       [ 'target' => 'Helsinki' ],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki$!' ]
+               ];
+
+               $cases[] = [
+                       '',
+                       [
+                               'target' => 'Helsinki',
+                               'revision' => '4242',
+                       ],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki(\?|&)oldid=4242!' ]
+               ];
+
+               $cases[] = [
+                       '/Helsinki',
+                       [],
+                       [],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki&action=raw!' ]
+               ];
+
+               // #31: /Q5 with "Accept: text/foobar" triggers a 406
+               $cases[] = [
+                       'main/Helsinki',
+                       [],
+                       [ 'Accept' => 'text/foobar' ],
+                       '!!',
+                       406,
+                       [],
+               ];
+
+               $cases[] = [
+                       'main/Helsinki',
+                       [],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki$!' ]
+               ];
+
+               $cases[] = [
+                       '/Helsinki',
+                       [],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki$!' ]
+               ];
+
+               $cases[] = [
+                       'main/AC/DC',
+                       [],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!AC/DC$!' ]
+               ];
+
+               return $cases;
+       }
+
+       /**
+        * @dataProvider handleRequestProvider
+        *
+        * @param string $subpage The subpage to request (or '')
+        * @param array  $params  Request parameters
+        * @param array  $headers  Request headers
+        * @param string $expectedOutput Regex to match the output against.
+        * @param int $expectedStatusCode Expected HTTP status code.
+        * @param string[] $expectedHeaders Expected HTTP response headers.
+        */
+       public function testHandleRequest(
+               $subpage,
+               array $params,
+               array $headers,
+               $expectedOutput,
+               $expectedStatusCode = 200,
+               array $expectedHeaders = []
+       ) {
+               $output = $this->makeOutputPage( $params, $headers );
+               $request = $output->getRequest();
+
+               /* @var FauxResponse $response */
+               $response = $request->response();
+
+               // construct handler
+               $handler = $this->newHandler();
+
+               try {
+                       ob_start();
+                       $handler->handleRequest( $subpage, $request, $output );
+
+                       if ( $output->getRedirect() !== '' ) {
+                               // hack to apply redirect to web response
+                               $output->output();
+                       }
+
+                       $text = ob_get_contents();
+                       ob_end_clean();
+
+                       $this->assertEquals( $expectedStatusCode, $response->getStatusCode(), 'status code' );
+                       $this->assertRegExp( $expectedOutput, $text, 'output' );
+
+                       foreach ( $expectedHeaders as $name => $exp ) {
+                               $value = $response->getHeader( $name );
+                               $this->assertNotNull( $value, "header: $name" );
+                               $this->assertInternalType( 'string', $value, "header: $name" );
+                               $this->assertRegExp( $exp, $value, "header: $name" );
+                       }
+               } catch ( HttpError $e ) {
+                       ob_end_clean();
+                       $this->assertEquals( $expectedStatusCode, $e->getStatusCode(), 'status code' );
+                       $this->assertRegExp( $expectedOutput, $e->getHTML(), 'error output' );
+               }
+
+               // We always set "Access-Control-Allow-Origin: *"
+               $this->assertSame( '*', $response->getHeader( 'Access-Control-Allow-Origin' ) );
+       }
+
+       public function provideHttpContentNegotiation() {
+               $helsinki = Title::newFromText( 'Helsinki' );
+               return [
+                       'Accept Header of HTML' => [
+                               $helsinki,
+                               [ 'ACCEPT' => 'text/html' ], // headers
+                               'Helsinki'
+                       ],
+                       'Accept Header without weights' => [
+                               $helsinki,
+                               [ 'ACCEPT' => '*/*, text/html, text/x-wiki' ],
+                               'Helsinki&action=raw'
+                       ],
+                       'Accept Header with weights' => [
+                               $helsinki,
+                               [ 'ACCEPT' => 'text/*; q=0.5, text/json; q=0.7, application/rdf+xml; q=0.8' ],
+                               'Helsinki&action=raw'
+                       ],
+                       'Accept Header accepting evertyhing and HTML' => [
+                               $helsinki,
+                               [ 'ACCEPT' => 'text/html, */*' ],
+                               'Helsinki&action=raw'
+                       ],
+                       'No Accept Header' => [
+                               $helsinki,
+                               [],
+                               'Helsinki&action=raw'
+                       ],
+               ];
+       }
+
+       /**
+        * @dataProvider provideHttpContentNegotiation
+        *
+        * @param Title $title
+        * @param array $headers Request headers
+        * @param string $expectedRedirectSuffix Expected suffix of the HTTP Location header.
+        *
+        * @throws HttpError
+        */
+       public function testHttpContentNegotiation(
+               Title $title,
+               array $headers,
+               $expectedRedirectSuffix
+       ) {
+               /* @var FauxResponse $response */
+               $output = $this->makeOutputPage( [], $headers );
+               $request = $output->getRequest();
+
+               $handler = $this->newHandler();
+               $handler->httpContentNegotiation( $request, $output, $title );
+
+               $this->assertStringEndsWith(
+                       $expectedRedirectSuffix,
+                       $output->getRedirect(),
+                       'redirect target'
+               );
+       }
+}
index 530afa0..7a052f6 100644 (file)
@@ -65,27 +65,4 @@ class MediaHandlerTest extends MediaWikiTestCase {
                }
                return $result;
        }
-
-       /**
-        * @covers MediaHandler::getPageRangesByDimensions
-        *
-        * @dataProvider provideTestGetPageRangesByDimensions
-        */
-       public function testGetPageRangesByDimensions( $pagesByDimensions, $expected ) {
-               $this->assertEquals( $expected, MediaHandler::getPageRangesByDimensions( $pagesByDimensions ) );
-       }
-
-       public static function provideTestGetPageRangesByDimensions() {
-               return [
-                       [ [ '123x456' => [ 1 ] ], '123x456:1' ],
-                       [ [ '123x456' => [ 1, 2 ] ], '123x456:1-2' ],
-                       [ [ '123x456' => [ 1, 2, 3 ] ], '123x456:1-3' ],
-                       [ [ '123x456' => [ 1, 2, 3, 5 ] ], '123x456:1-3,5' ],
-                       [ [ '123x456' => [ 1, 3 ] ], '123x456:1,3' ],
-                       [ [ '123x456' => [ 1, 2, 3, 5, 6, 7 ] ], '123x456:1-3,5-7' ],
-                       [ [ '123x456' => [ 1, 2, 3, 5, 6, 7 ],
-                               '789x789' => [ 4, 8, 9 ] ], '123x456:1-3,5-7/789x789:4,8-9'
-                       ],
-               ];
-       }
 }
diff --git a/tests/phpunit/includes/media/XContentDimensionsTest.php b/tests/phpunit/includes/media/XContentDimensionsTest.php
deleted file mode 100644 (file)
index dddcc98..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/**
- * @group Media
- */
-class XContentDimensionsTest extends MediaWikiMediaTestCase {
-       /**
-        * @param string $filename
-        * @param string $expectedXContentDimensions
-        * @dataProvider provideGetContentHeaders
-        * @covers File::getContentHeaders
-        */
-       public function testGetContentHeaders( $filename, $expectedXContentDimensions ) {
-               $file = $this->dataFile( $filename );
-               $headers = $file->getContentHeaders();
-               $this->assertEquals( true, isset( $headers['X-Content-Dimensions'] ) );
-               $this->assertEquals( $headers['X-Content-Dimensions'], $expectedXContentDimensions );
-       }
-
-       public static function provideGetContentHeaders() {
-               return [
-                       [ '80x60-2layers.xcf', '80x60:1' ],
-                       [ 'animated.gif', '45x30:1' ],
-                       [ 'landscape-plain.jpg', '1024x768:1' ],
-                       [ 'portrait-rotated.jpg', '768x1024:1' ],
-                       [ 'Wikimedia-logo.svg', '1024x1024:1' ],
-                       [ 'webp_animated.webp', '300x225:1' ],
-                       [ 'test.tiff', '20x20:1' ],
-               ];
-       }
-}
index 81f0564..d606142 100644 (file)
@@ -22,7 +22,6 @@ class ParserOptionsTest extends MediaWikiTestCase {
                return [
                        'No overrides' => [ true, [] ],
                        'In-key options are ok' => [ true, [
-                               'editsection' => false,
                                'thumbsize' => 1e100,
                                'wrapclass' => false,
                        ] ],
@@ -65,14 +64,14 @@ class ParserOptionsTest extends MediaWikiTestCase {
        }
 
        public static function provideOptionsHashPre30() {
-               $used = [ 'wrapclass', 'editsection', 'printable' ];
+               $used = [ 'wrapclass', 'printable' ];
 
                return [
                        'Canonical options, nothing used' => [ [], '*!*!*!*!*!*', [] ],
-                       'Canonical options, used some options' => [ $used, '*!*!*!*!*', [] ],
+                       'Canonical options, used some options' => [ $used, '*!*!*!*!*!*', [] ],
                        'Used some options, non-default values' => [
                                $used,
-                               '*!*!*!*!*!printable=1!wrapclass=foobar',
+                               '*!*!*!*!*!*!printable=1!wrapclass=foobar',
                                [
                                        'setWrapOutputClass' => 'foobar',
                                        'setIsPrintable' => true,
@@ -87,6 +86,14 @@ class ParserOptionsTest extends MediaWikiTestCase {
                                        'wgHooks' => [ 'PageRenderingHash' => [ [ __CLASS__ . '::onPageRenderingHash' ] ] ],
                                ]
                        ],
+
+                       // Test weird historical behavior is still weird
+                       'Canonical options, editsection=true used' => [ [ 'editsection' ], '*!*!*!*!*', [
+                               'setEditSection' => true,
+                       ] ],
+                       'Canonical options, editsection=false used' => [ [ 'editsection' ], '*!*!*!*!*!edit=0', [
+                               'setEditSection' => false,
+                       ] ],
                ];
        }
 
@@ -117,7 +124,7 @@ class ParserOptionsTest extends MediaWikiTestCase {
        }
 
        public static function provideOptionsHash() {
-               $used = [ 'wrapclass', 'editsection', 'printable' ];
+               $used = [ 'wrapclass', 'printable' ];
 
                $classWrapper = TestingAccessWrapper::newFromClass( ParserOptions::class );
                $classWrapper->getDefaults();
@@ -154,6 +161,30 @@ class ParserOptionsTest extends MediaWikiTestCase {
                $confstr .= '!onPageRenderingHash';
        }
 
+       // Test weird historical behavior is still weird
+       public function testOptionsHashEditSection() {
+               global $wgHooks;
+
+               $this->setMwGlobals( [
+                       'wgRenderHashAppend' => '',
+                       'wgHooks' => [ 'PageRenderingHash' => [] ] + $wgHooks,
+               ] );
+
+               $popt = ParserOptions::newCanonical();
+               $popt->registerWatcher( function ( $name ) {
+                       $this->assertNotEquals( 'editsection', $name );
+               } );
+
+               $this->assertTrue( $popt->getEditSection() );
+               $this->assertSame( 'canonical', $popt->optionsHash( [] ) );
+               $this->assertSame( 'canonical', $popt->optionsHash( [ 'editsection' ] ) );
+
+               $popt->setEditSection( false );
+               $this->assertFalse( $popt->getEditSection() );
+               $this->assertSame( 'canonical', $popt->optionsHash( [] ) );
+               $this->assertSame( 'editsection=0', $popt->optionsHash( [ 'editsection' ] ) );
+       }
+
        /**
         * @expectedException InvalidArgumentException
         * @expectedExceptionMessage Unknown parser option bogus
diff --git a/tests/phpunit/includes/specials/SpecialPageDataTest.php b/tests/phpunit/includes/specials/SpecialPageDataTest.php
new file mode 100644 (file)
index 0000000..c93fe47
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+
+/**
+ * @covers SpecialPageData
+ *
+ * @group Database
+ *
+ * @group SpecialPage
+ *
+ * @license GPL-2.0+
+ * @author Daniel Kinzler
+ */
+class SpecialPageDataTest extends SpecialPageTestBase {
+
+       protected function newSpecialPage() {
+               $page = new SpecialPageData();
+
+               // why is this needed?
+               $page->getContext()->setOutput( new OutputPage( $page->getContext() ) );
+
+               $page->setRequestHandler( new PageDataRequestHandler() );
+
+               return $page;
+       }
+
+       public function provideExecute() {
+               $cases = [];
+
+               $cases['Empty request'] = [ '', [], [], '!!', 200 ];
+
+               $cases['Only title specified'] = [
+                       '',
+                       [ 'target' => 'Helsinki' ],
+                       [],
+                       '!!',
+                       303,
+                       [ 'Location' => '!.+!' ]
+               ];
+
+               $cases['Accept only HTML'] = [
+                       '',
+                       [ 'target' => 'Helsinki' ],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki$!' ]
+               ];
+
+               $cases['Accept only HTML with revid'] = [
+                       '',
+                       [
+                               'target' => 'Helsinki',
+                               'revision' => '4242',
+                       ],
+                       [ 'Accept' => 'text/HTML' ],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki(\?|&)oldid=4242!' ]
+               ];
+
+               $cases['Nothing specified'] = [
+                       'main/Helsinki',
+                       [],
+                       [],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki&action=raw!' ]
+               ];
+
+               $cases['Nothing specified'] = [
+                       '/Helsinki',
+                       [],
+                       [],
+                       '!!',
+                       303,
+                       [ 'Location' => '!Helsinki&action=raw!' ]
+               ];
+
+               $cases['Invalid Accept header'] = [
+                       'main/Helsinki',
+                       [],
+                       [ 'Accept' => 'text/foobar' ],
+                       '!!',
+                       406,
+                       [],
+               ];
+
+               return $cases;
+       }
+
+       /**
+        * @dataProvider provideExecute
+        *
+        * @param string $subpage The subpage to request (or '')
+        * @param array  $params  Request parameters
+        * @param array  $headers  Request headers
+        * @param string $expRegExp   Regex to match the output against.
+        * @param int    $expCode     Expected HTTP status code
+        * @param array  $expHeaders  Expected HTTP response headers
+        */
+       public function testExecute(
+               $subpage,
+               array $params,
+               array $headers,
+               $expRegExp,
+               $expCode = 200,
+               array $expHeaders = []
+       ) {
+               $request = new FauxRequest( $params );
+               $request->response()->header( 'Status: 200 OK', true, 200 ); // init/reset
+
+               foreach ( $headers as $name => $value ) {
+                       $request->setHeader( strtoupper( $name ), $value );
+               }
+
+               try {
+                       /* @var FauxResponse $response */
+                       list( $output, $response ) = $this->executeSpecialPage( $subpage, $request );
+
+                       $this->assertEquals( $expCode, $response->getStatusCode(), "status code" );
+                       $this->assertRegExp( $expRegExp, $output, "output" );
+
+                       foreach ( $expHeaders as $name => $exp ) {
+                               $value = $response->getHeader( $name );
+                               $this->assertNotNull( $value, "header: $name" );
+                               $this->assertInternalType( 'string', $value, "header: $name" );
+                               $this->assertRegExp( $exp, $value, "header: $name" );
+                       }
+               } catch ( HttpError $e ) {
+                       $this->assertEquals( $expCode, $e->getStatusCode(), "status code" );
+                       $this->assertRegExp( $expRegExp, $e->getHTML(), "error output" );
+               }
+       }
+
+       public function testSpecialPageWithoutParameters() {
+               $this->setContentLang( Language::factory( 'en' ) );
+               $request = new FauxRequest();
+               $request->response()->header( 'Status: 200 OK', true, 200 ); // init/reset
+
+               list( $output, ) = $this->executeSpecialPage( '', $request );
+
+               $this->assertContains(
+                       "Content negotiation applies based on you client's Accept header.",
+                       $output,
+                       "output"
+               );
+       }
+
+}
index 3363bca..53f02df 100644 (file)
@@ -10,8 +10,7 @@ class PasswordResetTest extends PHPUnit_Framework_TestCase {
         * @dataProvider provideIsAllowed
         */
        public function testIsAllowed( $passwordResetRoutes, $enableEmail,
-               $allowsAuthenticationDataChange, $canEditPrivate, $canSeePassword,
-               $userIsBlocked, $isAllowed
+               $allowsAuthenticationDataChange, $canEditPrivate, $block, $globalBlock, $isAllowed
        ) {
                $config = new HashConfig( [
                        'PasswordResetRoutes' => $passwordResetRoutes,
@@ -25,13 +24,12 @@ class PasswordResetTest extends PHPUnit_Framework_TestCase {
 
                $user = $this->getMockBuilder( User::class )->getMock();
                $user->expects( $this->any() )->method( 'getName' )->willReturn( 'Foo' );
-               $user->expects( $this->any() )->method( 'isBlocked' )->willReturn( $userIsBlocked );
+               $user->expects( $this->any() )->method( 'getBlock' )->willReturn( $block );
+               $user->expects( $this->any() )->method( 'getGlobalBlock' )->willReturn( $globalBlock );
                $user->expects( $this->any() )->method( 'isAllowed' )
-                       ->will( $this->returnCallback( function ( $perm ) use ( $canEditPrivate, $canSeePassword ) {
+                       ->will( $this->returnCallback( function ( $perm ) use ( $canEditPrivate ) {
                                if ( $perm === 'editmyprivateinfo' ) {
                                        return $canEditPrivate;
-                               } elseif ( $perm === 'passwordreset' ) {
-                                       return $canSeePassword;
                                } else {
                                        $this->fail( 'Unexpected permission check' );
                                }
@@ -44,67 +42,103 @@ class PasswordResetTest extends PHPUnit_Framework_TestCase {
 
        public function provideIsAllowed() {
                return [
-                       [
+                       'no routes' => [
                                'passwordResetRoutes' => [],
                                'enableEmail' => true,
                                'allowsAuthenticationDataChange' => true,
                                'canEditPrivate' => true,
-                               'canSeePassword' => true,
-                               'userIsBlocked' => false,
+                               'block' => null,
+                               'globalBlock' => null,
                                'isAllowed' => false,
                        ],
-                       [
+                       'email disabled' => [
                                'passwordResetRoutes' => [ 'username' => true ],
                                'enableEmail' => false,
                                'allowsAuthenticationDataChange' => true,
                                'canEditPrivate' => true,
-                               'canSeePassword' => true,
-                               'userIsBlocked' => false,
+                               'block' => null,
+                               'globalBlock' => null,
                                'isAllowed' => false,
                        ],
-                       [
+                       'auth data change disabled' => [
                                'passwordResetRoutes' => [ 'username' => true ],
                                'enableEmail' => true,
                                'allowsAuthenticationDataChange' => false,
                                'canEditPrivate' => true,
-                               'canSeePassword' => true,
-                               'userIsBlocked' => false,
+                               'block' => null,
+                               'globalBlock' => null,
                                'isAllowed' => false,
                        ],
-                       [
+                       'cannot edit private data' => [
                                'passwordResetRoutes' => [ 'username' => true ],
                                'enableEmail' => true,
                                'allowsAuthenticationDataChange' => true,
                                'canEditPrivate' => false,
-                               'canSeePassword' => true,
-                               'userIsBlocked' => false,
+                               'block' => null,
+                               'globalBlock' => null,
                                'isAllowed' => false,
                        ],
-                       [
+                       'blocked with account creation disabled' => [
                                'passwordResetRoutes' => [ 'username' => true ],
                                'enableEmail' => true,
                                'allowsAuthenticationDataChange' => true,
                                'canEditPrivate' => true,
-                               'canSeePassword' => true,
-                               'userIsBlocked' => true,
+                               'block' => new Block( [ 'createAccount' => true ] ),
+                               'globalBlock' => null,
                                'isAllowed' => false,
                        ],
-                       [
+                       'blocked w/o account creation disabled' => [
                                'passwordResetRoutes' => [ 'username' => true ],
                                'enableEmail' => true,
                                'allowsAuthenticationDataChange' => true,
                                'canEditPrivate' => true,
-                               'canSeePassword' => false,
-                               'userIsBlocked' => false,
+                               'block' => new Block( [] ),
+                               'globalBlock' => null,
                                'isAllowed' => true,
                        ],
-                       [
+                       'using blocked proxy' => [
                                'passwordResetRoutes' => [ 'username' => true ],
                                'enableEmail' => true,
                                'allowsAuthenticationDataChange' => true,
                                'canEditPrivate' => true,
-                               'canSeePassword' => true,
-                               'userIsBlocked' => false,
+                               'block' => new Block( [ 'systemBlock' => 'proxy' ] ),
+                               'globalBlock' => null,
+                               'isAllowed' => false,
+                       ],
+                       'globally blocked with account creation disabled' => [
+                               'passwordResetRoutes' => [ 'username' => true ],
+                               'enableEmail' => true,
+                               'allowsAuthenticationDataChange' => true,
+                               'canEditPrivate' => true,
+                               'block' => null,
+                               'globalBlock' => new Block( [ 'systemBlock' => 'global-block', 'createAccount' => true ] ),
+                               'isAllowed' => false,
+                       ],
+                       'globally blocked with account creation not disabled' => [
+                               'passwordResetRoutes' => [ 'username' => true ],
+                               'enableEmail' => true,
+                               'allowsAuthenticationDataChange' => true,
+                               'canEditPrivate' => true,
+                               'block' => null,
+                               'globalBlock' => new Block( [ 'systemBlock' => 'global-block', 'createAccount' => false ] ),
+                               'isAllowed' => true,
+                       ],
+                       'blocked via wgSoftBlockRanges' => [
+                               'passwordResetRoutes' => [ 'username' => true ],
+                               'enableEmail' => true,
+                               'allowsAuthenticationDataChange' => true,
+                               'canEditPrivate' => true,
+                               'block' => new Block( [ 'systemBlock' => 'wgSoftBlockRanges', 'anonOnly' => true ] ),
+                               'globalBlock' => null,
+                               'isAllowed' => true,
+                       ],
+                       'all OK' => [
+                               'passwordResetRoutes' => [ 'username' => true ],
+                               'enableEmail' => true,
+                               'allowsAuthenticationDataChange' => true,
+                               'canEditPrivate' => true,
+                               'block' => null,
+                               'globalBlock' => null,
                                'isAllowed' => true,
                        ],
                ];
index 22fd7b8..a474f20 100644 (file)
@@ -1739,9 +1739,8 @@ class LanguageTest extends LanguageClassesTestCase {
                        [ 'zh', 'zh', 'zh is defined as the parent language of zh, '
                                . 'because zh converter can convert zh-cn to zh' ],
                        [ 'zh-invalid', null, 'do not be fooled by arbitrarily composed language codes' ],
-                       [ 'en-gb', null, 'en does not have converter' ],
-                       [ 'en', null, 'en does not have converter. Although FakeConverter '
-                                       . 'handles en -> en conversion but it is useless' ],
+                       [ 'de-formal', null, 'de does not have converter' ],
+                       [ 'de', null, 'de does not have converter' ],
                ];
        }
 
index 8ee45a8..047c03a 100644 (file)
@@ -22,8 +22,8 @@
  */
 
 /**
- * Class representing an in memory fake file.
- * This is intended for unit testing / developement when you do not want
+ * Class representing an in-memory fake file.
+ * This is intended for unit testing / development when you do not want
  * to hit the filesystem.
  *
  * It reimplements abstract methods with some hardcoded values. Might
index 53362c4..ee3cd5b 100644 (file)
@@ -94,6 +94,7 @@ return [
                        'tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.test.js',
                        'tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js',
                        'tests/qunit/suites/resources/mediawiki.rcfilters/dm.FilterItem.test.js',
+                       'tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.cookie.test.js',
diff --git a/tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js b/tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js
new file mode 100644 (file)
index 0000000..edaaa39
--- /dev/null
@@ -0,0 +1,262 @@
+/* eslint-disable camelcase */
+/* eslint no-underscore-dangle: "off" */
+( function ( mw, $ ) {
+       var mockFilterStructure = [ {
+                       name: 'group1',
+                       title: 'Group 1',
+                       type: 'send_unselected_if_any',
+                       filters: [
+                               { name: 'filter1', default: true },
+                               { name: 'filter2' }
+                       ]
+               }, {
+                       name: 'group2',
+                       title: 'Group 2',
+                       type: 'send_unselected_if_any',
+                       filters: [
+                               { name: 'filter3' },
+                               { name: 'filter4', default: true }
+                       ]
+               }, {
+                       name: 'group3',
+                       title: 'Group 3',
+                       type: 'string_options',
+                       filters: [
+                               { name: 'filter5' },
+                               { name: 'filter6' }
+                       ]
+               } ],
+               minimalDefaultParams = {
+                       filter1: '1',
+                       filter4: '1'
+               };
+
+       QUnit.module( 'mediawiki.rcfilters - UriProcessor' );
+
+       QUnit.test( 'getVersion', function ( assert ) {
+               var uriProcessor = new mw.rcfilters.UriProcessor( new mw.rcfilters.dm.FiltersViewModel() );
+
+               assert.ok(
+                       uriProcessor.getVersion( { param1: 'foo', urlversion: '2' } ),
+                       2,
+                       'Retrieving the version from the URI query'
+               );
+
+               assert.ok(
+                       uriProcessor.getVersion( { param1: 'foo' } ),
+                       1,
+                       'Getting version 1 if no version is specified'
+               );
+       } );
+
+       QUnit.test( 'updateModelBasedOnQuery & getUriParametersFromModel', function ( assert ) {
+               var uriProcessor,
+                       filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
+                       baseParams = {
+                               filter1: '0',
+                               filter2: '0',
+                               filter3: '0',
+                               filter4: '0',
+                               group3: '',
+                               highlight: '0',
+                               invert: '0',
+                               group1__filter1_color: null,
+                               group1__filter2_color: null,
+                               group2__filter3_color: null,
+                               group2__filter4_color: null,
+                               group3__filter5_color: null,
+                               group3__filter6_color: null
+                       };
+
+               filtersModel.initializeFilters( mockFilterStructure );
+               uriProcessor = new mw.rcfilters.UriProcessor( filtersModel );
+
+               uriProcessor.updateModelBasedOnQuery( {} );
+               assert.deepEqual(
+                       uriProcessor.getUriParametersFromModel(),
+                       $.extend( true, {}, baseParams, minimalDefaultParams ),
+                       'Version 1: Empty url query sets model to defaults'
+               );
+
+               uriProcessor.updateModelBasedOnQuery( { urlversion: '2' } );
+               assert.deepEqual(
+                       uriProcessor.getUriParametersFromModel(),
+                       baseParams,
+                       'Version 2: Empty url query sets model to all-false'
+               );
+
+               uriProcessor.updateModelBasedOnQuery( { filter1: '1', urlversion: '2' } );
+               assert.deepEqual(
+                       uriProcessor.getUriParametersFromModel(),
+                       $.extend( true, {}, baseParams, { filter1: '1' } ),
+                       'Parameters in Uri query set parameter value in the model'
+               );
+
+               uriProcessor.updateModelBasedOnQuery( { highlight: '1', group1__filter1_color: 'c1', urlversion: '2' } );
+               assert.deepEqual(
+                       uriProcessor.getUriParametersFromModel(),
+                       $.extend( true, {}, baseParams, {
+                               highlight: '1',
+                               group1__filter1_color: 'c1'
+                       } ),
+                       'Highlight parameters in Uri query set highlight state in the model'
+               );
+
+               uriProcessor.updateModelBasedOnQuery( { invert: '1', urlversion: '2' } );
+               assert.deepEqual(
+                       uriProcessor.getUriParametersFromModel(),
+                       $.extend( true, {}, baseParams, {
+                               invert: '1'
+                       } ),
+                       'Invert parameter in Uri query set invert state in the model'
+               );
+       } );
+
+       QUnit.test( 'isNewState', function ( assert ) {
+               var uriProcessor,
+                       filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
+                       cases = [
+                               {
+                                       states: {
+                                               curr: {},
+                                               new: {}
+                                       },
+                                       result: false,
+                                       message: 'Empty objects are not new state.'
+                               },
+                               {
+                                       states: {
+                                               curr: { filter1: '1' },
+                                               new: { filter1: '0' }
+                                       },
+                                       result: true,
+                                       message: 'Nulified parameter is a new state'
+                               },
+                               {
+                                       states: {
+                                               curr: { filter1: '1' },
+                                               new: { filter1: '1', filter2: '1' }
+                                       },
+                                       result: true,
+                                       message: 'Added parameters are a new state'
+                               },
+                               {
+                                       states: {
+                                               curr: { filter1: '1' },
+                                               new: { filter1: '1', filter2: '0' }
+                                       },
+                                       result: false,
+                                       message: 'Added null parameters are not a new state (normalizing equals old state)'
+                               },
+                               {
+                                       states: {
+                                               curr: { filter1: '1' },
+                                               new: { filter1: '1', foo: 'bar' }
+                                       },
+                                       result: true,
+                                       message: 'Added unrecognized parameters are a new state'
+                               },
+                               {
+                                       states: {
+                                               curr: { filter1: '1', foo: 'bar' },
+                                               new: { filter1: '1', foo: 'baz' }
+                                       },
+                                       result: true,
+                                       message: 'Changed unrecognized parameters are a new state'
+                               }
+                       ];
+
+               filtersModel.initializeFilters( mockFilterStructure );
+               uriProcessor = new mw.rcfilters.UriProcessor( filtersModel );
+
+               cases.forEach( function ( testCase ) {
+                       assert.equal(
+                               uriProcessor.isNewState( testCase.states.curr, testCase.states.new ),
+                               testCase.result,
+                               testCase.message
+                       );
+               } );
+       } );
+
+       QUnit.test( 'doesQueryContainRecognizedParams', function ( assert ) {
+               var uriProcessor,
+                       filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
+                       cases = [
+                               {
+                                       query: {},
+                                       result: false,
+                                       message: 'Empty query is not valid for load.'
+                               },
+                               {
+                                       query: { highlight: '1' },
+                                       result: false,
+                                       message: 'Highlight state alone is not valid for load'
+                               },
+                               {
+                                       query: { urlversion: '2' },
+                                       result: true,
+                                       message: 'urlversion=2 state alone is valid for load as an empty state'
+                               },
+                               {
+                                       query: { filter1: '1', foo: 'bar' },
+                                       result: true,
+                                       message: 'Existence of recognized parameters makes the query valid for load'
+                               },
+                               {
+                                       query: { foo: 'bar', debug: true },
+                                       result: false,
+                                       message: 'Only unrecognized parameters makes the query invalid for load'
+                               }
+                       ];
+
+               filtersModel.initializeFilters( mockFilterStructure );
+               uriProcessor = new mw.rcfilters.UriProcessor( filtersModel );
+
+               cases.forEach( function ( testCase ) {
+                       assert.equal(
+                               uriProcessor.doesQueryContainRecognizedParams( testCase.query ),
+                               testCase.result,
+                               testCase.message
+                       );
+               } );
+       } );
+
+       QUnit.test( '_getNormalizedQueryParams', function ( assert ) {
+               var uriProcessor,
+                       filtersModel = new mw.rcfilters.dm.FiltersViewModel(),
+                       cases = [
+                               {
+                                       query: {},
+                                       result: $.extend( true, { urlversion: '2' }, minimalDefaultParams ),
+                                       message: 'Empty query returns defaults (urlversion 1).'
+                               },
+                               {
+                                       query: { urlversion: '2' },
+                                       result: { urlversion: '2' },
+                                       message: 'Empty query returns empty (urlversion 2)'
+                               },
+                               {
+                                       query: { filter1: '0' },
+                                       result: { urlversion: '2', filter4: '1' },
+                                       message: 'urlversion 1 returns query that overrides defaults'
+                               },
+                               {
+                                       query: { filter3: '1' },
+                                       result: { urlversion: '2', filter1: '1', filter4: '1', filter3: '1' },
+                                       message: 'urlversion 1 with an extra param value returns query that is joined with defaults'
+                               }
+                       ];
+
+               filtersModel.initializeFilters( mockFilterStructure );
+               uriProcessor = new mw.rcfilters.UriProcessor( filtersModel );
+
+               cases.forEach( function ( testCase ) {
+                       assert.deepEqual(
+                               uriProcessor._getNormalizedQueryParams( testCase.query ),
+                               testCase.result,
+                               testCase.message
+                       );
+               } );
+       } );
+
+}( mediaWiki, jQuery ) );
index 714739b..233ec76 100644 (file)
@@ -10,6 +10,9 @@
                        'group2filter1-desc': 'Description of Filter 1 in Group 2',
                        'group2filter2-label': 'xGroup 2: Filter 2',
                        'group2filter2-desc': 'Description of Filter 2 in Group 2'
+               },
+               config: {
+                       wgStructuredChangeFiltersEnableExperimentalViews: true
                }
        } ) );
 
                                        }
                                ]
                        } ],
+                       namespaces = {
+                               0: 'Main',
+                               1: 'Talk',
+                               2: 'User',
+                               3: 'User talk'
+                       },
                        model = new mw.rcfilters.dm.FiltersViewModel();
 
-               model.initializeFilters( definition );
+               model.initializeFilters( definition, namespaces );
 
                assert.ok(
                        model.getItemByName( 'group1__filter1' ) instanceof mw.rcfilters.dm.FilterItem &&
                        model.getItemByName( 'group2__filter2' ) instanceof mw.rcfilters.dm.FilterItem &&
                        model.getItemByName( 'group3__filter1' ) instanceof mw.rcfilters.dm.FilterItem &&
                        model.getItemByName( 'group3__filter2' ) instanceof mw.rcfilters.dm.FilterItem,
+                       model.getItemByName( 'namespace__0' ) instanceof mw.rcfilters.dm.FilterItem,
+                       model.getItemByName( 'namespace__1' ) instanceof mw.rcfilters.dm.FilterItem,
+                       model.getItemByName( 'namespace__2' ) instanceof mw.rcfilters.dm.FilterItem,
+                       model.getItemByName( 'namespace__3' ) instanceof mw.rcfilters.dm.FilterItem,
                        'Filters instantiated and stored correctly'
                );
 
                                group2__filter1: false,
                                group2__filter2: false,
                                group3__filter1: false,
-                               group3__filter2: false
+                               group3__filter2: false,
+                               namespace__0: false,
+                               namespace__1: false,
+                               namespace__2: false,
+                               namespace__3: false
                        },
                        'Initial state of filters'
                );
                                group2__filter1: false,
                                group2__filter2: true,
                                group3__filter1: true,
-                               group3__filter2: false
+                               group3__filter2: false,
+                               namespace__0: false,
+                               namespace__1: false,
+                               namespace__2: false,
+                               namespace__3: false
                        },
                        'Updating filter states correctly'
                );
                assert.deepEqual(
                        model.getDefaultParams(),
                        {
-                               group1__hidefilter1_color: null,
-                               group1__hidefilter2_color: null,
-                               group1__hidefilter3_color: null,
-                               group2__hidefilter4_color: null,
-                               group2__hidefilter5_color: null,
-                               group2__hidefilter6_color: null,
-                               group3__filter7_color: null,
-                               group3__filter8_color: null,
-                               group3__filter9_color: null,
-                               highlight: '0',
                                hidefilter1: '1',
                                hidefilter2: '0',
                                hidefilter3: '1',
                                        }
                                ]
                        } ],
+                       namespaces = {
+                               0: 'Main',
+                               1: 'Talk',
+                               2: 'User',
+                               3: 'User talk'
+                       },
                        testCases = [
                                {
                                        query: 'group',
                                                group2: [ 'group2__filter1', 'group2__filter2' ]
                                        },
                                        reason: 'Finds filters containing the query string in their group title'
+                               },
+                               {
+                                       query: ':Main',
+                                       expectedMatches: {
+                                               namespace: [ 'namespace__0' ]
+                                       },
+                                       reason: 'Finds namespaces when using : prefix'
+                               },
+                               {
+                                       query: ':group',
+                                       expectedMatches: {},
+                                       reason: 'Finds no results if using namespaces prefix (:) to search for filter title'
                                }
                        ],
                        model = new mw.rcfilters.dm.FiltersViewModel(),
                                return result;
                        };
 
-               model.initializeFilters( definition );
+               model.initializeFilters( definition, namespaces );
 
                testCases.forEach( function ( testCase ) {
                        matches = model.findMatches( testCase.query );
index 8786993..477550b 100644 (file)
@@ -12,7 +12,7 @@
                assert.strictEqual( $( '.toc' ).length, 0, 'There is no table of contents on the page at the beginning' );
 
                tocHtml = '<div id="toc" class="toc">' +
-                       '<div id="toctitle" class="toctitle">' +
+                       '<div class="toctitle">' +
                        '<h2>Contents</h2>' +
                        '</div>' +
                        '<ul><li></li></ul>' +